}
if (!empty($query->_returnProperties['activity_type_id'])) {
- $query->_select['activity_type_id'] = "activity_type.id as activity_type_id";
+ $query->_select['activity_type_id'] = "activity_type.value as activity_type_id";
$query->_element['activity_type_id'] = 1;
$query->_tables['civicrm_activity'] = 1;
$query->_tables['activity_type'] = 1;
}
if (!empty($query->_returnProperties['activity_type'])) {
- $query->_select['activity_type'] = "activity_type.label as activity_type,
- civicrm_activity.activity_type_id as activity_type_id";
+ $query->_select['activity_type'] = "activity_type.label as activity_type";
$query->_element['activity_type'] = 1;
$query->_tables['civicrm_activity'] = 1;
$query->_tables['activity_type'] = 1;
}
if (!empty($query->_returnProperties['activity_status'])) {
- $query->_select['activity_status'] = "activity_status.label as activity_status";
+ $query->_select['activity_status'] = "activity_status.label as activity_status,
+ civicrm_activity.status_id as status_id";
$query->_element['activity_status'] = 1;
$query->_tables['civicrm_activity'] = 1;
$query->_tables['activity_status'] = 1;
$query->_element['result'] = 1;
$query->_tables['civicrm_activity'] = $query->_whereTables['civicrm_activity'] = 1;
}
+
+ if (CRM_Utils_Array::value('parent_id', $query->_returnProperties)) {
+ $query->_tables['parent_id'] = 1;
+ $query->_whereTables['parent_id'] = 1;
+ $query->_element['parent_id'] = 1;
+ }
}
/**
break;
}
$value = CRM_Utils_Type::escape($value, 'Integer');
- $query->_where[$grouping][] = " source_record_id = $value";
+ $query->_where[$grouping][] = " civicrm_activity.source_record_id = $value";
$query->_qill[$grouping][] = ts('Survey') . ' - ' . CRM_Core_DAO::getFieldValue('CRM_Campaign_DAO_Survey', $value, 'title');
break;
$query->_qill[$grouping][] = ts("Activity Result - %1", array(1 => implode(' or ', $safe)));
}
break;
+
+ case 'parent_id':
+ if ($value == 1) {
+ $query->_where[$grouping][] = "parent_id.parent_id IS NOT NULL";
+ $query->_qill[$grouping][] = ts('Activities which have Followup Activities');
+ }
+ elseif ($value == 2) {
+ $query->_where[$grouping][] = "parent_id.parent_id IS NULL";
+ $query->_qill[$grouping][] = ts('Activities without Followup Activities');
+ }
+ break;
+
+ case 'followup_parent_id':
+ if ($value == 1) {
+ $query->_where[$grouping][] = "civicrm_activity.parent_id IS NOT NULL";
+ $query->_qill[$grouping][] = ts('Activities which are Followup Activities');
+ }
+ elseif ($value == 2) {
+ $query->_where[$grouping][] = "civicrm_activity.parent_id IS NULL";
+ $query->_qill[$grouping][] = ts('Activities which are not Followup Activities');
+ }
+ break;
}
}
+ /**
+ * @param $name
+ * @param $mode
+ * @param $side
+ *
+ * @return null|string
+ */
static function from($name, $mode, $side) {
$from = NULL;
switch ($name) {
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)";
break;
+
+ case 'parent_id':
+ $from = "$side JOIN civicrm_activity AS parent_id ON civicrm_activity.id = parent_id.parent_id";
+ break;
}
return $from;
}
CRM_Core_Form_Date::buildDateRange($form, 'activity_date', 1, '_low', '_high', ts('From'), FALSE, FALSE);
-
+ $followUpActivity = array(
+ 1 => ts('Yes'),
+ 2 => ts('No'),
+ );
+ $form->addRadio('parent_id', NULL, $followUpActivity, array('allowClear' => TRUE));
+ $form->addRadio('followup_parent_id', NULL, $followUpActivity, array('allowClear' => TRUE));
$activityRoles = array(
3 => ts('With'),
2 => ts('Assigned to'),
foreach ($activityStatus as $activityStatusID => $activityStatusName) {
$activity_status[] = $form->createElement('checkbox', $activityStatusID, NULL, $activityStatusName);
}
- $form->addGroup($activity_status, 'activity_status', ts('Activity Status'), TRUE);
+ $form->addGroup($activity_status, 'activity_status', ts('Activity Status'));
$form->setDefaults(array('activity_status[1]' => 1, 'activity_status[2]' => 1));
$form->addElement('text', 'activity_subject', ts('Subject'), CRM_Core_DAO::getAttribute('CRM_Contact_DAO_Contact', 'sort_name'));
$form->addYesNo('activity_test', ts('Activity is a Test?'));
$form->setDefaults(array('activity_test' => 0));
}
+ /**
+ * @param $mode
+ * @param bool $includeCustomFields
+ *
+ * @return array|null
+ */
static function defaultReturnProperties($mode, $includeCustomFields = TRUE) {
$properties = NULL;
if ($mode & CRM_Contact_BAO_Query::MODE_ACTIVITY) {
'activity_campaign_id' => 1,
'result' => 1,
'activity_engagement_level' => 1,
+ 'parent_id' => 1,
);
if ($includeCustomFields) {
return $properties;
}
+ /**
+ * @param $query
+ * @param $value
+ * @param $pseudoconstantType
+ * @param $op
+ * @param $grouping
+ * @param $params
+ *
+ * @return array
+ */
static function buildWhereAndQill(&$query, $value, $pseudoconstantType, $op, $grouping, $params) {
$matches = $val = $clause = array();