Exemplo n.º 1
0
 public function writeElement($name, $value, $prefix = null, $url = null)
 {
     if ($prefix !== null) {
         $this->cursor->writeElementNs($prefix, $name, $url, $value);
     } else {
         $this->cursor->writeElement($name, $value);
     }
 }
Exemplo n.º 2
0
 public function writeElement($name, $value, $prefix = null, $url = null)
 {
     if ($prefix !== null) {
         $this->cursor->writeElementNs($prefix, $name, $url, $value);
     } elseif ($this->needsCdataWrapping($value)) {
         $this->startElement($name, $prefix, $url);
         $this->cursor->writeCdata($value);
         $this->endElement();
     } else {
         $this->cursor->writeElement($name, $value);
     }
 }
 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();
 }
Exemplo n.º 4
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;
 }
Exemplo n.º 5
0
 /**
  * @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();
 }
Exemplo n.º 6
0
 private function writeImage(\XmlWriter $writer, Image $image)
 {
     $writer->startElement('image');
     $writer->writeElement('url', $image->getUrl());
     $writer->writeElement('link', $image->getLink());
     $writer->startElement('title');
     $writer->writeCdata($image->getTitle());
     $writer->endElement();
     $writer->endElement();
 }
Exemplo n.º 7
0
 /** 
  * 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);
 }
Exemplo n.º 8
0
 /**
  * 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);
     }
 }
 /**
  * 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);
     }
 }
Exemplo n.º 10
0
 /**
  * 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);
 }
 /**
  * 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);
     }
 }
Exemplo n.º 12
0
 /**
  * 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
  *
  * @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);
     }
 }
Exemplo n.º 14
0
 /**
  * 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);
 }
Exemplo n.º 15
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;
 }
 /**
  *	Gets the form field meta values
  *	
  */
 private function _get_custom_form_meta()
 {
     $is_json = $this->_is_json();
     if (!$this->api_service->verify_array_index($this->request, 'formid')) {
         return $this->set_error_message(array("error" => $this->api_service->get_error_msg(01, 'formid')));
     } else {
         $this->formid = $this->request['formid'];
     }
     $form_meta = customforms::get_custom_form_fields(false, $this->formid);
     //Get the meta fields for the specified formId
     if (count($form_meta) == 0) {
         return $this->response(4);
         //We don't have any fields for this form
     }
     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 ($form_meta as $meta_val) {
         if ($is_json) {
             $json_item["fields"][] = $this->_meta_fields($meta_val);
             //return meta key array
         } else {
             $this->_meta_fields($meta_val, $xml);
             //write the xml nodes for the meta fields
         }
     }
     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);
         //return json as response_data
     } 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	as response_data
     }
 }
Exemplo n.º 17
0
 /**
  * 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);
 }
Exemplo n.º 18
0
 /**
  * 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;
     }
 }
Exemplo n.º 19
0
<?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);
Exemplo n.º 20
0
        $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!';
Exemplo n.º 21
0
 /**
  * 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);
 }
Exemplo n.º 22
0
 /**
  * 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);
     }
 }
 /**
  * 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);
     }
 }
Exemplo n.º 24
0
 public function formatXmlGeckoboardLine($data, $colour = 'ff9900')
 {
     $xml = new \XmlWriter();
     $xml->openMemory();
     $xml->startDocument('1.0', 'UTF-8');
     $xml->startElement('root');
     foreach ($data as $time) {
         if ($time == 0) {
             continue;
         }
         $xml->writeElement('item', $time);
     }
     $xml->startElement('settings');
     foreach ($data as $keyTime => $time) {
         if ($time == 0) {
             continue;
         }
         $xml->writeElement('axisx', $keyTime);
     }
     $xml->writeElement('axisy', floor(min($data)));
     $xml->writeElement('axisy', ceil(max($data)));
     $xml->writeElement('colour', $colour);
     $xml->endElement();
     $xml->endElement();
     $response = $xml->outputMemory(true);
     return $response;
 }