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; }
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; }
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))); }
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; }