Add factory binder for activesync classes
authorMichael J. Rubinsky <mrubinsk@horde.org>
Fri, 22 Oct 2010 17:37:49 +0000 (13:37 -0400)
committerMichael J. Rubinsky <mrubinsk@horde.org>
Fri, 22 Oct 2010 17:42:00 +0000 (13:42 -0400)
framework/ActiveSync/package.xml
framework/Core/lib/Horde/Core/Factory/ActiveSyncBackend.php [new file with mode: 0644]
framework/Core/lib/Horde/Core/Factory/ActiveSyncServer.php [new file with mode: 0644]
framework/Core/lib/Horde/Core/Factory/ActiveSyncState.php [new file with mode: 0644]
framework/Core/lib/Horde/Registry.php
framework/Core/package.xml
horde/admin/activesync.php
horde/lib/Prefs/Ui.php
horde/rpc.php

index 802fff4..b583d65 100644 (file)
@@ -1,8 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<package packagerversion="1.4.9" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0
-http://pear.php.net/dtd/tasks-1.0.xsd
-http://pear.php.net/dtd/package-2.0
-http://pear.php.net/dtd/package-2.0.xsd">
+<package packagerversion="1.9.1" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
  <name>ActiveSync</name>
  <channel>pear.horde.org</channel>
  <summary>Horde ActiveSync Server Library</summary>
@@ -13,7 +10,8 @@ http://pear.php.net/dtd/package-2.0.xsd">
   <email>mrubinsk@horde.org</email>
   <active>yes</active>
  </lead>
- <date>2010-01-10</date>
+ <date>2010-10-22</date>
+ <time>13:14:23</time>
  <version>
   <release>0.1.0</release>
   <api>0.1.0</api>
@@ -27,61 +25,87 @@ http://pear.php.net/dtd/package-2.0.xsd">
 * Initial release
  </notes>
  <contents>
-  <dir name="/">
+  <dir baseinstalldir="/" name="/">
    <dir name="lib">
     <dir name="Horde">
+     <dir name="ActiveSync">
       <dir name="ActiveSync">
-       <dir name="Connector">
-         <file name="Exporter.php" role="php" />
-         <file name="Importer.php" role="php" />
-       </dir>
-       <dir name="State">
-         <file name="Base.php" role="php" />
-         <file name="File.php" role="php" />
-         <file name="History.php" role="php" />
-       </dir>
-       <dir name="Driver">
-         <dir name="Horde">
-           <dir name="Connector">
-             <file name="Registry.php" role="php" />
-           </dir>
-         </dir>
-         <file name="Base.php" role="php" />
-         <file name="Horde.php" role="php" />
-       </dir> <!-- /lib/Horde/ActiveSync/Driver -->
-       <dir name="Message">
-         <file name="Base.php" role="php" />
-         <file name="Appointment.php" role="php" />
-         <file name="Attendee.php" role="php" />
-         <file name="Contact.php" role="php" />
-         <file name="Folder.php" role="php" />
-         <file name="Recurrence.php" role="php" />
-         <file name="Exception.php" role="php" />
-         <file name="Task.php" role="php" />
-       </dir> <!-- /lib/Horde/ActiveSync/Message -->
-       <dir name="Wbxml">
-         <file name="Decoder.php" role="php" />
-         <file name="Encoder.php" role="php" />
-       </dir> <!-- /lib/Horde/ActiveSync/Wbxml -->
-       <dir name="Request">
-         <file name="Base.php" role="php" />
-         <file name="FolderSync.php" role="php" />
-         <file name="Sync.php" role="php" />
-         <file name="Ping.php" role="php" />
-         <file name="Provision.php" role="php" />
-         <file name="GetItemEstimate.php" role="php" />
-         <file name="SendMail.php" role="php" />
-         <file name="Search.php" role="php" />
-         <file name="GetHierarchy.php" role="php" />
-       </dir>
+       <file name="Factory.php" role="php" />
+      </dir> <!-- /lib/Horde/ActiveSync/ActiveSync -->
+      <dir name="Connector">
+       <file name="Exporter.php" role="php" />
+       <file name="Importer.php" role="php" />
+      </dir> <!-- /lib/Horde/ActiveSync/Connector -->
+      <dir name="Driver">
+       <dir name="Horde">
+        <dir name="Connector">
+         <file name="Registry.php" role="php" />
+        </dir> <!-- /lib/Horde/ActiveSync/Driver/Horde/Connector -->
+       </dir> <!-- /lib/Horde/ActiveSync/Driver/Horde -->
+       <file name="Base.php" role="php" />
+       <file name="Horde.php" role="php" />
+      </dir> <!-- /lib/Horde/ActiveSync/Driver -->
+      <dir name="Message">
+       <file name="Appointment.php" role="php" />
+       <file name="Attendee.php" role="php" />
+       <file name="Base.php" role="php" />
+       <file name="Contact.php" role="php" />
        <file name="Exception.php" role="php" />
-       <file name="Wbxml.php" role="php" />
-       <file name="Timezone.php" role="php" />
+       <file name="Folder.php" role="php" />
+       <file name="Recurrence.php" role="php" />
+       <file name="Task.php" role="php" />
+      </dir> <!-- /lib/Horde/ActiveSync/Message -->
+      <dir name="Request">
+       <file name="Base.php" role="php" />
+       <file name="FolderCreate.php" role="php" />
+       <file name="FolderSync.php" role="php" />
+       <file name="GetAttachment" role="php" />
+       <file name="GetHierarchy.php" role="php" />
+       <file name="GetItemEstimate.php" role="php" />
+       <file name="MeetingResponse.php" role="php" />
+       <file name="MoveItems.php" role="php" />
+       <file name="Notify.php" role="php" />
+       <file name="Ping.php" role="php" />
+       <file name="Provision.php" role="php" />
+       <file name="Search.php" role="php" />
+       <file name="SendMail.php" role="php" />
+       <file name="SmartForward.php" role="php" />
+       <file name="SmartReply.php" role="php" />
        <file name="Sync.php" role="php" />
-      </dir> <!-- /lib/Horde/ActiveSync -->
-      <file name="ActiveSync.php" role="php" />
+      </dir> <!-- /lib/Horde/ActiveSync/Request -->
+      <dir name="State">
+       <file name="Base.php" role="php" />
+       <file name="File.php" role="php" />
+       <file name="History.php" role="php" />
+      </dir> <!-- /lib/Horde/ActiveSync/State -->
+      <dir name="Wbxml">
+       <file name="Decoder.php" role="php" />
+       <file name="Encoder.php" role="php" />
+      </dir> <!-- /lib/Horde/ActiveSync/Wbxml -->
+      <file name="Exception.php" role="php" />
+      <file name="Sync.php" role="php" />
+      <file name="Timezone.php" role="php" />
+      <file name="Wbxml.php" role="php" />
+     </dir> <!-- /lib/Horde/ActiveSync -->
+     <file name="ActiveSync.php" role="php" />
     </dir> <!-- /lib/Horde -->
    </dir> <!-- /lib -->
+   <dir name="test">
+    <dir name="Horde">
+     <dir name="ActiveSync">
+      <dir name="fixtures">
+       <file name="FolderSyncRequest.txt" role="test" />
+      </dir> <!-- /test/Horde/ActiveSync/fixtures -->
+      <file name="AllTests.php" role="test" />
+      <file name="ContactTest.php" role="test" />
+      <file name="FileStateTest.php" role="test" />
+      <file name="FolderSyncTest.php" role="test" />
+      <file name="HordeDriverTest.php" role="test" />
+      <file name="TimezoneTest.php" role="test" />
+      <file name="{137c3bb0-838d-499a-9f0e-fb6c0761da51}1" role="test" />
+     </dir> <!-- /test/Horde/ActiveSync -->
+    </dir> <!-- /test/Horde -->
+   </dir> <!-- /test -->
   </dir> <!-- / -->
  </contents>
  <dependencies>
@@ -100,38 +124,71 @@ http://pear.php.net/dtd/package-2.0.xsd">
  </dependencies>
  <phprelease>
   <filelist>
-   <install name="lib/Horde/ActiveSync/Connector/Exporter.php" as="Horde/ActiveSync/Connector/Exporter.php" />
-   <install name="lib/Horde/ActiveSync/Connector/Importer.php" as="Horde/ActiveSync/Connector/Importer.php" />
-   <install name="lib/Horde/ActiveSync/State/Base.php" as="Horde/ActiveSync/State/Base.php" />
-   <install name="lib/Horde/ActiveSync/State/File.php" as="Horde/ActiveSync/State/File.php" />
-   <install name="lib/Horde/ActiveSync/State/History.php" as="Horde/ActiveSync/State/History.php" />
-   <install name="lib/Horde/ActiveSync/Driver/Horde/Connector/Registry.php" as="Horde/ActiveSync/Driver/Horde/Connector/Registry.php" />
-   <install name="lib/Horde/ActiveSync/Driver/Base.php" as="Horde/ActiveSync/Driver/Base.php" />
-   <install name="lib/Horde/ActiveSync/Driver/Horde.php" as="Horde/ActiveSync/Driver/Horde.php" />
-   <install name="lib/Horde/ActiveSync/Message/Base.php" as="Horde/ActiveSync/Message/Base.php" />
-   <install name="lib/Horde/ActiveSync/Message/Appointment.php" as="Horde/ActiveSync/Message/Appointment.php" />
-   <install name="lib/Horde/ActiveSync/Message/Attendee.php" as="Horde/ActiveSync/Message/Attendee.php" />
-   <install name="lib/Horde/ActiveSync/Message/Contact.php" as="Horde/ActiveSync/Message/Contact.php" />
-   <install name="lib/Horde/ActiveSync/Message/Folder.php" as="Horde/ActiveSync/Message/Folder.php" />
-   <install name="lib/Horde/ActiveSync/Message/Recurrence.php" as="Horde/ActiveSync/Message/Recurrence.php" />
-   <install name="lib/Horde/ActiveSync/Message/Exception.php" as="Horde/ActiveSync/Message/Exception.php" />
-   <install name="lib/Horde/ActiveSync/Message/Task.php" as="Horde/ActiveSync/Message/Task.php" />
-   <install name="lib/Horde/ActiveSync/Wbxml/Decoder.php" as="Horde/ActiveSync/Wbxml/Decoder.php" />
-   <install name="lib/Horde/ActiveSync/Wbxml/Encoder.php" as="Horde/ActiveSync/Wbxml/Encoder.php" />
-   <install name="lib/Horde/ActiveSync/Request/Base.php" as="Horde/ActiveSync/Request/Base.php" />
-   <install name="lib/Horde/ActiveSync/Request/FolderSync.php" as="Horde/ActiveSync/Request/FolderSync.php" />
-   <install name="lib/Horde/ActiveSync/Request/Sync.php" as="Horde/ActiveSync/Request/Sync.php" />
-   <install name="lib/Horde/ActiveSync/Request/Ping.php" as="Horde/ActiveSync/Request/Ping.php" />
-   <install name="lib/Horde/ActiveSync/Request/Provision.php" as="Horde/ActiveSync/Request/Provision.php" />
-   <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" />
-   <install name="lib/Horde/ActiveSync/Sync.php" as="Horde/ActiveSync/Sync.php" />
-   <install name="lib/Horde/ActiveSync.php" as="Horde/ActiveSync.php" />
+   <install as="Horde/ActiveSync.php" name="lib/Horde/ActiveSync.php" />
+   <install as="Horde/ActiveSync/Exception.php" name="lib/Horde/ActiveSync/Exception.php" />
+   <install as="Horde/ActiveSync/Sync.php" name="lib/Horde/ActiveSync/Sync.php" />
+   <install as="Horde/ActiveSync/Timezone.php" name="lib/Horde/ActiveSync/Timezone.php" />
+   <install as="Horde/ActiveSync/Wbxml.php" name="lib/Horde/ActiveSync/Wbxml.php" />
+   <install as="Horde/ActiveSync/ActiveSync/Factory.php" name="lib/Horde/ActiveSync/ActiveSync/Factory.php" />
+   <install as="Horde/ActiveSync/Connector/Exporter.php" name="lib/Horde/ActiveSync/Connector/Exporter.php" />
+   <install as="Horde/ActiveSync/Connector/Importer.php" name="lib/Horde/ActiveSync/Connector/Importer.php" />
+   <install as="Horde/ActiveSync/Driver/Base.php" name="lib/Horde/ActiveSync/Driver/Base.php" />
+   <install as="Horde/ActiveSync/Driver/Horde.php" name="lib/Horde/ActiveSync/Driver/Horde.php" />
+   <install as="Horde/ActiveSync/Driver/Horde/Connector/Registry.php" name="lib/Horde/ActiveSync/Driver/Horde/Connector/Registry.php" />
+   <install as="Horde/ActiveSync/Message/Appointment.php" name="lib/Horde/ActiveSync/Message/Appointment.php" />
+   <install as="Horde/ActiveSync/Message/Attendee.php" name="lib/Horde/ActiveSync/Message/Attendee.php" />
+   <install as="Horde/ActiveSync/Message/Base.php" name="lib/Horde/ActiveSync/Message/Base.php" />
+   <install as="Horde/ActiveSync/Message/Contact.php" name="lib/Horde/ActiveSync/Message/Contact.php" />
+   <install as="Horde/ActiveSync/Message/Exception.php" name="lib/Horde/ActiveSync/Message/Exception.php" />
+   <install as="Horde/ActiveSync/Message/Folder.php" name="lib/Horde/ActiveSync/Message/Folder.php" />
+   <install as="Horde/ActiveSync/Message/Recurrence.php" name="lib/Horde/ActiveSync/Message/Recurrence.php" />
+   <install as="Horde/ActiveSync/Message/Task.php" name="lib/Horde/ActiveSync/Message/Task.php" />
+   <install as="Horde/ActiveSync/Request/Base.php" name="lib/Horde/ActiveSync/Request/Base.php" />
+   <install as="Horde/ActiveSync/Request/FolderCreate.php" name="lib/Horde/ActiveSync/Request/FolderCreate.php" />
+   <install as="Horde/ActiveSync/Request/FolderSync.php" name="lib/Horde/ActiveSync/Request/FolderSync.php" />
+   <install as="Horde/ActiveSync/Request/GetAttachment" name="lib/Horde/ActiveSync/Request/GetAttachment" />
+   <install as="Horde/ActiveSync/Request/GetHierarchy.php" name="lib/Horde/ActiveSync/Request/GetHierarchy.php" />
+   <install as="Horde/ActiveSync/Request/GetItemEstimate.php" name="lib/Horde/ActiveSync/Request/GetItemEstimate.php" />
+   <install as="Horde/ActiveSync/Request/MeetingResponse.php" name="lib/Horde/ActiveSync/Request/MeetingResponse.php" />
+   <install as="Horde/ActiveSync/Request/MoveItems.php" name="lib/Horde/ActiveSync/Request/MoveItems.php" />
+   <install as="Horde/ActiveSync/Request/Notify.php" name="lib/Horde/ActiveSync/Request/Notify.php" />
+   <install as="Horde/ActiveSync/Request/Ping.php" name="lib/Horde/ActiveSync/Request/Ping.php" />
+   <install as="Horde/ActiveSync/Request/Provision.php" name="lib/Horde/ActiveSync/Request/Provision.php" />
+   <install as="Horde/ActiveSync/Request/Search.php" name="lib/Horde/ActiveSync/Request/Search.php" />
+   <install as="Horde/ActiveSync/Request/SendMail.php" name="lib/Horde/ActiveSync/Request/SendMail.php" />
+   <install as="Horde/ActiveSync/Request/SmartForward.php" name="lib/Horde/ActiveSync/Request/SmartForward.php" />
+   <install as="Horde/ActiveSync/Request/SmartReply.php" name="lib/Horde/ActiveSync/Request/SmartReply.php" />
+   <install as="Horde/ActiveSync/Request/Sync.php" name="lib/Horde/ActiveSync/Request/Sync.php" />
+   <install as="Horde/ActiveSync/State/Base.php" name="lib/Horde/ActiveSync/State/Base.php" />
+   <install as="Horde/ActiveSync/State/File.php" name="lib/Horde/ActiveSync/State/File.php" />
+   <install as="Horde/ActiveSync/State/History.php" name="lib/Horde/ActiveSync/State/History.php" />
+   <install as="Horde/ActiveSync/Wbxml/Decoder.php" name="lib/Horde/ActiveSync/Wbxml/Decoder.php" />
+   <install as="Horde/ActiveSync/Wbxml/Encoder.php" name="lib/Horde/ActiveSync/Wbxml/Encoder.php" />
+   <install as="Horde/ActiveSync/AllTests.php" name="test/Horde/ActiveSync/AllTests.php" />
+   <install as="Horde/ActiveSync/ContactTest.php" name="test/Horde/ActiveSync/ContactTest.php" />
+   <install as="Horde/ActiveSync/FileStateTest.php" name="test/Horde/ActiveSync/FileStateTest.php" />
+   <install as="Horde/ActiveSync/FolderSyncTest.php" name="test/Horde/ActiveSync/FolderSyncTest.php" />
+   <install as="Horde/ActiveSync/HordeDriverTest.php" name="test/Horde/ActiveSync/HordeDriverTest.php" />
+   <install as="Horde/ActiveSync/TimezoneTest.php" name="test/Horde/ActiveSync/TimezoneTest.php" />
+   <install as="Horde/ActiveSync/{137c3bb0-838d-499a-9f0e-fb6c0761da51}1" name="test/Horde/ActiveSync/{137c3bb0-838d-499a-9f0e-fb6c0761da51}1" />
+   <install as="Horde/ActiveSync/fixtures/FolderSyncRequest.txt" name="test/Horde/ActiveSync/fixtures/FolderSyncRequest.txt" />
   </filelist>
  </phprelease>
+ <changelog>
+  <release>
+   <version>
+    <release>0.1.0</release>
+    <api>0.1.0</api>
+   </version>
+   <stability>
+    <release>alpha</release>
+    <api>alpha</api>
+   </stability>
+   <date>2010-10-22</date>
+   <license uri="http://www.gnu.org/licenses/gpl-2.0.html">GPLv2</license>
+   <notes>
+* Initial release
+   </notes>
+  </release>
+ </changelog>
 </package>
diff --git a/framework/Core/lib/Horde/Core/Factory/ActiveSyncBackend.php b/framework/Core/lib/Horde/Core/Factory/ActiveSyncBackend.php
new file mode 100644 (file)
index 0000000..1b03ac1
--- /dev/null
@@ -0,0 +1,35 @@
+<?php
+/**
+ * @category Horde
+ * @package Core
+ */
+class Horde_Core_Factory_ActiveSyncBackend
+{
+    public function create(Horde_Injector $injector)
+    {
+        global $conf;
+
+        $params = array();
+
+        // Logger
+        if ($conf['activesync']['logging']['type'] == 'custom') {
+            $params['logger'] = new Horde_Log_Logger(new Horde_Log_Handler_Stream(fopen($conf['activesync']['logging']['path'], 'a')));
+        } else {
+            $params['logger'] = $injector->getInstance('Horde_Log_Logger');
+        }
+        
+        // Backend driver and dependencies
+        $params['registry'] = $GLOBALS['registry'];
+        $driver_params = array(
+            'connector' => new Horde_ActiveSync_Driver_Horde_Connector_Registry($params),
+            'ping' => $conf['activesync']['ping'],
+            'state_basic' => $injector->getInstance('Horde_ActiveSyncState'),
+            'auth' => $injector->getInstance('Horde_Core_Factory_Auth')->create());
+        if ($params['provisioning'] = $conf['activesync']['securitypolicies']['provisioning']) {
+            $driver_params['policies'] = $conf['activesync']['securitypolicies'];
+        }
+
+        return new Horde_ActiveSync_Driver_Horde($driver_params);
+    }
+
+}
\ No newline at end of file
diff --git a/framework/Core/lib/Horde/Core/Factory/ActiveSyncServer.php b/framework/Core/lib/Horde/Core/Factory/ActiveSyncServer.php
new file mode 100644 (file)
index 0000000..2494186
--- /dev/null
@@ -0,0 +1,32 @@
+<?php
+/**
+ * @category Horde
+ * @package Core
+ */
+class Horde_Core_Factory_ActiveSyncServer
+{
+    public function create(Horde_Injector $injector)
+    {
+        global $conf;
+
+        // Logger
+        if ($conf['activesync']['logging']['type'] == 'custom') {
+            $logger = new Horde_Log_Logger(new Horde_Log_Handler_Stream(fopen($conf['activesync']['logging']['path'], 'a')));
+        } else {
+            $logger = $injector->getInstance('Horde_Log_Logger');
+        }
+
+        $request = $injector->getInstance('Horde_Controller_Request');
+        $backend = $injector->getInstance('Horde_ActiveSyncBackend');
+        $server = new Horde_ActiveSync(
+            $backend,
+            new Horde_ActiveSync_Wbxml_Decoder(fopen('php://input', 'r')),
+            new Horde_ActiveSync_Wbxml_Encoder(fopen('php://output', 'w+')),
+            $request);
+
+        $server->setLogger($logger);
+
+        return $server;
+    }
+
+}
\ No newline at end of file
diff --git a/framework/Core/lib/Horde/Core/Factory/ActiveSyncState.php b/framework/Core/lib/Horde/Core/Factory/ActiveSyncState.php
new file mode 100644 (file)
index 0000000..33d28a4
--- /dev/null
@@ -0,0 +1,19 @@
+<?php
+/**
+ * @category Horde
+ * @package Core
+ */
+class Horde_Core_Factory_ActiveSyncState
+{
+    public function create(Horde_Injector $injector)
+    {
+        global $conf;
+
+        // Backend driver and dependencies
+        $state_params = $conf['activesync']['state']['params'];
+        $state_params['db'] = $injector->getInstance('Horde_Db_Adapter');
+
+        return new Horde_ActiveSync_State_History($state_params);
+    }
+
+}
\ No newline at end of file
index fc5d349..64117a1 100644 (file)
@@ -253,6 +253,9 @@ class Horde_Registry
          * classname (string). If other function needed, define as the
          * second element in an array. */
         $factories = array(
+            'Horde_ActiveSyncBackend' => 'Horde_Core_Factory_ActiveSyncBackend',
+            'Horde_ActiveSyncServer' => 'Horde_Core_Factory_ActiveSyncServer',
+            'Horde_ActiveSyncState' => 'Horde_Core_Factory_ActiveSyncState',
             'Horde_Alarm' => 'Horde_Core_Factory_Alarm',
             'Horde_Browser' => 'Horde_Core_Factory_Browser',
             'Horde_Cache' => 'Horde_Core_Factory_Cache',
index d6ec677..f36ab07 100644 (file)
@@ -24,7 +24,7 @@ Application Framework.</description>
   <active>yes</active>
  </developer>
  <date>2010-10-22</date>
- <time>19:03:05</time>
+ <time>13:14:28</time>
  <version>
   <release>0.1.0</release>
   <api>0.1.0</api>
@@ -116,6 +116,9 @@ Application Framework.</description>
        <file name="SettingsFinder.php" role="php" />
       </dir> <!-- /lib/Horde/Core/Controller -->
       <dir name="Factory">
+       <file name="ActiveSyncBackend.php" role="php" />
+       <file name="ActiveSyncServer.php" role="php" />
+       <file name="ActiveSyncState.php" role="php" />
        <file name="Ajax.php" role="php" />
        <file name="Alarm.php" role="php" />
        <file name="Auth.php" role="php" />
@@ -694,6 +697,9 @@ Application Framework.</description>
    <install as="Horde/Core/Controller/RequestConfiguration.php" name="lib/Horde/Core/Controller/RequestConfiguration.php" />
    <install as="Horde/Core/Controller/RequestMapper.php" name="lib/Horde/Core/Controller/RequestMapper.php" />
    <install as="Horde/Core/Controller/SettingsFinder.php" name="lib/Horde/Core/Controller/SettingsFinder.php" />
+   <install as="Horde/Core/Factory/ActiveSyncBackend.php" name="lib/Horde/Core/Factory/ActiveSyncBackend.php" />
+   <install as="Horde/Core/Factory/ActiveSyncServer.php" name="lib/Horde/Core/Factory/ActiveSyncServer.php" />
+   <install as="Horde/Core/Factory/ActiveSyncState.php" name="lib/Horde/Core/Factory/ActiveSyncState.php" />
    <install as="Horde/Core/Factory/Ajax.php" name="lib/Horde/Core/Factory/Ajax.php" />
    <install as="Horde/Core/Factory/Alarm.php" name="lib/Horde/Core/Factory/Alarm.php" />
    <install as="Horde/Core/Factory/Auth.php" name="lib/Horde/Core/Factory/Auth.php" />
index 4768819..4911fc9 100644 (file)
@@ -19,11 +19,7 @@ Horde_Registry::appInit('horde', array('admin' => true));
 if (empty($conf['activesync']['enabled'])) {
     throw new Horde_Exception_PermissionDenied(_("ActiveSync not activated."));
 }
-
-$state_params = array_merge($conf['activesync']['state']['params'], array(
-    'db' => $injector->getInstance('Horde_Db_Adapter')
-));
-$stateMachine = new Horde_ActiveSync_State_History($state_params);
+$stateMachine = $injector->getInstance('Horde_ActiveSyncState');
 $stateMachine->setLogger($injector->getInstance('Horde_Log_Logger'));
 
 /** Check for any actions **/
index a84db9f..23da694 100644 (file)
@@ -376,10 +376,7 @@ class Horde_Prefs_Ui
             return _("ActiveSync not activated.");
         }
 
-        $state_params = array_merge($GLOBALS['conf']['activesync']['state']['params'], array(
-            'db' => $GLOBALS['injector']->getInstance('Horde_Db_Adapter')
-        ));
-        $stateMachine = new Horde_ActiveSync_State_History($state_params);
+        $stateMachine = $GLOBALS['injector']->getInstance('Horde_ActiveSyncState');
         $devices = $stateMachine->listDevices($GLOBALS['registry']->getAuth());
 
         $js = array();
@@ -733,9 +730,7 @@ class Horde_Prefs_Ui
      */
     protected function _updateActiveSyncManagement($ui)
     {
-        $state_params = $GLOBALS['conf']['activesync']['state']['params'];
-        $state_params['db'] = $GLOBALS['injector']->getInstance('Horde_Db_Adapter');
-        $stateMachine = new Horde_ActiveSync_State_History($state_params);
+        $stateMachine = $GLOBALS['injector']->getInstance('Horde_ActiveSyncState');
         $stateMachine->setLogger($GLOBALS['injector']->getInstance('Horde_Log_Logger'));
         if ($ui->vars->wipeid) {
             $stateMachine->loadDeviceInfo($ui->vars->wipeid, $GLOBALS['registry']->getAuth());
index 5855d95..5fa0ded 100644 (file)
@@ -25,10 +25,8 @@ require_once dirname(__FILE__) . '/lib/Application.php';
 
 // We have a chicken-and-egg problem here regarding app initialization. Since
 // different RPC servers have different session requirements, we can't call
-// appInit() until we know which server we are requesting. The Request object
-// also needs to know that we don't want a session since it tries to access/
-// initialize the session state.  We therfore don't create the Request object
-// or initialize the application until after we know the rpc server we want.
+// appInit() until we know which server we are requesting. We therefor don't
+// initialize the application until after we know the rpc server we want.
 $input = $session_control = null;
 $nocompress = false;
 $params = array();
@@ -96,33 +94,8 @@ case 'ActiveSync':
     if (empty($conf['activesync']['enabled'])) {
         exit;
     }
-
-    if ($conf['activesync']['logging']['type'] == 'custom') {
-        $params['logger'] = new Horde_Log_Logger(new Horde_Log_Handler_Stream(fopen($conf['activesync']['logging']['path'], 'a')));
-    }
-
-    $state_params = $conf['activesync']['state']['params'];
-    $state_params['db'] = $injector->getInstance('Horde_Db_Adapter');
-    $stateMachine = new Horde_ActiveSync_State_History($state_params);
-    $params['registry'] = $registry;
-    $driver_params = array(
-        'connector' => new Horde_ActiveSync_Driver_Horde_Connector_Registry($params),
-        'ping' => $conf['activesync']['ping'],
-        'state_basic' => $stateMachine,
-        'auth' => $GLOBALS['injector']->getInstance('Horde_Core_Factory_Auth')->create()
-    );
-
-    if ($params['provisioning'] = $conf['activesync']['securitypolicies']['provisioning']) {
-        $driver_params['policies'] = $conf['activesync']['securitypolicies'];
-    }
-    $params['backend'] = new Horde_ActiveSync_Driver_Horde($driver_params);
-    $params['server'] = new Horde_ActiveSync(
-        $params['backend'],
-        new Horde_ActiveSync_Wbxml_Decoder(fopen('php://input', 'r')),
-        new Horde_ActiveSync_Wbxml_Encoder(fopen('php://output', 'w+')),
-        $request
-    );
-    $params['server']->setLogger($params['logger']);
+    $params['backend'] = $injector->getInstance('Horde_ActiveSyncBackend');
+    $params['server'] = $injector->getInstance('Horde_ActiveSyncServer');
     break;
 
 case 'Soap':