NotificationTargetCommonITILObject::getDatasForObject PHP Method

getDatasForObject() public method

public getDatasForObject ( CommonDBTM $item, array $options, $simple = false )
$item CommonDBTM CommonDBTM object
$options array array
$simple (false by default)
    function getDatasForObject(CommonDBTM $item, array $options, $simple = false)
    {
        global $CFG_GLPI, $DB;
        $objettype = strtolower($item->getType());
        $datas["##{$objettype}.title##"] = $item->getField('name');
        $datas["##{$objettype}.content##"] = $item->getField('content');
        $datas["##{$objettype}.description##"] = $item->getField('content');
        $datas["##{$objettype}.id##"] = sprintf("%07d", $item->getField("id"));
        if ($_SESSION['glpiticket_timeline'] == 1) {
            $datas["##{$objettype}.url##"] = $this->formatURL($options['additionnaloption']['usertype'], $objettype . "_" . $item->getField("id") . "_" . $item->getType() . '$1');
        } else {
            $datas["##{$objettype}.url##"] = $this->formatURL($options['additionnaloption']['usertype'], $objettype . "_" . $item->getField("id"));
        }
        $tab = '$2';
        if ($_SESSION['glpiticket_timeline'] == 1) {
            $tab = '$1';
        }
        $datas["##{$objettype}.urlapprove##"] = $this->formatURL($options['additionnaloption']['usertype'], $objettype . "_" . $item->getField("id") . "_" . $item->getType() . $tab);
        $entity = new Entity();
        if ($entity->getFromDB($this->getEntity())) {
            $datas["##{$objettype}.entity##"] = $entity->getField('completename');
            $datas["##{$objettype}.shortentity##"] = $entity->getField('name');
        }
        $datas["##{$objettype}.storestatus##"] = $item->getField('status');
        $datas["##{$objettype}.status##"] = $item->getStatus($item->getField('status'));
        $datas["##{$objettype}.urgency##"] = $item->getUrgencyName($item->getField('urgency'));
        $datas["##{$objettype}.impact##"] = $item->getImpactName($item->getField('impact'));
        $datas["##{$objettype}.priority##"] = $item->getPriorityName($item->getField('priority'));
        $datas["##{$objettype}.time##"] = $item->getActionTime($item->getField('actiontime'));
        $datas["##{$objettype}.creationdate##"] = Html::convDateTime($item->getField('date'));
        $datas["##{$objettype}.closedate##"] = Html::convDateTime($item->getField('closedate'));
        $datas["##{$objettype}.solvedate##"] = Html::convDateTime($item->getField('solvedate'));
        $datas["##{$objettype}.duedate##"] = Html::convDateTime($item->getField('due_date'));
        $datas["##{$objettype}.category##"] = '';
        if ($item->getField('itilcategories_id')) {
            $datas["##{$objettype}.category##"] = Dropdown::getDropdownName('glpi_itilcategories', $item->getField('itilcategories_id'));
        }
        $datas["##{$objettype}.authors##"] = '';
        $datas['authors'] = array();
        if ($item->countUsers(CommonITILActor::REQUESTER)) {
            $users = array();
            foreach ($item->getUsers(CommonITILActor::REQUESTER) as $tmpusr) {
                $uid = $tmpusr['users_id'];
                $user_tmp = new User();
                if ($uid && $user_tmp->getFromDB($uid)) {
                    $users[] = $user_tmp->getName();
                    $tmp = array();
                    $tmp['##author.id##'] = $uid;
                    $tmp['##author.name##'] = $user_tmp->getName();
                    if ($user_tmp->getField('locations_id')) {
                        $tmp['##author.location##'] = Dropdown::getDropdownName('glpi_locations', $user_tmp->getField('locations_id'));
                    } else {
                        $tmp['##author.location##'] = '';
                    }
                    if ($user_tmp->getField('usertitles_id')) {
                        $tmp['##author.title##'] = Dropdown::getDropdownName('glpi_usertitles', $user_tmp->getField('usertitles_id'));
                    } else {
                        $tmp['##author.title##'] = '';
                    }
                    if ($user_tmp->getField('usercategories_id')) {
                        $tmp['##author.category##'] = Dropdown::getDropdownName('glpi_usercategories', $user_tmp->getField('usercategories_id'));
                    } else {
                        $tmp['##author.category##'] = '';
                    }
                    $tmp['##author.email##'] = $user_tmp->getDefaultEmail();
                    $tmp['##author.mobile##'] = $user_tmp->getField('mobile');
                    $tmp['##author.phone##'] = $user_tmp->getField('phone');
                    $tmp['##author.phone2##'] = $user_tmp->getField('phone2');
                    $datas['authors'][] = $tmp;
                } else {
                    // Anonymous users only in xxx.authors, not in authors
                    $users[] = $tmpusr['alternative_email'];
                }
            }
            $datas["##{$objettype}.authors##"] = implode(', ', $users);
        }
        $datas["##{$objettype}.openbyuser##"] = '';
        if ($item->getField('users_id_recipient')) {
            $user_tmp = new User();
            $user_tmp->getFromDB($item->getField('users_id_recipient'));
            $datas["##{$objettype}.openbyuser##"] = $user_tmp->getName();
        }
        $datas["##{$objettype}.lastupdater##"] = '';
        if ($item->getField('users_id_lastupdater')) {
            $user_tmp = new User();
            $user_tmp->getFromDB($item->getField('users_id_lastupdater'));
            $datas["##{$objettype}.lastupdater##"] = $user_tmp->getName();
        }
        $datas["##{$objettype}.assigntousers##"] = '';
        if ($item->countUsers(CommonITILActor::ASSIGN)) {
            $users = array();
            foreach ($item->getUsers(CommonITILActor::ASSIGN) as $tmp) {
                $uid = $tmp['users_id'];
                $user_tmp = new User();
                if ($user_tmp->getFromDB($uid)) {
                    $users[$uid] = $user_tmp->getName();
                }
            }
            $datas["##{$objettype}.assigntousers##"] = implode(', ', $users);
        }
        $datas["##{$objettype}.assigntosupplier##"] = '';
        if ($item->countSuppliers(CommonITILActor::ASSIGN)) {
            $suppliers = array();
            foreach ($item->getSuppliers(CommonITILActor::ASSIGN) as $tmp) {
                $uid = $tmp['suppliers_id'];
                $supplier_tmp = new Supplier();
                if ($supplier_tmp->getFromDB($uid)) {
                    $suppliers[$uid] = $supplier_tmp->getName();
                }
            }
            $datas["##{$objettype}.assigntosupplier##"] = implode(', ', $suppliers);
        }
        $datas["##{$objettype}.groups##"] = '';
        if ($item->countGroups(CommonITILActor::REQUESTER)) {
            $groups = array();
            foreach ($item->getGroups(CommonITILActor::REQUESTER) as $tmp) {
                $gid = $tmp['groups_id'];
                $groups[$gid] = Dropdown::getDropdownName('glpi_groups', $gid);
            }
            $datas["##{$objettype}.groups##"] = implode(', ', $groups);
        }
        $datas["##{$objettype}.observergroups##"] = '';
        if ($item->countGroups(CommonITILActor::OBSERVER)) {
            $groups = array();
            foreach ($item->getGroups(CommonITILActor::OBSERVER) as $tmp) {
                $gid = $tmp['groups_id'];
                $groups[$gid] = Dropdown::getDropdownName('glpi_groups', $gid);
            }
            $datas["##{$objettype}.observergroups##"] = implode(', ', $groups);
        }
        $datas["##{$objettype}.observerusers##"] = '';
        if ($item->countUsers(CommonITILActor::OBSERVER)) {
            $users = array();
            foreach ($item->getUsers(CommonITILActor::OBSERVER) as $tmp) {
                $uid = $tmp['users_id'];
                $user_tmp = new User();
                if ($uid && $user_tmp->getFromDB($uid)) {
                    $users[] = $user_tmp->getName();
                } else {
                    $users[] = $tmp['alternative_email'];
                }
            }
            $datas["##{$objettype}.observerusers##"] = implode(', ', $users);
        }
        $datas["##{$objettype}.assigntogroups##"] = '';
        if ($item->countGroups(CommonITILActor::ASSIGN)) {
            $groups = array();
            foreach ($item->getGroups(CommonITILActor::ASSIGN) as $tmp) {
                $gid = $tmp['groups_id'];
                $groups[$gid] = Dropdown::getDropdownName('glpi_groups', $gid);
            }
            $datas["##{$objettype}.assigntogroups##"] = implode(', ', $groups);
        }
        $datas["##{$objettype}.solution.type##"] = '';
        if ($item->getField('solutiontypes_id')) {
            $datas["##{$objettype}.solution.type##"] = Dropdown::getDropdownName('glpi_solutiontypes', $item->getField('solutiontypes_id'));
        }
        $datas["##{$objettype}.solution.description##"] = Toolbox::unclean_cross_side_scripting_deep($item->getField('solution'));
        // Complex mode
        if (!$simple) {
            $datas['log'] = array();
            // Use list_limit_max or load the full history ?
            foreach (Log::getHistoryData($item, 0, $CFG_GLPI['list_limit_max']) as $data) {
                $tmp = array();
                $tmp["##{$objettype}.log.date##"] = $data['date_mod'];
                $tmp["##{$objettype}.log.user##"] = $data['user_name'];
                $tmp["##{$objettype}.log.field##"] = $data['field'];
                $tmp["##{$objettype}.log.content##"] = $data['change'];
                $datas['log'][] = $tmp;
            }
            $datas["##{$objettype}.numberoflogs##"] = count($datas['log']);
            // Get unresolved items
            $restrict = "`" . $item->getTable() . "`.`status`\n                        NOT IN ('" . implode("', '", array_merge($item->getSolvedStatusArray(), $item->getClosedStatusArray())) . "'\n                               )";
            if ($item->maybeDeleted()) {
                $restrict .= " AND `" . $item->getTable() . "`.`is_deleted` = '0' ";
            }
            $datas["##{$objettype}.numberofunresolved##"] = countElementsInTableForEntity($item->getTable(), $this->getEntity(), $restrict);
            // Document
            $query = "SELECT `glpi_documents`.*\n                   FROM `glpi_documents`\n                   LEFT JOIN `glpi_documents_items`\n                     ON (`glpi_documents`.`id` = `glpi_documents_items`.`documents_id`)\n                   WHERE `glpi_documents_items`.`itemtype` =  '" . $item->getType() . "'\n                         AND `glpi_documents_items`.`items_id` = '" . $item->getField('id') . "'";
            $datas["documents"] = array();
            $addtodownloadurl = '';
            if ($item->getType() == 'Ticket') {
                $addtodownloadurl = "%2526tickets_id=" . $item->fields['id'];
            }
            if ($result = $DB->query($query)) {
                while ($data = $DB->fetch_assoc($result)) {
                    $tmp = array();
                    $tmp['##document.id##'] = $data['id'];
                    $tmp['##document.name##'] = $data['name'];
                    $tmp['##document.weblink##'] = $data['link'];
                    $tmp['##document.url##'] = $this->formatURL($options['additionnaloption']['usertype'], "document_" . $data['id']);
                    $downloadurl = "/front/document.send.php?docid=" . $data['id'];
                    $tmp['##document.downloadurl##'] = $this->formatURL($options['additionnaloption']['usertype'], $downloadurl . $addtodownloadurl);
                    $tmp['##document.heading##'] = Dropdown::getDropdownName('glpi_documentcategories', $data['documentcategories_id']);
                    $tmp['##document.filename##'] = $data['filename'];
                    $datas['documents'][] = $tmp;
                }
            }
            $datas["##{$objettype}.urldocument##"] = $this->formatURL($options['additionnaloption']['usertype'], $objettype . "_" . $item->getField("id") . '_Document_Item$1');
            $datas["##{$objettype}.numberofdocuments##"] = count($datas['documents']);
            //costs infos
            $costtype = $item->getType() . 'Cost';
            $costs = $costtype::getCostsSummary($costtype, $item->getField("id"));
            $datas["##{$objettype}.costfixed##"] = $costs['costfixed'];
            $datas["##{$objettype}.costmaterial##"] = $costs['costmaterial'];
            $datas["##{$objettype}.costtime##"] = $costs['costtime'];
            $datas["##{$objettype}.totalcost##"] = $costs['totalcost'];
            $restrict = "`" . $item->getForeignKeyField() . "`='" . $item->getField('id') . "'";
            $restrict .= " ORDER BY `begin_date` DESC, `id` ASC";
            $costs = getAllDatasFromTable(getTableForItemType($costtype), $restrict);
            $datas['costs'] = array();
            foreach ($costs as $cost) {
                $tmp = array();
                $tmp['##cost.name##'] = $cost['name'];
                $tmp['##cost.comment##'] = $cost['comment'];
                $tmp['##cost.datebegin##'] = Html::convDate($cost['begin_date']);
                $tmp['##cost.dateend##'] = Html::convDate($cost['end_date']);
                $tmp['##cost.time##'] = $item->getActionTime($cost['actiontime']);
                $tmp['##cost.costtime##'] = Html::formatNumber($cost['cost_time']);
                $tmp['##cost.costfixed##'] = Html::formatNumber($cost['cost_fixed']);
                $tmp['##cost.costmaterial##'] = Html::formatNumber($cost['cost_material']);
                $tmp['##cost.totalcost##'] = CommonITILCost::computeTotalCost($cost['actiontime'], $cost['cost_time'], $cost['cost_fixed'], $cost['cost_material']);
                $tmp['##cost.budget##'] = Dropdown::getDropdownName('glpi_budgets', $cost['budgets_id']);
                $datas['costs'][] = $tmp;
            }
            $datas["##{$objettype}.numberofcosts##"] = count($datas['costs']);
            //Task infos
            $tasktype = $item->getType() . 'Task';
            $taskobj = new $tasktype();
            $restrict = "`" . $item->getForeignKeyField() . "`='" . $item->getField('id') . "'";
            if ($taskobj->maybePrivate() && (!isset($options['additionnaloption']['show_private']) || !$options['additionnaloption']['show_private'])) {
                $restrict .= " AND `is_private` = '0'";
            }
            $restrict .= " ORDER BY `date` DESC, `id` ASC";
            $tasks = getAllDatasFromTable($taskobj->getTable(), $restrict);
            $datas['tasks'] = array();
            foreach ($tasks as $task) {
                $tmp = array();
                $tmp['##task.id##'] = $task['id'];
                if ($taskobj->maybePrivate()) {
                    $tmp['##task.isprivate##'] = Dropdown::getYesNo($task['is_private']);
                }
                $tmp['##task.author##'] = Html::clean(getUserName($task['users_id']));
                $tmp_taskcatinfo = Dropdown::getDropdownName('glpi_taskcategories', $task['taskcategories_id'], true, true, false);
                $tmp['##task.categoryid##'] = $task['taskcategories_id'];
                $tmp['##task.category##'] = $tmp_taskcatinfo['name'];
                $tmp['##task.categorycomment##'] = $tmp_taskcatinfo['comment'];
                $tmp['##task.date##'] = Html::convDateTime($task['date']);
                $tmp['##task.description##'] = $task['content'];
                $tmp['##task.time##'] = Ticket::getActionTime($task['actiontime']);
                $tmp['##task.status##'] = Planning::getState($task['state']);
                $tmp['##task.user##'] = Html::clean(getUserName($task['users_id_tech']));
                $tmp['##task.group##'] = Html::clean(Toolbox::clean_cross_side_scripting_deep(Dropdown::getDropdownName("glpi_groups", $task['groups_id_tech'])), true, 2, false);
                $tmp['##task.begin##'] = "";
                $tmp['##task.end##'] = "";
                if (!is_null($task['begin'])) {
                    $tmp['##task.begin##'] = Html::convDateTime($task['begin']);
                    $tmp['##task.end##'] = Html::convDateTime($task['end']);
                }
                $datas['tasks'][] = $tmp;
            }
            $datas["##{$objettype}.numberoftasks##"] = count($datas['tasks']);
        }
        return $datas;
    }

Usage Example

 /**
  * @see NotificationTargetCommonITILObject::getDatasForObject()
  **/
 function getDatasForObject(CommonDBTM $item, array $options, $simple = false)
 {
     global $CFG_GLPI;
     // Common ITIL datas
     $datas = parent::getDatasForObject($item, $options, $simple);
     $datas['##ticket.description##'] = Html::clean($datas['##ticket.description##']);
     $datas['##ticket.description##'] = $item->convertContentForNotification($datas['##ticket.description##'], $item);
     $datas['##ticket.content##'] = $datas['##ticket.description##'];
     // Specific datas
     $datas['##ticket.urlvalidation##'] = $this->formatURL($options['additionnaloption']['usertype'], "ticket_" . $item->getField("id") . "_TicketValidation\$1");
     $datas['##ticket.globalvalidation##'] = TicketValidation::getStatus($item->getField('global_validation'));
     $datas['##ticket.type##'] = Ticket::getTicketTypeName($item->getField('type'));
     $datas['##ticket.requesttype##'] = Dropdown::getDropdownName('glpi_requesttypes', $item->getField('requesttypes_id'));
     $autoclose_value = Entity::getUsedConfig('autoclose_delay', $this->getEntity(), '', Entity::CONFIG_NEVER);
     $datas['##ticket.autoclose##'] = __('Never');
     $datas['##lang.ticket.autoclosewarning##'] = "";
     if ($autoclose_value > 0) {
         $datas['##ticket.autoclose##'] = $autoclose_value;
         $datas['##lang.ticket.autoclosewarning##'] = sprintf(_n('Without a reply, the ticket will be automatically closed after %s day', 'Without a reply, the ticket will be automatically closed after %s days', $autoclose_value), $autoclose_value);
     }
     $datas['##ticket.sla##'] = '';
     if ($item->getField('slas_id')) {
         $datas['##ticket.sla##'] = Dropdown::getDropdownName('glpi_slas', $item->getField('slas_id'));
     }
     $datas['##ticket.location##'] = '';
     if ($item->getField('locations_id')) {
         $datas['##ticket.location##'] = Dropdown::getDropdownName('glpi_locations', $item->getField('locations_id'));
     }
     // is ticket deleted
     $datas['##ticket.isdeleted##'] = Dropdown::getYesNo($item->getField('is_deleted'));
     //Tags associated with the object linked to the ticket
     $datas['##ticket.itemtype##'] = '';
     $datas['##ticket.item.name##'] = '';
     $datas['##ticket.item.serial##'] = '';
     $datas['##ticket.item.otherserial##'] = '';
     $datas['##ticket.item.location##'] = '';
     $datas['##ticket.item.contact##'] = '';
     $datas['##ticket.item.contactnumber##'] = '';
     $datas['##ticket.item.user##'] = '';
     $datas['##ticket.item.group##'] = '';
     $datas['##ticket.item.model##'] = '';
     $item_ticket = new Item_Ticket();
     $items = $item_ticket->find("`tickets_id` = '" . $item->getField('id') . "'");
     $datas['items'] = array();
     if (count($items)) {
         foreach ($items as $val) {
             if (isset($val['itemtype']) && ($hardware = getItemForItemtype($val['itemtype'])) && isset($val["items_id"]) && $hardware->getFromDB($val["items_id"])) {
                 $tmp = array();
                 //Object type
                 $tmp['##ticket.itemtype##'] = $hardware->getTypeName();
                 //Object name
                 $tmp['##ticket.item.name##'] = $hardware->getField('name');
                 //Object serial
                 if ($hardware->isField('serial')) {
                     $tmp['##ticket.item.serial##'] = $hardware->getField('serial');
                 }
                 //Object contact
                 if ($hardware->isField('contact')) {
                     $tmp['##ticket.item.contact##'] = $hardware->getField('contact');
                 }
                 //Object contact num
                 if ($hardware->isField('contact_num')) {
                     $tmp['##ticket.item.contactnumber##'] = $hardware->getField('contact_num');
                 }
                 //Object otherserial
                 if ($hardware->isField('otherserial')) {
                     $tmp['##ticket.item.otherserial##'] = $hardware->getField('otherserial');
                 }
                 //Object location
                 if ($hardware->isField('locations_id')) {
                     $tmp['##ticket.item.location##'] = Dropdown::getDropdownName('glpi_locations', $hardware->getField('locations_id'));
                 }
                 //Object user
                 if ($hardware->getField('users_id')) {
                     $user_tmp = new User();
                     if ($user_tmp->getFromDB($hardware->getField('users_id'))) {
                         $tmp['##ticket.item.user##'] = $user_tmp->getName();
                     }
                 }
                 //Object group
                 if ($hardware->getField('groups_id')) {
                     $tmp['##ticket.item.group##'] = Dropdown::getDropdownName('glpi_groups', $hardware->getField('groups_id'));
                 }
                 $modeltable = getSingular($hardware->getTable()) . "models";
                 $modelfield = getForeignKeyFieldForTable($modeltable);
                 if ($hardware->isField($modelfield)) {
                     $tmp['##ticket.item.model##'] = Dropdown::getDropdownName($modeltable, $hardware->getField($modelfield));
                 }
                 $datas['items'][] = $tmp;
             }
         }
     }
     $datas['##ticket.numberofitems##'] = count($datas['items']);
     // Get followups, log, validation, satisfaction, linked tickets
     if (!$simple) {
         // Linked tickets
         $linked_tickets = Ticket_Ticket::getLinkedTicketsTo($item->getField('id'));
         $datas['linkedtickets'] = array();
         if (count($linked_tickets)) {
             $linkedticket = new Ticket();
             foreach ($linked_tickets as $data) {
                 if ($linkedticket->getFromDB($data['tickets_id'])) {
                     $tmp = array();
                     $tmp['##linkedticket.id##'] = $data['tickets_id'];
                     $tmp['##linkedticket.link##'] = Ticket_Ticket::getLinkName($data['link']);
                     $tmp['##linkedticket.url##'] = $this->formatURL($options['additionnaloption']['usertype'], "ticket_" . $data['tickets_id']);
                     $tmp['##linkedticket.title##'] = $linkedticket->getField('name');
                     $tmp['##linkedticket.content##'] = $linkedticket->getField('content');
                     $datas['linkedtickets'][] = $tmp;
                 }
             }
         }
         $datas['##ticket.numberoflinkedtickets##'] = count($datas['linkedtickets']);
         $restrict = "`tickets_id`='" . $item->getField('id') . "'";
         $problems = getAllDatasFromTable('glpi_problems_tickets', $restrict);
         $datas['problems'] = array();
         if (count($problems)) {
             $problem = new Problem();
             foreach ($problems as $data) {
                 if ($problem->getFromDB($data['problems_id'])) {
                     $tmp = array();
                     $tmp['##problem.id##'] = $data['problems_id'];
                     $tmp['##problem.date##'] = $problem->getField('date');
                     $tmp['##problem.title##'] = $problem->getField('name');
                     $tmp['##problem.url##'] = $this->formatURL($options['additionnaloption']['usertype'], "problem_" . $data['problems_id']);
                     $tmp['##problem.content##'] = $problem->getField('content');
                     $datas['problems'][] = $tmp;
                 }
             }
         }
         $datas['##ticket.numberofproblems##'] = count($datas['problems']);
         $restrict = "`tickets_id`='" . $item->getField('id') . "'";
         $changes = getAllDatasFromTable('glpi_changes_tickets', $restrict);
         $datas['changes'] = array();
         if (count($changes)) {
             $change = new Change();
             foreach ($changes as $data) {
                 if ($change->getFromDB($data['changes_id'])) {
                     $tmp = array();
                     $tmp['##change.id##'] = $data['changes_id'];
                     $tmp['##change.date##'] = $change->getField('date');
                     $tmp['##change.title##'] = $change->getField('name');
                     $tmp['##change.url##'] = $this->formatURL($options['additionnaloption']['usertype'], "change_" . $data['changes_id']);
                     $tmp['##change.content##'] = $change->getField('content');
                     $datas['changes'][] = $tmp;
                 }
             }
         }
         $datas['##ticket.numberofchanges##'] = count($datas['changes']);
         if (!isset($options['additionnaloption']['show_private']) || !$options['additionnaloption']['show_private']) {
             $restrict .= " AND `is_private` = '0'";
         }
         $restrict .= " ORDER BY `date` DESC, `id` ASC";
         //Followup infos
         $followups = getAllDatasFromTable('glpi_ticketfollowups', $restrict);
         $datas['followups'] = array();
         foreach ($followups as $followup) {
             $tmp = array();
             $tmp['##followup.isprivate##'] = Dropdown::getYesNo($followup['is_private']);
             $tmp['##followup.author##'] = Html::clean(getUserName($followup['users_id']));
             $tmp['##followup.requesttype##'] = Dropdown::getDropdownName('glpi_requesttypes', $followup['requesttypes_id']);
             $tmp['##followup.date##'] = Html::convDateTime($followup['date']);
             $tmp['##followup.description##'] = $followup['content'];
             $datas['followups'][] = $tmp;
         }
         $datas['##ticket.numberoffollowups##'] = count($datas['followups']);
         // Approbation of solution
         $restrict .= " LIMIT 1";
         $replysolved = getAllDatasFromTable('glpi_ticketfollowups', $restrict);
         $data = current($replysolved);
         $datas['##ticket.solution.approval.description##'] = $data['content'];
         $datas['##ticket.solution.approval.date##'] = Html::convDateTime($data['date']);
         $datas['##ticket.solution.approval.author##'] = Html::clean(getUserName($data['users_id']));
         //Validation infos
         $restrict = "`tickets_id`='" . $item->getField('id') . "'";
         if (isset($options['validation_id']) && $options['validation_id']) {
             $restrict .= " AND `glpi_ticketvalidations`.`id` = '" . $options['validation_id'] . "'";
         }
         $restrict .= " ORDER BY `submission_date` DESC, `id` ASC";
         $validations = getAllDatasFromTable('glpi_ticketvalidations', $restrict);
         $datas['validations'] = array();
         foreach ($validations as $validation) {
             $tmp = array();
             $tmp['##validation.submission.title##'] = sprintf(__('An approval request has been submitted by %s'), Html::clean(getUserName($validation['users_id'])));
             $tmp['##validation.answer.title##'] = sprintf(__('An answer to an an approval request was produced by %s'), Html::clean(getUserName($validation['users_id_validate'])));
             $tmp['##validation.author##'] = Html::clean(getUserName($validation['users_id']));
             $tmp['##validation.status##'] = TicketValidation::getStatus($validation['status']);
             $tmp['##validation.storestatus##'] = $validation['status'];
             $tmp['##validation.submissiondate##'] = Html::convDateTime($validation['submission_date']);
             $tmp['##validation.commentsubmission##'] = $validation['comment_submission'];
             $tmp['##validation.validationdate##'] = Html::convDateTime($validation['validation_date']);
             $tmp['##validation.validator##'] = Html::clean(getUserName($validation['users_id_validate']));
             $tmp['##validation.commentvalidation##'] = $validation['comment_validation'];
             $datas['validations'][] = $tmp;
         }
         // Ticket Satisfaction
         $inquest = new TicketSatisfaction();
         $datas['##satisfaction.type##'] = '';
         $datas['##satisfaction.datebegin##'] = '';
         $datas['##satisfaction.dateanswered##'] = '';
         $datas['##satisfaction.satisfaction##'] = '';
         $datas['##satisfaction.description##'] = '';
         if ($inquest->getFromDB($item->getField('id'))) {
             // internal inquest
             if ($inquest->fields['type'] == 1) {
                 $datas['##ticket.urlsatisfaction##'] = $this->formatURL($options['additionnaloption']['usertype'], "ticket_" . $item->getField("id") . '_Ticket$3');
                 // external inquest
             } else {
                 if ($inquest->fields['type'] == 2) {
                     $datas['##ticket.urlsatisfaction##'] = Entity::generateLinkSatisfaction($item);
                 }
             }
             $datas['##satisfaction.type##'] = $inquest->getTypeInquestName($inquest->getfield('type'));
             $datas['##satisfaction.datebegin##'] = Html::convDateTime($inquest->fields['date_begin']);
             $datas['##satisfaction.dateanswered##'] = Html::convDateTime($inquest->fields['date_answered']);
             $datas['##satisfaction.satisfaction##'] = $inquest->fields['satisfaction'];
             $datas['##satisfaction.description##'] = $inquest->fields['comment'];
         }
     }
     return $datas;
 }
All Usage Examples Of NotificationTargetCommonITILObject::getDatasForObject