29
0
mirror of https://github.com/joomla/joomla-cms.git synced 2024-05-29 08:21:38 +00:00
cms/libraries/src/Document/XmlDocument.php
George Wilson 032ea5d32d Joomla! 3.9.14
-----BEGIN PGP SIGNATURE-----
 
 iQHIBAABCgAyFiEEc8tLlhrb4aveTfJiRzuTXEnqGwgFAl34mZsUHGxlaXRobmVy
 QGl0cm9uaWMuYXQACgkQRzuTXEnqGwhOYAv+PgzapMJWw6Hic32RIfVrgQtbl4ac
 gybmYhBLFeSd4qrc1Ya8+Fsx79U1RR1elkrZGB1Rm5/vGvHqgFI9JzmpbK8wGTWF
 yU46g9rDM++2M08qQQxg8a2vx9VoN5yvccPi7oKEpU4gzRcEsPr9ih406dtPlSBZ
 w38jmD8J/DF0TcOuWS0dZjEF8NtbxGFGS6x9Wc4ZyYoPvfsqpjYXKnc70ExifSgc
 373B+vCkyhvHaW+aA4nZ50WuZHd3Rasf4VNB8JVz8hXMnnJf2zwthWaJtWiwjLeS
 u6x59xbsibQqZImlqdooSbIKROY3ZjVgNPCrYk4Iolm6MD8khIm4rvOmGP1Nrrr8
 fZrBuN42ynv5tLutuSwSJSPXvX+RGjgPSeLSGM8FXujtCoxNJrbP3qo7EdkIofAD
 BPwwRDUiorRFwT4JfMqyBHSrM4BUqOlFN+9wi7oVM/405LfmTx3K0zfh2YCPvRXt
 IybdpfYAld7RQb6KWONf42Q/+mEVE5/wJhRe
 =KyXf
 -----END PGP SIGNATURE-----

Merge tag '3.9.14' into 4.0-dev

Joomla! 3.9.14
2020-03-04 18:50:06 +00:00

133 lines
2.5 KiB
PHP

<?php
/**
* Joomla! Content Management System
*
* @copyright Copyright (C) 2005 - 2019 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
namespace Joomla\CMS\Document;
\defined('JPATH_PLATFORM') or die;
use Joomla\CMS\Factory as CmsFactory;
/**
* XmlDocument class, provides an easy interface to parse and display XML output
*
* @since 1.7.0
*/
class XmlDocument extends Document
{
/**
* Document name
*
* @var string
* @since 3.0.0
*/
protected $name = 'joomla';
/**
* Flag indicating the document should be downloaded (Content-Disposition = attachment) versus displayed inline
*
* @var boolean
* @since 3.9.0
*/
protected $isDownload = false;
/**
* Class constructor
*
* @param array $options Associative array of options
*
* @since 1.7.0
*/
public function __construct($options = array())
{
parent::__construct($options);
// Set mime type
$this->_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 string The rendered data
*
* @since 1.7.0
*/
public function render($cache = false, $params = array())
{
parent::render($cache, $params);
$disposition = $this->isDownload ? 'attachment' : 'inline';
CmsFactory::getApplication()->setHeader('Content-disposition', $disposition . '; filename="' . $this->getName() . '.xml"', true);
return $this->getBuffer();
}
/**
* Returns the document name
*
* @return string
*
* @since 1.7.0
*/
public function getName()
{
return $this->name;
}
/**
* Sets the document name
*
* @param string $name Document name
*
* @return XmlDocument instance of $this to allow chaining
*
* @since 1.7.0
*/
public function setName($name = 'joomla')
{
$this->name = $name;
return $this;
}
/**
* Check if this document is intended for download
*
* @return string
*
* @since 3.9.0
*/
public function isDownload()
{
return $this->isDownload;
}
/**
* Sets the document's download state
*
* @param boolean $download If true, this document will be downloaded; if false, this document will be displayed inline
*
* @return XmlDocument instance of $this to allow chaining
*
* @since 3.9.0
*/
public function setDownload($download = false)
{
$this->isDownload = $download;
return $this;
}
}