Merge pull request #13491 from colemanw/campaign
[civicrm-core.git] / api / v3 / Campaign.php
CommitLineData
6a488035 1<?php
6a488035
TO
2/*
3 +--------------------------------------------------------------------+
fee14197 4 | CiviCRM version 5 |
6a488035 5 +--------------------------------------------------------------------+
6b83d5bd 6 | Copyright CiviCRM LLC (c) 2004-2019 |
6a488035
TO
7 +--------------------------------------------------------------------+
8 | This file is a part of CiviCRM. |
9 | |
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. |
13 | |
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. |
18 | |
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 +--------------------------------------------------------------------+
26 */
27
28/**
244bbdd8 29 * This api exposes CiviCRM Campaign records.
b081365f
CW
30 *
31 * @note Campaign component must be enabled.
6a488035
TO
32 *
33 * @package CiviCRM_APIv3
6a488035
TO
34 */
35
6a488035 36/**
244bbdd8 37 * Create/update Campaign.
6a488035
TO
38 *
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.
42 *
cf470720 43 * @param array $params
6a488035 44 *
a6c01b45 45 * @return array
6a488035
TO
46 */
47function civicrm_api3_campaign_create($params) {
bf38705f 48 return _civicrm_api3_basic_create(_civicrm_api3_get_BAO(__FUNCTION__), $params, 'Campaign');
6a488035 49}
11e09c59
TO
50
51/**
0aa0303c
EM
52 * Adjust Metadata for Create action.
53 *
54 * The metadata is used for setting defaults, documentation & validation.
1c88e578 55 *
cf470720 56 * @param array $params
b081365f 57 * Array of parameters determined by getfields.
6a488035
TO
58 */
59function _civicrm_api3_campaign_create_spec(&$params) {
60 $params['title']['api.required'] = 1;
bab4f15e 61 $params['is_active']['api.default'] = 1;
6a488035
TO
62}
63
64/**
244bbdd8 65 * Returns array of campaigns matching a set of one or more properties.
6a488035 66 *
cf470720 67 * @param array $params
c23f45d3 68 * Array per getfields
6a488035 69 *
a6c01b45 70 * @return array
72b3a70c 71 * Array of matching campaigns
6a488035
TO
72 */
73function civicrm_api3_campaign_get($params) {
bf38705f 74 return _civicrm_api3_basic_get(_civicrm_api3_get_BAO(__FUNCTION__), $params, TRUE, 'Campaign');
6a488035
TO
75}
76
77/**
35823763 78 * Delete an existing campaign.
6a488035 79 *
244bbdd8
CW
80 * This method is used to delete any existing campaign.
81 * Id of the campaign to be deleted is required field in $params array
6a488035 82 *
cf470720 83 * @param array $params
c23f45d3 84 * array containing id of the group to be deleted
6a488035 85 *
a6c01b45 86 * @return array
6a488035
TO
87 */
88function civicrm_api3_campaign_delete($params) {
89 return _civicrm_api3_basic_delete(_civicrm_api3_get_BAO(__FUNCTION__), $params);
90}
8dbd6052
CW
91
92/**
93 * Get campaign list parameters.
94 *
95 * @see _civicrm_api3_generic_getlist_params
96 *
97 * @param array $request
98 */
99function _civicrm_api3_campaign_getlist_params(&$request) {
b7b528bc 100 $fieldsToReturn = ['title', 'campaign_type_id', 'status_id', 'start_date', 'end_date'];
8dbd6052
CW
101 $request['params']['return'] = array_unique(array_merge($fieldsToReturn, $request['extra']));
102 if (empty($request['params']['id'])) {
103 $request['params'] += [
104 'is_active' => 1,
105 ];
106 }
107}
108
109/**
110 * Get campaign list output.
111 *
112 * @see _civicrm_api3_generic_getlist_output
113 *
114 * @param array $result
115 * @param array $request
116 *
117 * @return array
118 */
119function _civicrm_api3_campaign_getlist_output($result, $request) {
120 $output = [];
121 if (!empty($result['values'])) {
b7b528bc 122 $config = CRM_Core_Config::singleton();
8dbd6052
CW
123 foreach ($result['values'] as $row) {
124 $data = [
125 'id' => $row[$request['id_field']],
126 'label' => $row[$request['label_field']],
127 'description' => [
b7b528bc 128 CRM_Core_Pseudoconstant::getLabel('CRM_Campaign_BAO_Campaign', 'campaign_type_id', $row['campaign_type_id']),
8dbd6052
CW
129 ],
130 ];
b7b528bc
CW
131 if (!empty($row['status_id'])) {
132 $data['description'][0] .= ': ' . CRM_Core_Pseudoconstant::getLabel('CRM_Campaign_BAO_Campaign', 'status_id', $row['status_id']);
133 }
134 $dateString = CRM_Utils_Date::customFormat($row['start_date'], $config->dateformatFull) . ' -';
8dbd6052 135 if (!empty($row['end_date'])) {
b7b528bc
CW
136 // Remove redundant years
137 if (substr($row['start_date'], 0, 4) == substr($row['end_date'], 0, 4)) {
138 $dateString = preg_replace('/[, ]*' . substr($row['start_date'], 0, 4) . '/', '', $dateString);
139 }
140 $dateString .= ' ' . CRM_Utils_Date::customFormat($row['end_date'], $config->dateformatFull);
8dbd6052 141 }
b7b528bc 142 $data['description'][] = $dateString;
8dbd6052
CW
143 $output[] = $data;
144 }
145 }
146 return $output;
b7b528bc 147}