*/ class Mage_Admin_Model_Resource_Block extends Mage_Core_Model_Resource_Db_Abstract { /** * Cache id */ const CACHE_ID = 'permission_block'; /** * Define main table * */ protected function _construct() { $this->_init('admin/permission_block', 'block_id'); } /** * Get allowed types * * @return array */ public function getAllowedTypes() { $data = Mage::app()->getCacheInstance()->load(self::CACHE_ID); if ($data === false) { $this->_generateCache(); $data = Mage::app()->getCacheInstance()->load(self::CACHE_ID); } return Mage::helper('core')->jsonDecode($data); } /** * Regenerate cache */ protected function _generateCache() { /** @var Mage_Admin_Model_Resource_Block_Collection $collection */ $collection = Mage::getResourceModel('admin/block_collection'); $collection->addFieldToFilter('is_allowed', array('eq' => 1)); $data = $collection->getColumnValues('block_name'); $data = array_flip($data); Mage::app()->saveCache( Mage::helper('core')->jsonEncode($data), self::CACHE_ID, array(Mage_Core_Model_App::CACHE_TAG) ); } /** * @param Mage_Core_Model_Abstract $object * @return $this */ protected function _afterSave(Mage_Core_Model_Abstract $object) { $this->_generateCache(); return parent::_afterSave($object); } /** * @param Mage_Core_Model_Abstract $object * @return $this */ protected function _afterDelete(Mage_Core_Model_Abstract $object) { $this->_generateCache(); return parent::_afterDelete($object); } }