Merge pull request #19120 from eileenmcnaughton/fee
[civicrm-core.git] / api / v3 / ContributionPage.php
CommitLineData
6a488035 1<?php
6a488035
TO
2/*
3 +--------------------------------------------------------------------+
a30c801b 4 | Copyright CiviCRM LLC. All rights reserved. |
6a488035 5 | |
a30c801b
TO
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 |
6a488035 9 +--------------------------------------------------------------------+
d25dd0ee 10 */
6a488035
TO
11
12
13/**
c28e1768 14 * This api exposes CiviCRM contribution pages.
6a488035
TO
15 *
16 * @package CiviCRM_APIv3
6a488035
TO
17 */
18
19/**
244bbdd8 20 * Create or update a ContributionPage.
6a488035 21 *
cf470720 22 * @param array $params
2e66abf8 23 * Array per getfields metadata.
6a488035 24 *
a6c01b45 25 * @return array
72b3a70c 26 * api result array
6a488035
TO
27 */
28function civicrm_api3_contribution_page_create($params) {
ddaf2161 29 $result = _civicrm_api3_basic_create(_civicrm_api3_get_BAO(__FUNCTION__), $params, 'ContributionPage');
10a3c9b9
EM
30 CRM_Contribute_PseudoConstant::flush('contributionPageAll');
31 CRM_Contribute_PseudoConstant::flush('contributionPageActive');
32 return $result;
6a488035 33}
11e09c59
TO
34
35/**
0aa0303c
EM
36 * Adjust Metadata for Create action.
37 *
38 * The metadata is used for setting defaults, documentation & validation.
6a488035 39 *
cf470720 40 * @param array $params
2e66abf8 41 * Array per getfields metadata.
6a488035
TO
42 */
43function _civicrm_api3_contribution_page_create_spec(&$params) {
44 $params['financial_type_id']['api.required'] = 1;
cf8f0fff 45 $params['payment_processor']['api.aliases'] = ['payment_processor_id'];
9fed6619 46 $params['is_active']['api.default'] = 1;
6a488035
TO
47}
48
49/**
244bbdd8 50 * Returns array of ContributionPage(s) matching a set of one or more group properties.
6a488035 51 *
cf470720 52 * @param array $params
2e66abf8 53 * Array per getfields metadata.
6a488035 54 *
a6c01b45 55 * @return array
72b3a70c 56 * API Result array Array of matching contribution_pages
6a488035
TO
57 */
58function civicrm_api3_contribution_page_get($params) {
59 return _civicrm_api3_basic_get(_civicrm_api3_get_BAO(__FUNCTION__), $params);
60}
61
62/**
244bbdd8 63 * Delete an existing ContributionPage.
6a488035 64 *
244bbdd8 65 * This method is used to delete any existing ContributionPage given its id.
6a488035 66 *
cf470720 67 * @param array $params
2e66abf8 68 * Array per getfields metadata.
6a488035 69 *
a6c01b45 70 * @return array
72b3a70c 71 * API result Array
6a488035
TO
72 */
73function civicrm_api3_contribution_page_delete($params) {
74 return _civicrm_api3_basic_delete(_civicrm_api3_get_BAO(__FUNCTION__), $params);
75}
be26f3e0
EM
76
77/**
244bbdd8 78 * Submit a ContributionPage.
be26f3e0 79 *
cf470720 80 * @param array $params
2e66abf8 81 * Array per getfields metadata.
be26f3e0 82 *
a6c01b45 83 * @return array
72b3a70c 84 * API result array
be26f3e0
EM
85 */
86function civicrm_api3_contribution_page_submit($params) {
87 $result = CRM_Contribute_Form_Contribution_Confirm::submit($params);
244bbdd8 88 return civicrm_api3_create_success($result, $params, 'ContributionPage', 'submit');
be26f3e0 89}
b233e1b4 90
c59e7960 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 */
100function civicrm_api3_contribution_page_validate($params) {
dbc654ec 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.
a1a01300 104 $originalRequest = $_REQUEST;
f748c073 105 $qfKey = $_REQUEST['qfKey'] ?? NULL;
dbc654ec 106 if (!$qfKey) {
107 $_REQUEST['qfKey'] = CRM_Core_Key::get('CRM_Core_Controller', TRUE);
108 }
c59e7960 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 }
a1a01300 117 $_REQUEST = $originalRequest;
c59e7960 118 return civicrm_api3_create_success($errors, $params, 'ContributionPage', 'validate');
119}
b233e1b4 120
dbc654ec 121/**
122 * Metadata for validate action.
123 *
124 * @param array $params
125 */
126function _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
b233e1b4
CW
134/**
135 * Set default getlist parameters.
136 *
137 * @see _civicrm_api3_generic_getlist_defaults
138 *
139 * @param array $request
140 *
141 * @return array
142 */
143function _civicrm_api3_contribution_page_getlist_defaults(&$request) {
cf8f0fff
CW
144 return [
145 'description_field' => [
b233e1b4 146 'intro_text',
cf8f0fff
CW
147 ],
148 'params' => [
b233e1b4 149 'is_active' => 1,
cf8f0fff
CW
150 ],
151 ];
b233e1b4 152}