Example #1
0
 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));
     }
 }
Example #2
0
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');
        }
    }
}
Example #3
0
 public function projectUrl()
 {
     $worklist = $this->worklist;
     return Project::getProjectUrl($worklist['project_id']);
 }