示例#1
0
/**
 * Установка/снятие кандидата.
 *
 * @param   integer        id предложения
 *
 * @return xajaxResponse
 */
function Candidate($oid)
{
    global $DB;
    session_start();
    $uid = $_SESSION['uid'];
    $oid = intval($oid);
    $objResponse = new xajaxResponse();
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/contest.php';
    $row = $DB->row('
		SELECT offers.*, users.login, projects.user_id AS owner_id, projects.closed 
		FROM projects_contest_offers AS offers 
		JOIN projects ON projects.id = offers.project_id 
		JOIN users ON users.uid = offers.user_id 
		WHERE offers.id = ? AND ((SELECT COUNT(*) FROM projects_contest_offers WHERE project_id = projects.id AND (position IS NOT NULL AND position > 0)) = 0)
	', $oid);
    if (!$row) {
        $objResponse->alert('Несуществующее предложение');
        return $objResponse;
    }
    if (!is_emp() || $uid != $row['owner_id']) {
        $objResponse->alert('Несуществующее предложение!');
        return $objResponse;
    }
    if ($row['closed'] == 't') {
        $objResponse->alert('Проект закрыт!');
        return $objResponse;
    }
    $contest = new contest(0, $uid, is_emp(), TRUE, hasPermissions('projects'));
    if ($error = $contest->Candidate($oid)) {
        $objResponse->alert($error);
        return $objResponse;
    }
    if ($row['selected'] == 't') {
        $objResponse->call('candidate.deleted', $row['user_id'], $row['login']);
    } else {
        $objResponse->call('candidate.added', $row['user_id'], $row['login']);
    }
    return $objResponse;
}