X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FActivity%2FBAO%2FQuery.php;h=ddfb01aedd1d7c9bbaac3ff17d9f208e6e55a790;hb=fd95406da80a4640cfa4a17b2448f8c5a2f138bf;hp=79e36aec007b8a643d42dc56ca20215eb63e5075;hpb=caced8d5e51253a45b03655416a4b09bcb71f981;p=civicrm-core.git diff --git a/CRM/Activity/BAO/Query.php b/CRM/Activity/BAO/Query.php index 79e36aec00..ddfb01aedd 100644 --- a/CRM/Activity/BAO/Query.php +++ b/CRM/Activity/BAO/Query.php @@ -136,7 +136,13 @@ class CRM_Activity_BAO_Query { if (!empty($query->_returnProperties['source_contact'])) { $query->_select['source_contact'] = 'source_contact.sort_name as source_contact'; $query->_element['source_contact'] = 1; - $query->_tables['source_contact'] = $query->_whereTables['source_contact'] = 1; + $query->_tables['civicrm_activity'] = $query->_tables['source_contact'] = $query->_whereTables['source_contact'] = 1; + } + + if (!empty($query->_returnProperties['source_contact_id'])) { + $query->_select['source_contact_id'] = 'source_contact.id as source_contact_id'; + $query->_element['source_contact_id'] = 1; + $query->_tables['civicrm_activity'] = $query->_tables['source_contact'] = $query->_whereTables['source_contact'] = 1; } if (!empty($query->_returnProperties['activity_result'])) { @@ -318,8 +324,8 @@ class CRM_Activity_BAO_Query { case 'activity_result': if (is_array($value)) { - $safe = NULL; - while (list(, $k) = each($value)) { + $safe = []; + foreach ($values as $id => $k) { $safe[] = "'" . CRM_Utils_Type::escape($k, 'String') . "'"; } $query->_where[$grouping][] = "civicrm_activity.result IN (" . implode(',', $safe) . ")"; @@ -348,6 +354,14 @@ class CRM_Activity_BAO_Query { $query->_qill[$grouping][] = ts('Activities which are not Followup Activities'); } break; + + case 'source_contact': + case 'source_contact_id': + $columnName = strstr($name, '_id') ? 'id' : 'sort_name'; + $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause("source_contact.{$columnName}", $op, $value, CRM_Utils_Type::typeToString($fields[$name]['type'])); + list($op, $value) = CRM_Contact_BAO_Query::buildQillForFieldValue('CRM_Contact_DAO_Contact', $columnName, $value, $op); + $query->_qill[$grouping][] = ts('%1 %2 %3', array(1 => $fields[$name]['title'], 2 => $op, 3 => $value)); + break; } } @@ -402,9 +416,8 @@ class CRM_Activity_BAO_Query { $activityContacts = CRM_Activity_BAO_ActivityContact::buildOptions('record_type_id', 'validate'); $sourceID = CRM_Utils_Array::key('Activity Source', $activityContacts); $from = " - LEFT JOIN civicrm_activity_contact ac - ON ( ac.activity_id = civicrm_activity_contact.activity_id AND ac.record_type_id = {$sourceID}) - INNER JOIN civicrm_contact source_contact ON (ac.contact_id = source_contact.id)"; + INNER JOIN civicrm_contact source_contact ON + (civicrm_activity_contact.contact_id = source_contact.id) AND civicrm_activity_contact.record_type_id = {$sourceID}"; break; case 'parent_id': @@ -505,7 +518,7 @@ class CRM_Activity_BAO_Query { if ($name) { $value = CRM_Core_OptionGroup::values($name); if (!empty($value)) { - while (list($k, $v) = each($value)) { + foreach ($value as $k => $v) { $resultOptions[$v] = $v; } }