1C-Битрикс: Управление сайтом

Для разработчиков

Информация представленная в данном разделе содержит сведения о функциях модуля Опросы, голосования, необходимых для настройки показа опросов в публичной части сайта, а также об этапах инсталляции модуля.


Модуль включает в себя следующие Компоненты 2.0:
Компоненты модуля
Название Имя в пространстве имен bitrix Описание
Текущий опрос (комплексный компонент) voting.current Выводит форму опроса, а после ее заполнения отображает результаты опроса.
Форма опроса voting.form Выводит форму опроса.
Список опросов voting.list Выводит список опросов.
Результаты опроса voting.result Выводит результаты опроса в виде диаграммы.

Смотрите также:

Пользовательские комментарии

Пользовательские комментарии не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Добавлять комментарии могут только зарегистрированные пользователи. Сообщения для просмотра появляются после модерации.
0
Evgenius
Также в модуле определены некоторые события.

Код
function onBeforeVoteQuestionAdd (&$arFields); // Для отмены добавления нужно присвоить $arFields пустое значение
function onAfterVoteQuestionAdd ($ID, $arFields);
function onBeforeVoteQuestionUpdate (&$arFields); // Для отмены обновления нужно присвоить $arFields пустое значение
function onAfterVoteQuestionUpdate ($ID, $arFields);
function OnBeforeVoteQuestionDelete (&$ID, &$VOTE_ID); // Для отмены удаления нужно возвратить false
function OnAfterVoteQuestionDelete ($ID, $VOTE_ID);
function onBeforeVoteAnswerAdd (&$arFields); // Для отмены добавления нужно присвоить $arFields пустое значение
function onAfterVoteAnswerAdd ($ID, $arFields);
function onBeforeVoteAnswerUpdate (&$arFields); // Для отмены обновления нужно присвоить $arFields пустое значение
function onAfterVoteAnswerUpdate ($ID, $arFields);
function OnBeforeVoteAnswerDelete (&$ID, &$QUESTION_ID, &$VOTE_ID); // Для отмены удаления нужно возвратить false
function OnAfterVoteAnswerDelete ($ID, $QUESTION_ID, $VOTE_ID);
function onBeforeVoteAdd (&$arFields); // Для отмены добавления нужно присвоить $arFields пустое значение
function onAfterVoteAdd ($ID, $arFields);
function onBeforeVoteUpdate (&$arFields); // Для отмены обновления нужно присвоить $arFields пустое значение
function onAfterVoteUpdate ($ID, &$arFields);
0
Андрей Рыжкин
тут можно подсмотреть api:
/bitrix/modules/vote/admin/vote_user_votes_table.php
/bitrix/modules/vote/admin/vote_user_result_table.php
/bitrix/modules/vote/admin/vote_result.php
/bitrix/modules/vote/classes/general/answer.php
/bitrix/modules/vote/vote_tools.php

Полный доступный массив $arFilter для CVoteEvent::GetList
Код
$arFilter = Array(
"ID"                  => $find_id,
"ID_EXACT_MATCH"         => $find_id_exact_match,
"VALID"                  => $find_valid,
"VOTE_ID"                   => $VOTE_ID,
"DATE_1"               => $find_date_1,
"DATE_2"               => $find_date_2,
"VOTE_USER"               => $find_vote_user,
"VOTE_USER_EXACT_MATCH"      => $find_vote_user_exact_match,
"SESSION"               => $find_session,
"SESSION_EXACT_MATCH"      => $find_session_exact_match,
"IP"                  => $find_ip,
"IP_EXACT_MATCH"         => $find_ip_exact_match
);


Пример:
примитивный расчет средней оценки. Здесь всего один вопрос в опросе, ответ является оценкой (балл).
Код
// Возьмем вопросы
GetVoteDataByID($arResult["VOTE"]["ID"], $arChannel, $arVote, $arQuestions, $arAnswers, $arDropDown, $arMultiSelect, $arGroupAnswers, "N", $template, $res_template);
foreach ($arQuestions as $question) {
    //echo '<pre>'; print_r($question); echo '!</pre>';   
    $question_id = $question['ID'];
    break;
}
// Возьмем информацию по опросу и результаты голосований
$arFilter = array('VOTE_ID'=>$arResult["VOTE"]["ID"]);
$rsData = CVoteEvent::GetList($by, $order, $arFilter, $is_filtered); 
$arrUsers = array();
$voted_cnt = 0; // Кол-во голосований
$voted_result_cnt = 0; // Суммма всех балов
while ($arRes = $rsData->fetch()) {
    $voted_cnt++;
    // Ответы
    $real_answers = CAllVoteAnswer::GetList($question_id);
    while($arrAnswer = $real_answers->fetch()) {
        $checked = CVoteEvent::GetAnswer($arRes['ID'],$arrAnswer['ID']);
        if ($checked) {
            $voted_result_cnt += intval($arrAnswer['MESSAGE']);
        }
    }         
}
$result = round($voted_result_cnt / $voted_cnt, 1);
$arResult['MID_RESULT'] = $result;

echo 'Средняя оценка: <span>'.str_replace('.', ',', $arResult['MID_RESULT']).'</span>';
© «Битрикс», 2001-2012, «1C-Битрикс», 2012