Computer_Item::cloneItem PHP Method

cloneItem() static public method

Duplicate connected items to item from an item template to its clone
static public cloneItem ( $itemtype, $oldid, $newid )
$itemtype type of the item to clone
$oldid ID of the item to clone
$newid ID of the item cloned
    static function cloneItem($itemtype, $oldid, $newid)
    {
        global $DB;
        $query = "SELECT *\n                 FROM `glpi_computers_items`\n                 WHERE `itemtype` = '{$itemtype}'\n                       AND `items_id` = '" . $oldid . "'";
        $result = $DB->query($query);
        foreach ($DB->request($query) as $data) {
            $conn = new self();
            $conn->add(array('computers_id' => $data["computers_id"], 'itemtype' => $data["itemtype"], 'items_id' => $newid));
        }
    }

Usage Example

 function post_addItem()
 {
     global $DB, $CFG_GLPI;
     // Manage add from template
     if (isset($this->input["_oldID"])) {
         // ADD Devices
         Item_devices::cloneItem($this->getType(), $this->input["_oldID"], $this->fields['id']);
         // ADD Infocoms
         Infocom::cloneItem($this->getType(), $this->input["_oldID"], $this->fields['id']);
         // ADD Ports
         NetworkPort::cloneItem($this->getType(), $this->input["_oldID"], $this->fields['id']);
         // ADD Contract
         Contract_Item::cloneItem($this->getType(), $this->input["_oldID"], $this->fields['id']);
         // ADD Documents
         Document_Item::cloneItem($this->getType(), $this->input["_oldID"], $this->fields['id']);
         // ADD Computers
         Computer_Item::cloneItem($this->getType(), $this->input["_oldID"], $this->fields['id']);
     }
 }