Failed Conditions
Pull Request — experimental/3.1 (#2199)
by chihiro
148:32 queued 121:17
created

eccube_install.php ➔ initializeDatabase()   B

Complexity

Conditions 3
Paths 4

Size

Total Lines 89
Code Lines 67

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
eloc 67
nc 4
nop 1
dl 0
loc 89
rs 8.5731
c 0
b 0
f 0

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
0 ignored issues
show
Coding Style Compatibility introduced by
For compatibility and reusability of your code, PSR1 recommends that a file should introduce either new symbols (like classes, functions, etc.) or have side-effects (like outputting something, or including other files), but not both at the same time. The first symbol is defined on line 10 and the first side effect is on line 4.

The PSR-1: Basic Coding Standard recommends that a file should either introduce new symbols, that is classes, functions, constants or similar, or have side effects. Side effects are anything that executes logic, like for example printing output, changing ini settings or writing to a file.

The idea behind this recommendation is that merely auto-loading a class should not change the state of an application. It also promotes a cleaner style of programming and makes your code less prone to errors, because the logic is not spread out all over the place.

To learn more about the PSR-1, please see the PHP-FIG site on the PSR-1.

Loading history...
2
3
if (php_sapi_name() !== 'cli') {
4
    exit(1);
5
}
6
7
set_time_limit(0);
8
ini_set('display_errors', 1);
9
10
define('COMPOSER_FILE', 'composer.phar');
11
define('COMPOSER_SETUP_FILE', 'composer-setup.php');
12
13
setUseAnsi($argv);
14
15
$argv = is_array($argv) ? $argv : array();
16
17
$argv[1] = isset($argv[1]) ? $argv[1] : null;
18
$argv[2] = isset($argv[2]) ? $argv[2] : null;
19
20
if (in_array('--help', $argv) || empty($argv[1])) {
21
    displayHelp($argv);
22
    exit(0);
23
}
24
25
if (in_array('-v', $argv) || in_array('--version', $argv)) {
26
    require __DIR__.'/src/Eccube/Common/Constant.php';
27
    echo 'EC-CUBE '.Eccube\Common\Constant::VERSION.PHP_EOL;
28
    exit(0);
29
}
30
31
out('EC-CUBE3 installer use database driver of ', null, false);
32
33
$database_driver = 'pdo_sqlite';
34
switch($argv[1]) {
35
    case 'mysql':
36
        $database_driver = 'pdo_mysql';
37
        break;
38
    case 'pgsql':
39
        $database_driver = 'pdo_pgsql';
40
        break;
41
    default:
42
    case 'sqlite':
43
    case 'sqlite3':
44
    case 'sqlite3-in-memory':
45
        $database_driver = 'pdo_sqlite';
46
}
47
out($database_driver);
48
49
initializeDefaultVariables($database_driver);
50
51
if (in_array('-V', $argv) || in_array('--verbose', $argv)) {
52
    displayEnvironmentVariables();
53
}
54
55
$database = getDatabaseConfig($database_driver);
56
$connectionParams = $database['database'];
57
58
if ($argv[2] != 'none') {
59
    composerSetup();
60
    composerInstall();
61
}
62
63
require __DIR__.'/autoload.php';
64
65
out('update permissions...');
66
updatePermissions($argv);
67
68
createConfigFiles($database_driver);
69
70
if (!in_array('--skip-createdb', $argv)) {
71
    createDatabase($connectionParams);
72
}
73
74
if (!in_array('--skip-initdb', $argv)) {
75
    $app = createApplication();
76
    initializeDatabase($app);
77
}
78
79
out('EC-CUBE3 install finished successfully!', 'success');
80
$root_urlpath = getenv('ROOT_URLPATH');
81
if (PHP_VERSION_ID >= 50400 && empty($root_urlpath)) {
82
    out('PHP built-in web server to run applications, `php -S localhost:8080 -t html`', 'info');
83
    out('Open your browser and access the http://localhost:8080/', 'info');
84
}
85
exit(0);
86
87
function displayHelp($argv)
0 ignored issues
show
Coding Style introduced by
Consider putting global function "displayHelp" in a static class
Loading history...
introduced by
Missing function doc comment
Loading history...
88
{
89
    echo <<<EOF
90
EC-CUBE3 Installer
91
------------------
92
Usage:
93
${argv[0]} [mysql|pgsql|sqlite3] [none] [options]
94
95
Arguments[1]:
96
Specify database types
97
98
Arguments[2]:
99
Specifying the "none" to skip the installation of Composer
100
101
Options:
102
-v, --version        print ec-cube version
103
-V, --verbose        enable verbose output
104
--skip-createdb      skip to create database
105
--skip-initdb        skip to initialize database
106
--help               this help
107
--ansi               force ANSI color output
108
--no-ansi            disable ANSI color output
109
110
Environment variables:
111
112
EOF;
113
    foreach (getExampleVariables() as $name => $value) {
114
        echo $name.'='.$value.PHP_EOL;
115
    }
116
}
117
118
function initializeDefaultVariables($database_driver)
0 ignored issues
show
Coding Style introduced by
Consider putting global function "initializeDefaultVariables" in a static class
Loading history...
introduced by
Missing function doc comment
Loading history...
119
{
120
    $database_url = getenv('DATABASE_URL');
121
    if ($database_url) {
122
        $url = parse_url($database_url);
123
        putenv('DBSERVER='.$url['host']);
124
        putenv('DBNAME='.substr($url['path'], 1));
125
        putenv('DBUSER='.$url['user']);
126
        putenv('DBPORT='.$url['port']);
127
        putenv('DBPASS='.$url['pass']);
128
    }
129
    switch ($database_driver) {
130
        case 'pdo_pgsql':
131
            putenv('ROOTUSER='.(getenv('ROOTUSER') ? getenv('ROOTUSER') : (getenv('DBUSER') ? getenv('DBUSER') : 'postgres')));
132
            putenv('ROOTPASS='.(getenv('ROOTPASS') ? getenv('ROOTPASS') : (getenv('DBPASS') ? getenv('DBPASS') : 'password')));
133
            putenv('DBSERVER='.(getenv('DBSERVER') ? getenv('DBSERVER') : 'localhost'));
134
            putenv('DBNAME='.(getenv('DBNAME') ? getenv('DBNAME') : 'cube3_dev'));
135
            putenv('DBUSER='.(getenv('DBUSER') ? getenv('DBUSER') : 'cube3_dev_user'));
136
            putenv('DBPORT='.(getenv('DBPORT') ? getenv('DBPORT') : '5432'));
137
            putenv('DBPASS='.(getenv('DBPASS') ? getenv('DBPASS') : 'password'));
138
            break;
139
        case 'pdo_mysql':
140
            putenv('ROOTUSER='.(getenv('ROOTUSER') ? getenv('ROOTUSER') : (getenv('DBUSER') ? getenv('DBUSER') : 'root')));
141
            putenv('DBSERVER='.(getenv('DBSERVER') ? getenv('DBSERVER') : 'localhost'));
142
            putenv('DBNAME='.(getenv('DBNAME') ? getenv('DBNAME') : 'cube3_dev'));
143
            putenv('DBUSER='.(getenv('DBUSER') ? getenv('DBUSER') : 'cube3_dev_user'));
144
            putenv('DBPORT='.(getenv('DBPORT') ? getenv('DBPORT') : '3306'));
145
            putenv('DBPASS='.(getenv('DBPASS') ? getenv('DBPASS') : 'password'));
146
            if (getenv('TRAVIS')) {
147
                putenv('DBPASS=');
148
                putenv('ROOTPASS=');
149
            } else {
150
                putenv('DBPASS='.(getenv('DBPASS') ? getenv('DBPASS') : 'password'));
151
                putenv('ROOTPASS='.(getenv('ROOTPASS') ? getenv('ROOTPASS') : (getenv('DBPASS') ? getenv('DBPASS') : 'password')));
152
            }
153
            break;
154
        default:
155
        case 'pdo_sqlite':
156
            break;
157
    }
158
    putenv('SHOP_NAME='.(getenv('SHOP_NAME') ? getenv('SHOP_NAME') : 'EC-CUBE SHOP'));
159
    putenv('ADMIN_MAIL='.(getenv('ADMIN_MAIL') ? getenv('ADMIN_MAIL') : '[email protected]'));
160
    putenv('ADMIN_USER='.(getenv('ADMIN_USER') ? getenv('ADMIN_USER') : 'admin'));
161
    putenv('ADMIN_PASS='.(getenv('ADMIN_PASS') ? getenv('ADMIN_PASS') : 'password'));
162
    putenv('MAIL_BACKEND='.(getenv('MAIL_BACKEND') ? getenv('MAIL_BACKEND') : 'smtp'));
163
    putenv('MAIL_HOST='.(getenv('MAIL_HOST') ? getenv('MAIL_HOST') : 'localhost'));
164
    putenv('MAIL_PORT='.(getenv('MAIL_PORT') ? getenv('MAIL_PORT') : 25));
165
    putenv('MAIL_USER='.(getenv('MAIL_USER') ? getenv('MAIL_USER') : null));
166
    putenv('MAIL_PASS='.(getenv('MAIL_PASS') ? getenv('MAIL_PASS') : null));
167
    putenv('ADMIN_ROUTE='.(getenv('ADMIN_ROUTE') ? getenv('ADMIN_ROUTE') : 'admin'));
168
    putenv('ROOT_URLPATH='.(getenv('ROOT_URLPATH') ? getenv('ROOT_URLPATH') : null));
169
    putenv('AUTH_MAGIC='.(getenv('AUTH_MAGIC') ? getenv('AUTH_MAGIC') :
170
                          substr(str_replace(array('/', '+', '='), '', base64_encode(openssl_random_pseudo_bytes(32 * 2))), 0, 32)));
0 ignored issues
show
Coding Style introduced by
This line of the multi-line function call does not seem to be indented correctly. Expected 4 spaces, but found 26.
Loading history...
171
}
172
173
function getExampleVariables()
0 ignored issues
show
Coding Style introduced by
Consider putting global function "getExampleVariables" in a static class
Loading history...
introduced by
Missing function doc comment
Loading history...
174
{
175
    return array(
0 ignored issues
show
introduced by
Add a comma after each item in a multi-line array
Loading history...
176
        'ADMIN_USER' => 'admin',
177
        'ADMIN_MAIL' => '[email protected]',
178
        'SHOP_NAME' => 'EC-CUBE SHOP',
179
        'ADMIN_ROUTE' => 'admin',
180
        'ROOT_URLPATH' => '<ec-cube install path>',
181
        'DBSERVER' => '127.0.0.1',
182
        'DBNAME' => 'cube3_dev',
183
        'DBUSER' => 'cube3_dev_user',
184
        'DBPASS' => 'password',
185
        'DBPORT' => '<database port>',
186
        'ROOTUSER' => 'root|postgres',
187
        'ROOTPASS' => 'password',
188
        'MAIL_BACKEND' => 'smtp',
189
        'MAIL_HOST' => 'localhost',
190
        'MAIL_PORT' => '25',
191
        'MAIL_USER' => '<SMTP AUTH user>',
192
        'MAIL_PASS' => '<SMTP AUTH password>',
193
        'AUTH_MAGIC' => '<auth_magic>'
194
    );
195
}
196
197
198
function displayEnvironmentVariables()
0 ignored issues
show
Coding Style introduced by
Consider putting global function "displayEnvironmentVariables" in a static class
Loading history...
introduced by
Missing function doc comment
Loading history...
199
{
200
    echo 'Environment variables:'.PHP_EOL;
201
    foreach (array_keys(getExampleVariables()) as $name) {
202
        echo $name.'='.getenv($name).PHP_EOL;
203
    }
204
}
205
206
function composerSetup()
0 ignored issues
show
Coding Style introduced by
Consider putting global function "composerSetup" in a static class
Loading history...
introduced by
Missing function doc comment
Loading history...
207
{
208
    if (!file_exists(__DIR__.'/'.COMPOSER_FILE)) {
209
        if (!file_exists(__DIR__.'/'.COMPOSER_SETUP_FILE)) {
210
            copy('https://getcomposer.org/installer', COMPOSER_SETUP_FILE);
211
        }
212
213
        $sha = hash_file('SHA384', COMPOSER_SETUP_FILE).PHP_EOL;
214
        out(COMPOSER_SETUP_FILE.': '.$sha);
215
216
        $command = 'php '.COMPOSER_SETUP_FILE;
217
        out("execute: $command", 'info');
218
        passthru($command);
219
        unlink(COMPOSER_SETUP_FILE);
220
    } else {
221
        $command = 'php '.COMPOSER_FILE.' self-update';
222
        passthru($command);
223
    }
224
}
225
226
function composerInstall()
0 ignored issues
show
Coding Style introduced by
Consider putting global function "composerInstall" in a static class
Loading history...
introduced by
Missing function doc comment
Loading history...
227
{
228
    $command = 'php '.COMPOSER_FILE.' install --dev --no-interaction';
229
    passthru($command);
230
}
231
232
function createDatabase(array $connectionParams)
0 ignored issues
show
Coding Style introduced by
Consider putting global function "createDatabase" in a static class
Loading history...
introduced by
Missing function doc comment
Loading history...
233
{
234
    $dbname = $connectionParams['dbname'];
235
    switch ($connectionParams['driver']) {
236 View Code Duplication
        case 'pdo_pgsql':
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
237
            $connectionParams['dbname'] = 'postgres';
238
            $connectionParams['user'] = getenv('ROOTUSER');
239
            $connectionParams['password'] = getenv('ROOTPASS');
240
            break;
241 View Code Duplication
        case 'pdo_mysql':
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
242
            $connectionParams['dbname'] = 'mysql';
243
            $connectionParams['user'] = getenv('ROOTUSER');
244
            $connectionParams['password'] = getenv('ROOTPASS');
245
            break;
246
        default:
247
        case 'pdo_sqlite':
248
            $connectionParams['dbname'] = '';
249
            if (file_exists($dbname)) {
250
                out('remove database to '.$dbname, 'info');
251
                unlink($dbname);
252
            }
253
            break;
254
    }
255
256
    $config = new \Doctrine\DBAL\Configuration();
257
    $conn = \Doctrine\DBAL\DriverManager::getConnection($connectionParams, $config);
258
    $sm = $conn->getSchemaManager();
259
    out('Created database connection...', 'info');
260
261
    if ($connectionParams['driver'] != 'pdo_sqlite') {
262
        $databases = $sm->listDatabases();
263
        if (in_array($dbname, $databases)) {
264
            out('database exists '.$dbname, 'info');
265
            out('drop database to '.$dbname, 'info');
266
            $sm->dropDatabase($dbname);
267
        }
268
    }
269
    out('create database to '.$dbname, 'info');
270
    $sm->createDatabase($dbname);
271
}
272
273
/**
274
 * @return \Eccube\Application
275
 */
276
function createApplication()
0 ignored issues
show
Coding Style introduced by
Consider putting global function "createApplication" in a static class
Loading history...
277
{
278
    $app = \Eccube\Application::getInstance();
279
    $app['debug'] = true;
280
    $app->initDoctrine();
281
    $app->initSecurity();
282
    $app->register(new \Silex\Provider\FormServiceProvider());
283
    $app->register(new \Eccube\ServiceProvider\EccubeServiceProvider());
284
    $app->boot();
285
    return $app;
0 ignored issues
show
introduced by
Missing blank line before return statement
Loading history...
286
}
287
288
function initializeDatabase(\Eccube\Application $app)
0 ignored issues
show
Coding Style introduced by
Consider putting global function "initializeDatabase" in a static class
Loading history...
introduced by
Missing function doc comment
Loading history...
289
{
290
    // Get an instance of your entity manager
291
    $entityManager = $app['orm.em'];
292
293
    // Clear Doctrine to be safe
294
    $entityManager->getConnection()->getConfiguration()->setSQLLogger(null);
295
    $entityManager->clear();
296
    gc_collect_cycles();
297
298
    // Schema Tool to process our entities
299
    $tool = new \Doctrine\ORM\Tools\SchemaTool($entityManager);
300
    $classes = $entityManager->getMetaDataFactory()->getAllMetaData();
301
302
    // Drop all classes and re-build them for each test case
303
    out('Dropping database schema...', 'info');
304
    $tool->dropSchema($classes);
305
    out('Creating database schema...', 'info');
306
    $tool->createSchema($classes);
307
    out('Database schema created successfully!', 'success');
308
    $config = new \Doctrine\DBAL\Migrations\Configuration\Configuration($app['db']);
309
    $config->setMigrationsNamespace('DoctrineMigrations');
310
311
    $loader = new \Eccube\Doctrine\Common\CsvDataFixtures\Loader();
312
    $loader->loadFromDirectory(__DIR__.'/src/Eccube/Resource/doctrine/import_csv');
313
    $Executor = new \Eccube\Doctrine\Common\CsvDataFixtures\Executor\DbalExecutor($entityManager);
314
    $fixtures = $loader->getFixtures();
315
    $Executor->execute($fixtures);
316
317
    $migrationDir = __DIR__.'/src/Eccube/Resource/doctrine/migration';
318
    $config->setMigrationsDirectory($migrationDir);
319
    $config->registerMigrationsFromDirectory($migrationDir);
320
321
    $migration = new \Doctrine\DBAL\Migrations\Migration($config);
322
    $migration->setNoMigrationException(true);
323
    $migration->migrate();
324
    out('Database migration successfully!', 'success');
325
326
    $login_id = getenv('ADMIN_USER');
327
    $login_password = getenv('ADMIN_PASS');
328
    $passwordEncoder = new \Eccube\Security\Core\Encoder\PasswordEncoder($app['config']);
329
    $salt = \Eccube\Util\Str::random(32);
330
    $encodedPassword = $passwordEncoder->encodePassword($login_password, $salt);
331
332
    out('Creating admin accounts...', 'info');
333
    $member_id = ('postgresql' === $app['db']->getDatabasePlatform()->getName())
334
        ? $app['db']->fetchColumn("select nextval('dtb_member_member_id_seq')")
335
        : null;
336
337
    $app['db']->insert('dtb_member', [
0 ignored issues
show
introduced by
Add a comma after each item in a multi-line array
Loading history...
338
        'member_id' => $member_id,
339
        'login_id' => $login_id,
340
        'password' => $encodedPassword,
341
        'salt' => $salt,
342
        'work' => 1,
343
        'del_flg' => 0,
344
        'authority' => 0,
345
        'creator_id' => 1,
346
        'rank' => 1,
347
        'update_date' => new \DateTime(),
348
        'create_date' => new \DateTime(),
349
        'name' => '管理者',
350
        'department' => 'EC-CUBE SHOP',
351
        'discriminator_type' => 'member'
352
    ], [
0 ignored issues
show
Coding Style introduced by
This line of the multi-line function call does not seem to be indented correctly. Expected 8 spaces, but found 4.
Loading history...
353
        'update_date' => Doctrine\DBAL\Types\Type::DATETIME,
354
        'create_date' => Doctrine\DBAL\Types\Type::DATETIME,
355
    ]);
356
357
    $shop_name = getenv('SHOP_NAME');
358
    $admin_mail = getenv('ADMIN_MAIL');
359
360
    $id = ('postgresql' === $app['db']->getDatabasePlatform()->getName())
361
        ? $app['db']->fetchColumn("select nextval('dtb_base_info_id_seq')")
362
        : null;
363
364
    $app['db']->insert('dtb_base_info', [
0 ignored issues
show
introduced by
Add a comma after each item in a multi-line array
Loading history...
365
        'id' => $id,
366
        'shop_name' => $shop_name,
367
        'email01' => $admin_mail,
368
        'email02' => $admin_mail,
369
        'email03' => $admin_mail,
370
        'email04' => $admin_mail,
371
        'update_date' => new \DateTime(),
372
        'discriminator_type' => 'baseinfo'
373
    ], [
0 ignored issues
show
introduced by
Add a comma after each item in a multi-line array
Loading history...
Coding Style introduced by
This line of the multi-line function call does not seem to be indented correctly. Expected 8 spaces, but found 4.
Loading history...
374
        'update_date' => \Doctrine\DBAL\Types\Type::DATETIME
375
    ]);
376
}
377
378
function updatePermissions($argv)
0 ignored issues
show
Coding Style introduced by
Consider putting global function "updatePermissions" in a static class
Loading history...
introduced by
Missing function doc comment
Loading history...
379
{
380
    $finder = \Symfony\Component\Finder\Finder::create();
381
    $finder
382
        ->in('html')->notName('.htaccess')
383
        ->in('app')->notName('console');
384
385
    $verbose = false;
386
    if (in_array('-V', $argv) || in_array('--verbose', $argv)) {
387
        $verbose = true;
388
    }
389
    foreach ($finder as $content) {
390
        $permission = $content->getPerms();
391
        // see also http://www.php.net/fileperms
392
        if (!($permission & 0x0010) || !($permission & 0x0002)) {
393
            $realPath = $content->getRealPath();
394
            if ($verbose) {
395
                out(sprintf('%s %s to ', $realPath, substr(sprintf('%o', $permission), -4)), 'info', false);
396
            }
397
            $permission = !($permission & 0x0020) ? $permission += 040 : $permission; // g+r
398
            $permission = !($permission & 0x0010) ? $permission += 020 : $permission; // g+w
399
            $permission = !($permission & 0x0004) ? $permission += 04 : $permission;  // o+r
400
            $permission = !($permission & 0x0002) ? $permission += 02 : $permission;  // o+w
401
            $result = chmod($realPath, $permission);
402
            if ($verbose) {
403
                if ($result) {
404
                    out(substr(sprintf('%o', $permission), -4), 'info');
405
                } else {
406
                    out('failure', 'error');
407
                }
408
            }
409
        }
410
    }
411
}
412
413
function createConfigFiles($database_driver)
0 ignored issues
show
Coding Style introduced by
Consider putting global function "createConfigFiles" in a static class
Loading history...
introduced by
Missing function doc comment
Loading history...
414
{
415
    $config_path = __DIR__.'/app/config/eccube';
416
    createYaml(getConfig(), $config_path.'/config.yml');
417
    createYaml(getDatabaseConfig($database_driver), $config_path.'/database.yml');
418
    createYaml(getMailConfig(), $config_path.'/mail.yml');
419
    createYaml(getPathConfig(), $config_path.'/path.yml');
420
}
421
422
function createYaml($config, $path)
0 ignored issues
show
Coding Style introduced by
Consider putting global function "createYaml" in a static class
Loading history...
introduced by
Missing function doc comment
Loading history...
423
{
424
    $content = \Symfony\Component\Yaml\Yaml::dump($config);
425
    $fs = new \Symfony\Component\Filesystem\Filesystem();
426
    $fs->dumpFile($path, $content);
427
}
428
429
function getConfig()
0 ignored issues
show
Coding Style introduced by
Consider putting global function "getConfig" in a static class
Loading history...
introduced by
Missing function doc comment
Loading history...
430
{
431
    $config = array (
432
        'auth_magic' => getenv('AUTH_MAGIC'),
433
        'password_hash_algos' => 'sha256',
434
        'shop_name' => getenv('SHOP_NAME'),
435
        'force_ssl' => NULL,
0 ignored issues
show
Coding Style introduced by
TRUE, FALSE and NULL must be lowercase; expected null, but found NULL.
Loading history...
436
        'admin_allow_host' =>
437
        array (
0 ignored issues
show
introduced by
Add a comma after each item in a multi-line array
Loading history...
438
        ),
439
        'cookie_lifetime' => 0,
440
        'locale' => 'ja',
441
        'timezone' => 'Asia/Tokyo',
442
        'eccube_install' => 1,
443
    );
444
    return $config;
0 ignored issues
show
introduced by
Missing blank line before return statement
Loading history...
445
}
446
447
function getDatabaseConfig($database_driver)
0 ignored issues
show
Coding Style introduced by
Consider putting global function "getDatabaseConfig" in a static class
Loading history...
introduced by
Missing function doc comment
Loading history...
448
{
449
    $database = array (
0 ignored issues
show
introduced by
Add a comma after each item in a multi-line array
Loading history...
450
        'database' =>
451
        array (
452
            'driver' => $database_driver,
453
        )
454
    );
455
456
    switch ($database_driver) {
457
        case 'pdo_sqlite':
458
            $database['database']['dbname'] = $database['database']['path'] = __DIR__.'/app/config/eccube/eccube.db';
459
460
            break;
461
        case 'pdo_pgsql':
462
        case 'pdo_mysql':
463
            $database['database']['host'] = getenv('DBSERVER');
464
            $database['database']['dbname'] = getenv('DBNAME');
465
            $database['database']['user'] = getenv('DBUSER');
466
            $database['database']['port'] = getenv('DBPORT');
467
            $database['database']['password'] = getenv('DBPASS');
468
            $database['database']['port'] = getenv('DBPORT');
469
            break;
470
    }
471
    $database['database']['charset'] = 'utf8';
472
    $database['database']['defaultTableOptions'] = array('collate' => 'utf8_general_ci');
473
    return $database;
0 ignored issues
show
introduced by
Missing blank line before return statement
Loading history...
474
}
475
476
function getMailConfig()
0 ignored issues
show
Coding Style introduced by
Consider putting global function "getMailConfig" in a static class
Loading history...
introduced by
Missing function doc comment
Loading history...
477
{
478
    $mail = array (
479
        'mail' =>
480
        array (
481
            'transport' => getenv('MAIL_BACKEND'),
482
            'host' => getenv('MAIL_HOST'),
483
            'port' => getenv('MAIL_PORT'),
484
            'username' => getenv('MAIL_USER'),
485
            'password' => getenv('MAIL_PASS'),
486
            'encryption' => NULL,
0 ignored issues
show
Coding Style introduced by
TRUE, FALSE and NULL must be lowercase; expected null, but found NULL.
Loading history...
487
            'auth_mode' => NULL,
0 ignored issues
show
Coding Style introduced by
TRUE, FALSE and NULL must be lowercase; expected null, but found NULL.
Loading history...
488
            'charset_iso_2022_jp' => false,
489
        ),
490
    );
491
    return $mail;
0 ignored issues
show
introduced by
Missing blank line before return statement
Loading history...
492
}
493
494
/**
495
 * @see \Eccube\Controller\Install\InstallController::createPathYamlFile()
496
 */
0 ignored issues
show
introduced by
Missing @return tag in function comment
Loading history...
497
function getPathConfig()
0 ignored issues
show
Coding Style introduced by
Consider putting global function "getPathConfig" in a static class
Loading history...
498
{
499
    $ADMIN_ROUTE = getenv('ADMIN_ROUTE');
500
    $TEMPLATE_CODE = 'default';
501
    $USER_DATA_ROUTE = 'user_data';
502
    $ROOT_DIR = realpath(__DIR__);
503
    $ROOT_URLPATH = getenv('ROOT_URLPATH');
504
    $ROOT_PUBLIC_URLPATH = $ROOT_URLPATH.RELATIVE_PUBLIC_DIR_PATH;
505
506
    $target = array('${ADMIN_ROUTE}', '${TEMPLATE_CODE}', '${USER_DATA_ROUTE}', '${ROOT_DIR}', '${ROOT_URLPATH}', '${ROOT_PUBLIC_URLPATH}');
507
    $replace = array($ADMIN_ROUTE, $TEMPLATE_CODE, $USER_DATA_ROUTE, $ROOT_DIR, $ROOT_URLPATH, $ROOT_PUBLIC_URLPATH);
508
    $content = str_replace(
509
        $target,
510
        $replace,
511
        file_get_contents(__DIR__.'/src/Eccube/Resource/config/path.yml.dist')
512
    );
513
    return \Symfony\Component\Yaml\Yaml::parse($content);
0 ignored issues
show
introduced by
Missing blank line before return statement
Loading history...
514
}
515
516
/**
0 ignored issues
show
introduced by
Doc comment for parameter "$argv" missing
Loading history...
517
 * @link https://github.com/composer/windows-setup/blob/master/src/php/installer.php
518
 */
519
function setUseAnsi($argv)
0 ignored issues
show
Coding Style introduced by
Consider putting global function "setUseAnsi" in a static class
Loading history...
520
{
521
    // --no-ansi wins over --ansi
522
    if (in_array('--no-ansi', $argv)) {
523
        define('USE_ANSI', false);
524
    } elseif (in_array('--ansi', $argv)) {
525
        define('USE_ANSI', true);
526
    } else {
527
        // On Windows, default to no ANSI, except in ANSICON and ConEmu.
528
        // Everywhere else, default to ANSI if stdout is a terminal.
529
        define(
530
            'USE_ANSI',
531
            (DIRECTORY_SEPARATOR == '\\')
532
                ? (false !== getenv('ANSICON') || 'ON' === getenv('ConEmuANSI'))
533
                : (function_exists('posix_isatty') && posix_isatty(1))
534
        );
535
    }
536
}
537
538
/**
0 ignored issues
show
introduced by
Doc comment for parameter "$text" missing
Loading history...
introduced by
Doc comment for parameter "$color" missing
Loading history...
introduced by
Doc comment for parameter "$newLine" missing
Loading history...
539
 * @link https://github.com/composer/windows-setup/blob/master/src/php/installer.php
540
 */
541
function out($text, $color = null, $newLine = true)
0 ignored issues
show
Coding Style introduced by
Consider putting global function "out" in a static class
Loading history...
542
{
543
    $styles = array(
0 ignored issues
show
introduced by
Add a comma after each item in a multi-line array
Loading history...
544
        'success' => "\033[0;32m%s\033[0m",
545
        'error' => "\033[31;31m%s\033[0m",
546
        'info' => "\033[33;33m%s\033[0m"
547
    );
548
    $format = '%s';
549
    if (isset($styles[$color]) && USE_ANSI) {
550
        $format = $styles[$color];
551
    }
552
    if ($newLine) {
553
        $format .= PHP_EOL;
554
    }
555
    printf($format, $text);
556
}
557