This repository has been archived on 2024-11-28. You can view files and clone it, but cannot push or open issues or pull requests.
LuisLeon_WebOSC/catalog/includes/classes/sts.php

227 lines
9.6 KiB
PHP

<?php
/*
$Id: sts.php,v 4.4 2006/23/09 22:30:54 Rigadin Exp $
osCommerce, Open Source E-Commerce Solutions
http://www.oscommerce.com
Copyright (c) 2005 osCommerce
Released under the GNU General Public License
*
* STS v4.4 by Rigadin, www.osc-help.net
*/
require (DIR_WS_FUNCTIONS.'sts.php');
class sts {
var $sts_block, $template,
$display_template_output, $display_debugging_output,
$template_file, $template_folder;
function sts (){
$this->update_from_url(); // Check for debug mode from URL
$this->infobox_enabled = false; // infobox templates disabled by default.
$this->is_button = false; // We are not processing an image button
$this->buttons_folder = 'buttons'; // Set the button folder inside [template folder]/images/[language]/
// Defines constants needed when working with templates.
// v4.4: Moved constant definitions before check of template output, so constants are also available to pagegs not using templates
define('STS_TEMPLATE_DIR', MODULE_STS_TEMPLATES_FOLDER . $this->template_folder .'/'); // v4.4: Use of MODULE_STS_TEMPLATES_FOLDER instead of fixed path
define('STS_DEFAULT_TEMPLATE', STS_TEMPLATE_DIR . MODULE_STS_TEMPLATE_FILE);
// Use template output if enabled or in debug mode (=only for admin)
if ((MODULE_STS_DEFAULT_STATUS == 'true') || ($this->display_debug_output == true))
$this->display_template_output = true;
else {
$this->display_template_output = false;
return;
}
// Initialisation of variables
$this->template = array('debug' => '',
'headcontent' =>'',
'extracss' =>'');
$this->version= "4.4";
// Find the right template to use according to actual page and parameters. Displays normal output if no template returned
if ($this->find_template() == '') {
$this->display_template_output = false; // If no template returned, do not use templates at all and exit
return;
}
if ($this->read_template_file() == false) {
$this->display_template_output = false; // If template file does not exist, do not use templates at all and exit
return;
}
// Added in v4.3: check if infobox templates are enabled or not
$this->infobox_enabled = ((MODULE_STS_INFOBOX_STATUS == 'true') ? true : false);
} //end constructor
function update_from_url () {
// Allow Debugging control from the URL
if ($_GET['sts_debug'] == MODULE_STS_DEBUG_CODE) {
$this->display_debug_output = true;
}
// Defines constants needed when working with templates
if ($_GET['sts_template']) {
$this->template_folder = $_GET['sts_template'];
} else {
$this->template_folder = MODULE_STS_TEMPLATE_FOLDER;
}
}
function find_template (){
// Retrieve script name without path nor parameters
$scriptbasename = basename ($_SERVER['PHP_SELF']);
// Disable STS for popups: moved to sts_default module since v4.4
// Check for module that will handle the template (for example module sts_index takes care of index.php templates)
$check_file = 'sts_'.$scriptbasename;
$modules_installed = explode (';', MODULE_STS_INSTALLED);
if (!in_array($check_file, $modules_installed)) $check_file = 'sts_default.php';
include_once (DIR_WS_MODULES.'sts/'.$check_file);
$classname=substr($check_file,0,strlen($check_file)-4);
$this->script=new $classname; // Create an object from the module
// If module existes but is disabled, use the default module.
if ($this->script->enabled==false) {
unset ($this->script);
include_once (DIR_WS_MODULES.'sts/sts_default.php');
$this->script=new sts_default; // Create an object from the module
}
$this->template_file = $this->script->find_template($scriptbasename); // Retrieve the template to use, $scriptbasename added in v4.4
return $this->template_file ;
}
function start_capture () {
// Start redirecting output to the output buffer, if template mode on.
if ($this->display_template_output) {
// ob_end_clean(); // Clear out the capture buffer. Removed in v4.3.3
ob_start();
}
}
function stop_capture ($block_name='', $action='') {
// Store captured output to $sts_capture
if (!$this->display_template_output) return; // Do not process anything if we are not in using templates
$block = ob_get_contents(); // Get content of buffer
ob_end_clean(); // Clear out the capture buffer
if ($block_name=='') return $block; // Not need to continue if we don't want to save the buffer
switch($action){
case 'box':
$block = sts_strip_unwanted_tags($block, $block_name);
$this->template[$block_name] = $block;
break;
break;
default:
$this->template[$block_name] = $block;
} // switch
return $block; // Return value added in v4.3
}
function restart_capture ($block_name='', $action='') {
// Capture buffer, save it and start a new capture
if (!$this->display_template_output) return;
$block = $this->stop_capture($block_name, $action);
$this->start_capture();
return $block; // Return value added in v4.3
}
function capture_fields (){
// If we use template, ask to module what file(s) to include for building fields
if ($this->display_template_output) {
$fields_arr= explode(';', $this->script->capture_fields ());
}
return $fields_arr;
}
function read_template_file (){
// Purpose: Open Template file and read it
// Generate an error if the template file does not exist and return 'false'.
if (! file_exists($this->template_file)) {
print 'Template file does not exist: ['.$this->template_file.']';
return false;
}
// We use templates and the template file exists
// Capture the template, this way we can use php code inside templates
$this->start_capture (); // Start capture to buffer
require $this->template_file; // Includes the template, this way php code can be used in templates
$this->stop_capture ('template_html');
return true;
} // End read_template_file
function replace (){
global $messageStack, $request_type;
if (!$this->display_template_output) return; // Go out if we don't use template
if (defined("STS_END_CHAR") == false) define ('STS_END_CHAR', ''); // An end char must be defined, even if empty.
// Load up the <head> content that we need to link up everything correctly. Append to anything that may have been set in sts_user_code.php
// Note that since v3.0, stylesheet is not defined here but in the template file, allowing different stylesheet for different template.
$this->template['headcontent'] = $this->template['headcontent'].'';
$this->template['headcontent'] = $this->template['headcontent'].'<meta http-equiv="Content-Type" content="text/html; charset=' . CHARSET . '">' . "\n";
$this->template['headcontent'] = $this->template['headcontent'].$this->template['headertags'];
$this->template['headcontent'] = $this->template['headcontent'].'<base href="' . (($request_type == 'SSL') ? HTTPS_SERVER : HTTP_SERVER) . DIR_WS_CATALOG . '">' . "\n";
$this->template['headcontent'] = $this->template['headcontent'].get_javascript($this->template['applicationtop2header'],'get_javascript(applicationtop2header)');
$this->script->replace($this->template); // Module can make tricks here, just before replacing, like using own content template
// Add messages before the content
if ($messageStack->size('header') > 0) {
$this->template['content'] = $messageStack->output('header') . $this->template['content'];
}
// Manually replace the <!--$headcontent--> if present
$this->template['template_html'] = str_replace('<!--$headcontent-->', $this->template['headcontent'], $this->template['template_html']);
// Manually replace the <!--$extracss--> with template['extracss']
$this->template['template_html'] = str_replace('<!--$extracss-->', $this->template['extracss'], $this->template['template_html']);
// Automatically replace all the other template variables
if (STS_END_CHAR=='') { // If no end char defined for the placeholders, have to sort the placeholders.
uksort($this->template, "sortbykeylength"); // Sort array by string length, so that longer strings are replaced first
}
foreach ($this->template as $key=>$value) {
$this->template['template_html'] = str_replace('$' . $key . STS_END_CHAR , $value, $this->template['template_html']);
}
}
function image (&$src) {
// Added in v4.4: use image from the template folder if exists.
// Check only if STS is enabled.
if (MODULE_STS_DEFAULT_STATUS=="true" && $this->is_button ==false)
if (file_exists(STS_TEMPLATE_DIR . $src)) $src = STS_TEMPLATE_DIR . $src;
$this->is_button = false;
}
function image_button ($src, $language, $is_button = false) {
// Check if button exists in template folder.
// $is_button=true will cancel the check in function "image".
$this->is_button = $is_button;
// Check only if STS is enabled.
if (MODULE_STS_DEFAULT_STATUS=="true") {
$check_file = STS_TEMPLATE_DIR . 'images/'. $language . '/' .$this->buttons_folder . '/' .$src;
if (file_exists($check_file)) return $check_file;
}
return '';
}
// *****************************************
// Functions added for debug
// *****************************************
function add_debug ($text, $br=true) {
// STS v4.1: Add debug text to the STS debug variable. If $br=false, then no line break added
$this->template['debug'].= $text . ($br ? "\n" : '');
}
} //end class
?>