1. Advertising
    y u no do it?

    Advertising (learn more)

    Advertise virtually anything here, with CPM banner ads, CPM email ads and CPC contextual links. You can target relevant areas of the site and show ads based on geographical location of the user if you wish.

    Starts at just $1 per CPM or $0.10 per CPC.

Help please !

Discussion in 'Optigold ISP' started by abdel, Aug 1, 2012.

  1. #1
    Hello i get this error:
    Warning: Cannot use a scalar value as an array in /www/oox/class.smarttemplate.php on line 306

    This is my code
     
     <?php
        /**
        * SmartTemplate Class
        *
        * 'Compiles' HTML-Templates to PHP Code
        *
        *
        * Usage Example I:
        *
        * $page = new SmartTemplate( "templates" );
        * $page->assign( 'TITLE',  'TemplateDemo - Userlist' );
        * $page->assign( 'user',   DB_read_all( 'select * from ris_user' ) );
        * $page->set_filenames(array('body' => 'templatefile.html'));
        * $page->output('body');
        *
        *
        * @author Philipp v. Criegern philipp@criegern.com
        * @author Manuel 'EndelWar' Dalla Lana endelwar@aregar.it
        * @version 1.2.1 03.07.2006
        *
        * CVS ID: $Id: class.smarttemplate.php,v 1.7 2006/07/02 22:17:15 endelwar Exp $
        */
    /*
    +--------------------------------------------------------------------------
    |   Mega File Hosting Script v1.5
    |   ========================================
    |   by Stephen Yabziz
    |   (c) 2005-2006 YABSoft Services
    |   http://www.yabsoft.com
    |   ========================================
    |   Web: http://www.yabsoft.com
    |   Email: ywyhnchina@163.com
    +--------------------------------------------------------------------------
    |
    |   > This class has been modified by Stephen Yabziz for YABSoft product
    |   > The 'SmartTemplate' class is released under LGPL 2.1, which grant to you the right to use this library in proprietary software.
    |   > And this modifed 'SmartTemplate' class is also released under LGPL 2.1!
    |   > Last updated: 20th May 2008
    +--------------------------------------------------------------------------
    */
        class SmartTemplate
        {
            /**
            * Whether to store compiled php code or not (for debug purpose)
            *
            * @access public
            */
            var $reuse_code        = true;
    
            /**
            * Whether to use php code or php including
            * Especially added for YABSoft product!
            *
            * @access public
            */
            var $use_php        = true;
    
            /**
            * Whether to use strict mode to parse the block name
            * the option need to be turned off to be compatiable with phpBB2 or phpBB3 engine
            * Especially added for YABSoft product!
            *
            * @access private
            */
            var $strict_mode = false;
      
            /**
            * Directory where all templates are stored
            *
            * @access public
            */
            var $template_dir     = 'skin/default/';
      
            /**
            * Directory where php script which all templates need are stored
            *
            * @access public
            */
            var $templatephp_dir = 'skin/default/';
    
            /**
            * Directory where extensions script which all templates need are stored
            *
            * @access public
            */
            var $templateext_dir = 'skin/default/extensions/';
      
            /**
            * Where to store compiled templates
            *
            * @access public
            */
            var $temp_dir        = 'skin/default/cache/';
    
            /**
            * Temporary folder for output cache storage
            *
            * @access public
            */
            var $cache_dir       = 'skin/default/cache/';
    
            /**
            * Default Output Cache Lifetime in Seconds
            *
            * @access public
            */
            var $cache_lifetime =  600;
    
            /**
            * Temporary file for output cache storage
            *
            * @access private
            */
            var $cache_filename;
    
            /**
            * The last template filename to be parsed
            *
            * @access private
            */
            var $tpl_file;
    
            /**
            * The template filenames to be parsed
            *
            * @access private
            */
            var $tpl_files;
      
            /**
            * The last compiled template filename
            *
            * @access private
            */
            var $cpl_file;
    
            /**
            * Template content array
            *
            * @access private
            */
            var $data = array();
    
            /**
            * Parser Class
            *
            * @access private
            */
            var $parser;
    
            /**
            * Debugger Class
            *
            * @access private
            */
            var $debugger;
    
            /**
            * SmartTemplate Constructor
            *
            * @access public
            * @param string $template_filename Template Filename
            */
            function SmartTemplate ( $template_dir = '' )
            {
                if(is_dir($template_dir))
                {
                    $this->template_dir  =  $template_dir;
                }
                elseif(!is_dir($template_dir)&&is_dir('../admin'))
                {
                    exit( 'SmartTemplate Error[Line:'.__LINE__.']: Intiniatiting SmartTemplate: Invalid template dir specified for '.$template_dir);
                }
                if (strlen($this->template_dir)  &&  substr($this->template_dir, -1) != '/')
                {
                    $this->template_dir  .=  '/';
                }
                $this->templatephp_dir  =  $this->template_dir;
                $this->templateext_dir  =  $this->template_dir.'extensions/';
                $this->temp_dir   =  $this->template_dir.'cache/';
                $this->cache_dir  =  $this->template_dir.'cache/';
    
            }
            /* Set (or reset) Properties (variables)
            *
            * Usage Example:
            * $page->set('reuse_code', true);
            *
            * @access public
            * @param string $name Parameter Name
            * @param mixed $value Parameter Value
            * NOTE: will not work with arrays, there are no arrays to set/reset
            */
            function set ( $name, $value = '' ) {
                if ( isset($this->$name) )
                {
                    $this->$name = $value;
                }
                else
                {
                    exit( 'SmartTemplate Error[Line:'.__LINE__.']: Attempt to set a non-existant class property: ' . $name);
                }
            }
            //  DEPRECATED METHODS
            //    Methods used in older parser versions, soon will be removed
            function set_templatefile ($handle, $template_filename)    {    $this->tpl_files[$handle]  =  $template_filename;    }
            function add_value ($name, $value )                {    $this->assign($name, $value);    }
            function add_array ($name, $value )                {    $this->append($name, $value);    }
    
    
            /**
            * Assign Template Content
            *
            * Usage Example:
            * $page->assign( 'TITLE',     'My Document Title' );
            * $page->assign( 'userlist',  array(
            *                                 array( 'ID' => 123,  'NAME' => 'John Doe' ),
            *                                 array( 'ID' => 124,  'NAME' => 'Jack Doe' ),
            *                             );
            *
            * @access public
            * @param string $name Parameter Name
            * @param mixed $value Parameter Value
            * @desc Assign Template Content
            */
            function assign ( $name, $value = '' )
            {
                if (is_array($name))
                {
                    foreach ($name as $k => $v)
                    {
                        $this->data[$k]  =  $v;
                    }
                }
                else
                {
                    $this->data[$name]  =  $value;
                }
            }
            /**
            * Get the value of assigned var
            *
            * @public
            */
            function get_var ( $name )
            {
                return $this->data[$name];
            }
            /**
            * Template function compatiable with phpbb2 template engine
            *
            * @public
            */
            function assign_var ( $name, $value = '' )
            {
                $this->assign($name, $value);
            }
            /**
            * Template function compatiable with phpbb2 template engine
            *
            * @public
            */
            function assign_vars ( $name, $value = '' )
            {
                $this->assign($name, $value);
            }
            /**
            * Assign Template Block Content
             *
            * @access public
            * @param string $name Parameter Name
            * @param mixed $value Parameter Value
            * @desc Assign Template Block Content
            */
            function assign_block_vars ( $name, $value = '' )
            {
                if (strpos($name, '.') !== false)
                {
                    $blocks =  explode('.', $name);
                    $blockcount = sizeof($blocks) - 1;
                    $ref_obj = & $this->data;
    
                    for ($i = 0; $i < $blockcount; $i++)
                    {
                        $block_name = $blocks[$i];
                        // if this block is not created yet
                        if(!isset($ref_obj[$block_name]))
                        {
                            $ref_obj[$block_name] = array();
                            $ref_obj = & $ref_obj[$block_name];
    
                        }
                        // if the block has already existed, pass to the last items
                        else
                        {
                            $ref_obj = & $ref_obj[$block_name];
                            $ref_obj = & $ref_obj[sizeof($ref_obj) - 1];
                        }
                    }
    
                    // append the value to the current block!
                    $ref_obj[$blocks[$blockcount]][]  =  $value;
                }
                else
                {
                    $this->data[$name][sizeof($this->data[$name])] = $value;
                }
            }
            /**
            * Template function compatiable with phpbb2 template engine
            *
            * @public
            */
            function assign_var_from_handle($tpl_var = '', $handle, $return_content = false, $include_once = false)
            {
                $contents = $this->result($handle, $include_once);
    
                if ($return_content)
                {
                    return $contents;
                }
    
                $this->assign_var($tpl_var, $contents);
    
                return true;
            }
            /**
            * Template function compatiable with phpbb2 template engine
            *
            * @public
            */
            function set_filenames($filename_array)
            {
                if (!is_array($filename_array))
                {
                    return false;
                }
    
                foreach ($filename_array as $handle => $filename)
                {
                    if (empty($filename))
                    {
                        exit( 'SmartTemplate Error[Line:'.__LINE__.']: template->set_filenames: Empty filename specified for '.$handle);
                    }
    
                    $this->tpl_files[$handle] = $filename;
                }
    
                return true;
            }
            /**
            * Template function compatiable with phpbb2 template engine
            *
            * @public
            */
            function pparse($handle='index', $include_once = true)
            {
                $this->output($handle, $include_once);
            }
            /**
            * Template function compatiable with phpbb2 template engine
            *
            * @public
            */
            function email_pparse($handle,$from='',$to='')
            {
                global $LANG,$user;
                
                $email = new Email($this->template_dir);
                $email->template = & $this;
                $email->admin_email =$user->setting['adminemail'];
                # sending emails via SMTP?
                if($user->setting[use_smtp])
                {
                    $email->handler->IsSMTP();
                    $email->handler->SMTPAuth = true;
    
                    $email->handler->Host = $user->setting[smtp_host];
                    $email->handler->Username = $user->setting[smtp_user];
                    $email->handler->Password = $user->setting[smtp_pass];
    
                    $email->SMTPDebug = 1;
                }
                $email->to($to);
                $email->from($from);
                $email->send($handle);
                return true;
            }
            /**
            * Include a seperate template
            *
            * @private
            */
            function _tpl_include($filename, $include = false)
            {
                $handle = preg_replace('/[:\/.\\\\]/', '_', $filename);
                $this->tpl_files[$handle] = $filename;
                 $this->output($handle,$include);
            }
            /**
            * Complie a HTML string
            *
            * @private
            */
            function _tpl_execute($HTMLCode)
            {
                if(!is_object($this->parser))
                {
                    $this->parser = new SmartTemplateParser($this->template_dir . $this->tpl_file);
                    $this->parser->use_php = $this->use_php;
                    $this->parser->reuse_code = $this->reuse_code;
                    $this->parser->strict_mode = $this->strict_mode;
                    $this->parser->templatephp_dir = $this->templatephp_dir;
                    $this->parser->templateext_dir = $this->templateext_dir;
                }
                $this->parser->template = $HTMLCode;
                $this->parser->compile();
    
                $_obj  = $this->data;
                $_stack_cnt  =  0;
                $_stack[$_stack_cnt++]  =  $_obj;
    
                eval(' ?'.'>' . $this->parser->compiled_content . '<?php ');
            }
    
            /**
            * Parser Wrapper
            * Returns Template Output as a String
            *
            * @access public
            * @param array $_top Content Array
            * @return string  Parsed Template
            * @desc Output Buffer Parser Wrapper
            */
            function result2 ( $HTMLCode, $include_once=true )
            {
                ob_start();
                $this->_tpl_execute( $HTMLCode );
                $result  =  ob_get_contents();
                ob_end_clean();
                return $result;
            }
    
            /**
            * Assign Template Content
            *
            * Usage Example:
            * $page->append( 'userlist',  array( 'ID' => 123,  'NAME' => 'John Doe' ) );
            * $page->append( 'userlist',  array( 'ID' => 124,  'NAME' => 'Jack Doe' ) );
            *
            * @access public
            * @param string $name Parameter Name
            * @param mixed $value Parameter Value
            * @desc Assign Template Content
            */
            function append ( $name, $value )
            {
                if (is_array($value))
                {
                    $this->data[$name][]  =  $value;
                }
                elseif (!is_array($this->data[$name]))
                {
                    $this->data[$name]  .=  $value;
                }
            }
    
    
            /**
            * Parser Wrapper
            * Returns Template Output as a String
            *
            * @access public
            * @param array $_top Content Array
            * @return string  Parsed Template
            * @desc Output Buffer Parser Wrapper
            */
            function result ( $handle = 'index', $include_once=true )
            {
                ob_start();
                $this->output( $handle, $include_once);
                $result  =  ob_get_contents();
                ob_end_clean();
                return $result;
            }
    
    
            /**
            * Execute parsed Template
            * Prints Parsing Results to Standard Output
            *
            * @access public
            * @param array $_top Content Array
            * @desc Execute parsed Template
            */
            function output ( $handle = 'index', $include_once=true )
            {
                //    Make sure that folder names have a trailing '/'
                if (strlen($this->template_dir)  &&  substr($this->template_dir, -1) != '/')
                {
                    $this->template_dir  .=  '/';
                }
                if (strlen($this->temp_dir)  &&  substr($this->temp_dir, -1) != '/')
                {
                    $this->temp_dir  .=  '/';
                }
    
                $this->tpl_file  =  $this->tpl_files[$handle];
                $_obj  = $this->data;
                $_stack_cnt  =  0;
                $_stack[$_stack_cnt++]  =  $_obj;
    
                //    Check if template is already compiled
                $cpl_file_name = preg_replace('/[:\/.\\\\]/', '_', $this->tpl_file);
                if (strlen($cpl_file_name) > 0)
                {
                    $this->cpl_file  =  $this->temp_dir . $cpl_file_name . '.php';
                    $compile_template  =  true;
                    if($this->reuse_code)
                    {
                        if (is_file($this->cpl_file))
                        {
                            if ($this->mtime($this->cpl_file) > $this->mtime($this->template_dir . $this->tpl_file))
                            {
                                $compile_template  =  false;
                            }
                        }
                    }
                    // the template has been complied
                    if(strlen($this->compiled_content[$handle]))
                    {
                        $compile_template  =  false;
                    }
                    if ($compile_template)
                    {
                        if (@include_once("class.smarttemplateparser.php"))
                        {
                            $this->parser = new SmartTemplateParser($this->template_dir . $this->tpl_file);
                            $this->parser->use_php = $this->use_php;
                            $this->parser->reuse_code = $this->reuse_code;
                            $this->parser->strict_mode = $this->strict_mode;
                            $this->parser->template_dir = $this->template_dir;
                            $this->parser->templatephp_dir = $this->templatephp_dir;
                            $this->parser->templateext_dir = $this->templateext_dir;
                            if (!$this->parser->compile($this->cpl_file))
                            {
                                exit( "SmartTemplate Parser Error: " . $this->parser->error );
                            }
                            $this->compiled_content[$handle] = $this->parser->compiled_content;
                        }
                        else
                        {
                            exit( 'SmartTemplate Error[Line:'.__LINE__.']: Cannot find class.smarttemplateparser.php; check SmartTemplate installation');
                        }
                    }
                    //    Execute Compiled Template
                    if($this->reuse_code&&is_file($this->cpl_file)) ($include_once) ? include_once($this->cpl_file) : include($this->cpl_file);
                    else
                    {
                        eval(' ?'.'>' . $this->compiled_content[$handle] . '<?'."define('$this->tpl_files[$handle]',1)".'?'.'>' . '<?php ');
                        // if the complied code is not working, print out the template HTML code!
                        if(!defined("$this->tpl_files[$handle]"))
                        {
                            echo 'Error template:'.$this->template_dir.$this->tpl_files[$handle];
                            echo '<br>Original template:<br><textarea cols=100 rows=5>';
                            echo file_get_contents($this->template_dir.$this->tpl_files[$handle]);
                            echo '</textarea>';
                            echo '<br>Complied template:<br><textarea cols=100 rows=5>';
                            echo $this->compiled_content[$handle];
                            echo '</textarea>';
                        }
                    }
                }
                else
                {
                    exit( 'SmartTemplate Error[Line:'.__LINE__.']: You must set a template file name');
                }
            }
    
    
            /**
            * Debug Template
            *
            * @access public
            * @param array $_top Content Array
            * @desc Debug Template
            */
            function debug ( $handle, $_top = '' )
            {
                //    Prepare Template Content
                if (!$_top)
                {
                    $_top  =  $this->data;
                }
                if (@include_once("class.smarttemplatedebugger.php"))
                {
                    $this->debugger = new SmartTemplateDebugger($this->template_dir . $this->tpl_files[$handle]);
                    $this->debugger->start($_top);
                }
                else
                {
                    exit( 'SmartTemplate Error[Line:'.__LINE__.']: Cannot find class.smarttemplatedebugger.php; check SmartTemplate installation');
                }
            }
    
    
            /**
            * Start Ouput Content Buffering
            *
            * Usage Example:
            * $page = new SmartTemplate('template.html');
            * $page->use_cache();
            * ...
            *
            * @access public
            * @desc Output Cache
            */
            function use_cache ( $user_callback = false )
            {
                global $user;
                $key = 'mfhs';
                # donot cache pages when a user is logined
                if (empty($_POST)&&$user->logined==0)
                 {
                    $this->user_callback = false;
                    if($user_callback[0] && function_exists($user_callback[0]))
                    {
                        $user_callback_func = $user_callback[0];
                        $required_params    = $user_callback_func();
                    }
                    if($user_callback[1] && function_exists($user_callback[1]))
                    {
                        $this->user_callback = $user_callback[1];
                    }
                    $REQUEST_URI = preg_replace('"[/]+"', '/', $_SERVER['REQUEST_URI']);
                    $url_parts   = parse_url($REQUEST_URI);
                    //parse_str($url_parts[query], $param_parts);
                    parse_str($_SERVER[QUERY_STRING], $param_parts);
    
                    $url_params  = '';
                    if($required_params) foreach($required_params as $k) if(isset($param_parts[$k])) $url_params .= '&'.$k.'='.$param_parts[$k];
    
                    # inline view not cached!
                    if(IN_PAGE=='DOWNLOAD'&&strcmp($param_parts['d'],1))
                    {
                        $this->user_callback = false;
                        return 1;
                    }
    
                    # now build the result fine url
                    $REQUEST_URI = $url_parts['path'] . $url_params;
    
                    $this->cache_filename  =  $this->cache_dir . 'cache_'.$user->langcode. '_' . md5($REQUEST_URI . serialize($key)) . '.ser';
                    if (($_SERVER['HTTP_CACHE_CONTROL'] != 'no-cache')  &&  ($_SERVER['HTTP_PRAGMA'] != 'no-cache')  &&  @is_file($this->cache_filename))
                    {
                        if ((time() - filemtime($this->cache_filename)) < $this->cache_lifetime)
                        {
                            readfile($this->cache_filename);
                            exit;
                        }
                    }
                    ob_start( array( &$this, 'cache_callback' ) );
                }
            }
    
            /**
            * End Ouput Content Buffering
            *
            * Usage Example:
            * $page = new SmartTemplate('template.html');
            * $page->use_cache();
            * ...
            * $page->end_cache();
            * @access public
            * @desc Output Cache
            */
            function end_cache ()
            {
                if (empty($_POST))
                {
                    ob_end_flush();
                }
            }
    
            /**
            * Output Buffer Callback Function
            *
            * @access private
            * @param string $output
            * @return string $output
            */
            function cache_callback ( $output )
            {
                if($this->user_callback)
                {
                    $user_callback_func = $this->user_callback;
                    $output = $user_callback_func($output);
                }
                echo $this->cache_filename;
                $output .= '<!-- The static page was generated at '.date('Y-m-d H:i:s').' -->';
                if ($hd = @fopen($this->cache_filename, 'w'))
                {
                    fputs($hd,  $output);
                    fclose($hd);
                }
                return $output;
            }
    
    
            /**
            * Determine Last Filechange Date (if File exists)
            *
            * @access private
            * @param string $filename
            * @return mixed
            * @desc Determine Last Filechange Date
            */
            function mtime ( $filename )
            {
                if (@is_file($filename))
                {
                    $ret = filemtime($filename);
                    return $ret;
                }
            }
        }
    ?>
     
    HTML:
     
    abdel, Aug 1, 2012 IP
  2. sigmainfo

    sigmainfo Active Member

    Messages:
    495
    Likes Received:
    6
    Best Answers:
    0
    Trophy Points:
    55
    #2
    Sorry, can't help you... Infact no one have the solution i guess as this question is old..
     
    sigmainfo, Aug 14, 2012 IP
  3. Irfi0009

    Irfi0009 Banned

    Messages:
    17,584
    Likes Received:
    33
    Best Answers:
    1
    Trophy Points:
    48
    #3
    please contact designer then you will receive any help.
     
    Irfi0009, Aug 23, 2012 IP