public static function getMergedParameters($firstTableParams = array(), $secondTableParams = array(), $count = -1, $offset = 0, $order = null, $sort = "ASC", $filters = array(), $filterType = "OR", $relationTableParams = array()) { $fString = ""; $sString = ""; $rString = ""; $firstObj = static::$firstObject; foreach ($firstTableParams as $fparams) { if ($fString != "") { $fString .= ","; } $fString .= $firstObj::getTableName() . "." . $fparams; } $secondObj = static::$secondObject; foreach ($secondTableParams as $sparams) { if ($fString != "" || $sString != "") { $sString .= ","; } $sString .= $secondObj::getTableName() . "." . $sparams; } foreach ($relationTableParams as $rparams) { if ($fString != "" || $sString != "" || $rString != "") { $rString .= ","; } $rString .= static::$relationTable . "." . $rparams; } $sql = "SELECT {$fString} {$sString} {$rString}\n FROM " . $firstObj::getTableName() . "," . $secondObj::getTableName() . "," . static::$relationTable . "\n WHERE " . $firstObj::getTableName() . "." . $firstObj::getPrimaryKey() . " = " . static::$relationTable . "." . static::$firstKey . "\n AND " . static::$relationTable . "." . static::$secondKey . " = " . $secondObj::getTableName() . "." . $secondObj::getPrimaryKey() . "\n AND host_register = '1'\n AND service_register = '1' "; $filterTab = array(); if (count($filters)) { $sql .= " AND ( "; $first = true; foreach ($filters as $key => $rawvalue) { if ($first) { $first = false; } else { $sql .= $filterType; } if (is_array($rawvalue)) { $sql .= "("; $sql .= join(" OR ", array_pad(array(), count($rawvalue), $key . " LIKE ? ")); $sql .= ")"; $filterTab = array_merge($filterTab, array_map(array('static', 'parseValueForSearch'), $rawvalue)); } else { $sql .= ' ' . $key . " LIKE ? "; $filterTab[] = CentreonRelationModel::parseValueForSearch($rawvalue); } } $sql .= " ) "; } if (isset($order) && isset($sort) && (strtoupper($sort) == "ASC" || strtoupper($sort) == "DESC")) { $sql .= " ORDER BY {$order} {$sort} "; } if (isset($count) && $count != -1) { $db = Di::getDefault()->get('db_centreon'); $sql = $db->limit($sql, $count, $offset); } $result = static::getResult($sql, $filterTab); return $result; }