]> git.mxchange.org Git - quix0rs-gnu-social.git/blob - scripts/upgrade.php
move notices-rendered code into upgrade script
[quix0rs-gnu-social.git] / scripts / upgrade.php
1 #!/usr/bin/env php
2 <?php
3 /*
4  * StatusNet - a distributed open-source microblogging tool
5  * Copyright (C) 2008-2011 StatusNet, Inc.
6  *
7  * This program is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU Affero General Public License as published by
9  * the Free Software Foundation, either version 3 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU Affero General Public License for more details.
16  *
17  * You should have received a copy of the GNU Affero General Public License
18  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
19  */
20
21 define('INSTALLDIR', realpath(dirname(__FILE__) . '/..'));
22
23 $shortoptions = 'x::';
24 $longoptions = array('extensions=');
25
26 $helptext = <<<END_OF_UPGRADE_HELP
27 php upgrade.php [options]
28 Upgrade database schema and data to latest software
29
30 END_OF_UPGRADE_HELP;
31
32 require_once INSTALLDIR.'/scripts/commandline.inc';
33
34 function main()
35 {
36     updateSchemaCore();
37     updateSchemaPlugins();
38
39     // These replace old "fixup_*" scripts
40
41     fixupNoticesRendered();
42 }
43
44 function tableDefs()
45 {
46         $schema = array();
47         require INSTALLDIR.'/db/core.php';
48         return $schema;
49 }
50
51 function updateSchemaCore()
52 {
53     printfnq("Upgrading core schema");
54
55     $schema = Schema::get();
56     $schemaUpdater = new SchemaUpdater($schema);
57     foreach (tableDefs() as $table => $def) {
58         $schemaUpdater->register($table, $def);
59     }
60     $schemaUpdater->checkSchema();
61 }
62
63 function updateSchemaPlugins()
64 {
65     printfnq("Upgrading plugin schema");
66
67     Event::handle('CheckSchema');
68 }
69
70 function fixupNoticesRendered()
71 {
72     printfnq("Ensuring all notices have rendered HTML");
73
74     $notice = new Notice();
75
76     $notice->whereAdd('rendered IS NULL');
77     $notice->find();
78
79     while ($notice->fetch()) {
80         $original = clone($notice);
81         $notice->rendered = common_render_content($notice->content, $notice);
82         $notice->update($original);
83     }
84 }
85
86 main();