Show:

File: platform/plugins/Users/handlers/Users/contact/response/contacts.php

<?php

/**
 * @module Users
 */

/**
 * Used by HTTP clients to fetch one more more contacts
 * @class HTTP Users contacts
 * @method GET/labels
 * @param {array} [$params] Parameters that can come from the request
 *   @param {string|array} [$params.userIds] The users whose labels to fetch. Can be a comma-separated string
 *   @param {string|array} [$params.contactUserIds] Optionally filter by contact users. Can be a comma-separated string
 *   @param {string|array} [$params.labels] Optionally filter by specific labels, or label prefixes ending in "/". Can be a comma-separated string
 * @return {array} An array of Users_Label objects.
 */
function Users_contact_response_contacts($params = array())
{
	$req = array_merge($_REQUEST, $params);
	if (!isset($req['userId']) and !isset($req['userIds'])) {
		throw new Q_Exception_RequiredField(array(
			'field' => 'userId'
		), 'userId');
	}
	$userIds = isset($req['userIds']) ? $req['userIds'] : array($req['userId']);
	if (is_string($userIds)) {
		$userIds = explode(",", $userIds);
	}
	if (isset($req['labels'])) {
		$labels = $req['labels'];
	} else if (isset($req['label'])) {
		$labels = array($req['label']);
	} else {
		$labels = null;
	}
	if (isset($labels)) {
		if (is_string($labels)) {
			$labels = explode(",", $labels);
		}
	}
	if (isset($req['contactUserIds'])) {
		$contactUserIds = $req['contactUserIds'];
		if (is_string($userIds)) {
			$contactUserIds = explode(",", $contactUserIds);
		}
	}
	$contacts = array();
	if (isset($req['batch'])) {
		// expects batch format, i.e. $userIds, $labels and $contactUserIds
		foreach ($userIds as $i => $userId) {
			$contact = new Users_Contact();
			$contact->userId = $userId;
			$contact->label = $labels[$i];
			$contact->contactUserId = $contactUserIds[$i];
			$contacts[] = $contact->retrieve() ? $contact : null;
		}
	} else {
		$opt = array();
		if (isset($contactUserIds)) {
			$opt['contactUserId'] = $contactUserIds;
		}
		foreach ($userIds as $i => $userId) {
			$contacts = array_merge($contacts, Users_Contact::fetch($userId, $labels, $opt));
		}
	}
	return Q_Response::setSlot('contacts', Db::exportArray($contacts));
}