summaryrefslogtreecommitdiffstats
path: root/lib/private/contacts/localaddressbook.php
diff options
context:
space:
mode:
authorThomas Müller <thomas.mueller@tmit.eu>2014-07-15 17:13:34 +0200
committerThomas Müller <thomas.mueller@tmit.eu>2014-07-24 17:35:02 +0200
commit176ecbd31199370b68e310aa0dc361a4e25a04ea (patch)
treed325ed24285f8e9c0f2e211fb4beb3c793743018 /lib/private/contacts/localaddressbook.php
parent6c93bcc814b6f063c0ecf058307222f5c92b02ae (diff)
downloadnextcloud-server-176ecbd31199370b68e310aa0dc361a4e25a04ea.tar.gz
nextcloud-server-176ecbd31199370b68e310aa0dc361a4e25a04ea.zip
ownCloud users are exported as address book
Diffstat (limited to 'lib/private/contacts/localaddressbook.php')
-rw-r--r--lib/private/contacts/localaddressbook.php104
1 files changed, 104 insertions, 0 deletions
diff --git a/lib/private/contacts/localaddressbook.php b/lib/private/contacts/localaddressbook.php
new file mode 100644
index 00000000000..483bbee83f8
--- /dev/null
+++ b/lib/private/contacts/localaddressbook.php
@@ -0,0 +1,104 @@
+<?php
+ /**
+ * ownCloud
+ *
+ * @author Thomas Müller
+ * @copyright 2014 Thomas Müller >deepdiver@owncloud.com>
+ *
+ */
+
+namespace OC\Contacts;
+
+class LocalAddressBook implements \OCP\IAddressBook {
+
+ /**
+ * @var \OCP\IUserManager
+ */
+ private $userManager;
+
+ /**
+ * @param $userManager
+ */
+ public function __construct($userManager) {
+ $this->userManager = $userManager;
+ }
+
+ /**
+ * @return string defining the technical unique key
+ */
+ public function getKey() {
+ return 'local';
+ }
+
+ /**
+ * In comparison to getKey() this function returns a human readable (maybe translated) name
+ *
+ * @return mixed
+ */
+ public function getDisplayName() {
+ return "Local users";
+ }
+
+ /**
+ * @param string $pattern which should match within the $searchProperties
+ * @param array $searchProperties defines the properties within the query pattern should match
+ * @param array $options - for future use. One should always have options!
+ * @return array an array of contacts which are arrays of key-value-pairs
+ */
+ public function search($pattern, $searchProperties, $options) {
+ $users = array();
+ if($pattern == '') {
+ // Fetch all contacts
+ $users = $this->userManager->search('');
+ } else {
+ foreach($searchProperties as $property) {
+ $result = array();
+ if($property === 'FN') {
+ $result = $this->userManager->searchDisplayName($pattern);
+ } else if ($property === 'id') {
+ $result = $this->userManager->search($pattern);
+ }
+ if (is_array($result)) {
+ $users = array_merge($users, $result);
+ }
+ }
+ }
+
+ $contacts = array();
+ foreach($users as $user){
+ $contact = array(
+ "id" => $user->getUID(),
+ "FN" => $user->getDisplayname(),
+ "EMAIL" => array(),
+ "IMPP" => array(
+ "x-owncloud-handle:" . $user->getUID()
+ )
+ );
+ $contacts[] = $contact;
+ }
+ return $contacts;
+ }
+
+ /**
+ * @param array $properties this array if key-value-pairs defines a contact
+ * @return array an array representing the contact just created or updated
+ */
+ public function createOrUpdate($properties) {
+ return array();
+ }
+
+ /**
+ * @return int
+ */
+ public function getPermissions() {
+ return \OCP\PERMISSION_READ;
+ }
+
+ /**
+ * @param object $id the unique identifier to a contact
+ * @return bool successful or not
+ */
+ public function delete($id) {
+ return false;
+ }
+}