403Webshell
Server IP : 39.106.62.82  /  Your IP : 216.73.216.48
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/role-manager/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /webdata/gohomesh.com/wp-content/plugins/role-manager/role-management.php
<?php
class RoleManager {
  var $file_basename;   /* under wp-content/plugins */
  var $manage_roles_uri;

  /**
   * the constructor
   * R23
   * @param str $path_file
   * @return RoleManager
   */
  function RoleManager($path_file='') {
    global $wp_db_version, $iwg_rolemanagement;
  	$this->file_basename = basename(__FILE__);
    $this->manage_roles_uri = get_settings('siteurl') . '/wp-admin/'.$path_file.'?page=' . $this->file_basename;
  }

   /**
    * handle cap-changes on a single role
    * R22
    */
  function handle_role_changes() {
    global $wp_roles, $current_user, $iwg_rolemanagement;
    // Handle cap-changes on a single role
    if (empty($_POST['role'])) {
      $iwg_rolemanagement->error_number = 1000;
      $iwg_rolemanagement->handle_error();
    }
    $role = $iwg_rolemanagement->check_input($_POST['role'], null, false, false, true);
    if ( !$role ) {
      $iwg_rolemanagement->error_number += 1000;
      $iwg_rolemanagement->handle_error();
    }
    if (empty($_POST['cap'])) {
      $iwg_rolemanagement->error_number = 2000;
      $iwg_rolemanagement->handle_error();
    }
    $cap = $iwg_rolemanagement->check_input($_POST['cap'], 'int_cap', true);
    if ( !$cap ) {
	    $iwg_rolemanagement->error_number += 2000;
			$iwg_rolemanagement->handle_error();
    }
    if ( ! $iwg_rolemanagement->capmanager->cap_exists($cap) ) {
    	$iwg_rolemanagement->error_number = 2010;
    	$iwg_rolemanagement->handle_error();
    }
    $iwg_rolemanagement->check_admin_ref('iwg_rolemanager_edit_cap_on_role_'.$role.'_'.$cap);

    /*
     * need this check here for users with javascript switched off,
     * if javascript is on the check run before submit and no data aer submitted
     */
     if( ($cap == $iwg_rolemanagement->neededcap && in_array($role, $current_user->roles)) ||
         ($cap == 'edit_users' && in_array($role, $current_user->roles)) ) {
       $iwg_rolemanagement->error_number = 9001;
       $iwg_rolemanagement->handle_error();
     }

    if ($_POST['grant'] == 1) {
      $wp_roles->add_cap($role, $cap, true);
    } else {
      $wp_roles->remove_cap($role, $cap);
    }

    //Redirect them away
    if (isset($_POST['ajax'])) {
      $changed = addslashes($_POST['grant'] ? __('Capability granted', 'role-manager') : __('Capability denied', 'role-manager'));
      die('toggleCap("btn_' . $role . '__' . $cap . '");
        setMessage("' . $changed . '");
        ');
    } else {
      $changed = ($_POST['grant'] ? 'granted' : 'denied') . '=' . $role;
      header('Location: ' . $this->manage_roles_uri . '&' . $changed);
    }
  }
   
	 /**
	  * handle the creation of a new role
	  * R22 
	  */
	 function handle_new_role_creation() {
    global $wp_roles, $iwg_rolemanagement;

    $iwg_rolemanagement->check_admin_ref('iwg_rolemanager_create_new_role');

    // experimental for wp-mu
		// s. http://www.im-web-gefunden.de/wordpress-plugins/role-manager/#comment-6722
		if ( ! isset($wp_roles) ) {
			$wp_roles = new WP_Roles();
		}
		// end of experimental for wp-mu
    $this->_add_new_role();
    header('Location: ' . $this->manage_roles_uri . '&new-role=true');
  }

	 /**
	  * show the form to rename a role
	  * R22
	  * @param str $role
	  */
	 function rename_role_form($role) {
    global $wp_roles, $iwg_rolemanagement;
    $iwg_rolemanagement->check_admin_ref('iwg_rolemanager_rename_role_form_'.$role);

    // no: underscore, space
    // yes: minus
    $role_name = $iwg_rolemanagement->check_input($role, null, false, false, true);
    if ( !$role_name ) {
      $iwg_rolemanagement->error_number += 1000;
      $iwg_rolemanagement->handle_error();
    }

    ?>
    <div class="wrap">
      <h2><?php _e('Rename Role', 'role-manager'); ?> '<?php echo $wp_roles->role_names[$role_name]; ?>'</h2>
      <form method="post" class="role-manager" action="<?php echo $this->manage_roles_uri; ?>">
        <input type="hidden" name="action" value="rename" />
        <input type="hidden" name="role" value="<?php echo $role; ?>" />
        <label for="role-name"><?php _e('New Name:', 'role-manager'); ?>
        <input type="text" name="role-name" id="role-name" value="<?php echo $wp_roles->role_names[$role_name]; ?>" />
        </label>
        <?php $iwg_rolemanagement->nonce_field('iwg_rolemanager_rename_role_'.$role_name); ?>
        <input type="submit" value="<?php _e('Rename Role', 'role-manager'); ?>" />
      </form>
    </div>
    <?php
  }
  
  /**
   * handle rename of a given role
   * R22
   * @param str $role
   */
  function rename_role($role) {
    global $wp_roles, $wpdb, $iwg_rolemanagement;

    if ($_POST['role-name']) {
      $iwg_rolemanagement->check_admin_ref('iwg_rolemanager_rename_role_'.$role);
      $old_role_name = $iwg_rolemanagement->check_input($role, null, false, false, true);
      $new_role_name = $iwg_rolemanagement->check_input($_POST['role-name'], null, false, true);
      if ( !$old_role_name || !$new_role_name ) {
        $iwg_rolemanagement->error_number += 1000;
        $iwg_rolemanagement->handle_error();
      }

      $roletitle = sanitize_title($new_role_name);

      if ( $roletitle != $old_role_name ) {
        if ( $wp_roles->is_role($roletitle) ) {
          $iwg_rolemanagement->error_number = 1010;
          $iwg_rolemanagement->handle_error($roletitle);
        }
        // check if a capability with this name exists
        if ( $iwg_rolemanagement->already_exists($roletitle, 'role') ) {
          $iwg_rolemanagement->handle_error($roletitle);
        }
        $oldrole = $wp_roles->get_role($old_role_name);
        $wp_roles->add_role($roletitle, stripslashes($new_role_name), $oldrole->capabilities);
        //$this->debug('before', $wp_roles);

        $uids_with_role = $iwg_rolemanagement->get_all_userids_with_role($old_role_name);
        if ( count($uids_with_role) > 0 ) {
          foreach ($uids_with_role as $id) {
            $user = new WP_User($id);
            $user->roles = $iwg_rolemanagement->fill_array_keys_with_true( $user->roles );
            $user->add_role($roletitle);
            // Bug in capabilities.php, WP_User::get_role_caps(), Start at Line 176
            // this->roles has [0]=admin and should be [admin]=true
            // wrong form comes from array_keys($this->caps) at line 176
            $user->roles = $iwg_rolemanagement->fill_array_keys_with_true( $user->roles );
            $user->remove_role($old_role_name);
          }
        }
        $wp_roles->remove_role($old_role_name);
        header('Location: ' . $this->manage_roles_uri . '&role-renamed=true');
      }
      header('Location: ' . $this->manage_roles_uri);
    }
  }

	 /**
	  * show the form to copy a role
	  * R22
	  * @param str $role
	  */
	 function copy_role_form($role) {
    global $wp_roles, $iwg_rolemanagement;
    $iwg_rolemanagement->check_admin_ref('iwg_rolemanager_copy_role_form_'.$role);

    // no: underscore, space
    // yes: minus
    $role_name = $iwg_rolemanagement->check_input($role, null, false, false, true);
    if ( !$role_name ) {
      $iwg_rolemanagement->error_number += 1000;
      $iwg_rolemanagement->handle_error();
    }
    $orig_role = $wp_roles->get_role($role);

    ?>
    <div class="wrap">
      <h2><?php _e('Copy Role', 'role-manager'); ?> '<?php echo $wp_roles->role_names[$role_name]; ?>'</h2>
      <form method="post" class="role-manager" action="<?php echo $this->manage_roles_uri; ?>">
        <input type="hidden" name="action" value="copy" />
        <input type="hidden" name="role" value="<?php echo $role; ?>" />
        <label for="role-name"><?php _e('New Name:', 'role-manager'); ?>
        <input type="text" name="role-name" id="role-name" value="<?php echo __('Copy of', 'role-manager')." ".$wp_roles->role_names[$role_name]; ?>" />
        </label>
        <label><?php _e('Capabilities to be included:', 'role-manager'); ?></label>
        <fieldset>
        <?php foreach ($iwg_rolemanagement->get_cap_list(true) as $cap) { 
          $checked = $orig_role->has_cap($cap) ? 'checked="checked"' : '';?>
        <label for="cap-<?php echo $cap; ?>" class="cap-label">
        <input type="checkbox" name="caps[<?php echo $cap; ?>]" id="cap-<?php echo $cap."\" ".$checked; ?>" />
        <?php echo $iwg_rolemanagement->capmanager->get_cap_name($cap); ?></label>
        <?php } ?>
        </fieldest>
        
        <?php $iwg_rolemanagement->nonce_field('iwg_rolemanager_copy_role_'.$role_name); ?>
        <input type="submit" value="<?php _e('Copy Role', 'role-manager'); ?>" />
      </form>
    </div>
    <?php
  }
  
  /**
   * handle copy of a given role
   * R22
   * @param str $role
   */
  function copy_role($role) {
    global $wp_roles, $wpdb, $iwg_rolemanagement;

    if ($_POST['role-name']) {
      $iwg_rolemanagement->check_admin_ref('iwg_rolemanager_copy_role_'.$role);
      $this->_add_new_role();
      header('Location: ' . $this->manage_roles_uri . '&role-copied=true');
      //header('Location: ' . $this->manage_roles_uri);
    }
  }
  
  /**
   * show the form to delete a given role
   * R22
   * @param str $role
   */
  function delete_role_form($role) {
    global $wp_roles, $iwg_rolemanagement;
    $iwg_rolemanagement->check_admin_ref('iwg_rolemanger_delete_role_form_'.$role);

    // no: underscore, space
    // yes: minus
    $role_name = $iwg_rolemanagement->check_input($role, null, false, false, true);
    if ( !$role_name ) {
      $iwg_rolemanagement->error_number += 1000;
      $iwg_rolemanagement->handle_error();
    }
    ?>
    <div class="wrap">
      <h2><?php _e('Delete Role', 'role-manager'); ?> '<?php echo $wp_roles->role_names[$role_name]; ?>'</h2>
      <p><?php echo __('All users with this role will have it removed, and they will lose all capabilities from this role (unless other roles provide it). If a user has only this role, they will be assigned the default role, ', 'role-manager') . get_option('default_role'); ?></p>
      <form method="post" class="role-manager" action="<?php echo $this->manage_roles_uri; ?>">
        <input type="hidden" name="action" value="delete" />
        <input type="hidden" name="role" value="<?php echo $role_name; ?>" />
        <?php $iwg_rolemanagement->nonce_field('iwg_rolemanager_delete_role_'.$role_name); ?>
        <input type="submit" name="confirm" value="<?php _e('Confirm Delete Role', 'role-manager'); ?>" />
      </form>
    </div>
    <?php
  }

  /**
   * delete a given role from wordpress
   * R22
   * @param str $role
   */
  function delete_role($role) {
    global $wp_roles, $iwg_rolemanagement;
    if ($_POST['confirm']) {
        $iwg_rolemanagement->check_admin_ref('iwg_rolemanager_delete_role_'.$role);

      // no: underscore, space
      // yes: minus
      $role_name = $iwg_rolemanagement->check_input($role, null, false, false, true);
      if ( !$role_name ) {
        $iwg_rolemanagement->error_number += 1000;
        $iwg_rolemanagement->handle_error();
      }

      $defaultrole = get_option('default_role');
      if ($role_name == $defaultrole) {
        //LAZY CODE ALERT! we should give the option of changing the default role
        $iwg_rolemanagement->error_number = 1020;
        $iwg_rolemanagement->handle_error();
      }

      //remove the role from all the users
      $uids_with_role = $iwg_rolemanagement->get_all_userids_with_role($role_name);
      if ( count($uids_with_role) > 0 ) {
        foreach ($uids_with_role as $id) {
          $user = new WP_User($id);
          $user->roles = $iwg_rolemanagement->fill_array_keys_with_true( $user->roles );
          //if this role removal would end them up with no roles, assign the default role instead of removing
          if (count($user->roles) <= 1) {
            $user->add_role($defaultrole);
            $user->roles = $iwg_rolemanagement->fill_array_keys_with_true( $user->roles );
          }
          $user->remove_role($role_name);
        }
      }
      $wp_roles->remove_role($role_name);
      header('Location: ' . $this->manage_roles_uri . '&role-deleted=true');
    }
  }

  /**
   * change a given role to wordpress default role
   * R22
   * @param str $role
   */
  function make_default($role) {
    global $wp_roles, $iwg_rolemanagement;
    
   if( $iwg_rolemanagement->user_has_permissions() ) {
     $role_name = $iwg_rolemanagement->check_input($role, null, false, false, true);
     if ( !$role_name ) {
       $iwg_rolemanagement->error_number += 1000;
       $iwg_rolemanagement->handle_error();
     }
     /* don't work for ajax calls
	     $iwg_rolemanagement->check_admin_ref('iwg_rolemanager_chg_def_role_'.$role_name);
		 */
     if ($wp_roles->is_role($role_name)) {
       update_option('default_role', $role_name);
     } else {
       $iwg_rolemanagement->error_number += 1030;
       $iwg_rolemanagement->handle_error($role_name);
     }
     if (isset($_POST['ajax'])) {
       $changed = addslashes(__('Default role changed.', 'role-manager'));
       die('showdefaultrole("' . $role_name .'");
            setMessage("' . $changed . '");
           ');
     }
     header('Location: ' . $this->manage_roles_uri . '&made-default=true');
   } else {
     if (isset($_POST['ajax'])) {
       $changed = addslashes(__('Error: Default role not changed.', 'role-manager'));
       die('setMessage("' . $changed . '");
           ');
     }
     header('Location: ' . $this->manage_roles_uri);
   }
  }

  /**
   * set the userlevel for a given role
   * R22
   * @param str $role
   */
  function set_user_level($role) {
    global $wpdb, $wp_roles, $iwg_rolemanagement;

    $level = isset($_POST['level']) ? $_POST['level'] : $_GET['level'];
    $level = $iwg_rolemanagement->check_input($level);
    if ( $level !== false ) {
      $level = (int) $level;
      if ( ($level < 0) || ($level > 10) ) {
        $iwg_rolemanagement->error_number = 1900;
        $iwg_rolemanagement->handle_error();
      }
    } else {
      $iwg_rolemanagement->error_number = 1900;
      $iwg_rolemanagement->handle_error();
    }
    // no: underscore, space
    // yes: minus
    $role = $iwg_rolemanagement->check_input($role, null, false, false, true);
    if ( !$role ) {
      $iwg_rolemanagement->error_number += 1000;
      $iwg_rolemanagement->handle_error();
    }

    /* don't work for ajax calls
     $iwg_rolemanagement->check_admin_ref('iwg_rolemanager_change_level_'.$role);
     */

    $role_o = $wp_roles->get_role($role);

    $role_user_level = array_reduce(array_keys($role_o->capabilities), array('WP_User', 'level_reduction'), 0);
    $wp_roles->remove_cap($role, "level_{$role_user_level}");
    $wp_roles->add_cap($role, "level_{$level}");

    $uids_with_role = $iwg_rolemanagement->get_all_userids_with_role($role);
    if ( count($uids_with_role) > 0 ) {
      foreach ($uids_with_role as $id) {
        /* normally we shoukd use the next three steps here - but it doesn't work
           because $wp_roles->add_cap isn't flushed to the db here
        $user = new WP_User($id);
        $user->roles = $iwg_rolemanagement->fill_array_keys_with_true( $user->roles );
        $user->update_user_level_from_caps();
           on this reason used this one step: */
        update_usermeta($id, $wpdb->prefix.'user_level', $level);
      }
    }

    if (isset($_POST['ajax'])) {
      $changed = addslashes(__('Set user level of role.', 'role-manager'));
      die('fadeuserlevel("' . $role .'");
           setMessage("' . $changed . '");
          ');
    }
    header('Location: ' . $this->manage_roles_uri . '&set-userlevel=true');
  }
  
  /**
   * show the roles page or switch to call the rename or delete form
   * R22
   */
  function manage_roles_page() {
    global $wp_roles, $current_user, $iwg_rolemanagement;

    if ( ! $iwg_rolemanagement->user_has_permissions() ) {
      $iwg_rolemanagement->error_number = 9000;
      $iwg_rolemanagement->handle_error();
    }

    $action = $_POST['action'] ? $_POST['action'] : $_GET['action'];
    $role = $_POST['role'] ? $_POST['role'] : $_GET['role'];
  
    switch ($action) {
      case 'rename': $this->rename_role_form($role); break;
      case 'copy':   $this->copy_role_form($role); break;
      case 'delete': $this->delete_role_form($role); break;
      default:
      // Display a message if we've made changes
      if ($_GET['granted']) {
        echo '<div class="updated fade" id="message"><p>' . __('Capability granted', 'role-manager') . '</p></div>';
      } elseif ($_GET['denied']) {
        echo '<div class="updated fade" id="message"><p>' . __('Capability denied', 'role-manager') . '</p></div>';
      } elseif ($_GET['new-role']) {
        echo '<div class="updated fade" id="message"><p>' . __('New role created', 'role-manager') . '</p></div>';
      } elseif ($_GET['role-renamed']) {
        echo '<div class="updated fade" id="message"><p>' . __('Role renamed', 'role-manager') . '</p></div>';
      } elseif ($_GET['role-copied']) {
        echo '<div class="updated fade" id="message"><p>' . __('Role copied', 'role-manager') . '</p></div>';
      } elseif ($_GET['role-deleted']) {
        echo '<div class="updated fade" id="message"><p>' . __('Role deleted', 'role-manager') . '</p></div>';
      } elseif ($_GET['made-default']) {
        echo '<div class="updated fade" id="message"><p>' . __('Default role changed', 'role-manager') . '</p></div>';
      } elseif ($_GET['set-userlevel']) {
        echo '<div class="updated fade" id="message"><p>' . __('Set user level of role', 'role-manager') . '</p></div>';
      }
    
      // Output an admin page
      echo '<div class="wrap" id="main_page"><h2>' . __('Manage Roles', 'role-manager') . '</h2>';
      echo '<p>' . __('This page is for editing what capabilities are associated with each role. To change the capabilities of a specific user, click on Authors &amp; Users, then click Edit next to the user you want to change. You can <a href="#new-role">add new roles</a> as well.', 'role-manager') . '</p>';

      $capnames = $iwg_rolemanagement->get_cap_list();
    
      $defaultrole = get_option('default_role');
      foreach($wp_roles->role_names as $roledex => $rolename) {
        if ($roledex == $defaultrole) {
          $lovelylittlestar = '<img src="' . $iwg_rolemanagement->image_dir . 'star.png" alt="Default Role" class="defrole" id="defrole_' . $roledex . '" onclick="return !setdefaultrole(\'' . $roledex . '\');" />';
        } else {
          $lovelylittlestar = '<img src="' . $iwg_rolemanagement->image_dir . 'star_disabled.png" class="nondefrole" id="defrole_' . $roledex . '" alt="Click to make this the default role" onclick="return !setdefaultrole(\'' . $roledex . '\');" />';
        }
				$lovelylittlestar_url = $this->manage_roles_uri . '&amp;action=makedefault&amp;role=' . $roledex;
				$lovelylittlestar_url = $iwg_rolemanagement->nonce_url($lovelylittlestar_url,'iwg_rolemanager_chg_def_role_'.$roledex);
				$lovelylittlestar = '<a href="' . $lovelylittlestar_url . '" class="roledefaulter">' . $lovelylittlestar . '</a>';
        $rename_url = $this->manage_roles_uri . "&amp;action=rename&amp;role=".$roledex;
        $rename_url = $iwg_rolemanagement->nonce_url($rename_url,'iwg_rolemanager_rename_role_form_'.$roledex);
        ?><h3 class="roles_name"><?php echo $lovelylittlestar . ' ' . $rolename . ' '; ?>
        (<a href='<?php echo $rename_url;?>'><?php _e('rename', 'role-manager');?></a><?php
        $copy_url = $this->manage_roles_uri . "&amp;action=copy&amp;role=".$roledex;
        $copy_url = $iwg_rolemanagement->nonce_url($copy_url,'iwg_rolemanager_copy_role_form_'.$roledex);
        ?>, <a href='<?php echo $copy_url;?>'><?php _e('copy', 'role-manager');?></a><?php
        
        $role = $wp_roles->get_role($roledex);
        if(!($role->has_cap($iwg_rolemanagement->neededcap) && in_array($roledex, $current_user->roles))) {
          $delete_url = $this->manage_roles_uri . "&amp;action=delete&amp;role=".$roledex;
          $delete_url = $iwg_rolemanagement->nonce_url($delete_url,'iwg_rolemanger_delete_role_form_'.$roledex);
          echo ", <a href='" . $delete_url . "'>" . __('delete', 'role-manager') . "</a>";
        }
        ?>)</h3><?php

        foreach($capnames as $cap) {
          $capname = $iwg_rolemanagement->capmanager->get_cap_name($cap);
          ?><form onsubmit="submitme(this);return false;" method="post" class="cap_form" id="<?php echo $roledex . '__' . $cap; ?>" action="<?php echo $this->manage_roles_uri;?> ">
          <input type="hidden" name="role" value="<?php echo $roledex;?>" />
          <input type="hidden" name="cap" value="<?php echo $cap;?>" />
          <input type="hidden" name="grant" value="<?php echo ($role->has_cap($cap)?'0':'1');?>" />
	        <?php $iwg_rolemanagement->nonce_field('iwg_rolemanager_edit_cap_on_role_'.$roledex.'_'.$cap);
          if ($role->has_cap($cap)) {
            if( ($cap == $iwg_rolemanagement->neededcap && in_array($roledex, $current_user->roles)) || 
                ($cap == 'edit_users' && in_array($roledex, $current_user->roles)) ) {
              echo '<input type="image" id="btn_' . $roledex . '__' . $cap . '" src="' . $iwg_rolemanagement->image_dir . 'accept2.png"  name="grant" value="0" alt="' . __('Granted', 'role-manager') . '" onclick="return badidea();"/>';
            } else {
              echo '<input type="image" id="btn_' . $roledex . '__' . $cap . '" src="' . $iwg_rolemanagement->image_dir . 'accept.png"  name="grant" value="0" alt="' . __('Granted', 'role-manager') . '" />';
            }
          } else {
            echo '<input type="image" id="btn_' . $roledex . '__' . $cap . '" src="' . $iwg_rolemanagement->image_dir . 'cancel.png"  name="grant" value="1" alt="' . __('Denied', 'role-manager') . '" />';
          }
          echo ' ' . $capname;
          ?></form><?php
        }
        $role_user_level = array_reduce(array_keys($role->capabilities), array('WP_User', 'level_reduction'), 0);
        ?>
        <form method="post" class="userlevel_form" id="<?php echo $roledex;?>___user_level" action="<?php echo $this->manage_roles_uri;?>" onsubmit="return !setlevel(document.getElementById('<?php echo $roledex;?>___ulvalue).value,'<?php echo $roledex; ?>');">
        <input type="hidden" name="role" value="<?php echo $roledex; ?>" />
        <input type="hidden" name="action" value="setuserlevel" />
        <?php $iwg_rolemanagement->nonce_field('iwg_rolemanager_change_level_'.$roledex); ?>
        <input type="image" src="<?php echo $iwg_rolemanagement->image_dir;?>refresh.png" alt="'<?php _e('Update', 'role-manager');?>" />
        <label style="font-style:italic;">
        <?php $sel = '<select name="level" id="' . $roledex . '___ulvalue" onchange="setlevel(this.value,\'' . $roledex . '\');">';
        for($level=0; $level<=10; $level++) {
          $sel .= '<option value="' . $level . '"';
          if($role_user_level == $level) {
            $sel .= ' selected="selected"';
          }
          $sel .= '>' . $level . '</option>';
        }
        $sel .= '</select>';
        echo sprintf(__(' User Level: %s', 'role-manager'), $sel);
        ?></label></form><?php
      }

      //Echo the new role form
      ?>
      <h2 id="new-role"><?php _e('Create a new Role', 'role-manager'); ?></h2>
      <form method="post" class="role-manager">
        <label for="role-name"><?php _e('Role Name:', 'role-manager'); ?> <input type="text" name="role-name" id="role-name" /></label>
        <label><?php _e('Capabilities to be included:', 'role-manager'); ?></label>
        <fieldset>
        <?php foreach ($iwg_rolemanagement->get_cap_list(true) as $cap) { ?>
        <label for="cap-<?php echo $cap; ?>" class="cap-label">
        <input type="checkbox" name="caps[<?php echo $cap; ?>]" id="cap-<?php echo $cap; ?>" />
        <?php echo $iwg_rolemanagement->capmanager->get_cap_name($cap); ?></label>
        <?php } ?>
        </fieldest>
        <?php $iwg_rolemanagement->nonce_field('iwg_rolemanager_create_new_role'); ?>
        <input type="submit" name="new-role" value="<?php _e('Create Role', 'role-manager'); ?>" />
      </form>
      <?php
    } //switch ($action)
  }
  
  /**
   * dispatcher for the actions rename, delete, makedefault and setuserlevel for a transmitted role
   * R22
   */
  function process_role_changes() {
    global $iwg_rolemanagement;

    if ( $iwg_rolemanagement->user_has_permissions() ) {
      $action = $_POST['action'] ? $_POST['action'] : $_GET['action'];
      $role = $_POST['role'] ? $_POST['role'] : $_GET['role'];

      switch ($action) {
        case 'rename': $this->rename_role($role); break;
        case 'copy':   $this->copy_role($role); break;
        case 'delete': $this->delete_role($role); break;
        case 'makedefault': $this->make_default($role); break;
        case 'setuserlevel': $this->set_user_level($role); break;
      }
    }
  }

  /**
   * called from handle_new_role_creation and copy_role
   * it is the same, because in both functions the add a new role to the core
   * Don't call this from outside!
   * R22
   */
  function _add_new_role() {
    global $wp_roles, $iwg_rolemanagement;
    
    if (empty($_POST['role-name'])) {
      $iwg_rolemanagement->error_number = 1000;
      $iwg_rolemanagement->handle_error();
    }
    $role_name = $iwg_rolemanagement->check_input($_POST['role-name'], null, false, true);
    if ( !$role_name ) {
      $iwg_rolemanagement->error_number += 1000;
      $iwg_rolemanagement->handle_error();
    }
    // check if a role with this name exists
    if ( $wp_roles->is_role($role_name) ) {
      $iwg_rolemanagement->error_number = 1040;
      $iwg_rolemanagement->handle_error($role_name);
    }
    // check if a capability with this name exists
    if ( $iwg_rolemanagement->already_exists($role_name, 'role') ) {
      $iwg_rolemanagement->handle_error($role_name);
    }
    $caps = $_POST['caps'];
    //turn all the 'on's to 1s after a check if the cap is valid and exists
    if($caps) {
      foreach ($caps as $k => $cap) {
        $k = $iwg_rolemanagement->check_input($k, 'int_cap', true);
        if ( $k ) {
          if ( $iwg_rolemanagement->capmanager->cap_exists($k) ) {
            $caps[$k] = 1;
          } else {
            $iwg_rolemanagement->error_number = 2010;
            $iwg_rolemanagement->handle_error();
          }
        } else {
          $iwg_rolemanagement->error_number += 2000;
          $iwg_rolemanagement->handle_error();
        }
      }
    } else {
      $caps = array();
    }

    //$role = $wp_roles->add_role(sanitize_title($_POST['role-name']), stripslashes($_POST['role-name']), $caps);
    $role = $wp_roles->add_role(sanitize_title($role_name), stripslashes($role_name), $caps);
  }

  /**
   * get detached roles
   * R22
   * @param boolean $flip
   * @return array with detached roles
   */
  function get_detached_roles ( $flip = FALSE ) {
    /* flip == TRUE -> result: [cap]=>true; flip == FALSE -> result: []=>cap */
    global $wp_roles, $iwg_rolemanagement;

    $detached_roles = array();
    foreach($wp_roles->role_names as $int_role => $role_name) {
      $role = $wp_roles->get_role($int_role);
      $users = $iwg_rolemanagement->get_all_userids_with_role($int_role);
        if ( count($users) == 0 ) {
            $detached_roles[$int_role] = 1;
        }
    }
    if ( ! $flip ) {
      $detached_roles=array_keys($detached_roles);
    }
    return $detached_roles;
  }

  /**
   * get attaced roles
   * R22
   * @param boolean $flip
   * @return array with attached roles
   */
  function get_attached_roles ( $flip = FALSE ) {
    /* flip == TRUE -> result: [cap]=>true; flip == FALSE -> result: []=>cap */
    global $wp_roles, $iwg_rolemanagement;

    $attached_roles = array();
    $attached_roles = array_keys($wp_roles->role_names);
    //$this->debug('ATTACHED ROLES', $attached_roles);
    $detached_roles = $this->get_detached_roles(FALSE);
    //$this->debug('DETACHED ROLES', $detached_roles);
    $attached_roles = array_diff($attached_roles, $detached_roles);
    //$this->debug('ATTACHED ROLES 2', $attached_roles);
    if ( $flip ) {
      $attached_roles=$iwg_rolemanagement->fill_array_keys_with_true($attached_roles);
    }
    return $attached_roles;
  }

  /* Utility Functions */
  function debug($foo) {
    $args = func_get_args();
    echo "<pre style=\"background-color:#ffeeee;border:1px solid red;\">";
    foreach($args as $arg1) {
      echo htmlentities(print_r($arg1, 1)) . "<br/>";
    }
    echo "</pre>";
  }
  
}
?>

Youez - 2016 - github.com/yon3zu
LinuXploit