783 lines
15 KiB
PHP
783 lines
15 KiB
PHP
|
|
<?php
|
||
|
|
/**
|
||
|
|
* @version $Id: document.php 14401 2010-01-26 14:10:00Z louis $
|
||
|
|
* @package Joomla.Framework
|
||
|
|
* @subpackage Document
|
||
|
|
* @copyright Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved.
|
||
|
|
* @license GNU/GPL, see LICENSE.php
|
||
|
|
* Joomla! is free software. This version may have been modified pursuant
|
||
|
|
* to the GNU General Public License, and as distributed it includes or
|
||
|
|
* is derivative of works licensed under the GNU General Public License or
|
||
|
|
* other free or open source software licenses.
|
||
|
|
* See COPYRIGHT.php for copyright notices and details.
|
||
|
|
*/
|
||
|
|
|
||
|
|
// Check to ensure this file is within the rest of the framework
|
||
|
|
defined('JPATH_BASE') or die();
|
||
|
|
|
||
|
|
//Register the renderer class with the loader
|
||
|
|
JLoader::register('JDocumentRenderer', dirname(__FILE__).DS.'renderer.php');
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Document class, provides an easy interface to parse and display a document
|
||
|
|
*
|
||
|
|
* @abstract
|
||
|
|
* @package Joomla.Framework
|
||
|
|
* @subpackage Document
|
||
|
|
* @since 1.5
|
||
|
|
*/
|
||
|
|
class JDocument extends JObject
|
||
|
|
{
|
||
|
|
/**
|
||
|
|
* Document title
|
||
|
|
*
|
||
|
|
* @var string
|
||
|
|
* @access public
|
||
|
|
*/
|
||
|
|
var $title = '';
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Document description
|
||
|
|
*
|
||
|
|
* @var string
|
||
|
|
* @access public
|
||
|
|
*/
|
||
|
|
var $description = '';
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Document full URL
|
||
|
|
*
|
||
|
|
* @var string
|
||
|
|
* @access public
|
||
|
|
*/
|
||
|
|
var $link = '';
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Document base URL
|
||
|
|
*
|
||
|
|
* @var string
|
||
|
|
* @access public
|
||
|
|
*/
|
||
|
|
var $base = '';
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Contains the document language setting
|
||
|
|
*
|
||
|
|
* @var string
|
||
|
|
* @access public
|
||
|
|
*/
|
||
|
|
var $language = 'en-gb';
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Contains the document direction setting
|
||
|
|
*
|
||
|
|
* @var string
|
||
|
|
* @access public
|
||
|
|
*/
|
||
|
|
var $direction = 'ltr';
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Document generator
|
||
|
|
*
|
||
|
|
* @var string
|
||
|
|
* @access public
|
||
|
|
*/
|
||
|
|
var $_generator = 'Joomla! 1.5 - Open Source Content Management';
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Document modified date
|
||
|
|
*
|
||
|
|
* @var string
|
||
|
|
* @access private
|
||
|
|
*/
|
||
|
|
var $_mdate = '';
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Tab string
|
||
|
|
*
|
||
|
|
* @var string
|
||
|
|
* @access private
|
||
|
|
*/
|
||
|
|
var $_tab = "\11";
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Contains the line end string
|
||
|
|
*
|
||
|
|
* @var string
|
||
|
|
* @access private
|
||
|
|
*/
|
||
|
|
var $_lineEnd = "\12";
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Contains the character encoding string
|
||
|
|
*
|
||
|
|
* @var string
|
||
|
|
* @access private
|
||
|
|
*/
|
||
|
|
var $_charset = 'utf-8';
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Document mime type
|
||
|
|
*
|
||
|
|
* @var string
|
||
|
|
* @access private
|
||
|
|
*/
|
||
|
|
var $_mime = '';
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Document namespace
|
||
|
|
*
|
||
|
|
* @var string
|
||
|
|
* @access private
|
||
|
|
*/
|
||
|
|
var $_namespace = '';
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Document profile
|
||
|
|
*
|
||
|
|
* @var string
|
||
|
|
* @access private
|
||
|
|
*/
|
||
|
|
var $_profile = '';
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Array of linked scripts
|
||
|
|
*
|
||
|
|
* @var array
|
||
|
|
* @access private
|
||
|
|
*/
|
||
|
|
var $_scripts = array();
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Array of scripts placed in the header
|
||
|
|
*
|
||
|
|
* @var array
|
||
|
|
* @access private
|
||
|
|
*/
|
||
|
|
var $_script = array();
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Array of linked style sheets
|
||
|
|
*
|
||
|
|
* @var array
|
||
|
|
* @access private
|
||
|
|
*/
|
||
|
|
var $_styleSheets = array();
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Array of included style declarations
|
||
|
|
*
|
||
|
|
* @var array
|
||
|
|
* @access private
|
||
|
|
*/
|
||
|
|
var $_style = array();
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Array of meta tags
|
||
|
|
*
|
||
|
|
* @var array
|
||
|
|
* @access private
|
||
|
|
*/
|
||
|
|
var $_metaTags = array();
|
||
|
|
|
||
|
|
/**
|
||
|
|
* The rendering engine
|
||
|
|
*
|
||
|
|
* @var object
|
||
|
|
* @access private
|
||
|
|
*/
|
||
|
|
var $_engine = null;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* The document type
|
||
|
|
*
|
||
|
|
* @var string
|
||
|
|
* @access private
|
||
|
|
*/
|
||
|
|
var $_type = null;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Array of buffered output
|
||
|
|
*
|
||
|
|
* @var mixed (depends on the renderer)
|
||
|
|
* @access private
|
||
|
|
*/
|
||
|
|
var $_buffer = null;
|
||
|
|
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Class constructor
|
||
|
|
*
|
||
|
|
* @access protected
|
||
|
|
* @param array $options Associative array of options
|
||
|
|
*/
|
||
|
|
function __construct( $options = array())
|
||
|
|
{
|
||
|
|
parent::__construct();
|
||
|
|
|
||
|
|
if (array_key_exists('lineend', $options)) {
|
||
|
|
$this->setLineEnd($options['lineend']);
|
||
|
|
}
|
||
|
|
|
||
|
|
if (array_key_exists('charset', $options)) {
|
||
|
|
$this->setCharset($options['charset']);
|
||
|
|
}
|
||
|
|
|
||
|
|
if (array_key_exists('language', $options)) {
|
||
|
|
$this->setLanguage($options['language']);
|
||
|
|
}
|
||
|
|
|
||
|
|
if (array_key_exists('direction', $options)) {
|
||
|
|
$this->setDirection($options['direction']);
|
||
|
|
}
|
||
|
|
|
||
|
|
if (array_key_exists('tab', $options)) {
|
||
|
|
$this->setTab($options['tab']);
|
||
|
|
}
|
||
|
|
|
||
|
|
if (array_key_exists('link', $options)) {
|
||
|
|
$this->setLink($options['link']);
|
||
|
|
}
|
||
|
|
|
||
|
|
if (array_key_exists('base', $options)) {
|
||
|
|
$this->setBase($options['base']);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Returns a reference to the global JDocument object, only creating it
|
||
|
|
* if it doesn't already exist.
|
||
|
|
*
|
||
|
|
* This method must be invoked as:
|
||
|
|
* <pre> $document = &JDocument::getInstance();</pre>
|
||
|
|
*
|
||
|
|
* @access public
|
||
|
|
* @param type $type The document type to instantiate
|
||
|
|
* @return object The document object.
|
||
|
|
*/
|
||
|
|
function &getInstance($type = 'html', $attributes = array())
|
||
|
|
{
|
||
|
|
static $instances;
|
||
|
|
|
||
|
|
if (!isset( $instances )) {
|
||
|
|
$instances = array();
|
||
|
|
}
|
||
|
|
|
||
|
|
$signature = serialize(array($type, $attributes));
|
||
|
|
|
||
|
|
if (empty($instances[$signature]))
|
||
|
|
{
|
||
|
|
$type = preg_replace('/[^A-Z0-9_\.-]/i', '', $type);
|
||
|
|
$path = dirname(__FILE__).DS.$type.DS.$type.'.php';
|
||
|
|
$ntype = null;
|
||
|
|
|
||
|
|
// Check if the document type exists
|
||
|
|
if ( ! file_exists($path))
|
||
|
|
{
|
||
|
|
// Default to the raw format
|
||
|
|
$ntype = $type;
|
||
|
|
$type = 'raw';
|
||
|
|
}
|
||
|
|
|
||
|
|
// Determine the path and class
|
||
|
|
$class = 'JDocument'.$type;
|
||
|
|
if(!class_exists($class))
|
||
|
|
{
|
||
|
|
$path = dirname(__FILE__).DS.$type.DS.$type.'.php';
|
||
|
|
if (file_exists($path)) {
|
||
|
|
require_once($path);
|
||
|
|
} else {
|
||
|
|
JError::raiseError(500,JText::_('Unable to load document class'));
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
$instance = new $class($attributes);
|
||
|
|
$instances[$signature] =& $instance;
|
||
|
|
|
||
|
|
if ( !is_null($ntype) )
|
||
|
|
{
|
||
|
|
// Set the type to the Document type originally requested
|
||
|
|
$instance->setType($ntype);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
return $instances[$signature];
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Set the document type
|
||
|
|
*
|
||
|
|
* @access public
|
||
|
|
* @param string $type
|
||
|
|
*/
|
||
|
|
function setType($type) {
|
||
|
|
$this->_type = $type;
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Returns the document type
|
||
|
|
*
|
||
|
|
* @access public
|
||
|
|
* @return string
|
||
|
|
*/
|
||
|
|
function getType() {
|
||
|
|
return $this->_type;
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Get the document head data
|
||
|
|
*
|
||
|
|
* @access public
|
||
|
|
* @return array The document head data in array form
|
||
|
|
*/
|
||
|
|
function getHeadData() {
|
||
|
|
// Impelemented in child classes
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Set the document head data
|
||
|
|
*
|
||
|
|
* @access public
|
||
|
|
* @param array $data The document head data in array form
|
||
|
|
*/
|
||
|
|
function setHeadData($data) {
|
||
|
|
// Impelemented in child classes
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Get the contents of the document buffer
|
||
|
|
*
|
||
|
|
* @access public
|
||
|
|
* @return The contents of the document buffer
|
||
|
|
*/
|
||
|
|
function getBuffer() {
|
||
|
|
return $this->_buffer;
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Set the contents of the document buffer
|
||
|
|
*
|
||
|
|
* @access public
|
||
|
|
* @param string $content The content to be set in the buffer
|
||
|
|
*/
|
||
|
|
function setBuffer($content) {
|
||
|
|
$this->_buffer = $content;
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Gets a meta tag.
|
||
|
|
*
|
||
|
|
* @param string $name Value of name or http-equiv tag
|
||
|
|
* @param bool $http_equiv META type "http-equiv" defaults to null
|
||
|
|
* @return string
|
||
|
|
* @access public
|
||
|
|
*/
|
||
|
|
function getMetaData($name, $http_equiv = false)
|
||
|
|
{
|
||
|
|
$result = '';
|
||
|
|
$name = strtolower($name);
|
||
|
|
if($name == 'generator') {
|
||
|
|
$result = $this->getGenerator();
|
||
|
|
} elseif($name == 'description') {
|
||
|
|
$result = $this->getDescription();
|
||
|
|
} else {
|
||
|
|
if ($http_equiv == true) {
|
||
|
|
$result = @$this->_metaTags['http-equiv'][$name];
|
||
|
|
} else {
|
||
|
|
$result = @$this->_metaTags['standard'][$name];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return $result;
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Sets or alters a meta tag.
|
||
|
|
*
|
||
|
|
* @param string $name Value of name or http-equiv tag
|
||
|
|
* @param string $content Value of the content tag
|
||
|
|
* @param bool $http_equiv META type "http-equiv" defaults to null
|
||
|
|
* @return void
|
||
|
|
* @access public
|
||
|
|
*/
|
||
|
|
function setMetaData($name, $content, $http_equiv = false)
|
||
|
|
{
|
||
|
|
$name = strtolower($name);
|
||
|
|
if($name == 'generator') {
|
||
|
|
$this->setGenerator($content);
|
||
|
|
} elseif($name == 'description') {
|
||
|
|
$this->setDescription($content);
|
||
|
|
} else {
|
||
|
|
if ($http_equiv == true) {
|
||
|
|
$this->_metaTags['http-equiv'][$name] = $content;
|
||
|
|
} else {
|
||
|
|
$this->_metaTags['standard'][$name] = $content;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Adds a linked script to the page
|
||
|
|
*
|
||
|
|
* @param string $url URL to the linked script
|
||
|
|
* @param string $type Type of script. Defaults to 'text/javascript'
|
||
|
|
* @access public
|
||
|
|
*/
|
||
|
|
function addScript($url, $type="text/javascript") {
|
||
|
|
$this->_scripts[$url] = $type;
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Adds a script to the page
|
||
|
|
*
|
||
|
|
* @access public
|
||
|
|
* @param string $content Script
|
||
|
|
* @param string $type Scripting mime (defaults to 'text/javascript')
|
||
|
|
* @return void
|
||
|
|
*/
|
||
|
|
function addScriptDeclaration($content, $type = 'text/javascript')
|
||
|
|
{
|
||
|
|
if (!isset($this->_script[strtolower($type)])) {
|
||
|
|
$this->_script[strtolower($type)] = $content;
|
||
|
|
} else {
|
||
|
|
$this->_script[strtolower($type)] .= chr(13).$content;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Adds a linked stylesheet to the page
|
||
|
|
*
|
||
|
|
* @param string $url URL to the linked style sheet
|
||
|
|
* @param string $type Mime encoding type
|
||
|
|
* @param string $media Media type that this stylesheet applies to
|
||
|
|
* @access public
|
||
|
|
*/
|
||
|
|
function addStyleSheet($url, $type = 'text/css', $media = null, $attribs = array())
|
||
|
|
{
|
||
|
|
$this->_styleSheets[$url]['mime'] = $type;
|
||
|
|
$this->_styleSheets[$url]['media'] = $media;
|
||
|
|
$this->_styleSheets[$url]['attribs'] = $attribs;
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Adds a stylesheet declaration to the page
|
||
|
|
*
|
||
|
|
* @param string $content Style declarations
|
||
|
|
* @param string $type Type of stylesheet (defaults to 'text/css')
|
||
|
|
* @access public
|
||
|
|
* @return void
|
||
|
|
*/
|
||
|
|
function addStyleDeclaration($content, $type = 'text/css')
|
||
|
|
{
|
||
|
|
if (!isset($this->_style[strtolower($type)])) {
|
||
|
|
$this->_style[strtolower($type)] = $content;
|
||
|
|
} else {
|
||
|
|
$this->_style[strtolower($type)] .= chr(13).$content;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Sets the document charset
|
||
|
|
*
|
||
|
|
* @param string $type Charset encoding string
|
||
|
|
* @access public
|
||
|
|
* @return void
|
||
|
|
*/
|
||
|
|
function setCharset($type = 'utf-8') {
|
||
|
|
$this->_charset = $type;
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Returns the document charset encoding.
|
||
|
|
*
|
||
|
|
* @access public
|
||
|
|
* @return string
|
||
|
|
*/
|
||
|
|
function getCharset() {
|
||
|
|
return $this->_charset;
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Sets the global document language declaration. Default is English (en-gb).
|
||
|
|
*
|
||
|
|
* @access public
|
||
|
|
* @param string $lang
|
||
|
|
*/
|
||
|
|
function setLanguage($lang = "en-gb") {
|
||
|
|
$this->language = strtolower($lang);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Returns the document language.
|
||
|
|
*
|
||
|
|
* @return string
|
||
|
|
* @access public
|
||
|
|
*/
|
||
|
|
function getLanguage() {
|
||
|
|
return $this->language;
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Sets the global document direction declaration. Default is left-to-right (ltr).
|
||
|
|
*
|
||
|
|
* @access public
|
||
|
|
* @param string $lang
|
||
|
|
*/
|
||
|
|
function setDirection($dir = "ltr") {
|
||
|
|
$this->direction = strtolower($dir);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Returns the document language.
|
||
|
|
*
|
||
|
|
* @return string
|
||
|
|
* @access public
|
||
|
|
*/
|
||
|
|
function getDirection() {
|
||
|
|
return $this->direction;
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Sets the title of the document
|
||
|
|
*
|
||
|
|
* @param string $title
|
||
|
|
* @access public
|
||
|
|
*/
|
||
|
|
function setTitle($title) {
|
||
|
|
$this->title = $title;
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Return the title of the document.
|
||
|
|
*
|
||
|
|
* @return string
|
||
|
|
* @access public
|
||
|
|
*/
|
||
|
|
function getTitle() {
|
||
|
|
return $this->title;
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Sets the base URI of the document
|
||
|
|
*
|
||
|
|
* @param string $base
|
||
|
|
* @access public
|
||
|
|
*/
|
||
|
|
function setBase($base) {
|
||
|
|
$this->base = $base;
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Return the base URI of the document.
|
||
|
|
*
|
||
|
|
* @return string
|
||
|
|
* @access public
|
||
|
|
*/
|
||
|
|
function getBase() {
|
||
|
|
return $this->base;
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Sets the description of the document
|
||
|
|
*
|
||
|
|
* @param string $title
|
||
|
|
* @access public
|
||
|
|
*/
|
||
|
|
function setDescription($description) {
|
||
|
|
$this->description = $description;
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Return the title of the page.
|
||
|
|
*
|
||
|
|
* @return string
|
||
|
|
* @access public
|
||
|
|
*/
|
||
|
|
function getDescription() {
|
||
|
|
return $this->description;
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Sets the document link
|
||
|
|
*
|
||
|
|
* @param string $url A url
|
||
|
|
* @access public
|
||
|
|
* @return void
|
||
|
|
*/
|
||
|
|
function setLink($url) {
|
||
|
|
$this->link = $url;
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Returns the document base url
|
||
|
|
*
|
||
|
|
* @access public
|
||
|
|
* @return string
|
||
|
|
*/
|
||
|
|
function getLink() {
|
||
|
|
return $this->link;
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Sets the document generator
|
||
|
|
*
|
||
|
|
* @param string
|
||
|
|
* @access public
|
||
|
|
* @return void
|
||
|
|
*/
|
||
|
|
function setGenerator($generator) {
|
||
|
|
$this->_generator = $generator;
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Returns the document generator
|
||
|
|
*
|
||
|
|
* @access public
|
||
|
|
* @return string
|
||
|
|
*/
|
||
|
|
function getGenerator() {
|
||
|
|
return $this->_generator;
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Sets the document modified date
|
||
|
|
*
|
||
|
|
* @param string
|
||
|
|
* @access public
|
||
|
|
* @return void
|
||
|
|
*/
|
||
|
|
function setModifiedDate($date) {
|
||
|
|
$this->_mdate = $date;
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Returns the document modified date
|
||
|
|
*
|
||
|
|
* @access public
|
||
|
|
* @return string
|
||
|
|
*/
|
||
|
|
function getModifiedDate() {
|
||
|
|
return $this->_mdate;
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Sets the document MIME encoding that is sent to the browser.
|
||
|
|
*
|
||
|
|
* <p>This usually will be text/html because most browsers cannot yet
|
||
|
|
* accept the proper mime settings for XHTML: application/xhtml+xml
|
||
|
|
* and to a lesser extent application/xml and text/xml. See the W3C note
|
||
|
|
* ({@link http://www.w3.org/TR/xhtml-media-types/
|
||
|
|
* http://www.w3.org/TR/xhtml-media-types/}) for more details.</p>
|
||
|
|
*
|
||
|
|
* @param string $type
|
||
|
|
* @access public
|
||
|
|
* @return void
|
||
|
|
*/
|
||
|
|
function setMimeEncoding($type = 'text/html') {
|
||
|
|
$this->_mime = strtolower($type);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Sets the line end style to Windows, Mac, Unix or a custom string.
|
||
|
|
*
|
||
|
|
* @param string $style "win", "mac", "unix" or custom string.
|
||
|
|
* @access public
|
||
|
|
* @return void
|
||
|
|
*/
|
||
|
|
function setLineEnd($style)
|
||
|
|
{
|
||
|
|
switch ($style) {
|
||
|
|
case 'win':
|
||
|
|
$this->_lineEnd = "\15\12";
|
||
|
|
break;
|
||
|
|
case 'unix':
|
||
|
|
$this->_lineEnd = "\12";
|
||
|
|
break;
|
||
|
|
case 'mac':
|
||
|
|
$this->_lineEnd = "\15";
|
||
|
|
break;
|
||
|
|
default:
|
||
|
|
$this->_lineEnd = $style;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Returns the lineEnd
|
||
|
|
*
|
||
|
|
* @access private
|
||
|
|
* @return string
|
||
|
|
*/
|
||
|
|
function _getLineEnd() {
|
||
|
|
return $this->_lineEnd;
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Sets the string used to indent HTML
|
||
|
|
*
|
||
|
|
* @param string $string String used to indent ("\11", "\t", ' ', etc.).
|
||
|
|
* @access public
|
||
|
|
* @return void
|
||
|
|
*/
|
||
|
|
function setTab($string) {
|
||
|
|
$this->_tab = $string;
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Returns a string containing the unit for indenting HTML
|
||
|
|
*
|
||
|
|
* @access private
|
||
|
|
* @return string
|
||
|
|
*/
|
||
|
|
function _getTab() {
|
||
|
|
return $this->_tab;
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Load a renderer
|
||
|
|
*
|
||
|
|
* @access public
|
||
|
|
* @param string The renderer type
|
||
|
|
* @return object
|
||
|
|
* @since 1.5
|
||
|
|
*/
|
||
|
|
function &loadRenderer( $type )
|
||
|
|
{
|
||
|
|
$null = null;
|
||
|
|
$class = 'JDocumentRenderer'.$type;
|
||
|
|
|
||
|
|
if( !class_exists( $class ) )
|
||
|
|
{
|
||
|
|
$path = dirname(__FILE__).DS.$this->_type.DS.'renderer'.DS.$type.'.php';
|
||
|
|
if(file_exists($path)) {
|
||
|
|
require_once($path);
|
||
|
|
} else {
|
||
|
|
JError::raiseError(500,JText::_('Unable to load renderer class'));
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
if ( !class_exists( $class ) ) {
|
||
|
|
return $null;
|
||
|
|
}
|
||
|
|
|
||
|
|
$instance = new $class($this);
|
||
|
|
return $instance;
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Outputs the document
|
||
|
|
*
|
||
|
|
* @access public
|
||
|
|
* @param boolean $cache If true, cache the output
|
||
|
|
* @param boolean $compress If true, compress the output
|
||
|
|
* @param array $params Associative array of attributes
|
||
|
|
* @return The rendered data
|
||
|
|
*/
|
||
|
|
function render( $cache = false, $params = array())
|
||
|
|
{
|
||
|
|
JResponse::setHeader( 'Expires', gmdate( 'D, d M Y H:i:s', time() + 900 ) . ' GMT' );
|
||
|
|
if ($mdate = $this->getModifiedDate()) {
|
||
|
|
JResponse::setHeader( 'Last-Modified', $mdate /* gmdate( 'D, d M Y H:i:s', time() + 900 ) . ' GMT' */ );
|
||
|
|
}
|
||
|
|
JResponse::setHeader( 'Content-Type', $this->_mime . '; charset=' . $this->_charset);
|
||
|
|
}
|
||
|
|
}
|