summaryrefslogtreecommitdiff
path: root/admin_site_change.php
diff options
context:
space:
mode:
Diffstat (limited to 'admin_site_change.php')
-rw-r--r--admin_site_change.php109
1 files changed, 60 insertions, 49 deletions
diff --git a/admin_site_change.php b/admin_site_change.php
index 31bda7e480..c1ac7c3d53 100644
--- a/admin_site_change.php
+++ b/admin_site_change.php
@@ -47,6 +47,10 @@ $oldged = WT_Filter::get('oldged');
$newged = WT_Filter::get('newged');
$xref = WT_Filter::get('xref', WT_REGEX_XREF);
$user = WT_Filter::get('user');
+
+$search = WT_Filter::get('search');
+$search = isset($search['value']) ? $search['value'] : null;
+
if (WT_USER_IS_ADMIN) {
// Administrators can see all logs
$gedc = WT_Filter::get('gedc');
@@ -57,6 +61,11 @@ if (WT_USER_IS_ADMIN) {
$query=array();
$args =array();
+if ($search) {
+ $query[] = "(old_gedcom LIKE CONCAT('%', ?, '%') OR new_gedcom LIKE CONCAT('%', ?, '%'))";
+ $args [] = $search;
+ $args [] = $search;
+}
if ($from) {
$query[]='change_time>=?';
$args []=$from;
@@ -137,63 +146,65 @@ case 'export':
exit;
case 'load_json':
Zend_Session::writeClose();
- $iDisplayStart = WT_Filter::getInteger('iDisplayStart');
- $iDisplayLength = WT_Filter::getInteger('iDisplayLength');
- set_user_setting(WT_USER_ID, 'admin_site_change_page_size', $iDisplayLength);
- if ($iDisplayLength>0) {
- $LIMIT = " LIMIT " . $iDisplayStart . ',' . $iDisplayLength;
+ $start = WT_Filter::getInteger('start');
+ $length = WT_Filter::getInteger('length');
+ $search = WT_Filter::get('search');
+ $search = $search['value'];
+ set_user_setting(WT_USER_ID, 'admin_site_change_page_size', $length);
+ if ($length>0) {
+ $LIMIT = " LIMIT " . $start . ',' . $length;
} else {
$LIMIT = "";
}
- $iSortingCols = WT_Filter::getInteger('iSortingCols');
- if ($iSortingCols) {
- $ORDER_BY=' ORDER BY ';
- for ($i=0; $i<$iSortingCols; ++$i) {
+ $order = WT_Filter::get('order');
+ if ($order) {
+ $ORDER_BY = ' ORDER BY ';
+ for ($i = 0; $i < count($order); ++$i) {
+ if ($i > 0) {
+ $ORDER_BY.=',';
+ }
// Datatables numbers columns 0, 1, 2, ...
// MySQL numbers columns 1, 2, 3, ...
- switch (WT_Filter::get('sSortDir_'.$i)) {
+ switch ($order[$i]['dir']) {
case 'asc':
if (WT_Filter::getInteger('iSortCol_'.$i)==0) {
- $ORDER_BY.='change_id ASC '; // column 0 is "timestamp", using change_id gives the correct order for events in the same second
+ $ORDER_BY .= 'change_id ASC '; // column 0 is "timestamp", using change_id gives the correct order for events in the same second
} else {
- $ORDER_BY.=(1 + WT_Filter::getInteger('iSortCol_'.$i)).' ASC ';
+ $ORDER_BY .= (1 + $order[$i]['column']) . ' ASC ';
}
break;
case 'desc':
if (WT_Filter::getInteger('iSortCol_'.$i)==0) {
- $ORDER_BY.='change_id DESC ';
+ $ORDER_BY .= 'change_id DESC ';
} else {
- $ORDER_BY.=(1 + WT_Filter::getInteger('iSortCol_'.$i)).' DESC ';
+ $ORDER_BY .= (1 + $order[$i]['column']) . ' DESC ';
}
break;
}
- if ($i<$iSortingCols-1) {
- $ORDER_BY.=',';
- }
}
} else {
- $ORDER_BY='1 DESC';
+ $ORDER_BY = 'ORDER BY 1 DESC';
}
// This becomes a JSON list, not array, so need to fetch with numeric keys.
- $aaData=WT_DB::prepare($SELECT1.$WHERE.$ORDER_BY.$LIMIT)->execute($args)->fetchAll(PDO::FETCH_NUM);
- foreach ($aaData as &$row) {
- $row[1]=WT_I18N::translate($row[1]);
- $row[2]='<a href="gedrecord.php?pid='.$row[2].'&ged='.$row[6].'" target="_blank">'.$row[2].'</a>';
- $row[3]='<pre>'.WT_Filter::escapeHtml($row[3]).'</pre>';
- $row[4]='<pre>'.WT_Filter::escapeHtml($row[4]).'</pre>';
+ $data=WT_DB::prepare($SELECT1.$WHERE.$ORDER_BY.$LIMIT)->execute($args)->fetchAll(PDO::FETCH_NUM);
+ foreach ($data as &$datum) {
+ $datum[1] = WT_I18N::translate($datum[1]);
+ $datum[2] = '<a href="gedrecord.php?pid='.$datum[2] . '&ged='.$datum[6] . '" target="_blank">' . $datum[2] . '</a>';
+ $datum[3] = '<pre>' . WT_Filter::escapeHtml($datum[3]) . '</pre>';
+ $datum[4] = '<pre>' . WT_Filter::escapeHtml($datum[4]) . '</pre>';
}
// Total filtered/unfiltered rows
- $iTotalDisplayRecords=WT_DB::prepare("SELECT FOUND_ROWS()")->fetchColumn();
- $iTotalRecords=WT_DB::prepare($SELECT2.$WHERE)->execute($args)->fetchColumn();
+ $recordsFiltered = WT_DB::prepare("SELECT FOUND_ROWS()")->fetchColumn();
+ $recordsTotal = WT_DB::prepare($SELECT2.$WHERE)->execute($args)->fetchColumn();
header('Content-type: application/json');
echo json_encode(array( // See http://www.datatables.net/usage/server-side
- 'sEcho' => WT_Filter::getInteger('sEcho'), // Always an integer
- 'iTotalRecords' => $iTotalRecords,
- 'iTotalDisplayRecords' => $iTotalDisplayRecords,
- 'aaData' => $aaData
+ 'draw' => WT_Filter::getInteger('draw'), // Always an integer
+ 'recordsTotal' => $recordsTotal,
+ 'recordsFiltered' => $recordsFiltered,
+ 'data' => $data
));
exit;
}
@@ -202,25 +213,25 @@ $controller
->pageHeader()
->addExternalJavascript(WT_JQUERY_DATATABLES_URL)
->addInlineJavascript('
- var oTable=jQuery("#log_list").dataTable( {
- "sDom": \'<"H"pf<"dt-clear">irl>t<"F"pl>\',
- "bProcessing": true,
- "bServerSide": true,
- "sAjaxSource": "'.WT_SERVER_NAME.WT_SCRIPT_PATH.WT_SCRIPT_NAME.'?action=load_json&from='.$from.'&to='.$to.'&type='.$type.'&oldged='.rawurlencode($oldged).'&newged='.rawurlencode($newged).'&xref='.rawurlencode($xref).'&user='.rawurlencode($user).'&gedc='.rawurlencode($gedc).'",
- '.WT_I18N::datatablesI18N(array(10,20,50,100,500,1000,-1)).',
- "bJQueryUI": true,
- "bAutoWidth":false,
- "aaSorting": [[ 0, "desc" ]],
- "iDisplayLength": '.get_user_setting(WT_USER_ID, 'admin_site_change_page_size', 10).',
- "sPaginationType": "full_numbers",
- "aoColumns": [
- /* Timestamp */ {},
- /* Status */ {},
- /* Record */ {},
- /* Old data */ {"sClass":"raw_gedcom"},
- /* New data */ {"sClass":"raw_gedcom"},
- /* User */ {},
- /* Family tree */ {}
+ jQuery("#log_list").dataTable( {
+ "dom": \'<"H"pf<"dt-clear">irl>t<"F"pl>\',
+ "processing": true,
+ "serverSide": true,
+ "ajax": "'.WT_SERVER_NAME.WT_SCRIPT_PATH.WT_SCRIPT_NAME.'?action=load_json&from='.$from.'&to='.$to.'&type='.$type.'&oldged='.rawurlencode($oldged).'&newged='.rawurlencode($newged).'&xref='.rawurlencode($xref).'&user='.rawurlencode($user).'&gedc='.rawurlencode($gedc).'",
+ ' . WT_I18N::datatablesI18N(array(10, 20, 50, 100, 500, 1000, -1)) . ',
+ jQueryUI: true,
+ autoWidth: false,
+ sorting: [[ 0, "desc" ]],
+ pageLength: '.get_user_setting(WT_USER_ID, 'admin_site_change_page_size', 10).',
+ pagingType: "full_numbers",
+ columns: [
+ /* Timestamp */ { },
+ /* Status */ { },
+ /* Record */ { },
+ /* Old data */ { class: "raw_gedcom", sortable: false },
+ /* New data */ { class: "raw_gedcom", sortable: false },
+ /* User */ { },
+ /* Family tree */ { }
]
});
');