Beispiel #1
0
 public static function fetchByRoot(Connection $conn, $id, MembershipEntityInterface $root)
 {
     if ($root instanceof Area) {
         $data = $conn->fetchAssoc('SELECT * FROM `' . EdkTables::MESSAGE_TBL . '` WHERE `id` = :id AND `areaId` = :rootId', [':id' => $id, ':rootId' => $root->getId()]);
     } elseif ($root instanceof Group) {
         $data = $conn->fetchAssoc('SELECT m.* FROM `' . EdkTables::MESSAGE_TBL . '` m ' . 'INNER JOIN `' . CoreTables::AREA_TBL . '` a ON a.`id` = m.`areaId` ' . 'WHERE m.`id` = :id AND a.`groupId` = :rootId', [':id' => $id, ':rootId' => $root->getId()]);
     } elseif ($root instanceof Project) {
         $data = $conn->fetchAssoc('SELECT m.* FROM `' . EdkTables::MESSAGE_TBL . '` m ' . 'INNER JOIN `' . CoreTables::AREA_TBL . '` a ON a.`id` = m.`areaId` ' . 'WHERE m.`id` = :id AND a.`projectId` = :rootId', [':id' => $id, ':rootId' => $root->getId()]);
     }
     if (false === $data) {
         return false;
     }
     $item = self::fromArray($data);
     if ($root instanceof Area) {
         $item->area = $root;
     } elseif ($root instanceof Group) {
         $item->area = Area::fetchByGroup($conn, $data['areaId'], $root);
     } elseif ($root instanceof Project) {
         $item->area = Area::fetchByProject($conn, $data['areaId'], $root);
     }
     if (!empty($data['responderId'])) {
         $item->responder = User::fetchByCriteria($conn, QueryClause::clause('u.id = :id', ':id', $data['responderId']));
     }
     return $item;
 }
 public function getUserByEmail($email)
 {
     if (filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
         throw new ModelException('Invalid e-mail address');
     }
     $this->transaction->requestTransaction();
     $user = User::fetchByCriteria($this->conn, QueryClause::clause('u.`email` = :email', ':email', $email));
     if (empty($user)) {
         throw new ItemNotFoundException('The specified user has not been found.');
     }
     return $user;
 }
Beispiel #3
0
 public static function fetchByProject(Connection $conn, $id, Project $project)
 {
     $data = $conn->fetchAssoc('SELECT r.*, v.id AS `verifier_id`, v.`name` AS `verifier_name`, ' . 't.`id` AS `territory_id`, t.`name` AS `territory_name`, t.`areaNum` AS `territory_areaNum`, t.`requestNum` as `territory_requestNum` ' . 'FROM `' . CoreTables::AREA_REQUEST_TBL . '` r ' . 'INNER JOIN `' . CoreTables::TERRITORY_TBL . '` t ON t.`id` = r.`territoryId` ' . 'LEFT JOIN `' . CoreTables::USER_TBL . '` v ON v.`id` = r.`verifierId` ' . 'WHERE r.`id` = :id AND r.`projectId` = :projectId', [':id' => $id, ':projectId' => $project->getId()]);
     if (null === $data) {
         return false;
     }
     $user = User::fetchByCriteria($conn, QueryClause::clause('u.`id` = :id', ':id', $data['requestorId']));
     $item = self::fromArray($data);
     $item->setProject($project);
     $item->setRequestor($user);
     if (!empty($data['verifier_id'])) {
         $item->verifier = new Verifier($data['verifier_id'], $data['verifier_name']);
     }
     $item->setTerritory($item->oldTerritory = Territory::fromArray($data, 'territory'));
     return $item;
 }
Beispiel #4
0
 public function findUserByNameMail($username, $email)
 {
     return User::fetchByCriteria($this->conn, QueryOperator::op('AND')->expr(QueryClause::clause('u.`login` = :login', ':login', $username))->expr(QueryClause::clause('u.`email` = :email', ':email', $email)));
 }
Beispiel #5
0
 public function insert(Connection $conn)
 {
     $this->createdAt = time();
     $this->assignmentKey = strtoupper(hash('sha256', uniqid(time() . 'LWDXFDF' . $_SERVER['REMOTE_ADDR'] . rand(-2000000, 2000000) . 'djdjDfjashaXms')));
     $checkUser = User::fetchByCriteria($conn, QueryClause::clause('u.`email` = :email', ':email', $this->email));
     if (false === $checkUser) {
         $this->id = $conn->insert(CoreTables::INVITATION_TBL, ['email' => $this->email, 'role' => $this->role, 'note' => $this->note, 'resourceType' => $this->resourceType, 'resourceName' => $this->resourceName, 'resourceId' => $this->resourceId, 'inviterId' => $this->inviter->getId(), 'createdAt' => $this->createdAt, 'assignmentKey' => $this->assignmentKey]);
     } else {
         $this->user = $checkUser;
         $this->id = $conn->insert(CoreTables::INVITATION_TBL, ['email' => $this->email, 'userId' => $this->user->getId(), 'role' => $this->role, 'note' => $this->note, 'resourceType' => $this->resourceType, 'resourceName' => $this->resourceName, 'resourceId' => $this->resourceId, 'inviterId' => $this->inviter->getId(), 'createdAt' => $this->createdAt, 'assignmentKey' => $this->assignmentKey]);
     }
     return $this->id;
 }