관리-도구
편집 파일: BasePluginInstaller.php
<?php /** * @copyright Copyright 2003-2020 Zen Cart Development Team * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 * @version $Id: Zcwilt 2020 May 20 New in v1.5.7 $ */ namespace Zencart\PluginSupport; class BasePluginInstaller { protected $pluginDir; public function __construct($dbConn, $pluginInstaller, $errorContainer) { $this->dbConn = $dbConn; $this->pluginInstaller = $pluginInstaller; $this->errorContainer = $errorContainer; } public function processInstall($pluginKey, $version) { $this->pluginDir = DIR_FS_CATALOG . 'zc_plugins/' . $pluginKey . '/' . $version; $this->loadInstallerLanguageFile('main.php', $this->pluginDir); $this->pluginInstaller->executeInstallers($this->pluginDir); if ($this->errorContainer->hasErrors()) { return false; } $this->setPluginVersionStatus($pluginKey, $version, 1); return true; } public function processUninstall($pluginKey, $version) { $this->pluginDir = DIR_FS_CATALOG . 'zc_plugins/' . $pluginKey . '/' . $version; $this->loadInstallerLanguageFile('main.php', $this->pluginDir); $this->setPluginVersionStatus($pluginKey, '', 0); $this->pluginInstaller->executeUninstallers($this->pluginDir); if ($this->errorContainer->hasErrors()) { return false; } return true; } public function processDisable($pluginKey, $version) { $this->setPluginVersionStatus($pluginKey, $version, 2); } public function processEnable($pluginKey, $version) { $this->setPluginVersionStatus($pluginKey, $version, 1); } protected function setPluginVersionStatus($pluginKey, $version, $status) { $sql = "UPDATE " . TABLE_PLUGIN_CONTROL . " SET status = :status:, version = :version: WHERE unique_key = :uniqueKey:"; $sql = $this->dbConn->bindVars($sql, ':status:', $status, 'integer'); $sql = $this->dbConn->bindVars($sql, ':uniqueKey:', $pluginKey, 'string'); $sql = $this->dbConn->bindVars($sql, ':version:', $version, 'string'); $this->dbConn->execute($sql); } protected function loadInstallerLanguageFile($file) { $lng = $_SESSION['language']; $filename = $this->pluginDir . '/installer/langauages/' . $lng . '/' . $file; if (file_exists($filename)) { require_once($filename); } } }