protected function processRules() { $rules = array(); $method = strtolower(Yii::app()->getRequest()->getRequestType()); //transform method's rules keys to lowercase $this->rules = array_combine(array_map(array($this, '__atToLowerCase'), array_keys($this->rules)), array_values($this->rules)); //check if it has an index the same as the request type and if it does add its rules if (key_exists("@{$method}", $this->rules)) { $rules = $this->rules["@{$method}"]; } //add the default rules if (is_array($rules)) { foreach ($this->rules as $k => $rule) { if (substr($k, 0, 1) !== '@') { $rules[$k] = $rule; } } } elseif (is_string($rules)) { $rules = array("." => $rules); } //override the existing rules with only those that matche with the request type $this->rules = $rules; //disable cache that causes it to load wrong rules //cant use it as its defined as a constant and not able to change to use method's specific cache $this->cacheID = false; parent::processRules(); }
/** * Build the rules from the DB */ protected function processRules() { // Make sure db settings are set if (!Yii::app()->db) { die(sprintf("Could not connect to the database. Please set the DB settings in the protected/config/%s file.", YII_DEBUG ? 'dev.php' : 'production.php')); } $active_lang = implode('|', array_keys(Yii::app()->params['languages'])); $domain = Yii::app()->params['current_domain']; if (($urlrules = Yii::app()->cache->get('customurlrules')) === false) { $dbCommand = Yii::app()->db->createCommand("SELECT alias, language FROM {{custompages}}")->query(); $urlRules = $dbCommand->readAll(); $_more = array(); foreach ($urlRules as $rule) { $_more["http://<lang:({$rule['language']})>.{$domain}/<alias:({$rule['alias']})>"] = array('site/custompages/index'); } // Do we use subdomains for languages or as directory seperators if (Yii::app()->params['subdomain_languages']) { $this->rules = array("http://<lang:({$active_lang})>.{$domain}/admin" => array('admin/index/index'), "http://<lang:({$active_lang})>.{$domain}/admin/<_c:([a-zA-z0-9-]+)>" => array('admin/<_c>/index/'), "http://<lang:({$active_lang})>.{$domain}/admin/<_c:([a-zA-z0-9-_]+)>/<_a:([a-zA-z0-9-_]+)>/*" => array('admin/<_c>/<_a>/'), "http://<lang:({$active_lang})>.{$domain}/admin/<_c:([a-zA-z0-9-_]+)>/<_a:([a-zA-z0-9-_]+)>/*" => array('admin/<_c>/<_a>'), "http://<lang:({$active_lang})>.{$domain}/admin/<_c:([a-zA-z0-9-]+)>/*" => array('admin/<_c>/index/'), "http://<lang:({$active_lang})>.{$domain}/admin/<_c:([a-zA-z0-9-]+)>/*" => array('admin/<_c>/index'), "http://<lang:({$active_lang})>.{$domain}/sitemap" => array('site/sitemap/index', 'urlSuffix' => '.xml', 'caseSensitive' => false), "http://<lang:({$active_lang})>.{$domain}/tutorials/category/<alias:(.*)>" => array('site/tutorials/viewcategory'), "http://<lang:({$active_lang})>.{$domain}/tutorials/view/<alias:(.*)>" => array('site/tutorials/viewtutorial'), "http://<lang:({$active_lang})>.{$domain}/blog/category/<alias:(.*)>" => array('site/blog/viewcategory'), "http://<lang:({$active_lang})>.{$domain}/blog/view/<alias:(.*)>" => array('site/blog/viewpost'), "http://<lang:({$active_lang})>.{$domain}/extensions/category/<alias:(.*)>" => array('site/extensions/viewcategory'), "http://<lang:({$active_lang})>.{$domain}/extensions/view/<alias:(.*)>" => array('site/extensions/viewpost'), "http://<lang:({$active_lang})>.{$domain}/extensions/download/<fileid:(\\d+)>-<alias:(.*)>" => array('site/extensions/download'), "http://<lang:({$active_lang})>.{$domain}/user/<uid:(\\d+)>-<alias:(.*)>" => array('site/users/viewprofile'), "http://<lang:({$active_lang})>.{$domain}/forum/topic/<topicid:(\\d+)>-<alias:(.*?)>/*" => array('site/forum/viewtopic'), "http://<lang:({$active_lang})>.{$domain}/<_c:([a-zA-z0-9-]+)>" => array('site/<_c>/index'), "http://<lang:({$active_lang})>.{$domain}/<_c:([a-zA-z0-9-_]+)>/<_a:([a-zA-z0-9-_]+)>/*" => array('site/<_c>/<_a>/'), "http://<lang:({$active_lang})>.{$domain}/<_c:([a-zA-z0-9-_]+)>/<_a:([a-zA-z0-9-_]+)>/*" => array('site/<_c>/<_a>'), "http://<lang:({$active_lang})>.{$domain}" => array('site/index/index'), "http://<lang:({$active_lang})>.{$domain}/" => array('site/index/index'), "http://<lang:({$active_lang})>.{$domain}/<_c:([a-zA-z0-9-_]+)>/*" => array('site/<_c>/index/'), "http://<lang:({$active_lang})>.{$domain}/<_c:([a-zA-z0-9-_]+)>/*" => array('site/<_c>/index')); } else { $this->rules = array("<lang:({$active_lang})>/admin" => 'admin/index/index', "<lang:({$active_lang})>/admin/<_c:([a-zA-z0-9-]+)>" => 'admin/<_c>/index', "<lang:({$active_lang})>/admin/<_c:([a-zA-z0-9-]+)>/<_a:([a-zA-z0-9-]+)>" => 'admin/<_c>/<_a>', "<lang:({$active_lang})>/admin/<_c:([a-zA-z0-9-]+)>/<_a:([a-zA-z0-9-]+)>//*" => 'admin/<_c>/<_a>/', "<lang:({$active_lang})>/" => 'site/index/index', "<lang:({$active_lang})>/<_c:([a-zA-z0-9-]+)>" => 'site/<_c>/index', "<lang:({$active_lang})>/<_c:([a-zA-z0-9-]+)>/<_a:([a-zA-z0-9-]+)>" => 'site/<_c>/<_a>', "<lang:({$active_lang})>/<_c:([a-zA-z0-9-]+)>/<_a:([a-zA-z0-9-]+)>//*" => 'site/<_c>/<_a>/', "http://{$domain}/sitemap" => array('site/sitemap/index', 'urlSuffix' => '.xml', 'caseSensitive' => false), "http://{$domain}/tutorials/category/<alias:(.*)>" => array('site/tutorials/viewcategory'), "http://{$domain}/tutorials/view/<alias:(.*)>" => array('site/tutorials/viewtutorial'), "http://{$domain}/blog/category/<alias:(.*)>" => array('site/blog/viewcategory'), "http://{$domain}/blog/view/<alias:(.*)>" => array('site/blog/viewpost'), "http://{$domain}/extensions/category/<alias:(.*)>" => array('site/extensions/viewcategory'), "http://{$domain}/extensions/view/<alias:(.*)>" => array('site/extensions/viewpost'), "http://{$domain}/extensions/download/<fileid:(\\d+)>-<alias:(.*)>" => array('site/extensions/download'), "http://{$domain}/user/<uid:(\\d+)>-<alias:(.*)>" => array('site/users/viewprofile'), "http://{$domain}/forum/topic/<topicid:(\\d+)>-<alias:(.*?)>/*" => array('site/forum/viewtopic')); } $urlrules = array_merge($_more, $this->rules); $urlrules = array_merge($urlrules, array("<alias:[0-9a-zA-Z_\\-]+>/*" => 'site/custompages/index')); Yii::app()->cache->set('customurlrules', $urlrules); } $this->rules = $urlrules; // Run parent parent::processRules(); }
/** * Build the rules from the DB */ protected function processRules() { if (($this->rules = Yii::app()->cache->get('customurlrules')) === false) { // Site Rules $this->rules = array('project/<id:\\d+>/<alias>' => 'site/projects/viewproject', 'issue/<id:\\d+>/<alias>' => 'site/tickets/viewticket', 'issues/<type:(priority|version|fixedin|type|status|category|project|milestone)>/<id:\\d+>/<alias>' => 'site/tickets/filterissues', 'issues/<type:(priority|version|fixedin|type|status|category|project|milestone)>/<id:\\d+>/<alias>/<rss:\\w+>' => 'site/tickets/filterissues', 'issues/tag/<tag>' => 'site/tickets/filterissuesbytag', 'wiki/<id:\\d+>/<alias>' => 'site/wiki/viewpage', 'wiki/<id:\\d+>/<alias>/<revisionid:\\d+>' => 'site/wiki/viewpagerevision', '' => 'site/index/index', '<_c:([a-zA-z0-9-]+)>' => 'site/<_c>/index', '<_c:([a-zA-z0-9-]+)>/<_a:([a-zA-z0-9-]+)>' => 'site/<_c>/<_a>', '<_c:([a-zA-z0-9-]+)>/<_a:([a-zA-z0-9-]+)>//*' => 'site/<_c>/<_a>/'); Yii::app()->cache->set('customurlrules', $this->rules); } // Run parent parent::processRules(); }
/** * Overrides processRules, allowing us to inject our own ruleset into the URL Manager * Takes no parameters **/ protected function processRules() { $this->addBasicRules(); $this->cacheRules('content', $this->contentUrlRulesId); $this->cacheRules('categories', $this->categoriesUrlRulesId); // Allow Sphinx Search settings to be dynamically via CiiSettings if (Cii::getConfig('sphinx_enabled')) { $this->rules['/search/<page:\\d+>'] = '/site/search'; $this->rules['/search'] = '/site/search'; } // Append our cache rules BEFORE we run the defaults $this->rules['<controller:\\w+>/<action:\\w+>/<id:\\d+>'] = '<controller>/<action>'; $this->rules['<controller:\\w+>/<action:\\w+>'] = '<controller>/<action>'; return parent::processRules(); }
/** * Overrides processRules, allowing us to inject our own ruleset into the URL Manager * Takes no parameters **/ protected function processRules() { $this->cache = !YII_DEBUG; // Generate the clientRules $this->rules = $this->cache ? Yii::app()->cache->get('CiiMS::Routes') : array(); if ($this->rules == false || empty($this->rules)) { $this->rules = array(); $this->rules = $this->generateClientRules(); $this->rules = CMap::mergearray($this->addRssRules(), $this->rules); $this->rules = CMap::mergeArray($this->addModuleRules(), $this->rules); Yii::app()->cache->set('CiiMS::Routes', $this->rules); } // Append our cache rules BEFORE we run the defaults $this->rules['<controller:\\w+>/<action:\\w+>/<id:\\d+>'] = '<controller>/<action>'; $this->rules['<controller:\\w+>/<action:\\w+>'] = '<controller>/<action>'; return parent::processRules(); }
/** * Build the rules from the DB */ protected function processRules() { $this->rules = array("/admin" => 'admin/index/index', "/admin/<_c:([a-zA-z0-9-]+)>" => 'admin/<_c>/index', "/admin/<_c:([a-zA-z0-9-]+)>/<_a:([a-zA-z0-9-\\.]+)>/*" => 'admin/<_c>/<_a>', "/" => 'site/index/index', "/<_c:([a-zA-z0-9-]+)>" => 'site/<_c>/index', "/<_c:([a-zA-z0-9-]+)>/<_a:([a-zA-z0-9-]+)>/*" => 'site/<_c>/<_a>'); // Run parent parent::processRules(); }