/*
+--------------------------------------------------------------------+
- | CiviCRM version 4.3 |
+ | CiviCRM version 4.4 |
+--------------------------------------------------------------------+
| Copyright CiviCRM LLC (c) 2004-2013 |
+--------------------------------------------------------------------+
* @access public
*/
static function where(&$query) {
- $grouping = $testCondition = NULL;
+ $grouping = NULL;
foreach (array_keys($query->_params) as $id) {
if (substr($query->_params[$id][0], 0, 9) == 'activity_') {
if ($query->_mode == CRM_Contact_BAO_QUERY::MODE_CONTACTS) {
$query->_useDistinct = TRUE;
}
- if ($query->_params[$id][0] == 'activity_test') {
- $testCondition = $id;
- continue;
- }
$grouping = $query->_params[$id][3];
self::whereClauseSingle($query->_params[$id], $query);
}
}
- // Only add test condition if other fields are selected
- if ($grouping !== NULL && $testCondition &&
- // we dont want to include all tests for sql OR CRM-7827
- $query->getOperator() != 'OR'
- ) {
- self::whereClauseSingle($query->_params[$testCondition], $query);
- }
}
/**
case 'activity_role':
CRM_Contact_BAO_Query::$_activityRole = $values[2];
+ $activityContacts = CRM_Core_OptionGroup::values('activity_contacts', FALSE, FALSE, FALSE, NULL, 'name');
+ $sourceID = CRM_Utils_Array::key('Activity Source', $activityContacts);
+ $assigneeID = CRM_Utils_Array::key('Activity Assignees', $activityContacts);
+ $targetID = CRM_Utils_Array::key('Activity Targets', $activityContacts);
- //for activity target name
- $activityTargetName = $query->getWhereValues('activity_contact_name', $grouping);
- if (!$activityTargetName[2]) {
- $name = NULL;
- }
- else {
- $name = trim($activityTargetName[2]);
- $name = strtolower(CRM_Core_DAO::escapeString($name));
- }
-
- $query->_where[$grouping][] = " contact_activity_source.is_deleted = 0 AND contact_activity_source.sort_name LIKE '%{$name}%'";
- if ($values[2] == 1) {
- $query->_where[$grouping][] = " civicrm_activity.source_contact_id = contact_activity_source.id";
- $query->_qill[$grouping][] = ts('Activity created by') . " '$name'";
+ if ($values[2]) {
$query->_tables['civicrm_activity_contact'] = $query->_whereTables['civicrm_activity_contact'] = 1;
- }
- elseif ($values[2] == 2) {
- $query->_where[$grouping][] = " civicrm_activity_assignment.activity_id = civicrm_activity.id AND civicrm_activity_assignment.assignee_contact_id = contact_activity_source.id";
- $query->_tables['civicrm_activity_assignment'] = $query->_whereTables['civicrm_activity_assignment'] = 1;
- $query->_tables['civicrm_activity_contact'] = $query->_whereTables['civicrm_activity_contact'] = 1;
- $query->_qill[$grouping][] = ts('Activity assigned to') . " '$name'";
+ if ($values[2] == 1) {
+ $query->_where[$grouping][] = " civicrm_activity_contact.record_type_id = $sourceID";
+ $query->_qill[$grouping][] = ts('Activity created by');
+ }
+ else if ($values[2] == 2) {
+ $query->_where[$grouping][] = " civicrm_activity_contact.record_type_id = $assigneeID";
+ $query->_qill[$grouping][] = ts('Activity assigned to');
+ }
+ else if ($values[2] == 3) {
+ $query->_where[$grouping][] = " civicrm_activity_contact.record_type_id = $targetID";
+ $query->_qill[$grouping][] = ts('Activity targeted to');
+ }
}
break;
break;
case 'activity_test':
- $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause("civicrm_activity.is_test", $op, $value, "Boolean");
- if ($value) {
- $query->_qill[$grouping][] = ts('Activity is a Test');
+ // We dont want to include all tests for sql OR CRM-7827
+ if (!$value || $query->getOperator() != 'OR') {
+ $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause("civicrm_activity.is_test", $op, $value, "Boolean");
+ if ($value) {
+ $query->_qill[$grouping][] = ts('Activity is a Test');
+ }
}
break;
}
}
}
+
case 'activity_tags':
$value = array_keys($value);
- $activityTags = CRM_Core_PseudoConstant::tag();
+ $activityTags = CRM_Core_PseudoConstant::get('CRM_Core_DAO_EntityTag', 'tag_id', array('onlyActive' => FALSE));
$names = array();
$val = array();
$from = NULL;
switch ($name) {
case 'civicrm_activity':
- //CRM-7480 we are going to civicrm_activitty table either
+ //CRM-7480 we are going to civicrm_activity table either
//from civicrm_activity_target or civicrm_activity_assignment.
//as component specific activities does not have entry in
//activity target table so lets consider civicrm_activity_assignment.
- if (CRM_Contact_BAO_Query::$_considerCompActivities) {
- $from .= " $side JOIN civicrm_activity_target
- ON ( civicrm_activity_target.target_contact_id = contact_a.id ) ";
-
- $from .= " $side JOIN civicrm_activity_assignment activity_assignment
- ON ( activity_assignment.assignee_contact_id = contact_a.id )";
+ $from .= " INNER JOIN civicrm_activity_contact
+ ON ( civicrm_activity_contact.contact_id = contact_a.id ) ";
+ $from .= " INNER JOIN civicrm_activity
+ ON ( civicrm_activity.id = civicrm_activity_contact.activity_id
+ AND civicrm_activity.is_deleted = 0 AND civicrm_activity.is_current_revision = 1 )";
- $from .= " $side JOIN civicrm_activity
- ON ( civicrm_activity.id = civicrm_activity_target.activity_id
- AND civicrm_activity.is_deleted = 0 AND civicrm_activity.is_current_revision = 1 )";
- }
- elseif (CRM_Contact_BAO_Query::$_withContactActivitiesOnly) {
- //force the civicrm_activity_target table.
- $from .= " $side JOIN civicrm_activity_target ON civicrm_activity_target.target_contact_id = contact_a.id ";
- $from .= " $side JOIN civicrm_activity ON ( civicrm_activity.id = civicrm_activity_target.activity_id
- AND civicrm_activity.is_deleted = 0
- AND civicrm_activity.is_current_revision = 1 )";
- }
- else {
- $activityRole = CRM_Contact_BAO_Query::$_activityRole;
- switch ($activityRole) {
- case 1:
- $from .= " $side JOIN civicrm_activity ON ( civicrm_activity.source_contact_id = contact_a.id
- AND civicrm_activity.is_deleted = 0
- AND civicrm_activity.is_current_revision = 1 )";
- break;
-
- case 2:
- $from .= " $side JOIN civicrm_activity_assignment activity_assignment ON ( activity_assignment.assignee_contact_id = contact_a.id )";
- $from .= " $side JOIN civicrm_activity ON ( civicrm_activity.id = activity_assignment.activity_id
- AND civicrm_activity.is_deleted = 0
- AND civicrm_activity.is_current_revision = 1 )";
- break;
-
- default:
- $from .= " $side JOIN civicrm_activity_target ON civicrm_activity_target.target_contact_id = contact_a.id ";
- $from .= " $side JOIN civicrm_activity ON ( civicrm_activity.id = civicrm_activity_target.activity_id
- AND civicrm_activity.is_deleted = 0
- AND civicrm_activity.is_current_revision = 1 )";
- }
- }
- break;
-
- case 'civicrm_activity_contact':
$activityRole = CRM_Contact_BAO_Query::$_activityRole;
- if ($activityRole == 1) {
- $from .= " $side JOIN civicrm_contact contact_activity_source ON civicrm_activity.source_contact_id = contact_activity_source.id
- LEFT JOIN civicrm_email email_activity_source ON (contact_activity_source.id = email_activity_source.contact_id AND email_activity_source.is_primary = 1)";
- }
- elseif ($activityRole == 2) {
- $from .= " $side JOIN civicrm_activity_assignment ON civicrm_activity.id = civicrm_activity_assignment.activity_id ";
- $from .= " $side JOIN civicrm_contact contact_activity_source ON civicrm_activity_assignment.assignee_contact_id = contact_activity_source.id
- LEFT JOIN civicrm_email email_activity_source ON (contact_activity_source.id = email_activity_source.contact_id AND email_activity_source.is_primary = 1)";
- }
break;
case 'activity_status':
- $from = " $side JOIN civicrm_option_group option_group_activity_status ON (option_group_activity_status.name = 'activity_status')";
+ $from .= " $side JOIN civicrm_option_group option_group_activity_status ON (option_group_activity_status.name = 'activity_status')";
$from .= " $side JOIN civicrm_option_value activity_status ON (civicrm_activity.status_id = activity_status.value
AND option_group_activity_status.id = activity_status.option_group_id ) ";
break;
case 'activity_type':
- $from = " $side JOIN civicrm_option_group option_group_activity_type ON (option_group_activity_type.name = 'activity_type')";
+ $from .= " $side JOIN civicrm_option_group option_group_activity_type ON (option_group_activity_type.name = 'activity_type')";
$from .= " $side JOIN civicrm_option_value activity_type ON (civicrm_activity.activity_type_id = activity_type.value
AND option_group_activity_type.id = activity_type.option_group_id ) ";
break;
break;
case 'source_contact':
- $from = " $side JOIN civicrm_contact source_contact ON source_contact.id = civicrm_activity.source_contact_id";
+ $from = " $side JOIN civicrm_contact source_contact ON source_contact.id = civicrm_activity_contact.contact_id";
break;
}
CRM_Core_Form_Date::buildDateRange($form, 'activity_date', 1, '_low', '_high', ts('From'), FALSE, FALSE);
- $activityRoles = array(1 => ts('Created by'), 2 => ts('Assigned to'));
+ $activityRoles = array(
+ 1 => ts('Created by'),
+ 2 => ts('Assigned to'),
+ 3 => ts('Targeted to')
+ );
$form->addRadio('activity_role', NULL, $activityRoles);
- $form->addElement('text', 'activity_contact_name', ts('Contact Name'), CRM_Core_DAO::getAttribute('CRM_Contact_DAO_Contact', 'sort_name'));
-
$activityStatus = CRM_Core_PseudoConstant::activityStatus();
foreach ($activityStatus as $activityStatusID => $activityStatusName) {
$activity_status[] = $form->createElement('checkbox', $activityStatusID, NULL, $activityStatusName);