append(new Translation(dirname($pluginFile))); // Inclusion du coeur de plugin include $pluginFile; // Gestion des css du plugin en fonction du thème actif $cssTheme = glob(dirname($pluginFile).'/*/'.DEFAULT_THEME.'.css'); $cssDefault = glob(dirname($pluginFile).'/*/default.css'); if(isset($cssTheme[0])){ $GLOBALS['hooks']['css_files'][] = Functions::relativePath(str_replace('\\','/',dirname(__FILE__)),str_replace('\\','/',$cssTheme[0])); }else if(isset($cssDefault[0])){ $GLOBALS['hooks']['css_files'][] = Functions::relativePath(str_replace('\\','/',dirname(__FILE__)),str_replace('\\','/',$cssDefault[0])); } } } $i18n_js = $i18n->getJson(); } private static function getStates(){ $stateFile = dirname(__FILE__).Plugin::FOLDER.'/plugins.states.json'; if(!file_exists($stateFile)) touch($stateFile); return json_decode(file_get_contents($stateFile),true); } private static function setStates($states){ $stateFile = dirname(__FILE__).Plugin::FOLDER.'/plugins.states.json'; file_put_contents($stateFile,json_encode($states)); } public static function pruneStates() { $statesBefore = self::getStates(); if(empty($statesBefore)) $statesBefore = array(); $statesAfter = array(); $error = false; if (is_array($statesBefore)) { foreach($statesBefore as $file=>$state) { if (file_exists($file)) $statesAfter[$file] = $state; else $error = true; } } if ($error) self::setStates($statesAfter); } private static function getObject($pluginFile){ $plugin = new Plugin(); $fileLines = file_get_contents($pluginFile); if(preg_match("#@author\s(.+)\s\<#", $fileLines, $match)) $plugin->setAuthor(trim($match[1])); if(preg_match("#@author\s(.+)\s\<([a-z\@\.A-Z\s\-]+)\>#", $fileLines, $match)) $plugin->setMail(strtolower($match[2])); if(preg_match("#@name\s(.+)[\r\n]#", $fileLines, $match)) $plugin->setName($match[1]); if(preg_match("#@licence\s(.+)[\r\n]#", $fileLines, $match)) $plugin->setLicence($match[1]); if(preg_match("#@version\s(.+)[\r\n]#", $fileLines, $match)) $plugin->setVersion($match[1]); if(preg_match("#@link\s(.+)[\r\n]#", $fileLines, $match)) $plugin->setLink(trim($match[1])); if(preg_match("#@type\s(.+)[\r\n]#", $fileLines, $match)) $plugin->setType(trim($match[1])); if(preg_match("#@description\s(.+)[\r\n]#", $fileLines, $match)) $plugin->setDescription(trim($match[1])); if(Plugin::loadState($pluginFile) || $plugin->getType()=='component'){ $plugin->setState(1); }else{ $plugin->setState(0); } $plugin->setPath($pluginFile); return $plugin; } public static function getAll(){ $pluginFiles = Plugin::getFiles(); $plugins = array(); if(is_array($pluginFiles)) { foreach($pluginFiles as $pluginFile) { $plugin = Plugin::getObject($pluginFile); $plugins[]=$plugin; } } usort($plugins, "Plugin::sortPlugin"); return $plugins; } public static function addHook($hookName, $functionName) { $GLOBALS['hooks'][$hookName][] = $functionName; } public static function addCss($css) { $bt = debug_backtrace(); $pathInfo = explode('/',dirname($bt[0]['file'])); $count = count($pathInfo); $name = $pathInfo[$count-1]; $path = '.'.Plugin::FOLDER.'/'.$name.$css; $GLOBALS['hooks']['css_files'][] = $path; } public static function callCss(){ $return=''; if(isset($GLOBALS['hooks']['css_files'])) { foreach($GLOBALS['hooks']['css_files'] as $css_file) { $return .=''."\n"; } } return $return; } public static function addLink($rel, $link) { $GLOBALS['hooks']['head_link'][] = array("rel"=>$rel, "link"=>$link); } public static function callLink(){ $return=''; if(isset($GLOBALS['hooks']['head_link'])) { foreach($GLOBALS['hooks']['head_link'] as $head_link) { $return .=''."\n"; } } return $return; } public static function path(){ $bt = debug_backtrace(); $pathInfo = explode('/',dirname($bt[0]['file'])); $count = count($pathInfo); $name = $pathInfo[$count-1]; return '.'.Plugin::FOLDER.'/'.$name.'/'; } public static function addJs($js) { $bt = debug_backtrace(); $pathInfo = explode('/',dirname($bt[0]['file'])); $count = count($pathInfo); $name = $pathInfo[$count-1]; $path = '.'.Plugin::FOLDER.'/'.$name.$js; $GLOBALS['hooks']['js_files'][] = $path; } public static function callJs(){ $return=''; if(isset($GLOBALS['hooks']['js_files'])) { foreach($GLOBALS['hooks']['js_files'] as $js_file) { $return .=''."\n"; } } return $return; } public static function callHook($hookName, $hookArguments) { //echo '