Bug 11926: Add new sysprefs and fix encoding issues

Signed-off-by: Chris Cormack <chris@bigballofwax.co.nz>

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
This commit is contained in:
Jonathan Druart 2014-09-04 11:49:27 +02:00 committed by Tomas Cohen Arazi
parent 3da1960d21
commit 7d5105968e
3 changed files with 71 additions and 33 deletions

View file

@ -1,4 +1,4 @@
package UsageStats;
package C4::UsageStats;
# This file is part of Koha.
#
@ -22,7 +22,6 @@ use C4::Context;
use POSIX qw(strftime);
use LWP::UserAgent;
use JSON;
use URI::Encode qw(uri_encode);
=head1 NAME C4::UsageStats
@ -45,7 +44,7 @@ only once a month !
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;
@ -57,13 +56,19 @@ sub NeedUpdate {
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($_);
}
@ -338,18 +343,19 @@ Send to hea.koha-community.org database informations
=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
@ -361,12 +367,12 @@ Count the number of records in $table tables
=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;

View file

@ -127,3 +127,23 @@ Administration:
- 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"

View file

@ -7,31 +7,39 @@ use Getopt::Long;
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";
}
@ -53,7 +61,7 @@ Only the total number is retrieved. In no case private data will be shared!
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.
@ -72,6 +80,10 @@ Print a brief help message
Verbose mode.
=item B<-f|--force>
Force the update.
=back
=head1 AUTHOR