app/DoctrineMigrations/Version20210412073123.php line 1

Open in your IDE?
  1. <?php
    
    declare(strict_types=1);
    
    /*
     * This file is part of EC-CUBE
     *
     * Copyright(c) EC-CUBE CO.,LTD. All Rights Reserved.
     *
     * http://www.ec-cube.co.jp/
     *
     * For the full copyright and license information, please view the LICENSE
     * file that was distributed with this source code.
     */
    
    namespace DoctrineMigrations;
    
    use Doctrine\DBAL\Schema\Schema;
    use Doctrine\Migrations\AbstractMigration;
    use Eccube\Entity\Master\LoginHistoryStatus;
    use Eccube\Util\StringUtil;
    
    /**
     * Auto-generated Migration: Please modify to your needs!
     */
    final class Version20210412073123 extends AbstractMigration
    {
        public function up(Schema $schema): void
        {
            if ($schema->hasTable('plg_admin_record_config')) {
                $denyHostsPlugin = $this->connection->fetchOne('select admin_deny_hosts FROM plg_admin_record_config') ?: '';
                $denyHostsPlugin = array_filter(\explode("\n", StringUtil::convertLineFeed($denyHostsPlugin)), function ($str) {
                    return StringUtil::isNotBlank($str);
                });
    
                $denyHosts = array_merge(env('ECCUBE_ADMIN_DENY_HOSTS', []), $denyHostsPlugin);
                $denyHosts = array_values(array_unique($denyHosts));
    
                $denyHosts = \json_encode($denyHosts);
    
                $envFile = __DIR__.'/../../.env';
                $env = file_get_contents($envFile);
    
                $env = StringUtil::replaceOrAddEnv($env, [
                    'ECCUBE_ADMIN_DENY_HOSTS' => "'${denyHosts}'",
                ]);
    
                file_put_contents($envFile, $env);
            }
    
            if ($schema->hasTable('plg_admin_record')) {
                $stmt = $this->connection->createQueryBuilder()
                    ->select('*')
                    ->from('plg_admin_record')
                    ->orderBy('id', 'ASC')
                    ->execute();
    
                while ($row = $stmt->fetch()) {
                    $this->addSql(
                        "INSERT INTO dtb_login_history (user_name, client_ip, create_date, update_date, login_history_status_id, member_id, discriminator_type) VALUES (?, ?, ?, ?, ?, ?, 'loginhistory')",
                        [
                            $row['user_name'],
                            $row['client_ip'],
                            $row['create_date'],
                            $row['update_date'],
                            $row['success_flg'] ? LoginHistoryStatus::SUCCESS : LoginHistoryStatus::FAILURE,
                            $row['member_id'],
                        ]
                    );
                }
            }
        }
    
        public function down(Schema $schema): void
        {
            if ($schema->hasTable('dtb_login_history')) {
                $this->addSql('DELETE FROM dtb_login_history');
            }
        }
    }