public function removeUser(NsmUser &$user) { try { /* * These are our connections to any cronks */ foreach ($user->cronkPrincipals as $cp) { $re = AppKitDoctrineUtil::createQuery()->delete('CronkPrincipalCronk cpc')->andWhere('cpc.cpc_cronk_id=? and cpc.cpc_principal_id=?', array($cp->cpc_cronk_id, $cp->cpc_principal_id))->execute(); } /* * Our cronks */ foreach ($user->cronks as $cronk) { /* * All connections to our cronks */ AppKitDoctrineUtil::createQuery()->delete('CronkPrincipalCronk cpc')->andWhere('cpc.cpc_cronk_id=?', array($cronk->cronk_id))->execute(); $cronk->delete(); } AppKitDoctrineUtil::getConnection()->beginTransaction(); $this->updateUserroles($user, array()); $targets = $user->getTargets(); foreach ($targets as $target) { $vals = $user->getTargetValues($target->get("target_name")); foreach ($vals as $value) { $value->delete(); } } $principals = $user->getPrincipals(); if (!$principals instanceof NsmPrincipal) { foreach ($principals as $pr) { if ($pr->NsmPrincipalTarget) { foreach ($pr->NsmPrincipalTarget as $pr_t) { $pr_t->delete(); } } $pr->delete(); } } else { if ($principals->NsmPrincipalTarget) { foreach ($principals->NsmPrincipalTarget as $pr_t) { $pr_t->delete(); } } $principals->delete(); } $user->delete(); AppKitDoctrineUtil::getConnection()->commit(); return true; } catch (Exception $e) { AppKitDoctrineUtil::getConnection()->rollback(); $this->getContext()->getLoggerManager()->log($e->getMessage()); throw $e; } }
public function executeRemove(AgaviRequestDataHolder $rd) { try { AppKitDoctrineUtil::getConnection()->beginTransaction(); $roleadmin = $this->getContext()->getModel('RoleAdmin', 'AppKit'); $padmin = $this->getContext()->getModel('PrincipalAdmin', 'AppKit'); $ids = $rd->getParameter("ids", array()); foreach ($ids as $id) { $role = $roleadmin->getRoleById($id); if (!$role) { continue; } $roleadmin->removeRole($role); } AppKitDoctrineUtil::getConnection()->commit(); } catch (Exception $e) { try { AppKitDoctrineUtil::getConnection()->rollback(); } catch (Doctrine_Transaction_Exception $e) { } $this->setAttribute("error", $e->getMessage()); } return 'Success'; }
public function executeWrite(AgaviRequestDataHolder $rd) { // We need the execute method to work with parameter od the request! try { AppKitDoctrineUtil::getConnection()->beginTransaction(); /** @var $useradmin AppKit_UserAdminModel **/ $useradmin = $this->getContext()->getModel('UserAdmin', 'AppKit'); /** @var $padmin AppKit_PrincipalAdminModel **/ $padmin = $this->getContext()->getModel('PrincipalAdmin', 'AppKit'); if ($rd->getParameter('id') == 'new') { $user = new NsmUser(); } else { $user = $useradmin->getUserById($rd->getParameter('id')); } $useradmin->updateUserData($user, $rd); if ($rd->getParameter('password_validate', false) !== false) { $useradmin->updateUserPassword($user, $rd->getParameter('password_validate')); } // Updating the roles $useradmin->updateUserroles($user, $rd->getParameter('userroles', array())); $padmin->updatePrincipalValueData($user->principal, $rd->getParameter('principal_target', array()), $rd->getParameter('principal_value', array())); AppKitDoctrineUtil::getConnection()->commit(); } catch (Exception $e) { try { AppKitDoctrineUtil::getConnection()->rollback(); } catch (Doctrine_Transaction_Exception $e) { } print_r($e->getTraceAsString()); $this->setAttribute("error", $e->getMessage()); } return 'Success'; }
public function deleteCronkRecord($cronkid, $cronkname, $own = true) { if ($this->agaviUser->hasCredential('icinga.cronk.custom') === false && $this->agaviUser->hasCredential('icinga.cronk.admin') === false) { throw new AppKitModelException('No access to delete cronks!'); } $q = AppKitDoctrineUtil::createQuery()->select('c.*')->from('Cronk c')->where('c.cronk_uid=?', array($cronkid)); if ($own == true && $this->agaviUser->hasCredential('icinga.cronk.admin') === false) { $q->andWhere('c.cronk_user_id=?', array($this->user->user_id)); } $cronk = $q->execute()->getFirst(); if ($cronk instanceof Cronk && $cronk->cronk_id > 0) { AppKitDoctrineUtil::getConnection()->beginTransaction(); $params = array($cronk->cronk_id); AppKitDoctrineUtil::createQuery()->delete('CronkCategoryCronk c')->andWhere('c.ccc_cronk_id=?')->execute($params); AppKitDoctrineUtil::createQuery()->delete('CronkPrincipalCronk c')->andWhere('c.cpc_cronk_id=?')->execute($params); AppKitDoctrineUtil::getConnection()->commit(); $cronk->delete(); return true; } else { throw new AppKitModelException('Could not delete cronk: ' . $cronkid); } }
private function deleteAllPrincipalTargetEntries(NsmPrincipal &$p) { AppKitDoctrineUtil::getConnection()->beginTransaction(); foreach ($p->NsmPrincipalTarget as $pt) { $pt->NsmTargetValue->delete(); $pt->delete(); } AppKitDoctrineUtil::getConnection()->commit(); return true; }
/** * Updates the simple role data * @param NsmRole $role * @param AgaviRequestDataHolder $rd * @return boolean * @author Marius Hein */ public function updateRoleData(NsmRole &$role, AgaviRequestDataHolder &$rd) { AppKitDoctrineUtil::updateRecordsetFromArray($role, $rd->getParameters(), self::$editableAttributes); // Checking the principal if (!$role->NsmPrincipal->principal_id) { $role->NsmPrincipal->principal_type = NsmPrincipal::TYPE_ROLE; } if ($role->role_id === null) { // insert a new role $role->save(); } else { // update role $parts = array(); $params = array(); foreach ($role as $property => $value) { if ($property == "role_id" || !in_array($property, self::$editableAttributes)) { continue; } if ($value === null) { $parts[] = "{$property} = NULL"; } else { $parts[] = "{$property} = ? "; $params[] = $value; } } $params[] = $role->role_id; $dql = "UPDATE NsmRole SET " . implode(",", $parts) . " WHERE role_id = ?"; AppKitLogger::warn("Test: %s - %s", $dql, var_export($params, true)); $query = new Doctrine_Query(); $query->setConnection(AppKitDoctrineUtil::getConnection()); $query->parseDqlQuery($dql); $query->execute($params); } return true; }