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:
parent
3da1960d21
commit
7d5105968e
3 changed files with 71 additions and 33 deletions
|
@ -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;
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue