Merge pull request #15948 from eileenmcnaughton/export_test
[civicrm-core.git] / api / v3 / ContributionPage.php
1 <?php
2 /*
3 +--------------------------------------------------------------------+
4 | Copyright CiviCRM LLC. All rights reserved. |
5 | |
6 | This work is published under the GNU AGPLv3 license with some |
7 | permitted exceptions and without any warranty. For full license |
8 | and copyright information, see https://civicrm.org/licensing |
9 +--------------------------------------------------------------------+
10 */
11
12
13 /**
14 * This api exposes CiviCRM contribution pages.
15 *
16 * @package CiviCRM_APIv3
17 */
18
19 /**
20 * Create or update a ContributionPage.
21 *
22 * @param array $params
23 * Array per getfields metadata.
24 *
25 * @return array
26 * api result array
27 */
28 function civicrm_api3_contribution_page_create($params) {
29 $result = _civicrm_api3_basic_create(_civicrm_api3_get_BAO(__FUNCTION__), $params, 'ContributionPage');
30 CRM_Contribute_PseudoConstant::flush('contributionPageAll');
31 CRM_Contribute_PseudoConstant::flush('contributionPageActive');
32 return $result;
33 }
34
35 /**
36 * Adjust Metadata for Create action.
37 *
38 * The metadata is used for setting defaults, documentation & validation.
39 *
40 * @param array $params
41 * Array per getfields metadata.
42 */
43 function _civicrm_api3_contribution_page_create_spec(&$params) {
44 $params['financial_type_id']['api.required'] = 1;
45 $params['payment_processor']['api.aliases'] = ['payment_processor_id'];
46 $params['is_active']['api.default'] = 1;
47 }
48
49 /**
50 * Returns array of ContributionPage(s) matching a set of one or more group properties.
51 *
52 * @param array $params
53 * Array per getfields metadata.
54 *
55 * @return array
56 * API Result array Array of matching contribution_pages
57 */
58 function civicrm_api3_contribution_page_get($params) {
59 return _civicrm_api3_basic_get(_civicrm_api3_get_BAO(__FUNCTION__), $params);
60 }
61
62 /**
63 * Delete an existing ContributionPage.
64 *
65 * This method is used to delete any existing ContributionPage given its id.
66 *
67 * @param array $params
68 * Array per getfields metadata.
69 *
70 * @return array
71 * API result Array
72 */
73 function civicrm_api3_contribution_page_delete($params) {
74 return _civicrm_api3_basic_delete(_civicrm_api3_get_BAO(__FUNCTION__), $params);
75 }
76
77 /**
78 * Submit a ContributionPage.
79 *
80 * @param array $params
81 * Array per getfields metadata.
82 *
83 * @return array
84 * API result array
85 */
86 function civicrm_api3_contribution_page_submit($params) {
87 $result = CRM_Contribute_Form_Contribution_Confirm::submit($params);
88 return civicrm_api3_create_success($result, $params, 'ContributionPage', 'submit');
89 }
90
91 /**
92 * Validate ContributionPage submission parameters.
93 *
94 * @param array $params
95 * Array per getfields metadata.
96 *
97 * @return array
98 * API result array
99 */
100 function civicrm_api3_contribution_page_validate($params) {
101 // If we are calling this as a result of a POST action (e.g validating a form submission before first getting payment
102 // authorization from a payment processor like Paypal checkout) the lack of a qfKey will not result in a valid
103 // one being generated so we generate one first.
104 $originalRequest = $_REQUEST;
105 $qfKey = CRM_Utils_Array::value('qfKey', $_REQUEST);
106 if (!$qfKey) {
107 $_REQUEST['qfKey'] = CRM_Core_Key::get('CRM_Core_Controller', TRUE);
108 }
109 $form = new CRM_Contribute_Form_Contribution_Main();
110 $form->controller = new CRM_Core_Controller();
111 $form->set('id', $params['id']);
112 $form->preProcess();
113 $errors = CRM_Contribute_Form_Contribution_Main::formRule($params, [], $form);
114 if ($errors === TRUE) {
115 $errors = [];
116 }
117 $_REQUEST = $originalRequest;
118 return civicrm_api3_create_success($errors, $params, 'ContributionPage', 'validate');
119 }
120
121 /**
122 * Metadata for validate action.
123 *
124 * @param array $params
125 */
126 function _civicrm_api3_contribution_page_validate_spec(&$params) {
127 $params['id'] = [
128 'title' => ts('Contribution Page ID'),
129 'api.required' => TRUE,
130 'type' => CRM_Utils_Type::T_INT,
131 ];
132 }
133
134 /**
135 * Set default getlist parameters.
136 *
137 * @see _civicrm_api3_generic_getlist_defaults
138 *
139 * @param array $request
140 *
141 * @return array
142 */
143 function _civicrm_api3_contribution_page_getlist_defaults(&$request) {
144 return [
145 'description_field' => [
146 'intro_text',
147 ],
148 'params' => [
149 'is_active' => 1,
150 ],
151 ];
152 }