function _cancel_membership($user_id, $redirect = false) { // system $system_obj = mgm_get_class('system'); $s_packs = mgm_get_class('subscription_packs'); $dge = bool_from_yn($system_obj->get_setting('disable_gateway_emails')); $dpne = bool_from_yn($system_obj->get_setting('disable_payment_notify_emails')); //issue #1521 $is_admin = is_super_admin() ? true : false; // find user $user = get_userdata($user_id); $member = mgm_get_member($user_id); // multiple membesrhip level update: $multiple_update = false; // check if (isset($_POST['membership_type']) && $member->membership_type != $_POST['membership_type']) { $multiple_update = true; $member = mgm_get_member_another_purchase($user_id, $_POST['membership_type']); } // get pack if ($member->pack_id) { $subs_pack = $s_packs->get_pack($member->pack_id); } else { $subs_pack = $s_packs->validate_pack($member->amount, $member->duration, $member->duration_type, $member->membership_type); } // reset payment info $member->payment_info->txn_type = 'subscription_cancel'; // types $duration_exprs = $s_packs->get_duration_exprs(); // default expire date $expire_date = $member->expire_date; // if lifetime: if ($member->duration_type == 'l') { $expire_date = date('Y-m-d'); } // if trial on if (isset($subs_pack['trial_on']) && (bool) $subs_pack['trial_on'] == true && isset($duration_exprs[$subs_pack['trial_duration_type']])) { // if cancel data is before trial end, set cancel on trial expire_date $trial_expire_date = strtotime('+' . $subs_pack['trial_duration'] . ' ' . $duration_exprs[$subs_pack['trial_duration_type']], $member->join_date); // if lower if (time() < $trial_expire_date) { $expire_date = date('Y-m-d', $trial_expire_date); } } // transaction_id $trans_id = $member->transaction_id; // if today if ($expire_date == date('Y-m-d')) { // status $new_status = MGM_STATUS_CANCELLED; $new_status_str = __('Subscription cancelled', 'mgm'); // set $member->status = $new_status; $member->status_str = $new_status_str; $member->expire_date = date('Y-m-d'); // reassign expiry membership pack if exists: issue#: 535 $member = apply_filters('mgm_reassign_member_subscription', $user_id, $member, 'CANCEL', true); } else { // date $date_format = mgm_get_date_format('date_format'); // status $new_status = MGM_STATUS_AWAITING_CANCEL; $new_status_str = sprintf(__('Subscription awaiting cancellation on %s', 'mgm'), date($date_format, strtotime($expire_date))); // set $member->status = $new_status; $member->status_str = $new_status_str; // set reset date $member->status_reset_on = $expire_date; $member->status_reset_as = MGM_STATUS_CANCELLED; } // multiple memberhip level update: if ($multiple_update) { mgm_save_another_membership_fields($member, $user_id); } else { $member->save(); } // transaction status mgm_update_transaction_status($trans_id, $new_status, $new_status_str); // send email notification to client $blogname = get_option('blogname'); // notify user if (!$dpne) { // notify user mgm_notify_user_membership_cancellation($blogname, $user, $member, $system_obj, $new_status, $membership_type); } // notify admin if (!$dge) { // notify admin mgm_notify_admin_membership_cancellation($blogname, $user, $member); } // after cancellation hook do_action('mgm_membership_subscription_cancelled', array('user_id' => $user_id)); // redirect only internal if ($redirect) { // message $lformat = mgm_get_date_format('date_format_long'); $message = sprintf(__("You have successfully unsubscribed. Your account has been marked for cancellation on %s", "mgm"), $expire_date == date('Y-m-d') ? 'Today' : date($lformat, strtotime($expire_date))); //issue #1521 if ($is_admin) { mgm_redirect(add_query_arg(array('user_id' => $user_id, 'unsubscribe_errors' => urlencode($message)), admin_url('user-edit.php'))); } // redirect mgm_redirect(mgm_get_custom_url('membership_details', false, array('unsubscribed' => 'true', 'unsubscribe_errors' => urlencode($message)))); } }
/** * get payment processed page html * * @param void * @return string * @since 1.5 */ function mgm_get_payment_processed_page_html() { // home url $home_url = trailingslashit(get_option('siteurl')); // current module $module = mgm_request_var('module', '', true); // check if (!mgm_is_valid_module($module) || empty($module)) { // redirect mgm_redirect($home_url); } // init $html = ''; // refresh wait time $refresh_wait_time = 5; //in seconds // redirect url $redirect_url = ''; // redirect $do_redirect = true; // refresh header for post redirecr if (isset($_GET['post_redirect'])) { // redirect url $redirect_url = strip_tags($_GET['post_redirect']); } elseif (isset($_GET['register_redirect'])) { // redirect url, if 1/true, redirect to profile, else its register & redirect url if ($_GET['register_redirect'] != 1) { $redirect_url = strip_tags($_GET['register_redirect']); } else { // auto login $system_obj = mgm_get_class('system'); //issue# 1392 $current_user_id = get_current_user_id(); // check if set if ($autologin_redirect_url = $system_obj->get_setting('autologin_redirect_url')) { $page_title = ''; $redirect_url = $autologin_redirect_url; //short code support if (!empty($current_user_id)) { $user = get_userdata($current_user_id); $redirect_url = str_replace('[username]', $user->user_login, $redirect_url); } } elseif (mgm_get_user_package_redirect_url($current_user_id) && $current_user_id) { $page_title = ''; $redirect_url = mgm_get_user_package_redirect_url($current_user_id); } else { $page_title = 'Profile'; $redirect_url = mgm_get_custom_url('profile'); } } // check not logged in, #948 paypal fails to redirect if (!is_user_logged_in()) { // user login if (isset($_GET['trans_ref'])) { // re construct redirect url $redirect_url = mgm_get_custom_url('login', false, array('trans_ref' => strip_tags($_GET['trans_ref']), 'auto_login' => true, 'redirect_to' => $redirect_url)); } } } // check and set if (!empty($redirect_url) && $do_redirect) { // alter $redirect_url = apply_filters('mgm_register_redirect', $redirect_url); // no headers if (!headers_sent()) { @header(sprintf('Refresh: %d;url=%s', $refresh_wait_time, $redirect_url)); } else { $html .= sprintf('<script language="javascript">window.setTimeout(function(){window.location.href="%s";}, %d)</script>', $redirect_url, (int) $refresh_wait_time * 5); } } // module object $module_object = mgm_get_module($module, 'payment'); // [domain]/subscribe/?method=payment_processed&module=mgm_paypal&status=success // [domain]/subscribe/?method=payment_processed&module=mgm_paypal&status=cancel // status and message $arr_shortcodes = array('transaction_amount' => ''); // check if (!isset($_GET['status']) || $_GET['status'] == 'success') { // mgm_replace_oldlinks_with_tag is a patch for replacing the old link $message = $module_object->setting['success_message'] ? mgm_replace_oldlinks_with_tag($module_object->setting['success_message'], 'payment_success_message') : $system_obj->get_template('payment_success_message', array(), true); // get price if (isset($_GET['trans_ref'])) { // tarns $_GET['trans_ref'] = mgm_decode_id(strip_tags($_GET['trans_ref'])); // get transaction data $trans = mgm_get_transaction($_GET['trans_ref']); // set amount if ($trans['module'] == 'manualpay') { $arr_shortcodes['transaction_amount'] = $trans['data']['cost'] . ' ' . $trans['data']['currency']; } // update googe analytics: $html .= apply_filters('mgm_payment_processed_page_analytics', $trans); // @todo, callback in template function // mgm_update_google_analytics($trans); deprecated, use hook } } else { if (!isset($_GET['status']) || $_GET['status'] == 'cancel') { // set message $message = __('You have cancelled the transaction.', 'mgm'); } else { // mgm_replace_oldlinks_with_tag is a patch for replacing the old link $message = $module_object->setting['failed_message'] ? mgm_replace_oldlinks_with_tag($module_object->setting['failed_message'], 'payment_failed_message') : $system_obj->get_template('payment_failed_message', array(), true); } } // parse short codes: // [transaction_amount] = amount paid foreach ($arr_shortcodes as $code => $value) { $message = str_replace('[' . $code . ']', $value, $message); } // html $html .= mgm_stripslashes_deep(mgm_get_message_template($message)); // get error if (isset($_GET['errors'])) { // get errors $errors = explode('|', strip_tags($_GET['errors'])); // html $html .= sprintf('<h3> %s </h3><div><ul>', __('Messages', 'mgm')); // loop foreach ($errors as $error) { $html .= sprintf('<li> %s </li>', $error); } // end $html .= '</ul></div>'; } // auto redirect to post purchased if (isset($_GET['post_redirect'])) { // message $m = sprintf(__('You will be automatically redirected to the post you purchased within %d seconds. Please <a href="%s"> click here </a> to go to the page. ', 'mgm'), $refresh_wait_time, strip_tags($_GET['post_redirect'])); // set $html .= sprintf('<b>%s</b>', $m); } elseif (isset($_GET['register_redirect'])) { // auto login redirect // message $m = sprintf(__('You will be automatically redirected to your %s page within %d seconds. Please <a href="%s"> click here </a> to go to the page. ', 'mgm'), $_GET['register_redirect'] == 1 ? __($page_title, 'mgm') : __('Post', 'mgm'), $refresh_wait_time, $redirect_url); // set $html .= sprintf('<b>%s</b>', $m); } // return return apply_filters('mgm_payment_processed_page_html', $html); }
/** * return process api hook, link back to site after payment is made * Note: as Worldpay Gateway doesn't support custom thankyou url redirection, we make use of resultY.html/resultC.html * template html MC_success/MC_error tags to print thankyou page url. The user will need to click the respective links * to get redirected back to the site. * Check payment form creation for success/error url and parameters details. * */ function process_return() { do_action('mgm_print_module_data', $this->module, __FUNCTION__); // check and show message //if((isset($_POST['rawAuthCode']) && !empty($_POST['rawAuthCode'])) || (isset($_POST['M_custom']) && !empty($_POST['M_custom']))){ if (isset($_POST['rawAuthCode']) && !empty($_POST['rawAuthCode']) || ($_REQUEST['transtatus'] == 'success' && (isset($_REQUEST['M_custom']) && !empty($_REQUEST['M_custom'])) || isset($_REQUEST['transid']) && !empty($_REQUEST['transid']))) { if (isset($_REQUEST['M_custom'])) { //not sure M_custom is available on thank you page $trans_id = $_REQUEST['M_custom']; } elseif (isset($_REQUEST['transid'])) { $trans_id = mgm_decode_id($_REQUEST['transid']); } // process notify, internally called if (isset($this->setting['shopper_response']) && bool_from_yn($this->setting['shopper_response'])) { // track $this->webhook_called_by = 'self'; // process $this->process_notify(); } // redirect as success if not already redirected $query_arg = array('status' => 'success', 'trans_ref' => mgm_encode_id($trans_id)); // is a post redirect? $post_redirect = $this->_get_post_redirect($trans_id); // set post redirect if ($post_redirect !== false) { $query_arg['post_redirect'] = $post_redirect; } // is a register redirect? $register_redirect = $this->_auto_login($trans_id); // set register redirect if ($register_redirect !== false) { $query_arg['register_redirect'] = $register_redirect; } // meta redirect for wp only mgm_redirect(add_query_arg($query_arg, $this->_get_thankyou_url())); } else { // error mgm_redirect(add_query_arg(array('status' => 'error', 'errors' => urlencode('WorldPay data error')), $this->_get_thankyou_url())); } }
function _cancel_membership($user_id = NULL, $redirect = false) { // system $system_obj = mgm_get_class('system'); $s_packs = mgm_get_class('subscription_packs'); $dge = bool_from_yn($system_obj->get_setting('disable_gateway_emails')); $dpne = bool_from_yn($system_obj->get_setting('disable_payment_notify_emails')); //issue #1521 $is_admin = is_super_admin() ? true : false; // passthrough var $alt_tran_id = $this->_get_alternate_transaction_id(); // get custom field values if not called with user id( internal) if (!$user_id) { // get passthrough, stop further process if fails to parse $custom = $this->_get_transaction_passthrough($alt_tran_id); // local var extract($custom); } // user $user = get_userdata($user_id); $member = mgm_get_member($user_id); // multiple membesrhip level update: $multiple_update = false; // check if (isset($_POST['membership_type']) && $member->membership_type != $_POST['membership_type'] || isset($membership_type) && $member->membership_type != $membership_type) { $multiple_update = true; $member = mgm_get_member_another_purchase($user_id, $_POST['membership_type']); } // skip if IPN POST for previous subscription: if (!empty($alt_tran_id) && !empty($member->transaction_id) && $alt_tran_id != $member->transaction_id) { return false; } // get pack if ($member->pack_id) { $subs_pack = $s_packs->get_pack($member->pack_id); } else { $subs_pack = $s_packs->validate_pack($member->amount, $member->duration, $member->duration_type, $member->membership_type); } // tracking fields module_field => post_field $tracking_fields = array('txn_type' => 'message_type', 'subscr_id' => array('order_number', 'sale_id'), 'txn_id' => array('order_number', 'sale_id')); // save tracking fields $this->_save_tracking_fields($tracking_fields, $member); // types $duration_exprs = $s_packs->get_duration_exprs(); // default expire date $expire_date = $member->expire_date; // if lifetime: if ($member->duration_type == 'l') { $expire_date = date('Y-m-d'); } // if trial on if ($subs_pack['trial_on'] && isset($duration_exprs[$subs_pack['trial_duration_type']])) { // if cancel data is before trial end, set cancel on trial expire_date $trial_expire_date = strtotime("+{$subs_pack['trial_duration']} {$duration_exprs[$subs_pack['trial_duration_type']]}", $member->join_date); // if lower if (time() < $trial_expire_date) { $expire_date = date('Y-m-d', $trial_expire_date); } } // transaction_id $trans_id = $member->transaction_id; // if today or set as instant cancel if ($expire_date == date('Y-m-d') || $this->setting['subs_cancel'] == 'instant') { // status $new_status = MGM_STATUS_CANCELLED; $new_status_str = __('Subscription cancelled', 'mgm'); // set $member->status = $new_status; $member->status_str = $new_status_str; $member->expire_date = date('Y-m-d'); // reassign expiry membership pack if exists: issue#: 535 $member = apply_filters('mgm_reassign_member_subscription', $user_id, $member, 'CANCEL', true); } else { // date $date_format = mgm_get_date_format('date_format'); // status $new_status = MGM_STATUS_AWAITING_CANCEL; $new_status_str = sprintf(__('Subscription awaiting cancellation on %s', 'mgm'), date($date_format, strtotime($expire_date))); // set $member->status = $new_status; $member->status_str = $new_status_str; // set reset date $member->status_reset_on = $expire_date; $member->status_reset_as = MGM_STATUS_CANCELLED; } // multiple membesrhip level update: if ($multiple_update) { mgm_save_another_membership_fields($member, $user_id); } else { $member->save(); } // transaction status mgm_update_transaction_status($trans_id, $new_status, $new_status_str); // send email notification to client $blogname = get_option('blogname'); // notify user if (!$dpne) { // notify user mgm_notify_user_membership_cancellation($blogname, $user, $member, $system_obj, $new_status, $membership_type); } // notify admin if (!$dge) { // notify admin mgm_notify_admin_membership_cancellation($blogname, $user, $member); } // after cancellation hook do_action('mgm_membership_subscription_cancelled', array('user_id' => $user_id)); // redirect only internal if ($redirect) { // message $lformat = mgm_get_date_format('date_format_long'); $message = sprintf(__("You have successfully unsubscribed. Your account has been marked for cancellation on %s", "mgm"), $expire_date == date('Y-m-d') ? 'Today' : date($lformat, strtotime($expire_date))); //issue #1521 if ($is_admin) { mgm_redirect(add_query_arg(array('user_id' => $user_id, 'unsubscribe_errors' => urlencode($message)), admin_url('user-edit.php'))); } // redirect mgm_redirect(add_query_arg(array('unsubscribed' => 'true', 'unsubscribe_errors' => urlencode($message)), mgm_get_custom_url('membership_details'))); } }
function _buy_post() { global $wpdb; // system $system_obj = mgm_get_class('system'); $dge = bool_from_yn($system_obj->get_setting('disable_gateway_emails')); $dpne = bool_from_yn($system_obj->get_setting('disable_payment_notify_emails')); // passthrough $alt_tran_id = $this->_get_alternate_transaction_id(); // get passthrough, stop further process if fails to parse $custom = $this->_get_transaction_passthrough($alt_tran_id); // local var extract($custom); //getting purchase post title and & price - issue #981 $post_obj = mgm_get_post($post_id); $purchase_cost = mgm_convert_to_currency($post_obj->purchase_cost); $post = get_post($post_id); $post_title = $post->post_title; // find user //issue #504 if ($user_id) { $user = get_userdata($user_id); } // errors $errors = array(); $blogname = get_option('blogname'); $tran_success = false; $payment_status = $_POST['Status']; switch ($payment_status) { case 'OK': // status success $tran_success = true; // status $status_str = __('Last payment was successful', 'mgm'); // emails not for guest //issue #504 if ($user_id) { // subject $subject = $system_obj->get_template('payment_success_email_template_subject', array('blogname' => $blogname), true); // body $message = $system_obj->get_template('payment_success_email_template_body', array('blogname' => $blogname, 'name' => $user->display_name, 'post_title' => $post_title, 'purchase_cost' => $purchase_cost, 'email' => $user->user_email, 'admin_email' => $system_obj->setting['admin_email']), true); } // transaction id $transaction_id = $this->_get_transaction_id(); // hook args $args = array('post_id' => $post_id, 'transaction_id' => $transaction_id); // user purchase if (isset($user_id) && (int) $user_id > 0) { $args['user_id'] = $user_id; } else { // guest purchase $args['guest_token'] = $guest_token; } // after succesful payment hook do_action('mgm_buy_post_transaction_success', $args); // backward compatibility do_action('mgm_post_purchase_payment_success', $args); // new organized name break; case 'NOTAUTHED': case 'INVALID': case 'REJECTED': // status $status_str = __('Last payment was refunded or denied', 'mgm'); // emails not for guest //issue #504 if ($user_id) { // subject $subject = $system_obj->get_template('payment_failed_email_template_subject', array('blogname' => $blogname), true); // body $message = $system_obj->get_template('payment_failed_email_template_body', array('blogname' => $blogname, 'name' => $user->display_name, 'post_title' => $post_title, 'purchase_cost' => $purchase_cost, 'email' => $user->user_email, 'payment_type' => 'post purchase payment', 'reason' => $status_str, 'admin_email' => $system_obj->setting['admin_email']), true); } // error $errors[] = $status_str; break; case 'ABORT': // status $reason = 'Unknown'; $status_str = sprintf(__('Last payment is pending. Reason: %s', 'mgm'), $reason); // emails not for guest //issue #504 if ($user_id) { // subject $subject = $system_obj->get_template('payment_pending_email_template_subject', array('blogname' => $blogname), true); // body $message = $system_obj->get_template('payment_pending_email_template_body', array('blogname' => $blogname, 'name' => $user->display_name, 'post_title' => $post_title, 'purchase_cost' => $purchase_cost, 'email' => $user->user_email, 'reason' => $status_str, 'admin_email' => $system_obj->setting['admin_email']), true); } // error $errors[] = $status_str; break; default: // status $status_str = sprintf(__('Last payment status: %s', 'mgm'), $payment_status); // emails not for guest //issue #504 if ($user_id) { // subject $subject = $system_obj->get_template('payment_unknown_email_template_subject', array('blogname' => $blogname), true); // body $message = $system_obj->get_template('payment_unknown_email_template_body', array('blogname' => $blogname, 'name' => $user->display_name, 'post_title' => $post_title, 'purchase_cost' => $purchase_cost, 'email' => $user->user_email, 'reason' => $status_str, 'admin_email' => $system_obj->setting['admin_email']), true); } // error $errors[] = $status_str; } // do action do_action('mgm_return_post_purchase_payment_' . $this->module, array('post_id' => $post_id)); // new, individual do_action('mgm_return_post_purchase_payment', array('post_id' => $post_id)); // new, global // notify user if (!$dpne) { if ($user_id && $this->send_payment_email($alt_tran_id)) { //issue #862 $subject = mgm_replace_email_tags($subject, $user_id); $message = mgm_replace_email_tags($message, $user_id); mgm_mail($user->user_email, $subject, $message); //send an email to the buyer //update as email sent $this->update_paymentemail_sent($alt_tran_id); } } $status = __('Failed join', 'mgm'); //overridden on a successful payment if ($tran_success) { //issue #1421 if ($user_id) { do_action('mgm_update_coupon_usage', array('user_id' => $user_id)); } // mark as purchased if (isset($guest_token)) { // issue #1421 if (isset($coupon_id) && isset($coupon_code)) { do_action('mgm_update_coupon_usage', array('guest_token' => $guest_token, 'coupon_id' => $coupon_id)); $this->_set_purchased(NULL, $post_id, $guest_token, $alt_tran_id, $coupon_code); } else { $this->_set_purchased(NULL, $post_id, $guest_token, $alt_tran_id); } } else { $this->_set_purchased($user_id, $post_id, NULL, $alt_tran_id); } // status $status = __('The post was purchased successfully', 'mgm'); } // transaction status mgm_update_transaction_status($alt_tran_id, $status, $status_str); // notify admin, only if gateway emails on if (!$dge) { // not for guest if ($user_id) { $subject = "[" . $blogname . "] Admin Notification: " . $user->user_email . " purchased post " . $post_id; $message = "User display name: {$user->display_name}<br />User email: {$user->user_email}<br />User ID: {$user->ID}<br />Status: " . $status . "<br />Action: Purchase post:" . $subject . "<br /><br />" . $message . "<br /><br /><pre>" . print_r($_POST, true) . '</pre>'; } else { $subject = "[" . $blogname . "] Admin Notification: Guest[IP: " . mgm_get_client_ip_address() . "] purchased post " . $post_id; $message = "Guest Purchase"; } mgm_mail($system_obj->setting['admin_email'], $subject, $message); } // error condition redirect if (count($errors) > 0) { mgm_redirect(add_query_arg(array('status' => 'error', 'errors' => implode('|', $errors)), $this->_get_thankyou_url())); } }
function _cancel_membership($user_id = NULL, $redirect = false) { // system $system_obj = mgm_get_class('system'); $s_packs = mgm_get_class('subscription_packs'); $duration_str = $s_packs->duration_str; $dge = bool_from_yn($system_obj->get_setting('disable_gateway_emails')); $dpne = bool_from_yn($system_obj->get_setting('disable_payment_notify_emails')); //issue #1521 $is_admin = is_super_admin() ? true : false; // if passthrough provided if (isset($_REQUEST['extra'])) { // get passthrough, stop further process if fails to parse $custom = $this->_get_transaction_passthrough($_REQUEST['extra']); // local var extract($custom); } elseif (isset($_REQUEST['SUBSCRIPTION_ID']) || isset($_REQUEST['SubscriptionID'])) { // get tran $tran = mgm_get_transaction_by_option('zombaio_subscription_id', isset($_REQUEST['SUBSCRIPTION_ID']) ? $_REQUEST['SUBSCRIPTION_ID'] : $_REQUEST['SubscriptionID']); // local var extract($tran['data']); } elseif (isset($_REQUEST['TRANSACTION_ID'])) { // get tran $tran = mgm_get_transaction_by_option('zombaio_transaction_id', $_REQUEST['TRANSACTION_ID']); // local var extract($tran['data']); } elseif (isset($_REQUEST['username'])) { // get user if ($user = get_user_by('login', $_REQUEST['username'])) { $user_id = $user->ID; } } // log // mgm_log($user_id, ($this->module . '_' . __FUNCTION__)); // no user id if (!$user_id) { // message $message = 'Could not read member in the following REQUEST data. Please debug or contact magic members to fix the problem making sure to pass on the following data. <br /><br /><pre>' . "\n\n" . print_r($_REQUEST, true) . '</pre>'; // notify admin, only if gateway emails on if (!$dge) { // mail mgm_mail($system_obj->get_setting('admin_email'), 'Error in Zombaio membership cancellation', $message); } else { // log mgm_log($message, $this->module . '_' . __FUNCTION__); } // exit exit; } // find user $user = get_userdata($user_id); $member = mgm_get_member($user_id); // multiple membesrhip level update: $multiple_update = false; // check if (isset($_POST['membership_type']) && $member->membership_type != $_POST['membership_type'] || isset($membership_type) && $member->membership_type != $membership_type) { $multiple_update = true; $member = mgm_get_member_another_purchase($user_id, $_POST['membership_type']); } // get pack if ($member->pack_id) { $subs_pack = $s_packs->get_pack($member->pack_id); } else { $subs_pack = $s_packs->validate_pack($member->amount, $member->duration, $member->duration_type, $member->membership_type); } // tracking fields module_field => post_field $tracking_fields = array('txn_type' => 'Action', 'subscr_id' => array('SUBSCRIPTION_ID', 'SubscriptionID'), 'txn_id' => 'TRANSACTION_ID'); // save tracking fields $this->_save_tracking_fields($tracking_fields, $member, $_REQUEST); // types $duration_exprs = $s_packs->get_duration_exprs(); // default expire date $expire_date = $member->expire_date; // if lifetime: if ($member->duration_type == 'l') { $expire_date = date('Y-m-d'); } // if trial on if ($subs_pack['trial_on'] && isset($duration_exprs[$subs_pack['trial_duration_type']])) { // if cancel data is before trial end, set cancel on trial expire_date $trial_expire_date = strtotime("+{$subs_pack['trial_duration']} {$duration_exprs[$subs_pack['trial_duration_type']]}", $member->join_date); // if lower if (time() < $trial_expire_date) { $expire_date = date('Y-m-d', $trial_expire_date); } } // transaction_id $trans_id = $member->transaction_id; // log // mgm_log($member, ($this->module . '_' . __FUNCTION__)); // mgm_log($expire_date . ' ' . date('Y-m-d H:i:s'), ($this->module . '_' . __FUNCTION__)); // if today if (time() >= strtotime($expire_date)) { // status $new_status = MGM_STATUS_CANCELLED; $new_status_str = __('Subscription cancelled', 'mgm'); // set $member->status = $new_status; $member->status_str = $new_status_str; $member->expire_date = date('Y-m-d H:i:s'); // reassign expiry membership pack if exists: issue#: 535 $member = apply_filters('mgm_reassign_member_subscription', $user_id, $member, 'CANCEL', true); } else { // date $date_format = mgm_get_date_format('date_format'); // status $new_status = MGM_STATUS_AWAITING_CANCEL; $new_status_str = sprintf(__('Subscription awaiting cancellation on %s', 'mgm'), date($date_format, strtotime($expire_date))); // set $member->status = $new_status; $member->status_str = $new_status_str; // set reset date $member->status_reset_on = $expire_date; $member->status_reset_as = MGM_STATUS_CANCELLED; } // log // mgm_log($member, ($this->module . '_' . __FUNCTION__)); // update user // multiple membesrhip level update: if ($multiple_update) { mgm_save_another_membership_fields($member, $user_id); } else { $member->save(); } // transaction status mgm_update_transaction_status($trans_id, $new_status, $new_status_str); // send email notification to client $blogname = get_option('blogname'); // subject $subject = $system_obj->get_template('subscription_cancelled_email_template_subject', array('blogname' => $blogname), true); // body $message = $system_obj->get_template('subscription_cancelled_email_template_body', array('blogname' => $blogname, 'name' => $user->display_name, 'email' => $user->user_email, 'admin_email' => $system_obj->setting['admin_email']), true); // send email notification to user if (!$dpne) { //issue #862 $subject = mgm_replace_email_tags($subject, $user_id); $message = mgm_replace_email_tags($message, $user_id); // mail mgm_mail($user->user_email, $subject, $message); } // notify admin, only if gateway emails on if (!$dge) { $subject = "[{$blogname}] {$user->user_email} - {$new_status}"; $message = "\tUser display name: {$user->display_name}\n\n<br />\r\r\n\t\t\t\t\tUser email: {$user->user_email}\n\n<br />\r\r\n\t\t\t\t\tUser ID: {$user->ID}\n\n<br />\r\r\n\t\t\t\t\tMembership Type: {$membership_type}\n\n<br />\r\r\n\t\t\t\t\tNew status: {$new_status}\n\n<br />\r\r\n\t\t\t\t\tStatus message: {$member->status_str}\n\n<br />\t\t\t\t\t\r\r\n\t\t\t\t\tPayment Mode: Cancelled\n\n<br />\r\r\n\t\t\t\t\tPOST Data was: \n\n<br /><br /><pre>" . print_r($_POST, true) . '</pre>'; mgm_mail($system_obj->setting['admin_email'], $subject, $message); } // after cancellation hook do_action('mgm_membership_subscription_cancelled', array('user_id' => $user_id)); // redirect if ($redirect) { // message $lformat = mgm_get_date_format('date_format_long'); $message = sprintf(__("You have successfully unsubscribed. Your account has been marked for cancellation on %s", "mgm"), $expire_date == date('Y-m-d') ? 'Today' : date($lformat, strtotime($expire_date))); //issue #1521 if ($is_admin) { mgm_redirect(add_query_arg(array('user_id' => $user_id, 'unsubscribe_errors' => urlencode($message)), admin_url('user-edit.php'))); } // redirect mgm_redirect(mgm_get_custom_url('membership_details', false, array('unsubscribed' => 'true', 'unsubscribe_errors' => urlencode($message)))); } }
/** * hide protected post/pages from apearing in list/feeds etc * * @param object $query * @return object $query * @since 1.0 */ function mgm_hide_protected($query) { global $post; // do not run when admin section loaded #1459 if (is_admin()) { return $query; } // if loading from feed if (is_feed() && isset($_GET['token']) && mgm_use_rss_token()) { // get user by rss token, only for feed $user = mgm_get_user_by_token(strip_tags($_GET['token'])); } else { // current user if (function_exists('wp_get_current_user')) { $user = wp_get_current_user(); } else { global $user_ID; // pick $user = get_userdata($user_ID); } } // get system $system_obj = mgm_get_class('system'); // flag $run_cat_notin = $run_term_notin = false; // user is not a spider if (!mgm_is_a_bot()) { // hide post $hide_posts = mgm_content_exclude_by_user($user->ID, 'post'); // hide post // set filter if (is_array($hide_posts) && !empty($hide_posts)) { $query->set('post__not_in', array_unique($hide_posts)); // set negation } // hide cats $hide_cats = mgm_content_exclude_by_user($user->ID, 'category'); //hide cats // set filter if (is_array($hide_cats) && !empty($hide_cats)) { // flag $run_cat_notin = true; //category not found redirection //skip admin and home //consider only posts: if (!is_super_admin() && !is_home() && is_single()) { // url $category_access_redirect_url = $system_obj->get_setting('category_access_redirect_url'); //skip if same url: if (!empty($category_access_redirect_url) && trailingslashit(mgm_current_url()) != trailingslashit($category_access_redirect_url)) { //check returned category ids belongs to the loaded post: if (isset($post->ID) && is_numeric($post->ID)) { //get post categories $post_cats = wp_get_post_categories($post->ID); // loop foreach ($post_cats as $cat) { //redirect if post category exists in blocked categories if (in_array($cat, $hide_cats)) { //redirect: mgm_redirect($category_access_redirect_url); exit; } } } } } //issue#: 510 if ($run_cat_notin) { // set $query->set('category__not_in', array_unique($hide_cats)); // set negation // issue#: 510 if (substr(get_bloginfo('version'), 0, 3) > 3.0 && !is_page()) { //Note: selectively attach the filter to not apply in other scenarios //issue #1600 $post_name = $query->query_vars['name']; if (empty($post_name)) { $current_uri = trim($_SERVER['REQUEST_URI']); $uri = explode('?', $current_uri); $uriArr = explode('/', $uri[0]); if (!empty($uriArr)) { $post_name = $uriArr[1]; } } $member = mgm_get_member($user->ID); $membership_type = $member->membership_type; $membership_type = empty($membership_type) ? 'guest' : $membership_type; $arr_memberships = mgm_get_subscribed_membershiptypes($user->ID, $member); if (!in_array($membership_type, $arr_memberships)) { $arr_memberships[] = $membership_type; } $accessible = false; $post_data = mgm_get_post_data_by_name($post_name); // check found if (isset($post_data->ID)) { $post_obj = mgm_get_post($post_data->ID); if (count(array_intersect($post_obj->access_membership_types, $arr_memberships)) > 0) { $accessible = true; } } //not accessible add filter if (!$accessible) { //to filter posts as per category__not_in values add_filter('posts_search', 'mgm_attach_category_not_in'); } } } // if on category archive listing page: check cateory is accessible, if not redirect to category_access_redirect_url setting url if (!is_super_admin() && !is_home() && is_category()) { // url $the_url = mgm_current_url(); //get archived category details $loaded_cat = get_category_by_path($the_url, false); //getting subcategory by path - issue #1578 if (empty($loaded_cat)) { $flag = false; $url_segments = preg_split('#/#', $the_url); foreach ($url_segments as $key => $url_segment) { if (strtolower($url_segment) == 'category') { $flag = $key; } } if ($flag) { if (!empty($url_segments[$flag + 2])) { $slug = $url_segments[$flag + 2]; $loaded_cat = get_category_by_slug($slug); } } } // url if (!isset($category_access_redirect_url)) { $category_access_redirect_url = $system_obj->get_setting('category_access_redirect_url'); } // issue #: 657 // if the loaded category cannot be accessed by the user, and if category_access_redirect_url is set, redirect if (isset($loaded_cat->cat_ID) && in_array($loaded_cat->cat_ID, $hide_cats) && !empty($category_access_redirect_url) && trailingslashit($the_url) != trailingslashit($category_access_redirect_url)) { // redirect: mgm_redirect($category_access_redirect_url); exit; } } } } // endif // hide terms $hide_terms = mgm_content_exclude_by_user($user->ID, 'taxonomy'); //hide terms // set filter if (is_array($hide_terms) && !empty($hide_terms)) { // flag $run_term_notin = true; // set filter $query->set('tag__not_in', array_unique($hide_terms)); // set negation // set in search if (substr(get_bloginfo('version'), 0, 3) > 3.0 && !is_page()) { //note: selectively attach the filter to not apply in other scenarios add_filter('posts_search', 'mgm_attach_tag_not_in'); //to filter posts as per tag__not_in values } } // term check if ($run_cat_notin || $run_term_notin) { add_filter('list_terms_exclusions', 'mgm_exclude_terms'); // terms } // return return $query; }
/** * API helper method redirect * * @param array $arg * @return none */ function _redirect($arg = false) { // add arg if (is_array($arg)) { $redirect = add_query_arg(array('status' => 'success'), $this->setting['processed_url']); } else { $redirect = $this->setting['processed_url']; } // redirect mgm_redirect($redirect); }
function _cancel_membership($user_id = null, $redirect = false) { // system $system_obj = mgm_get_class('system'); $s_packs = mgm_get_class('subscription_packs'); $dge = bool_from_yn($system_obj->get_setting('disable_gateway_emails')); $dpne = bool_from_yn($system_obj->get_setting('disable_payment_notify_emails')); //issue #1521 $is_admin = is_super_admin() ? true : false; // get passthrough, stop further process if fails to parse $custom = $this->_get_transaction_passthrough($_POST['COMPLUS']); // local var extract($custom); // currency if (!$currency) { $currency = $this->setting['currency']; } // find user $user = get_userdata($user_id); $member = mgm_get_member($user_id); // multiple membesrhip level update: $multiple_update = false; if (isset($_POST['membership_type']) && $member->membership_type != $_POST['membership_type'] || isset($is_another_membership_purchase) && $is_another_membership_purchase == 'Y') { $multiple_update = true; $multi_memtype = isset($_POST['membership_type']) ? $_POST['membership_type'] : $membership_type; $member = mgm_get_member_another_purchase($user_id, $multi_memtype); } // tracking fields module_field => post_field $tracking_fields = array('txn_type' => 'txn_type', 'subscr_id' => 'subscr_id', 'txn_id' => 'txn_id'); // save tracking fields $this->_save_tracking_fields($tracking_fields, $member); $expire_date = $member->expire_date; // if lifetime: if ($member->duration_type == 'l') { $expire_date = date('Y-m-d'); } // transaction_id $trans_id = $member->transaction_id; // if today if ($expire_date == date('Y-m-d')) { // status $new_status = MGM_STATUS_CANCELLED; $new_status_str = __('Subscription cancelled', 'mgm'); // set $member->status = $new_status; $member->status_str = $new_status_str; $member->expire_date = date('Y-m-d'); // reassign expiry membership pack if exists: issue#: 535 $member = apply_filters('mgm_reassign_member_subscription', $user_id, $member, 'CANCEL', true); } else { // date $date_format = mgm_get_date_format('date_format'); // status $new_status = MGM_STATUS_AWAITING_CANCEL; $new_status_str = sprintf(__('Subscription awaiting cancellation on %s', 'mgm'), date($date_format, strtotime($expire_date))); // set $member->status = $new_status; $member->status_str = $new_status_str; // set reset date $member->status_reset_on = $expire_date; $member->status_reset_as = MGM_STATUS_CANCELLED; } // multiple membesrhip level update: if ($multiple_update) { mgm_save_another_membership_fields($member, $user_id); } else { $member->save(); } // transaction status mgm_update_transaction_status($trans_id, $new_status, $new_status_str); // send email notification to client $blogname = get_option('blogname'); // notify user if (!$dpne) { // notify user mgm_notify_user_membership_cancellation($blogname, $user, $member, $system_obj, $new_status, $membership_type); } // notify admin if (!$dge) { // notify admin mgm_notify_admin_membership_cancellation($blogname, $user, $member); } // after cancellation hook do_action('mgm_membership_subscription_cancelled', array('user_id' => $user_id)); // redirect only internal if ($redirect) { // message $lformat = mgm_get_date_format('date_format_long'); $message = sprintf(__("You have successfully unsubscribed. Your account has been marked for cancellation on %s", "mgm"), $expire_date == date('Y-m-d') ? 'Today' : date($lformat, strtotime($expire_date))); //issue #1521 if ($is_admin) { mgm_redirect(add_query_arg(array('user_id' => $user_id, 'unsubscribe_errors' => urlencode($message)), admin_url('user-edit.php'))); } // redirect mgm_redirect(mgm_get_custom_url('membership_details', false, array('unsubscribed' => 'true', 'unsubscribe_errors' => urlencode($message)))); } }
/** * get post purchase buttons * final step for post purchase * * @param void * @return $html */ function mgm_get_post_purchase_buttons() { // get current user data - issue #1421 $user = wp_get_current_user(); // pack $pack = NULL; // addon options if ($addon_option_ids = mgm_post_var('addon_options')) { $addon_options = mgm_get_addon_options_only($addon_option_ids); // mgm_pr($addon_options); } // post purchase if (isset($_POST['post_id'])) { //issue #1250 if (isset($_POST['mgm_postpurchase_field']['coupon']) && !empty($_POST['mgm_postpurchase_field']['coupon'])) { //issue #1250 - Coupon validation if (!empty($_POST['form_action'])) { // check if its a valid coupon if (!($coupon = mgm_get_coupon_data($_POST['mgm_postpurchase_field']['coupon']))) { //redirect back to the form $q_arg = array('error_field' => 'Coupon', 'error_type' => 'invalid', 'error_field_value' => $_POST['mgm_postpurchase_field']['coupon']); $redirect = add_query_arg($q_arg, $_POST['form_action']); mgm_redirect($redirect); exit; } } } // post id $post_id = $_POST['post_id']; // gete mgm data $post_obj = mgm_get_post($post_id); $cost = mgm_convert_to_currency($post_obj->purchase_cost); $product = $post_obj->product; $allowed_modules = $post_obj->allowed_modules; // post data $post = get_post($post_id); $title = $post->post_title; // item name -issue #1380 $item_name = apply_filters('mgm_post_purchase_itemname', sprintf(__('Purchase Post - %s', 'mgm'), $title)); // set pack $pack = array('duration' => 1, 'item_name' => $item_name, 'buypost' => 1, 'cost' => $cost, 'title' => $title, 'product' => $product, 'post_id' => $post_id, 'allowed_modules' => $allowed_modules); } else { if (isset($_POST['postpack_id'])) { // post pack purchase //issue #1250 if (isset($_POST['mgm_postpurchase_field']['coupon']) && !empty($_POST['mgm_postpurchase_field']['coupon'])) { //issue #1250 - Coupon validation if (!empty($_POST['form_action'])) { // check if its a valid coupon if (!($coupon = mgm_get_coupon_data($_POST['mgm_postpurchase_field']['coupon']))) { //redirect back to the form $q_arg = array('error_field' => 'Coupon', 'error_type' => 'invalid', 'error_field_value' => $_POST['mgm_postpurchase_field']['coupon']); $redirect = add_query_arg($q_arg, $_POST['form_action']); mgm_redirect($redirect); exit; } } } // post pack purchase $postpack_id = $_POST['postpack_id']; // pcak id $postpack_post_id = $_POST['postpack_post_id']; // post id where pack is listed, redirect here // get pack $postpack = mgm_get_postpack($postpack_id); $cost = mgm_convert_to_currency($postpack->cost); $product = json_decode($postpack->product, true); $modules = json_decode($postpack->modules, true); //mgm_pr($postpack); // item name -issue #1380 $item_name = apply_filters('mgm_postpack_purchase_itemname', sprintf(__('Purchase Post Pack - %s', 'mgm'), $postpack->name)); // post id $post_id = mgm_get_postpack_posts_csv($postpack_id); // set pack $pack = array('duration' => 1, 'item_name' => $item_name, 'buypost' => 1, 'cost' => $cost, 'title' => $postpack->name, 'product' => $product, 'post_id' => $post_id, 'postpack_id' => $postpack_id, 'postpack_post_id' => $postpack_post_id, 'allowed_modules' => $modules); } } // check if (!$pack) { return __('Error in Payment! No data available '); exit; } // guest token -issue #1421 if (isset($_POST['guest_purchase']) && $_POST['guest_purchase'] == TRUE && $user->ID <= 0) { $pack['guest_token'] = sanitize_title_for_query(mgm_create_token()); } // addon options if (isset($addon_options) && !empty($addon_options)) { $pack['addon_options'] = $addon_options; } // get coupon $post_purchase_coupon = mgm_save_partial_fields(array('on_postpurchase' => true), 'mgm_postpurchase_field', $pack['cost'], false, 'postpurchase'); // alter mgm_get_post_purchase_coupon_pack($post_purchase_coupon, $pack); // Eg: $_POST['mgm_payment_gateways'] = mgm_paypal $cf_payment_gateways = isset($_POST['mgm_payment_gateways']) && !empty($_POST['mgm_payment_gateways']) ? $_POST['mgm_payment_gateways'] : null; // bypass step2 if payment gateway is submitted: issue #: 469 if (!is_null($cf_payment_gateways)) { // get pack // mgm_get_upgrade_coupon_pack($member, $selected_pack); // cost if ((double) $pack['cost'] > 0) { //get an object of the payment gateway: $mod_obj = mgm_get_module($cf_payment_gateways, 'payment'); // tran options $tran_options = array('user_id' => $user->ID); // is register & purchase if (isset($_POST['post_id'])) { $tran_options['post_id'] = (int) $_POST['post_id']; } // postpack id if (isset($_POST['postpack_id'])) { $tran_options['postpack_id'] = (int) $_POST['postpack_id']; } // is register & purchase postpack if (isset($_POST['postpack_post_id']) && isset($_POST['postpack_id'])) { $tran_options['postpack_post_id'] = (int) $_POST['postpack_post_id']; $tran_options['postpack_id'] = (int) $_POST['postpack_id']; } // create transaction $tran_id = mgm_add_transaction($pack, $tran_options); // bypass directly to process return if manual payment: if ($cf_payment_gateways == 'mgm_manualpay') { // set $_POST['custom'] = $tran_id; // direct call to module return function: $mod_obj->process_return(); // exit exit; } // encode id: $tran_id = mgm_encode_id($tran_id); $redirect = $mod_obj->_get_endpoint('html_redirect', true); $redirect = add_query_arg(array('tran_id' => $tran_id), $redirect); // redirect mgm_redirect($redirect); // this goes to subscribe, mgm_functions.php/mgm_get_subscription_buttons // exit exit; } } // get payment modules $a_payment_modules = mgm_get_class('system')->get_active_modules('payment'); // init $payment_modules = array(); // when active if ($a_payment_modules) { // loop foreach ($a_payment_modules as $payment_module) { // not trial if (in_array($payment_module, array('mgm_free', 'mgm_trial'))) { continue; } // store $payment_modules[] = $payment_module; } } // init $button = ''; // transaction $tran_id = NULL; $button_printed = 0; // loop modules foreach ($payment_modules as $module) { // object $mod_obj = mgm_get_module($module, 'payment'); // check buypost support if (in_array('buypost', $mod_obj->supported_buttons)) { // create transaction if (!$tran_id) { $tran_id = mgm_add_transaction($pack); } // button code if (isset($pack['allowed_modules'])) { // Issue #1562: If no payment module is selected, display all supported modules if (!empty($pack['allowed_modules']) && FALSE === in_array($module, $pack['allowed_modules'])) { continue; } } $button_code = $mod_obj->get_button_buypost(array('pack' => $pack, 'tran_id' => $tran_id), true); $button_printed++; // get button $button .= "<div class='mgm_custom_filed_table'>" . $button_code . "</div>"; } } // none active if ($button_printed == 0) { $button .= sprintf('<p class="mgm-no-module"> %s </p>', __('No Payment module active for this Content Purchase.', 'mgm')); } // if Cost is zero, then process using free module.: issue#: 883 if ($tran_id && $pack['cost'] == 0 && in_array('mgm_free', $a_payment_modules) && mgm_get_module('mgm_free')->is_enabled()) { // module $module = 'mgm_free'; // payments url $payments_url = mgm_get_custom_url('transactions'); // query_args $query_args = array('method' => 'payment_return', 'module' => $module, 'custom' => $tran_id); // redirector if (isset($_REQUEST['redirector'])) { // set $query_args['redirector'] = $_REQUEST['redirector']; } // redirect to module to mark the payment as complete $redirect = add_query_arg($query_args, $payments_url); // redirect mgm_redirect($redirect); } // html $return = '<div class="post_purchase_select_gateway">' . __('Please Select a Payment Gateway.', 'mgm') . '</div>' . $button; // return return $return; }
function process_cancel() { // redirect to cancel page mgm_redirect(add_query_arg(array('status' => 'cancel'), $this->_get_thankyou_url())); }
function _buy_post() { global $wpdb; // get system settings $system_obj = mgm_get_class('system'); $dge = bool_from_yn($system_obj->get_setting('disable_gateway_emails')); $dpne = bool_from_yn($system_obj->get_setting('disable_payment_notify_emails')); // get passthrough, stop further process if fails to parse $custom = $this->_get_transaction_passthrough($_POST['COMPLUS']); // local var extract($custom); // find user $user = null; // check if (isset($user_id) && (int) $user_id > 0) { $user = get_userdata($user_id); } // errors $errors = array(); // purchase status $purchase_status = 'Error'; // get status $payment_status = $this->_parse_payment_status($_POST['STATUS']); // check switch ($payment_status) { //issue#: 360 case 'Authorized': case 'Payment requested': //status code will be 9 // status $status_str = __('Last payment was successful', 'mgm'); // purchase status $purchase_status = 'Success'; // transaction id $transaction_id = $this->_get_transaction_id('COMPLUS'); // hook args $args = array('post_id' => $post_id, 'transaction_id' => $transaction_id); // user purchase if (isset($user_id) && (int) $user_id > 0) { $args['user_id'] = $user_id; } else { // guest purchase $args['guest_token'] = $guest_token; } // after succesful payment hook do_action('mgm_buy_post_transaction_success', $args); // backward compatibility do_action('mgm_post_purchase_payment_success', $args); // new organized name break; case 'Refund': case 'Payment refused': case 'Cancelled': // status $status_str = __('Last payment was refunded or denied', 'mgm'); // purchase status $purchase_status = 'Failure'; // error $errors[] = $status_str; break; case 'Pending': case 'Being processed (intermediate technical status)': case 'Authorization waiting': // status $status_str = sprintf(__('Last payment is pending. Reason: %s', 'mgm'), $payment_status); // purchase status $purchase_status = 'Pending'; // error $errors[] = $status_str; break; default: // status $status_str = sprintf(__('Last payment status: %s', 'mgm'), $payment_status); // purchase status $purchase_status = 'Unknown'; // error $errors[] = $status_str; } // do action do_action('mgm_return_post_purchase_payment_' . $this->module, array('post_id' => $post_id)); // new, individual do_action('mgm_return_post_purchase_payment', array('post_id' => $post_id)); // new, global // status $status = __('Failed join', 'mgm'); //overridden on a successful payment // check status if ($purchase_status == 'Success') { // mark as purchased if (isset($user->ID)) { // purchased by user // call coupon action do_action('mgm_update_coupon_usage', array('user_id' => $user_id)); // set as purchased $this->_set_purchased($user_id, $post_id, NULL, $alt_tran_id); } else { // purchased by guest if (isset($guest_token)) { // issue #1421, used coupon if (isset($coupon_id) && isset($coupon_code)) { // call coupon action do_action('mgm_update_coupon_usage', array('guest_token' => $guest_token, 'coupon_id' => $coupon_id)); // set as purchased $this->_set_purchased(NULL, $post_id, $guest_token, $alt_tran_id, $coupon_code); } else { $this->_set_purchased(NULL, $post_id, $guest_token, $alt_tran_id); } } } // status $status = __('The post was purchased successfully', 'mgm'); } // transaction status mgm_update_transaction_status($_POST['COMPLUS'], $status, $status_str); // blog $blogname = get_option('blogname'); // post being purchased $post = get_post($post_id); // notify user and admin, only if gateway emails on if (!$dpne) { // notify user if (isset($user->ID)) { // mgm post setup object $post_obj = mgm_get_post($post_id); // check if ($this->send_payment_email($alt_tran_id)) { // check if (mgm_notify_user_post_purchase($blogname, $user, $post, $purchase_status, $system_obj, $post_obj, $status_str)) { // update as email sent $this->update_paymentemail_sent($alt_tran_id); } } } } // notify admin, only if gateway emails on if (!$dge) { // notify admin, mgm_notify_admin_post_purchase($blogname, $user, $post, $status); } // error condition redirect if (count($errors) > 0) { mgm_redirect(add_query_arg(array('status' => 'error', 'errors' => implode('|', $errors)), $this->_get_thankyou_url())); } }
/** * after login redirect * * @param string user login * @param object user * @return object user */ function mgm_login_redirect($user_login, $user = NULL) { // get user if (!$user) { $user = get_user_by('login', $user_login); } // if super admin if (is_super_admin($user->ID)) { // redirect mgm_redirect(admin_url()); exit; } // check doing auto login from register and skip if true if (defined('MGM_DOING_REGISTER_AUTO_LOGIN') && MGM_DOING_REGISTER_AUTO_LOGIN == TRUE) { // return return $user; } // custom hook do_action('mgm_before_login_redirect', $user); // get setting $system_obj = mgm_get_class('system'); // issue #503,allow redirecting back to post url: @depends on "enable_post_url_redirection" in misc setting $enable_post_url_redirection = bool_from_yn($system_obj->get_setting('enable_post_url_redirection')); // check if ($enable_post_url_redirection) { // redirect_to if ($redirect_to = mgm_request_var('redirect_to', '', true)) { // flag $do_redirect = true; // loop custom pages foreach ($system_obj->get_custom_pages_url() as $page_url) { // if not same if (!empty($page_url) && trailingslashit($redirect_to) == trailingslashit($page_url)) { // check, matched both full url or part /%postname%/ url if (trailingslashit($redirect_to) == trailingslashit($page_url) || site_url($redirect_to) == trailingslashit($page_url)) { // reset $do_redirect = false; break; } } } // OK if (!empty($redirect_to) && $do_redirect) { mgm_redirect($redirect_to); } exit; } } // apply filter $login_redirect_url = apply_filters('mgm_login_redirect', mgm_login_redirect_url($user)); // check if (!empty($login_redirect_url)) { mgm_redirect($login_redirect_url); exit; } // return return $user; }
function process_cancel() { // not used for this module mgm_redirect(add_query_arg(array('status' => 'cancel'), $this->_get_thankyou_url())); }
/** * unsubscribe default callback */ function mgm_member_unsubscribe() { // user_id from post extract($_POST); // system $system_obj = mgm_get_class('system'); $packs_obj = mgm_get_class('subscription_packs'); $dge = bool_from_yn($system_obj->get_setting('disable_gateway_emails')); // find user $user = get_userdata($user_id); $member = mgm_get_member($user_id); // multiple membesrhip level update: if (isset($_POST['membership_type']) && $member->membership_type != $_POST['membership_type']) { $member = mgm_get_member_another_purchase($user_id, $_POST['membership_type']); } // get pack if ($member->pack_id) { $subs_pack = $packs_obj->get_pack($member->pack_id); } else { $subs_pack = $packs_obj->validate_pack($member->amount, $member->duration, $member->duration_type, $member->membership_type); } // types $duration_exprs = $packs_obj->get_duration_exprs(); // default expire date $expire_date = $member->expire_date; if ($member->duration_type == 'l') { $expire_date = date('Y-m-d'); } // if trial on if ($subs_pack['trial_on'] && isset($duration_exprs[$subs_pack['trial_duration_type']])) { // if cancel data is before trial end, set cancel on trial expire_date $trial_expire_date = strtotime("+{$subs_pack['trial_duration']} {$duration_exprs[$subs_pack['trial_duration_type']]}", $member->join_date); // if lower if (time() < $trial_expire_date) { $expire_date = date('Y-m-d', $trial_expire_date); } } // old status $old_status = $member->status; // if today if ($expire_date == date('Y-m-d')) { // set new status $member->status = $new_status = MGM_STATUS_CANCELLED; // status string $member->status_str = __('Subscription Cancelled', 'mgm'); $member->expire_date = date('Y-m-d'); } else { // date format $date_format = mgm_get_date_format('date_format'); // set new status $member->status = $new_status = MGM_STATUS_AWAITING_CANCEL; // status string $member->status_str = sprintf(__('Subscription awaiting cancellation on %s', 'mgm'), date($date_format, strtotime($expire_date))); // reset on $member->status_reset_on = $expire_date; $member->status_reset_as = MGM_STATUS_CANCELLED; } // multiple memberhip level update: if ($post_membership_type = mgm_post_var('membership_type') && $member->membership_type != $post_membership_type) { mgm_save_another_membership_fields($member, $user_id); } else { $member->save(); } // status change event do_action('mgm_user_status_change', $user_id, $new_status, $old_status, 'member_unsubscribe', $member->pack_id); // send email notification to client $blogname = get_option('blogname'); // email $subject = sprintf(__('[%s] Subscription Cancelled', 'mgm'), $blogname); $message = __('This is an automatic notification from %1$s to %2$s (%3$s). This is a notification to inform you that your subscription has been cancelled. For more information please contact %4$s', 'mgm'); $message = sprintf($message, $blogname, $user->display_name, $user->user_email, $system_obj->setting['admin_email']); // send email notification to user mgm_mail($user->user_email, $subject, $message); // notify admin, only if gateway emails on if (!$dge) { $subject = "[{$blogname}] {$user->user_email} - {$new_status}"; $message = "\tUser display name: {$user->display_name}\n\n<br />\r\r\n\t\t\t\tUser email: {$user->user_email}\n\n<br />\r\r\n\t\t\t\tUser ID: {$user->ID}\n\n<br />\r\r\n\t\t\t\tMembership Type: {$membership_type}\n\n<br />\r\r\n\t\t\t\tNew status: {$new_status}\n\n<br />\r\r\n\t\t\t\tStatus message: {$member->status_str}\n\n<br />\t\t\t\t\t\r\r\n\t\t\t\tPayment Mode: Cancelled\n\n<br />\r\r\n\t\t\t\tPOST Data was: \n\n<br /><br /><pre>" . print_r($_POST, true) . '</pre>'; mgm_mail($system_obj->setting['admin_email'], $subject, $message); } // after cancellation hook do_action('mgm_membership_subscription_cancelled', array('user_id' => $user_id)); // message $lformat = mgm_get_date_format('date_format_long'); $message = sprintf(__("You have successfully Unsubscribed. Your account has been marked for cancellation on %s", "mgm"), $expire_date == date('Y-m-d') ? 'Today' : date($lformat, strtotime($expire_date))); // redirect //mgm_redirect('wp-admin/profile.php?page=mgm/profile&unsubscribed=true&unsubscribe_errors='.urlencode($message)); mgm_redirect(mgm_get_custom_url('membership_details', false, array('unsubscribe_errors' => urlencode($message)))); }
/** * Custom user profile form */ function mgm_user_profile_form($user_id = NULL, $temp_edit = false, $args = array()) { global $wpdb; // get mgm_system $system_obj = mgm_get_class('system'); // current user $current_user = $user_id ? get_userdata($user_id) : wp_get_current_user(); // current or voew if ($current_user->ID) { // current $user = mgm_get_userdata($current_user->ID); } else { // query string $user = mgm_get_user_from_querystring(); } // if no user if (!isset($user) || !$user->ID || is_super_admin($user->ID)) { return mgm_user_login_form(); exit; } // mgm member $member = mgm_get_member($user->ID); // edit mode, on for current user $edit_mode = $current_user->ID == $user->ID ? true : false; $temp = 0; // form action $form_action = get_permalink(); // reset if ($form_action == null) { $form_action = mgm_get_current_url(); $form_action = str_replace(array('&updated=true', '?updated=true'), '', $form_action); } //init - issue #1573 $show_membership_fields_arr = array(); if (isset($args['membership']) && !empty($args['membership'])) { // membership $membership = $args['membership']; // get active custom fields on register $cf_profile_by_membership_types = mgm_get_class('member_custom_fields')->get_fields_where(array('attributes' => array('profile_by_membership_types' => true))); //check if (!empty($cf_profile_by_membership_types)) { //loop foreach ($cf_profile_by_membership_types as $cf_profile_by_membership_type) { //membership_type $membership_types_string = isset($cf_profile_by_membership_type['attributes']['profile_membership_types_field_alias']) ? $cf_profile_by_membership_type['attributes']['profile_membership_types_field_alias'] : null; //check if (preg_match('/\\b' . $membership . '\\b/', $membership_types_string) && $membership_types_string != null) { $show_fields_arr[] = $cf_profile_by_membership_type['name']; $show_membership_fields_arr[] = $cf_profile_by_membership_type; if ($cf_profile_by_membership_type['name'] == 'password') { foreach ($cf_profile_by_membership_types as $cf_profile_by_membership) { if ($cf_profile_by_membership['name'] == 'password_conf') { $show_membership_fields_arr[] = $cf_profile_by_membership; } } } } } } } // get default fields $profile_fields = mgm_get_config('default_profile_fields', array()); // get active custom fields on profile page $cf_profile_page = mgm_get_class('member_custom_fields')->get_fields_where(array('display' => array('on_profile' => true))); $cf_noton_profile = mgm_get_class('member_custom_fields')->get_fields_where(array('display' => array('on_profile' => false))); //merge - issue #1573 if (isset($show_membership_fields_arr) && is_array($show_membership_fields_arr) && !empty($show_membership_fields_arr)) { $cf_profile_page = array_merge($cf_profile_page, $show_membership_fields_arr); $cf_noton_profile = array_merge($cf_noton_profile, $show_membership_fields_arr); } $error_html = ''; //issue #867 $css_group = mgm_get_css_group(); if ($css_group != 'none') { // error_html $error_html .= '<link rel="stylesheet" href="' . MGM_ASSETS_URL . 'css/' . $css_group . '/mgm.messages.css' . '" type="text/css" media="all" />'; } // update if ($edit_mode) { // updated if (isset($_POST['method']) && $_POST['method'] == 'update_user') { // check security before processing form if (!wp_verify_nonce(mgm_post_var('_mgmnonce_user_profile'), 'user_profile')) { mgm_security_error('user_profile'); } // user lib if (mgm_compare_wp_version('3.1', '<')) { // only before 3.1 require_once ABSPATH . WPINC . '/registration.php'; } // callback do_action('personal_options_update', $current_user->ID); // not multisite, duplicate email allowed ? if (!is_multisite()) { // save $errors = mgm_user_profile_update($current_user->ID); } else { // multi site // get user $user = get_userdata($current_user->ID); // update here: // Update the email address, if present. duplicate check if ($user->user_login && isset($_POST['user_email']) && is_email($_POST['user_email']) && $wpdb->get_var($wpdb->prepare("SELECT user_login FROM {$wpdb->signups} WHERE user_login = %s", $user->user_login))) { $wpdb->query($wpdb->prepare("UPDATE {$wpdb->signups} SET user_email = %s WHERE user_login = %s", $_POST['user_email'], $user->user_login)); } // edit if (!isset($errors) || isset($errors) && is_object($errors) && false == $errors->get_error_codes()) { $errors = mgm_user_profile_update($current_user->ID); } } // trap erros if (!is_wp_error($errors)) { // redirect mgm_redirect(add_query_arg(array('updated' => 'true'), $form_action)); } // errors if (isset($errors) && !is_numeric($errors)) { // get error $error_html .= mgm_set_errors($errors, true); } } } // updated if ($edit_mode && isset($_GET['updated'])) { $error_html .= '<div class="mgm_message_success">'; $message = apply_filters('mgm_profile_edit_message', __('User updated.', 'mgm')); $error_html .= '<div><strong>' . $message . '</strong></div></div>'; } // get row row template $form_row_template = $system_obj->get_template('profile_form_row_template'); // get template row filter, mgm_profile_form_row_template for edit, mgm_profile_form_row_template_view for public view $form_row_template = apply_filters('mgm_profile_form_row_template' . (!$edit_mode ? '_view' : ''), $form_row_template); $cf_order = array(); foreach ($cf_profile_page as $fld) { $cf_order[] = array('field' => $fld['name']); } // auto generate form template // form_template $form_template = ''; // captured $fields_captured = array(); // get field_groups $field_groups = mgm_get_config('profile_field_groups', array()); // loop groups foreach ($field_groups as $group => $group_fields) { if ($group == 'Photo') { $photo_exists = false; foreach ($cf_profile_page as $photo) { if ($photo['name'] == 'photo') { $photo_exists = true; break; } } if (!$photo_exists) { continue; } } $fields_with_order = array(); //issue #1197 $css_title = function_exists('mb_strtolower') ? @mb_strtolower($group) : strtolower($group); $css_title = str_replace(' ', '_', $css_title); // group // PREV CODE $form_template .= sprintf('<span class="profile_group_%s">%s</span>', $css_title, $group); // loop to create form template foreach ($group_fields as $group_field) { // skip password //if(!$edit_mode && $group_field == 'password') continue; if (!$edit_mode && in_array($group_field, array('password', 'password_conf'))) { continue; } // set not found $captured = false; // first check if in custom fields foreach ($cf_profile_page as $field) { // skip password in non edit mode if ($field['name'] == $group_field) { // set found $captured = true; // skip password //if(!$edit_mode && $field['name'] == 'password') continue; if (!$edit_mode && in_array($field['name'], array('password', 'password_conf'))) { continue; } // store for no repeat $fields_captured[] = $field['name']; // field wrapper $wrapper_ph = sprintf('[user_field_wrapper_%s]', $field['name']); // field label $label_ph = sprintf('[user_field_label_%s]', $field['name']); // field/html element $element_ph = sprintf('[user_field_element_%s]', $field['name']); // set element name // PREV CODE //$form_template .= str_replace(array('[user_field_wrapper]','[user_field_label]','[user_field_element]'),array($wrapper_ph,$label_ph,$element_ph),$form_row_template); // Issue #1149 foreach ($cf_order as $index => $cfo) { if ($cfo['field'] == $field['name']) { $fields_with_order[$index] = str_replace(array('[user_field_wrapper]', '[user_field_label]', '[user_field_element]'), array($wrapper_ph, $label_ph, $element_ph), $form_row_template); break; } } // break; break; } } // if not captured if (!$captured) { $continue = false; foreach ($cf_noton_profile as $cffield) { if ($cffield['name'] == $group_field) { $continue = true; break; } } // break; if ($continue) { continue; } // check set if (!isset($profile_fields[$group_field]['name'])) { continue; } // field wrapper $wrapper_ph = sprintf('[user_field_wrapper_%s]', $profile_fields[$group_field]['name']); // field label $label_ph = sprintf('[user_field_label_%s]', $profile_fields[$group_field]['name']); // field/html element $element_ph = sprintf('[user_field_element_%s]', $profile_fields[$group_field]['name']); // set element name // PREV CODE // $form_template .= str_replace(array('[user_field_wrapper]','[user_field_label]','[user_field_element]'),array($wrapper_ph,$label_ph,$element_ph),$form_row_template); // Issue #1149 $field_added = false; foreach ($cf_order as $index => $cfo) { if ($cfo['field'] == $group_field) { $fields_with_order[$index] = str_replace(array('[user_field_wrapper]', '[user_field_label]', '[user_field_element]'), array($wrapper_ph, $label_ph, $element_ph), $form_row_template); $field_added = true; break; } } if (!$field_added) { /*$fields_with_order[$index+1] = str_replace(array('[user_field_wrapper]','[user_field_label]','[user_field_element]'),array($wrapper_ph,$label_ph,$element_ph),$form_row_template);*/ // default profile instalation fields - issue #1207 if (in_array($group_field, array('username', 'email', 'password', 'password', 'password_conf'))) { $fields_with_order[$temp++] = str_replace(array('[user_field_wrapper]', '[user_field_label]', '[user_field_element]'), array($wrapper_ph, $label_ph, $element_ph), $form_row_template); } } } } // Issue #1149 // Process custom field form_template with order if (!empty($fields_with_order)) { // Sort by key ksort($fields_with_order); // Loop through fields and attach html foreach ($fields_with_order as $fworder) { $form_template .= $fworder; } } } // other $other_header = false; // loop to create form template foreach ($cf_profile_page as $field) { // skip password in non edit mode //if(!$edit_mode && $field['name'] == 'password') continue; if (!$edit_mode && in_array($field['name'], array('password', 'password_conf'))) { continue; } // skip captured if (in_array($field['name'], $fields_captured)) { continue; } // header if (!$other_header) { // rest $form_template .= sprintf('<span class="profile_group_others">%s</span>', __('Others', 'mgm')); $other_header = true; } // field wrapper $wrapper_ph = sprintf('[user_field_wrapper_%s]', $field['name']); // field label $label_ph = sprintf('[user_field_label_%s]', $field['name']); // field/html element $element_ph = sprintf('[user_field_element_%s]', $field['name']); // template for show_public_profile if ($field['name'] == 'show_public_profile') { // template $form_row_template_pf = $system_obj->get_template('register_form_row_autoresponder_template'); // set element place holders $form_template .= str_replace(array('[user_field_wrapper]', '[user_field_label]', '[user_field_element]'), array($wrapper_ph, $label_ph, $element_ph), $form_row_template_pf); } else { // set element name $form_template .= str_replace(array('[user_field_wrapper]', '[user_field_label]', '[user_field_element]'), array($wrapper_ph, $label_ph, $element_ph), $form_row_template); } } // get template filter, mgm_profile_form_template for edit, mgm_profile_form_template_view for public view $form_template = apply_filters('mgm_profile_form_template' . (!$edit_mode ? '_view' : ''), $form_template); // now replace and create the fields $form_html = $form_template; // get mgm_form_fields generator $form_fields = new mgm_form_fields(array('wordpres_form' => false)); $arr_images = array(); // loop custom fields to replace form labels/elements foreach ($cf_profile_page as $field) { // skip password in non edit mode //if(!$edit_mode && $field['name'] == 'password') continue; if (!$edit_mode && in_array($field['name'], array('password', 'password_conf'))) { continue; } if ($edit_mode && $field['type'] == 'image') { if (!in_array($field['name'], $arr_images)) { $arr_images[] = $field['name']; } } // field wrapper $wrapper_ph = sprintf('[user_field_wrapper_%s]', $field['name']); // field label $label_ph = sprintf('[user_field_label_%s]', $field['name']); // field/html element $element_ph = sprintf('[user_field_element_%s]', $field['name']); // edit mode if ($edit_mode) { // for username if ($field['name'] == 'username') { //localazing the label issue# 617 $label_lcz = mgm_stripslashes_deep($field['label']); $label_lcz = __($label_lcz, 'mgm'); $field['label'] = sprintf('%s (<em>%s</em>)', $label_lcz, __('Username not changeable', 'mgm')); } elseif ($field['name'] == 'password') { //localazing the label issue# 617 $label_lcz = mgm_stripslashes_deep($field['label']); $label_lcz = __($label_lcz, 'mgm'); $field['label'] = sprintf('%s (<em>%s</em>)', $label_lcz, __('Leave blank if don\'t wish to update', 'mgm')); } } else { // for display_name if ($field['name'] == 'display_name') { $field['label'] = __('Display Name', 'mgm'); } } // replace wrapper $form_html = str_replace($wrapper_ph, $field['name'] . '_box', $form_html); //localazing the label issue# 617 $label_lcz = mgm_stripslashes_deep($field['label']); $label_lcz = __($label_lcz, 'mgm'); // replace label(hidden) - issue #1050 $form_html = str_replace($label_ph, $field['attributes']['hide_label'] ? '' : mgm_stripslashes_deep($field['label']), $form_html); // replace label $form_html = str_replace($label_ph, $label_lcz, $form_html); // selected value if (isset($profile_fields[$field['name']]) && isset($user->{$profile_fields}[$field['name']]['name'])) { // wp alias' // value $value = $user->{$profile_fields}[$field['name']]['name']; // birthdate if ($field['name'] == 'birthdate') { // convert saved date to input field format $value = mgm_get_datepicker_format('date', $value); } elseif ($field['type'] == 'checkbox') { //$options = preg_split('/[;,]/', $field['options']); //$value = preg_split('/[;,\s]/', $value); //issue #1070 $value = @unserialize($value); // pass " " as value to prevent the default value getting selected, if no option is selected $value = empty($value) ? " " : $value; } } else { if (isset($member->custom_fields->{$field}['name'])) { // custom field // value $value = $member->custom_fields->{$field}['name']; // birthdate if ($field['name'] == 'birthdate') { // convert saved date to input field format $value = mgm_get_datepicker_format('date', $value); } elseif ($field['type'] == 'checkbox') { //$options = preg_split('/[;,]/', $field['options']); //$value = preg_split('/[;,\s]/', $value); //issue #1070 $value = @unserialize($value); // pass " " as value to prevent the default value getting selected, if no option is selected $value = empty($value) ? " " : $value; } //issue #1484 if ($field['name'] == 'show_public_profile' && $field['type'] == 'checkbox') { $value = $member->custom_fields->{$field}['name']; } } else { if (isset($user->{$field}['name'])) { // object var // value $value = $user->{$field}['name']; } else { // none // default $value = ''; } } } // dont set value for password if (in_array($field['name'], array('password', 'password_conf'))) { $value = ''; } // disable username if ($field['name'] == 'username') { $field['attributes']['readonly'] = true; } // nickname if ($field['name'] == 'nickname') { $field['attributes']['required'] = true; } // edit mode if ($edit_mode) { if ($field['name'] == 'show_public_profile') { //echo "xxx".$form_fields->get_field_element($field,'mgm_profile_field',$value); } // replace element $form_html = str_replace($element_ph, $form_fields->get_field_element($field, 'mgm_profile_field', $value), $form_html); } else { // view // country if ($field['name'] == 'country') { $value = mgm_country_from_code($value); } elseif ($field['name'] == 'photo' && !empty($value)) { $value = sprintf('<img src="%s" alt="%s" >', $value, basename($value)); } // replace element $form_html = str_replace($element_ph, $value, $form_html); } } // loop default fields to replace form elements foreach ($profile_fields as $field_key => $field) { // skip password in non edit mode //if(!$edit_mode && $field['name'] == 'user_password') continue; if (!$edit_mode && in_array($field['name'], array('user_password', 'user_password_conf'))) { continue; } $continue = false; foreach ($cf_noton_profile as $cffield) { if ($cffield['name'] == $field['name']) { $continue = true; break; } } if ($continue) { continue; } // field wrapper $wrapper_ph = sprintf('[user_field_wrapper_%s]', $field['name']); // field label $label_ph = sprintf('[user_field_label_%s]', $field['name']); // field/html element $element_ph = sprintf('[user_field_element_%s]', $field['name']); // edit mode if ($edit_mode) { // for username if ($field['name'] == 'user_login') { //localazing the label issue# 617 $label_lcz = mgm_stripslashes_deep($field['label']); $label_lcz = __($label_lcz, 'mgm'); $field['label'] = sprintf('%s (<em>%s</em>)', $label_lcz, __('Username not changeable', 'mgm')); } elseif ($field['name'] == 'user_password') { //localazing the label issue# 617 $label_lcz = mgm_stripslashes_deep($field['label']); $label_lcz = __($label_lcz, 'mgm'); $field['label'] = sprintf('%s (<em>%s</em>)', $label_lcz, __('Leave blank if don\'t wish to update', 'mgm')); } } else { // for display_name if ($field['name'] == 'display_name') { $field['label'] = __('Display Name', 'mgm'); } } // replace wrapper $form_html = str_replace($wrapper_ph, $field['name'] . '_box', $form_html); //localazing the label issue# 617 $label_lcz = mgm_stripslashes_deep($field['label']); $label_lcz = __($label_lcz, 'mgm'); // replace label $form_html = str_replace($label_ph, $label_lcz, $form_html); // selected value if (isset($user->{$field}['name'])) { // wp alias $value = $user->{$field}['name']; } else { if (isset($member->custom_fields->{$field_key})) { // custom field $value = $member->custom_fields->{$field_key}; } else { // none $value = ''; } } // dont set value for password //if($field['name'] == 'user_password') $value = ''; if (in_array($field['name'], array('user_password', 'user_password_conf'))) { $value = ''; } // edit mode if ($edit_mode) { // replace element $form_html = str_replace($element_ph, $form_fields->get_field_element($field, 'mgm_profile_field', $value), $form_html); } else { // country if ($field_key == 'country') { $value = mgm_country_from_code($value); } // set $form_html = str_replace($element_ph, $value, $form_html); } } // attach scripts $form_html .= mgm_attach_scripts(true, array()); // range $yearRange = mgm_get_calendar_year_range(); // append script $form_html .= '<script language="javascript">jQuery(document).ready(function(){try{mgm_date_picker(".mgm_date",false,{yearRange:"' . $yearRange . '", dateFormat: "' . mgm_get_datepicker_format() . '"});}catch(x){}});</script>'; //include scripts for image upload: if (!empty($arr_images)) { $form_html .= mgm_upload_script_js('profileform', $arr_images); } // buttun $button_html = ''; // button on edit if ($edit_mode && !$temp_edit) { // default $button_html = '<div><input class="button mgm-profile-button" type="submit" name="wp-submit" id="wp-submit" value="' . __('Update', 'mgm') . '" /></div>'; // apply button filter $button_html = apply_filters('mgm_profile_form_button', $button_html); } //profile by membership - issue #1573 if (isset($args['membership']) && !empty($args['membership'])) { // hidden $button_html .= sprintf('<input type="hidden" name="membership" value="%s">', $args['membership']); } // hidden $button_html .= '<input type="hidden" name="method" value="update_user">'; // nonce $button_html .= wp_nonce_field('user_profile', '_mgmnonce_user_profile', true, false); // temp if (!$temp_edit) { // open $form_open = sprintf('<form class="mgm_form" name="profileform" id="profileform" action="%s" method="post">', $form_action); $form_close = '</form>'; } else { $form_open = $form_close = ''; } // output form $html = sprintf('<div class="mgm_prifile_form">%s %s %s %s %s</div>', $error_html, $form_open, $form_html, $button_html, $form_close); //issue #1113 $html = mgm_stripslashes_deep($html); // filter $html = apply_filters('mgm_user_profile_form_html', $html, $current_user); //issue #1635 $user_profile_html = '<div class="mgm_user_profile_container">' . $html . '</div>'; // return return $user_profile_html; }