Описание и параметры
CDBResult
CFormResult::GetList(
int form_id,
string &by = "s_timestamp",
string &order = "desc",
array filter = array(),
bool &is_filtered,
string check_rights = "Y",
mixed limit = false
)
Возвращает список результатов веб-формы в виде объекта класса CDBResult. Метод нестатический.
Примечание
Возвращаемый список содержит только поля результата. Значения ответов и полей можно получить с помощью метода CForm::GetResultAnswerArray или CFormResult::GetDataByID.
Параметры метода
Параметр | Описание |
form_id | ID веб-формы. |
by | Ссылка на переменную с полем для сортировки; может принимать значения:
- s_id - ID результата;
- s_date_create - дата создания;
- s_timestamp - дата изменения (значение по умолчанию);
- s_user_id - ID пользователя, создавшего результат;
- s_guest_id - ID посетителя, создавшего результат;
- s_session_id - ID сессии, в которой был создан результат;
- s_status - ID статуса.
|
order | Ссылка на переменную с порядком сортировки. Допустимы следующие значения:
- desc - по убыванию (значение по умолчанию);
- asc - по возрастанию.
|
filter | Массив содержащий параметры фильтра. Необязательный параметр. В массиве допустимы следующие ключи:
- ID* - ID результата (по умолчанию будет искаться точное совпадение);
- ID_EXACT_MATCH - если значение равно "N", то при фильтрации по ID будет искаться вхождение;
- STATUS_ID* - ID статуса (по умолчанию будет искаться точное совпадение);
- STATUS_ID_EXACT_MATCH - если значение равно "N", то при фильтрации по STATUS_ID будет искаться вхождение;
- TIMESTAMP_1 - левое значение интервала ("с") по дате изменения (задается в формате даты текущего сайта);
- TIMESTAMP_2 - правое значение интервала ("по") по дате изменения (задается в формате даты текущего сайта);
- DATE_CREATE_1 - левое значение интервала ("с") по дате создания (задается в формате даты текущего сайта);
- DATE_CREATE_2 - правое значение интервала ("по") по дате создания (задается в формате даты текущего сайта);
- TIME_CREATE_1 - левое значение интервала ("с") по дате создания в полном формате (дата и время);
- TIME_CREATE_2 - правое значение интервала ("по") по дате создания в полном формате (дата и время);
- REGISTERED - флаг зарегистрированности автора результата; допустимы следующие значения:
- Y - автор был зарегистрирован как пользователь;
- N - автор не был зарегистрирован как пользователь.
- USER_AUTH - флаг авторизованности автора результата; допустимы следующие значения:
- Y - автор был авторизован;
- N - автор не был авторизован.
- USER_ID* - ID пользователя, создавшего результат (автор результата) (по умолчанию будет искаться точное совпадение);
- USER_ID_EXACT_MATCH - если значение равно "N", то при фильтрации по USER_ID будет искаться вхождение;
- GUEST_ID* - ID посетителя создавшего результат (автор результата) (по умолчанию будет искаться точное совпадение);
- GUEST_ID_EXACT_MATCH - если значение равно "N", то при фильтрации по GUEST_ID будет искаться вхождение;
- SESSION_ID* - ID сессии в которой был создан результат (по умолчанию будет искаться точное совпадение);
- SESSION_ID_EXACT_MATCH - если значение равно "N", то при фильтрации по SESSION_ID будет искаться вхождение;
- FIELDS - массив, содержащий параметры фильтра для фильтрации результатов по значениям ответов и полей веб-формы. Каждый элемент данного массива представляет из себя массив, описывающий параметры фильтра по вопросу или полю веб-формы; ключами подобного массива могут быть:
- SID - символьный идентификатор вопроса или поля веб-формы; синоним - CODE;
- PARAMETER_NAME - тип данных по которым фильтруем, допустимы следующие значения:
- USER - фильтруем по ответам введенных авторами с клавиатуры (по умолчанию);
- ANSWER_TEXT - фильтруем по параметру ANSWER_TEXT;
- ANSWER_VALUE - фильтруем по параметру ANSWER_VALUE.
- VALUE - значение, по которому фильтруем (допускается сложная логика);
- FILTER_TYPE - тип фильтра, определяет, как интерпретировать данные по которым фильтруем:
- integer - означает, что данные, по которым будет осуществляться фильтрация, считать числами (используется только с PARAMETER_NAME=[USER|ANSWER_TEXT|ANSWER_VALUE]);
- text - означает, что данные, по которым будет осуществляться фильтрация, должны обрабатываться как текстовые поля (используется только с PARAMETER_NAME=[USER|ANSWER_TEXT|ANSWER_VALUE]);
- date - означает, что данные по которым будет осуществляться фильтрация, должны обрабатываться как даты (используется только с PARAMETER_NAME=USER);
- answer_id - означает, что фильтрация будет производиться только по прямому совпадению с ID ответа (при этом PARAMETER_NAME не имеет значения).
- PART - если тип фильтра FILTER_TYPE=[integer|date], то данное поле должносодержать одно из трех значений:
- 0 - прямое совпадение со значением;
- 1 - левое значение интервала ("с");
- 2 - правое значение интервала ("по")
- EXACT_MATCH - если FILTER_TYPE="text", то в данном поле можно задать следующие значения:
- Y - прямое совпадение;
- N - будет искаться вхождение (по умолчанию).
|
is_filtered | Ссылка на переменную хранящую флаг отфильтрованности результирующего списка. Если значение равно "true", то список был отфильтрован. |
check_rights | Флаг необходимости проверки прав текущего пользователя. Возможны следующие значения:
- Y - права необходимо проверить;
- N - права не нужно проверять.
Для того чтобы результат попал в результирующий список, необходимо обладать следующими правами:
- На веб-форму form_id:
[20] Работа со всеми результатами в соответствии с их статусами
или
[15] Работа со своим результатом в соответствии с его статусом - в этом случае результирующий список будет состоять только из тех результатов создателем которых является текущий пользователь.
- На статус, в котором находится результат, необходимо иметь право:
[VIEW] просмотр
или
[EDIT] редактирование
или
[DELETE] удаление
Параметр необязательный. По умолчанию - "Y" (права необходимо проверить). |
limit | Максимальное количество результатов, которые войдут в результирующий список. По умолчанию ограничивает выборку 5000 строками.
Параметр необязательный. |
Примеры использования
<?
// ID веб-формы
$FORM_ID = 4;
// фильтр по полям результата
$arFilter = array(
"ID" => "12", // ID результата
"ID_EXACT_MATCH" => "N", // вхождение
"STATUS_ID" => "9 | 10", // статус
"TIMESTAMP_1" => "10.10.2003", // изменен "с"
"TIMESTAMP_2" => "15.10.2003", // изменен "до"
"DATE_CREATE_1" => "10.10.2003", // создан "с"
"DATE_CREATE_2" => "12.10.2003", // создан "до"
"REGISTERED" => "Y", // был зарегистрирован
"USER_AUTH" => "N", // не был авторизован
"USER_ID" => "45 | 35", // пользователь-автор
"USER_ID_EXACT_MATCH" => "Y", // точное совпадение
"GUEST_ID" => "4456 | 7768", // посетитель-автор
"SESSION_ID" => "456456 | 778768", // сессия
);
// фильтр по вопросам
$arFields = array();
$arFields[] = array(
"CODE" => "GAME_ID", // код поля по которому фильтруем
"FILTER_TYPE" => "integer", // фильтруем по числовому полю
"PARAMETER_NAME" => "USER", // по значению введенному с клавиатуры
"VALUE" => $arGame["ID"], // значение по которому фильтруем
"PART" => 0 // прямое совпадение со значением (не интервал)
);
$arFields[] = array(
"CODE" => "GAME_NAME", // код поля по которому фильтруем
"FILTER_TYPE" => "text", // фильтруем по числовому полю
"PARAMETER_NAME" => "USER", // фильтруем по введенному значению
"VALUE" => "Tetris", // значение по которому фильтруем
"EXACT_MATCH" => "Y" // ищем точное совпадение
);
$arFields[] = array(
"CODE" => "GENRE_ID", // код поля по которому фильтруем
"FILTER_TYPE" => "integer", // фильтруем по числовому полю
"PARAMETER_NAME" => "ANSWER_VALUE", // фильтруем по параметру ANSWER_VALUE
"VALUE" => "3", // значение по которому фильтруем
"PART" => 1 // с
);
$arFields[] = array(
"CODE" => "GENRE_ID", // код поля по которому фильтруем
"FILTER_TYPE" => "integer", // фильтруем по числовому полю
"PARAMETER_NAME" => "ANSWER_VALUE", // фильтруем по параметру ANSWER_VALUE
"VALUE" => "6", // значение по которому фильтруем
"PART" => 2 // по
);
$arFilter["FIELDS"] = $arFields;
// выберем первые 10 результатов
$rsResults = CFormResult::GetList(
$FORM_ID,
($by="s_timestamp"),
($order="desc"),
$arFilter,
$is_filtered,
"Y",
10
);
while ($arResult = $rsResults->Fetch())
{
echo "<pre>"; print_r($arResult); echo "</pre>";
}