Last active
June 4, 2018 20:11
-
-
Save pbrocks/75683877816e9d6e456950cb76620bd9 to your computer and use it in GitHub Desktop.
Use this recipe to reset your site's PMPro Better Logins and Views Report data. With this we are only resetting the views and logins, not removing any other membership data.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Add this code to your PMPro Customizations Plugin - For more info on this visit: | |
* https://www.paidmembershipspro.com/create-a-plugin-for-pmpro-customizations/ | |
*/ | |
/** | |
* Create a menu to give us a place to perform the reset. I'm choosing a Dashboard menu purely for ease of access. | |
*/ | |
add_action( 'admin_menu', 'blr_reset_views_admin_page' ); | |
function blr_reset_views_admin_page() { | |
global $reset_views_settings; | |
$reset_views_settings = add_dashboard_page( | |
__( 'Reset Views', 'paid-memberships-pro' ), | |
__( 'Reset Views', 'paid-memberships-pro' ), | |
'manage_options', | |
'reset-views.php', | |
'blr_reset_views_render_admin' | |
); | |
} | |
/** | |
* This function is tied to the one above and provides the content for the dashboard page. | |
* | |
* @return null | |
*/ | |
function blr_reset_views_render_admin() { | |
global $pmpro_reports, $wpdb; | |
?> | |
<div class="wrap"> | |
<h2> | |
<?php | |
esc_attr_e( 'PMPro Reset Views', 'paid-memberships-pro' ); | |
?> | |
</h2> | |
<div style="padding: 2rem 0;"> | |
<h2> | |
<?php | |
esc_attr_e( 'Reset Views Ajax', 'paid-memberships-pro' ); | |
$some_meta_for_user = blr_reset_save_user_views_function(); | |
// $some_meta_for_user = get_transient( 'views_to_be_deleted' ); | |
// $some_meta_for_user = ''; | |
?> | |
</h2> | |
<h4 id="reset-views-results">Tick the box if you wish to reset your PMPro views.</h4> | |
<form id="reset-views-form" method="get" style="padding:inline-block;" action="<?php echo admin_url(); ?>"> | |
<div style="float:left;"><label for="deleting"> I am sure I want to reset my PMPro views. <input type="checkbox" name="pmproresetviews" id="pmproresetviews" value="1"></label></div> | |
<div style="float:left;display:none;" id="reset-views-button"><button type="submit" name="reset-views-submit" id="reset-views-submit" value="true" class="button-primary"><?php esc_attr_e( 'Reset Views', 'reset-views' ); ?></button></div><br> | |
</form> | |
</div> | |
<hr> | |
<h3>If PMPro Views has data, it will show below.</h3> | |
<?php | |
if ( ! empty( $some_meta_for_user ) ) { | |
echo '<pre>'; | |
print_r( $some_meta_for_user ); | |
echo '</pre>'; | |
} else { | |
echo '<h3>No data yet.</h3>'; | |
} | |
/* | |
?> | |
<?php pmpro_report_better_login_page(); | |
*/ | |
?> | |
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> | |
<script type="text/javascript"> | |
var deleting = $('#pmproresetviews'); | |
var reset = $('#reset-views-button'); | |
var notice = $('#reset-views-results'); | |
deleting.on('click', function() { | |
if (deleting.is(':checked')) { | |
notice.text('Thank you.'); | |
reset.css( "display", "block" ); | |
} else { | |
notice.text('Please tick the box if you want to continue.'); | |
reset.css( "display", "none" ); | |
} | |
}); | |
</script> | |
</div> | |
<?php | |
} | |
add_filter( | |
'plugin_action_links_pmpro-better-logins-report/pmpro-better-logins-report.php', 'blr_reset_add_action_links' | |
); | |
/** | |
* blr_reset_add_action_links adds a link below the Better Logins Views Report Add On | |
*/ | |
function blr_reset_add_action_links( $links ) { | |
$new_links = array( | |
'<a href="' . get_admin_url( null, '/index.php?page=reset-views.php' ) . '">Reset Data</a>', | |
); | |
return array_merge( $new_links, $links ); | |
} | |
add_action( 'init', 'blr_reset_views_function' ); | |
function blr_reset_views_function() { | |
if ( ! empty( $_REQUEST['pmproresetviews'] ) && current_user_can( 'manage_options' ) ) { | |
$users = get_users(); | |
foreach ( $users as $key => $user ) { | |
if ( ! empty( get_user_meta( $user->ID, 'pmpro_logins' )[0] ) ) { | |
delete_user_meta( $user->ID, 'pmpro_logins' ); | |
} | |
if ( ! empty( get_user_meta( $user->ID, 'pmpro_views' )[0] ) ) { | |
delete_user_meta( $user->ID, 'pmpro_views' ); | |
} | |
if ( ! empty( get_user_meta( $user->ID, 'pmpro_visits' )[0] ) ) { | |
delete_user_meta( $user->ID, 'pmpro_visits' ); | |
} | |
} | |
echo '<h3>All View data reset.</h3>'; | |
wp_redirect( get_admin_url( null, '/index.php?page=reset-views.php' ) ); | |
wp_die(); | |
} | |
} | |
/** | |
* blr_reset_save_user_views_function is somewhat of a fail-safe in that this function | |
* grabs the current data which will be reset and places it in a transient. This data | |
* can be used to restore for a limited time after the reset. | |
* | |
* @return [type] [description] | |
*/ | |
function blr_reset_save_user_views_function() { | |
$users = get_users(); | |
foreach ( $users as $key => $user ) { | |
if ( ! empty( get_user_meta( $user->ID, 'pmpro_logins' )[0] ) ) { | |
$some_meta_for_user[ $key ]['pmpro_logins'] = get_user_meta( $user->ID, 'pmpro_logins' )[0]; | |
} | |
if ( ! empty( get_user_meta( $user->ID, 'pmpro_views' )[0] ) ) { | |
$some_meta_for_user[ $key ]['pmpro_views'] = get_user_meta( $user->ID, 'pmpro_views' )[0]; | |
} | |
if ( ! empty( get_user_meta( $user->ID, 'pmpro_visits' )[0] ) ) { | |
$some_meta_for_user[ $key ]['pmpro_visits'] = get_user_meta( $user->ID, 'pmpro_visits' )[0]; | |
} | |
} | |
if ( ! empty( $some_meta_for_user ) ) { | |
set_transient( 'views_to_be_deleted', $some_meta_for_user ); | |
} | |
return $some_meta_for_user; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment