Merge remote-tracking branch 'upstream/4.4' into 4.4-4.5-2014-09-29-13-10-47
authorkurund <kurund@civicrm.org>
Mon, 29 Sep 2014 12:17:27 +0000 (13:17 +0100)
committerkurund <kurund@civicrm.org>
Mon, 29 Sep 2014 12:17:27 +0000 (13:17 +0100)
Conflicts:
CRM/Core/Payment.php

1  2 
CRM/Core/Payment.php

index 7993fd4ecb185cf47cd21fc2ce02717084393fc1,a7f21fde65ced9332a25850779b9afd1318d88e2..9d143ea7ba3b64de517973b6f87c232825fbb896
@@@ -342,54 -310,44 +342,52 @@@ abstract class CRM_Core_Payment 
      return method_exists(CRM_Utils_System::getClassName($this), $method);
    }
  
 +  /**
 +   * @param null $entityID
 +   * @param null $entity
 +   * @param string $action
 +   *
 +   * @return string
 +   */
    function subscriptionURL($entityID = NULL, $entity = NULL, $action = 'cancel') {
 -    if ($action == 'cancel') {
 -      $url = 'civicrm/contribute/unsubscribe';
 -    }
 -    elseif ($action == 'billing') {
 -      if (!$this->isSupported('updateSubscriptionBillingInfo')) {
 -        return NULL;
 -      }
 -      $url = 'civicrm/contribute/updatebilling';
 -    }
 -    elseif ($action == 'update') {
 -      $url = 'civicrm/contribute/updaterecur';
 +    // Set URL
 +    switch ($action) {
 +      case 'cancel' :
 +        $url = 'civicrm/contribute/unsubscribe';
 +        break;
 +      case 'billing' :
 +        //in notify mode don't return the update billing url
-         if ($this->_paymentProcessor['billing_mode'] == self::BILLING_MODE_NOTIFY) {
++        if (!$this->isSupported('updateSubscriptionBillingInfo')) {
 +          return NULL;
 +        }
-               $url = 'civicrm/contribute/updatebilling';
++        $url = 'civicrm/contribute/updatebilling';
 +        break;
 +      case 'update' :
 +        $url = 'civicrm/contribute/updaterecur';
 +        break;
      }
 +
      $session       = CRM_Core_Session::singleton();
      $userId        = $session->get('userID');
 -    $checksumValue = "";
 -
 -    if ($entityID && $entity == 'membership') {
 -      if (!$userId) {
 -        $contactID     = CRM_Core_DAO::getFieldValue("CRM_Member_DAO_Membership", $entityID, "contact_id");
 -        $checksumValue = CRM_Contact_BAO_Contact_Utils::generateChecksum($contactID, NULL, 'inf');
 -        $checksumValue = "&cs={$checksumValue}";
 -      }
 -      return CRM_Utils_System::url($url, "reset=1&mid={$entityID}{$checksumValue}", TRUE, NULL, FALSE, TRUE);
 -    }
 -
 -    if ($entityID && $entity == 'contribution') {
 -      if (!$userId) {
 -        $contactID     = CRM_Core_DAO::getFieldValue("CRM_Contribute_DAO_Contribution", $entityID, "contact_id");
 -        $checksumValue = CRM_Contact_BAO_Contact_Utils::generateChecksum($contactID, NULL, 'inf');
 -        $checksumValue = "&cs={$checksumValue}";
 -      }
 -      return CRM_Utils_System::url($url, "reset=1&coid={$entityID}{$checksumValue}", TRUE, NULL, FALSE, TRUE);
 -    }
 -
 -    if ($entityID && $entity == 'recur') {
 -      if (!$userId) {
 -        $sql = "
 +    $contactID     = 0;
 +    $checksumValue = '';
 +    $entityArg     = '';
 +
 +    // Find related Contact
 +    if ($entityID) {
 +      switch ($entity) {
 +        case 'membership' :
 +          $contactID = CRM_Core_DAO::getFieldValue("CRM_Member_DAO_Membership", $entityID, "contact_id");
 +          $entityArg = 'mid';
 +          break;
 +
 +        case 'contribution' :
 +          $contactID = CRM_Core_DAO::getFieldValue("CRM_Contribute_DAO_Contribution", $entityID, "contact_id");
 +          $entityArg = 'coid';
 +          break;
 +
 +        case 'recur' :
 +          $sql = "
      SELECT con.contact_id
        FROM civicrm_contribution_recur rec
  INNER JOIN civicrm_contribution con ON ( con.contribution_recur_id = rec.id )