Source for file class.config_file.php
Documentation is available at class.config_file.php 
 * @subpackage config_files  
 * @author linea21 <info@linea21.com>  
 * @license http://opensource.org/licenses/gpl-3.0.html  
 *  Configuration Management  
include_once('system/afiles/class.afiles.php');  
include_once('../lib/lib_common.php');  
  var $file_db =  "define_db";  // fichier define_db  
  var $section_theme =  "theme";  // section theme dans le fichier de configuration define_release  
   * config_file::__construct()  
    //charge les paramètres et les place en constante globale par define  
   * config_file::setParams()  
   * modifie le tableau de cache interne avec le paramètre $content  
   * @param string $file_name   
   * config_file::loadReleaseParams()  
   * charge les paramètres dans le tableau $release_params  
    //charge les paramètres release dans un tableau $release_params  
   * config_file::loadDbParams()  
   * charge les paramètres dans le tableau $db_params  
    //charge les paramètres dans un tableau $db_params  
   * config_file::setReleaseParams()  
   * modifie le tableau $release_params avec les entrées du tableau $content  
    //charge les paramètres release dans un tableau $release_params  
   * config_file::setThemeParams()  
   * modifie le tableau $release_params avec les entrées du tableau $content  
    //charge les paramètres release dans un tableau $release_params  
   * config_file::setDbParams()  
   * modifie le tableau $db_params avec les entrées du tableau $content  
    //charge les paramètres dans un tableau $db_params  
   * config_file::writeReleaseParams()  
   * écrit dans le fichier ini les paramètres du tableau $release_params  
    //écrit les paramètres $release_params vers les fichiers release  ini et php  
      //on écrit les params après avoir fait le backup  
   * config_file::writedBParams()  
   * écrit dans le fichier ini les paramètres du tableau $db_params  
    //écrit les paramètres $db_params vers les fichier db ini et php  
      //on écrit les params après avoir fait le backup  
    //TODO : alert les paramètres db n'ont pas pu être écrit.  
   * config_file::backupParams()  
   * sauvegarde le fichier $file_name dans le répertoire de backup  
   * @param string $file_name   
   * config_file::writePhpParams()  
   * écrit le fichier php $file_name dans le répertoire de config  
   * @param string $file_name   
    $content= $this->generateHeader($file_name);  
    $content.= $this->generateBody($file_name);  
    $content.= $this->generateFooter($file_name);  
    //on écrit le contenu dans le fichier php  
   * config_file::parseConfig()  
   * retourne un tableau contenant les paramètres du fichier ini $file_name  
   * @param string $file_name   
   * config_file::setPostParams()  
   * insère les données différentes contenues dans $post_params dans le tableau correspondant au paramètre release ou db  
   * @param string $file_name   
   * @param array $post_params   
    //parse du tableau des paramètres  
    // ajoute les paramètres de post  
      foreach ($post_params as $key =>  $value)  
          foreach ($existing_params as $existing_param =>  $existing_value)  
            // la clé existe dans le tableau de cache release_params, on insère la valeur dans ce tableau  
            if($existing_param ==  $key) $this->release_params[$section][$key]= $this->strip_ini_char($value);  
      foreach ($post_params as $key =>  $value)  
        foreach ($this->db_params as $section =>  $existing_params)  
          foreach ($existing_params as $existing_param =>  $existing_value)  
            // la clé existe dans le tableau de cache db_params, on insère la valeur dans ce tableau  
            if($existing_param ==  $key) $this->db_params[$section][$key]= $this->strip_ini_char($value);  
   * config_file::generateBody()  
   * génère le contenu d'un fichier php de configuration à parti du $file_name  
   * @param string $file_name   
  function generateBody($file_name)  
    foreach ($content as $key =>  $ini)  
        $out .=  "\n\n//    ". $key. " /////// \n\n";  
        foreach ($ini as $var =>  $value)  
          $out .=  "define('". $var. "',\t\t". $this->a_file->quote_ini($value). ");\n";  
        $out .=  "define('". $key. "',\t\t". $this->a_file->quote_ini($ini). ");\n";  
   * config_file::generateHeader()  
   * génère l'en tête d'un fichier php de configuration à parti du $file_name  
   * @param string $file_name   
  function generateHeader($file_name)  
    $ret.= "// Linea 21 - PHP ". $file_name. "\n";  
    $ret.= "// last_modify    : ". date("d-m-Y"). "\n";  
    $ret.= "// http://opensource.org/licenses/gpl-3.0.html\n\n";  
    $ret.= "// BE CAREFULL THIS FILE IS SYSTEM FILE : use interface or ". $file_name. $this->config_extension. " FOR CONFIGURATION";  
   * config_file::generateFooter()  
   * génère le pied d'un fichier php de configuration à parti du $file_name  
   * @param string $file_name   
  function generateFooter($file_name)  
   * config_file::getReleaseParams()  
   * génère le corps html d'un fichier de configuration pour affichage  
   * @param string $updatable : champ texte modifiable  
   * @param string $hidden : présence d'input type hidden  
    return $this->getAllParams($this->file_release,$updatable, $hidden);  
   * config_file::getDbParams()  
   * génère le corps html d'un fichier de configuration pour affichage  
   * @param string $updatable : champ texte modifiable  
   * @param string $hidden : présence d'input type hidden  
  function getDbParams($updatable =  false, $hidden =  false) {  
    return $this->getAllParams($this->file_db,$updatable, $hidden);  
   * config_file::getAllParams()  
   * génère le corps html d'un fichier de configuration pour affichage  
   * @param string $updatable : champ texte modifiable  
   * @param string $hidden : présence d'input type hidden  
   * @param string $file_name   
  function getAllParams($file_name, $updatable =  false, $hidden =  false)  
    $authorized_sections= array();  
    include('../languages/' .  U_L .  '/lang_system.'.  CHARSET . '.php');  
      // le tableau de cache à utiliser est celui de realease  
      //initialisation des sections à afficher/mdofier  
      // le tableau de cache à utiliser est celui de realease  
      // le tableau de cache à utiliser est celui de db  
      //initialisation des sections à afficher/mdofier  
    foreach ($content as $key =>  $ini)  
        if((in_array($key,$authorized_sections)))  
          if(isset ($GLOBALS['lang']['system'][$key])) $label= '<abbr title="'. $GLOBALS['lang']['system'][$key]. '">'. $key. '</abbr>';  
          $out .=  "\n<br style='clear:both'>\n";  
          $out .=  "\n<h2>". $label. "</h2>\n";  
          if(!$updatable) $out .= "<dl>\n";  
          foreach ($ini as $var =>  $value)  
            if(isset ($GLOBALS['lang']['system'][$var])) $label= '<abbr title="'. $GLOBALS['lang']['system'][$var]. '">'. $var. '</abbr>';  
              if($hidden) $out .=  "<input name=\"". $var. "\" id=\"". $var. "\" value=\"". $value. "\" type=\"hidden\"  />\n";  
                $out .=  "</dt><dd>". $value. "</dd>\n";  
                $out .=  "<p><label for=\"". $var. "\">". $label. "</label><input name=\"". $var. "\" id=\"". $var. "\" value=\"". $value. "\" type=\"text\" class=\"textfield\" /></p>\n";  
                $out .=  "<p><label for=\"". $var. "\">". $label. "</label>". CultureSelectBox($var, $value). "</p>\n";  
          if(!$updatable) $out .= "</dl>";  
        if(!$updatable &&  $hidden) $out .=  "<input name=\"". $key. "\" id=\"". $key. "\" value=\"". $ini. "\" type=\"hidden\"  />\n";  
        if(!$updatable)    $out .= "<dt>". $key. "</dt><dd>". $ini. "</dd>\n";  
        else $out .=  "<p><label for=\"". $key. "\">". $key. "</label><input name=\"". $key. "\" id=\"". $key. "\" value=\"". $ini. "\" type=\"text\" class=\"textfield\" /></p>\n";  
   * config_file::getThemeParams()  
   * génère le corps html d'un fichier de configuration pour affichage  
   * @param string $updatable : champ texte modifiable  
   * @param string $hidden : présence d'input type hidden  
    $authorized_sections= array();  
    include('../languages/' .  U_L .  '/lang_system.'.  CHARSET . '.php');  
    $out .=  "\n<h2 style=\"clear:both;\">". $label. "</h2>\n";  
    $out .= $this->getOneThemeParams($updatable, $hidden, true,$theme_public,$this->theme_public,$this->theme_public, "public");  
    foreach ($public_themes as $key =>  $value)  
      if($value !=  $theme_public)  
    $out .=  "\n<h2 style=\"clear:both;\">". $label. "</h2>\n";  
    $out .= $this->getOneThemeParams($updatable, $hidden, true,$theme_admin,$this->theme_admin,$this->theme_admin, "admin");  
    foreach ($admin_themes as $key =>  $value)  
      if($value !=  $theme_admin)  
    $out .=  "\n<br style=\"clear:both;\" />\n";  
   * config_file::getOneThemeParams()  
   * génère le corps html d'un fichier de configuration pour affichage  
   * @param string $updatable   
   * @param string $selected   
   * @param string $field_name   
   * @param string $radio_name   
  function getOneThemeParams($updatable =  false, $hidden =  false, $selected= false,$value,$field_name,$radio_name, $type) {  
    include('../languages/' .  U_L .  '/lang_system.'.  CHARSET . '.php');  
      $selected_pattern= '_selected';  
      $checked_pattern= 'checked="checked"';  
    if(!$updatable)$hidden_pattern= 'style="display:none;"';  
    else $updatable_pattern= "onclick=\"javascript:document.getElementById('". $type. $value. "').checked='checked';\"";  
    $out .= "<div class=\"config_theme" .  $selected_pattern.  "\">\n";  
    $out .= "<img src=\"../templates/" . $type.  "/" . $value.  "/preview.png\" style=\"width:250px;height:160px;\" alt=\"" . $value.  "\" id=\"img_". $value. "\" ". $updatable_pattern. "/>\n";  
    $out .=  '<input type="radio" name="' . $radio_name.  '" id="' . $value.  '" value="' . $value.  '" ' . $checked_pattern.  ' ' . $hidden_pattern.  ' />';  
    $out .=     '<span class="radio">' .  $value .  '</span>';  
    $out .=  '<div class="themeinfo"><em>'. _t('theme','name'). '</em> : '. $info['name']. '<br />'. END_LINE;  
    $out .=  '<em>'. _t('theme','author'). '</em> : <a href="'. $info['homepage']. '">'. $info['author']. '</a><br />'. END_LINE;  
    $out .=  '<em>'. _t('theme','version'). '</em> : '. $info['version']. ' | ';  
    $out .=  '<em>'. _t('theme','compatibility'). '</em> : '. $info['compatibility']. '<br />'. END_LINE;  
    $out .=  '<em>'. _t('theme','description'). '</em> : '. $info['description']. '<br />'. END_LINE;  
   * config_file::strip_ini_char  
   * suppression des caractères interdits dans un fichier ini  
  function strip_ini_char($content)  
    // on remplace les caractères "[]; par '(),  
    $ret= strtr($content, "\"[];", "'(),");  
   * config_file::initializeIniParams()  
   * charge les paramètres des fichiers ini et les place en constante globale par define  
      foreach ($existing_params as $existing_param =>  $existing_value)  
          define($existing_param,$existing_value);  
    foreach ($this->db_params as $section =>  $existing_params)  
      foreach ($existing_params as $existing_param =>  $existing_value)  
          define($existing_param,$existing_value);  
   * config_file::convert_type()  
   * conversion d'une variable en entier ou en float selon son contenu  
   * @param unknown_type $var   
      if( (float) $var != (int) $var )  
    if( $var ==  "true" )    return true;  
    if( $var ==  "false" )    return false;  
   * config_file::getPhpInfo()  
   * Retourne un string contenant les informations php en html  
    return preg_replace('%^.*<body>(.*)</body>.*$%ms', '$1', $info);  
 
 
        
       |