Алгоритм метода ShowInformationSystem() при передаче массива идентификаторов ИС

#
Алгоритм метода ShowInformationSystem() при передаче массива идентификаторов ИС
Начну свой вопрос с примера.
Была у меня такая задача: вывести в определенном месте макета 10 последних сообщений из трех инфосистем, которые [сообщения] были бы на старше семи дней от даты добавления. Подчеркну: не по 10 из каждой ИС, а _всего_ 10.

Ну я-то подумал - фигня, чего проще! Помня из api что у метода ShowInformationSystem() первый параметр $InformationSystemIdArray может содержать в себе массив идентификаторов ИС.
И сделал, сформировав массив идентификаторов, задав $information_groups_id = false, $items_on_page = 10, $items_begin = 0, и настроив фильтр и сортировку в $property.

И получил в результате 30 сообщений

Стал выяснять почему, и обнаружил, что когда методу ShowInformationSystem() передается массив идентификаторов, то метод вызывается несколько раз, по числу переданных идентификаторов. И sql-запрос для каждого вызова содержит в части where условие вида
AND information_items_table.information_systems_id = <идентификатор_ИС>

В результате каждый запрос возвращает до 10и элементов (в зависимости от даты в фильтре) и всего из 3х инфосистем их может получится до 30.

Вариант с соответствующим уменьшением значения параметра $items_on_page, например, до 3х, в общем случае не срабатывает, т.к. если в одной ИС есть всего 1 элемент удовлетворяющий фильтру по дате, а в двух других - допустим по 5, то пользователю выйдет только 7 элементов из возможных 9, что тоже, в общем-то, не совсем то чего хотелось
(Не говоря уж о том, что 10 на 3 нацело не делится )

Задачу в итоге пришлось решать на более низком уровне - переписав условие в вашем запросе так
AND information_items_table.information_systems_id IN (id1, id2, id3)

и вызвав его один единственный через $DataBase->select() обработать вернувшиеся 10 элементов для формирования из них xml, к которому потом применить шаблон.

В связи с вышеизложенным вопросы к разработчикам: а почему метод ShowInformationSystem() в случае передачи ему массива идентификаторов работает именно таким образом, каким он работает?
И не логичнее ли было-бы изменить алгоритм его работы на описанный мною, или хотя бы сделать параметр, позволяющий переключаться с одного алгорима на другой?
Заказов не беру. Консультирую редко.
#
Re: Алгоритм метода ShowInformationSystem() при передаче массива идентификаторов ИС
Подниму темку - уж очень хочется прочитать ответ от разработчиков.
Заказов не беру. Консультирую редко.
Модератор
#
Re: Алгоритм метода ShowInformationSystem() при передаче массива идентификаторов ИС
Kotoff,
а группы при таком решении чьих будут?
#
Re: Алгоритм метода ShowInformationSystem() при передаче массива идентификаторов ИС
Так а группы-то в задаче не нужны были. Хотя тогда это пожалуй все же частный случай.
Заказов не беру. Консультирую редко.
#
Re: Алгоритм метода ShowInformationSystem() при передаче массива идентификаторов ИС
Ан нет, не такой уж и частный.
Вот тут тоже коллега мучается http://www.hostcms.ru/forums/17/3613/

Может стоит предусмотреть хотя бы некий переключатель алгоримов обработки при передачи массива идентификаторов?
Заказов не беру. Консультирую редко.
Модератор
#
Re: Алгоритм метода ShowInformationSystem() при передаче массива идентификаторов ИС
Kotoff писал(а):
Может стоит предусмотреть хотя бы некий переключатель алгоримов обработки при передачи массива идентификаторов?

см. соседнюю тему про невозможность переключателя, т.к. группы разные, св-ва разные!
#
Re: Алгоритм метода ShowInformationSystem() при передаче массива идентификаторов ИС
А если ни группы, ни свойства не нужны?
Может быть, хотя бы сделать отдельный метод для именно такого вывода, с оговоркой в api, что ни групп ни свойств он не выводит?
Заказов не беру. Консультирую редко.
Модератор
#
Re: Алгоритм метода ShowInformationSystem() при передаче массива идентификаторов ИС
Kotoff,
вопрос обсуждается в соседней теме, эту предлагаю закрыть, чтобы не дублироваться.
#
Re: Алгоритм метода ShowInformationSystem() при передаче массива идентификаторов ИС
Здравствуйте ребята.Получилось вывести из разных систем, а как можно в шаблоне xsl (стандартный СписокЭлементовНовости) у каждого элемента вывести название ИС к которой элемент относится?
изучаю hostcms 6
Авторизация