grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026. -------------------------------------------------------------------------- */ /** @file * @brief */ if (!defined('GLPI_ROOT')) { die("Sorry. You can't access this file directly"); } /// Mandatory fields for ticket template class /// since version 0.83 class TicketTemplateMandatoryField extends CommonDBChild { // From CommonDBChild static public $itemtype = 'TicketTemplate'; static public $items_id = 'tickettemplates_id'; public $dohistory = true; static function getTypeName($nb=0) { return _n('Mandatory field', 'Mandatory fields', $nb); } /** * @since version 0.84 **/ function getForbiddenStandardMassiveAction() { $forbidden = parent::getForbiddenStandardMassiveAction(); $forbidden[] = 'update'; return $forbidden; } /** * @see CommonDBTM::getRawName() * * @since version 0.85 **/ function getRawName() { $tt = new TicketTemplate(); $fields = $tt->getAllowedFieldsNames(true); if (isset($fields[$this->fields["num"]])) { return $fields[$this->fields["num"]]; } return ''; } function getTabNameForItem(CommonGLPI $item, $withtemplate=0) { // can exists for template if (($item->getType() == 'TicketTemplate') && Session::haveRight("tickettemplate", READ)) { $nb = 0; if ($_SESSION['glpishow_count_on_tabs']) { $nb = countElementsInTable($this->getTable(), "`tickettemplates_id` = '".$item->getID()."'"); } return self::createTabEntry(self::getTypeName(Session::getPluralNumber()), $nb); } return ''; } static function displayTabContentForItem(CommonGLPI $item, $tabnum=1, $withtemplate=0) { self::showForTicketTemplate($item, $withtemplate); return true; } function post_purgeItem() { global $DB; parent::post_purgeItem(); $ticket = new Ticket(); $itemtype_id = $ticket->getSearchOptionIDByField('field', 'itemtype', 'glpi_tickets'); $items_id_id = $ticket->getSearchOptionIDByField('field', 'items_id', 'glpi_tickets'); // Try to delete itemtype -> delete items_id if ($this->fields['num'] == $itemtype_id) { $query = "SELECT `id` FROM `".$this->getTable()."` WHERE `".static::$items_id."` = '".$this->fields['tickettemplates_id']."' AND `num` = '$items_id_id'"; if ($result = $DB->query($query)) { if ($DB->numrows($result)) { $a = new self(); $a->delete(array('id' => $DB->result($result,0,0))); } } } } /** * Get mandatory fields for a template * * @since version 0.83 * * @param $ID integer the template ID * @param $withtypeandcategory boolean with type and category (true by default) * * @return an array of mandatory fields **/ function getMandatoryFields($ID, $withtypeandcategory=true) { global $DB; $sql = "SELECT * FROM `".$this->getTable()."` WHERE `".static::$items_id."` = '$ID' ORDER BY `id`"; $result = $DB->query($sql); $tt = new TicketTemplate(); $allowed_fields = $tt->getAllowedFields($withtypeandcategory); $fields = array(); while ($rule = $DB->fetch_assoc($result)) { if (isset($allowed_fields[$rule['num']])) { $fields[$allowed_fields[$rule['num']]] = $rule['num']; } } return $fields; } /** * Print the mandatory fields * * @since version 0.83 * * @param $tt Ticket Template * @param $withtemplate boolean Template or basic item (default '') * * @return Nothing (call to classes members) **/ static function showForTicketTemplate(TicketTemplate $tt, $withtemplate='') { global $DB; $ID = $tt->fields['id']; if (!$tt->getFromDB($ID) || !$tt->can($ID, READ)) { return false; } $canedit = $tt->canEdit($ID); $ttm = new self(); $used = $ttm->getMandatoryFields($ID); $fields = $tt->getAllowedFieldsNames(true); $simplified_fields = $tt->getSimplifiedInterfaceFields(); $both_interfaces = sprintf(__('%1$s + %2$s'), __('Simplified interface'), __ ('Standard interface')); $rand = mt_rand(); $query = "SELECT `glpi_tickettemplatemandatoryfields`.* FROM `glpi_tickettemplatemandatoryfields` WHERE (`tickettemplates_id` = '$ID')"; if ($result = $DB->query($query)) { $mandatoryfields = array(); $used = array(); if ($numrows = $DB->numrows($result)) { while ($data = $DB->fetch_assoc($result)) { $mandatoryfields[$data['id']] = $data; $used[$data['num']] = $data['num']; } } if ($canedit) { echo "
| "; echo self::getTypeName($DB->numrows($result)); echo " | |||
|---|---|---|---|
| "; $header_top .= Html::getCheckAllAsCheckbox('mass'.__CLASS__.$rand)." | "; $header_bottom .= ""; $header_bottom .= Html::getCheckAllAsCheckbox('mass'.__CLASS__.$rand)." | "; } $header_end .= "".__('Name')." | "; $header_end .= "".__("Profile's interface")." | "; $header_end .= "
| ".Html::getMassiveActionCheckBox(__CLASS__, $data["id"])." | "; } echo "".$fields[$data['num']]." | "; echo ""; if (in_array($data['num'], $simplified_fields)) { echo $both_interfaces; } else { _e('Standard interface'); } echo " | "; echo "|
| ".__('No item found')." | |||