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.   /**
  223.    * Workshop::changeRanges()
  224.    * changes Workshop range
  225.    *
  226.    * @access public
  227.    * @param array : Id (key) and ranges (value)
  228.    * @param object $sql_object 
  229.    * @return bool $result
  230.    */
  231.  
  232.   function changeRanges($array$sql_object)
  233.   {
  234.  
  235.     foreach ($array as $key => $value{
  236.       $query "UPDATE " $this->TDB_WORKSHOP . " set workshop_range='".$value."' WHERE workshop_id='" $key "';";
  237.       $result $sql_object->DBQuery($query);
  238.     }
  239.  
  240.     return $result;
  241.   }
  242.  
  243.   /**
  244.    * modification du statut d'un workshop
  245.    *
  246.    * @access public
  247.    * @param int $id identifiant du workshop
  248.    * @param string $state (facultatif) 'P' Public/'D' Draft/'AA' AdminArchive/'PA' PublicArchive/'E' Erase
  249.    * @param object $sql_object 
  250.    * @return bool $result
  251.    */
  252.  
  253.   function StateWorkshop($ID$state$sql_object)
  254.   {
  255.     if (is_numeric($ID)) {
  256.       $this->ID = $ID;
  257.     }
  258.     if ($state != ''{
  259.       strtoupper($state);
  260.       switch ($state{
  261.         case 'P':
  262.           $this->STATUT = $state;
  263.           break;
  264.         case 'D':
  265.           $this->STATUT = $state;
  266.           break;
  267.         case 'AA':
  268.           $this->STATUT = $state;
  269.           break;
  270.         case 'PA':
  271.           $this->STATUT = $state;
  272.           break;
  273.         case 'E':
  274.           $this->STATUT = $state;
  275.           break;
  276.         default:
  277.           $this->STATUT = 'D';
  278.           break;
  279.       }
  280.     else $this->STATUT = 'D';
  281.     $requete "UPDATE  " $this->TDB_WORKSHOP . " set workshop_statut='" $this->STATUT . "' WHERE workshop_id=" $this->ID . ";";
  282.     $result $sql_object->DBQuery($requete);
  283.     return $result;
  284.   }
  285.  
  286.   /**
  287.    * suppression d'un workshop
  288.    *
  289.    * @access public
  290.    * @param int $id identifiant du workshop a supprimer
  291.    * @param object $sql_object 
  292.    * @return bool $result
  293.    */
  294.  
  295.   function DeleteWorkshop($ID$sql_object)
  296.   {
  297.     if (is_numeric($ID)) {
  298.       $this->ID = $ID;
  299.     }
  300.     $result $this->StateWorkshop($this->ID'E'$sql_object);
  301.  
  302.     return $result;
  303.   }
  304.  
  305.   /**
  306.    * workshop::AddUserWorkshop()
  307.    * Ajout d'un ou plusieurs utilisateurs au workshop
  308.    *
  309.    * @access public
  310.    * @param int $work_id identifiant du workshop
  311.    * @param string $user_login login(s) utilisateur(s)
  312.    * @param array $user_right droit confié a l'utilisateur sur le workshop
  313.    * @param object $sql_object 
  314.    * @return integer $last_id
  315.    */
  316.   function AddUserWorkshop($work_id$user_login$user_right $sql_object)
  317.   {
  318.     if (is_numeric($work_id)) {
  319.       $this->ID = $work_id;
  320.     else return false;
  321.     if (substr($user_login-1== ','{
  322.       $user_login substr($user_login0-1);
  323.     }
  324.     $user_login @explode(','$user_login);
  325.     for ($i 0;$i count($user_login);$i++{
  326.       $requete "SELECT user_id FROM " T_USER " WHERE lower(user_login) = '" strtolower($user_login[$i]"' AND user_validity='Y';";
  327.       $data $sql_object->DBSelect($requete);
  328.       $user_id $data[0]['user_id'];
  329.       $requete "INSERT INTO " J_WORK_USERS " (jwu_workshop_id, jwu_user_id, jwu_user_right) VALUES(" $this->ID . ", " $user_id ",'" $user_right "');";
  330.       $last_id $sql_object->DBInsert ($requete1);
  331.     }
  332.  
  333.     return $last_id;
  334.   }
  335.  
  336.   /**
  337.    * workshop::DeleteUserWorkshop()
  338.    * suppression d'un utilisateur au workshop
  339.    *
  340.    * @access public
  341.    * @param int $user_id identifiant du workshop
  342.    * @param string $work_id login de l'utilisateur
  343.    * @param object $sql_object 
  344.    * @return bool $result
  345.    */
  346.   function DeleteUserWorkshop($user_id$work_id$sql_object)
  347.   {
  348.     if (is_numeric($work_id&& is_numeric($user_id)) {
  349.       $requete "DELETE FROM " J_WORK_USERS " WHERE jwu_workshop_id=" $work_id " AND jwu_user_id=" $user_id ";";
  350.       $result $sql_object->DBQuery($requete);
  351.       return $result;
  352.     else return false;
  353.   }
  354.  
  355.   /**
  356.    * workshop::ModifyUserWorkshop()
  357.    * NOT USED
  358.    * modification d'un utilisateur au workshop
  359.    *
  360.    * @access public
  361.    * @param int $work_id identifiant du workshop
  362.    * @param string $user_login login de l'utilisateur
  363.    * @param object $sql_object 
  364.    * @return bool $result
  365.    */
  366.   function ModifyUserWorkshop($work_id$user_login$sql_object)
  367.   {
  368.     if (is_numeric($work_id)) {
  369.       $user_id $this->_CheckUserValidity($user_login$sql_object);
  370.       $requete "UPDATE " J_WORK_USERS " SET jwu_user_id=" $user_id " WHERE jwu_user_right='O'  AND jwu_workshop_id=" $work_id " ;";
  371.       $result $sql_object->DBQuery($requete);
  372.       return $result;
  373.     else return false;
  374.   }
  375.  
  376.   /**
  377.    * workshop::ModifyOrganizerWorkshop()
  378.    * modification des organisateurs d'un workshop
  379.    *
  380.    * @access public
  381.    * @param int $work_id identifiant du workshop
  382.    * @param string $table_login string des organisateurs séparés par ','
  383.    * @param object $sql_object 
  384.    * @return int $last_id
  385.    */
  386.   function ModifyOrganizerWorkshop($work_id$table_login$sql_object)
  387.   {
  388.     if (substr($table_login-1== ','{
  389.       $table_login substr($table_login0-1);
  390.     }
  391.     $table_login @explode(','$table_login);
  392.     $requete "DELETE FROM " J_WORK_USERS " WHERE jwu_workshop_id=" $work_id " AND jwu_user_right='O';";
  393.     $result $sql_object->DBQuery($requete);
  394.     for ($i 0;$i count($table_login);$i++{
  395.       $user_id $this->_CheckUserValidity(trim($table_login[$i])$sql_object);
  396.       $requete2 "DELETE FROM " J_WORK_USERS " WHERE jwu_workshop_id=" $work_id " AND jwu_user_id=" $user_id ";";
  397.       $result2 $sql_object->DBQuery($requete2);
  398.       $requete3 "INSERT INTO " J_WORK_USERS " (jwu_workshop_id, jwu_user_id, jwu_user_right) VALUES(" $work_id ", " $user_id ",'O');";
  399.       $last_id $sql_object->DBInsert ($requete31);
  400.     }
  401.     return $last_id;
  402.   }
  403.  
  404. }
  405.  
  406. ?>

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