HEX
Server:Apache
System:Linux localhost 5.10.0-14-amd64 #1 SMP Debian 5.10.113-1 (2022-04-29) x86_64
User:enlugo-es (10006)
PHP:7.4.33
Disabled:opcache_get_status
Upload Files
File: /var/www/vhosts/enlugo.es/httpdocs/wp-content/plugins/wp-super-edit/wp-super-edit.admin.class.php
<?php

if ( class_exists( 'wp_super_edit_core' ) ) {

/**
* WP Super Edit Admin Class
*
* This class uses WP Super Edit core class and variables and extends by creating user interfaces
* and administrative functions for WP Super Edit. 
* @package wp-super-edit
* @subpackage wp-super-edit-admin-class
*/    
    class wp_super_edit_admin extends wp_super_edit_core {
		
		/**
		* Gets user configuration data from user database tables and returns a complex settings 
		* array. User checked for management mode changes.
		* @param string $user_name
		* @return array
		*/
        function get_user_settings_ui( $user_name ) {
        	global $wpdb, $userdata;
        	
			if ( !$this->check_registered( 'user', $user_name ) ) $user_name = 'wp_super_edit_default';
			
			$user_settings = $this->get_user_settings( $user_name );
			
			$current_user['user_name'] = $user_name;
			$current_user['user_nicename'] = $user_settings->user_nicename;
			
			if ( $this->management_mode == 'users' && $this->user_profile == true ) {
				$current_user['user_nicename'] = $userdata->display_name;
			} 
						
			$current_user['editor_options'] = maybe_unserialize( $user_settings->editor_options );

			for ( $button_rows = 1; $button_rows <= 4; $button_rows += 1) {
				// ISSUE: 'theme_advanced_buttons' changed to 'toolbar' in WP 3.9								
				if ( $current_user['editor_options']['toolbar' . $button_rows] == '' ) {
					$current_user['buttons'][$button_rows] = array();
					continue;
				}
				// ISSUE: 'theme_advanced_buttons' changed to 'toolbar' in WP 3.9				
				$current_user['buttons'][$button_rows] = explode( ',', $current_user['editor_options']['toolbar' . $button_rows] );
			}
			
			return $current_user;

        }

		/**
		* Removes database tables for uninstallation. 
		*/
		function uninstall() {
			global $wpdb;
			
			$wpdb->query( $wpdb->prepare( 'DROP TABLE IF EXISTS ' . $this->db_options, 0 ));
			$wpdb->query( $wpdb->prepare( 'DROP TABLE IF EXISTS ' . $this->db_plugins, 0 ));
			$wpdb->query( $wpdb->prepare( 'DROP TABLE IF EXISTS ' . $this->db_buttons, 0 ));
			$wpdb->query( $wpdb->prepare( 'DROP TABLE IF EXISTS ' . $this->db_users, 0 ));
						
			$this->is_installed = false;

			// $url = add_query_arg( '_wpnonce', wp_create_nonce( 'deactivate-plugin_wp-super-edit/wp-super-edit.php' ), get_bloginfo('wpurl') . '/wp-admin/plugins.php?action=deactivate&plugin=wp-super-edit/wp-super-edit.php' );
			// wp_redirect( $url );

		}

		/**
		* Set WP Super Edit options from Options administrative interface.
		*/
		function do_options() {
			global $wpdb;
			
			if ( !$this->is_installed ) return false;

			if ( isset( $_REQUEST['wp_super_edit_management_mode'] ) ) {
				$this->set_option( 'management_mode', $_REQUEST['wp_super_edit_management_mode'] );
				$this->management_mode = $this->get_option( 'management_mode' );
			}

			if ( isset( $_REQUEST['wp_super_edit_reset_default_user'] ) && $_REQUEST['wp_super_edit_reset_default_user'] == 'reset_default_user' ) {
				$tiny_mce_scan = $this->get_option( 'tinymce_scan' );
				$this->update_user_settings( 'wp_super_edit_default', $tiny_mce_scan );
			}
			
			if ( isset( $_REQUEST['wp_super_edit_reset_users'] ) && $_REQUEST['wp_super_edit_reset_users'] == 'reset_users' ) {

				$user_settings = $this->get_user_settings( 'wp_super_edit_default' );
						
				$wpdb->query( $wpdb->prepare( "
					UPDATE $this->db_users
					SET editor_options = %s
					WHERE user_name != 'wp_super_edit_default'", 
					$user_settings->editor_options
				), 0 );

			}
		
		}
		
		/**
		* Activate and deactivate WP Super Edit TinyMCE plugins from Plugins administrative interface.
		*/
		function do_plugins() {
			global $wpdb;
			
			if ( !$this->is_installed ) return false;

			foreach ( $this->plugins as $plugin ) {
				if ( isset( $_REQUEST['wp_super_edit_plugins'][$plugin->name] ) && $_REQUEST['wp_super_edit_plugins'][$plugin->name] == 'yes' ) {
					$status = 'yes';
				} else {
					$status = 'no';
				}
				
				$plugin->status = $status;
				
				$this->plugins[$plugin->name] = $plugin;
				
				$plugin_result = $wpdb->query( $wpdb->prepare( "
					UPDATE $this->db_plugins
					SET status=%s
					WHERE name=%s ",
					$status, $plugin->name 
				) );
				$button_result = $wpdb->query( $wpdb->prepare( "
					UPDATE $this->db_buttons
					SET status=%s
					WHERE plugin=%s ",
					$status, $plugin->name 
				) );
			}
									
		}
		
		/**
		* Set button settings from Editor Buttons administrative interface.
		*/
		function do_buttons() {
									
			if ( !$this->is_installed ) return false;

			if ( isset( $_REQUEST['wp_super_edit_action_control'] ) && $_REQUEST['wp_super_edit_action_control'] == 'reset_default' ) {
				$user = 'wp_super_edit_default';
			} else {
				if ( isset( $_REQUEST['wp_super_edit_user'] ) ) $user = $_REQUEST['wp_super_edit_user'];
			}

			$current_settings = $this->get_user_settings_ui( $user );
			$current_user_settings = $current_settings['editor_options'];
			unset( $current_settings );
			
			if ( isset( $_REQUEST['wp_super_edit_action_control'] ) ) {
				if ( $_REQUEST['wp_super_edit_action_control'] == 'update' || $_REQUEST['wp_super_edit_action_control'] == 'set_default' ) {

					if ( isset( $_REQUEST['wp_super_edit_separators'] ) )
						$separators = explode( ',', $_REQUEST['wp_super_edit_separators'] );

					if ( isset( $_REQUEST['wp_super_edit_row_1'] ) )
						$wp_super_edit_rows[1] = explode( ',', $_REQUEST['wp_super_edit_row_1'] );
					if ( isset( $_REQUEST['wp_super_edit_row_2'] ) )
						$wp_super_edit_rows[2] = explode( ',', $_REQUEST['wp_super_edit_row_2'] );
					if ( isset( $_REQUEST['wp_super_edit_row_3'] ) )
						$wp_super_edit_rows[3] = explode( ',', $_REQUEST['wp_super_edit_row_3'] );
					if ( isset( $_REQUEST['wp_super_edit_row_4'] ) )
						$wp_super_edit_rows[4] = explode( ',', $_REQUEST['wp_super_edit_row_4'] );
		
					foreach( $wp_super_edit_rows as $wp_super_edit_row_number => $wp_super_edit_row ) {
						if ( empty( $wp_super_edit_row ) ) continue;
							
						$button_row_setting = array();
						$button_row = '';
						
						foreach( $wp_super_edit_row as $wp_super_edit_button ) {
						
							if ( empty( $wp_super_edit_button ) ) continue;
							
							$button_row_setting[] = $wp_super_edit_button;
							
							if ( in_array( $wp_super_edit_button, $separators ) ) {
								$button_row_setting[] = '|';
							}
						
						}
										
						$button_row = implode( ',', $button_row_setting );
						
						/*
						ISSUE: 'theme_advanced_buttons' changed to 'toolbar' in WP 3.9
						*/
						$button_array_key = 'toolbar' . $wp_super_edit_row_number;
						
						$current_user_settings[$button_array_key] = $button_row;
						
					}
				}
			}

			if ( isset( $_REQUEST['wp_super_edit_user'] ) )
				$this->update_user_settings( $_REQUEST['wp_super_edit_user'], $current_user_settings );

			if ( isset( $_REQUEST['wp_super_edit_action_control'] ) ) {
				if ( $_REQUEST['wp_super_edit_action_control'] == 'set_default' && !$this->user_profile ) {
					$this->update_user_settings( 'wp_super_edit_default', $current_user_settings );
				}
			}
			
		}

		/**
		* Register WP Super Edit TinyMCE plugin in plugin database table. 
		* @param array $plugin 
		*/
        function register_tinymce_plugin( $plugin = array() ) {
        	global $wpdb;

			if ( !$this->is_installed ) return false;

			if ( $this->check_registered( 'plugin', $plugin['name'] ) ) return true;
			
			if ( !isset( $plugin['url'] ) ) $plugin['url'] = '';
			if ( !isset( $plugin['callbacks'] ) ) $plugin['callbacks'] = '';

			$wpdb->query( $wpdb->prepare( "
				INSERT INTO $this->db_plugins
				( name, nicename, description, provider, status, callbacks, url ) 
				VALUES ( %s, %s, %s, %s, %s, %s, %s )", 
				$plugin['name'], $plugin['nicename'], $plugin['description'], $plugin['provider'], $plugin['status'], $plugin['callbacks'], $plugin['url']
			) );
        	
        }
        
		/**
		* Unregister WP Super Edit TinyMCE plugin in plugin database table. 
		* @param string $plugin_name 
		*/
        function unregister_tinymce_plugin( $plugin_name ) {
        	global $wpdb;
        	
			if ( !$this->is_installed ) return false;
						
			if ( $plugin_name == '' ) return false;
			
			$wpdb->query( $wpdb->prepare( "
				DELETE FROM $this->db_plugins
				WHERE name = %s", $plugin_name
			) );
        	
        }        
        
		/**
		* Register WP Super Edit TinyMCE button in button database table. 
		* @param array $button 
		*/
        function register_tinymce_button( $button = array() ) {
        	global $wpdb;
			
			if ( !$this->is_installed ) return false;

			if ( $this->check_registered( 'button', $button['name'] ) ) return true;

			$wpdb->query( $wpdb->prepare( "
				INSERT INTO $this->db_buttons 
				( name, nicename, description, provider, plugin, status )  
				VALUES ( %s, %s, %s, %s, %s, %s )", 
				$button['name'], $button['nicename'], $button['description'], $button['provider'], $button['plugin'], $button['status'] 
			) );

		}
		
		/**
		* Unregister WP Super Edit TinyMCE button in button database table. 
		* @param array $button 
		*/
        function unregister_tinymce_button( $button_name ) {
        	global $wpdb;
			
			if ( !$this->is_installed ) return false;

			if ( $button_name == '' ) return false;

			$wpdb->query( $wpdb->prepare( "
				DELETE FROM $this->db_buttons
				WHERE name = %s", $button_name
			) );

		}		

		/**
		* Register WP Super Edit user settings in users database table. 
		* @param string $user_name 
		* @param string $user_nicename 
		* @param array $user_settings 
		* @param string $type 
		*/
        function register_user_settings( $user_name = 'wp_super_edit_default', $user_nicename = 'Default Editor Settings', $user_settings, $type = 'single' ) {
        	global $wpdb;
			
			if ( !$this->is_installed ) return false;

			if ( $this->check_registered( 'user', $user_name ) ) return;
			
			$settings = maybe_serialize( $user_settings );

			$wpdb->query( $wpdb->prepare( "
				INSERT INTO $this->db_users
				( user_name, user_nicename, user_type, editor_options ) 
				VALUES ( %s, %s, %s, %s )", 
				$user_name, $user_nicename, $type, $settings 
			) );
					
		}

		/**
		* Update WP Super Edit user settings in users database table. 
		* @param string $user_name 
		* @param array $user_settings 
		*/
        function update_user_settings(  $user_name = 'wp_super_edit_default', $user_settings ) {
        	global $wpdb;
			
			if ( !$this->is_installed ) return false;

			$settings = maybe_serialize( $user_settings );
			
			$management_mode = ( $user_name == 'wp_super_edit_default' ? 'single' : $this->management_mode );
						
			$wpdb->query( $wpdb->prepare( "
				UPDATE $this->db_users
				SET editor_options = %s 
				WHERE user_name = %s AND user_type = %s LIMIT 1", 
				$settings, $user_name, $management_mode 
			) );
					
		}

		/**
		* Register new user settings in users database table based on management mode.
		* @param string $user_name 
		*/
		function register_new_user( $user_name ) {
        	global $wpdb, $wp_roles, $userdata;

			if ( !$this->is_installed ) return false;

        	switch ( $this->management_mode ) {
				case 'single':
					return;
				case 'roles':
					if ( isset( $wp_roles->role_names[$user_name] ) ) {
						if ( $this->check_registered( 'user', $user_name ) ) return;
						$nice_name = translate_with_context( $wp_roles->role_names[$user_name] );
						$user_settings = $this->get_user_settings( 'wp_super_edit_default' );
						$editor_options = maybe_unserialize( $user_settings->editor_options );
						$this->register_user_settings( $user_name, $nice_name, $editor_options, $this->management_mode );
					}
					break;
				case 'users':
					if ( $this->check_registered( 'user', $user_name ) ) return;
					$user_settings = $this->get_user_settings( 'wp_super_edit_default' );
					$editor_options = maybe_unserialize( $user_settings->editor_options );
					$this->register_user_settings( $userdata->user_login, 'user', $editor_options, $this->management_mode );
					break;	
				default:
					break;
			}
		
		}
 
    }

}