Failed Conditions
Pull Request — experimental/3.1 (#2494)
by chihiro
49:51 queued 21:25
created

eccube_install.php ➔ createPhp()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 5

Duplication

Lines 7
Ratio 100 %

Importance

Changes 0
Metric Value
cc 1
eloc 5
nc 1
nop 2
dl 7
loc 7
rs 9.4285
c 0
b 0
f 0
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`', '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':
237
            $connectionParams['dbname'] = 'postgres';
238
            $connectionParams['user'] = getenv('ROOTUSER');
239
            $connectionParams['password'] = getenv('ROOTPASS');
240
            break;
241 View Code Duplication
        case 'pdo_mysql':
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['annotations'] = function () {
281
        return new \Doctrine\Common\Annotations\AnnotationReader();
282
    };
283
    $app->initDoctrine();
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
    createPhp(getConfig(), $config_path.'/config.php');
417
    createPhp(getDatabaseConfig($database_driver), $config_path.'/database.php');
418
    createPhp(getMailConfig(), $config_path.'/mail.php');
419
    createPhp(getPathConfig(), $config_path.'/path.php');
420
}
421
422 View Code Duplication
function createPhp($config, $path)
0 ignored issues
show
introduced by
Missing function doc comment
Loading history...
Duplication introduced by
This function seems to be duplicated in 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...
Coding Style introduced by
Consider putting global function "createPhp" in a static class
Loading history...
423
{
424
    $content = var_export($config, true);
425
    $content = '<?php return '.$content.';'.PHP_EOL;
426
    $fs = new \Symfony\Component\Filesystem\Filesystem();
427
    $fs->dumpFile($path, $content);
428
}
429
430
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...
431
{
432
    $config = array (
433
        'auth_magic' => getenv('AUTH_MAGIC'),
434
        'password_hash_algos' => 'sha256',
435
        'shop_name' => getenv('SHOP_NAME'),
436
        '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...
437
        'admin_allow_host' =>
438
        array (
0 ignored issues
show
introduced by
Add a comma after each item in a multi-line array
Loading history...
439
        ),
440
        'cookie_lifetime' => 0,
441
        'locale' => 'ja',
442
        'timezone' => 'Asia/Tokyo',
443
        'currency' => 'JPY',
444
        'eccube_install' => 1,
445
    );
446
    return $config;
0 ignored issues
show
introduced by
Missing blank line before return statement
Loading history...
447
}
448
449
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...
450
{
451
    $database = array (
0 ignored issues
show
introduced by
Add a comma after each item in a multi-line array
Loading history...
452
        'database' =>
453
        array (
454
            'driver' => $database_driver,
455
        )
456
    );
457
458
    switch ($database_driver) {
459
        case 'pdo_sqlite':
460
            $database['database']['dbname'] = $database['database']['path'] = __DIR__.'/app/config/eccube/eccube.db';
461
462
            break;
463
        case 'pdo_pgsql':
464
        case 'pdo_mysql':
465
            $database['database']['host'] = getenv('DBSERVER');
466
            $database['database']['dbname'] = getenv('DBNAME');
467
            $database['database']['user'] = getenv('DBUSER');
468
            $database['database']['port'] = getenv('DBPORT');
469
            $database['database']['password'] = getenv('DBPASS');
470
            $database['database']['port'] = getenv('DBPORT');
471
            break;
472
    }
473
    $database['database']['charset'] = 'utf8';
474
    $database['database']['defaultTableOptions'] = array('collate' => 'utf8_general_ci');
475
    return $database;
0 ignored issues
show
introduced by
Missing blank line before return statement
Loading history...
476
}
477
478
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...
479
{
480
    $mail = array (
481
        'mail' =>
482
        array (
483
            'transport' => getenv('MAIL_BACKEND'),
484
            'host' => getenv('MAIL_HOST'),
485
            'port' => getenv('MAIL_PORT'),
486
            'username' => getenv('MAIL_USER'),
487
            'password' => getenv('MAIL_PASS'),
488
            'encryption' => NULL,
0 ignored issues
show
Coding Style introduced by
TRUE, FALSE and NULL must be lowercase; expected null, but found NULL.
Loading history...
489
            '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...
490
            'charset_iso_2022_jp' => false,
491
        ),
492
    );
493
    return $mail;
0 ignored issues
show
introduced by
Missing blank line before return statement
Loading history...
494
}
495
496
/**
497
 * @see \Eccube\Controller\Install\InstallController::createPathYamlFile()
498
 */
0 ignored issues
show
introduced by
Missing @return tag in function comment
Loading history...
499
function getPathConfig()
0 ignored issues
show
Coding Style introduced by
Consider putting global function "getPathConfig" in a static class
Loading history...
500
{
501
    $ADMIN_ROUTE = getenv('ADMIN_ROUTE');
502
    $TEMPLATE_CODE = 'default';
503
    $USER_DATA_ROUTE = 'user_data';
504
    $ROOT_DIR = '%ROOT_DIR%';
505
    $ROOT_URLPATH = getenv('ROOT_URLPATH');
506
    $ROOT_PUBLIC_URLPATH = $ROOT_URLPATH.RELATIVE_PUBLIC_DIR_PATH;
507
508
    $target = array('${ADMIN_ROUTE}', '${TEMPLATE_CODE}', '${USER_DATA_ROUTE}', '${ROOT_DIR}', '${ROOT_URLPATH}', '${ROOT_PUBLIC_URLPATH}');
509
    $replace = array($ADMIN_ROUTE, $TEMPLATE_CODE, $USER_DATA_ROUTE, $ROOT_DIR, $ROOT_URLPATH, $ROOT_PUBLIC_URLPATH);
510
511
    $config = require __DIR__.'/src/Eccube/Resource/config/path.php';
512
    foreach ($config as &$value) {
513
        $value = str_replace($target, $replace, $value);
514
    }
515
    return $config;
0 ignored issues
show
introduced by
Missing blank line before return statement
Loading history...
516
}
517
518
/**
0 ignored issues
show
introduced by
Doc comment for parameter "$argv" missing
Loading history...
519
 * @link https://github.com/composer/windows-setup/blob/master/src/php/installer.php
520
 */
521
function setUseAnsi($argv)
0 ignored issues
show
Coding Style introduced by
Consider putting global function "setUseAnsi" in a static class
Loading history...
522
{
523
    // --no-ansi wins over --ansi
524
    if (in_array('--no-ansi', $argv)) {
525
        define('USE_ANSI', false);
526
    } elseif (in_array('--ansi', $argv)) {
527
        define('USE_ANSI', true);
528
    } else {
529
        // On Windows, default to no ANSI, except in ANSICON and ConEmu.
530
        // Everywhere else, default to ANSI if stdout is a terminal.
531
        define(
532
            'USE_ANSI',
533
            (DIRECTORY_SEPARATOR == '\\')
534
                ? (false !== getenv('ANSICON') || 'ON' === getenv('ConEmuANSI'))
535
                : (function_exists('posix_isatty') && posix_isatty(1))
536
        );
537
    }
538
}
539
540
/**
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...
541
 * @link https://github.com/composer/windows-setup/blob/master/src/php/installer.php
542
 */
543
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...
544
{
545
    $styles = array(
0 ignored issues
show
introduced by
Add a comma after each item in a multi-line array
Loading history...
546
        'success' => "\033[0;32m%s\033[0m",
547
        'error' => "\033[31;31m%s\033[0m",
548
        'info' => "\033[33;33m%s\033[0m"
549
    );
550
    $format = '%s';
551
    if (isset($styles[$color]) && USE_ANSI) {
552
        $format = $styles[$color];
553
    }
554
    if ($newLine) {
555
        $format .= PHP_EOL;
556
    }
557
    printf($format, $text);
558
}
559