diff --git a/database.mwb b/database.mwb new file mode 100644 index 0000000..09624ed Binary files /dev/null and b/database.mwb differ diff --git a/database.sql b/database.sql new file mode 100644 index 0000000..f2876e8 --- /dev/null +++ b/database.sql @@ -0,0 +1,34 @@ +-- MySQL Script generated by MySQL Workbench +-- Wed 11 Oct 2017 12:49:43 PM MDT +-- Model: New Model Version: 1.0 +-- MySQL Workbench Forward Engineering + +SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; +SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; +SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES'; + +-- ----------------------------------------------------- +-- Schema managepanel +-- ----------------------------------------------------- + +-- ----------------------------------------------------- +-- Schema managepanel +-- ----------------------------------------------------- +CREATE SCHEMA IF NOT EXISTS `managepanel` DEFAULT CHARACTER SET utf8 ; +USE `managepanel` ; + +-- ----------------------------------------------------- +-- Table `managepanel`.`report_access_codes` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `managepanel`.`report_access_codes` ( + `id` INT NOT NULL AUTO_INCREMENT, + `code` VARCHAR(45) NULL, + `expires` DATETIME NULL, + PRIMARY KEY (`id`), + UNIQUE INDEX `id_UNIQUE` (`id` ASC)) +ENGINE = MEMORY; + + +SET SQL_MODE=@OLD_SQL_MODE; +SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; +SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; diff --git a/lang/en_us.php b/lang/en_us.php index 6cf7920..f9c1c41 100644 --- a/lang/en_us.php +++ b/lang/en_us.php @@ -101,6 +101,7 @@ define("STRINGS", [ "choose an option" => "Choose an option", "csv file" => "CSV text file", "ods file" => "ODS spreadsheet", + "html file" => "HTML web page", "uid" => "User ID", "manager name" => "Manager", "manager username" => "Mgr. Username", diff --git a/lib/reports.php b/lib/reports.php index 4ef8da5..6ec3219 100644 --- a/lib/reports.php +++ b/lib/reports.php @@ -1,8 +1,16 @@ has('report_access_codes', ["AND" => ['code' => $VARS['code'], 'expires[>]' => $date]])) { + $database2->delete('report_access_codes', ["OR" => ['code' => $VARS['code'], 'expires[<=]' => $date]]); + } else { + dieifnotloggedin(); + } +} else { + dieifnotloggedin(); +} + +if (LOADED) { + if (isset($VARS['type']) && isset($VARS['format'])) { + generateReport($VARS['type'], $VARS['format']); + die(); + } else { + lang("invalid parameters"); + die(); + } +} function getUserReport() { global $database; @@ -144,7 +172,7 @@ function dataToCSV($data, $name = "report") { $csv = Writer::createFromString(''); $csv->insertAll($data); header('Content-type: text/csv'); - header('Content-Disposition: attachment; filename="' . $name . "_" . date("Y-m-d_Hm") . ".csv" . '"'); + header('Content-Disposition: attachment; filename="' . $name . "_" . date("Y-m-d_Hi") . ".csv" . '"'); echo $csv; die(); } @@ -175,7 +203,31 @@ function dataToODS($data, $name = "report") { $rowid++; } $ods->addTable($table); - $ods->downloadOdsFile($name . "_" . date("Y-m-d_Hm") . ".ods"); + $ods->downloadOdsFile($name . "_" . date("Y-m-d_Hi") . ".ods"); +} + +function dataToHTML($data, $name = "report") { + header('Content-type: text/html'); + $converter = new HTMLConverter(); + $out = "\n" + . "\n" + . "\n" + . "" . $name . "_" . date("Y-m-d_Hi") . "\n" + . << +STYLE + . $converter->convert($data); + echo $out; } function generateReport($type, $format) { @@ -184,6 +236,9 @@ function generateReport($type, $format) { case "ods": dataToODS($data, $type); break; + case "html": + dataToHTML($data, $type); + break; case "csv": default: echo dataToCSV($data, $type); diff --git a/pages/export.php b/pages/export.php index f9f6dca..2427019 100644 --- a/pages/export.php +++ b/pages/export.php @@ -4,12 +4,11 @@ require_once __DIR__ . '/../required.php'; redirectifnotloggedin(); ?> -
+
+

+ insert('report_access_codes', ['code' => $code, 'expires' => date("Y-m-d H:i:s", strtotime("+5 minutes"))]); + ?> + - +
\ No newline at end of file diff --git a/required.php b/required.php index 1bfbb12..6fa46a4 100644 --- a/required.php +++ b/required.php @@ -53,9 +53,23 @@ try { ]); } catch (Exception $ex) { //header('HTTP/1.1 500 Internal Server Error'); - sendError("Database error. Try again later. $ex"); + sendError("Database error 1. Try again later. $ex"); } +$database2; +try { + $database2 = new Medoo([ + 'database_type' => DB2_TYPE, + 'database_name' => DB2_NAME, + 'server' => DB2_SERVER, + 'username' => DB2_USER, + 'password' => DB2_PASS, + 'charset' => DB2_CHARSET + ]); +} catch (Exception $ex) { + //header('HTTP/1.1 500 Internal Server Error'); + sendError("Database error 2. Try again later. $ex"); +} if (!DEBUG) { error_reporting(0); diff --git a/settings.template.php b/settings.template.php index d17db4d..98a6210 100644 --- a/settings.template.php +++ b/settings.template.php @@ -4,7 +4,7 @@ // DO NOT SET TO TRUE IN PRODUCTION!!! define("DEBUG", false); -// Portal database connection settings +// AccountHub database connection settings // See http://medoo.in/api/new for info define("DB_TYPE", "mysql"); define("DB_NAME", "sso"); @@ -13,6 +13,14 @@ define("DB_USER", "sso"); define("DB_PASS", ""); define("DB_CHARSET", "utf8"); +// ManagePanel DB connection +define("DB2_TYPE", "mysql"); +define("DB2_NAME", "managepanel"); +define("DB2_SERVER", "localhost"); +define("DB2_USER", "managepanel"); +define("DB2_PASS", ""); +define("DB2_CHARSET", "utf8"); + // Name of the app. define("SITE_TITLE", "ManagePanel");