Example #1
0
 protected function render(Response $response)
 {
     $xml = new XmlWriter();
     $xml->openMemory();
     $xml->startDocument('1.0', 'UTF-8');
     $response = clone $response;
     foreach ($response->data as $key => $value) {
         if ($value instanceof ModelSet) {
             $response->data[$key] = $value->toArray();
         }
         if ($value instanceof Form) {
             unset($response->data[$key]);
         }
         if (substr($key, 0, 1) == '_') {
             unset($response->data[$key]);
         }
     }
     if (isset($response->data['application'])) {
         unset($response->data['application']);
     }
     if (isset($response->data['controller'])) {
         unset($response->data['controller']);
     }
     foreach ($response->data as $key => $value) {
         $xml->startElement($key);
         $this->createXML($xml, $value);
         $xml->endElement();
     }
     echo $xml->outputMemory(true);
 }
Example #2
0
 public function encode(array $data)
 {
     $xml = new XmlWriter();
     $xml->openMemory();
     $xml->startDocument('1.0', 'UTF-8');
     $xml->startElement('api_answer');
     $this->write($xml, $data);
     $xml->endElement();
     return $xml->outputMemory(true);
 }
Example #3
0
 public function serializeData(DataContainer $data)
 {
     $xml = new \XmlWriter();
     $xml->openMemory();
     $xml->startDocument('1.0', 'UTF-8');
     $xml->startElement('root');
     $this->recursiveSerialize($xml, $data);
     $xml->endElement();
     $xml->endDocument();
     return $xml->outputMemory();
 }
Example #4
0
function criaXML($response)
{
    $xml = new XmlWriter();
    $xml->openMemory();
    $xml->startDocument('1.0', 'UTF-8');
    $xml->startElement('bvs');
    write($xml, $response);
    $xml->endElement();
    header("Content-Type:text/xml");
    echo $xml->outputMemory(true);
    die;
}
 public function toXml(XmlWriter $x)
 {
     $x->startElement('template');
     $x->text($this->_template);
     $x->endElement();
     $x->startElement('params');
     foreach ($this->getVars() as $k => $v) {
         $x->startElement('param');
         $x->writeAttribute('name', $k);
         $x->text($v);
         $x->endElement();
     }
     $x->endElement();
 }
Example #6
0
 /**
  * Converts a PHP array to XML (via XMLWriter)
  *
  * @param $array PHP Array
  * @return xml-string
  */
 public static function arrayToXml($array)
 {
     // initalize new XML Writer in memory
     $xml = new \XmlWriter();
     $xml->openMemory();
     // with <root> element as top level node
     $xml->startDocument('1.0', 'UTF-8');
     $xml->startElement('root');
     // add the $array data in between
     $this->writeArray($xml, $array);
     // close with </root>
     $xml->endElement();
     // dump memory
     return $xml->outputMemory(true);
 }
Example #7
0
 function outputXml($results, $xsltPath)
 {
     /* Setting XML header */
     @header("content-type: text/xml; charset=UTF-8");
     /* Initializing the XML Object */
     $xml = new XmlWriter();
     $xml->openMemory();
     $xml->setIndent(true);
     $xml->setIndentString('    ');
     $xml->startDocument('1.0', 'UTF-8');
     if (isset($xsltPath)) {
         $xml->WritePi('xml-stylesheet', 'type="text/xsl" href="' . $xsltPath . '"');
     }
     $xml->startElement('callback');
     $xml->writeAttribute('xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance');
     $xml->writeAttribute('xsi:noNamespaceSchemaLocation', 'schema.xsd');
     /* Function that converts each array element to an XML node */
     function write(XMLWriter $xml, $data)
     {
         foreach ($data as $key => $value) {
             if (is_array($value)) {
                 if (is_numeric($key)) {
                     #The only time a numeric key would be used is if it labels an array with non-uniqe keys
                     write($xml, $value);
                     continue;
                 } else {
                     $xml->startElement($key);
                     write($xml, $value);
                     $xml->endElement();
                     continue;
                 }
             }
             $xml->writeElement($key, $value);
         }
     }
     /* Calls previously declared function, passing our results array as parameter */
     write($xml, $results);
     /* Closing last XML node */
     $xml->endElement();
     /* Printing the XML */
     echo $xml->outputMemory(true);
 }
 /**
  * Build an XML Data Set
  *
  * @param array $data Associative Array containing values to be parsed into an XML Data Set(s)
  * @param string $startElement Root Opening Tag, default data
  * @return string XML String containig values
  * @return mixed Boolean false on failure, string XML result on success
  */
 public function buildXML($data, $startElement = 'xml')
 {
     if (!is_array($data)) {
         $err = 'Invalid variable type supplied, expected array not found on line ' . __LINE__ . " in Class: " . __CLASS__ . " Method: " . __METHOD__;
         trigger_error($err);
         //if($this->_debug) echo $err;
         return false;
         //return false error occurred
     }
     $xml = new XmlWriter();
     $xml->openMemory();
     // $xml->startDocument($this->version, $this->encoding);
     // $xml->startDocument();
     // $xml->startElement($startElement);
     $this->writeEl($xml, $data);
     $xml->endElement();
     //write end element
     //returns the XML results
     return $xml->outputMemory(true);
 }
Example #9
0
 /**
  * Write XML data
  *
  * @param XMLWriter $xml   XML object
  * @param string    $key   Data label
  * @param mixed     $value Data
  */
 protected function _writeXmlElem(XmlWriter $xml, $key, $value)
 {
     // Manage objects as array
     if (is_object($value)) {
         $value = get_object_vars($value);
     }
     // Solve tag names issue
     if (is_numeric($key)) {
         $key = 'item' . ucfirst($key);
     }
     // Write XML file
     if (is_array($value)) {
         $xml->startElement($key);
         foreach ($value as $k => $v) {
             $this->_writeXmlElem(&$xml, $k, $v);
         }
         $xml->endElement();
     } else {
         $xml->writeElement($key, $value);
     }
 }
Example #10
0
 public static function encode(array $data, $rootNodeName = 'response')
 {
     $xml = new XmlWriter();
     $xml->openMemory();
     $xml->startDocument('1.0', 'UTF-8');
     $xml->startElement($rootNodeName);
     $data = self::arrayify($data);
     function write(XMLWriter $xml, $data)
     {
         foreach ($data as $_key => $value) {
             // check the key isnt a number, (numeric keys invalid in XML)
             if (is_numeric($_key)) {
                 $key = 'element';
             } else {
                 if (!is_string($_key) || empty($_key) || strncmp($_key, '_', 1) === 0) {
                     continue;
                 } else {
                     $key = $_key;
                 }
             }
             $xml->startElement($key);
             // if the key is numeric, add an ID attribute to make tags properly unique
             if (is_numeric($_key)) {
                 $xml->writeAttribute('id', $_key);
             }
             // if the value is an array recurse into it
             if (is_array($value)) {
                 write($xml, $value);
             } else {
                 $xml->text($value);
             }
             $xml->endElement();
         }
     }
     // start the writing process
     write($xml, $data);
     $xml->endElement();
     return $xml->outputMemory();
 }
Example #11
0
 /**
  * writeObject will write the RSS representation of Object.
  *
  * @param object $object
  *
  * @throws \LogicException if no writer can handle $object or if $object is not an object
  */
 public function writeObject($object)
 {
     if (!is_object($object)) {
         throw new \LogicException(sprintf('%s::%s expects an object. %s given.', __CLASS_, __METHOD__, gettype($object)));
     }
     $fqcn = get_class($object);
     if (!isset($this->writers[$fqcn])) {
         throw new \LogicException(sprintf('No writer found for class %s', $fqcn));
     }
     call_user_func($this->writers[$fqcn], $this, $object);
     if ($this->flushEarly) {
         $this->xmlWriter->flush();
     }
 }
Example #12
0
 public static function output_xml($data, $version = '0.1', $root = 'root', $parameters = array(), $sItemName = 'item')
 {
     $xml = new XmlWriter();
     $xml->openMemory();
     $xml->startDocument('1.0', 'UTF-8');
     $xml->startElement($root);
     $xml->setIndent(true);
     if (!empty($version)) {
         $xml->writeAttribute('version', $version);
     }
     foreach ($parameters as $paramk => $paramv) {
         $xml->writeAttribute($paramk, $paramv);
     }
     self::writexml($xml, $data, $sItemName);
     $xml->endElement();
     return $xml->outputMemory(true);
 }
Example #13
0
 private function initialise()
 {
     /* Setting XML header */
     @header("content-type: application/vnd.google-earth.kml+xml; charset=UTF-8");
     /* Initializing the XML Object */
     $xml = new XmlWriter();
     $xml->openMemory();
     $xml->setIndent(true);
     $xml->setIndentString('    ');
     $xml->startDocument('1.0', 'UTF-8');
     return $xml;
 }
Example #14
0
function getXml($results)
{
    $xml = new XmlWriter();
    $xml->openMemory();
    $xml->setIndent(true);
    // new
    $xml->setIndentString("    ");
    // new
    $xml->startDocument('1.0', 'UTF-8');
    $xml->startElement('root');
    write($xml, $results);
    $xml->endElement();
    $xml->endDocument();
    // new
    $data = $xml->outputMemory(true);
    //$file = file_put_contents(APPPATH . '../uploads/data.xml', $data);
    return $data;
}
 function exportJournal()
 {
     $writer = new XmlWriter();
     $writer->openURI($this->outputFolder . "/journal.xml");
     $writer->startDocument('1.0', 'utf-8');
     $writer->startElement('journal');
     $writer->setIndent(true);
     $this->exportJournalConfig($writer);
     $this->exportAnnouncements($writer);
     $this->exportReviewForms($writer);
     $this->exportUsers($writer);
     $this->exportGroups($writer);
     $this->exportSections($writer);
     $this->exportIssues($writer);
     $this->exportArticles($writer);
     $writer->endElement();
     $writer->flush();
     return $this->outputFolder . "/journal.xml";
 }
Example #16
0
 public function render($response, $viewModel)
 {
     $xml = new XmlWriter();
     $xml->openMemory();
     $xml->startDocument('1.0', 'UTF-8');
     $xml->setIndent(true);
     $data = $viewModel->toArray();
     $rootNode = $viewModel->getRootNodeName();
     if (!$rootNode) {
         $rootNode = key($data);
         $data = $data[$rootNode];
     }
     if (is_array($data)) {
         $xml->startElement($rootNode);
         $this->write($xml, $data);
         $xml->endElement();
     } else {
         $xml->writeElement($rootNode, utf8_encode($data));
     }
     $response->headers->set('Content-Type', 'application/xml;charset=utf-8');
     $response->setContent($xml->outputMemory(true));
 }
Example #17
0
/**
 * Construct the whole DCAT-AP document given an array of dump info
 *
 * @param array $data data-blob of i18n and config variables
 * @return string: xmldata
 */
function outputXml(array $data)
{
    // Initializing the XML Object
    $xml = new XmlWriter();
    $xml->openMemory();
    $xml->setIndent(true);
    $xml->setIndentString('    ');
    // set namespaces
    $xml->startDocument('1.0', 'UTF-8');
    $xml->startElementNS('rdf', 'RDF', null);
    $xml->writeAttributeNS('xmlns', 'rdf', null, 'http://www.w3.org/1999/02/22-rdf-syntax-ns#');
    $xml->writeAttributeNS('xmlns', 'dcterms', null, 'http://purl.org/dc/terms/');
    $xml->writeAttributeNS('xmlns', 'dcat', null, 'http://www.w3.org/ns/dcat#');
    $xml->writeAttributeNS('xmlns', 'foaf', null, 'http://xmlns.com/foaf/0.1/');
    $xml->writeAttributeNS('xmlns', 'adms', null, 'http://www.w3.org/ns/adms#');
    $xml->writeAttributeNS('xmlns', 'vcard', null, 'http://www.w3.org/2006/vcard/ns#');
    // Calls previously declared functions to construct xml
    writePublisher($xml, $data);
    writeContactPoint($xml, $data);
    $dataset = array();
    // Live dataset and distributions
    $liveDistribs = writeDistribution($xml, $data, 'ld', null);
    if ($data['config']['api-enabled']) {
        $liveDistribs = array_merge($liveDistribs, writeDistribution($xml, $data, 'api', null));
    }
    array_push($dataset, writeDataset($xml, $data, null, $liveDistribs));
    // Dump dataset and distributions
    if ($data['config']['dumps-enabled']) {
        foreach ($data['dumps'] as $key => $value) {
            $distIds = writeDistribution($xml, $data, 'dump', $key);
            array_push($dataset, writeDataset($xml, $data, $key, $distIds));
        }
    }
    writeCatalog($xml, $data, $dataset);
    // Closing last XML node
    $xml->endElement();
    // Printing the XML
    return $xml->outputMemory(true);
}
Example #18
0
 public function html($mysqli_stmt)
 {
     $xml = new XmlWriter();
     $xml->openMemory();
     $xml->setIndent(true);
     $xml->setIndentString("\t");
     $xml->startElement('table');
     $xml->writeAttribute('class', $this->tbl_class);
     $xml->startElement('thead');
     $xml->startElement('tr');
     //////////////////////////////////
     // Column Headers
     /////////////////////////////////
     $cntcol = count($this->col_classes);
     $altcol = 0;
     foreach (array_keys($this->cols) as $th) {
         $xml->startElement('th');
         $xml->writeAttribute('scope', 'col');
         if ($this->col_classes[$altcol] != "") {
             $xml->writeAttribute('class', $this->col_classes[$altcol]);
         }
         $altcol = ++$altcol % $cntcol;
         if (substr($th, 0, 2) == "__") {
             $xml->text('');
         } else {
             //Sorting
             $dir = "A";
             if (isset($_GET["sn"]) && $_GET["sn"] == $th && $_GET["sd"] == "A") {
                 $dir = "D";
             }
             $xml->startElement('a');
             $xml->startAttribute('href');
             $xml->writeRaw(quickgrid::get_href(["sn" => $th, "sd" => $dir, "p" => 1]));
             $xml->endAttribute();
             $xml->text($th);
             $xml->endElement();
             //a
         }
         $xml->endElement();
         //th
     }
     $xml->endElement();
     //tr
     $xml->endElement();
     //thead
     $xml->startElement('tfoot');
     $xml->startElement('tr');
     $xml->startElement('td');
     $xml->writeAttribute('colspan', count($this->cols));
     //////////////////////////////////
     // Pager
     /////////////////////////////////
     $last = ceil($this->row_count / $this->per_page);
     $length = 8;
     $lbound = $this->cur_page - $length / 2;
     $ubound = $this->cur_page + $length / 2;
     if ($lbound < 1) {
         $lbound = 1;
     }
     if ($ubound > $last) {
         $ubound = $last;
     }
     if ($this->cur_page != 1) {
         $xml->startElement('a');
         $xml->startAttribute('href');
         $xml->writeRaw(quickgrid::get_href(["p" => $this->cur_page - 1]));
         $xml->endAttribute();
         $xml->text("<");
         $xml->endElement();
         //a
     }
     for ($i = $lbound; $i <= $ubound; $i++) {
         if ($i != $this->cur_page) {
             $xml->startElement('a');
             $xml->startAttribute('href');
             $xml->writeRaw(quickgrid::get_href(["p" => $i]));
             $xml->endAttribute();
             $xml->text("{$i}");
             $xml->endElement();
             //a
         } else {
             $xml->startElement('span');
             $xml->text("{$i}");
             $xml->endElement();
             //span
         }
     }
     if ($this->cur_page != $last) {
         $xml->startElement('a');
         $xml->startAttribute('href');
         $xml->writeRaw(quickgrid::get_href(["p" => $this->cur_page + 1]));
         $xml->endAttribute();
         $xml->text(">");
         $xml->endElement();
         //a
     }
     $xml->endElement();
     //td
     $xml->endElement();
     //tr
     $xml->endElement();
     //tfoot
     $xml->startElement('tbody');
     //////////////////////////////////
     // Table Data
     /////////////////////////////////
     $cntrow = count($this->row_classes);
     $altrow = 0;
     $cntcol = count($this->col_classes);
     $altcol = 0;
     $result = $mysqli_stmt->get_result();
     while ($row = $result->fetch_assoc()) {
         $xml->startElement('tr');
         if ($this->row_classes[$altrow] != "") {
             $xml->writeAttribute('class', $this->row_classes[$altrow]);
         }
         $altrow = ++$altrow % $cntrow;
         foreach (array_keys($this->cols) as $th) {
             $xml->startElement('td');
             if ($this->col_classes[$altcol] != "") {
                 $xml->writeAttribute('class', $this->col_classes[$altcol]);
             }
             $altcol = ++$altcol % $cntcol;
             if (isset($this->td_formats[$th]) && is_callable($this->td_formats[$th])) {
                 $tmp = $this->td_formats[$th];
                 $xml->writeRaw(call_user_func($tmp, $row));
             } else {
                 $td = $this->cols[$th];
                 if (isset($row[$td])) {
                     $xml->text($row[$td]);
                 } else {
                     $xml->text('');
                 }
             }
             $xml->endElement();
             //td
         }
         $xml->endElement();
         //tr
     }
     $xml->endElement();
     //tbody
     $xml->endElement();
     //table
     return $xml->outputMemory();
 }
 /**
  * Function builds OpenPayU Xml Document
  * @access public
  * @param string $data
  * @param string $start_element
  * @param integer $request
  * @param string $xml_version
  * @param string $xml_encoding
  * @return string $xml
  */
 public static function buildOpenPayUDocument($data, $start_element, $request = 1, $xml_version = '1.0', $xml_encoding = 'UTF-8')
 {
     if (!is_array($data)) {
         return false;
     }
     $xml = new XmlWriter();
     $xml->openMemory();
     $xml->startDocument($xml_version, $xml_encoding);
     $xml->startElementNS(null, 'OpenPayU', 'http://www.openpayu.com/openpayu.xsd');
     $header = $request == 1 ? 'HeaderRequest' : 'HeaderResponse';
     $xml->startElement($header);
     $xml->writeElement('Algorithm', 'MD5');
     $xml->writeElement('SenderName', 'POSID=' . OpenPayUConfiguration::getMerchantPosid() . ';CUSTOM_PLUGIN=PRESTASHOP');
     $xml->writeElement('Version', $xml_version);
     $xml->endElement();
     // domain level - open
     $xml->startElement(OpenPayUDomain::getDomain4Message($start_element));
     // message level - open
     $xml->startElement($start_element);
     self::arr2xml($xml, $data);
     // message level - close
     $xml->endElement();
     // domain level - close
     $xml->endElement();
     // document level - close
     $xml->endElement();
     return $xml->outputMemory(true);
 }
Example #20
0
 /**
  * generic function to get incidents by given set of parameters
  */
 function _getIncidents($where = '', $limit = '')
 {
     $items = array();
     //will hold the items from the query
     $data = array();
     //items to parse to json
     $json_incidents = array();
     //incidents to parse to json
     $media_items = array();
     //incident media
     $json_incident_media = array();
     //incident media
     $retJsonOrXml = '';
     //will hold the json/xml string to return
     $replar = array();
     //assists in proper xml generation
     // Doing this manaully. It was wasting my time trying modularize it.
     // Will have to visit this again after a good rest. I mean a good rest.
     //XML elements
     $xml = new XmlWriter();
     $xml->openMemory();
     $xml->startDocument('1.0', 'UTF-8');
     $xml->startElement('response');
     $xml->startElement('payload');
     $xml->startElement('incidents');
     //find incidents
     $query = "SELECT i.id AS incidentid,i.incident_title AS incidenttitle," . "i.incident_description AS incidentdescription, i.incident_date AS " . "incidentdate, i.incident_mode AS incidentmode,i.incident_active AS " . "incidentactive, i.incident_verified AS incidentverified, l.id AS " . "locationid,l.location_name AS locationname,l.latitude AS " . "locationlatitude,l.longitude AS locationlongitude FROM incident AS i " . "INNER JOIN location as l on l.id = i.location_id " . "{$where} {$limit}";
     $items = $this->db->query($query);
     $i = 0;
     foreach ($items as $item) {
         if ($this->responseType == 'json') {
             $json_incident_media = array();
         }
         //build xml file
         $xml->startElement('incident');
         $xml->writeElement('id', $item->incidentid);
         $xml->writeElement('title', $item->incidenttitle);
         $xml->writeElement('description', $item->incidentdescription);
         $xml->writeElement('date', $item->incidentdate);
         $xml->writeElement('mode', $item->incidentmode);
         $xml->writeElement('active', $item->incidentactive);
         $xml->writeElement('verified', $item->incidentverified);
         $xml->startElement('location');
         $xml->writeElement('id', $item->locationid);
         $xml->writeElement('name', $item->locationname);
         $xml->writeElement('latitude', $item->locationlatitude);
         $xml->writeElement('longitude', $item->locationlongitude);
         $xml->endElement();
         $xml->startElement('categories');
         //fetch categories
         $query = " SELECT c.category_title AS categorytitle, c.id AS cid " . "FROM category AS c INNER JOIN incident_category AS ic ON " . "ic.category_id = c.id WHERE ic.incident_id =" . $item->incidentid . " LIMIT 0 , 20";
         $category_items = $this->db->query($query);
         foreach ($category_items as $category_item) {
             $xml->startElement('category');
             $xml->writeElement('id', $category_item->cid);
             $xml->writeElement('title', $category_item->categorytitle);
             $xml->endElement();
         }
         $xml->endElement();
         //end categories
         //fetch media associated with an incident
         $query = "SELECT m.id as mediaid, m.media_title AS mediatitle, " . "m.media_type AS mediatype, m.media_link AS medialink, " . "m.media_thumb AS mediathumb FROM media AS m " . "INNER JOIN incident AS i ON i.id = m.incident_id " . "WHERE i.id =" . $item->incidentid . "  LIMIT 0 , 20";
         $media_items = $this->db->query($query);
         if (count($media_items) > 0) {
             $xml->startElement('mediaItems');
             foreach ($media_items as $media_item) {
                 if ($this->responseType == 'json') {
                     $json_incident_media[] = $media_item;
                 } else {
                     $xml->startElement('media');
                     $xml->writeElement('id', $media_item->mediaid);
                     $xml->writeElement('title', $media_item->mediatitle);
                     $xml->writeElement('type', $media_item->mediatype);
                     $xml->writeElement('link', $media_item->medialink);
                     $xml->writeElement('thumb', $media_item->mediathumb);
                     $xml->endElement();
                 }
             }
             $xml->endElement();
             // media
         }
         $xml->endElement();
         // end incident
         //needs different treatment depending on the output
         if ($this->responseType == 'json') {
             $json_incidents[] = array("incident" => $item, "media" => $json_incident_media);
         }
     }
     //create the json array
     $data = array("payload" => array("incidents" => $json_incidents), "error" => $this->_getErrorMsg(0));
     if ($this->responseType == 'json') {
         $retJsonOrXml = $this->_arrayAsJSON($data);
         return $retJsonOrXml;
     } else {
         $xml->endElement();
         //end incidents
         $xml->endElement();
         // end payload
         $xml->startElement('error');
         $xml->writeElement('code', 0);
         $xml->writeElement('message', 'No Error');
         $xml->endElement();
         //end error
         $xml->endElement();
         // end response
         return $xml->outputMemory(true);
     }
     //return $retJsonOrXml;
 }
Example #21
0
 public function flush()
 {
     $this->cursor->endDocument();
     return $this->cursor->flush();
 }
Example #22
0
//	-->round(po)
//	-->result(ot,ps)
//	   -->g_h
//	   -->g_a
//	   -->p_h
//	   -->p_a
//	-->m_parts
//	   -->p1(h,a)
//	   -->p2(h,a)
//	-->odds
//	   -->bo(id)[]
//	      -->o1
//	      -->ox
//	      -->o2
//
$xml = new XmlWriter();
$xml->openMemory();
$xml->startDocument('1.0', 'UTF-8');
$xml->startElement('root');
function write(XMLWriter $xml, $data)
{
    foreach ($data as $key => $value) {
        if (is_array($value)) {
            $xml->startElement($key);
            write($xml, $value);
            $xml->endElement();
            continue;
        }
        $xml->writeElement($key, $value);
    }
}
Example #23
0
 public function outputSitemap(Kwf_Component_Data $page)
 {
     $xml = new XmlWriter();
     $xml->openMemory();
     $xml->startDocument('1.0', 'UTF-8');
     $xml->startElement('urlset');
     $xml->writeAttribute('xmlns', 'http://www.sitemaps.org/schemas/sitemap/0.9');
     foreach (array_unique($this->_getSitemap($page)) as $url) {
         $xml->startElement('url');
         $xml->writeElement('loc', $url);
         $xml->endElement();
     }
     $xml->endElement();
     $xml->endDocument();
     header('Content-Type: text/xml; charset=utf-8');
     echo $xml->outputMemory(true);
     exit;
 }
Example #24
0
 function toXml(XmlWriter $x, $writeEnvelope = true)
 {
     if ($writeEnvelope) {
         $x->startElement('http-request');
     }
     $x->startElement('method');
     $x->text($this->getMethod());
     $x->endElement();
     $x->startElement('url');
     $x->text($this->getUrl());
     $x->endElement();
     $x->startElement('headers');
     foreach ($this->getHeaders() as $k => $v) {
         $x->startElement('header');
         $x->writeAttribute('name', $k);
         $x->text($v);
         $x->endElement();
     }
     $x->endElement();
     $x->startElement('params');
     foreach ($this->getPostParams() as $k => $v) {
         $x->startElement('param');
         $x->writeAttribute('name', $k);
         $x->text($v);
         $x->endElement();
     }
     $x->endElement();
     if (!$this->getPostParams() && $this->getBody()) {
         $x->startElement('body');
         $x->writeCdata($this->getBody());
         $x->endElement();
     }
     if ($writeEnvelope) {
         $x->endElement();
     }
 }
Example #25
0
 public function show()
 {
     echo $this->writer->outputMemory();
 }
 /**
  * Generic function to get reports by given set of parameters
  *
  * @param string $where SQL where clause
  * @param int $limit No. of records to return - set to 20 by default
  * @return string XML or JSON string
  */
 public function _get_incidents($where = array())
 {
     // STEP 1.
     // Get the incidents
     $items = Incident_Model::get_incidents($where, $this->list_limit, $this->order_field, $this->sort);
     //No record found.
     if ($items->count() == 0) {
         return $this->response(4, $this->error_messages);
     }
     // Records found - proceed
     // Set the no. of records returned
     $this->record_count = $items->count();
     // Will hold the XML/JSON string to return
     $ret_json_or_xml = '';
     $json_reports = array();
     $json_report_media = array();
     $json_report_categories = array();
     $json_incident_media = array();
     $upload_path = str_replace("media/uploads/", "", Kohana::config('upload.relative_directory') . "/");
     //XML elements
     $xml = new XmlWriter();
     $xml->openMemory();
     $xml->startDocument('1.0', 'UTF-8');
     $xml->startElement('response');
     $xml->startElement('payload');
     $xml->writeElement('domain', $this->domain);
     $xml->startElement('incidents');
     // Records found, proceed
     // Store the incident ids
     $incidents_ids = array();
     foreach ($items as $item) {
         $incident_ids[] = $item->incident_id;
     }
     //
     // STEP 2.
     // Fetch the incident categories
     //
     $this->query = "SELECT c.category_title AS categorytitle, ic.incident_id, " . "c.id AS cid, c.category_image_thumb AS categorythumb, " . "d.decayimage_thumb  AS decayimagethumb " . "FROM " . $this->table_prefix . "category AS c " . "INNER JOIN " . $this->table_prefix . "incident_category AS ic ON ic.category_id = c.id " . "LEFT JOIN " . $this->table_prefix . "decayimage as d ON c.id = d.category_id " . "WHERE ic.incident_id IN (" . implode(',', $incident_ids) . ")";
     // Execute the query
     $incident_categories = $this->db->query($this->query);
     // To hold the incident category items
     $category_items = array();
     // Temporary counter
     $i = 1;
     // Fetch items into array
     foreach ($incident_categories as $incident_category) {
         $category_items[$incident_category->incident_id][$i]['cid'] = $incident_category->cid;
         $category_items[$incident_category->incident_id][$i]['categorytitle'] = $incident_category->categorytitle;
         $category_items[$incident_category->incident_id][$i]['categorythumb'] = $incident_category->categorythumb;
         $category_items[$incident_category->incident_id][$i]['decayimagethumb'] = $incident_category->decayimagethumb;
         $i++;
     }
     // Free temporary variables from memory
     unset($incident_categories);
     //
     // STEP 3.
     // Fetch the media associated with all the incidents
     //
     $this->query = "SELECT i.id AS incident_id, m.id AS mediaid, m.media_title AS mediatitle, " . "m.media_type AS mediatype, m.media_link AS medialink, m.media_thumb AS mediathumb " . "FROM " . $this->table_prefix . "media AS m " . "INNER JOIN " . $this->table_prefix . "incident AS i ON i.id = m.incident_id " . "WHERE i.id IN (" . implode(",", $incident_ids) . ")";
     $media_items_result = $this->db->query($this->query);
     // To store the fetched media items
     $media_items = array();
     // Reset the temporary counter
     $i = 1;
     // Fetch items into array
     foreach ($media_items_result as $media_item) {
         $media_items[$media_item->incident_id][$i]['mediaid'] = $media_item->mediaid;
         $media_items[$media_item->incident_id][$i]['mediatitle'] = $media_item->mediatitle;
         $media_items[$media_item->incident_id][$i]['mediatype'] = $media_item->mediatype;
         $media_items[$media_item->incident_id][$i]['medialink'] = $media_item->medialink;
         $media_items[$media_item->incident_id][$i]['mediathumb'] = $media_item->mediathumb;
         $i++;
     }
     // Free temporary variables
     unset($media_items_result, $i);
     //
     // STEP 4.
     // Fetch the comments associated with the incidents
     //
     if ($this->comments) {
         $this->query = "SELECT id, incident_id, comment_author, comment_email, " . "comment_description, comment_rating, comment_date " . "FROM " . $this->table_prefix . "comment AS c " . "WHERE c.incident_id IN (" . implode(',', $incident_ids) . ")";
         // Execute the query
         $incident_comments = $this->db->query($this->query);
         // To hold the incident category items
         $comment_items = array();
         // Temporary counter
         $i = 1;
         // Fetch items into array
         foreach ($incident_comments as $incident_comment) {
             $comment_items[$incident_comment->incident_id][$i]['id'] = $incident_comment->id;
             $comment_items[$incident_comment->incident_id][$i]['incident_id'] = $incident_comment->incident_id;
             $comment_items[$incident_comment->incident_id][$i]['comment_author'] = $incident_comment->comment_author;
             $comment_items[$incident_comment->incident_id][$i]['comment_email'] = $incident_comment->comment_email;
             $comment_items[$incident_comment->incident_id][$i]['comment_description'] = $incident_comment->comment_description;
             $comment_items[$incident_comment->incident_id][$i]['comment_rating'] = $incident_comment->comment_rating;
             $comment_items[$incident_comment->incident_id][$i]['comment_date'] = $incident_comment->comment_date;
             $i++;
         }
         // Free temporary variables from memory
         unset($incident_comments);
     }
     //
     // STEP 5.
     // Return XML
     //
     foreach ($items as $item) {
         // Build xml file
         $xml->startElement('incident');
         $xml->writeElement('id', $item->incident_id);
         $xml->writeElement('title', $item->incident_title);
         $xml->writeElement('description', $item->incident_description);
         $xml->writeElement('date', $item->incident_date);
         $xml->writeElement('mode', $item->incident_mode);
         $xml->writeElement('active', $item->incident_active);
         $xml->writeElement('verified', $item->incident_verified);
         $xml->startElement('location');
         $xml->writeElement('id', $item->location_id);
         $xml->writeElement('name', $item->location_name);
         $xml->writeElement('latitude', $item->latitude);
         $xml->writeElement('longitude', $item->longitude);
         $xml->endElement();
         $xml->startElement('categories');
         $json_report_categories[$item->incident_id] = array();
         // Check if the incident id exists
         if (isset($category_items[$item->incident_id])) {
             foreach ($category_items[$item->incident_id] as $category_item) {
                 if ($this->response_type == 'json') {
                     $category = array("id" => $category_item['cid'], "title" => $category_item['categorytitle']);
                     $category["icon"] = url::base() . Kohana::config('upload.relative_directory') . '/' . $category_item['categorythumb'];
                     if ($category_item['decayimagethumb']) {
                         if ($category_item['decayimagethumb'] == $this->default_decayimage_thumb) {
                             $category['decayimage'] = url::site() . '/plugins/decayimage/images/' . $category_item['decayimagethumb'];
                         } else {
                             $category['decayimage'] = url::base() . Kohana::config('upload.relative_directory') . '/' . $category_item['decayimagethumb'];
                         }
                     }
                     $json_report_categories[$item->incident_id][] = array("category" => $category);
                 } else {
                     $xml->startElement('category');
                     $xml->writeElement('id', $category_item['cid']);
                     $xml->writeElement('title', $category_item['categorytitle']);
                     $xml->endElement();
                 }
             }
         }
         // End categories
         $xml->endElement();
         $xml->startElement('comments');
         $json_report_comments[$item->incident_id] = array();
         // Check if the incident id exists
         if (isset($comment_items[$item->incident_id])) {
             foreach ($comment_items[$item->incident_id] as $comment_item) {
                 if ($this->response_type == 'json') {
                     $json_report_comments[$item->incident_id][] = array("comment" => $comment_item);
                 } else {
                     $xml->startElement('comment');
                     $xml->writeElement('id', $comment_item['id']);
                     $xml->writeElement('comment_author', $comment_item['comment_author']);
                     $xml->writeElement('comment_email', $comment_item['comment_email']);
                     $xml->writeElement('comment_description', $comment_item['comment_description']);
                     $xml->writeElement('comment_rating', $comment_item['comment_rating']);
                     $xml->writeElement('comment_date', $comment_item['comment_date']);
                     $xml->endElement();
                 }
             }
         }
         // End comments
         $xml->endElement();
         $json_report_media[$item->incident_id] = array();
         if (count($media_items) > 0) {
             if (isset($media_items[$item->incident_id]) and count($media_items[$item->incident_id]) > 0) {
                 $xml->startElement('mediaItems');
                 foreach ($media_items[$item->incident_id] as $media_item) {
                     $url_prefix = url::base() . Kohana::config('upload.relative_directory') . '/';
                     // If our media is not an image, we don't need to show an upload path
                     if ($media_item['mediatype'] != 1) {
                         $upload_path = '';
                     } elseif ($media_item['mediatype'] == 1 and valid::url($media_item['medialink']) == TRUE) {
                         // If our media is an img and is a valid URL, don't show the upload path or prefix
                         $upload_path = '';
                         $url_prefix = '';
                     }
                     if ($this->response_type == 'json') {
                         $json_report_media[$item->incident_id][] = array("id" => $media_item['mediaid'], "type" => $media_item['mediatype'], "link" => $upload_path . $media_item['medialink'], "thumb" => $upload_path . $media_item['mediathumb']);
                         // If we are look at certain types of media, add some fields
                         if ($media_item['mediatype'] == 1) {
                             // Grab that last key up there
                             $add_to_key = key($json_report_media[$item->incident_id]) + 1;
                             // Give a full absolute URL to the image
                             $json_report_media[$item->incident_id][$add_to_key]["thumb_url"] = $url_prefix . $upload_path . $media_item['mediathumb'];
                             $json_report_media[$item->incident_id][$add_to_key]["link_url"] = $url_prefix . $upload_path . $media_item['medialink'];
                         }
                     } else {
                         $xml->startElement('media');
                         if ($media_item['mediaid'] != "") {
                             $xml->writeElement('id', $media_item['mediaid']);
                         }
                         if ($media_item['mediatitle'] != "") {
                             $xml->writeElement('title', $media_item['mediatitle']);
                         }
                         if ($media_item['mediatype'] != "") {
                             $xml->writeElement('type', $media_item['mediatype']);
                         }
                         if ($media_item['medialink'] != "") {
                             $xml->writeElement('link', $upload_path . $media_item['medialink']);
                         }
                         if ($media_item['mediathumb'] != "") {
                             $xml->writeElement('thumb', $upload_path . $media_item['mediathumb']);
                         }
                         if ($media_item['mediathumb'] != "" and $media_item['mediatype'] == 1) {
                             $add_to_key = key($json_report_media[$item->incident_id]) + 1;
                             $xml->writeElement('thumb_url', $url_prefix . $upload_path . $media_item['mediathumb']);
                             $xml->writeElement('link_url', $url_prefix . $upload_path . $media_item['medialink']);
                         }
                         $xml->endElement();
                     }
                 }
                 $xml->endElement();
                 // Media
             }
         }
         $xml->endElement();
         // End incident
         // Check for response type
         if ($this->response_type == 'json') {
             $json_reports[] = array("incident" => array("incidentid" => $item->incident_id, "incidenttitle" => $item->incident_title, "incidentdescription" => $item->incident_description, "incidentdate" => $item->incident_date, "incidentmode" => $item->incident_mode, "incidentactive" => $item->incident_active, "incidentverified" => $item->incident_verified, "locationid" => $item->location_id, "locationname" => $item->location_name, "locationlatitude" => $item->latitude, "locationlongitude" => $item->longitude, "incidenthasended" => $this->incidentHasEnded($item->incident_id)), "categories" => $json_report_categories[$item->incident_id], "media" => $json_report_media[$item->incident_id], "comments" => $json_report_comments[$item->incident_id]);
         }
     }
     // Get the default decayimage icon
     $decayimage_default_icon = ORM::factory('decayimage', 1);
     if ($decayimage_default_icon->decayimage_thumb == $this->default_decayimage_thumb) {
         $decayimage_default_icon = url::site() . '/plugins/decayimage/images/' . $decayimage_default_icon->decayimage_thumb;
     } else {
         $decayimage_default_icon = $prefix . '/' . $decayimage_default_icon->decayimage_thumb;
     }
     // Create the JSON array
     $data = array("payload" => array("domain" => $this->domain, "incidents" => $json_reports, "decayimage_default_icon" => $decayimage_default_icon), "error" => $this->api_service->get_error_msg(0));
     if ($this->response_type == 'json') {
         return $this->array_as_json($data);
     } else {
         $xml->endElement();
         //end incidents
         $xml->endElement();
         // end payload
         $xml->startElement('error');
         $xml->writeElement('code', 0);
         $xml->writeElement('message', 'No Error');
         $xml->endElement();
         //end error
         $xml->endElement();
         // end response
         return $xml->outputMemory(true);
     }
 }
Example #27
0
 /**
  * Encodes simple multilevel array and hash values to valid xml string
  *
  * @param mixed $hash
  * @param string $childName
  * @return string
  */
 public static function xmlEncode($hash, $childName = 'child')
 {
     $xml = new XmlWriter();
     $xml->openMemory();
     $xml->startDocument('1.0', 'UTF-8');
     $xml->startElement('root');
     self::xmlWrite($xml, $hash, $childName);
     $xml->endElement();
     return $xml->outputMemory(true);
 }
 /**
  * Generates a key attribute with $key as the value, if $key is not null
  *
  * @param \XmlWriter $writer
  * @param string|null $key
  */
 protected function generateKeyAttribute(\XmlWriter $writer, $key = null)
 {
     if ($key !== null) {
         $writer->startAttribute('key');
         $writer->text($key);
         $writer->endAttribute();
     }
 }
 /**
  * Generic function to get reports by given set of parameters
  */
 private function _get_reports($where = '', $limit = '')
 {
     $ret_json_or_xml = '';
     // Will hold the JSON/XML string
     $json_reports = array();
     $json_report_media = array();
     $json_incident_media = array();
     $json_report_categories = array();
     //XML elements
     $xml = new XmlWriter();
     $xml->openMemory();
     $xml->startDocument('1.0', 'UTF-8');
     $xml->startElement('response');
     $xml->startElement('payload');
     $xml->writeElement('domain', $this->domain);
     $xml->startElement('incidents');
     //find incidents
     $this->query = "SELECT i.id AS incidentid,\n                i.incident_title AS incidenttitle," . "i.incident_description AS incidentdescription, " . "i.incident_date AS incidentdate, " . "i.incident_mode AS incidentmode, " . "i.incident_active AS incidentactive, " . "i.incident_verified AS incidentverified, " . "l.id AS locationid, " . "l.location_name AS locationname, " . "l.latitude AS locationlatitude, " . "l.longitude AS locationlongitude " . "FROM " . $this->table_prefix . "incident AS i " . "INNER JOIN " . $this->table_prefix . "location as l on l.id = i.location_id " . "{$where} {$limit}";
     $items = $this->db->query($this->query);
     $i = 0;
     //No record found.
     if ($items->count() == 0) {
         return $this->response(4);
     }
     foreach ($items as $item) {
         if ($this->response_type == 'json') {
             $json_report_media = array();
             $json_report_categories = array();
         }
         //build xml file
         $xml->startElement('incident');
         $xml->writeElement('id', $item->incidentid);
         $xml->writeElement('title', $item->incidenttitle);
         $xml->writeElement('description', $item->incidentdescription);
         $xml->writeElement('date', $item->incidentdate);
         $xml->writeElement('mode', $item->incidentmode);
         $xml->writeElement('active', $item->incidentactive);
         $xml->writeElement('verified', $item->incidentverified);
         $xml->startElement('location');
         $xml->writeElement('id', $item->locationid);
         $xml->writeElement('name', $item->locationname);
         $xml->writeElement('latitude', $item->locationlatitude);
         $xml->writeElement('longitude', $item->locationlongitude);
         $xml->endElement();
         $xml->startElement('categories');
         //fetch categories
         $this->query = " SELECT c.category_title AS categorytitle, \n                c.id AS cid " . "FROM " . $this->table_prefix . "category AS c INNER JOIN " . $this->table_prefix . "incident_category AS ic ON " . "ic.category_id = c.id WHERE ic.incident_id =" . $item->incidentid;
         $category_items = $this->db->query($this->query);
         foreach ($category_items as $category_item) {
             if ($this->response_type == 'json') {
                 $json_report_categories[] = array("category" => array("id" => $category_item->cid, "title" => $category_item->categorytitle));
             } else {
                 $xml->startElement('category');
                 $xml->writeElement('id', $category_item->cid);
                 $xml->writeElement('title', $category_item->categorytitle);
                 $xml->endElement();
             }
         }
         $xml->endElement();
         //end categories
         //fetch media associated with an incident
         $this->query = "SELECT m.id as mediaid, m.media_title AS \n                mediatitle, " . "m.media_type AS mediatype, m.media_link AS medialink, " . "m.media_thumb AS mediathumb FROM " . $this->table_prefix . "media AS m " . "INNER JOIN " . $this->table_prefix . "incident AS i ON i.id = m.incident_id " . "WHERE i.id =" . $item->incidentid;
         $media_items = $this->db->query($this->query);
         if (count($media_items) > 0) {
             $xml->startElement('mediaItems');
             foreach ($media_items as $media_item) {
                 if ($this->response_type == 'json') {
                     $json_incident_media[] = array("id" => $media_item->mediaid, "type" => $media_item->mediatype, "link" => $media_item->medialink);
                 } else {
                     $xml->startElement('media');
                     if ($media_item->mediaid != "") {
                         $xml->writeElement('id', $media_item->mediaid);
                     }
                     if ($media_item->mediatitle != "") {
                         $xml->writeElement('title', $media_item->mediatitle);
                     }
                     if ($media_item->mediatype != "") {
                         $xml->writeElement('type', $media_item->mediatype);
                     }
                     if ($media_item->medialink != "") {
                         $xml->writeElement('link', $media_item->medialink);
                     }
                     if ($media_item->mediathumb != "") {
                         $xml->writeElement('thumb', $media_item->mediathumb);
                     }
                     $xml->endElement();
                 }
             }
             $xml->endElement();
             // media
         }
         $xml->endElement();
         // end incident
         //needs different treatment depending on the output
         if ($this->response_type == 'json') {
             $json_reports[] = array("incident" => $item, "categories" => $json_report_categories, "media" => $json_report_media);
         }
     }
     // Create the json array
     $data = array("payload" => array("domain" => $this->domain, "incidents" => $json_reports), "error" => $this->api_service->get_error_msg(0));
     if ($this->response_type == 'json') {
         $ret_json_or_xml = $this->array_as_json($data);
         return $ret_json_or_xml;
     } else {
         $xml->endElement();
         //end incidents
         $xml->endElement();
         // end payload
         $xml->startElement('error');
         $xml->writeElement('code', 0);
         $xml->writeElement('message', 'No Error');
         $xml->endElement();
         //end error
         $xml->endElement();
         // end response
         return $xml->outputMemory(true);
     }
 }
 /**
  * Serializes given array. The array indices must be string to use them as
  * as element name.
  * 
  * @param array $array      The object to serialize represented in array.
  * @param array $properties The used properties in the serialization process.
  * 
  * @return string
  */
 public function serialize($array, $properties = null)
 {
     $xmlVersion = '1.0';
     $xmlEncoding = 'UTF-8';
     $standalone = Utilities::tryGetValue($properties, self::STANDALONE);
     $defaultTag = Utilities::tryGetValue($properties, self::DEFAULT_TAG);
     $rootName = Utilities::tryGetValue($properties, self::ROOT_NAME);
     $docNamespace = Utilities::tryGetValue($array, Resources::XTAG_NAMESPACE, null);
     if (!is_array($array)) {
         return false;
     }
     $xmlw = new \XmlWriter();
     $xmlw->openMemory();
     $xmlw->setIndent(true);
     $xmlw->startDocument($xmlVersion, $xmlEncoding, $standalone);
     if (is_null($docNamespace)) {
         $xmlw->startElement($rootName);
     } else {
         foreach ($docNamespace as $uri => $prefix) {
             $xmlw->startElementNS($prefix, $rootName, $uri);
             break;
         }
     }
     unset($array[Resources::XTAG_NAMESPACE]);
     self::_arr2xml($xmlw, $array, $defaultTag);
     $xmlw->endElement();
     return $xmlw->outputMemory(true);
 }