| Server IP : 39.106.62.82 / Your IP : 216.73.216.110 Web Server : nginx/1.14.1 System : Linux iz2ze1m0zmp2dk5c3j5ap5z 3.10.0-1127.19.1.el7.x86_64 #1 SMP Tue Aug 25 17:23:54 UTC 2020 x86_64 User : www ( 1000) PHP Version : 7.4.33 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 : ON | Sudo : ON | Pkexec : ON Directory : /webdata/gohomesh.com/wp-content/plugins/members/admin/ |
Upload File : |
<?php
/**
* Edit Capabilities tab section on the edit/new role screen.
*
* @package Members
* @subpackage Admin
* @author Justin Tadlock <justintadlock@gmail.com>
* @copyright Copyright (c) 2009 - 2018, Justin Tadlock
* @link https://themehybrid.com/plugins/members
* @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*/
namespace Members\Admin;
/**
* Handles building the edit caps tabs.
*
* @since 2.0.0
* @access public
*/
final class Cap_Tabs {
/**
* The role object that we're creating tabs for.
*
* @since 2.0.0
* @access public
* @var object
*/
public $role;
/**
* Array of caps shown by the cap tabs.
*
* @since 2.0.0
* @access public
* @var array
*/
public $added_caps = array();
/**
* The caps the role has. Note that if this is a new role (new role screen), the default
* new role caps will be passed in.
*
* @since 2.0.0
* @access public
* @var array
*/
public $has_caps = array();
/**
* Array of tab sections.
*
* @since 2.0.0
* @access public
* @var array
*/
public $sections = array();
/**
* Array of single cap controls.
*
* @since 2.0.0
* @access public
* @var array
*/
public $controls = array();
/**
* Array of section json data.
*
* @since 2.0.0
* @access public
* @var array
*/
public $sections_json = array();
/**
* Array of control json data.
*
* @since 2.0.0
* @access public
* @var array
*/
public $controls_json = array();
/**
* Sets up the cap tabs.
*
* @since 2.0.0
* @access public
* @param string $role
* @param array $has_caps
* @return void
*/
public function __construct( $role = '', $has_caps = array() ) {
// Check if there were explicit caps passed in.
if ( $has_caps )
$this->has_caps = $has_caps;
// Check if we have a role.
if ( $role ) {
$this->role = members_get_role( $role );
// If no explicit caps were passed in, use the role's caps.
if ( ! $has_caps )
$this->has_caps = $this->role->caps;
}
// Add sections and controls.
$this->register();
// Print custom JS in the footer.
add_action( 'admin_footer', array( $this, 'localize_scripts' ), 0 );
add_action( 'admin_footer', array( $this, 'print_templates' ) );
}
/**
* Registers the sections (and each section's controls) that will be used for
* the tab content.
*
* @since 2.0.0
* @access public
* @return void
*/
public function register() {
// Hook before registering.
do_action( 'members_pre_edit_caps_manager_register' );
$groups = members_get_cap_groups();
uasort( $groups, 'members_priority_sort' );
// Get and loop through the available capability groups.
foreach ( $groups as $group ) {
$caps = $group->caps;
// Remove added caps.
if ( $group->diff_added )
$caps = array_diff( $group->caps, $this->added_caps );
// Add group's caps to the added caps array.
$this->added_caps = array_unique( array_merge( $this->added_caps, $caps ) );
// Create a new section.
$this->sections[] = $section = new Cap_Section( $this, $group->name, array( 'icon' => $group->icon, 'label' => $group->label ) );
// Get the section json data.
$this->sections_json[] = $section->json();
// Create new controls for each cap.
foreach ( $caps as $cap ) {
$this->controls[] = $control = new Cap_Control( $this, $cap, array( 'section' => $group->name ) );
// Get the control json data.
$this->controls_json[] = $control->json();
}
}
// Create a new "All" section.
$this->sections[] = $section = new Cap_Section( $this, 'all', array( 'icon' => 'dashicons-plus', 'label' => esc_html__( 'All', 'members' ) ) );
// Get the section json data.
$this->sections_json[] = $section->json();
// Create new controls for each cap.
foreach ( $this->added_caps as $cap ) {
$this->controls[] = $control = new Cap_Control( $this, $cap, array( 'section' => 'all' ) );
// Get the control json data.
$this->controls_json[] = $control->json();
}
// Hook after registering.
do_action( 'members_edit_caps_manager_register' );
}
/**
* Displays the cap tabs.
*
* @since 2.0.0
* @access public
* @return void
*/
public function display() { ?>
<div id="tabcapsdiv" class="postbox">
<h2 class="hndle"><?php printf( esc_html__( 'Edit Capabilities: %s', 'members' ), '<span class="members-which-tab"></span>' ); ?></h2>
<div class="inside">
<div class="members-cap-tabs">
<?php $this->tab_nav(); ?>
<div class="members-tab-wrap"></div>
</div><!-- .members-cap-tabs -->
</div><!-- .inside -->
</div><!-- .postbox -->
<?php }
/**
* Outputs the tab nav.
*
* @since 2.0.0
* @access public
* @return void
*/
public function tab_nav() { ?>
<ul class="members-tab-nav">
<?php foreach ( $this->sections as $section ) : ?>
<?php $icon = preg_match( '/dashicons-/', $section->icon ) ? sprintf( 'dashicons %s', sanitize_html_class( $section->icon ) ) : esc_attr( $section->icon ); ?>
<li class="members-tab-title">
<a href="<?php echo esc_attr( "#members-tab-{$section->section}" ); ?>"><i class="<?php echo $icon; ?>"></i> <span class="label"><?php echo esc_html( $section->label ); ?></span></a>
</li>
<?php endforeach; ?>
</ul><!-- .members-tab-nav -->
<?php }
/**
* Passes our sections and controls data as json to the `edit-role.js` file.
*
* @since 2.0.0
* @access public
* @return void
*/
public function localize_scripts() {
wp_localize_script( 'members-edit-role', 'members_sections', $this->sections_json );
wp_localize_script( 'members-edit-role', 'members_controls', $this->controls_json );
}
/**
* Outputs the Underscore JS templates.
*
* @since 2.0.0
* @access public
* @return void
*/
public function print_templates() { ?>
<script type="text/html" id="tmpl-members-cap-section">
<?php members_get_underscore_template( 'cap-section' ); ?>
</script>
<script type="text/html" id="tmpl-members-cap-control">
<?php members_get_underscore_template( 'cap-control' ); ?>
</script>
<?php }
}