Це стара версія документу!
Додаткові примітки
В Ubilling починаючи зі стабільного релізу 0.6.1з'явилася можливість використати у модулях загальну реалізацію додаткових коментарів.
З точки зору юзабіліті, це має виглядати як… грубо форум з розділами, що є по своїй суті представленнями сутностей білінгу, і топіками прив'язаними до конкретних об'єктів у рамках цих сутностей.
З точки зору інтеграції в якийсь абстрактний модуль, який працює з якимись абстрактними об'єктами, все дуже просто:
//Можливо комусь не хочеться використати всю цю радість, //Тому перевіряємо чи включена відповідна опція в конфізі alter.ini $altCfg=$ubillingConfig->getAlter(); if ($altCfg['ADCOMMENTS_ENABLED']) { //в конструкторі класу передаємо назву сутності/модуля(scope), з яким пов'язані конкретні об'єкти $adcomments=new ADcomments('ABSTRACTMODULE'); //вивалюємо рендер існуючих/потенційних коментів для конкретного об'єкта (item) пов'язаного з нашою сутністю show_window(__('Additional comments'), $adcomments->renderComments($itemId)); }
В результаті отримуємо щось на кшталт такого:
Все формочки для создания,редактирования,удаления примечаний - полностью самодостаточны, и присутствуют в возвращаемом методом renderComments() результате. Итого, в сухом остатке - две строчки. Создали объект класса ADcomments + показали ему, для кого хотим комментарии. Куда проще?
А что если мы хотим предварительно показать для каких объектов в списке, уже есть существующие дополнительные примечания, но не хотим дергать базу по этому поводу каждый раз? А все так же очень просто. Для этого в ADcomments начиная с Ubilling 0.6.2 появились несколько прубличных метододов: haveComments (возвращает bool) и getCommentsIndicator (возвращает string) а также getCommentsCount (int). Параметром для них передается конкретный item в ранее инициализированном конструктором scope. Относительно нашего предыдущего абстрактного примера это должно выглядеть как-то так:
//допустим, что все объекты нашего абстрактного модуля лежат в массиве $all вида $itemId=>$itemData $altCfg=$ubillingConfig->getAlter(); if ($altCfg['ADCOMMENTS_ENABLED']) { // Один раз создали объект. Забыли. $adcomments=new ADcomments('ABSTRACTMODULE'); } if (!empty($all)) { // перебираем айтемы поштучно foreach ($all as $id=>$data) { //не забываем проверять, включена ли фича, и соответственно есть ли у кого спрашивать. if ($altCfg['ADCOMMENTS_ENABLED']) { //получаем иконку дополнительных комментариев если они присутствуют для него. Вторым параметром можно передать размер. $indicatorIcon=$adcomments->getCommentsIndicator($id); //ну и если хотим какой-то флаг поднять - вот вам булевое значение $adcommentsFlag=$adcomments->haveComments($id); //также можем отдельно получить количество комментариев для айтема. Да 0 - если нету. $adcommentsFlag=$adcomments->getCommentsCount($id); } } }

