dir . "admin/tmpl/{$name}.php" ); } /** * Registers custom plugin scripts. * * @since 1.0.0 * @access public * @return void */ function members_admin_register_scripts() { $min = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min'; $settings_file = members_plugin()->dir . "js/settings{$min}.js"; $settings_ver = file_exists( $settings_file ) ? filemtime( $settings_file ) : false; wp_register_script( 'members-settings', members_plugin()->uri . "js/settings{$min}.js", array( 'jquery' ), $settings_ver, true ); $edit_post_file = members_plugin()->dir . "js/edit-post{$min}.js"; $edit_post_ver = file_exists( $edit_post_file ) ? filemtime( $edit_post_file ) : false; wp_register_script( 'members-edit-post', members_plugin()->uri . "js/edit-post{$min}.js", array( 'jquery' ), $edit_post_ver, true ); $edit_role_file = members_plugin()->dir . "js/edit-role{$min}.js"; $edit_role_ver = file_exists( $edit_role_file ) ? filemtime( $edit_role_file ) : false; wp_register_script( 'members-edit-role', members_plugin()->uri . "js/edit-role{$min}.js", array( 'postbox', 'wp-util' ), $edit_role_ver, true ); // 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' ), '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(), ); 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'; wp_register_style( 'members-admin', members_plugin()->uri . "css/admin{$min}.css" ); } /** * 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 ); // Stop tracking as Members-created (if it was). members_untrack_created_role( $role ); // Remove the role from the role factory. members_unregister_role( $role ); } /** * 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" ); } /** * Check whether the MemberPress plugin is active. * * @return boolean */ function members_is_memberpress_active() { return defined( 'MEPR_PLUGIN_SLUG' ); } 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 ( members_is_memberpress_active() || empty( $_GET['page'] ) || ! in_array( $_GET['page'], array( 'roles', 'members', 'members-settings', 'members-about', 'members-payments', 'members-growth-tools' ) ) ) { return; } $dismissed = get_option( 'members_dismiss_upgrade_header', false ); ?>
X adding MemberPress.' ); ?>
by
id ) || ! members_is_admin_page() ) { return; } $links = array( array( 'url' => 'https://wordpress.org/support/plugin/members/', 'text' => __('Support', 'members'), 'target' => '_blank' ), array( 'url' => 'https://members-plugin.com/', 'text' => __( 'Docs', 'members' ), 'target' => '_blank' ), array( 'url' => '/wp-admin/admin.php?page=members-about', 'text' => __( 'About Us', 'members' ), 'target' => '_blank' ) ); $title = __( 'Made with ♥ by the MemberPress Team', 'members' ); require_once( members_plugin()->dir . 'admin/views/promotion.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(); } if ( ! current_user_can( 'manage_options' ) ) { wp_send_json_error( array( 'msg' => esc_html__( 'You are not allowed to make these changes.', 'members' ) ) ); } update_option( 'members_dismiss_upgrade_header', true ); } /** * Conditional to check whether we're on a Members admin page. * * @return boolean */ function members_is_admin_page() { $screen = get_current_screen(); if ( ! empty( $screen->id ) && ! empty( Members\Admin\Settings_Page::get_instance()->admin_pages ) && in_array( $screen->id, Members\Admin\Settings_Page::get_instance()->admin_pages ) ) { return true; } // Fallback: pages registered outside Settings_Page (e.g. the Growth Tools // submenu is registered by the caseproof/growth-tools composer package). if ( ! empty( $_GET['page'] ) && in_array( $_GET['page'], array( 'roles', 'members', 'members-settings', 'members-about', 'members-payments', 'members-growth-tools' ), true ) ) { return true; } return false; }