/** * On s'assure que pour ces tâche ce soit bien un administrateur */ public function beforeAction() { CopixAuth::getCurrentUser()->assertCredential('basic:admin'); if (!CopixConfig::instance()->copixauth_isRegisteredCredentialHandler('auth|dbdynamiccredentialhandler')) { throw new CopixException(_i18n('auth.dynamicHandlerNotRegister')); } }
public function testMain() { //compte le nombre de profils au départ $nbStart = count(CopixConfig::instance()->copixdb_getProfiles()); //vérifie que l'on arrive bien à définir un profil CopixConfig::instance()->copixdb_defineProfile('test', 'pdo_mysql:host=localhost;dbname=copix_3_beta', 'root', ''); $this->assertNotNull(CopixConfig::instance()->copixdb_getProfile('test')); $this->assertEquals($nbStart + 1, count(CopixConfig::instance()->copixdb_getProfiles())); $this->assertEquals(CopixConfig::instance()->copixdb_getProfile('test')->getName(), 'test'); $parts = CopixConfig::instance()->copixdb_getProfile('test')->getConnectionStringParts(); $this->assertEquals('localhost', $parts['host']); $this->assertEquals('copix_3_beta', $parts['dbname']); $this->assertEquals('pdo_mysql', CopixConfig::instance()->copixdb_getProfile('test')->getDriverName()); $this->assertEquals(array(), CopixConfig::instance()->copixdb_getProfile('test')->getOptions()); $this->assertEquals('mysql', CopixConfig::instance()->copixdb_getProfile('test')->getDatabase()); CopixConfig::instance()->copixdb_getProfile('test')->setOptions(array('FOO' => 'FOOVALUE')); $this->assertEquals(array('FOO' => 'FOOVALUE'), CopixConfig::instance()->copixdb_getProfile('test')->getOptions()); CopixConfig::instance()->copixdb_getProfile('test')->setOptions(array('FOO2' => 'FOOVALUE2')); $this->assertEquals(array('FOO' => 'FOOVALUE', 'FOO2' => 'FOOVALUE2'), CopixConfig::instance()->copixdb_getProfile('test')->getOptions()); CopixConfig::instance()->copixdb_getProfile('test')->clearOptions(); $this->assertEquals(array(), CopixConfig::instance()->copixdb_getProfile('test')->getOptions()); //vérifie que l'on arrive à ajouter encore un 2ème profil CopixConfig::instance()->copixdb_defineProfile('test2', 'pdo_mysql:host=localhost;dbname=copix_3_beta', 'root', ''); $this->assertNotNull(CopixConfig::instance()->copixdb_getProfile('test2')); $this->assertEquals($nbStart + 2, count(CopixConfig::instance()->copixdb_getProfiles())); $this->assertEquals(CopixConfig::instance()->copixdb_getProfile('test2')->getName(), 'test2'); }
/** * Accueil des stats * * @author Christophe Beyer <*****@*****.**> * @since 2007/03/19 */ public function home() { if (!Admin::canAdmin()) { return CopixActionGroup::process('genericTools|Messages::getError', array('message' => CopixI18N::get('kernel|kernel.error.noRights'), 'back' => CopixUrl::get())); } $tpl = new CopixTpl(); $tpl->assign('TITLE_PAGE', CopixI18N::get('sysutils|admin.menu.stats')); $tpl->assign('MENU', Admin::getMenu('stats')); $tplStats = new CopixTpl(); $modules = Kernel::getAllModules(); $tab = array(); foreach ($modules as $mod_val) { $arModulesPath = CopixConfig::instance()->arModulesPath; foreach ($arModulesPath as $modulePath) { $class_file = $modulePath . $mod_val . '/' . COPIX_CLASSES_DIR . 'kernel' . $mod_val . '.class.php'; if (!file_exists($class_file)) { continue; } $module_class =& CopixClassesFactory::Create($mod_val . '|Kernel' . $mod_val); //print_r($module_class); if (!is_callable(array($module_class, 'getStatsRoot'))) { continue; } //$classeModule = CopixClassesFactory::create("$label|Kernel$label"); $tab[$mod_val]['module_nom'] = Kernel::Code2Name('mod_' . $mod_val); $tab[$mod_val]['stats'] = $module_class->getStatsRoot(); } } //print_r($tab); $tplStats->assign('tab', $tab); $tpl->assign('MAIN', $tplStats->fetch('sysutils|stats.modules.tpl')); return new CopixActionReturn(COPIX_AR_DISPLAY, $tpl); }
/** * Demarrage de la session * @param string $pId l'identifiant de la session, * utile si vous avez plusieurs copix sur un même serveur * et que vous ne souhaitez pas partager les sessions */ public static function start($pId = null) { if ($pId === null) { $pId = CopixConfig::instance()->sessionName; } session_start($pId); }
/** * Création du contenu de la page */ public function _createContent(&$toReturn) { $tpl = new CopixTpl(); $tpl->assign('arModulesPath', CopixConfig::instance()->arModulesPath); $tpl->assign('arModules', $this->_getModuleOrderByDescription()); $toReturn = $tpl->fetch('modules.list.tpl'); }
public function processTest() { if (!Kernel::isAdmin()) { return $this->error('rssmix.noRight', true, '||'); } try { $feed = $this->service->getRssFeed($this->request('url'), 2); echo '<p class="mesgSuccess">' . $this->i18n('rssmix.feedValid') . '</p>'; foreach ($feed as $item) { echo '<h4>' . $item['title'] . '</h4>'; echo '<p>' . $item['content'] . '</p>'; echo '<hr />'; } } catch (Exception $e) { $config = CopixConfig::instance(); echo '<p class="mesgError">' . $this->i18n('rssmix.feedNoValid') . '</p>'; if ($config->getMode() == CopixConfig::DEVEL) { echo '<div class="content-panel"><h3>Debug informations (only in devel)</h3> <p> url : ' . $this->request('url') . '</p> <p>' . $e->getMessage() . '</p> <p><pre>' . $e->getFile() . ' : ' . $e->getLine() . '</pre></p> <p><pre>' . $e->getTraceAsString() . '</pre></p> </div>'; } } return _arNone(); }
/** * It set many properties of the object, get all GET and POST parameters, and start session. * @param string $configFile chemin du fichier de configuration du projet */ function CopixCoordination($configFile) { // register itself in the global variable. $GLOBALS['COPIX']['COORD'] =& $this; // creating CopixConfig Object and includes the asked configuration file. $GLOBALS['COPIX']['CONFIG'] =& CopixConfig::instance(); require $configFile; /** * EXPERIMENTAL : support des URLs significatifs */ $scriptNameAndPath = $_SERVER['SCRIPT_NAME']; //condidering : http://mysite.com/subdir/index.php/mypath/myaction?myparams=myvalues //following is subdir/ $GLOBALS['COPIX']['CONFIG']->significant_url_script_path = substr($scriptNameAndPath, 0, strrpos($scriptNameAndPath, '/')) . '/'; //following is index.php $GLOBALS['COPIX']['CONFIG']->significant_url_script_name = substr($scriptNameAndPath, strrpos($scriptNameAndPath, '/') + 1); //following is mysite.com $GLOBALS['COPIX']['CONFIG']->significant_url_domain = $_SERVER['HTTP_HOST']; //following is http://mysite.com/subdir/ $GLOBALS['COPIX']['CONFIG']->significant_url_basepath = 'http://' . $GLOBALS['COPIX']['CONFIG']->significant_url_domain . $GLOBALS['COPIX']['CONFIG']->significant_url_script_path; //following is index.php/mypath/myaction if (isset($_SERVER['PATH_INFO'])) { $pathinfo = $_SERVER['PATH_INFO']; $pos = strpos($_SERVER['PATH_INFO'], $GLOBALS['COPIX']['CONFIG']->significant_url_script_path . $GLOBALS['COPIX']['CONFIG']->significant_url_script_name); if ($pos !== false) { //under IIS, we may get as PATH_INFO /subdir/index.php/mypath/myaction (wich is incorrect) $pathinfo = substr($_SERVER['PATH_INFO'], strlen($GLOBALS['COPIX']['CONFIG']->significant_url_script_path . $GLOBALS['COPIX']['CONFIG']->significant_url_script_name)); } } else { $pathinfo = substr($_SERVER["PHP_SELF"], strlen($_SERVER['SCRIPT_NAME'])); } $GLOBALS['COPIX']['CONFIG']->significant_url_path_info = $pathinfo; /** * Fin de "en développement / Test" */ if ($GLOBALS['COPIX']['CONFIG']->errorHandlerOn) { $ficEH = COPIX_CONFIG_PATH . $GLOBALS['COPIX']['CONFIG']->errorHandlerConfigFile; if (file_exists($ficEH)) { require_once COPIX_CORE_PATH . 'CopixErrorHandler.lib.php'; $GLOBALS['COPIX']['CONFIG']->errorHandler = new CopixErrorHandlerConfig(); require $ficEH; set_error_handler('CopixErrorHandler'); } } // registering and creating plugins. foreach ($GLOBALS['COPIX']['CONFIG']->plugins as $name => $conf) { // pour create, on ne donne pas $conf, car le foreach fait une copie du tableau plugins pour le parcourir // et cela ne prend donc pas en compte les eventuelles modifs effectuées dans plugins par un plugin, // notament dans debug, si celui ci précise un fichier de conf spécifique if ($plug =& CopixPluginFactory::create($name, $GLOBALS['COPIX']['CONFIG']->plugins[$name])) { $this->plugins[strtolower($name)] =& $plug; } } $this->url =& new CopixUrl($_SERVER['SCRIPT_NAME'], $_GET, $GLOBALS['COPIX']['CONFIG']->significant_url_path_info); $this->vars = CopixUrl::parse($GLOBALS['COPIX']['CONFIG']->significant_url_path_info, false, true); // do what we need for each plugin before starting the session $this->_beforeSessionStart(); session_start(); }
public function testCopixObject() { //on test que les objets autoloadés Copix ne soient pas pris en charge $element = new CopixSessionObject(CopixConfig::instance()); $serialized = serialize($element); $elementBack = unserialize($serialized); //si ça ne génère pas d'erreurs, c'est ok }
/** * On protège la page avec les droits d'administration */ public function beforeAction() { //On souhaite, pour éviter tout problème, tester explicitement les droits. //Cette volontée de tester explicitement les droits est pour éviter tout problème //de conflits avec les écrans de modification des handlers CopixConfig::instance()->copixauth_cache = false; _currentUser()->assertCredential('basic:admin'); }
public function testParse() { $testUrl = "test.php?var=value"; CopixConfig::instance()->significant_url_mode = 'default'; $this->assertContains("value", CopixUrl::parse($testUrl, true)); CopixConfig::instance()->significant_url_mode = 'prepend'; $this->assertContains("value", CopixUrl::parse($testUrl, true)); }
public function _createContent(&$toReturn) { $tpl = new CopixTpl(); $kernel = _class("kernel"); $toReturn = ""; $arModulesPath = CopixConfig::instance()->arModulesPath; $display = false; foreach ($arModulesPath as $modulePath) { if (file_exists(COPIX_PROJECT_PATH . "themes/" . $kernel->getTheme() . "/kernel/footer.tpl")) { $tpl_file = COPIX_PROJECT_PATH . "themes/" . $kernel->getTheme() . "/kernel/footer.tpl"; } else { $tpl_file = $modulePath . 'kernel/templates/footer.tpl'; } if (!file_exists($tpl_file)) { continue; } $display = true; // Récupération des infos de géolocalisation. $whereami = Kernel::whereAmI(); if (isset($whereami['BU_GRVILLE'])) { $tpl->assign('grville_id', $whereami['BU_GRVILLE']['id']); $tpl->assign('grville_nom', $whereami['BU_GRVILLE']['nom']); } if (isset($whereami['BU_VILLE'])) { $tpl->assign('ville_id', $whereami['BU_VILLE']['id']); $tpl->assign('ville_nom', $whereami['BU_VILLE']['nom']); } if (isset($whereami['BU_ECOLE'])) { $tpl->assign('ecole_id', $whereami['BU_ECOLE']['id']); $tpl->assign('ecole_nom', $whereami['BU_ECOLE']['nom']); } if (isset($whereami['BU_CLASSE'])) { $tpl->assign('classe_id', $whereami['BU_CLASSE']['id']); $tpl->assign('classe_nom', $whereami['BU_CLASSE']['nom']); } // Récupération des valeurs d'URL. if ($module = CopixRequest::get('module')) { $tpl->assign('module', $module); } if ($action = CopixRequest::get('action')) { $tpl->assign('action', $action); } // Récupération des valeurs de sessions (personne). if (_currentUser()->getExtra('type')) { $tpl->assign('user_type', _currentUser()->getExtra('type')); $tpl->assign('user_id', _currentUser()->getExtra('id')); } } // Si le fichier de template n'existe pas, pas d'erreur. if ($display) { $toReturn = $tpl->fetch('kernel|footer.tpl'); } return true; }
public function beforeProcess(&$pExecParams) { if ($theme = $this->config->getThemeFor(CopixRequest::get('module'))) { CopixTpl::setTheme($theme); } //Ajout d'une gestion de tpl par thème $config = CopixConfig::instance(); $theme = CopixTpl::getThemeInformations(CopixTpl::getTheme()); if ($theme->tpl != null) { $config->mainTemplate = $theme->tpl; } }
public function beforeProcess() { if (($theme = CopixAJAX::getSession()->get('currentTheme')) != null) { CopixTpl::setTheme($theme); //Ajout d'une gestion de tpl par thème $config = CopixConfig::instance(); $theme = CopixTpl::getThemeInformations(CopixTpl::getTheme()); if ($theme->tpl != null) { $config->mainTemplate = $theme->tpl; } } }
/** * Test si une base par défaut est configuré * * @return boolean */ public function isValidDefaultDatabase() { try { $profilName = CopixConfig::instance()->copixdb_getDefaultProfileName(); if ($profilName === null) { return false; } $ct = CopixDb::getConnection($profilName); } catch (Exception $e) { return false; } return true; }
/** * On va tester les connexions définies dans l'application */ public function testConnection() { foreach (CopixConfig::instance()->copixdb_getProfiles() as $name) { try { CopixDB::getConnection($name); $this->assertTrue(true); //ok } catch (Exception $exception) { $this->assertTrue(false); //n'a pas fonctionné } } }
/** * Get the instance * */ function &instance() { if (!isset($GLOBALS['COPIX'])) { $GLOBALS['COPIX'] = array(); } if (!isset($GLOBALS['COPIX']['CONFIG'])) { $GLOBALS['COPIX']['CONFIG'] =& CopixConfig::instance(); } if (!isset($GLOBALS['COPIX']['CONFIG']->compile_resource)) { $GLOBALS['COPIX']['CONFIG']->compile_resource = null; } return $GLOBALS['COPIX']['CONFIG']; }
/** * Supression d'un plugin de la liste des plugins enregistrés */ public function processRemovePlugin() { //on regarde si le plugin fait parti des plugins déja enregistrés $arPluginsConfiguration = array(); if (in_array($pluginName = CopixRequest::get('plugin'), $arPlugins = CopixConfig::instance()->plugin_getRegistered())) { foreach ($arPlugins as $plugin) { if ($plugin != $pluginName) { $arPluginsConfiguration[] = $plugin; } } _class('PluginsConfigurationFile')->write($arPluginsConfiguration); } return _arRedirect(_url('plugin|')); }
/** * Liste des utilisateurs avec un écran de recherche */ public function processList() { $params = array(); if (($filter = CopixRequest::get('filter', null)) !== null) { $params['login'] = $filter; } foreach (CopixConfig::instance()->copixauth_getRegisteredUserHandlers() as $handlerInformations) { $arUsers[$handlerInformations['name']] = CopixUserHandlerFactory::create($handlerInformations['name'])->find($params); } $ppo = new CopixPPO(); $ppo->TITLE_PAGE = _i18n('auth.userList'); $ppo->arUsers = $arUsers; $ppo->filter = $filter; return _arPPO($ppo, 'users.list.php'); }
/** * Préparation de l'installation */ public function processInstallFramework() { // find the current connection type (defined in /plugins/copixDB/profils.definition.xml) $config = CopixConfig::instance(); $driver = $config->copixdb_getProfile(); $typeDB = $driver->getDriverName(); // Search each module install file $scriptName = 'prepareinstall.' . $typeDB . '.sql'; $file = CopixModule::getPath('admin') . COPIX_INSTALL_DIR . 'scripts/' . $scriptName; CopixDB::getConnection()->doSQLScript($file); //make sure that copixmodule is reset CopixModule::reset(); $tpl = new CopixTpl(); $tpl->assignZone('MAIN', 'admin|installmodulewithdep', array('arModule' => array('generictools', 'auth', 'default', 'admin'), 'url_return' => _url('admin|database|done'), 'messageConfirm' => false)); return _arDisplay($tpl); }
/** * Cette fonction récupère la suite de test à lancer. * @return PHPUnit_Framework_TestSuite */ private function _getSuite() { $suite = new PHPUnit_Framework_TestSuite('Tests'); // Charge la config (nécessaire pour CopixModule) $config = CopixConfig::instance(); $config->copixerrorhandler_enabled = false; //On instancie un controlleur new ProjectController($this->_configFile); //---- $subSuites = array(); $arToTest = array(); //on parcours l'ensemble des tests disponibles et on les ajoute //si on les trouve dans l'url. if ($_REQUEST['tests'] == 'all') { $arToTest = CopixTests::getAllTests(); } else { foreach (CopixTests::getAllTests() as $moduleName => $arTestsForModule) { $arToTest[$moduleName] = array(); if (in_array($moduleName . '|', $_REQUEST['tests'])) { //Le module complet est demandé $arToTest[$moduleName] = $arTestsForModule; } else { //On test chacun des éléments de test foreach ($arTestsForModule as $test) { if (in_array($test, $_REQUEST['tests'])) { $arToTest[$moduleName][] = $test; } } } } } //on parcours ensuite la lise des tests demandés et on crée la suite. foreach ($arToTest as $moduleName => $arTestsForModule) { if (count($arTestsForModule)) { $moduleSuite = new PHPUnit_Framework_TestSuite('Module ' . $moduleName); foreach ($arTestsForModule as $nameTest) { $toTest = explode('|', $nameTest); require_once CopixModule::getPath($toTest[0]) . 'tests/' . $toTest[1] . '.class.php'; $moduleSuite->addTestSuite($toTest[1]); } $suite->addTestSuite($moduleSuite); } } return $suite; }
/** * Teste CopixTpl->getFilePath() sans l'internationalisation activée. * */ public function testGetFilePathWithoutI18N() { $tpl = new CopixTpl(); CopixConfig::instance()->i18n_path_enabled = false; $this->assertPathEquals($this->themeDir . 'copixtest/testtheme.tpl', $tpl->getFilePath('copixtest|testtheme.tpl')); $this->assertFalse($tpl->getFilePath('copixtest|testthemefr.tpl')); // N'existe pas $this->assertPathEquals($this->themeDir . 'copixtest/testthemefrfr.tpl', $tpl->getFilePath('copixtest|testthemefrfr.tpl')); $this->assertPathEquals($this->defaultDir . 'copixtest/testdefault.tpl', $tpl->getFilePath('copixtest|testdefault.tpl')); $this->assertFalse($tpl->getFilePath('copixtest|testdefaultfr.tpl')); // N'existe pas $this->assertPathEquals($this->defaultDir . 'copixtest/testdefaultfrfr.tpl', $tpl->getFilePath('copixtest|testdefaultfrfr.tpl')); $this->assertPathEquals($this->moduleDir . 'testmodule.tpl', $tpl->getFilePath('copixtest|testmodule.tpl')); $this->assertFalse($tpl->getFilePath('copixtest|testmodulefr.tpl')); // N'existe pas $this->assertFalse($tpl->getFilePath('copixtest|testmodulefrfr.tpl')); // N'existe pas $this->assertPathEquals($this->themeDir . 'copixtest/testmoduleoverload.tpl', $tpl->getFilePath('copixtest|testmoduleoverload.tpl')); }
/** * It set many properties of the object, get all GET and POST parameters, and start session. * @param string $configFile chemin du fichier de configuration du projet */ function CopixCoordination($configFile) { //the very first. $old_error_handler = set_error_handler('CopixErrorHandler'); $this->url =& new CopixUrl($_SERVER['PHP_SELF'], $_GET); $this->vars = array_merge($_POST, $_GET); // register itself in the global variable. $GLOBALS['COPIX']['COORD'] =& $this; // creating CopixConfig Object and includes the asked configuration file. $GLOBALS['COPIX']['CONFIG'] =& CopixConfig::instance(); require $configFile; // registering and creating plugins. foreach ($GLOBALS['COPIX']['CONFIG']->plugins as $name) { if ($plug =& CopixPluginFactory::create($name)) { $this->plugins[strtolower($name)] =& $plug; } } // do what we need for each plugin before starting the session $this->_beforeSessionStart(); session_start(); }
/** * Fonction permettant d'afficher une exception à l'écran. * Principalement destinée à l'utilisation interne, pas nécessairement à l'utilisation depuis l'url * */ public function processException() { CopixRequest::assert('exception'); $e = _request('exception'); //Absolument impossible dans le contexte normal d'utilisation, $e est nécessairement une exception //catchée par le processus. if (!$e instanceof Exception) { return _arRedirect(_url('||')); } $ppo = new CopixPPO(); $ppo->TITLE_PAGE = _request('TITLE_PAGE', get_class($e)); switch (get_class($e)) { case 'CopixDAOCheckException': $ppo->message = sprintf('Une erreur de validation est survenue avec le message [%s]', implode(', ', $e->getErrors())); break; default: $ppo->message = $e->getMessage(); } $ppo->type = get_class($e); $ppo->file = $e->getFile(); $ppo->line = $e->getLine(); $ppo->trace = $e->getTrace(); $ppo->id = uniqid(); $ppo->urlBack = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : null; switch (CopixConfig::instance()->getMode()) { case CopixConfig::DEVEL: $ppo->mode = 'DEVEL'; break; case CopixConfig::PRODUCTION: $ppo->mode = 'FORCE_INITIALISATION'; break; case CopixConfig::FORCE_INITIALISATION: $ppo->mode = 'FORCE_INITIALISATION'; break; default: $ppo->mode = 'UNKNOW'; break; } return _arPpo($ppo, 'default|exception.tpl'); }
/** * Envoi le log par mail * * @param string $pProfil Profile qui renvoie ce log * @param string $pType Type de log * @param int $pLevel Niveau de log * @param int $pDate Date * @param string $pMessage Message à logger * @param array $pArExtra Tableaux de paramètres */ public function log($pProfil, $pType, $pLevel, $pDate, $pMessage, $pArExtra) { $profile = CopixConfig::instance()->copixlog_getProfile($pProfil); $year = substr($pDate, 0, 4); $month = substr($pDate, 4, 2); $day = substr($pDate, 6, 2); $hour = substr($pDate, 8, 2); $min = substr($pDate, 10, 2); $sec = substr($pDate, 12, 2); $levels = CopixLog::getLevels(); $level = $levels[$pLevel]->caption; $pattern = _i18n('copix:log.email.bodyHTML'); $vars = array('MESSAGE' => $pMessage, 'PROFIL' => $pProfil, 'TYPE' => $pType, 'LEVEL' => $level, 'YEAR' => $year, 'MONTH' => $month, 'DAY' => $day, 'HOUR' => $hour, 'MIN' => $min, 'SEC' => $sec, 'EXTRAS' => print_r($pArExtra, true)); $body = utf8_decode($this->_replaceVars($pattern, $vars)); $subject = utf8_decode(_i18n('copix:log.email.subject') . ' ' . substr($pMessage, 0, 80)); // envoi du / des mail(s) $destinataires = explode(';', $profile['email']); foreach ($destinataires as $destinataire) { $mail = new CopixHTMLEmail($destinataire, null, null, $subject, $body); $mail->send(); } }
/** * Regarde si une connexion à une base de données est disponible * @return boolean */ private function _checkDBConnection() { static $dbOk = null; if ($dbOk === null) { try { CopixConfig::instance()->copixdb_getProfile(); return $dbOk = true; } catch (Exception $e) { return $dbOk = false; } } return $dbOk; }
/** * Test les droits en retournant true / false * * @param string $pString Chaine de droit à tester (ex : basic:admin@news) * @return bool */ public function testCredential($pString) { if (isset($this->_asserted[$pString]) && CopixConfig::instance()->copixauth_cache == true) { return $this->_asserted[$pString]; } $pStringType = substr($pString, 0, strpos($pString, ':')); $pStringString = substr($pString, strpos($pString, ':') + 1); $success = false; foreach (CopixConfig::instance()->copixauth_getRegisteredCredentialHandlers() as $handler) { if (is_array($handler['handle']) && in_array($pStringType, $handler['handle']) || $handler['handle'] === 'all') { if (!(is_array($handler['handleExcept']) && in_array($pStringType, $handler['handleExcept']) || $handler['handleExcept'] === $pStringType)) { $result = CopixCredentialHandlerFactory::create($handler['name'])->assert($pStringType, $pStringString, $this); if ($result === false) { if ($handler['stopOnFailure']) { return $this->_asserted[$pString] = false; } $success = $success || false; } elseif ($result === true) { if ($handler['stopOnSuccess']) { return $this->_asserted[$pString] = true; } $success = true; } } } } $this->_asserted[$pString] = $success; return $success; }
/** * cette fonction determine si le type/level demandé est valide * * @param String $pType nom du profil configurer dans copixConfig * @return boolean correct ou non */ private static function _enabled($pProfil = 'default') { if (isset(self::$_enabled[$pProfil])) { return self::$_enabled[$pProfil]; } $config = CopixConfig::instance(); //On regarde si le type est pris en charge self::$_enabled[$pProfil] = false; if (($typeInformations = $config->copixlog_getProfile($pProfil)) !== null) { if ($typeInformations['enabled']) { self::$_enabled[$pProfil] = true; } } return self::$_enabled[$pProfil]; }
/** * Loads the resources for a given lang/country. * will automatically loads the default (lang lang) * @param string $lang the language * @param string $country the country */ private function _loadLocales($lang, $country) { $this->_loadedCountries[] = $country; //file names for different cases. $bundleLang = $this->_fic->fileName . '_' . $lang . '.properties'; $bundleCountry = $this->_fic->fileName . '_' . $lang . '_' . $country . '.properties'; $path = $this->_fic->getPath(COPIX_RESOURCES_DIR); $toLoad[] = array('file' => $path . $this->_fic->fileName . '.properties', 'lang' => 'default', 'country' => 'DEFAULT'); $toLoad[] = array('file' => $path . $bundleLang, 'lang' => $lang, 'country' => strtoupper($lang)); $toLoad[] = array('file' => $path . $bundleCountry, 'lang' => $lang, 'country' => $country); // check if we have a compiled version of the ressources $_compileResourceId = $this->_getCompileId($lang, $country); if (($_compileResourceIdTime = @filemtime($_compileResourceId)) !== false) { $config = CopixConfig::instance(); if ($config->compile_check || $config->force_compile) { if ($config->force_compile) { //force compile, compiled files are never assumed to be ok. $okcompile = false; } else { // on verifie que les fichiers de ressources sont plus anciens que la version compilée $compiledate = $_compileResourceIdTime; $okcompile = true; //Compiled files are assumed to be ok. foreach ($toLoad as $infos) { if (($fileTime = @filemtime($infos['file'])) !== false) { if (!isset($fileTime) || $fileTime > $compiledate) { $okcompile = false; break; } } } } } else { //no compile check, it's ok then $okcompile = true; } if ($okcompile) { $_loaded = array(); include $_compileResourceId; //va charger _loaded $this->_messages[$country] = $_loaded; //everything was loaded. return; } } //loads the founded resources. foreach ($toLoad as $infos) { $this->_loadResources($infos['file'], $country); } //we want to use the PHP compilation of the resources. $generator = new CopixPHPGenerator(); $_resources = $generator->getPHPTags($generator->getVariableDeclaration('$_loaded', isset($this->_messages[$country]) ? $this->_messages[$country] : array())); CopixFile::write($_compileResourceId, $_resources); }
public static function getModNotifications(&$module) { if (!_currentUser()->getExtra("user_id")) { return $module; } // echo('-'); $module_name = preg_replace('/^MOD_/', '', $module->module_type); $lastvisit = _dao('kernel|kernel_notifications_lastvisit')->findBy(_daoSp()->addCondition('user_id', '=', _currentUser()->getExtra("user_id"))->addCondition('node_type', '=', $module->node_type)->addCondition('node_id', '=', $module->node_id)->addCondition('module_type', '=', $module_name)->addCondition('module_id', '=', $module->module_id)); if (count($lastvisit)) { // Déjà une visite -> On vérifie le cache // echo "XXX"; if ($lastvisit[0]->last_check && $lastvisit[0]->last_check >= date('YmdHis', strtotime("-10 sec"))) { // Si le cache est encore valide -> On retourne les infos du cache // echo "cached($module_name/$module->module_id) "; $module->notification_number = $lastvisit[0]->last_number; $module->notification_message = $lastvisit[0]->last_message; } else { // S'il n'y a pas de cache ou qu'il est invalide -> On demande les infos au module // echo "not-cached($module_name/$module->module_id) "; $arModulesPath = CopixConfig::instance()->arModulesPath; foreach ($arModulesPath as $modulePath) { $class_file = $modulePath . strtolower($module_name) . '/' . COPIX_CLASSES_DIR . 'kernel' . strtolower($module_name) . '.class.php'; if (!file_exists($class_file)) { continue; } $module_class =& CopixClassesFactory::Create($module_name . '|Kernel' . $module_name); if (is_callable(array($module_class, 'getNotifications'))) { $module_class->getNotifications($module, $lastvisit[0]); $lastvisit[0]->last_check = date('Y-m-d H:i:s'); $lastvisit[0]->last_number = $module->notification_number; $lastvisit[0]->last_message = $module->notification_message; _dao('kernel|kernel_notifications_lastvisit')->update($lastvisit[0]); /* echo "<pre>"; print_r($module); print_r($lastvisit[0]); die(); */ } } } } else { // Pas encore de visite -> Pas de notif pour l'instant // echo "NOT_visited "; $module->notification_number = 0; $module->notification_message = ''; // Initialisation, même sans entrer dans le module $lastvisit = _record("kernel|kernel_notifications_lastvisit"); $lastvisit->user_id = _currentUser()->getExtra("user_id"); // id Copix $lastvisit->date = date('Y-m-d H:i:s'); $lastvisit->node_type = $module->node_type; $lastvisit->node_id = $module->node_id; $lastvisit->module_type = $module_name; $lastvisit->module_id = $module->module_id; _dao("kernel|kernel_notifications_lastvisit")->insert($lastvisit); } // [module_nom] => Agenda // echo "<pre>"; print_r($module); die(); return $module; }
/** * Remet en place le profil par défaut. * */ public function tearDown() { CopixConfig::instance()->copixdb_defineDefaultProfileName($this->_savedProfile); parent::tearDown(); }