diff options
Diffstat (limited to '')
-rw-r--r-- | admin/stats.php | 175 |
1 files changed, 175 insertions, 0 deletions
diff --git a/admin/stats.php b/admin/stats.php new file mode 100644 index 000000000..39f5888fb --- /dev/null +++ b/admin/stats.php @@ -0,0 +1,175 @@ +<?php +/*************************************************************************** + * stats.php * + * ------------------- * + * application : PhpWebGallery 1.3 * + * author : Pierrick LE GALL <pierrick@z0rglub.com> * + * * + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; * + * * + ***************************************************************************/ +include_once( './include/isadmin.inc.php' ); +$max_pixels = 500; +//------------------------------------------------------------ comment deletion +if ( isset( $_GET['del'] ) and is_numeric( $_GET['del'] ) ) +{ + $query = 'DELETE FROM '.PREFIX_TABLE.'comments'; + $query.= ' WHERE id = '.$_GET['del']; + $query.= ';'; + mysql_query( $query ); +} +//--------------------------------------------------------- history table empty +if ( isset( $_GET['act'] ) and $_GET['act'] == 'empty' ) +{ + $query = 'DELETE FROM '.PREFIX_TABLE.'history'; + $query.= ';'; + mysql_query( $query ); +} +//----------------------------------------------------- template initialization +$sub = $vtp->Open( '../template/'.$user['template'].'/admin/stats.vtp' ); +$tpl = array( 'stats_last_days','date','login', + 'IP','file','picture','category','stats_pages_seen', + 'stats_visitors','stats_empty', 'stats_pages_seen_graph_title', + 'stats_visitors_graph_title'); +templatize_array( $tpl, 'lang', $sub ); +//--------------------------------------------------- number of days to display +if ( isset( $_GET['last_days'] ) ) +{ + define( MAX_DAYS, $_GET['last_days'] ); +} +else +{ + define( MAX_DAYS, 0 ); +} +foreach ( $conf['last_days'] as $option ) { + $vtp->addSession( $sub, 'last_day_option' ); + $vtp->setVar( $sub, 'last_day_option.option', $option ); + $url = './admin.php?page=stats&expand='.$_GET['expand']; + $url.= '&last_days='.($option - 1); + $vtp->setVar( $sub, 'last_day_option.link', add_session_id( $url ) ); + if ( $option == MAX_DAYS + 1 ) + { + $vtp->setVar( $sub, 'last_day_option.style', 'font-weight:bold;'); + } + $vtp->closeSession( $sub, 'last_day_option' ); +} +//---------------------------------------------------------------- log history +// empty link +$url = './admin.php?page=stats&last_days='.$_GET['last_days']; +$url.= '&expand='.$_GET['expand']; +$url.= '&act=empty'; +$vtp->setVar( $sub, 'emply_url', add_session_id( $url ) ); +// expand array management +$expand_days = explode( ',', $_GET['expand'] ); +$page['expand_days'] = array(); +foreach ( $expand_days as $expand_day ) { + if ( is_numeric( $expand_day ) ) + { + array_push( $page['expand_days'], $expand_day ); + } +} + +$days = array(); +$max_nb_visitors = 0; +$max_pages_seen = 0; + +$starttime = mktime( 0, 0, 0,date('n'),date('j'),date('Y') ); +$endtime = mktime( 23,59,59,date('n'),date('j'),date('Y') ); +for ( $i = 0; $i <= MAX_DAYS; $i++ ) +{ + $day = array(); + $vtp->addSession( $sub, 'day' ); + // link to open the day to see details + $local_expand = $page['expand_days']; + if ( in_array( $i, $page['expand_days'] ) ) + { + $vtp->addSession( $sub, 'expanded' ); + $vtp->closeSession( $sub, 'expanded' ); + $local_expand = array_remove( $local_expand, $i ); + } + else + { + $vtp->addSession( $sub, 'collapsed' ); + $vtp->closeSession( $sub, 'collapsed' ); + array_push( $local_expand, $i ); + } + $url = './admin.php?page=stats&last_days='.$_GET['last_days']; + $url.= '&expand='.implode( ',', $local_expand ); + $vtp->setVar( $sub, 'day.url', add_session_id( $url ) ); + // date displayed like this (in English ) : + // Sunday 15 June 2003 + $date = $lang['day'][date( 'w', $starttime )]; // Sunday + $date.= date( ' j ', $starttime ); // 15 + $date.= $lang['month'][date( 'n', $starttime )]; // June + $date.= date( ' Y', $starttime ); // 2003 + $day['date'] = $date; + $vtp->setVar( $sub, 'day.name', $date ); + // number of visitors for this day + $query = 'SELECT DISTINCT(IP) as nb_visitors'; + $query.= ' FROM '.PREFIX_TABLE.'history'; + $query.= ' WHERE date > '.$starttime; + $query.= ' AND date < '.$endtime; + $query.= ';'; + $result = mysql_query( $query ); + $nb_visitors = mysql_num_rows( $result ); + $day['nb_visitors'] = $nb_visitors; + if ( $nb_visitors > $max_nb_visitors ) $max_nb_visitors = $nb_visitors; + $vtp->setVar( $sub, 'day.nb_visitors', $nb_visitors ); + // log lines for this day + $query = 'SELECT date,login,IP,category,file,picture'; + $query.= ' FROM '.PREFIX_TABLE.'history'; + $query.= ' WHERE date > '.$starttime; + $query.= ' AND date < '.$endtime; + $query.= ' ORDER BY date ASC'; + $query.= ';'; + $result = mysql_query( $query ); + $nb_pages_seen = mysql_num_rows( $result ); + $day['nb_pages_seen'] = $nb_pages_seen; + if ( $nb_pages_seen > $max_pages_seen ) $max_pages_seen = $nb_pages_seen; + $vtp->setVar( $sub, 'day.nb_pages', $nb_pages_seen ); + if ( in_array( $i, $page['expand_days'] ) ) + { + while ( $row = mysql_fetch_array( $result ) ) + { + $vtp->addSession( $sub, 'line' ); + $vtp->setVar( $sub, 'line.date', date( 'G:i', $row['date'] ) ); + $vtp->setVar( $sub, 'line.login', $row['login'] ); + $vtp->setVar( $sub, 'line.IP', $row['IP'] ); + $vtp->setVar( $sub, 'line.category', $row['category'] ); + $vtp->setVar( $sub, 'line.file', $row['file'] ); + $vtp->setVar( $sub, 'line.picture', $row['picture'] ); + $vtp->closeSession( $sub, 'line' ); + } + } + $starttime-= 24*60*60; + $endtime -= 24*60*60; + $vtp->closeSession( $sub, 'day' ); + array_push( $days, $day ); +} +//------------------------------------------------------------ pages seen graph +foreach ( $days as $day ) { + $vtp->addSession( $sub, 'pages_day' ); + $width = floor( ( $day['nb_pages_seen'] * $max_pixels ) / $max_pages_seen ); + $vtp->setVar( $sub, 'pages_day.date', $day['date'] ); + $vtp->setVar( $sub, 'pages_day.width', $width ); + $vtp->setVar( $sub, 'pages_day.nb_pages', $day['nb_pages_seen'] ); + $vtp->closeSession( $sub, 'pages_day' ); +} +//-------------------------------------------------------------- visitors grpah +foreach ( $days as $day ) { + $vtp->addSession( $sub, 'visitors_day' ); + $width = floor( ( $day['nb_visitors'] * $max_pixels ) / $max_nb_visitors ); + $vtp->setVar( $sub, 'visitors_day.date', $day['date'] ); + $vtp->setVar( $sub, 'visitors_day.width', $width ); + $vtp->setVar( $sub, 'visitors_day.nb_visitors', $day['nb_visitors'] ); + $vtp->closeSession( $sub, 'visitors_day' ); +} +//----------------------------------------------------------- sending html code +$vtp->Parse( $handle , 'sub', $sub ); +?>
\ No newline at end of file |