/** * Add Groups/Hosts into menu * * @param IEBootstrapMenu $nav */ private function groupsHostsMenu($nav) { EaseShared::webPage()->addCss('.dropdown-menu { overflow-y: auto } '); EaseShared::webPage()->addJavaScript("\$('.dropdown-menu').css('max-height',\$(window).height()-100);", null, true); $user = EaseShared::user(); $host = new IEHost(); $hosts = $host->getListing(null, null, array('icon_image', 'platform')); $hostsNotInGroup = array(); $hnames = array(); foreach ($hosts as $hID => $hInfo) { $hnames[$hInfo['host_name']] =& $hosts[$hID]; $hostsNotInGroup[$hInfo['host_name']] = $hInfo; } $topItems = array('wizard-host.php' => EaseTWBPart::GlyphIcon('forward') . ' ' . _('Průvodce založením hostu')); $topItems['wizard-active-host.php'] = EaseTWBPart::GlyphIcon('star') . ' ' . _('Nový aktivní Host'); $hostgroup = new IEHostgroup(); $topItems['hostgroup.php'] = EaseTWBPart::GlyphIcon('plus') . ' ' . _('Nová skupina hostů'); /* , 'exthostinfo.php' => _('Rozšířené informace hostů'), 'hostdependency.php' => _('Závislosti hostů'), 'hostescalation.php' => _('Eskalace hostů') */ $pocHostgroup = $hostgroup->getMyRecordsCount(); $hostGroupMenuItem = array(); if ($pocHostgroup) { //$hostgroups = $hostgroup->myDbLink->queryToArray('SELECT ' . $hostgroup->getmyKeyColumn() . ', hostgroup_name, DatSave FROM ' . $hostgroup->myTable . ' WHERE user_id=' . $user->getUserID(), 'hostgroup_id'); $hostgroups = $hostgroup->getListing(null, null, array('members')); foreach ($hostgroups as $cID => $hgInfo) { $hostGroupMenuItem['hostgroup.php?hostgroup_id=' . $hgInfo['hostgroup_id']] = EaseTWBPart::GlyphIcon('cloud') . ' ' . $hgInfo['hostgroup_name']; if (count($hgInfo['members'])) { foreach ($hgInfo['members'] as $hgMember) { if ($hgMember == '*') { $image = null; } else { $hInfo =& $hnames[$hgMember]; $image = $hInfo['icon_image']; unset($hostsNotInGroup[$hgMember]); } if (!$image) { $image = 'unknown.gif'; } if (isset($hInfo) && !is_null($hInfo)) { $hostGroupMenuItem['host.php?host_id=' . $hInfo['host_id']] = ' ' . new IEHostIcon($hInfo) . ' ' . $hInfo['host_name'] . ' ' . new IEPlatformIcon($hInfo['platform']); } } } } $topItems['hostgroups.php'] = EaseTWBPart::GlyphIcon('list-alt') . ' ' . _('Přehled skupin hostů'); } else { if (count($hostGroupMenuItem)) { $hostGroupMenuItem[] = ''; } } if (count($hostsNotInGroup)) { foreach ($hostsNotInGroup as $menuHost) { $hostGroupMenuItem['host.php?host_id=' . $menuHost['host_id']] = ' ' . new IEHostIcon($menuHost) . ' ' . $menuHost['host_name'] . ' ' . new IEPlatformIcon($menuHost['platform']); } } $topItems['hosts.php'] = EaseTWBPart::GlyphIcon('list') . ' ' . _('Detailní přehled hostů'); $topItems['map.php'] = EaseTWBPart::GlyphIcon('globe') . ' ' . _('Topologie'); $nav->addDropDownMenu(_('Hosti'), array_merge($topItems, array('' => ''), $hostGroupMenuItem)); }
public function fixHostNameIDs() { $hostsOK = array(); $hostsErr = array(); $host = new IEHost(); $service = new IEService(); $services = $service->getColumnsFromMySQL(array($service->myKeyColumn, $service->nameColumn, 'host_name'), null, null, $service->myKeyColumn); foreach ($services as $serviceId => $serviceInfo) { $service->loadFromMySQL($serviceId); foreach ($service->getDataValue('host_name') as $hostId => $hostName) { if (!strlen($hostName)) { unset($service->data['host_name'][$hostId]); $hostsOK[] = '(undefined)'; } $hostFound = $host->loadFromMySQL($hostName); if ($hostId != $host->getId()) { if ($service->delMember('host_name', $hostId, $hostName) && $service->addMember('host_name', $host->getId(), $hostName)) { $hostsOK[] = $hostName; } else { $hostsErr[] = $hostName; } } } if (count($hostsOK)) { if ($service->saveToMySQL()) { $this->addItemSmart(sprintf(_('<strong>%s</strong> : %s'), $service->getName(), implode(',', $hostsOK)), array('class' => 'list-group-item')); $this->addStatusMessage(sprintf(_('%s : %s'), $service->getName(), implode(',', $hostsOK)), 'success'); $hostsOK = array(); } } } $hostgroup = new IEHostgroup(); $hostgroups = $hostgroup->getListing(); foreach ($hostgroups as $hostgroupId => $hostgroupInfo) { $hostgroup->loadFromMySQL($hostgroupId); foreach ($hostgroup->getDataValue('members') as $hostId => $hostName) { $hostFound = $host->loadFromMySQL($hostName); if ($hostId != $host->getId()) { if ($hostgroup->delMember('members', $hostId, $hostName) && $hostgroup->addMember('members', $host->getId(), $hostName)) { $hostsOK[] = $hostName; } else { $hostsErr[] = $hostName; } } } if (count($hostsOK)) { if ($hostgroup->saveToMySQL()) { $this->addItemSmart(sprintf(_('<strong>%s</strong> : %s'), $hostgroup->getName(), implode(',', $hostsOK)), array('class' => 'list-group-item')); $this->addStatusMessage(sprintf(_('%s : %s'), $hostgroup->getName(), implode(',', $hostsOK)), 'success'); $hostsOK = array(); } } } $childsAssigned = $host->myDbLink->queryToArray('SELECT ' . $host->myKeyColumn . ',' . $host->nameColumn . ' FROM ' . $host->myTable . ' WHERE ' . 'parents' . ' IS NOT NULL && parents !=\'a:0:{}\'', $host->myKeyColumn); foreach ($childsAssigned as $chid_id => $child_info) { $child = new IEHost($chid_id); $parents = $child->getDataValue('parents'); foreach ($parents as $parent_id => $parent_name) { $parent = new IEHost($parent_name); if ($parent->getId()) { //Ok Host toho jména existuje if ($parent->getId() != $parent_id) { //Ale nesedí ID $child->delMember('parents', $parent_id, $parent_name); $child->addMember('parents', $parent->getId(), $parent_name); $child->saveToMySQL(); $this->addItemSmart(sprintf(_('Rodič <strong>%s</strong> hosta %s má špatné ID'), $parent_name, $child_info[$host->nameColumn]), array('class' => 'list-group-item')); } } else { //Host tohoto jména neexistuje, nemůže být tedy PARENT $this->addItemSmart(sprintf(_('Rodič <strong>%s</strong> hosta %s neexistuje'), $parent_name, $child_info[$host->nameColumn]), array('class' => 'list-group-item')); $child->delMember('parents', $parent->getId(), $parent_name); $child->saveToMySQL(); } } } }