ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
Mock.php
Go to the documentation of this file.
1 <?php
2 
3 namespace Sabre\CardDAV\Backend;
4 
5 class Mock extends AbstractBackend {
6 
7  public $addressBooks;
8  public $cards;
9 
10  function __construct($addressBooks = null, $cards = null) {
11 
12  $this->addressBooks = $addressBooks;
13  $this->cards = $cards;
14 
15  if (is_null($this->addressBooks)) {
16  $this->addressBooks = [
17  [
18  'id' => 'foo',
19  'uri' => 'book1',
20  'principaluri' => 'principals/user1',
21  '{DAV:}displayname' => 'd-name',
22  ],
23  [
24  'id' => 'bar',
25  'uri' => 'book3',
26  'principaluri' => 'principals/user1',
27  '{DAV:}displayname' => 'd-name',
28  ],
29  ];
30 
31  $card2 = fopen('php://memory', 'r+');
32  fwrite($card2, "BEGIN:VCARD\nVERSION:3.0\nUID:45678\nEND:VCARD");
33  rewind($card2);
34  $this->cards = [
35  'foo' => [
36  'card1' => "BEGIN:VCARD\nVERSION:3.0\nUID:12345\nEND:VCARD",
37  'card2' => $card2,
38  ],
39  'bar' => [
40  'card3' => "BEGIN:VCARD\nVERSION:3.0\nUID:12345\nFN:Test-Card\nEMAIL;TYPE=home:bar@example.org\nEND:VCARD",
41  ],
42  ];
43  }
44 
45  }
46 
47 
48  function getAddressBooksForUser($principalUri) {
49 
50  $books = [];
51  foreach ($this->addressBooks as $book) {
52  if ($book['principaluri'] === $principalUri) {
53  $books[] = $book;
54  }
55  }
56  return $books;
57 
58  }
59 
76  function updateAddressBook($addressBookId, \Sabre\DAV\PropPatch $propPatch) {
77 
78  foreach ($this->addressBooks as &$book) {
79  if ($book['id'] !== $addressBookId)
80  continue;
81 
82  $propPatch->handleRemaining(function($mutations) use (&$book) {
83  foreach ($mutations as $key => $value) {
84  $book[$key] = $value;
85  }
86  return true;
87  });
88 
89  }
90 
91  }
92 
93  function createAddressBook($principalUri, $url, array $properties) {
94 
95  $this->addressBooks[] = array_merge($properties, [
96  'id' => $url,
97  'uri' => $url,
98  'principaluri' => $principalUri,
99  ]);
100 
101  }
102 
103  function deleteAddressBook($addressBookId) {
104 
105  foreach ($this->addressBooks as $key => $value) {
106  if ($value['id'] === $addressBookId)
107  unset($this->addressBooks[$key]);
108  }
109  unset($this->cards[$addressBookId]);
110 
111  }
112 
132  function getCards($addressBookId) {
133 
134  $cards = [];
135  foreach ($this->cards[$addressBookId] as $uri => $data) {
136  if (is_resource($data)) {
137  $cards[] = [
138  'uri' => $uri,
139  'carddata' => $data,
140  ];
141  } else {
142  $cards[] = [
143  'uri' => $uri,
144  'carddata' => $data,
145  'etag' => '"' . md5($data) . '"',
146  'size' => strlen($data)
147  ];
148  }
149  }
150  return $cards;
151 
152  }
153 
166  function getCard($addressBookId, $cardUri) {
167 
168  if (!isset($this->cards[$addressBookId][$cardUri])) {
169  return false;
170  }
171 
172  $data = $this->cards[$addressBookId][$cardUri];
173  return [
174  'uri' => $cardUri,
175  'carddata' => $data,
176  'etag' => '"' . md5($data) . '"',
177  'size' => strlen($data)
178  ];
179 
180  }
181 
207  function createCard($addressBookId, $cardUri, $cardData) {
208 
209  if (is_resource($cardData)) {
210  $cardData = stream_get_contents($cardData);
211  }
212  $this->cards[$addressBookId][$cardUri] = $cardData;
213  return '"' . md5($cardData) . '"';
214 
215  }
216 
242  function updateCard($addressBookId, $cardUri, $cardData) {
243 
244  if (is_resource($cardData)) {
245  $cardData = stream_get_contents($cardData);
246  }
247  $this->cards[$addressBookId][$cardUri] = $cardData;
248  return '"' . md5($cardData) . '"';
249 
250  }
251 
252  function deleteCard($addressBookId, $cardUri) {
253 
254  unset($this->cards[$addressBookId][$cardUri]);
255 
256  }
257 
258 }
getCards($addressBookId)
Returns all cards for a specific addressbook id.
Definition: Mock.php:132
createCard($addressBookId, $cardUri, $cardData)
Creates a new card.
Definition: Mock.php:207
This class represents a set of properties that are going to be updated.
Definition: PropPatch.php:20
updateCard($addressBookId, $cardUri, $cardData)
Updates a card.
Definition: Mock.php:242
getCard($addressBookId, $cardUri)
Returns a specfic card.
Definition: Mock.php:166
__construct($addressBooks=null, $cards=null)
Definition: Mock.php:10
updateAddressBook($addressBookId, \Sabre\DAV\PropPatch $propPatch)
Updates properties for an address book.
Definition: Mock.php:76
createAddressBook($principalUri, $url, array $properties)
Creates a new address book.
Definition: Mock.php:93
deleteCard($addressBookId, $cardUri)
Deletes a card.
Definition: Mock.php:252
deleteAddressBook($addressBookId)
Deletes an entire addressbook and all its contents.
Definition: Mock.php:103
getAddressBooksForUser($principalUri)
Returns the list of addressbooks for a specific user.
Definition: Mock.php:48
$url
$key
Definition: croninfo.php:18
$data
Definition: bench.php:6