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

Source for file class.project.php

Documentation is available at class.project.php

  1. <?php
  2. /**
  3.  * @package linea21.modules
  4.  * @subpackage project
  5.  * @author linea21 <info@linea21.com>
  6.  * @version $id SVN
  7.  * @access public
  8.  * @license http://opensource.org/licenses/gpl-3.0.html
  9.  *  Project Management
  10.  */
  11.  
  12. class project {
  13.   /* @param
  14.    * */
  15.   var $TDB_PROJECT = T_PROJECT// nom de la table.
  16.   var $ID;
  17.   var $PARENT_ID;
  18.   var $SCALE_ID;
  19.   var $PRIORITY_ID;
  20.   var $THEME_ID;
  21.   var $WORKSHOP_ID;
  22.   var $NAME;
  23.   var $DESCRIPTION;
  24.   var $BODY;
  25.   var $BEGIN_DATE;
  26.   var $ESTIMATED_DATE;
  27.   var $END_DATE;
  28.   var $COMPLETED;
  29.   var $SDI;
  30.   var $PUBLISHED_DATE;
  31.   var $POSTED_BY;
  32.   var $DATE_CREA;
  33.   var $STATUT;
  34.   var $LAST_MODIFY;
  35.   protected $dispatcher = null;
  36.  
  37.   public function __construct()
  38.   {
  39.     $this->dispatcher = $GLOBALS['dispatcher'];
  40.   }
  41.  
  42.   public function __call($method$arguments)
  43.   {
  44.     $event $this->dispatcher->notifyUntil(new sfEvent($this'project.extensible_function'array(
  45.       'method'    => $method,
  46.       'arguments' => $arguments
  47.     )));
  48.     if (!$event->isProcessed())
  49.     {
  50.       throw new Exception(sprintf('Call to undefined method %s::%s.'get_class($this)$method));
  51.     }
  52.  
  53.     return $event->getReturnValue();
  54.   }
  55.  
  56.   /**
  57.    * project::_getDate()
  58.    * date courante et ajout
  59.    *
  60.    * @access private
  61.    * @param int $m chiffre des mois
  62.    * @param int $d chiffre des jours
  63.    * @param int $y chiffre des années
  64.    * @return string $format_date
  65.    * @return 
  66.    */
  67.   function _getDate($m 0$d 0$y 0)
  68.   {
  69.     $format_date mktime(date("H")date("i")date("s")date("m"$mdate("d"date("Y")-1);
  70.     $format_date strftime('%Y-%m-%d %H:%M:%S'$format_date);
  71.  
  72.     return $format_date;
  73.   }
  74.  
  75.   /**
  76.    * project::CheckDataIntegrity()
  77.    * Vérification intégrité des données
  78.    *
  79.    * @access public
  80.    * @param array $table : contient les composants Nécessaires d'un projet
  81.    * @return boolean true
  82.    *  si verifié, sinon string 'message d'erreur'
  83.    */
  84.  
  85.   function CheckDataIntegrity($table)
  86.   {
  87.     if (strlen($table[0]3return _t('project','no_name');
  88.     if (strlen($table[1]3return _t('project','no_description');
  89.     if (strlen($table[2]3return _t('project','no_body');
  90.     if ($table[5<= || !is_numeric($table[5])) return _t('project','no_priority');
  91.     if ($table[4<= || !is_numeric($table[4])) return _t('project','no_scale');
  92.     if(!empty($table[6])) return checkdate_validity($table[6]_t('project','begin_date_err'));
  93.     if(!empty($table[7])) return checkdate_validity($table[7]_t('project','estimated_date_err'));
  94.     if(!empty($table[8])) return checkdate_validity($table[8]_t('project','end_date_err'));
  95.     if(!is_numeric($table[14]|| $table[14]>100 || $table[14]<return _t('project','progression_error');
  96.  
  97.     return true;
  98.   }
  99.  
  100.   /**
  101.    * project::AddProject()
  102.    * Ajout d'un projet
  103.    *
  104.    * @access public
  105.    * @param array $table_project : contient les composants d'un projet
  106.    * @param object $sql_object 
  107.    * @return integer $last_id
  108.    */
  109.   function AddProject($table_project$sql_object)
  110.   {
  111.     $table_project=$sql_object->DBescape($table_project);
  112.  
  113.     if ($table_project[0!= ''{
  114.       $this->NAME = strip_input(trim($table_project[0])true);
  115.     }
  116.     if ($table_project[1!= ''{
  117.       $this->DESCRIPTION = strip_input(trim($table_project[1])true);
  118.     }
  119.     if ($table_project[2!= ''{
  120.       $this->BODY = strip_input(trim($table_project[2])true);
  121.     }
  122.     if (is_numeric($table_project[3]&& $table_project[3!= -1{
  123.       $this->PARENT_ID = $table_project[3];
  124.     else {
  125.       $this->PARENT_ID = 0;
  126.     }
  127.     if (is_numeric($table_project[4])) {
  128.       $this->SCALE_ID = $table_project[4];
  129.     }
  130.     if (is_numeric($table_project[5])) {
  131.       $this->PRIORITY_ID = $table_project[5];
  132.     }
  133.     if ($table_project[6!= ''{
  134.       $this->BEGIN_DATE = formatDate($table_project[6]true);
  135.     else {
  136.       $this->BEGIN_DATE = '0001-01-01';
  137.     }
  138.     if ($table_project[7!= ''{
  139.       $this->ESTIMATED_DATE = formatDate($table_project[7]true);
  140.     else {
  141.       $this->ESTIMATED_DATE = '0001-01-01';
  142.     }
  143.     if ($table_project[8!= ''{
  144.       $this->END_DATE = formatDate($table_project[8]true);
  145.     else {
  146.       $this->END_DATE = '0001-01-01';
  147.     }
  148.     if (is_numeric($table_project[9])) {
  149.       $this->POSTED_BY = $table_project[9];
  150.     }
  151.     if ($table_project[10!= ''{
  152.       $this->STATUT = strtoupper($table_project[10]);
  153.     }
  154.     if (is_numeric($table_project[11]&& $table_project[11!= -1{
  155.       $this->THEME_ID = $table_project[11];
  156.     else {
  157.       $this->THEME_ID = 0;
  158.     }
  159.     if (is_numeric($table_project[12]&& $table_project[12!= -1{
  160.       $this->WORKSHOP_ID = $table_project[12];
  161.     else {
  162.       $this->WORKSHOP_ID = 0;
  163.     }
  164.     $this->SDI = $table_project[13];
  165.     if ($this->STATUT == 'P'{
  166.       $this->PUBLISHED_DATE = $this->_getDate();
  167.     else {
  168.       $this->PUBLISHED_DATE = '0001-01-01';
  169.     }
  170.  
  171.      $this->COMPLETED = $table_project[14];
  172.  
  173.     $query "INSERT INTO " $this->TDB_PROJECT . " (project_name, project_description, project_body, ".
  174.     "project_parent_id, project_priority_id, project_scale_id, " .
  175.     "project_begin_date, project_estimated_date, project_end_date, ".
  176.     "project_completed, project_theme_id, project_workshop_id, ".
  177.     "project_posted_by, project_published_date, " .
  178.     "project_statut, project_date_crea) " .
  179.     "VALUES('" $this->NAME . "', '" $this->DESCRIPTION . "', '" $this->BODY .
  180.     "', " $this->PARENT_ID . ", " $this->PRIORITY_ID . ", " $this->SCALE_ID .
  181.     ", '" $this->BEGIN_DATE . "', '" $this->ESTIMATED_DATE . "', '" $this->END_DATE .
  182.     "', " $this->COMPLETED . ", " $this->THEME_ID . ", " $this->WORKSHOP_ID .
  183.     ", " $this->POSTED_BY . ", '" $this->PUBLISHED_DATE . "' , '" $this->STATUT .
  184.     "', now());";
  185.      
  186.     $this->ID = $sql_object->DBInsert ($query1);
  187.     $this->_addSDI($sql_object);
  188.  
  189.     return $this->ID;
  190.   }
  191.  
  192.   /**
  193.    * project::DeleteProject()
  194.    * suppression d'un projet
  195.    *
  196.    * @access public
  197.    * @param int $ID : identifiant du projet
  198.    * @param object $sql_object 
  199.    * @return bool $result
  200.    */
  201.  
  202.   function DeleteProject($ID$sql_object)
  203.   {
  204.     $this->ID = $ID;
  205.  
  206.  
  207.     $query "UPDATE " $this->TDB_PROJECT . " set project_statut='E', project_last_modify=NOW() WHERE project_id='" $this->ID . "';";
  208.     $result $sql_object->DBQuery($query);
  209.     if($result{
  210.       $query "DELETE FROM " J_PROJECT_SDI " WHERE jps_project_id='".$this->ID."';";
  211.       $res $sql_object->DBQuery($query);
  212.     }
  213.     if($result{
  214.       $query "UPDATE " $this->TDB_PROJECT . " set project_parent_id=0 WHERE project_parent_id='" $this->ID . "';";
  215.       $result $sql_object->DBQuery($query);
  216.     }
  217.     return $result;
  218.   }
  219.  
  220.   /**
  221.    * project::ModifyProject()
  222.    * modification d'un projet
  223.    *
  224.    * @access public
  225.    * @param integer $ID : identifiant du projet
  226.    * @param object $sql_object 
  227.    * @param array $table_project : contient les composants d'un projet
  228.    * @return boolean $result
  229.    */
  230.   function ModifyProject($ID$table_project$sql_object)
  231.   {
  232.  
  233.     $table_project=$sql_object->DBescape($table_project);
  234.  
  235.     if (is_numeric($ID)) {
  236.       $this->ID = $ID;
  237.     }
  238.  
  239.     if ($table_project[0!= ''{
  240.       $this->NAME = strip_input(trim($table_project[0])true);
  241.     }
  242.     if ($table_project[1!= ''{
  243.       $this->DESCRIPTION = strip_input(trim($table_project[1])true);
  244.     }
  245.     if ($table_project[2!= ''{
  246.       $this->BODY = strip_input(trim($table_project[2])true);
  247.     }
  248.     if (is_numeric($table_project[3]&& $table_project[3!= -1{
  249.       $this->PARENT_ID = $table_project[3];
  250.     else {
  251.       $this->PARENT_ID = 0;
  252.     }
  253.     if (is_numeric($table_project[4])) {
  254.       $this->SCALE_ID = $table_project[4];
  255.     }
  256.     if (is_numeric($table_project[5])) {
  257.       $this->PRIORITY_ID = $table_project[5];
  258.     }
  259.     if ($table_project[6!= ''{
  260.       $this->BEGIN_DATE = formatDate($table_project[6]true);
  261.     else {
  262.       $this->BEGIN_DATE = '0001-01-01';
  263.     }
  264.     if ($table_project[7!= ''{
  265.       $this->ESTIMATED_DATE = formatDate($table_project[7]true);
  266.     else {
  267.       $this->ESTIMATED_DATE = '0001-01-01';
  268.     }
  269.     if ($table_project[8!= ''{
  270.       $this->END_DATE = formatDate($table_project[8]true);
  271.     else {
  272.       $this->END_DATE = '0001-01-01';
  273.     }
  274.     if ($table_project[9!= ''{
  275.       $this->STATUT = strtoupper($table_project[9]);
  276.     }
  277.     if (is_numeric($table_project[11]&& $table_project[11!= -1{
  278.       $this->THEME_ID = $table_project[11];
  279.     else {
  280.       $this->THEME_ID = 0;
  281.     }
  282.     if (is_numeric($table_project[12]&& $table_project[12!= -1{
  283.       $this->WORKSHOP_ID = $table_project[12];
  284.     else {
  285.       $this->WORKSHOP_ID = 0;
  286.     }
  287.     $this->SDI = $table_project[13];
  288.     if ($this->STATUT == 'P'{
  289.       $this->PUBLISHED_DATE = $this->_getDate();
  290.     else {
  291.       $this->PUBLISHED_DATE = '0001-01-01';
  292.     }
  293.     
  294.     $this->COMPLETED = $table_project[14];
  295.  
  296.     $mask $this->_HavePublishedDate($table_project[10]);
  297.  
  298.     $query "UPDATE  " $this->TDB_PROJECT . " SET project_name='" $this->NAME . "', project_description='" $this->DESCRIPTION"', project_body='" $this->BODY . "' , project_parent_id='" $this->PARENT_ID . "', project_scale_id='" $this->SCALE_ID . "', project_theme_id='" $this->THEME_ID ."', project_workshop_id='" $this->WORKSHOP_ID ."', project_priority_id='" $this->PRIORITY_ID . "', project_begin_date='" $this->BEGIN_DATE . "', project_estimated_date='" $this->ESTIMATED_DATE . "', project_end_date='".$this->END_DATE."', project_completed=".$this->COMPLETED.", project_statut='" $this->STATUT . "', project_last_modify=NOW() " $mask " WHERE project_id='" $this->ID . "';";
  299.     $result $sql_object->DBQuery($query);
  300.     $result $this->_modifySDI($sql_object);
  301.  
  302.     return $result;
  303.   }
  304.   
  305.   /**
  306.    * project::changeRanges()
  307.    * changes Project range
  308.    *
  309.    * @access public
  310.    * @param array : Id (key) and ranges (value)
  311.    * @param object $sql_object 
  312.    * @return bool $result
  313.    */
  314.  
  315.   function changeRanges($array$sql_object)
  316.   {
  317.  
  318.     foreach ($array as $key => $value{
  319.       $query "UPDATE " $this->TDB_PROJECT . " set project_range='".$value."' WHERE project_id='" $key "';";
  320.       $result $sql_object->DBQuery($query);
  321.     }
  322.  
  323.     return $result;
  324.   }
  325.  
  326.   /**
  327.    * project::_addSDI()
  328.    * associate indicators to project
  329.    *
  330.    * @access private
  331.    */
  332.   function _addSDI($sql_object{
  333.     foreach ($this->SDI as &$value{
  334.       $query "INSERT INTO "J_PROJECT_SDI " VALUES(".$this->ID.", ".$value.");";
  335.       $result $sql_object->DBQuery($query);
  336.     }
  337.     return $result;
  338.   }
  339.  
  340.   /**
  341.    * project::_modifySDI()
  342.    * associate indicators to project
  343.    *
  344.    * @access private
  345.    */
  346.   function _modifySDI($sql_object{
  347.     $query "DELETE FROM " J_PROJECT_SDI " WHERE jps_project_id='".$this->ID."';";
  348.     $result $sql_object->DBQuery($query);
  349.     if(count($this->SDI)>0{
  350.       $result $this->_addSDI($sql_object);
  351.     }
  352.  
  353.     return $result;
  354.   }
  355.  
  356.   /**
  357.    * project::_HavePublishedDate()
  358.    * Détermine la date de publication a inserer dans la bdd
  359.    *
  360.    * @access private
  361.    * @param string $current_status : statut actuel de l'actualité
  362.    * @return string $sql_mask
  363.    */
  364.   function _HavePublishedDate($current_status)
  365.   {
  366.     switch ($this->STATUT{
  367.       case 'P':
  368.         if ($current_status == 'D'$sql_mask ", project_published_date= NOW()";
  369.         else $sql_mask '';
  370.         break;
  371.       case 'D':
  372.         $sql_mask ", project_published_date= '0001-01-01'";
  373.         break;
  374.       default:
  375.         $sql_mask '';
  376.     }
  377.     return $sql_mask;
  378.   }
  379. }
  380.  
  381. ?>

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