/**
* buy post
* not supported
*/
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'));
// get passthrough, stop further process if fails to parse
$custom = $this->_get_transaction_passthrough($_REQUEST['extra']);
// local var
extract($custom);
// find user
$user = get_userdata($user_id);
$blogname = get_option('blogname');
$tran_success = false;
// errors
$errors = array();
// set test status
$ctransaction=($this->status=='test') ? preg_replace('/^TEST_/', '', $_POST['ctransaction']) : $_POST['ctransaction'];
// check
switch (trim($ctransaction)) {
case "user.add" :
case "sale" :
$tran_success = true;
$status_str = __('Last payment was successful','mgm');
// $subject = sprintf(__('[%s] Payment receipt','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 payment was successful and the post you purchased is now available to view.
For more information please contact %4$s','mgm');
// $message = sprintf($message, $blogname, $user->display_name, $user->user_email, $system_obj->setting['admin_email']);
// issue#: 280 (2011 Feb 25)
// 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,
'email'=>$user->user_email,
'admin_email'=>$system_obj->setting['admin_email']), true);
// after succesful payment hook
do_action('mgm_buy_post_transaction_success', array('post_id' => $post_id));// backward compatibility
do_action('mgm_post_purchase_payment_success', array('post_id' => $post_id));// new organized name
break;
case "chargeback" :
case "refund" :
$status_str = __('Last payment was refunded or denied','mgm');
// $subject = sprintf(__('[%s] Payment Failed','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 post purchase failed for the following reason: %4$s.
For more information please contact %5$s.','mgm');
// $message = sprintf($message, $blogname, $user->display_name, $user->user_email, $status_str, $system_obj->setting['admin_email']);
// issue#: 280 (2011 Feb 25)
// 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,
'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 "cancel" :
$reason = 'Unknown';
$status_str = sprintf(__('Last payment is pending. Reason: %s','mgm'), $reason);
// $subject = "[" . $blogname . "] Payment receipt - Status Pending";
// $message = __('This is an automatic notification from %1$s to %2$s (%3$s).
This is a notification to inform you that you payment was received in pending status. Status: %4$s.
For more information please contact %5$s','mgm');
// $message = sprintf($message, $blogname, $user->display_name, $user->user_email, $status_str, $system_obj->setting['admin_email']);
// issue#: 280 (2011 Feb 25)
// 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,
'email'=>$user->user_email, 'reason'=>$status_str,
'admin_email'=>$system_obj->setting['admin_email']), true);
// error
$errors[] = $status_str;
break;
default:
$status_str = sprintf(__('Last payment status: %s','mgm'),$ctransaction);
// $subject = "[$blogname] Payment receipt";
// $message = __('This is an automatic notification from %1$s to %2$s (%3$s).
Status: %4$s.
For more information please contact %5$s','mgm');
// $message = sprintf($message, $blogname, $user->display_name, $user->user_email, $status_str, $system_obj->setting['admin_email']);
// issue#: 280 (2011 Feb 25)
// 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,
'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
// notify user
mgm_mail($user->user_email, $subject, $message); //send an email to the buyer
$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));
}
$table_name = TBL_MGM_POST_PURCHASES;
//if we are looking at a pack then explode the buy post item number and loop through it
if (strpos($post_id, ',') !== false) {
$posts = explode(',', $post_id);
} else {
$posts = array($post_id);
}
$posts = array_unique($posts);
foreach ($posts as $post_id) {
$sql = "INSERT INTO " . $table_name . " (user_id, post_id, unixtime)
VALUES (" . $user_id . ", " . $post_id . ", UNIX_TIMESTAMP())";
$wpdb->query($sql); //insert the post purchased record
}
$status = __('The post was purchased successfully', 'mgm');
}
// transaction status
mgm_update_transaction_status($_REQUEST['custom'], $status, $status_str);
// notify admin, only if gateway emails on
if (!$dge) {
$subject = "[" . $blogname . "] Admin Notification: " . $user->user_email . " purchased post " . $post_id;
$message = "User display name: {$user->display_name}
User email: {$user->user_email}
User ID: {$user->ID}
Status: " . $status . "
Action: Purchase post:" . $subject . "
" . $message . "
" . print_r($_POST, true) . ''; 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())); } } *********************************************************************/ if(!$dge){ $message = 'Could not read membership type in the following POST data. Please debug or contact magic members to fix the problem making sure to pass on the following data.
' . "\n\n" . print_r($_POST, true) . ''; mgm_mail($system_obj->setting['admin_email'], 'Error in Zombaio membership verification', $message); } // on status switch ($member->status) { case MGM_STATUS_ACTIVE: //Sending notification email to user - issue #1468 if($notify_user && $is_registration =='Y'){ $user_pass = mgm_decrypt_password($member->user_password, $user_id); do_action('mgm_register_user_notification', $user_id, $user_pass); } //sending upgrade notifaction email to admin if(isset($subscription_option) && $subscription_option =='upgrade'){ do_action('mgm_user_upgrade_notification', $user_id); } // subject $subject = $system_obj->get_template('payment_success_email_template_subject', array('blogname'=>$blogname), true); // check if ($member->payment_type == 'subscription') { $payment_type = 'recurring subscription'; $subscription = sprintf('%1$s %2$s every %3$s %4$s',$member->amount, $member->currency, $member->duration, $duration_str[$member->duration_type]); } else { $payment_type = 'one-time payment'; $subscription = sprintf('%1$s %2$s for %3$s %4$s',$member->amount, $member->currency, $member->duration, $duration_str[$member->duration_type]); } // body $message = $system_obj->get_template('payment_success_subscription_email_template_body', array('blogname'=>$blogname, 'name'=>$user->display_name, 'email'=>$user->user_email, 'payment_type'=>$payment_type, 'subscription'=>$subscription,'admin_email'=>$system_obj->setting['admin_email']), true); break; case MGM_STATUS_NULL: // subject $subject = $system_obj->get_template('payment_failed_email_template_subject', array('blogname'=>$blogname), true); // message $message = $system_obj->get_template('payment_failed_email_template_body', array('blogname'=>$blogname, 'name'=>$user->display_name, 'email'=>$user->user_email, 'payment_type'=>'subscription payment', 'reason'=>$member->status_str, 'admin_email'=>$system_obj->setting['admin_email']), true); break; case MGM_STATUS_PENDING: // 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, 'email'=>$user->user_email, 'reason'=>$member->status_str, 'admin_email'=>$system_obj->setting['admin_email']), true); break; case MGM_STATUS_ERROR: // subject $subject = $system_obj->get_template('payment_error_email_template_subject', array('blogname'=>$blogname), true); // body $message = $system_obj->get_template('payment_error_email_template_body', array('blogname'=>$blogname, 'name'=>$user->display_name, 'email'=>$user->user_email, 'reason'=>$member->status_str, 'admin_email'=>$system_obj->setting['admin_email']), true); break; } // notify user if(!$dpne) { if($acknowledge_user) { //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); //update as email sent $this->record_payment_email_sent($_REQUEST['extra']); } } // notify admin, only if gateway emails on if (!$dge && $acknowledge_user) { $subject = "[$blogname] {$user->user_email} - {$member->status}"; $message = " User display name: {$user->display_name}\n\n
" . print_r($_POST, true) . ''; // add remarks if(isset($member->extra_remarks)){ $message = str_replace('[remarks]', $member->extra_remarks,$message); }else{ $message = str_replace('[remarks]', '',$message); } // mail mgm_mail($system_obj->setting['admin_email'], $subject, $message); } // 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 = " User display name: {$user->display_name}\n\n
" . print_r($_POST, true) . ''; mgm_mail($system_obj->setting['admin_email'], $subject, $message); } if(!$dge) { $user = get_userdata($user_id); //send notification email to admin: $message = (__('The User: ', 'mgm')). $user->user_email.' ('. $user_id .') '.(__('has upgraded/cancelled subscription.', 'mgm')); $message .= "