public function saveUsuarioPermisoList($con = null) { if (!$this->isValid()) { throw $this->getErrorSchema(); } if (!isset($this->widgetSchema['usuario_permiso_list'])) { // somebody has unset this widget return; } if (is_null($con)) { $con = $this->getConnection(); } $c = new Criteria(); $c->add(UsuarioPermisoPeer::FK_PERMISO_ID, $this->object->getPrimaryKey()); UsuarioPermisoPeer::doDelete($c, $con); $values = $this->getValue('usuario_permiso_list'); if (is_array($values)) { foreach ($values as $value) { $obj = new UsuarioPermiso(); $obj->setFkPermisoId($this->object->getPrimaryKey()); $obj->setFkUsuarioId($value); $obj->save(); } } }
/** * Guarda los permisos del usuario */ function executeSavePermiso($request) { // borrar todo los permisos para un usuarios determinado $usuarioId = $this->getRequestParameter('id'); $aPermiso = $this->getRequest()->getParameterHolder()->get('usuarioPermisos'); $c = new Criteria(); $c->add(UsuarioPermisoPeer::FK_USUARIO_ID, $usuarioId); UsuarioPermisoPeer::doDelete($c); if (count($aPermiso) > 0) { // grabar todos los que vienen seleccionados // aqui se debe poder grabar haciendo un solo insert $c = new Criteria(); foreach ($aPermiso as $permisoId) { $p = new UsuarioPermiso(); $p->setFkUsuarioId($usuarioId); $p->setFkPermisoId($permisoId); $p->save(); unset($p); } } //si los permisos que se estan guardando son del //usuario actual refresco las credenciales para evitar el logout/login $this->logMessage("Comprobar si el usuario es el actual: " . $this->getUser()->getAttribute('id'), 'debug'); if ($this->getUser()->getAttribute('id') == $usuarioId) { $this->logMessage("Modificando permisos del usuario actual", 'debug'); $this->getUser()->cargarCredenciales($usuarioId); } return $this->redirect('usuario/editPermiso?id=' . $usuarioId); }