Navigation Menu

Skip to content

Commit

Permalink
Fix software import for OCS > 7028
Browse files Browse the repository at this point in the history
see #245
see #243
  • Loading branch information
tsmr committed Aug 3, 2020
1 parent 4b6ccb9 commit 90ef807
Show file tree
Hide file tree
Showing 2 changed files with 72 additions and 19 deletions.
89 changes: 71 additions & 18 deletions inc/ocsdbclient.class.php
Expand Up @@ -293,10 +293,62 @@ private function getComputerSections($ids, $checksum, $wanted, $plugins, $comple
}
break;
case "softwares" :
if (($check & $checksum) || $complete > 0) {
if ($version['TVALUE'] >= PluginOcsinventoryngOcsServer::OCS2_7_VERSION_LIMIT) {
if (($check & $checksum) || $complete > 0) {
if (self::WANTED_DICO_SOFT & $wanted) {
$query = "SELECT
IFNULL(`dico_soft`.`FORMATTED`, `software_name`.`NAME`) AS NAME,
`software_version`.`VERSION`,
`software_publisher`.`PUBLISHER`,
`software`.`COMMENTS`,
`software`.`FOLDER`,
`software`.`FILENAME`,
`software`.`FILESIZE`,
`software`.`SOURCE`,
`software`.`HARDWARE_ID`,
`software`.`GUID`,
`software`.`LANGUAGE`,
`software`.`INSTALLDATE`,
`software`.`BITSWIDTH`";
$query .= " FROM `software`
LEFT JOIN `software_name` ON (`software`.`NAME_ID` = `software_name`.`ID`)
LEFT JOIN `software_version` ON (`software`.`VERSION_ID` = `software_version`.`ID`)
LEFT JOIN `software_publisher` ON (`software`.`PUBLISHER_ID` = `software_publisher`.`ID`)
INNER JOIN `dico_soft` ON (`software_name`.`NAME` = `dico_soft`.`EXTRACTED`)
WHERE `software`.`HARDWARE_ID` IN (" . implode(',', $ids) . ")";
} else {
$query = "SELECT
`software_name`.`NAME`,
`software_version`.`VERSION`,
`software_publisher`.`PUBLISHER`,
`software`.`COMMENTS`,
`software`.`FOLDER`,
`software`.`FILENAME`,
`software`.`FILESIZE`,
`software`.`SOURCE`,
`software`.`HARDWARE_ID`,
`software`.`GUID`,
`software`.`LANGUAGE`,
`software`.`INSTALLDATE`,
`software`.`BITSWIDTH`";
$query .= " FROM `software`
LEFT JOIN `software_name` ON (`software`.`NAME_ID` = `software_name`.`ID`)
LEFT JOIN `software_version` ON (`software`.`VERSION_ID` = `software_version`.`ID`)
LEFT JOIN `software_publisher` ON (`software`.`PUBLISHER_ID` = `software_publisher`.`ID`)
WHERE `software`.`HARDWARE_ID` IN (" . implode(',', $ids) . ")";
}

$query .= " ORDER BY `software`.`id` DESC";
$request = $this->db->query($query);
while ($software = $this->db->fetchAssoc($request)) {
$computers[$software['HARDWARE_ID']]["SOFTWARES"][] = $software;
}
}
} else {
if (($check & $checksum) || $complete > 0) {

if (self::WANTED_DICO_SOFT & $wanted) {
$query = "SELECT
if (self::WANTED_DICO_SOFT & $wanted) {
$query = "SELECT
IFNULL(`dico_soft`.`FORMATTED`, `softwares`.`NAME`) AS NAME,
`softwares`.`VERSION`,
`softwares`.`PUBLISHER`,
Expand All @@ -306,17 +358,17 @@ private function getComputerSections($ids, $checksum, $wanted, $plugins, $comple
`softwares`.`FILESIZE`,
`softwares`.`SOURCE`,
`softwares`.`HARDWARE_ID`";
if ($version['TVALUE'] > PluginOcsinventoryngOcsServer::OCS2_VERSION_LIMIT) {
$query .= ",`softwares`.`GUID`,
if ($version['TVALUE'] > PluginOcsinventoryngOcsServer::OCS2_VERSION_LIMIT) {
$query .= ",`softwares`.`GUID`,
`softwares`.`LANGUAGE`,
`softwares`.`INSTALLDATE`,
`softwares`.`BITSWIDTH`";
}
$query .= "FROM `softwares`
}
$query .= " FROM `softwares`
INNER JOIN `dico_soft` ON (`softwares`.`NAME` = `dico_soft`.`EXTRACTED`)
WHERE `softwares`.`HARDWARE_ID` IN (" . implode(',', $ids) . ")";
} else {
$query = "SELECT
} else {
$query = "SELECT
`softwares`.`NAME`,
`softwares`.`VERSION`,
`softwares`.`PUBLISHER`,
Expand All @@ -326,20 +378,21 @@ private function getComputerSections($ids, $checksum, $wanted, $plugins, $comple
`softwares`.`FILESIZE`,
`softwares`.`SOURCE`,
`softwares`.`HARDWARE_ID`";
if ($version['TVALUE'] > PluginOcsinventoryngOcsServer::OCS2_VERSION_LIMIT) {
$query .= ",`softwares`.`GUID`,
if ($version['TVALUE'] > PluginOcsinventoryngOcsServer::OCS2_VERSION_LIMIT) {
$query .= ",`softwares`.`GUID`,
`softwares`.`LANGUAGE`,
`softwares`.`INSTALLDATE`,
`softwares`.`BITSWIDTH`";
}
$query .= "FROM `softwares`
}
$query .= " FROM `softwares`
WHERE `softwares`.`HARDWARE_ID` IN (" . implode(',', $ids) . ")";
}
}

$query .= "ORDER BY `id` DESC";
$request = $this->db->query($query);
while ($software = $this->db->fetchAssoc($request)) {
$computers[$software['HARDWARE_ID']]["SOFTWARES"][] = $software;
$query .= " ORDER BY `softwares`.`id` DESC";
$request = $this->db->query($query);
while ($software = $this->db->fetchAssoc($request)) {
$computers[$software['HARDWARE_ID']]["SOFTWARES"][] = $software;
}
}
}
break;
Expand Down
2 changes: 1 addition & 1 deletion inc/ocsserver.class.php
Expand Up @@ -51,7 +51,7 @@ class PluginOcsinventoryngOcsServer extends CommonDBTM {
const OCS2_VERSION_LIMIT = 6000;
const OCS2_1_VERSION_LIMIT = 7006;
const OCS2_2_VERSION_LIMIT = 7009;

const OCS2_7_VERSION_LIMIT = 7028;
const ACTION_PURGE_COMPUTER = 0; // Action cronCleanOldAgents : Purge computer
const ACTION_DELETE_COMPUTER = 1; // Action cronCleanOldAgents : delete computer

Expand Down

0 comments on commit 90ef807

Please sign in to comment.