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

Source for file class.theme.php

Documentation is available at class.theme.php

  1. <?php
  2. /**
  3.  * @package linea21.core
  4.  * @subpackage theme
  5.  * @author linea21 <info@linea21.com>
  6.  * @version $id SVN
  7.  * @access public
  8.  * @license http://opensource.org/licenses/gpl-3.0.html
  9.  *  Theme Management
  10.  */
  11.  
  12. class theme {
  13.   /* @param
  14.    * */
  15.   var $TDB_THEME = T_THEME// nom de la table.
  16.   var $TDB_SDTHEME = T_SD_THEME// nom de la table.
  17.   var $ID;
  18.   var $NAME;
  19.   var $VISUAL_URI;
  20.   var $ROOT;
  21.   var $SD_THEME;
  22.   var $DESC_PROJECT;
  23.   var $DESC_DASHBOARD;
  24.   var $DESC_NEWS;
  25.   var $DESC_WORKSHOP;
  26.   var $RANGE_PROJECT;
  27.   var $RANGE_NEWS;
  28.   var $RANGE_WORKSHOP;
  29.   var $DATE_CREA;
  30.   var $STATUT;
  31.   var $LAST_MODIFY;
  32.   protected $dispatcher = null;
  33.  
  34.   public function __construct()
  35.   {
  36.     $this->dispatcher = $GLOBALS['dispatcher'];
  37.   }
  38.  
  39.   public function __call($method$arguments)
  40.   {
  41.     $event $this->dispatcher->notifyUntil(new sfEvent($this'theme.extensible_function'array(
  42.       'method'    => $method,
  43.       'arguments' => $arguments
  44.     )));
  45.     if (!$event->isProcessed())
  46.     {
  47.       throw new Exception(sprintf('Call to undefined method %s::%s.'get_class($this)$method));
  48.     }
  49.  
  50.     return $event->getReturnValue();
  51.   }
  52.  
  53.  
  54.  
  55.   /**
  56.    * theme::CheckDataIntegrity()
  57.    * Vérification des données d'un thème
  58.    *
  59.    * @access public
  60.    * @param array $table_theme : contient les composants d'un thème
  61.    * @return boolean si vrai renvoie true sinon message d'erreurs (string)
  62.    */
  63.   function CheckDataIntegrity($table_theme)
  64.   {
  65.     if (strlen($table_theme[0]2return _t('theme','object_notdenomination');
  66.  
  67.     if(!$this->isRoot()) {
  68.       if (!is_numeric($table_theme[2]|| $table_theme[2== -1return _t('theme','object_notSDtheme');
  69.  
  70.       if (defined('MOD_PROJECT'&& strlen($table_theme[3]2return _t('theme','object_notdesc_completed');
  71.       if (defined('MOD_SDI'&& strlen($table_theme[4]2return _t('theme','object_notdesc_completed');
  72.       if (defined('MOD_PUBLICATION'&& strlen($table_theme[5]2return _t('theme','object_notdesc_completed');
  73.       if (defined('MOD_NEWS'&& strlen($table_theme[6]2return _t('theme','object_notdesc_completed');
  74.       if (defined('MOD_WORKSHOP'&& strlen($table_theme[7]2return _t('theme','object_notdesc_completed');
  75.  
  76.     }
  77.     return true;
  78.   }
  79.  
  80.   /**
  81.    * theme::AddTheme()
  82.    * Ajout d'un nouveau theme
  83.    *
  84.    * @access public
  85.    * @param array $table_theme : contient les composants d'un theme
  86.    * @param object $sql_object 
  87.    * @return integer $last_id
  88.    */
  89.   function AddTheme($table_theme$sql_object)
  90.   {
  91.     $table_theme=$sql_object->DBescape($table_theme);
  92.     if ($table_theme[14== 1$this->SetRoot();
  93.  
  94.     if ($table_theme[0!= ''{
  95.       $this->NAME = strip_input(trim($table_theme[0]));
  96.     }
  97.     if ($table_theme[1!= ''{
  98.       $this->VISUAL_URI = strip_input(trim($table_theme[1]));
  99.     }
  100.     if (is_numeric($table_theme[2])) {
  101.       $this->SD_THEME = $table_theme[2];
  102.     }
  103.     $this->DESC_PROJECT = strip_input(trim($table_theme[3])true);
  104.     $this->DESC_DASHBOARD = strip_input(trim($table_theme[4])true);
  105.     $this->DESC_PUBLICATION = strip_input(trim($table_theme[5])true);
  106.     $this->DESC_NEWS = strip_input(trim($table_theme[6])true);
  107.     $this->DESC_WORKSHOP = strip_input(trim($table_theme[7])true);
  108.  
  109.     if (is_numeric($table_theme[8])) {
  110.       $this->RANGE_PROJECT = $table_theme[8];
  111.     }
  112.     if (is_numeric($table_theme[9])) {
  113.       $this->RANGE_DASHBOARD = $table_theme[9];
  114.     }
  115.     if (is_numeric($table_theme[10])) {
  116.       $this->RANGE_PUBLICATION = $table_theme[10];
  117.     }
  118.     if (is_numeric($table_theme[11])) {
  119.       $this->RANGE_NEWS = $table_theme[11];
  120.     }
  121.     if (is_numeric($table_theme[12])) {
  122.       $this->RANGE_WORKSHOP = $table_theme[12];
  123.     }
  124.  
  125.     if ($table_theme[13!= ''{
  126.       strtoupper($table_theme[13]);
  127.       switch ($table_theme[13]{
  128.         case 'P':
  129.           $this->STATUT = $table_theme[13];
  130.           break;
  131.         case 'D':
  132.           $this->STATUT = $table_theme[13];
  133.           break;
  134.         default:
  135.           $this->STATUT = 'P';
  136.           break;
  137.       }
  138.     else $this->STATUT = 'P';
  139.  
  140.     if($this->isRoot()) {
  141.       $query =     "INSERT INTO " $this->TDB_SDTHEME .
  142.                 " (sdtheme_name, sdtheme_description, sdtheme_date_crea) " .
  143.                 "VALUES('".$this->NAME."','".$this->DESC_PROJECT . "', NOW());";
  144.     else {
  145.       $query "INSERT INTO " $this->TDB_THEME .
  146.              " (theme_name, theme_visual_uri, theme_sd_theme, theme_desc_project, theme_desc_dashboard, " .
  147.              "theme_desc_publication, theme_desc_news, theme_desc_workshop, theme_range_project, ".
  148.              "theme_range_dashboard, theme_range_publication, theme_range_news, theme_range_workshop, " .
  149.              "theme_statut, theme_date_crea) " .
  150.              "VALUES('" $this->NAME . "', '" $this->VISUAL_URI . "', " $this->SD_THEME .
  151.              ", '" $this->DESC_PROJECT ."', '" $this->DESC_DASHBOARD .
  152.              "', '" $this->DESC_PUBLICATION . "', '" $this->DESC_NEWS .
  153.              "', '" $this->DESC_WORKSHOP . "', " $this->RANGE_PROJECT .
  154.              ", " $this->RANGE_DASHBOARD . ", " $this->RANGE_PUBLICATION .
  155.              ", " $this->RANGE_NEWS . ", " $this->RANGE_WORKSHOP . ", '" $this->STATUT . "', NOW());";
  156.     }
  157.     $last_id $sql_object->DBInsert ($query1);
  158.     return $last_id;
  159.   }
  160.  
  161.   /**
  162.    * theme::ModifyTheme()
  163.    * modification d'un theme
  164.    *
  165.    * @access public
  166.    * @param int $ID : identifiant du theme
  167.    * @param array $table_theme : contient les composants d'un theme
  168.    * @param object $sql_object 
  169.    * @return bool $result
  170.    */
  171.   function ModifyTheme($ID$table_theme$sql_object)
  172.   {
  173.     $table_theme=$sql_object->DBescape($table_theme);
  174.  
  175.     if ($table_theme[9== 1$this->SetRoot();
  176.     if (is_numeric($ID)) {
  177.       $this->ID = $ID;
  178.     }
  179.     if ($table_theme[0!= ''{
  180.       $this->NAME = strip_input(trim($table_theme[0]));
  181.     }
  182.     if ($table_theme[1!= ''{
  183.       $this->VISUAL_URI = strip_input(trim($table_theme[1]));
  184.     }
  185.     if (is_numeric($table_theme[2])) {
  186.       $this->SD_THEME = $table_theme[2];
  187.     }
  188.     $this->DESC_PROJECT = strip_input(trim($table_theme[3])true);
  189.     $this->DESC_DASHBOARD = strip_input(trim($table_theme[4])true);
  190.     $this->DESC_PUBLICATION = strip_input(trim($table_theme[5])true);
  191.     $this->DESC_NEWS = strip_input(trim($table_theme[6])true);
  192.     $this->DESC_WORKSHOP = strip_input(trim($table_theme[7])true);
  193.     if ($table_theme[8!= ''{
  194.       strtoupper($table_theme[8]);
  195.       switch ($table_theme[8]{
  196.         case 'P':
  197.           $this->STATUT = $table_theme[8];
  198.           break;
  199.         case 'D':
  200.           $this->STATUT = $table_theme[8];
  201.           break;
  202.         default:
  203.           $this->STATUT = 'P';
  204.           break;
  205.       }
  206.     else $this->STATUT = 'P';
  207.  
  208.     if($this->isRoot()) {
  209.       $query "UPDATE  " $this->TDB_SDTHEME . " set sdtheme_name='" $this->NAME . "', sdtheme_description='" $this->DESC_PROJECT . "', sdtheme_last_modify=NOW() WHERE sdtheme_id='" $this->ID . "';";
  210.  
  211.     else {
  212.       $query "UPDATE  " $this->TDB_THEME . " set theme_name='" $this->NAME . "', theme_visual_uri='" $this->VISUAL_URI . "' , theme_sd_theme='" $this->SD_THEME . "', theme_desc_project='" $this->DESC_PROJECT . "', theme_desc_dashboard='" $this->DESC_DASHBOARD . "',theme_desc_publication= '" $this->DESC_PUBLICATION . "', theme_desc_news='" $this->DESC_NEWS . "' , theme_desc_workshop='" $this->DESC_WORKSHOP . "' , theme_statut='" $this->STATUT . "', theme_last_modify=NOW() WHERE theme_id='" $this->ID . "';";
  213.     }
  214.  
  215.     $result $sql_object->DBQuery($query);
  216.     return $result;
  217.   }
  218.  
  219.   /**
  220.    * theme::StateTheme()
  221.    * modification du statut d'un theme
  222.    *     -- NE PREND PAS EN CHARGE l'EFFACEMENT --
  223.    *
  224.    * @access public
  225.    * @param int $ID identifiant de l'entreprise
  226.    * @param string $state (facultatif) 'P' Public/'D' Draft
  227.    * @param object $sql_object 
  228.    * @return bool $result
  229.    */
  230.   function StateTheme($ID$state$sql_object)
  231.   {
  232.     if (is_numeric($ID)) {
  233.       $this->ID = $ID;
  234.     }
  235.     if ($state != ''{
  236.       strtoupper($state);
  237.       switch ($state{
  238.         case 'P':
  239.           $this->STATUT = $state;
  240.           break;
  241.         case 'D':
  242.           $this->STATUT = $state;
  243.           break;
  244.         default:
  245.           $this->STATUT = $state;
  246.           break;
  247.       }
  248.     else $this->STATUT = 'P';
  249.     $query "UPDATE  " $this->TDB_THEME . " set theme_statut='" $this->STATUT . "', theme_last_modify=NOW() WHERE theme_id=" $this->ID . ";";
  250.     $result $sql_object->DBQuery($query);
  251.     return $result;
  252.   }
  253.  
  254.   /**
  255.    * theme::DeleteTheme()
  256.    * suppression d'un theme
  257.    *
  258.    * @access public
  259.    * @param int $ID identifiant du theme
  260.    * @param string $type 'MASS_DELETE' toutes les ressources associées aus themes sont rendues inactives
  261.    *  'MASS_MODIFY' remplacement de l'ancien theme par $ID_new
  262.    * @param int $id_new nouvel id de rattachement
  263.    * @param object $sql_object 
  264.    * @return bool $result
  265.    */
  266.   function DeleteTheme($ID$sql_object$type$ID_new = -1)
  267.   {
  268.     $affected 0;
  269.     if (is_numeric($ID)) {
  270.       $this->ID = $ID;
  271.     }
  272.     if($this->isRoot()) {
  273.       $query "UPDATE  " $this->TDB_THEME . " set theme_sd_theme=" $ID_new " WHERE  theme_sd_theme=" $this->ID . ";";
  274.       $result $sql_object->DBQuery($query);
  275.       $affected += $sql_object->DBaffectedRow();
  276.       $query "DELETE FROM  " $this->TDB_SDTHEME . " where sdtheme_id='".$this->ID ."';";
  277.       $result $sql_object->DBQuery($query);
  278.     }
  279.     if($this->isRoot(== false{
  280.       if ($type == 'MASS_MODIFY'{
  281.         if ($ID_new != -&& is_numeric($ID_new)) {
  282.           $query "UPDATE  " $this->TDB_THEME . " set theme_statut='E', theme_last_modify=NOW() WHERE theme_id=" $this->ID . ";";
  283.           $result $sql_object->DBQuery($query);
  284.           if ($result == true{
  285.             $query_news "UPDATE  " T_NEWS " set news_theme=" $ID_new " WHERE  news_theme=" $this->ID . ";";
  286.             $result $sql_object->DBQuery($query_news);
  287.             $affected += $sql_object->DBaffectedRow();
  288.             $query_publication "UPDATE  " T_PUBLI " set publi_theme=" $ID_new " WHERE  publi_theme=" $this->ID . ";";
  289.             $result $sql_object->DBQuery($query_publication);
  290.             $affected += $sql_object->DBaffectedRow();
  291.             $query_workshop "UPDATE  " T_WORK " set workshop_theme=" $ID_new " WHERE  workshop_theme=" $this->ID . ";";
  292.             $result $sql_object->DBQuery($query_workshop);
  293.             $affected += $sql_object->DBaffectedRow();
  294.             $query_sdiinfo "UPDATE  " T_SDI_INFO " set sdii_theme=" $ID_new " WHERE  sdii_theme=" $this->ID . ";";
  295.             $result $sql_object->DBQuery($query_workshop);
  296.             $affected += $sql_object->DBaffectedRow();
  297.             $query_yellowpages "UPDATE  " T_YELLOWPAGES " set yellowp_theme=" $ID_new " WHERE  yellowp_theme=" $this->ID . ";";
  298.             $result $sql_object->DBQuery($query_yellowpages);
  299.             $affected += $sql_object->DBaffectedRow();
  300.           }
  301.         }
  302.       }
  303.       if ($type == 'MASS_DELETE'{
  304.         $query "UPDATE  " $this->TDB_THEME . " SET theme_statut='E', theme_last_modify=NOW() WHERE theme_id=" $this->ID . ";";
  305.         $result $sql_object->DBQuery($query);
  306.         if ($result == true{
  307.           $query_news "UPDATE  " T_NEWS " SET news_statut='E' WHERE  news_theme=" $this->ID . ";";
  308.           $result $sql_object->DBQuery($query_news);
  309.           $affected += $sql_object->DBaffectedRow();
  310.           $query_publication "UPDATE  " T_PUBLI " SET publi_statut='E' WHERE  publi_theme=" $this->ID . ";";
  311.           $result $sql_object->DBQuery($query_publication);
  312.           $affected += $sql_object->DBaffectedRow();
  313.           $query_workshop "UPDATE  " T_WORK " SET workshop_statut='E' WHERE  workshop_theme=" $this->ID . ";";
  314.           $result $sql_object->DBQuery($query_workshop);
  315.           $affected += $sql_object->DBaffectedRow();
  316.           $query_sdiinfo "UPDATE " T_SDI_INFO " SET sdii_statut='E' WHERE  sdii_theme=" $this->ID . ";";
  317.           $result $sql_object->DBQuery($query_sdiinfo);
  318.           $affected += $sql_object->DBaffectedRow();
  319.           $query_sdivalue "UPDATE " T_SDI_VALUE " SET sdiv_statut='E' WHERE sdiv_sdi_info="$this->ID . ";";
  320.           $result $sql_object->DBQuery($query_sdivalue);
  321.           $affected += $sql_object->DBaffectedRow();
  322.           $query_yellowpages "UPDATE  " T_YELLOWPAGES " SET yellowp_statut='AA' WHERE  yellowp_theme=" $this->ID . ";";
  323.           $result $sql_object->DBQuery($query_yellowpages);
  324.           $affected += $sql_object->DBaffectedRow();
  325.         }
  326.       }
  327.     }
  328.     return $affected;
  329.   }
  330.  
  331.   /**
  332.    * theme::SetRoot()
  333.    * Set the ROOT attribute to 1
  334.    *
  335.    * @access public
  336.    * @return void 
  337.    */
  338.   function SetRoot()
  339.   {
  340.     $this->ROOT = 1;
  341.   }
  342.  
  343.   /**
  344.    * theme::isRoot()
  345.    * Is the current theme root?
  346.    *
  347.    * @access public
  348.    * @return bool 
  349.    */
  350.   function isRoot()
  351.   {
  352.     if($this->ROOT == 1{
  353.       return true;
  354.     else{
  355.       return false;
  356.     }
  357.   }
  358.  
  359.   /**
  360.    * theme::SetThemeRange()
  361.    * modification des RANGE des themes
  362.    *   --- NON IMPLEMENTE/NON TESTE ---
  363.    *
  364.    * @access public
  365.    * @param string $module spécifie le module concernée : valeur 'DASHBOARD', 'PUBLICATION', 'NEWS', 'WORKSHOP', 'ALL'
  366.    * @param array $table_range tableau contenant les id des themes
  367.    * @param object $sql_object 
  368.    * @return bool $result
  369.    */
  370.   /**
  371.    * function SetThemeRange($table_range, $sql_object, $module)
  372.    * {
  373.    * $result = false;
  374.    * if (count($table_range) > 0) {
  375.    * if (strlen($module) > 2) {
  376.    * if ($module != 'ALL') {
  377.    * $champ = 'theme_range_';
  378.    * if ($module == 'DASHBOARD') $champ .= 'dashboard';
  379.    * if ($module == 'PUBLICATION') $champ .= 'publication';
  380.    * if ($module == 'NEWS') $champ .= 'news';
  381.    * if ($module == 'WORKSHOP') $champ .= 'workshop';
  382.    * for($i = 0; $i < count($table_range); $i++) {
  383.    * $range = $i + 1;
  384.    * $query = "UPDATE  " . $this->TDB_THEME . " SET " . $champ . "=" . $range . " WHERE theme_id='" . $table_range[$i] . "';";
  385.    * $result = $sql_object->DBQuery($query);
  386.    * echo $query . "<br>";
  387.    * }
  388.    * } elseif ($module == 'ALL') {
  389.    * for($i = 0; $i < count($table_range); $i++) {
  390.    * $range = $i + 1;
  391.    * $to_update = "theme_range_dashboard=" . $range . ", theme_range_publication=" . $range . ", theme_range_news=" . $range . ", theme_range_workshop=" . $range;
  392.    * $query = "UPDATE  " . $this->TDB_THEME . " SET " . $to_update . " WHERE theme_id=" . $table_range[$i] . ";";
  393.    * $result = $sql_object->DBQuery($query);
  394.    * echo $query . "<br>";
  395.    * }
  396.    * }
  397.    * }
  398.    * }
  399.    *
  400.    * return $result;
  401.    * }
  402.    */
  403. }
  404.  
  405. ?>

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