Blame view

sources/lib/public/contacts.php 5.2 KB
03e52840d   Kload   Init
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
  <?php
  /**
   * ownCloud
   *
   * @author Thomas Müller
   * @copyright 2012 Thomas Müller thomas.mueller@tmit.eu
   *
   * This library is free software; you can redistribute it and/or
   * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
   * License as published by the Free Software Foundation; either
   * version 3 of the License, or any later version.
   *
   * This library is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
   *
   * You should have received a copy of the GNU Affero General Public
   * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
   *
   */
  
  /**
   * Public interface of ownCloud for apps to use.
   * Contacts Class
   *
   */
  
  // 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 {
  
  	/**
  	 * This class provides access to the contacts app. Use this class exclusively if you want to access contacts.
  	 *
  	 * Contacts in general will be expressed as an array of key-value-pairs.
  	 * The keys will match the property names defined in https://tools.ietf.org/html/rfc2426#section-1
  	 *
  	 * Proposed workflow for working with contacts:
  	 *  - search for the contacts
  	 *  - manipulate the results array
  	 *  - createOrUpdate will save the given contacts overwriting the existing data
  	 *
  	 * For updating it is mandatory to keep the id.
  	 * Without an id a new contact will be created.
  	 *
  	 */
  	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.
  		 *
  		 * Example:
  		 *  Following function shows how to search for contacts for the name and the email address.
  		 *
  		 *		public static function getMatchingRecipient($term) {
  		 *			// The API is not active -> nothing to do
  		 *			if (!\OCP\Contacts::isEnabled()) {
  		 *				return array();
  		 *			}
  		 *
  		 *			$result = \OCP\Contacts::search($term, array('FN', 'EMAIL'));
  		 *			$receivers = array();
  		 *			foreach ($result as $r) {
  		 *				$id = $r['id'];
  		 *				$fn = $r['FN'];
  		 *				$email = $r['EMAIL'];
  		 *				if (!is_array($email)) {
  		 *					$email = array($email);
  		 *				}
  		 *
  		 *				// loop through all email addresses of this contact
  		 *				foreach ($email as $e) {
  		 *				$displayName = $fn . " <$e>";
  		 *				$receivers[] = array(
  		 *					'id'    => $id,
  		 *					'label' => $displayName,
  		 *					'value' => $displayName);
  		 *				}
  		 *			}
  		 *
  		 *			return $receivers;
  		 *		}
  		 *
  		 *
  		 * @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!
6d9380f96   Cédric Dupont   Update sources OC...
90
  		 * @return array an array of contacts which are arrays of key-value-pairs
03e52840d   Kload   Init
91
92
  		 */
  		public static function search($pattern, $searchProperties = array(), $options = array()) {
31b7f2792   Kload   Upgrade to ownclo...
93
94
  			$cm = \OC::$server->getContactsManager();
  			return $cm->search($pattern, $searchProperties, $options);
03e52840d   Kload   Init
95
96
97
98
99
100
  		}
  
  		/**
  		 * This function can be used to delete the contact identified by the given id
  		 *
  		 * @param object $id the unique identifier to a contact
6d9380f96   Cédric Dupont   Update sources OC...
101
  		 * @param string $address_book_key
03e52840d   Kload   Init
102
103
104
  		 * @return bool successful or not
  		 */
  		public static function delete($id, $address_book_key) {
31b7f2792   Kload   Upgrade to ownclo...
105
106
  			$cm = \OC::$server->getContactsManager();
  			return $cm->delete($id, $address_book_key);
03e52840d   Kload   Init
107
108
109
110
111
112
113
  		}
  
  		/**
  		 * This function is used to create a new contact if 'id' is not given or not present.
  		 * Otherwise the contact will be updated by replacing the entire data set.
  		 *
  		 * @param array $properties this array if key-value-pairs defines a contact
6d9380f96   Cédric Dupont   Update sources OC...
114
115
  		 * @param string $address_book_key identifier of the address book in which the contact shall be created or updated
  		 * @return array an array representing the contact just created or updated
03e52840d   Kload   Init
116
117
  		 */
  		public static function createOrUpdate($properties, $address_book_key) {
31b7f2792   Kload   Upgrade to ownclo...
118
  			$cm = \OC::$server->getContactsManager();
6d9380f96   Cédric Dupont   Update sources OC...
119
  			return $cm->createOrUpdate($properties, $address_book_key);
03e52840d   Kload   Init
120
121
122
123
124
125
126
127
  		}
  
  		/**
  		 * Check if contacts are available (e.g. contacts app enabled)
  		 *
  		 * @return bool true if enabled, false if not
  		 */
  		public static function isEnabled() {
31b7f2792   Kload   Upgrade to ownclo...
128
129
  			$cm = \OC::$server->getContactsManager();
  			return $cm->isEnabled();
03e52840d   Kload   Init
130
131
132
133
134
135
  		}
  
  		/**
  		 * @param \OCP\IAddressBook $address_book
  		 */
  		public static function registerAddressBook(\OCP\IAddressBook $address_book) {
31b7f2792   Kload   Upgrade to ownclo...
136
  			$cm = \OC::$server->getContactsManager();
6d9380f96   Cédric Dupont   Update sources OC...
137
  			$cm->registerAddressBook($address_book);
03e52840d   Kload   Init
138
139
140
141
142
143
  		}
  
  		/**
  		 * @param \OCP\IAddressBook $address_book
  		 */
  		public static function unregisterAddressBook(\OCP\IAddressBook $address_book) {
31b7f2792   Kload   Upgrade to ownclo...
144
  			$cm = \OC::$server->getContactsManager();
6d9380f96   Cédric Dupont   Update sources OC...
145
  			$cm->unregisterAddressBook($address_book);
03e52840d   Kload   Init
146
147
148
149
150
151
  		}
  
  		/**
  		 * @return array
  		 */
  		public static function getAddressBooks() {
31b7f2792   Kload   Upgrade to ownclo...
152
153
  			$cm = \OC::$server->getContactsManager();
  			return $cm->getAddressBooks();
03e52840d   Kload   Init
154
155
156
157
158
159
  		}
  
  		/**
  		 * removes all registered address book instances
  		 */
  		public static function clear() {
31b7f2792   Kload   Upgrade to ownclo...
160
161
  			$cm = \OC::$server->getContactsManager();
  			$cm->clear();
03e52840d   Kload   Init
162
  		}
03e52840d   Kload   Init
163
164
  	}
  }