Skip to content
Snippets Groups Projects
Commit fba8c776 authored by Thomas Müller's avatar Thomas Müller
Browse files

plugin mechanism implemented

parent 9717cdb4
Branches
No related tags found
No related merge requests found
......@@ -26,9 +26,60 @@
*
*/
namespace OC {
interface AddressBook {
/**
* @return string defining the technical unique key
*/
public function getKey();
/**
* In comparison to getKey() this function returns a human readable (maybe translated) name
* @return mixed
*/
public function getDisplayName();
/**
* @param $pattern
* @param $searchProperties
* @param $options
* @return mixed
*/
public function search($pattern, $searchProperties, $options);
// // dummy results
// return array(
// array('id' => 0, 'FN' => 'Thomas Müller', 'EMAIL' => 'a@b.c', 'GEO' => '37.386013;-122.082932'),
// array('id' => 5, 'FN' => 'Thomas Tanghus', 'EMAIL' => array('d@e.f', 'g@h.i')),
// );
/**
* @param $properties
* @return mixed
*/
public function createOrUpdate($properties);
// // dummy
// return array('id' => 0, 'FN' => 'Thomas Müller', 'EMAIL' => 'a@b.c',
// 'PHOTO' => 'VALUE=uri:http://www.abc.com/pub/photos/jqpublic.gif',
// 'ADR' => ';;123 Main Street;Any Town;CA;91921-1234'
// );
/**
* @return mixed
*/
public function isReadOnly();
/**
* @param $id
* @return mixed
*/
public function delete($id);
}
}
// use OCP namespace for all classes that are considered public.
// This means that they should be used by apps instead of the internal ownCloud classes
namespace OCP;
namespace OCP {
/**
* This class provides access to the contacts app. Use this class exclusively if you want to access contacts.
......@@ -45,8 +96,8 @@ namespace OCP;
* Without an id a new contact will be created.
*
*/
class Contacts
{
class Contacts {
/**
* This function is used to search and find contacts within the users address books.
* In case $pattern is empty all contacts will be returned.
......@@ -58,21 +109,30 @@ class Contacts
*/
public static function search($pattern, $searchProperties = array(), $options = array()) {
// dummy results
return array(
array('id' => 0, 'FN' => 'Thomas Müller', 'EMAIL' => 'a@b.c', 'GEO' => '37.386013;-122.082932'),
array('id' => 5, 'FN' => 'Thomas Tanghus', 'EMAIL' => array('d@e.f', 'g@h.i')),
);
$result = array();
foreach(self::$address_books as $address_book) {
$result = $result + $address_book->search($pattern, $searchProperties, $options);
}
return $result;
}
/**
* This function can be used to delete the contact identified by the given id
*
* @param object $id the unique identifier to a contact
* @param $address_book_key
* @return bool successful or not
*/
public static function delete($id) {
return false;
public static function delete($id, $address_book_key) {
if (!array_key_exists($address_book_key, self::$address_books))
return null;
$address_book = self::$address_books[$address_book_key];
if ($address_book->isReadOnly())
return null;
return $address_book->delete($id);
}
/**
......@@ -80,15 +140,19 @@ class Contacts
* 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 $address_book_key string to identify the address book in which the contact shall be created or updated
* @return array representing the contact just created or updated
*/
public static function createOrUpdate($properties) {
public static function createOrUpdate($properties, $address_book_key) {
// dummy
return array('id' => 0, 'FN' => 'Thomas Müller', 'EMAIL' => 'a@b.c',
'PHOTO' => 'VALUE=uri:http://www.abc.com/pub/photos/jqpublic.gif',
'ADR' => ';;123 Main Street;Any Town;CA;91921-1234'
);
if (!array_key_exists($address_book_key, self::$address_books))
return null;
$address_book = self::$address_books[$address_book_key];
if ($address_book->isReadOnly())
return null;
return $address_book->createOrUpdate($properties);
}
/**
......@@ -97,7 +161,38 @@ class Contacts
* @return bool true if enabled, false if not
*/
public static function isEnabled() {
return false;
return !empty(self::$address_books);
}
/**
* @param \OC\AddressBook $address_book
*/
public static function registerAddressBook(\OC\AddressBook $address_book) {
self::$address_books[$address_book->getKey()] = $address_book;
}
/**
* @param \OC\AddressBook $address_book
*/
public static function unregisterAddressBook(\OC\AddressBook $address_book) {
unset(self::$address_books[$address_book->getKey()]);
}
/**
* @return array
*/
public static function getAddressBooks() {
$result = array();
foreach(self::$address_books as $address_book) {
$result[$address_book->getKey()] = $address_book->getDisplayName();
}
return $result;
}
/**
* @var \OC\AddressBook[] which holds all registered address books
*/
private static $address_books = array();
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment