示例#1
0
 /**
  * If an engine page has already been pushed or we are on an engine page now,
  * returns that engine page slug. Otherwise returns null. Useful to determine
  * whether you should get clever or not in a getEngineSlug() method for an
  * aDoctrineRoute.
  *
  * @param  sfRoute $route
  *
  * @return string The engine slug, or null
  */
 public static function getContextEngineSlug(sfRoute $route)
 {
     $defaults = $route->getDefaults();
     $currentPage = aTools::getCurrentPage();
     $engine = $defaults['module'];
     if (isset(self::$targetEnginePageSlugs[$engine]) && count(self::$targetEnginePageSlugs[$engine])) {
         return end(self::$targetEnginePageSlugs[$engine]);
     } elseif ($currentPage && $currentPage->engine === $defaults['module']) {
         return $currentPage->slug;
     } else {
         return null;
     }
 }
示例#2
0
 /**
  * Prepends the current CMS page to the URL.
  *
  * @param  string $url The URL so far obtained from parent::generate
  * @param  Boolean $absolute  Whether to generate an absolute URL
  *
  * @return string The generated URL
  */
 public static function addPageToUrl(sfRoute $route, $url, $absolute)
 {
     $defaults = $route->getDefaults();
     $currentPage = aTools::getCurrentPage();
     $engine = $defaults['module'];
     if (isset(self::$targetEnginePages[$engine]) && count(self::$targetEnginePages[$engine])) {
         $page = end(self::$targetEnginePages[$engine]);
     } elseif (!$currentPage || $currentPage->engine !== $defaults['module']) {
         $page = aPageTable::getFirstEnginePage($defaults['module']);
     } else {
         $page = $currentPage;
     }
     if (!$page) {
         throw new sfException('Attempt to generate aRoute URL for module ' . $defaults['module'] . ' with no matching engine page on the site');
     }
     // A route URL of / for an engine route maps to the page itself, without a trailing /
     if ($url === '/') {
         $url = '';
     }
     // Ditto for / followed by a query string (missed this before)
     if (substr($url, 0, 2) === '/?') {
         $url = substr($url, 1);
     }
     $pageUrl = $page->getUrl($absolute);
     // Strip controller off so it doesn't duplicate the controller in the
     // URL we just generated. We could use the slug directly, but that would
     // break if the CMS were not mounted at the root on a particular site.
     // Take care to function properly in the presence of an absolute URL
     if (preg_match("/^(https?:\\/\\/[^\\/]+)?\\/[^\\/]+\\.php(.*)\$/", $pageUrl, $matches)) {
         $pageUrl = $matches[2];
     }
     return $pageUrl . $url;
 }
 /**
  * get the security settings for a route
  *
  * @param sfRoute $route
  * @return array
  */
 protected function getSecurityConfigForRoute(sfRoute $route)
 {
     $route_defaults = $route->getDefaults() ? $route->getDefaults() : $route->getDefaultParameters();
     $config = $this->context->getConfiguration();
     if ($file = $config->getConfigCache()->checkConfig('modules/' . $route_defaults['module'] . '/config/security.yml', true)) {
         require $file;
     } else {
         $this->security = array();
     }
     $secure = $this->getSecurityValue($route_defaults['action'], 'is_secure');
     $credentials = $this->getSecurityValue($route_defaults['action'], 'credentials');
     if (!is_null($credentials) && !is_array($credentials)) {
         $credentials = array($credentials);
     }
     return array('is_secure' => $secure, 'credentials' => $credentials);
 }