403Webshell
Server IP : 39.106.62.82  /  Your IP : 216.73.216.26
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-manager.php
<?php
/*
Plugin Name: Role Manager
Plugin URI: http://www.im-web-gefunden.de/wordpress-plugins/role-manager/
Description: Role Management for WordPress 2.0.x, up to 2.6.x..
Version: 2.2.3
Author: Thomas Schneider
Author URI: http://www.im-web-gefunden.de/
Update Server:  http://www.im-web-gefunden.de/
Min WP Version: 2.0
Max WP Version: 2.6
License: MIT License - http://www.opensource.org/licenses/mit-license.php

Original coding by David House and Owen Winkler
Icons were provided by http://www.famfamfam.com/lab/icons/silk/ under
a Creative Commons Attribution 2.5 license.
 
*/

class IWG_RoleManagement {
	var $wp_content_url;
	var $wp_content_dir;
  var $path_file;
  var $file_basename;   /* under wp-content/plugins */
  var $plugin_base_uri;
  var $file_uri;
  var $rolemanager_file_basename;
  var $capmanager_file_basename;
  var $image_dir;
  var $style_dir;
  var $version_nr;
  var $version_txt;
  var $rolemanager;
  var $manage_roles_uri;
  var $capmanager;
  var $manage_capabilities_uri;
  var $neededcap;
  var $max_input_len;
  var $error_number;
  var $spaces_in_caps;
  var $new_admin_if;
  
  /**
   * the constructor
   * R23
   * @return IWG_RoleManagement
   */
  function IWG_RoleManagement() {
    global $wp_db_version;
    
    if ( !defined('WP_CONTENT_URL') ) {
    	$this->wp_content_url = get_option('siteurl') . '/wp-content';
    } else {
    	$this->wp_content_url = WP_CONTENT_URL;
    }
    $plugin_url = $this->wp_content_url.'/plugins/'.plugin_basename(dirname(__FILE__));
    if ( !defined('WP_CONTENT_DIR') ) {
    	$this->wp_content_dir = ABSPATH . 'wp-content';
    } else {
    	$this->wp_content_dir = WP_CONTENT_DIR;
    }
    $plugin_path = $this->wp_content_dir.'/plugins/'.plugin_basename(dirname(__FILE__));

    require_once($plugin_path.'/role-management.php');
    require_once($plugin_path.'/capability-management.php');
    require_once($plugin_path.'/general.php');
    require_once($plugin_path.'/help.php');
    
    $wp_db_version < 4772 ? $this->path_file='profile.php' : $this->path_file='users.php';
    $wp_db_version < 7558 ? $this->new_admin_if=FALSE : $this->new_admin_if=TRUE;
    $this->file_basename = plugin_basename(dirname(__FILE__)).'/'.basename(__FILE__);
    $this->file_uri = $plugin_url.'/'.basename(__FILE__);
    $this->plugin_base_uri = $plugin_url;
    $this->image_dir = $this->plugin_base_uri . '/images/';
    $this->style_dir = $this->plugin_base_uri . '/styles/';
    $this->neededcap = 'manage_roles';
    $this->version_nr = (2 << 16) | (2 << 8) | 3; /* major.minor.patch */
    $this->version_txt = '';
    $this->rolemanager = new RoleManager($this->path_file);
    $this->manage_roles_uri = $this->rolemanager->manage_roles_uri;
    $this->capmanager = new CapabilityManager($this->path_file);
    $this->manage_capabilities_uri = $this->capmanager->manage_capabilities_uri;
    $this->general = new IWG_RoleManagementGeneral($this->path_file);
    $this->manage_general_uri = $this->general->manage_general_uri;
    $this->help = new IWG_RoleManagementHelp($this->path_file);
    $this->manage_help_uri = $this->help->manage_help_uri;
    $this->max_input_len = 30;
    $this->error_number = 0;

    add_action('init', array(&$this, 'role_manager_init'));
    
    $this->spaces_in_caps = get_option('IWG_RoleMan_Spaces_in_Caps');
    if ( empty($this->spaces_in_caps) ) {
    	$this->spaces_in_caps = FALSE;
    }

    add_action('admin_menu', array(&$this, 'admin_menu'));
    add_action('edit_user_profile', array(&$this->capmanager, 'manage_user_caps_page'));
    if (strstr($_SERVER['REQUEST_URI'], 'user-edit.php') !== false) {
      add_action('init', array(&$this->capmanager, 'handle_user_caps_edit'));
      add_action('admin_head', array(&$this, 'admin_head'));
    }
    if (strstr($_SERVER['REQUEST_URI'], $this->path_file) !== false) {
      add_action('init', array(&$this, 'handle_role_caps_edit'));
      add_action('init', array(&$this->rolemanager, 'process_role_changes'));
      add_action('admin_head', array(&$this, 'admin_head'));
    }
  }

  /**
   * the first init for role manager
   * - only load the translations 
   * R23
   */
  function role_manager_init() {
  	$path = substr($this->wp_content_dir,strlen(ABSPATH)).'/plugins/role-manager/languages';
		load_plugin_textdomain('role-manager', $path);
	}
  
	/**
	 * show role manger parts in the admin menu
	 * R22
	 */
  function admin_menu() {
		if ( $this->user_has_permissions() ) {
      if ( function_exists('wp_enqueue_script') ) {
        wp_enqueue_script('sack');
      } else {
        global $sack_js;
        $sack_js = true;
      }
      add_submenu_page($this->path_file, __('Role Management', 'role-manager'), __('Roles', 'role-manager'), 'edit_users', $this->rolemanager->file_basename,
                       array(&$this->rolemanager, 'manage_roles_page'));
      add_submenu_page($this->path_file, __('Capability Management', 'role-manager'), __('Capabilities', 'role-manager'), 'edit_users', $this->capmanager->file_basename,
                        array(&$this->capmanager, 'manage_caps_page'));
      add_submenu_page($this->path_file, __('Role-/Capability Management General', 'role-manager'), __('Role-/Capability Management General', 'role-manager'), 'edit_users',  $this->general->file_basename,
                      array(&$this->general, 'manage_general_page'));
			add_submenu_page($this->path_file, __('Role-/Capability Management Help', 'role-manager'), __('Role-/Capability Management Help', 'role-manager'), 'edit_users', $this->help->file_basename,
                      array(&$this->help, 'manage_help_page'));
    }
  }

	/**
	 * put needed javascript in the header of each page
	 * R22
	 */
  function admin_head() {
  	if ($this->new_admin_if) {
  		$levelAnimation = 'animateRoleManagerMessage(\'#\'+ rolename + "___user_level", true);';
  		$messageAnimation = 'animateRoleManagerMessage(\'.fade\', false);';
  		$capAnimation = 'animateRoleManagerMessage(\'#\'+ btn.parentNode.id, true);';
  		$jQueryAnimation = '
  		function animateRoleManagerMessage(element, backToOrigBG) {
				var endBG = \'#fffbcc\';
				if (backToOrigBG) {
					endBG = jQuery(element).css("backgroundColor");
				}			
				jQuery(element).animate( { backgroundColor: \'#ffffe0\' }, 300).animate( { backgroundColor: \'#fffbcc\' }, 300).animate( { backgroundColor: \'#ffffe0\' }, 300).animate( { backgroundColor: endBG }, 1000);
			};
  		';
  	} else {
  		$levelAnimation = 'Fat.fade_element(rolename + "___user_level");';
  		$messageAnimation = 'Fat.fade_all();';
  		$capAnimation = 'Fat.fade_element(btn.parentNode.id);';  		
  		$jQueryAnimation = '';
  	}
   echo '
  <link rel="stylesheet" href="'.$this->style_dir.'style.css" type="text/css" />
    <script type="text/javascript">
    function badidea() {
      alert("' . addslashes(__("You can't remove this permission from a role assigned to you!", 'role-manager')) . '");
			return false;
  	}
    function setdefaultrole(rolename) {
      var ajax = new sack();
      ajax.requestFile = "' . $this->manage_roles_uri . '";
      ajax.setVar("action", "makedefault");
      ajax.setVar("role", rolename);      
      ajax.setVar("ajax", "1");
      ajax.execute = true;
      //ajax.element = "toast";  // Debug ajax returned script
      ajax.runAJAX();
      return true;    
    }
    function setlevel(level,rolename) {
      var ajax = new sack();
      ajax.requestFile = "' . $this->manage_roles_uri . '";
      ajax.setVar("action", "setuserlevel");
      ajax.setVar("role", rolename);
      ajax.setVar("level", level);
      ajax.setVar("ajax", "1");
      ajax.execute = true;
      //ajax.element = "toast";  // Debug ajax returned script
      ajax.runAJAX();
      return true;      
    }
    function fadeuserlevel(rolename) {
      '.$levelAnimation.'
    }
    function showdefaultrole(rolename) {
      var imgs = document.getElementsByTagName("IMG");
      for(z=0;z<imgs.length;z++) {
        if(imgs[z].id == "defrole_" + rolename) {
          imgs[z].src = "' . $this->image_dir . 'star.png";
          imgs[z].className = "defrole";
        }
        else if(imgs[z].className == "defrole") {
          imgs[z].src = "' . $this->image_dir . 'star_disabled.png";
          imgs[z].className = "nondefrole";
        }
      }
    }
    function submitme(frm) {
      var ajax = new sack();
      ajax.requestFile = "' . $this->manage_roles_uri . '";
      inputs = frm.getElementsByTagName("INPUT");
      for(z=0;z<inputs.length;z++) {
        ajax.setVar(inputs[z].name, inputs[z].value);
      }
      ajax.setVar("ajax", "1");
      ajax.execute = true;
      //ajax.element = "toast";  // Debug ajax returned script
      ajax.runAJAX();
      return false;
    }
    function toggleCap(capbtnname) {
      var btn = document.getElementById(capbtnname);
      btn.value = (btn.value == "0") ? "1" : "0";
      btn.src = "' . $this->image_dir . '" + ((btn.value == "0") ? "accept.png" : "cancel.png");
      '.$capAnimation.'
	  }
    function setMessage(message) {
      var msg = document.getElementById("message");
      try {
        msg.innerHTML = "<p>" + message + "</p>";
      }
      catch(e) {
        msg = document.createElement("DIV");
        msg.className = "updated fade";
        msg.setAttribute("id", "message");
        main = document.getElementById("main_page");
        main.parentNode.insertBefore(msg, main);
        msg.innerHTML = "<p>" + message + "</p>";
      }'.
      $messageAnimation.'
    }'
    .$jQueryAnimation.'
		</script>
		';
   if ($this->new_admin_if) {
   	echo '<link rel="stylesheet" href="'.$this->style_dir.'new_admin_style.css" type="text/css" />';
   }
  }


  /**
   * dispatch the action grand a cap for a role, create new role, create new cap and purge unused caps
   * R22
   */
  function handle_role_caps_edit() {
    if( $this->user_has_permissions () ) {
      if (isset ($_POST['grant'])) {
        $this->rolemanager->handle_role_changes();
      } elseif (isset($_POST['new-role'])) {
        $this->rolemanager->handle_new_role_creation();
      } elseif (isset($_POST['new-cap'])) {
        $this->capmanager->handle_new_cap_creation();
      } elseif (isset($_POST['purge-caps'])) {
        $this->capmanager->handle_cap_purge();
      }
    } else {
    	// now make more checks here to give the right feedback to the user
    	// TODO make better feedback if user without cap to use role manger call a role manger url
    	//      such a user got no feedback in the moment 
    	if ( ! current_user_can('edit_users')) {
    		// if a user has cap to edit users he don't see this message but he can't use the role manager
    		$this->error_number = 9000;
    		$this->handle_error();
    	}
    	//else {
    	//if ( ! current_user_can($this->neededcap)) {
    	// if a user has cap to edit users he don't see this message but he can't use the role manager
    	//$this->error('<p>You are not allowed to manage roles here.</p>');
    	//}
    	//}
    }
  }

  /**
   * check the input after transmission to the server
   * R22
   * @param str $input - the input
   * @param str $type - not used in the moment
   * @param boolean $us_allowed - is "_" allowed
   * @param boolean $sp_allowed - is " " allowed
   * @param boolean $min_allowed - is "-" allowed
   * @param boolean $trim - should the input trimed
   * @return mixed: (not)trimmed input or false
   */
  function check_input($input, $type = "", $us_allowed = false, $sp_allowed = false, $min_allowed = false, $trim = true) {
    $ret_val = $trim ? trim($input) : $input;
    // $this->debug("mbstrlen", ($this->mbstrlen($ret_val)));

    if ( $type == 'int_cap' ) {
    	/* check for transmitted caps, some plugins using caps with spaces */
    	$sp_allowed = $this->spaces_in_caps;
    }
    if ( ($ret_val == "") || ( $this->mbstrlen($ret_val) > $this->max_input_len ) ) {
      $ret_val = false;
      $this->error_number = 100;
    } else {
      $t_ret_val = $ret_val;
      $regexp = '#[\W_]#';
      /* handle us_allowed */
      if ( $us_allowed ) {
            $t_ret_val = preg_replace('#_#', '', $t_ret_val);
            $regexp = '#[\W]#';
      }
      /* handle space allowed */
      if ( $sp_allowed ) {
            $t_ret_val = preg_replace('#\s#', '', $t_ret_val);
            /* remove duplicates and set all to one whitespace */
            $ret_val = preg_replace('#\s#', ' ', $ret_val);
      }
      /* handle minus sign allowed */
      if ( $min_allowed ) {
            $t_ret_val = preg_replace('#-#', '', $t_ret_val);
      }
      if ( preg_match($regexp, $t_ret_val) ) {
        /* input isn't allowed or utf-8 - check against utf-8 */
        if ( preg_match('/[\x80-\xff]/', $t_ret_val) ) {
          /* input has utf-8 chars inside - need more checks here */
          $t_ret_val = remove_accents($t_ret_val);
          if ( preg_match($regexp, $t_ret_val) ) {
            /* after removing utf-8 chars input isn't valid */
            $this->error_number = 120;
            $ret_val = false;
          } else {
            /* input has utf-8 chars but is valid */
          }
        } else {
          /* input has no utf-8 chars and is not valid */
          $this->error_number = 110;
          $ret_val = false;
        }
      } else {
        /* input is valid and has no utf-8 chars inside */
      }
    }
    // $this->debug('input_err', ($this->input_err));
    // $this->debug('ret_val', $ret_val);
    return $ret_val;
  }
  
  /**
   * Check if a given newone already exists as a role or as a capability
   * both checks are doing in every case to prevent duplicates or naming conflicts between roles and capabilities
   * R22
   * TODO need a little bit styling
   * @param str $newone
   * @param str $type
   * @return boolean
   */
   function already_exists($newone="", $type='role') {
    global $wp_roles, $iwg_rolemanagement;
    $ret_val = FALSE;
    $newone = strtolower($newone);
    
    if ($type == 'role') {
      // TODO This strips out also multibyte-chars - should it changed?
      $newone = preg_replace('#[^a-z0-9]#', '_', $newone);
      if ( $iwg_rolemanagement->capmanager->cap_exists($newone) ) {
        $this->error_number = 1130;
        $ret_val = TRUE;
      }
    } elseif ( $type == 'cap' ) {
      //$this->debug($newone);
      //$this->debug($wp_roles);
      //die();
      if ( $wp_roles->is_role($newone) ) {
        $this->error_number = 2130;
        $ret_val = TRUE;
      }
    } else {
      // wrong type!
      $ret_val = TRUE;
    }
    return $ret_val;
  }

  /**
   * check if the user has the right permissions to use the role manager
   * R22
   * @return boolean
   */
  function user_has_permissions () {
    $ret_val = false;
    if( current_user_can('edit_users') && current_user_can($this->neededcap)) {
      $ret_val = true;
    }
    return $ret_val;
  }

  /**
   * get an array with all capabilities
   * R22
   * @param boolean $roles
   * @param boolean $kill_levels
   * @return array
   */
  function get_cap_list($roles = true, $kill_levels = true) {
    global $wp_roles;
    
    // Get Role List
    foreach($wp_roles->role_objects as $key => $role) {
      foreach($role->capabilities as $cap => $grant) {
        $capnames[$cap] = $cap;
        //$this->debug('grant', ($role->capabilities));
      }
    }
    
    if ($caplist = get_option('IWG_RoleMan_CapList')) {
      $capnames = array_unique(array_merge($caplist, $capnames));
    }
    
    $capnames = apply_filters('capabilities_list', $capnames);
    if(!is_array($capnames)) $capnames = array();
    $capnames = array_unique($capnames);
    sort($capnames);

    //Filter out the level_x caps, they're obsolete
    if($kill_levels) {
      $capnames = array_diff($capnames, array('level_0', 'level_1', 'level_2', 'level_3', 'level_4', 'level_5',
        'level_6', 'level_7', 'level_8', 'level_9', 'level_10'));
    }
    
    //Filter out roles if required
    if (!$roles) {
      foreach ($wp_roles->get_names() as $role) {
        $key = array_search($role, $capnames);
        if ($key !== false && $key !== null) { //array_search() returns null if not found in 4.1
          unset($capnames[$key]);
        }
      }
    }
    return $capnames;
  }

  /**
   * store all capabilities in the option table
   * R22
   * @param array $caplist
   */
  function set_cap_list ($caplist) {
    if(!is_array($caplist)) $caplist = array();
    update_option('IWG_RoleMan_CapList', $caplist);
  }

  /**
   * get all user ids for a role
   * R22
   * @param str $role
   * @return array
   */
  function get_all_userids_with_role($role) {
    global $wpdb;
    $userids_in_role = array();
    
    if ( $userids = $this->get_all_user_ids() ) {
      foreach($userids as $userid) {
        $user = new WP_User($userid);
        $user->roles = $this->fill_array_keys_with_true( $user->roles );
        if ( in_array($role, array_keys($user->roles))) {
          $userids_in_role[]=$userid;
        }
      }
    }
    return $userids_in_role;
  }

  /**
   * get all user_ids
   * R22
   * @return array
   */
  function get_all_user_ids() {
    if ($ids = wp_cache_get('all_user_ids', 'users')) {
      return $ids;
    } else {
      global $wpdb;
      $ids = $wpdb->get_col('SELECT ID from ' . $wpdb->users);
      wp_cache_set('all_user_ids', $ids, 'users');
      return $ids;
    }
  }

  /**
   * wrapper for wp_nonce_field for wordpress
   * R22
   * @param str $action
   * @return str
   */
  function nonce_field ( $action = -1 ) {
    if ( !function_exists('wp_nonce_field') ) {
      return;
    } else {
      return wp_nonce_field($action);
    }
  }

  /**
   * wrapper for wp_nonce_url for wordpress
   * R22
   * @param str $action_url
   * @param str $action
   * @return str
   */
  function nonce_url ( $action_url, $action = -1 ) {
    if ( !function_exists('wp_nonce_url') ) {
      return;
    } else {
      return wp_nonce_url($action_url, $action);
    }
  }

  /**
   * wrapper for check_admin_referer for wordpress
   * R22
   * @param str $action
   */
  function check_admin_ref ($action = -1 ) {
    if ( function_exists('check_admin_referer') ) {
      check_admin_referer($action);
    }
  }

  /**
   * multibyte strlen wrapper for php
   * R22
   * @param string $str
   * @return len
   */
  function mbstrlen ($str = "") {
    if ( function_exists('mb_strlen') ) {
      $len = mb_strlen($str);
    } else {
      $len = strlen(remove_accents($str));
    }
    return $len;
  }

	/**
	 * flips an assoz. array an fill all keys with true
	 * R22 
	 * @param array $arr
	 * @return array
	 */
  function fill_array_keys_with_true( $arr ) {
    $arr = array_flip($arr);
    foreach ($arr as $key=>$val) { $arr[$key] = true ; };
    return ($arr);
  }

	/**
	 * get the role manager plugin version
	 * R22
	 * @param str $form
	 * @return version in different forms
	 */
  function get_version($form='str') {
    switch ($form) {
      case 'int': $ret_val = $this->version_nr;
                  break;
      case 'l_str': $ret_val = sprintf("%02d.%02d.%02d %s", $this->version_nr >> 16, ($this->version_nr & 0x00FF00) >> 8,
                                ($this->version_nr & 0xFF), $this->version_txt);
                    break;
      default: $ret_val = sprintf("%02d.%02d.%02d", $this->version_nr >> 16, ($this->version_nr & 0x00FF00) >> 8, ($this->version_nr & 0xFF));
                    break;
    }
    return $ret_val; 
  }

  /**
   * handle errors
   * - translate error-number to error-text
   * R22
   * @param str $detailinfo
   */
  function handle_error ($detailinfo ="") {
    /* error_number values:
     * 1000 - 1999 -> Role Errors
     * 2000 - 2999 -> Caps Errors
     * 9000 - 9999 -> Generic Errors (no permissions and so on ) 
     */
    $error_text = array (
      '1000' => __('You must enter a role name.','role-manger'),
      '1010' => sprintf(__('Can\'t rename. A Role with the name %s already exists.','role-manger'), $detailinfo),
      '1020' => __('You cannot delete the default role.', 'role-manager'),
      '1030' => sprintf(__('Can\'t make %s the default. Not a role.', 'role-manager'), $detailinfo),
      '1040' => sprintf(__('Can\'t create the new Role. A Role with the name %s already exists.','role-manger'), $detailinfo),
      '1100' => __('Role name to short or to long','role-manger'),
      '1110' => __('A valid role name can only have letters, digits and spaces','role-manger'),
      '1120' => __('A valid role name can only have letters, digits and spaces','role-manger'),
      '1130' => sprintf(__('Can\'t create the new Role. A Capability with the name %s already exists.','role-manger'), $detailinfo),
      '1900' => __('You must enter a valid user level','role-manger'),
      '2000' => __('You must enter a capability name.','role-manger'),
      '2010' => __('Capability don\'t exists.','role-manger'),
      '2100' => __('Capability name to short or to long','role-manger'),
      '2110' => __('A valid capability name can only have letters, digits and spaces. Try Role Managers "Spaces allowed in Capabilities" option.','role-manger'),
      '2120' => __('A valid capability name can only have letters, digits and spaces. Try Role Managers "Spaces allowed in Capabilities" option.','role-manger'),
      '2130' => sprintf(__('Can\'t create the new Capability. A Role with the name %s already exists.','role-manger'), $detailinfo),
      '9000' => __('You are not allowed to do this here','role-manger'),
      '9001' => __("You can't remove this permission from a role assigned to you!", 'role-manager'),
      '9002' => __('You cannot remove the Edit Users or Manage Roles capability from yourself.'),
      '9100' => __("Wrong User-ID!", 'role-manager'),
      '9101' => __("User don't exists!", 'role-manager')
    );
    $this->error($error_text[$this->error_number]);
  }

  /**
   * store how the capability-checker should handle spaces in capabilities
   * - problem with other plugins
   * - many plugins add caps with spaces
   *
   * @param boolean $spaces_allowed
   */
  function store_cap_spaces_handling( $spaces_allowed = FALSE ) {
  	if ( $spaces_allowed !== TRUE) $spaces_allowed = FALSE;
  	update_option('IWG_RoleMan_Spaces_in_Caps', $spaces_allowed);
  	$this->spaces_in_caps = $spaces_allowed;
  }
  
  /**
   * output error and die
   * TODO Better errorhandling
   * @param unknown_type $error
   */
  function error($error) {
    die($error);
  }
  
  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>";
  }

}

$iwg_rolemanagement = new IWG_RoleManagement();

/* Plugin activation/deactivation-functions */
function RoleManager_Plugin_Activate () {
  global $iwg_rolemanagement, $wp_roles;
  $has_old_caplist = TRUE;
  $has_new_caplist = TRUE;
  
  if ( empty($iwg_rolemanagement) ) {
    $iwg_rolemanagement = new IWG_RoleManagement();
  }
  /* check if an older version have exist before */
  $old_caplist = get_option('caplist');
  if ( empty($old_caplist) ) {
    $has_old_caplist = FALSE;
  }
  /* check if an newer version have exist before */
  $new_caplist = get_option('IWG_RoleMan_CapList');
  if ( empty($new_caplist) ) {
    $has_new_caplist = FALSE;
  }
  if ( (!$has_old_caplist) && (!$has_new_caplist) ) {
    $iwg_rolemanagement->set_cap_list($iwg_rolemanagement->get_cap_list());
  } elseif ( (!$has_old_caplist) && ($has_new_caplist) ) {
    /* in next versions do a update check here if needed */
  } elseif ( ($has_old_caplist) && (!$has_new_caplist) ) {
    $iwg_rolemanagement->set_cap_list($old_caplist);
    delete_option('caplist');
  } elseif ( ($has_old_caplist) && ($has_new_caplist) ) {
    delete_option('caplist');
  }
  $status = array ('status' => 'active', 'version' => $iwg_rolemanagement->get_version('int'));
  update_option('IWG_RoleManager', $status);
  if ( $iwg_rolemanagement->capmanager->cap_exists($iwg_rolemanagement->neededcap) ) {
    $unused_caps=$iwg_rolemanagement->capmanager->get_unused_caps(FALSE);
    if(in_array($iwg_rolemanagement->neededcap, $unused_caps)) {
      $wp_roles->add_cap('administrator', $iwg_rolemanagement->neededcap, true);
    }
  } else {
    $wp_roles->add_cap('administrator', $iwg_rolemanagement->neededcap, true);
    $iwg_rolemanagement->set_cap_list($iwg_rolemanagement->get_cap_list());
  }
}
function RoleManager_Plugin_Deactivate () {
  global $iwg_rolemanagement;
  $status = array ('status' => 'not active', 'version' => $iwg_rolemanagement->get_version('int'));
  update_option('IWG_RoleManager', $status);
}
add_action('activate_role-manager/role-manager.php', 'RoleManager_Plugin_Activate');
add_action('deactivate_role-manager/role-manager.php', 'RoleManager_Plugin_Deactivate');
?>

Youez - 2016 - github.com/yon3zu
LinuXploit