public static function cmd_database() { \System\Init::full(); $db_list = \System\Settings::get('database', 'list'); foreach ($db_list as $db_ident => $db_cfg) { $size = \System\Database::query("\n\t\t\t\t\tSELECT\n\t\t\t\t\t\t\tsum(data_length + index_length) 'size',\n\t\t\t\t\t\t\tsum( data_free ) 'free'\n\t\t\t\t\t\tFROM information_schema.TABLES\n\t\t\t\t\t\tWHERE table_schema = '" . $db_cfg['database'] . "'\n\t\t\t\t\t\tGROUP BY table_schema;\n\t\t\t\t")->fetch(); $mlast_date = false; $mcount = 0; try { $mig = \System\Database\Migration::get_new(); $mcount = count($mig); $stat = "Ok"; $mlast = \System\Database\Migration::get_first()->where(array("status" => 'ok'))->sort_by("updated_at DESC")->fetch(); if ($mlast) { $mlast_date = $mlast->updated_at; } } catch (System\Error $e) { $stat = "Migrating database is necessary."; } \Helper\Cli::out('Database ' . $db_ident); \Helper\Cli::sep(); \Helper\Cli::out_flist(array("list" => array("Driver" => $db_cfg['driver'], "Host name" => $db_cfg['host'], "Database name" => $db_cfg['database'], "User" => $db_cfg['username'], "Used charset" => $db_cfg['charset'], "Lazy driver" => $db_cfg['lazy'] ? 'yes' : 'no', "Size" => \System\Template::convert_value('information', $size['size']), "Free space" => \System\Template::convert_value('information', $size['free']), "Structure" => $stat, "Last migrated" => $mlast_date ? $mlast_date->format('Y-m-d H:i:s') : 'never', "New migrations" => $mcount))); } }
/** Format and translate datetime format * @param DateTime|int|null $date Date to format. Takes current time if null. * @param string $format Format name or format directly * @param int $translate 0 for no translation, 1 for standart translation, 2 for special translation * @return string */ public function format_date($date, $format = 'std', $translate = self::TRANS_STD) { if (\System\Template::is_date($date)) { if (is_null($date)) { $date = new \DateTime(); } elseif (is_numeric($date)) { $helper = new \DateTime(); $helper->setTimestamp($date); $date = $helper; } $local_format = $this->trans('date-format-' . $format); $d = $date->format(is_null($local_format) ? $format : $local_format); if ($translate == self::TRANS_NONE) { return $d; } else { return $this->translate_date($d, $translate == self::TRANS_INF); } } else { throw new \System\Error\Argument(sprintf("Method format_date accepts only date type arguments. Instance of DateTime or utime number. '%s' was given.", gettype($date))); } }
public function cmd_dump(array $params = array()) { \System\Init::full(); $file = array_shift($params); if ($this->json) { \System\Loader::load_all(); $models = \System\Model\Database::get_all_children(); $data = array(); \Helper\Cli::do_over($models, function ($key, $model, &$data) { $objects = $model::get_all()->fetch(); if (any($objects)) { $data[$model] = \System\Template::to_json($objects, false); } }, null, $data, !is_null($file)); if ($file) { \System\Json::put($file, $data); } else { echo json_encode($data); } } else { $cmd = self::assemble_mysql_command("mysqldump", true); if ($file) { shell_exec("mkdir -m775 -p " . dirname($file)); $cmd .= " > " . $file; } passthru($cmd); } }