Author: chabotc
Date: Tue Nov 18 23:34:09 2008
New Revision: 718894
URL: http://svn.apache.org/viewvc?rev=718894&view=rev
Log:
Un-duplicate basic xml output converter code by Pan Jie & fixed a few E_STRICT
warnings on non-static functions being called statically by making them static
Added:
incubator/shindig/trunk/php/src/social/converters/OutputBasicXmlConverter.php
Modified:
incubator/shindig/trunk/php/src/social/converters/InputBasicXmlConverter.php
incubator/shindig/trunk/php/src/social/converters/OutputAtomConverter.php
incubator/shindig/trunk/php/src/social/converters/OutputJsonConverter.php
incubator/shindig/trunk/php/src/social/converters/OutputXmlConverter.php
Modified:
incubator/shindig/trunk/php/src/social/converters/InputBasicXmlConverter.php
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/php/src/social/converters/InputBasicXmlConverter.php?rev=718894&r1=718893&r2=718894&view=diff
==============================================================================
---
incubator/shindig/trunk/php/src/social/converters/InputBasicXmlConverter.php
(original)
+++
incubator/shindig/trunk/php/src/social/converters/InputBasicXmlConverter.php
Tue Nov 18 23:34:09 2008
@@ -22,12 +22,12 @@
*/
class InputBasicXmlConverter {
- public function loadString($requestParam, $namespace = null)
+ public static function loadString($requestParam, $namespace = null)
{
return simplexml_load_string($requestParam, 'SimpleXMLElement',
LIBXML_NOCDATA, $namespace);
}
- public function convertActivities($xml, $activityXml)
+ public static function convertActivities($xml, $activityXml)
{
$activity = array();
if (! isset($xml->title)) {
@@ -58,7 +58,7 @@
return $activity;
}
- public function convertMessages($requestParam, $xml, $content)
+ public static function convertMessages($requestParam, $xml, $content)
{
$message = array();
if (! isset($xml->title) || ! isset($content)) {
Modified:
incubator/shindig/trunk/php/src/social/converters/OutputAtomConverter.php
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/php/src/social/converters/OutputAtomConverter.php?rev=718894&r1=718893&r2=718894&view=diff
==============================================================================
--- incubator/shindig/trunk/php/src/social/converters/OutputAtomConverter.php
(original)
+++ incubator/shindig/trunk/php/src/social/converters/OutputAtomConverter.php
Tue Nov 18 23:34:09 2008
@@ -40,7 +40,7 @@
$requestType = $this->getRequestType($requestItem);
$data = $responseItem->getResponse();
$params = $requestItem->getParameters();
- $userId = isset($params['userId']) ? $params['userId'][0] : '';
+ $userId = isset($params['userId']) ? $params['userId'][0] : '';
$guid = 'urn:guid:' . $userId;
$authorName = $_SERVER['HTTP_HOST'] . ':' . $userId;
$updatedAtom = date(DATE_ATOM);
@@ -140,25 +140,9 @@
* @param string $nameSpace optional namespace to use when creating node
* @return DOMElement node
*/
- private function addNode($node, $name, $value = '', $attributes =
false, $nameSpace = false)
+ private function addNode(DOMElement $node, $name, $value = '',
$attributes = false, $nameSpace = false)
{
- if ($nameSpace) {
- $childNode =
$node->appendChild($this->doc->createElementNS($nameSpace, $name));
- } else {
- $childNode =
$node->appendChild($this->doc->createElement($name));
- }
- if (! empty($value) || $value == '0') {
-
$childNode->appendChild($this->doc->createTextNode($value));
- }
- if ($attributes && is_array($attributes)) {
- foreach ($attributes as $attrName => $attrVal) {
- $childNodeAttr =
$childNode->appendChild($this->doc->createAttribute($attrName));
- if (! empty($attrVal)) {
-
$childNodeAttr->appendChild($this->doc->createTextNode($attrVal));
- }
- }
- }
- return $childNode;
+ return OutputBasicXmlConverter::addNode($this->doc, $node,
$name, $value, $attributes, $nameSpace);
}
/**
@@ -216,28 +200,12 @@
*/
private function getRequestType($requestItem)
{
- // map the Request URL to the content type to use
- $params = $requestItem->getParameters();
- if (! is_array($params)) {
- throw new Exception("Unsupported request type");
- }
- $type = false;
- foreach ($params as $key => $val) {
- if (isset(self::$entryTypes[$key])) {
- $type = self::$entryTypes[$key];
- break;
- }
- }
- if (!$type) {
- throw new Exception("Unsupported request type");
- }
- return $type;
+ return OutputBasicXmlConverter::getRequestType($requestItem,
self::$entryTypes);
}
/**
* Recursive function that maps an data array or object to it's xml
represantation
*
- * @param DOMDocument $doc the root document
* @param DOMElement $element the element to append the new node(s) to
* @param string $name the name of the to be created node
* @param array or object $data the data to map to xml
@@ -246,53 +214,6 @@
*/
private function addData(DOMElement $element, $name, $data, $nameSpace
= false)
{
- if ($nameSpace) {
- $newElement =
$element->appendChild($this->doc->createElementNS($nameSpace, $name));
- } else {
- $newElement =
$element->appendChild($this->doc->createElement($name));
- }
- if (is_array($data)) {
- foreach ($data as $key => $val) {
- if (is_array($val) || is_object($val)) {
- // prevent invalid names.. try to guess
a good one :)
- if (is_numeric($key)) {
- $key = is_object($val) ?
get_class($val) : $key = $name;
- }
- $this->addData($newElement, $key, $val);
- } else {
- if (is_numeric($key)) {
- $key = is_object($val) ?
get_class($val) : $key = $name;
- }
- $elm =
$newElement->appendChild($this->doc->createElement($key));
-
$elm->appendChild($this->doc->createTextNode($val));
- }
- }
- } elseif (is_object($data)) {
- if ($data instanceof Enum) {
- if (isset($data->key)) {
- // enums are output as : <NAME
key="$key">$displayValue</NAME>
- $keyEntry =
$newElement->appendChild($this->doc->createAttribute('key'));
-
$keyEntry->appendChild($this->doc->createTextNode($data->key));
-
$newElement->appendChild($this->doc->createTextNode($data->getDisplayValue()));
- }
- } else {
- $vars = get_object_vars($data);
- foreach ($vars as $key => $val) {
- if (is_array($val) || is_object($val)) {
- // prevent invalid names.. try
to guess a good one :)
- if (is_numeric($key)) {
- $key = is_object($val)
? get_class($val) : $key = $name;
- }
- $this->addData($newElement,
$key, $val);
- } else {
- $elm =
$newElement->appendChild($this->doc->createElement($key));
-
$elm->appendChild($this->doc->createTextNode($val));
- }
- }
- }
- } else {
-
$newElement->appendChild($this->doc->createTextNode($data));
- }
- return $newElement;
+ return OutputBasicXmlConverter::addData($this->doc, $element,
$name, $data, $nameSpace);
}
}
Added:
incubator/shindig/trunk/php/src/social/converters/OutputBasicXmlConverter.php
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/php/src/social/converters/OutputBasicXmlConverter.php?rev=718894&view=auto
==============================================================================
---
incubator/shindig/trunk/php/src/social/converters/OutputBasicXmlConverter.php
(added)
+++
incubator/shindig/trunk/php/src/social/converters/OutputBasicXmlConverter.php
Tue Nov 18 23:34:09 2008
@@ -0,0 +1,145 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+
+/**
+ * Basic methods for OutputAtomConverter and OutputXmlConverter.
+ */
+class OutputBasicXmlConverter {
+
+ /**
+ * Extracts the Xml entity name from the request url
+ *
+ * @param RequestItem $requestItem the request item
+ * @param array $entryTypes the map of entries
+ * @return string the request type
+ */
+ public function getRequestType($requestItem, $entryTypes)
+ {
+ // map the Request URL to the content type to use
+ $params = $requestItem->getParameters();
+ if (! is_array($params)) {
+ throw new Exception("Unsupported request type");
+ }
+ $type = false;
+ foreach ($params as $key => $val) {
+ if (isset($entryTypes[$key])) {
+ $type = $entryTypes[$key];
+ break;
+ }
+ }
+ if (! $type) {
+ throw new Exception("Unsupported request type");
+ }
+ return $type;
+ }
+
+ /**
+ * Easy shortcut for creating & appending XML nodes
+ *
+ * @param DOMDocument $doc document the root document
+ * @param DOMElement $node node to append the new child node to
+ * @param string $name name of the new element
+ * @param string $value value of the element, if empty no text node is
created
+ * @param array $attributes optional array of attributes, false by
default. If set attributes are added to the node using the key => val pairs
+ * @param string $nameSpace optional namespace to use when creating node
+ * @return DOMElement node
+ */
+ public function addNode(DOMDocument $doc, DOMElement $node, $name,
$value = '', $attributes = false, $nameSpace = false)
+ {
+ if ($nameSpace) {
+ $childNode =
$node->appendChild($doc->createElementNS($nameSpace, $name));
+ } else {
+ $childNode =
$node->appendChild($doc->createElement($name));
+ }
+ if (! empty($value) || $value == '0') {
+ $childNode->appendChild($doc->createTextNode($value));
+ }
+ if ($attributes && is_array($attributes)) {
+ foreach ($attributes as $attrName => $attrVal) {
+ $childNodeAttr =
$childNode->appendChild($doc->createAttribute($attrName));
+ if (! empty($attrVal)) {
+
$childNodeAttr->appendChild($doc->createTextNode($attrVal));
+ }
+ }
+ }
+ return $childNode;
+ }
+
+ /**
+ * Recursive function that maps an data array or object to it's xml
represantation
+ *
+ * @param DOMDocument $doc the root document
+ * @param DOMElement $element the element to append the new node(s) to
+ * @param string $name the name of the to be created node
+ * @param array or object $data the data to map to xml
+ * @param string $nameSpace if specified, the node is created using
this namespace
+ * @return DOMElement returns newly created element
+ */
+ public function addData(DOMDocument $doc, DOMElement $element, $name,
$data, $nameSpace = false)
+ {
+ if ($nameSpace) {
+ $newElement =
$element->appendChild($doc->createElementNS($nameSpace, $name));
+ } else {
+ $newElement =
$element->appendChild($doc->createElement($name));
+ }
+ if (is_array($data)) {
+ foreach ($data as $key => $val) {
+ if (is_array($val) || is_object($val)) {
+ // prevent invalid names.. try to guess
a good one :)
+ if (is_numeric($key)) {
+ $key = is_object($val) ?
get_class($val) : $key = $name;
+ }
+ self::addData($doc, $newElement, $key,
$val);
+ } else {
+ if (is_numeric($key)) {
+ $key = is_object($val) ?
get_class($val) : $key = $name;
+ }
+ $elm =
$newElement->appendChild($doc->createElement($key));
+
$elm->appendChild($doc->createTextNode($val));
+ }
+ }
+ } elseif (is_object($data)) {
+ if ($data instanceof Enum) {
+ if (isset($data->key)) {
+ // enums are output as : <NAME
key="$key">$displayValue</NAME>
+ $keyEntry =
$newElement->appendChild($doc->createAttribute('key'));
+
$keyEntry->appendChild($doc->createTextNode($data->key));
+
$newElement->appendChild($doc->createTextNode($data->getDisplayValue()));
+ }
+ } else {
+ $vars = get_object_vars($data);
+ foreach ($vars as $key => $val) {
+ if (is_array($val) || is_object($val)) {
+ // prevent invalid names.. try
to guess a good one :)
+ if (is_numeric($key)) {
+ $key = is_object($val)
? get_class($val) : $key = $name;
+ }
+ self::addData($doc,
$newElement, $key, $val);
+ } else {
+ $elm =
$newElement->appendChild($doc->createElement($key));
+
$elm->appendChild($doc->createTextNode($val));
+ }
+ }
+ }
+ } else {
+ $newElement->appendChild($doc->createTextNode($data));
+ }
+ return $newElement;
+ }
+}
Modified:
incubator/shindig/trunk/php/src/social/converters/OutputJsonConverter.php
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/php/src/social/converters/OutputJsonConverter.php?rev=718894&r1=718893&r2=718894&view=diff
==============================================================================
--- incubator/shindig/trunk/php/src/social/converters/OutputJsonConverter.php
(original)
+++ incubator/shindig/trunk/php/src/social/converters/OutputJsonConverter.php
Tue Nov 18 23:34:09 2008
@@ -32,7 +32,7 @@
$response->itemsPerPage = $itemsPerPage;
}
// several service calls return a null value
- if (!is_null($response)) {
+ if (! is_null($response)) {
if (Config::get('debug')) {
echo self::json_format(json_encode($response));
// TODO: add a query option to pretty-print json output
} else {
Modified:
incubator/shindig/trunk/php/src/social/converters/OutputXmlConverter.php
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/php/src/social/converters/OutputXmlConverter.php?rev=718894&r1=718893&r2=718894&view=diff
==============================================================================
--- incubator/shindig/trunk/php/src/social/converters/OutputXmlConverter.php
(original)
+++ incubator/shindig/trunk/php/src/social/converters/OutputXmlConverter.php
Tue Nov 18 23:34:09 2008
@@ -78,24 +78,11 @@
* @param string $name name of the new element
* @param string $value value of the element, if empty no text node is
created
* @param array $attributes optional array of attributes, false by
default. If set attributes are added to the node using the key => val pairs
- * @param string $nameSpace optional namespace to use when creating node
* @return DOMElement node
*/
- private function addNode($node, $name, $value = '', $attributes = false)
+ private function addNode(DOMElement $node, $name, $value = '',
$attributes = false)
{
- $childNode =
$node->appendChild($this->doc->createElement($name));
- if (! empty($value) || $value == '0') {
-
$childNode->appendChild($this->doc->createTextNode($value));
- }
- if ($attributes && is_array($attributes)) {
- foreach ($attributes as $attrName => $attrVal) {
- $childNodeAttr =
$childNode->appendChild($this->doc->createAttribute($attrName));
- if (! empty($attrVal)) {
-
$childNodeAttr->appendChild($this->doc->createTextNode($attrVal));
- }
- }
- }
- return $childNode;
+ return OutputBasicXmlConverter::addNode($this->doc, $node,
$name, $value, $attributes);
}
/**
@@ -118,79 +105,19 @@
*/
private function getRequestType($requestItem)
{
- // map the Request URL to the content type to use
- $params = $requestItem->getParameters();
- if (! is_array($params)) {
- throw new Exception("Unsupported request type");
- }
- $type = false;
- foreach ($params as $key => $val) {
- if (isset(self::$entryTypes[$key])) {
- $type = self::$entryTypes[$key];
- break;
- }
- }
- if (!$type) {
- throw new Exception("Unsupported request type");
- }
- return $type;
+ return OutputBasicXmlConverter::getRequestType($requestItem,
self::$entryTypes);
}
/**
* Recursive function that maps an data array or object to it's xml
represantation
*
- * @param DOMDocument $doc the root document
* @param DOMElement $element the element to append the new node(s) to
* @param string $name the name of the to be created node
* @param array or object $data the data to map to xml
- * @param string $nameSpace if specified, the node is created using
this namespace
* @return DOMElement returns newly created element
*/
private function addData(DOMElement $element, $name, $data)
{
- $newElement =
$element->appendChild($this->doc->createElement($name));
- if (is_array($data)) {
- foreach ($data as $key => $val) {
- if (is_array($val) || is_object($val)) {
- // prevent invalid names.. try to guess
a good one :)
- if (is_numeric($key)) {
- $key = is_object($val) ?
get_class($val) : $key = $name;
- }
- $this->addData($newElement, $key, $val);
- } else {
- if (is_numeric($key)) {
- $key = is_object($val) ?
get_class($val) : $key = $name;
- }
- $elm =
$newElement->appendChild($this->doc->createElement($key));
-
$elm->appendChild($this->doc->createTextNode($val));
- }
- }
- } elseif (is_object($data)) {
- if ($data instanceof Enum) {
- if (isset($data->key)) {
- // enums are output as : <NAME
key="$key">$displayValue</NAME>
- $keyEntry =
$newElement->appendChild($this->doc->createAttribute('key'));
-
$keyEntry->appendChild($this->doc->createTextNode($data->key));
-
$newElement->appendChild($this->doc->createTextNode($data->getDisplayValue()));
- }
- } else {
- $vars = get_object_vars($data);
- foreach ($vars as $key => $val) {
- if (is_array($val) || is_object($val)) {
- // prevent invalid names.. try
to guess a good one :)
- if (is_numeric($key)) {
- $key = is_object($val)
? get_class($val) : $key = $name;
- }
- $this->addData($newElement,
$key, $val);
- } else {
- $elm =
$newElement->appendChild($this->doc->createElement($key));
-
$elm->appendChild($this->doc->createTextNode($val));
- }
- }
- }
- } else {
-
$newElement->appendChild($this->doc->createTextNode($data));
- }
- return $newElement;
+ return OutputBasicXmlConverter::addData($this->doc, $element,
$name, $data);
}
}