#!/usr/bin/perl -wT
#
# TWiki Collaboration Platform, http://TWiki.org/
#
# Copyright (C) 2000-2004 Peter Thoeny, peter@thoeny.com
# Copyright (C) 2002 Richard Donkin, rdonkin@bigfoot.com
#
# For licensing info read license.txt file in the TWiki root.
# 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; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details, published at 
# http://www.gnu.org/copyleft/gpl.html
#
# DESCRIPTION
# This script updates the usage statistics of each TWiki web.
# It reads the current month's log file and updates the table
# in the WebStatistics topic of each web.
# The script should be called by a cron job, it is recommended to
# call it once a day.
BEGIN {
    # Set default current working directory
    if( $ENV{"SCRIPT_FILENAME"} && $ENV{"SCRIPT_FILENAME"} =~ /^(.+)\/[^\/]+$/ ) {
        chdir $1;
    }
    # Set library paths in @INC at compile time
    unshift @INC, '.';
    require 'setlib.cfg';
}

sub init_config { 
   my $config = shift;


    # 'Use locale' for internationalisation of Perl regexes -
    # main locale settings are done in $config->{TWiki}->setupLocale 
    # Do a dynamic 'use locale' for this module
    require TWiki;
    if( $config->{TWiki}->{useLocale} ) {
        require locale;
	import locale ();
    }
}

use CGI::Carp qw(fatalsToBrowser);
use CGI;
use TWiki;

   my %configHash;
   my $config = \%configHash;
   my $twikiUri = $ENV{"REQUEST_URI"};
   $twikiUri =~ s!/+!/!g ; # remove multiple'/' 
   my @twikiUriItem = split ( '/' , $twikiUri ) ;
   $config->{fileConfig} = $ENV{"SERVER_NAME"} . "Port" . $ENV{"SERVER_PORT"} . $twikiUriItem[ 1 ];
   $config->{TWiki}=TWiki->new( $config );
   $config->{TWiki}->init_config();
	 &init_config( $config ) ;


use TWiki::UI::Statistics;

#open(STDERR,'>&STDOUT');   # redirect error to browser
# FIXME: Beware global $| in mod_perl!  Should use 'local'
$| = 1;                    # no buffering

my $query = undef;
my $pathInfo = "";
my $remoteUser = "";
my $topic = "";
my $logDate = "";

# determine at runtime if script is called by browser or cron job
if( $ENV{'DOCUMENT_ROOT'} ) {
  # script is called by browser
  $query = new CGI;
  $pathInfo = $query->path_info() || ""; 
  $remoteUser = $query->remote_user() || "";
  $topic = $query->param( 'topic' ) || "";
  $logDate = $query->param( 'logdate' ) || "";

} else {
  # script is called by cron job or user
  foreach my $arg ( @ARGV ) {
    if ( $arg =~ /^-web=(.*)$/o ) {
      $pathInfo = "/$1";
    } elsif ( $arg =~ /^-logdate=(.*)$/o ) {
      $logDate = $1;
    }
  }
}

$config->{TWiki}->{UI}->{Statistics}->statistics ( $query, $pathInfo, $remoteUser, $topic, $logDate );

# =========================
# EOF
