<?php 
namespace App\Commands; 
 
use \Jackbooted\Config\Cfg; 
use \Jackbooted\DB\DB; 
 
class InstallationCLI extends \Jackbooted\Html\WebPage { 
 
    public static function init () { 
        self::$log = \Jackbooted\Util\Log4PHP::logFactory ( __CLASS__ ); 
    } 
 
    public static function initialize() 
    { 
        $dbType     = Cfg::get( 'local-driver' ); 
 
        switch ( $dbType ) { 
            case DB::SQLITE: 
                $dbFileName = Cfg::get( 'local-host' ); 
                echo "Checking that the file $dbFileName exists\n"; 
 
                if ( file_exists( $dbFileName ) ) { 
                    echo "Database exists ($dbFileName)\n"; 
                } 
                else { 
                    echo "Creating empty database\n"; 
                    touch( $dbFileName ); 
                } 
                break; 
 
            case DB::MYSQL: 
                $fldHostName = Cfg::get( 'local-host' ); 
                $fldDBName   = Cfg::get( 'local-db' ); 
                $fldUsername = Cfg::get( 'local-user' ); 
                $fldPassword = Cfg::get( 'local-pass' ); 
                try { 
                    $dbh = new \PDO( "mysql:host=$fldHostName", $fldUsername, $fldPassword ); 
                    $dbh->exec( "CREATE DATABASE IF NOT EXISTS $fldDBName" ) or die( print_r( $dbh->errorInfo(), true ) ); 
                } 
                catch (PDOException $e) { 
                    die( "DB ERROR: ". $e->getMessage() ); 
                } 
                break; 
 
            default: 
                die( "Unsupported DB Type: $dbType" ); 
        } 
 
        if ( count ( \Jackbooted\DB\DBMaintenance::getTableList() ) == 0 ) { 
            // Put in the base data 
            $sqlFileName = Cfg::get ( 'tmp_path' ) . '/base_database.sql'; 
            if ( file_exists( $sqlFileName ) ) { 
                echo "Running the commands in $sqlFileName against the database\n"; 
                foreach ( explode( ';', file_get_contents( $sqlFileName ) ) as $statement ) { 
                    DB::exec( DB::DEF, $statement ); 
                } 
            } 
            else { 
                die( "Base Database file does not exists ($sqlFileName) aborting\n" ); 
            } 
        } 
        else { 
            die( "Database already seems to be set up." ); 
        } 
 
 
        echo "audititing Table - AlertsDAO\n"; 
        ( new \App\Models\AlertsDAO )->auditTable(); 
        return ''; 
    } 
} 
 
 |