Skip to content
Snippets Groups Projects

full plugin mod for multiselection

Compare and Show latest version
3 files
+ 165
131
Preferences
Compare changes
Files
3
@@ -22,6 +22,12 @@
class Admin_NewsletterController extends ZendAfi_Controller_Action {
const SESSION_NAMESPACE = 'Admin_NewsletterController';
public function getPlugins() {
return ['ZendAfi_Controller_Plugin_Manager_Newsletter'];
}
public function getRessourceDefinitions() {
return ['model' => ['class' => 'Class_Newsletter',
'name' => 'newsletter',
@@ -68,49 +74,6 @@ function sendNewsletterClick(event) {
}
public function duplicateAction() {
$this->_redirectToIndex();
if (!$newsletter = Class_Newsletter::find($this->_getParam('id'))) {
$this->_helper->notify($this->_('Duplication impossible: la source n\'a pas été trouvée.'));
return;
}
if (!$newsletter->duplicate())
$this->_helper->notify($this->_('Duplication impossible: Erreur lors de l\'enregisrement de la copie.'));
}
public function editSubscribersAction() {
if (!$model = Class_Newsletter::find($this->_getParam('id'))) {
$this->_redirectToIndex();
return;
}
$this->_addModelToView($model);
if ($user = Class_Users::find($this->_getParam('unsubscribe',0)))
$model->unsubscribeUser($user);
if ($user = Class_Users::find($this->_getParam('subscribe',0)))
$model->subscribeUser($user);
$this->view->titre = $this->_('Destinataires de la lettre : %s',
$model->getTitre());
$this->view->newsletter = $model;
$this->view->groups = $model->getSortedRecipientsByDedicatedAndLabel();
$criteria = (new Class_User_SearchCriteria($this->_request->getParams()))
->addCriteria(new Class_User_SearchCriteria_NewsletterSubscriptionStatus($this->_request->getParams()))
->addCriteria(new Class_User_SearchCriteria_WithMail($this->_request->getParams()));
$this->_helper->userSearch(['id' => $model->getId()], $criteria);
}
public function sendAction() {
if (!$newsletter = Class_Newsletter::find((int)$this->_getParam('id'))) {
$this->_helper->notify($this->_('Envoi impossible : Newsletter inconnue'));
@@ -158,8 +121,6 @@ function sendNewsletterClick(event) {
}
}
$this->_addModelToView($newsletter);
$this->view->titre = $this->_('Tester l\'envoi de la lettre : %s', $newsletter->getLibelle());
$this->view->form = $form;
}
@@ -191,92 +152,6 @@ function sendNewsletterClick(event) {
}
public function previewAction() {
if (!$newsletter = Class_Newsletter::find((int)$this->_getParam('id'))) {
$this->_redirectToIndex();
return;
}
$this->_addModelToView($newsletter);
$template = Class_Newsletter_Dispatch::newFrom($newsletter)->getTemplate();
$mock_user = new Class_Entity();
$mock_user->setId(0)->setMail('');
$this->view->titre = $this->_('Aperçu de la lettre : %s', $newsletter->getLibelle());
$this->view->mail = $template->mailFor($mock_user);
}
public function addGroupAction() {
if (!$model = Class_Newsletter::find((int)$this->_getParam('id'))) {
$this->_redirectToIndex();
return;
}
$this->view->titre = $this->_('Groupes destinataires');
$ids = array_map(function($group) { return $group->getId(); },
$model->getUserGroups());
$value = implode('-', $ids);
$form = ZendAfi_Form::newWithOptions(['action' => $this->view->url(),
'method' => Zend_Form::METHOD_POST])
->addElement('userGroup', 'subscribe_group_ids',
['label' => '',
'categories_selectable' => false,
'url' => $this->view->url(['module' => 'admin',
'controller' => 'usergroup',
'action' => 'list.json']),
'value' => $value])
->addDisplayGroup(['subscribe_group_ids'],
'groups',
['legend' => $this->_('Groupes destinataires')]);
if ($this->_request->isPost()
&& $form->isValid($this->_request->getPost())) {
$ids = explode('-', $this->_getParam('subscribe_group_ids', ''));
$mapper = function($id) {
return Class_UserGroup::find((int)$id);
};
$model
->setUserGroups(array_filter(array_map($mapper, $ids)))
->save();
$this->_redirectClose($this->view->url(['module' => 'admin',
'controller' => 'newsletter',
'action' => 'edit-subscribers',
'id' => $model->getId()], null, true),
['prependBase' => false]);
return;
}
$this->view->form = $form;
}
public function removeGroupAction() {
if (!$model = Class_Newsletter::find($this->_getParam('newsletter_id'))) {
$this->_redirectToIndex();
return;
}
$subscription = Class_NewsletterGroupSubscription::findFirstBy(['newsletter_id' => $model->getId(),
'user_group_id' => (int)$this->_getParam('id')]);
if ($subscription && !$subscription->hasDedicatedGroup())
$subscription->delete();
$this->_redirect($this->view->url(['module' => 'admin',
'controller' => 'newsletter',
'action' => 'edit-subscribers',
'id' => $model->getId()], null, true),
['prependBase' => false]);
}
public function showStatusAction() {