public function removeCodeReviewer($id) { $this->view = null; try { $data = array(); $project = Project::find($id); if (!$project->getProjectId()) { throw new Exception('Not a project in our system'); } $request_user = User::find(Session::uid()); if (!$project->isCodeReviewAdmin($request_user)) { throw new Exception('Not enough rights'); } $codeReviewers = array_slice(func_get_args(), 1); $deleted_codeReviewers = array(); foreach ($codeReviewers as $codeReviewer) { if ($project->deleteCodeReviewer($codeReviewer)) { $deleted_codeReviewers[] = $codeReviewer; $user = User::find($codeReviewer); $founder = User::find($project->getOwnerId()); $founderUrl = SECURE_SERVER_URL . 'user/' . $founder->getId(); $data = array('nickname' => $user->getNickname(), 'projectName' => $project->getName(), 'projectUrl' => Project::getProjectUrl($project->getProjectId()), 'projectFounder' => $founder->getNickname(), 'projectFounderUrl' => $founderUrl); if (!Utils::sendTemplateEmail($user->getUsername(), 'project-codereview-removed', $data)) { error_log("ProjectController::removeCodeReviewer: Utils::send_email to user failed"); } } } echo json_encode(array('success' => true, 'data' => array('deleted_codereviewers' => $deleted_codeReviewers))); } catch (Exception $e) { $error = $e->getMessage(); echo json_encode(array('success' => false, 'data' => $error)); } }
function checkRemovableProjects() { $report_message = ''; $db = new Database(); $sql_projects = "\n SELECT p.project_id, p.name, u.nickname, p.creation_date\n FROM " . PROJECTS . " AS p\n LEFT JOIN " . USERS . " AS u ON u.id=p.owner_id\n WHERE p.project_id NOT IN (SELECT DISTINCT w1.project_id\n FROM " . WORKLIST . " AS w1)\n AND p.creation_date < DATE_SUB(NOW(), INTERVAL 180 DAY)"; $result = $db->query($sql_projects); while ($row = mysql_fetch_assoc($result)) { // send email $data = array('owner' => $row['nickname'], 'projectUrl' => Project::getProjectUrl($row['project_id']), 'projectName' => $row['name'], 'creation_date' => date('Y-m-d', strtotime($row['creation_date']))); if (Utils::sendTemplateEmail($row['contact_info'], 'project-removed', $data)) { $report_message .= ' <p> Ok email---'; } else { $report_message .= ' <p> Failed email -'; } $report_message .= ' Project (' . $row['project_id'] . ')- <a href="' . Project::getProjectUrl($row['project_id']) . '">' . $row['name'] . '</a> -- Created: ' . $row['creation_date'] . '</p>'; // Remove projects dependencies // Remove project users $report_message .= '<p> Users removed for project id ' . $row['project_id'] . ':</p>'; $sql_get_project_users = "SELECT * FROM " . PROJECT_USERS . " WHERE project_id = " . $row['project_id']; $result_temp = $db->query($sql_get_project_users); while ($row_temp = mysql_fetch_assoc($result_temp)) { $report_message .= dump_row_values($row_temp); } $sql_remove_project_users = "DELETE FROM " . PROJECT_USERS . " WHERE project_id = " . $row['project_id']; $db->query($sql_remove_project_users); // Remove project runners $report_message .= '<p> Designers removed for project id ' . $row['project_id'] . ':</p>'; $sql_get_project_runners = "SELECT * FROM " . PROJECT_RUNNERS . " WHERE project_id = " . $row['project_id']; $result_temp = $db->query($sql_get_project_runners); while ($row_temp = mysql_fetch_assoc($result_temp)) { $report_message .= dump_row_values($row_temp); } $sql_remove_project_runners = "DELETE FROM " . PROJECT_RUNNERS . " WHERE project_id = " . $row['project_id']; $db->query($sql_remove_project_runners); // Remove project roles $report_message .= '<p> Roles removed for project id ' . $row['project_id'] . ':</p>'; $sql_get_project_roles = "SELECT * FROM " . ROLES . " WHERE project_id = " . $row['project_id']; $result_temp = $db->query($sql_get_project_roles); while ($row_temp = mysql_fetch_assoc($result_temp)) { $report_message .= dump_row_values($row_temp); } $sql_remove_project_roles = "DELETE FROM " . ROLES . " WHERE project_id = " . $row['project_id']; $db->query($sql_remove_project_roles); $url = TOWER_API_URL; $fields = array('action' => 'staging_cleanup', 'name' => $row['name']); $result = CURLHandler::Post($url, $fields); // Remove project $report_message .= '<p> Project id ' . $row['project_id'] . ' removed </p>'; $sql_get_project = "SELECT * FROM " . PROJECTS . " WHERE project_id = " . $row['project_id']; $result_temp = $db->query($sql_get_project); while ($row_temp = mysql_fetch_assoc($result_temp)) { $report_message .= dump_row_values($row_temp); } $sql_remove_project = "DELETE FROM " . PROJECTS . " WHERE project_id = " . $row['project_id']; $db->query($sql_remove_project); } // Send report to ops if any project was set as inactive if ($report_message != '') { $headers['From'] = DEFAULT_SENDER; $subject = "Removed Projects Report"; $body = $report_message; if (!Utils::send_email(OPS_EMAIL, $subject, $body, null, $headers)) { error_log('checkActiveProjects cron: Failed to send email report'); } } }
public function projectUrl() { $worklist = $this->worklist; return Project::getProjectUrl($worklist['project_id']); }