Setup helper classes to handle stroring and formatting data retrieved from the DB, and implemented them in get method of table.php
This commit is contained in:
parent
849d7d27e0
commit
8b5782c5de
117
Libraries/table/class.php
Normal file
117
Libraries/table/class.php
Normal file
@ -0,0 +1,117 @@
|
||||
<?php
|
||||
|
||||
class Table_Cell {
|
||||
private $formats = array(
|
||||
"Normal" => "<div class=\"table_cell\">%s</div>",
|
||||
"Header" => "<div class=\"table_header\">%s</div>"
|
||||
);
|
||||
|
||||
private $type;
|
||||
private $value;
|
||||
|
||||
public function __construct($value, $type){
|
||||
$this->set_value($value);
|
||||
$this->set_type($type);
|
||||
}
|
||||
|
||||
public function set_type($type){
|
||||
if (array_key_exists($type, $this->formats)){
|
||||
$this->type = $type;
|
||||
} else {
|
||||
exit("The type provided ({$type}) is not defined. ");
|
||||
}
|
||||
}
|
||||
|
||||
public function set_value($value){
|
||||
$this->value = $value;
|
||||
}
|
||||
|
||||
public function get_format(){
|
||||
return $this->formats[$this->type];
|
||||
}
|
||||
|
||||
public function get_html(){
|
||||
return sprintf($this->formats[$this->type], $this->value);
|
||||
}
|
||||
}
|
||||
|
||||
class Table_Row {
|
||||
private $cells = array();
|
||||
|
||||
public function add_cell($value, $type){
|
||||
$cell = new Table_Cell($value, $type);
|
||||
array_push($this->cells, $cell);
|
||||
return $cell;
|
||||
}
|
||||
|
||||
public function get_html(){
|
||||
$output="";
|
||||
$output="$output<div class=\"table_row\">";
|
||||
|
||||
foreach ($this->cells as $cell){
|
||||
$output="{$output}{$cell->get_html()}";
|
||||
}
|
||||
|
||||
$output="{$output}</div>";
|
||||
return $output;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class Table {
|
||||
private $name;
|
||||
private $headers;
|
||||
private $rows = array();
|
||||
|
||||
public function __construct($name){
|
||||
$this->set_name($name);
|
||||
}
|
||||
|
||||
private function add_row(){
|
||||
$row = new Table_Row();
|
||||
array_push($this->rows, $row);
|
||||
return $row;
|
||||
}
|
||||
|
||||
public function set_name($name){
|
||||
$this->name = $name;
|
||||
}
|
||||
|
||||
public function Load($db, $query_modifier){
|
||||
$res = $db->query("SELECT * FROM $this->name $query_modifier");
|
||||
|
||||
// Getting header row
|
||||
$col_count=0;
|
||||
$header_row = $this->add_row();
|
||||
|
||||
for ($i = 0; $i < $res->numColumns(); $i++ ){
|
||||
$value = $res->columnName($i);
|
||||
$header_row->add_cell($value, "Header");
|
||||
$col_count++;
|
||||
}
|
||||
|
||||
while ($db_row = $res->fetchArray()){
|
||||
$row = $this->add_row();
|
||||
|
||||
for ($i = 0; $i < $col_count; $i++){
|
||||
$value = $db_row[$i];
|
||||
$row->add_cell($value, "Normal");
|
||||
}
|
||||
}
|
||||
}
|
||||
public function get_html(){
|
||||
$output="";
|
||||
$output="{$output}<div class=\"wrapper bordered center_text\">";
|
||||
$output="{$output}<div class=\"log_table bordered\">";
|
||||
|
||||
foreach ($this->rows as $row){
|
||||
$row_html = $row->get_html();
|
||||
$output="{$output}{$row_html}";
|
||||
}
|
||||
|
||||
$output="{$output}</div>";
|
||||
$output="{$output}</div>";
|
||||
return $output;
|
||||
}
|
||||
}
|
||||
?>
|
@ -1,4 +1,6 @@
|
||||
<?php
|
||||
|
||||
require("class.php");
|
||||
function get_main () {
|
||||
$db = $GLOBALS["db"];
|
||||
/*
|
||||
@ -18,77 +20,76 @@ function get_main () {
|
||||
|
||||
// END: Getting Args if exists
|
||||
|
||||
|
||||
if ($action == "show"){
|
||||
if ( ! array_key_exists("name", $_GET) ){
|
||||
echo "A tablename was not provided with the request";
|
||||
return 1;
|
||||
} else {
|
||||
$name=$_GET['name'];
|
||||
}
|
||||
|
||||
if ( array_key_exists("limit", $_GET)){
|
||||
$limit=$_GET['limit'];
|
||||
} else {
|
||||
$limit=0;
|
||||
}
|
||||
|
||||
if ( array_key_exists("columns", $_GET)){
|
||||
$columns = explode(',', $_GET["columns"]);
|
||||
}
|
||||
|
||||
$query_modifier="";
|
||||
if (filter_var($limit, FILTER_VALIDATE_INT)){
|
||||
if ($limit > 0){
|
||||
$query_modifier="WHERE LIMIT $limit";
|
||||
}
|
||||
}else {
|
||||
$query_modifier="";
|
||||
switch ($action){
|
||||
case "show":
|
||||
// BEGIN: Get show args
|
||||
if ( ! array_key_exists("name", $_GET) ){
|
||||
echo "A tablename was not provided with the request";
|
||||
return 1;
|
||||
} else {
|
||||
$name=$_GET['name'];
|
||||
}
|
||||
|
||||
$db = new SQLite3("../../webcron.db");
|
||||
if ( array_key_exists("limit", $_GET)){
|
||||
$limit=$_GET['limit'];
|
||||
} else {
|
||||
$limit=0;
|
||||
}
|
||||
|
||||
$res = $db->query("SELECT * FROM $name $query_modifier");
|
||||
echo '<div class="wrapper bordered center_text">';
|
||||
echo '<div class="log_table bordered">';
|
||||
echo '<div class="table_row">';
|
||||
if ( array_key_exists("columns", $_GET)){
|
||||
$columns = explode(',', $_GET["columns"]);
|
||||
}
|
||||
// END: Get show args
|
||||
|
||||
if ( !empty($columns) ) {
|
||||
foreach($columns as $column_name){
|
||||
echo "<div class=\"table_header\">{$column_name}</div>";
|
||||
}
|
||||
} else {
|
||||
$counter=0;
|
||||
for ($i = 0; $i < $res->numColumns(); $i++ ){
|
||||
echo "<div class=\"table_header\">{$res->columnName($i)}</div>";
|
||||
$counter++;
|
||||
}
|
||||
$query_modifier="";
|
||||
if (filter_var($limit, FILTER_VALIDATE_INT)){
|
||||
if ($limit > 0){
|
||||
$query_modifier="WHERE LIMIT $limit";
|
||||
}
|
||||
}else {
|
||||
$query_modifier="";
|
||||
}
|
||||
|
||||
|
||||
echo '</div>';
|
||||
while ($row = $res->fetchArray()){
|
||||
echo "<div class=\"table_row\">";
|
||||
|
||||
$res = $db->query("SELECT * FROM $name $query_modifier");
|
||||
echo '<div class="wrapper bordered center_text">';
|
||||
echo '<div class="log_table bordered">';
|
||||
echo '<div class="table_row">';
|
||||
if ( !empty($columns) ) {
|
||||
foreach($columns as $column_name){
|
||||
echo "<div class=\"table_cell\">{$row[$column_name]}</div>";
|
||||
echo "<div class=\"table_header\">{$column_name}</div>";
|
||||
}
|
||||
} else {
|
||||
for ($i = 0; $i < $counter; $i++){
|
||||
echo "<div class=\"table_cell\">{$row[$i]}</div>";
|
||||
$counter=0;
|
||||
for ($i = 0; $i < $res->numColumns(); $i++ ){
|
||||
echo "<div class=\"table_header\">{$res->columnName($i)}</div>";
|
||||
$counter++;
|
||||
}
|
||||
}
|
||||
echo "</div>";
|
||||
}
|
||||
echo '</div>';
|
||||
echo '</div>';
|
||||
} else if ($action == "list"){
|
||||
$res = $db->query("SELECT name FROM sqlite_master WHERE type='table';");
|
||||
|
||||
echo '</div>';
|
||||
while ($row = $res->fetchArray()){
|
||||
echo "<div class=\"table_row\">";
|
||||
if ( !empty($columns) ) {
|
||||
foreach($columns as $column_name){
|
||||
echo "<div class=\"table_cell\">{$row[$column_name]}</div>";
|
||||
}
|
||||
} else {
|
||||
for ($i = 0; $i < $counter; $i++){
|
||||
echo "<div class=\"table_cell\">{$row[$i]}</div>";
|
||||
}
|
||||
}
|
||||
echo "</div>";
|
||||
}
|
||||
echo '</div>';
|
||||
echo '</div>';
|
||||
break;
|
||||
|
||||
case "list":
|
||||
$res = $db->query("SELECT name FROM sqlite_master WHERE type='table';");
|
||||
while ($row = $res->fetchArray()){
|
||||
echo "<button onclick='getTable(\"{$row['name']}\")'>{$row['name']}</button><br> ";
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user