Merge pull request #22986 from colemanw/afformFixBlocksAgain
[civicrm-core.git] / api / v3 / ContributionPage.php
... / ...
CommitLineData
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 */
28function 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 */
43function _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 */
58function 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 */
73function 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 */
86function 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 */
100function 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 = $_REQUEST['qfKey'] ?? NULL;
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 */
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
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) {
144 return [
145 'description_field' => [
146 'intro_text',
147 ],
148 'params' => [
149 'is_active' => 1,
150 ],
151 ];
152}