Skip to content
This repository has been archived by the owner on Dec 13, 2022. It is now read-only.

chore(release): merge release-21.10.next into 21.10.x #11910

Merged
merged 69 commits into from
Oct 3, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
69 commits
Select commit Hold shift + click to select a range
be3ef28
fix(git): resync 21.10.x to dev-21.10.x (#11499)
kduret Aug 4, 2022
fe3a65f
fix(test): wait 8s before checking downtime is active in rest api v1 …
kduret Aug 4, 2022
ee32f7c
fix(UI): Include host_id when selecting ServiceGroups on dashreports …
emabassi-ext Aug 4, 2022
0804526
[SNYK] Sanitize and bind centreonGraph class queries (#11409) (#11518)
emabassi-ext Aug 4, 2022
d602637
[Snyk] Sanitize and bind ACL action access queries (#11385) (#11515)
emabassi-ext Aug 4, 2022
507a256
fix(cron): Escape database name in CentACL 21.10.x (#11509)
hyahiaoui-ext Aug 4, 2022
8181c45
fix(pendo): correctly set locale when language is detection by browse…
jeremyjaouen Aug 5, 2022
8f426cf
fix(test): fix random fails on virtual metric test (#11524)
kduret Aug 5, 2022
8fbc5e9
enh(platform): Use API to select metrics in virtual metrics configura…
hyahiaoui-ext Aug 5, 2022
bb48f69
doc(ack): acknowledge Hakaï security (#11539)
sc979 Aug 8, 2022
007e253
fix(web): fix the comment deletion for host monitored by poller (#111…
kduret Aug 10, 2022
c03f301
SNYK: Sanitize and bind Broker listing queries (#11551)
hyahiaoui-ext Aug 11, 2022
2c66074
fix(conf) fix encoding in template service listing (#11558) (#11565)
a-launois Aug 11, 2022
59b3b3c
SNYK: Sanitize and bind generateImage queries (#11562)
hyahiaoui-ext Aug 11, 2022
6390687
SNYK: Sanitize and bind ACL actions queries (#11548)
hyahiaoui-ext Aug 11, 2022
c08f72c
MON-14501 - sanitize query in centreonXmlbgRequest class (#11571)
emabassi-ext Aug 11, 2022
1e04957
SNYK: Sanitize and bind Meta-Services dependency queries (#11568)
emabassi-ext Aug 11, 2022
3d7dc9b
chore(release): merge release 21.10.9 into 21.10.x (#11628) (#11629)
chgautier Aug 26, 2022
3d58bf2
query sanitized in listServiceCategoriesà (#11597) (#11633)
emabassi-ext Aug 29, 2022
1f54f65
Sanitize and bind listVirtualMetrics queries (#11648)
emabassi-ext Aug 30, 2022
8d0309a
sanitize insrert queries in db-func (#11651)
emabassi-ext Aug 30, 2022
544e13f
Sanitized and bound queries in service argumentsXml file (#11654)
emabassi-ext Aug 30, 2022
884779b
sanitize and bind host categories query (#11644)
emabassi-ext Aug 30, 2022
edc03c6
Fix encoding issue on status serviceXML (#11582)
TamazC Aug 30, 2022
6f72388
sanitize and bind in centreon connector query (#11636)
emabassi-ext Sep 1, 2022
20085ac
chore(git): update codeowners (#11593)
sc979 Sep 1, 2022
4bec859
fix(conf) fix parent template display in service template listing (#1…
a-launois Sep 2, 2022
7787930
fix(poller): fix remote server duplication (#11552) (#11675)
kduret Sep 5, 2022
e8354c7
fix(clapi): Check that user is admin to use clapi (#11631) (#11639)
jeremyjaouen Sep 5, 2022
9c5a1a0
Fix: Sanitize and bind service group dependecies queries 21.10.x (#11…
hyahiaoui-ext Sep 5, 2022
e52007c
fix(widgets): retrieve possibility to not select poller in pref (#116…
kduret Sep 6, 2022
b42d29a
Fix: In Acces group the second select not working [ACL] 21.10.x (#11710)
hyahiaoui-ext Sep 7, 2022
7a37565
fix(details): remove dead code (#11672) (#11685)
adr-mo Sep 8, 2022
f552e56
fix(details): second part of code cleanup for "tools" (#11718) (#11722)
adr-mo Sep 8, 2022
237f599
FIX: Sanitize and bind graph configuration queries 21.10.x (#11730)
hyahiaoui-ext Sep 9, 2022
a22ad91
Fix: Sanitize and bind CLAPI poller configuration 21.10.x (#11732)
hyahiaoui-ext Sep 9, 2022
8c6ae51
FIX: Sanitize and bind Meta Service configuration 21.10.x (#11734)
hyahiaoui-ext Sep 11, 2022
98187b3
[Fix]:Sanitize and bind queries in template of service listing (#11745)
emabassi-ext Sep 12, 2022
095dda9
fix(resource): Fix bad SQL request (#11702) (#11750)
callapa Sep 13, 2022
36c0f9a
FIX: Sanitize and bind command configuration queries 21.10.x (#11755)
hyahiaoui-ext Sep 13, 2022
4422b96
Rebase dev2110x on 2110x (#11825)
tuntoja Sep 21, 2022
d73780d
Fix: Remove obsolete code in ACL configuration listing (#11793)
emabassi-ext Sep 21, 2022
7da7260
[Fix]: Sanitize and bind service by hostgroups listing (#11795)
emabassi-ext Sep 21, 2022
683b485
Fix : Sanitize and bind centreon hostgroups class (#11800)
emabassi-ext Sep 21, 2022
cfb89b4
Fix: Sanitize and bind CLAPI Centreon Hostgroup class (#11802)
emabassi-ext Sep 21, 2022
64c2e18
Fix: Sanitize and bind host category listing (#11805)
emabassi-ext Sep 21, 2022
286d6e9
fix(conf/export) broker RRDcacheD export (#11811) (#11834)
a-launois Sep 21, 2022
999c0ed
FIX: SQLi in poller's broker configuration 21.10.x (#11778)
hyahiaoui-ext Sep 21, 2022
11214d6
FIX: Sanitize and bind default configuration queries 21.10.x (#11787)
hyahiaoui-ext Sep 21, 2022
3815a9f
FIX: Sanitize and bind Centreon Notification class 21.10.x (#11792)
hyahiaoui-ext Sep 21, 2022
66c307f
FIX: Sanitize and bind LDAP CLAPI listing 21.10.x (#11797)
hyahiaoui-ext Sep 21, 2022
8209330
FIX: Sanitize and bind service listing 21.10.x (#11801)
hyahiaoui-ext Sep 21, 2022
8da2e2a
FIX: Sanitize and bind SNMP Traps groups configuration 21.10.x (#11807)
hyahiaoui-ext Sep 21, 2022
c22ab19
Fix: Sanitize and bind Media import (#11788)
emabassi-ext Sep 22, 2022
4f1b010
Fix: Remove obsolete code in monitoring common functions (#11844)
emabassi-ext Sep 22, 2022
aa047fa
Fix: Sanitize and bind SNMP Traps listing (#11842)
emabassi-ext Sep 22, 2022
1aee7fe
Fix: Remove obsolete code in Criticality class (#11841)
emabassi-ext Sep 22, 2022
627c093
Fix: Sanitize and bind CALPI Centreon service class (#11836)
emabassi-ext Sep 22, 2022
a4db0ea
FIX: Remove unused mechanism for modules to add restart/reload action…
hyahiaoui-ext Sep 22, 2022
ab0818e
FIX: Removing unused code and fixing bug of generating csv in multipl…
hyahiaoui-ext Sep 22, 2022
5c1daf8
FIX: Sanitize and bind Knowledge Base host listing 21.10.x (#11859)
hyahiaoui-ext Sep 22, 2022
0fa8175
Fix: Remove obsolete code in database partitioning functions (#11839)
emabassi-ext Sep 23, 2022
fcb4d8e
FIX: Sanitize and bind Centreon Service class 21.10.x (#11865)
hyahiaoui-ext Sep 23, 2022
6f2e37f
backport MON-14223 -> dev-21.10.x (#11863)
dmyios Sep 23, 2022
5218976
FIX: SQLi in contact groups form 21.10.x (#11875)
hyahiaoui-ext Sep 26, 2022
75587e6
Fix: Remove obsolete code in legacy service detail page (#11848) (#11…
emabassi-ext Sep 28, 2022
701d20a
Fix: Sanitize and bind menu topology listing (#11832) (#11883)
emabassi-ext Sep 28, 2022
4ab8a83
chore(release): update version to 21.10.11
tuntoja Sep 27, 2022
effdf61
Merge branch '21.10.x' into release-21.10.next
kduret Oct 3, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 9 additions & 8 deletions src/Centreon/Domain/Repository/TopologyRepository.php
Original file line number Diff line number Diff line change
Expand Up @@ -103,14 +103,15 @@ public function getReactTopologiesPerUserWithAcl($user)
if ($DBRESULT->rowCount()) {
$topology = array();
$tmp_topo_page = array();
$statement = $this->db->prepare("SELECT topology_topology_id, acl_topology_relations.access_right "
. "FROM acl_topology_relations, acl_topology "
. "WHERE acl_topology.acl_topo_activate = '1' "
. "AND acl_topology.acl_topo_id = acl_topology_relations.acl_topo_id "
. "AND acl_topology_relations.acl_topo_id = :acl_topo_id ");
while ($topo_group = $DBRESULT->fetchRow()) {
$query2 = "SELECT topology_topology_id, acl_topology_relations.access_right "
. "FROM acl_topology_relations, acl_topology "
. "WHERE acl_topology.acl_topo_activate = '1' "
. "AND acl_topology.acl_topo_id = acl_topology_relations.acl_topo_id "
. "AND acl_topology_relations.acl_topo_id = '" . $topo_group["acl_topology_id"] . "' ";
$DBRESULT2 = $this->db->query($query2);
while ($topo_page = $DBRESULT2->fetchRow()) {
$statement->bindValue(':acl_topo_id', $topo_group["acl_topology_id"], \PDO::PARAM_INT);
$statement->execute();
while ($topo_page = $statement->fetch(\PDO::FETCH_ASSOC)) {
$topology[] = (int)$topo_page["topology_topology_id"];
if (!isset($tmp_topo_page[$topo_page['topology_topology_id']])) {
$tmp_topo_page[$topo_page["topology_topology_id"]] = $topo_page["access_right"];
Expand All @@ -125,7 +126,7 @@ public function getReactTopologiesPerUserWithAcl($user)
}
}
}
$DBRESULT2->closeCursor();
$statement->closeCursor();
}
$DBRESULT->closeCursor();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ protected function setUp(): void
. "FROM acl_topology_relations, acl_topology "
. "WHERE acl_topology.acl_topo_activate = '1' "
. "AND acl_topology.acl_topo_id = acl_topology_relations.acl_topo_id "
. "AND acl_topology_relations.acl_topo_id = '1' ",
. "AND acl_topology_relations.acl_topo_id = :acl_topo_id ",
'data' => [
[
'topology_topology_id' => 1,
Expand Down
25 changes: 15 additions & 10 deletions www/class/centreon-clapi/centreonHostGroup.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,7 @@ public function getparam($parameters = null)
$listParam = explode('|', $params[1]);
$exportedFields = [];
$resultString = "";
$paramString = "";
foreach ($listParam as $paramSearch) {
if (!$paramString) {
$paramString = $paramSearch;
Expand Down Expand Up @@ -257,20 +258,24 @@ public function initUpdateParameters($parameters = null)
public function getIdIcon($path)
{
$iconData = explode('/', $path);
$query = 'SELECT dir_id FROM view_img_dir WHERE dir_name = "' . $iconData[0] . '"';
$res = $this->db->query($query);
$row = $res->fetch();
$dirStatement = $this->db->prepare("SELECT dir_id FROM view_img_dir WHERE dir_name = :IconData");
$dirStatement->bindValue(':IconData', $iconData[0], \PDO::PARAM_STR);
$dirStatement->execute();
$row = $dirStatement->fetch();
$dirId = $row['dir_id'];

$query = 'SELECT img_id FROM view_img WHERE img_path = "' . $iconData[1] . '"';
$res = $this->db->query($query);
$row = $res->fetch();
$imgStatement = $this->db->prepare("SELECT img_id FROM view_img WHERE img_path = :iconData");
$imgStatement->bindValue(':iconData', $iconData[1], \PDO::PARAM_STR);
$imgStatement->execute();
$row = $imgStatement->fetch();
$iconId = $row['img_id'];

$query = 'SELECT vidr_id FROM view_img_dir_relation ' .
'WHERE dir_dir_parent_id = ' . $dirId . ' AND img_img_id = ' . $iconId;
$res = $this->db->query($query);
$row = $res->fetch();
$vidrStatement = $this->db->prepare("SELECT vidr_id FROM view_img_dir_relation " .
"WHERE dir_dir_parent_id = :dirId AND img_img_id = :iconId");
$vidrStatement->bindValue(':dirId', (int) $dirId, \PDO::PARAM_INT);
$vidrStatement->bindValue(':iconId', (int) $iconId, \PDO::PARAM_INT);
$vidrStatement->execute();
$row = $vidrStatement->fetch();
return $row['vidr_id'];
}

Expand Down
8 changes: 5 additions & 3 deletions www/class/centreon-clapi/centreonLDAP.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -184,10 +184,12 @@ public function showserver($arName = null)
}
$sql = "SELECT ldap_host_id, host_address, host_port, use_ssl, use_tls, host_order
FROM auth_ressource_host
WHERE auth_ressource_id = " . $arId . "
WHERE auth_ressource_id = :auth_ressource_id
ORDER BY host_order";
$res = $this->db->query($sql);
$row = $res->fetchAll();
$statement = $this->db->prepare($sql);
$statement->bindValue(':auth_ressource_id', (int) $arId, \PDO::PARAM_INT);
$statement->execute();
$row = $statement->fetchAll(\PDO::FETCH_ASSOC);
echo "id;address;port;ssl;tls;order\n";
foreach ($row as $srv) {
echo $srv['ldap_host_id'] . $this->delim .
Expand Down
12 changes: 6 additions & 6 deletions www/class/centreon-clapi/centreonService.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -1584,12 +1584,12 @@ public function getCustomMacroInDb($serviceId = null, $template = null)
$arr = array();
$i = 0;
if ($serviceId) {
$res = $this->db->query("SELECT svc_macro_name, svc_macro_value, is_password, description
FROM on_demand_macro_service
WHERE svc_svc_id = " .
$serviceId . "
ORDER BY macro_order ASC");
while ($row = $res->fetch()) {
$statement = $this->db->prepare("SELECT svc_macro_name, svc_macro_value, is_password, description " .
"FROM on_demand_macro_service " .
"WHERE svc_svc_id = :serviceId ORDER BY macro_order ASC");
$statement->bindValue(':serviceId', (int) $serviceId, \PDO::PARAM_INT);
$statement->execute();
while ($row = $statement->fetch()) {
if (preg_match('/\$_SERVICE(.*)\$$/', $row['svc_macro_name'], $matches)) {
$arr[$i]['svc_macro_name'] = $matches[1];
$arr[$i]['svc_macro_value'] = $row['svc_macro_value'];
Expand Down
14 changes: 8 additions & 6 deletions www/class/centreon-knowledge/procedures.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -139,13 +139,15 @@ public function getMyHostMultipleTemplateModels($host_id = null)
"WHERE host_host_id = '" . $host_id . "' " .
"ORDER BY `order`"
);
$statement = $this->centreon_DB->prepare(
"SELECT host_name " .
"FROM host " .
"WHERE host_id = :host_id LIMIT 1"
);
while ($row = $dbResult->fetch()) {
$dbResult2 = $this->centreon_DB->query(
"SELECT host_name " .
"FROM host " .
"WHERE host_id = '" . $row['host_tpl_id'] . "' LIMIT 1"
);
$hTpl = $dbResult2->fetch();
$statement->bindValue(':host_id', $row['host_tpl_id'], \PDO::PARAM_INT);
$statement->execute();
$hTpl = $statement->fetch(\PDO::FETCH_ASSOC);
$tplArr[$row['host_tpl_id']] = html_entity_decode($hTpl["host_name"], ENT_QUOTES);
}
unset($row);
Expand Down
38 changes: 0 additions & 38 deletions www/class/centreon-partition/partEngine.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -426,44 +426,6 @@ public function updateParts($table, $db)
}
}

/**
* optimize all partitions for a table
*
* @param MysqlTable $table
*/
public function optimizeTablePartitions($table, $db)
{
$tableName = "`" . $table->getSchema() . "`." . $table->getName();
if (!$table->exists()) {
throw new Exception("Optimize error: Table " . $tableName . " does not exists\n");
}

$request = "SELECT PARTITION_NAME FROM information_schema.`PARTITIONS` ";
$request .= "WHERE `TABLE_NAME`='" . $table->getName() . "' ";
$request .= "AND TABLE_SCHEMA='" . $table->getSchema() . "' ";
try {
$dbResult = $db->query($request);
} catch (\PDOException $e) {
throw new Exception(
"Error : Cannot get table schema information for "
. $tableName . ", " . $e->getMessage() . "\n"
);
}

while ($row = $dbResult->fetch()) {
$request = "ALTER TABLE " . $tableName . " OPTIMIZE PARTITION `" . $row["PARTITION_NAME"] . "`;";
try {
$dbResult2 = $db->query($request);
} catch (\PDOException $e) {
throw new Exception(
"Optimize error : Cannot optimize partition " . $row["PARTITION_NAME"]
. " of table " . $tableName . ", " . $e->getMessage() . "\n"
);
}
}

$dbResult->closeCursor();
}

/**
* list all partitions for a table
Expand Down
10 changes: 0 additions & 10 deletions www/class/centreon.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -162,22 +162,12 @@ public function creatModuleList()
$this->modules[$result["name"]] = array(
"name" => $result["name"],
"gen" => false,
"restart" => false,
"license" => false
);

if (is_dir("./modules/" . $result["name"] . "/generate_files/")) {
$this->modules[$result["name"]]["gen"] = true;
}
if (is_dir("./modules/" . $result["name"] . "/restart_pollers/")) {
$this->modules[$result["name"]]["restart"] = true;
}
if (is_dir("./modules/" . $result["name"] . "/restart_pollers/")) {
$this->modules[$result["name"]]["restart"] = true;
}
if (file_exists("./modules/" . $result["name"] . "/license/merethis_lic.zl")) {
$this->modules[$result["name"]]["license"] = true;
}
}
$dbResult = null;
}
Expand Down
8 changes: 5 additions & 3 deletions www/class/centreonConfigCentreonBroker.php
Original file line number Diff line number Diff line change
Expand Up @@ -731,13 +731,15 @@ public function insertConfig($values)
/*
* Get the ID
*/
$query = "SELECT config_id FROM cfg_centreonbroker WHERE config_name = '" . $values['name'] . "'";
$query = "SELECT config_id FROM cfg_centreonbroker WHERE config_name = :config_name";
try {
$res = $this->db->query($query);
$statement = $this->db->prepare($query);
$statement->bindValue(':config_name', $values['name'], \PDO::PARAM_STR);
$statement->execute();
} catch (\PDOException $e) {
return false;
}
$row = $res->fetch();
$row = $statement->fetch(\PDO::FETCH_ASSOC);
$id = $row['config_id'];

/*
Expand Down
25 changes: 0 additions & 25 deletions www/class/centreonCriticality.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -358,29 +358,4 @@ protected function getServiceCriticality($service_id)
}
return 0;
}

public function getHostTplCriticities($host_id, $cache)
{
global $pearDB;

if (!$host_id) {
return null;
}

$rq = "SELECT host_tpl_id " .
"FROM host_template_relation " .
"WHERE host_host_id = '".$host_id."' " .
"ORDER BY `order`";
$DBRESULT = $pearDB->query($rq);
while ($row = $DBRESULT->fetchRow()) {
if (isset($cache[$row['host_tpl_id']])) {
return $this->getData($cache[$row['host_tpl_id']], false);
} else {
if ($result_field = $this->getHostTplCriticities($row['host_tpl_id'], $cache)) {
return $result_field;
}
}
}
return null;
}
}
43 changes: 43 additions & 0 deletions www/class/centreonDB.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -447,4 +447,47 @@ public function isColumnExist(string $table = null, string $column = null): int
return -1;
}
}

/**
* Write SQL errors messages and queries
*
* @param string $query the query string to write to log
* @param string $message the message to write to log
*/
private function logSqlError(string $query, string $message): void
{
$this->log->insertLog(2, $message . " QUERY : " . $query);
}

/**
* This method returns a column type from a given table and column.
*
* @param string $tableName
* @param string $columnName
* @return string
*/
public function getColumnType(string $tableName, string $columnName): string
{
$query = 'SELECT COLUMN_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = :dbName
AND TABLE_NAME = :tableName
AND COLUMN_NAME = :columnName';

$stmt = $this->prepare($query);

try {
$stmt->bindValue(':dbName', $this->dsn['database'], \PDO::PARAM_STR);
$stmt->bindValue(':tableName', $tableName, \PDO::PARAM_STR);
$stmt->bindValue(':columnName', $columnName, \PDO::PARAM_STR);
$stmt->execute();
$result = $stmt->fetch(\PDO::FETCH_ASSOC);
if (! empty($result)) {
return $result['COLUMN_TYPE'];
}
throw new \PDOException("Unable to get column type");
} catch (\PDOException $e) {
$this->logSqlError($query, $e->getMessage());
}
}
}
15 changes: 8 additions & 7 deletions www/class/centreonHostgroups.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -100,18 +100,19 @@ public function getHostGroupHosts($hg_id = null)
}

$hosts = array();
$DBRESULT = $this->DB->query(
"SELECT hgr.host_host_id " .
$statement = $this->DB->prepare("SELECT hgr.host_host_id " .
"FROM hostgroup_relation hgr, host h " .
"WHERE hgr.hostgroup_hg_id = '" . $this->DB->escape($hg_id) . "' " .
"WHERE hgr.hostgroup_hg_id = :hgId " .
"AND h.host_id = hgr.host_host_id " .
"ORDER by h.host_name"
);
while ($elem = $DBRESULT->fetchRow()) {
"ORDER by h.host_name");
$statement->bindValue(':hgId', (int) $hg_id, \PDO::PARAM_INT);
$statement->execute();

while ($elem = $statement->fetchRow()) {
$ref[$elem["host_host_id"]] = $elem["host_host_id"];
$hosts[] = $elem["host_host_id"];
}
$DBRESULT->closeCursor();
$statement->closeCursor();
unset($elem);

if (isset($hostgroups) && count($hostgroups)) {
Expand Down
12 changes: 5 additions & 7 deletions www/class/centreonMedia.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -410,14 +410,12 @@ public function addImage($parameters, $binary = null)
$imageId = $row['img_id'];

// Insert relation between directory and image
$query = 'INSERT INTO view_img_dir_relation '
. '(dir_dir_parent_id, img_img_id) '
. 'VALUES ('
. $directoryId . ', '
. $imageId . ' '
. ') ';
$statement = $this->db->prepare("INSERT INTO view_img_dir_relation (dir_dir_parent_id, img_img_id) " .
"VALUES (:dirId, :imgId) ");
$statement->bindValue(':dirId', (int) $directoryId, \PDO::PARAM_INT);
$statement->bindValue(':imgId', (int) $imageId, \PDO::PARAM_INT);
try {
$this->db->query($query);
$statement->execute();
} catch (\PDOException $e) {
throw new \Exception('Error while inserting relation between' . $imageName . ' and ' . $directoryName);
}
Expand Down
8 changes: 5 additions & 3 deletions www/class/centreonNotification.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -342,10 +342,12 @@ protected function getHostTemplateNotifications($hostId, $templates)
FROM host_template_relation htr
LEFT JOIN contact_host_relation ctr ON htr.host_host_id = ctr.host_host_id
LEFT JOIN contactgroup_host_relation ctr2 ON htr.host_host_id = ctr2.host_host_id
WHERE htr.host_host_id = " . $hostId . "
WHERE htr.host_host_id = :host_id
ORDER BY `order`";
$res = $this->db->query($sql);
while ($row = $res->fetchRow()) {
$statement = $this->db->prepare($sql);
$statement->bindValue(':host_id', (int) $hostId, \PDO::PARAM_INT);
$statement->execute();
while ($row = $statement->fetch(\PDO::FETCH_ASSOC)) {
if ($row['contact_id']) {
$this->hostBreak[1] = true;
}
Expand Down
10 changes: 6 additions & 4 deletions www/class/centreonService.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -1727,12 +1727,14 @@ public function getTemplatesChain($svcId, $alreadyProcessed = array())
} else {
$alreadyProcessed[] = $svcId;

$res = $this->db->query(
"SELECT service_template_model_stm_id FROM service WHERE service_id = " . $this->db->escape($svcId)
$statement = $this->db->prepare(
"SELECT service_template_model_stm_id FROM service WHERE service_id = :service_id"
);
$statement->bindValue(':service_id', (int) $svcId, \PDO::PARAM_INT);
$statement->execute();

if ($res->rowCount()) {
$row = $res->fetchRow();
if ($statement->rowCount()) {
$row = $statement->fetch(\PDO::FETCH_ASSOC);
if (!empty($row['service_template_model_stm_id']) && $row['service_template_model_stm_id'] !== null) {
$svcTmpl = array_merge(
$svcTmpl,
Expand Down
Loading