예제 #1
0
 public static function retrievePagerByUser($user_id, $page = 1, $max = null)
 {
     if ($max == null) {
         $max = sfConfig::get('app_pager_project_max');
     }
     sfContext::getInstance()->getLogger()->info('Begin project retrieval by user_id');
     $c = new Criteria();
     $positions = ProjectUserPeer::retrieveFilledByUserId($user_id);
     $projects = array();
     foreach ($positions as $position) {
         $projects[] = $position->getProjectPosition()->getProjectId();
     }
     if (count($projects) > 0) {
         $c->add(self::ID, $projects, Criteria::IN);
     }
     $crit0 = $c->getNewCriterion(self::CREATED_BY, $user_id);
     $crit1 = $c->getNewCriterion(self::OWNER_ID, $user_id);
     $crit0->addOr($crit1);
     $c->add($crit0);
     $pager = new sfPropelPager('Project', $max);
     $pager->setCriteria($c);
     $pager->setPage($page);
     $pager->init();
     return $pager;
 }
예제 #2
0
 public function getProjectUsersJoinsfGuardUser($criteria = null, $con = null)
 {
     include_once 'lib/model/om/BaseProjectUserPeer.php';
     if ($criteria === null) {
         $criteria = new Criteria();
     } elseif ($criteria instanceof Criteria) {
         $criteria = clone $criteria;
     }
     if ($this->collProjectUsers === null) {
         if ($this->isNew()) {
             $this->collProjectUsers = array();
         } else {
             $criteria->add(ProjectUserPeer::POSITION_ID, $this->getId());
             $this->collProjectUsers = ProjectUserPeer::doSelectJoinsfGuardUser($criteria, $con);
         }
     } else {
         $criteria->add(ProjectUserPeer::POSITION_ID, $this->getId());
         if (!isset($this->lastProjectUserCriteria) || !$this->lastProjectUserCriteria->equals($criteria)) {
             $this->collProjectUsers = ProjectUserPeer::doSelectJoinsfGuardUser($criteria, $con);
         }
     }
     $this->lastProjectUserCriteria = $criteria;
     return $this->collProjectUsers;
 }
예제 #3
0
 public function getApplicants()
 {
     return ProjectUserPeer::retrieveApplicantsByPositionId($this->getId());
 }
예제 #4
0
 public function clonePositionAcceptApplicant($position_uuid, $user_uuid)
 {
     // retrieve desired position
     $position_old = ProjectPositionPeer::retrieveByUuid($position_uuid);
     // clone position
     $position = $position_old->copy();
     // clear uuid so it will regenerate a unique one, save
     $position->setUuid(NULL);
     $position->setFilled(true);
     $position->save();
     // grab desired user
     $user = sfGuardUserProfilePeer::retrieveByUuid($user_uuid);
     // remove applicant from old position
     $positionUser = ProjectUserPeer::retrieveByPositionIdUserId($position_old->getId(), $user->getUserId());
     if ($positionUser == null) {
         sfContext::getInstance()->getLogger()->info('Old PositionUser not found, unable to clone and accept applicant');
         return false;
     }
     $positionUser->delete();
     // build a new positionUser object
     $positionUser = new ProjectUser();
     $positionUser->setPositionId($position->getId());
     $positionUser->setUserId($user->getUserId());
     $positionUser->setStatus(1);
     // Status(1): Accepted
     $positionUser->save();
     if ($position == null || $user == null || $positionUser == null) {
         sfContext::getInstance()->getLogger()->info('Position, user, or PositionUser not found, unable to accept applicant');
         return false;
     }
     // Assign user to members group
     $user = $user->getSfGuardUser();
     $this->addUserToGroup($user, 'members');
     return true;
 }
예제 #5
0
 public static function retrieveByPKs($pks, $con = null)
 {
     if ($con === null) {
         $con = Propel::getConnection(self::DATABASE_NAME);
     }
     $objs = null;
     if (empty($pks)) {
         $objs = array();
     } else {
         $criteria = new Criteria();
         $criteria->add(ProjectUserPeer::ID, $pks, Criteria::IN);
         $objs = ProjectUserPeer::doSelect($criteria, $con);
     }
     return $objs;
 }
예제 #6
0
 public function fromArray($arr, $keyType = BasePeer::TYPE_PHPNAME)
 {
     $keys = ProjectUserPeer::getFieldNames($keyType);
     if (array_key_exists($keys[0], $arr)) {
         $this->setId($arr[$keys[0]]);
     }
     if (array_key_exists($keys[1], $arr)) {
         $this->setUuid($arr[$keys[1]]);
     }
     if (array_key_exists($keys[2], $arr)) {
         $this->setUserId($arr[$keys[2]]);
     }
     if (array_key_exists($keys[3], $arr)) {
         $this->setPositionId($arr[$keys[3]]);
     }
     if (array_key_exists($keys[4], $arr)) {
         $this->setTotalHours($arr[$keys[4]]);
     }
     if (array_key_exists($keys[5], $arr)) {
         $this->setPosition($arr[$keys[5]]);
     }
     if (array_key_exists($keys[6], $arr)) {
         $this->setStatus($arr[$keys[6]]);
     }
     if (array_key_exists($keys[7], $arr)) {
         $this->setIsApproved($arr[$keys[7]]);
     }
     if (array_key_exists($keys[8], $arr)) {
         $this->setUpdatedAt($arr[$keys[8]]);
     }
     if (array_key_exists($keys[9], $arr)) {
         $this->setDeletedAt($arr[$keys[9]]);
     }
     if (array_key_exists($keys[10], $arr)) {
         $this->setCreatedAt($arr[$keys[10]]);
     }
 }
예제 #7
0
 public function getPositionsUser()
 {
     sfContext::getInstance()->getLogger()->info('Grabbing user positions...');
     return ProjectUserPeer::retrieveFilledByUserId($this->getUserId());
 }