/** * {@inheritdoc} */ public function getGroup() { $group = parent::getGroup(); if (!empty($group) && $this->ds->getDbType() === 'pgsql') { foreach ($this->columnMap as $table => $columns) { $pk = ($table === 'objects' ? 'cvo.' : 'cvs.') . $this->getPrimaryKeyColumn($table); foreach ($columns as $alias => $_) { if (!in_array($pk, $group, true) && in_array($alias, $group, true)) { $group[] = $pk; break; } } } } return $group; }
/** * {@inheritdoc} */ public function getGroup() { $group = parent::getGroup() ?: array(); if (!is_array($group)) { $group = array($group); } if ($this->hasJoinedVirtualTable('hostgroups') || $this->hasJoinedVirtualTable('servicegroups')) { $group[] = 's.service_id'; $group[] = 'so.object_id'; if ($this->hasJoinedVirtualTable('hosts')) { $group[] = 'h.host_id'; } if ($this->hasJoinedVirtualTable('hoststatus')) { $group[] = 'hs.hoststatus_id'; } if ($this->hasJoinedVirtualTable('servicestatus')) { $group[] = 'ss.servicestatus_id'; } if ($this->hasJoinedVirtualTable('hostgroups')) { $selected = false; foreach ($this->columns as $alias => $column) { if ($column instanceof Zend_Db_Expr) { continue; } $table = $this->aliasToTableName($this->hasAliasName($alias) ? $alias : $this->customAliasToAlias($alias)); if ($table === 'hostgroups') { $selected = true; break; } } if ($selected) { $group[] = 'hg.hostgroup_id'; $group[] = 'hgo.object_id'; } } if ($this->hasJoinedVirtualTable('servicegroups')) { $selected = false; foreach ($this->columns as $alias => $column) { if ($column instanceof Zend_Db_Expr) { continue; } $table = $this->aliasToTableName($this->hasAliasName($alias) ? $alias : $this->customAliasToAlias($alias)); if ($table === 'servicegroups') { $selected = true; break; } } if ($selected) { $group[] = 'sg.servicegroup_id'; $group[] = 'sgo.object_id'; } } } return $group; }
/** * {@inheritdoc} */ public function getGroup() { $group = parent::getGroup() ?: array(); if (!is_array($group)) { $group = array($group); } $groupedTables = array(); if ($this->hasJoinedVirtualTable('servicegroups')) { $group[] = 'ho.object_id'; $group[] = 'h.host_id'; $groupedTables['hosts'] = true; $serviceGroupColumns = array_keys($this->columnMap['servicegroups']); $selectedServiceGroupColumns = array_intersect($serviceGroupColumns, array_keys($this->columns)); if (!empty($selectedServiceGroupColumns)) { $group[] = 'sgo.object_id'; $group[] = 'sg.servicegroup_id'; $groupedTables['servicegroups'] = true; } } if ($this->hasJoinedVirtualTable('hostgroups')) { if (!isset($groupedTables['hosts'])) { $group[] = 'ho.object_id'; $group[] = 'h.host_id'; $groupedTables['hosts'] = true; } $hostGroupColumns = array_keys($this->columnMap['hostgroups']); $selectedHostGroupColumns = array_intersect($hostGroupColumns, array_keys($this->columns)); if (!empty($selectedHostGroupColumns)) { $group[] = 'hgo.object_id'; $group[] = 'hg.hostgroup_id'; $groupedTables['hostgroups'] = true; } } if (!empty($groupedTables)) { foreach ($this->columns as $alias => $column) { if ($column instanceof Zend_Db_Expr || $column === '(NULL)') { continue; } $tableName = $this->aliasToTableName($this->hasAliasName($alias) ? $alias : $this->customAliasToAlias($alias)); if (isset($groupedTables[$tableName])) { continue; } switch ($tableName) { case 'hoststatus': $group[] = 'hs.hoststatus_id'; break; case 'serviceproblemsummary': $group[] = 'sps.unhandled_services_count'; break; case 'services': $group[] = 'so.object_id'; $group[] = 's.service_id'; break; case 'instances': $group[] = 'i.instance_id'; break; default: continue 2; } $groupedTables[$tableName] = true; } } return $group; }