/** * * @param type $userLogged * @param DbTable_RoleRow $roleRow * @param type $allowPrivileges */ public function updateRolePrivileges($userLogged, DbTable_RoleRow $roleRow, $allowPrivileges = array()) { DbTable_Resource::getInstance()->getAdapter()->beginTransaction(); try { /* Deleta todos os privilégios do papel */ $whereDelete = array('RoleId = ?' => $roleRow->getId()); DbTable_RoleResourcePrivilege::getInstance()->delete($whereDelete); foreach ($allowPrivileges as $allowPrivilege) { list($resourceId, $privilege) = explode(':', $allowPrivilege, 2); /* o usuário logado tem este privilégio? */ $resource = DbTable_Resource::getInstance()->find($resourceId)->current(); $allowEditPrivileges = $this->isAllowed($userLogged->getRole(), $resource->getResourceName(), $privilege); if (!$allowEditPrivileges) { throw new Exception('Sem permissão para editar privilegio'); } $roleResourcePrivilege = DbTable_RoleResourcePrivilege::getInstance()->createRow()->setRoleId($roleRow->getId())->setResourceId($resourceId)->setPrivilege($privilege); $roleResourcePrivilege->save(); } self::clearAclCache(); DbTable_Resource::getInstance()->getAdapter()->commit(); return $this; } catch (Exception $e) { DbTable_Resource::getInstance()->getAdapter()->rollBack(); throw new Exception($e); } }
public function saveInsertGrade($data) { DbTable_BlockEnterpreneurGrade::getInstance()->getAdapter()->beginTransaction(); try { $grade = DbTable_BlockEnterpreneurGrade::getInstance()->createRow()->setEnterpreneurFeatureId($data['EnterpreneurFeatureId'])->setCompetitionId($data['CompetitionId'])->setUserId($data['UserId'])->setQuestionnaireId($data['QuestionnaireId'])->setBlockId($data['BlockId'])->setDescription($data['Description'])->setPoints($data['Points']); $grade->save(); DbTable_Resource::getInstance()->getAdapter()->commit(); return $grade; } catch (Exception $e) { DbTable_Resource::getInstance()->getAdapter()->rollBack(); throw new Exception($e); } return true; }