if (CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::MULTISITE_PREFERENCES_NAME,
'is_enabled'
)) {
- // in order to make sure that every contact must be added to a group (CRM-4613) -
+ // Enabling multisite causes the contact to be added to the domain group
$domainGroupID = CRM_Core_BAO_Domain::getGroupId();
- if (CRM_Utils_Array::value('group', $params) && is_array($params['group'])) {
- $grpFlp = array_flip($params['group']);
- if (!array_key_exists(1, $grpFlp)) {
+ if(!empty($domainGroupID)){
+ if (CRM_Utils_Array::value('group', $params) && is_array($params['group'])) {
$params['group'][$domainGroupID] = 1;
}
- }
- else {
- $params['group'] = array($domainGroupID => 1);
+ else {
+ $params['group'] = array($domainGroupID => 1);
+ }
}
}
return FALSE;
}
+ // CRM-12929
+ // Restrict contact to be delete if contact has financial trxns
+ $error = NULL;
+ if ($skipUndelete && CRM_Financial_BAO_FinancialItem::checkContactPresent(array($id), $error)) {
+ return FALSE;
+ }
+
// make sure this contact_id does not have any membership types
$membershipTypeID = CRM_Core_DAO::getFieldValue('CRM_Member_DAO_MembershipType',
$id,
// delete all notes related to contact
CRM_Core_BAO_Note::cleanContactNotes($id);
+ // delete cases related to contact
+ $contactCases = CRM_Case_BAO_Case::retrieveCaseIdsByContactId($id);
+ if (!empty($contactCases)) {
+ foreach ($contactCases as $caseId) {
+ //check if case is associate with other contact or not.
+ $caseContactId = CRM_Case_BAO_Case::getCaseClients($caseId);
+ if (count($caseContactId) <= 1) {
+ CRM_Case_BAO_Case::deleteCase($caseId);
+ }
+ }
+ }
+
$contact->delete();
}
else {
// get preferred languages
if (!empty($contact->preferred_language)) {
- $languages = CRM_Core_PseudoConstant::languages();
- $values['preferred_language'] = CRM_Utils_Array::value($contact->preferred_language, $languages);
+ $values['preferred_language'] = CRM_Core_PseudoConstant::getValue('CRM_Contact_DAO_Contact', 'preferred_language', $contact->preferred_language);
}
// Calculating Year difference
* @return array $locBlockIds loc block ids which fulfill condition.
* @static
*/
- static function getLocBlockIds($contactId, $criteria = array(
- ), $condOperator = 'AND') {
+ static function getLocBlockIds($contactId, $criteria = array(), $condOperator = 'AND') {
$locBlockIds = array();
if (!$contactId) {
return $locBlockIds;
}
- foreach (array(
- 'Email', 'OpenID', 'Phone', 'Address', 'IM') as $block) {
+ foreach (array('Email', 'OpenID', 'Phone', 'Address', 'IM') as $block) {
$name = strtolower($block);
- eval("\$blockDAO = new CRM_Core_DAO_$block();");
+ $className = "CRM_Core_DAO_$block";
+ $blockDAO = new $className();
// build the condition.
if (is_array($criteria)) {
- eval('$object = new CRM_Core_DAO_' . $block . '( );');
- $fields = $object->fields();
+ $fields = $blockDAO->fields();
$conditions = array();
foreach ($criteria as $field => $value) {
if (array_key_exists($field, $fields)) {
}
}
+ /**
+ * Get options for a given contact field.
+ * @see CRM_Core_DAO::buildOptions
+ *
+ * TODO: Should we always assume chainselect? What fn should be responsible for controlling that flow?
+ * TODO: In context of chainselect, what to return if e.g. a country has no states?
+ *
+ * @param String $fieldName
+ * @param String $context: @see CRM_Core_DAO::buildOptionsContext
+ * @param Array $props: whatever is known about this dao object
+ */
+ public static function buildOptions($fieldName, $context = NULL, $props = array()) {
+ $params = array();
+ // Special logic for fields whose options depend on context or properties
+ switch ($fieldName) {
+ case 'contact_sub_type':
+ if (!empty($props['contact_type'])) {
+ $params['condition'] = "parent_id = (SELECT id FROM civicrm_contact_type WHERE name='{$props['contact_type']}')";
+ }
+ break;
+ }
+ return CRM_Core_PseudoConstant::get(__CLASS__, $fieldName, $params, $context);
+ }
/**
* Delete a contact-related object that has an 'is_primary' field