eccube_install.php ➔ getDatabaseConfig()   B
last analyzed

Complexity

Conditions 4
Paths 4

Size

Total Lines 28
Code Lines 21

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 4
eloc 21
nc 4
nop 1
dl 0
loc 28
rs 8.5806
c 0
b 0
f 0
1
<?php
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':
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->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
    $pdo = $entityManager->getConnection()->getWrappedConnection();
294
295
    // Clear Doctrine to be safe
296
    $entityManager->getConnection()->getConfiguration()->setSQLLogger(null);
297
    $entityManager->clear();
298
    gc_collect_cycles();
299
300
    // Schema Tool to process our entities
301
    $tool = new \Doctrine\ORM\Tools\SchemaTool($entityManager);
302
    $classes = $entityManager->getMetaDataFactory()->getAllMetaData();
303
304
    // Drop all classes and re-build them for each test case
305
    out('Dropping database schema...', 'info');
306
    $tool->dropSchema($classes);
307
    out('Creating database schema...', 'info');
308
    $tool->createSchema($classes);
309
    out('Database schema created successfully!', 'success');
310
    $config = new \Doctrine\DBAL\Migrations\Configuration\Configuration($app['db']);
311
    $config->setMigrationsNamespace('DoctrineMigrations');
312
313
    $migrationDir = __DIR__.'/src/Eccube/Resource/doctrine/migration';
314
    $config->setMigrationsDirectory($migrationDir);
315
    $config->registerMigrationsFromDirectory($migrationDir);
316
317
    $migration = new \Doctrine\DBAL\Migrations\Migration($config);
318
    $migration->migrate();
319
    out('Database migration successfully!', 'success');
320
321
    $login_id = getenv('ADMIN_USER');
322
    $login_password = getenv('ADMIN_PASS');
323
    $passwordEncoder = new \Eccube\Security\Core\Encoder\PasswordEncoder($app['config']);
324
    $salt = \Eccube\Util\Str::random(32);
325
    $encodedPassword = $passwordEncoder->encodePassword($login_password, $salt);
326
327
    out('Creating admin accounts...', 'info');
328
    $sql = "INSERT INTO dtb_member (member_id, login_id, password, salt, work, del_flg, authority, creator_id, rank, update_date, create_date,name,department) VALUES (2, :login_id, :admin_pass , :salt , '1', '0', '0', '1', '1', current_timestamp, current_timestamp,'管理者', 'EC-CUBE SHOP');";
329
    $stmt = $pdo->prepare($sql);
330
    $stmt->execute(
331
        array(
0 ignored issues
show
introduced by
Add a comma after each item in a multi-line array
Loading history...
332
            ':login_id' => $login_id,
333
            ':admin_pass' => $encodedPassword,
334
            ':salt' => $salt
335
        )
336
    );
337
    $stmt->closeCursor();
338
339
    $shop_name = getenv('SHOP_NAME');
340
    $admin_mail = getenv('ADMIN_MAIL');
341
    $sql = "INSERT INTO dtb_base_info (id, shop_name, email01, email02, email03, email04, update_date, option_product_tax_rule) VALUES (1, :shop_name, :admin_mail1, :admin_mail2, :admin_mail3, :admin_mail4, current_timestamp, 0)";
342
    $stmt = $pdo->prepare($sql);
343
    $stmt->execute(
344
        array(
345
            ':shop_name' => $shop_name,
346
            ':admin_mail1' => $admin_mail,
347
            ':admin_mail2' => $admin_mail,
348
            ':admin_mail3' => $admin_mail,
349
            ':admin_mail4' => $admin_mail,
350
        )
351
    );
352
    $stmt->closeCursor();
353
}
354
355
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...
356
{
357
    $finder = \Symfony\Component\Finder\Finder::create();
358
    $finder
359
        ->in('html')->notName('.htaccess')
360
        ->in('app')->notName('console');
361
362
    $verbose = false;
363
    if (in_array('-V', $argv) || in_array('--verbose', $argv)) {
364
        $verbose = true;
365
    }
366
    foreach ($finder as $content) {
367
        $permission = $content->getPerms();
368
        // see also http://www.php.net/fileperms
369
        if (!($permission & 0x0010) || !($permission & 0x0002)) {
370
            $realPath = $content->getRealPath();
371
            if ($verbose) {
372
                out(sprintf('%s %s to ', $realPath, substr(sprintf('%o', $permission), -4)), 'info', false);
373
            }
374
            $permission = !($permission & 0x0020) ? $permission += 040 : $permission; // g+r
375
            $permission = !($permission & 0x0010) ? $permission += 020 : $permission; // g+w
376
            $permission = !($permission & 0x0004) ? $permission += 04 : $permission;  // o+r
377
            $permission = !($permission & 0x0002) ? $permission += 02 : $permission;  // o+w
378
            $result = chmod($realPath, $permission);
379
            if ($verbose) {
380
                if ($result) {
381
                    out(substr(sprintf('%o', $permission), -4), 'info');
382
                } else {
383
                    out('failure', 'error');
384
                }
385
            }
386
        }
387
    }
388
}
389
390
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...
391
{
392
    $config_path = __DIR__.'/app/config/eccube';
393
    createYaml(getConfig(), $config_path.'/config.yml');
394
    createYaml(getDatabaseConfig($database_driver), $config_path.'/database.yml');
395
    createYaml(getMailConfig(), $config_path.'/mail.yml');
396
    createYaml(getPathConfig(), $config_path.'/path.yml');
397
}
398
399
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...
400
{
401
    $content = \Symfony\Component\Yaml\Yaml::dump($config);
402
    $fs = new \Symfony\Component\Filesystem\Filesystem();
403
    $fs->dumpFile($path, $content);
404
}
405
406
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...
407
{
408
    $config = array (
409
        'auth_magic' => getenv('AUTH_MAGIC'),
410
        'password_hash_algos' => 'sha256',
411
        'shop_name' => getenv('SHOP_NAME'),
412
        '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...
413
        'admin_allow_host' =>
414
        array (
0 ignored issues
show
introduced by
Add a comma after each item in a multi-line array
Loading history...
415
        ),
416
        'cookie_lifetime' => 0,
417
        'locale' => 'ja',
418
        'timezone' => 'Asia/Tokyo',
419
        'eccube_install' => 1,
420
    );
421
    return $config;
0 ignored issues
show
introduced by
Missing blank line before return statement
Loading history...
422
}
423
424
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...
425
{
426
    $database = array (
0 ignored issues
show
introduced by
Add a comma after each item in a multi-line array
Loading history...
427
        'database' =>
428
        array (
429
            'driver' => $database_driver,
430
        )
431
    );
432
433
    switch ($database_driver) {
434
        case 'pdo_sqlite':
435
            $database['database']['dbname'] = $database['database']['path'] = __DIR__.'/app/config/eccube/eccube.db';
436
437
            break;
438
        case 'pdo_pgsql':
439
        case 'pdo_mysql':
440
            $database['database']['host'] = getenv('DBSERVER');
441
            $database['database']['dbname'] = getenv('DBNAME');
442
            $database['database']['user'] = getenv('DBUSER');
443
            $database['database']['port'] = getenv('DBPORT');
444
            $database['database']['password'] = getenv('DBPASS');
445
            $database['database']['port'] = getenv('DBPORT');
446
            break;
447
    }
448
    $database['database']['charset'] = 'utf8';
449
    $database['database']['defaultTableOptions'] = array('collate' => 'utf8_general_ci');
450
    return $database;
0 ignored issues
show
introduced by
Missing blank line before return statement
Loading history...
451
}
452
453
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...
454
{
455
    $mail = array (
456
        'mail' =>
457
        array (
458
            'transport' => getenv('MAIL_BACKEND'),
459
            'host' => getenv('MAIL_HOST'),
460
            'port' => getenv('MAIL_PORT'),
461
            'username' => getenv('MAIL_USER'),
462
            'password' => getenv('MAIL_PASS'),
463
            'encryption' => NULL,
0 ignored issues
show
Coding Style introduced by
TRUE, FALSE and NULL must be lowercase; expected null, but found NULL.
Loading history...
464
            '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...
465
            'charset_iso_2022_jp' => false,
466
            'use_spool' => true,
467
        ),
468
    );
469
    return $mail;
0 ignored issues
show
introduced by
Missing blank line before return statement
Loading history...
470
}
471
472
/**
473
 * @see \Eccube\Controller\Install\InstallController::createPathYamlFile()
474
 */
0 ignored issues
show
introduced by
Missing @return tag in function comment
Loading history...
475
function getPathConfig()
0 ignored issues
show
Coding Style introduced by
Consider putting global function "getPathConfig" in a static class
Loading history...
476
{
477
    $ADMIN_ROUTE = getenv('ADMIN_ROUTE');
478
    $TEMPLATE_CODE = 'default';
479
    $USER_DATA_ROUTE = 'user_data';
480
    $ROOT_DIR = realpath(__DIR__);
481
    $ROOT_URLPATH = getenv('ROOT_URLPATH');
482
    $ROOT_PUBLIC_URLPATH = $ROOT_URLPATH.RELATIVE_PUBLIC_DIR_PATH;
483
484
    $target = array('${ADMIN_ROUTE}', '${TEMPLATE_CODE}', '${USER_DATA_ROUTE}', '${ROOT_DIR}', '${ROOT_URLPATH}', '${ROOT_PUBLIC_URLPATH}');
485
    $replace = array($ADMIN_ROUTE, $TEMPLATE_CODE, $USER_DATA_ROUTE, $ROOT_DIR, $ROOT_URLPATH, $ROOT_PUBLIC_URLPATH);
486
    $content = str_replace(
487
        $target,
488
        $replace,
489
        file_get_contents(__DIR__.'/src/Eccube/Resource/config/path.yml.dist')
490
    );
491
    return \Symfony\Component\Yaml\Yaml::parse($content);
0 ignored issues
show
introduced by
Missing blank line before return statement
Loading history...
492
}
493
494
/**
0 ignored issues
show
introduced by
Doc comment for parameter "$argv" missing
Loading history...
495
 * @link https://github.com/composer/windows-setup/blob/master/src/php/installer.php
496
 */
497
function setUseAnsi($argv)
0 ignored issues
show
Coding Style introduced by
Consider putting global function "setUseAnsi" in a static class
Loading history...
498
{
499
    // --no-ansi wins over --ansi
500
    if (in_array('--no-ansi', $argv)) {
501
        define('USE_ANSI', false);
502
    } elseif (in_array('--ansi', $argv)) {
503
        define('USE_ANSI', true);
504
    } else {
505
        // On Windows, default to no ANSI, except in ANSICON and ConEmu.
506
        // Everywhere else, default to ANSI if stdout is a terminal.
507
        define(
508
            'USE_ANSI',
509
            (DIRECTORY_SEPARATOR == '\\')
510
                ? (false !== getenv('ANSICON') || 'ON' === getenv('ConEmuANSI'))
511
                : (function_exists('posix_isatty') && posix_isatty(1))
512
        );
513
    }
514
}
515
516
/**
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...
517
 * @link https://github.com/composer/windows-setup/blob/master/src/php/installer.php
518
 */
519
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...
520
{
521
    $styles = array(
0 ignored issues
show
introduced by
Add a comma after each item in a multi-line array
Loading history...
522
        'success' => "\033[0;32m%s\033[0m",
523
        'error' => "\033[31;31m%s\033[0m",
524
        'info' => "\033[33;33m%s\033[0m"
525
    );
526
    $format = '%s';
527
    if (isset($styles[$color]) && USE_ANSI) {
528
        $format = $styles[$color];
529
    }
530
    if ($newLine) {
531
        $format .= PHP_EOL;
532
    }
533
    printf($format, $text);
534
}
535