2 namespace wcf\system\package\plugin
;
3 use wcf\system\event\EventHandler
;
4 use wcf\system\package\PackageArchive
;
5 use wcf\system\package\PackageInstallationDispatcher
;
9 * Abstract implementation of a package installation plugin.
11 * @author Alexander Ebert
12 * @copyright 2001-2014 WoltLab GmbH
13 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
14 * @package com.woltlab.wcf
15 * @subpackage system.package.plugin
16 * @category Community Framework
18 abstract class AbstractPackageInstallationPlugin
implements IPackageInstallationPlugin
{
20 * table application prefix
23 public $application = 'wcf';
29 public $tableName = '';
32 * active instance of PackageInstallationDispatcher
33 * @var \wcf\system\package\PackageInstallationDispatcher
35 public $installation = null;
38 * install/update instructions
41 public $instruction = array();
44 * Creates a new AbstractPackageInstallationPlugin object.
46 * @param \wcf\system\package\PackageInstallationDispatcher $installation
47 * @param array $instruction
49 public function __construct(PackageInstallationDispatcher
$installation, $instruction = array()) {
50 $this->installation
= $installation;
51 $this->instruction
= $instruction;
53 // call 'construct' event
54 EventHandler
::getInstance()->fireAction($this, 'construct');
58 * @see \wcf\system\package\plugin\IPackageInstallationPlugin::install()
60 public function install() {
61 // call 'install' event
62 EventHandler
::getInstance()->fireAction($this, 'install');
66 * @see \wcf\system\package\plugin\IPackageInstallationPlugin::update()
68 public function update() {
69 // call 'update' event
70 EventHandler
::getInstance()->fireAction($this, 'update');
72 return $this->install();
76 * @see \wcf\system\package\plugin\IPackageInstallationPlugin::hasUninstall()
78 public function hasUninstall() {
79 // call 'hasUninstall' event
80 EventHandler
::getInstance()->fireAction($this, 'hasUninstall');
82 $sql = "SELECT COUNT(*) AS count
83 FROM ".$this->application
.WCF_N
."_".$this->tableName
."
85 $statement = WCF
::getDB()->prepareStatement($sql);
86 $statement->execute(array($this->installation
->getPackageID()));
87 $installationCount = $statement->fetchArray();
88 return $installationCount['count'];
92 * @see \wcf\system\package\plugin\IPackageInstallationPlugin::uninstall()
94 public function uninstall() {
95 // call 'uninstall' event
96 EventHandler
::getInstance()->fireAction($this, 'uninstall');
98 $sql = "DELETE FROM ".$this->application
.WCF_N
."_".$this->tableName
."
100 $statement = WCF
::getDB()->prepareStatement($sql);
101 $statement->execute(array($this->installation
->getPackageID()));
105 * @see \wcf\system\package\plugin\IPackageInstallationPlugin::isValid()
107 public static function isValid(PackageArchive
$archive, $instruction) {