function showActorsPartForm($ID, array $options)
{
global $CFG_GLPI;
$showuserlink = 0;
if (User::canView()) {
$showuserlink = 1;
}
$options['_default_use_notification'] = 1;
if (isset($options['entities_id'])) {
$options['_default_use_notification'] = Entity::getUsedConfig('is_notif_enable_default', $options['entities_id'], '', 1);
}
// check is_hidden fields
foreach (array('_users_id_requester', '_groups_id_requester', '_users_id_observer', '_groups_id_observer', '_users_id_assign', '_groups_id_assign', '_suppliers_id_assign') as $f) {
$is_hidden[$f] = false;
if (isset($options['_tickettemplate']) && $options['_tickettemplate']->isHiddenField($f)) {
$is_hidden[$f] = true;
}
}
$can_admin = $this->canAdminActors();
// on creation can select actor
if (!$ID) {
$can_admin = true;
}
$can_assign = $this->canAssign();
$can_assigntome = $this->canAssignToMe();
if (isset($options['_noupdate']) && !$options['_noupdate']) {
$can_admin = false;
$can_assign = false;
$can_assigntome = false;
}
// Manage actors
echo "<div class='tab_actors tab_cadre_fixe' id='mainformtable5'>";
echo "<div class='responsive_hidden actor_title'>" . __('Actor') . "</div>";
// ====== Requesters BLOC ======
//
//
echo "<span class='actor-bloc'>";
echo "<div class='actor-head'>";
if (!$is_hidden['_users_id_requester'] || !$is_hidden['_groups_id_requester']) {
_e('Requester');
}
$rand_requester = -1;
$candeleterequester = false;
if ($ID && $can_admin && (!$is_hidden['_users_id_requester'] || !$is_hidden['_groups_id_requester'])) {
$rand_requester = mt_rand();
echo " ";
echo "<img title=\"" . __s('Add') . "\" alt=\"" . __s('Add') . "\"\n onClick=\"" . Html::jsShow("itilactor{$rand_requester}") . "\"\n class='pointer' src='" . $CFG_GLPI["root_doc"] . "/pics/add_dropdown.png'>";
$candeleterequester = true;
}
echo "</div>";
// end .actor-head
echo "<div class='actor-content'>";
if ($rand_requester >= 0) {
$this->showActorAddForm(CommonITILActor::REQUESTER, $rand_requester, $this->fields['entities_id'], $is_hidden);
}
// Requester
if (!$ID) {
$reqdisplay = false;
if ($can_admin && !$is_hidden['_users_id_requester']) {
$this->showActorAddFormOnCreate(CommonITILActor::REQUESTER, $options);
$reqdisplay = true;
} else {
$delegating = User::getDelegateGroupsForUser($options['entities_id']);
if (count($delegating) && !$is_hidden['_users_id_requester']) {
//$this->getDefaultActor(CommonITILActor::REQUESTER);
$options['_right'] = "delegate";
$this->showActorAddFormOnCreate(CommonITILActor::REQUESTER, $options);
$reqdisplay = true;
} else {
// predefined value
if (isset($options["_users_id_requester"]) && $options["_users_id_requester"]) {
echo self::getActorIcon('user', CommonITILActor::REQUESTER) . " ";
echo Dropdown::getDropdownName("glpi_users", $options["_users_id_requester"]);
echo "<input type='hidden' name='_users_id_requester' value=\"" . $options["_users_id_requester"] . "\">";
echo '<br>';
$reqdisplay = true;
}
}
}
//If user have access to more than one entity, then display a combobox : Ticket case
if ($this->userentity_oncreate && isset($this->countentitiesforuser) && $this->countentitiesforuser > 1) {
echo "<br>";
$rand = Entity::dropdown(array('value' => $this->fields["entities_id"], 'entity' => $this->userentities, 'on_change' => 'this.form.submit()'));
} else {
echo "<input type='hidden' name='entities_id' value='" . $this->fields["entities_id"] . "'>";
}
if ($reqdisplay) {
echo '<hr>';
}
} else {
if (!$is_hidden['_users_id_requester']) {
$this->showUsersAssociated(CommonITILActor::REQUESTER, $candeleterequester, $options);
}
}
// Requester Group
if (!$ID) {
if ($can_admin && !$is_hidden['_groups_id_requester']) {
echo self::getActorIcon('group', CommonITILActor::REQUESTER);
/// For ticket templates : mandatories
if (isset($options['_tickettemplate'])) {
echo $options['_tickettemplate']->getMandatoryMark('_groups_id_requester');
}
echo " ";
Group::dropdown(array('name' => '_groups_id_requester', 'value' => $options["_groups_id_requester"], 'entity' => $this->fields["entities_id"], 'condition' => '`is_requester`'));
} else {
// predefined value
if (isset($options["_groups_id_requester"]) && $options["_groups_id_requester"]) {
echo self::getActorIcon('group', CommonITILActor::REQUESTER) . " ";
echo Dropdown::getDropdownName("glpi_groups", $options["_groups_id_requester"]);
echo "<input type='hidden' name='_groups_id_requester' value=\"" . $options["_groups_id_requester"] . "\">";
echo '<br>';
}
}
} else {
if (!$is_hidden['_groups_id_requester']) {
$this->showGroupsAssociated(CommonITILActor::REQUESTER, $candeleterequester, $options);
}
}
echo "</div>";
// end .actor-content
echo "</span>";
// end .actor-bloc
// ====== Observers BLOC ======
echo "<span class='actor-bloc'>";
echo "<div class='actor-head'>";
if (!$is_hidden['_users_id_observer'] || !$is_hidden['_groups_id_observer']) {
_e('Watcher');
}
$rand_observer = -1;
$candeleteobserver = false;
if ($ID && $can_admin && (!$is_hidden['_users_id_observer'] || !$is_hidden['_groups_id_observer'])) {
$rand_observer = mt_rand();
echo " ";
echo "<img title=\"" . __s('Add') . "\" alt=\"" . __s('Add') . "\"\n onClick=\"" . Html::jsShow("itilactor{$rand_observer}") . "\"\n class='pointer' src='" . $CFG_GLPI["root_doc"] . "/pics/add_dropdown.png'>";
$candeleteobserver = true;
} else {
if ($ID > 0 && !in_array($this->fields['status'], $this->getClosedStatusArray()) && !$is_hidden['_users_id_observer'] && !$this->isUser(CommonITILActor::OBSERVER, Session::getLoginUserID()) && !$this->isUser(CommonITILActor::REQUESTER, Session::getLoginUserID())) {
echo " ";
Html::showSimpleForm($this->getFormURL(), 'addme_observer', __('Associate myself'), array($this->getForeignKeyField() => $this->fields['id']), $CFG_GLPI["root_doc"] . "/pics/addme.png");
}
}
echo "</div>";
// end .actor-head
echo "<div class='actor-content'>";
if ($rand_observer >= 0) {
$this->showActorAddForm(CommonITILActor::OBSERVER, $rand_observer, $this->fields['entities_id'], $is_hidden);
}
// Observer
if (!$ID) {
if ($can_admin && !$is_hidden['_users_id_observer']) {
$this->showActorAddFormOnCreate(CommonITILActor::OBSERVER, $options);
echo '<hr>';
} else {
// predefined value
if (isset($options["_users_id_observer"]) && $options["_users_id_observer"]) {
echo self::getActorIcon('user', CommonITILActor::OBSERVER) . " ";
echo Dropdown::getDropdownName("glpi_users", $options["_users_id_observer"]);
echo "<input type='hidden' name='_users_id_observer' value=\"" . $options["_users_id_observer"] . "\">";
echo '<hr>';
}
}
} else {
if (!$is_hidden['_users_id_observer']) {
$this->showUsersAssociated(CommonITILActor::OBSERVER, $candeleteobserver, $options);
}
}
// Observer Group
if (!$ID) {
if ($can_admin && !$is_hidden['_groups_id_observer']) {
echo self::getActorIcon('group', CommonITILActor::OBSERVER);
/// For ticket templates : mandatories
if (isset($options['_tickettemplate'])) {
echo $options['_tickettemplate']->getMandatoryMark('_groups_id_observer');
}
echo " ";
Group::dropdown(array('name' => '_groups_id_observer', 'value' => $options["_groups_id_observer"], 'entity' => $this->fields["entities_id"], 'condition' => '`is_requester`'));
} else {
// predefined value
if (isset($options["_groups_id_observer"]) && $options["_groups_id_observer"]) {
echo self::getActorIcon('group', CommonITILActor::OBSERVER) . " ";
echo Dropdown::getDropdownName("glpi_groups", $options["_groups_id_observer"]);
echo "<input type='hidden' name='_groups_id_observer' value=\"" . $options["_groups_id_observer"] . "\">";
echo '<br>';
}
}
} else {
if (!$is_hidden['_groups_id_observer']) {
$this->showGroupsAssociated(CommonITILActor::OBSERVER, $candeleteobserver, $options);
}
}
echo "</div>";
// end .actor-content
echo "</span>";
// end .actor-bloc
// ====== Assign BLOC ======
echo "<span class='actor-bloc'>";
echo "<div class='actor-head'>";
if (!$is_hidden['_users_id_assign'] || !$is_hidden['_groups_id_assign'] || !$is_hidden['_suppliers_id_assign']) {
_e('Assigned to');
}
$rand_assign = -1;
$candeleteassign = false;
if ($ID && ($can_assign || $can_assigntome) && (!$is_hidden['_users_id_assign'] || !$is_hidden['_groups_id_assign'] || !$is_hidden['_suppliers_id_assign']) && $this->isAllowedStatus($this->fields['status'], CommonITILObject::ASSIGNED)) {
$rand_assign = mt_rand();
echo " ";
echo "<img title=\"" . __s('Add') . "\" alt=\"" . __s('Add') . "\"\n onClick=\"" . Html::jsShow("itilactor{$rand_assign}") . "\"\n class='pointer' src='" . $CFG_GLPI["root_doc"] . "/pics/add_dropdown.png'>";
}
if ($ID && $can_assigntome && !in_array($this->fields['status'], $this->getClosedStatusArray()) && !$is_hidden['_users_id_assign'] && !$this->isUser(CommonITILActor::ASSIGN, Session::getLoginUserID()) && $this->isAllowedStatus($this->fields['status'], CommonITILObject::ASSIGNED)) {
Html::showSimpleForm($this->getFormURL(), 'addme_assign', __('Associate myself'), array($this->getForeignKeyField() => $this->fields['id']), $CFG_GLPI["root_doc"] . "/pics/addme.png");
}
if ($ID && $can_assign) {
$candeleteassign = true;
}
echo "</div>";
// end .actor-head
echo "<div class='actor-content'>";
if ($rand_assign >= 0) {
$this->showActorAddForm(CommonITILActor::ASSIGN, $rand_assign, $this->fields['entities_id'], $is_hidden, $this->canAssign(), $this->canAssign());
}
// Assign User
if (!$ID) {
if ($can_assign && !$is_hidden['_users_id_assign'] && $this->isAllowedStatus(CommonITILObject::INCOMING, CommonITILObject::ASSIGNED)) {
$this->showActorAddFormOnCreate(CommonITILActor::ASSIGN, $options);
echo '<hr>';
} else {
if ($can_assigntome && !$is_hidden['_users_id_assign'] && $this->isAllowedStatus(CommonITILObject::INCOMING, CommonITILObject::ASSIGNED)) {
echo self::getActorIcon('user', CommonITILActor::ASSIGN) . " ";
User::dropdown(array('name' => '_users_id_assign', 'value' => $options["_users_id_assign"], 'entity' => $this->fields["entities_id"], 'ldap_import' => true));
echo '<hr>';
} else {
// predefined value
if (isset($options["_users_id_assign"]) && $options["_users_id_assign"] && $this->isAllowedStatus(CommonITILObject::INCOMING, CommonITILObject::ASSIGNED)) {
echo self::getActorIcon('user', CommonITILActor::ASSIGN) . " ";
echo Dropdown::getDropdownName("glpi_users", $options["_users_id_assign"]);
echo "<input type='hidden' name='_users_id_assign' value=\"" . $options["_users_id_assign"] . "\">";
echo '<hr>';
}
}
}
} else {
if (!$is_hidden['_users_id_assign']) {
$this->showUsersAssociated(CommonITILActor::ASSIGN, $candeleteassign, $options);
}
}
// Assign Groups
if (!$ID) {
if ($can_assign && !$is_hidden['_groups_id_assign'] && $this->isAllowedStatus(CommonITILObject::INCOMING, CommonITILObject::ASSIGNED)) {
echo self::getActorIcon('group', CommonITILActor::ASSIGN);
/// For ticket templates : mandatories
if (isset($options['_tickettemplate'])) {
echo $options['_tickettemplate']->getMandatoryMark('_groups_id_assign');
}
echo " ";
$rand = mt_rand();
$params = array('name' => '_groups_id_assign', 'value' => $options["_groups_id_assign"], 'entity' => $this->fields["entities_id"], 'condition' => '`is_assign`', 'rand' => $rand);
if ($this->getType() == 'Ticket') {
$params['toupdate'] = array('value_fieldname' => 'value', 'to_update' => "countgroupassign_{$rand}", 'url' => $CFG_GLPI["root_doc"] . "/ajax/ticketassigninformation.php", 'moreparams' => array('groups_id_assign' => '__VALUE__'));
}
Group::dropdown($params);
echo "<span id='countgroupassign_{$rand}'>";
echo "</span>";
echo "<script type='text/javascript'>";
Ajax::updateItemJsCode("countgroupassign_{$rand}", $CFG_GLPI["root_doc"] . "/ajax/ticketassigninformation.php", array('groups_id_assign' => '__VALUE__'), "dropdown__groups_id_assign{$rand}");
echo "</script>";
echo '<hr>';
} else {
// predefined value
if (isset($options["_groups_id_assign"]) && $options["_groups_id_assign"] && $this->isAllowedStatus(CommonITILObject::INCOMING, CommonITILObject::ASSIGNED)) {
echo self::getActorIcon('group', CommonITILActor::ASSIGN) . " ";
echo Dropdown::getDropdownName("glpi_groups", $options["_groups_id_assign"]);
echo "<input type='hidden' name='_groups_id_assign' value=\"" . $options["_groups_id_assign"] . "\">";
echo '<hr>';
}
}
} else {
if (!$is_hidden['_groups_id_assign']) {
$this->showGroupsAssociated(CommonITILActor::ASSIGN, $candeleteassign, $options);
}
}
// Assign Suppliers
if (!$ID) {
if ($can_assign && !$is_hidden['_suppliers_id_assign'] && $this->isAllowedStatus(CommonITILObject::INCOMING, CommonITILObject::ASSIGNED)) {
$this->showSupplierAddFormOnCreate($options);
} else {
// predefined value
if (isset($options["_suppliers_id_assign"]) && $options["_suppliers_id_assign"] && $this->isAllowedStatus(CommonITILObject::INCOMING, CommonITILObject::ASSIGNED)) {
echo self::getActorIcon('supplier', CommonITILActor::ASSIGN) . " ";
echo Dropdown::getDropdownName("glpi_suppliers", $options["_suppliers_id_assign"]);
echo "<input type='hidden' name='_suppliers_id_assign' value=\"" . $options["_suppliers_id_assign"] . "\">";
echo '<hr>';
}
}
} else {
if (!$is_hidden['_suppliers_id_assign']) {
$this->showSuppliersAssociated(CommonITILActor::ASSIGN, $candeleteassign, $options);
}
}
echo "</div>";
// end .actor-content
echo "</span>";
// end .actor-bloc
echo "</div>";
// tab_actors
}