function post_addItem()
{
// Add document if needed, without notification
$this->addFiles(0, 1);
// Add default document if set in template
if (isset($this->input['_documents_id']) && is_array($this->input['_documents_id']) && count($this->input['_documents_id'])) {
$docitem = new Document_Item();
foreach ($this->input['_documents_id'] as $docID) {
if ($docitem->add(array('documents_id' => $docID, '_do_notif' => false, 'itemtype' => $this->getType(), 'items_id' => $this->fields['id']))) {
}
}
}
$useractors = NULL;
// Add user groups linked to ITIL objects
if (!empty($this->userlinkclass)) {
$useractors = new $this->userlinkclass();
}
$groupactors = NULL;
if (!empty($this->grouplinkclass)) {
$groupactors = new $this->grouplinkclass();
}
$supplieractors = NULL;
if (!empty($this->supplierlinkclass)) {
$supplieractors = new $this->supplierlinkclass();
}
if (!is_null($useractors)) {
if (isset($this->input["_users_id_requester"])) {
if (is_array($this->input["_users_id_requester"])) {
$tab_requester = $this->input["_users_id_requester"];
} else {
$tab_requester = array();
$tab_requester[] = $this->input["_users_id_requester"];
}
$requesterToAdd = array();
foreach ($tab_requester as $key_requester => $requester) {
if (in_array($requester, $requesterToAdd)) {
// This requester ID is already added;
continue;
}
$input2 = array($useractors->getItilObjectForeignKey() => $this->fields['id'], 'users_id' => $requester, 'type' => CommonITILActor::REQUESTER);
if (isset($this->input["_users_id_requester_notif"])) {
foreach ($this->input["_users_id_requester_notif"] as $key => $val) {
if (isset($val[$key_requester])) {
$input2[$key] = $val[$key_requester];
}
}
}
//empty actor
if ($input2['users_id'] == 0 && (!isset($input2['alternative_email']) || empty($input2['alternative_email']))) {
continue;
} else {
if ($requester != 0) {
$requesterToAdd[] = $requester;
}
}
$input2['_from_object'] = true;
$useractors->add($input2);
}
}
if (isset($this->input["_users_id_observer"])) {
if (is_array($this->input["_users_id_observer"])) {
$tab_observer = $this->input["_users_id_observer"];
} else {
$tab_observer = array();
$tab_observer[] = $this->input["_users_id_observer"];
}
$observerToAdd = array();
foreach ($tab_observer as $key_observer => $observer) {
if (in_array($observer, $observerToAdd)) {
// This observer ID is already added;
continue;
}
$input2 = array($useractors->getItilObjectForeignKey() => $this->fields['id'], 'users_id' => $observer, 'type' => CommonITILActor::OBSERVER);
if (isset($this->input["_users_id_observer_notif"])) {
foreach ($this->input["_users_id_observer_notif"] as $key => $val) {
if (isset($val[$key_observer])) {
$input2[$key] = $val[$key_observer];
}
}
}
//empty actor
if ($input2['users_id'] == 0 && (!isset($input2['alternative_email']) || empty($input2['alternative_email']))) {
continue;
} else {
if ($observer != 0) {
$observerToAdd[] = $observer;
}
}
$input2['_from_object'] = true;
$useractors->add($input2);
}
}
if (isset($this->input["_users_id_assign"])) {
if (is_array($this->input["_users_id_assign"])) {
$tab_assign = $this->input["_users_id_assign"];
} else {
$tab_assign = array();
$tab_assign[] = $this->input["_users_id_assign"];
}
$assignToAdd = array();
foreach ($tab_assign as $key_assign => $assign) {
if (in_array($assign, $assignToAdd)) {
// This assigned user ID is already added;
continue;
}
$input2 = array($useractors->getItilObjectForeignKey() => $this->fields['id'], 'users_id' => $assign, 'type' => CommonITILActor::ASSIGN);
if (isset($this->input["_users_id_assign_notif"])) {
foreach ($this->input["_users_id_assign_notif"] as $key => $val) {
if (isset($val[$key_assign])) {
$input2[$key] = $val[$key_assign];
}
}
}
//empty actor
if ($input2['users_id'] == 0 && (!isset($input2['alternative_email']) || empty($input2['alternative_email']))) {
continue;
} else {
if ($assign != 0) {
$assignToAdd[] = $assign;
}
}
$input2['_from_object'] = true;
$useractors->add($input2);
}
}
}
if (!is_null($groupactors)) {
if (isset($this->input["_groups_id_requester"])) {
$groups_id_requester = $this->input["_groups_id_requester"];
if (!is_array($this->input["_groups_id_requester"])) {
$groups_id_requester = array($this->input["_groups_id_requester"]);
} else {
$groups_id_requester = $this->input["_groups_id_requester"];
}
foreach ($groups_id_requester as $groups_id) {
if ($groups_id > 0) {
$groupactors->add(array($groupactors->getItilObjectForeignKey() => $this->fields['id'], 'groups_id' => $groups_id, 'type' => CommonITILActor::REQUESTER, '_from_object' => true));
}
}
}
if (isset($this->input["_groups_id_assign"])) {
if (!is_array($this->input["_groups_id_assign"])) {
$groups_id_assign = array($this->input["_groups_id_assign"]);
} else {
$groups_id_assign = $this->input["_groups_id_assign"];
}
foreach ($groups_id_assign as $groups_id) {
if ($groups_id > 0) {
$groupactors->add(array($groupactors->getItilObjectForeignKey() => $this->fields['id'], 'groups_id' => $groups_id, 'type' => CommonITILActor::ASSIGN, '_from_object' => true));
}
}
}
if (isset($this->input["_groups_id_observer"])) {
if (!is_array($this->input["_groups_id_observer"])) {
$groups_id_observer = array($this->input["_groups_id_observer"]);
} else {
$groups_id_observer = $this->input["_groups_id_observer"];
}
foreach ($groups_id_observer as $groups_id) {
if ($groups_id > 0) {
$groupactors->add(array($groupactors->getItilObjectForeignKey() => $this->fields['id'], 'groups_id' => $groups_id, 'type' => CommonITILActor::OBSERVER, '_from_object' => true));
}
}
}
}
if (!is_null($supplieractors)) {
if (isset($this->input["_suppliers_id_assign"]) && $this->input["_suppliers_id_assign"] > 0) {
if (is_array($this->input["_suppliers_id_assign"])) {
$tab_assign = $this->input["_suppliers_id_assign"];
} else {
$tab_assign = array();
$tab_assign[] = $this->input["_suppliers_id_assign"];
}
$supplierToAdd = array();
foreach ($tab_assign as $key_assign => $assign) {
if (in_array($assign, $supplierToAdd)) {
// This assigned supplier ID is already added;
continue;
}
$input3 = array($supplieractors->getItilObjectForeignKey() => $this->fields['id'], 'suppliers_id' => $assign, 'type' => CommonITILActor::ASSIGN);
if (isset($this->input["_suppliers_id_assign_notif"])) {
foreach ($this->input["_suppliers_id_assign_notif"] as $key => $val) {
$input3[$key] = $val[$key_assign];
}
}
//empty supplier
if ($input3['suppliers_id'] == 0 && (!isset($input3['alternative_email']) || empty($input3['alternative_email']))) {
continue;
} else {
if ($assign != 0) {
$supplierToAdd[] = $assign;
}
}
$input3['_from_object'] = true;
$supplieractors->add($input3);
}
}
}
// Additional actors
$this->addAdditionalActors($this->input);
}