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;
     }
 }