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
}