當前位置: 首頁>>代碼示例>>PHP>>正文


PHP Item_Devices::getItemAffinities方法代碼示例

本文整理匯總了PHP中Item_Devices::getItemAffinities方法的典型用法代碼示例。如果您正苦於以下問題:PHP Item_Devices::getItemAffinities方法的具體用法?PHP Item_Devices::getItemAffinities怎麽用?PHP Item_Devices::getItemAffinities使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在Item_Devices的用法示例。


在下文中一共展示了Item_Devices::getItemAffinities方法的3個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的PHP代碼示例。

示例1: transferDevices

 /**
  * Transfer devices of an item
  *
  * @param $itemtype        original type of transfered item
  * @param $ID              ID of the item
  * @param $newID           new ID of the item
  **/
 function transferDevices($itemtype, $ID, $newID)
 {
     global $DB, $CFG_GLPI;
     // Only same case because no duplication of computers
     switch ($this->options['keep_device']) {
         // delete devices
         case 0:
             foreach (Item_Devices::getItemAffinities($itemtype) as $type) {
                 $table = getTableForItemType($type);
                 $query = "DELETE\n                         FROM `{$table}`\n                         WHERE `itemtype` = '{$itemtype}'\n                               AND `items_id` = '{$ID}'";
                 $result = $DB->query($query);
             }
             // Keep devices
         // Keep devices
         default:
             foreach (Item_Devices::getItemAffinities($itemtype) as $itemdevicetype) {
                 $itemdevicetable = getTableForItemType($itemdevicetype);
                 $devicetype = $itemdevicetype::getDeviceType();
                 $devicetable = getTableForItemType($devicetype);
                 $fk = getForeignKeyFieldForTable($devicetable);
                 $device = new $devicetype();
                 // Get contracts for the item
                 $query = "SELECT *\n                         FROM `{$itemdevicetable}`\n                         WHERE `items_id` = '{$ID}'\n                               AND `itemtype` = '{$itemtype}'\n                               AND `{$fk}` NOT IN " . $this->item_recurs[$devicetype];
                 if ($result = $DB->query($query)) {
                     if ($DB->numrows($result) > 0) {
                         // Foreach get item
                         while ($data = $DB->fetch_assoc($result)) {
                             $item_ID = $data[$fk];
                             $newdeviceID = -1;
                             // is already transfer ?
                             if (isset($this->already_transfer[$devicetype][$item_ID])) {
                                 $newdeviceID = $this->already_transfer[$devicetype][$item_ID];
                             } else {
                                 // No
                                 // Can be transfer without copy ? = all linked items need to be transfer (so not copy)
                                 $canbetransfer = true;
                                 $query = "SELECT DISTINCT `itemtype`\n                                     FROM `{$itemdevicetable}`\n                                     WHERE `{$fk}` = '{$item_ID}'";
                                 if ($result_type = $DB->query($query)) {
                                     if ($DB->numrows($result_type) > 0) {
                                         while (($data_type = $DB->fetch_assoc($result_type)) && $canbetransfer) {
                                             $dtype = $data_type['itemtype'];
                                             if (isset($this->item_search[$dtype])) {
                                                 // No items to transfer -> exists links
                                                 $query_search = "SELECT COUNT(*) AS cpt\n                                                        FROM `{$itemdevicetable}`\n                                                        WHERE `{$fk}` = '{$item_ID}'\n                                                              AND `itemtype` = '{$dtype}'\n                                                              AND `items_id`\n                                                                  NOT IN " . $this->item_search[$dtype];
                                                 $result_search = $DB->query($query_search);
                                                 if ($DB->result($result_search, 0, 'cpt') > 0) {
                                                     $canbetransfer = false;
                                                 }
                                             } else {
                                                 $canbetransfer = false;
                                             }
                                         }
                                     }
                                 }
                                 // Yes : transfer
                                 if ($canbetransfer) {
                                     $this->transferItem($devicetype, $item_ID, $item_ID);
                                     $newdeviceID = $item_ID;
                                 } else {
                                     $device->getFromDB($item_ID);
                                     // No : search device
                                     $field = "name";
                                     if (!FieldExists($devicetable, "name")) {
                                         $field = "designation";
                                     }
                                     $query = "SELECT *\n                                        FROM `{$devicetable}`\n                                        WHERE `entities_id` = '" . $this->to . "'\n                                              AND `" . $field . "` = '" . addslashes($device->fields[$field]) . "'";
                                     if ($result_search = $DB->query($query)) {
                                         if ($DB->numrows($result_search) > 0) {
                                             $newdeviceID = $DB->result($result_search, 0, 'id');
                                             $this->addToAlreadyTransfer($devicetype, $item_ID, $newdeviceID);
                                         }
                                     }
                                     // found : use it
                                     // not found : copy contract
                                     if ($newdeviceID < 0) {
                                         // 1 - create new item
                                         unset($device->fields['id']);
                                         $input = $device->fields;
                                         // Fix for fields with NULL in DB
                                         foreach ($input as $key => $value) {
                                             if ($value == '') {
                                                 unset($input[$key]);
                                             }
                                         }
                                         $input['entities_id'] = $this->to;
                                         unset($device->fields);
                                         $newdeviceID = $device->add(Toolbox::addslashes_deep($input));
                                         // 2 - transfer as copy
                                         $this->transferItem($devicetype, $item_ID, $newdeviceID);
                                     }
                                 }
                             }
                             // Update links
//.........這裏部分代碼省略.........
開發者ID:jose-martins,項目名稱:glpi,代碼行數:101,代碼來源:transfer.class.php

示例2: getItem

 /**
  * Return the instance fields of itemtype identified by id
  *
  * @param $itemtype    string  itemtype (class) of object
  * @param $id          integer identifier of object
  * @param $params      array   with theses options :
  *    - 'expand_dropdowns': Show dropdown's names instead of id. default: false. Optionnal
  *    - 'get_hateoas':      Show relation of current item in a links attribute. default: true. Optionnal
  *    - 'get_sha1':         Get a sha1 signature instead of the full answer. default: false. Optionnal
  *    - 'with_components':  Only for [Computer, NetworkEquipment, Peripheral, Phone, Printer], Optionnal.
  *    - 'with_disks':       Only for Computer, retrieve the associated filesystems. Optionnal.
  *    - 'with_softwares':   Only for Computer, retrieve the associated softwares installations. Optionnal.
  *    - 'with_connections': Only for Computer, retrieve the associated direct connections (like peripherals and printers) .Optionnal.
  *    - 'with_networkports':Retrieve all network connections and advanced network informations. Optionnal.
  *    - 'with_infocoms':    Retrieve financial and administrative informations. Optionnal.
  *    - 'with_contracts':   Retrieve associated contracts. Optionnal.
  *    - 'with_documents':   Retrieve associated external documents. Optionnal.
  *    - 'with_tickets':     Retrieve associated itil tickets. Optionnal.
  *    - 'with_problems':    Retrieve associated itil problems. Optionnal.
  *    - 'with_changes':     Retrieve associated itil changes. Optionnal.
  *    - 'with_notes':       Retrieve Notes (if exists, not all itemtypes have notes). Optionnal.
  *    - 'with_logs':        Retrieve historical. Optionnal.
  *
  * @return     array    fields of found object
  **/
 protected function getItem($itemtype, $id, $params = array())
 {
     global $CFG_GLPI, $DB;
     $this->initEndpoint();
     // default params
     $default = array('expand_dropdowns' => false, 'get_hateoas' => true, 'get_sha1' => false, 'with_components' => false, 'with_disks' => false, 'with_softwares' => false, 'with_connections' => false, 'with_networkports' => false, 'with_infocoms' => false, 'with_contracts' => false, 'with_documents' => false, 'with_tickets' => false, 'with_problems' => false, 'with_changes' => false, 'with_notes' => false, 'with_logs' => false);
     $params = array_merge($default, $params);
     $item = new $itemtype();
     if (!$item->getFromDB($id)) {
         return $this->messageNotfoundError();
     }
     if (!$item->can($id, READ)) {
         return $this->messageRightError();
     }
     $fields = $item->fields;
     // avoid disclosure of critical fields
     $item::unsetUndisclosedFields($fields);
     // retrieve devices
     if (isset($params['with_devices']) && $params['with_devices'] && in_array($itemtype, Item_Devices::getConcernedItems())) {
         $all_devices = array();
         foreach (Item_Devices::getItemAffinities($item->getType()) as $device_type) {
             $found_devices = getAllDatasFromTable($device_type::getTable(), "`items_id` = '" . $item->getID() . "'\n                                                   AND `itemtype` = '" . $item->getType() . "'\n                                                   AND `is_deleted` = '0'", true);
             foreach ($found_devices as $devices_id => &$device) {
                 unset($device['items_id']);
                 unset($device['itemtype']);
                 unset($device['is_deleted']);
             }
             if (!empty($found_devices)) {
                 $all_devices[$device_type] = $found_devices;
             }
         }
         $fields['_devices'] = $all_devices;
     }
     // retrieve computer disks
     if (isset($params['with_disks']) && $params['with_disks'] && $itemtype == "Computer") {
         // build query to retrive filesystems
         $query = "SELECT `glpi_filesystems`.`name` AS fsname,\n                          `glpi_computerdisks`.*\n                   FROM `glpi_computerdisks`\n                   LEFT JOIN `glpi_filesystems`\n                             ON (`glpi_computerdisks`.`filesystems_id` = `glpi_filesystems`.`id`)\n                   WHERE `computers_id` = '{$id}'\n                         AND `is_deleted` = '0'";
         $fields['_disks'] = array();
         if ($result = $DB->query($query)) {
             while ($data = $DB->fetch_assoc($result)) {
                 unset($data['computers_id']);
                 unset($data['is_deleted']);
                 $fields['_disks'][] = array('name' => $data);
             }
         }
     }
     // retrieve computer softwares
     if (isset($params['with_softwares']) && $params['with_softwares'] && $itemtype == "Computer") {
         $fields['_softwares'] = array();
         if (!Software::canView()) {
             $fields['_softwares'] = self::arrayRightError();
         } else {
             $query = "SELECT `glpi_softwares`.`softwarecategories_id`,\n                             `glpi_softwares`.`id` AS softwares_id,\n                             `glpi_softwareversions`.`id` AS softwareversions_id,\n                             `glpi_computers_softwareversions`.`is_dynamic`,\n                             `glpi_softwareversions`.`states_id`,\n                             `glpi_softwares`.`is_valid`\n                      FROM `glpi_computers_softwareversions`\n                      LEFT JOIN `glpi_softwareversions`\n                           ON (`glpi_computers_softwareversions`.`softwareversions_id`\n                                 = `glpi_softwareversions`.`id`)\n                      LEFT JOIN `glpi_softwares`\n                           ON (`glpi_softwareversions`.`softwares_id` = `glpi_softwares`.`id`)\n                      WHERE `glpi_computers_softwareversions`.`computers_id` = '{$id}'\n                            AND `glpi_computers_softwareversions`.`is_deleted` = '0'\n                      ORDER BY `glpi_softwares`.`name`, `glpi_softwareversions`.`name`";
             if ($result = $DB->query($query)) {
                 while ($data = $DB->fetch_assoc($result)) {
                     $fields['_softwares'][] = $data;
                 }
             }
         }
     }
     // retrieve item connections
     if (isset($params['with_connections']) && $params['with_connections'] && $itemtype == "Computer") {
         $fields['_connections'] = array();
         foreach ($CFG_GLPI["directconnect_types"] as $connect_type) {
             $connect_item = new $connect_type();
             if ($connect_item->canView()) {
                 $query = "SELECT `glpi_computers_items`.`id` AS assoc_id,\n                         `glpi_computers_items`.`computers_id` AS assoc_computers_id,\n                         `glpi_computers_items`.`itemtype` AS assoc_itemtype,\n                         `glpi_computers_items`.`items_id` AS assoc_items_id,\n                         `glpi_computers_items`.`is_dynamic` AS assoc_is_dynamic,\n                         " . getTableForItemType($connect_type) . ".*\n                         FROM `glpi_computers_items`\n                         LEFT JOIN `" . getTableForItemType($connect_type) . "`\n                           ON (`" . getTableForItemType($connect_type) . "`.`id`\n                                 = `glpi_computers_items`.`items_id`)\n                         WHERE `computers_id` = '{$id}'\n                               AND `itemtype` = '" . $connect_type . "'\n                               AND `glpi_computers_items`.`is_deleted` = '0'";
                 if ($result = $DB->query($query)) {
                     while ($data = $DB->fetch_assoc($result)) {
                         $fields['_connections'][$connect_type][] = $data;
                     }
                 }
             }
         }
     }
//.........這裏部分代碼省略.........
開發者ID:glpi-project,項目名稱:glpi,代碼行數:101,代碼來源:api.class.php

示例3: getItem

 /**
  * Return the instance fields of itemtype identified by id
  *
  * @since version 9.1
  *
  * @param      string   $itemtype  itemtype (class) of object
  * @param      integer  $id        identifier of object
  * @param      array   $params   array with theses options :
  *    - 'expand_dropdowns' : show dropdown's names instead of id. default: false. Optionnal
  *    - 'get_hateoas' :      show relation of current item in a links attribute. default: true. Optionnal
  *    - 'with_components' :  Only for [Computer, NetworkEquipment, Peripheral, Phone, Printer], Optionnal.
  *    - 'with_disks' :       Only for Computer, retrieve the associated filesystems. Optionnal.
  *    - 'with_softwares' :   Only for Computer, retrieve the associated softwares installations. Optionnal.
  *    - 'with_connections' : Only for Computer, retrieve the associated direct connections (like peripherals and printers) .Optionnal.
  *    - 'with_networkports' :Retrieve all network connections and advanced network informations. Optionnal.
  *    - 'with_infocoms' :    Retrieve financial and administrative informations. Optionnal.
  *    - 'with_contracts' :   Retrieve associated contracts. Optionnal.
  *    - 'with_documents' :   Retrieve associated external documents. Optionnal.
  *    - 'with_tickets' :     Retrieve associated itil tickets. Optionnal.
  *    - 'with_problems' :    Retrieve associated itil problems. Optionnal.
  *    - 'with_changes' :     Retrieve associated itil changes. Optionnal.
  *    - 'with_notes' :       Retrieve Notes (if exists, not all itemtypes have notes). Optionnal.
  *    - 'with_logs' :        Retrieve historical. Optionnal.
  *
  * @return     array    fields of found object
  */
 protected function getItem($itemtype, $id, $params = array())
 {
     global $CFG_GLPI, $DB;
     $this->initEndpoint();
     // default params
     $default = array('expand_dropdowns' => false, 'get_hateoas' => true, 'with_components' => false, 'with_disks' => false, 'with_softwares' => false, 'with_connections' => false, 'with_networkports' => false, 'with_infocoms' => false, 'with_contracts' => false, 'with_documents' => false, 'with_tickets' => false, 'with_problems' => false, 'with_changes' => false, 'with_notes' => false, 'with_logs' => false);
     $params = array_merge($default, $params);
     $item = new $itemtype();
     if (!$item->getFromDB($id)) {
         return $this->messageNotfoundError();
     }
     if (!$item->can($id, READ)) {
         return $this->messageRightError();
     }
     $fields = $item->fields;
     // retrieve devices
     if (isset($params['with_devices']) && $params['with_devices'] && in_array($itemtype, Item_Devices::getConcernedItems())) {
         $all_devices = array();
         foreach (Item_Devices::getItemAffinities($item->getType()) as $device_type) {
             $found_devices = getAllDatasFromTable($device_type::getTable(), "`items_id` = '" . $item->getID() . "'\n                                                   AND `itemtype` = '" . $item->getType() . "'\n                                                   AND `is_deleted` = '0'", true);
             foreach ($found_devices as $devices_id => &$device) {
                 unset($device['items_id']);
                 unset($device['itemtype']);
                 unset($device['is_deleted']);
             }
             if (!empty($found_devices)) {
                 $all_devices[$device_type] = $found_devices;
             }
         }
         $fields['_devices'] = $all_devices;
     }
     // retrieve computer disks
     if (isset($params['with_disks']) && $params['with_disks'] && $itemtype == "Computer") {
         // build query to retrive filesystems
         $query = "SELECT `glpi_filesystems`.`name` AS fsname,\n                          `glpi_computerdisks`.*\n                   FROM `glpi_computerdisks`\n                   LEFT JOIN `glpi_filesystems`\n                             ON (`glpi_computerdisks`.`filesystems_id` = `glpi_filesystems`.`id`)\n                   WHERE `computers_id` = '{$id}'\n                         AND `is_deleted` = '0'";
         if ($result = $DB->query($query)) {
             while ($data = $DB->fetch_assoc($result)) {
                 unset($data['computers_id']);
                 unset($data['is_deleted']);
                 $fields['_disks'][] = array('name' => $data);
             }
         }
     }
     // retrieve computer softwares
     if (isset($params['with_softwares']) && $params['with_softwares'] && $itemtype == "Computer") {
         $fields['_softwares'] = array();
         if (!Software::canView()) {
             $fields['_softwares'] = self::arrayRightError();
         } else {
             $query = "SELECT `glpi_softwares`.`softwarecategories_id`,\n                             `glpi_softwares`.`id` AS softwares_id,\n                             `glpi_softwareversions`.`id` AS softwareversions_id,\n                             `glpi_computers_softwareversions`.`is_dynamic`,\n                             `glpi_softwareversions`.`states_id`,\n                             `glpi_softwares`.`is_valid`\n                      FROM `glpi_computers_softwareversions`\n                      LEFT JOIN `glpi_softwareversions`\n                           ON (`glpi_computers_softwareversions`.`softwareversions_id`\n                                 = `glpi_softwareversions`.`id`)\n                      LEFT JOIN `glpi_softwares`\n                           ON (`glpi_softwareversions`.`softwares_id` = `glpi_softwares`.`id`)\n                      WHERE `glpi_computers_softwareversions`.`computers_id` = '{$id}'\n                            AND `glpi_computers_softwareversions`.`is_deleted` = '0'\n                      ORDER BY `glpi_softwares`.`name`, `glpi_softwareversions`.`name`";
             if ($result = $DB->query($query)) {
                 while ($data = $DB->fetch_assoc($result)) {
                     $fields['_softwares'][] = $data;
                 }
             }
         }
     }
     // retrieve item connections
     if (isset($params['with_connections']) && $params['with_connections'] && $itemtype == "Computer") {
         $fields['_connections'] = array();
         foreach ($CFG_GLPI["directconnect_types"] as $connect_type) {
             $connect_item = new $connect_type();
             if ($connect_item->canView()) {
                 $query = "SELECT `glpi_computers_items`.`id` AS assoc_id,\n                         `glpi_computers_items`.`computers_id` AS assoc_computers_id,\n                         `glpi_computers_items`.`itemtype` AS assoc_itemtype,\n                         `glpi_computers_items`.`items_id` AS assoc_items_id,\n                         `glpi_computers_items`.`is_dynamic` AS assoc_is_dynamic,\n                         " . getTableForItemType($connect_type) . ".*\n                         FROM `glpi_computers_items`\n                         LEFT JOIN `" . getTableForItemType($connect_type) . "`\n                           ON (`" . getTableForItemType($connect_type) . "`.`id`\n                                 = `glpi_computers_items`.`items_id`)\n                         WHERE `computers_id` = '{$id}'\n                               AND `itemtype` = '" . $connect_type . "'\n                               AND `glpi_computers_items`.`is_deleted` = '0'";
                 if ($result = $DB->query($query)) {
                     while ($data = $DB->fetch_assoc($result)) {
                         $fields['_connections'][$connect_type][] = $data;
                     }
                 }
             }
         }
     }
     // retrieve item networkports
     if (isset($params['with_networkports']) && $params['with_networkports']) {
//.........這裏部分代碼省略.........
開發者ID:stweil,項目名稱:glpi,代碼行數:101,代碼來源:api.class.php


注:本文中的Item_Devices::getItemAffinities方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。