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 )