Ignore:
Timestamp:
Sep 26, 2010, 9:59:08 PM (11 years ago)
Author:
teymour
Message:

Gestion de l'envoi de confirmation + qq correction de bug

File:
1 edited

Legend:

Unmodified
Added
Removed
  • cpc/trunk/project/apps/frontend/modules/alerte/actions/actions.class.php

    r1437 r1441  
    6666  }
    6767
     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  }
    6876  private function redirectPostSave($alerte = null) {
    6977    if ($citoyen_id = $this->getUser()->getAttribute('user_id'))
    7078      return $this->redirect('alerte/list');
    71     else if ($alerte_id)
    72       return $this->redirect('alerte/edit?id='.$alerte_id);
     79    else if ($alerte)
     80      return $this->redirect('alerte/edit?verif='.$alerte->verif);
    7381    else
    7482      return $this->redirect('@homepage');
     
    8391      $form->bind($request->getParameter($form->getName()));
    8492      if ($form->isValid()) {
    85         $form->save();
     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        }
    86101        if ($this->submit == 'Créer') {
    87           $this->getUser()->setFlash('notice', 'Votre alerte email a été créée');
     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          }
    88108        }else {
    89109          $this->getUser()->setFlash('notice', 'Votre alerte email a été modifiée');
    90110        }
    91         return $this->redirectPostSave($form->getObject()->id);
     111        return $this->redirectPostSave($form->getObject());
    92112      }
    93113    }
    94114    return $form;
    95115  }
     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  }
    96128}
Note: See TracChangeset for help on using the changeset viewer.