| } else {␊ |
| throw new Exception('Configuration file does not exist: '.$config_file);␊ |
| }␊ |
| // Load the relations for each installed application.␊ |
| // Each application folder must be in the include path.␊ |
| // Load the relations for each installed application. Each␊ |
| // application folder must be in the include path.␊ |
| self::loadRelations(!Pluf::f('debug', false));␊ |
| }␊ |
| ␊ |
| /**␊ |
| * Get the model relations and signals.␊ |
| *␊ |
| * If not in debug mode, it will automatically cache the␊ |
| * information. This allows one include file when many␊ |
| * applications and thus many includes are needed.␊ |
| *␊ |
| * Signals and relations are cached in the same file as the way to␊ |
| * go for signals is to put them in the relations.php file.␊ |
| *␊ |
| * @param bool Use the cache (true)␊ |
| */␊ |
| static function loadRelations($usecache=true)␊ |
| {␊ |
| $GLOBALS['_PX_models'] = array(); ␊ |
| $GLOBALS['_PX_models_init_cache'] = array();␊ |
| foreach (Pluf::f('installed_apps', array()) as $app) {␊ |
| $apps = Pluf::f('installed_apps', array());␊ |
| $cache = Pluf::f('tmp_folder').'/Pluf_relations_cache_'.md5(serialize($apps)).'.phps';␊ |
| if ($usecache and file_exists($cache)) {␊ |
| list($GLOBALS['_PX_models'], $GLOBALS['_PX_signal']) = include $cache;␊ |
| return;␊ |
| }␊ |
| foreach ($apps as $app) {␊ |
| $m = require $app.'/relations.php';␊ |
| $GLOBALS['_PX_models'] = array_merge($m, $GLOBALS['_PX_models']);␊ |
| }␊ |
| // $GLOBALS['_PX_signal'] is automatically set by the require␊ |
| // statement and possibly in the configuration file.␊ |
| if ($usecache) {␊ |
| $s = var_export(array($GLOBALS['_PX_models'], $GLOBALS['_PX_signal']), true);␊ |
| file_put_contents($cache,␊ |
| '<?php return '.$s.';'."\n", ␊ |
| LOCK_EX);␊ |
| }␊ |
| }␊ |
| ␊ |
| /**␊ |