From 7cc4ab6fba1c9fd949e8132500f4938140c4bc81 Mon Sep 17 00:00:00 2001 From: rub Date: Thu, 1 Nov 2007 17:06:15 +0000 Subject: Resolved issue 0000774: Statistics & plugin triggers => multi history First part git-svn-id: http://piwigo.org/svn/branches/branch-1_7@2156 68402e56-0260-453c-a942-63ccdbb3a9ee --- admin/history.php | 144 ++++---------------------------- admin/include/functions_history.inc.php | 138 ++++++++++++++++++++++++++++++ 2 files changed, 152 insertions(+), 130 deletions(-) diff --git a/admin/history.php b/admin/history.php index 0c8f34c33..7bd8a061a 100644 --- a/admin/history.php +++ b/admin/history.php @@ -28,11 +28,6 @@ * Display filtered history lines */ -// echo '
$_POST:
-// '; print_r($_POST); echo '
'; -// echo '
$_GET:
-// '; print_r($_GET); echo '
'; - // +-----------------------------------------------------------------------+ // | functions | // +-----------------------------------------------------------------------+ @@ -96,7 +91,14 @@ if (isset($_POST['submit'])) ); } - $search['fields']['types'] = $_POST['types']; + if (empty($_POST['types'])) + { + $search['fields']['types'] = $types; + } + else + { + $search['fields']['types'] = $_POST['types']; + } $search['fields']['user'] = $_POST['user']; @@ -195,7 +197,7 @@ SELECT rules } $page['search']['fields']['user'] = $_GET['user_id']; - + $query =' INSERT INTO '.SEARCH_TABLE.' (rules) @@ -211,137 +213,19 @@ INSERT INTO '.SEARCH_TABLE.' ); } - - if (isset($page['search']['fields']['filename'])) - { - $query = ' -SELECT - id - FROM '.IMAGES_TABLE.' - WHERE file LIKE \''.$page['search']['fields']['filename'].'\' -;'; - $page['search']['image_ids'] = array_from_query($query, 'id'); - } - - // echo '
'; print_r($page['search']); echo '
'; - - $clauses = array(); + $data = trigger_event('get_history', array(), $page['search'], $types); + usort($data, 'history_compare'); - if (isset($page['search']['fields']['date-after'])) - { - array_push( - $clauses, - "date >= '".$page['search']['fields']['date-after']."'" - ); - } - - if (isset($page['search']['fields']['date-before'])) - { - array_push( - $clauses, - "date <= '".$page['search']['fields']['date-before']."'" - ); - } + $page['nb_lines'] = count($data); - if (isset($page['search']['fields']['types'])) - { - $local_clauses = array(); - - foreach ($types as $type) { - if (in_array($type, $page['search']['fields']['types'])) { - $clause = 'image_type '; - if ($type == 'none') - { - $clause.= 'IS NULL'; - } - else - { - $clause.= "= '".$type."'"; - } - - array_push($local_clauses, $clause); - } - } - - if (count($local_clauses) > 0) - { - array_push( - $clauses, - implode(' OR ', $local_clauses) - ); - } - } - - if (isset($page['search']['fields']['user']) - and $page['search']['fields']['user'] != -1) - { - array_push( - $clauses, - 'user_id = '.$page['search']['fields']['user'] - ); - } - - if (isset($page['search']['fields']['image_id'])) - { - array_push( - $clauses, - 'image_id = '.$page['search']['fields']['image_id'] - ); - } - - if (isset($page['search']['fields']['filename'])) - { - if (count($page['search']['image_ids']) == 0) - { - // a clause that is always false - array_push($clauses, '1 = 2 '); - } - else - { - array_push( - $clauses, - 'image_id IN ('.implode(', ', $page['search']['image_ids']).')' - ); - } - } - - $clauses = prepend_append_array_items($clauses, '(', ')'); - - $where_separator = - implode( - "\n AND ", - $clauses - ); - - $query = ' -SELECT - date, - time, - user_id, - IP, - section, - category_id, - tag_ids, - image_id, - image_type - FROM '.HISTORY_TABLE.' - WHERE '.$where_separator.' -;'; - - // LIMIT '.$page['start'].', '.$conf['nb_logs_page'].' - - $result = pwg_query($query); - - $page['nb_lines'] = mysql_num_rows($result); - $history_lines = array(); $user_ids = array(); $username_of = array(); $category_ids = array(); $image_ids = array(); $tag_ids = array(); - - while ($row = mysql_fetch_assoc($result)) + + foreach ($data as $row) { $user_ids[$row['user_id']] = 1; diff --git a/admin/include/functions_history.inc.php b/admin/include/functions_history.inc.php index b1a7027b5..23693c1f0 100644 --- a/admin/include/functions_history.inc.php +++ b/admin/include/functions_history.inc.php @@ -51,4 +51,142 @@ function history_tabsheet() template_assign_tabsheet(); } +function history_compare($a, $b) +{ + return strcmp($a['date'].$a['time'], $b['date'].$b['time']); +} + +function get_history($data, $search, $types) +{ + if (isset($search['fields']['filename'])) + { + $query = ' +SELECT + id + FROM '.IMAGES_TABLE.' + WHERE file LIKE \''.$search['fields']['filename'].'\' +;'; + $search['image_ids'] = array_from_query($query, 'id'); + } + + // echo '
'; print_r($search); echo '
'; + + $clauses = array(); + + if (isset($search['fields']['date-after'])) + { + array_push( + $clauses, + "date >= '".$search['fields']['date-after']."'" + ); + } + + if (isset($search['fields']['date-before'])) + { + array_push( + $clauses, + "date <= '".$search['fields']['date-before']."'" + ); + } + + if (isset($search['fields']['types'])) + { + $local_clauses = array(); + + foreach ($types as $type) { + if (in_array($type, $search['fields']['types'])) { + $clause = 'image_type '; + if ($type == 'none') + { + $clause.= 'IS NULL'; + } + else + { + $clause.= "= '".$type."'"; + } + + array_push($local_clauses, $clause); + } + } + + if (count($local_clauses) > 0) + { + array_push( + $clauses, + implode(' OR ', $local_clauses) + ); + } + } + + if (isset($search['fields']['user']) + and $search['fields']['user'] != -1) + { + array_push( + $clauses, + 'user_id = '.$search['fields']['user'] + ); + } + + if (isset($search['fields']['image_id'])) + { + array_push( + $clauses, + 'image_id = '.$search['fields']['image_id'] + ); + } + + if (isset($search['fields']['filename'])) + { + if (count($search['image_ids']) == 0) + { + // a clause that is always false + array_push($clauses, '1 = 2 '); + } + else + { + array_push( + $clauses, + 'image_id IN ('.implode(', ', $search['image_ids']).')' + ); + } + } + + $clauses = prepend_append_array_items($clauses, '(', ')'); + + $where_separator = + implode( + "\n AND ", + $clauses + ); + + $query = ' +SELECT + date, + time, + user_id, + IP, + section, + category_id, + tag_ids, + image_id, + image_type + FROM '.HISTORY_TABLE.' + WHERE '.$where_separator.' +;'; + + // LIMIT '.$page['start'].', '.$conf['nb_logs_page'].' + + $result = pwg_query($query); + + while ($row = mysql_fetch_assoc($result)) + { + array_push($data, $row); + } + + return $data; +} + +add_event_handler('get_history', 'get_history', EVENT_HANDLER_PRIORITY_NEUTRAL, 3); +trigger_action('functions_history_included'); + ?> -- cgit v1.2.3