public static function genTableList()
 {
     $sql = new \sql\Database();
     $sql->selectDB(\util\Config::$database->tablesDB);
     $table_names = $sql->tableNames();
     $list = "";
     foreach ($table_names as $tname) {
         $list .= "<li><a href=\"run_report.php?table=" . $tname . "\">" . $tname . "</a></li>";
     }
     return $list;
 }
 public static function convertToSql($input_filepath, $dbname)
 {
     $objPHPExcel = self::loadFile($input_filepath);
     $tables = array();
     foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) {
         $tbl = new \excel2sql\SqlTable($worksheet, $input_filepath);
         if ($tbl->finalize()) {
             $tables[$tbl->name] = $tbl->finalize();
         } else {
             error_log("table import failed: {$input_filepath}/{$tbl->name}");
         }
     }
     $sql = new \sql\Database();
     $sql->selectDB($dbname);
     $table_names = array();
     foreach ($tables as $tname => $queries) {
         $sql->query($queries["drop"]);
         $sql->query($queries["creation"]);
         $sql->query($queries["insertion"]);
         $table_names[] = $tname;
     }
     return $table_names;
 }
<?php

require_once __DIR__ . "/bootstrap.php";
$sql = new \sql\Database();
$report = null;
if (isset($_GET['report'])) {
    $report = \reports\Report::get($_GET['report']);
    $sql->selectDB(\util\Config::$database->tablesDB);
    $report->run($sql);
} else {
    if (isset($_GET['table'])) {
        $sql->selectDB(\util\Config::$database->tablesDB);
        $table = $_GET['table'];
        $chart = new \reports\Chart();
        $chart->setType('Table');
        $report = new \reports\Report();
        $report->setTitle($table)->setQuery("SELECT * FROM {$table}")->setChart($chart)->run($sql);
    } else {
        if (isset($_GET['serial'])) {
            $report = \reports\Report::unserialize($_GET['serial']);
            $sql->selectDB(\util\Config::$database->tablesDB);
            $report->run($sql);
        }
    }
}
if (!is_null($report)) {
    $header = new \html\Header();
    $header->title(\util\Config::$app->name)->css('css/style.min.css')->js('js/jquery.min.js', 'js/bootstrap.min.js')->addToIncludes($report->script('chart_container'));
    $content = "<div id='chart_container' class='chart'></div>";
    echo "<!DOCTYPE html>\n<html lang='en'>" . $header->html() . "<body>\n\t\t\t<header>" . \util\Html::genNavbar() . "</header>\n\t\t\t<article>\n\t\t\t\t{$content}\n\t\t\t</article>\n\t\t\t<footer>\n\t\t\t</footer>\n\t\t</body>\n\t</html>";
}
 public static function update($report)
 {
     $sql = new \sql\Database();
     $sql->selectDB(\util\Config::$database->reportsDB);
     $sql->query("UPDATE reports SET serial='" . $report->serialize() . "'" . "WHERE title='" . $report->title() . "'");
 }
if (isset($_POST['submit'])) {
    foreach ($_POST as $k => $v) {
        $_POST[$k] = trim($v);
    }
    if (!empty($_POST['title'])) {
        $title = $_POST['title'];
    } else {
        $errors[] = "You must provide a title in order to create a report!";
    }
    if (!empty($_POST['sql'])) {
        $query = $_POST['sql'];
    } else {
        $errors[] = "You must provide sql in order to create a report!";
    }
    if (count($errors) === 0) {
        $sql = new \sql\Database();
        $sql->selectDB(\util\Config::$database->tablesDB);
        $hAxis = null;
        if (isset($_POST['hAxis'])) {
            $hAxis = $_POST['hAxis'];
        }
        $vAxis = null;
        if (isset($_POST['vAxis'])) {
            $vAxis = $_POST['vAxis'];
        }
        $column1 = null;
        if (isset($_POST['column1'])) {
            $column1 = $_POST['column1'];
        }
        $column2 = null;
        if (isset($_POST['column2'])) {
<?php

require_once __DIR__ . "/bootstrap.php";
$file_tables = array();
if (!empty($_POST["spreadsheet"])) {
    $file_table = \excel2sql\SqlConvert::convertToSql($_POST['spreadsheet'], \util\Config::$database->tablesDB);
    unlink($_POST['spreadsheet']);
}
$sql = new \sql\Database();
$sql->selectDB(\util\Config::$database->tablesDB);
$reports = array();
foreach ($file_table as $tname) {
    $chart = new \reports\Chart();
    $chart->setType('Table');
    $report = new \reports\Report();
    $report->setTitle($tname)->setQuery("SELECT * FROM {$tname}")->setChart($chart)->run($sql);
    $reports[] = $report;
}
$header = new \html\Header();
$header->title(\util\Config::$app->name)->css('css/style.min.css')->js('js/jquery.min.js', 'js/bootstrap.min.js');
if (!empty($reports)) {
    $head = '';
    for ($ir = 0; $ir < count($reports); ++$ir) {
        $head .= $reports[$ir]->script("chart_container_{$ir}");
    }
    $content = "";
    for ($ir = 0; $ir < count($reports); ++$ir) {
        $content .= "<div id=\"chart_container_{$ir}\"></div><br><br>";
    }
    $header->addToIncludes($head);
} else {