W dniu 13 lipca 2016 03:27 użytkownik lole11 lole11@o2.pl napisał:
Dzień dobry, przerabiam po trochu moje modyfikacje w LMS na moduły. Jedna z modyfikacji polega na dodaniu dodatkowych tabel z informacjami w podglądzie klienta customerinfo. Moje modyfikacje mam zaimplemetnowane po części w customer.inc.php w postaci jak poniżej: $radaccts = $LMS->GetRadAccts($customerid, 10); $msglogs = $LMS->GetMsgLogs($customerid, 10);
i dalej pod koniec
$SMARTY->assignByRef('radaccts', $radaccts); $SMARTY->assignByRef('msglogs', $msglogs);
Teraz chcę zapytania które mam umieszczone w LMS.Class.php chcę przerzucić do pluginu. Z tego co widzę to w customerinfo.php wykonywany jest kod: $hook_data = $LMS->executeHook( 'customerinfo_before_display', array( 'customerinfo' => $customerinfo, 'smarty' => $SMARTY, ) );
Doczytałem, że muszę zarejestrować takiego hook-a i tam umieścić funkcje z zapytaniami, wykonać je i przypisać do zmiennych , ale właśnie nie bardzo wiem jak to zrobić. Czy mógłby ktoś coś pomóc, jak powinien taki plugin wyglądać?
Rejestracja hoka robisz w pluginie. np plugin nazywa się LMSTVPlugin, robisz katalog plugins/LMSTVPlugin a w nim obowiązkowy plik z definicją klasy. plik musi nazywać się jak plugin w tym przypadku powinien być /plugins/LMSTVPlugin/LMSTVPlugin.php w nim robisz swoją klasę, która rozszerza klasę LMSPlugin i w registerHandlers rejestrujesz swoje akcje np.
#v+ class LMSTVPlugin extends LMSPlugin { const PLUGIN_NAME = 'TV Plugin'; const PLUGIN_DESCRIPTION = 'Plugin for TV'; const PLUGIN_DIRECTORY_NAME = 'LMSTVPlugin'; const PLUGIN_MODULES_DIRECTORY = 'modules'; const PLUGIN_DBVERSION = '2015111001';
public function registerHandlers() { $this->handlers = array( 'menu_initialized' => array( 'class' => 'InitHandler', 'method' => 'menuEntry' ), 'smarty_initialized' => array( 'class' => 'InitHandler', 'method' => 'smartyInit' ), 'modules_dir_initialized' => array( 'class' => 'InitHandler', 'method' => 'modulesDirInit' ),
'customerinfo_before_display' => array( 'class' => 'TVCustomerList', 'method' => 'stbCustomerInfo' ),
); } #v-
czyli rejestrujesz klasy i metody. Robisz katalog handles w którym trzymasz klasy (TVCustomerList, InitHandler) a w klasach metody (stbCustomerInfo, modulesDirInit). ważne by pliki z definicjami klas nazywały się jak definiowane tu klasy z rozszerzeniem .php
tu np. co robię w klasie InitHandler, jak widzisz powyżej właśnie przy wywołoaniu hooka "menu_initialized" wywołuję metodę menuEntry z klasy InitHandler
#v+ class InitHandler { /** * Sets plugin Smarty templates directory * * @param Smarty $hook_data Hook data * @return \Smarty Hook data */ public function smartyInit(Smarty $hook_data) { global $SMARTY; $template_dirs = $hook_data->getTemplateDir(); $plugin_templates = PLUGINS_DIR . DIRECTORY_SEPARATOR . LMSTVPlugin::PLUGIN_DIRECTORY_NAME . DIRECTORY_SEPARATOR . 'templates'; array_unshift($template_dirs, $plugin_templates); $hook_data->setTemplateDir($template_dirs); $SMARTY->assign('plugin_name', LMSTVPlugin::PLUGIN_DIRECTORY_NAME); return $hook_data; }
/** * Sets plugin Smarty modules directory * * @param array $hook_data Hook data * @return array Hook data */ public function modulesDirInit(array $hook_data = array()) { $plugin_modules = PLUGINS_DIR . DIRECTORY_SEPARATOR . LMSTVPlugin::PLUGIN_DIRECTORY_NAME . DIRECTORY_SEPARATOR . 'modules'; array_unshift($hook_data, $plugin_modules); return $hook_data; } /** * Sets menu entry to menu */ public function menuEntry(array $hook_data = array()) { $tvmenu = array( 'tv' => array( 'name' => trans('TV'), 'img' => LMSTVPlugin::PLUGIN_DIRECTORY_NAME.'/tv_icon.png', 'tip' => trans('TV Plugin'), 'accesskey' =>'t', 'prio' => 1, 'submenu' => array( array( 'name' => trans('List'), 'link' =>'?m=stblist', 'tip' => trans('List of STB'), 'prio' => 10, ), array( 'name' => trans('Groups'), 'link' =>'?m=stbgrouplist', 'tip' => trans('List of STB Groups'), 'prio' => 20, ), array( 'name' => trans('New STB'), 'link' =>'?m=stbdevadd', 'tip' => trans('Add STB to database'), 'prio' => 30, ), array( 'name' => trans('Producers and models'), 'link' =>'?m=stbdevmodels', 'tip' => trans('Producers and models of STBs'), 'prio' => 40, ), ), ), ); $hook_data = array_merge(array_slice($hook_data, 0, 4), $tvmenu, array_slice($hook_data, 4)); return $hook_data; } #v-
Mam nadzieję, że pomoże
lms mailing list lms@lists.lms.org.pl http://lists.lms.org.pl/mailman/listinfo/lms