aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--include/common.inc.php2
-rw-r--r--include/config.inc.php2
-rw-r--r--include/constants.php5
-rw-r--r--include/functions_user.inc.php58
-rw-r--r--include/page_header.php20
-rw-r--r--include/script.js28
-rw-r--r--include/vtemplate.class.php601
7 files changed, 73 insertions, 643 deletions
diff --git a/include/common.inc.php b/include/common.inc.php
index f3f6fa945..2478850a9 100644
--- a/include/common.inc.php
+++ b/include/common.inc.php
@@ -125,7 +125,6 @@ include(PHPWG_ROOT_PATH . 'include/constants.php');
include(PHPWG_ROOT_PATH . 'include/config.inc.php');
include(PHPWG_ROOT_PATH . 'include/functions.inc.php');
include(PHPWG_ROOT_PATH . 'include/template.php');
-include(PHPWG_ROOT_PATH . 'include/vtemplate.class.php');
//
// Database connection
@@ -202,6 +201,5 @@ include(PHPWG_ROOT_PATH . 'include/user.inc.php');
// displaying the username in the language of the connected user, instead of
// "guest" as you can find in the database
if ( $user['is_the_guest'] ) $user['username'] = $lang['guest'];
-include_once( './template/'.$user['template'].'/htmlfunctions.inc.php' );
define('PREFIX_TABLE', $table_prefix);
?>
diff --git a/include/config.inc.php b/include/config.inc.php
index e4185dcb9..47175ec44 100644
--- a/include/config.inc.php
+++ b/include/config.inc.php
@@ -54,7 +54,7 @@ $conf['top_number'] = 10;
$conf['anti-flood_time'] = 60; // seconds between 2 comments : 0 to disable
$conf['max_LOV_categories'] = 50;
-$conf['default_lang'] = 'fr_FR';
$conf['default_style'] = 'default';
?>
+
diff --git a/include/constants.php b/include/constants.php
index 473bacfdc..ddc6a639d 100644
--- a/include/constants.php
+++ b/include/constants.php
@@ -29,6 +29,9 @@
define('DEBUG', 1); // Debugging on
//define('DEBUG', 0); // Debugging off
+// User level
+define('ANONYMOUS', 2);
+
// Error codes
define('GENERAL_MESSAGE', 200);
define('GENERAL_ERROR', 202);
@@ -40,7 +43,7 @@ define('CATEGORIES_TABLE', $table_prefix.'categories');
define('COMMENTS_TABLE', $table_prefix.'comments');
define('CONFIG_TABLE', $table_prefix.'config');
define('FAVORITES_TABLE', $table_prefix.'favorites');
-define('GROUPS_ACCESS_TABLE', $table_prefix.'group_access');
+define('GROUP_ACCESS_TABLE', $table_prefix.'group_access');
define('GROUPS_TABLE', $table_prefix.'groups');
define('HISTORY_TABLE', $table_prefix.'history');
define('IMAGE_CATEGORY_TABLE', $table_prefix.'image_category');
diff --git a/include/functions_user.inc.php b/include/functions_user.inc.php
index 34697897f..0c6671974 100644
--- a/include/functions_user.inc.php
+++ b/include/functions_user.inc.php
@@ -229,42 +229,29 @@ function check_login_authorization()
// Initialise user settings on page load
function init_userprefs($userdata)
{
- global $conf, $template, $lang, $lang_mapping;
- $style = $conf['default_style'];
- if ( !$userdata['is_the_guest'] )
- {
- if ( !empty($userdata['language']))
- {
- $conf['default_lang'] = $userdata['language'];
- }
- if ( !empty($userdata['template']))
- {
- $style = $userdata['template'];
- }
- }
-
- if ( !file_exists(@realpath(PHPWG_ROOT_PATH . 'language/' . $conf['default_lang'] . '/common.lang.php')) )
- {
- $conf['default_lang'] = 'en_EN';
- }
- include_once(PHPWG_ROOT_PATH . 'language/' . $conf['default_lang'] . '/common.lang.php');
+ global $conf, $template, $lang, $lang_info;
+ include_once(PHPWG_ROOT_PATH . 'language/infos.lang.php');
- if ( !file_exists(@realpath(PHPWG_ROOT_PATH . 'language/' . $conf['default_lang'] . '/lang.lang.php')) )
+ $language = (!empty($userdata['language']) && !$userdata['is_the_guest'] )?$userdata['language']:$conf['default_lang'];
+ $style = (!empty($userdata['template'])&& !$userdata['is_the_guest'] )?$userdata['template']:$conf['default_style'];
+
+ if ( !file_exists(@realpath(PHPWG_ROOT_PATH . 'language/' . $language . '/common.lang.php')) )
{
- $conf['default_lang'] = 'en_EN';
+ $language = 'en_EN';
}
- include_once(PHPWG_ROOT_PATH . 'language/' . $conf['default_lang'] . '/lang.lang.php');
+ include_once(PHPWG_ROOT_PATH . 'language/' . $language . '/common.lang.php');
+
if ($userdata['status'] == 'admin')
{
- $admin_lang = $userdata['language'];
- if ( !file_exists(@realpath(PHPWG_ROOT_PATH . 'language/' . $conf['default_lang'] . '/admin.lang.php')) )
+ if ( !file_exists(@realpath(PHPWG_ROOT_PATH . 'language/' . $language. '/admin.lang.php')) )
{
- $admin_lang = 'en_EN';
+ $language = 'en_EN';
}
- include_once(PHPWG_ROOT_PATH . 'language/' . $admin_lang . '/admin.lang.php');
+ include_once(PHPWG_ROOT_PATH . 'language/' . $language . '/admin.lang.php');
}
-
+
+ $lang_info['current_code']=$language;
$template= setup_style($style);
return;
}
@@ -280,13 +267,22 @@ function setup_style($style)
function encode_ip($dotquad_ip)
{
- $ip_sep = explode('.', $dotquad_ip);
- return sprintf('%02x%02x%02x%02x', $ip_sep[0], $ip_sep[1], $ip_sep[2], $ip_sep[3]);
+ $ip_sep = explode('.', $dotquad_ip);
+ return sprintf('%02x%02x%02x%02x', $ip_sep[0], $ip_sep[1], $ip_sep[2], $ip_sep[3]);
}
function decode_ip($int_ip)
{
- $hexipbang = explode('.', chunk_split($int_ip, 2, '.'));
- return hexdec($hexipbang[0]). '.' . hexdec($hexipbang[1]) . '.' . hexdec($hexipbang[2]) . '.' . hexdec($hexipbang[3]);
+ $hexipbang = explode('.', chunk_split($int_ip, 2, '.'));
+ return hexdec($hexipbang[0]). '.' . hexdec($hexipbang[1]) . '.' . hexdec($hexipbang[2]) . '.' . hexdec($hexipbang[3]);
+}
+
+function getuserdata($user)
+{
+ $sql = "SELECT * FROM " . USERS_TABLE;
+ $sql.= " WHERE ";
+ $sql .= ( ( is_integer($user) ) ? "id = $user" : "username = '" . str_replace("\'", "''", $user) . "'" ) . " AND id <> " . ANONYMOUS;
+ $result = mysql_query($sql);
+ return ( $row = mysql_fetch_array($result) ) ? $row : false;
}
?>
diff --git a/include/page_header.php b/include/page_header.php
index af28eba0e..6067c65e8 100644
--- a/include/page_header.php
+++ b/include/page_header.php
@@ -30,20 +30,27 @@
//
$template->set_filenames(array('header'=>'header.tpl'));
-$css = './template/'.$user['template'].'/'.$user['template'].'.css';
+$charset = empty($lang_info['charset'][$lang_info['current_code']])?
+ $lang_info['default']['charset']:$lang_info['charset'][$lang_info['current_code']];
+$dir = empty($lang_info['direction'][$lang_info['current_code']])?
+ $lang_info['default']['direction']:$lang_info['direction'][$lang_info['current_code']];
+$css = PHPWG_ROOT_PATH.'template/'.$user['template'].'/'.$user['template'].'.css';
$template->assign_vars(array(
- 'S_CONTENT_ENCODING' => $lang['charset'],
- 'T_STYLE' => $css,
- 'PAGE_TITLE' => $title
- ));
+ 'CONTENT_ENCODING' => $charset,
+ 'PAGE_TITLE' => $title,
+ 'LANG'=>substr($lang_info['current_code'],0,2),
+ 'DIR'=>$dir,
+
+ 'T_STYLE' => $css
+ ));
// refresh
if ( isset( $refresh ) && $refresh >0 && isset($url_link))
{
$url = $url_link.'&amp;slideshow='.$refresh;
$template->assign_vars(array(
- 'S_REFRESH_TIME' => $refresh,
+ 'REFRESH_TIME' => $refresh,
'U_REFRESH' => add_session_id( $url )
));
$template->assign_block_vars('refresh', array());
@@ -64,5 +71,4 @@ header( 'Expires: ' . gmdate('D, d M Y H:i:s', time()) . ' GMT' );
header( 'Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT' );
$template->pparse('header');
-$vtp=new VTemplate;
?>
diff --git a/include/script.js b/include/script.js
new file mode 100644
index 000000000..7821299c6
--- /dev/null
+++ b/include/script.js
@@ -0,0 +1,28 @@
+function SelectAll( formulaire )
+{
+len = formulaire.elements.length;
+var i=0;
+for( i = 0; i < len; i++)
+{
+ if ( formulaire.elements[i].type=='checkbox'
+ && formulaire.elements[i].name != 'copie')
+ {
+ formulaire.elements[i].checked = true;
+ }
+}
+}
+
+function Inverser( formulaire )
+{
+len = formulaire.elements.length;
+var i=0;
+for( i=0; i<len; i++)
+{
+ if ( formulaire.elements[i].type=='checkbox'
+ && formulaire.elements[i].name != 'copie')
+ {
+ formulaire.elements[i].checked = !formulaire.elements[i].checked;
+ }
+}
+}
+
diff --git a/include/vtemplate.class.php b/include/vtemplate.class.php
deleted file mode 100644
index 93554bd59..000000000
--- a/include/vtemplate.class.php
+++ /dev/null
@@ -1,601 +0,0 @@
-<?php
-// +-----------------------------------------------------------------------+
-// | vtemplate.class.php |
-// +-----------------------------------------------------------------------+
-// | application : PhpWebGallery <http://phpwebgallery.net> |
-// | branch : BSF (Best So Far) |
-// +-----------------------------------------------------------------------+
-// | file : $RCSfile$
-// | last update : $Date$
-// | last modifier : $Author$
-// | revision : $Revision$
-// +-----------------------------------------------------------------------+
-// | This program is free software; you can redistribute it and/or modify |
-// | it under the terms of the GNU General Public License as published by |
-// | the Free Software Foundation |
-// | |
-// | This program is distributed in the hope that it will be useful, but |
-// | WITHOUT ANY WARRANTY; without even the implied warranty of |
-// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
-// | General Public License for more details. |
-// | |
-// | You should have received a copy of the GNU General Public License |
-// | along with this program; if not, write to the Free Software |
-// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
-// | USA. |
-// +-----------------------------------------------------------------------+
-// to make it work on nexen.net
-set_magic_quotes_runtime(0);
-
-if ( !isset( $DEFINE_VTEMPLATE ) )
-{
- define("ALL",1);
- // Tag d'ouverture des variables : vous pouvez changer ce paramètre.
- define("VARTAG","{#");
- define("VTEMPLATE_VERSION","1.3.1");
- define("VTEMPLATE_TYPE","BA");
- define("VTEMPLATE_BUILD","6");
-
- class Err {
- var $msg;
- var $titre;
-
- function error( $errno, $arg = "", $code = 0, $disp = 0 ) {
- // Gestion des erreurs
- switch ( $errno )
- {
- case 1:
- $this->titre="Erreur de session n° $code";
- $this->msg = "La zone $arg est déjà ouverte.Avant d'ajouter une session sur cette zone, vous devez la fermer à l'aide de la fonction closeSession().<br>" ;
- break;
- case 2:
- $this->titre="Erreur de session n° $code";
- $this->msg = "Vous tentez de fermer une session de la zone $arg alors qu'aucune session pour cette zone n'existe.Pour ouvrir une session, utilisez la fonction addSession().<br>";
- break;
- case 3:
- $this->titre="Erreur de session n° $code";
- $var = $arg[1];
- $zone = $arg[0];
- $this->msg = "Vous essayez de valoriser la variable $var sans avoir créer de session de la zone $zone.Utilisez la fonction addSession() pour créer une session, puis setVar pour valoriser une variable.<br>";
- break;
- case 4:
- $this->titre="Erreur de session n° $code";
- $var = $arg[1];
- $zone = $arg[0];
- $this->msg = "La variable $var que vous souhaitez valoriser n'existe pas dans la zone $zone.<br>";
- break;
- case 5:
- $this->titre="Erreur de parsing n° $code";
- $this->msg = "Vous utilisez des caractère non autorisés pour déclarer vos zones.Vous pouvez utiliser tous les caractères à l'exception de \'{\' , \'#\' \'}\' et \'|\'.<br>";
- break;
- case 6:
- $this->titre="Erreur de parsing n° $code";
- $this->msg = "Vous ne pouvez pas utiliser le même nom ($arg)de zone plusieurs fois.<br>";
- break;
- case 7:
- $this->titre="Erreur de parsing n° $code";
- $this->msg = "Vous avez oublié de fermer la zone $arg.<br>";
- break;
- case 8:
- $this->titre="Erreur de traitement n° $code";
- $this->msg = "Le fichier template $arg est introuvable.<br>";
- break;
- case 9:
- $this->titre="Erreur de traitement n° $code";
- $this->msg = "Impossible d'ouvrir le fichier $arg.Vérifiez les droits de ce fichier.<br>";
- break;
- case 10:
- $this->titre="Erreur de traitement n° $code";
- $this->msg = "Impossible de lire le fichier template $arg.<br>";
- break;
- case 11:
- $this->titre="Erreur de traitement n° $code";
- $this->msg = "La zone $arg est introuvable.Vérifiez la syntaxe de cette zone.<br>";
- break;
- case 12:
- $this->titre="Erreur de traitement n° $code";
- $this->msg = "La variable $arg est introuvable .Vérifiez la syntaxe de la variable.<br>";
- break;
- case 13:
- $this->titre="Erreur de traitement n° $code";
- $this->msg = "L'identifiant de fichier spécifié n'existe pas.Vérifiez les fonctions Open() de votre script.<br>";
- break;
- case 14:
- $this->titre="Erreur de traitement n° $code";
- $var = $arg[1];
- $file = $arg[0];
- $this->msg = "La variable $var dans le fichier $file est introuvable.Vérifiez la syntaxe de la variable.<br>";
- break;
- case 15:
- $this->titre="Erreur de traitement n° $code";
- $var = $arg[2];
- $zone = $arg[1];
- $fichier = $arg[0];
- $this->msg = "La variable $var dans la zone $zone du fichier $fichier est introuvable.Vérifiez la syntaxe de la variable et du nom de la zone.<br>";
- break;
- default:
- $this->titre = "Erreur inconnue $code";
- $this->msg = "Veuillez le rapporter aux auteurs de la classe.";
- }
- $this->titre .= ": <br>";
- if ( $disp )
- {
- $web = "Pour plus d'informations, consultez la <a href=\"http://www.virtual-solution.net/vtemplate/docs/debug-mod.php?version=".VTEMPLATE_VERSION."&build=".VTEMPLATE_BUILD."&type=".VTEMPLATE_TYPE."&error=$code\" target=\"_blank\">doc en ligne</a>";
- echo "<font face=verdana size=2 color=red><u>$this->titre</u><i>$this->msg</i>$web<br><br></font>";
- }
- return -1;
- }
- } // Fin classe
-
- class Session extends err {
- var $name; // Name of the session
- var $globalvar = array(); // List of global variable of the session
- var $varlist = array(); // List of var in this session
- var $subzone = array(); // list of sub-zone
- var $temp; // Generated code for the current session
- var $generated = NULL; // The final code
- var $source; // Source code
- var $used=0; // Indicates if the session contain used variable
- var $stored; // Give the filename were is stored the session
-
- function Session( $name, $source, $stored ) {
- $this->name = $name;
- $this->source = $source;
- $this->stored = $stored;
- $this->parseVar();
- }
-
- function parseVar(){
- // Récupération des noms des variables
- $regle = "|".VARTAG."(.*)}|sU";
- preg_match_all ($regle,$this->source,$var1);
- // Création du tableau de variable à partir de la liste parsée.
- $this->varlist=@array_merge($var[1],$var1[1]);
- return 1;
- }
-
- function init(){
- if ( $this->used )
- return $this->error(1,array($this->stored,$this->name),"SESSION1",1);
- // Reset generated code
- $this->temp = $this->source;
- $this->used = 1;
- }
-
- function closeSession(){
- // Check if the zone has been used.
- if ( !$this->used )
- return $this->error(2,array($this->stored,$this->name),"SESSION2",1);
- // Set Globals vars.
- $this->generateCode();
- $this->used=0;
- return 1;
- }
-
- function reset(){
- $this->used = 0;
- $this->generated = NULL;
- return 1;
- }
-
- function addSubZone( &$subzone ) {
- $this->subzone[$subzone->name] = &$subzone;
- return 1;
- }
-
- function setVar($varname,$value){
- if ( !$this->used )
- return $this->error(3,array($this->stored,$this->name,$varname),
- "SESSION3",1);
- if (!in_array($varname,$this->varlist))
- return $this->error(4,array($this->name,$varname),"SESSION4",1);
- $regle = "(\\".VARTAG."$varname\})";
- $this->temp = preg_replace($regle,$value,$this->temp);
- return 1;
- }
-
- function dispVar(){
- echo "Liste variables de $this->name:<br>";
- foreach ( $this->varlist as $vars ) echo "$vars <br>";
- }
-
- function setGlobalVar($varname,$value){
- $set = 0;
- if (in_array($varname,$this->varlist ) )
- {
- // Replace the var into this session
- $this->globalvar[$varname]=$value;
- $set = 1;
- }
- // Replace the var into sub zones
- foreach(array_keys($this->subzone) as $subzone){
- $set = $this->subzone[$subzone]->setGlobalVar($varname,$value) || $set;
- }
- return $set;
- }
-
- function replaceGlobalVar(){
- if ( count($this->globalvar) )
- {
- foreach($this->globalvar as $varname => $value) {
- $regle = "(\\".VARTAG."$varname\})";
- $this->temp = preg_replace($regle,$value,$this->temp);
- }
- }
- }
-
-
- function generateCode(){
- if ($this->used == 0) return $this->generated;
- // Replace global var.
- if ( count($this->globalvar) ) $this->replaceGlobalVar();
- // Replace all unused variable by ""
- $regle = "|\\".VARTAG."([^}]*)\}|";
- $this->temp = preg_replace($regle,"",$this->temp);
- // Generate the subzone(s) code
- if(count($this->subzone)){
- foreach(array_keys($this->subzone) as $subzone){
- $text = ($this->subzone[$subzone]->used) ? $this->subzone[$subzone]->generateCode() : $this->subzone[$subzone]->generated;
- $this->temp = preg_replace("(\|$subzone\|)",$text,$this->temp);
- $this->subzone[$subzone]->reset();
- }
- }
- $this->generated .= $this->temp;
- return $this->generated;
- }
-
- function inVarList($varname){
- return in_array($varname,$this->varlist);
- }
- } // Fin classe
-
- class VTemplate_Private extends Err{
- /****************************************
- * Private Class. *
- ****************************************/
-
- var $sources=array(); // Sources des zones issues
- // de la premiere partie du parsing.
- var $sessions=array(); // Tableau de sessions
- var $v_global=array(); // Globla var array.
-
-/****************************************************************
- Parsing Functions for Template files. ( PF 1.0 )
- ****************************************************************/
-
- function getNom($code){
- // Retourne le premier nom de zone qu'il trouve dans le code
- preg_match("(<!--VTP_([^()]+)-->)sU",$code,$reg);
- // Tester la présence des caratère invalides dans le nom ( | et {});
- if ( @count( explode("|",$reg[1]))>1
- || @count(explode("{",$reg[1]))>1
- || @count(explode("}",$reg[1]))>1 )
- exit($this->error(5,$reg[1],"PARSE1",1));
- return @$reg[1];
- }
-
- function endTag($code,$nom){
- // Renvoie TRUE(1) si le tag de fermeture est présent.
- preg_match("(<!--/VTP_$nom-->)sU",$code,$reg);
- return ($reg[0]!="<!--/VTP_$nom-->") ? 0 : 1;
- }
-
- function getSource($code,$nom,$type=0){
- // Retourne le source de la zone de nom $nom
- preg_match_all ("(<!--VTP_$nom-->(.*)<!--/VTP_$nom-->)sU",$code,$reg);
- return $reg[$type][0];
- }
-
- function parseZone($code_source,$nom_zone="|root|"){
- // Fonction récursive de parsing du fichier template
- // Vérification que la zone n'existe pas
- if (isset($this->sources[$nom_zone]))
- exit($this->error(6,$nom_zone,"PARSE2",1));
- // Enregistrement du code source
- $this->sources[$nom_zone]["source"]=$code_source;
- // Rappel de la fonction pour chaque fils.
- while ($nom_fils=$this->getNom($this->sources[$nom_zone]["source"]) ) {
- // Vérification que le tag de fin est présent.
- if (!$this->endTag($code_source,$nom_fils))
- exit($this->error(7,$nom_fils,"PARSE3",1));
- // Parse le fils
- $this->parseZone($this->getSource($this->sources[$nom_zone]["source"],$nom_fils,1),$nom_fils);
- // Enregistre le nom du fils dans la liste des fils
- $this->sources[$nom_zone]["fils"][]=$nom_fils;
- // Remplace le code du fils dans le source du père
- $this->sources[$nom_zone]["source"]=str_replace(
- $this->getSource($this->sources[$nom_zone]["source"],$nom_fils,0),
- "|$nom_fils|",
- $this->sources[$nom_zone]["source"]);
- // Teste si la zone $nom_fils n'existe pas plusieurs fois
- // dans la zone $nom_zone
- if (count(explode("|$nom_fils|",$this->sources[$nom_zone]["source"]))>2)
- exit($this->error(6,$nom_fils,"PARSE4",1));
- } // fin While
- return 1;
- }
-
-/****************************************************************
- Session Management functions ( SMF 1.0 )
- ****************************************************************/
-
- function createSession($handle,$zone = "|root|"){
- // Create a new session of the zone
- $this->sessions[$handle][$zone] = new Session($zone,$this->sources[$zone]["source"],$this->file_name[$handle]);
- // Create sub-zone
- if (@count($this->sources[$zone]["fils"])){
- foreach($this->sources[$zone]["fils"] as $subzone){
- $this->createSession($handle,$subzone);
- $this->sessions[$handle][$zone]->addSubZone($this->sessions[$handle][$subzone]);
- }
- }
- //end createSession
- }
-
-
-/****************************************************************
- Global Variable Management Functions ( GVMF 1.0 )
- ****************************************************************/
-
- function setGZone($handle,$zone,$var,$value){
- // Define Global var for $zone and its sub-zone.
- // Set global value to $zone vars.
- return $this->sessions[$handle][$zone]->setGlobalVar($var,$value);
- }
-
- function setGFile($handle,$var,$value) {
- return $this->sessions[$handle]["|root|"]->setGlobalVar($var,$value);
- }
-
- function setGAll($var,$value){
- $declare = 0;
- $this->v_global[$var]=$value;
- if (is_array($this->sessions)){
- foreach($this->sessions as $handle => $v){
- $declare = $this->setGFile($handle,$var,$value) || $declare;
- }
- }
- return $declare;
- }
-
- function setGOpened($handle){
-// Set Global var into the opened file
- foreach($this->v_global as $name => $val){
- $this->setGFile($handle,$name,$val);
- }
- return 1;
- }
-
-// Fin VTemplate_Private
- }
-
-
- class VTemplate extends VTemplate_Private{
-/****************************************
- * Public Class. *
- * ***************************************/
-
-
-/****************************************************************
- Core Functions
-*****************************************************************/
-
-
- function Open($nomfichier){
-// Ouverture d'un fichier source et retourne le handle de ce fichier
-// Création du handle:
- $handle = "{".count($this->sessions)."}" ;
-
-
-// Récupération du source à parser
- if (!@file_exists($nomfichier)) return $this->error(8,$nomfichier,"TTT1",1);
- if (!$f_id=@fopen($nomfichier,"r")) return $this->error(9,$nomfichier,"TTT2",1);
- if (!$source=@fread($f_id, filesize($nomfichier))) return $this->error(10,$nomfichier,"TTT3",1);
- clearstatcache();
- fclose($f_id);
-
-// Store the filename
- $this->file_name[$handle]=$nomfichier;
-
-// Parse les zones
- $this->parseZone($source);
-
-// Création du tableau de session
- $this->createSession($handle);
-
-//Nettoyage des variables temporaires
- $this->sources=NULL;
-
-// Set global var.
- $this->setGOpened($handle);
-
- $this->addSession($handle);
- return $handle;
- }
-
- function newSession($handle="{0}",$nom_zone = "|root|"){
- if ( $this->sessions[$handle][$nom_zone]->used ) $this->closeSession($handle,$nom_zone);
- $this->addSession($handle,$nom_zone,$cache,$time,$num_session);
- return 1;
- }
-
- function addSession($handle="{0}",$nom_zone = "|root|"){
- // Does the zone exist ?
- if(!isset($this->sessions[$handle][$nom_zone])) return $this->error(11,array($nom_zone,$this->file_name[$handle]),"TTT4",1);
- $this->sessions[$handle][$nom_zone]->init();
- return 1;
- }
-
- function closeSession($handle="{0}",$nom_zone = "|root|"){
-// Close the current session and all his sub-session
- // Check if the zone exists.
- if(!isset($this->sessions[$handle][$nom_zone])) return $this->error(11,array($nom_zone,$this->file_name[$handle]),"TTT5",1);
- // Closing sub-zone
- $this->sessions[$handle][$nom_zone]->closeSession();
- return 1;
- }
-
- function setGlobalVar($arg1,$arg2,$arg3){
- if ($arg1 == 1){
- if (!$this->setGAll($arg2,$arg3)) return $this->error(12,$arg2,"TTT6",1);
- return 1;
- }
- if (!isset($this->sessions[$arg1])) return $this->error(13,$arg1,"TTT7",1);
- $tab=explode(".",$arg2);
- if (count($tab)==1){
- if (!$this->setGFile($arg1,$arg2,$arg3)) return $this->error(14,array($this->file_name[$arg1],$arg2),"TTT8",1);
- }
- else if (count($tab==2)){
- if (!isset($this->sessions[$arg1][$tab[0]])) return $this->error(11,array($tab[0],$this->file_name[$arg1],"TTT9",1));
- if (!$this->setGZone($arg1,$tab[0],$tab[1],$arg3)) return $this->error(15,array($this->file_name[$arg1],$tab[0],$tab[1]),"TTT10",1);
- }
- return 1;
- }
-
- function setVar($handle,$zone_var,$val){
- // Fill the variable
- $tab=explode(".",$zone_var);
- if(count($tab)==2){
- $zone=$tab[0];
- $var=$tab[1];
- }
- else
- {
- $zone="|root|";
- $var=$tab[0];
- }
-
- // Teste l'existence de la zone dans la liste
- if (!isset($this->sessions[$handle][$zone])) return $this->error(11,array($this->file_name[$handle],$zone),"TTT11",1);
-
- //Enregistre la variable
- return $this->sessions[$handle][$zone]->setVar($var,$val);
- }
-
- function Parse($handle_dest,$zone_var_dest,$handle_source,$zone_source="|root|"){
- if($this->sessions[$handle_source][$zone_source]->used == 1) $this->closeSession($handle_source,$zone_source);
- $this->setVar($handle_dest,$zone_var_dest, $this->sessions[$handle_source][$zone_source]->generated);
- }
-
- function setVarF($handle,$zone_var,$file){
-// Fonction qui ouvre le fichier file et copie ce qu'il y a dedans dans une variable.
- $tab=explode(".",$zone_var);
-
-// Récupération nom de la zone et de la variable.
- if(count($tab)==2){
- $zone=$tab[0];
- $var=$tab[1];
- }
- else
- {
- $zone="|root|";
- $var=$tab[0];
- }
-// Teste l'existence de la zone dans la liste
- if (!is_object($this->sessions[$handle][$zone])) return $this->error(11,array($handle,$zone),"TTT12",1);
-
- // Récupération du source à lire
- if (!@file_exists($file)) return $this->error(8,$file,"TTT13",1);
- if (!$f_id=@fopen($file,"r")) return $this->error(9,$file,"TTT14",1);
- if (!$val=@fread($f_id, filesize($file))) return $this->error(10,$file,"TTT15",1);
- clearstatcache();
- fclose($f_id);
-
-//Enregistre la variable
- return $this->sessions[$handle][$zone]->setVar($var,$val);
- }
-
-
-
-
-
- function isZone($handle, $zone="|root|")
- {
- return isset($this->sessions[$handle][$zone]) ;
- }
-
- function Display($handle="{0}",$display=1,$zone="|root|"){
- $this->closeSession($handle,$zone);
- $c_genere = $this->sessions[$handle][$zone]->generated;
-
- if ($display) echo $c_genere; else return ($c_genere);
- }
-//fonction complementaire version BETA
-
-/*
- *
- On peut l'utiliser :
-- SetVarTab($array): tout les couples clef/valeur sont valorisées
-- SetVarTab($array,$index) seuls les couples clef/valeur dont la clef est dans le tableau index ou dont la valeur == $index (si pas tableau)
-Si $index contient ou est une clef de type zone.clef, la clef sera extraite du texte est servira d'index pour $array
-
-Vincent
-*/
-
- function setVarTab($handle,$zones,$index = array()){
- if (is_array($index))
- {
- if (count($index)>0)
- {
- reset($index);
- while (list (, $key) = each ($index))
- {
- $tab=explode(".",$key);
- if(count($tab)==2){
- $var=$tab[1];
- }
- else
- {
- $var=$tab[0];
- }
- setVar($handle,$key,$zones[$var]);
- }
- }
- else
- {
- reset($zones);
- while (list ($key, $val) = each ($zones))
- {
- setVar($handle,$key,$val);
- }
- }
- }
- else
- {
- setVar($handle,$index,$zones[$index]);
- }
- }
-
- function setGlobalVarTab($handle,$zones,$index = array()){
- if (is_array($index))
- {
- if (count($index)>0)
- {
- reset($index);
- while (list (, $key) = each ($index))
- {
- $tab=explode(".",$key);
- if ( count( $tab ) == 2 ) $var=$tab[1];
- else $var=$tab[0];
- setGlobalVar( $handle, $key, $zones[$var] );
- }
- }
- else
- {
- reset($zones);
- while (list ($key, $val) = each ($zones))
- {
- GlobalVar($handle,$key,$val);
- }
- }
- }
- else
- {
- setBlobalVar($handle,$index,$zones[$index]);
- }
- }
- // End VTemplate
- }
- $DEFINE_VTEMPLATE = 1;
-}
-?>