diff options
Diffstat (limited to 'admin/include/functions_history.inc.php')
-rw-r--r-- | admin/include/functions_history.inc.php | 138 |
1 files changed, 138 insertions, 0 deletions
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'); + ?> |