Implement the last of the non-email related requests for AS version 2.5 support.Imple...
authorMichael J. Rubinsky <mrubinsk@horde.org>
Wed, 12 May 2010 22:20:45 +0000 (18:20 -0400)
committerMichael J. Rubinsky <mrubinsk@horde.org>
Wed, 12 May 2010 22:20:45 +0000 (18:20 -0400)
framework/ActiveSync/lib/Horde/ActiveSync/Request/GetHierarchy.php [new file with mode: 0644]
framework/ActiveSync/package.xml

diff --git a/framework/ActiveSync/lib/Horde/ActiveSync/Request/GetHierarchy.php b/framework/ActiveSync/lib/Horde/ActiveSync/Request/GetHierarchy.php
new file mode 100644 (file)
index 0000000..25139fb
--- /dev/null
@@ -0,0 +1,46 @@
+<?php
+/**
+ * Handle GetHierarchy requests from older activesync clients.
+ * 
+ * Logic adapted from Z-Push, original copyright notices below.
+ *
+ * Copyright 2009 - 2010 The Horde Project (http://www.horde.org)
+ *
+ * @author Michael J. Rubinsky <mrubinsk@horde.org>
+ * @package Horde_ActiveSync
+ */
+/**
+ * Zarafa Deutschland GmbH, www.zarafaserver.de
+ * This file is distributed under GPL v2.
+ * Consult LICENSE file for details
+ */
+class Horde_ActiveSync_Request_GetHierarchy extends Horde_ActiveSync_Request_Base
+{
+    /**
+     * Handle request
+     *
+     * @return boolean
+     */
+    public function handle()
+    {
+        $folders = $this->_driver->GetHierarchy();
+        if (!$folders) {
+            return false;
+        }
+
+        /* save folder-ids for fourther syncing */
+        $this->_stateMachine->setFolderData($this->_device, $folders);
+
+        $this->_encoder->StartWBXML();
+        $this->_encoder->startTag(self::FOLDERHIERARCHY_FOLDERS);
+
+        foreach ($folders as $folder) {
+            $this->_encoder->startTag(self::FOLDERHIERARCHY_FOLDER);
+            $folder->encodeStream($this->_encoder);
+            $this->_encoder->endTag();
+        }
+        $this->_encoder->endTag();
+
+        return true;
+    }
+}
\ No newline at end of file
index 36d4d35..0d4aca3 100644 (file)
@@ -72,6 +72,7 @@ http://pear.php.net/dtd/package-2.0.xsd">
          <file name="GetItemEstimate.php" role="php" />
          <file name="SendMail.php" role="php" />
          <file name="Search.php" role="php" />
+         <file name="GetHierarchy" role="php" />
        </dir>
        <file name="Exception.php" role="php" />
        <file name="Wbxml.php" role="php" />
@@ -125,6 +126,7 @@ http://pear.php.net/dtd/package-2.0.xsd">
    <install name="lib/Horde/ActiveSync/Request/GetItemEstimate.php" as="Horde/ActiveSync/Request/GetItemEstimate.php" />
    <install name="lib/Horde/ActiveSync/Request/SendMail.php" as="Horde/ActiveSync/Request/SendMail.php" />
    <install name="lib/Horde/ActiveSync/Request/Search.php" as="Horde/ActiveSync/Request/Search.php" />
+   <install name="lib/Horde/ActiveSync/Request/GetHierarchy.php" as="Horde/ActiveSync/Request/GetHierarchy.php" />
    <install name="lib/Horde/ActiveSync/Exception.php" as="Horde/ActiveSync/Exception.php" />
    <install name="lib/Horde/ActiveSync/Wbxml.php" as="Horde/ActiveSync/Wbxml.php" />
    <install name="lib/Horde/ActiveSync/Timezone.php" as="Horde/ActiveSync/Timezone.php" />