-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBookModuleInstaller.php
More file actions
142 lines (124 loc) · 6.89 KB
/
BookModuleInstaller.php
File metadata and controls
142 lines (124 loc) · 6.89 KB
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
<?php
declare(strict_types=1);
namespace Paustian\BookModule;
use Zikula\ExtensionsModule\Installer\AbstractExtensionInstaller;
use Paustian\BookModule\Entity\BookArticlesEntity;
use Paustian\BookModule\Entity\BookChaptersEntity;
use Paustian\BookModule\Entity\BookEntity;
use Paustian\BookModule\Entity\BookFiguresEntity;
use Paustian\BookModule\Entity\BookGlossEntity;
use Paustian\BookModule\Entity\BookUserDataEntity;
class BookModuleInstaller extends AbstractExtensionInstaller {
private $entities = [
BookArticlesEntity::class,
BookChaptersEntity::class,
BookEntity::class,
BookFiguresEntity::class,
BookGlossEntity::class,
BookUserDataEntity::class,
];
/**
* initialise the book module
* This function is only ever called once during the lifetime of a particular
* module instance
*/
public function install() :bool {
//Create the tables of the module. Book has 5
try {
$this->schemaTool->create($this->entities);
} catch (\Exception $e) {
return false;
}
$this->setVar('summarize', true);
$this->setVar('sumlevel', 5);
// Initialisation successful
return true;
}
/**
* upgrade the book module from an old version
* This function can be called multiple times
*/
public function upgrade(string $oldversion) : bool {
// Upgrade dependent on old version number
switch ($oldversion) {
case '2.1':
//we need to add code that changes the table names and gets rid of book_
//in front of table names and book_fig and book_gloss and book_user_data
$connection = Doctrine_Manager::getInstance()->getConnection('default');
$sqlStatements = array();
//Change the Book table
$sqlStatements[] = "ALTER TABLE `book` CHANGE `book_id` `bid` BIGINT( 20 ) NOT NULL AUTO_INCREMENT,
CHANGE `book_name` `name` LONGTEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL";
//Change the articles table
$sqlStatements[] = "ALTER TABLE `book_art` CHANGE `book_art_id` `aid` BIGINT( 20 ) NOT NULL AUTO_INCREMENT ,
CHANGE `book_art_title` `title` LONGTEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
CHANGE `book_art_chap_id` `cid` BIGINT( 20 ) NOT NULL DEFAULT '0',
CHANGE `book_art_book_id` `bid` BIGINT( 20 ) NOT NULL DEFAULT '0',
CHANGE `book_art_contents` `contents` LONGTEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
CHANGE `book_art_counter` `counter` BIGINT( 20 ) NOT NULL DEFAULT '0',
CHANGE `book_art_lang` `lang` VARCHAR( 30 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'eng',
CHANGE `book_art_next` `next` BIGINT( 20 ) NOT NULL DEFAULT '0',
CHANGE `book_art_prev` `prev` BIGINT( 20 ) NOT NULL DEFAULT '0',
CHANGE `book_art_number` `number` BIGINT( 20 ) NOT NULL DEFAULT '0'";
//Change the chapters table
$sqlStatements[] = "ALTER TABLE `book_chap` CHANGE `book_chap_id` `cid` BIGINT( 20 ) NOT NULL AUTO_INCREMENT ,
CHANGE `book_chap_number` `number` BIGINT( 20 ) NOT NULL DEFAULT '0',
CHANGE `book_chap_book_id` `bid` BIGINT( 20 ) NOT NULL DEFAULT '0',
CHANGE `book_chap_name` `name` LONGTEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL";
//Change the Figures table
$sqlStatements[] = "ALTER TABLE `book_figs` CHANGE `book_figs_fig_id` `fid` BIGINT( 20 ) NOT NULL AUTO_INCREMENT ,
CHANGE `book_figs_fig_number` `fig_number` BIGINT( 20 ) NOT NULL ,
CHANGE `book_figs_chap_number` `chap_number` BIGINT( 20 ) NOT NULL ,
CHANGE `book_figs_book_id` `bid` BIGINT( 20 ) NOT NULL ,
CHANGE `book_figs_img_link` `img_link` LONGTEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
CHANGE `book_figs_fig_title` `title` LONGTEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
CHANGE `book_figs_fig_perm` `perm` TINYINT( 4 ) NOT NULL DEFAULT '1',
CHANGE `book_figs_content` `content` LONGTEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL";
//Change the Glossary Table
$sqlStatements[] = "ALTER TABLE `book_gloss` CHANGE `book_gloss_gloss_id` `gid` BIGINT( 20 ) NOT NULL AUTO_INCREMENT ,
CHANGE `book_gloss_term` `term` LONGTEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
CHANGE `book_gloss_definition` `definition` LONGTEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
CHANGE `book_gloss_user` `user` LONGTEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
CHANGE `book_gloss_url` `url` LONGTEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL";
//Finally changet the user data table
$sqlStatements[] = "ALTER TABLE `book_user_data` CHANGE `book_user_data_id` `udid` BIGINT( 20 ) NOT NULL AUTO_INCREMENT ,
CHANGE `book_user_data_uid` `uid` BIGINT( 20 ) NOT NULL ,
CHANGE `book_user_data_art_id` `aid` BIGINT( 20 ) NOT NULL ,
CHANGE `book_user_data_start` `start` BIGINT( 20 ) NOT NULL DEFAULT '0',
CHANGE `book_user_data_end` `end` BIGINT( 20 ) NOT NULL DEFAULT '0'";
foreach ($sqlStatements as $sql) {
$stmt = $connection->prepare($sql);
try {
$stmt->execute();
} catch (\Exception $e) {
// trap and toss exceptions if you need to.
echo($e);
die;
}
}
case '5.1.0':
//Add the allowzummarize variable
$this->setVar('summarize', true);
$this->setVar('sumlevel', 5);
$this->delVar('securebooks');
}
// Update successful
return true;
}
/**
* delete the book module
* This function is only ever called once during the lifetime of a particular
* module instance
*/
public function uninstall() : bool {
try {
$this->schemaTool->drop($this->entities);
} catch (\PDOException $e) {
return false;
}
// Delete any module variables.
$this->delVars();
// Deletion successful*/
return true;
}
}