Example #1
0
 /**
  * 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);
     		}
     		*/
 }