. * --------------------------------------------------------------------- */ if (!defined('GLPI_ROOT')) { die("Sorry. You can't access this file directly"); } /** * NotificationTargetContract Class **/ class NotificationTargetContract extends NotificationTarget { function getEvents() { return ['end' => __('End of contract'), 'notice' => __('Notice'), 'periodicity' => __('Periodicity'), 'periodicitynotice' => __('Periodicity notice')]; } function addDataForTemplate($event, $options = []) { $this->data['##contract.entity##'] = Dropdown::getDropdownName('glpi_entities', $options['entities_id']); $events = $this->getEvents(); $this->data['##contract.action##'] = sprintf(__('%1$s - %2$s'), __('Contracts alarm'), $events[$event]); foreach ($options['items'] as $id => $contract) { $tmp = []; $tmp['##contract.name##'] = $contract['name']; $tmp['##contract.number##'] = $contract['num']; if ($contract['contracttypes_id']) { $tmp['##contract.type##'] = Dropdown::getDropdownName('glpi_contracttypes', $contract['contracttypes_id']); } else { $tmp['##contract.type##'] = ""; } if ($contract['states_id']) { $tmp['##contract.states##'] = Dropdown::getDropdownName('glpi_states', $contract['states_id']); } else { $tmp['##contract.states##'] = ""; } switch ($event) { case 'end': $tmp['##contract.time##'] = Infocom::getWarrantyExpir($contract["begin_date"], $contract["duration"]); break; case 'notice': $tmp['##contract.time##'] = Infocom::getWarrantyExpir($contract["begin_date"], $contract["duration"], $contract["notice"]); break; case 'periodicity': case 'periodicitynotice': if (isset($contract["alert_date"])) { $tmp['##contract.time##'] = Html::convDate($contract["alert_date"]); } else if (isset($options['_debug'])) { $tmp['##contract.time##'] = Html::convDate($_SESSION['glpi_currenttime']); } break; } $tmp['##contract.url##'] = $this->formatURL($options['additionnaloption']['usertype'], "Contract_".$id); $tmp['##contract.items.number##'] = 0; $tmp['##contract.items##'] = ''; if (isset($contract['items']) && count($contract['items'])) { $toadd = []; foreach ($contract['items'] as $itemtype => $item) { if ($type = getItemForItemtype($itemtype)) { $typename = $type->getTypeName(); foreach ($item as $item_data) { $toadd[] = sprintf(__('%1$s - %2$s'), $typename, $item_data['name']); $tmp['##contract.items.number##']++; } } } if (count($toadd)) { $tmp["##contract.items##"] = implode(', ', $toadd); } } $this->data['contracts'][] = $tmp; } switch ($event) { case 'end': $this->data['##lang.contract.time##'] = __('Contract expired since the'); break; case 'notice': $this->data['##lang.contract.time##'] = __('Contract with notice since the'); break; case 'periodicity': $this->data['##lang.contract.time##'] = __('Contract reached the end of a period since the'); break; case 'periodicitynotice': $this->data['##lang.contract.time##'] = __('Contract with notice for the current period since the'); break; } $this->getTags(); foreach ($this->tag_descriptions[NotificationTarget::TAG_LANGUAGE] as $tag => $values) { if (!isset($this->data[$tag])) { $this->data[$tag] = $values['label']; } } } function getTags() { $tags = ['contract.action' => _n('Event', 'Events', 1), 'contract.name' => __('Name'), 'contract.number' => _x('phone', 'Number'), 'contract.items.number' => _x('quantity', 'Number of items'), 'contract.items' => __('Device list'), 'contract.type' => _n('Type', 'Types', 1), 'contract.entity' => Entity::getTypeName(1), 'contract.states' => __('Status'), 'contract.time' => sprintf(__('%1$s / %2$s'), __('Contract expired since the'), __('Contract with notice since the'))]; foreach ($tags as $tag => $label) { $this->addTagToList(['tag' => $tag, 'label' => $label, 'value' => true]); } //Tags without lang $tags = ['contract.url' => sprintf(__('%1$s: %2$s'), _n('Contract', 'Contracts', 1), __('URL'))]; foreach ($tags as $tag => $label) { $this->addTagToList(['tag' => $tag, 'label' => $label, 'value' => true, 'lang' => false]); } //Foreach global tags $tags = ['contracts' => _n('Contract', 'Contracts', Session::getPluralNumber())]; foreach ($tags as $tag => $label) { $this->addTagToList(['tag' => $tag, 'label' => $label, 'value' => false, 'foreach' => true]); } asort($this->tag_descriptions); } }