-package UsageStats;
+package C4::UsageStats;
# This file is part of Koha.
#
use POSIX qw(strftime);
use LWP::UserAgent;
use JSON;
-use URI::Encode qw(uri_encode);
=head1 NAME C4::UsageStats
sub NeedUpdate {
my $lastupdated = C4::Context->preference('UsageStatsLastUpdateTime') || 0;
- my $now = strftime("%s", localtime);
+ my $now = strftime( "%s", localtime );
# Need to launch cron.
return 1 if $now - $lastupdated >= 2592000;
sub BuildReport {
my $report = {
library => {
+ id => C4::Context->preference('UsageStatsID') || 0,
name => C4::Context->preference('UsageStatsLibraryName') || q||,
- id => C4::Context->preference('UsageStatsID') || 0,
+ url => C4::Context->preference('UsageStatsLibraryUrl') || q||,
+ type => C4::Context->preference('UsageStatsLibraryType') || q||,
+ country => C4::Context->preference('UsageStatsCountry') || q||,
},
};
# Get database volumetry.
- foreach (qw/biblio auth_header old_issues old_reserves borrowers aqorders subscription/) {
+ foreach (
+ qw/biblio auth_header old_issues old_reserves borrowers aqorders subscription/
+ )
+ {
$report->{volumetry}{$_} = _count($_);
}
=cut
sub ReportToCommunity {
- my $data = shift;
- my $json = uri_encode( to_json($data), 1 );
+ my $data = shift;
+ my $json = encode_json($data);
- my $ua = LWP::UserAgent->new;
- my $req =
- HTTP::Request->new( POST => "http://hea.koha-community.org/upload.pl" );
- $req->content_type('application/x-www-form-urlencoded');
- $req->content("data=$json");
- my $res = $ua->request($req);
- my $content = from_json( $res->decoded_content );
- C4::Context->set_preference( 'UsageStatsID',
- $content->{library}{library_id} );
+ my $url = "http://hea.koha-community.org/upload.pl";
+ my $ua = LWP::UserAgent->new;
+ my $res = $ua->post(
+ $url,
+ 'Content-type' => 'application/json;charset=utf-8',
+ Content => $json,
+ );
+ my $content = decode_json( $res->decoded_content );
+ C4::Context->set_preference( 'UsageStatsID',
+ $content->{library}{id} );
}
=head2 _count
=cut
sub _count {
- my $table = shift;
+ my $table = shift;
- my $dbh = C4::Context->dbh;
- my $sth = $dbh->prepare("SELECT count(*) from $table");
- $sth->execute;
- return $sth->fetchrow_array;
+ my $dbh = C4::Context->dbh;
+ my $sth = $dbh->prepare("SELECT count(*) from $table");
+ $sth->execute;
+ return $sth->fetchrow_array;
}
1;
- will be shown on <a href="http://hea.koha-community.org">Hea Koha community website</a>.
- If this name is empty, you will sent data anonymously
- Note that this value has no effect if UsageStatsShare system preference is set to "Don't share"
+ -
+ - The country where your library is
+ - pref: UsageStatsCountry
+ - will be shown on <a href="http://hea.koha-community.org">Hea Koha community website</a>.
+ - Note that this value has no effect if UsageStatsShare system preference is set to "Don't share"
+ -
+ - The library url
+ - pref: UsageStatsLibraryUrl
+ - will be shown on <a href="http://hea.koha-community.org">Hea Koha community website</a>.
+ - Note that this value has no effect if UsageStatsShare system preference is set to "Don't share"
+
+ -
+ - The library type
+ - pref: UsageStatsLibraryType
+ default: public
+ choices:
+ public: "public"
+ university: "university"
+ - will be shown on <a href="http://hea.koha-community.org">Hea Koha community website</a>.
+ - Note that this value has no effect if UsageStatsShare system preference is set to "Don't share"
use C4::Context;
use C4::UsageStats;
+use POSIX qw(strftime);
-
-my ( $help, $verbose );
+my ( $help, $verbose, $force );
GetOptions(
- 'h|help' => \$help,
- 'v|verbose' => \$verbose,
+ 'h|help' => \$help,
+ 'v|verbose' => \$verbose,
+ 'f|force' => \$force,
) || pod2usage(1);
if ($help) {
pod2usage(1);
}
-unless( C4::Context->preference('UsageStatsShare') ) {
- pod2usage (q|The UsageStats system preference is not set. If your library wants to share their usage statistics with the Koha community, you have to switch on this system preference|);
- exit 1;
+unless ( C4::Context->preference('UsageStatsShare') ) {
+ pod2usage(
+q|
+The UsageStats system preference is not set.
+If your library wants to share their usage statistics with the Koha community, you have to switch on this system preference
+|
+ );
+ exit 1;
}
-my $need_update = C4::UsageStats::NeedUpdate();
+my $need_update = ($force ? 1 : C4::UsageStats::NeedUpdate() );
-if ( $need_update ) {
+if ($need_update) {
say "Data need to be updated" if $verbose;
my $report = C4::UsageStats::BuildReport();
C4::UsageStats::ReportToCommunity($report);
- C4::Context->set_preference('UsageStatsLastUpdateTime', strftime("%s", localtime));
-} elsif( $verbose ) {
+ C4::Context->set_preference( 'UsageStatsLastUpdateTime',
+ strftime( "%s", localtime ) );
+}
+elsif ($verbose) {
say "Data don't need to be updated";
}
In order to know which parts of Koha modules are used, this script will collect some system preference values.
-If you want to tell us who you are, you can fill the UsageStatsLibraryName system preference with your library name.
+If you want to tell us who you are, you can fill the UsageStatsLibraryName system preference with your library name, UsageStatsLibraryUrl, UsageStatsLibraryType and/or UsageStatsCountry.
All these data will be analysed on the http://hea.koha-community.org Koha community website.
Verbose mode.
+=item B<-f|--force>
+
+Force the update.
+
=back
=head1 AUTHOR