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]) < 3) return _t('workshop','no_title');
  58.     if (strlen($table[1]) < 3) return _t('workshop','no_resume');
  59.     if ($table[2] == -1) return _t('workshop','no_theme');
  60.  
  61.     if (substr($table[6], -1) == ',') {
  62.       $table[6] = substr($table[6], 0, -1);
  63.     }
  64.     $table_organizer = @explode(',', $table[6]);
  65.     for ($i = 0;$i < count($table_organizer);$i++) {
  66.       $table_organizer[$i] = trim($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 == 0) return false;
  116.     if (count($result) > 1) exit();
  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)) < 2) return _t('workshop','no_author');
  135.  
  136.     if (substr($logins, -1) == ',') {
  137.       $logins = substr($logins, 0, -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== false) return _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 == false) return _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 != 0) return _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 ($requete, 1);
  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_login, 0, -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 ($requete, 1);
  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_login, 0, -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 ($requete3, 1);
  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