public function getIndex() { Auth::getUser()->hasPermissionOr401(Config::get("permissions.users"), 0); $view = View::make('home.admin.users.index'); $tableData = array(); $pageNo = FormHelpers::getPageNo(); $searchTerm = FormHelpers::getValue("search", "", false, true); // get shared lock on records so that they can't be deleted before query runs to get specific range // (this doesn't prevent new ones getting added but that doesn't really matter too much) $noUsers = User::search($searchTerm)->sharedLock()->count(); $noPages = FormHelpers::getNoPages($noUsers); if ($pageNo > 0 && FormHelpers::getPageStartIndex() > $noUsers - 1) { App::abort(404); return; } $users = User::with("permissionGroups")->search($searchTerm)->usePagination()->orderBy("disabled", "asc")->orderBy("admin", "desc")->orderBy("cosign_user", "asc")->orderBy("username", "asc")->orderBy("created_at", "desc")->sharedLock()->get(); foreach ($users as $a) { $enabled = !(bool) $a->disabled; $enabledStr = $enabled ? "Yes" : "No"; $admin = (bool) $a->admin; $adminStr = $admin ? "Yes" : "No"; $groupsStr = null; $groups = array(); $groupModels = $a->permissionGroups()->orderBy("position", "asc")->get(); if (count($groupModels) > 0) { foreach ($groupModels as $b) { $groups[] = $b->name; } $groupsStr = implode(", ", $groups); } else { $groupsStr = "[No Groups]"; } $tableData[] = array("enabled" => $enabledStr, "enabledCss" => $enabled ? "text-success" : "text-danger", "admin" => $adminStr, "adminCss" => $admin ? "text-success" : "text-danger", "cosignUser" => !is_null($a->cosign_user) ? $a->cosign_user : "******", "user" => !is_null($a->username) ? $a->username : "******", "groups" => $groupsStr, "timeCreated" => $a->created_at->toDateTimeString(), "editUri" => Config::get("custom.admin_base_url") . "/users/edit/" . $a->id, "id" => $a->id); } $view->tableData = $tableData; $view->editEnabled = Auth::getUser()->hasPermission(Config::get("permissions.users"), 1); $view->pageNo = $pageNo; $view->noPages = $noPages; $view->createUri = Config::get("custom.admin_base_url") . "/users/edit"; $view->deleteUri = Config::get("custom.admin_base_url") . "/users/delete"; $this->setContent($view, "users", "users"); }