case 'activity_engagement_level':
case 'activity_subject':
case 'activity_id':
+ case 'activity_campaign_id':
+
$qillName = $name;
if (in_array($name, array('activity_engagement_level', 'activity_id'))) {
$name = $qillName = str_replace('activity_', '', $name);
$name = str_replace('activity_', '', $name);
$qillName = str_replace('_id', '', $qillName);
}
+ if ($name == 'activity_campaign_id') {
+ $name = 'campaign_id';
+ }
+
$dataType = !empty($fields[$qillName]['type']) ? CRM_Utils_Type::typeToString($fields[$qillName]['type']) : 'String';
$query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause("civicrm_activity.$name", $op, $value, $dataType);
$query->_tables['civicrm_activity_tag'] = $query->_whereTables['civicrm_activity_tag'] = 1;
break;
- case 'activity_campaign_id':
- $campParams = array(
- 'op' => $op,
- 'campaign' => $value,
- 'grouping' => $grouping,
- 'tableName' => 'civicrm_activity',
- );
- CRM_Campaign_BAO_Query::componentSearchClause($campParams, $query);
- break;
-
case 'activity_result':
if (is_array($value)) {
$safe = NULL;
return $voterClause;
}
- /**
- * Build the campaign clause for component serach.
- *
- */
- public static function componentSearchClause(&$params, &$query) {
- $op = CRM_Utils_Array::value('op', $params, '=');
- $campaign = CRM_Utils_Array::value('campaign', $params);
- $tableName = CRM_Utils_Array::value('tableName', $params);
- $grouping = CRM_Utils_Array::value('grouping', $params);
- if (CRM_Utils_System::isNull($campaign) || empty($tableName)) {
- return;
- }
-
- // fixme - what is the purpose of this code? $campaign should be
- // an integer, not an array
- if (is_array($campaign)) {
- foreach (array(
- 'current_campaign',
- 'past_campaign',
- ) as $ignore) {
- $index = array_search($ignore, $campaign);
- if ($index !== FALSE) {
- unset($campaign[$index]);
- }
- }
- }
-
- $allCampaigns = CRM_Campaign_BAO_Campaign::getCampaigns(NULL, NULL, FALSE, FALSE, FALSE, TRUE);
-
- $campaignIds = $campaignTitles = array();
- if (is_array($campaign)) {
- foreach ($campaign as $campId) {
- $campaignIds[$campId] = $campId;
- $campaignTitles[$campId] = $allCampaigns[$campId];
- }
- }
- else {
- $campaignIds = $campaign;
- if (array_key_exists($campaignIds, $allCampaigns)) {
- $campaignTitles[$campaignIds] = $allCampaigns[$campaignIds];
- }
- }
- $query->_qill[$grouping][] = ts('Campaigns %1',
- array(1 => $op)
- ) . ' ' . implode(' ' . ts('or') . ' ', $campaignTitles);
- $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause("{$tableName}.campaign_id",
- $op,
- $campaignIds,
- 'Integer'
- );
- $query->_tables[$tableName] = $query->_whereTables[$tableName] = 1;
- }
-
}
case 'contribution_contact_id':
case (strpos($name, '_amount') !== FALSE):
case (strpos($name, '_date') !== FALSE && $name != 'contribution_fulfilled_date'):
+ case 'contribution_campaign_id':
$qillName = $name;
$pseudoExtraParam = NULL;
// @todo including names using a switch statement & then using an 'if' to filter them out is ... odd!
'contribution_check_number',
'contribution_payment_instrument_id',
'contribution_contact_id',
+ 'contribution_campaign_id',
)
)
) {
$name = str_replace('contribution_', '', $name);
- if (!in_array($name, array('source', 'id', 'contact_id'))) {
+ if (!in_array($name, array('source', 'id', 'contact_id', 'campaign_id'))) {
$qillName = str_replace('contribution_', '', $qillName);
}
}
$query->_tables['civicrm_contribution_soft'] = $query->_whereTables['civicrm_contribution_soft'] = 1;
return;
- case 'contribution_campaign_id':
- $campParams = array(
- 'op' => $op,
- 'campaign' => $value,
- 'grouping' => $grouping,
- 'tableName' => 'civicrm_contribution',
- );
- CRM_Campaign_BAO_Query::componentSearchClause($campParams, $query);
- return;
-
case 'contribution_batch_id':
$batches = CRM_Contribute_PseudoConstant::batch();
$query->_where[$grouping][] = " civicrm_entity_batch.batch_id $op $value";
case 'participant_is_pay_later':
case 'participant_fee_amount':
case 'participant_fee_level':
+ case 'participant_campaign_id':
+
$qillName = $name;
if (in_array($name, array(
'participant_status_id',
'participant_fee_amount',
'participant_fee_level',
'participant_is_pay_later',
+ 'participant_campaign_id',
))) {
$name = str_replace('participant_', '', $name);
if ($name == 'is_pay_later') {
list($op, $value) = CRM_Contact_BAO_Query::buildQillForFieldValue('CRM_Event_DAO_Event', $name, $value, $op);
$query->_qill[$grouping][] = ts('%1 %2 %3', array(1 => $fields[$qillName]['title'], 2 => $op, 3 => $value));
return;
-
- case 'participant_campaign_id':
- $campParams = array(
- 'op' => $op,
- 'campaign' => $value,
- 'grouping' => $grouping,
- 'tableName' => 'civicrm_participant',
- );
- CRM_Campaign_BAO_Query::componentSearchClause($campParams, $query);
- return;
}
}
return;
case 'mailing_campaign_id':
- $campParams = array(
- 'op' => $op,
- 'campaign' => $value,
- 'grouping' => $grouping,
- 'tableName' => 'civicrm_mailing',
- );
- CRM_Campaign_BAO_Query::componentSearchClause($campParams, $query);
+ $name = 'campaign_id';
+ CRM_Contact_BAO_Query::buildClause("civicrm_mailing.$name", $op, $value, 'Integer');
+ list($op, $value) = CRM_Contact_BAO_Query::buildQillForFieldValue('CRM_Mailing_DAO_Mailing', $name, $value, $op);
+ $query->_qill[$grouping][] = ts('Campaign %1 %2', array(1 => $op, 2 => $value));
+ $query->_tables['civicrm_mailing'] = $query->_whereTables['civicrm_mailing'] = 1;
$query->_tables['civicrm_mailing_recipients'] = $query->_whereTables['civicrm_mailing_recipients'] = 1;
return;
}
case 'membership_type':
case 'membership_type_id':
case 'member_id':
+ case 'member_campaign_id':
+
if (strpos($name, 'status') !== FALSE) {
$name = 'status_id';
$qillName = 'Membership Status(s)';
$name = 'id';
$qillName = 'Membership ID';
}
+ elseif ($name == 'member_campaign_id') {
+ $name = 'campaign_id';
+ $qillName = 'Campaign';
+ }
else {
$name = 'membership_type_id';
$qillName = 'Membership Type(s)';
}
$query->_tables['civicrm_membership'] = $query->_whereTables['civicrm_membership'] = 1;
return;
-
- case 'member_campaign_id':
- $campParams = array(
- 'op' => $op,
- 'campaign' => $value,
- 'grouping' => $grouping,
- 'tableName' => 'civicrm_membership',
- );
- CRM_Campaign_BAO_Query::componentSearchClause($campParams, $query);
- return;
}
}
$query->_tables['civicrm_pledge'] = $query->_whereTables['civicrm_pledge'] = 1;
return;
- case 'pledge_campaign_id':
- $campParams = array(
- 'op' => $op,
- 'campaign' => $value,
- 'grouping' => $grouping,
- 'tableName' => 'civicrm_pledge',
- );
- CRM_Campaign_BAO_Query::componentSearchClause($campParams, $query);
- return;
-
case 'pledge_contact_id':
+ case 'pledge_campaign_id':
$name = str_replace('pledge_', '', $name);
$query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause("civicrm_pledge.$name", $op, $value, 'Integer');
list($op, $value) = CRM_Contact_BAO_Query::buildQillForFieldValue('CRM_Pledge_DAO_Pledge', $name, $value, $op);
- $query->_qill[$grouping][] = ts('Contact ID %1 %2', array(1 => $op, 2 => $value));
+ $label = ($name == 'campaign_id') ? 'Campaign' : 'Contact ID';
+ $query->_qill[$grouping][] = ts('%1 %2 %3', array(1 => $label, 2 => $op, 3 => $value));
$query->_tables['civicrm_pledge'] = $query->_whereTables['civicrm_pledge'] = 1;
return;
}
break;
case 'week':
+ $weekFirst = CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::LOCALIZATION_PREFERENCES_NAME, 'weekBegins', NULL, 0);
+ $thisDay = $now['wday'];
+ if ($weekFirst > $thisDay) {
+ $diffDay = $thisDay - $weekFirst + 7;
+ }
+ else {
+ $diffDay = $thisDay - $weekFirst;
+ }
switch ($relativeTerm) {
case 'this':
$from['d'] = $now['mday'];
$from['M'] = $now['mon'];
$from['Y'] = $now['year'];
- $from = self::intervalAdd('day', -1 * ($now['wday']), $from);
+ $from = self::intervalAdd('day', -1 * ($diffDay), $from);
$to = self::intervalAdd('day', 6, $from);
break;
$from['d'] = $now['mday'];
$from['M'] = $now['mon'];
$from['Y'] = $now['year'];
- $from = self::intervalAdd('day', -1 * ($now['wday']) - 7, $from);
+ $from = self::intervalAdd('day', -1 * ($diffDay) - 7, $from);
$to = self::intervalAdd('day', 6, $from);
break;
$from['d'] = $now['mday'];
$from['M'] = $now['mon'];
$from['Y'] = $now['year'];
- $from = self::intervalAdd('day', -1 * ($now['wday']) - 14, $from);
+ $from = self::intervalAdd('day', -1 * ($diffDay) - 14, $from);
$to = self::intervalAdd('day', 6, $from);
break;
$from['d'] = $now['mday'];
$from['M'] = $now['mon'];
$from['Y'] = $now['year'];
- $from = self::intervalAdd('day', -1 * ($now['wday']) - 14, $from);
+ $from = self::intervalAdd('day', -1 * ($diffDay) - 14, $from);
$to = self::intervalAdd('day', 13, $from);
break;
$to['d'] = $now['mday'];
$to['M'] = $now['mon'];
$to['Y'] = $now['year'];
- $to = self::intervalAdd('day', -1 * ($now['wday']) - 1, $to);
+ $to = self::intervalAdd('day', -1 * ($diffDay) - 1, $to);
unset($from);
break;
$from['d'] = $now['mday'];
$from['M'] = $now['mon'];
$from['Y'] = $now['year'];
- $from = self::intervalAdd('day', -1 * ($now['wday']), $from);
+ $from = self::intervalAdd('day', -1 * ($diffDay), $from);
unset($to);
break;
$from['d'] = $now['mday'];
$from['M'] = $now['mon'];
$from['Y'] = $now['year'];
- $from = self::intervalAdd('day', -1 * ($now['wday']) - 1, $from);
+ $from = self::intervalAdd('day', -1 * ($diffDay) - 1, $from);
unset($to);
break;
$from['d'] = $now['mday'];
$from['M'] = $now['mon'];
$from['Y'] = $now['year'];
- $from = self::intervalAdd('day', -1 * ($now['wday']), $from);
+ $from = self::intervalAdd('day', -1 * ($diffDay), $from);
$to['d'] = $now['mday'];
$to['M'] = $now['mon'];
$to['Y'] = $now['year'];
$to['M'] = $now['mon'];
$to['Y'] = $now['year'];
//CRM-14550 QA Fix
- $to = self::intervalAdd('day', -1 * ($now['wday']) + 6, $to);
+ $to = self::intervalAdd('day', -1 * ($diffDay) + 6, $to);
unset($from);
break;
$from['d'] = $now['mday'];
$from['M'] = $now['mon'];
$from['Y'] = $now['year'];
- $from = self::intervalAdd('day', -1 * ($now['wday']) + 7, $from);
+ $from = self::intervalAdd('day', -1 * ($diffDay) + 7, $from);
$to = self::intervalAdd('day', 6, $from);
break;
);
}
else {
- $query->where(CRM_Core_DAO::createSQLFilter('a.' . $column_name, $value, $type));
+ $query->where(CRM_Core_DAO::createSQLFilter("{$table_name}.{$column_name}", $value, $type));
}
}
}
"bAutoWidth": false,
"aoColumns": columns,
"bSort": true,
+ "sDom": 'ti',
"oLanguage":{
"sEmptyTable": noRecordFoundMsg,
"sZeroRecords": noRecordFoundMsg
));
}
+ /**
+ * Test searching on custom fields with less than or equal.
+ *
+ * See CRM-17101.
+ */
+ public function testEventGetCustomFieldLte() {
+ // create custom group with custom field on event
+ $ids = $this->entityCustomGroupWithSingleFieldCreate(__FUNCTION__, __FILE__);
+
+ // Create an event, with a custom value.
+ $params = $this->_params;
+ $params['title'] = "My test event.";
+ $params['start_date'] = "2015-03-14";
+ // Just assume that an event type 1 exists.
+ $params['event_type_id'] = 1;
+ $params['custom_' . $ids['custom_field_id']] = "AAAA";
+
+ $save_result = $this->callApiSuccess($this->_entity, 'create', $params);
+
+ // Retrieve the activity, search for custom field < 'BBBB'
+ $get_result = $this->callAPISuccess($this->_entity, 'get', array(
+ 'return.custom_' . $ids['custom_field_id'] => 1,
+ 'custom_' . $ids['custom_field_id'] => array('<=' => 'BBBB'),
+ ));
+
+ // Expect that we find the saved event.
+ $this->assertArrayKeyExists($save_result['id'], $get_result['values']);
+
+ $this->callAPISuccess($this->_entity, 'Delete', array('id' => $save_result['id']));
+ }
+
/**
* Test searching on custom fields with netsted call with id param.
*