Exemple #1
0
/**
 * Простое обновление отзыва  таблице sbr_feedbacks.
 *
 * @param type   $id
 * @param type   $descr
 * @param string $login
 * @param int    $stage_id
 * @param type   $vote
 *
 * @return xajaxResponse
 */
function editFeedbackNew($id, $descr, $login, $stage_id, $vote = null, $sbr_name = null, $stage_name = null)
{
    $stage_id = intval($stage_id);
    $objResponse = new xajaxResponse();
    $request = array('id' => intval($id), 'descr' => $descr);
    if (hasPermissions('sbr')) {
        $request['sbr_name'] = htmlspecialchars($sbr_name);
        $request['stage_name'] = htmlspecialchars($stage_name);
    }
    if ($vote !== null) {
        $vote = (int) $vote < 0 ? -1 : ((int) $vote > 0 ? 1 : 0);
        $request += array('ops_type' => $vote);
    }
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php';
    if ($login && hasPermissions('sbr')) {
        $user = new users();
        $user->GetUser($login);
        if (!$user->uid) {
            $error = 'Ошибка';
        }
        $sbr = sbr_meta::getInstance(sbr_meta::ADMIN_ACCESS, $user, is_emp($user->role));
    } else {
        $sbr = sbr_meta::getInstance();
    }
    $ele_id = 'form_container_' . $id;
    $link_id = 'ops_edit_link_' . $id;
    $text_id = 'op_message_' . $id;
    if ($sbr) {
        $stage = $sbr->initFromStage($stage_id, false);
    }
    if ($stage) {
        $old_fbk = $stage->getFeedback(intval($id));
        if (strtotime($old_fbk['posted_time']) + 3600 * 24 < time() && !hasPermissions('users')) {
            $error = "'Ошибка'";
            $objResponse->script("\$('{$link_id}').setStyle('display', 'block');");
            $objResponse->script("\$('{$text_id}').setStyle('display', 'block');");
            $objResponse->script("\$('{$ele_id}').setStyle('display', 'none');");
        } else {
            $feedback = $stage->feedback($request);
            if (hasPermissions('sbr')) {
                sbr_meta::setNamesSBR($request['sbr_name'], $request['stage_name'], $stage->data['sbr_id'], $stage_id);
                $objResponse->script("\$('sbr_name_{$id}').set('text', '{$sbr_name}');");
                $objResponse->script("\$('stage_name_{$id}').set('text', '{$stage_name}');");
            }
            if ($stage->error['feedback']) {
                $error = 'Ошибка';
                if ($stage->error['feedback']['descr']) {
                    $error = $stage->error['feedback']['descr'];
                }
            }
        }
    }
    if ($error) {
        $objResponse->script("alert({$error});");
        return $objResponse;
    }
    $userId = $sbr->uid == $sbr->emp_id ? $sbr->frl_id : $sbr->emp_id;
    $moderId = get_uid(false);
    if ($userId != $moderId) {
        $mail = new smail();
        $mail->sbrFeedbackEdit($old_fbk['id'], $userId, $moderId, $sbr);
    }
    if ($login) {
        $user = new users();
        $user->GetUserByUID($sbr->uid == $sbr->emp_id ? $sbr->frl_id : $sbr->emp_id);
        $rating = round($user->rating, 2);
        $objResponse->script("\$\$('.pp-rate span.form-in').set('html', {$rating});");
    }
    $cont_id = 'cont_' . $id;
    if ($vote !== null) {
        $cls = '';
        switch ((int) $vote) {
            case -1:
                $cls = 'b-button_poll_minus';
                break;
            case 0:
                $cls = 'b-button_poll_multi';
                break;
            case 1:
                $cls = 'b-button_poll_plus';
                break;
            default:
                $cls = 'b-button_poll_multi';
                break;
        }
        //$objResponse->script("$('$cont_id').removeClass('b-post__voice_negative'); $('$cont_id').removeClass('b-post__voice_neutral');$('$cont_id').removeClass('b-post__voice_plus');$('$cont_id').addClass('$cls');");
        $objResponse->script("\$('{$cont_id}').removeClass('b-button_poll_minus').removeClass('b-button_poll_plus').removeClass('b-button_poll_multi');\$('{$cont_id}').addClass('{$cls}');");
    }
    $ot = $old_fbk['rating'] == 1 ? 'plus' : ($old_fbk['rating'] == -1 ? 'minus' : 'neitral');
    $nt = $vote == 1 ? 'plus' : ($vote == -1 ? 'minus' : 'neitral');
    $objResponse->call('opinionChConuters', 'ops-norisk' . $ot, 'ops-norisk' . $nt);
    $objResponse->script("\$('{$link_id}').setStyle('display', 'block');");
    $objResponse->script("\$('{$text_id}').setStyle('display', 'block');");
    $objResponse->script("\$('{$ele_id}').setStyle('display', 'none');");
    $objResponse->script("\$\$('.sbrmsgblock').setStyle('display', 'block');");
    $objResponse->assign($text_id, 'innerHTML', '<p>' . stripslashes(reformat(htmlspecialchars($descr), 30, 0, 1, 1)) . '</p>');
    $objResponse->assign($ele_id, 'innerHTML', '');
    return $objResponse;
}