示例#1
0
/**
 * Добавление комментария.
 *
 * @param   integer        id предложения
 * @param   string         комментарий
 * @param   integer        id комментария на который дается ответ или 0, если комментарий первого уровня вложенности
 * @param   integer        уровень вложенности комментария
 *
 * @return xajaxResponse
 */
function CreateComment($oid, $comment, $reply, $level)
{
    global $contest, $stop_words;
    session_start();
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/contest.php';
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php';
    $objResponse = new xajaxResponse();
    if (!trim($comment)) {
        $objResponse->alert('Комментарий не может быть пустым');
        return $objResponse;
    }
    if (!($uid = $_SESSION['uid'])) {
        $objResponse->call('comment.reset');
        $objResponse->alert('Сначала вам необходимо авторизоваться');
        return $objResponse;
    }
    if (!($offer = contest::GetOfferRow($oid))) {
        $objResponse->call('comment.reset');
        $objResponse->alert('Несуществующее предложение');
        return $objResponse;
    }
    $contest = new contest($offer['project_id'], $uid, is_emp(), FALSE, hasPermissions('projects'));
    // если пользователь не про или не верифицирован, то есть смысл проверить, может быть конкурс только для про или только для верифицированных
    $prj = new projects();
    $project = $prj->GetPrjCust($offer['project_id']);
    if ((!is_pro() || !is_verify()) && $project['user_id'] != get_uid() && !hasPermissions('projects')) {
        if ($project['pro_only'] == 't' && !is_pro()) {
            $objResponse->call('comment.reset');
            $objResponse->alert('Данная функция доступна только пользователям с аккаунтом PRO.');
            return $objResponse;
        } elseif ($project['verify_only'] == 't' && !is_verify()) {
            $objResponse->call('comment.reset');
            $objResponse->alert('Данная функция доступна только верифицированным пользователям.');
            return $objResponse;
        }
    }
    $offer = $contest->GetOffer($oid);
    $comment = change_q_x(antispam(substr(rtrim(ltrim($comment, "\r\n")), 0, 5000)), false, true, 'b|br|i|p|ul|li|cut|h[1-6]{1}', false, false);
    if ($error = $contest->CreateComment($oid, $comment, $reply)) {
        $objResponse->call('comment.reset');
        $objResponse->alert($error);
    } else {
        define('FUNCTIONS_ONLY', TRUE);
        require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stop_words.php';
        $stop_words = new stop_words(hasPermissions('projects'));
        require_once $_SERVER['DOCUMENT_ROOT'] . '/projects/contest.php';
        require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/smail.php';
        $contest->GetOffer($oid);
        if ($contest->offer['user_id'] != $uid) {
            //$smail = new smail;
            //$smail->ContestNewComment($uid, $contest->offer['id']);
        }
        $contest->is_owner = $offer['owner_id'] == $uid;
        $comment = $contest->GetComment($contest->new_cid);
        $comment = array($comment);
        $c_blocked = $contest->offer['comm_blocked'] == 't' && $uid != $contest->offer['user_id'] && $uid != $contest->offer['owner_id'];
        $objResponse->call('comment.added', $comment[0]['id'], comments($contest->offer['project_id'], '', $comment, $c_blocked, FALSE, $level));
        require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php';
    }
    return $objResponse;
}