/** * populateRequestMap method * * @param bool $write false * @param bool $load null * @return void * @access protected */ protected static function _populateRequestMap($write = false, $load = null) { $cacheFile = CACHE . self::cRead('cacheFile'); if (empty(self::$requestMap) || $load) { if (file_exists($cacheFile)) { include $cacheFile; self::$requestMap = $config['requestMap']; } else { self::$requestMap = array(); } } if (empty(self::$requestMap['urlPrefix'])) { if (class_exists('Router')) { self::$requestMap['urlPrefix'] = Router::url('/'); if (self::$requestMap['urlPrefix'] === '/') { self::$requestMap['urlPrefix'] = ''; } } else { self::$requestMap['urlPrefix'] = ''; } } if (!$write) { return; } if (file_exists($cacheFile)) { $merge = true; } $fp = fopen($cacheFile, 'a+'); if (!flock($fp, LOCK_EX | LOCK_NB)) { return; } if (!empty($merge)) { include $cacheFile; if (!empty($config)) { $merged = $config['requestMap']; foreach (self::$requestMap as $type => $sets) { if (is_array($sets)) { foreach ($sets as $set => $values) { $merged[$type][$set] = $values; } } else { $merged[$type] = $sets; } } self::$requestMap = $merged; } } self::log('Updating config file'); foreach (self::$requestMap as $type => &$stuff) { if (is_array($stuff)) { ksort($stuff); } } ksort(self::$requestMap); $string = "<?php\n\$config['requestMap'] = " . var_export(self::$requestMap, true) . ';'; ftruncate($fp, 0); fwrite($fp, $string); fclose($fp); /* Trust in flock $return = self::_exec('php -l ' . escapeshellarg($cacheFile), $_); if ($return !== 0) { trigger_error('self::_populateRequestMap the written config file contains a parse error and has been deleted'); unlink($cacheFile); } */ }