diff options
author | rub <rub@piwigo.org> | 2007-11-01 17:11:52 +0000 |
---|---|---|
committer | rub <rub@piwigo.org> | 2007-11-01 17:11:52 +0000 |
commit | 279f14eff94f44fd26687e4b1c6d43ded12230b7 (patch) | |
tree | 0b44ba499a0caa15620f576f9e614ddcd1c0efa4 | |
parent | 831694b4d1a1e93b5ed6a8e1e4a0c80d21df95cd (diff) |
Resolved issue 0000774: Statistics & plugin triggers => multi history
First part
Merge branch-1_7 2155:2156 into BSF
git-svn-id: http://piwigo.org/svn/trunk@2157 68402e56-0260-453c-a942-63ccdbb3a9ee
-rw-r--r-- | admin/history.php | 139 | ||||
-rw-r--r-- | admin/include/functions_history.inc.php | 138 |
2 files changed, 152 insertions, 125 deletions
diff --git a/admin/history.php b/admin/history.php index a7056f838..0a5d64284 100644 --- a/admin/history.php +++ b/admin/history.php @@ -92,7 +92,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 +202,7 @@ SELECT rules } $page['search']['fields']['user'] = $_GET['user_id']; - + $query =' INSERT INTO '.SEARCH_TABLE.' (rules) @@ -211,137 +218,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 '<pre>'; print_r($page['search']); echo '</pre>'; - - $clauses = array(); - - 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']."'" - ); - } - - 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.' -;'; + $data = trigger_event('get_history', array(), $page['search'], $types); + usort($data, 'history_compare'); - // LIMIT '.$page['start'].', '.$conf['nb_logs_page'].' + $page['nb_lines'] = count($data); - $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 '<pre>'; print_r($search); echo '</pre>'; + + $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'); + ?> |