/** * 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; } }
/** * 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); }