private function addAdditionalActors($input)
{
$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();
}
// Additional groups actors
if (!is_null($groupactors)) {
// Requesters
if (isset($input['_additional_groups_requesters']) && is_array($input['_additional_groups_requesters']) && count($input['_additional_groups_requesters'])) {
$input2 = array($groupactors->getItilObjectForeignKey() => $this->fields['id'], 'type' => CommonITILActor::REQUESTER);
foreach ($input['_additional_groups_requesters'] as $tmp) {
if ($tmp > 0) {
$input2['groups_id'] = $tmp;
$input2['_from_object'] = true;
$groupactors->add($input2);
}
}
}
// Observers
if (isset($input['_additional_groups_observers']) && is_array($input['_additional_groups_observers']) && count($input['_additional_groups_observers'])) {
$input2 = array($groupactors->getItilObjectForeignKey() => $this->fields['id'], 'type' => CommonITILActor::OBSERVER);
foreach ($input['_additional_groups_observers'] as $tmp) {
if ($tmp > 0) {
$input2['groups_id'] = $tmp;
$input2['_from_object'] = true;
$groupactors->add($input2);
}
}
}
// Assigns
if (isset($input['_additional_groups_assigns']) && is_array($input['_additional_groups_assigns']) && count($input['_additional_groups_assigns'])) {
$input2 = array($groupactors->getItilObjectForeignKey() => $this->fields['id'], 'type' => CommonITILActor::ASSIGN);
foreach ($input['_additional_groups_assigns'] as $tmp) {
if ($tmp > 0) {
$input2['groups_id'] = $tmp;
$input2['_from_object'] = true;
$groupactors->add($input2);
}
}
}
}
// Additional suppliers actors
if (!is_null($supplieractors)) {
// Assigns
if (isset($input['_additional_suppliers_assigns']) && is_array($input['_additional_suppliers_assigns']) && count($input['_additional_suppliers_assigns'])) {
$input2 = array($supplieractors->getItilObjectForeignKey() => $this->fields['id'], 'type' => CommonITILActor::ASSIGN);
foreach ($input['_additional_suppliers_assigns'] as $tmp) {
if ($tmp > 0) {
$input2['suppliers_id'] = $tmp;
$input2['_from_object'] = true;
$supplieractors->add($input2);
}
}
}
}
// Additional actors : using default notification parameters
if (!is_null($useractors)) {
// Observers : for mailcollector
if (isset($input["_additional_observers"]) && is_array($input["_additional_observers"]) && count($input["_additional_observers"])) {
$input2 = array($useractors->getItilObjectForeignKey() => $this->fields['id'], 'type' => CommonITILActor::OBSERVER, '_from_object' => true);
foreach ($input["_additional_observers"] as $tmp) {
if (isset($tmp['users_id'])) {
foreach ($tmp as $key => $val) {
$input2[$key] = $val;
}
$useractors->add($input2);
}
}
}
if (isset($input["_additional_assigns"]) && is_array($input["_additional_assigns"]) && count($input["_additional_assigns"])) {
$input2 = array($useractors->getItilObjectForeignKey() => $this->fields['id'], 'type' => CommonITILActor::ASSIGN, '_from_object' => true);
foreach ($input["_additional_assigns"] as $tmp) {
if (isset($tmp['users_id'])) {
foreach ($tmp as $key => $val) {
$input2[$key] = $val;
}
$useractors->add($input2);
}
}
}
if (isset($input["_additional_requesters"]) && is_array($input["_additional_requesters"]) && count($input["_additional_requesters"])) {
$input2 = array($useractors->getItilObjectForeignKey() => $this->fields['id'], 'type' => CommonITILActor::REQUESTER, '_from_object' => true);
foreach ($input["_additional_requesters"] as $tmp) {
if (isset($tmp['users_id'])) {
foreach ($tmp as $key => $val) {
$input2[$key] = $val;
}
$useractors->add($input2);
}
}
}
}
}