CommonITILObject::prepareInputForUpdate PHP Метод

prepareInputForUpdate() публичный Метод

public prepareInputForUpdate ( $input )
    function prepareInputForUpdate($input)
    {
        // Add document if needed
        $this->getFromDB($input["id"]);
        // entities_id field required
        if (!isset($input['_donotadddocs']) || !$input['_donotadddocs']) {
            $docadded = $this->addFiles(1, isset($input['_disablenotif']) ? $input['_disablenotif'] : 0);
            if (isset($this->input['_forcenotif'])) {
                $input['_forcenotif'] = $this->input['_forcenotif'];
                unset($input['_disablenotif']);
            }
            if (isset($this->input['content'])) {
                $input['content'] = $this->input['content'];
            }
        }
        if (isset($input["document"]) && $input["document"] > 0) {
            $doc = new Document();
            if ($doc->getFromDB($input["document"])) {
                $docitem = new Document_Item();
                if ($docitem->add(array('documents_id' => $input["document"], 'itemtype' => $this->getType(), 'items_id' => $input["id"]))) {
                    // Force date_mod of tracking
                    $input["date_mod"] = $_SESSION["glpi_currenttime"];
                    $input['_doc_added'][] = $doc->fields["name"];
                }
            }
            unset($input["document"]);
        }
        if (isset($input["date"]) && empty($input["date"])) {
            unset($input["date"]);
        }
        if (isset($input["closedate"]) && empty($input["closedate"])) {
            unset($input["closedate"]);
        }
        if (isset($input["solvedate"]) && empty($input["solvedate"])) {
            unset($input["solvedate"]);
        }
        if (isset($input['_itil_requester'])) {
            if (isset($input['_itil_requester']['_type'])) {
                $input['_itil_requester']['type'] = CommonITILActor::REQUESTER;
                $input['_itil_requester'][$this->getForeignKeyField()] = $input['id'];
                switch ($input['_itil_requester']['_type']) {
                    case "user":
                        if (isset($input['_itil_requester']['use_notification']) && is_array($input['_itil_requester']['use_notification'])) {
                            $input['_itil_requester']['use_notification'] = $input['_itil_requester']['use_notification'][0];
                        }
                        if (isset($input['_itil_requester']['alternative_email']) && is_array($input['_itil_requester']['alternative_email'])) {
                            $input['_itil_requester']['alternative_email'] = $input['_itil_requester']['alternative_email'][0];
                        }
                        if (!empty($this->userlinkclass)) {
                            if (isset($input['_itil_requester']['alternative_email']) && $input['_itil_requester']['alternative_email'] && !NotificationMail::isUserAddressValid($input['_itil_requester']['alternative_email'])) {
                                $input['_itil_requester']['alternative_email'] = '';
                                Session::addMessageAfterRedirect(__('Invalid email address'), false, ERROR);
                            }
                            if (isset($input['_itil_requester']['alternative_email']) && $input['_itil_requester']['alternative_email'] || $input['_itil_requester']['users_id'] > 0) {
                                $useractors = new $this->userlinkclass();
                                if (isset($input['_auto_update']) || $useractors->can(-1, CREATE, $input['_itil_requester'])) {
                                    $input['_itil_requester']['_from_object'] = true;
                                    $useractors->add($input['_itil_requester']);
                                    $input['_forcenotif'] = true;
                                }
                            }
                        }
                        break;
                    case "group":
                        if (!empty($this->grouplinkclass) && $input['_itil_requester']['groups_id'] > 0) {
                            $groupactors = new $this->grouplinkclass();
                            if (isset($input['_auto_update']) || $groupactors->can(-1, CREATE, $input['_itil_requester'])) {
                                $input['_itil_requester']['_from_object'] = true;
                                $groupactors->add($input['_itil_requester']);
                                $input['_forcenotif'] = true;
                            }
                        }
                        break;
                }
            }
        }
        if (isset($input['_itil_observer'])) {
            if (isset($input['_itil_observer']['_type'])) {
                $input['_itil_observer']['type'] = CommonITILActor::OBSERVER;
                $input['_itil_observer'][$this->getForeignKeyField()] = $input['id'];
                switch ($input['_itil_observer']['_type']) {
                    case "user":
                        if (isset($input['_itil_observer']['use_notification']) && is_array($input['_itil_observer']['use_notification'])) {
                            $input['_itil_observer']['use_notification'] = $input['_itil_observer']['use_notification'][0];
                        }
                        if (isset($input['_itil_observer']['alternative_email']) && is_array($input['_itil_observer']['alternative_email'])) {
                            $input['_itil_observer']['alternative_email'] = $input['_itil_observer']['alternative_email'][0];
                        }
                        if (!empty($this->userlinkclass)) {
                            if (isset($input['_itil_observer']['alternative_email']) && $input['_itil_observer']['alternative_email'] && !NotificationMail::isUserAddressValid($input['_itil_observer']['alternative_email'])) {
                                $input['_itil_observer']['alternative_email'] = '';
                                Session::addMessageAfterRedirect(__('Invalid email address'), false, ERROR);
                            }
                            if (isset($input['_itil_observer']['alternative_email']) && $input['_itil_observer']['alternative_email'] || $input['_itil_observer']['users_id'] > 0) {
                                $useractors = new $this->userlinkclass();
                                if (isset($input['_auto_update']) || $useractors->can(-1, CREATE, $input['_itil_observer'])) {
                                    $input['_itil_observer']['_from_object'] = true;
                                    $useractors->add($input['_itil_observer']);
                                    $input['_forcenotif'] = true;
                                }
                            }
                        }
                        break;
                    case "group":
                        if (!empty($this->grouplinkclass) && $input['_itil_observer']['groups_id'] > 0) {
                            $groupactors = new $this->grouplinkclass();
                            if (isset($input['_auto_update']) || $groupactors->can(-1, CREATE, $input['_itil_observer'])) {
                                $input['_itil_observer']['_from_object'] = true;
                                $groupactors->add($input['_itil_observer']);
                                $input['_forcenotif'] = true;
                            }
                        }
                        break;
                }
            }
        }
        if (isset($input['_itil_assign'])) {
            if (isset($input['_itil_assign']['_type'])) {
                $input['_itil_assign']['type'] = CommonITILActor::ASSIGN;
                $input['_itil_assign'][$this->getForeignKeyField()] = $input['id'];
                if (isset($input['_itil_assign']['use_notification']) && is_array($input['_itil_assign']['use_notification'])) {
                    $input['_itil_assign']['use_notification'] = $input['_itil_assign']['use_notification'][0];
                }
                if (isset($input['_itil_assign']['alternative_email']) && is_array($input['_itil_assign']['alternative_email'])) {
                    $input['_itil_assign']['alternative_email'] = $input['_itil_assign']['alternative_email'][0];
                }
                switch ($input['_itil_assign']['_type']) {
                    case "user":
                        if (!empty($this->userlinkclass) && $input['_itil_assign']['users_id'] > 0) {
                            $useractors = new $this->userlinkclass();
                            if (isset($input['_auto_update']) || $useractors->can(-1, CREATE, $input['_itil_assign'])) {
                                $input['_itil_assign']['_from_object'] = true;
                                $useractors->add($input['_itil_assign']);
                                $input['_forcenotif'] = true;
                                if (!isset($input['status']) && in_array($this->fields['status'], $this->getNewStatusArray()) || isset($input['status']) && in_array($input['status'], $this->getNewStatusArray())) {
                                    if (in_array(self::ASSIGNED, array_keys($this->getAllStatusArray()))) {
                                        $input['status'] = self::ASSIGNED;
                                    }
                                }
                            }
                        }
                        break;
                    case "group":
                        if (!empty($this->grouplinkclass) && $input['_itil_assign']['groups_id'] > 0) {
                            $groupactors = new $this->grouplinkclass();
                            if (isset($input['_auto_update']) || $groupactors->can(-1, CREATE, $input['_itil_assign'])) {
                                $input['_itil_assign']['_from_object'] = true;
                                $groupactors->add($input['_itil_assign']);
                                $input['_forcenotif'] = true;
                                if (!isset($input['status']) && in_array($this->fields['status'], $this->getNewStatusArray()) || isset($input['status']) && in_array($input['status'], $this->getNewStatusArray())) {
                                    if (in_array(self::ASSIGNED, array_keys($this->getAllStatusArray()))) {
                                        $input['status'] = self::ASSIGNED;
                                    }
                                }
                            }
                        }
                        break;
                    case "supplier":
                        if (!empty($this->supplierlinkclass) && $input['_itil_assign']['suppliers_id'] > 0) {
                            $supplieractors = new $this->supplierlinkclass();
                            if (isset($input['_auto_update']) || $supplieractors->can(-1, CREATE, $input['_itil_assign'])) {
                                $input['_itil_assign']['_from_object'] = true;
                                $supplieractors->add($input['_itil_assign']);
                                $input['_forcenotif'] = true;
                                if (!isset($input['status']) && in_array($this->fields['status'], $this->getNewStatusArray()) || isset($input['status']) && in_array($input['status'], $this->getNewStatusArray())) {
                                    if (in_array(self::ASSIGNED, array_keys($this->getAllStatusArray()))) {
                                        $input['status'] = self::ASSIGNED;
                                    }
                                }
                            }
                        }
                        break;
                }
            }
        }
        $this->addAdditionalActors($input);
        // set last updater if interactive user
        if (!Session::isCron()) {
            $input['users_id_lastupdater'] = Session::getLoginUserID();
        }
        if (isset($input["status"]) && !in_array($input["status"], array_merge($this->getSolvedStatusArray(), $this->getClosedStatusArray()))) {
            $input['solvedate'] = 'NULL';
        }
        if (isset($input["status"]) && !in_array($input["status"], $this->getClosedStatusArray())) {
            $input['closedate'] = 'NULL';
        }
        return $input;
    }

Usage Example

Пример #1
0
 function prepareInputForUpdate($input)
 {
     // Get change : need for comparison
     //       $this->getFromDB($input['id']);
     $input = parent::prepareInputForUpdate($input);
     return $input;
 }
All Usage Examples Of CommonITILObject::prepareInputForUpdate
CommonITILObject