示例#1
0
 public static function loadRoutes()
 {
     if ($routes = Cache::get(self::CACHE_KEY_ROUTES_ALL)) {
         Logging::log('Using cached routes');
     } elseif ($routes = Cache::fileGet(self::CACHE_KEY_ROUTES_ALL)) {
         Logging::log('Using file cached routes');
     } else {
         $routes = array();
         $files = array(\CASPAR_APPLICATION_PATH . 'configuration' . \DS . 'routes.yml' => self::CACHE_KEY_ROUTES_APPLICATION);
         $iterator = new \DirectoryIterator(CASPAR_MODULES_PATH);
         foreach ($iterator as $fileinfo) {
             if ($fileinfo->isDir()) {
                 $files[$fileinfo->getPathname() . \DS . 'configuration' . \DS . 'routes.yml'] = self::CACHE_KEY_ROUTES_ALL . '_' . $fileinfo->getBasename();
             }
         }
         foreach ($files as $filename => $cachekey) {
             if ($route_entries = Cache::get($cachekey)) {
                 Logging::log('Using cached route entry for ' . $filename);
             } elseif ($route_entries = Cache::fileGet($cachekey)) {
                 Logging::log('Using file cached route entry for ' . $filename);
             } else {
                 $route_entries = \Spyc::YAMLLoad($filename, true);
                 foreach ($route_entries as $route => $details) {
                     if (is_array($details) && array_key_exists('url', $details)) {
                         $route_entries[$route] = Routing::generateRoute($details);
                     } else {
                         unset($route_entries[$route]);
                     }
                 }
                 Cache::add($cachekey, $route_entries);
                 Cache::fileAdd($cachekey, $route_entries);
             }
             if (is_array($route_entries)) {
                 $routes = array_merge($routes, $route_entries);
             }
         }
     }
     self::$_configuration['routes'] = $routes;
 }