2017-06-13 09:45:37 +02:00
< ? php
/**
* General admin functionality .
*
* @ package Members
* @ subpackage Admin
2017-11-15 16:23:10 +01:00
* @ author Justin Tadlock < justintadlock @ gmail . com >
2018-12-04 14:01:14 +01:00
* @ copyright Copyright ( c ) 2009 - 2018 , Justin Tadlock
2017-11-15 16:23:10 +01:00
* @ link https :// themehybrid . com / plugins / members
2017-06-13 09:45:37 +02:00
* @ license http :// www . gnu . org / licenses / old - licenses / gpl - 2.0 . html
*/
# Register scripts/styles.
add_action ( 'admin_enqueue_scripts' , 'members_admin_register_scripts' , 0 );
add_action ( 'admin_enqueue_scripts' , 'members_admin_register_styles' , 0 );
/**
* Get an Underscore JS template .
*
* @ since 1.0 . 0
* @ access public
* @ param string $name
* @ return bool
*/
function members_get_underscore_template ( $name ) {
2017-11-15 16:23:10 +01:00
require_once ( members_plugin () -> dir . " admin/tmpl/ { $name } .php " );
2017-06-13 09:45:37 +02:00
}
/**
* Registers custom plugin scripts .
*
* @ since 1.0 . 0
* @ access public
* @ return void
*/
function members_admin_register_scripts () {
$min = defined ( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min' ;
2017-11-15 16:23:10 +01:00
wp_register_script ( 'members-settings' , members_plugin () -> uri . " js/settings { $min } .js " , array ( 'jquery' ), '' , true );
wp_register_script ( 'members-edit-post' , members_plugin () -> uri . " js/edit-post { $min } .js " , array ( 'jquery' ), '' , true );
wp_register_script ( 'members-edit-role' , members_plugin () -> uri . " js/edit-role { $min } .js " , array ( 'postbox' , 'wp-util' ), '' , true );
2017-06-13 09:45:37 +02:00
// Localize our script with some text we want to pass in.
$i18n = array (
'button_role_edit' => esc_html__ ( 'Edit' , 'members' ),
'button_role_ok' => esc_html__ ( 'OK' , 'members' ),
'label_grant_cap' => esc_html__ ( 'Grant %s capability' , 'members' ),
'label_deny_cap' => esc_html__ ( 'Deny %s capability' , 'members' ),
2017-11-15 16:23:10 +01:00
'ays_delete_role' => esc_html__ ( 'Are you sure you want to delete this role? This is a permanent action and cannot be undone.' , 'members' ),
'hidden_caps' => members_get_hidden_caps ()
2017-06-13 09:45:37 +02:00
);
wp_localize_script ( 'members-edit-role' , 'members_i18n' , $i18n );
}
/**
* Registers custom plugin scripts .
*
* @ since 1.0 . 0
* @ access public
* @ return void
*/
function members_admin_register_styles () {
$min = defined ( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min' ;
2017-11-15 16:23:10 +01:00
wp_register_style ( 'members-admin' , members_plugin () -> uri . " css/admin { $min } .css " );
2017-06-13 09:45:37 +02:00
}
/**
* Function for safely deleting a role and transferring the deleted role ' s users to the default
* role . Note that this function can be extremely intensive . Whenever a role is deleted , it ' s
* best for the site admin to assign the user ' s of the role to a different role beforehand .
*
* @ since 0.2 . 0
* @ access public
* @ param string $role
* @ return void
*/
function members_delete_role ( $role ) {
// Get the default role.
$default_role = get_option ( 'default_role' );
// Don't delete the default role. Site admins should change the default before attempting to delete the role.
if ( $role == $default_role )
return ;
// Get all users with the role to be deleted.
$users = get_users ( array ( 'role' => $role ) );
// Check if there are any users with the role we're deleting.
if ( is_array ( $users ) ) {
// If users are found, loop through them.
foreach ( $users as $user ) {
// If the user has the role and no other roles, set their role to the default.
if ( $user -> has_cap ( $role ) && 1 >= count ( $user -> roles ) )
$user -> set_role ( $default_role );
// Else, remove the role.
else if ( $user -> has_cap ( $role ) )
$user -> remove_role ( $role );
}
}
// Remove the role.
remove_role ( $role );
// Remove the role from the role factory.
2017-11-15 16:23:10 +01:00
members_unregister_role ( $role );
2017-06-13 09:45:37 +02:00
}
/**
* Returns an array of all the user meta keys in the $wpdb -> usermeta table .
*
* @ since 0.2 . 0
* @ access public
* @ global object $wpdb
* @ return array
*/
function members_get_user_meta_keys () {
global $wpdb ;
return $wpdb -> get_col ( " SELECT meta_key FROM $wpdb->usermeta GROUP BY meta_key ORDER BY meta_key " );
}
2021-08-04 17:09:29 +02:00
add_action ( 'admin_enqueue_scripts' , 'members_add_pointers' );
/**
* Adds helper pointers to the admin
*
* @ return void
*/
function members_add_pointers () {
$pointers = apply_filters ( 'members_admin_pointers' , array () );
if ( empty ( $pointers ) ) {
return ;
}
// Get dismissed pointers
$dismissed = explode ( ',' , ( string ) get_user_meta ( get_current_user_id (), 'dismissed_wp_pointers' , true ) );
$valid_pointers = array ();
// Check pointers and remove dismissed ones.
foreach ( $pointers as $pointer_id => $pointer ) {
// Sanity check
if ( in_array ( $pointer_id , $dismissed ) || empty ( $pointer ) || empty ( $pointer_id ) || empty ( $pointer [ 'target' ] ) || empty ( $pointer [ 'options' ] ) ) {
continue ;
}
$pointer [ 'pointer_id' ] = $pointer_id ;
$valid_pointers [ 'pointers' ][] = $pointer ;
}
if ( empty ( $valid_pointers ) ) {
return ;
}
wp_enqueue_style ( 'wp-pointer' );
wp_enqueue_script ( 'members-pointers' , members_plugin () -> uri . '/js/members-pointers.min.js' , array ( 'wp-pointer' ) );
wp_localize_script ( 'members-pointers' , 'membersPointers' , $valid_pointers );
}
add_action ( 'in_admin_header' , 'members_admin_header' , 0 );
/**
* Branded header
*
* @ return void
*/
function members_admin_header () {
if ( defined ( 'MEPR_PLUGIN_SLUG' ) || empty ( $_GET [ 'page' ] ) || ! in_array ( $_GET [ 'page' ], array ( 'roles' , 'members' , 'members-settings' , 'members-about' ) ) ) {
return ;
}
$dismissed = get_option ( 'members_dismiss_upgrade_header' , false );
if ( ! empty ( $dismissed ) ) {
return ;
}
?>
< div class = " members-upgrade-header " id = " members-upgrade-header " >
< span id = " close-members-upgrade-header " > X </ span >
< ? php _e ( 'You\'re using Members. To unlock more features, consider <a href="https://memberpress.com/plans/pricing/?utm_source=members&utm_medium=link&utm_campaign=in_plugin&utm_content=pro_features">upgrading to MemberPress.</a>' ); ?>
</ div >
< div id = " members-admin-header " >< img class = " members-logo " src = " <?php echo members_plugin()->uri . 'img/Members-header.svg'; ?> " /></ div >
< script >
jQuery ( document ) . ready ( function ( $ ) {
$ ( '#close-members-upgrade-header' ) . click ( function ( event ) {
var upgradeHeader = $ ( '#members-upgrade-header' );
upgradeHeader . fadeOut ();
$ . ajax ({
url : ajaxurl ,
type : 'POST' ,
data : {
action : 'members_dismiss_upgrade_header' ,
nonce : " <?php echo wp_create_nonce( 'members_dismiss_upgrade_header' ); ?> "
},
})
. done ( function () {
console . log ( " success " );
})
. fail ( function () {
console . log ( " error " );
})
. always ( function () {
console . log ( " complete " );
});
});
});
</ script >
< ? php
}
add_action ( 'wp_ajax_members_dismiss_upgrade_header' , 'members_dismiss_upgrade_header' );
/**
* Dismisses the Members upgrade header bar .
*
* @ return void
*/
function members_dismiss_upgrade_header () {
// Security check
if ( empty ( $_POST [ 'nonce' ] ) || ! wp_verify_nonce ( $_POST [ 'nonce' ], 'members_dismiss_upgrade_header' ) ) {
die ();
}
update_option ( 'members_dismiss_upgrade_header' , true );
}