From c9184ed33ba85f4064b7a011ffb6eba0131aa08b Mon Sep 17 00:00:00 2001 From: Matthew Wire Date: Wed, 8 Nov 2017 11:24:16 +0000 Subject: [PATCH] Allow "Outbound SMS" when Mobile is not primary phone number --- CRM/Activity/Form/ActivityLinks.php | 19 ++++++++++++++++--- CRM/Contact/BAO/Contact/Location.php | 2 ++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/CRM/Activity/Form/ActivityLinks.php b/CRM/Activity/Form/ActivityLinks.php index d06ba2db63..c859195999 100644 --- a/CRM/Activity/Form/ActivityLinks.php +++ b/CRM/Activity/Form/ActivityLinks.php @@ -77,9 +77,22 @@ class CRM_Activity_Form_ActivityLinks extends CRM_Core_Form { continue; } // Check for existence of a mobile phone and ! do not SMS privacy setting - $mobileTypeID = CRM_Core_PseudoConstant::getKey('CRM_Core_BAO_Phone', 'phone_type_id', 'Mobile'); - list($name, $phone, $doNotSMS) = CRM_Contact_BAO_Contact_Location::getPhoneDetails($contactId, $mobileTypeID); - if (!$doNotSMS && $phone) { + try { + $phone = civicrm_api3('Phone', 'getsingle', array( + 'contact_id' => $contactId, + 'phone_type_id' => CRM_Core_PseudoConstant::getKey('CRM_Core_BAO_Phone', 'phone_type_id', 'Mobile'), + 'return' => array('phone', 'contact_id'), + 'options' => array('limit' => 1, 'sort' => "is_primary DESC"), + 'api.Contact.getsingle' => array( + 'id' => '$value.contact_id', + 'return' => 'do_not_sms', + ), + )); + } + catch (CiviCRM_API3_Exception $e) { + continue; + } + if (!$phone['api.Contact.getsingle']['do_not_sms'] && $phone['phone']) { $url = 'civicrm/activity/sms/add'; } else { diff --git a/CRM/Contact/BAO/Contact/Location.php b/CRM/Contact/BAO/Contact/Location.php index 7405537b44..d9539c54b1 100644 --- a/CRM/Contact/BAO/Contact/Location.php +++ b/CRM/Contact/BAO/Contact/Location.php @@ -73,6 +73,7 @@ WHERE civicrm_contact.id = %1"; } /** + * @deprecated Not used anywhere, use the Phone API instead * Get the sms number and display name of a contact. * * @param int $id @@ -84,6 +85,7 @@ WHERE civicrm_contact.id = %1"; * tuple of display_name and sms if found, or (null,null) */ public static function getPhoneDetails($id, $type = NULL) { + Civi::log()->warning('Deprecated function CRM_Contact_BAO_Contact_Location::getPhoneDetails, use Phone.get API instead', array('civi.tag' => 'deprecated')); if (!$id) { return array(NULL, NULL); } -- 2.25.1