本文整理汇总了PHP中Ticket::getGroups方法的典型用法代码示例。如果您正苦于以下问题:PHP Ticket::getGroups方法的具体用法?PHP Ticket::getGroups怎么用?PHP Ticket::getGroups使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Ticket
的用法示例。
在下文中一共展示了Ticket::getGroups方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: getGroups
function getGroups($ticket_id, $removeAlreadyAssigned = true)
{
$groups = $user_groups = $ticket_groups = array();
// get groups for user connected
$tmp_user_groups = Group_User::getUserGroups($_SESSION['glpiID']);
foreach ($tmp_user_groups as $current_group) {
$user_groups[$current_group['id']] = $current_group['id'];
$groups[$current_group['id']] = $current_group['id'];
}
// get groups already assigned in the ticket
if ($ticket_id > 0) {
$ticket = new Ticket();
$ticket->getFromDB($ticket_id);
foreach ($ticket->getGroups(CommonITILActor::ASSIGN) as $current_group) {
$ticket_groups[$current_group['groups_id']] = $current_group['groups_id'];
}
}
// To do an escalation, the user must be in a group currently assigned to the ticket
// or no group is assigned to the ticket
// TODO : matching with "view all tickets (yes/no) option in profile user"
if (!empty($ticket_groups) && count(array_intersect($ticket_groups, $user_groups)) == 0) {
return array();
}
//get all group which we can climb
if (count($groups) > 0) {
$group_group = $this->find("groups_id_source IN (" . implode(", ", $groups) . ")");
foreach ($group_group as $current_group) {
$groups[$current_group['groups_id_destination']] = $current_group['groups_id_destination'];
}
}
//remove already assigned groups
if (!empty($ticket_groups) && $removeAlreadyAssigned) {
$groups = array_diff_assoc($groups, $ticket_groups);
}
//add name to returned groups and remove non assignable groups
$group_obj = new Group();
foreach ($groups as $groups_id => &$groupname) {
$group_obj->getFromDB($groups_id);
//check if we can assign this group
if ($group_obj->fields['is_assign'] == 0) {
unset($groups[$groups_id]);
continue;
}
//add name
$groupname = $group_obj->fields['name'];
}
//sort by group name (and keep associative index)
asort($groups);
return $groups;
}
示例2: pdfForItem
static function pdfForItem(PluginPdfSimplePDF $pdf, CommonDBTM $item, $tree = false)
{
global $DB, $CFG_GLPI;
$ID = $item->getField('id');
$type = $item->getType();
if (!Session::haveRight("show_all_ticket", "1")) {
return;
}
switch ($item->getType()) {
case 'User':
$restrict = "(`glpi_tickets_users`.`users_id` = '" . $item->getID() . "'\n AND `glpi_tickets_users`.`type` = " . CommonITILActor::REQUESTER . ")";
$order = '`glpi_tickets`.`date_mod` DESC';
break;
case 'SLA':
$restrict = "(`slas_id` = '" . $item->getID() . "')";
$order = '`glpi_tickets`.`due_date` DESC';
break;
case 'Supplier':
$restrict = "(`glpi_suppliers_tickets`.`suppliers_id` = '" . $item->getID() . "'\n AND `glpi_suppliers_tickets`.`type` = " . CommonITILActor::ASSIGN . ")";
$order = '`glpi_tickets`.`date_mod` DESC';
break;
case 'Group':
if ($tree) {
$restrict = "IN (" . implode(',', getSonsOf('glpi_groups', $item->getID())) . ")";
} else {
$restrict = "='" . $item->getID() . "'";
}
$restrict = "(`glpi_groups_tickets`.`groups_id` {$restrict}\n AND `glpi_groups_tickets`.`type` = " . CommonITILActor::REQUESTER . ")";
$order = '`glpi_tickets`.`date_mod` DESC';
break;
default:
$restrict = "(`items_id` = '" . $item->getID() . "' AND `itemtype` = '{$type}')";
$order = '`glpi_tickets`.`date_mod` DESC';
}
$query = "SELECT " . Ticket::getCommonSelect() . "\n FROM glpi_tickets " . Ticket::getCommonLeftJoin() . "\n WHERE {$restrict} " . getEntitiesRestrictRequest("AND", "glpi_tickets") . "\n ORDER BY {$order}\n LIMIT " . intval($_SESSION['glpilist_limit']);
$result = $DB->query($query);
$number = $DB->numrows($result);
$pdf->setColumnsSize(100);
if (!$number) {
$pdf->displayTitle('<b>' . __('Last tickets') . '</b>');
} else {
$pdf->displayTitle("<b>" . sprintf(__('Last %d ticket') . "</b>", $number));
$job = new Ticket();
while ($data = $DB->fetch_assoc($result)) {
if (!$job->getFromDB($data["id"])) {
continue;
}
$pdf->setColumnsAlign('center');
$col = '<b><i>ID ' . $job->fields["id"] . '</i></b>, ' . sprintf(__('%1$s: %2$s'), __('Status'), Ticket::getStatus($job->fields["status"]));
if (count($_SESSION["glpiactiveentities"]) > 1) {
if ($job->fields['entities_id'] == 0) {
$col = sprintf(__('%1$s (%2$s)'), $col, __('Root entity'));
} else {
$col = sprintf(__('%1$s (%2$s)'), $col, Dropdown::getDropdownName("glpi_entities", $job->fields['entities_id']));
}
}
$pdf->displayLine($col);
$pdf->setColumnsAlign('left');
$col = '<b><i>' . sprintf(__('Opened on %s') . '</i></b>', Html::convDateTime($job->fields['date']));
if ($job->fields['begin_waiting_date']) {
$col = sprintf(__('%1$s, %2$s'), $col, '<b><i>' . sprintf(__('Put on hold on %s') . '</i></b>', Html::convDateTime($job->fields['begin_waiting_date'])));
}
if (in_array($job->fields["status"], $job->getSolvedStatusArray()) || in_array($job->fields["status"], $job->getClosedStatusArray())) {
$col = sprintf(__('%1$s, %2$s'), $col, '<b><i>' . sprintf(__('Solved on %s') . '</i></b>', Html::convDateTime($job->fields['solvedate'])));
}
if (in_array($job->fields["status"], $job->getClosedStatusArray())) {
$col = sprintf(__('%1$s, %2$s'), $col, '<b><i>' . sprintf(__('Closed on %s') . '</i></b>', Html::convDateTime($job->fields['closedate'])));
}
if ($job->fields['due_date']) {
$col = sprintf(__('%1$s, %2$s'), $col, '<b><i>' . sprintf(__('%1$s: %2$s') . '</i></b>', __('Due date'), Html::convDateTime($job->fields['due_date'])));
}
$pdf->displayLine($col);
$col = '<b><i>' . sprintf(__('%1$s: %2$s'), __('Priority') . '</i></b>', Ticket::getPriorityName($job->fields["priority"]));
if ($job->fields["itilcategories_id"]) {
$col = sprintf(__('%1$s - %2$s'), $col, '<b><i>' . sprintf(__('%1$s: %2$s') . '</i></b>', __('Category'), Dropdown::getDropdownName('glpi_itilcategories', $job->fields["itilcategories_id"])));
}
$pdf->displayLine($col);
$col = '';
$users = $job->getUsers(CommonITILActor::REQUESTER);
if (count($users)) {
foreach ($users as $d) {
if (empty($col)) {
$col = getUserName($d['users_id']);
} else {
$col = sprintf(__('%1$s, %2$s'), $col, getUserName($d['users_id']));
}
}
}
$grps = $job->getGroups(CommonITILActor::REQUESTER);
if (count($grps)) {
if (empty($col)) {
$col = sprintf(__('%1$s %2$s'), $col, _n('Group', 'Groups', 2) . ' </i></b>');
} else {
$col = sprintf(__('%1$s - %2$s'), $col, _n('Group', 'Groups', 2) . ' </i></b>');
}
$first = true;
foreach ($grps as $d) {
if ($first) {
$col = sprintf(__('%1$s %2$s'), $col, Dropdown::getDropdownName("glpi_groups", $d['groups_id']));
} else {
//.........这里部分代码省略.........
示例3: checkAssignGroup
static function checkAssignGroup(Ticket $ticket)
{
global $DB;
$ok = 0;
$ptConfig = new PluginTimelineticketConfig();
$ptConfig->getFromDB(1);
if ($ptConfig->fields["add_waiting"] == 0) {
$ok = 1;
}
if ($ok && in_array("status", $ticket->updates) && isset($ticket->oldvalues["status"]) && $ticket->oldvalues["status"] == Ticket::WAITING) {
if ($ticket->countGroups(CommonITILActor::ASSIGN)) {
foreach ($ticket->getGroups(CommonITILActor::ASSIGN) as $d) {
$ptAssignGroup = new PluginTimelineticketAssignGroup();
$calendar = new Calendar();
$calendars_id = Entity::getUsedConfig('calendars_id', $ticket->fields['entities_id']);
$datedebut = $ticket->fields['date'];
if ($calendars_id > 0 && $calendar->getFromDB($calendars_id)) {
$delay = $calendar->getActiveTimeBetween($datedebut, $_SESSION["glpi_currenttime"]);
} else {
// cas 24/24 - 7/7
$delay = strtotime($_SESSION["glpi_currenttime"]) - strtotime($datedebut);
}
$input = array();
$input['tickets_id'] = $ticket->getID();
$input['groups_id'] = $d["groups_id"];
$input['date'] = $_SESSION["glpi_currenttime"];
$input['begin'] = $delay;
$ptAssignGroup->add($input);
}
}
} else {
if ($ok && in_array("status", $ticket->updates) && isset($ticket->fields["status"]) && $ticket->fields["status"] == Ticket::WAITING) {
if ($ticket->countGroups(CommonITILActor::ASSIGN)) {
foreach ($ticket->getGroups(CommonITILActor::ASSIGN) as $d) {
$calendar = new Calendar();
$calendars_id = Entity::getUsedConfig('calendars_id', $ticket->fields['entities_id']);
$ptAssignGroup = new PluginTimelineticketAssignGroup();
$query = "SELECT MAX(`date`) AS datedebut, id\n FROM `" . $ptAssignGroup->getTable() . "`\n WHERE `tickets_id` = '" . $ticket->getID() . "'\n AND `groups_id`='" . $d["groups_id"] . "'\n AND `delay` IS NULL";
$result = $DB->query($query);
$datedebut = '';
$input = array();
if ($result && $DB->numrows($result)) {
$datedebut = $DB->result($result, 0, 'datedebut');
$input['id'] = $DB->result($result, 0, 'id');
} else {
return;
}
if (!$datedebut) {
$delay = 0;
// Utilisation calendrier
} else {
if ($calendars_id > 0 && $calendar->getFromDB($calendars_id)) {
$delay = $calendar->getActiveTimeBetween($datedebut, $_SESSION["glpi_currenttime"]);
} else {
// cas 24/24 - 7/7
$delay = strtotime($_SESSION["glpi_currenttime"]) - strtotime($datedebut);
}
}
$input['delay'] = $delay;
$ptAssignGroup->update($input);
}
}
}
}
}
示例4: doLevelForTicket
/**
* Do a specific SLAlevel for a ticket
*
* @param $data array data of an entry of slalevels_tickets
*
* @return nothing
**/
static function doLevelForTicket(array $data)
{
$ticket = new Ticket();
$slalevelticket = new self();
// existing ticket and not deleted
if ($ticket->getFromDB($data['tickets_id']) && !$ticket->isDeleted()) {
// search all actors of a ticket
foreach ($ticket->getUsers(CommonITILActor::REQUESTER) as $user) {
$ticket->fields['_users_id_requester'][] = $user['users_id'];
}
foreach ($ticket->getUsers(CommonITILActor::ASSIGN) as $user) {
$ticket->fields['_users_id_assign'][] = $user['users_id'];
}
foreach ($ticket->getUsers(CommonITILActor::OBSERVER) as $user) {
$ticket->fields['_users_id_observer'][] = $user['users_id'];
}
foreach ($ticket->getGroups(CommonITILActor::REQUESTER) as $group) {
$ticket->fields['_groups_id_requester'][] = $group['groups_id'];
}
foreach ($ticket->getGroups(CommonITILActor::ASSIGN) as $group) {
$ticket->fields['_groups_id_assign'][] = $group['groups_id'];
}
foreach ($ticket->getGroups(CommonITILActor::OBSERVER) as $groups) {
$ticket->fields['_groups_id_observer'][] = $group['groups_id'];
}
foreach ($ticket->getSuppliers(CommonITILActor::ASSIGN) as $supplier) {
$ticket->fields['_suppliers_id_assign'][] = $supplier['suppliers_id'];
}
$slalevel = new SlaLevel();
$sla = new SLA();
// Check if sla datas are OK
if ($ticket->fields['slas_id'] > 0 && $ticket->fields['slalevels_id'] == $data['slalevels_id']) {
if ($ticket->fields['status'] == CommonITILObject::CLOSED) {
// Drop line when status is closed
$slalevelticket->delete(array('id' => $data['id']));
} else {
if ($ticket->fields['status'] != CommonITILObject::SOLVED) {
// If status = solved : keep the line in case of solution not validated
$input['id'] = $ticket->getID();
$input['_auto_update'] = true;
if ($slalevel->getRuleWithCriteriasAndActions($data['slalevels_id'], 1, 1) && $sla->getFromDB($ticket->fields['slas_id'])) {
$doit = true;
if (count($slalevel->criterias)) {
$doit = $slalevel->checkCriterias($ticket->fields);
}
// Process rules
if ($doit) {
$input = $slalevel->executeActions($input, array());
}
}
// Put next level in todo list
$next = $slalevel->getNextSlaLevel($ticket->fields['slas_id'], $ticket->fields['slalevels_id']);
$input['slalevels_id'] = $next;
$ticket->update($input);
$sla->addLevelToDo($ticket);
// Action done : drop the line
$slalevelticket->delete(array('id' => $data['id']));
}
}
} else {
// Drop line
$slalevelticket->delete(array('id' => $data['id']));
}
} else {
// Drop line
$slalevelticket->delete(array('id' => $data['id']));
}
}
示例5: getDatasForTemplate
//.........这里部分代码省略.........
$users[$uid] = $user_tmp->getName();
}
$this->datas['##ticket.assigntousers##'] = implode(', ', $users);
} else {
$this->datas['##ticket.assigntousers##'] = '';
}
if ($this->obj->countUsers(Ticket::OBSERVER)) {
$users = array();
foreach ($this->obj->getUsers(Ticket::OBSERVER) as $uid => $tmp) {
$user_tmp = new User();
$user_tmp->getFromDB($uid);
$users[$uid] = $user_tmp->getName();
}
$this->datas['##ticket.observerusers##'] = implode(', ', $users);
} else {
$this->datas['##ticket.observerusers##'] = '';
}
if ($this->obj->getField('suppliers_id_assign')) {
$this->datas['##ticket.assigntosupplier##'] = Dropdown::getDropdownName('glpi_suppliers', $this->obj->getField('suppliers_id_assign'));
} else {
$this->datas['##ticket.assigntosupplier##'] = '';
}
if ($this->obj->countGroups(Ticket::REQUESTER)) {
$groups = array();
foreach ($this->obj->getUsers(Ticket::REQUESTER) as $gid => $tmp) {
$groups[$gid] = Dropdown::getDropdownName('glpi_groups', $gid);
}
$this->datas['##ticket.groups##'] = implode(', ', $groups);
} else {
$this->datas['##ticket.groups##'] = '';
}
if ($this->obj->countGroups(Ticket::OBSERVER)) {
$groups = array();
foreach ($this->obj->getGroups(Ticket::OBSERVER) as $gid => $tmp) {
$groups[$gid] = Dropdown::getDropdownName('glpi_groups', $gid);
}
$this->datas['##ticket.observergroups##'] = implode(', ', $groups);
} else {
$this->datas['##ticket.observergroups##'] = '';
}
if ($this->obj->countGroups(Ticket::ASSIGN)) {
$groups = array();
foreach ($this->obj->getGroups(Ticket::ASSIGN) as $gid => $tmp) {
$groups[$gid] = Dropdown::getDropdownName('glpi_groups', $gid);
}
$this->datas['##ticket.assigntogroups##'] = implode(', ', $groups);
} else {
$this->datas['##ticket.assigntogroups##'] = '';
}
//Tags associated with the object linked to the ticket
if ($this->target_object != null) {
//Object type
$this->datas['##ticket.itemtype##'] = $this->target_object->getTypeName();
//Object name
$this->datas['##ticket.item.name##'] = $this->target_object->getField('name');
//Object serial
if ($this->target_object->isField('serial')) {
$this->datas['##ticket.item.serial##'] = $this->target_object->getField('serial');
} else {
$this->datas['##ticket.item.serial##'] = '';
}
//Object contact
if ($this->target_object->isField('contact')) {
$this->datas['##ticket.item.contact##'] = $this->target_object->getField('contact');
} else {
$this->datas['##ticket.item.contact##'] = '';