function smarty_function_hook($params, $template) { $contents = ""; if (isset($params['name'])) { $core_params_to_hook = array(); if (isset($params['params'])) { $core_params_to_hook = $params['params']; } if (!isset($params['container'])) { $params['container'] = "<div>[hook]</div>"; } $hookData = \Centreon\Internal\Hook::execute($params['name'], $core_params_to_hook); foreach ($hookData as $hook) { if (isset($hook['template'])) { $tpl = $template->createTemplate($hook['template']); if (isset($hook['variables'])) { $tpl->assign('variables', $hook['variables']); } if (isset($params['container'])) { $contents .= str_replace("[hook]", $template->fetch($tpl), $params['container']); } } } } return $contents; }
/** * Display services * * @method get * @route /service * @todo work on ajax refresh */ public function displayServicesAction() { $tpl = Di::getDefault()->get('template'); $router = Di::getDefault()->get('router'); /* Load css */ $tpl->addCss('dataTables.tableTools.min.css')->addCss('jquery.fileupload.css')->addCss('dataTables.colVis.min.css')->addCss('dataTables.colReorder.min.css')->addCss('select2.css')->addCss('select2-bootstrap.css')->addCss('centreon-wizard.css'); /* Load js */ $tpl->addJs('jquery.min.js')->addJs('jquery.dataTables.min.js')->addJs('dataTables.tableTools.min.js')->addJs('dataTables.colVis.min.js')->addJs('dataTables.colReorder.min.js')->addJs('bootstrap-dataTables-paging.js')->addJs('jquery.dataTables.columnFilter.js')->addJs('dataTables.bootstrap.js')->addJs('jquery.select2/select2.min.js')->addJs('jquery.validation/jquery.validate.min.js')->addJs('jquery.validation/additional-methods.min.js')->addJs('jquery.qtip.min.js')->addJs('moment-with-locales.js')->addJs('hogan-3.0.0.min.js')->addJs('daterangepicker.js')->addJs('bootstrap3-typeahead.js')->addJs('centreon.search.js')->addJs('centreon.overlay.js')->addJs('centreon.tag.js', 'bottom', 'centreon-administration')->addJs('moment-timezone-with-data.min.js')->addJs('centreon-wizard.js'); /* Datatable */ $tpl->assign('moduleName', 'CentreonRealtime'); $tpl->assign('datatableObject', $this->datatableObject); $tpl->assign('objectDisplayName', 'Service'); $tpl->assign('objectName', 'Service'); $tpl->assign('objectListUrl', '/centreon-realtime/service/list'); $actions = array(); $actions[] = array('group' => _('Services'), 'actions' => ServicedetailRepository::getMonitoringActions()); $actions[] = array('group' => _('Hosts'), 'actions' => HostdetailRepository::getMonitoringActions()); $tpl->assign('actions', $actions); $urls = array('tag' => array('add' => $router->getPathFor('/centreon-administration/tag/add'), 'del' => $router->getPathFor('/centreon-administration/tag/delete'), 'getallGlobal' => $router->getPathFor('/centreon-administration/tag/all'), 'getallPerso' => $router->getPathFor('/centreon-administration/tag/allPerso'), 'addMassive' => $router->getPathFor('/centreon-administration/tag/addMassive'))); $tpl->append('jsUrl', $urls, true); /* Add javascript and css file for hooks */ Hook::addStaticFile('displaySvcTooltipGraph'); $tpl->display('file:[CentreonMainModule]list.tpl'); }
/** * */ protected function removeHook() { $moduleHooksFile = $this->moduleDirectory . '/install/registeredHooks.json'; if (file_exists($moduleHooksFile)) { $moduleHooks = json_decode(file_get_contents($moduleHooksFile), true); foreach ($moduleHooks as $moduleHook) { Hook::unregister($this->moduleId, $moduleHook['name'], $moduleHook['moduleHook']); } } }
public function testExecuteEmptyDisplayHook() { ob_start(); Di::getDefault()->get('router')->dispatch(); ob_end_clean(); $result = Hook::execute('displayIdontexist', array('test_key' => 'test_value')); $this->assertEquals(0, count($result)); }
/** * * @param array $resultSet */ public static function processHooks(&$resultSet) { $arr = array(); foreach ($resultSet as $set) { if (isset($set[static::$objectId])) { $arr[] = $set[static::$objectId]; } } $hookArr = static::getHookArray(); foreach ($hookArr as $hook) { $hookData = Hook::execute($hook, $arr); foreach ($hookData as $data) { $columnName = $data['columnName']; foreach ($data['values'] as $k => $value) { foreach ($resultSet as $key => $set) { if ($set[static::$objectId] == $k) { $resultSet[$key][$columnName] = $value; } } } } } }