From 64e716d7f6a3c176336399cc621e037173000212 Mon Sep 17 00:00:00 2001 From: Jamie McClelland Date: Fri, 6 Dec 2013 16:04:01 -0500 Subject: [PATCH] CRM-13922 - Campaign - release respondents assigned to any interviewer ---------------------------------------- * CRM-13922: release respondent search doesn't allow you to find contacts reserved to a different interviewer http://issues.civicrm.org/jira/browse/CRM-13922 --- CRM/Campaign/BAO/Survey.php | 20 ++++++++------------ CRM/Campaign/Form/Search.php | 20 +++++++++----------- 2 files changed, 17 insertions(+), 23 deletions(-) diff --git a/CRM/Campaign/BAO/Survey.php b/CRM/Campaign/BAO/Survey.php index 38d88e778b..05f84988be 100644 --- a/CRM/Campaign/BAO/Survey.php +++ b/CRM/Campaign/BAO/Survey.php @@ -510,16 +510,12 @@ Group By contact.id"; $whereClause = ' AND ( activity.status_id IN ( ' . implode(',', array_values($statusIds)) . ' ) )'; } - if (!$interviewerId) { - $session = CRM_Core_Session::singleton(); - $interviewerId = $session->get('userID'); - } - $targetContactIds = ' ( ' . implode(',', $voterIds) . ' ) '; $activityContacts = CRM_Core_OptionGroup::values('activity_contacts', FALSE, FALSE, FALSE, NULL, 'name'); $assigneeID = CRM_Utils_Array::key('Activity Assignees', $activityContacts); $targetID = CRM_Utils_Array::key('Activity Targets', $activityContacts); + $params[1] = array($surveyId, 'Integer'); $query = " SELECT activity.id, activity.status_id, activityTarget.contact_id as voter_id, @@ -530,14 +526,14 @@ INNER JOIN civicrm_activity_contact activityTarget INNER JOIN civicrm_activity_contact activityAssignment ON ( activityAssignment.activity_id = activity.id AND activityAssignment.record_type_id = $assigneeID ) WHERE activity.source_record_id = %1 - AND ( activity.is_deleted IS NULL OR activity.is_deleted = 0 ) - AND activityAssignment.contact_id = %2 - AND activityTarget.contact_id IN {$targetContactIds} + AND ( activity.is_deleted IS NULL OR activity.is_deleted = 0 ) "; + if(!empty($interviewerId)) { + $query .= "AND activityAssignment.contact_id = %2 "; + $params[2] = array($interviewerId, 'Integer'); + } + $query .= "AND activityTarget.contact_id IN {$targetContactIds} $whereClause"; - - $activity = CRM_Core_DAO::executeQuery($query, array(1 => array($surveyId, 'Integer'), - 2 => array($interviewerId, 'Integer'), - )); + $activity = CRM_Core_DAO::executeQuery($query, $params); while ($activity->fetch()) { $activityDetails[$activity->voter_id] = array( 'voter_id' => $activity->voter_id, diff --git a/CRM/Campaign/Form/Search.php b/CRM/Campaign/Form/Search.php index fdd4b67d0d..ff7089ff47 100755 --- a/CRM/Campaign/Form/Search.php +++ b/CRM/Campaign/Form/Search.php @@ -434,17 +434,15 @@ class CRM_Campaign_Form_Search extends CRM_Core_Form { function formatParams() { $interviewerId = CRM_Utils_Array::value('survey_interviewer_id', $this->_formValues); - if (!$interviewerId) { - $session = CRM_Core_Session::singleton(); - $this->_formValues['survey_interviewer_id'] = $interviewerId = $session->get('userID'); - } - $this->set('interviewerId', $interviewerId); - if (!CRM_Utils_Array::value('survey_interviewer_name', $this->_formValues)) { - $this->_formValues['survey_interviewer_name'] = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Contact', - $interviewerId, - 'sort_name', - 'id' - ); + if ($interviewerId) { + $this->set('interviewerId', $interviewerId); + if (!CRM_Utils_Array::value('survey_interviewer_name', $this->_formValues)) { + $this->_formValues['survey_interviewer_name'] = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Contact', + $interviewerId, + 'sort_name', + 'id' + ); + } } //format multi-select group and contact types. -- 2.25.1