System = $System;
$this->Definition = $FormClass;
$this->QueryParameters = array();
}
function CheckOrder()
{
if(!array_key_exists('Order', $_GET) or (array_key_exists('Order', $_GET) and
($_GET['Order'] != '0') and ($_GET['Order'] != '1')))
{
if(array_key_exists('DefaultOrderDirection', $this->Definition)) $_GET['Order'] = $this->Definition['DefaultOrderDirection'];
else $_GET['Order'] = 0;
};
if(!array_key_exists('Column', $_GET) or (array_key_exists('Column', $_GET) and !array_key_exists($_GET['Column'], $this->Definition['Items'])))
{
if(array_key_exists('DefaultOrderColumn', $this->Definition)) $_GET['Column'] = $this->Definition['DefaultOrderColumn'];
else
{
$Keys = array_keys($this->Definition['Items']);
$_GET['Column'] = $Keys[0];
}
}
}
function Show()
{
$this->CheckOrder();
$Header = array();
$QueryStringArray = $this->System->HTTP->GetQueryStringArray();
$QueryStringArray['Order'] = $_GET['Order'];
foreach($this->Definition['Items'] as $Index => $Item)
{
if($Item['Type'] != 'Hidden')
{
$QueryStringArray['Column'] = $Index;
if($_GET['Column'] == $Index) $QueryStringArray['Order'] = 1 - $_GET['Order'];
else $QueryStringArray['Order'] = $_GET['Order'];
$Header[] = ''.$Item['Caption'].'';
}
}
$Table = array(
'Header' => $Header,
'Rows' => $this->Values,
);
$Output = $this->Table($Table, 'WideTable', 'LiftList');
$Output .= '
';
return($Output);
}
function LoadValuesFromDatabase($Database)
{
$this->CheckOrder();
$OrderType = array('ASC', 'DESC');
$this->Header = array();
foreach($this->Definition['Items'] as $Index => $Item)
{
$this->Header[] = $Item['Caption'];
}
$this->Values = array();
$Table = $this->Definition['Table'];
foreach($this->QueryParameters as $Index => $Item)
$Table = str_replace('%'.$Index, $Item, $Table);
$DbResult = $Database->query('SELECT COUNT(*) FROM '.$Table.' AS T ORDER BY T.'.$_GET['Column'].' '.$OrderType[$_GET['Order']]);
$DbRow = $DbResult->fetch_row();
$this->TotalRowCount = $DbRow[0];
if(array_key_exists('Page', $_GET)) $this->Page = $_GET['Page']; else $this->Page = 0;
if($this->Page > ($this->TotalRowCount / $this->RowPerPage)) $this->Page = 0;
$DbResult = $Database->query('SELECT * FROM '.$Table.' AS T ORDER BY T.'.$_GET['Column'].' '.$OrderType[$_GET['Order']].' LIMIT '.($this->Page * $this->RowPerPage).', '.$this->RowPerPage);
echo($Database->error);
while($DbRow = $DbResult->fetch_assoc())
{
if(method_exists($this->OnRow[0], $this->OnRow[1]))
{
$Object = $this->OnRow[0];
$Method = $this->OnRow[1];
$DbRow = $Object->$Method($DbRow);
}
$Row = array();
foreach($this->Definition['Items'] as $Index => $Item)
{
$DbRow[$Index] = $this->System->Type->ExecuteTypeEvent($Item['Type'], 'OnView',
array('Name' => $Index, 'Value' => $DbRow[$Index], 'Type' => $Item['Type']));
$Row[$Index] = $DbRow[$Index];
}
$this->Values[] = $Row;
}
}
}