/** * Return User object of given user_id * * @param int $user_id * @return User */ public function getObjectById($user_id, $cacheMinutes = 0) { $user_id = intval($user_id); $this->query->exec("select * from `" . Tbl::get('TBL_USERS') . "` where `id`='{$user_id}'", $cacheMinutes); if ($this->query->countRecords()) { $res = $this->query->fetchRecord(); $user = new User(); $user->setLogin($res["login"]); $user->setId($user_id); $user->setCreationDate($res["creation_date"]); $user->setStatus($res["enable"]); foreach ($res as $key => $val) { if ($key != 'id' && $key != 'enable' && $key != 'creation_date' && $key != 'login' && $key != 'password') { $user->{$key} = $val; } } $this->query->exec("select `permission_id` from `" . Tbl::get('TBL_USERS_PERMISSIONS') . "` where `user_id`='{$user_id}'", $cacheMinutes); $perms_ids_count = $this->query->countRecords(); if ($perms_ids_count) { $perms_ids = $this->query->fetchFields(0, true); $sql_statement = "select `name` from `" . Tbl::get('TBL_PERMISSIONS') . "` where `id` in ("; $count = $perms_ids_count - 1; for ($i = 0; $i < $count; ++$i) { $sql_statement .= $perms_ids[$i] . ", "; } $sql_statement .= $perms_ids[$count] . ")"; $this->query->exec($sql_statement, $cacheMinutes); $user->setPermissions($this->query->fetchFields(0, true)); } $this->query->exec("select `group_id` from `" . Tbl::get('TBL_USERS_GROUPS') . "` where `user_id`='{$user_id}'", $cacheMinutes); $groups_ids_count = $this->query->countRecords(); if ($groups_ids_count) { $groups_ids = $this->query->fetchFields(0, true); $sql_statement = "select `name` from `" . Tbl::get('TBL_GROUPS') . "` where `id` in ("; $count = $groups_ids_count - 1; for ($i = 0; $i < $count; ++$i) { $sql_statement .= $groups_ids[$i] . ", "; } $sql_statement .= $groups_ids[$count] . ")"; $this->query->exec($sql_statement, $cacheMinutes); $groups_names = $this->query->fetchFields(0, true); $user->setGroups($groups_names); foreach ($groups_names as $group_name) { $user->addPermissions($this->getGroupPermissionsList($group_name, $cacheMinutes)); } $user->setPrimaryGroup($this->getPrimaryGroup($user_id, $cacheMinutes)); } return $user; } return new User(); }