public static function projectPage($params) { $format = Utils::getFormat($params['args'], 1, 3); $projectSlug = Utils::getProjectType($params['args']) == 'system' ? $params['args'][0] : $params['args'][2]; $project = new Project($projectSlug); $user = User::getAuthenticatedUser(); // Make sure the user has access to see this project RoleController::forceClearance(array('project.proofer', 'project.reviewer', 'project.admin', 'project.owner', 'system.admin'), $user, array('project' => $project)); if ($project->numItems > 0) { $percentComplete = round($project->itemsCompleted / $project->numItems * 100, 0); } else { $percentComplete = 0; } $projectArray = $project->getResponse(); $projectArray['percent_complete'] = $percentComplete; $systemGuidelines = Settings::getProtected('system_guidelines'); switch ($params['method']) { case 'GET': $response = array('page_title' => $project->title, 'user' => $user->getResponse($projectSlug), 'project' => $projectArray, 'proofers' => $project->getProoferStats('proof'), 'reviewers' => $project->getProoferStats('review'), 'system_guidelines' => $systemGuidelines); switch ($format) { case 'json': echo json_encode($response); break; case 'html': Template::render('project', $response); break; } break; case 'POST': $project = new Project(Utils::POST('projectSlug')); $project->title = Utils::POST('projectName'); $project->type = Utils::POST('projectType'); $project->public = Utils::POST('projectPublic'); $project->description = Utils::POST('projectDesc'); $project->language = Utils::POST('projectLang'); $project->workflow = Utils::POST('projectWorkflow'); $project->fields = Utils::POST('projectFields'); $project->guidelines = Utils::POST('projectGuidelines'); $project->owner = Utils::POST('projectOwner'); $project->status = Utils::POST('projectStatus'); $project->downloadTemplate = Utils::POST('projectDownloadTemplate'); $project->characters = Utils::POST('projectCharacters'); // Save the changes to the database $status = $project->save(); if ($status == true) { switch ($project->type) { case 'system': $project->url = "projects/" . $project->slug; $project->admin_url = "projects/" . $project->slug . "/admin"; break; case 'user': $project->url = "users/" . $project->owner . "/projects/" . $project->slug; $project->admin_url = "users/" . $project->owner . "/projects/" . $project->slug . "/admin"; break; } } $statusCode = $status ? 'success' : 'error'; $notify = Settings::getProtected('notify'); $notify->trigger("admin_save_project", array('user' => $user, 'username' => $user->username, 'title' => $project->title, 'slug' => $project->slug)); $response = array("statuscode" => $statusCode, "project" => array("url" => $project->url, "admin_url" => $project->admin_url)); $response["project"]["url"] .= ".json"; $response["project"]["admin_url"] .= ".json"; // Always return JSON echo json_encode($response); break; case 'DELETE': break; } }