"; class TheTemplate{ var $TemplateID; var $TemplateNAME; var $TemplateDATA; var $TemplateACTIVE; var $TemplateIsModule; var $TemplateClass; var $TemplateDESCRIPTION; var $TemplateCompiled; function Prepare($Verbose = false, $DebugInfo=false){ global $USEDTEMPLATES; global $METADATABEGIN, $METADATAEND; $POSSIBLE = explode($METADATABEGIN, $this->TemplateDATA); $DATUM = array(); for($i=1; $iTemplateDATA; if( is_array($DATUM) ){ reset($DATUM); // while( list($Key,$Val) = each($DATUM) ){ foreach($DATUM as $Key => $Val ){ if( $Val == 1 ){ if( substr($Key, 0, 1) == "@" ){ $T = new TheTemplate; $SubTemplateName = substr($Key, 1); if( $Verbose) echo "\tst[$SubTemplateName]\n"; if( ! $T->LoadTemplate( $SubTemplateName, $DoPreCompile=true, $Verbose) ){ return; } $T->Prepare($Verbose, $DebugInfo); // process includes in SubTemplate... $PATTERN = $METADATABEGIN . "@" . $SubTemplateName . $METADATAEND; // echo "$PATTERN -- $REPLACEMENT
\n"; $TemporaryTemplate = str_replace( $PATTERN, // "\n\n" . $T->TemplateCompiled // . "\n\n" , $TemporaryTemplate ); } } } // while( list($Key,$Val) = each($DATUM) ){ } // if( is_array($DATUM) ) if( $TemporaryTemplate != $this->TemplateCompiled ){ if( $this->TemplateClass != "CONSTANT" && $DebugInfo ){ $this->TemplateCompiled = "\n\n" . $TemporaryTemplate . "\n"; }else{ $this->TemplateCompiled = $TemporaryTemplate; } $this->SaveTemplate(); } } // function Prepare() function SaveTemplate(){ global $DB, $DBID ; if( !isset($this->TemplateID) || $this->TemplateID==0 ) return; $SQL = "update WEB_TEMPLATES set ". "TemplateID = '" . addslashes($this->TemplateID) . "', " . "TemplateDATA = '" . addslashes($this->TemplateDATA) . "', " . "TemplateNAME = '" . addslashes($this->TemplateNAME) . "', " . "TemplateACTIVE = '" . addslashes($this->TemplateACTIVE) . "', " . "TemplateIsModule = '" . addslashes($this->TemplateIsModule) . "', " . "TemplateClass = '" . addslashes($this->TemplateClass) . "', " . "TemplateDESCRIPTION = '" . addslashes($this->TemplateDESCRIPTION) . "', " . "TemplateCompiled = '" . addslashes($this->TemplateCompiled) . "' " . "where TemplateID='$this->TemplateID'"; // echo "::: $SQL :::\n\n"; $result = mysqli_query($DB, $SQL); } // function SaveTemplate() function LoadTemplate($Name, $DoPreCompile=false, $Verbose=false){ global $DB, $DBID; $SQL = "select * from WEB_TEMPLATES where TemplateNAME='$Name'"; $result = GetObject($DB, $SQL); $retval = 0; $this->TemplateID = 0; $this->TemplateDATA = ""; $this->TemplateNAME = ""; $this->TemplateACTIVE = "N"; $this->TemplateIsModule = "N"; $this->TemplateClass = "CONSTANT"; $this->TemplateDESCRIPTION = ""; $this->TemplateCompiled = ""; if( $result ){ $this->TemplateID = $result["TemplateID"]; $this->TemplateDATA = $result["TemplateDATA"]; $this->TemplateNAME = $result["TemplateNAME"]; $this->TemplateACTIVE = $result["TemplateACTIVE"]; $this->TemplateIsModule = $result["TemplateIsModule"]; $this->TemplateClass = $result["TemplateClass"]; $this->TemplateDESCRIPTION = $result["TemplateDESCRIPTION"]; $this->TemplateCompiled = $result["TemplateCompiled"]; $retval = 1; } if( !$retval ){ return; // echo "\tCan't load template '$Name'.\n"; flush(); }else{ if( $DoPreCompile ){ // evaluate includes... $this->Prepare($Verbose); } } return $retval; } //LoadTemplate function LoadTemplateID($ID, $DoPreCompile=false, $Verbose=0){ global $DB, $DBID; $SQL = "select * from WEB_TEMPLATES where TemplateID='$ID'"; $result = GetObject($DB, $SQL); $retval = 0; $this->TemplateID = 0; $this->TemplateDATA = ""; $this->TemplateNAME = ""; $this->TemplateACTIVE = "N"; $this->TemplateIsModule = "N"; $this->TemplateClass = "CONSTANT"; $this->TemplateDESCRIPTION = ""; $this->TemplateCompiled = ""; if( $result ){ $this->TemplateID = $result["TemplateID"]; $this->TemplateDATA = $result["TemplateDATA"]; $this->TemplateNAME = $result["TemplateNAME"]; $this->TemplateACTIVE = $result["TemplateACTIVE"]; $this->TemplateIsModule = $result["TemplateIsModule"]; $this->TemplateClass = $result["TemplateClass"]; $this->TemplateDESCRIPTION = $result["TemplateDESCRIPTION"]; $this->TemplateCompiled = $result["TemplateCompiled"]; $retval = 1; } if( $DoPreCompile ){ // evaluate includes... $this->Prepare($Verbose); } return $retval; } //LoadTemplateID function PrepareTemplate(&$HashArrayParamNamesAndParamValues, $Evaluate=0, $UseCompiled=0){ global $METADATABEGIN, $METADATAEND, $PHP_SELF, $DOCUMENT_ROOT; if( $UseCompiled ){ $ResultStr = $this->TemplateCompiled; }else{ $ResultStr = $this->TemplateDATA; } if( is_array($HashArrayParamNamesAndParamValues) ){ reset ($HashArrayParamNamesAndParamValues); // replace template patterns... // while ( list ($PATTERN, $REPLACEMENT) = each ($HashArrayParamNamesAndParamValues)) { foreach( $HashArrayParamNamesAndParamValues as $PATTERN => $REPLACEMENT ){ $PATTERN = $METADATABEGIN . $PATTERN . $METADATAEND; $ResultStr = str_replace($PATTERN, $REPLACEMENT, $ResultStr); } } // replace predefined patterns... // language global $SLANG; $PATTERN = "#{SLANG}"; $REPLACEMENT = $SLANG; $ResultStr = str_replace($PATTERN, $REPLACEMENT, $ResultStr); // current template ID: "" $PATTERN = ""; $REPLACEMENT = $this->TemplateID; $ResultStr = str_replace($PATTERN, $REPLACEMENT, $ResultStr); // last file mod date: "" $PATTERN = ""; $REPLACEMENT = $PHP_SELF; $ResultStr = str_replace($PATTERN, $REPLACEMENT, $ResultStr); $PATTERN = ""; $REPLACEMENT = "http://" . $_SERVER['SERVER_NAME'] . $PHP_SELF . "?" . $_SERVER['QUERY_STRING']; $ResultStr = str_replace($PATTERN, $REPLACEMENT, $ResultStr); // last file mod date: "" $PATTERN = ""; if( is_file($DOCUMENT_ROOT . $PHP_SELF) ){ $REPLACEMENT = date("d-M-Y, H:i:s", filemtime($DOCUMENT_ROOT . $PHP_SELF)); }else{ $REPLACEMENT = date("d-M-Y, H:i:s"); } $ResultStr = str_replace($PATTERN, $REPLACEMENT, $ResultStr); // replace predefined patterns... // current date: "" $PATTERN = ""; $REPLACEMENT = "<"."? echo date(\"m-d-Y\"); ?".">"; $ResultStr = str_replace($PATTERN, $REPLACEMENT, $ResultStr); // current time: "" $PATTERN = ""; $REPLACEMENT = "<"."% echo date(\"H:i\"); %".">"; $ResultStr = str_replace($PATTERN, $REPLACEMENT, $ResultStr); // current time with seconds...: "" $PATTERN = ""; $REPLACEMENT = "<"."% echo date(\"H:i:s\"); %".">"; $ResultStr = str_replace($PATTERN, $REPLACEMENT, $ResultStr); // pseudo random number: "" srand((double)microtime()*1000000); $PATTERN = ""; $REPLACEMENT = "<"."% echo rand(0,1000000); %".">"; $ResultStr = str_replace($PATTERN, $REPLACEMENT, $ResultStr); // "" $PATTERN = ""; $REPLACEMENT = "<"."% DrawThePath(\$folder, \$PathWithHLinks, \$PHP_SELF); echo \$PathWithHLinks; %".">"; $ResultStr = str_replace($PATTERN, $REPLACEMENT, $ResultStr); // "" $PATTERN = ""; $REPLACEMENT = "<"."% DrawThePath(\$folder, \$PathWithHLinks, \$PHP_SELF); echo \$PathWithHLinks; %".">"; $ResultStr = str_replace($PATTERN, $REPLACEMENT, $ResultStr); // "" $PATTERN = ""; $REPLACEMENT = "<"."% global \$UserID; echo \$UserID; %".">"; $ResultStr = str_replace($PATTERN, $REPLACEMENT, $ResultStr); // "" $PATTERN = ""; $REPLACEMENT = "<"."% global \$ulogin; echo \$ulogin; %".">"; $ResultStr = str_replace($PATTERN, $REPLACEMENT, $ResultStr); // "" $PATTERN = ""; $REPLACEMENT = << EOD; $ResultStr = str_replace($PATTERN, $REPLACEMENT, $ResultStr); // "" $PATTERN = ""; $REPLACEMENT = << EOD; $ResultStr = str_replace($PATTERN, $REPLACEMENT, $ResultStr); /* // "" $PATTERN = ""; $REPLACEMENT = ""; $ResultStr = str_replace($PATTERN, $REPLACEMENT, $ResultStr); */ $PREPEND = ""; $APPEND = ""; $PATTERN = ""; if( strstr($ResultStr, $PATTERN) ){ $REPLACEMENT = ""; $ResultStr = str_replace($PATTERN, $REPLACEMENT, $ResultStr); $PREPEND = "
"; $APPEND = "
"; } $PATTERN = ""; if( strstr($ResultStr, $PATTERN) ){ $REPLACEMENT = "\n"; $ResultStr = str_replace($PATTERN, $REPLACEMENT, $ResultStr); $PREPEND = "
"; $APPEND = "
"; } $PATTERN = ""; $ResultStr = str_replace($PATTERN, $PREPEND, $ResultStr); $PATTERN = ""; $ResultStr = str_replace($PATTERN, $APPEND, $ResultStr); // echo "
\n==========================\n" . _hs($ResultStr) . "
"; // cleanup all not evaluated /* $PATTERN = "\<\!--\[([a-zA-Z0-9\-\_\@]*)\]--\>"; $REPLACEMENT = ""; $ResultStr = ereg_replace($PATTERN, $REPLACEMENT, $ResultStr); * */ // echo "
\n==========================\n" . _hs($ResultStr) . "
"; if( $Evaluate ){ ob_start(); eval ("?>" . $PREPEND . $ResultStr . $APPEND . " $ValCL){ $Z = $ValCL; // var_dump($Z); if(is_array($Z) ){ $Result .= "// Definition of My_" . $Z["__CLASS_NAME"] . "\n"; $Result .= "class My_" . $Z["__CLASS_NAME"] . " /* extends The" . $Z["__CLASS_NAME"] . " */ {\n\n"; $Result .= "\tfunction My_" . $Z["__CLASS_NAME"] . "(\$" . $Z["__CLASS_NAME"] . "No=\"\"){\n"; $Result .= "\t\t//\$this->The" . $Z["__CLASS_NAME"] . "(\$" . $Z["__CLASS_NAME"] . "No);\n"; $Result .= "\t\t//var_dump(\$this);exit;\n"; $Result .= "\t}\n\n"; // while( list($Key,$Val) = each($Z) ){ foreach( $Z as $Key => $Val ){ if( ($Val == 1) && ($Key!="__CLASS_NAME") ){ $Result .= "\tfunction Get$Key () \{\n"; if( ereg("_IMAGE[0-9]{0,3}W", $Key) ){ $Result .= "\t\treturn \"100\";\n"; }else if( ereg("_IMAGE[0-9]{0,3}H", $Key) ){ $Result .= "\t\treturn \"200\";\n"; }else if( ereg("_IMAGE[0-9]{0,3}_ALTTEXT", $Key) ){ $Result .= "\t\treturn \"_ IMAGE _ ALTTEXT _ \";\n"; }else if( ereg("_IMAGE[0-9]{0,3}", $Key) ){ $Result .= "\t\treturn \"/images/hide.gif\";\n"; }else if( ereg("_TEXT.*", $Key) ){ $Result .= "\t\treturn str_repeat(\"Some strange demo text... \", 10);\n"; }else{ $Result .= "\t\treturn \"$Key\";\n"; } $Result .= "\t}\n"; } } $Result .= "}\n\n"; $Result .= "\$" . $Z["__CLASS_NAME"] . " = new My_" . $Z["__CLASS_NAME"] . ";\n\n"; } } }else{ return ""; } return $Result; } function AutomateTemplate($TemplateIDorNAME, $Tabulator=0, $EchoPrepare=0, $AddEval=0){ global $METADATABEGIN, $METADATAEND; global $USEDTEMPLATES; global $TemplateObjects; if( $Tabulator > 0 ){ $TABS = str_repeat ("\t", $Tabulator); }else{ $TABS = ""; } $Result = ""; // echo "==> $TemplateIDorNAME
\n"; $T = new TheTemplate; if( ! $T->LoadTemplateID($TemplateIDorNAME) ){ if( ! $T->LoadTemplate($TemplateIDorNAME) ){ return "//***** ATTENTION BAD REFERENCE ($TemplateIDorNAME)!!!\n"; } } $TemplateDisplayName = ereg_replace("\.", "_", $TemplateIDorNAME); if( $USEDTEMPLATES[$T->TemplateNAME] == 1 ){ // return $Result; } $USEDTEMPLATES[$T->TemplateNAME] = 1; $POSSIBLE = explode($METADATABEGIN, $T->TemplateDATA); for($i=1; $iLoadTemplate(\"$T->TemplateNAME\");\n\n"; /* echo "
";
	echo "@ $TemplateIDorNAME :\n";
	var_dump($USEDTEMPLATES);
	var_dump($DATUM);
	echo "
"; */ if( is_array($DATUM) ){ reset($DATUM); for($i=1; $iPrepareTemplate(\$HashData_${THN});\n"; // $Result .= "${TABS}unset(\$HashData_${THN});\n"; // $Result .= "${TABS}unset(\$T_${THN});\n"; } }else if( substr($Key, 0, 1) == "#" ){ // skip predefined macros we shoud prepare them in the `PrepareTemplate' ; }else{ $Key = trim($Key); $DATASOURCE = explode(".", $Key); $DATAMETHOD = ereg_replace( "\." , "_" , strstr($Key, '.') ); if( $DATAMETHOD ){ $Result .= "$TABS\$HashData_" . $TemplateDisplayName . "[\"$Key\"] = \$" . $DATASOURCE[0] . "->Get" . $DATAMETHOD . "();\n"; $TemplateObjects[$DATASOURCE[0]]["__CLASS_NAME"] = $DATASOURCE[0]; $TemplateObjects[$DATASOURCE[0]][$DATAMETHOD] = 1; }else{ $Result .= "$TABS\$HashData_" . $TemplateDisplayName . "[\"$Key\"] = \$$Key;\n"; } } // } } } if( $EchoPrepare ){ if( $AddEval ){ $Result .= "\n\n${TABS}echo \$T_$TemplateDisplayName" . "->" . "PrepareTemplate(\$HashData_$TemplateIDorNAME, 1);\n"; }else{ $Result .= "\n\n${TABS}echo \$T_$TemplateDisplayName" . "->" . "PrepareTemplate(\$HashData_$TemplateIDorNAME, 0);\n"; } $Result .= "${TABS}unset(\$HashData_$TemplateIDorNAME);\n"; $Result .= "${TABS}unset(\$T_$TemplateDisplayName);\n"; } return $Result; } // AutomateTemplate($TemplateIDorNAME); function CleanUpHashDir($AUTOGENDIRNAME, $level=0){ // echo $AUTOGENDIRNAME ; $AutogenDir = opendir($AUTOGENDIRNAME); $level ++ ; // echo "Got: $AUTOGENDIRNAME\n"; // $Spacer = str_repeat(" ", $level); while ($file = readdir($AutogenDir)) { if( substr($file, 0, 1) == "." ){ continue; } // echo $Spacer . "$file\n"; if( is_dir($AUTOGENDIRNAME . "/". $file) ){ CleanUpHashDir($AUTOGENDIRNAME . "/" . $file, $level); @rmdir($AUTOGENDIRNAME . "/" . $file); } if( is_file($AUTOGENDIRNAME . "/". $file) ){ @unlink($AUTOGENDIRNAME . "/" . $file); } } closedir($AutogenDir); if( $level == 1 ){ // create thumbnail dir... $result = @mkdir($AUTOGENDIRNAME . "/tn", 0700); } } ?>