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

Source for file class.workshop.php

Documentation is available at class.workshop.php

  1. <?php
  2. /**
  3.  * @package linea21.modules
  4.  * @subpackage workshop
  5.  * @author linea21 <info@linea21.com>
  6.  * @version $id SVN
  7.  * @access public
  8.  * @license http://opensource.org/licenses/gpl-3.0.html
  9.  *  Work group Management
  10.  */
  11.  
  12. class workshop {
  13.   /* @param
  14.    * */
  15.   var $TDB_WORKSHOP = T_WORK// nom de la table.
  16.   var $ID;
  17.   var $DENOMINATION;
  18.   var $RESUME;
  19.   var $THEME;
  20.   var $COMMENT;
  21.   var $LEVEL;
  22.   var $DATE_CREA;
  23.   var $LAST_MODIFY;
  24.   var $STATUT;
  25.   protected $dispatcher = null;
  26.  
  27.   public function __construct()
  28.   {
  29.     $this->dispatcher = $GLOBALS['dispatcher'];
  30.   }
  31.  
  32.   public function __call($method$arguments)
  33.   {
  34.     $event $this->dispatcher->notifyUntil(new sfEvent($this'workshop.extensible_function'array(
  35.       'method'    => $method,
  36.       'arguments' => $arguments
  37.     )));
  38.     if (!$event->isProcessed())
  39.     {
  40.       throw new Exception(sprintf('Call to undefined method %s::%s.'get_class($this)$method));
  41.     }
  42.  
  43.     return $event->getReturnValue();
  44.   }
  45.  
  46.   /**
  47.    * workshop::CheckDataIntegrity()
  48.    * Vérification intégrité des données
  49.    *
  50.    * @access public
  51.    * @param array $table contient les composants d'un groupe de travail
  52.    * @return boolean true
  53.    *  si verifié, sinon string 'message d'erreur'
  54.    */
  55.   function CheckDataIntegrity($table$sql_object)
  56.   {
  57.     if (strlen($table[0]3return _t('workshop','no_title');
  58.     if (strlen($table[1]3return _t('workshop','no_resume');
  59.     if ($table[2== -1return _t('workshop','no_theme');
  60.  
  61.     if (substr($table[6]-1== ','{
  62.       $table[6substr($table[6]0-1);
  63.     }
  64.     $table_organizer @explode(','$table[6]);
  65.     for ($i 0;$i count($table_organizer);$i++{
  66.       $table_organizer[$itrim($table_organizer[$i]);
  67.       if (strlen(trim($table_organizer[$i])) 2$return _t('workshop','no_author');
  68.       $result $this->_CheckUserValidity($table_organizer[$i]$sql_object);
  69.       if (!is_numeric($result)) $return _t('workshop','author_not_valid'" : " $table_organizer[$i];
  70.       else $return $result;
  71.       $result_admin $this->_CheckAdmin($sql_object-1$table_organizer[$i]);
  72.       if ($result_admin == false$return _t('workshop','author_not_admin'" : " $table_organizer[$i];
  73.       if (!is_numeric($return)) return $return;
  74.     }
  75.     return $return;
  76.   }
  77.  
  78.   /**
  79.    * workshop::_CheckAdmin()
  80.    * Vérification droits d'utilisation avancé Admin ou Animateur
  81.    *
  82.    * @access private
  83.    * @param object $sql_object 
  84.    * @return integer $user_id (option)
  85.    * @param string $user_login (option)
  86.    * @return integer id de l'utilisateur si verifié, sinon false
  87.    */
  88.   function _CheckAdmin($sql_object$user_id = -1$user_login = -1)
  89.   {
  90.     if ($user_id <> -1{
  91.       $requete "SELECT rights_workshop, U.user_id FROM " T_USER " AS U LEFT OUTER JOIN " T_RIGHT " AS R on U.user_rights=R.rights_id  WHERE user_id='" $user_id "' AND user_validity='Y';";
  92.     }
  93.     if ($user_login <> -1{
  94.       $requete "SELECT rights_workshop, U.user_id FROM " T_USER " AS U LEFT OUTER JOIN " T_RIGHT " AS R on U.user_rights=R.rights_id  WHERE lower(user_login)= '" strtolower($user_login"' AND user_validity='Y';";
  95.     }
  96.     $result $sql_object->DBSelect($requete);
  97.     if ($result[0]['rights_workshop'== 'A' || $result[0]['rights_workshop'== 'O'return $result[0]['user_id'];
  98.     else return false;
  99.   }
  100.  
  101.   /**
  102.    * workshop::_CheckUserValidity()
  103.    * Vérification validité de l'utilisateur
  104.    *
  105.    * @access private
  106.    * @param string $login 
  107.    * @param object $sql_object 
  108.    * @return integer si $login existe
  109.    *  sinon renvoie false
  110.    */
  111.   function _CheckUserValidity($login$sql_object)
  112.   {
  113.     $requete "SELECT user_id FROM " T_USER " WHERE lower(user_login)= '" strtolower($login"' AND user_validity='Y';";
  114.     $result $sql_object->DBSelect($requete);
  115.     if ($result == 0return false;
  116.     if (count($result1exit();
  117.     else return (int)$result[0]['user_id'];
  118.   }
  119.  
  120.   /**
  121.    * workshop::CheckUsersIntegrity()
  122.    * Vérification pour ajout d'utilisateurs
  123.    *
  124.    * @access public
  125.    * @param string $logins 
  126.    * @param integer $id 
  127.    * @param object $sql_object 
  128.    * @param string $statut 
  129.    * @return string $result
  130.    */
  131.   function CheckUsersIntegrity($logins$id$sql_object$statut)
  132.   {
  133.  
  134.     if (strlen(trim($logins)) 2return _t('workshop','no_author');
  135.  
  136.     if (substr($logins-1== ','{
  137.       $logins substr($logins0-1);
  138.     }
  139.     $users @explode(','$logins);
  140.  
  141.     foreach ($users as $user{
  142.       $user trim($user);
  143.       // check if user exists
  144.       $result $this->_CheckUserValidity($user$sql_object);
  145.       if ($result== falsereturn _t('workshop','author_not_valid'" : " $user;
  146.       // check if user has rights enough
  147.       if ($statut == 'O'{
  148.         $result $this->_CheckAdmin($sql_object-1$user);
  149.         if ($result == falsereturn _t('workshop','author_not_admin'" : " $user;
  150.       }
  151.       // check if user is already member of the workgroup
  152.       $q "SELECT user_id FROM " T_USER " WHERE lower(user_login)= '" strtolower($user"' AND user_validity='Y';";
  153.       $data $sql_object->DBSelect($q);
  154.  
  155.       $q "SELECT COUNT(jwu_id) AS nb FROM " J_WORK_USERS " WHERE jwu_user_id=" $data[0]['user_id'" AND jwu_workshop_id=" $id ";";
  156.       $data $sql_object->DBSelect($q'OBJECT');
  157.       if ($data[0]->nb != 0return _t('workshop','yet_author'" : " $user;
  158.     }
  159.  
  160.     return true;
  161.   }
  162.  
  163.   /**
  164.    * workshop::AddWorkshop()
  165.    * Ajout d'un groupe de travail
  166.    *
  167.    * @access public
  168.    * @param array $table_workshop contient les composants d'un workshop
  169.    * @param object $sql_object 
  170.    * @return integer $last_id
  171.    */
  172.   function AddWorkshop($table_workshop$sql_object)
  173.   {
  174.     $table_workshop=$sql_object->DBescape($table_workshop);
  175.  
  176.     if($table_workshop[4== -1$table_workshop[4]=0;
  177.  
  178.     $this->DENOMINATION = strip_input(trim($table_workshop[0]));
  179.     $this->RESUME = strip_input(trim($table_workshop[1])true);
  180.     $this->THEME = $table_workshop[2];
  181.     $this->COMMENT = strip_input(trim($table_workshop[3])true);
  182.     $this->LEVEL = $table_workshop[4];
  183.     $this->STATUT = $table_workshop[5];
  184.  
  185.     $requete "INSERT INTO " $this->TDB_WORKSHOP . " (workshop_denomination, workshop_resume, workshop_theme, workshop_comment, workshop_level, workshop_statut, workshop_date_crea) VALUES('" $this->DENOMINATION . "', '" $this->RESUME . "', " $this->THEME . ", '" $this->COMMENT . "', " $this->LEVEL . ", '" $this->STATUT . "', NOW());";
  186.     $last_id $sql_object->DBInsert ($requete1);
  187.     return $last_id;
  188.   }
  189.  
  190.   /**
  191.    * workshop::ModifyWorkshop()
  192.    * modification d'un workshop
  193.    *
  194.    * @access public
  195.    * @param int $ID identifiant d'un workshop
  196.    * @param array $table_workshop contient les composants d'un workshop
  197.    * @param object $sql_object 
  198.    * @return bool $result
  199.    */
  200.   function ModifyWorkshop($ID$table_workshop$sql_object)
  201.   {
  202.     $table_workshop=$sql_object->DBescape($table_workshop);
  203.  
  204.     if($table_workshop[4== -1$table_workshop[4]=0;
  205.  
  206.     if (is_numeric($ID)) {
  207.       $this->ID = $ID;
  208.     }
  209.  
  210.     $this->DENOMINATION = strip_input(trim($table_workshop[0]));
  211.     $this->RESUME = strip_input(trim($table_workshop[1]true));
  212.     $this->THEME = $table_workshop[2];
  213.     $this->COMMENT = strip_input(trim($table_workshop[3]true));
  214.     $this->LEVEL = $table_workshop[4];
  215.  
  216.     $requete "UPDATE  " $this->TDB_WORKSHOP . " set workshop_denomination='" $this->DENOMINATION . "', workshop_resume='" $this->RESUME . "' , workshop_theme=" $this->THEME . ", workshop_level=" $this->LEVEL . ", workshop_comment='" $this->COMMENT . "' WHERE workshop_id=" $this->ID . ";";
  217.     $result $sql_object->DBQuery($requete);
  218.     return $result;
  219.   }
  220.  
  221.   /**
  222.    * modification du statut d'un workshop
  223.    *
  224.    * @access public
  225.    * @param int $id identifiant du workshop
  226.    * @param string $state (facultatif) 'P' Public/'D' Draft/'AA' AdminArchive/'PA' PublicArchive/'E' Erase
  227.    * @param object $sql_object 
  228.    * @return bool $result
  229.    */
  230.  
  231.   function StateWorkshop($ID$state$sql_object)
  232.   {
  233.     if (is_numeric($ID)) {
  234.       $this->ID = $ID;
  235.     }
  236.     if ($state != ''{
  237.       strtoupper($state);
  238.       switch ($state{
  239.         case 'P':
  240.           $this->STATUT = $state;
  241.           break;
  242.         case 'D':
  243.           $this->STATUT = $state;
  244.           break;
  245.         case 'AA':
  246.           $this->STATUT = $state;
  247.           break;
  248.         case 'PA':
  249.           $this->STATUT = $state;
  250.           break;
  251.         case 'E':
  252.           $this->STATUT = $state;
  253.           break;
  254.         default:
  255.           $this->STATUT = 'D';
  256.           break;
  257.       }
  258.     else $this->STATUT = 'D';
  259.     $requete "UPDATE  " $this->TDB_WORKSHOP . " set workshop_statut='" $this->STATUT . "' WHERE workshop_id=" $this->ID . ";";
  260.     $result $sql_object->DBQuery($requete);
  261.     return $result;
  262.   }
  263.  
  264.   /**
  265.    * suppression d'un workshop
  266.    *
  267.    * @access public
  268.    * @param int $id identifiant du workshop a supprimer
  269.    * @param object $sql_object 
  270.    * @return bool $result
  271.    */
  272.  
  273.   function DeleteWorkshop($ID$sql_object)
  274.   {
  275.     if (is_numeric($ID)) {
  276.       $this->ID = $ID;
  277.     }
  278.     $result $this->StateWorkshop($this->ID'E'$sql_object);
  279.  
  280.     return $result;
  281.   }
  282.  
  283.   /**
  284.    * workshop::AddUserWorkshop()
  285.    * Ajout d'un ou plusieurs utilisateurs au workshop
  286.    *
  287.    * @access public
  288.    * @param int $work_id identifiant du workshop
  289.    * @param string $user_login login(s) utilisateur(s)
  290.    * @param array $user_right droit confié a l'utilisateur sur le workshop
  291.    * @param object $sql_object 
  292.    * @return integer $last_id
  293.    */
  294.   function AddUserWorkshop($work_id$user_login$user_right $sql_object)
  295.   {
  296.     if (is_numeric($work_id)) {
  297.       $this->ID = $work_id;
  298.     else return false;
  299.     if (substr($user_login-1== ','{
  300.       $user_login substr($user_login0-1);
  301.     }
  302.     $user_login @explode(','$user_login);
  303.     for ($i 0;$i count($user_login);$i++{
  304.       $requete "SELECT user_id FROM " T_USER " WHERE lower(user_login) = '" strtolower($user_login[$i]"' AND user_validity='Y';";
  305.       $data $sql_object->DBSelect($requete);
  306.       $user_id $data[0]['user_id'];
  307.       $requete "INSERT INTO " J_WORK_USERS " (jwu_workshop_id, jwu_user_id, jwu_user_right) VALUES(" $this->ID . ", " $user_id ",'" $user_right "');";
  308.       $last_id $sql_object->DBInsert ($requete1);
  309.     }
  310.  
  311.     return $last_id;
  312.   }
  313.  
  314.   /**
  315.    * workshop::DeleteUserWorkshop()
  316.    * suppression d'un utilisateur au workshop
  317.    *
  318.    * @access public
  319.    * @param int $user_id identifiant du workshop
  320.    * @param string $work_id login de l'utilisateur
  321.    * @param object $sql_object 
  322.    * @return bool $result
  323.    */
  324.   function DeleteUserWorkshop($user_id$work_id$sql_object)
  325.   {
  326.     if (is_numeric($work_id&& is_numeric($user_id)) {
  327.       $requete "DELETE FROM " J_WORK_USERS " WHERE jwu_workshop_id=" $work_id " AND jwu_user_id=" $user_id ";";
  328.       $result $sql_object->DBQuery($requete);
  329.       return $result;
  330.     else return false;
  331.   }
  332.  
  333.   /**
  334.    * workshop::ModifyUserWorkshop()
  335.    * NOT USED
  336.    * modification d'un utilisateur au workshop
  337.    *
  338.    * @access public
  339.    * @param int $work_id identifiant du workshop
  340.    * @param string $user_login login de l'utilisateur
  341.    * @param object $sql_object 
  342.    * @return bool $result
  343.    */
  344.   function ModifyUserWorkshop($work_id$user_login$sql_object)
  345.   {
  346.     if (is_numeric($work_id)) {
  347.       $user_id $this->_CheckUserValidity($user_login$sql_object);
  348.       $requete "UPDATE " J_WORK_USERS " SET jwu_user_id=" $user_id " WHERE jwu_user_right='O'  AND jwu_workshop_id=" $work_id " ;";
  349.       $result $sql_object->DBQuery($requete);
  350.       return $result;
  351.     else return false;
  352.   }
  353.  
  354.   /**
  355.    * workshop::ModifyOrganizerWorkshop()
  356.    * modification des organisateurs d'un workshop
  357.    *
  358.    * @access public
  359.    * @param int $work_id identifiant du workshop
  360.    * @param string $table_login string des organisateurs séparés par ','
  361.    * @param object $sql_object 
  362.    * @return int $last_id
  363.    */
  364.   function ModifyOrganizerWorkshop($work_id$table_login$sql_object)
  365.   {
  366.     if (substr($table_login-1== ','{
  367.       $table_login substr($table_login0-1);
  368.     }
  369.     $table_login @explode(','$table_login);
  370.     $requete "DELETE FROM " J_WORK_USERS " WHERE jwu_workshop_id=" $work_id " AND jwu_user_right='O';";
  371.     $result $sql_object->DBQuery($requete);
  372.     for ($i 0;$i count($table_login);$i++{
  373.       $user_id $this->_CheckUserValidity(trim($table_login[$i])$sql_object);
  374.       $requete2 "DELETE FROM " J_WORK_USERS " WHERE jwu_workshop_id=" $work_id " AND jwu_user_id=" $user_id ";";
  375.       $result2 $sql_object->DBQuery($requete2);
  376.       $requete3 "INSERT INTO " J_WORK_USERS " (jwu_workshop_id, jwu_user_id, jwu_user_right) VALUES(" $work_id ", " $user_id ",'O');";
  377.       $last_id $sql_object->DBInsert ($requete31);
  378.     }
  379.     return $last_id;
  380.   }
  381.  
  382. }
  383.  
  384. ?>

Documentation generated on Fri, 01 Apr 2011 09:29:40 +0200 by phpDocumentor 1.4.1