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_" . $type. "-". $value. "\" ". $updatable_pattern. "/>\n";
$out .= '<input type="radio" name="' . $radio_name. '" id="' . $type. '-'. $value. '" value="' . $value. '" ' . $checked_pattern. ' ' . $hidden_pattern. ' />';
$out .= '<label for="' . $type. '-'. $value. '" class="autowidth">' . $value . '</label>';
$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);
|