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'])) {
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) . ")";
$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;
}
}
$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':
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;
}
}