2 namespace wcf\system\package\plugin
;
3 use wcf\system\event\EventHandler
;
4 use wcf\system\package\PackageInstallationDispatcher
;
8 * Abstract implementation of a package installation plugin.
10 * @author Alexander Ebert
11 * @copyright 2001-2014 WoltLab GmbH
12 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
13 * @package com.woltlab.wcf
14 * @subpackage system.package.plugin
15 * @category Community Framework
17 abstract class AbstractPackageInstallationPlugin
implements IPackageInstallationPlugin
{
19 * table application prefix
22 public $application = 'wcf';
28 public $tableName = '';
31 * active instance of PackageInstallationDispatcher
32 * @var \wcf\system\package\PackageInstallationDispatcher
34 public $installation = null;
37 * install/update instructions
40 public $instruction = array();
43 * Creates a new AbstractPackageInstallationPlugin object.
45 * @param \wcf\system\package\PackageInstallationDispatcher $installation
46 * @param array $instruction
48 public function __construct(PackageInstallationDispatcher
$installation, $instruction = array()) {
49 $this->installation
= $installation;
50 $this->instruction
= $instruction;
52 // call 'construct' event
53 EventHandler
::getInstance()->fireAction($this, 'construct');
57 * @see \wcf\system\package\plugin\IPackageInstallationPlugin::install()
59 public function install() {
60 // call 'install' event
61 EventHandler
::getInstance()->fireAction($this, 'install');
65 * @see \wcf\system\package\plugin\IPackageInstallationPlugin::update()
67 public function update() {
68 // call 'update' event
69 EventHandler
::getInstance()->fireAction($this, 'update');
71 return $this->install();
75 * @see \wcf\system\package\plugin\IPackageInstallationPlugin::hasUninstall()
77 public function hasUninstall() {
78 // call 'hasUninstall' event
79 EventHandler
::getInstance()->fireAction($this, 'hasUninstall');
81 $sql = "SELECT COUNT(*) AS count
82 FROM ".$this->application
.WCF_N
."_".$this->tableName
."
84 $statement = WCF
::getDB()->prepareStatement($sql);
85 $statement->execute(array($this->installation
->getPackageID()));
86 $installationCount = $statement->fetchArray();
87 return $installationCount['count'];
91 * @see \wcf\system\package\plugin\IPackageInstallationPlugin::uninstall()
93 public function uninstall() {
94 // call 'uninstall' event
95 EventHandler
::getInstance()->fireAction($this, 'uninstall');
97 $sql = "DELETE FROM ".$this->application
.WCF_N
."_".$this->tableName
."
99 $statement = WCF
::getDB()->prepareStatement($sql);
100 $statement->execute(array($this->installation
->getPackageID()));