/** * Ensures that removal of a Resource results in its rules being removed * * @return void */ public function testRulesResourceRemove() { $this->_acl->add(new Zend_Acl_Resource('area'))->allow(null, 'area'); $this->assertTrue($this->_acl->isAllowed(null, 'area')); $this->_acl->remove('area'); try { $this->_acl->isAllowed(null, 'area'); $this->fail('Expected Zend_Acl_Exception not thrown upon isAllowed() on non-existent Resource'); } catch (Zend_Acl_Exception $e) { $this->assertContains('not found', $e->getMessage()); } $this->_acl->add(new Zend_Acl_Resource('area')); $this->assertFalse($this->_acl->isAllowed(null, 'area')); }
protected function _getValidAco(Zend_Acl $aco, $context) { foreach ($aco->getChildren() as $node) { if (!$this->canAccess($node, $context)) { $aco->remove($node->getPath()); } } return $aco; }
/** * Removes a Resource and all of its children * * The $resource parameter can either be a Resource or a Resource identifier. * * @param Zend_Acl_Resource_Interface|string $resource * @throws {@link Zend_Acl_Exception} * @return Zend_Acl Provides a fluent interface */ public function remove($resource) { if ($this->hasCachingAdapter()) { $this->_checkCaching(); } $resourceId = $resource instanceof Zend_Acl_Resource_Interface ? $resource->getResourceId() : (string) $resource; $this->_setResourceUnloaded($resourceId); $arrResources = $this->_getAdapter()->removeResource($resourceId); foreach ($arrResources as $resource) { if ($this->has($resource) && $resource != $resourceId) { parent::remove($role); } if ($this->hasResourceLoaded($resource)) { $this->_setResourceUnloaded($resource); } //Zum Cachen freigeben: if ($this->hasCachingAdapter()) { $this->_getCachingAdapter()->change(null, $resource); } } //Zum Cachen freigeben: if ($this->hasCachingAdapter()) { $this->_getCachingAdapter()->change(null, $resourceId); } return parent::remove($resourceId); }