From 511816b878d2574cdb1ee638ab731dbf635ff035 Mon Sep 17 00:00:00 2001 From: Bart Visscher Date: Wed, 9 Apr 2014 21:53:06 +0200 Subject: Implement the register function of OC\ContactsManager --- lib/private/contactsmanager.php | 60 ++++++++++++++++++++++++++++++++--------- 1 file changed, 48 insertions(+), 12 deletions(-) diff --git a/lib/private/contactsmanager.php b/lib/private/contactsmanager.php index 1cb3da7098f..fb0f938db36 100644 --- a/lib/private/contactsmanager.php +++ b/lib/private/contactsmanager.php @@ -34,6 +34,7 @@ namespace OC { * @return array of contacts which are arrays of key-value-pairs */ public function search($pattern, $searchProperties = array(), $options = array()) { + $this->loadAddressBooks(); $result = array(); foreach($this->address_books as $address_book) { $r = $address_book->search($pattern, $searchProperties, $options); @@ -51,12 +52,14 @@ namespace OC { * @return bool successful or not */ public function delete($id, $address_book_key) { - if (!array_key_exists($address_book_key, $this->address_books)) + $address_book = $this->getAddressBook($address_book_key); + if (!$address_book) { return null; + } - $address_book = $this->address_books[$address_book_key]; - if ($address_book->getPermissions() & \OCP\PERMISSION_DELETE) + if ($address_book->getPermissions() & \OCP\PERMISSION_DELETE) { return null; + } return $address_book->delete($id); } @@ -70,13 +73,14 @@ namespace OC { * @return array representing the contact just created or updated */ public function createOrUpdate($properties, $address_book_key) { - - if (!array_key_exists($address_book_key, $this->address_books)) + $address_book = $this->getAddressBook($address_book_key); + if (!$address_book) { return null; + } - $address_book = $this->address_books[$address_book_key]; - if ($address_book->getPermissions() & \OCP\PERMISSION_CREATE) + if ($address_book->getPermissions() & \OCP\PERMISSION_CREATE) { return null; + } return $address_book->createOrUpdate($properties); } @@ -87,7 +91,7 @@ namespace OC { * @return bool true if enabled, false if not */ public function isEnabled() { - return !empty($this->address_books); + return !empty($this->address_books) || !empty($this->address_book_loaders); } /** @@ -108,6 +112,7 @@ namespace OC { * @return array */ public function getAddressBooks() { + $this->loadAddressBooks(); $result = array(); foreach($this->address_books as $address_book) { $result[$address_book->getKey()] = $address_book->getDisplayName(); @@ -121,6 +126,7 @@ namespace OC { */ public function clear() { $this->address_books = array(); + $this->address_book_loaders = array(); } /** @@ -128,6 +134,11 @@ namespace OC { */ private $address_books = array(); + /** + * @var \Closure[] to call to load/register address books + */ + private $address_book_loaders = array(); + /** * In order to improve lazy loading a closure can be registered which will be called in case * address books are actually requested @@ -135,11 +146,36 @@ namespace OC { * @param string $key * @param \Closure $callable */ - function register($key, \Closure $callable) + public function register($key, \Closure $callable) { - // - //TODO: implement me - // + $this->address_book_loaders[$key] = $callable; + } + + /** + * Get (and load when needed) the address book for $key + * + * @param string $address_book_key + * @return \OCP\IAddressBook + */ + protected function getAddressBook($address_book_key) + { + $this->loadAddressBooks(); + if (!array_key_exists($address_book_key, $this->address_books)) { + return null; + } + + return $this->address_books[$address_book_key]; + } + + /** + * Load all address books registered with 'register' + */ + protected function loadAddressBooks() + { + foreach($this->address_book_loaders as $callable) { + $callable(); + } + $this->address_book_loaders = array(); } } } -- cgit v1.2.3 From 5c412f480cb885516a3bdd22f9b9e5f49394eec4 Mon Sep 17 00:00:00 2001 From: Bart Visscher Date: Thu, 10 Apr 2014 18:06:31 +0200 Subject: $key is not needed for registering contactsmanager callbacks --- lib/private/contactsmanager.php | 5 ++--- lib/public/contacts/imanager.php | 3 +-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/lib/private/contactsmanager.php b/lib/private/contactsmanager.php index fb0f938db36..02338453bec 100644 --- a/lib/private/contactsmanager.php +++ b/lib/private/contactsmanager.php @@ -143,12 +143,11 @@ namespace OC { * In order to improve lazy loading a closure can be registered which will be called in case * address books are actually requested * - * @param string $key * @param \Closure $callable */ - public function register($key, \Closure $callable) + public function register(\Closure $callable) { - $this->address_book_loaders[$key] = $callable; + $this->address_book_loaders[] = $callable; } /** diff --git a/lib/public/contacts/imanager.php b/lib/public/contacts/imanager.php index 005b71f298b..1387836573b 100644 --- a/lib/public/contacts/imanager.php +++ b/lib/public/contacts/imanager.php @@ -138,11 +138,10 @@ namespace OCP\Contacts { * In order to improve lazy loading a closure can be registered which will be called in case * address books are actually requested * - * @param string $key * @param \Closure $callable * @return void */ - function register($key, \Closure $callable); + function register(\Closure $callable); /** * @return array -- cgit v1.2.3 From 694244f2e0ea138049869072de496e5f1210a3a7 Mon Sep 17 00:00:00 2001 From: Bart Visscher Date: Thu, 10 Apr 2014 18:07:15 +0200 Subject: Supply the contactsmanager object to the callbacks --- lib/private/contactsmanager.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/private/contactsmanager.php b/lib/private/contactsmanager.php index 02338453bec..fb2981f8e31 100644 --- a/lib/private/contactsmanager.php +++ b/lib/private/contactsmanager.php @@ -172,7 +172,7 @@ namespace OC { protected function loadAddressBooks() { foreach($this->address_book_loaders as $callable) { - $callable(); + $callable($this); } $this->address_book_loaders = array(); } -- cgit v1.2.3 From 9583549556c91b109c3965ea40f708a0f46c8f51 Mon Sep 17 00:00:00 2001 From: Bart Visscher Date: Thu, 17 Apr 2014 17:56:23 +0200 Subject: camelCase vars in OC\ContactsManager --- lib/private/contactsmanager.php | 68 ++++++++++++++++++++--------------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/lib/private/contactsmanager.php b/lib/private/contactsmanager.php index fb2981f8e31..c08f739bf33 100644 --- a/lib/private/contactsmanager.php +++ b/lib/private/contactsmanager.php @@ -36,8 +36,8 @@ namespace OC { public function search($pattern, $searchProperties = array(), $options = array()) { $this->loadAddressBooks(); $result = array(); - foreach($this->address_books as $address_book) { - $r = $address_book->search($pattern, $searchProperties, $options); + foreach($this->addressBooks as $addressBook) { + $r = $addressBook->search($pattern, $searchProperties, $options); $result = array_merge($result, $r); } @@ -48,20 +48,20 @@ namespace OC { * This function can be used to delete the contact identified by the given id * * @param object $id the unique identifier to a contact - * @param string $address_book_key identifier of the address book in which the contact shall be deleted + * @param string $addressBookKey identifier of the address book in which the contact shall be deleted * @return bool successful or not */ - public function delete($id, $address_book_key) { - $address_book = $this->getAddressBook($address_book_key); - if (!$address_book) { + public function delete($id, $addressBookKey) { + $addressBook = $this->getAddressBook($addressBookKey); + if (!$addressBook) { return null; } - if ($address_book->getPermissions() & \OCP\PERMISSION_DELETE) { + if ($addressBook->getPermissions() & \OCP\PERMISSION_DELETE) { return null; } - return $address_book->delete($id); + return $addressBook->delete($id); } /** @@ -69,20 +69,20 @@ namespace OC { * Otherwise the contact will be updated by replacing the entire data set. * * @param array $properties this array if key-value-pairs defines a contact - * @param string $address_book_key identifier of the address book in which the contact shall be created or updated + * @param string $addressBookKey identifier of the address book in which the contact shall be created or updated * @return array representing the contact just created or updated */ - public function createOrUpdate($properties, $address_book_key) { - $address_book = $this->getAddressBook($address_book_key); - if (!$address_book) { + public function createOrUpdate($properties, $addressBookKey) { + $addressBook = $this->getAddressBook($addressBookKey); + if (!$addressBook) { return null; } - if ($address_book->getPermissions() & \OCP\PERMISSION_CREATE) { + if ($addressBook->getPermissions() & \OCP\PERMISSION_CREATE) { return null; } - return $address_book->createOrUpdate($properties); + return $addressBook->createOrUpdate($properties); } /** @@ -91,21 +91,21 @@ namespace OC { * @return bool true if enabled, false if not */ public function isEnabled() { - return !empty($this->address_books) || !empty($this->address_book_loaders); + return !empty($this->addressBooks) || !empty($this->addressBookLoaders); } /** - * @param \OCP\IAddressBook $address_book + * @param \OCP\IAddressBook $addressBook */ - public function registerAddressBook(\OCP\IAddressBook $address_book) { - $this->address_books[$address_book->getKey()] = $address_book; + public function registerAddressBook(\OCP\IAddressBook $addressBook) { + $this->addressBooks[$addressBook->getKey()] = $addressBook; } /** - * @param \OCP\IAddressBook $address_book + * @param \OCP\IAddressBook $addressBook */ - public function unregisterAddressBook(\OCP\IAddressBook $address_book) { - unset($this->address_books[$address_book->getKey()]); + public function unregisterAddressBook(\OCP\IAddressBook $addressBook) { + unset($this->addressBooks[$addressBook->getKey()]); } /** @@ -114,8 +114,8 @@ namespace OC { public function getAddressBooks() { $this->loadAddressBooks(); $result = array(); - foreach($this->address_books as $address_book) { - $result[$address_book->getKey()] = $address_book->getDisplayName(); + foreach($this->addressBooks as $addressBook) { + $result[$addressBook->getKey()] = $addressBook->getDisplayName(); } return $result; @@ -125,19 +125,19 @@ namespace OC { * removes all registered address book instances */ public function clear() { - $this->address_books = array(); - $this->address_book_loaders = array(); + $this->addressBooks = array(); + $this->addressBookLoaders = array(); } /** * @var \OCP\IAddressBook[] which holds all registered address books */ - private $address_books = array(); + private $addressBooks = array(); /** * @var \Closure[] to call to load/register address books */ - private $address_book_loaders = array(); + private $addressBookLoaders = array(); /** * In order to improve lazy loading a closure can be registered which will be called in case @@ -147,23 +147,23 @@ namespace OC { */ public function register(\Closure $callable) { - $this->address_book_loaders[] = $callable; + $this->addressBookLoaders[] = $callable; } /** * Get (and load when needed) the address book for $key * - * @param string $address_book_key + * @param string $addressBookKey * @return \OCP\IAddressBook */ - protected function getAddressBook($address_book_key) + protected function getAddressBook($addressBookKey) { $this->loadAddressBooks(); - if (!array_key_exists($address_book_key, $this->address_books)) { + if (!array_key_exists($addressBookKey, $this->addressBooks)) { return null; } - return $this->address_books[$address_book_key]; + return $this->addressBooks[$addressBookKey]; } /** @@ -171,10 +171,10 @@ namespace OC { */ protected function loadAddressBooks() { - foreach($this->address_book_loaders as $callable) { + foreach($this->addressBookLoaders as $callable) { $callable($this); } - $this->address_book_loaders = array(); + $this->addressBookLoaders = array(); } } } -- cgit v1.2.3 From 7c0370105af504e31fa2d6be088273a3bba7262f Mon Sep 17 00:00:00 2001 From: Bart Visscher Date: Sat, 26 Apr 2014 11:15:09 +0200 Subject: Fix wrong var name --- lib/private/contactsmanager.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/private/contactsmanager.php b/lib/private/contactsmanager.php index a7cbba6c639..8cfbb3da9f6 100644 --- a/lib/private/contactsmanager.php +++ b/lib/private/contactsmanager.php @@ -40,7 +40,7 @@ namespace OC { $r = $addressBook->search($pattern, $searchProperties, $options); $contacts = array(); foreach($r as $c){ - $c['addressbook-key'] = $address_book->getKey(); + $c['addressbook-key'] = $addressBook->getKey(); $contacts[] = $c; } $result = array_merge($result, $contacts); -- cgit v1.2.3 From 8749442fec81da051cb1b61ee4a87b0c078fb3bf Mon Sep 17 00:00:00 2001 From: Thomas Müller Date: Mon, 19 May 2014 21:39:19 +0200 Subject: no return on register and unregister --- lib/public/contacts.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/public/contacts.php b/lib/public/contacts.php index fb88c13bd1b..5311050d5c3 100644 --- a/lib/public/contacts.php +++ b/lib/public/contacts.php @@ -134,7 +134,7 @@ namespace OCP { */ public static function registerAddressBook(\OCP\IAddressBook $address_book) { $cm = \OC::$server->getContactsManager(); - return $cm->registerAddressBook($address_book); + $cm->registerAddressBook($address_book); } /** @@ -142,7 +142,7 @@ namespace OCP { */ public static function unregisterAddressBook(\OCP\IAddressBook $address_book) { $cm = \OC::$server->getContactsManager(); - return $cm->unregisterAddressBook($address_book); + $cm->unregisterAddressBook($address_book); } /** -- cgit v1.2.3