1 | <?php |
---|
2 | |
---|
3 | /** |
---|
4 | * alerte actions. |
---|
5 | * |
---|
6 | * @package cpc |
---|
7 | * @subpackage alerte |
---|
8 | * @author Your name here |
---|
9 | * @version SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $ |
---|
10 | */ |
---|
11 | class alerteActions extends sfActions |
---|
12 | { |
---|
13 | public function executeParlementaire(sfWebRequest $request) |
---|
14 | { |
---|
15 | $slug = $request->getParameter('slug'); |
---|
16 | $this->forward404Unless($slug); |
---|
17 | $parlementaire = doctrine::getTable('Parlementaire')->findOneBySlug($slug); |
---|
18 | $this->forward404Unless($parlementaire); |
---|
19 | $alerte = new Alerte(); |
---|
20 | $alerte->query = 'Parlemenaire='.urlencode($parlementaire); |
---|
21 | $alerte->no_human_query = 1; |
---|
22 | $alerte->titre = 'Recherche relative aux travaux de '.$parlementaire->nom; |
---|
23 | $this->submit = 'Créer'; |
---|
24 | $this->form = $this->processForm($request, $alerte); |
---|
25 | $this->setTemplate('form'); |
---|
26 | } |
---|
27 | |
---|
28 | public function executeList(sfWebRequest $request) { |
---|
29 | $citoyen_id = $this->getUser()->getAttribute('user_id'); |
---|
30 | $this->forward404Unless($citoyen_id); |
---|
31 | $citoyen = doctrine::getTable('Citoyen')->find($citoyen_id); |
---|
32 | $this->forward404Unless($citoyen); |
---|
33 | $sql = doctrine::getTable('Alerte')->createQuery('a')->where('a.citoyen_id = ?', $citoyen_id)->orWhere('a.email = ?', $citoyen->getEmail()); |
---|
34 | $this->alertes = $sql->execute(); |
---|
35 | } |
---|
36 | |
---|
37 | |
---|
38 | public function executeCreate(sfWebRequest $request) |
---|
39 | { |
---|
40 | $alerte = new Alerte(); |
---|
41 | $alerte->query = $request->getParameter('query'); |
---|
42 | $alerte->filter = $request->getParameter('filter'); |
---|
43 | $this->submit = 'Créer'; |
---|
44 | $this->form = $this->processForm($request, $alerte); |
---|
45 | $this->setTemplate('form'); |
---|
46 | } |
---|
47 | public function executeDelete(sfWebRequest $request) |
---|
48 | { |
---|
49 | $this->forward404Unless($this->alerte = Doctrine::getTable('Alerte')->createQuery('a')->where('verif = ?', $request->getParameter('verif'))->fetchOne()); |
---|
50 | if ($request->isMethod('post')) { |
---|
51 | if ($request->getParameter('confirmed')) { |
---|
52 | $this->alerte->delete(); |
---|
53 | $this->getUser()->setFlash('notice', 'Votre alerte email a bien été supprimée'); |
---|
54 | }else |
---|
55 | $this->getUser()->setFlash('error', 'Votre alerte email n\'a pas été supprimée'); |
---|
56 | return $this->redirectPostSave(); |
---|
57 | } |
---|
58 | } |
---|
59 | |
---|
60 | public function executeEdit(sfWebRequest $request) |
---|
61 | { |
---|
62 | $this->forward404Unless($alerte = Doctrine::getTable('Alerte')->createQuery('a')->where('verif = ?', $request->getParameter('verif'))->fetchOne()); |
---|
63 | $this->form = $this->processForm($request, $alerte); |
---|
64 | $this->submit = 'Éditer'; |
---|
65 | $this->setTemplate('form'); |
---|
66 | } |
---|
67 | |
---|
68 | public function executeConfirmation(sfWebRequest $request) |
---|
69 | { |
---|
70 | $this->forward404Unless($alerte = Doctrine::getTable('Alerte')->createQuery('a')->where('verif = ?', $request->getParameter('verif'))->fetchOne()); |
---|
71 | $alerte->confirmed = 1; |
---|
72 | $alerte->save(); |
---|
73 | $this->getUser()->setFlash('notice', 'Merci d\'avoir confirmé votre alerte'); |
---|
74 | return $this->redirect("@homepage"); |
---|
75 | } |
---|
76 | private function redirectPostSave($alerte = null) { |
---|
77 | if ($citoyen_id = $this->getUser()->getAttribute('user_id')) |
---|
78 | return $this->redirect('alerte/list'); |
---|
79 | else if ($alerte) |
---|
80 | return $this->redirect('alerte/edit?verif='.$alerte->verif); |
---|
81 | else |
---|
82 | return $this->redirect('@homepage'); |
---|
83 | } |
---|
84 | |
---|
85 | private function processForm($request, $alerte) { |
---|
86 | if ($citoyen_id = $this->getUser()->getAttribute('user_id')) { |
---|
87 | $alerte->citoyen_id = $citoyen_id; |
---|
88 | } |
---|
89 | $form = new AlerteForm($alerte); |
---|
90 | if ($request->isMethod('post')) { |
---|
91 | $form->bind($request->getParameter($form->getName())); |
---|
92 | if ($form->isValid()) { |
---|
93 | try { |
---|
94 | if (!$form->save()) { |
---|
95 | throw new Exception(); |
---|
96 | } |
---|
97 | }catch(Exception $e) { |
---|
98 | $this->getUser()->setFlash('error', 'Désolé nous n\'avons pu créer votre alerte, vous y étiez sans doute déjà abonné'); |
---|
99 | return $this->redirect('@homepage'); |
---|
100 | } |
---|
101 | if ($this->submit == 'Créer') { |
---|
102 | if ($alerte->confirmed) |
---|
103 | $this->getUser()->setFlash('notice', 'Votre alerte email a été créée'); |
---|
104 | else { |
---|
105 | $this->confirmeAlerte($alerte); |
---|
106 | $this->getUser()->setFlash('notice', 'Votre alerte email a été créée, merci de confirmer votre abonnement par email'); |
---|
107 | } |
---|
108 | }else { |
---|
109 | $this->getUser()->setFlash('notice', 'Votre alerte email a été modifiée'); |
---|
110 | } |
---|
111 | return $this->redirectPostSave($form->getObject()); |
---|
112 | } |
---|
113 | } |
---|
114 | return $form; |
---|
115 | } |
---|
116 | private function confirmeAlerte($alerte) { |
---|
117 | $message = $this->getMailer()->compose(array('no-reply@nosdeputes.fr' => 'Regards Citoyens (ne pas répondre)'), |
---|
118 | $alerte->email, |
---|
119 | '[NosDeputes.fr] Confirmation d\'Alerte email - '.$alerte->titre); |
---|
120 | $text = $this->getPartial('mail/sendConfirmationAlerte', array('alerte' => $alerte)); |
---|
121 | $message->setBody($text, 'text/plain'); |
---|
122 | try { |
---|
123 | $this->getMailer()->send($message); |
---|
124 | }catch(Exception $e) { |
---|
125 | echo "Oups could not send email ($text)\n"; |
---|
126 | } |
---|
127 | } |
---|
128 | } |
---|