public static function admin($params) { $format = Utils::getFormat($params['args'], 0, 2); $app_url = Settings::getProtected('app_url'); $db = Settings::getProtected('db'); $user = User::getAuthenticatedUser(); // Make sure the user is at least creator or admin RoleController::forceClearance(array('system.creator', 'system.admin'), $user); // Get latest work for the user's projects $latestWorkList = $db->getAdminProjectsLatestWork($user->username, 5); $latestWork = array(); foreach ($latestWorkList as $work) { $qn = $work['queue_name']; $type = substr($qn, strpos($qn, '.') + 1, strpos($qn, ':') - strpos($qn, '.') - 1); $username = substr($qn, strpos($qn, ':') + 1); $item = new Item($work['item_id'], $work['project_slug']); $project = new Project($work['project_slug']); if ($item->project_type == 'system') { $transcriptURL = "{$app_url}/projects/" . $item->project_slug . "/items/" . $item->item_id . "/{$type}/{$username}"; $editURL = "{$app_url}/projects/" . $item->project_slug . "/items/" . $item->item_id . "/edit"; } else { $transcriptURL = "{$app_url}/" . $item->project_owner . "/projects/" . $item->project_slug . "/items/" . $item->item_id . "/{$type}/{$username}"; $editURL = "{$app_url}/" . $item->project_owner . "/projects/" . $item->project_slug . "/items/" . $item->item_id . "/edit"; } array_push($latestWork, array('item' => $item->getResponse(), 'project' => $project->getResponse(), 'type' => $type, 'username' => $username, 'date_completed' => $work['date_completed'], 'transcript_url' => $transcriptURL, 'edit_url' => $editURL)); } $newestMembers = $db->getNewestProjectMembers($user->username, 5); // Only get list of users if they're a site admin $users = array(); if ($user->role == 'admin') { $usernameList = $db->getUsers(); foreach ($usernameList as $username) { $tempUser = new User($username['username']); $tempUserArray = $tempUser->getResponse(); // Get list of projects they're working on $projects = $db->getUserProjectsWithStats($username['username']); $tempUserArray['projects'] = $projects; array_push($users, $tempUserArray); } } $response = array('page_title' => 'Admin Dashboard', 'user' => $user->getResponse(), 'latest_work' => $latestWork, 'newest_members' => $newestMembers, 'users' => $users); switch ($format) { case 'json': echo json_encode($response); break; case 'html': Template::render('admin_dashboard', $response); break; } }