Transfer::transferAffectedLicense PHP Method

transferAffectedLicense() public method

Transfer affected licenses to a computer
public transferAffectedLicense ( $ID )
$ID ID of the License
    function transferAffectedLicense($ID)
    {
        global $DB;
        $computer_softwarelicense = new Computer_SoftwareLicense();
        $license = new SoftwareLicense();
        if ($computer_softwarelicense->getFromDB($ID)) {
            if ($license->getFromDB($computer_softwarelicense->getField('softwarelicenses_id'))) {
                //// Update current : decrement number by 1 if valid
                if ($license->getField('number') > 1) {
                    $license->update(array('id' => $license->getID(), 'number' => $license->getField('number') - 1));
                } else {
                    if ($license->getField('number') == 1) {
                        // Drop license
                        $license->delete(array('id' => $license->getID()));
                    }
                }
                // Create new license : need to transfer softwre and versions before
                $input = array();
                $newsoftID = $this->copySingleSoftware($license->fields['softwares_id']);
                if ($newsoftID > 0) {
                    //// If license already exists : increment number by one
                    $query = "SELECT *\n                         FROM `glpi_softwarelicenses`\n                         WHERE `softwares_id` = '{$newsoftID}'\n                               AND `name` = '" . addslashes($license->fields['name']) . "'\n                               AND `serial` = '" . addslashes($license->fields['serial']) . "'";
                    $newlicID = -1;
                    if ($result = $DB->query($query)) {
                        //// If exists : increment number by 1
                        if ($DB->numrows($result) > 0) {
                            $data = $DB->fetch_assoc($result);
                            $newlicID = $data['id'];
                            $license->update(array('id' => $data['id'], 'number' => $data['number'] + 1));
                        } else {
                            //// If not exists : create with number = 1
                            $input = $license->fields;
                            foreach (array('softwareversions_id_buy', 'softwareversions_id_use') as $field) {
                                if ($license->fields[$field] > 0) {
                                    $newversID = $this->copySingleVersion($license->fields[$field]);
                                    if ($newversID > 0 && $newversID != $license->fields[$field]) {
                                        $input[$field] = $newversID;
                                    }
                                }
                            }
                            unset($input['id']);
                            $input['number'] = 1;
                            $input['entities_id'] = $this->to;
                            $input['softwares_id'] = $newsoftID;
                            $newlicID = $license->add(toolbox::addslashes_deep($input));
                        }
                    }
                    if ($newlicID > 0) {
                        $input = array('id' => $ID, 'softwarelicenses_id' => $newlicID);
                        $computer_softwarelicense->update($input);
                    }
                }
            }
        }
        // getFromDB
    }