Example #1
0
 /**
  * Search IP Addresses
  *
  * @param $IPaddress the address to search
  *
  * @return (array) each value of the array (corresponding to one IPAddress) is an array of the
  *                 items from the master item to the IPAddress
  **/
 static function getItemsByIPAddress($IPaddress)
 {
     global $DB;
     // We must resolv binary address :
     //    1°) we don't know if the IP address is valid
     //    2°) we don't know its version
     //    3°) binary request is more efficient than textual one (polymorphism of IPv6 addresses)
     $address = new self();
     if (!$address->setAddressFromString($IPaddress)) {
         return array();
     }
     $query = "SELECT `gip`.`id`\n                FROM `glpi_ipaddresses` as gip\n                WHERE `gip`.`version` = '" . $address->version . "'\n";
     $startIndex = $address->version == 4 ? 3 : 1;
     $binaryIP = $address->getBinary();
     for ($i = $startIndex; $i < 4; ++$i) {
         $query .= "AND `gip`.`binary_{$i}` = '" . $binaryIP[$i] . "'";
     }
     $addressesWithItems = array();
     foreach ($DB->request($query) as $result) {
         if ($address->getFromDB($result['id'])) {
             $addressesWithItems[] = array_merge(array_reverse($address->recursivelyGetItems()), array(clone $address));
         }
     }
     return $addressesWithItems;
 }