load->controller('common/developer'); * * @package Opencart\Admin\Controller\Common */ class Developer extends \Opencart\System\Engine\Controller { /** * Index * * @return void */ public function index(): void { $this->load->language('common/developer'); $data['developer_sass'] = $this->config->get('developer_sass'); $data['user_token'] = $this->session->data['user_token']; $this->response->setOutput($this->load->view('common/developer', $data)); } /** * Edit * * @return void */ public function edit(): void { $this->load->language('common/developer'); $json = []; if (!$this->user->hasPermission('modify', 'common/developer')) { $json['error'] = $this->language->get('error_permission'); } if (!$json) { // Setting $this->load->model('setting/setting'); $this->model_setting_setting->editSetting('developer', $this->request->post, 0); $json['success'] = $this->language->get('text_developer_success'); } $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } /** * Cache * * @return void */ public function cache(): void { $this->load->language('common/developer'); $json = []; if (!$this->user->hasPermission('modify', 'common/developer')) { $json['error'] = $this->language->get('error_permission'); } if (!$json) { $files = glob(DIR_CACHE . 'cache.*'); if ($files) { foreach ($files as $file) { if (is_file($file)) { unlink($file); } } } $json['success'] = $this->language->get('text_cache_success'); } $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } /** * Theme * * @return void */ public function theme(): void { $this->load->language('common/developer'); $json = []; if (!$this->user->hasPermission('modify', 'common/developer')) { $json['error'] = $this->language->get('error_permission'); } if (!$json) { $directories = glob(DIR_CACHE . 'template/*', GLOB_ONLYDIR); if ($directories) { foreach ($directories as $directory) { $files = glob($directory . '/*'); foreach ($files as $file) { if (is_file($file)) { unlink($file); } } if (is_dir($directory)) { rmdir($directory); } } } $json['success'] = $this->language->get('text_theme_success'); } $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } /** * Sass * * @return void */ public function sass(): void { $this->load->language('common/developer'); $json = []; if (!$this->user->hasPermission('modify', 'common/developer')) { $json['error'] = $this->language->get('error_permission'); } if (!$json) { // Before we delete we need to make sure there is a sass file to regenerate the css $file = DIR_APPLICATION . 'view/stylesheet/bootstrap.css'; if (is_file($file) && is_file(DIR_APPLICATION . 'view/stylesheet/scss/bootstrap.scss')) { unlink($file); } $files = glob(DIR_CATALOG . 'view/theme/*/stylesheet/scss/bootstrap.scss'); foreach ($files as $file) { $file = substr($file, 0, -20) . '/bootstrap.css'; if (is_file($file)) { unlink($file); } } $files = glob(DIR_CATALOG . 'view/theme/*/stylesheet/stylesheet.scss'); foreach ($files as $file) { $file = substr($file, 0, -16) . '/stylesheet.css'; if (is_file($file)) { unlink($file); } } $json['success'] = $this->language->get('text_sass_success'); } $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } /** * Vendor * * Generate new autoloader file * * @return void */ public function vendor(): void { $this->load->language('common/developer'); $json = []; if (!$this->user->hasPermission('modify', 'common/developer')) { $json['error'] = $this->language->get('error_permission'); } if (!$json) { // Generate php autoload file $code = ' $path) { if (!is_array($path)) { $code .= '$autoloader->register(\'' . rtrim($namespace, '\\') . '\', DIR_STORAGE . \'vendor/' . $directory . '/' . rtrim($path, '/') . '/' . '\', true);' . "\n"; } else { foreach ($path as $value) { $code .= '$autoloader->register(\'' . rtrim($namespace, '\\') . '\', DIR_STORAGE . \'vendor/' . $directory . '/' . rtrim($value, '/') . '/' . '\', true);' . "\n"; } } } } // Autoload psr-0 files if (isset($output['autoload']['psr-0'])) { $autoload = $output['autoload']['psr-0']; foreach ($autoload as $namespace => $path) { if (!is_array($path)) { $code .= '$autoloader->register(\'' . rtrim($namespace, '\\') . '\', DIR_STORAGE . \'vendor/' . $directory . '/' . rtrim($path, '/') . '/' . '\', true);' . "\n"; } else { foreach ($path as $value) { $code .= '$autoloader->register(\'' . rtrim($namespace, '\\') . '\', DIR_STORAGE . \'vendor/' . $directory . '/' . rtrim($value, '/') . '/' . '\', true);' . "\n"; } } } } // Autoload classmap if (isset($output['autoload']['classmap'])) { $autoload = []; $classmaps = $output['autoload']['classmap']; foreach ($classmaps as $classmap) { $directories = [dirname($file) . '/' . $classmap]; while (count($directories) != 0) { $next = array_shift($directories); if (is_dir($next)) { foreach (glob(trim($next, '/') . '/{*,.[!.]*,..?*}', GLOB_BRACE) as $file) { if (is_dir($file)) { $directories[] = $file . '/'; } if (is_file($file)) { $namespace = substr(dirname($file), strlen(DIR_STORAGE . 'vendor/' . $directory . $classmap) + 1); if ($namespace) { $autoload[$namespace] = substr(dirname($file), strlen(DIR_STORAGE . 'vendor/')); } } } } } } foreach ($autoload as $namespace => $path) { $code .= '$autoloader->register(\'' . rtrim($namespace, '\\') . '\', DIR_STORAGE . \'vendor/' . rtrim($path, '/') . '/' . '\', true);' . "\n"; } } // Autoload files if (isset($output['autoload']['files'])) { $files = $output['autoload']['files']; foreach ($files as $file) { $code .= 'if (is_file(DIR_STORAGE . \'vendor/' . $directory . '/' . $file . '\')) {' . "\n"; $code .= ' require_once(DIR_STORAGE . \'vendor/' . $directory . '/' . $file . '\');' . "\n"; $code .= '}' . "\n"; } } } $code .= "\n"; } file_put_contents(DIR_SYSTEM . 'vendor.php', trim($code)); $json['success'] = $this->language->get('text_vendor_success'); } $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } }