config : read the correct file automatically
git-svn-id: https://svn.fournier38.fr/svn/ProgSVN/trunk@2093 bf3deb0d-5f1a-0410-827f-c0cc1f45334c
This commit is contained in:
156
config.php
156
config.php
@@ -20,15 +20,14 @@ class config
|
|||||||
/** All the parameters allowed with their default value */
|
/** All the parameters allowed with their default value */
|
||||||
public $default = array ();
|
public $default = array ();
|
||||||
/** Use the .php to protect the informations */
|
/** Use the .php to protect the informations */
|
||||||
public $confFile = "./datas/configuration.php";
|
public $confFile = null;
|
||||||
|
|
||||||
/** The constructor can update the confFile variable if it is defined in a
|
/** Select the configuration file */
|
||||||
constant */
|
public function selectConfFile ()
|
||||||
public function __construct ()
|
|
||||||
{
|
{
|
||||||
if (defined("CONFIGFILE"))
|
if (defined("CONFIGFILE"))
|
||||||
$this->confFile = CONFIGFILE;
|
$this->confFile = CONFIGFILE;
|
||||||
if (file_exists ("./datas/configuration.php"))
|
elseif (file_exists ("./datas/configuration.php"))
|
||||||
$this->confFile = "./datas/configuration.php";
|
$this->confFile = "./datas/configuration.php";
|
||||||
elseif (file_exists ("./data/configuration.php"))
|
elseif (file_exists ("./data/configuration.php"))
|
||||||
$this->confFile = "./data/configuration.php";
|
$this->confFile = "./data/configuration.php";
|
||||||
@@ -37,6 +36,7 @@ class config
|
|||||||
/** List all the parameters configurable in the software */
|
/** List all the parameters configurable in the software */
|
||||||
public function params ()
|
public function params ()
|
||||||
{
|
{
|
||||||
|
$this->selectConfFile ();
|
||||||
return $this->default;
|
return $this->default;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -45,6 +45,7 @@ class config
|
|||||||
@param string $param The option name to be returned */
|
@param string $param The option name to be returned */
|
||||||
public function get ($param)
|
public function get ($param)
|
||||||
{
|
{
|
||||||
|
$this->selectConfFile ();
|
||||||
if (!array_key_exists ($param, $this->default))
|
if (!array_key_exists ($param, $this->default))
|
||||||
throw new Exception ("Unknown parameter '$param'");
|
throw new Exception ("Unknown parameter '$param'");
|
||||||
if (!file_exists ($this->confFile))
|
if (!file_exists ($this->confFile))
|
||||||
@@ -76,6 +77,7 @@ class config
|
|||||||
@return TRUE if the parameter is saved or an exception */
|
@return TRUE if the parameter is saved or an exception */
|
||||||
public function set ($param, $value)
|
public function set ($param, $value)
|
||||||
{
|
{
|
||||||
|
$this->selectConfFile ();
|
||||||
if (!array_key_exists ($param, $this->default))
|
if (!array_key_exists ($param, $this->default))
|
||||||
throw new Exception ("Unknown parameter '$param'");
|
throw new Exception ("Unknown parameter '$param'");
|
||||||
if (!file_exists ($this->confFile))
|
if (!file_exists ($this->confFile))
|
||||||
@@ -151,6 +153,150 @@ class config
|
|||||||
return $phpcode;
|
return $phpcode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function tokenRead (&$tokens, $output = array ())
|
||||||
|
{
|
||||||
|
$lasttokens = array ();
|
||||||
|
$startDefault = false;
|
||||||
|
$parenthesis = 0;
|
||||||
|
$i = 0;
|
||||||
|
while (count ($tokens) > 0 && $i < 5000)
|
||||||
|
{
|
||||||
|
$i++;
|
||||||
|
$token = array_shift ($tokens);
|
||||||
|
if (is_array ($token))
|
||||||
|
{
|
||||||
|
list($id, $text) = $token;
|
||||||
|
if ($id === T_WHITESPACE) continue;
|
||||||
|
if ($id === T_VARIABLE && $text === '$this')
|
||||||
|
{
|
||||||
|
array_push ($lasttokens, "this");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (end ($lasttokens) === "this" && $id === T_OBJECT_OPERATOR)
|
||||||
|
{
|
||||||
|
array_push ($lasttokens, "->");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if ($lasttokens === array ("this","->") && $id === T_STRING &&
|
||||||
|
$text === "default")
|
||||||
|
{
|
||||||
|
$startDefault = true;
|
||||||
|
$lasttokens = array ();
|
||||||
|
}
|
||||||
|
if ($startDefault === false)
|
||||||
|
continue;
|
||||||
|
// Here we are in the default array
|
||||||
|
|
||||||
|
echo "TEXT=$text<br>\n";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ($startDefault === true)
|
||||||
|
{
|
||||||
|
if ($token === "(")
|
||||||
|
$parenthesis++;
|
||||||
|
if ($token === ")")
|
||||||
|
{
|
||||||
|
$parenthesis--;
|
||||||
|
if ($parenthesis === 0)
|
||||||
|
return $output;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
echo "TOK =$token<br>\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($i === 5000)
|
||||||
|
throw new Exception ("Too much lines in file (>5000)", 500);
|
||||||
|
return $output;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Create the HTML form to configure the software where the definitions are
|
||||||
|
done. Allow to edit an existing configuration */
|
||||||
|
public function configHTML ($values=array ())
|
||||||
|
{
|
||||||
|
$debug = 1;
|
||||||
|
if (!defined('T_ML_COMMENT'))
|
||||||
|
define('T_ML_COMMENT', T_COMMENT);
|
||||||
|
else
|
||||||
|
define('T_DOC_COMMENT', T_ML_COMMENT);
|
||||||
|
$source = file_get_contents ("models/model_configuration.php");
|
||||||
|
$tokens = token_get_all ($source);
|
||||||
|
// In debug, display the tokens for analyzis
|
||||||
|
if ($debug)
|
||||||
|
{
|
||||||
|
echo "DEBUG<br/>\n";
|
||||||
|
foreach ($tokens as $token)
|
||||||
|
{
|
||||||
|
if (is_string ($token))
|
||||||
|
echo "STRING : $token<br>\n";
|
||||||
|
else
|
||||||
|
{
|
||||||
|
list($id, $text, $line) = $token;
|
||||||
|
if ($id === 379) continue;
|
||||||
|
echo token_name ($id)."(id $id) $text [line $line]<br>\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return $this->tokenRead ($tokens);
|
||||||
|
|
||||||
|
exit;
|
||||||
|
$params = array ();
|
||||||
|
$string = "";
|
||||||
|
$start = false;
|
||||||
|
foreach ($tokens as $token)
|
||||||
|
{
|
||||||
|
if (is_array ($token))
|
||||||
|
{
|
||||||
|
list($id, $text) = $token;
|
||||||
|
// Look at the $this->default, and skip all before this token
|
||||||
|
if ($id === T_STRING && $text === "default" && $start === false)
|
||||||
|
{
|
||||||
|
// Found the start of the analysis
|
||||||
|
$start = true;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if ($start === false)
|
||||||
|
continue;
|
||||||
|
$string = "";
|
||||||
|
switch ($id)
|
||||||
|
{
|
||||||
|
case T_COMMENT:
|
||||||
|
case T_ML_COMMENT: // we've defined this
|
||||||
|
case T_DOC_COMMENT: // and this
|
||||||
|
// Skip the lines which don't contains phpdoc standard
|
||||||
|
if (substr ($text, 0, 3) !== "/**")
|
||||||
|
continue;
|
||||||
|
$definition = trim (substr ($text, 4, -2));
|
||||||
|
echo $definition."<br>\n";
|
||||||
|
break;
|
||||||
|
case T_CONSTANT_ENCAPSED_STRING:
|
||||||
|
$params[$text] = $definition;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
elseif ($start === true && substr ($string.$token, -2) === ");")
|
||||||
|
{
|
||||||
|
// Skip all the lines after the end of the $this->default definition
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$string .= $token;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
print_r ($params);
|
||||||
|
exit;
|
||||||
|
$fields = $this->configRead ($this->default);
|
||||||
|
|
||||||
|
exit;
|
||||||
|
print_r ($fields);
|
||||||
|
$f = new form ();
|
||||||
|
$f->fields ($fields);
|
||||||
|
echo $f->printHTML ();
|
||||||
|
}
|
||||||
|
|
||||||
/** Return an array of fields */
|
/** Return an array of fields */
|
||||||
private function configRead ($params)
|
private function configRead ($params)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user