Example #1
0
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     global $yf_paths;
     require_once $yf_paths['db_setup_path'];
     init_yf();
     $params = [];
     // Parse arguments like that: k1=v1 k2=v2 into array('k1' => 'v1', 'k2' => 'v2')
     foreach ((array) $input->getArgument('params') as $p) {
         list($k, $v) = explode('=', trim($p));
         $k = trim($k);
         $v = trim($v);
         if (strlen($k) && strlen($v)) {
             $params[$k] = $v;
         }
     }
     $method = $input->getArgument('method');
     $methods = ['compare' => 'compare', 'generate' => 'generate', 'create' => 'create', 'apply' => 'apply', 'list' => '_list', 'dump' => 'dump', 'sync' => 'sync'];
     if ($method && isset($methods[$method])) {
         $func = $methods[$method];
         $text = db()->migrator()->{$func}($params);
         if (is_array($text)) {
             $text = _var_export($text);
         }
         $output->writeln($text);
     } else {
         $table = $this->getHelperSet()->get('table');
         $rows = [];
         foreach ($methods as $name => $real_name) {
             $rows[] = [$name];
         }
         $table->setHeaders(['Sub-commands'])->setRows($rows);
         $table->render($output);
     }
 }
Example #2
0
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     global $yf_paths;
     require_once $yf_paths['db_setup_path'];
     init_yf();
     $params = [];
     // Parse arguments like that: k1=v1 k2=v2 into array('k1' => 'v1', 'k2' => 'v2')
     foreach ((array) $input->getArgument('params') as $p) {
         list($k, $v) = explode('=', trim($p));
         $k = trim($k);
         $v = trim($v);
         if (strlen($k) && strlen($v)) {
             $params[$k] = $v;
         }
     }
     $method = $input->getArgument('method');
     $methods = [];
     $methods[] = 'conf';
     foreach (get_class_methods(db()->utils()) as $v) {
         if (substr($v, 0, 1) !== '_') {
             $methods[] = $v;
         }
     }
     $methods = array_combine($methods, $methods);
     if ($method == 'conf' || $method == 'get_conf') {
         $vars = ['DB_TYPE' => DB_TYPE, 'DB_HOST' => DB_HOST, 'DB_NAME' => DB_NAME, 'DB_USER' => DB_USER, 'DB_PSWD' => DB_PSWD, 'DB_PREFIX' => DB_PREFIX, 'DB_CHARSET' => DB_CHARSET];
         $output->writeln(_var_export($vars));
     } elseif ($method && isset($methods[$method])) {
         $func = $methods[$method];
         $text = db()->utils()->{$func}($params);
         if (is_array($text)) {
             $text = _var_export($text);
         }
         $output->writeln($text);
     } else {
         $table = $this->getHelperSet()->get('table');
         $rows = [];
         foreach ($methods as $name => $real_name) {
             $rows[] = [$name];
         }
         $table->setHeaders(['Sub-commands'])->setRows($rows);
         $table->render($output);
     }
 }
Example #3
0
 /**
  */
 public function _migration_commands_into_string($cmds = [], $num_tabs = 2)
 {
     // TODO: use new syntax with create_table() closures
     $TAB = "\t";
     $prefix = str_repeat($TAB, $num_tabs) . '$utils->';
     $a = [];
     $a[] = str_repeat($TAB, $num_tabs) . '$utils = $this->db->utils();';
     foreach ((array) $cmds as $c) {
         $name = $c['cmd'];
         unset($c['cmd']);
         $body = [];
         foreach ($c as $k => $v) {
             if (is_array($v)) {
                 $body[] = str_replace(PHP_EOL, PHP_EOL . str_repeat($TAB, $num_tabs), _var_export($v));
             } else {
                 $body[] = '\'' . addslashes($v) . '\'';
             }
         }
         $a[] = $prefix . $name . '(' . implode(', ', $body) . ');';
     }
     return implode(PHP_EOL, $a);
 }
Example #4
0
if (!function_exists('main')) {
    require YF_PATH . 'classes/yf_main.class.php';
    #	new yf_main('admin', $no_db_connect = false, $auto_init_all = true);
    new yf_main('user', $no_db_connect = false, $auto_init_all = true);
}
###########
mkdir('./sql/', 0755, true);
mkdir('./data/', 0755, true);
$db_tables_like = $db_tables_like ?: '%';
foreach ((array) db()->get_2d('SHOW TABLES LIKE "' . DB_PREFIX . $db_tables_like . '"') as $table) {
    echo $table . PHP_EOL;
    $tname = substr($table, strlen(DB_PREFIX));
    $db_create_sql = current(db()->get_2d('SHOW CREATE TABLE ' . $table));
    $p1 = strpos($db_create_sql, '(') + 1;
    $p2 = strrpos($db_create_sql, ')');
    $db_create_sql = trim(substr($db_create_sql, $p1, $p2 - $p1));
    $db_create_sql = str_replace('  ', "\t", '  ' . $db_create_sql);
    $file_sql = './sql/' . $tname . '.sql.php';
    echo $file_sql . PHP_EOL;
    file_put_contents($file_sql, '<?' . 'php' . PHP_EOL . 'return \'' . PHP_EOL . addslashes($db_create_sql) . PHP_EOL . '\';');
    if (false !== strpos($table, 'sys_log_') || false !== strpos($table, '_revisions')) {
        continue;
    }
    $data = db()->get_all('SELECT * FROM ' . $table);
    if (empty($data)) {
        continue;
    }
    $file_data = './data/' . $tname . '.data.php';
    echo $file_data . PHP_EOL;
    file_put_contents($file_data, '<?' . 'php' . PHP_EOL . 'return ' . _var_export($data, 1) . ';');
}
Example #5
0
        $lang = substr($fname, -strlen('.sql') - 2, -strlen('.sql'));
        $dir = './data_' . $lang . '/';
        mkdir($dir, 0755, true);
        foreach (explode(';' . PHP_EOL, file_get_contents($f)) as $sql) {
            if (preg_match('/%%prefix%%([a-z0-9_]+)/ims', $sql, $m)) {
                $t = trim($m[1]);
                $create_sql = get_table_create_sql($t);
                if (!$create_sql) {
                    continue;
                }
                db()->query($create_sql);
                db()->query('TRUNCATE TABLE ' . DB_PREFIX . $t);
                db()->query(str_replace('%%prefix%%', DB_PREFIX, $sql));
                $data = db()->get_all('SELECT * FROM ' . DB_PREFIX . $t);
                if (!empty($data)) {
                    file_put_contents($dir . $t . '.data.php', '<?' . 'php' . PHP_EOL . 'return ' . _var_export($data, 1) . ';');
                }
            }
        }
    } else {
        db()->query(get_table_create_sql($table));
        db()->query('TRUNCATE TABLE ' . DB_PREFIX . $table);
        db()->query(str_replace('%%prefix%%', DB_PREFIX, file_get_contents($f)));
        $data = db()->get_all('SELECT * FROM ' . $tname);
        if (!empty($data)) {
            file_put_contents('./data/' . $table . '.data.php', '<?' . 'php' . PHP_EOL . 'return ' . _var_export($data, 1) . ';');
        }
    }
}
#db()->query('DROP DATABASE IF EXISTS '.DB_NAME);
#exec('mysql -h '.escapeshellarg(DB_HOST).' -u '.escapeshellarg(DB_USER).' -p'.escapeshellarg(DB_PSWD).' -e "DROP DATABASE IF EXISTS '.DB_NAME.'"');
Example #6
0
$d = __DIR__ . '/db_table_sql/';
if (!file_exists($d)) {
    mkdir($d, 0755, true);
}
foreach (glob(__DIR__ . '/installer*_structs.php') as $_file) {
    $data = [];
    require_once $_file;
    foreach ((array) $data as $k => $v) {
        if (false !== strpos($_file, '_sys_')) {
            $k = 'sys_' . $k;
        }
        $f = $d . $k . '.db_table_sql.php';
        file_put_contents($f, '<' . '?php' . PHP_EOL . 'return ' . _var_export($v, 1) . ';');
    }
}
###############
$d = __DIR__ . '/db_table_datas/';
if (!file_exists($d)) {
    mkdir($d, 0755, true);
}
foreach (glob(__DIR__ . '/installer*_datas.php') as $_file) {
    $data = [];
    require_once $_file;
    foreach ((array) $data as $k => $v) {
        if (false !== strpos($_file, '_sys_')) {
            $k = 'sys_' . $k;
        }
        $f = $d . $k . '.db_table_data.php';
        file_put_contents($f, '<' . '?php' . PHP_EOL . 'return ' . _var_export($v, 1) . ';');
    }
}
Example #7
0
File: compare.php Project: yfix/yf
#!/usr/bin/php
<?php 
require_once dirname(__DIR__) . '/scripts_init.php';
$report = db()->migrator()->compare();
echo _var_export($report) . PHP_EOL;
Example #8
0
 /**
  */
 function _var_export($var)
 {
     if (defined('HHVM_VERSION')) {
         return is_array($var) ? print_r($var, 1) : $var;
     } else {
         return _var_export($var);
     }
 }
Example #9
0
        echo '++ sql_php: ' . $sql_php_file . PHP_EOL;
        if (file_exists($sql_php_file)) {
            #			echo 'exists, skipped'. PHP_EOL;
            #			continue;
        }
        $sql_php_dir = dirname($sql_php_file);
        if (!file_exists($sql_php_dir)) {
            mkdir($sql_php_dir, 0755, true);
        }
        $data = (include $f);
        // $data should be loaded from file
        if (!$data) {
            echo '-- ERROR: empty data' . PHP_EOL;
            continue;
        }
        $a = _class('db_installer_mysql', 'classes/db/')->create_table_sql_to_php($data);
        if (isset($a['name'])) {
            unset($a['name']);
        }
        if (!$a) {
            echo '-- ERROR: empty sql_php' . PHP_EOL;
            continue;
        }
        #		print_r($a);
        $body = '<?' . 'php' . PHP_EOL . 'return ' . _var_export($a, 1) . ';' . PHP_EOL;
        if (file_exists($sql_php_file) && md5($body) == md5(file_get_contents($sql_php_file))) {
            continue;
        }
        file_put_contents($sql_php_file, $body);
    }
}