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(); }
/** * writeChannel writes a Core\Channel instance feed. * * @param Channel $channel * * @return mixed Similar to XMLWriter::flush * * @see http://php.net/manual/function.xmlwriter-flush.php */ public function writeChannel(Channel $channel) { $this->xmlWriter->startDocument(); if ($this->flushEarly) { $this->xmlWriter->flush(); } $this->xmlWriter->startElement('rss'); foreach ($this->namespaces as $ns => $url) { $this->xmlWriter->writeAttribute(sprintf('xmlns:%s', $ns), $url); } $this->xmlWriter->writeAttribute('version', '2.0'); $this->writeObject($channel); $this->xmlWriter->endElement(); return $this->xmlWriter->flush(); }
/** * @param \Product\Entity\Product|Post $entity */ public function addEntityInfo($entity) { $this->writer->startElement('url'); $this->writer->writeElement('lastmod', date(\Datetime::ATOM, time())); $this->writer->startElement('image:image'); if ($entity instanceof Post) { $this->writer->writeElement('image:loc', "http://www.infolightingco.com/images/posts/" . $entity->getThumbnail()); $this->writer->writeElement('loc', "http://www.infolightingco.com/news/" . $entity->getUrl()); } else { $this->writer->writeElement('image:loc', "http://www.infolightingco.com/images/posts/" . $entity->getThumbnail()); $this->writer->writeElement('loc', "http://www.infolightingco.com/products/view/" . $entity->getProductNumber()); } $this->writer->endElement(); $this->writer->endElement(); }
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; }
public function executeXml(AgaviRequestDataHolder $request_data) { $report = $this->prepareReport($request_data); $xml = new XmlWriter(); $xml->openMemory(); $xml->setIndent(true); $xml->startDocument('1.0', 'UTF-8'); $xml->startElement('application'); $xml->writeAttribute('name', $report['application']); $xml->startElement('status'); $xml->text($report['status']); $xml->endElement(); $connections = $report['connections']; $xml->startElement('connections'); foreach ($connections['stats'] as $name => $value) { $xml->writeAttribute($name, $value); } $xml->writeElement('status', $connections['status']); $xml->startElement('stats'); foreach ($connections['stats'] as $name => $value) { $xml->writeElement($name, $value); } $xml->endElement(); // connections/stats foreach ($connections['details'] as $name => $value) { $xml->startElement('connection'); $xml->writeAttribute('name', $name); if (is_array($value)) { $this->array2xml($value, $xml); } else { $xml->writeCData((string) $value); } $xml->endElement(); } $xml->endElement(); // connections $xml->endElement(); // application $xml->endDocument(); return $xml->outputMemory(); }
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(); } }
/** * 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; }
/** * Serialize an object with specified root element name. * * @param object $targetObject The target object. * @param string $rootName The name of the root element. * * @return string */ public static function objectSerialize($targetObject, $rootName) { Validate::notNull($targetObject, 'targetObject'); Validate::isString($rootName, 'rootName'); $xmlWriter = new \XmlWriter(); $xmlWriter->openMemory(); $xmlWriter->setIndent(true); $reflectionClass = new \ReflectionClass($targetObject); $methodArray = $reflectionClass->getMethods(); $attributes = self::_getInstanceAttributes($targetObject, $methodArray); $xmlWriter->startElement($rootName); if (!is_null($attributes)) { foreach (array_keys($attributes) as $attributeKey) { $xmlWriter->writeAttribute($attributeKey, $attributes[$attributeKey]); } } foreach ($methodArray as $method) { if (strpos($method->name, 'get') === 0 && $method->isPublic() && $method->name != 'getAttributes') { $variableName = substr($method->name, 3); $variableValue = $method->invoke($targetObject); if (!empty($variableValue)) { if (gettype($variableValue) === 'object') { $xmlWriter->writeRaw(XmlSerializer::objectSerialize($variableValue, $variableName)); } else { $xmlWriter->writeElement($variableName, $variableValue); } } } } $xmlWriter->endElement(); return $xmlWriter->outputMemory(true); }
/** * do the search via the API * @param q - the search string. * * @param limit - the value to limit by. * * @return the search result. */ function _doSearch($q, $limit) { /** * This is mostly borrowed from the search functionality * see application/controller/search.php */ $search_query = ""; $keyword_string = ""; $where_string = ""; $plus = ""; $or = ""; $search_info = ""; $html = ""; $json_searches = array(); // Stop words that we won't search for // Add words as needed!! $stop_words = array('the', 'and', 'a', 'to', 'of', 'in', 'i', 'is', 'that', 'it', 'on', 'you', 'this', 'for', 'but', 'with', 'are', 'have', 'be', 'at', 'or', 'as', 'was', 'so', 'if', 'out', 'not'); $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 to 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('searches'); $keywords = explode(' ', $q); if (is_array($keywords) && !empty($keywords)) { array_change_key_case($keywords, CASE_LOWER); $i = 0; foreach ($keywords as $value) { if (!in_array($value, $stop_words) && !empty($value)) { $chunk = mysql_real_escape_string($value); if ($i > 0) { $plus = ' + '; $or = ' OR '; } // Give relevancy weighting // Title weight = 2 // Description weight = 1 $keyword_string = $keyword_string . $plus . "(CASE WHEN incident_title LIKE '%{$chunk}%' THEN 2 ELSE 0 END) + (CASE WHEN incident_description LIKE '%{$chunk}%' THEN 1 ELSE 0 END)"; $where_string = $where_string . $or . "incident_title LIKE '%{$chunk}%' OR incident_description LIKE '%{$chunk}%'"; $i++; } } if (!empty($keyword_string) && !empty($where_string)) { $search_query = "SELECT *, (" . $keyword_string . ") AS relevance FROM incident WHERE (" . $where_string . ") ORDER BY relevance DESC "; } } if (!empty($search_query)) { if (!empty($limit) && is_numeric($limit)) { $l = "LIMIT 0 ," . $limit; } else { $l = " LIMIT ," . $this->list_limit; } $total_items = ORM::factory('incident')->where($where_string)->count_all(); $s = $search_query . $l; $query = $this->db->query($s); $this->total_records = $total_items; // Results Bar if ($total_items != 0) { if ($this->responseType == 'json') { $json_searches[] = array("total" => $total_items); } else { $xml->writeElement('total', $total_items); } } else { $xml->writeElement('total', $total_items); //create the json array $data = array("payload" => array("searches" => $json_searches), "error" => $this->_getErrorMsg(0)); if ($this->responseType == 'json') { $retJsonOrXml = $this->_arrayAsJSON($data); return $retJsonOrXml; } else { $xml->endElement(); //end searches $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); } } foreach ($query as $search) { $incident_id = $search->id; $incident_title = $search->incident_title; $incident_description = $search->incident_description; // Remove any markup, otherwise trimming below will mess things up $incident_description = strip_tags($incident_description); $incident_date = date('D M j Y g:i:s a', strtotime($search->incident_date)); //needs different treatment depending on the output if ($this->responseType == 'json') { $json_searches[] = array("search" => array("id" => $incident_id, "title" => $search->incident_title, "description" => $incident_description, "date" => $incident_date, "relevance" => $search->relevance)); } else { //build xml file $xml->startElement('search'); $xml->writeElement('id', $incident_id); $xml->writeElement('title', $incident_title); $xml->writeElement('description', $incident_description); $xml->writeElement('date', $incident_date); $xml->writeElement('relevance', $search->relevance); $xml->endElement(); // end searches } } } //create the json array $data = array("payload" => array("searches" => $json_searches), "error" => $this->_getErrorMsg(0)); if ($this->responseType == 'json') { $retJsonOrXml = $this->_arrayAsJSON($data); return $retJsonOrXml; } else { $xml->endElement(); //end searches $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 the atom into XML representation. * * @param array $properties The atom properties. * * @return string */ private function _serializeAtom($properties) { $xmlw = new \XmlWriter(); $xmlw->openMemory(); $xmlw->setIndent(true); $xmlw->startDocument(strtoupper($this->_xmlVersion), $this->_xmlEncoding, 'yes'); $xmlw->startElementNS(null, 'entry', $this->_atomNamespaceName); $xmlw->writeAttribute("xmlns:{$this->_dataServicesPrefix}", $this->_dataServicesNamespaceName); $xmlw->writeAttribute("xmlns:{$this->_dataServicesMetadataPrefix}", $this->_dataServicesMetadataNamespaceName); $xmlw->writeElement('title'); $xmlw->writeElement('updated', Utilities::isoDate()); $xmlw->startElement('author'); $xmlw->writeElement('name'); $xmlw->endElement(); $xmlw->writeElement('id'); $xmlw->startElement('content'); $xmlw->writeAttribute('type', Resources::XML_CONTENT_TYPE); $xmlw->startElementNS($this->_dataServicesMetadataPrefix, 'properties', null); $this->_generateProperties($xmlw, $properties); $xmlw->endElement(); $xmlw->endElement(); $xmlw->endElement(); return $xmlw->outputMemory(true); }
/** * Generates the XML output and saves it to a file or returns it as a string * * @return null|int Returns the number of bytes written to a local file or false on failure */ protected function generate() { $w = new \XmlWriter(); $w->openMemory(); $w->setIndent(true); $w->setIndentString(" "); $w->startDocument('1.0', 'utf-8'); $w->startElement($this->rootname); $row = $this->getRow(); $keys = array_keys($row); foreach ($keys as $key) { $this->isValidName($key); } do { $w->startElement($this->rowname); foreach ($row as $key => $value) { if ($this->suppress && in_array($key, $this->suppress)) { continue; } if ($this->hasChildren && in_array($key, $this->hasChildren)) { $stripped = $this->stripHtml($value); $w->startElement($key); foreach ($stripped as $para) { $w->writeElement('p', $para); } $w->endElement(); } else { $w->writeElement($key, $value); } } $w->endElement(); } while ($row = $this->getRow()); $w->endElement(); $w->endDocument(); $this->xml = $w->outputMemory(); // write to file if (isset($this->filename) && $this->local) { $success = file_put_contents($this->filename, $this->xml); return $success; } elseif (isset($this->filename) && $this->download) { $this->outputHeaders(); file_put_contents('php://output', $this->xml); exit; } }
<?php $xml = new XmlWriter(); $xml->openMemory(); $xml->setIndent(true); $xml->startDocument(); $xml->startElement('test'); $xml->writeElement('foo', null); $xml->writeElement('foo2', ""); $xml->writeElement('foo3'); $xml->startElement('bar'); $xml->endElement('bar'); $xml->endElement(); $xml->endElement(); print $xml->flush(true); print "\n"; $xw = new XMLWriter(); $xw->openMemory(); $xw->setIndent(true); $xw->startDocument(); $xw->startElementNS('test', 'test', 'urn:x-test:'); $xw->writeElementNS('test', 'foo', null, ''); $xw->writeElementNS(null, 'bar', 'urn:x-test:', ''); $xw->writeElementNS(null, 'bar', 'urn:x-test:', NULL); $xw->writeElementNS(null, 'bar', 'urn:x-test:'); $xw->writeElementNS(null, 'bar', '', ''); $xw->endElement(); $xw->endDocument(); print $xw->flush(true);
function toXml(XmlWriter $x) { $x->startElement('url'); $x->startElement('method'); $x->text($this->getMethod()); $x->endElement(); $x->startElement('scheme'); $x->text($this->getScheme()); $x->endElement(); $x->startElement('base_url'); $x->text($this->getBaseUrl(true)); $x->endElement(); $x->startElement('path_info'); $x->text($this->getPathInfo()); $x->endElement(); $x->startElement('host'); $x->text($this->getHttpHost()); $x->endElement(); $x->startElement('remote_addr'); $x->text($this->getClientIp(false)); $x->endElement(); $x->endElement(); $x->startElement('params'); foreach ($this->getRequestOnlyParams() as $k => $v) { $x->startElement('param'); $x->writeAttribute('name', $k); if (is_array($v) || is_object($v)) { $v = json_encode($v); $x->writeAttribute("serialized", "json"); $x->writeCdata($v); } else { $x->text($v); } $x->endElement(); } $x->endElement(); }
$msg = ''; $sch = ''; continue; } else { $msg = $feed->SMSCONTENT; $sch = $feed->TIME; if (!empty($msg) && $sch > $older_sch) { $older_sch = $sch; } else { continue; } } $xml = new XmlWriter(); echo $msg; $xml->openMemory(); $xml->startDocument('1.0', 'UTF-8'); $xml->startElement('content'); $xml->writeElement('updTime', gmdate('Y-m-d\\TH:i:s\\Z', strtotime($older_sch))); $xml->startElement('body'); $xml->writeCData($msg); $xml->endElement(); $xml->startElement('preview'); $xml->writeCData(stripslashes($msg)); $xml->endElement(); $xml->endElement(); echo 'yes4<br>'; $file = "serieaweekly.xml"; echo $file; file_put_contents("rss/" . $file, $xml->outputMemory(true)); } echo '<br>done!';
/** * Generates the XML output and saves it to a file or returns it as a string * * @return null|int Returns the number of bytes written to a local file or false on failure */ protected function generate() { $w = new \XmlWriter(); $w->openMemory(); $w->setIndent(true); $w->setIndentString(" "); $w->startDocument('1.0', 'utf-8'); $w->startElement($this->rootname); while ($object = $this->getRow()) { // Start a new row for each object $w->startElement($this->rowname); foreach ($object as $key => $value) { if ($this->suppress && in_array($key, $this->suppress)) { continue; } $this->isValidName($key); // Check if the key contains another object if (is_object($value)) { // Start parent element containing rows of each object $w->startElement($key . "s"); // $value is an array of objects foreach ($value as $obj) { $w->startElement($key); foreach ($obj as $field => $val) { $this->isValidName($key); $w->writeElement($field, $val); } $w->endElement(); } $w->endElement(); } else { // Write each object's property->value as <key>value</key> if ($this->hasChildren && in_array($key, $this->hasChildren)) { $stripped = $this->stripHtml($value); $w->startElement($key); foreach ($stripped as $para) { $w->writeElement('p', $para); } $w->endElement(); } else { $w->writeElement($key, $value); } } } $w->endElement(); } $w->endElement(); $w->endDocument(); $this->xml = $w->outputMemory(); // write to file if (isset($this->filename) && $this->local) { $success = file_put_contents($this->filename, $this->xml); return $success; } elseif (isset($this->filename) && $this->download) { $this->outputHeaders(); file_put_contents('php://output', $this->xml); exit; } }
/** * Generic function to get reports by given set of parameters */ public function _get_incidents($where = '', $limit = '') { $ret_json_or_xml = ''; // Will hold the XML/JSON string to return $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'); // 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); // Set the no. of records returned $this->record_count = $items->count(); $incidentids = array(); foreach ($items as $item) { $incidentids[] = $item->incidentid; } // Fetch categories $this->query = " SELECT c.category_title AS categorytitle, \n c.id as cid ,ic.incident_id as incidentid " . "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 IN(" . implode(',', $incidentids) . ")"; $category_items_temp = $this->db->query($this->query); $category_items = array(); $temp_index = 1; foreach ($category_items_temp as $category_item) { $category_items[$category_item->incidentid][$temp_index]['categorytitle'] = $category_item->categorytitle; $category_items[$category_item->incidentid][$temp_index]['cid'] = $category_item->cid; $temp_index++; } unset($category_items_temp); //fetch media associated with an incident $this->query = "SELECT i.id as incidentid , 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 IN(" . implode(',', $incidentids) . ")"; $media_items = $this->db->query($this->query); $media_items_temp = $this->db->query($this->query); $media_items = array(); $temp_index = 1; foreach ($media_items_temp as $media_item) { $media_items[$media_item->incidentid][$temp_index]['mediaid'] = $media_item->mediaid; $media_items[$media_item->incidentid][$temp_index]['mediatitle'] = $media_item->mediatitle; $media_items[$media_item->incidentid][$temp_index]['mediatype'] = $media_item->mediatype; $media_items[$media_item->incidentid][$temp_index]['medialink'] = $media_item->medialink; $media_items[$media_item->incidentid][$temp_index]['mediathumb'] = $media_item->mediathumb; $temp_index++; } unset($media_items_temp); unset($temp_index); $i = 0; //No record found. if ($items->count() == 0) { return $this->response(4, $this->error_messages); } foreach ($items as $item) { // 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'); $json_report_categories[$item->incidentid] = array(); foreach ($category_items[$item->incidentid] as $category_item) { if ($this->response_type == 'json') { $json_report_categories[$item->incidentid][] = 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 $json_report_media[$item->incidentid] = array(); if (isset($media_items[$item->incidentid]) && count($media_items[$item->incidentid]) > 0) { $xml->startElement('mediaItems'); foreach ($media_items[$item->incidentid] as $media_item) { if ($media_item['mediatype'] != 1) { $upload_path = ""; } if ($this->response_type == 'json') { $json_report_media[$item->incidentid] = array("id" => $media_item['mediaid'], "type" => $media_item['mediatype'], "link" => $upload_path . $media_item['medialink'], "thumb" => $upload_path . $media_item['mediathumb']); } 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']); } $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[$item->incidentid], "media" => $json_report_media[$item->incidentid]); } } //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); } }
/** * Indexes the document $document using definition $definition * * @param ezcSearchDocumentDefinition $definition * @param mixed $document */ public function index(ezcSearchDocumentDefinition $definition, $document) { $xml = new XmlWriter(); $xml->openMemory(); $xml->startElement('add'); $xml->startElement('doc'); $xml->startElement('field'); $xml->writeAttribute('name', 'ezcsearch_type_s'); $xml->text($definition->documentType); $xml->endElement(); $xml->startElement('field'); $xml->writeAttribute('name', 'id'); $xml->text($document[$definition->idProperty]); $xml->endElement(); foreach ($definition->fields as $field) { $value = $this->mapFieldValuesForIndex($field, $document[$field->field]); foreach ($value as $fieldValue) { $xml->startElement('field'); $xml->writeAttribute('name', $this->mapFieldType($field->field, $field->type)); $xml->text($fieldValue); $xml->endElement(); } } $xml->endElement(); $xml->endElement(); $doc = $xml->outputMemory(true); $r = $this->sendRawPostCommand('update', array('wt' => 'json'), $doc); if ($this->inTransaction == 0) { $this->runCommit(); } }
/** * Gets the custom form field values and * * meta information by incidentid */ private function _get_custom_form_fields() { $is_json = $this->_is_json(); if (!$this->api_service->verify_array_index($this->request, 'id')) { //Ensure that the incidentid is set, error out if not return $this->set_error_message(array("error" => $this->api_service->get_error_msg(01, 'id'))); } else { $incident_id = $this->request['id']; } //Retrieve the form_id from the incident object $incident = ORM::factory("incident")->select("form_id")->where("id", $this->check_id_value($incident_id))->find(); if (!$incident) { return $this->response(4); //We don't have this incident } $form_id = $incident->form_id; //Call the customforms helper method to return the field values $custom_form_fields = customforms::get_custom_form_fields($incident_id, $form_id, true); //Call the customforms helper method to return the field meta information $custom_form_field_meta = customforms::get_custom_form_fields($incident_id, $form_id, false); if (count($custom_form_fields) == 0) { return $this->response(4); //We don't have any forms for this incident. } if ($is_json) { $json_item = array(); $json = array(); } else { $xml = new XmlWriter(); $xml->openMemory(); $xml->startDocument('1.0', 'UTF-8'); $xml->startElement('response'); $xml->startElement('payload'); $xml->writeElement('domain', $this->domain); $xml->startElement('customforms'); $xml->startElement("fields"); } foreach ($custom_form_fields as $field_id => $field) { $field_value = $field; $field_meta = $custom_form_field_meta[$field_id]; // Always return values as array if (customforms::field_is_multi_value($field_meta)) { //This is a multi-select field, return it as an multi value array $field_value = explode(",", $field_value); } else { //This is either text or html, return as single array object $field_value = array($field_value); } if ($is_json) { $json_item["fields"][] = array("values" => $field_value, "meta" => $this->_meta_fields($field_meta)); } else { $xml->startElement("field"); $xml->startElement("values"); foreach ($field_value as $val) { $xml->writeElement("value", html::specialchars($val, FALSE)); //Write the field value } $xml->endElement(); //end values; $xml->startElement("meta"); $this->_meta_fields($field_meta, $xml); $xml->endElement(); //end meta $xml->endElement(); //field; } } if ($is_json) { $json = array("payload" => array("customforms" => $json_item), "error" => $this->api_service->get_error_msg(0)); $json_item = null; return $this->array_as_json($json); //Write the json array } else { $xml->endElement(); //End fields $xml->endElement(); //End customforms $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); //write out the xml stream } }
/** * 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); } }
/** * Function builds OpenPayU Xml Document * @access public * @param string $data * @param string $startElement * @param integer $request * @param string $xml_version * @param string $xml_encoding * @return string $xml */ public static function buildOpenPayUDocument($data, $startElement, $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); if (OpenPayU_Configuration::getApiVersion() < 2) { $xml->startElementNS(null, 'OpenPayU', 'http://www.openpayu.com/openpayu.xsd'); $header = $request == 1 ? 'HeaderRequest' : 'HeaderResponse'; $xml->startElement($header); $xml->writeElement('Algorithm', OpenPayU_Configuration::getHashAlgorithm()); $xml->writeElement('SenderName', 'exampleSenderName'); $xml->writeElement('Version', $xml_version); $xml->endElement(); } else { $xml->startElementNS(null, 'OpenPayU', 'http://www.openpayu.com/20/openpayu.xsd'); } // domain level - open if (OpenPayU_Configuration::getApiVersion() < 2) { $xml->startElement(OpenPayUDomain::getDomain4Message($startElement)); } // message level - open $xml->startElement($startElement); OpenPayU_Util::convertArrayToXml($xml, $data); // message level - close $xml->endElement(); // domain level - close $xml->endElement(); // document level - close if (OpenPayU_Configuration::getApiVersion() < 2) { $xml->endElement(); } return $xml->outputMemory(true); }
/** * Create document(s) update XML * * @param array $documents * * @return string */ protected function createUpdates(array $documents) { $xml = new \XmlWriter(); $xml->openMemory(); $xml->startElement('add'); foreach ($documents as $document) { $xml->startElement('doc'); foreach ($document as $field) { foreach ((array) $this->fieldValueMapper->map($field) as $value) { $xml->startElement('field'); $xml->writeAttribute('name', $this->nameGenerator->getTypedName($field->name, $field->type)); $xml->text($value); $xml->endElement(); } } $xml->endElement(); } $xml->endElement(); return $xml->outputMemory(true); }
private function writeCategory(\XmlWriter $writer, Category $category) { $writer->startElement('category'); if ($category->getDomain()) { $writer->writeAttribute('domain', $category->getDomain()); } $writer->writeCdata($category->getTitle()); $writer->endElement(); }
public function endElement() { $this->cursor->endElement(); }
/** * Generic function to get reports by given set of parameters */ public function _get_incidents($where = '', $limit = '') { $ret_json_or_xml = ''; // Will hold the XML/JSON string to return $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'); // 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); // Set the no. of records returned $this->record_count = $items->count(); $i = 0; //No record found. if ($items->count() == 0) { return $this->response(4, $this->error_messages); } foreach ($items as $item) { // 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); $json_report_categories[$item->incidentid] = array(); foreach ($category_items as $category_item) { if ($this->response_type == 'json') { $json_report_categories[$item->incidentid][] = 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); $json_report_media[$item->incidentid] = array(); if (count($media_items) > 0) { $xml->startElement('mediaItems'); foreach ($media_items as $media_item) { if ($media_item->mediatype != 1) { $upload_path = ""; } $url_prefix = url::base() . Kohana::config('upload.relative_directory') . '/'; if ($this->response_type == 'json') { $json_report_media[$item->incidentid][] = 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->incidentid]) + 1; // Give a full absolute URL to the image $json_report_media[$item->incidentid][$add_to_key]["thumb_url"] = $url_prefix . $upload_path . $media_item->mediathumb; $json_report_media[$item->incidentid][$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->incidentid]) + 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 //needs different treatment depending on the output if ($this->response_type == 'json') { $json_reports[] = array("incident" => $item, "categories" => $json_report_categories[$item->incidentid], "media" => $json_report_media[$item->incidentid]); } } //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); } }
/** * 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); }
/** * Function for returning deleted incident id's only */ function _getDeletedIncidents($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 manually. It was wasting my time trying to 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->writeElement('domain', $this->domain); $xml->startElement('incidents'); //find incidents $query = "SELECT id, " . "incident_dateadd" . " FROM " . $this->table_prefix . "incident" . "{$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->id); $xml->writeElement('date', $item->incident_dateadd); $xml->endElement(); } $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); }
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(); }
private function endJSONxElement() { $this->writer->endElement(); }
/** * 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); } }
/** * Generic function to get reports by given set of parameters * * @param string $where SQL where clause * @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(); $custom_field_items = array(); foreach ($items as $item) { $incident_ids[] = $item->incident_id; $thiscustomfields = customforms::get_custom_form_fields($item->incident_id, null, false, "view"); if (!empty($thiscustomfields)) { $custom_field_items[$item->incident_id] = $thiscustomfields; } } // // STEP 2. // Fetch the incident categories // // Execute the query $incident_categories = ORM::factory('category')->select('category.*, incident_category.incident_id')->join('incident_category', 'category.id', 'incident_category.category_id')->in('incident_category.incident_id', $incident_ids)->find_all(); // To hold the incident category items $category_items = array(); // Fetch items into array foreach ($incident_categories as $incident_category) { $category_items[$incident_category->incident_id][] = $incident_category->as_array(); } // Free temporary variables from memory unset($incident_categories); // // STEP 3. // Fetch the media associated with all the incidents // $media_items_result = ORM::factory('media')->in('incident_id', $incident_ids)->find_all(); // To store the fetched media items $media_items = array(); // Fetch items into array foreach ($media_items_result as $media_item) { $media_item_array = $media_item->as_array(); if ($media_item->media_type == 1 and !empty($media_item->media_thumb)) { $media_item_array["media_thumb_url"] = url::convert_uploaded_to_abs($media_item->media_thumb); $media_item_array["media_link_url"] = url::convert_uploaded_to_abs($media_item->media_link); } $media_items[$media_item->incident_id][] = $media_item_array; } // Free temporary variables unset($media_items_result, $media_item_array); // // STEP 4. // Fetch the comments associated with the incidents // if ($this->comments) { // Execute the query $incident_comments = ORM::factory('comment')->in('incident_id', $incident_ids)->where('comment_spam', 0)->find_all(); // To hold the incident category items $comment_items = array(); // Fetch items into array foreach ($incident_comments as $incident_comment) { $comment_items[$incident_comment->incident_id][] = $incident_comment->as_array(); } // 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' or $this->response_type == 'jsonp') { $json_report_categories[$item->incident_id][] = array("category" => array("id" => $category_item['id'], "title" => $category_item['category_title'])); } else { $xml->startElement('category'); $xml->writeElement('id', $category_item['id']); $xml->writeElement('title', $category_item['category_title']); $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' or $this->response_type == 'jsonp') { $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_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) { if ($this->response_type == 'json' or $this->response_type == 'jsonp') { $json_media_array = array("id" => $media_item['id'], "type" => $media_item['media_type'], "link" => $media_item['media_link'], "thumb" => $media_item['media_thumb']); // If we are look at certain types of media, add some fields if ($media_item['media_type'] == 1 and isset($media_item['media_thumb_url'])) { // Give a full absolute URL to the image $json_media_array["thumb_url"] = $media_item['media_thumb_url']; $json_media_array["link_url"] = $media_item['media_link_url']; } $json_report_media[$item->incident_id][] = $json_media_array; } else { $xml->startElement('media'); if ($media_item['id'] != "") { $xml->writeElement('id', $media_item['id']); } if ($media_item['media_title'] != "") { $xml->writeElement('title', $media_item['media_title']); } if ($media_item['media_type'] != "") { $xml->writeElement('type', $media_item['media_type']); } if ($media_item['media_link'] != "") { $xml->writeElement('link', $upload_path . $media_item['media_link']); } if ($media_item['media_thumb'] != "") { $xml->writeElement('thumb', $upload_path . $media_item['media_thumb']); } if ($media_item['media_type'] == 1 and isset($media_item['media_thumb_url'])) { $xml->writeElement('thumb_url', $media_item['media_thumb_url']); $xml->writeElement('link_url', $media_item['media_link_url']); } $xml->endElement(); } } $xml->endElement(); // Media } } if (count($custom_field_items) > 0 and $this->response_type != 'json' and $this->response_type != 'jsonp') { if (isset($custom_field_items[$item->incident_id]) and count($custom_field_items[$item->incident_id]) > 0) { $xml->startElement('customFields'); foreach ($custom_field_items[$item->incident_id] as $field_item) { $xml->startElement('field'); foreach ($field_item as $fname => $fval) { $xml->writeElement($fname, $fval); } $xml->endElement(); // field } $xml->endElement(); // customFields } } $xml->endElement(); // End incident // Check for response type if ($this->response_type == 'json' or $this->response_type == 'jsonp') { $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), "categories" => $json_report_categories[$item->incident_id], "media" => $json_report_media[$item->incident_id], "comments" => $json_report_comments[$item->incident_id], "customfields" => isset($custom_field_items[$item->incident_id]) ? $custom_field_items[$item->incident_id] : array()); } } // 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' or $this->response_type == 'jsonp') { 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); } }