public function savesfGuardUserGroupList($con = null)
 {
     if (!$this->isValid()) {
         throw $this->getErrorSchema();
     }
     if (!isset($this->widgetSchema['sf_guard_user_group_list'])) {
         // somebody has unset this widget
         return;
     }
     if (is_null($con)) {
         $con = $this->getConnection();
     }
     $c = new Criteria();
     $c->add(sfGuardUserGroupPeer::GROUP_ID, $this->object->getPrimaryKey());
     sfGuardUserGroupPeer::doDelete($c, $con);
     $values = $this->getValue('sf_guard_user_group_list');
     if (is_array($values)) {
         foreach ($values as $value) {
             $obj = new sfGuardUserGroup();
             $obj->setGroupId($this->object->getPrimaryKey());
             $obj->setUserId($value);
             $obj->save();
         }
     }
 }
 public function configure()
 {
     $choices = array("" => "");
     foreach (sfGuardUserGroupPeer::retrieveForUserWithoutCurrentRole($this->getOption('actual_user')->getLoginRole(), $this->getOption('actual_user')->getGuardUser()->getId()) as $user_role) {
         $choices[$user_role->getId()] = $user_role;
     }
     $this->setWidget('roles', new sfWidgetFormChoice(array('choices' => $choices)));
     $this->validatorSchema['roles'] = new sfValidatorChoice(array('choices' => array_keys($choices)));
     $this->widgetSchema['roles']->setLabel('Change role: ');
     $this->getWidgetSchema()->setNameFormat('user_role[%s]');
     $this->getValidatorSchema()->setOption('allow_extra_fields', true);
 }
 /**
  * This is a method for emulating ON DELETE CASCADE for DBs that don't support this
  * feature (like MySQL or SQLite).
  *
  * This method is not very speedy because it must perform a query first to get
  * the implicated records and then perform the deletes by calling those Peer classes.
  *
  * This method should be used within a transaction if possible.
  *
  * @param      Criteria $criteria
  * @param      PropelPDO $con
  * @return     int The number of affected rows (if supported by underlying database driver).
  */
 protected static function doOnDeleteCascade(Criteria $criteria, PropelPDO $con)
 {
     // initialize var to track total num of affected rows
     $affectedRows = 0;
     // first find the objects that are implicated by the $criteria
     $objects = sfGuardUserPeer::doSelect($criteria, $con);
     foreach ($objects as $obj) {
         // delete related sfGuardUserPermission objects
         $c = new Criteria(sfGuardUserPermissionPeer::DATABASE_NAME);
         $c->add(sfGuardUserPermissionPeer::USER_ID, $obj->getId());
         $affectedRows += sfGuardUserPermissionPeer::doDelete($c, $con);
         // delete related sfGuardUserGroup objects
         $c = new Criteria(sfGuardUserGroupPeer::DATABASE_NAME);
         $c->add(sfGuardUserGroupPeer::USER_ID, $obj->getId());
         $affectedRows += sfGuardUserGroupPeer::doDelete($c, $con);
         // delete related sfGuardRememberKey objects
         $c = new Criteria(sfGuardRememberKeyPeer::DATABASE_NAME);
         $c->add(sfGuardRememberKeyPeer::USER_ID, $obj->getId());
         $affectedRows += sfGuardRememberKeyPeer::doDelete($c, $con);
     }
     return $affectedRows;
 }
Exemple #4
0
 /**
  * If this collection has already been initialized with
  * an identical criteria, it returns the collection.
  * Otherwise if this sfGuardUser is new, it will return
  * an empty collection; or if this sfGuardUser has previously
  * been saved, it will retrieve related sfGuardUserGroups from storage.
  *
  * This method is protected by default in order to keep the public
  * api reasonable.  You can provide public methods for those you
  * actually need in sfGuardUser.
  */
 public function getsfGuardUserGroupsJoinsfGuardGroup($criteria = null, $con = null, $join_behavior = Criteria::LEFT_JOIN)
 {
     if ($criteria === null) {
         $criteria = new Criteria(sfGuardUserPeer::DATABASE_NAME);
     } elseif ($criteria instanceof Criteria) {
         $criteria = clone $criteria;
     }
     if ($this->collsfGuardUserGroups === null) {
         if ($this->isNew()) {
             $this->collsfGuardUserGroups = array();
         } else {
             $criteria->add(sfGuardUserGroupPeer::USER_ID, $this->id);
             $this->collsfGuardUserGroups = sfGuardUserGroupPeer::doSelectJoinsfGuardGroup($criteria, $con, $join_behavior);
         }
     } else {
         // the following code is to determine if a new query is
         // called for.  If the criteria is the same as the last
         // one, just return the collection.
         $criteria->add(sfGuardUserGroupPeer::USER_ID, $this->id);
         if (!isset($this->lastsfGuardUserGroupCriteria) || !$this->lastsfGuardUserGroupCriteria->equals($criteria)) {
             $this->collsfGuardUserGroups = sfGuardUserGroupPeer::doSelectJoinsfGuardGroup($criteria, $con, $join_behavior);
         }
     }
     $this->lastsfGuardUserGroupCriteria = $criteria;
     return $this->collsfGuardUserGroups;
 }
 /**
  * Populates the object using an array.
  *
  * This is particularly useful when populating an object from one of the
  * request arrays (e.g. $_POST).  This method goes through the column
  * names, checking to see whether a matching key exists in populated
  * array. If so the setByName() method is called for that column.
  *
  * You can specify the key type of the array by additionally passing one
  * of the class type constants BasePeer::TYPE_PHPNAME, BasePeer::TYPE_STUDLYPHPNAME,
  * BasePeer::TYPE_COLNAME, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_NUM.
  * The default key type is the column's phpname (e.g. 'AuthorId')
  *
  * @param      array  $arr     An array to populate the object from.
  * @param      string $keyType The type of keys the array uses.
  * @return     void
  */
 public function fromArray($arr, $keyType = BasePeer::TYPE_PHPNAME)
 {
     $keys = sfGuardUserGroupPeer::getFieldNames($keyType);
     if (array_key_exists($keys[0], $arr)) {
         $this->setUserId($arr[$keys[0]]);
     }
     if (array_key_exists($keys[1], $arr)) {
         $this->setGroupId($arr[$keys[1]]);
     }
 }
 /**
  * Retrieve object using using composite pkey values.
  * @param      string $user_id
  * @param      int $group_id
  * @param      PropelPDO $con
  * @return     sfGuardUserGroup
  */
 public static function retrieveByPK($user_id, $group_id, PropelPDO $con = null)
 {
     $key = serialize(array((string) $user_id, (string) $group_id));
     if (null !== ($obj = sfGuardUserGroupPeer::getInstanceFromPool($key))) {
         return $obj;
     }
     if ($con === null) {
         $con = Propel::getConnection(sfGuardUserGroupPeer::DATABASE_NAME, Propel::CONNECTION_READ);
     }
     $criteria = new Criteria(sfGuardUserGroupPeer::DATABASE_NAME);
     $criteria->add(sfGuardUserGroupPeer::USER_ID, $user_id);
     $criteria->add(sfGuardUserGroupPeer::GROUP_ID, $group_id);
     $v = sfGuardUserGroupPeer::doSelect($criteria, $con);
     return !empty($v) ? $v[0] : null;
 }
 public function getGroups()
 {
     if (!$this->groups) {
         $this->groups = array();
         $c = new Criteria();
         $c->add(sfGuardUserGroupPeer::USER_ID, $this->getId());
         $ugs = sfGuardUserGroupPeer::doSelectJoinsfGuardGroup($c);
         foreach ($ugs as $ug) {
             $group = $ug->getsfGuardGroup();
             $this->groups[$group->getName()] = $group;
         }
     }
     return $this->groups;
 }
 /**
  * Find object by primary key using raw SQL to go fast.
  * Bypass doSelect() and the object formatter by using generated code.
  *
  * @param     mixed $key Primary key to use for the query
  * @param     PropelPDO $con A connection object
  *
  * @return   sfGuardUserGroup A model object, or null if the key is not found
  * @throws   PropelException
  */
 protected function findPkSimple($key, $con)
 {
     $sql = 'SELECT `USER_ID`, `GROUP_ID` FROM `sf_guard_user_group` WHERE `USER_ID` = :p0 AND `GROUP_ID` = :p1';
     try {
         $stmt = $con->prepare($sql);
         $stmt->bindValue(':p0', $key[0], PDO::PARAM_INT);
         $stmt->bindValue(':p1', $key[1], PDO::PARAM_INT);
         $stmt->execute();
     } catch (Exception $e) {
         Propel::log($e->getMessage(), Propel::LOG_ERR);
         throw new PropelException(sprintf('Unable to execute SELECT statement [%s]', $sql), $e);
     }
     $obj = null;
     if ($row = $stmt->fetch(PDO::FETCH_NUM)) {
         $obj = new sfGuardUserGroup();
         $obj->hydrate($row);
         sfGuardUserGroupPeer::addInstanceToPool($obj, serialize(array((string) $key[0], (string) $key[1])));
     }
     $stmt->closeCursor();
     return $obj;
 }
 public function executePermissions(sfWebRequest $request)
 {
     $module = 'sfGuardUser';
     if (!in_array($module, array_keys(sfPlop::getSafePluginModules()))) {
         $this->redirect('@sf_plop_dashboard');
     }
     if ($request->isMethod(sfRequest::POST)) {
         if ($request->isXmlHttpRequest()) {
             $this->setTemplate('ajaxPermissions');
             $this->setLayout(false);
         }
         $group_id = $request->getParameter('g');
         $user_id = $request->getParameter('u');
         $permission_id = $request->getParameter('p');
         if ($group_id) {
             $group_exists = sfPlopGuard::groupExists($group_id);
             if (!$group_exists && $request->isXmlHttpRequest()) {
                 return sfView::ERROR;
             } else {
                 if (!$group_exists) {
                     $this->redirect('@sf_plop_dashboard_permissions');
                 }
             }
         }
         if ($user_id) {
             $user_exists = sfPlopGuard::userExists($user_id);
             if (!$user_exists && $request->isXmlHttpRequest()) {
                 return sfView::ERROR;
             } else {
                 if (!$user_exists) {
                     $this->redirect('@sf_plop_dashboard_permissions');
                 }
             }
         }
         if (isset($group_exists) && isset($user_exists)) {
             $user_group = sfGuardUserGroupPeer::retrieveByPK($user_id, $group_id);
             if ($user_group) {
                 $user_group->delete();
             } else {
                 $user_group = new sfGuardUsergroup();
                 $user_group->setUserId($user_id);
                 $user_group->setGroupId($group_id);
                 $user_group->save();
                 $this->getResponse()->setStatusCode(201);
             }
         }
         if ($permission_id) {
             if ($permission_id == 'super') {
                 if (!sfPlopGuard::isLastSuperAdminUser($user_id)) {
                     $user = sfGuardUserPeer::retrieveByPK($user_id);
                     if ($user->getIsSuperAdmin()) {
                         $user->setIsSuperAdmin(false);
                     } else {
                         $user->setIsSuperAdmin(true);
                     }
                     $user->save();
                 } else {
                     $this->getResponse()->setStatusCode(202);
                     return sfView::ERROR;
                 }
             } else {
                 if (!is_int($permission_id)) {
                     $permission_exists = sfPlopGuard::permissionExists($permission_id);
                     if (!$permission_exists) {
                         $modules = sfPlop::getSafePluginModules();
                         if ($request->isXmlHttpRequest() && !isset($modules[$permission_id])) {
                             return sfView::ERROR;
                         } elseif (!isset($modules[$permission_id])) {
                             $this->redirect('@sf_plop_dashboard_permissions');
                         } else {
                             $module = $modules[$permission_id];
                         }
                         $permission = new sfGuardPermission();
                         $permission->setName($permission_id);
                         $permission->setDescription($module['name']);
                         $permission->save();
                         $permission_id = $permission->getId();
                         $this->getResponse()->setStatusCode(201);
                     } else {
                         $permission_id = sfPlopGuard::getPermission($permission_id)->getId();
                     }
                 } else {
                     $permission_exists = sfPlopGuard::permissionExists($permission_id);
                     if (!$permission_exists && $request->isXmlHttpRequest()) {
                         return sfView::ERROR;
                     } else {
                         if (!$permission_exists) {
                             $this->redirect('@sf_plop_dashboard_permissions');
                         }
                     }
                 }
                 if (isset($user_exists)) {
                     $user_permission = sfGuardUserPermissionPeer::retrieveByPK($user_id, $permission_id);
                     if ($user_permission) {
                         $user_permission->delete();
                     } else {
                         $user_permission = new sfGuardUserPermission();
                         $user_permission->setUserId($user_id);
                         $user_permission->setPermissionId($permission_id);
                         $user_permission->save();
                         $this->getResponse()->setStatusCode(201);
                     }
                 } elseif (isset($group_exists)) {
                     $group_permission = sfGuardGroupPermissionPeer::retrieveByPK($group_id, $permission_id);
                     if ($group_permission) {
                         $group_permission->delete();
                     } else {
                         $group_permission = new sfGuardGroupPermission();
                         $group_permission->setGroupId($group_id);
                         $group_permission->setPermissionId($permission_id);
                         $group_permission->save();
                         $this->getResponse()->setStatusCode(201);
                     }
                 }
             }
         }
         if (!$request->isXmlHttpRequest()) {
             $this->redirect('@sf_plop_dashboard_permissions');
         }
     }
     $this->groups = sfPlopGuard::getAllGroups();
     $this->users = sfPlopGuard::getAllUsers();
     $this->permissions = sfPlopGuard::getAllPermissions();
 }
Exemple #10
0
 public function getsfGuardUserGroupsJoinsfGuardGroup($criteria = null, $con = null)
 {
     include_once 'plugins/sfGuardPlugin/lib/model/om/BasesfGuardUserGroupPeer.php';
     if ($criteria === null) {
         $criteria = new Criteria();
     } elseif ($criteria instanceof Criteria) {
         $criteria = clone $criteria;
     }
     if ($this->collsfGuardUserGroups === null) {
         if ($this->isNew()) {
             $this->collsfGuardUserGroups = array();
         } else {
             $criteria->add(sfGuardUserGroupPeer::USER_ID, $this->getId());
             $this->collsfGuardUserGroups = sfGuardUserGroupPeer::doSelectJoinsfGuardGroup($criteria, $con);
         }
     } else {
         $criteria->add(sfGuardUserGroupPeer::USER_ID, $this->getId());
         if (!isset($this->lastsfGuardUserGroupCriteria) || !$this->lastsfGuardUserGroupCriteria->equals($criteria)) {
             $this->collsfGuardUserGroups = sfGuardUserGroupPeer::doSelectJoinsfGuardGroup($criteria, $con);
         }
     }
     $this->lastsfGuardUserGroupCriteria = $criteria;
     return $this->collsfGuardUserGroups;
 }
Exemple #11
0
 /**
  * This is a method for emulating ON DELETE CASCADE for DBs that don't support this
  * feature (like MySQL or SQLite).
  *
  * This method is not very speedy because it must perform a query first to get
  * the implicated records and then perform the deletes by calling those Peer classes.
  *
  * This method should be used within a transaction if possible.
  *
  * @param      Criteria $criteria
  * @param      PropelPDO $con
  * @return     int The number of affected rows (if supported by underlying database driver).
  */
 protected static function doOnDeleteCascade(Criteria $criteria, PropelPDO $con)
 {
     // initialize var to track total num of affected rows
     $affectedRows = 0;
     // first find the objects that are implicated by the $criteria
     $objects = sfGuardUserPeer::doSelect($criteria, $con);
     foreach ($objects as $obj) {
         // delete related NotaPedido objects
         $c = new Criteria(NotaPedidoPeer::DATABASE_NAME);
         $c->add(NotaPedidoPeer::ADMINISTRA_ID, $obj->getId());
         $affectedRows += NotaPedidoPeer::doDelete($c, $con);
         // delete related NotaPedido objects
         $c = new Criteria(NotaPedidoPeer::DATABASE_NAME);
         $c->add(NotaPedidoPeer::SOLICITA_ID, $obj->getId());
         $affectedRows += NotaPedidoPeer::doDelete($c, $con);
         // delete related NotaPedido objects
         $c = new Criteria(NotaPedidoPeer::DATABASE_NAME);
         $c->add(NotaPedidoPeer::CONTROLA_ID, $obj->getId());
         $affectedRows += NotaPedidoPeer::doDelete($c, $con);
         // delete related NotaPedido objects
         $c = new Criteria(NotaPedidoPeer::DATABASE_NAME);
         $c->add(NotaPedidoPeer::AUTORIZA_ID, $obj->getId());
         $affectedRows += NotaPedidoPeer::doDelete($c, $con);
         // delete related NotaPedidoEstado objects
         $c = new Criteria(NotaPedidoEstadoPeer::DATABASE_NAME);
         $c->add(NotaPedidoEstadoPeer::USER_ID, $obj->getId());
         $affectedRows += NotaPedidoEstadoPeer::doDelete($c, $con);
         // delete related Evento objects
         $c = new Criteria(EventoPeer::DATABASE_NAME);
         $c->add(EventoPeer::USER_ID, $obj->getId());
         $affectedRows += EventoPeer::doDelete($c, $con);
         // delete related CompraEstado objects
         $c = new Criteria(CompraEstadoPeer::DATABASE_NAME);
         $c->add(CompraEstadoPeer::USER_ID, $obj->getId());
         $affectedRows += CompraEstadoPeer::doDelete($c, $con);
         // delete related Venta objects
         $c = new Criteria(VentaPeer::DATABASE_NAME);
         $c->add(VentaPeer::TRANSPORTISTA_INTERNO_ID, $obj->getId());
         $affectedRows += VentaPeer::doDelete($c, $con);
         // delete related VentaEstado objects
         $c = new Criteria(VentaEstadoPeer::DATABASE_NAME);
         $c->add(VentaEstadoPeer::USER_ID, $obj->getId());
         $affectedRows += VentaEstadoPeer::doDelete($c, $con);
         // delete related sfGuardUserPermission objects
         $c = new Criteria(sfGuardUserPermissionPeer::DATABASE_NAME);
         $c->add(sfGuardUserPermissionPeer::USER_ID, $obj->getId());
         $affectedRows += sfGuardUserPermissionPeer::doDelete($c, $con);
         // delete related sfGuardUserGroup objects
         $c = new Criteria(sfGuardUserGroupPeer::DATABASE_NAME);
         $c->add(sfGuardUserGroupPeer::USER_ID, $obj->getId());
         $affectedRows += sfGuardUserGroupPeer::doDelete($c, $con);
         // delete related sfGuardRememberKey objects
         $c = new Criteria(sfGuardRememberKeyPeer::DATABASE_NAME);
         $c->add(sfGuardRememberKeyPeer::USER_ID, $obj->getId());
         $affectedRows += sfGuardRememberKeyPeer::doDelete($c, $con);
         // delete related RecepcionPedido objects
         $c = new Criteria(RecepcionPedidoPeer::DATABASE_NAME);
         $c->add(RecepcionPedidoPeer::RECIBE_ID, $obj->getId());
         $affectedRows += RecepcionPedidoPeer::doDelete($c, $con);
         // delete related RecepcionPedido objects
         $c = new Criteria(RecepcionPedidoPeer::DATABASE_NAME);
         $c->add(RecepcionPedidoPeer::CONTROLA_ID, $obj->getId());
         $affectedRows += RecepcionPedidoPeer::doDelete($c, $con);
         // delete related RecepcionPedido objects
         $c = new Criteria(RecepcionPedidoPeer::DATABASE_NAME);
         $c->add(RecepcionPedidoPeer::ADMINISTRA_ID, $obj->getId());
         $affectedRows += RecepcionPedidoPeer::doDelete($c, $con);
         // delete related UserProfile objects
         $c = new Criteria(UserProfilePeer::DATABASE_NAME);
         $c->add(UserProfilePeer::USER_ID, $obj->getId());
         $affectedRows += UserProfilePeer::doDelete($c, $con);
     }
     return $affectedRows;
 }
 /**
  * Find object by primary key
  * <code>
  * $obj = $c->findPk(array(12, 34), $con);
  * </code>
  * @param     array[$user_id, $group_id] $key Primary key to use for the query
  * @param     PropelPDO $con an optional connection object
  *
  * @return    sfGuardUserGroup|array|mixed the result, formatted by the current formatter
  */
 public function findPk($key, $con = null)
 {
     if (null !== ($obj = sfGuardUserGroupPeer::getInstanceFromPool(serialize(array((string) $key[0], (string) $key[1])))) && $this->getFormatter()->isObjectFormatter()) {
         // the object is alredy in the instance pool
         return $obj;
     } else {
         // the object has not been requested yet, or the formatter is not an object formatter
         $criteria = $this->isKeepQuery() ? clone $this : $this;
         $stmt = $criteria->filterByPrimaryKey($key)->getSelectStatement($con);
         return $criteria->getFormatter()->init($criteria)->formatOne($stmt);
     }
 }
 public static function retrieveByPK($user_id, $group_id, $con = null)
 {
     if ($con === null) {
         $con = Propel::getConnection(self::DATABASE_NAME);
     }
     $criteria = new Criteria();
     $criteria->add(sfGuardUserGroupPeer::USER_ID, $user_id);
     $criteria->add(sfGuardUserGroupPeer::GROUP_ID, $group_id);
     $v = sfGuardUserGroupPeer::doSelect($criteria, $con);
     return !empty($v) ? $v[0] : null;
 }