mirror of
https://bitbucket.org/theswgsource/auth-site-1.2.git
synced 2026-01-17 00:04:55 -05:00
292 lines
6.6 KiB
PHP
292 lines
6.6 KiB
PHP
<?php
|
|
/**
|
|
* MyBB 1.8
|
|
* Copyright 2014 MyBB Group, All Rights Reserved
|
|
*
|
|
* Website: http://www.mybb.com
|
|
* License: http://www.mybb.com/about/license
|
|
*
|
|
*/
|
|
|
|
/**
|
|
* Generate a data grid/table.
|
|
*/
|
|
class DefaultTable
|
|
{
|
|
/**
|
|
* @var array Array of cells for the current row.
|
|
*/
|
|
private $_cells = array();
|
|
|
|
/**
|
|
* @var array Array of rows for the current table.
|
|
*/
|
|
private $_rows = array();
|
|
|
|
/**
|
|
* @var array Array of headers for the current table.
|
|
*/
|
|
private $_headers = array();
|
|
|
|
/**
|
|
* Construct an individual cell for this table.
|
|
*
|
|
* @param string $data The HTML content for this cell.
|
|
* @param array $extra Array of extra information about this cell (class, id, colspan, rowspan, width)
|
|
*/
|
|
function construct_cell($data, $extra=array())
|
|
{
|
|
$this->_cells[] = array("data" => $data, "extra" => $extra);
|
|
}
|
|
|
|
/**
|
|
* Construct a row from the earlier defined constructed cells for the table.
|
|
*
|
|
* @param array $extra Array of extra information about this row (class, id)
|
|
*/
|
|
function construct_row($extra = array())
|
|
{
|
|
$i = 1;
|
|
$cells = '';
|
|
|
|
// We construct individual cells here
|
|
foreach($this->_cells as $key => $cell)
|
|
{
|
|
$cells .= "\t\t\t<td";
|
|
|
|
if(!isset($cell['extra']['class']))
|
|
{
|
|
$cell['extra']['class'] = '';
|
|
}
|
|
|
|
if($key == 0)
|
|
{
|
|
$cell['extra']['class'] .= " first";
|
|
}
|
|
elseif(!isset($this->_cells[$key+1]))
|
|
{
|
|
$cell['extra']['class'] .= " last";
|
|
}
|
|
if($i == 2)
|
|
{
|
|
$cell['extra']['class'] .= " alt_col";
|
|
$i = 0;
|
|
}
|
|
$i++;
|
|
if($cell['extra']['class'])
|
|
{
|
|
$cells .= " class=\"".trim($cell['extra']['class'])."\"";
|
|
}
|
|
if(isset($cell['extra']['style']))
|
|
{
|
|
$cells .= " style=\"".$cell['extra']['style']."\"";
|
|
}
|
|
if(isset($cell['extra']['id']))
|
|
{
|
|
$cells .= " id=\"".$cell['extra']['id']."\"";
|
|
}
|
|
if(isset($cell['extra']['colspan']) && $cell['extra']['colspan'] > 1)
|
|
{
|
|
$cells .= " colspan=\"".$cell['extra']['colspan']."\"";
|
|
}
|
|
if(isset($cell['extra']['rowspan']) && $cell['extra']['rowspan'] > 1)
|
|
{
|
|
$cells .= " rowspan=\"".$cell['extra']['rowspan']."\"";
|
|
}
|
|
if(isset($cell['extra']['width']))
|
|
{
|
|
$cells .= " width=\"".$cell['extra']['width']."\"";
|
|
}
|
|
$cells .= ">";
|
|
$cells .= $cell['data'];
|
|
$cells .= "</td>\n";
|
|
}
|
|
$data['cells'] = $cells;
|
|
$data['extra'] = $extra;
|
|
$this->_rows[] = $data;
|
|
|
|
$this->_cells = array();
|
|
}
|
|
|
|
/**
|
|
* return the cells of a row for the table based row.
|
|
*
|
|
* @param string $row_id The id of the row you want to give it.
|
|
* @param boolean $return Whether or not to return or echo the resultant contents.
|
|
* @return string The output of the row cells (optional).
|
|
*/
|
|
function output_row_cells($row_id, $return=false)
|
|
{
|
|
$row = $this->_rows[$row_id]['cells'];
|
|
|
|
if(!$return)
|
|
{
|
|
echo $row;
|
|
}
|
|
else
|
|
{
|
|
return $row;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Count the number of rows in the table. Useful for displaying a 'no rows' message.
|
|
*
|
|
* @return int The number of rows in the table.
|
|
*/
|
|
function num_rows()
|
|
{
|
|
return count($this->_rows);
|
|
}
|
|
|
|
/**
|
|
* Construct a header cell for this table.
|
|
*
|
|
* @param string $data The HTML content for this header cell.
|
|
* @param array $extra Array of extra information for this header cell (class, style, colspan, width)
|
|
*/
|
|
function construct_header($data, $extra=array())
|
|
{
|
|
$this->_headers[] = array("data" => $data, "extra" => $extra);
|
|
}
|
|
|
|
/**
|
|
* Output this table to the browser.
|
|
*
|
|
* @param string $heading The heading for this table.
|
|
* @param int $border The border width for this table.
|
|
* @param string $class The class for this table.
|
|
* @param boolean $return Whether or not to return or echo the resultant contents.
|
|
* @return string The output of the row cells (optional).
|
|
*/
|
|
function output($heading="", $border=1, $class="general", $return=false)
|
|
{
|
|
if($return == true)
|
|
{
|
|
return $this->construct_html($heading, $border, $class);
|
|
}
|
|
else
|
|
{
|
|
echo $this->construct_html($heading, $border, $class);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Fetch the built HTML for this table.
|
|
*
|
|
* @param string $heading The heading for this table.
|
|
* @param int $border The border width for this table.
|
|
* @param string $class The class for this table.
|
|
* @param string $table_id The id for this table.
|
|
* @return string The built HTML.
|
|
*/
|
|
function construct_html($heading="", $border=1, $class=null, $table_id="")
|
|
{
|
|
$table = '';
|
|
if($border == 1)
|
|
{
|
|
$table .= "<div class=\"border_wrapper\">\n";
|
|
if($heading != "")
|
|
{
|
|
$table .= " <div class=\"title\">".$heading."</div>\n";
|
|
}
|
|
}
|
|
$table .= "<table";
|
|
if(!is_null($class))
|
|
{
|
|
if(!$class)
|
|
{
|
|
$class = "general";
|
|
}
|
|
$table .= " class=\"".$class."\"";
|
|
}
|
|
if($table_id != "")
|
|
{
|
|
$table .= " id=\"".$table_id."\"";
|
|
}
|
|
$table .= " cellspacing=\"0\">\n";
|
|
if($this->_headers)
|
|
{
|
|
$table .= "\t<thead>\n";
|
|
$table .= "\t\t<tr>\n";
|
|
foreach($this->_headers as $key => $data)
|
|
{
|
|
$table .= "\t\t\t<th";
|
|
if($key == 0)
|
|
{
|
|
$data['extra']['class'] .= " first";
|
|
}
|
|
elseif(!isset($this->_headers[$key+1]))
|
|
{
|
|
$data['extra']['class'] .= " last";
|
|
}
|
|
if(isset($data['extra']['class']))
|
|
{
|
|
$table .= " class=\"".$data['extra']['class']."\"";
|
|
}
|
|
if(isset($data['extra']['style']))
|
|
{
|
|
$table .= " style=\"".$data['extra']['style']."\"";
|
|
}
|
|
if(isset($data['extra']['width']))
|
|
{
|
|
$table .= " width=\"".$data['extra']['width']."\"";
|
|
}
|
|
if(isset($data['extra']['colspan']) && $data['extra']['colspan'] > 1)
|
|
{
|
|
$table .= " colspan=\"".$data['extra']['colspan']."\"";
|
|
}
|
|
$table .= ">".$data['data']."</th>\n";
|
|
}
|
|
$table .= "\t\t</tr>\n";
|
|
$table .= "\t</thead>\n";
|
|
}
|
|
$table .= "\t<tbody>\n";
|
|
$i = 1;
|
|
foreach($this->_rows as $key => $table_row)
|
|
{
|
|
$table .= "\t\t<tr";
|
|
if(isset($table_row['extra']['id']))
|
|
{
|
|
$table .= " id=\"{$table_row['extra']['id']}\"";
|
|
}
|
|
|
|
if(!isset($table_row['extra']['class']))
|
|
{
|
|
$table_row['extra']['class'] = '';
|
|
}
|
|
|
|
if($key == 0)
|
|
{
|
|
$table_row['extra']['class'] .= " first";
|
|
}
|
|
else if(!isset($this->_rows[$key+1]))
|
|
{
|
|
$table_row['extra']['class'] .= " last";
|
|
}
|
|
if($i == 2 && !isset($table_row['extra']['no_alt_row']))
|
|
{
|
|
$table_row['extra']['class'] .= " alt_row";
|
|
$i = 0;
|
|
}
|
|
$i++;
|
|
if($table_row['extra']['class'])
|
|
{
|
|
$table .= " class=\"".trim($table_row['extra']['class'])."\"";
|
|
}
|
|
$table .= ">\n";
|
|
$table .= $table_row['cells'];
|
|
$table .= "\t\t</tr>\n";
|
|
}
|
|
$table .= "\t</tbody>\n";
|
|
$table .= "</table>\n";
|
|
// Clean up
|
|
$this->_cells = $this->_rows = $this->_headers = array();
|
|
if($border == 1)
|
|
{
|
|
$table .= "</div>";
|
|
}
|
|
return $table;
|
|
}
|
|
}
|