-
Notifications
You must be signed in to change notification settings - Fork 0
/
upgrade.php
107 lines (88 loc) · 3.55 KB
/
upgrade.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
100
101
102
103
104
105
106
107
<?php
/**
* @package Newscoop
* @author Paweł Mikołajczuk <pawel.mikolajczuk@sourcefabric.org>
* @copyright 2013 Sourcefabric o.p.s.
* @license http://www.gnu.org/licenses/gpl-3.0.txt
*/
if (!file_exists(__DIR__.'/vendor') && !file_exists(__DIR__.'/vendor/autoload.php')) {
echo "Welcome in Newscoop Upgrade.<br/><br/>";
echo "Looks like you forget about our vendors. Please install all dependencies with Composer.";
echo "<pre>curl -s https://getcomposer.org/installer | php <br/>php composer.phar install --no-dev</pre>";
echo "After that please refresh that page. Thanks!";
die;
}
if (!file_exists(__DIR__.'/conf/database_conf.php')) {
echo "Welcome in Newscoop Upgrade.<br/><br/>";
echo "Looks like you want upgrade not installed yet Newscoop instance.<br/>";
echo "Please install Newscoop first and upgrade it with next release!<br/>";
die;
}
if (!is_writable(__DIR__.'/log')) {
echo "Welcome in Newscoop Upgrade.<br/><br/>";
echo "Looks like your log directory isn't writable - please fix it.<br/><br/>";
echo "In linux systems it can be done with <pre>sudo chmod -R 777 ".__DIR__."/log</pre>";
echo "After that please refresh that page. Thanks!";
die;
}
require_once __DIR__.'/vendor/autoload.php';
require_once __DIR__.'/conf/database_conf.php';
use Newscoop\Installer\Services;
use Monolog\Logger;
$app = new Silex\Application();
$app->register(new Silex\Provider\MonologServiceProvider(), array(
'monolog.logfile' => __DIR__.'/log/upgrade.log',
'monolog.level' => Logger::NOTICE,
'monolog.name' => 'upgrade',
));
$app->register(new Silex\Provider\TwigServiceProvider(), array(
'twig.path' => __DIR__.'/install/Resources/views',
));
$app->register(new Silex\Provider\TranslationServiceProvider(), array(
'locale_fallbacks' => array('en'),
));
$app->register(new Silex\Provider\DoctrineServiceProvider(), array(
'db.options' => array(
'driver' => 'pdo_mysql',
'host' => $Campsite['db']['host'],
'dbname' => $Campsite['db']['name'],
'user' => $Campsite['db']['user'],
'password' => $Campsite['db']['pass'],
'port' => $Campsite['db']['port'],
'charset' => 'utf8',
),
));
if (defined('APPLICATION_ENV') && (APPLICATION_ENV === 'development' || APPLICATION_ENV === 'dev')) {
$app['debug'] = true;
}
$app['upgrade_service'] = $app->share(function () use ($app) {
return new Services\UpgradeService($app['db'], $app['monolog']);
});
$app->get('/', function (Silex\Application $app) {
$oldVersions = $app['upgrade_service']->getDBVersion();
$response = $app['upgrade_service']->upgradeDatabase($oldVersions);
$newVersions = $app['upgrade_service']->getDBVersion();
if (php_sapi_name() == "cli") {
if (is_array($response)) {
foreach ($response as $key => $error) {
echo "Error with query: ".$error."\n";
}
echo "Upgrade process ended up with some errors. \n";
return false;
}
echo "Your Newscoop instance is upgraded from ".$oldVersions['dbInfo']." to ".$newVersions['dbInfo']." without errors. \n";
return false;
}
if (is_array($response)) {
return $app['twig']->render('upgrade/errors.twig', array(
'errors' => $response,
'oldVersions' => $oldVersions,
'newVersions' => $newVersions,
));
}
return $app['twig']->render('upgrade/success.twig', array(
'newVersions' => $newVersions,
'oldVersions' => $oldVersions,
));
});
$app->run();