Skip to content

Instantly share code, notes, and snippets.

@wpmudev-sls
Last active January 11, 2019 10:30
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/13934eef91d7a57cb90b2b0af61d0be6 to your computer and use it in GitHub Desktop.
Save wpmudev-sls/13934eef91d7a57cb90b2b0af61d0be6 to your computer and use it in GitHub Desktop.
[Membership] - Deny upgrade. Sets all Memberships Upgrade options to Deny
<?php
/**
* Plugin Name: [Membership] - Deny upgrade
* Plugin URI: https://premium.wpmudev.org/
* Description: Sets all Memberships Upgrade options to Deny
* Author: Panos Lyrakis @ WPMUDEV
* Author URI: https://premium.wpmudev.org/
* License: GPLv2 or later
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
if ( ! class_exists( 'WPMUDEV_MS_Deny_Upgrade' ) ) {
class WPMUDEV_MS_Deny_Upgrade {
private static $_instance = null;
public static function get_instance() {
if( is_null( self::$_instance ) ){
self::$_instance = new WPMUDEV_MS_Deny_Upgrade();
}
return self::$_instance;
}
private function __construct() {
if ( ! class_exists( 'MS_Model_Membership' ) ) {
return;
}
add_action( 'admin_footer', array( $this, 'inject' ), 10 );
add_action( 'wp_ajax_wpmudev_set_upgrade_deny', array( $this, 'deny_upgrade_ajax' ), 10 );
}
public function deny_upgrade_ajax() {
check_ajax_referer( 'wpmudev_set_upgrade_deny', 'security' );
if ( ! current_user_can( 'manage_options' ) ) {
$return = array(
'success' => false,
'content' => 'Access denied'
);
wp_send_json($return);
}
$args = array( 'include_guest' => false );
$memberships = MS_Model_Membership::get_memberships( $args );
foreach ( $memberships as $membership ) {
$this->deny_membership_upgardes( $membership, $memberships );
}
$return = array(
'success' => true,
'content' => 'All Memberships Upgrade options have been updated'
);
wp_send_json($return);
}
public function deny_membership_upgardes( $membership, $memberships ) {
$excluded_membership_ids = apply_filters( 'WPMUDEV_MS_Deny_Upgrade/excluded_membership_ids', array() );
$list = array( 'guest' => true ); // So we disable the `Users without Membership can subscribe` option
foreach ( $memberships as $item ) {
if ( $item->id == $membership->id || in_array( $item->id, $excluded_membership_ids ) ) { continue; }
$list[ $item->id ] = true;
}
$list = apply_filters( 'WPMUDEV_MS_Deny_Upgrade/deny_list', $list, $membership );
update_post_meta( $membership->id, 'update_denied', $list );
}
public function inject() {
if ( ! is_callable( 'get_current_screen' ) || 'membership-2_page_membership2-settings' != get_current_screen()->id ) {
return;
}
?>
<script type="text/javascript">
(function($){
$(document).ready(function(){
var ms_deny_btn = $( '<a/>', {
id : 'wpmudev-ms-den-btn',
text : 'Deny Upgrades',
'href': '#'
}),
settings_row = $( '.ms-settings-footer div:eq( 1 )' );
settings_row.append( ' | ' ).append( ms_deny_btn );
ms_deny_btn.on( 'click', function(e){
e.preventDefault();
let confirmed = confirm( 'Are you sure you want to Deny Upgrade option from all Memberships?' );
if ( ! confirmed ) {
return;
}
var data = {
action: 'wpmudev_set_upgrade_deny',
security: '<?php echo wp_create_nonce( "wpmudev_set_upgrade_deny" ); ?>'
};
$.post(ajaxurl, data, function(response) {
if( response.success ){
alert( response.content );
}
else{
alert( response.content );
}
});
});
});
})(jQuery);
</script>
<?php
}
}
if ( ! function_exists( 'wpmudev_ms_deny_upgrade' ) ) {
function wpmudev_ms_deny_upgrade(){
return WPMUDEV_MS_Deny_Upgrade::get_instance();
};
add_action( 'plugins_loaded', 'wpmudev_ms_deny_upgrade', 10 );
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment