public function editAction() { //add role if it is provided parent::editAction(); if ($this->_hasParam('roles_list')) { $objUser = $this->view->object; // when the list of roles is submitted directly with user form $arrExistingRoles = array(); foreach ($objUser->getRoles() as $objRole) { $arrExistingRoles[$objRole->getId()] = $objRole->getId(); } $arrNewIds = array(); $arrIds = explode(",", $this->_getParam('roles_list')); foreach ($arrIds as $nRoleId) { $nRoleId = trim($nRoleId); if ($nRoleId == '') { continue; } $arrNewIds[$nRoleId] = $nRoleId; if (!isset($arrExistingRoles[$nRoleId])) { // need to add a role $objUserRole = User_UserRole::Table()->createRow(); $objUserRole->ucur_user_id = $objUser->getId(); $objUserRole->ucur_role_id = $nRoleId; $objUserRole->save(false); } } // walking through existing roles, delete IDs foreach ($arrExistingRoles as $nRoleId) { if (!isset($arrNewIds[$nRoleId])) { // this role has to be deleted $objUserRole = User_UserRole::Table()->findRole($objUser->getId(), $nRoleId); if (is_object($objUserRole)) { $objUserRole->delete(); } } } $objUser->cleanCache(); $this->view->object = $objUser; } else { if ($this->_hasParam('role') && $this->_getParam('role') != '') { $strRole = $this->_getParam('role'); $objRole = User_Role::Table()->findByName($strRole); if (!is_object($objRole)) { throw new App_Exception('Invalid User Role'); } $objUser = $this->view->object; if (!$objUser->hasRole($strRole)) { $objUserRole = User_UserRole::Table()->createRow(); $objUserRole->ucur_user_id = $objUser->getId(); $objUserRole->ucur_role_id = $objRole->getId(); $objUserRole->save(false); $objUser->cleanCache(); } } } }
public function getlistAction() { if ($this->_hasParam('user')) { $this->view->user = $this->_getParam('user'); } if ($this->_hasParam('editable')) { $this->view->isEditable = $this->_getParam('editable'); } parent::getlistAction(); }