AliasController::addAction PHP Метод

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

Add an alias.
public addAction ( )
    public function addAction()
    {
        if (!$this->getAlias()) {
            $this->isEdit = $this->view->isEdit = false;
            $form = $this->getAliasForm();
            $this->_alias = new \Entities\Alias();
            $this->getD2EM()->persist($this->getAlias());
            $this->getAlias()->setCreated(new \DateTime());
        } else {
            $this->isEdit = $this->view->isEdit = true;
            $this->view->alias = $this->getAlias();
            $form = $this->getAliasForm();
            $form->assignEntityToForm($this->getAlias(), $this, $this->isEdit());
        }
        $this->view->domainList = $domainList = $this->getD2EM()->getRepository("\\Entities\\Domain")->loadForAdminAsArray($this->getAdmin(), true);
        if ($this->getDomain()) {
            $this->view->domain = $this->getDomain();
            if ($form->getElement('domain')) {
                $form->getElement('domain')->setValue($this->getDomain()->getId());
            }
        }
        if ($this->getMailbox()) {
            $this->view->defaultGoto = "{$this->getMailbox()->getLocalPart()}@{$this->getDomain()->getDomain()}";
        }
        $this->view->alias = $this->getAlias();
        $this->view->emails = $this->_autocompleteArray();
        $this->notify('alias', 'add', 'addPrepare', $this);
        if ($this->getRequest()->isPost()) {
            $this->notify('alias', 'add', 'addPrevalidate', $this);
            if ($form->isValid($_POST)) {
                $this->notify('alias', 'add', 'addPostvalidate', $this);
                $form->assignFormToEntity($this->getAlias(), $this, $this->isEdit());
                if (!$this->_setGotos($form)) {
                    return;
                }
                if (!$this->isEdit()) {
                    if (!$this->getDomain() || $this->getDomain()->getId() != $form->getValue('domain')) {
                        $this->_domain = $this->loadDomain($form->getValue('domain'));
                    }
                    // do we have available aliases?
                    if (!$this->getAdmin()->isSuper() && $this->getDomain()->getMaxaliases() != 0 && $this->getDomain()->getAliasCount() >= $this->getDomain()->getMaxAliases()) {
                        $this->addMessage(_('You have used all of your allocated aliases.'), OSS_Message::ERROR);
                        $this->redirect("alias/list");
                    }
                    $this->getAlias()->setDomain($this->getDomain());
                    $this->getAlias()->setActive(1);
                    if (!$this->_setAddress($form)) {
                        return;
                    }
                } else {
                    $this->getAlias()->setModified(new \DateTime());
                }
                if (!$this->isEdit() && $this->getAlias()->getAddress() != $this->getAlias()->getGoto()) {
                    $this->getDomain()->setAliasCount($this->getDomain()->getAliasCount() + 1);
                }
                $this->log($this->isEdit() ? \Entities\Log::ACTION_ALIAS_EDIT : \Entities\Log::ACTION_ALIAS_ADD, "{$this->getAdmin()->getFormattedName()} " . ($this->isEdit() ? ' edited' : ' added') . " alias {$this->getAlias()->getAddress()}");
                $this->notify('alias', 'add', 'addPreflush', $this);
                $this->getD2EM()->flush();
                $this->notify('alias', 'add', 'addPostflush', $this);
                if ($this->getParam("did", false)) {
                    $this->getSessionNamespace()->domain = $this->getDomain();
                }
                $this->addMessage(_("You have successfully added/edited the alias."), OSS_Message::SUCCESS);
                $this->redirect('alias/list');
            }
        }
    }