From 3f815c3a552eaa3b4c345803397d247d554cca8f Mon Sep 17 00:00:00 2001 From: yashodha Date: Tue, 28 May 2013 16:59:52 +0530 Subject: [PATCH] CRM-12697 --- CRM/Campaign/BAO/Petition.php | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/CRM/Campaign/BAO/Petition.php b/CRM/Campaign/BAO/Petition.php index 08bc93bc43..d14f926156 100644 --- a/CRM/Campaign/BAO/Petition.php +++ b/CRM/Campaign/BAO/Petition.php @@ -230,10 +230,18 @@ SELECT petition.id as id, function confirmSignature($activity_id, $contact_id, $petition_id) { // change activity status to completed (status_id = 2) // I wonder why do we need contact_id when we have activity_id anyway? [chastell] - $sql = 'UPDATE civicrm_activity SET status_id = 2 WHERE id = %1 AND source_contact_id = %2'; - $params = array(1 => array($activity_id, 'Integer'), 2 => array($contact_id, 'Integer')); + $sql = 'UPDATE civicrm_activity SET status_id = 2 WHERE id = %1'; + $activityContacts = CRM_Core_PseudoConstant::activityContacts('name'); + $sourceID = CRM_Utils_Array::key('Activity Source', $activityContacts); + $params = array( + 1 => array($activity_id, 'Integer'), + 2 => array($contact_id, 'Integer'), + 3 => array($sourceID, 'Integer') + ); CRM_Core_DAO::executeQuery($sql, $params); + $sql = 'UPDATE civicrm_activity_contact SET contact_id = %2 WHERE activity_id = %1 AND record_type_id = %3'; + CRM_Core_DAO::executeQuery($sql, $params); // remove 'Unconfirmed' tag for this contact $tag_name = CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::SYSTEM_PREFERENCES_NAME, 'tag_unconfirmed', @@ -448,24 +456,28 @@ AND tag_id = ( SELECT id FROM civicrm_tag WHERE name = %2 )"; $surveyInfo = CRM_Campaign_BAO_Petition::getSurveyInfo($surveyId); $signature = array(); + $activityContacts = CRM_Core_PseudoConstant::activityContacts('name'); + $sourceID = CRM_Utils_Array::key('Activity Source', $activityContacts); $sql = " SELECT a.id AS id, a.source_record_id AS source_record_id, - a.source_contact_id AS source_contact_id, + ac.contact_id AS source_contact_id, a.activity_date_time AS activity_date_time, a.activity_type_id AS activity_type_id, a.status_id AS status_id, %1 AS survey_title FROM civicrm_activity a + INNER JOIN civicrm_activity_contact ac ON (ac.activity_id = a.id AND ac.record_type_id = %5) WHERE a.source_record_id = %2 AND a.activity_type_id = %3 - AND a.source_contact_id = %4 + AND ac.contact_id = %4 "; $params = array(1 => array($surveyInfo['title'], 'String'), 2 => array($surveyId, 'Integer'), 3 => array($surveyInfo['activity_type_id'], 'Integer'), 4 => array($contactId, 'Integer'), + 5 => array($sourceID, 'Integer') ); $dao = CRM_Core_DAO::executeQuery($sql, $params); -- 2.25.1