public function testLinkstringRuleWithQueryString() { $request = new CakeRequest(); $request->addParams(array('controller' => 'nodes', 'plugin' => 'nodes', 'action' => 'index', 'type' => 'blog')); $request->query = array('page' => '8'); $Filter = new VisibilityFilter($request); $blocks = $this->_testData(); Configure::write('foo', true); $results = $Filter->remove($blocks, array('model' => 'Block', 'field' => 'visibility_paths')); // exact match with query string $this->assertTrue(Hash::check($results, '{n}.Block[id=6]')); }
/** * Blocks * * Blocks will be available in this variable in views: $blocks_for_layout * * @return void */ public function blocks() { $regions = $this->Block->Region->find('active'); $alias = $this->Block->alias; $roleId = $this->controller->Croogo->roleId(); $status = $this->Block->status(); $request = $this->controller->request; $slug = Inflector::slug(strtolower(urldecode($request->url))); $Filter = new VisibilityFilter($request); foreach ($regions as $regionId => $regionAlias) { $cacheKey = $regionAlias . '_' . $roleId; $this->blocksForLayout[$regionAlias] = array(); $visibilityCachePrefix = 'visibility_' . $slug . '_' . $cacheKey; $blocks = Cache::read($visibilityCachePrefix, 'croogo_blocks'); if ($blocks === false) { $blocks = $this->Block->find('published', array('regionId' => $regionId, 'roleId' => $roleId, 'cacheKey' => $cacheKey)); foreach ($blocks as &$block) { $block[$alias]['visibility_paths'] = $this->Block->decodeData($block[$alias]['visibility_paths']); } $blocks = $Filter->remove($blocks, array('model' => $alias, 'field' => 'visibility_paths', 'cache' => array('prefix' => $visibilityCachePrefix, 'config' => 'croogo_blocks'))); Cache::write($visibilityCachePrefix, $blocks, 'croogo_blocks'); } $this->processBlocksData($blocks); $this->blocksForLayout[$regionAlias] = $blocks; } }