3 +--------------------------------------------------------------------+
5 +--------------------------------------------------------------------+
6 | Copyright CiviCRM LLC (c) 2004-2019 |
7 +--------------------------------------------------------------------+
8 | This file is a part of CiviCRM. |
10 | CiviCRM is free software; you can copy, modify, and distribute it |
11 | under the terms of the GNU Affero General Public License |
12 | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. |
14 | CiviCRM is distributed in the hope that it will be useful, but |
15 | WITHOUT ANY WARRANTY; without even the implied warranty of |
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
17 | See the GNU Affero General Public License for more details. |
19 | You should have received a copy of the GNU Affero General Public |
20 | License and the CiviCRM Licensing Exception along |
21 | with this program; if not, contact CiviCRM LLC |
22 | at info[AT]civicrm[DOT]org. If you have questions about the |
23 | GNU Affero General Public License or the licensing of CiviCRM, |
24 | see the CiviCRM license FAQ at http://civicrm.org/licensing |
25 +--------------------------------------------------------------------+
29 * This api exposes CiviCRM Campaign records.
31 * @note Campaign component must be enabled.
33 * @package CiviCRM_APIv3
37 * Create/update Campaign.
39 * This API is used to create new campaign or update any of the existing
40 * In case of updating existing campaign, id of that particular campaign must
41 * be in $params array.
43 * @param array $params
47 function civicrm_api3_campaign_create($params) {
48 return _civicrm_api3_basic_create(_civicrm_api3_get_BAO(__FUNCTION__
), $params, 'Campaign');
52 * Adjust Metadata for Create action.
54 * The metadata is used for setting defaults, documentation & validation.
56 * @param array $params
57 * Array of parameters determined by getfields.
59 function _civicrm_api3_campaign_create_spec(&$params) {
60 $params['title']['api.required'] = 1;
61 $params['is_active']['api.default'] = 1;
65 * Returns array of campaigns matching a set of one or more properties.
67 * @param array $params
71 * Array of matching campaigns
73 function civicrm_api3_campaign_get($params) {
74 return _civicrm_api3_basic_get(_civicrm_api3_get_BAO(__FUNCTION__
), $params, TRUE, 'Campaign');
78 * Delete an existing campaign.
80 * This method is used to delete any existing campaign.
81 * Id of the campaign to be deleted is required field in $params array
83 * @param array $params
84 * array containing id of the group to be deleted
88 function civicrm_api3_campaign_delete($params) {
89 return _civicrm_api3_basic_delete(_civicrm_api3_get_BAO(__FUNCTION__
), $params);
93 * Get campaign list parameters.
95 * @see _civicrm_api3_generic_getlist_params
97 * @param array $request
99 function _civicrm_api3_campaign_getlist_params(&$request) {
100 $fieldsToReturn = ['title', 'campaign_type_id', 'status_id', 'start_date', 'end_date'];
101 $request['params']['return'] = array_unique(array_merge($fieldsToReturn, $request['extra']));
102 if (empty($request['params']['id'])) {
103 $request['params']['options']['sort'] = 'start_date DESC, title';
104 $request['params'] +
= [
111 * Get campaign list output.
113 * @see _civicrm_api3_generic_getlist_output
115 * @param array $result
116 * @param array $request
120 function _civicrm_api3_campaign_getlist_output($result, $request) {
122 if (!empty($result['values'])) {
123 $config = CRM_Core_Config
::singleton();
124 foreach ($result['values'] as $row) {
126 'id' => $row[$request['id_field']],
127 'label' => $row[$request['label_field']],
129 CRM_Core_Pseudoconstant
::getLabel('CRM_Campaign_BAO_Campaign', 'campaign_type_id', $row['campaign_type_id']),
132 if (!empty($row['status_id'])) {
133 $data['description'][0] .= ': ' . CRM_Core_Pseudoconstant
::getLabel('CRM_Campaign_BAO_Campaign', 'status_id', $row['status_id']);
135 $dateString = CRM_Utils_Date
::customFormat($row['start_date'], $config->dateformatFull
) . ' -';
136 if (!empty($row['end_date'])) {
137 // Remove redundant years
138 if (substr($row['start_date'], 0, 4) == substr($row['end_date'], 0, 4)) {
139 $dateString = preg_replace('/[, ]*' . substr($row['start_date'], 0, 4) . '/', '', $dateString);
141 $dateString .= ' ' . CRM_Utils_Date
::customFormat($row['end_date'], $config->dateformatFull
);
143 $data['description'][] = $dateString;