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

Source for file class.comment.php

Documentation is available at class.comment.php

  1. <?php
  2. /**
  3.  * @package linea21.modules
  4.  * @subpackage comment
  5.  * @author Simon Georget <simon@linea21.com>
  6.  * @version $id SVN
  7.  * @access public
  8.  * @license http://opensource.org/licenses/gpl-3.0.html
  9.  *  Plugin Management
  10.  */
  11.  
  12. class comment {
  13.  
  14.   private $params array();
  15.   protected $dispatcher = null;
  16.  
  17.  
  18.   public function __construct($a array())
  19.   {
  20.     $this->dispatcher = $GLOBALS['dispatcher'];
  21.     $this->params $a;
  22.   }
  23.  
  24.   public function __call($method$arguments)
  25.   {
  26.     $event $this->dispatcher->notifyUntil(new sfEvent($this'comment.extensible_function'array(
  27.       'method'    => $method,
  28.       'arguments' => $arguments
  29.     )));
  30.     if (!$event->isProcessed())
  31.     {
  32.       throw new Exception(sprintf('Call to undefined method %s::%s.'get_class($this)$method));
  33.     }
  34.  
  35.     return $event->getReturnValue();
  36.   }
  37.  
  38.  
  39.   /**
  40.    * comment::checkDataIntegrity()
  41.    * Vérification intégrité des données
  42.    *
  43.    * @access public
  44.    * @param array $a 
  45.    * @return boolean true
  46.    *  si verifié, sinon string 'message d'erreur'
  47.    */
  48.  
  49.   public function checkDataIntegrity($a)
  50.   {
  51.     $event new sfEvent($this'comment.before_data_check');
  52.     $this->dispatcher->filter($event$a);
  53.  
  54.     $a $event->getReturnValue();
  55.  
  56.     // if not authenticated
  57.     if(!isset($_COOKIE['linea21']['login'])) {
  58.       if (strlen($a['name']3return _t('comment','no_name');
  59.       if (strlen($a['email']3return _t('comment','no_email');
  60.       $result $this->_checkEmailValidity($a['email']);
  61.       if (is_string($result)) return $result;
  62.     }
  63.  
  64.     if (strlen($a['body']3return _t('comment','no_body');
  65.  
  66.     $event new sfEvent($this'comment.after_data_check'array('data' => $a));
  67.     $this->dispatcher->notify($event);
  68.  
  69.     return true;
  70.   }
  71.  
  72.   /**
  73.    * comment::_checkEmailValidity()
  74.    * Email validation
  75.    *
  76.    * @access private
  77.    * @param string $email 
  78.    * @return string $result
  79.    *  return 1 si valide sinon message d'erreur (string)
  80.    */
  81.   function _checkEmailValidity($email)
  82.   {
  83.  
  84.     $is_valid validEmail($email);
  85.  
  86.     if(!$is_valid{
  87.       return sprintf(_t('contact','email_error')$email);
  88.     else {
  89.       return true;
  90.     }
  91.  
  92.   }
  93.  
  94.   public function add($a$sql_object{
  95.  
  96.     $a=$sql_object->DBescape($a);
  97.  
  98.     if ($a['name'!= ''{
  99.       $a['name'strip_input(trim($a['name'])false);
  100.     }
  101.     if ($a['email'!= ''{
  102.       $a['email'strip_input(trim($a['email'])false);
  103.     }
  104.     if ($a['url'!= ''{
  105.       $a['url'strip_input(trim($a['url'])false);
  106.     }
  107.  
  108.     if(COMMENT_MODERATION  == 1{
  109.       $a['status']='D';
  110.       // if user is logged-in, do we moderate or not?
  111.       if(!empty($a['user_id']&& COMMENT_MODERATE_REGISTERED  == 0$a['status']='P';
  112.     }
  113.     else $a['status']='P';
  114.  
  115.     $q "INSERT INTO " T_COMM " (comment_module, comment_module_id, comment_user_id, comment_name, comment_email, comment_url, comment_body, comment_notification, comment_status, comment_date_crea) VALUES('" $a['module'"', '" $a['module_id'"', '" $a['user_id'"', '" $a['name'"', '" $a['email'"', '" $a['url'"', '" $a['body'"', '" $a['notification'"', '" $a['status']"', now());";
  116.  
  117.     $last_id $sql_object->DBInsert ($q1);
  118.     return $last_id;
  119.   }
  120.  
  121.   public function get($options$sql_object{
  122.  
  123.     $data $sql_object->DBSelect(SQL_getComments($options));
  124.  
  125.     return $data;
  126.   }
  127.  
  128.   public function getCommentItem($options$sql_object{
  129.  
  130.     $data $sql_object->DBSelect(SQL_getCommentItem($options));
  131.  
  132.     return $data;
  133.   }
  134.  
  135.   public function getSubscribers($options$sql_object{
  136.  
  137.     $data array();
  138.  
  139.     $tmp1 $sql_object->DBSelect(SQL_getRegisteredSubscribers($options$sql_object));
  140.     $tmp2 $sql_object->DBSelect(SQL_getNonRegisteredSubscribers($options$sql_object));
  141.     if(!is_array($tmp1)) $tmp1 array();
  142.     if(is_array($tmp2)) $tmp array_merge($tmp1$tmp2);
  143.  
  144.     // we ensure there is no duplicate emails
  145.     foreach($tmp as $el{
  146.       if(!in_array($el['user_email']$data)) {
  147.         array_push($data$el['user_email']);
  148.       }
  149.     }
  150.  
  151.     return $data;
  152.   }
  153.  
  154.   public function getByModule($options$sql_object{
  155.  
  156.     $data $sql_object->DBSelect(SQL_getModuleComments($options));
  157.  
  158.     return $data;
  159.   }
  160.  
  161.   /*
  162.    * get all comments awaiting for moderation
  163.    */
  164.   public function getAllByModule($status$sql_object$limit false$sort false{
  165.  
  166.     $r array();
  167.  
  168.     if(MOD_NEWS == 1{
  169.       $tmp $this->getByModule(array('module' => 'news''status' => $status'limit' => $limit)$sql_object'module');
  170.       if(is_array($tmp)) $r array_merge($r$tmp);
  171.     }
  172.     if(MOD_PROJECT == 1{
  173.       $tmp $this->getByModule(array('module' => 'project''status' => $status'limit' => $limit)$sql_object'module');
  174.       if(is_array($tmp)) $r array_merge($r$tmp);
  175.     }
  176.     if(MOD_WORKSHOP == 1{
  177.       $tmp $this->getByModule(array('module' => 'workgroups''status' => $status'limit' => $limit)$sql_object'module');
  178.       if(is_array($tmp)) $r array_merge($r$tmp);
  179.     }
  180.     if(MOD_WORKSHOP == 1{
  181.       $tmp $this->getByModule(array('module' => 'report''status' => $status'limit' => $limit)$sql_object'module');
  182.       if(is_array($tmp)) $r array_merge($r$tmp);
  183.     }
  184.     if(MOD_WORKSHOP == 1{
  185.       $tmp $this->getByModule(array('module' => 'files''status' => $status'limit' => $limit)$sql_object'module');
  186.       if(is_array($tmp)) $r array_merge($r$tmp);
  187.     }
  188.     if(MOD_SDI == 1{
  189.       $tmp $this->getByModule(array('module' => 'indicator''status' => $status'limit' => $limit)$sql_object'module');
  190.       if(is_array($tmp)) $r array_merge($r$tmp);
  191.     }
  192.     if(MOD_PUBLICATION == 1{
  193.       $tmp $this->getByModule(array('module' => 'publication''status' => $status'limit' => $limit)$sql_object'module');
  194.       if(is_array($tmp)) $r array_merge($r$tmp);
  195.     }
  196.     $tmp $this->getByModule(array('module' => 'contribute''status' => $status'limit' => $limit)$sql_object'module');
  197.     if(is_array($tmp)) $r array_merge($r$tmp);
  198.  
  199.     if($sort == 'date'{
  200.       // on obtient une liste de colonnes
  201.       foreach ($r as $key => $row{
  202.         $date[$key]  $row['comment_date_timestamp'];
  203.       }
  204.  
  205.       // Tri des données par date décroissante
  206.       // Ajoute $r en tant que dernier paramètre, pour trier par la clé commune
  207.       if(isset($date&& is_array($date)) array_multisort($dateSORT_DESC$r);
  208.     }
  209.     if($limit != false{
  210.       $r array_slice($r0$limit);
  211.     }
  212.  
  213.     return $r;
  214.   }
  215.  
  216.  
  217.   public function modify({
  218.  
  219.  
  220.   }
  221.  
  222.   public function isNew($id$sql_object{
  223.  
  224.     $id $sql_object->DBEscape($id);
  225.     $q "SELECT comment_status FROM " T_COMM " WHERE  comment_id = '".$id."';";
  226.     $r $sql_object->DBSelect($q);
  227.     
  228.     if($r[0]['comment_status'== 'D'{
  229.       return true;
  230.     else {
  231.       return false;
  232.     }
  233.     
  234.   }
  235.   
  236.   
  237.  
  238.   public function unsubsribe($a$sql_object{
  239.  
  240.     // if registered user
  241.     $a $sql_object->DBEscape($a);
  242.     $q "SELECT U.user_id, P.profile_email FROM " T_USER " AS U LEFT OUTER JOIN " T_PROFILE " AS P ON P.profile_id = U.user_profile WHERE  P.profile_email = '".$a['email']."'";
  243.  
  244.     $data $sql_object->DBSelect($q);
  245.  
  246.     if(count($data&& $data != 0{
  247.       // we loop because (in theory) a user can have several accounts associtaed with one unique email
  248.       for($i=0$i count($data)$i++{
  249.         $q "UPDATE "T_COMM " SET comment_notification = 'N' WHERE comment_module='".$a['module']."' AND comment_module_id='".$a['module_id']."' AND comment_status <> 'D' AND comment_user_id='".$data[$i]['user_id']."'";
  250.         $r $sql_object->DBQuery($q);
  251.       }
  252.     }
  253.  
  254.     // if not registered user
  255.     $q "UPDATE "T_COMM " SET comment_notification = 'N' WHERE comment_module='".$a['module']."' AND comment_module_id='".$a['module_id']."' AND comment_status <> 'D' AND comment_email='".$a['email']."'";
  256.     $r $sql_object->DBQuery($q);
  257.  
  258.     return $r;
  259.  
  260.   }
  261.  
  262.   public function delete($id$sql_object{
  263.  
  264.     $id $sql_object->DBEscape($id);
  265.     $q "DELETE FROM "T_COMM " WHERE comment_id='".$id."'";
  266.     $r $sql_object->DBQuery($q);
  267.  
  268.     return $r;
  269.   }
  270.  
  271.   public function disapprove($id$sql_object{
  272.  
  273.     $id $sql_object->DBEscape($id);
  274.     $q "UPDATE "T_COMM " SET comment_status = 'E' WHERE comment_id='".$id."'";
  275.     $r $sql_object->DBQuery($q);
  276.  
  277.     return $r;
  278.   }
  279.  
  280.   public function approve($id$sql_object{
  281.  
  282.     $id $sql_object->DBEscape($id);
  283.     $q "UPDATE "T_COMM " SET comment_status = 'P' WHERE comment_id='".$id."'";
  284.     $r $sql_object->DBQuery($q);
  285.  
  286.     return $r;
  287.  
  288.   }
  289.  
  290.  
  291.  
  292. }
  293.  
  294. ?>

Documentation generated on Thu, 03 May 2012 15:02:20 +0200 by phpDocumentor 1.4.1