diff options
Diffstat (limited to '')
-rw-r--r-- | include/common.inc.php | 2 | ||||
-rw-r--r-- | include/config.inc.php | 2 | ||||
-rw-r--r-- | include/constants.php | 5 | ||||
-rw-r--r-- | include/functions_user.inc.php | 58 | ||||
-rw-r--r-- | include/page_header.php | 20 | ||||
-rw-r--r-- | include/script.js | 28 | ||||
-rw-r--r-- | include/vtemplate.class.php | 601 |
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.'&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; -} -?> |