linea21-modules
[ class tree: linea21-modules ] [ index: linea21-modules ] [ all elements ]

Source for file class.newsletter.php

Documentation is available at class.newsletter.php

  1. <?php
  2. /**
  3.  * @package linea21.modules
  4.  * @subpackage newsletter
  5.  * @author linea21 <info@linea21.com>
  6.  * @version $id SVN
  7.  * @access public
  8.  * @license http://opensource.org/licenses/gpl-3.0.html
  9.  *  Newsletter Management
  10.  */
  11.  
  12. class newsletter {
  13.   /* @param
  14.    * */
  15.   var $TDB_NEWSLETTERT_NEWSLETTER// nom de la table.
  16.   var $TDB_COLLECTOR = T_EMAIL_COL// nom de la table.
  17.   var $URI_TEMPLATE = "../newsletter/input/template"// chemin du template de mail
  18.   var $URI_ELEMENTS = "elements/"// repertoire stockage élements newsletter
  19.   var $ID;
  20.   var $TITLE;
  21.   var $BODY;
  22.   var $POSTED_BY;
  23.   var $DATE_CREA;
  24.   var $LAST_MODIFY;
  25.   var $PUBLISHED_DATE;
  26.   var $STATUT;
  27.  
  28.   var $E_ID;
  29.   var $E_EMAIL;
  30.   var $E_STATUT;
  31.   var $E_DATE_CREA;
  32.   var $E_LAST_MODIFY;
  33.   protected $dispatcher = null;
  34.  
  35.   public function __construct()
  36.   {
  37.     $this->dispatcher = $GLOBALS['dispatcher'];
  38.   }
  39.  
  40.   public function __call($method$arguments)
  41.   {
  42.     $event $this->dispatcher->notifyUntil(new sfEvent($this'newsletter.extensible_function'array(
  43.       'method'    => $method,
  44.       'arguments' => $arguments
  45.     )));
  46.     if (!$event->isProcessed())
  47.     {
  48.       throw new Exception(sprintf('Call to undefined method %s::%s.'get_class($this)$method));
  49.     }
  50.  
  51.     return $event->getReturnValue();
  52.   }
  53.  
  54.   /**
  55.    * news::CheckDataIntegrity()
  56.    * Vérification intégrité des données
  57.    *
  58.    * @access public
  59.    * @param array $table : contient les composants Nécessaires d'une newsletter
  60.    * @return boolean true
  61.    *  si verifié, sinon string 'message d'erreur'
  62.    */
  63.  
  64.   function CheckDataIntegrity($table)
  65.   {
  66.       // Filter data event + return value
  67.       $r $this->dispatcher->filter(new sfEvent($this'newsletter.before_datacheck'array('data' => $table))$table);
  68.       $table $r->getReturnValue();
  69.       
  70.     if (strlen($table[0]3return _t('newsletter','no_title');
  71.     if (strlen($table[1]50return _t('newsletter','no_body');
  72.     
  73.     // Notify the beginning of the current method
  74.     $this->dispatcher->notify(new sfEvent($this'newsletter.after_datacheck'array('data' => $table)));
  75.  
  76.     return true;
  77.   }
  78.  
  79.   /**
  80.    * newsletter::_checkEmailValidity()
  81.    * Vérification de la validité d'un email
  82.    *
  83.    * @access private
  84.    * @param string $email 
  85.    * @return bool true ou string ( erreur )
  86.    */
  87.   function _checkEmailValidity($email)
  88.   {
  89.  
  90.     $is_valid validEmail($email);
  91.  
  92.     if(!$is_valid{
  93.       return _t('newsletter','invalid_mail'" :'" $email "'";
  94.     else {
  95.       return true;
  96.     }
  97.   }
  98.  
  99.   /**
  100.    * newsletter::AddNewsletter()
  101.    * Ajout d'une newsletter
  102.    *
  103.    * @access public
  104.    * @param array $table_newsletter : contient les composants d'une newsletter
  105.    * @param object $sql_object 
  106.    * @return integer $last_id
  107.    */
  108.   function AddNewsletter($table_newsletter$sql_object)
  109.   {
  110.       // Filter data event + return value
  111.       $r $this->dispatcher->filter(new sfEvent($this'newsletter.before_add'array('data' => $table_newsletter))$table_newsletter);
  112.       $table_newsletter $r->getReturnValue();
  113.       
  114.     $table_newsletter=$sql_object->DBescape($table_newsletter);
  115.     if ($table_newsletter[0!= ''{
  116.       $this->TITLE = strip_input(trim($table_newsletter[0]));
  117.     }
  118.     if ($table_newsletter[1!= ''{
  119.       $this->BODY = strip_input(trim($table_newsletter[1])true);
  120.     }
  121.     if (is_numeric($table_newsletter[2])) {
  122.       $this->POSTED_BY = $table_newsletter[2];
  123.     }
  124.     $this->STATUT = $table_newsletter[3];
  125.      
  126.     $q "INSERT INTO " $this->TDB_NEWSLETTER . " (newsletter_title, newsletter_body, newsletter_posted_by, newsletter_date_crea , newsletter_last_modify, newsletter_statut) VALUES('" $this->TITLE . "', '" $this->BODY . "', '" $this->POSTED_BY . "', NOW() , NOW(), '" $this->STATUT . "');";
  127.  
  128.     $last_id $sql_object->DBInsert ($q1);
  129.     
  130.     // Notify the end of the current method
  131.     $this->dispatcher->notify(new sfEvent($this'newsletter.after_add'array('data' => $table_news'id' => $last_id)));
  132.     
  133.     return $last_id;
  134.   }
  135.  
  136.   /**
  137.    * newsletter::DeleteNewsletter()
  138.    * suppression d'une newsletter
  139.    *
  140.    * @access public
  141.    * @param int $ID : identifiant de la newsletter
  142.    * @param object $sql_object 
  143.    * @return bool $result
  144.    */
  145.  
  146.   function DeleteNewsletter($ID$sql_object)
  147.   {
  148.       // Notify the end of the current method
  149.       $this->dispatcher->notify(new sfEvent($this'newsletter.delete'array('id' => $ID)));
  150.       
  151.     $this->ID = $ID;
  152.     $q "UPDATE  " $this->TDB_NEWSLETTER . " set newsletter_statut='E', newsletter_last_modify=NOW() WHERE newsletter_id='" $this->ID . "';";
  153.     $result $sql_object->DBQuery($q);
  154.     return $result;
  155.   }
  156.  
  157.   /**
  158.    * newsletter::SetNewsletterPublished()
  159.    * rend une newsletter publié
  160.    *
  161.    * @access public
  162.    * @param int $ID : identifiant de la newsletter
  163.    * @param object $sql_object 
  164.    * @return bool $result
  165.    */
  166.  
  167.   function SetNewsletterPublished($ID$sql_object)
  168.   {
  169.       // Notify the end of the current method
  170.       $this->dispatcher->notify(new sfEvent($this'newsletter.set_published'array('id' => $ID)));
  171.       
  172.     $this->ID = $ID;
  173.     $q "UPDATE " $this->TDB_NEWSLETTER . " set newsletter_statut='P', newsletter_published_date=NOW() WHERE newsletter_id='" $this->ID . "' LIMIT 1;";
  174.     $result $sql_object->DBQuery($q);
  175.     return $result;
  176.   }
  177.  
  178.   /**
  179.    * newsletter::ModifyNewsletter()
  180.    * modification d'une newsletter
  181.    *
  182.    * @access public
  183.    * @param integer $ID : identifiant de la news
  184.    * @param object $sql_object 
  185.    * @param array $table_newsletter : contient les composants d'une newsletter
  186.    * @return boolean $result
  187.    */
  188.   function ModifyNewsletter($ID$table_newsletter$sql_object)
  189.   {
  190.       // Filter data event + return value
  191.       $r $this->dispatcher->filter(new sfEvent($this'newsletter.before_modify'array('data' => $table_newsletter'id' => $ID))$table_newsletter);
  192.       $table_newsletter $r->getReturnValue();
  193.       
  194.     $table_newsletter=$sql_object->DBescape($table_newsletter);
  195.     if (is_numeric($ID)) {
  196.       $this->ID = $ID;
  197.     }
  198.     if ($table_newsletter[0!= ''{
  199.       $this->TITLE = strip_input(trim($table_newsletter[0]));
  200.     }
  201.     if ($table_newsletter[1!= ''{
  202.       $this->BODY = strip_input(trim($table_newsletter[1])true);
  203.     }
  204.     $this->STATUT = $table_newsletter[2];
  205.  
  206.     $q "UPDATE  " $this->TDB_NEWSLETTER . " set newsletter_title='" $this->TITLE . "', newsletter_body='" $this->BODY . "' , newsletter_statut='" $this->STATUT . "', newsletter_last_modify=NOW() WHERE newsletter_id='" $this->ID . "';";
  207.     $result $sql_object->DBQuery($q);
  208.     
  209.     // Notify the end of the current method
  210.     $this->dispatcher->notify(new sfEvent($this'newsletter.after_modify'array('data' => $table_newsletter'id' => $this->ID)));
  211.     
  212.     return $result;
  213.   }
  214.  
  215.  
  216.   /**
  217.    * newsletter::AddEmail()
  218.    * Ajout d'un email dans le collecteur
  219.    * @access public
  220.    * @param  string $email email a ajouter
  221.    * @param object $sql_object 
  222.    * @return string $result
  223.    ***/
  224.   function AddEmail($email$sql_object)
  225.   {
  226.     $result $this -> _checkEmailValidity($email);
  227.     if (is_string($result)) return  array('code' => 'error''string' => $result);
  228.     
  229.     // Notify the end of the current method
  230.     $this->dispatcher->notify(new sfEvent($this'newsletter.add_email'array('email' => $email)));
  231.     
  232.     $this -> E_EMAIL = strtolower($email);
  233.     $q "SELECT emailcol_id, emailcol_validity FROM " $this -> TDB_COLLECTOR . " WHERE emailcol_email='" $this -> E_EMAIL . "';";
  234.     $data $sql_object -> DBSelect($q);
  235.     if ($data!=&& count($data== 1{
  236.       $this -> E_ID = $data[0]['emailcol_id'];
  237.       if ($data[0]['emailcol_validity']== "Y"{
  238.         return array('code' => 'info''string' => _t('newsletter','subscribe_yet'));
  239.       else {
  240.         $q "UPDATE " $this -> TDB_COLLECTOR . " SET emailcol_validity='Y' WHERE emailcol_id=" $this -> E_ID . ";";
  241.         if ($sql_object -> DBQuery($q)) return array('code' => 'confirm''string' => _t('newsletter','confirm_subscribe'));
  242.       }
  243.     else {
  244.       $q "INSERT INTO " $this -> TDB_COLLECTOR . " (emailcol_email,  emailcol_validity, emailcol_date_crea) " "VALUES('" $this -> E_EMAIL . "', 'Y', NOW());";
  245.       $last_id $sql_object -> DBInsert ($q1);
  246.       if (is_numeric($last_id)) return array('code' => 'confirm''string' => _t('newsletter','confirm_subscribe'));
  247.     }
  248.   }
  249.  
  250.  
  251.   /**
  252.    * newsletter::DeleteEmail()
  253.    * Suppression d'un email du collecteur
  254.    * @access public
  255.    * @param  string $email email a supprimer
  256.    * @param object $sql_object 
  257.    * @return string $result
  258.    ***/
  259.   function DeleteEmail($email$sql_object)
  260.   {
  261.     $result $this -> _checkEmailValidity($email);
  262.     if (is_string($result)) return  array('code' => 'error''string' => $result);
  263.     
  264.     // Notify the end of the current method
  265.     $this->dispatcher->notify(new sfEvent($this'newsletter.remove_email'array('email' => $email)));
  266.     
  267.     $this -> E_EMAIL = strtolower($email);
  268.     $q "SELECT emailcol_id FROM " $this -> TDB_COLLECTOR . " WHERE emailcol_email='" $this -> E_EMAIL . "' AND emailcol_validity='Y';";
  269.     $data$sql_object -> DBSelect($q);
  270.     if ($data!=&& count($data== 1{
  271.       $this -> E_ID = $data[0]['emailcol_id'];
  272.       $q "UPDATE " $this -> TDB_COLLECTOR . " SET emailcol_validity='N' WHERE emailcol_id=" $this -> E_ID . ";";
  273.       if ($sql_object -> DBQuery($q)) return array('code' => 'confirm''string' => _t('newsletter','confirm_del'));
  274.     else {
  275.       return array'code' => 'info''string' => _t('newsletter','no_suscribe'));
  276.     }
  277.   }
  278.  
  279. }
  280.  
  281. ?>

Documentation generated on Thu, 20 Mar 2014 16:46:17 +0100 by phpDocumentor 1.4.1