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');
}
}
}