]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - plugins/LRDD/extlib/XML/XRD/PropertyAccess.php
Implemented WebFinger and replaced our XRD with PEAR XML_XRD
[quix0rs-gnu-social.git] / plugins / LRDD / extlib / XML / XRD / PropertyAccess.php
diff --git a/plugins/LRDD/extlib/XML/XRD/PropertyAccess.php b/plugins/LRDD/extlib/XML/XRD/PropertyAccess.php
new file mode 100644 (file)
index 0000000..ccfea7f
--- /dev/null
@@ -0,0 +1,133 @@
+<?php
+/**
+ * Part of XML_XRD
+ *
+ * PHP version 5
+ *
+ * @category XML
+ * @package  XML_XRD
+ * @author   Christian Weiske <cweiske@php.net>
+ * @license  http://www.gnu.org/copyleft/lesser.html LGPL
+ * @link     http://pear.php.net/package/XML_XRD
+ */
+
+require_once 'XML/XRD/LogicException.php';
+require_once 'XML/XRD/Element/Property.php';
+
+/**
+ * Provides ArrayAccess to extending classes (XML_XRD and XML_XRD_Element_Link).
+ *
+ * By extending PropertyAccess, access to properties is possible with
+ * "$object['propertyType']" array access notation.
+ *
+ * @category XML
+ * @package  XML_XRD
+ * @author   Christian Weiske <cweiske@php.net>
+ * @license  http://www.gnu.org/copyleft/lesser.html LGPL
+ * @version  Release: @package_version@
+ * @link     http://pear.php.net/package/XML_XRD
+ */
+abstract class XML_XRD_PropertyAccess implements ArrayAccess
+{
+
+    /**
+     * Array of property objects
+     *
+     * @var array
+     */
+    public $properties = array();
+
+
+    /**
+     * Check if the property with the given type exists
+     *
+     * Part of the ArrayAccess interface
+     *
+     * @param string $type Property type to check for
+     *
+     * @return boolean True if it exists
+     */
+    public function offsetExists($type)
+    {
+        foreach ($this->properties as $prop) {
+            if ($prop->type == $type) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Return the highest ranked property with the given type
+     *
+     * Part of the ArrayAccess interface
+     *
+     * @param string $type Property type to check for
+     *
+     * @return string Property value or NULL if empty
+     */
+    public function offsetGet($type)
+    {
+        foreach ($this->properties as $prop) {
+            if ($prop->type == $type) {
+                return $prop->value;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Not implemented.
+     *
+     * Part of the ArrayAccess interface
+     *
+     * @param string $type  Property type to check for
+     * @param string $value New property value
+     *
+     * @return void
+     *
+     * @throws XML_XRD_LogicException Always
+     */
+    public function offsetSet($type, $value)
+    {
+        throw new XML_XRD_LogicException('Changing properties not implemented');
+    }
+
+    /**
+     * Not implemented.
+     *
+     * Part of the ArrayAccess interface
+     *
+     * @param string $type Property type to check for
+     *
+     * @return void
+     *
+     * @throws XML_XRD_LogicException Always
+     */
+    public function offsetUnset($type)
+    {
+        throw new XML_XRD_LogicException('Changing properties not implemented');
+    }
+
+    /**
+     * Get all properties with the given type
+     *
+     * @param string $type Property type to filter by
+     *
+     * @return array Array of XML_XRD_Element_Property objects
+     */
+    public function getProperties($type = null)
+    {
+        if ($type === null) {
+            return $this->properties;
+        }
+        $properties = array();
+        foreach ($this->properties as $prop) {
+            if ($prop->type == $type) {
+                $properties[] = $prop;
+            }
+        }
+        return $properties;
+    }
+}
+?>
\ No newline at end of file