context = DatabaseConnection::i()->getContext(); $this->users = $this->context->table("profiles"); } private function toUser(?ActiveRow $ar): ?User { return is_null($ar) ? NULL : new User($ar); } function get(int $id): ?User { return $this->toUser($this->users->get($id)); } function getByShortURL(string $url): ?User { return $this->toUser($this->users->where("shortcode", $url)->fetch()); } function getByChandlerUser(ChandlerUser $user): ?User { return $this->toUser($this->users->where("user", $user->getId())->fetch()); } function find(string $query): \Traversable { $query = "%$query%"; $perPage = $perPage ?? OPENVK_DEFAULT_PER_PAGE; $result = $this->users->where("CONCAT_WS(' ', first_name, last_name) LIKE ?", $query); return new Util\EntityStream("User", $result); } function getFoundCount(string $query): int { $query = "%$query%"; return sizeof($this->users->where("CONCAT_WS(' ', first_name, last_name) LIKE ?", $query)); } function getStatistics(): object { return (object) [ "all" => sizeof(clone $this->users), "active" => sizeof((clone $this->users)->where("online > 0")), "online" => sizeof((clone $this->users)->where("online >= ?", time() - 900)), ]; } use \Nette\SmartObject; }