* @access public
*/
static function select(&$query) {
- if (CRM_Utils_Array::value('activity_id', $query->_returnProperties)) {
+ if (!empty($query->_returnProperties['activity_id'])) {
$query->_select['activity_id'] = "civicrm_activity.id as activity_id";
$query->_element['activity_id'] = 1;
$query->_tables['civicrm_activity'] = $query->_whereTables['civicrm_activity'] = 1;
}
- if (CRM_Utils_Array::value('activity_type_id', $query->_returnProperties)) {
+ if (!empty($query->_returnProperties['activity_type_id'])) {
$query->_select['activity_type_id'] = "activity_type.id as activity_type_id";
$query->_element['activity_type_id'] = 1;
$query->_tables['civicrm_activity'] = 1;
$query->_whereTables['activity_type'] = 1;
}
- if (CRM_Utils_Array::value('activity_type', $query->_returnProperties)) {
+ if (!empty($query->_returnProperties['activity_type'])) {
$query->_select['activity_type'] = "activity_type.label as activity_type";
$query->_element['activity_type'] = 1;
$query->_tables['civicrm_activity'] = 1;
$query->_whereTables['activity_type'] = 1;
}
- if (CRM_Utils_Array::value('activity_subject', $query->_returnProperties)) {
+ if (!empty($query->_returnProperties['activity_subject'])) {
$query->_select['activity_subject'] = "civicrm_activity.subject as activity_subject";
$query->_element['activity_subject'] = 1;
$query->_tables['civicrm_activity'] = $query->_whereTables['civicrm_activity'] = 1;
}
- if (CRM_Utils_Array::value('activity_date_time', $query->_returnProperties)) {
+ if (!empty($query->_returnProperties['activity_date_time'])) {
$query->_select['activity_date_time'] = "civicrm_activity.activity_date_time as activity_date_time";
$query->_element['activity_date_time'] = 1;
$query->_tables['civicrm_activity'] = $query->_whereTables['civicrm_activity'] = 1;
}
- if (CRM_Utils_Array::value('activity_status_id', $query->_returnProperties)) {
+ if (!empty($query->_returnProperties['activity_status_id'])) {
$query->_select['activity_status_id'] = "activity_status.value as activity_status_id";
$query->_element['activity_status_id'] = 1;
$query->_tables['civicrm_activity'] = 1;
$query->_whereTables['activity_status'] = 1;
}
- if (CRM_Utils_Array::value('activity_status', $query->_returnProperties)) {
+ if (!empty($query->_returnProperties['activity_status'])) {
$query->_select['activity_status'] = "activity_status.label as activity_status";
$query->_element['activity_status'] = 1;
$query->_tables['civicrm_activity'] = 1;
$query->_whereTables['activity_status'] = 1;
}
- if (CRM_Utils_Array::value('activity_duration', $query->_returnProperties)) {
+ if (!empty($query->_returnProperties['activity_duration'])) {
$query->_select['activity_duration'] = "civicrm_activity.duration as activity_duration";
$query->_element['activity_duration'] = 1;
$query->_tables['civicrm_activity'] = $query->_whereTables['civicrm_activity'] = 1;
}
- if (CRM_Utils_Array::value('activity_location', $query->_returnProperties)) {
+ if (!empty($query->_returnProperties['activity_location'])) {
$query->_select['activity_location'] = "civicrm_activity.location as activity_location";
$query->_element['activity_location'] = 1;
$query->_tables['civicrm_activity'] = $query->_whereTables['civicrm_activity'] = 1;
}
- if (CRM_Utils_Array::value('activity_details', $query->_returnProperties)) {
+ if (!empty($query->_returnProperties['activity_details'])) {
$query->_select['activity_details'] = "civicrm_activity.details as activity_details";
$query->_element['activity_details'] = 1;
$query->_tables['civicrm_activity'] = $query->_whereTables['civicrm_activity'] = 1;
}
- if (CRM_Utils_Array::value('source_record_id', $query->_returnProperties)) {
+ if (!empty($query->_returnProperties['source_record_id'])) {
$query->_select['source_record_id'] = "civicrm_activity.source_record_id as source_record_id";
$query->_element['source_record_id'] = 1;
$query->_tables['civicrm_activity'] = $query->_whereTables['civicrm_activity'] = 1;
}
- if (CRM_Utils_Array::value('activity_is_test', $query->_returnProperties)) {
+ if (!empty($query->_returnProperties['activity_is_test'])) {
$query->_select['activity_is_test'] = "civicrm_activity.is_test as activity_is_test";
$query->_element['activity_is_test'] = 1;
$query->_tables['civicrm_activity'] = $query->_whereTables['civicrm_activity'] = 1;
}
- if (CRM_Utils_Array::value('activity_campaign_id', $query->_returnProperties)) {
+ if (!empty($query->_returnProperties['activity_campaign_id'])) {
$query->_select['activity_campaign_id'] = 'civicrm_activity.campaign_id as activity_campaign_id';
$query->_element['activity_campaign_id'] = 1;
$query->_tables['civicrm_activity'] = $query->_whereTables['civicrm_activity'] = 1;
}
- if (CRM_Utils_Array::value('activity_engagement_level', $query->_returnProperties)) {
+ if (!empty($query->_returnProperties['activity_engagement_level'])) {
$query->_select['activity_engagement_level'] = 'civicrm_activity.engagement_level as activity_engagement_level';
$query->_element['activity_engagement_level'] = 1;
$query->_tables['civicrm_activity'] = $query->_whereTables['civicrm_activity'] = 1;
}
- if (CRM_Utils_Array::value('source_contact', $query->_returnProperties)) {
+ 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;
}
+
+ if (!empty($query->_returnProperties['activity_result'])) {
+ $query->_select['activity_result'] = 'civicrm_activity.result as activity_result';
+ $query->_element['result'] = 1;
+ $query->_tables['civicrm_activity'] = $query->_whereTables['civicrm_activity'] = 1;
+ }
}
/**
switch ($name) {
case 'activity_type_id':
+ case 'activity_type':
$types = CRM_Core_PseudoConstant::activityType(TRUE, TRUE, FALSE, 'label', TRUE);
-
//get the component activity types.
$compActTypes = CRM_Core_PseudoConstant::activityType(TRUE, TRUE, FALSE, 'label', TRUE, TRUE);
-
- $clause = array();
- if (is_array($value)) {
- foreach ($value as $id => $dontCare) {
- if (array_key_exists($id, $types) && $dontCare) {
- $clause[] = "'" . CRM_Utils_Type::escape($types[$id], 'String') . "'";
- if (array_key_exists($id, $compActTypes)) {
- CRM_Contact_BAO_Query::$_considerCompActivities = TRUE;
- }
- }
- }
- $activityTypes = implode(',', array_keys($value));
- }
- else {
- $clause[] = "'" . CRM_Utils_Type::escape($value, 'String') . "'";
- $activityTypes = $value;
- if (array_key_exists($value, $compActTypes)) {
+ $activityTypeIds = self::buildWhereAndQill($query, $value, $types, $op, $grouping, array('Activity Type', 'civicrm_activity.activity_type_id'));
+
+ foreach ($activityTypeIds as $activityTypeId) {
+ if (array_key_exists($activityTypeId, $compActTypes)) {
CRM_Contact_BAO_Query::$_considerCompActivities = TRUE;
+ break;
}
}
- $query->_where[$grouping][] = ' civicrm_activity.activity_type_id IN (' . $activityTypes . ')';
- $query->_qill[$grouping][] = ts('Activity Type') . ' ' . implode(' ' . ts('or') . ' ', $clause);
break;
case 'activity_survey_id':
case 'activity_status':
$status = CRM_Core_PseudoConstant::activityStatus();
- $clause = array();
- if (is_array($value)) {
- foreach ($value as $k => $v) {
- if ($k) {
- $clause[] = "'" . CRM_Utils_Type::escape($status[$k], 'String') . "'";
- }
- }
- }
- else {
- $clause[] = "'" . CRM_Utils_Type::escape($value, 'String') . "'";
- }
- $query->_where[$grouping][] = ' civicrm_activity.status_id IN (' . implode(',', array_keys($value)) . ')';
- $query->_qill[$grouping][] = ts('Activity Status') . ' - ' . implode(' ' . ts('or') . ' ', $clause);
+
+ $activityTypeIds = self::buildWhereAndQill($query, $value, $status, $op, $grouping, array('Activity Status', 'civicrm_activity.status_id'));
break;
case 'activity_subject':
'tableName' => 'civicrm_activity',
);
CRM_Campaign_BAO_Query::componentSearchClause($campParams, $query);
- return;
+ break;
+ case 'activity_result':
+ if(is_array($value)) {
+ $safe = NULL;
+ while(list(,$k) = each($value)) {
+ $safe[] = "'" . CRM_Utils_Type::escape($k, 'String') . "'";
+ }
+ $query->_where[$grouping][] = "civicrm_activity.result IN (" . implode(',', $safe) . ")";
+ $query->_qill[$grouping][] = ts("Activity Result - %1", array(1 => implode(' or ', $safe)));
+ }
+ break;
}
}
*
* @access public
*
+ * @param $form CRM_Core_Form
* @return void
* @static
*/
2 => ts('Assigned to'),
1 => ts('Added by'),
);
- $form->addRadio('activity_role', NULL, $activityRoles);
+ $form->addRadio('activity_role', NULL, $activityRoles, array('allowClear' => TRUE));
$form->setDefaults(array('activity_role' => 3));
$activityStatus = CRM_Core_PseudoConstant::activityStatus();
foreach ($activityStatus as $activityStatusID => $activityStatusName) {
$activity_status[] = $form->createElement('checkbox', $activityStatusID, NULL, $activityStatusName);
}
- $form->addGroup($activity_status, 'activity_status', ts('Activity Status'));
+ $form->addGroup($activity_status, 'activity_status', ts('Activity Status'), TRUE);
$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?'));
$surveys = CRM_Campaign_BAO_Survey::getSurveys(TRUE, FALSE, FALSE, TRUE);
if ($surveys) $form->add('select', 'activity_survey_id', ts('Survey / Petition'),
- array(
- '' => ts('- none -')) + $surveys, FALSE
+ array('' => ts('- none -')) + $surveys, FALSE,
+ array('class' => 'crm-select2')
);
$extends = array('Activity');
//add engagement level CRM-7775
$buildEngagementLevel = FALSE;
+ $buildSurveyResult = FALSE;
if (CRM_Campaign_BAO_Campaign::isCampaignEnable() &&
CRM_Campaign_BAO_Campaign::accessCampaign()
) {
$buildEngagementLevel = TRUE;
- $form->add('select', 'activity_engagement_level',
- ts('Engagement Index'),
- array('' => ts('- any -')) + CRM_Campaign_PseudoConstant::engagementLevel()
- );
+ $form->addSelect('activity_engagement_level', array('entity' => 'activity', 'option_url' => NULL));
+
+ // Add survey result field.
+ $optionGroups = CRM_Campaign_BAO_Survey::getResultSets( 'name' );
+ $resultOptions = array();
+ foreach ( $optionGroups as $gid => $name ) {
+ if ( $name ) {
+ $value = array();
+ $value = CRM_Core_OptionGroup::values($name);
+ if (!empty($value)) {
+ while(list($k,$v) = each($value)) {
+ $resultOptions[$v] = $v;
+ }
+ }
+ }
+ }
+ // If no survey result options have been created, don't build
+ // the field to avoid clutter.
+ if(count($resultOptions) > 0) {
+ $buildSurveyResult = TRUE;
+ asort($resultOptions);
+ $form->add('select', 'activity_result', ts("Survey Result"),
+ $resultOptions, FALSE,
+ array('id' => 'activity_result', 'multiple' => 'multiple', 'class' => 'crm-select2')
+ );
+ }
}
-
+
$form->assign('buildEngagementLevel', $buildEngagementLevel);
+ $form->assign('buildSurveyResult', $buildSurveyResult);
$form->setDefaults(array('activity_test' => 0));
}
- static function addShowHide(&$showHide) {
- $showHide->addHide('caseActivityForm');
- $showHide->addShow('caseActivityForm_show');
- }
-
static function defaultReturnProperties($mode, $includeCustomFields = TRUE) {
$properties = NULL;
if ($mode & CRM_Contact_BAO_Query::MODE_ACTIVITY) {
'source_record_id' => 1,
'activity_is_test' => 1,
'activity_campaign_id' => 1,
+ 'result' => 1,
'activity_engagement_level' => 1,
);
return $properties;
}
+
+ static function buildWhereAndQill(&$query, $value, $pseudoconstantType, $op, $grouping, $params) {
+ $matches = $val = $clause = array();
+
+ if (is_array($value)) {
+ foreach ($value as $k => $v) {
+ if ($k) {
+ $val[] = $k;
+ }
+ }
+
+ if (count($val) > 0) {
+ // Overwrite $op so it works with an IN where statement.
+ $op = 'IN';
+ }
+ else {
+ // If we somehow have an empty array, just return
+ return;
+ }
+ $value = $matches[0] = $val;
+ }
+ else {
+ preg_match_all('/\d+/', $value, $matches);
+ }
+ foreach ($matches[0] as $qill) {
+ $clause[] = CRM_Utils_Array::value($qill, $pseudoconstantType);
+ }
+
+ $query->_qill[$grouping][] = ts($params[0] . ' %1 ', array(1 => $op)) . implode(' ' . ts('or') . ' ', $clause);
+ $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause($params[1],
+ $op, $value, "Integer"
+ );
+ return $matches[0];
+ }
}