db = $db; } /** * Hook completeTabsHead: Reiter „Netzwerk-Diagnose" an der Kundenkarte — nur bei * vorhandenen Protokollen. * * @param array $parameters Hook-Parameter (context, head, mode, filterorigmodule) * @param CommonObject $object Societe * @param string $action Aktuelle Aktion * @param HookManager $hookmanager Hook-Verwaltung * @return int 0 = weiter */ public function completeTabsHead($parameters, &$object, &$action, $hookmanager) { global $langs, $user; $contexts = explode(':', $parameters['context'] ?? ''); if (!in_array('thirdpartycard', $contexts, true)) { return 0; } if (empty($object->id) || !isset($parameters['head']) || !is_array($parameters['head'])) { return 0; } if (($parameters['mode'] ?? '') !== 'add' || ($parameters['filterorigmodule'] ?? '') !== 'external') { return 0; } if (!$user->hasRight('netdiag', 'protocol', 'read')) { return 0; } $anzahl = $this->zaehleProtokolle((int) $object->id); $head = &$parameters['head']; // Der frühere feste Tab steht bis zur Modul-Reaktivierung als // MAIN_MODULE_NETDIAG_TABS_0 in der Datenbank — vorhandenen Eintrag // uebernehmen statt einen zweiten anzuhaengen, sonst waere der Reiter doppelt. $vorhanden = -1; foreach ($head as $i => $eintrag) { if (isset($eintrag[2]) && $eintrag[2] === 'netdiag') { $vorhanden = $i; break; } } if ($anzahl < 1) { if ($vorhanden >= 0) { unset($head[$vorhanden]); $head = array_values($head); } return 0; } $langs->load('netdiag@netdiag'); $pos = ($vorhanden >= 0) ? $vorhanden : count($head); $head[$pos][0] = DOL_URL_ROOT.'/custom/netdiag/netdiag_object_tab.php' .'?socid='.((int) $object->id).'&objecttype=thirdparty'; $head[$pos][1] = $langs->trans('NetDiagTab').' '.$anzahl.''; $head[$pos][2] = 'netdiag'; return 0; } /** * Wie viele Diagnose-Protokolle liegen an diesem Kunden? * * @param int $socId Kunde * @return int Anzahl */ private function zaehleProtokolle($socId) { if ($socId <= 0) { return 0; } $resql = $this->db->query("SHOW TABLES LIKE '".$this->db->escape(MAIN_DB_PREFIX)."netdiag_protocol'"); if (!$resql || $this->db->num_rows($resql) == 0) { return 0; } $sql = "SELECT COUNT(*) AS anzahl FROM ".MAIN_DB_PREFIX."netdiag_protocol"; $sql .= " WHERE fk_soc = ".((int) $socId); $resql = $this->db->query($sql); if (!$resql) { return 0; } $obj = $this->db->fetch_object($resql); return $obj ? (int) $obj->anzahl : 0; } }