Qware_core/lib/system/system_template/modelixeqware.php

462 lines
15 KiB
PHP
Raw Normal View History

2020-12-03 16:35:44 +01:00
<?php
/**------------------------------------------------
*
* Rooty, 2018 <rooty@rooty.me>
*
*
* This software is protected by copyright, please
* read the file COPYRIGHT.
* 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. Please
* read the file LICENCE.
*
2020-12-07 13:28:14 +01:00
* Fichier ModeliXeQware.php
2020-12-03 16:35:44 +01:00
*
2020-12-07 13:28:14 +01:00
*Ce fichier contient la classe ModeliXeQware
2020-12-03 16:35:44 +01:00
*(template du site)
*
* @author Rooty <www.rooty.me|rooty@rooty.me>
* @link www.rooty.me
* @since 2004/04/14
* @version 0.2
* @copyright Copyright &copy; 2004-2005, Initiance
* @package system_template
*/
/**
*
*/
include_once($GLOBALS["CONF_LIB_PATH"]."lib/system/system_template/modelixe.php");
/**
* @package system_template
*/
2020-12-07 13:28:14 +01:00
class ModeliXeQware extends ModeliXe
2020-12-03 16:35:44 +01:00
{
public $template;
public $sessionParameter;
public function __construct($template, $sessionParameter='', $templateFileParameter='', $cacheDelay='-1')
{
// parent::__construct($this->template, $this->sessionParameter, $this->templateFileParameter, $this->cacheDelay);
// $this->template=$this->MxGetMain($this->template);
$this->SetTemplate($template);
$this->SetSessionParameter($sessionParameter);
$this->SetTemplateFileParameter($templateFileParameter);
$this->SetCacheDelay($cacheDelay);
parent::__construct($this->template, $this->sessionParameter, $this->templateFileParameter, $this->cacheDelay);
$this->SetMxOutputType("xhtml");
}
/* Appel le contructeur parent... */
2020-12-07 13:28:14 +01:00
// function ModeliXeQware($template, $sessionParameter = '', $templateFileParameter = '', $cacheDelay = -1) {
2020-12-03 16:35:44 +01:00
// $template=$this->MxGetMain($template);
// // parent::ModeliXe($template, $sessionParameter, $templateFileParameter, $cacheDelay);
// parent::__construct($template, $sessionParameter, $templateFileParameter, $cacheDelay);
// $this->SetMxOutputType("xhtml");
// }
function SetTemplate($template)
{
$this->template = $this->MxGetMain($template);
}
function SetSessionParameter($sessionParameter)
{
$this->sessionParameter = $sessionParameter;
}
function SetTemplateFileParameter($templateFileParameter)
{
$this->templateFileParameter = $templateFileParameter;
}
function SetCacheDelay($cacheDelay){
$this->cacheDelay = $cacheDelay;
}
function MxFormField($index, $type, $name, $value, $attribut = '', $placeholder = '', $special='')
{
//$name ="toto".$name;
if ($GLOBALS['CONF_MX_DOCUMENTOR'])
{
if ($this->adressSystem == 'relative')
echo "MxFormField:".$this->relativePath.'.'.$index."<BR>";
else
echo "MxFormField:".$index."<BR>";
}
if (isset($this->formField[$index]) || isset($this->formField[$this->relativePath.'.'.$index]))
{
return parent::MxFormField($index, $type, $name, $value, $attribut, $placeholder, $special);
}elseif($GLOBALS['CONF_MX_DEBUG']){
2020-12-07 13:28:14 +01:00
addError(8, "ModeliXeQware", "MX:formField non déclaré", __line__, __file__);
2020-12-03 16:35:44 +01:00
}
return false;
}
function MxImage($index, $imag, $title = '', $attribut = '', $size = false)
{
if ($GLOBALS['CONF_MX_DOCUMENTOR'])
{
if ($this->adressSystem == 'relative')
echo "MxImage:".$this->relativePath.'.'.$index."<BR>";
else
echo "MxImage:".$index."<BR>";
}
if (isset($this->image[$index]) || isset($this->image[$this->relativePath.'.'.$index]))
{
return $this->MxImagePrint($index, $imag, $title, $attribut, $size);
}elseif($GLOBALS['CONF_MX_DEBUG']){
2020-12-07 13:28:14 +01:00
addError(8, "ModeliXeQware", "MX:image non déclaré", __line__, __file__);
2020-12-03 16:35:44 +01:00
}
return false;
}
function MxText($index, $att){
if ($GLOBALS['CONF_MX_DOCUMENTOR'])
{
if ($this->adressSystem == 'relative')
echo "MxText:".$this->relativePath.'.'.$index."<BR>";
else
echo "MxText:".$index."<BR>";
}
if (isset($this->text[$index]) || isset($this->text[$this->relativePath.'.'.$index]))
{
return parent::MxText($index, $att);
}elseif($GLOBALS['CONF_MX_DEBUG']){
2020-12-07 13:28:14 +01:00
addError(8, "ModeliXeQware", "MX:text non déclaré ".$index, __line__, __file__);
2020-12-03 16:35:44 +01:00
}
return false;
}
function MxAttribut($index, $att){
if ($GLOBALS['CONF_MX_DOCUMENTOR'])
{
if ($this->adressSystem == 'relative')
echo "MxAttribut:".$this->relativePath.'.'.$index."<BR>";
else
echo "MxAttribut:".$index."<BR>";
}
if (isset($this->attribut[$index]) || isset($this->attribut[$this->relativePath.'.'.$index]))
{
return parent::MxAttribut($index, $att);
}elseif($GLOBALS['CONF_MX_DEBUG']){
2020-12-07 13:28:14 +01:00
addError(8, "ModeliXeQware", "MX:attribut non déclaré ".$index, __line__, __file__);
2020-12-03 16:35:44 +01:00
}
return false;
}
function MxSelect($index, $name, $value, $arrayArg, $defaut = '', $multiple = '', $javascript = '', $attibutes = '')
{
if ($GLOBALS['CONF_MX_DOCUMENTOR'])
{
if ($this->adressSystem == 'relative')
echo "MxSelect:".$this->relativePath.'.'.$index."<BR>";
else
echo "MxSelect:".$index."<BR>";
}
if (isset($this->select[$index]) || isset($this->select[$this->relativePath.'.'.$index]))
{
return parent::MxSelect($index, $name, $value, $arrayArg, $defaut, $multiple, $javascript, $attibutes);
}elseif($GLOBALS['CONF_MX_DEBUG']){
2020-12-07 13:28:14 +01:00
addError(8, "ModeliXeQware", "MX:select non déclaré ".$index, __line__, __file__);
2020-12-03 16:35:44 +01:00
}
return false;
}
function MxUrl($index, $urlArg, $param = '', $noSid = false, $attribut = '')
{
if ($GLOBALS['CONF_MX_DOCUMENTOR'])
{
if ($this->adressSystem == 'relative')
echo "MxUrl:".$this->relativePath.'.'.$index."<BR>";
else
echo "MxUrl:".$index."<BR>";
}
if (isset($this->select[$index]) || isset($this->select[$this->relativePath.'.'.$index]))
{
return parent::MxUrl($index, $urlArg, $param, $noSid, $attribut);
}elseif($GLOBALS['CONF_MX_DEBUG']){
2020-12-07 13:28:14 +01:00
addError(8, "ModeliXeQware", "MX:select non déclaré ".$index, __line__, __file__);
2020-12-03 16:35:44 +01:00
}
return false;
}
function MxHidden ($index, $param){
if ($GLOBALS['CONF_MX_DOCUMENTOR'])
{
if ($this->adressSystem == 'relative')
echo "MxHidden:".$this->relativePath.'.'.$index."<BR>";
else
echo "MxHidden:".$index."<BR>";
}
if (isset($this->hidden[$index]) || isset($this->hidden[$this->relativePath.'.'.$index]))
{
return parent::MxHidden ($index, $param);
}elseif($GLOBALS['CONF_MX_DEBUG']){
2020-12-07 13:28:14 +01:00
addError(8, "ModeliXeQware", "MX:select non déclaré ".$index, __line__, __file__);
2020-12-03 16:35:44 +01:00
}
return false;
}
function MxCheckerField($index, $type, $name, $value, $checked = false, $attribut = '')
{
if ($GLOBALS['CONF_MX_DOCUMENTOR'])
{
if ($this->adressSystem == 'relative')
echo "MxCheckerField:".$this->relativePath.'.'.$index."<BR>";
else
echo "MxCheckerField:".$index."<BR>";
}
if (isset($this->checker[$index]) || isset($this->checker[$this->relativePath.'.'.$index]))
{
return parent::MxCheckerField($index, $type, $name, $value, $checked, $attribut);
}elseif($GLOBALS['CONF_MX_DEBUG']){
2020-12-07 13:28:14 +01:00
addError(8, "ModeliXeQware", "MX:select non déclaré ".$index, __line__, __file__);
2020-12-03 16:35:44 +01:00
}
return false;
}
function MxBloc($index, $mod, $value = '')
{
if( (strtolower($mod)=="appe") )
{
$valuePath=( $value!='')?$this->MxGetTemplate($value):'';
$value=($valuePath==null)?$value:$valuePath;
}
if ($GLOBALS['CONF_MX_DOCUMENTOR'])
{
if ($this->adressSystem == 'relative')
echo "MxBloc:".$this->relativePath.'.'.$index."<BR>";
else
echo "MxBloc:".$index."<BR>";
}
// ajout du style pour chaque ligne...
if( (strtolower($mod)=="loop") && (function_exists("lineStyle")) )
lineStyle($index);
if (isset($this->father[$index]) || isset($this->father[$this->relativePath.'.'.$index]))
{
return parent::MxBloc($index, $mod, $value);
}elseif($GLOBALS['CONF_MX_DEBUG']){
2020-12-07 13:28:14 +01:00
addError(8, "ModeliXeQware", "MX:bloc non déclaré ".$index, __line__, __file__);
2020-12-03 16:35:44 +01:00
}
return false;
}
//Remplace le contenu des templates passés en arguments
function MxReplace($path){
if (! empty($this->sheetBuilding[$path])) $cible = $this->sheetBuilding[$path];
else $cible = $this->templateContent[$path];
//Remplacement de l'ensemble des attributs ModeliXe par les valeurs qui ont été instanciées ou leurs valeurs par défaut
reset($this->attributArray);
while (list($cle, $Fkey) = each($this->attributArray)){
$Farray = &$this->$Fkey;
if (is_array($Farray)){
reset($Farray);
while (list($Pkey, $value) = each($Farray)){
if ($path == substr($Pkey, 0, strrpos($Pkey, '.'))) {
if (isset($this->xPattern[$Fkey][$Pkey])){
$pattern = $this->xPattern[$Fkey][$Pkey];
$cible = str_replace($pattern, $value, $cible);
/* permet ainsi de tester si un Mx existe sur une boucle... */
// unset($Farray[$Pkey]);
$Farray[$Pkey]="";
}
}
}
}
}
//Remplacement de l'ensemble des balises ModeliXe par les valeurs qui ont été instanciées ou leurs valeurs par défaut
reset($this->flagArray);
while (list($cle, $Fkey) = each($this->flagArray)){
$Farray = &$this->$Fkey;
if (is_array($Farray)){
reset($Farray);
while (list($Pkey, $value) = each($Farray)){
if ($path == substr($Pkey, 0, strrpos($Pkey, '.'))) {
if (isset($this->xPattern[$Fkey][$Pkey])){
$pattern = $this->xPattern[$Fkey][$Pkey];
$cible = str_replace($pattern, $value, $cible);
/* permet ainsi de tester si un Mx existe sur une boucle... */
// unset($Farray[$Pkey]);
$Farray[$Pkey]="";
}
}
}
}
}
return $cible;
}
/**
* Olivier <olivier@initiance.com>
* Permet de ne pas se servir des attributs des images...
* @todo vérifier si d'autres éléments se servent ou non des attributs supplémentaires et si on en a réellement besoin!
*/
function MxImagePrint($index, $imag, $title = '', $attribut = '', $size = false)
{
if ($this->adressSystem == 'relative') $index = $this->relativePath.'.'.$index;
$end = $this->outputSystem;
if (($ima = '<img src="'.$imag.'"') && ! $size) {
/* $size = @getimagesize($imag);*/
/* $ima .= ' '.$size[3];*/
}
if ($title == 'no') $ima .= ' ';
elseif ($title) $ima .= ' alt="'.$title.'" title="'.$title.'" ';
else $ima .= ' alt="no title - source : '.basename($imag).'" ';
if ($attribut) $ima .= $attribut;
$ima .= ' '.$this->htmlAtt[$index].$end;
$this->image[$index] = $ima;
}
/**
* Olivier <olivier@initiance.com>
* Permet de récupérer une template spécifique pour un objet
* @param chaine chaine path vers la template
*/
function MxGetTemplate($templatePath, $tplSearch="/default/")
{
//Récupération du nom de la page
$pos=strrpos($templatePath,"/");
$page=substr($templatePath,$pos);
$pagename=str_replace(".mxt","",$page);
//Vérification de l'existence de la page sous-forme(page-nid-oid.mxt)
$newTemplatePath=str_replace($pagename,$pagename."-".nid()."-".oid(),$templatePath);
if (file_exists($newTemplatePath))
{
//Affectation du template nid-oid
return $newTemplatePath;
} else {
$newTemplatePath=str_replace($pagename,$pagename."-".oid(),$templatePath);
if(file_exists($newTemplatePath))
{
//Affectation du template oid
return $newTemplatePath;
}
}
if(!file_exists($templatePath) && (strpos($templatePath, $tplSearch)===false))
{
$templatePath=$this->MxGetTemplate(str_replace("/".$GLOBALS['SYSTEM_TEMPLATE_DIR'], $tplSearch, $templatePath));
}
if(file_exists($templatePath))
{
return $templatePath;
}else{
return false;
}
}
/**
* Olivier <olivier@initiance.com>
* Permet de surchargé la template principale par celle de l'objet courant
* @param chaine chaine path vers la template
*/
function MxGetMain($templatePath)
{
$mainPath=$GLOBALS["CONF_DATA_PATH"]."data/template/".$GLOBALS['SYSTEM_TEMPLATE_DIR']."main.mxt";
if ( ($templatePath==$mainPath) && ($GLOBALS["SYSTEM_CONTROL"]->className!=null) ){
$toTest=$GLOBALS["CONF_DATA_PATH"]."data/template/".$GLOBALS['SYSTEM_TEMPLATE_DIR']."object_coordination/".strtolower($GLOBALS["SYSTEM_CONTROL"]->className)."/main.mxt";
$newTemplatePath=$this->MxGetTemplate($toTest, $GLOBALS['SYSTEM_TEMPLATE_DIR']);
if ($newTemplatePath===false){
$newTemplatePath=$templatePath;
}
$toTest=$this->MxGetTemplate($newTemplatePath);
if (strpos($toTest, "main-".nid().".mxt")!==false)
$GLOBALS['SYSTEM_TEMPLATE_MAIN']="main-".nid().".mxt";
if (strpos($toTest, "main-".nid()."-".oid().".mxt")!==false)
$GLOBALS['SYSTEM_TEMPLATE_MAIN']="main-".nid()."-".oid().".mxt";
return $toTest;
}else{
return $this->MxGetTemplate($templatePath);
}
}
/**
* Olivier <olivier@initiance.com>
* Permet de surchargé la template principale par celle de l'objet courant
* @param chaine chaine path vers la template
*/
function IsMxBloc($index){
if ($this->adressSystem == 'relative') $index = $this->relativePath.'.'.$index;
$fat = (isset($this->father[$index]))?$this->father[$index]:false;
if (! $fat && $index != $this->absolutePath) return false;
else return true;
}
/**
* Olivier <olivier@initiance.com>
* erreur sur la var template dans le cas ou la compression est désactivée ou n'est pas valable...
* @param chaine chaine path vers la template
*/
//Retourne le fichier de cache
function MxGetCache()
{
/* ajout du support des sous-répertoires */
$template = str_replace("/","%2F", $this->template);
$cache_file = $this->mXCachePath.$this->mXUrlKey.'~'.$template;
if (! $open = @fopen($cache_file, 'rb')) $this->ErrorTracker(5, 'Can\'t open the cache file on "<b>'.$cache_file.'</b>" path.', 'MxGetCache');
if (! $read = @fread($open, filesize($cache_file))) $this->ErrorTracker(5, 'Can\'t read the cache file on "<b>'.$cache_file.'</b>" path.', 'MxGetCache', __FILE__, __LINE__);
@fclose($open);
//Parsing des paramètres de sessions
$read = $this->MxSessionParameterParsing($read);
//Si on cherche à mesurer les performances de ModeliXe
if ($this->performanceTracer) {
$read = str_replace('<mx:performanceTracer />', $this->GetExecutionTime().' [cache]', $read);
}
//Si il y a une gestion de la compression, envoie des en-têtes correspondantes
$this->ErrorChecker();
if ($this->mXoutput) return $read;
else print($this->MxSetCompress($read));
die();
}
/**
* Olivier <olivier@initiance.com>
* erreur sur la var template dans le cas ou la compression est désactivée ou n'est pas valable...
* @param chaine chaine path vers la template
*/
//Teste si le fichier de cache existe et son échéance
function MxCheckCache() {
/* ajout du support des sous-répertoires */
$template = str_replace("/","%2F", $this->template);
$cache_file = $this->mXCachePath.$this->mXUrlKey.'~'.$template;
if (@is_file($cache_file)){
if (($currentTime = filemtime($cache_file)) && (((time() - $currentTime) < $this->mXCacheDelay && filemtime($this->mXTemplatePath.$this->template) < $currentTime))) return true;
} else return false;
}
}
/**
* Pour les versions precedentes
2020-12-07 13:28:14 +01:00
* Permet de garder la compatibilité avec l'ancien nom de qware
2020-12-03 16:35:44 +01:00
*/
2020-12-07 13:28:14 +01:00
class ModeliXeGraniware extends ModelixeQware{
2020-12-03 16:35:44 +01:00
}
?>