commit df310d550a8c451a5806d4dd61553e00c860d58b
parent 9e29803aaa0e0a3ce0cf68ca4e87d4ef02ce818c
Author: William Lindholm <william_lindholm@outlook.com>
Date: Sat, 30 Sep 2023 18:16:02 +0000
Implemented tableBuilder
Diffstat:
8 files changed, 299 insertions(+), 216 deletions(-)
diff --git a/index.php b/index.php
@@ -1,47 +1,47 @@
<?php
- require 'utils/imports.php';
- dbconnection::getInstance('mysql', 'a22willi', 'root', 'Safiren1');
- $handlerFactory = new InsertHandlerFactory();
+ require 'utils/imports.php';
+ dbconnection::getInstance('mysql', 'a22willi', 'root', 'Safiren1');
+ $handlerFactory = new InsertHandlerFactory();
- $pageContent = '';
+ $pageContent = '';
- $pageContent .= "<h3>FieldAgents</h3>" . tableFactory::createTable("FieldAgents");
+ $pageContent .= "<h3>FieldAgents</h3>" . tableFactory::createTable("FieldAgents");
- $attributeModalBuilder = (new ModalBuilder())
- ->setModalId('insertAttributeModal')
- ->setTableName("FieldAgentAttributes")
- ->setPostHandler($handlerFactory->createHandler('FieldAgentAttributes'))
- ->addDropdownColumn("AgentCodeName", getColumnValues("FieldAgents", "CodeName"))
- ->addColumn("Specialty")
- ->addColumn("Competence");
+ $attributeModalBuilder = (new ModalBuilder())
+ ->setModalId('insertAttributeModal')
+ ->setTableName("FieldAgentAttributes")
+ ->setPostHandler($handlerFactory->createHandler('FieldAgentAttributes'))
+ ->addDropdownColumn("AgentCodeName", getColumnValues("FieldAgents", "CodeName"))
+ ->addColumn("Specialty")
+ ->addColumn("Competence");
- $pageContent .= $attributeModalBuilder->handleData();
- $pageContent .= $attributeModalBuilder->build();
- $pageContent .= $attributeModalBuilder->generateOpenButton("Set specialty");
+ $pageContent .= $attributeModalBuilder->handleData();
+ $pageContent .= $attributeModalBuilder->build();
+ $pageContent .= $attributeModalBuilder->generateOpenButton("Set specialty");
- $pageContent .= "<hr>";
+ $pageContent .= "<hr>";
- $pageContent .= "<h3>GroupLeaders</h3>" . tableFactory::createTable("GroupLeaders");
+ $pageContent .= "<h3>GroupLeaders</h3>" . tableFactory::createTable("GroupLeaders");
- $pageContent .= "<hr>";
+ $pageContent .= "<hr>";
- $pageContent .= "<h3>Managers</h3>" . tableFactory::createTable("Managers");
+ $pageContent .= "<h3>Managers</h3>" . tableFactory::createTable("Managers");
- $agentModalBuilder = (new ModalBuilder())
- ->setModalId('insertAgentModal')
- ->setTableName("Agent")
- ->setPostHandler($handlerFactory->createHandler('Agent'))
- ->addColumn("CodeName")
- ->addColumn("FirstName")
- ->addColumn("LastName")
- ->addColumn("Salary", true)
- ->addDropdownColumn("IsFieldAgent", ['True', 'False'])
- ->addDropdownColumn("IsGroupLeader", ['False', 'True'])
- ->addDropdownColumn("IsManager", ['False', 'True']);
+ $agentModalBuilder = (new ModalBuilder())
+ ->setModalId('insertAgentModal')
+ ->setTableName("Agent")
+ ->setPostHandler($handlerFactory->createHandler('Agent'))
+ ->addColumn("CodeName")
+ ->addColumn("FirstName")
+ ->addColumn("LastName")
+ ->addColumn("Salary", true)
+ ->addDropdownColumn("IsFieldAgent", ['True', 'False'])
+ ->addDropdownColumn("IsGroupLeader", ['False', 'True'])
+ ->addDropdownColumn("IsManager", ['False', 'True']);
- $agentModalBuilder->handleData();
- $pageContent .= $agentModalBuilder->build();
- $pageContent .= $agentModalBuilder->generateOpenButton("Hire agent");
+ $agentModalBuilder->handleData();
+ $pageContent .= $agentModalBuilder->build();
+ $pageContent .= $agentModalBuilder->generateOpenButton("Hire agent");
include 'utils/pageTemplate.php';
?>
\ No newline at end of file
diff --git a/reports.php b/reports.php
@@ -2,13 +2,29 @@
require 'utils/imports.php';
dbconnection::getInstance('mysql', 'a22willi', 'root', 'Safiren1');
+ $searchQuery = $_GET['query'];
+ $sqlQuery = isset($searchQuery) ? "SELECT * FROM ArchivedReport WHERE Title LIKE '{$searchQuery}%';" : "SELECT * FROM ArchivedReport;";
+
+ logg($sqlQuery);
+
$pageContent = '';
$pageContent .= "<h3>Reports</h3>" . tableFactory::createCardTable("Report");
$pageContent .= "<hr>";
+
+ $pageContent .= "<h3>Archived Reports</h3>";
+
+ $pageContent .= '<div class="container">';
+ $pageContent .= ' <form class="form-inline" action="" method="GET">';
+ $pageContent .= ' <div class="form-group">';
+ $pageContent .= ' <input type="text" class="form-control me-1" id="query" name="query" placeholder="Search for old report" value="' . htmlspecialchars($_GET['query'] ?? '') . '">';
+ $pageContent .= ' </div>';
+ $pageContent .= ' <button type="submit" class="btn btn-primary">Search</button>';
+ $pageContent .= ' </form>';
+ $pageContent .= '</div>';
- $pageContent .= "<h3>Archived Reports</h3>" . tableFactory::createTable("ArchivedReport");
+ $pageContent .= tableFactory::createCustomTable($sqlQuery);
include 'utils/pageTemplate.php';
?>
\ No newline at end of file
diff --git a/utils/components.php b/utils/components.php
@@ -1,37 +0,0 @@
-<?php
- function displayTable($tableName) {
- $db = dbconnection::getInstance();
- $pdo = $db->getPdo();
-
- $output = "<div class='overflow-auto'><table class='table table-striped table-bordered'>";
-
- try {
- $firstRow = true;
- foreach($pdo->query('SELECT * FROM ' . $tableName . ';') AS $row) {
- if($firstRow) {
- $output .= "<thead class='thead-dark'><tr>";
- foreach($row as $key => $value) {
- if(!is_numeric($key)) {
- $output .= "<th>" . $key . "</th>";
- }
- }
- $output .= "</tr></thead><tbody>";
- $firstRow = false;
- }
- $output .= "<tr>";
- foreach($row as $key => $value) {
- if(!is_numeric($key)) {
- $output .= "<td>" . $value . "</td>";
- }
- }
- $output .= "</tr>";
- }
- $output .= "</tbody></table></div>";
-
- return $output;
- } catch (PDOException $e) {
- echo "Error: " . $e->getMessage();
- return '';
- }
- }
-?>
-\ No newline at end of file
diff --git a/utils/imports.php b/utils/imports.php
@@ -2,11 +2,11 @@
require 'db/dbconnection.php';
include 'db/dbhelper.php';
include 'logging.php';
- include 'components.php';
include 'modalBuilder.php';
include 'tableFactory.php';
include 'postHandlerInterface.php';
include 'insertHandler.php';
include 'updateHandler.php';
include 'procedureHandler.php';
+ include 'tableBuilder.php';
?>
\ No newline at end of file
diff --git a/utils/logs.txt b/utils/logs.txt
@@ -776,3 +776,156 @@
2023-09-28 16:03:07 - Incident: 'Espionage', '104'
2023-09-28 16:03:09 - Incident: 'Espionage', '104'
2023-09-28 16:03:09 - Incident: 'Espionage', '104'
+2023-09-28 16:05:36 - Inserting into: OperatesIn
+2023-09-28 16:05:41 - Updating records in: Operation
+2023-09-28 16:05:44 - Updating records in: Operation
+2023-09-28 16:05:49 - Incident: '123asd', '123123123'
+2023-09-28 16:05:54 - Incident: 'Kidnapping', '102'
+2023-09-28 16:06:16 - Incident: 'Kidnapping', '102'
+2023-09-28 16:06:16 - Inserting into: Operation
+2023-09-28 16:06:16 - calling from OperationInsertHandler: $incident = Kidnapping, 102
+2023-09-28 16:06:16 - IncidentName= Kidnapping
+2023-09-28 16:06:16 - IncidentNumber= 102
+2023-09-28 16:06:16 - Incident: 'Kidnapping', '102'
+2023-09-28 16:06:23 - Inserting into: OperatesIn
+2023-09-28 16:06:26 - Inserting into: OperatesIn
+2023-09-28 16:06:31 - Updating records in: Operation
+2023-09-28 16:06:54 - Inserting into: Agent
+2023-09-28 16:07:11 - Updating records in: Operation
+2023-09-28 16:07:38 - Incident: 'Sabotage', '103'
+2023-09-28 16:07:41 - Incident: 'Arson', '108'
+2023-09-28 16:07:45 - Incident: 'Theft', '110'
+2023-09-28 16:07:48 - Incident: 'Sabotage', '103'
+2023-09-28 16:07:50 - Incident: 'Kidnapping', '102'
+2023-09-28 16:08:24 - Incident: 'Kidnapping', '102'
+2023-09-28 16:08:24 - Inserting into: Report
+2023-09-28 16:08:24 - Incident: 'Kidnapping', '102'
+2023-09-28 16:09:11 - Updating records in: Operation
+2023-09-28 16:32:36 - Incident: 'Sabotage', '103'
+2023-09-28 16:33:34 - Incident: 'Breach', '105'
+2023-09-28 17:02:49 - Incident: 'Ambush', '106'
+2023-09-28 17:02:52 - Incident: '123asd', '123123123'
+2023-09-28 17:02:54 - Incident: 'Sabotage', '103'
+2023-09-28 21:18:06 - Incident: '213123asd', '234234'
+2023-09-28 21:18:09 - Incident: 'Ambush', '106'
+2023-09-28 21:18:29 - Incident: 'Ambush', '106'
+2023-09-28 21:18:29 - Inserting into: Operation
+2023-09-28 21:18:29 - calling from OperationInsertHandler: $incident = Ambush, 106
+2023-09-28 21:18:29 - IncidentName= Ambush
+2023-09-28 21:18:29 - IncidentNumber= 106
+2023-09-28 21:18:29 - Incident: 'Ambush', '106'
+2023-09-29 05:42:44 - SELECT * FROM . FieldAgents . ;
+2023-09-29 05:43:08 - SELECT * FROM . FieldAgents;
+2023-09-29 05:43:25 - SELECT * FROM FieldAgents;
+2023-09-29 05:43:25 - SELECT * FROM GroupLeaders;
+2023-09-29 05:43:25 - SELECT * FROM Managers;
+2023-09-29 05:44:57 - SELECT * FROM FieldAgents;
+2023-09-29 05:44:57 - SELECT * FROM GroupLeaders;
+2023-09-29 05:44:57 - SELECT * FROM Managers;
+2023-09-29 05:46:06 - SELECT * FROM FieldAgents;
+2023-09-29 05:46:06 - SELECT * FROM GroupLeaders;
+2023-09-29 05:46:06 - SELECT * FROM Managers;
+2023-09-29 05:46:25 - SELECT * FROM FieldAgents;
+2023-09-29 05:46:25 - SELECT * FROM GroupLeaders;
+2023-09-29 05:46:25 - SELECT * FROM Managers;
+2023-09-29 05:46:33 - SELECT * FROM FieldAgents;
+2023-09-29 05:46:33 - SELECT * FROM GroupLeaders;
+2023-09-29 05:46:33 - SELECT * FROM Managers;
+2023-09-29 05:46:45 - SELECT * FROM FieldAgents;
+2023-09-29 05:46:45 - SELECT * FROM GroupLeaders;
+2023-09-29 05:46:45 - SELECT * FROM Managers;
+2023-09-29 05:46:54 - SELECT * FROM FieldAgents;
+2023-09-29 05:46:54 - SELECT * FROM GroupLeaders;
+2023-09-29 05:46:54 - SELECT * FROM Managers;
+2023-09-29 05:47:05 - SELECT * FROM FieldAgents;
+2023-09-29 05:47:05 - SELECT * FROM GroupLeaders;
+2023-09-29 05:47:05 - SELECT * FROM Managers;
+2023-09-29 05:47:48 - Incident: 'asdasd', '123123'
+2023-09-29 05:48:04 - Incident: 'Sabotage', '103'
+2023-09-29 05:48:09 - SELECT * FROM FieldAgents;
+2023-09-29 05:48:09 - SELECT * FROM GroupLeaders;
+2023-09-29 05:48:09 - SELECT * FROM Managers;
+2023-09-29 05:48:34 - SELECT * FROM FieldAgents;
+2023-09-29 05:48:34 - SELECT * FROM GroupLeaders;
+2023-09-29 05:48:34 - SELECT * FROM Managers;
+2023-09-29 05:50:12 - Incident: '123asd', '123123123'
+2023-09-29 05:51:53 - Incident: 'Ambush', '106'
+2023-09-29 05:53:13 - Incident: 'Ambush', '106'
+2023-09-29 05:53:17 - Incident: 'Sabotage', '103'
+2023-09-29 05:53:23 - Incident: 'Sabotage', '103'
+2023-09-29 05:53:23 - Incident: 'Sabotage', '103'
+2023-09-29 05:57:02 -
+2023-09-29 05:57:12 -
+2023-09-29 05:57:12 -
+2023-09-29 05:57:12 -
+2023-09-29 05:57:12 -
+2023-09-29 05:57:46 - Incident: 'Kidnapping', '102'
+2023-09-29 06:14:02 - Incident: 'Sabotage', '103'
+2023-09-29 06:23:16 - Incident: 'asdasd', '123123'
+2023-09-29 06:23:30 - Incident: '213123asd', '234234'
+2023-09-29 06:23:52 - Incident: '213123asd', '234234'
+2023-09-29 06:23:52 - Inserting into: Report
+2023-09-29 06:23:52 - Incident: '213123asd', '234234'
+2023-09-29 06:23:58 - Incident: '213123asd', '234234'
+2023-09-29 06:23:58 - Incident: '213123asd', '234234'
+2023-09-29 06:24:31 - Incident: 'asdasd', '123123'
+2023-09-29 06:24:34 - Incident: 'asdasd', '123123'
+2023-09-29 06:24:36 - Incident: 'Heist', '101'
+2023-09-29 06:24:52 - Updating records in: Operation
+2023-09-29 08:39:39 - Incident: 'Arson', '108'
+2023-09-29 08:39:53 - Incident: 'Arson', '108'
+2023-09-29 08:39:53 - Inserting into: Report
+2023-09-29 08:39:53 - Incident: 'Arson', '108'
+2023-09-29 08:40:08 - Incident: 'Sabotage', '103'
+2023-09-29 08:40:21 - Updating records in: Operation
+2023-09-29 08:40:29 - Inserting into: OperatesIn
+2023-09-29 14:18:48 - Incident: 'Arson', '108'
+2023-09-29 14:19:19 - Incident: '213123asd', '234234'
+2023-09-29 14:37:14 - SELECT * FROM ArchivedReport WHERE Title = hej;
+2023-09-29 14:37:54 - SELECT * FROM ArchivedReport WHERE Title = hej;
+2023-09-29 14:38:08 - SELECT * FROM ArchivedReport WHERE Title = hej;
+2023-09-29 14:38:43 - SELECT * FROM ArchivedReport WHERE Title = 'hej';
+2023-09-29 14:38:49 - SELECT * FROM ArchivedReport WHERE Title = 'test';
+2023-09-29 14:38:58 - SELECT * FROM ArchivedReport WHERE Title = '';
+2023-09-29 14:39:01 - SELECT * FROM Report;
+2023-09-29 14:39:07 - SELECT * FROM Report;
+2023-09-29 14:39:10 - SELECT * FROM Report;
+2023-09-29 14:39:35 - SELECT * FROM ArchivedReport;
+2023-09-29 14:39:52 - SELECT * FROM ArchivedReport WHERE Title = 'Old';
+2023-09-29 14:39:57 - SELECT * FROM ArchivedReport WHERE Title = 'old';
+2023-09-29 14:40:00 - SELECT * FROM ArchivedReport WHERE Title = 'old';
+2023-09-29 14:40:05 - SELECT * FROM ArchivedReport WHERE Title = 'test';
+2023-09-29 14:40:12 - SELECT * FROM ArchivedReport WHERE Title = '';
+2023-09-29 14:40:17 - SELECT * FROM ArchivedReport;
+2023-09-29 14:41:37 - SELECT * FROM ArchivedReport;
+2023-09-29 14:41:46 - SELECT * FROM ArchivedReport WHERE Title LIKE 'o%';
+2023-09-29 14:46:48 - SELECT * FROM ArchivedReport;
+2023-09-29 14:46:54 - SELECT * FROM ArchivedReport WHERE Title LIKE 'operation%';
+2023-09-29 14:47:09 - SELECT * FROM ArchivedReport WHERE Title LIKE 'test%';
+2023-09-29 14:47:13 - SELECT * FROM ArchivedReport WHERE Title LIKE '%';
+2023-09-29 14:49:18 - SELECT * FROM ArchivedReport WHERE Title LIKE '%';
+2023-09-29 14:51:17 - SELECT * FROM ArchivedReport WHERE Title LIKE '%';
+2023-09-29 14:51:26 - SELECT * FROM ArchivedReport WHERE Title LIKE '%';
+2023-09-29 14:52:26 - SELECT * FROM ArchivedReport WHERE Title LIKE '%';
+2023-09-29 14:52:26 - SELECT * FROM ArchivedReport WHERE Title LIKE '%';
+2023-09-29 14:53:09 - SELECT * FROM ArchivedReport WHERE Title LIKE '%';
+2023-09-29 14:53:10 - SELECT * FROM ArchivedReport WHERE Title LIKE '%';
+2023-09-29 14:54:08 - SELECT * FROM ArchivedReport WHERE Title LIKE '%';
+2023-09-29 14:54:15 - SELECT * FROM ArchivedReport WHERE Title LIKE '%';
+2023-09-29 14:54:16 - SELECT * FROM ArchivedReport WHERE Title LIKE '%';
+2023-09-29 14:54:27 - SELECT * FROM ArchivedReport WHERE Title LIKE '%';
+2023-09-29 14:54:28 - SELECT * FROM ArchivedReport WHERE Title LIKE '%';
+2023-09-29 16:52:46 - SELECT * FROM ArchivedReport;
+2023-09-29 17:03:24 - SELECT * FROM ArchivedReport;
+2023-09-29 17:04:07 - SELECT * FROM ArchivedReport;
+2023-09-29 17:04:13 - SELECT * FROM ArchivedReport WHERE Title LIKE 'op%';
+2023-09-29 17:04:17 - SELECT * FROM ArchivedReport WHERE Title LIKE 'test%';
+2023-09-29 17:04:19 - SELECT * FROM ArchivedReport WHERE Title LIKE '%';
+2023-09-29 17:04:24 - SELECT * FROM ArchivedReport WHERE Title LIKE 'kidnapping%';
+2023-09-29 17:20:29 - SELECT * FROM ArchivedReport;
+2023-09-30 14:01:39 - Incident: 'Sabotage', '103'
+2023-09-30 18:10:57 - SELECT * FROM ArchivedReport;
+2023-09-30 18:11:05 - SELECT * FROM ArchivedReport WHERE Title LIKE 'o%';
+2023-09-30 18:11:09 - SELECT * FROM ArchivedReport WHERE Title LIKE 'test%';
+2023-09-30 18:11:12 - SELECT * FROM ArchivedReport WHERE Title LIKE 'rapport%';
+2023-09-30 18:11:13 - SELECT * FROM ArchivedReport WHERE Title LIKE '%';
diff --git a/utils/modalBuilder.php b/utils/modalBuilder.php
@@ -82,9 +82,10 @@
}
foreach ($this->dateColumns as $column) {
+ $date = date('Y-m-d');
$modalBody .= "<div class='form-group'>
<label for='$column'>$column</label>
- <input type='date' class='form-control' id='$column' name='$column'>
+ <input type='date' value='$date' class='form-control' id='$column' name='$column'>
</div>";
}
diff --git a/utils/tableBuilder.php b/utils/tableBuilder.php
@@ -0,0 +1,78 @@
+<?php
+ class TableBuilder {
+
+ private $db;
+ private $query;
+ private $redirectAddress;
+ private $queryColumns = [];
+ private $actionCallbacks = [];
+
+ public function __construct($query) {
+ $this->db = dbconnection::getInstance();
+ $this->query = $query;
+ }
+
+ public function setRedirect($address, $queryColumns = []) {
+ $this->redirectAddress = $address;
+ $this->queryColumns = $queryColumns;
+ return $this;
+ }
+
+ public function addActionColumn($function, $headerTitle = "Action") {
+ $this->actionCallbacks[] = ['callback' => $function, 'header' => $headerTitle];
+ return $this;
+ }
+
+ private function buildRow($row) {
+ $rowData = "<tr";
+
+ if ($this->redirectAddress) {
+ $queryParams = array_map(function($col) use ($row) {
+ return $col . "=" . urlencode($row[$col]);
+ }, $this->queryColumns);
+ $redirectUrl = $this->redirectAddress . "?" . implode("&", $queryParams);
+ $rowData .= " onclick=\"window.location.href = '" . $redirectUrl . "'\" style='cursor: pointer;'";
+ }
+
+ $rowData .= ">";
+
+ foreach ($row as $key => $value) {
+ if (!is_numeric($key)) {
+ $rowData .= "<td>" . $value . "</td>";
+ }
+ }
+
+ foreach ($this->actionCallbacks as $action) {
+ $rowData .= "<td style='width: 80px; white-space: nowrap;'>" . call_user_func($action['callback'], $row) . "</td>";
+ }
+ $rowData .= "</tr>";
+
+ return $rowData;
+ }
+
+ public function buildTable() {
+ $hover = isset($this->redirectAddress) ? "table-hover" : "";
+ $output = "<div class='overflow-auto mt-1 mb-1'><table class='table table-striped table-bordered $hover'><thead class='thead-dark'><tr>";
+
+ foreach ($this->db->getPdo()->query($this->query) as $row) {
+ foreach ($row as $key => $value) {
+ if (!is_numeric($key)) {
+ $output .= "<th>" . $key . "</th>";
+ }
+ }
+ foreach ($this->actionCallbacks as $action) {
+ $output .= "<th style='width: 80px; white-space: nowrap;'>" . $action['header'] . "</th>";
+ }
+ $output .= "</tr></thead><tbody>";
+ break;
+ }
+
+ foreach ($this->db->getPdo()->query($this->query) as $row) {
+ $output .= $this->buildRow($row);
+ }
+
+ $output .= "</tbody></table></div>";
+ return $output;
+ }
+ }
+?>
+\ No newline at end of file
diff --git a/utils/tableFactory.php b/utils/tableFactory.php
@@ -2,39 +2,11 @@
class tableFactory {
//create table
- public static function createTable($tableName) {
- $db = dbconnection::getInstance();
- $pdo = $db->getPdo();
-
- $output = "<div class='overflow-auto'><table class='table table-striped table-bordered'>";
-
- try {
- $firstRow = true;
- foreach($pdo->query('SELECT * FROM ' . $tableName . ';') AS $row) {
- if($firstRow) {
- $output .= "<thead class='thead-dark'><tr>";
- foreach($row as $key => $value) {
- if(!is_numeric($key)) {
- $output .= "<th>" . $key . "</th>";
- }
- }
- $output .= "</tr></thead><tbody>";
- $firstRow = false;
- }
- $output .= "<tr>";
- foreach($row as $key => $value) {
- if(!is_numeric($key)) {
- $output .= "<td>" . $value . "</td>";
- }
- }
- }
- $output .= "</tbody></table></div>";
+ public static function createTable($query) {
+ $sql = "SELECT * FROM $query;";
- return $output;
- } catch (PDOException $e) {
- echo "Error: " . $e->getMessage();
- return '';
- }
+ $tableBuilder = (new TableBuilder($sql));
+ return $tableBuilder->buildTable();
}
/**
@@ -46,87 +18,17 @@
* Ex: CreateTableWithRedirect("Operation", "operationdetails.php", ["OperationName"]),
* Clicking "Operation1" would result in a redirect to "./operationdetails.php/?OperationName=Operation1"
*/
- //
public static function createTableWithRedirect($query, $address, $queryColumns) {
- $db = dbconnection::getInstance();
- $pdo = $db->getPdo();
-
- $output = "<div class='overflow-auto'><table class='table table-striped table-bordered table-hover'>";
-
- try {
- $firstRow = true;
- foreach($pdo->query($query) AS $row) {
- if($firstRow) {
- $output .= "<thead class='thead-dark'><tr>";
- foreach($row as $key => $value) {
- if(!is_numeric($key)) {
- $output .= "<th>" . $key . "</th>";
- }
- }
- $output .= "</tr></thead><tbody>";
- $firstRow = false;
- }
-
- $queryParams = [];
- foreach ($queryColumns as $col) {
- $queryParams[] = $col . "=" . urlencode($row[$col]);
- }
- $redirectUrl = $address . "?" . implode("&", $queryParams);
-
- $output .= "<tr onclick=\"window.location.href = '" . $redirectUrl . "'\" style='cursor: pointer;'>";
- foreach($row as $key => $value) {
- if(!is_numeric($key)) {
- $output .= "<td>" . $value . "</td>";
- }
- }
- $output .= "</tr>";
- }
- $output .= "</tbody></table></div>";
-
- return $output;
- } catch (PDOException $e) {
- echo "Error: " . $e->getMessage();
- return '';
- }
+ $tableBuilder = (new TableBuilder($query));
+ return $tableBuilder->setRedirect($address, $queryColumns)->buildTable();
}
/**
* Create a custom table, that displays any table generated from an sql query.
*/
public static function createCustomTable($query) {
- $db = dbconnection::getInstance();
- $pdo = $db->getPdo();
-
- $output = "<div class='overflow-auto'><table class='table table-striped table-bordered'>";
-
- try {
- $firstRow = true;
- foreach($pdo->query($query) AS $row) {
- if($firstRow) {
- $output .= "<thead class='thead-dark'><tr>";
- foreach($row as $key => $value) {
- if(!is_numeric($key)) {
- $output .= "<th>" . $key . "</th>";
- }
- }
- $output .= "</tr></thead><tbody>";
- $firstRow = false;
- }
- $output .= "<tr>";
- foreach($row as $key => $value) {
- if(!is_numeric($key)) {
- $output .= "<td>" . $value . "</td>";
- }
- }
- $output .= "</tr>";
- }
- $output .= "</tbody></table></div>";
-
- return $output;
- } catch (PDOException $e) {
- echo "Error: " . $e->getMessage();
- return '';
- }
+ $tableBuilder = (new TableBuilder($query));
+ return $tableBuilder->buildTable();
}
/**
@@ -174,43 +76,13 @@
}
}
+ /**
+ * Specify a callback function which will be called when a user presses a row.
+ * @param $function = the callback function (function foo($row))
+ */
public static function createTableWithCallbackColumn($query, $function) {
- $db = dbconnection::getInstance();
- $pdo = $db->getPdo();
-
- $output = "<div class='overflow-auto'><table class='table table-striped table-bordered'>";
-
- try {
- $firstRow = true;
- foreach($pdo->query($query) AS $row) {
- if($firstRow) {
- $output .= "<thead class='thead-dark'><tr>";
- foreach($row as $key => $value) {
- if(!is_numeric($key)) {
- $output .= "<th>" . $key . "</th>";
- }
- }
-
- $output .= "<th>Action</th>";
- $output .= "</tr></thead><tbody>";
- $firstRow = false;
- }
- $output .= "<tr>";
- foreach($row as $key => $value) {
- if(!is_numeric($key)) {
- $output .= "<td>" . $value . "</td>";
- }
- }
- $output .= "<td>" . call_user_func($function, $row) . "</td>";
- $output .= "</tr>";
- }
- $output .= "</tbody></table></div>";
-
- return $output;
- } catch (PDOException $e) {
- echo "Error: " . $e->getMessage();
- return '';
- }
+ $tableBuilder = (new TableBuilder($query));
+ return $tableBuilder->addActionColumn($function)->buildTable();
}
}
?>
\ No newline at end of file