Документация для разработчиков

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

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

Перед использованием модуля необходимо проверить установлен ли он и подключить его при помощи конструкции:

<?    if(CModule::IncludeModule("vote")){  
//здесь можно использовать функции и классы модуля
} 
?> 

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


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

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

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

Добавлять комментарии могут только зарегистрированные пользователи. Сообщения для просмотра появляются после модерации.
0
A Z
CVoteEvent  - Класс для работы с событиями. Событие - когда пользователь корректно заканчивает опрос.
У него есть метод GetList.
arFilter принимает такие параметры: ID, VALID, DATE_1, DATE_2, VOTE_USER, USER_ID, SESSION, IP,VOTE,VOTE_ID
1
Андрей Рыжкин
тут можно подсмотреть 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-2017, «1C-Битрикс», 2017