You've already forked joomla_test
first commit
This commit is contained in:
963
libraries/joomla/document/document.php
Normal file
963
libraries/joomla/document/document.php
Normal file
@ -0,0 +1,963 @@
|
||||
<?php
|
||||
/**
|
||||
* @package Joomla.Platform
|
||||
* @subpackage Document
|
||||
*
|
||||
* @copyright Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
|
||||
* @license GNU General Public License version 2 or later; see LICENSE
|
||||
*/
|
||||
|
||||
defined('JPATH_PLATFORM') or die;
|
||||
|
||||
jimport('joomla.environment.response');
|
||||
|
||||
/**
|
||||
* Document class, provides an easy interface to parse and display a document
|
||||
*
|
||||
* @package Joomla.Platform
|
||||
* @subpackage Document
|
||||
* @since 11.1
|
||||
*/
|
||||
class JDocument
|
||||
{
|
||||
/**
|
||||
* Document title
|
||||
*
|
||||
* @var string
|
||||
* @since 11.1
|
||||
*/
|
||||
public $title = '';
|
||||
|
||||
/**
|
||||
* Document description
|
||||
*
|
||||
* @var string
|
||||
* @since 11.1
|
||||
*/
|
||||
public $description = '';
|
||||
|
||||
/**
|
||||
* Document full URL
|
||||
*
|
||||
* @var string
|
||||
* @since 11.1
|
||||
*/
|
||||
public $link = '';
|
||||
|
||||
/**
|
||||
* Document base URL
|
||||
*
|
||||
* @var string
|
||||
* @since 11.1
|
||||
*/
|
||||
public $base = '';
|
||||
|
||||
/**
|
||||
* Contains the document language setting
|
||||
*
|
||||
* @var string
|
||||
* @since 11.1
|
||||
*/
|
||||
public $language = 'en-gb';
|
||||
|
||||
/**
|
||||
* Contains the document direction setting
|
||||
*
|
||||
* @var string
|
||||
* @since 11.1
|
||||
*/
|
||||
public $direction = 'ltr';
|
||||
|
||||
/**
|
||||
* Document generator
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $_generator = 'Joomla! - Open Source Content Management';
|
||||
|
||||
/**
|
||||
* Document modified date
|
||||
*
|
||||
* @var string
|
||||
* @since 11.1
|
||||
*/
|
||||
public $_mdate = '';
|
||||
|
||||
/**
|
||||
* Tab string
|
||||
*
|
||||
* @var string
|
||||
* @since 11.1
|
||||
*/
|
||||
public $_tab = "\11";
|
||||
|
||||
/**
|
||||
* Contains the line end string
|
||||
*
|
||||
* @var string
|
||||
* @since 11.1
|
||||
*/
|
||||
public $_lineEnd = "\12";
|
||||
|
||||
/**
|
||||
* Contains the character encoding string
|
||||
*
|
||||
* @var string
|
||||
* @since 11.1
|
||||
*/
|
||||
public $_charset = 'utf-8';
|
||||
|
||||
/**
|
||||
* Document mime type
|
||||
*
|
||||
* @var string
|
||||
* @since 11.1
|
||||
*/
|
||||
public $_mime = '';
|
||||
|
||||
/**
|
||||
* Document namespace
|
||||
*
|
||||
* @var string
|
||||
* @since 11.1
|
||||
*/
|
||||
public $_namespace = '';
|
||||
|
||||
/**
|
||||
* Document profile
|
||||
*
|
||||
* @var string
|
||||
* @since 11.1
|
||||
*/
|
||||
public $_profile = '';
|
||||
|
||||
/**
|
||||
* Array of linked scripts
|
||||
*
|
||||
* @var array
|
||||
* @since 11.1
|
||||
*/
|
||||
public $_scripts = array();
|
||||
|
||||
/**
|
||||
* Array of scripts placed in the header
|
||||
*
|
||||
* @var array
|
||||
* @since 11.1
|
||||
*/
|
||||
public $_script = array();
|
||||
|
||||
/**
|
||||
* Array of linked style sheets
|
||||
*
|
||||
* @var array
|
||||
* @since 11.1
|
||||
*/
|
||||
public $_styleSheets = array();
|
||||
|
||||
/**
|
||||
* Array of included style declarations
|
||||
*
|
||||
* @var array
|
||||
* @since 11.1
|
||||
*/
|
||||
public $_style = array();
|
||||
|
||||
/**
|
||||
* Array of meta tags
|
||||
*
|
||||
* @var array
|
||||
* @since 11.1
|
||||
*/
|
||||
public $_metaTags = array();
|
||||
|
||||
/**
|
||||
* The rendering engine
|
||||
*
|
||||
* @var object
|
||||
* @since 11.1
|
||||
*/
|
||||
public $_engine = null;
|
||||
|
||||
/**
|
||||
* The document type
|
||||
*
|
||||
* @var string
|
||||
* @since 11.1
|
||||
*/
|
||||
public $_type = null;
|
||||
|
||||
/**
|
||||
* Array of buffered output
|
||||
*
|
||||
* @var mixed (depends on the renderer)
|
||||
* @since 11.1
|
||||
*/
|
||||
public static $_buffer = null;
|
||||
|
||||
/**
|
||||
* @var array JDocument instances container.
|
||||
* @since 11.3
|
||||
*/
|
||||
protected static $instances = array();
|
||||
|
||||
/**
|
||||
* Class constructor.
|
||||
*
|
||||
* @param array $options Associative array of options
|
||||
*
|
||||
* @since 11.1
|
||||
*/
|
||||
public function __construct($options = array())
|
||||
{
|
||||
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 the global JDocument object, only creating it
|
||||
* if it doesn't already exist.
|
||||
*
|
||||
* @param string $type The document type to instantiate
|
||||
* @param array $attributes Array of attributes
|
||||
*
|
||||
* @return object The document object.
|
||||
*
|
||||
* @since 11.1
|
||||
* @throws RuntimeException
|
||||
*/
|
||||
public static function getInstance($type = 'html', $attributes = array())
|
||||
{
|
||||
$signature = serialize(array($type, $attributes));
|
||||
|
||||
if (empty(self::$instances[$signature]))
|
||||
{
|
||||
$type = preg_replace('/[^A-Z0-9_\.-]/i', '', $type);
|
||||
$path = __DIR__ . '/' . $type . '/' . $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 = __DIR__ . '/' . $type . '/' . $type . '.php';
|
||||
if (file_exists($path))
|
||||
{
|
||||
require_once $path;
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new RuntimeException('Invalid JDocument Class', 500);
|
||||
}
|
||||
}
|
||||
|
||||
$instance = new $class($attributes);
|
||||
self::$instances[$signature] = $instance;
|
||||
|
||||
if (!is_null($ntype))
|
||||
{
|
||||
// Set the type to the Document type originally requested
|
||||
$instance->setType($ntype);
|
||||
}
|
||||
}
|
||||
|
||||
return self::$instances[$signature];
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the document type
|
||||
*
|
||||
* @param string $type Type document is to set to
|
||||
*
|
||||
* @return JDocument instance of $this to allow chaining
|
||||
*
|
||||
* @since 11.1
|
||||
*/
|
||||
public function setType($type)
|
||||
{
|
||||
$this->_type = $type;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the document type
|
||||
*
|
||||
* @return string
|
||||
*
|
||||
* @since 11.1
|
||||
*/
|
||||
public function getType()
|
||||
{
|
||||
return $this->_type;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the contents of the document buffer
|
||||
*
|
||||
* @return The contents of the document buffer
|
||||
*
|
||||
* @since 11.1
|
||||
*/
|
||||
public function getBuffer()
|
||||
{
|
||||
return self::$_buffer;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the contents of the document buffer
|
||||
*
|
||||
* @param string $content The content to be set in the buffer.
|
||||
* @param array $options Array of optional elements.
|
||||
*
|
||||
* @return JDocument instance of $this to allow chaining
|
||||
*
|
||||
* @since 11.1
|
||||
*/
|
||||
public function setBuffer($content, $options = array())
|
||||
{
|
||||
self::$_buffer = $content;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a meta tag.
|
||||
*
|
||||
* @param string $name Value of name or http-equiv tag
|
||||
* @param boolean $httpEquiv META type "http-equiv" defaults to null
|
||||
*
|
||||
* @return string
|
||||
*
|
||||
* @since 11.1
|
||||
*/
|
||||
public function getMetaData($name, $httpEquiv = false)
|
||||
{
|
||||
$name = strtolower($name);
|
||||
if ($name == 'generator')
|
||||
{
|
||||
$result = $this->getGenerator();
|
||||
}
|
||||
elseif ($name == 'description')
|
||||
{
|
||||
$result = $this->getDescription();
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($httpEquiv == 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 boolean $http_equiv META type "http-equiv" defaults to null
|
||||
*
|
||||
* @return JDocument instance of $this to allow chaining
|
||||
*
|
||||
* @since 11.1
|
||||
*/
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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'
|
||||
* @param boolean $defer Adds the defer attribute.
|
||||
* @param boolean $async Adds the async attribute.
|
||||
*
|
||||
* @return JDocument instance of $this to allow chaining
|
||||
*
|
||||
* @since 11.1
|
||||
*/
|
||||
public function addScript($url, $type = "text/javascript", $defer = false, $async = false)
|
||||
{
|
||||
$this->_scripts[$url]['mime'] = $type;
|
||||
$this->_scripts[$url]['defer'] = $defer;
|
||||
$this->_scripts[$url]['async'] = $async;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a script to the page
|
||||
*
|
||||
* @param string $content Script
|
||||
* @param string $type Scripting mime (defaults to 'text/javascript')
|
||||
*
|
||||
* @return JDocument instance of $this to allow chaining
|
||||
*
|
||||
* @since 11.1
|
||||
*/
|
||||
public 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;
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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
|
||||
* @param array $attribs Array of attributes
|
||||
*
|
||||
* @return JDocument instance of $this to allow chaining
|
||||
*
|
||||
* @since 11.1
|
||||
*/
|
||||
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;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a stylesheet declaration to the page
|
||||
*
|
||||
* @param string $content Style declarations
|
||||
* @param string $type Type of stylesheet (defaults to 'text/css')
|
||||
*
|
||||
* @return JDocument instance of $this to allow chaining
|
||||
*
|
||||
* @since 11.1
|
||||
*/
|
||||
public 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;
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the document charset
|
||||
*
|
||||
* @param string $type Charset encoding string
|
||||
*
|
||||
* @return JDocument instance of $this to allow chaining
|
||||
*
|
||||
* @since 11.1
|
||||
*/
|
||||
public function setCharset($type = 'utf-8')
|
||||
{
|
||||
$this->_charset = $type;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the document charset encoding.
|
||||
*
|
||||
* @return string
|
||||
*
|
||||
* @since 11.1
|
||||
*/
|
||||
public function getCharset()
|
||||
{
|
||||
return $this->_charset;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the global document language declaration. Default is English (en-gb).
|
||||
*
|
||||
* @param string $lang The language to be set
|
||||
*
|
||||
* @return JDocument instance of $this to allow chaining
|
||||
*
|
||||
* @since 11.1
|
||||
*/
|
||||
public function setLanguage($lang = "en-gb")
|
||||
{
|
||||
$this->language = strtolower($lang);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the document language.
|
||||
*
|
||||
* @return string
|
||||
*
|
||||
* @since 11.1
|
||||
*/
|
||||
public function getLanguage()
|
||||
{
|
||||
return $this->language;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the global document direction declaration. Default is left-to-right (ltr).
|
||||
*
|
||||
* @param string $dir The language direction to be set
|
||||
*
|
||||
* @return JDocument instance of $this to allow chaining
|
||||
*
|
||||
* @since 11.1
|
||||
*/
|
||||
public function setDirection($dir = "ltr")
|
||||
{
|
||||
$this->direction = strtolower($dir);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the document direction declaration.
|
||||
*
|
||||
* @return string
|
||||
*
|
||||
* @since 11.1
|
||||
*/
|
||||
public function getDirection()
|
||||
{
|
||||
return $this->direction;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the title of the document
|
||||
*
|
||||
* @param string $title The title to be set
|
||||
*
|
||||
* @return JDocument instance of $this to allow chaining
|
||||
*
|
||||
* @since 11.1
|
||||
*/
|
||||
public function setTitle($title)
|
||||
{
|
||||
$this->title = $title;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the title of the document.
|
||||
*
|
||||
* @return string
|
||||
*
|
||||
* @since 11.1
|
||||
*/
|
||||
public function getTitle()
|
||||
{
|
||||
return $this->title;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the base URI of the document
|
||||
*
|
||||
* @param string $base The base URI to be set
|
||||
*
|
||||
* @return JDocument instance of $this to allow chaining
|
||||
*
|
||||
* @since 11.1
|
||||
*/
|
||||
public function setBase($base)
|
||||
{
|
||||
$this->base = $base;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the base URI of the document.
|
||||
*
|
||||
* @return string
|
||||
*
|
||||
* @since 11.1
|
||||
*/
|
||||
public function getBase()
|
||||
{
|
||||
return $this->base;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the description of the document
|
||||
*
|
||||
* @param string $description The description to set
|
||||
*
|
||||
* @return JDocument instance of $this to allow chaining
|
||||
*
|
||||
* @since 11.1
|
||||
*/
|
||||
public function setDescription($description)
|
||||
{
|
||||
$this->description = $description;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the title of the page.
|
||||
*
|
||||
* @return string
|
||||
*
|
||||
* @since 11.1
|
||||
*/
|
||||
public function getDescription()
|
||||
{
|
||||
return $this->description;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the document link
|
||||
*
|
||||
* @param string $url A url
|
||||
*
|
||||
* @return JDocument instance of $this to allow chaining
|
||||
*
|
||||
* @since 11.1
|
||||
*/
|
||||
public function setLink($url)
|
||||
{
|
||||
$this->link = $url;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the document base url
|
||||
*
|
||||
* @return string
|
||||
*
|
||||
* @since 11.1
|
||||
*/
|
||||
public function getLink()
|
||||
{
|
||||
return $this->link;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the document generator
|
||||
*
|
||||
* @param string $generator The generator to be set
|
||||
*
|
||||
* @return JDocument instance of $this to allow chaining
|
||||
*
|
||||
* @since 11.1
|
||||
*/
|
||||
public function setGenerator($generator)
|
||||
{
|
||||
$this->_generator = $generator;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the document generator
|
||||
*
|
||||
* @return string
|
||||
*
|
||||
* @since 11.1
|
||||
*/
|
||||
public function getGenerator()
|
||||
{
|
||||
return $this->_generator;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the document modified date
|
||||
*
|
||||
* @param string $date The date to be set
|
||||
*
|
||||
* @return JDocument instance of $this to allow chaining
|
||||
*
|
||||
* @since 11.1
|
||||
*/
|
||||
public function setModifiedDate($date)
|
||||
{
|
||||
$this->_mdate = $date;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the document modified date
|
||||
*
|
||||
* @return string
|
||||
*
|
||||
* @since 11.1
|
||||
*/
|
||||
public function getModifiedDate()
|
||||
{
|
||||
return $this->_mdate;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the document MIME encoding that is sent to the browser.
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* @param string $type The document type to be sent
|
||||
* @param boolean $sync Should the type be synced with HTML?
|
||||
*
|
||||
* @return JDocument instance of $this to allow chaining
|
||||
*
|
||||
* @since 11.1
|
||||
*
|
||||
* @link http://www.w3.org/TR/xhtml-media-types
|
||||
*/
|
||||
public function setMimeEncoding($type = 'text/html', $sync = true)
|
||||
{
|
||||
$this->_mime = strtolower($type);
|
||||
|
||||
// Syncing with meta-data
|
||||
if ($sync)
|
||||
{
|
||||
$this->setMetaData('content-type', $type . '; charset=' . $this->_charset, true);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the document MIME encoding that is sent to the browser.
|
||||
*
|
||||
* @return string
|
||||
*
|
||||
* @since 11.1
|
||||
*/
|
||||
public function getMimeEncoding()
|
||||
{
|
||||
return $this->_mime;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the line end style to Windows, Mac, Unix or a custom string.
|
||||
*
|
||||
* @param string $style "win", "mac", "unix" or custom string.
|
||||
*
|
||||
* @return JDocument instance of $this to allow chaining
|
||||
*
|
||||
* @since 11.1
|
||||
*/
|
||||
public 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;
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the lineEnd
|
||||
*
|
||||
* @return string
|
||||
*
|
||||
* @since 11.1
|
||||
*/
|
||||
public function _getLineEnd()
|
||||
{
|
||||
return $this->_lineEnd;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the string used to indent HTML
|
||||
*
|
||||
* @param string $string String used to indent ("\11", "\t", ' ', etc.).
|
||||
*
|
||||
* @return JDocument instance of $this to allow chaining
|
||||
*
|
||||
* @since 11.1
|
||||
*/
|
||||
public function setTab($string)
|
||||
{
|
||||
$this->_tab = $string;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a string containing the unit for indenting HTML
|
||||
*
|
||||
* @return string
|
||||
*
|
||||
* @since 11.1
|
||||
*/
|
||||
public function _getTab()
|
||||
{
|
||||
return $this->_tab;
|
||||
}
|
||||
|
||||
/**
|
||||
* Load a renderer
|
||||
*
|
||||
* @param string $type The renderer type
|
||||
*
|
||||
* @return JDocumentRenderer Object or null if class does not exist
|
||||
*
|
||||
* @since 11.1
|
||||
* @throws RuntimeException
|
||||
*/
|
||||
public function loadRenderer($type)
|
||||
{
|
||||
$class = 'JDocumentRenderer' . $type;
|
||||
|
||||
if (!class_exists($class))
|
||||
{
|
||||
$path = __DIR__ . '/' . $this->_type . '/renderer/' . $type . '.php';
|
||||
|
||||
if (file_exists($path))
|
||||
{
|
||||
require_once $path;
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new RuntimeException('Unable to load renderer class', 500);
|
||||
}
|
||||
}
|
||||
|
||||
if (!class_exists($class))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
$instance = new $class($this);
|
||||
|
||||
return $instance;
|
||||
}
|
||||
|
||||
/**
|
||||
* Parses the document and prepares the buffers
|
||||
*
|
||||
* @param array $params The array of parameters
|
||||
*
|
||||
* @return JDocument instance of $this to allow chaining
|
||||
*
|
||||
* @since 11.1
|
||||
*/
|
||||
public function parse($params = array())
|
||||
{
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Outputs the document
|
||||
*
|
||||
* @param boolean $cache If true, cache the output
|
||||
* @param array $params Associative array of attributes
|
||||
*
|
||||
* @return The rendered data
|
||||
*
|
||||
* @since 11.1
|
||||
*/
|
||||
public function render($cache = false, $params = array())
|
||||
{
|
||||
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 . ($this->_charset ? '; charset=' . $this->_charset : ''));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user