diff --git a/framework/Core/lib/Horde/Core/Factory/ActiveSyncState.php b/framework/Core/lib/Horde/Core/Factory/ActiveSyncState.php index ed782b3a373..06d9f33ed68 100644 --- a/framework/Core/lib/Horde/Core/Factory/ActiveSyncState.php +++ b/framework/Core/lib/Horde/Core/Factory/ActiveSyncState.php @@ -7,9 +7,20 @@ class Horde_Core_Factory_ActiveSyncState extends Horde_Core_Factory_Injector { public function create(Horde_Injector $injector) { - return new Horde_ActiveSync_State_Sql(array( - 'db' => $injector->getInstance('Horde_Db_Adapter') - )); + global $conf; + + $driver = $conf['activesync']['storage']; + switch (Horde_String::lower($driver)) { + case 'nosql': + $nosql = $injector->getInstance('Horde_Core_Factory_Nosql')->create('horde', 'activesync'); + return new Horde_ActiveSync_State_Mongo(array( + 'connection' => $nosql + )); + case 'sql': + return new Horde_ActiveSync_State_Sql(array( + 'db' => $injector->getInstance('Horde_Core_Factory_Db')->create('horde', 'activesync') + )); + } } } diff --git a/horde/config/conf.xml b/horde/config/conf.xml index d96f47e8c98..05bb974c0c2 100644 --- a/horde/config/conf.xml +++ b/horde/config/conf.xml @@ -2077,6 +2077,22 @@ false + Storage + ActiveSync needs to store information about device + properties and state data such as syncronization keys and hierarchy data. + Choose the storage backend to use. + + + + + + + + + + + + Capabilities true diff --git a/horde/lib/Application.php b/horde/lib/Application.php index d29d342e7fb..963f167fd0f 100644 --- a/horde/lib/Application.php +++ b/horde/lib/Application.php @@ -375,6 +375,10 @@ public function nosqlDrivers() if ($ob instanceof Horde_Vfs_Mongo) { $out[] = $ob; } + $ob = $injector->getInstance('Horde_ActiveSyncState'); + if ($ob instanceof Horde_ActiveSync_State_Mongo) { + $out[] = $ob; + } return $out; }