INFRA-132 - Trailing commas for multiline arrays
[civicrm-core.git] / CRM / Core / Payment.php
index 769b863d5f6c817e440933165cddd0a179d09449..c52693c8e8539a996224609d09aaaeba096ba1b3 100644 (file)
@@ -41,7 +41,7 @@ abstract class CRM_Core_Payment {
    * FORM   - we collect it on the same page
    * BUTTON - the processor collects it and sends it back to us via some protocol
    */
-  CONST
+  const
     BILLING_MODE_FORM = 1,
     BILLING_MODE_BUTTON = 2,
     BILLING_MODE_NOTIFY = 4;
@@ -54,7 +54,7 @@ abstract class CRM_Core_Payment {
    * or both
    *
    */
-  CONST
+  const
     PAYMENT_TYPE_CREDIT_CARD = 1,
     PAYMENT_TYPE_DIRECT_DEBIT = 2;
 
@@ -63,7 +63,7 @@ abstract class CRM_Core_Payment {
    * START, END
    *
    */
-  CONST
+  const
     RECURRING_PAYMENT_START = 'START',
     RECURRING_PAYMENT_END = 'END';
 
@@ -86,37 +86,42 @@ abstract class CRM_Core_Payment {
   /**
    * Singleton function used to manage this object
    *
-   * @param string  $mode the mode of operation: live or test
-   * @param array  $paymentProcessor the details of the payment processor being invoked
-   * @param object $paymentForm deprecated - avoid referring to this if possible. If you have to use it document why as this is scary interaction
-   * @param boolean $force            should we force a reload of this payment object
+   * @param string $mode
+   *   The mode of operation: live or test.
+   * @param array $paymentProcessor
+   *   The details of the payment processor being invoked.
+   * @param object $paymentForm
+   *   Deprecated - avoid referring to this if possible. If you have to use it document why as this is scary interaction.
+   * @param bool $force
+   *   Should we force a reload of this payment object.
    *
    * @return CRM_Core_Payment
+   * @return \CRM_Core_Payment
+   * @throws \CRM_Core_Exception
    * @static
-   *
    */
-  static function &singleton($mode = 'test', &$paymentProcessor, &$paymentForm = NULL, $force = FALSE) {
+  public static function &singleton($mode = 'test', &$paymentProcessor, &$paymentForm = NULL, $force = FALSE) {
     // make sure paymentProcessor is not empty
     // CRM-7424
     if (empty($paymentProcessor)) {
       return CRM_Core_DAO::$_nullObject;
     }
 
-    $cacheKey = "{$mode}_{$paymentProcessor['id']}_" . (int)isset($paymentForm);
+    $cacheKey = "{$mode}_{$paymentProcessor['id']}_" . (int) isset($paymentForm);
 
     if (!isset(self::$_singleton[$cacheKey]) || $force) {
       $config = CRM_Core_Config::singleton();
       $ext = CRM_Extension_System::singleton()->getMapper();
       if ($ext->isExtensionKey($paymentProcessor['class_name'])) {
         $paymentClass = $ext->keyToClass($paymentProcessor['class_name'], 'payment');
-        require_once ($ext->classToPath($paymentClass));
+        require_once $ext->classToPath($paymentClass);
       }
       else {
         $paymentClass = 'CRM_Core_' . $paymentProcessor['class_name'];
         if (empty($paymentClass)) {
           throw new CRM_Core_Exception('no class provided');
         }
-        require_once (str_replace('_', DIRECTORY_SEPARATOR, $paymentClass) . '.php');
+        require_once str_replace('_', DIRECTORY_SEPARATOR, $paymentClass) . '.php';
       }
 
       //load the object.
@@ -125,7 +130,7 @@ abstract class CRM_Core_Payment {
 
     //load the payment form for required processor.
     //if ($paymentForm !== NULL) {
-      //self::$_singleton[$cacheKey]->setForm($paymentForm);
+    //self::$_singleton[$cacheKey]->setForm($paymentForm);
     //}
 
     return self::$_singleton[$cacheKey];
@@ -151,7 +156,8 @@ abstract class CRM_Core_Payment {
 
   /**
    * Check if capability is supported
-   * @param string $capability e.g BackOffice, LiveMode, FutureRecurStartDate
+   * @param string $capability
+   *   E.g BackOffice, LiveMode, FutureRecurStartDate.
    *
    * @return bool
    */
@@ -178,13 +184,21 @@ abstract class CRM_Core_Payment {
   }
 
   /**
-   * Are back office payments supported - e.g paypal standard won't permit you to enter a credit card associated with someone else's login
+   * Are live payments supported - e.g dummy doesn't support this
    * @return bool
    */
   protected function supportsLiveMode() {
     return TRUE;
   }
 
+  /**
+   * Are test payments supported
+   * @return bool
+   */
+  protected function supportsTestMode() {
+    return TRUE;
+  }
+
   /**
    * Should the first payment date be configurable when setting up back office recurring payments
    * We set this to false for historical consistency but in fact most new processors use tokens for recurring and can support this
@@ -200,7 +214,7 @@ abstract class CRM_Core_Payment {
    * @param CRM_Core_Form $paymentForm
    *
    */
-  function setForm(&$paymentForm) {
+  public function setForm(&$paymentForm) {
     $this->_paymentForm = $paymentForm;
   }
 
@@ -209,7 +223,7 @@ abstract class CRM_Core_Payment {
    *
    * @return CRM_Core_Form  A form object
    */
-  function getForm() {
+  public function getForm() {
     return $this->_paymentForm;
   }
 
@@ -220,7 +234,7 @@ abstract class CRM_Core_Payment {
    *
    * @return null
    */
-  function getVar($name) {
+  public function getVar($name) {
     return isset($this->$name) ? $this->$name : NULL;
   }
 
@@ -301,7 +315,7 @@ abstract class CRM_Core_Payment {
         'attributes' => array(
           'size' => 20,
           'maxlength' => 20,
-          'autocomplete' => 'off'
+          'autocomplete' => 'off',
         ),
         'is_required' => TRUE,
       ),
@@ -313,7 +327,7 @@ abstract class CRM_Core_Payment {
         'attributes' => array(
           'size' => 5,
           'maxlength' => 10,
-          'autocomplete' => 'off'
+          'autocomplete' => 'off',
         ),
         'is_required' => CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::CONTRIBUTE_PREFERENCES_NAME,
           'cvv_backoffice_required',
@@ -357,7 +371,7 @@ abstract class CRM_Core_Payment {
         'attributes' => array(
           'size' => 20,
           'maxlength' => 34,
-          'autocomplete' => 'on'
+          'autocomplete' => 'on',
         ),
         'is_required' => TRUE,
       ),
@@ -370,7 +384,7 @@ abstract class CRM_Core_Payment {
         'attributes' => array(
           'size' => 20,
           'maxlength' => 34,
-          'autocomplete' => 'off'
+          'autocomplete' => 'off',
         ),
         'rules' => array(
           array(
@@ -389,7 +403,7 @@ abstract class CRM_Core_Payment {
         'attributes' => array(
           'size' => 20,
           'maxlength' => 11,
-          'autocomplete' => 'off'
+          'autocomplete' => 'off',
         ),
         'is_required' => TRUE,
         'rules' => array(
@@ -407,11 +421,11 @@ abstract class CRM_Core_Payment {
         'attributes' => array(
           'size' => 20,
           'maxlength' => 64,
-          'autocomplete' => 'off'
+          'autocomplete' => 'off',
         ),
         'is_required' => TRUE,
 
-      )
+      ),
     );
   }
 
@@ -419,7 +433,8 @@ abstract class CRM_Core_Payment {
    * This function collects all the information from a web/api form and invokes
    * the relevant payment processor specific functions to perform the transaction
    *
-   * @param  array $params assoc array of input parameters for this transaction
+   * @param array $params
+   *   Assoc array of input parameters for this transaction.
    *
    * @return array the result in an nice formatted array (or an error object)
    * @abstract
@@ -454,7 +469,6 @@ abstract class CRM_Core_Payment {
    * This function checks to see if we have the right config values
    *
    * @return string the error message if any
-   * @public
    */
   abstract function checkConfig();
 
@@ -463,7 +477,7 @@ abstract class CRM_Core_Payment {
    *
    * @return bool
    */
-  static function paypalRedirect(&$paymentProcessor) {
+  public static function paypalRedirect(&$paymentProcessor) {
     if (!$paymentProcessor) {
       return FALSE;
     }
@@ -481,9 +495,8 @@ abstract class CRM_Core_Payment {
 
   /**
    * Page callback for civicrm/payment/ipn
-   * @public
    */
-  static function handleIPN() {
+  public static function handleIPN() {
     self::handlePaymentMethod(
       'PaymentNotification',
       array(
@@ -500,11 +513,10 @@ abstract class CRM_Core_Payment {
    * processor & ideally the processor will be validating the results
    * Load requested payment processor and call that processor's handle<$method> method
    *
-   * @public
    * @param $method
    * @param array $params
    */
-  static function handlePaymentMethod($method, $params = array()) {
+  public static function handlePaymentMethod($method, $params = array()) {
     if (!isset($params['processor_id']) && !isset($params['processor_name'])) {
       CRM_Core_Error::fatal("Either 'processor_id' or 'processor_name' param is required for payment callback");
     }
@@ -584,10 +596,12 @@ abstract class CRM_Core_Payment {
       $extension_instance_found = TRUE;
     }
 
-    if (!$extension_instance_found) CRM_Core_Error::fatal(
-      "No extension instances of the '{$params['processor_name']}' payment processor were found.<br />" .
-      "$method method is unsupported in legacy payment processors."
-    );
+    if (!$extension_instance_found) {
+      CRM_Core_Error::fatal(
+        "No extension instances of the '{$params['processor_name']}' payment processor were found.<br />" .
+        "$method method is unsupported in legacy payment processors."
+      );
+    }
 
     // Exit here on web requests, allowing just the plain text response to be echoed
     if ($method == 'handlePaymentNotification') {
@@ -598,12 +612,12 @@ abstract class CRM_Core_Payment {
   /**
    * Check whether a method is present ( & supported ) by the payment processor object.
    *
-   * @param  string $method method to check for.
+   * @param string $method
+   *   Method to check for.
    *
    * @return boolean
-   * @public
    */
-  function isSupported($method = 'cancelSubscription') {
+  public function isSupported($method = 'cancelSubscription') {
     return method_exists(CRM_Utils_System::getClassName($this), $method);
   }
 
@@ -614,20 +628,22 @@ abstract class CRM_Core_Payment {
    *
    * @return string
    */
-  function subscriptionURL($entityID = NULL, $entity = NULL, $action = 'cancel') {
+  public function subscriptionURL($entityID = NULL, $entity = NULL, $action = 'cancel') {
     // Set URL
     switch ($action) {
-      case 'cancel' :
+      case 'cancel':
         $url = 'civicrm/contribute/unsubscribe';
         break;
-      case 'billing' :
+
+      case 'billing':
         //in notify mode don't return the update billing url
         if (!$this->isSupported('updateSubscriptionBillingInfo')) {
           return NULL;
         }
         $url = 'civicrm/contribute/updatebilling';
         break;
-      case 'update' :
+
+      case 'update':
         $url = 'civicrm/contribute/updaterecur';
         break;
     }
@@ -641,17 +657,17 @@ abstract class CRM_Core_Payment {
     // Find related Contact
     if ($entityID) {
       switch ($entity) {
-        case 'membership' :
+        case 'membership':
           $contactID = CRM_Core_DAO::getFieldValue("CRM_Member_DAO_Membership", $entityID, "contact_id");
           $entityArg = 'mid';
           break;
 
-        case 'contribution' :
+        case 'contribution':
           $contactID = CRM_Core_DAO::getFieldValue("CRM_Contribute_DAO_Contribution", $entityID, "contact_id");
           $entityArg = 'coid';
           break;
 
-        case 'recur' :
+        case 'recur':
           $sql = "
     SELECT con.contact_id
       FROM civicrm_contribution_recur rec