assign('selected_table', $selected_table = get_select_1($sql, __LINE__, __FILE__));
//todo tree-type table (dhtmlxtree)
//sorting
if (@$rewrite[1] == 'sort') {
$desc = false;
if ($rewrite[3] == 'desc') $desc = true;
if ($selected_table['at_sortby'] == $rewrite[2]) $desc = true;
$desc = $desc ? ' DESC' : '';
$sql = "UPDATE __admin_tables
SET at_sortby = '" . addslashes(@$rewrite[2]) . "$desc'
WHERE at_name = '$table_name'
LIMIT 1";
executesql($sql, __LINE__, __FILE__);
redirect($_SERVER['HTTP_REFERER']);
}
//showing all columns?
if (@$rewrite[1] == 'show') {
switch (@$rewrite[2]) {
case 'basic':
case 'all':
$session['columns_show'] = $rewrite[2];
break;
}
redirect($_SERVER['HTTP_REFERER']);
}
//get columns for this table
$sql = "SELECT * FROM __admin_columns
WHERE ac_at_name = '$table_name'
ORDER BY ac_order";
$all_columns = get_select($sql, __LINE__, __FILE__);
$smarty->assign('all_columns', $all_columns);
//if searching
$where = array();
$joins = array();
foreach ($all_columns as $k => $v) {
$lenam = $v['ac_name'];
if (!empty($_GET['search_' . $lenam])) {
$liked = addslashes($_GET['search_' . $lenam]); //todo just alphanumeric please
if (substr($lenam, -3) != '_id') { //if it is the text
$where[] = "$lenam LIKE '$liked%'";
} else { //link the table, search in linked
$joins[] = "INNER JOIN {$v['ac_belongs']} ON {$v['ac_at_name']}.{$v['ac_name']} = {$v['ac_belongs']}." . table_prefix($v['ac_belongs']) . 'id';
$where[] = table_rendercolumn($v['ac_belongs']) . " LIKE '$liked%'";
}
}
}
//filtering by url addresses (coming from related items)
foreach ($all_columns as $k => $v) {
foreach ($rewrite as $kr => $vr) {
if ($v['ac_name'] == $vr) {
$where[] = "$vr = '" . addslashes($rewrite[$kr + 1]) . "'";
$smarty->assign('filtered_records', true);
}
}
}
if (isset($session['searchall']) && (@$_GET['ajax'] != 'true')) {
unset($session['searchall']);
}
//check for search in session - so that pagination follows the search terms
if ((!isset($_GET['searchall'])) && (isset($session['searchall']))) {
$_GET['searchall'] = $session['searchall'];
}
//if one field for all searches
if (isset($_GET['searchall'])) {
$session['searchall'] = $_GET['searchall'];
$where2 = array();
foreach ($all_columns as $k => $v) {
$lenam = $v['ac_name'];
$liked = addslashes($_GET['searchall']);
if (substr($lenam, -3) != '_id') { //if it is the text
$where2[] = "$lenam LIKE '$liked%'";
} else { //link the table, search in linked
$joins[] = "LEFT JOIN {$v['ac_belongs']} ON {$v['ac_at_name']}.{$v['ac_name']} = {$v['ac_belongs']}." . table_prefix($v['ac_belongs']) . 'id';
$where2[] = table_rendercolumn($v['ac_belongs']) . " LIKE '$liked%'";
}
}
$where[] = '(' . implode(') OR (', $where2) . ')';
}
savesession();
if (intval(@$rewrite[1]) > 0) { //show only a specific row
$where[] = table_prefix($table_name) . "id = '" . intval(@$rewrite[1]) . "'";
$smarty->assign('only_one_record', true);
//get related columns [for reverse links]
$sql = "SELECT * FROM __admin_columns
LEFT JOIN __admin_tables
ON at_name = ac_at_name
WHERE ac_belongs = '$table_name'";
$smarty->assign('related_tables', get_select($sql, __LINE__, __FILE__));
}
if (sizeof($where) > 0) {
$where = 'WHERE (' . implode(') AND (', $where) . ')';
} else {
$where = '';
}
$joins = implode(' ', $joins);
if (!empty($selected_table['at_sortby'])) {
$order = "ORDER BY " . $selected_table['at_sortby'];
} else {
$order = "ORDER BY " . $selected_table['at_display'];
}
$sql = "SELECT * FROM $table_name $joins $where $order";
//todo:nu merge search pe users pt ca se joineaza de users si da duplicate name/alias
if ($table_name == 'products') { paginate($sql, 99);} else {
paginate($sql, 20); } //hardcoded
$data = get_select($sql, __LINE__, __FILE__);
//highlight search
foreach ($all_columns as $k => $v) {
$lenam = $v['ac_name'];
if (!empty($_GET['search_' . $lenam])) {
foreach ($data as $k2 => $v2) {
$liked = addslashes($_GET['search_' . $lenam]); //todo just alphanumeric please
if (substr($lenam, -3) != '_id') { //if it is the text
$kto = $v['ac_name'];
$data[$k2][$kto] = '' . substr($v2[$kto], 0, strlen($liked)) . '' . substr($v2[$kto], strlen($liked));
} else { //link the table, search in linked
$rc = table_rendercolumn($v['ac_belongs']);
$data[$k2][$rc] = '' . substr($v2[$rc], 0, strlen($liked)) . '' . substr($v2[$rc], strlen($liked));
//todo: nu se updateaza highlightul din cauza ca re-iau datele din smarty prin {expand...
}
}
}
}
$smarty->assign('data', $data);
?>