Contact::checkAndMerge()   B
last analyzed

Complexity

Conditions 6
Paths 5

Size

Total Lines 20
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 42
Metric Value
dl 0
loc 20
ccs 0
cts 16
cp 0
rs 8.8571
cc 6
eloc 11
nc 5
nop 2
crap 42
1
<?php
2
3
/**
4
 * ownCloud
5
 *
6
 * This library is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
8
 * License as published by the Free Software Foundation; either
9
 * version 3 of the License, or any later version.
10
 *
11
 * This library is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
15
 *
16
 * You should have received a copy of the GNU Affero General Public
17
 * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
18
 *
19
 */
20
21
namespace OCA\Contacts\Search;
22
23
/**
24
 * A contact search result
25
 */
26
class Contact extends \OCP\Search\Result {
27
28
	/**
29
	 * Type name; translated in templates
30
	 *
31
	 * @var string
32
	 */
33
	public $type = 'contact';
34
35
	/**
36
	 * Contact address
37
	 *
38
	 * @var string
39
	 */
40
	public $address;
41
42
	/**
43
	 * Contact phone numbers
44
	 *
45
	 * @var string
46
	 */
47
	public $phone;
48
49
	/**
50
	 * Contact e-mail
51
	 *
52
	 * @var string
53
	 */
54
	public $email;
55
56
	/**
57
	 * Contact nickname
58
	 *
59
	 * @var string
60
	 */
61
	public $nickname;
62
63
	/**
64
	 * Contact organization
65
	 *
66
	 * @var string
67
	 */
68
	public $organization;
69
70
	/**
71
	 * Constructor
72
	 *
73
	 * @param array $data
74
	 * @return \OCA\Contacts\Search\Contact
0 ignored issues
show
Comprehensibility Best Practice introduced by
Adding a @return annotation to constructors is generally not recommended as a constructor does not have a meaningful return value.

Adding a @return annotation to a constructor is not recommended, since a constructor does not have a meaningful return value.

Please refer to the PHP core documentation on constructors.

Loading history...
75
	 */
76
	public function __construct(array $data = null) {
77
		$this->id = $data['id'];
78
		$this->name = stripcslashes($data['FN']);
79
		$this->link = \OCP\Util::linkToRoute('contacts_index') . '#' . $data['id'];
80
		$this->address = $this->checkAndMerge($data, 'ADR');
81
		$this->phone = $this->checkAndMerge($data, 'TEL');
82
		$this->email = $this->checkAndMerge($data, 'EMAIL');
83
		$this->nickname = $this->checkAndMerge($data, 'NICKNAME');
84
		$this->organization = $this->checkAndMerge($data, 'ORG');
85
	}
86
87
	/**
88
	 * Check a contact property and return its value; handles properties with
89
	 * multiple values by merging them into a comma-separated list
90
	 *
91
	 * @param array $data
92
	 * @param string $property
93
	 * @return string or null
94
	 */
95
	private function checkAndMerge($data, $property) {
96
		// check property
97
		if (!is_array($data) || !array_key_exists($property, $data)) {
98
			return null;
99
		}
100
		// check value
101
		if (!is_array($data[$property])) {
102
			return stripcslashes($data[$property]);
103
		}
104
		// or merge array
105
		if (count($data[$property]) > 0) {
106
			$list = array();
107
			foreach ($data[$property] as $value) {
108
				$list[] = stripcslashes($value);
109
			}
110
			return implode(', ', $list);
111
		}
112
		// default
113
		return null;
114
	}
115
116
}