* This class contains all contact related functions that are called using AJAX (jQuery)
*/
class CRM_Contact_Page_AJAX {
+ /**
+ * When a user chooses a username, CHECK_USERNAME_TTL
+ * is the time window in which they can check usernames
+ * (without reloading the overall form).
+ */
+ const CHECK_USERNAME_TTL = 10800; // 3hr; 3*60*60
+
+ const AUTOCOMPLETE_TTL = 21600; // 6hr; 6*60*60
+
+ /**
+ * @deprecated
+ */
static function getContactList() {
// if context is 'customfield'
if (CRM_Utils_Array::value('context', $_GET) == 'customfield') {
CRM_Core_Page_AJAX::autocompleteResults(CRM_Utils_Array::value('values', $result), 'data');
}
+ /**
+ * Ajax callback for custom fields of type ContactReference
+ *
+ * Todo: Migrate contact reference fields to use EntityRef
+ */
static function contactReference() {
- $name = CRM_Utils_Array::value('s', $_GET);
+ $name = CRM_Utils_Array::value('term', $_GET);
$name = CRM_Utils_Type::escape($name, 'String');
$cfID = CRM_Utils_Type::escape($_GET['id'], 'Positive');
// check that this is a valid, active custom field of Contact Reference type
- $params = array('id' => $cfID);
+ $params = array('id' => $cfID);
$returnProperties = array('filter', 'data_type', 'is_active');
- $fldValues = $cf = array();
+ $cf = array();
CRM_Core_DAO::commonRetrieve('CRM_Core_DAO_CustomField', $params, $cf, $returnProperties);
if (!$cf['id'] || !$cf['is_active'] || $cf['data_type'] != 'ContactReference') {
- CRM_Core_Page_AJAX::autocompleteResults(array('error' => $name));
+ CRM_Utils_System::civiExit('error');
}
if (!empty($cf['filter'])) {
if (!empty($action) &&
!in_array($action, array('get', 'lookup'))
) {
- CRM_Core_Page_AJAX::autocompleteResults(array('error' => $name));
+ CRM_Utils_System::civiExit('error');
}
}
$return = array_unique(array_merge(array('sort_name'), $list));
- $config = CRM_Core_Config::singleton();
-
- $limit = 10;
- if (!empty($_GET['limit'])) {
- $limit = CRM_Utils_Type::escape($_GET['limit'], 'Positive');
- }
+ $limit = CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::SYSTEM_PREFERENCES_NAME, 'search_autocomplete_count', NULL, 10);
$params = array('offset' => 0, 'rowCount' => $limit, 'version' => 3);
foreach ($return as $fld) {
$contact = civicrm_api('Contact', 'Get', $params);
if (!empty($contact['is_error'])) {
- CRM_Core_Page_AJAX::autocompleteResults(array('error' => $name));
+ CRM_Utils_System::civiExit('error');
}
$contactList = array();
$view[] = $value[$fld];
}
}
- $contactList[$value['id']] = implode(' :: ', $view);
+ $contactList[] = array('id' => $value['id'], 'text' => implode(' :: ', $view));
}
- if (!$contactList) {
- $contactList = array($name => $name);
- }
-
- CRM_Core_Page_AJAX::autocompleteResults($contactList);
+ CRM_Utils_System::civiExit(json_encode($contactList));
}
/**
while ($dao->fetch()) {
$results[] = array('id' => $dao->id, 'text' => $dao->data);
}
- print json_encode($results);
- CRM_Utils_System::civiExit();
+ CRM_Utils_JSON::output($results);
}
static function relationship() {
}
}
- echo json_encode($ret);
- CRM_Utils_System::civiExit();
+ CRM_Utils_JSON::output($ret);
}
/**
$values = array();
CRM_Core_DAO::commonRetrieve('CRM_Core_DAO_CustomField', $params, $values, $returnProperties);
- echo json_encode($values);
- CRM_Utils_System::civiExit();
- }
-
- /**
- * Function to obtain list of permissioned employer for the given contact-id.
- */
- static function getPermissionedEmployer() {
- $cid = CRM_Utils_Type::escape($_GET['cid'], 'Integer');
- $name = trim(CRM_Utils_Type::escape($_GET['s'], 'String'));
- $name = str_replace('*', '%', $name);
-
- $elements = CRM_Contact_BAO_Relationship::getPermissionedEmployer($cid, $name);
- $results = array();
- if (!empty($elements)) {
- foreach ($elements as $cid => $name) {
- $results[$cid] = $name['name'];
- }
- }
- CRM_Core_Page_AJAX::autocompleteResults($results);
+ CRM_Utils_JSON::output($values);
}
-
static function groupTree() {
$gids = CRM_Utils_Type::escape($_GET['gids'], 'String');
echo CRM_Contact_BAO_GroupNestingCache::json($gids);
CRM_Utils_Hook::enableDisable($recordBAO, $recordID, $isActive);
}
}
- echo json_encode($status);
- CRM_Utils_System::civiExit();
+ CRM_Utils_JSON::output($status);
}
}
*
*/
static public function checkUserName() {
+ $signer = new CRM_Utils_Signer(CRM_Core_Key::privateKey(), array('for', 'ts'));
+ if (
+ CRM_Utils_Time::getTimeRaw() > $_REQUEST['ts'] + self::CHECK_USERNAME_TTL
+ || $_REQUEST['for'] != 'civicrm/ajax/cmsuser'
+ || !$signer->validate($_REQUEST['sig'], $_REQUEST)
+ ) {
+ $user = array('name' => 'error');
+ echo json_encode($user);
+ CRM_Utils_System::civiExit();
+ }
+
$config = CRM_Core_Config::singleton();
$username = trim($_REQUEST['cms_name']);
static function getContactEmail() {
if (!empty($_REQUEST['contact_id'])) {
$contactID = CRM_Utils_Type::escape($_REQUEST['contact_id'], 'Positive');
+ if (!CRM_Contact_BAO_Contact_Permission::allow($contactID, CRM_Core_Permission::EDIT)) {
+ return;
+ }
list($displayName,
$userEmail
) = CRM_Contact_BAO_Contact_Location::getEmailDetails($contactID);
if ($queryString) {
$offset = CRM_Utils_Array::value('offset', $_GET, 0);
- $rowCount = CRM_Utils_Array::value('rowcount', $_GET, 20);
+ $rowCount = CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::SYSTEM_PREFERENCES_NAME, 'search_autocomplete_count', NULL, 10);
$offset = CRM_Utils_Type::escape($offset, 'Int');
- $rowCount = CRM_Utils_Type::escape($rowCount, 'Int');
// add acl clause here
list($aclFrom, $aclWhere) = CRM_Contact_BAO_Contact_Permission::cacheClause('cc');
$dao = CRM_Core_DAO::executeQuery($query);
while ($dao->fetch()) {
$result[] = array(
- 'name' => $dao->name,
'id' => $dao->id,
+ 'text' => $dao->name,
);
}
}
$dao = CRM_Core_DAO::executeQuery($query);
while ($dao->fetch()) {
+ //working here
$result[] = array(
- 'name' => '"' . $dao->name . '" <' . $dao->email . '>',
+ 'text' => '"' . $dao->name . '" <' . $dao->email . '>',
'id' => (CRM_Utils_Array::value('id', $_GET)) ? "{$dao->id}::{$dao->email}" : '"' . $dao->name . '" <' . $dao->email . '>',
);
}
}
-
if ($result) {
echo json_encode($result);
}
while ($dao->fetch()) {
$result[] = array(
- 'name' => '"' . $dao->name . '" <' . $dao->phone . '>',
+ 'text' => '"' . $dao->name . '" (' . $dao->phone . ')',
'id' => (CRM_Utils_Array::value('id', $_GET)) ? "{$dao->id}::{$dao->phone}" : '"' . $dao->name . '" <' . $dao->phone . '>',
);
}
$subTypes = CRM_Contact_BAO_ContactType::subTypePairs($contactType, FALSE, NULL);
asort($subTypes);
- echo json_encode($subTypes);
- CRM_Utils_System::civiExit();
+ CRM_Utils_JSON::output($subTypes);
}
static function buildDedupeRules() {
$dedupeRules = CRM_Dedupe_BAO_RuleGroup::getByType($contactType);
- echo json_encode($dedupeRules);
- CRM_Utils_System::civiExit();
+ CRM_Utils_JSON::output($dedupeRules);
}
/**
CRM_Utils_System::civiExit();
}
- echo json_encode($dashlets);
- CRM_Utils_System::civiExit();
+ CRM_Utils_JSON::output($dashlets);
}
/**
);
}
- echo json_encode($signatures);
- CRM_Utils_System::civiExit();
+ CRM_Utils_JSON::output($signatures);
}
/**
$status = $exception->delete();
}
- echo json_encode(array('status' => ($status) ? $oper : $status));
- CRM_Utils_System::civiExit();
+ CRM_Utils_JSON::output(array('status' => ($status) ? $oper : $status));
}
static function getDedupes() {
$pdfFormat = CRM_Core_BAO_PdfFormat::getById($formatId);
- echo json_encode($pdfFormat);
- CRM_Utils_System::civiExit();
+ CRM_Utils_JSON::output($pdfFormat);
}
/**
$paperSize = CRM_Core_BAO_PaperSize::getByName($paperSizeName);
- echo json_encode($paperSize);
- CRM_Utils_System::civiExit();
+ CRM_Utils_JSON::output($paperSize);
}
static function selectUnselectContacts() {
$countSelectionCids = count($contactIds[$cacheKey]);
$arrRet = array('getCount' => $countSelectionCids);
- echo json_encode($arrRet);
- CRM_Utils_System::civiExit();
+ CRM_Utils_JSON::output($arrRet);
}
+ /**
+ * @param $name
+ *
+ * @return string
+ */
static function _convertToId($name) {
if (substr($name, 0, CRM_Core_Form::CB_PREFIX_LEN) == CRM_Core_Form::CB_PREFIX) {
$cId = substr($name, CRM_Core_Form::CB_PREFIX_LEN);
$addressVal = CRM_Core_BAO_Address::getValues($entityBlock);
}
- echo json_encode($addressVal);
- CRM_Utils_System::civiExit();
+ CRM_Utils_JSON::output($addressVal);
}
/**