Merge pull request #14981 from eileenmcnaughton/load_extract
[civicrm-core.git] / api / v3 / ContributionPage.php
index 461116c4972b24613a5c01670431259bda040a98..42385d050660d5dec75b9a0e1822b95ca2280093 100644 (file)
@@ -3,7 +3,7 @@
  +--------------------------------------------------------------------+
  | CiviCRM version 5                                                  |
  +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC (c) 2004-2017                                |
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
  +--------------------------------------------------------------------+
  | This file is a part of CiviCRM.                                    |
  |                                                                    |
@@ -58,7 +58,7 @@ function civicrm_api3_contribution_page_create($params) {
  */
 function _civicrm_api3_contribution_page_create_spec(&$params) {
   $params['financial_type_id']['api.required'] = 1;
-  $params['payment_processor']['api.aliases'] = array('payment_processor_id');
+  $params['payment_processor']['api.aliases'] = ['payment_processor_id'];
   $params['is_active']['api.default'] = 1;
 }
 
@@ -114,6 +114,14 @@ function civicrm_api3_contribution_page_submit($params) {
  *   API result array
  */
 function civicrm_api3_contribution_page_validate($params) {
+  // If we are calling this as a result of a POST action (e.g validating a form submission before first getting payment
+  // authorization from a payment processor like Paypal checkout) the lack of a qfKey will not result in a valid
+  // one being generated so we generate one first.
+  $originalRequest = $_REQUEST;
+  $qfKey = CRM_Utils_Array::value('qfKey', $_REQUEST);
+  if (!$qfKey) {
+    $_REQUEST['qfKey'] = CRM_Core_Key::get('CRM_Core_Controller', TRUE);
+  }
   $form = new CRM_Contribute_Form_Contribution_Main();
   $form->controller = new CRM_Core_Controller();
   $form->set('id', $params['id']);
@@ -122,9 +130,23 @@ function civicrm_api3_contribution_page_validate($params) {
   if ($errors === TRUE) {
     $errors = [];
   }
+  $_REQUEST = $originalRequest;
   return civicrm_api3_create_success($errors, $params, 'ContributionPage', 'validate');
 }
 
+/**
+ * Metadata for validate action.
+ *
+ * @param array $params
+ */
+function _civicrm_api3_contribution_page_validate_spec(&$params) {
+  $params['id'] = [
+    'title' => ts('Contribution Page ID'),
+    'api.required' => TRUE,
+    'type' => CRM_Utils_Type::T_INT,
+  ];
+}
+
 /**
  * Set default getlist parameters.
  *
@@ -135,12 +157,12 @@ function civicrm_api3_contribution_page_validate($params) {
  * @return array
  */
 function _civicrm_api3_contribution_page_getlist_defaults(&$request) {
-  return array(
-    'description_field' => array(
+  return [
+    'description_field' => [
       'intro_text',
-    ),
-    'params' => array(
+    ],
+    'params' => [
       'is_active' => 1,
-    ),
-  );
+    ],
+  ];
 }