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]'));
 }
Exemple #2
0
 /**
  * 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;
     }
 }