diff --git a/gulliver/system/class.htmlArea.php b/gulliver/system/class.htmlArea.php
index b03d155a1..e9a4bace8 100755
--- a/gulliver/system/class.htmlArea.php
+++ b/gulliver/system/class.htmlArea.php
@@ -1,44 +1,48 @@
-.
- *
- * For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
- * Coral Gables, FL, 33134, USA, or email info@colosa.com.
- *
- */
-
- /**
- * @package gulliver.system
- **/
-
-class XmlForm_Field_HTML extends XmlForm_Field_Textarea
-{
- /* //'default','office2003','silver'
- var $skin = 'default';
- //'Default','Basic'
- var $toolbarSet = 'Default';
- var $width = '90%';
- var $height = '200' ;
- var $cols = 40;
- var $rows = 6;
- function render( $value , $owner=NULL ) {
+.
+ *
+ * For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
+ * Coral Gables, FL, 33134, USA, or email info@colosa.com.
+ *
+ */
+
+/**
+ *
+ * @package gulliver.system
+ *
+ */
+
+class XmlForm_Field_HTML extends XmlForm_Field_Textarea
+{
+ /* //'default','office2003','silver'
+ var $skin = 'default';
+ //'Default','Basic'
+ var $toolbarSet = 'Default';
+ var $width = '90%';
+ var $height = '200' ;
+ var $cols = 40;
+ var $rows = 6;
+ function render( $value , $owner=NULL ) {
if ($this->mode==='edit') {
if ($this->readOnly)
$html='';
@@ -50,18 +54,19 @@ class XmlForm_Field_HTML extends XmlForm_Field_Textarea
$html='';
}
return $html;
- }*/
-
- /**
- * attachEvents function is putting its events
- *
- * @access public
- * @param string $element
- * @return string
- *
- */
- function attachEvents($element) {
- $html='var _editor_url = "";editor_generate("form['.$this->name.']");';
- return $html;
- }
-}
+ }*/
+ /**
+ * attachEvents function is putting its events
+ *
+ * @access public
+ * @param string $element
+ * @return string
+ *
+ */
+ function attachEvents ($element)
+ {
+ $html = 'var _editor_url = "";editor_generate("form[' . $this->name . ']");';
+ return $html;
+ }
+}
+
diff --git a/gulliver/system/class.templatePower.php b/gulliver/system/class.templatePower.php
index 9bd1329d6..c54563b8b 100755
--- a/gulliver/system/class.templatePower.php
+++ b/gulliver/system/class.templatePower.php
@@ -1,29 +1,30 @@
-.
- *
- * For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
- * Coral Gables, FL, 33134, USA, or email info@colosa.com.
- *
- */
-/* vim: set expandtab tabstop=4 shiftwidth=4: */
+.
+ *
+ * For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
+ * Coral Gables, FL, 33134, USA, or email info@colosa.com.
+ *
+ */
+/* vim: set expandtab tabstop=4 shiftwidth=4: */
// +----------------------------------------------------------------------+
// | TemplatePower: |
// | offers you the ability to separate your PHP code and your HTML |
@@ -53,701 +54,673 @@
// +----------------------------------------------------------------------+
//
// $Id: Version 3.0.2$
-
-/**
- * @package gulliver.system
-*/
-
-define("T_BYFILE", 0);
-define("T_BYVAR", 1);
-
-define("TP_ROOTBLOCK", '_ROOT');
-
- /**
- * class TemplatePowerParser
- * @package gulliver.system
- *
- */
-class TemplatePowerParser
-{
- var $tpl_base; //Array( [filename/varcontent], [T_BYFILE/T_BYVAR] )
- var $tpl_include; //Array( [filename/varcontent], [T_BYFILE/T_BYVAR] )
- var $tpl_count;
- var $parent = Array(); // $parent[{blockname}] = {parentblockname}
- var $defBlock = Array();
- var $rootBlockName;
- var $ignore_stack;
- var $version;
- var $unhtmlentities = 0;
-
- /**
- * TemplatePowerParser::TemplatePowerParser()
- *
- * @param string $tpl_file
- * @param string $type
- * @access private
- */
- function TemplatePowerParser( $tpl_file, $type )
- {
- $this->version = '3.0.2';
- $this->tpl_base = Array( $tpl_file, $type );
- $this->tpl_count = 0;
- $this->ignore_stack = Array( false );
- }
-
- /**
- * TemplatePowerParser::__errorAlert()
- *
- * @param string $message
- *
- * @access private
- */
- function __errorAlert( $message )
- {
- print( '
'. $message .'
'."\r\n");
- }
-
- /**
- * TemplatePowerParser::__prepare()
- * @access private
- * @return void
- */
- function __prepare()
- {
- $this->defBlock[ TP_ROOTBLOCK ] = Array();
- $tplvar = $this->__prepareTemplate( $this->tpl_base[0], $this->tpl_base[1] );
- $initdev["varrow"] = 0;
- $initdev["coderow"] = 0;
- $initdev["index"] = 0;
- $initdev["ignore"] = false;
- $this->__parseTemplate( $tplvar, TP_ROOTBLOCK, $initdev );
- $this->__cleanUp();
- }
-
- /**
- * TemplatePowerParser::__cleanUp()
- *
- * @return void
- *
- * @access private
- */
- function __cleanUp()
- {
- for( $i=0; $i <= $this->tpl_count; $i++ ){
- $tplvar = 'tpl_rawContent'. $i;
- unset( $this->{$tplvar} );
- }
- }
-
- /**
- * TemplatePowerParser::__prepareTemplate()
- *
- * @param string $tpl_file
- * @param string $type
- * @access private
- */
- function __prepareTemplate( $tpl_file, $type )
- {
- $tplvar = 'tpl_rawContent'. $this->tpl_count;
- if( $type == T_BYVAR ){
- $this->{$tplvar}["content"] = preg_split("/\n/", $tpl_file, -1, PREG_SPLIT_DELIM_CAPTURE);
- }
- else{
-// Trigger the error in the local scope of the function
-// trigger_error ("Some error", E_USER_WARNING);
- $this->{$tplvar}["content"] = @file( $tpl_file ) or
- die( $this->__errorAlert('TemplatePower Error: Couldn\'t open [ '. $tpl_file .' ]!'));
- }
- $this->{$tplvar}["size"] = sizeof( $this->{$tplvar}["content"] );
- $this->tpl_count++;
- return $tplvar;
- }
-
- /**
- * TemplatePowerParser::__parseTemplate()
- *
- * @param string $tplvar
- * @param string $blockname
- * @param string $initdev
- * @access private
- */
- function __parseTemplate( $tplvar, $blockname, $initdev )
- {
- $coderow = $initdev["coderow"];
- $varrow = $initdev["varrow"];
- $index = $initdev["index"];
- $ignore = $initdev["ignore"];
- while( $index < $this->{$tplvar}["size"] ){
- if ( preg_match('//', $this->{$tplvar}["content"][$index], $ignreg) ){
- if( $ignreg[1] == 'START'){
- //$ignore = true;
- array_push( $this->ignore_stack, true );
- }
- else{
+
+
+/**
+ *
+ * @package gulliver.system
+ *
+ */
+
+define( "T_BYFILE", 0 );
+define( "T_BYVAR", 1 );
+
+define( "TP_ROOTBLOCK", '_ROOT' );
+
+/**
+ * class TemplatePowerParser
+ *
+ * @package gulliver.system
+ *
+ */
+class TemplatePowerParser
+{
+ var $tpl_base; //Array( [filename/varcontent], [T_BYFILE/T_BYVAR] )
+ var $tpl_include; //Array( [filename/varcontent], [T_BYFILE/T_BYVAR] )
+ var $tpl_count;
+ var $parent = Array (); // $parent[{blockname}] = {parentblockname}
+ var $defBlock = Array ();
+ var $rootBlockName;
+ var $ignore_stack;
+ var $version;
+ var $unhtmlentities = 0;
+
+ /**
+ * TemplatePowerParser::TemplatePowerParser()
+ *
+ * @param string $tpl_file
+ * @param string $type
+ * @access private
+ */
+ function TemplatePowerParser ($tpl_file, $type)
+ {
+ $this->version = '3.0.2';
+ $this->tpl_base = Array ($tpl_file,$type
+ );
+ $this->tpl_count = 0;
+ $this->ignore_stack = Array (false
+ );
+ }
+
+ /**
+ * TemplatePowerParser::__errorAlert()
+ *
+ * @param string $message
+ *
+ * @access private
+ */
+ function __errorAlert ($message)
+ {
+ print ('
' . $message . '
' . "\r\n") ;
+ }
+
+ /**
+ * TemplatePowerParser::__prepare()
+ *
+ * @access private
+ * @return void
+ */
+ function __prepare ()
+ {
+ $this->defBlock[TP_ROOTBLOCK] = Array ();
+ $tplvar = $this->__prepareTemplate( $this->tpl_base[0], $this->tpl_base[1] );
+ $initdev["varrow"] = 0;
+ $initdev["coderow"] = 0;
+ $initdev["index"] = 0;
+ $initdev["ignore"] = false;
+ $this->__parseTemplate( $tplvar, TP_ROOTBLOCK, $initdev );
+ $this->__cleanUp();
+ }
+
+ /**
+ * TemplatePowerParser::__cleanUp()
+ *
+ * @return void
+ *
+ * @access private
+ */
+ function __cleanUp ()
+ {
+ for ($i = 0; $i <= $this->tpl_count; $i ++) {
+ $tplvar = 'tpl_rawContent' . $i;
+ unset( $this->{$tplvar} );
+ }
+ }
+
+ /**
+ * TemplatePowerParser::__prepareTemplate()
+ *
+ * @param string $tpl_file
+ * @param string $type
+ * @access private
+ */
+ function __prepareTemplate ($tpl_file, $type)
+ {
+ $tplvar = 'tpl_rawContent' . $this->tpl_count;
+ if ($type == T_BYVAR) {
+ $this->{$tplvar}["content"] = preg_split( "/\n/", $tpl_file, - 1, PREG_SPLIT_DELIM_CAPTURE );
+ } else {
+ // Trigger the error in the local scope of the function
+ // trigger_error ("Some error", E_USER_WARNING);
+ $this->{$tplvar}["content"] = @file( $tpl_file ) or die( $this->__errorAlert( 'TemplatePower Error: Couldn\'t open [ ' . $tpl_file . ' ]!' ) );
+ }
+ $this->{$tplvar}["size"] = sizeof( $this->{$tplvar}["content"] );
+ $this->tpl_count ++;
+ return $tplvar;
+ }
+
+ /**
+ * TemplatePowerParser::__parseTemplate()
+ *
+ * @param string $tplvar
+ * @param string $blockname
+ * @param string $initdev
+ * @access private
+ */
+ function __parseTemplate ($tplvar, $blockname, $initdev)
+ {
+ $coderow = $initdev["coderow"];
+ $varrow = $initdev["varrow"];
+ $index = $initdev["index"];
+ $ignore = $initdev["ignore"];
+ while ($index < $this->{$tplvar}["size"]) {
+ if (preg_match( '//', $this->{$tplvar}["content"][$index], $ignreg )) {
+ if ($ignreg[1] == 'START') {
+ //$ignore = true;
+ array_push( $this->ignore_stack, true );
+ } else {
//$ignore = false;
- array_pop( $this->ignore_stack );
- }
- }
- else{
- if( !end( $this->ignore_stack ) ){
- if( preg_match('//', $this->{$tplvar}["content"][$index], $regs)){
- //remove trailing and leading spaces
- $regs[2] = trim( $regs[2] );
- if( $regs[1] == 'INCLUDE'){
- $include_defined = true;
- //check if the include file is assigned
- if( isset( $this->tpl_include[ $regs[2] ]) ){
- $tpl_file = $this->tpl_include[ $regs[2] ][0];
- $type = $this->tpl_include[ $regs[2] ][1];
- }
- else
- if (file_exists( $regs[2] )){ //check if defined as constant in template
- $tpl_file = $regs[2];
- $type = T_BYFILE;
- }
- else{
- $include_defined = false;
- }
- if( $include_defined ){
- //initialize startvalues for recursive call
- $initdev["varrow"] = $varrow;
- $initdev["coderow"] = $coderow;
- $initdev["index"] = 0;
- $initdev["ignore"] = false;
- $tplvar2 = $this->__prepareTemplate( $tpl_file, $type );
- $initdev = $this->__parseTemplate( $tplvar2, $blockname, $initdev );
- $coderow = $initdev["coderow"];
- $varrow = $initdev["varrow"];
- }
- }
- else
- if( $regs[1] == 'INCLUDESCRIPT' ){
- $include_defined = true;
- //check if the includescript file is assigned by the assignInclude function
- if( isset( $this->tpl_include[ $regs[2] ]) ){
- $include_file = $this->tpl_include[ $regs[2] ][0];
- $type = $this->tpl_include[ $regs[2] ][1];
- }
- else
- if (file_exists( $regs[2] )){ //check if defined as constant in template
- $include_file = $regs[2];
- $type = T_BYFILE;
- }
- else{
- $include_defined = false;
- }
- if( $include_defined ){
- ob_start();
- if( $type == T_BYFILE ){
- if( !@include_once( $include_file ) ){
- $this->__errorAlert( 'TemplatePower Error: Couldn\'t include script [ '. $include_file .' ]!' );
- exit();
- }
- }
- else{
- eval( "?>" . $include_file );
- }
- $this->defBlock[$blockname]["_C:$coderow"] = ob_get_contents();
- $coderow++;
- ob_end_clean();
- }
- }
- else
- if( $regs[1] == 'REUSE' ){
- //do match for 'AS'
- if (preg_match('/(.+) AS (.+)/', $regs[2], $reuse_regs)){
- $originalbname = trim( $reuse_regs[1] );
- $copybname = trim( $reuse_regs[2] );
- //test if original block exist
- if (isset( $this->defBlock[ $originalbname ] )){
- //copy block
- $this->defBlock[ $copybname ] = $this->defBlock[ $originalbname ];
- //tell the parent that he has a child block
- $this->defBlock[ $blockname ]["_B:". $copybname ] = '';
- //create index and parent info
- $this->index[ $copybname ] = 0;
- $this->parent[ $copybname ] = $blockname;
- }
- else{
- $this->__errorAlert('TemplatePower Error: Can\'t find block \''. $originalbname .'\' to REUSE as \''. $copybname .'\'');
- }
- }
- else{
- //so it isn't a correct REUSE tag, save as code
- $this->defBlock[$blockname]["_C:$coderow"] = $this->{$tplvar}["content"][$index];
- $coderow++;
- }
- }
- else{
- if( $regs[2] == $blockname ){ //is it the end of a block
- break;
- }
- else{ //its the start of a block
- //make a child block and tell the parent that he has a child
- $this->defBlock[ $regs[2] ] = Array();
- $this->defBlock[ $blockname ]["_B:". $regs[2]] = '';
- //set some vars that we need for the assign functions etc.
- $this->index[ $regs[2] ] = 0;
- $this->parent[ $regs[2] ] = $blockname;
- //prepare for the recursive call
- $index++;
- $initdev["varrow"] = 0;
- $initdev["coderow"] = 0;
- $initdev["index"] = $index;
- $initdev["ignore"] = false;
- $initdev = $this->__parseTemplate( $tplvar, $regs[2], $initdev );
- $index = $initdev["index"];
- }
- }
- }
- else{ //is it code and/or var(s)
- //explode current template line on the curly bracket '{'
- $sstr = explode( '{', $this->{$tplvar}["content"][$index] );
- reset( $sstr );
- if (current($sstr) != ''){
- //the template didn't start with a '{',
- //so the first element of the array $sstr is just code
- $this->defBlock[$blockname]["_C:$coderow"] = current( $sstr );
- $coderow++;
- }
- while (next($sstr)){
- //find the position of the end curly bracket '}'
- $pos = strpos( current($sstr), "}" );
- if ( ($pos !== false) && ($pos > 0) ){
- //a curly bracket '}' is found
- //and at least on position 1, to eliminate '{}'
- //note: position 1 taken without '{', because we did explode on '{'
- $strlength = strlen( current($sstr) );
- $varname = substr( current($sstr), 0, $pos );
- if (strstr( $varname, ' ' )){
- //the varname contains one or more spaces
- //so, it isn't a variable, save as code
- $this->defBlock[$blockname]["_C:$coderow"] = '{'. current( $sstr );
- $coderow++;
- }
- else{
- //save the variable
- $this->defBlock[$blockname]["_V:$varrow" ] = $varname;
- $varrow++;
- //is there some code after the varname left?
- if( ($pos + 1) != $strlength ){
- //yes, save that code
- $this->defBlock[$blockname]["_C:$coderow"] = substr( current( $sstr ), ($pos + 1), ($strlength - ($pos + 1)) );
- $coderow++;
- }
- }
- }
- else{
- //no end curly bracket '}' found
- //so, the curly bracket is part of the text. Save as code, with the '{'
- $this->defBlock[$blockname]["_C:$coderow"] = '{'. current( $sstr );
- $coderow++;
- }
- }
- }
- }
- else{
- $this->defBlock[$blockname]["_C:$coderow"] = $this->{$tplvar}["content"][$index];
- $coderow++;
- }
- }
- $index++;
- }
- $initdev["varrow"] = $varrow;
- $initdev["coderow"] = $coderow;
- $initdev["index"] = $index;
- return $initdev;
- }
-
-
- /**
- * TemplatePowerParser::version()
- *
- * @return void
- * @access public
- */
- function version()
- {
- return $this->version;
- }
-
- /**
- * TemplatePowerParser::assignInclude()
- *
- * @param string $iblockname
- * @param string $value
- * @param string $type
- * @return void
- * @access public
- */
- function assignInclude( $iblockname, $value, $type=T_BYFILE )
- {
- $this->tpl_include["$iblockname"] = Array( $value, $type );
- }
-}
-
- /**
- * class TemplatePower
- * @package gulliver.system
- */
-class TemplatePower extends TemplatePowerParser
-{
- var $index = Array(); // $index[{blockname}] = {indexnumber}
- var $content = Array();
- var $currentBlock;
- var $showUnAssigned;
- var $serialized;
- var $globalvars = Array();
- var $prepared;
-
- /**
- * TemplatePower::TemplatePower()
- *
- * @param string $tpl_file
- * @param string $type
- * @return void
- * @access public
- */
- function TemplatePower( $tpl_file='', $type= T_BYFILE )
- {
- TemplatePowerParser::TemplatePowerParser( $tpl_file, $type );
- $this->prepared = false;
- $this->showUnAssigned = false;
- $this->serialized = false; //added: 26 April 2002
- }
-
- /**
- * TemplatePower::__deSerializeTPL()
- *
- * @param string $stpl_file
- * @param string $tplvar
- * @return void
- * @access private
- */
- function __deSerializeTPL( $stpl_file, $type )
- {
- if( $type == T_BYFILE ){
- $serializedTPL = @file( $stpl_file ) or
- die( $this->__errorAlert('TemplatePower Error: Can\'t open [ '. $stpl_file .' ]!'));
- }
- else{
- $serializedTPL = $stpl_file;
- }
- $serializedStuff = unserialize( join ('', $serializedTPL) );
- $this->defBlock = $serializedStuff["defBlock"];
- $this->index = $serializedStuff["index"];
- $this->parent = $serializedStuff["parent"];
- }
-
- /**
- * TemplatePower::__makeContentRoot()
- *
- * @return void
- * @access private
- */
- function __makeContentRoot()
- {
- $this->content[ TP_ROOTBLOCK ."_0" ][0] = Array( TP_ROOTBLOCK );
- $this->currentBlock = &$this->content[ TP_ROOTBLOCK ."_0" ][0];
- }
-
- /**
- * TemplatePower::__assign()
- *
- * @param string $varname
- * @param string $value
- * @return void
- *
- * @access private
- */
- function __assign( $varname, $value)
- {
- if( sizeof( $regs = explode('.', $varname ) ) == 2 ){ //this is faster then preg_match
- $ind_blockname = $regs[0] .'_'. $this->index[ $regs[0] ];
- $lastitem = sizeof( $this->content[ $ind_blockname ] );
- $lastitem > 1 ? $lastitem-- : $lastitem = 0;
- $block = &$this->content[ $ind_blockname ][ $lastitem ];
- $varname = $regs[1];
- }
- else{
- $block = &$this->currentBlock;
- }
- $block["_V:$varname"] = $value;
- }
-
- /**
- * TemplatePower::__assignGlobal()
- *
- * @param string $varname
- * @param string $value
- * @return void
- * @access private
- */
- function __assignGlobal( $varname, $value )
- {
- $this->globalvars[ $varname ] = $value;
- }
-
-
- /**
- * TemplatePower::__outputContent()
- *
- * @param string $blockname
- * @return void
- * @access private
- */
- function __outputContent( $blockname )
- {
- $numrows = sizeof( $this->content[ $blockname ] );
- for( $i=0; $i < $numrows; $i++){
- $defblockname = $this->content[ $blockname ][$i][0];
- for( reset( $this->defBlock[ $defblockname ]); $k = key( $this->defBlock[ $defblockname ]); next( $this->defBlock[ $defblockname ] ) ){
- if ($k[1] == 'C'){
- print( $this->defBlock[ $defblockname ][$k] );
- }
- else
- if ($k[1] == 'V'){
- $defValue = $this->defBlock[ $defblockname ][$k];
- if( !isset( $this->content[ $blockname ][$i][ "_V:". $defValue ] ) ){
- if( isset( $this->globalvars[ $defValue ] ) ){
- $value = $this->globalvars[ $defValue ];
- }
- else{
- //Verify if $defValue is like
- // "xmlfile:ID_LABEL"
- //if it is load an xml label.
- //if not continues with non assigned value.
- if (preg_match("/(.+):(.+)/",$defValue,$xmlreg)){
- $value=G::LoadTranslation(/*$xmlreg[1],*/$xmlreg[2]);
- }
- else {
- if( $this->showUnAssigned ){
- //$value = '{'. $this->defBlock[ $defblockname ][$k] .'}';
- $value = '{'. $defValue .'}';
- }
- else{
- $value = '';
- }
- }
- }
- }
- else{
- $value = $this->content[ $blockname ][$i][ "_V:". $defValue ];
- }
- if ($this->unhtmlentities)
- $value = G::unhtmlentities($value);
- print( $value );
- }
- else
- if ($k[1] == 'B'){
- if( isset( $this->content[ $blockname ][$i][$k] ) ){
- $this->__outputContent( $this->content[ $blockname ][$i][$k] );
- }
- }
- }
- }
- }
-
- /**
- * function __printVars
- *
- * @return void
- * @access public
- */
- function __printVars()
- {
- var_dump($this->defBlock);
- print("
--------------------
");
- var_dump($this->content);
- }
-
-
- /**********
- public members
- ***********/
-
- /**
- * TemplatePower::serializedBase()
- *
- * @return void
- *
- * @access public
- */
- function serializedBase()
- {
- $this->serialized = true;
- $this->__deSerializeTPL( $this->tpl_base[0], $this->tpl_base[1] );
- }
-
- /**
- * TemplatePower::showUnAssigned()
- *
- * @param $state
- * @return void
- * @access public
- */
- function showUnAssigned( $state = true )
- {
- $this->showUnAssigned = $state;
- }
-
- /**
- * TemplatePower::prepare()
- *
- * @return void
- * @access public
- */
- function prepare()
- {
- if (!$this->serialized){
- TemplatePowerParser::__prepare();
- }
- $this->prepared = true;
- $this->index[ TP_ROOTBLOCK ] = 0;
- $this->__makeContentRoot();
- }
-
- /**
- * TemplatePower::newBlock()
- *
- * @param string $blockname
- * @return void
- * @access public
- */
- function newBlock( $blockname )
- {
- $parent = &$this->content[ $this->parent[$blockname] .'_'. $this->index[$this->parent[$blockname]] ];
- $lastitem = sizeof( $parent );
- $lastitem > 1 ? $lastitem-- : $lastitem = 0;
- $ind_blockname = $blockname .'_'. $this->index[ $blockname ];
- if ( !isset( $parent[ $lastitem ]["_B:$blockname"] )){
- //ok, there is no block found in the parentblock with the name of {$blockname}
- //so, increase the index counter and create a new {$blockname} block
- $this->index[ $blockname ] += 1;
- $ind_blockname = $blockname .'_'. $this->index[ $blockname ];
- if (!isset( $this->content[ $ind_blockname ] ) ){
- $this->content[ $ind_blockname ] = Array();
- }
- //tell the parent where his (possible) children are located
- $parent[ $lastitem ]["_B:$blockname"] = $ind_blockname;
- }
- //now, make a copy of the block defenition
- $blocksize = sizeof( $this->content[ $ind_blockname ] );
- $this->content[ $ind_blockname ][ $blocksize ] = Array( $blockname );
- //link the current block to the block we just created
- $this->currentBlock = &$this->content[ $ind_blockname ][ $blocksize ];
- }
-
- /**
- * TemplatePower::assignGlobal()
- *
- * @param string $varname
- * @param string $value
- * @return void
- *
- * @access public
- */
- function assignGlobal( $varname, $value='' )
- {
- if (is_array( $varname )){
- foreach($varname as $var => $value){
- $this->__assignGlobal( $var, $value );
- }
- }
- else{
- $this->__assignGlobal( $varname, $value );
- }
- }
-
- /**
- * TemplatePower::assign()
- *
- * @param string $varname
- * @param string $value
- * @return void
- * @access public
- */
- function assign( $varname, $value='' )
- {
- if (is_array( $varname )){
- foreach($varname as $var => $value){
- $this->__assign( $var, $value );
- }
- }
- else{
- $this->__assign( $varname, $value );
- }
- }
-
- /**
- * TemplatePower::gotoBlock()
- *
- * @return void
- * @param string $blockname
- * @access public
- */
- function gotoBlock( $blockname )
- {
- if ( isset( $this->defBlock[ $blockname ] ) ){
- $ind_blockname = $blockname .'_'. $this->index[ $blockname ];
- //get lastitem indexnumber
- $lastitem = sizeof( $this->content[ $ind_blockname ] );
- $lastitem > 1 ? $lastitem-- : $lastitem = 0;
- //link the current block
- $this->currentBlock = &$this->content[ $ind_blockname ][ $lastitem ];
- }
- }
-
- /**
- * TemplatePower::getVarValue()
- *
- * @param $varname
- * @param string $varname
- * @access public
- */
- function getVarValue( $varname )
- {
- if( sizeof( $regs = explode('.', $varname ) ) == 2 ){ //this is faster then preg_match{
- $ind_blockname = $regs[0] .'_'. $this->index[ $regs[0] ];
- $lastitem = sizeof( $this->content[ $ind_blockname ] );
- $lastitem > 1 ? $lastitem-- : $lastitem = 0;
- $block = &$this->content[ $ind_blockname ][ $lastitem ];
- $varname = $regs[1];
- }
- else{
- $block = &$this->currentBlock;
- }
- return $block["_V:$varname"];
- }
-
- /**
- * TemplatePower::printToScreen()
- *
- * @return void
- * @access public
- */
- function printToScreen()
- {
- if ($this->prepared){
- $this->__outputContent( TP_ROOTBLOCK .'_0' );
- }
- else{
- $this->__errorAlert('TemplatePower Error: Template isn\'t prepared!');
- }
- }
-
- /**
- * TemplatePower::getOutputContent()
- *
- * @return void
- * @access public
- */
- function getOutputContent()
- {
- ob_start();
- $this->printToScreen();
- $content = ob_get_contents();
- ob_end_clean();
- return $content;
- }
+ array_pop( $this->ignore_stack );
+ }
+ } else {
+ if (! end( $this->ignore_stack )) {
+ if (preg_match( '//', $this->{$tplvar}["content"][$index], $regs )) {
+ //remove trailing and leading spaces
+ $regs[2] = trim( $regs[2] );
+ if ($regs[1] == 'INCLUDE') {
+ $include_defined = true;
+ //check if the include file is assigned
+ if (isset( $this->tpl_include[$regs[2]] )) {
+ $tpl_file = $this->tpl_include[$regs[2]][0];
+ $type = $this->tpl_include[$regs[2]][1];
+ } else if (file_exists( $regs[2] )) { //check if defined as constant in template
+ $tpl_file = $regs[2];
+ $type = T_BYFILE;
+ } else {
+ $include_defined = false;
+ }
+ if ($include_defined) {
+ //initialize startvalues for recursive call
+ $initdev["varrow"] = $varrow;
+ $initdev["coderow"] = $coderow;
+ $initdev["index"] = 0;
+ $initdev["ignore"] = false;
+ $tplvar2 = $this->__prepareTemplate( $tpl_file, $type );
+ $initdev = $this->__parseTemplate( $tplvar2, $blockname, $initdev );
+ $coderow = $initdev["coderow"];
+ $varrow = $initdev["varrow"];
+ }
+ } else if ($regs[1] == 'INCLUDESCRIPT') {
+ $include_defined = true;
+ //check if the includescript file is assigned by the assignInclude function
+ if (isset( $this->tpl_include[$regs[2]] )) {
+ $include_file = $this->tpl_include[$regs[2]][0];
+ $type = $this->tpl_include[$regs[2]][1];
+ } else if (file_exists( $regs[2] )) { //check if defined as constant in template
+ $include_file = $regs[2];
+ $type = T_BYFILE;
+ } else {
+ $include_defined = false;
+ }
+ if ($include_defined) {
+ ob_start();
+ if ($type == T_BYFILE) {
+ if (! @include_once ($include_file)) {
+ $this->__errorAlert( 'TemplatePower Error: Couldn\'t include script [ ' . $include_file . ' ]!' );
+ exit();
+ }
+ } else {
+ eval( "?>" . $include_file );
+ }
+ $this->defBlock[$blockname]["_C:$coderow"] = ob_get_contents();
+ $coderow ++;
+ ob_end_clean();
+ }
+ } else if ($regs[1] == 'REUSE') {
+ //do match for 'AS'
+ if (preg_match( '/(.+) AS (.+)/', $regs[2], $reuse_regs )) {
+ $originalbname = trim( $reuse_regs[1] );
+ $copybname = trim( $reuse_regs[2] );
+ //test if original block exist
+ if (isset( $this->defBlock[$originalbname] )) {
+ //copy block
+ $this->defBlock[$copybname] = $this->defBlock[$originalbname];
+ //tell the parent that he has a child block
+ $this->defBlock[$blockname]["_B:" . $copybname] = '';
+ //create index and parent info
+ $this->index[$copybname] = 0;
+ $this->parent[$copybname] = $blockname;
+ } else {
+ $this->__errorAlert( 'TemplatePower Error: Can\'t find block \'' . $originalbname . '\' to REUSE as \'' . $copybname . '\'' );
+ }
+ } else {
+ //so it isn't a correct REUSE tag, save as code
+ $this->defBlock[$blockname]["_C:$coderow"] = $this->{$tplvar}["content"][$index];
+ $coderow ++;
+ }
+ } else {
+ if ($regs[2] == $blockname) { //is it the end of a block
+ break;
+ } else { //its the start of a block
+ //make a child block and tell the parent that he has a child
+ $this->defBlock[$regs[2]] = Array ();
+ $this->defBlock[$blockname]["_B:" . $regs[2]] = '';
+ //set some vars that we need for the assign functions etc.
+ $this->index[$regs[2]] = 0;
+ $this->parent[$regs[2]] = $blockname;
+ //prepare for the recursive call
+ $index ++;
+ $initdev["varrow"] = 0;
+ $initdev["coderow"] = 0;
+ $initdev["index"] = $index;
+ $initdev["ignore"] = false;
+ $initdev = $this->__parseTemplate( $tplvar, $regs[2], $initdev );
+ $index = $initdev["index"];
+ }
+ }
+ } else { //is it code and/or var(s)
+ //explode current template line on the curly bracket '{'
+ $sstr = explode( '{', $this->{$tplvar}["content"][$index] );
+ reset( $sstr );
+ if (current( $sstr ) != '') {
+ //the template didn't start with a '{',
+ //so the first element of the array $sstr is just code
+ $this->defBlock[$blockname]["_C:$coderow"] = current( $sstr );
+ $coderow ++;
+ }
+ while (next( $sstr )) {
+ //find the position of the end curly bracket '}'
+ $pos = strpos( current( $sstr ), "}" );
+ if (($pos !== false) && ($pos > 0)) {
+ //a curly bracket '}' is found
+ //and at least on position 1, to eliminate '{}'
+ //note: position 1 taken without '{', because we did explode on '{'
+ $strlength = strlen( current( $sstr ) );
+ $varname = substr( current( $sstr ), 0, $pos );
+ if (strstr( $varname, ' ' )) {
+ //the varname contains one or more spaces
+ //so, it isn't a variable, save as code
+ $this->defBlock[$blockname]["_C:$coderow"] = '{' . current( $sstr );
+ $coderow ++;
+ } else {
+ //save the variable
+ $this->defBlock[$blockname]["_V:$varrow"] = $varname;
+ $varrow ++;
+ //is there some code after the varname left?
+ if (($pos + 1) != $strlength) {
+ //yes, save that code
+ $this->defBlock[$blockname]["_C:$coderow"] = substr( current( $sstr ), ($pos + 1), ($strlength - ($pos + 1)) );
+ $coderow ++;
+ }
+ }
+ } else {
+ //no end curly bracket '}' found
+ //so, the curly bracket is part of the text. Save as code, with the '{'
+ $this->defBlock[$blockname]["_C:$coderow"] = '{' . current( $sstr );
+ $coderow ++;
+ }
+ }
+ }
+ } else {
+ $this->defBlock[$blockname]["_C:$coderow"] = $this->{$tplvar}["content"][$index];
+ $coderow ++;
+ }
+ }
+ $index ++;
+ }
+ $initdev["varrow"] = $varrow;
+ $initdev["coderow"] = $coderow;
+ $initdev["index"] = $index;
+ return $initdev;
+ }
+
+ /**
+ * TemplatePowerParser::version()
+ *
+ * @return void
+ * @access public
+ */
+ function version ()
+ {
+ return $this->version;
+ }
+
+ /**
+ * TemplatePowerParser::assignInclude()
+ *
+ * @param string $iblockname
+ * @param string $value
+ * @param string $type
+ * @return void
+ * @access public
+ */
+ function assignInclude ($iblockname, $value, $type = T_BYFILE)
+ {
+ $this->tpl_include["$iblockname"] = Array ($value,$type
+ );
+ }
+}
+
+/**
+ * class TemplatePower
+ *
+ * @package gulliver.system
+ */
+class TemplatePower extends TemplatePowerParser
+{
+ var $index = Array (); // $index[{blockname}] = {indexnumber}
+ var $content = Array ();
+ var $currentBlock;
+ var $showUnAssigned;
+ var $serialized;
+ var $globalvars = Array ();
+ var $prepared;
+
+ /**
+ * TemplatePower::TemplatePower()
+ *
+ * @param string $tpl_file
+ * @param string $type
+ * @return void
+ * @access public
+ */
+ function TemplatePower ($tpl_file = '', $type = T_BYFILE)
+ {
+ TemplatePowerParser::TemplatePowerParser( $tpl_file, $type );
+ $this->prepared = false;
+ $this->showUnAssigned = false;
+ $this->serialized = false; //added: 26 April 2002
+ }
+
+ /**
+ * TemplatePower::__deSerializeTPL()
+ *
+ * @param string $stpl_file
+ * @param string $tplvar
+ * @return void
+ * @access private
+ */
+ function __deSerializeTPL ($stpl_file, $type)
+ {
+ if ($type == T_BYFILE) {
+ $serializedTPL = @file( $stpl_file ) or die( $this->__errorAlert( 'TemplatePower Error: Can\'t open [ ' . $stpl_file . ' ]!' ) );
+ } else {
+ $serializedTPL = $stpl_file;
+ }
+ $serializedStuff = unserialize( join( '', $serializedTPL ) );
+ $this->defBlock = $serializedStuff["defBlock"];
+ $this->index = $serializedStuff["index"];
+ $this->parent = $serializedStuff["parent"];
+ }
+
+ /**
+ * TemplatePower::__makeContentRoot()
+ *
+ * @return void
+ * @access private
+ */
+ function __makeContentRoot ()
+ {
+ $this->content[TP_ROOTBLOCK . "_0"][0] = Array (TP_ROOTBLOCK
+ );
+ $this->currentBlock = &$this->content[TP_ROOTBLOCK . "_0"][0];
+ }
+
+ /**
+ * TemplatePower::__assign()
+ *
+ * @param string $varname
+ * @param string $value
+ * @return void
+ *
+ * @access private
+ */
+ function __assign ($varname, $value)
+ {
+ if (sizeof( $regs = explode( '.', $varname ) ) == 2) { //this is faster then preg_match
+ $ind_blockname = $regs[0] . '_' . $this->index[$regs[0]];
+ $lastitem = sizeof( $this->content[$ind_blockname] );
+ $lastitem > 1 ? $lastitem -- : $lastitem = 0;
+ $block = &$this->content[$ind_blockname][$lastitem];
+ $varname = $regs[1];
+ } else {
+ $block = &$this->currentBlock;
+ }
+ $block["_V:$varname"] = $value;
+ }
+
+ /**
+ * TemplatePower::__assignGlobal()
+ *
+ * @param string $varname
+ * @param string $value
+ * @return void
+ * @access private
+ */
+ function __assignGlobal ($varname, $value)
+ {
+ $this->globalvars[$varname] = $value;
+ }
+
+ /**
+ * TemplatePower::__outputContent()
+ *
+ * @param string $blockname
+ * @return void
+ * @access private
+ */
+ function __outputContent ($blockname)
+ {
+ $numrows = sizeof( $this->content[$blockname] );
+ for ($i = 0; $i < $numrows; $i ++) {
+ $defblockname = $this->content[$blockname][$i][0];
+ for (reset( $this->defBlock[$defblockname] ); $k = key( $this->defBlock[$defblockname] ); next( $this->defBlock[$defblockname] )) {
+ if ($k[1] == 'C') {
+ print ($this->defBlock[$defblockname][$k]) ;
+ } else if ($k[1] == 'V') {
+ $defValue = $this->defBlock[$defblockname][$k];
+ if (! isset( $this->content[$blockname][$i]["_V:" . $defValue] )) {
+ if (isset( $this->globalvars[$defValue] )) {
+ $value = $this->globalvars[$defValue];
+ } else {
+ //Verify if $defValue is like
+ // "xmlfile:ID_LABEL"
+ //if it is load an xml label.
+ //if not continues with non assigned value.
+ if (preg_match( "/(.+):(.+)/", $defValue, $xmlreg )) {
+ $value = G::LoadTranslation(/*$xmlreg[1],*/$xmlreg[2] );
+ } else {
+ if ($this->showUnAssigned) {
+ //$value = '{'. $this->defBlock[ $defblockname ][$k] .'}';
+ $value = '{' . $defValue . '}';
+ } else {
+ $value = '';
+ }
+ }
+ }
+ } else {
+ $value = $this->content[$blockname][$i]["_V:" . $defValue];
+ }
+ if ($this->unhtmlentities)
+ $value = G::unhtmlentities( $value );
+ print ($value) ;
+ } else if ($k[1] == 'B') {
+ if (isset( $this->content[$blockname][$i][$k] )) {
+ $this->__outputContent( $this->content[$blockname][$i][$k] );
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * function __printVars
+ *
+ * @return void
+ * @access public
+ */
+ function __printVars ()
+ {
+ var_dump( $this->defBlock );
+ print ("
--------------------
") ;
+ var_dump( $this->content );
+ }
+
+ /**
+ * ********
+ * public members
+ * *********
+ */
+
+ /**
+ * TemplatePower::serializedBase()
+ *
+ * @return void
+ *
+ * @access public
+ */
+ function serializedBase ()
+ {
+ $this->serialized = true;
+ $this->__deSerializeTPL( $this->tpl_base[0], $this->tpl_base[1] );
+ }
+
+ /**
+ * TemplatePower::showUnAssigned()
+ *
+ * @param $state
+ * @return void
+ * @access public
+ */
+ function showUnAssigned ($state = true)
+ {
+ $this->showUnAssigned = $state;
+ }
+
+ /**
+ * TemplatePower::prepare()
+ *
+ * @return void
+ * @access public
+ */
+ function prepare ()
+ {
+ if (! $this->serialized) {
+ TemplatePowerParser::__prepare();
+ }
+ $this->prepared = true;
+ $this->index[TP_ROOTBLOCK] = 0;
+ $this->__makeContentRoot();
+ }
+
+ /**
+ * TemplatePower::newBlock()
+ *
+ * @param string $blockname
+ * @return void
+ * @access public
+ */
+ function newBlock ($blockname)
+ {
+ $parent = &$this->content[$this->parent[$blockname] . '_' . $this->index[$this->parent[$blockname]]];
+ $lastitem = sizeof( $parent );
+ $lastitem > 1 ? $lastitem -- : $lastitem = 0;
+ $ind_blockname = $blockname . '_' . $this->index[$blockname];
+ if (! isset( $parent[$lastitem]["_B:$blockname"] )) {
+ //ok, there is no block found in the parentblock with the name of {$blockname}
+ //so, increase the index counter and create a new {$blockname} block
+ $this->index[$blockname] += 1;
+ $ind_blockname = $blockname . '_' . $this->index[$blockname];
+ if (! isset( $this->content[$ind_blockname] )) {
+ $this->content[$ind_blockname] = Array ();
+ }
+ //tell the parent where his (possible) children are located
+ $parent[$lastitem]["_B:$blockname"] = $ind_blockname;
+ }
+ //now, make a copy of the block defenition
+ $blocksize = sizeof( $this->content[$ind_blockname] );
+ $this->content[$ind_blockname][$blocksize] = Array ($blockname
+ );
+ //link the current block to the block we just created
+ $this->currentBlock = &$this->content[$ind_blockname][$blocksize];
+ }
+
+ /**
+ * TemplatePower::assignGlobal()
+ *
+ * @param string $varname
+ * @param string $value
+ * @return void
+ *
+ * @access public
+ */
+ function assignGlobal ($varname, $value = '')
+ {
+ if (is_array( $varname )) {
+ foreach ($varname as $var => $value) {
+ $this->__assignGlobal( $var, $value );
+ }
+ } else {
+ $this->__assignGlobal( $varname, $value );
+ }
+ }
+
+ /**
+ * TemplatePower::assign()
+ *
+ * @param string $varname
+ * @param string $value
+ * @return void
+ * @access public
+ */
+ function assign ($varname, $value = '')
+ {
+ if (is_array( $varname )) {
+ foreach ($varname as $var => $value) {
+ $this->__assign( $var, $value );
+ }
+ } else {
+ $this->__assign( $varname, $value );
+ }
+ }
+
+ /**
+ * TemplatePower::gotoBlock()
+ *
+ * @return void
+ * @param string $blockname
+ * @access public
+ */
+ function gotoBlock ($blockname)
+ {
+ if (isset( $this->defBlock[$blockname] )) {
+ $ind_blockname = $blockname . '_' . $this->index[$blockname];
+ //get lastitem indexnumber
+ $lastitem = sizeof( $this->content[$ind_blockname] );
+ $lastitem > 1 ? $lastitem -- : $lastitem = 0;
+ //link the current block
+ $this->currentBlock = &$this->content[$ind_blockname][$lastitem];
+ }
+ }
+
+ /**
+ * TemplatePower::getVarValue()
+ *
+ * @param $varname
+ * @param string $varname
+ * @access public
+ */
+ function getVarValue ($varname)
+ {
+ if (sizeof( $regs = explode( '.', $varname ) ) == 2) { //this is faster then preg_match{
+ $ind_blockname = $regs[0] . '_' . $this->index[$regs[0]];
+ $lastitem = sizeof( $this->content[$ind_blockname] );
+ $lastitem > 1 ? $lastitem -- : $lastitem = 0;
+ $block = &$this->content[$ind_blockname][$lastitem];
+ $varname = $regs[1];
+ } else {
+ $block = &$this->currentBlock;
+ }
+ return $block["_V:$varname"];
+ }
+
+ /**
+ * TemplatePower::printToScreen()
+ *
+ * @return void
+ * @access public
+ */
+ function printToScreen ()
+ {
+ if ($this->prepared) {
+ $this->__outputContent( TP_ROOTBLOCK . '_0' );
+ } else {
+ $this->__errorAlert( 'TemplatePower Error: Template isn\'t prepared!' );
+ }
+ }
+
+ /**
+ * TemplatePower::getOutputContent()
+ *
+ * @return void
+ * @access public
+ */
+ function getOutputContent ()
+ {
+ ob_start();
+ $this->printToScreen();
+ $content = ob_get_contents();
+ ob_end_clean();
+ return $content;
+ }
}