← Back
Editing: ContactsService.php
<?php declare(strict_types=1); /** * SPDX-FileCopyrightText: 2014 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Calendar\Service; class ContactsService { /** * @param array $contact * @return bool */ public function isSystemBook(array $contact): bool { // Information about system users is fetched via DAV nowadays return (isset($contact['isLocalSystemBook']) && $contact['isLocalSystemBook'] === true); } /** * @param array $contact * @return bool */ public function hasEmail(array $contact): bool { if (!isset($contact['EMAIL'])) { return false; } if (!is_array($contact['EMAIL']) && !empty($contact['EMAIL'])) { return true; } if (!empty($contact['EMAIL'][0])) { return true; } return false; } /** * Extract name from an array containing a contact's information * * @param array $contact * @return string */ public function getNameFromContact(array $contact): string { return $contact['FN'] ?? ''; } /** * Get photo uri from contact * * @param array $contact * @return string|null */ public function getPhotoUri(array $contact): ?string { if (!isset($contact['PHOTO'])) { return null; } $raw = $contact['PHOTO']; $uriPrefix = 'VALUE=uri:'; if (str_starts_with($raw, $uriPrefix)) { $strpos = strpos($raw, 'http'); return $strpos !== false ? substr($raw, $strpos) : null; } return null; } /** * @param array $contact * @return string[] */ public function getEmail(array $contact): array { if (\is_string($contact['EMAIL'])) { return [$contact['EMAIL']]; } return $contact['EMAIL']; } /** * @param array $contact * @return string|null */ public function getTimezoneId(array $contact): ?string { if (!isset($contact['TZ'])) { return null; } if (\is_array($contact['TZ'])) { return $contact['TZ'][0]; } return $contact['TZ']; } /** * @param array $contact * @return string|null */ public function getLanguageId(array $contact): ?string { if (!isset($contact['LANG'])) { return null; } if (\is_array($contact['LANG'])) { return $contact['LANG'][0]; } return $contact['LANG']; } /** * @param array $groups * @param string $search * @return array */ public function filterGroupsWithCount(array $groups, string $search): array { //filter to be unique $categories = []; foreach ($groups as $group) { // CATEGORIES is sometimes missing (despite being searched for via the backend) if (!isset($group['CATEGORIES'])) { continue; } $categories[] = array_filter(explode(',', $group['CATEGORIES']), static function ($cat) use ($search) { return str_contains(strtolower($cat), strtolower($search)); }); } return array_count_values(array_merge(...$categories)); } /** * @param array $contact * @return array */ public function getAddress(array $contact): array { if (\is_string($contact['ADR'])) { $contact['ADR'] = [$contact['ADR']]; } $addresses = []; foreach ($contact['ADR'] as $address) { $addresses[] = trim(preg_replace("/\n+/", "\n", str_replace(';', "\n", $address))); } return $addresses; } }
Save File
Cancel