NetworkPort::cloneItem PHP Method

cloneItem() static public method

Clone the current NetworkPort when the item is clone
static public cloneItem ( $itemtype, $old_items_id, $new_items_id )
$itemtype the type of the item that was clone
$old_items_id the id of the item that was clone
$new_items_id the id of the item after beeing cloned
    static function cloneItem($itemtype, $old_items_id, $new_items_id)
    {
        global $DB;
        $np = new self();
        // ADD Ports
        foreach ($DB->request('glpi_networkports', array('FIELDS' => 'id', 'WHERE' => "`items_id` = '{$old_items_id}'\n                                                AND `itemtype` = '{$itemtype}'")) as $data) {
            $np->getFromDB($data["id"]);
            $instantiation = $np->getInstantiation();
            unset($np->fields["id"]);
            $np->fields["items_id"] = $new_items_id;
            $portid = $np->addToDB();
            if ($instantiation !== false) {
                $input = array();
                $input["networkports_id"] = $portid;
                unset($instantiation->fields["id"]);
                unset($instantiation->fields["networkports_id"]);
                foreach ($instantiation->fields as $key => $val) {
                    if (!empty($val)) {
                        $input[$key] = $val;
                    }
                }
                $instantiation->add($input);
                unset($instantiation);
            }
            $npv = new NetworkPort_Vlan();
            foreach ($DB->request($npv->getTable(), array($npv::$items_id_1 => $data["id"])) as $vlan) {
                $input = array($npv::$items_id_1 => $portid, $npv::$items_id_2 => $vlan['vlans_id']);
                if (isset($vlan['tagged'])) {
                    $input['tagged'] = $vlan['tagged'];
                }
                $npv->add($input);
            }
        }
    }

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']);
     }
 }
All Usage Examples Of NetworkPort::cloneItem