Skip to content

Instantly share code, notes, and snippets.

@wpmudev-sls
Last active August 18, 2017 14:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wpmudev-sls/b91f0fc5c4e5f5bad8e472e633ecae96 to your computer and use it in GitHub Desktop.
Save wpmudev-sls/b91f0fc5c4e5f5bad8e472e633ecae96 to your computer and use it in GitHub Desktop.
[Membership 2 Pro] - Forces Pending status to new subscription made from admin
<?php
/*
Plugin Name: Membership - Force Pending status
Plugin URI: https://premium.wpmudev.org/
Description: Forces Pending status to new subscription made from admin
Author: Panos Lyrakis @ WPMUDEV
Author URI: https://premium.wpmudev.org/
License: GPLv2 or later
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
if ( ! class_exists( 'WPMUDEV_MS_Force_Pending' ) ) {
class WPMUDEV_MS_Force_Pending {
private static $_instance = null;
public static function get_instance() {
if( is_null( self::$_instance ) ){
self::$_instance = new WPMUDEV_MS_Force_Pending();
}
return self::$_instance;
}
public function __construct() {
add_action( 'ms_model_member_add_membership', array( $this, 'update_subscription_status' ), 10, 5 );
add_action( 'ms_model_relationship_handle_status_change_after', array( $this, 'send_notification' ), 10, 2 );
//add_action( 'ms_model_relationship_handle_status_change_after', array( $this, 'update_subscription_status' ), 10, 2 );
}
public function update_subscription_status( $subscription, $membership_id, $gateway_id, $move_from_id, $MS_Model_Member ){
global $pagenow;
if( ! is_admin() || $pagenow != 'admin.php' || ! isset( $_GET['page'] ) || $_GET['page'] != 'membership2-add-member' ){
return $subscription;
}
$data = $_POST;
if( empty( $data ) ||
! isset( $data['action'] ) || $data['action'] != 'member_subscription' ||
! isset( $data['user_id'] ) || ! is_numeric( $data['user_id'] ) ){
return $subscription;
}
//$membership_ids = isset( $data['subscribe'] ) && is_array( $data['subscribe'] ) ? $data['subscribe'] : false;
if( ! $data['subscribe'] || empty( $data['subscribe'] ) ){
return $subscription;
}
//$membership = MS_Factory::load( 'MS_Model_Membership', intval( $membership_id ) );
$subscription->handle_status_change( MS_Model_Relationship::STATUS_PENDING );
return $subscription;
}
public static function send_notification( $status, $subscription ){
global $pagenow;
if( ! is_admin() || $pagenow != 'admin.php' || ! isset( $_GET['page'] ) || $_GET['page'] != 'membership2-add-member' ){
return;
}
$data = $_POST;
if( empty( $data ) ||
! isset( $data['action'] ) || $data['action'] != 'member_subscription' ||
! isset( $data['user_id'] ) || ! is_numeric( $data['user_id'] ) ){
return;
}
if( ! $data['subscribe'] || empty( $data['subscribe'] ) ){
return;
}
$membership = MS_Factory::load( 'MS_Model_Membership', intval( $subscription->membership_id ) );
$user_id = absint( $data['user_id'] );
$user = MS_Factory::load( 'MS_Model_Member', $user_id );
$blog_title = get_bloginfo( 'name' );
$blog_email = get_bloginfo( 'admin_email' );
$checkout_url = MS_Model_Pages::get_page_url( MS_Model_Pages::MS_PAGE_MEMBERSHIPS ). '?step=payment_tablemembership_id=' . $subscription->membership_id;
$notification_subject = "You have a new Pending membership!";
$notification_body = "<p>Hi {$user->name}!</p>";
$notification_body .= "<p>You have a new subscription on {$blog_title} for membership <srong>{$membership->name}</strong> which is currently pending</p>";
$notification_body .= "<p>Please follow this <a href='{$checkout_url}'>activation link</a> in order to activate the subscription</p>";
$notification_body .= "<p>The {$blog_title} team</p>";
//$headers = array("Content-Type: text/html; charset=UTF-8","From: {$blog_title} <{$blog_email}>");
wp_mail( $user->email, $notification_subject, $notification_body );
}
}
add_action( 'plugins_loaded', function(){
$GLOBALS['WPMUDEV_MS_Force_Pending'] = WPMUDEV_MS_Force_Pending::get_instance();
}, 10 );
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment