Skip to content

Commit

Permalink
Merge pull request #1612 from OCSInventory-NG/fix-multicriteria-search
Browse files Browse the repository at this point in the history
Multisearch : Fix search on table with more than 2 underscore
  • Loading branch information
Lea9250 committed Jul 8, 2024
2 parents b376535 + 1e394f4 commit 7dfcb4d
Show file tree
Hide file tree
Showing 2 changed files with 87 additions and 75 deletions.
78 changes: 45 additions & 33 deletions require/search/Search.php
Original file line number Diff line number Diff line change
Expand Up @@ -205,27 +205,37 @@ public function addSessionsInfos($postData)
public function updateSessionsInfos($postData)
{
foreach ($postData as $key => $value) {
$keyExploded = explode("_", $key);
if(count($keyExploded) > 1 && isset($_SESSION['OCS']['multi_search'][$keyExploded[1]]) && !is_null($_SESSION['OCS']['multi_search'][$keyExploded[1]])){
if ($keyExploded[2] == self::SESS_OPERATOR) {
$_SESSION['OCS']['multi_search'][$keyExploded[1]][$keyExploded[0]][self::SESS_OPERATOR] = $value;
} elseif($keyExploded[2] == self::SESS_FIELDS && $_SESSION['OCS']['multi_search'][$keyExploded[1]][$keyExploded[0]][self::SESS_OPERATOR] != 'ISNULL') {
$_SESSION['OCS']['multi_search'][$keyExploded[1]][$keyExploded[0]][self::SESS_VALUES] = $value;
}elseif($keyExploded[2] == self::SESS_COMPARATOR){
$_SESSION['OCS']['multi_search'][$keyExploded[1]][$keyExploded[0]][self::SESS_COMPARATOR] = $value;
}
}elseif(count($keyExploded) == 4){
$keyExplodedBis = $keyExploded[1]."_".$keyExploded[2];
if(isset ($_SESSION['OCS']['multi_search'][$keyExplodedBis]) && !is_null($_SESSION['OCS']['multi_search'][$keyExplodedBis])){
if ($keyExploded[3] == self::SESS_OPERATOR) {
$_SESSION['OCS']['multi_search'][$keyExplodedBis][$keyExploded[0]][self::SESS_OPERATOR] = $value;
} elseif($keyExploded[3] == self::SESS_COMPARATOR){
$_SESSION['OCS']['multi_search'][$keyExplodedBis][$keyExploded[0]][self::SESS_COMPARATOR] = $value;
} else {
$_SESSION['OCS']['multi_search'][$keyExplodedBis][$keyExploded[0]][self::SESS_VALUES] = $value;
}
}
}
$keyExploded = explode("_", $key);

if (count($keyExploded) >= 3) {
// Retrieve random key
$randomKey = $keyExploded[0];
// Retrieve element type (operator | fields)
$elementType = end($keyExploded);

// Unset keys after saving
array_shift($keyExploded);
array_pop($keyExploded);

// Reconstruct tablename with what's left
$tableName = implode("_", $keyExploded);

if (
isset($_SESSION['OCS']['multi_search'][$tableName])
&& !is_null($_SESSION['OCS']['multi_search'][$tableName])
) {
if ($elementType == self::SESS_OPERATOR) {
$_SESSION['OCS']['multi_search'][$tableName][$randomKey][self::SESS_OPERATOR] = $value;
} elseif (
$elementType == self::SESS_FIELDS
&& $_SESSION['OCS']['multi_search'][$tableName][$randomKey][self::SESS_OPERATOR] != 'ISNULL'
) {
$_SESSION['OCS']['multi_search'][$tableName][$randomKey][self::SESS_VALUES] = $value;
} elseif ($elementType == self::SESS_COMPARATOR) {
$_SESSION['OCS']['multi_search'][$tableName][$randomKey][self::SESS_COMPARATOR] = $value;
}
}
}
}
}

Expand All @@ -237,18 +247,20 @@ public function updateSessionsInfos($postData)
*/
public function removeSessionsInfos($rowReference){
$explodedRef = explode("_", $rowReference);
if(empty($explodedRef[2])){
unset($_SESSION['OCS']['multi_search'][$explodedRef[1]][$explodedRef[0]]);
}else{
$exploded = $explodedRef[1]."_".$explodedRef[2];
unset($_SESSION['OCS']['multi_search'][$exploded][$explodedRef[0]]);
if(empty($_SESSION['OCS']['multi_search'][$exploded])){
unset($_SESSION['OCS']['multi_search'][$exploded]);
}
}
if(empty($_SESSION['OCS']['multi_search'][$explodedRef[1]])){
unset($_SESSION['OCS']['multi_search'][$explodedRef[1]]);
}
// Retrieve random key
$randomKey = $explodedRef[0];

// Unset key after saving
array_shift($explodedRef);

// Reconstruct tablename with what's left
$tableName = implode("_", $explodedRef);

unset($_SESSION['OCS']['multi_search'][$tableName][$randomKey]);

if (empty($_SESSION['OCS']['multi_search'][$tableName])) {
unset($_SESSION['OCS']['multi_search'][$tableName]);
}
}

/**
Expand Down
84 changes: 42 additions & 42 deletions require/search/SnmpSearch.php
Original file line number Diff line number Diff line change
Expand Up @@ -153,33 +153,37 @@ public function addSessionsInfos($postData) {
*/
public function updateSessionsInfos($postData) {
foreach ($postData as $key => $value) {

$keyExploded = explode("_", $key);

if(count($keyExploded) > 1 && isset($_SESSION['OCS']['SNMP']['multi_search'][$keyExploded[1]]) && !is_null($_SESSION['OCS']['SNMP']['multi_search'][$keyExploded[1]])) {
if ($keyExploded[2] == self::SESS_OPERATOR) {
$_SESSION['OCS']['SNMP']['multi_search'][$keyExploded[1]][$keyExploded[0]][self::SESS_OPERATOR] = $value;
} elseif($keyExploded[2] == self::SESS_FIELDS && $_SESSION['OCS']['SNMP']['multi_search'][$keyExploded[1]][$keyExploded[0]][self::SESS_OPERATOR] != 'ISNULL') {
$_SESSION['OCS']['SNMP']['multi_search'][$keyExploded[1]][$keyExploded[0]][self::SESS_VALUES] = $value;
} elseif($keyExploded[2] == self::SESS_COMPARATOR) {
$_SESSION['OCS']['SNMP']['multi_search'][$keyExploded[1]][$keyExploded[0]][self::SESS_COMPARATOR] = $value;
}
} elseif(count($keyExploded) >= 4) {
$keyImploded = "";

for($i = 1; $i < count($keyExploded)-1; $i++) $keyImploded .= $keyExploded[$i]."_";
$keyImploded = substr($keyImploded, 0, -1);

if(isset($_SESSION['OCS']['SNMP']['multi_search'][$keyImploded]) && !is_null($_SESSION['OCS']['SNMP']['multi_search'][$keyImploded])) {
if ($keyExploded[count($keyExploded)-1] == self::SESS_OPERATOR) {
$_SESSION['OCS']['SNMP']['multi_search'][$keyImploded][$keyExploded[0]][self::SESS_OPERATOR] = $value;
} elseif($keyExploded[count($keyExploded)-1] == self::SESS_COMPARATOR) {
$_SESSION['OCS']['SNMP']['multi_search'][$keyImploded][$keyExploded[0]][self::SESS_COMPARATOR] = $value;
} else {
$_SESSION['OCS']['SNMP']['multi_search'][$keyImploded][$keyExploded[0]][self::SESS_VALUES] = $value;
$keyExploded = explode("_", $key);

if (count($keyExploded) >= 3) {
// Retrieve random key
$randomKey = $keyExploded[0];
// Retrieve element type (operator | fields)
$elementType = end($keyExploded);

// Unset keys after saving
array_shift($keyExploded);
array_pop($keyExploded);

// Reconstruct tablename with what's left
$tableName = implode("_", $keyExploded);

if (
isset($_SESSION['OCS']['SNMP']['multi_search'][$tableName])
&& !is_null($_SESSION['OCS']['SNMP']['multi_search'][$tableName])
) {
if ($elementType == self::SESS_OPERATOR) {
$_SESSION['OCS']['SNMP']['multi_search'][$tableName][$randomKey][self::SESS_OPERATOR] = $value;
} elseif (
$elementType == self::SESS_FIELDS
&& $_SESSION['OCS']['SNMP']['multi_search'][$tableName][$randomKey][self::SESS_OPERATOR] != 'ISNULL'
) {
$_SESSION['OCS']['SNMP']['multi_search'][$tableName][$randomKey][self::SESS_VALUES] = $value;
} elseif ($elementType == self::SESS_COMPARATOR) {
$_SESSION['OCS']['SNMP']['multi_search'][$tableName][$randomKey][self::SESS_COMPARATOR] = $value;
}
}
}
}
}
}
}

Expand All @@ -190,25 +194,21 @@ public function updateSessionsInfos($postData) {
* @return void
*/
public function removeSessionsInfos($rowReference) {
$explodedRef = explode("_", $rowReference);
$explodedRef = explode("_", $rowReference);
// Retrieve random key
$randomKey = $explodedRef[0];

if(empty($explodedRef[2])){
unset($_SESSION['OCS']['SNMP']['multi_search'][$explodedRef[1]][$explodedRef[0]]);
}elseif(count($explodedRef) >= 3){
$implodedRef = "";
// Unset key after saving
array_shift($explodedRef);

for($i = 1; $i < count($explodedRef); $i++) $implodedRef .= $explodedRef[$i]."_";
$implodedRef = substr($implodedRef, 0, -1);
// Reconstruct tablename with what's left
$tableName = implode("_", $explodedRef);

unset($_SESSION['OCS']['SNMP']['multi_search'][$implodedRef][$explodedRef[0]]);

if(empty($_SESSION['OCS']['SNMP']['multi_search'][$implodedRef])){
unset($_SESSION['OCS']['SNMP']['multi_search'][$implodedRef]);
}
}
if(empty($_SESSION['OCS']['SNMP']['multi_search'][$explodedRef[1]])){
unset($_SESSION['OCS']['SNMP']['multi_search'][$explodedRef[1]]);
}
unset($_SESSION['OCS']['SNMP']['multi_search'][$tableName][$randomKey]);

if (empty($_SESSION['OCS']['SNMP']['multi_search'][$tableName])) {
unset($_SESSION['OCS']['SNMP']['multi_search'][$tableName]);
}
}

/**
Expand Down

0 comments on commit 7dfcb4d

Please sign in to comment.