function executeEditPermiso() { // estos son los permisos que tiene el rol $c = new Criteria(); $c->add(RolPermisoPeer::FK_ROL_ID, $this->getRequestParameter('id')); $c->addAscendingOrderByColumn(PermisoPeer::NOMBRE); $rolPermisos = RolPermisoPeer::doSelectJoinPermiso($c); // esto puede ser descartado usando en el select_tag, objects_for_select $optionsRolPermisos = array(); foreach ($rolPermisos as $rolPermiso) { $optionsRolPermisos[$rolPermiso->getFkPermisoId()] = sprintf("%s (%s)", $rolPermiso->getPermiso()->getNombre(), $rolPermiso->getPermiso()->getDescripcion()); } //estos son todos los permisos existentes $permisos = PermisoPeer::doSelect(new Criteria()); $todosLosPermisos = array(); foreach ($permisos as $permiso) { $todosLosPermisos[$permiso->getId()] = $permiso->getNombre(); } // estos son los permisos existentes menos los del usuario $this->optionsPermisos = array_diff_key($todosLosPermisos, $optionsRolPermisos); $c = new Criteria(); $c->add(RolPeer::ACTIVO, 1); $roles = RolPeer::doSelect($c); $optionsRol = array(); foreach ($roles as $rol) { $optionsRol[$rol->getId()] = $rol->getNombre(); } $this->optionsRol = $optionsRol; $this->optionsRolPermisos = $optionsRolPermisos; }
public function getRolPermisosJoinPermiso($criteria = null, $con = null, $join_behavior = Criteria::LEFT_JOIN) { if ($criteria === null) { $criteria = new Criteria(RolPeer::DATABASE_NAME); } elseif ($criteria instanceof Criteria) { $criteria = clone $criteria; } if ($this->collRolPermisos === null) { if ($this->isNew()) { $this->collRolPermisos = array(); } else { $criteria->add(RolPermisoPeer::FK_ROL_ID, $this->id); $this->collRolPermisos = RolPermisoPeer::doSelectJoinPermiso($criteria, $con, $join_behavior); } } else { $criteria->add(RolPermisoPeer::FK_ROL_ID, $this->id); if (!isset($this->lastRolPermisoCriteria) || !$this->lastRolPermisoCriteria->equals($criteria)) { $this->collRolPermisos = RolPermisoPeer::doSelectJoinPermiso($criteria, $con, $join_behavior); } } $this->lastRolPermisoCriteria = $criteria; return $this->collRolPermisos; }