This repository has been archived by the owner on Nov 3, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 5
/
Installer.php
99 lines (87 loc) · 2.41 KB
/
Installer.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<?php
/**
* @category pimcore5-notification
* @date 15/09/2017
* @author Korneliusz Kirsz <kkirsz@divante.pl>
* @copyright Copyright (c) 2017 DIVANTE (http://divante.pl)
*/
declare(strict_types=1);
namespace Divante\NotificationsBundle;
use Divante\NotificationsBundle\DivanteNotificationsBundle;
use Pimcore\Db;
use Pimcore\Extension\Bundle\Installer\Exception\InstallationException;
use Pimcore\Extension\Bundle\Installer\AbstractInstaller;
use Pimcore\Model\User\Permission;
use Pimcore\Tool\Admin;
/**
* Class Installer
* @package Divante\NotificationsBundle
*/
class Installer extends AbstractInstaller
{
/**
*
* @throws InstallationException
*/
public function install()
{
Permission\Definition::create(DivanteNotificationsBundle::PERMISSION);
$sql = file_get_contents(__DIR__ . '/Resources/sql/install.sql');
try {
Db::getConnection()->query($sql);
} catch (\Exception $ex) {
new InstallationException('An error occurred while installing the bundle', 0, $ex);
}
}
/**
*
* @throws InstallationException
*/
public function uninstall()
{
$sql = file_get_contents(__DIR__ . '/Resources/sql/uninstall.sql');
try {
Db::getConnection()->query($sql);
} catch (\Exception $ex) {
new InstallationException('An error occurred while uninstalling the bundle', 0, $ex);
}
}
/**
* @return bool
*/
public function isInstalled()
{
$permission = Permission\Definition::getByKey(DivanteNotificationsBundle::PERMISSION);
if (!$permission instanceof Permission\Definition) {
return false;
}
try {
$stmt = Db::getConnection()->query("SHOW TABLES LIKE 'bundle_notifications'");
$ret = strcmp((string) $stmt->fetchColumn(), 'bundle_notifications') === 0;
} catch (\Exception $ex) {
$ret = false;
}
return $ret;
}
/**
* @return bool
*/
public function canBeInstalled()
{
return Admin::isExtJS6() && !$this->isInstalled();
}
/**
* @return bool
*/
public function canBeUninstalled()
{
return $this->isInstalled();
}
/**
* @return bool
*/
public function needsReloadAfterInstall()
{
return true;
}
}