Edit file File name : class.A2Optimize.php Content :<?php class A2Optimize extends A2OptBase { public function __construct() { parent::__construct(); } public function apply_action() { switch ($_REQUEST['action']) { case 'optimize': $this->optimize(); break; case 'deoptimize': $this->deoptimize(); break; case 'is_optimized': $this->is_optimized(); break; case 'get_optimizations': $this->get_optimizations(); break; case 'set_optimization': $this->set_optimization(); break; } exit(); } public function set_optimization() { $app = null; switch ($this->app->type) { case 'PrestaShop': $this->app->ps_ver = $this->get_prestashop_version($this->app->path); $app = new A2OptPrestaShop($this->app); break; case 'WordPress': $app = new A2OptWordPress($this->app); break; case 'Magento': $app = new A2OptMagento($this->app); break; case 'Drupal': case 'Drupal 9': $this->app->dr_ver = $this->get_drupal_version($this->app->path); $app = $this->get_drupal_object($this->app); break; case 'Joomla': $app = new A2OptJoomla($this->app); break; case 'OpenCart': $app = new A2OptOpenCart($this->app); break; default: $this->error("{$this->app->type} is not supported by A2 Optimized"); } if ($app != null) { $optimize = ($_REQUEST['optimize'] === 'true'); $optimizations = $app->set_optimization($_REQUEST['name'], $optimize); $this->app->optimizations = $optimizations; $this->app->optimize = $this->is_optimized(false); $this->update_app_list(); echo json_encode($this->app); } else { $this->error("{$this->app->type} is not configured properly."); } } public function get_optimizations() { $app_db = ORM::for_table('apps')->where('app_path', $this->app->path)->find_one(); //$last_updated = intval($app_db->app_lastupdated); // This is sometimes causing installs to get stuck with an incomplete optimization list. Disabling until we can address fully. $last_updated = 0; $time_now = time() - 180; if ($last_updated < $time_now) { // We haven't looked at this app in the last 3 minutes, refresh the data switch ($this->app->type) { case 'PrestaShop': $this->app->ps_ver = $this->get_prestashop_version($this->app->path); $app = new A2OptPrestaShop($this->app); break; case 'WordPress': $app = new A2OptWordPress($this->app); break; case 'Magento': $app = new A2OptMagento($this->app); break; case 'Drupal': case 'Drupal 9': $this->app->dr_ver = $this->get_drupal_version($this->app->path); $app = $this->get_drupal_object($this->app); break; case 'Joomla': $app = new A2OptJoomla($this->app); break; case 'OpenCart': $app = new A2OptOpenCart($this->app); break; default: $this->error("{$this->app->type} is not supported by A2 Optimized"); } $optimizations = $app->get_optimizations(); $this->app->optimizations = $optimizations; $this->update_app_list(); } echo json_encode($this->app); } public function optimize() { switch ($this->app->type) { case 'PrestaShop': $this->app->ps_ver = $this->get_prestashop_version($this->app->path); $presta = new A2OptPrestaShop($this->app); $presta->optimize(); break; case 'WordPress': $wp = new A2OptWordPress($this->app); $wp->optimize(); break; case 'Magento': $mage = new A2OptMagento($this->app); $mage->optimize(); break; case 'Drupal': case 'Drupal 9': $this->app->dr_ver = $this->get_drupal_version($this->app->path); $drupal = $this->get_drupal_object($this->app); $drupal->optimize(); break; case 'Joomla': $joomla = new A2OptJoomla($this->app); $joomla->optimize(); break; case 'OpenCart': $oc = new A2OptOpenCart($this->app); $oc->optimize(); break; } } public function deoptimize() { return false; } public function is_optimized($echo = true) { $optimized = false; $percent = 0; if (isset($this->app)) { switch ($this->app->type) { case 'PrestaShop': $this->app->ps_ver = $this->get_prestashop_version($this->app->path); $presta = new A2OptPrestaShop($this->app); $percent = $presta->get_percent_optimized(); break; case 'WordPress': $wp = new A2OptWordPress($this->app); $percent = $wp->get_percent_optimized(); break; case 'Joomla': $joomla = new A2OptJoomla($this->app); $percent = $joomla->get_percent_optimized(); break; case 'Magento': $mage = new A2OptMagento($this->app); $percent = $mage->get_percent_optimized(); break; case 'Drupal': case 'Drupal 9': $this->app->dr_ver = $this->get_drupal_version($this->app->path); $drupal = $this->get_drupal_object($this->app); $percent = $drupal->get_percent_optimized(); break; case 'OpenCart': $oc = new A2OptOpenCart($this->app); $percent = $oc->get_percent_optimized(); break; } if ($percent >= 50) { $optimized = true; } if ($echo) { echo json_encode(['optimized' => $optimized, 'optimized_percent' => $percent]); } return ['optimized' => $optimized, 'optimized_percent' => $percent]; } else { $this->error('No Application was given to test optimization.'); } return false; } } Save