*/ class Mage_Api_Model_Resource_Rules extends Mage_Core_Model_Resource_Db_Abstract { /** * Resource initialization * */ protected function _construct() { $this->_init('api/rule', 'rule_id'); } /** * Save rule * * @param Mage_Api_Model_Rules $rule */ public function saveRel(Mage_Api_Model_Rules $rule) { $adapter = $this->_getWriteAdapter(); $adapter->beginTransaction(); try { $roleId = $rule->getRoleId(); $adapter->delete($this->getMainTable(), array('role_id = ?' => $roleId)); $masterResources = Mage::getModel('api/roles')->getResourcesList2D(); $masterAdmin = false; if ($postedResources = $rule->getResources()) { foreach ($masterResources as $index => $resName) { if (!$masterAdmin) { $permission = (in_array($resName, $postedResources))? 'allow' : 'deny'; $adapter->insert($this->getMainTable(), array( 'role_type' => 'G', 'resource_id' => trim($resName, '/'), 'api_privileges' => null, 'assert_id' => 0, 'role_id' => $roleId, 'api_permission' => $permission )); } if ($resName == 'all' && $permission == 'allow') { $masterAdmin = true; } } } $adapter->commit(); } catch (Mage_Core_Exception $e) { throw $e; } catch (Exception $e) { $adapter->rollBack(); } } }