Arquivos
wMind/mind3rd/API/classes/Mind.php
T

242 linhas
6.4 KiB
PHP
Arquivo Executável

<?php
/**
* This file is part of TheWebMind 3rd generation.
*
* @author Felipe Nascimento de Moura <felipenmoura@gmail.com>
* @license licenses/mind3rd.license
*/
/**
* This is the main class
* It provides a bunch of static methods to deal with the console
* and also, methods and properties to deal with the project and
* the system itself
*
* @author Felipe Nascimento de Moura <felipenmoura@gmail.com>
*/
class Mind
{
public $about = null;
public $defaults = null;
public $conf = null;
public static $programs = null;
public static $project = null;
public static $autoloadPaths = Array();
public static $currentProject = null;
public static $ref = Array();
public static $projectsDir = '';
public static $pluginList = Array();
public static $l10n = null;
public static $triggers = Array();
public static $modelsDir = "";
public static $langPath = "";
public static $content = "";
public static $originalContent = "";
public static $curLang = 'en';
public static function &getInstance()
{
GLOBAL $_MIND;
if(!$_MIND)
$_MIND= new Mind();
return $_MIND;
}
/**
* @var Lexer An instance of the Lexer class
*/
public static $lexer;
/**
* @var Canonic An instance of the Canonic class
*/
public static $canonic;
/**
* @var Syntaxer An instance of the Syntaxer class
*/
public static $syntaxer;
/**
* @var Tokenizer The tokenizer class
*/
public static $tokenizer;
/**
* @var theos\Gosh $gosh the "creator" class
*/
public static $gosh;
/**
* @var \scientia\Darwin An instance of the Darwin class
*/
public static $darwin;
/**
* Gets the list of the currently instaled idioms.
* @return Array
*/
public static function getIdiomsList()
{
$ar= Array();
$d= dir(_MINDSRC_.L10N_DIR);
while(false !== $entry= $d->read())
{
if(substr($entry, 0, 1) != '.')
$ar[]= str_replace('.php', '', $entry);
}
return $ar;
}
/**
* Verifies wheter the software is installed or not
* @return boolean
*/
public static function isInstalled()
{
return file_exists(_MINDSRC_.'/mind3rd/SQLite/mind');
}
/**
* This method returns or outputs messages using the L10N library
* You can pass a rich string with %s, %i, etc, sending extra parameters
* If the boolean flag $echo is sent, it prints it to the output, otherwise,
* only returns it
* This is an alias for MindSpeaker::write
*
* @param String $k
* @param Bolean $echo
* @param mixed... extra parameter to be treated in the string
* @return String
*/
public static function write($k, $echo=true)
{
return MindSpeaker::write($k, $echo, func_get_args());
}
/**
* This method returns or prints a message formated to represent failures, passes
* or any kind of alert
* This is an alias for MindSpeaker::message
*
* @param String $message The message itself
* @param String $status The status to be shown in the end of the message
* @param Boolean $echo if it should be printed or not
* @return string
*/
public static function message($message, $status, $echo=true)
{
return MindSpeaker::message($message, $status, $echo);
}
/**
* Alias for MindCommand::readPassword
* @param String $stars
* @return String $password
*/
public static function readPassword($stars)
{
return MindCommand::readPassword($stars);
}
/**
* This method will copy the whole directory, recursively
* but it is focused to the "generate project" tool
* This is an alias for MindDir::copyDir
*
* @author Felipe Nascimento
* @name copyDir
* @param String $source
* @param String $dest
* @param [String $flag]
* @return boolean
*/
static function copyDir($source, $dest, $flag= false)
{
return MindDir::copyDir($source, $dest, $flag);
}
/**
* Removes recusrively a directory
* @author Felipe Nascimento de Moura <felipenmoura@gmail.com>
* @method deleteDir
* @param String $dir
* @return boolean
*/
static function deleteDir($dir)
{
return MindDir::deleteDir($dir);
}
/**
* Adds a MindPlugin based object to the
* plugins and triggers list
* Alias for MindPlugin::addPlugin
*
* @param MindPlugin $plugin
*/
static function addPlugin(&$plugin)
{
MindPlugin::addPlugin($plugin);
}
/**
* Returns true if the project already exists,
* false, otherwise
* Alias for MindProject::hasProject
*
* @param String $project
* @return boolean
*/
static function hasProject($project)
{
return MindProject::hasProject($project);
}
/**
* Loads data from the passed project.
* Alias for MindProject::openProject.
*
* @param AssocArray $p
* @return boolean
*/
public static function openProject($p)
{
return MindProject::openProject($p);
}
/**
* Adds a directory to the autoload source paths list
* @param String $path
*/
public static function autoloadRegisterPath($path)
{
if(is_string($path) && !in_array($path, Mind::$autoloadPaths))
Mind::$autoloadPaths[]= $path;
else
foreach($path as $p)
if(!in_array($p, Mind::$autoloadPaths))
Mind::$autoloadPaths[]= $p;
}
/**
* Constructor
*/
public function Mind(){
if(isset($GLOBALS['_MIND']))
{
return $GLOBALS['_MIND'];
}
$path= _MINDSRC_;
Mind::$projectsDir= $path.PROJECTS_DIR;
Mind::$modelsDir= $path.MODELS_DIR;
$this->about= parse_ini_file($path.ABOUT_INI);
$this->defaults= parse_ini_file($path.DEFAULTS_INI);
$this->conf= parse_ini_file($path.MIND_CONF);
require_once($path.L10N_DIR.$this->defaults['default_human_language'].'.php');
Mind::$curLang= $this->defaults['default_human_languageName'];
Mind::$l10n= new $this->defaults['default_human_language']();
Mind::$langPath= $path.LANG_PATH;
Mind::$curLang= $this->defaults['default_human_language'];
$langPath= $path.LANG_PATH;
set_include_path(get_include_path() . PATH_SEPARATOR . $langPath);
Mind::$gosh= new theos\Gosh();
Mind::$darwin= new scientia\Darwin();
}
}