From 144880820479b4fa08ad08788b92b2b093ab7427 Mon Sep 17 00:00:00 2001 From: "Michael J. Rubinsky" Date: Sat, 10 Apr 2010 13:22:09 -0400 Subject: [PATCH] Make sure we have the APIs needed for each folder class --- .../ActiveSync/lib/Horde/ActiveSync/Driver/Horde.php | 17 ++++++++++++++--- .../ActiveSync/Driver/Horde/Connector/Registry.php | 15 +++++++++++++++ .../test/Horde/ActiveSync/HordeDriverTest.php | 2 +- 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/framework/ActiveSync/lib/Horde/ActiveSync/Driver/Horde.php b/framework/ActiveSync/lib/Horde/ActiveSync/Driver/Horde.php index 48040ca96..5b1b942dd 100644 --- a/framework/ActiveSync/lib/Horde/ActiveSync/Driver/Horde.php +++ b/framework/ActiveSync/lib/Horde/ActiveSync/Driver/Horde.php @@ -126,10 +126,21 @@ class Horde_ActiveSync_Driver_Horde extends Horde_ActiveSync_Driver_Base public function getFolderList() { $this->_logger->debug('Horde::getFolderList()'); + /* Make sure we have the APIs needed for each folder class */ + $supported = $this->_connector->horde_listApis(); $folders = array(); - $folders[] = $this->StatFolder(self::APPOINTMENTS_FOLDER); - $folders[] = $this->StatFolder(self::CONTACTS_FOLDER); - $folders[] = $this->StatFolder(self::TASKS_FOLDER); + + if (array_search('calendar', $supported)){ + $folders[] = $this->StatFolder(self::APPOINTMENTS_FOLDER); + } + + if (array_search('contacts', $supported)){ + $folders[] = $this->StatFolder(self::CONTACTS_FOLDER); + } + + if (array_search('tasks', $supported)){ + $folders[] = $this->StatFolder(self::TASKS_FOLDER); + } return $folders; } diff --git a/framework/ActiveSync/lib/Horde/ActiveSync/Driver/Horde/Connector/Registry.php b/framework/ActiveSync/lib/Horde/ActiveSync/Driver/Horde/Connector/Registry.php index 13c2656a1..2a4cd89ae 100644 --- a/framework/ActiveSync/lib/Horde/ActiveSync/Driver/Horde/Connector/Registry.php +++ b/framework/ActiveSync/lib/Horde/ActiveSync/Driver/Horde/Connector/Registry.php @@ -214,4 +214,19 @@ class Horde_ActiveSync_Driver_Horde_Connector_Registry return $result; } + public function tasks_listTasks() + { + return $this->_registry->tasks->listTasks(); + } + + public function horde_listApis() + { + return $this->_registry->horde->listAPIs(); + } + + public function horde_getPref($app, $pref) + { + return $this->_registry->horde->getPref($app, $pref); + } + } \ No newline at end of file diff --git a/framework/ActiveSync/test/Horde/ActiveSync/HordeDriverTest.php b/framework/ActiveSync/test/Horde/ActiveSync/HordeDriverTest.php index 96ee5bd88..6922d5533 100644 --- a/framework/ActiveSync/test/Horde/ActiveSync/HordeDriverTest.php +++ b/framework/ActiveSync/test/Horde/ActiveSync/HordeDriverTest.php @@ -244,7 +244,7 @@ class Horde_ActiveSync_HordeDriverTest extends Horde_Test_Case { $registry = $this->getMockSkipConstructor('Horde_Registry'); $state = $this->getMockSkipConstructor('Horde_ActiveSync_State_File'); - $connector = new Horde_ActiveSync_MockConnector(array('fixture' => array())); + $connector = new Horde_ActiveSync_MockConnector(array('fixture' => array('horde_listApis' => array('horde', 'contacts', 'calendar', 'tasks')))); $driver = new Horde_ActiveSync_Driver_Horde(array('connector' => $connector, 'state_basic' => $state)); $results = $driver->getFolderList(); -- 2.11.0