[Patches] [PATCH] Bug 6828[ENH] - Add basic Dashboard for staff users.
koha-patchbot at kohaaloha.com
koha-patchbot at kohaaloha.com
Fri Nov 25 01:05:03 NZDT 2011
From: Barry Cannon <barry at oslo.ie>
Date: Thu, 24 Nov 2011 11:58:30 +0000
Subject: [PATCH] Bug 6828[ENH] - Add basic Dashboard for staff users.
Content-Type: text/plain; charset="utf-8"
This enhancement adds the option of switching on/off a Dashboard
on the Staff users mainpage. The information displayed is specific
to the users logged in branch but will also show a system wide
overview. Its visibility is controlled by a new SysPref.
This first revision takes its data from an XML file which needs to
be populated on a cronjob.
The file to run is in misc/migration_tools/dashboard_xml.pl. The usual Koha
env will need to be set for the user running the script.
---
C4/Auth.pm | 3 +-
C4/DashBoard.pm | 341 ++++++++++++++++++++
installer/data/mysql/sysprefs.sql | 1 +
installer/data/mysql/updatedatabase.pl | 8 +
.../prog/en/modules/admin/preferences/admin.pref | 8 +
.../intranet-tmpl/prog/en/modules/intranet-main.tt | 111 +++++++
mainpage.pl | 176 ++++++++++
misc/migration_tools/dashboard_xml.pl | 82 +++++
8 files changed, 729 insertions(+), 1 deletions(-)
create mode 100755 C4/DashBoard.pm
create mode 100644 misc/migration_tools/dashboard_xml.pl
diff --git a/C4/Auth.pm b/C4/Auth.pm
index e360e10..4f418c7 100755
--- a/C4/Auth.pm
+++ b/C4/Auth.pm
@@ -389,7 +389,8 @@ sub get_template_and_user {
virtualshelves => C4::Context->preference("virtualshelves"),
StaffSerialIssueDisplayCount => C4::Context->preference("StaffSerialIssueDisplayCount"),
NoZebra => C4::Context->preference('NoZebra'),
- EasyAnalyticalRecords => C4::Context->preference('EasyAnalyticalRecords'),
+ EasyAnalyticalRecords => C4::Context->preference('EasyAnalyticalRecords'),
+ DashBoardDisplayed => C4::Context->preference('DashBoardDisplayed')
);
}
else {
diff --git a/C4/DashBoard.pm b/C4/DashBoard.pm
new file mode 100755
index 0000000..2270aba
--- /dev/null
+++ b/C4/DashBoard.pm
@@ -0,0 +1,341 @@
+package C4::DashBoard;
+
+# Copyright 2000-2002 Katipo Communications
+#
+# This file is part of Koha.
+#
+# Koha 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.
+#
+# Koha 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.
+#
+# You should have received a copy of the GNU General Public License along
+# with Koha; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+
+use strict;
+use warnings;
+use C4::Context;
+use C4::Dates qw(format_date);
+
+use vars qw($VERSION @ISA @EXPORT);
+
+BEGIN {
+ $VERSION = 3.01;
+ @ISA = qw(Exporter);
+ @EXPORT = qw(&number_of_items_library_xml &number_of_borrowers_library_xml &number_of_issues_library_xml &number_of_biblios_xml &number_of_loan_history_system_xml
+ &number_of_overdues_library_xml &number_of_biblios_7days_xml &number_of_items_7days_system_xml &number_of_overdues_7days_library_xml
+ &number_of_borrowers_system_xml &number_of_items_system_xml &number_of_items_7days_library_xml &number_of_overdues_system_xml
+ &number_of_overdues_14days_library_xml &number_of_overdues_21days_library_xml &number_of_veryoverdue_library_xml &expired_borrowers_library_xml
+ &expired_borrowers_system_xml &number_of_issues_system_xml &number_of_loan_history_library_xml &number_of_overdues_7days_system_xml
+ &number_of_overdues_14days_system_xml &number_of_overdues_21days_system_xml &number_of_veryoverdue_system_xml &last_update_xml
+ );
+}
+
+
+sub number_of_items_library_xml {
+ my $dbh = C4::Context->dbh;
+ my $items = $dbh->selectall_arrayref ('select branches.branchcode as BranchCode, IFNULL(SubTotal.items,0) as NumberOfItems
+ from branches
+ left join
+ (select homebranch, count(*) as Items
+ from items
+ group by homebranch) SubTotal
+ on branches.branchcode=SubTotal.homebranch',{ Columns => {} });
+ $dbh->disconnect();
+ return $items;
+
+}
+
+sub number_of_items_system_xml {
+ my $dbh = C4::Context->dbh;
+ my $items_system = $dbh->selectall_arrayref('select count(*) as NumberOfItemsSystem from items', {Columns => {} });
+ $dbh->disconnect;
+ return $items_system;
+
+}
+
+sub number_of_borrowers_library_xml {
+ my $dbh = C4::Context->dbh;
+ my $borrowers = $dbh->selectall_arrayref ('select branches.branchcode as BranchCode, IFNULL(SubTotal.Borrowers,0) as NumberOfBorrowers
+ from branches
+ left join
+ (select branchcode, count(*) as Borrowers
+ from borrowers
+ group by branchcode) SubTotal
+ on branches.branchcode=SubTotal.branchcode',{ Columns => {} });
+ $dbh->disconnect;
+ return $borrowers;
+
+}
+
+sub number_of_borrowers_system_xml {
+ my $dbh = C4::Context->dbh;
+ my $number_of_borrowers_system = $dbh->selectall_arrayref('select count(*) as NumberofBorrowersSystem
+ from borrowers',{ Columns => {} } );
+ $dbh->disconnect;
+ return $number_of_borrowers_system;
+
+}
+
+sub number_of_issues_library_xml {
+ my $dbh = C4::Context->dbh;
+ my $issues_library = $dbh->selectall_arrayref('select branches.branchcode as BranchCode, IFNULL(SubTotal.issues,0) as NumberOfIssues
+ from branches
+ left join
+ (select branchcode, count(*) as Issues
+ from issues
+ group by branchcode) SubTotal
+ on branches.branchcode=SubTotal.branchcode',{ Columns => {} });
+ $dbh->disconnect();
+ return $issues_library;
+
+}
+
+sub number_of_issues_system_xml {
+ my $dbh = C4::Context->dbh;
+ my $issues_system = $dbh->selectall_arrayref('select count(*) as NumberOfIssuesSystem
+ from issues',{Columns => {}});
+ $dbh->disconnect;
+ return $issues_system;
+
+}
+
+sub number_of_biblios_xml {
+ my $dbh = C4::Context->dbh;
+ my $biblios = $dbh->selectall_arrayref('select count(*) as NumberOfBiblios from biblio',{ Columns => {} } );
+ $dbh->disconnect;
+ return $biblios;
+
+}
+
+sub number_of_loan_history_system_xml {
+ my $dbh = C4::Context->dbh;
+ my $loan_history = $dbh->selectall_arrayref('select count(*) as NumberOfLoans from old_issues', { Columns => {} });
+ $dbh->disconnect;
+ return $loan_history;
+
+}
+
+sub number_of_loan_history_library_xml {
+ my $dbh = C4::Context->dbh;
+ my $loan_history_library = $dbh->selectall_arrayref('select branches.branchcode as BranchCode, IFNULL(SubTotal.oldissues,0) as NumberOfLoans
+ from branches
+ left join
+ (select branchcode, count(*) as OldIssues
+ from old_issues
+ group by branchcode) SubTotal
+ on branches.branchcode=SubTotal.branchcode', {Columns => {}} );
+ $dbh->disconnect;
+ return $loan_history_library;
+
+}
+
+sub number_of_overdues_library_xml {
+ my $dbh = C4::Context->dbh;
+ my $overdues_library = $dbh->selectall_arrayref('select branches.branchcode as BranchCode, IFNULL(SubTotal.Overdues,0) as NumberOfOverdues
+ from branches
+ left join
+ (select branchcode, count(*) as Overdues
+ from issues
+ where date_due < date(now())
+ group by branchcode) SubTotal
+ on branches.branchcode=SubTotal.branchcode', {Columns => {} });
+ $dbh->disconnect;
+ return $overdues_library;
+
+}
+
+sub number_of_overdues_system_xml {
+ my $dbh = C4::Context->dbh;
+ my $overdues_system = $dbh->selectall_arrayref('select count(*) as NumberOfOverdues
+ from issues
+ where date_due < date(now())',{Columns => {}} );
+ $dbh->disconnect;
+ return $overdues_system;
+
+}
+
+sub number_of_overdues_7days_library_xml {
+ my $dbh = C4::Context->dbh;
+ my $overdues_library_7days = $dbh->selectall_arrayref('select branches.branchcode as BranchCode, IFNULL(SubTotal.Overdues,0) as NumberOfOverdues7Days
+ from branches
+ left join
+ (select branchcode, count(*) as Overdues
+ from issues
+ where date_due between DATE_SUB(CURDATE(), INTERVAL 7 DAY) AND DATE_SUB(CURDATE(), INTERVAL 1 DAY)
+ group by branchcode) SubTotal
+ on branches.branchcode=SubTotal.branchcode', {Columns => {} });
+ $dbh->disconnect;
+ return $overdues_library_7days;
+
+}
+
+sub number_of_overdues_7days_system_xml {
+ my $dbh = C4::Context->dbh;
+ my $overdues_7days_system = $dbh->selectall_arrayref('select count(*) as NumberOfOverdues
+ from issues
+ where date_due
+ between DATE_SUB(CURDATE(), INTERVAL 7 DAY) AND DATE_SUB(CURDATE(), INTERVAL 1 DAY)', {Columns => {}} );
+ return $overdues_7days_system;
+
+}
+
+sub number_of_overdues_14days_library_xml {
+ my $dbh = C4::Context->dbh;
+ my $overdues_14days = $dbh->selectall_arrayref('select branches.branchcode as BranchCode, IFNULL(SubTotal.Overdues,0) as NumberOfOverdues14Days
+ from branches
+ left join
+ (select branchcode, count(*) as Overdues
+ from issues
+ where date_due
+ between DATE_SUB(CURDATE(), INTERVAL 14 DAY) AND DATE_SUB(CURDATE(), INTERVAL 8 DAY)
+ group by branchcode) SubTotal
+ on branches.branchcode=SubTotal.branchcode', {Columns => {} });
+ $dbh->disconnect;
+ return $overdues_14days;
+
+}
+
+sub number_of_overdues_14days_system_xml {
+ my $dbh = C4::Context->dbh;
+ my $overdues_14days_system = $dbh->selectall_arrayref('select count(*) as NumberOfOverdues14Days
+ from issues
+ where date_due
+ between DATE_SUB(CURDATE(), INTERVAL 14 DAY) AND DATE_SUB(CURDATE(), INTERVAL 8 DAY)', {Columns => {}} );
+ $dbh->disconnect;
+ return $overdues_14days_system;
+
+}
+
+sub number_of_overdues_21days_library_xml {
+ my $dbh = C4::Context->dbh;
+ my $overdues_21days_library = $dbh->selectall_arrayref('select branches.branchcode as BranchCode, IFNULL(SubTotal.Overdues,0) as NumberOfOverdues21Days
+ from branches
+ left join
+ (select branchcode, count(*) as Overdues
+ from issues
+ where date_due between DATE_SUB(CURDATE(), INTERVAL 21 DAY) AND DATE_SUB(CURDATE(), INTERVAL 15 DAY)
+ group by branchcode) SubTotal
+ on branches.branchcode=SubTotal.branchcode', {Columns => {} });
+ $dbh->disconnect;
+ return $overdues_21days_library;
+
+}
+
+sub number_of_overdues_21days_system_xml {
+ my $dbh = C4::Context->dbh;
+ my $overdues_21days_system = $dbh->selectall_arrayref('select count(*) as NumberOfOverdues21Days
+ from issues
+ where date_due between DATE_SUB(CURDATE(), INTERVAL 21 DAY) AND DATE_SUB(CURDATE(), INTERVAL 15 DAY)'
+ , {Columns => {} });
+ return $overdues_21days_system;
+
+}
+
+sub number_of_veryoverdue_library_xml {
+ my $dbh = C4::Context->dbh;
+ my $very_overdue_library = $dbh->selectall_arrayref('select branches.branchcode as BranchCode, IFNULL(SubTotal.Overdues,0) as NumberOfVeryOverdue
+ from branches
+ left join
+ (select branchcode, count(*) as Overdues
+ from issues
+ where date_due < DATE_SUB(CURDATE(), INTERVAL 22 DAY)
+ group by branchcode) SubTotal
+ on branches.branchcode=SubTotal.branchcode', {Columns => {} });
+ $dbh->disconnect;
+ return $very_overdue_library;
+
+}
+
+sub number_of_veryoverdue_system_xml {
+ my $dbh = C4::Context->dbh;
+ my $very_overdue_system = $dbh->selectall_arrayref('select count(*) as Overdues
+ from issues
+ where date_due < DATE_SUB(CURDATE(), INTERVAL 22 DAY)' ,{Columns => {} });
+ $dbh->disconnect;
+ return $very_overdue_system;
+
+}
+
+
+sub number_of_biblios_7days_xml {
+ my $dbh = C4::Context->dbh;
+ my $biblio_7days = $dbh->selectall_arrayref('SELECT count(*) as NumberOfBiblio7Days
+ FROM biblio
+ WHERE datecreated
+ between DATE_SUB(CURDATE(), INTERVAL 7 DAY) AND CURDATE()', {Columns => {} } );
+ $dbh->disconnect;
+ return $biblio_7days;
+
+}
+
+sub number_of_items_7days_system_xml {
+ my $dbh = C4::Context->dbh;
+ my $items_7days_system = $dbh->selectall_arrayref('SELECT count(*) as NumberOfItems7Days
+ FROM items
+ WHERE dateaccessioned
+ between DATE_SUB(CURDATE(), INTERVAL 7 DAY) AND CURDATE()',{Columns =>{} } );
+ $dbh->disconnect;
+ return $items_7days_system;
+
+}
+
+sub number_of_items_7days_library_xml {
+ my $dbh = C4::Context->dbh;
+ my $items_7days_library = $dbh->selectall_arrayref('select branches.branchcode as BranchCode, IFNULL(SubTotal.items,0) as NumberOfItems7DaysLibrary
+ from branches
+ left join
+ (select homebranch, count(*) as Items
+ from items
+ where dateaccessioned > DATE_SUB(CURDATE(), INTERVAL 7 DAY) AND CURDATE()
+ group by homebranch) SubTotal
+ on branches.branchcode=SubTotal.homebranch', {Columns => {} });
+ $dbh->disconnect;
+ return $items_7days_library;
+
+}
+
+sub expired_borrowers_library_xml {
+ my $dbh = C4::Context->dbh;
+ my $expired_borrowers_library = $dbh->selectall_arrayref('select branches.branchcode as BranchCode, IFNULL(SubTotal.ExpiredBorrowers,0) as ExpiredBorrowers
+ from branches
+ left join
+ (select branchcode, count(*) as ExpiredBorrowers
+ from borrowers
+ where dateexpiry < date(now())
+ group by branchcode) SubTotal
+ on branches.branchcode=SubTotal.branchcode;',{Columns => {} } );
+ $dbh->disconnect;
+ return $expired_borrowers_library;
+
+}
+
+sub expired_borrowers_system_xml {
+ my $dbh = C4::Context->dbh;
+ my $expired_borrowers_system = $dbh->selectall_arrayref('select count(*) as ExpiredBorrowers
+ from borrowers
+ where dateexpiry < date(now())', {Columns => {} });
+ $dbh->disconnect;
+ return $expired_borrowers_system;
+
+}
+
+sub last_update_xml {
+ my $dbh = C4::Context->dbh;
+ my $updated = $dbh->selectall_arrayref('SELECT DATE_FORMAT(now(), "%W %M %D %Y %T") as UpdatedTime',
+ {Columns => {} });
+ $dbh->disconnect;
+ return $updated;
+
+}
+
+1;
+__END__
+
+
diff --git a/installer/data/mysql/sysprefs.sql b/installer/data/mysql/sysprefs.sql
index ae2c1cb..da36014 100755
--- a/installer/data/mysql/sysprefs.sql
+++ b/installer/data/mysql/sysprefs.sql
@@ -13,6 +13,7 @@ INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES
INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('AnonSuggestions',0,'Set to enable Anonymous suggestions to AnonymousPatron borrowernumber',NULL,'YesNo');
INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('AnonymousPatron', '0', 'Set the identifier (borrowernumber) of the anonymous patron. Used for Suggestion and reading history privacy',NULL,'');
INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('Babeltheque',0,'Turn ON Babeltheque content - See babeltheque.com to subscribe to this service','','YesNo');
+INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('DashBoardDisplayed','1','','Display Dashboard on main page','YesNo');
INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('authoritysep','--','Used to separate a list of authorities in a display. Usually --',10,'free');
INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('autoBarcode','OFF','Used to autogenerate a barcode: incremental will be of the form 1, 2, 3; annual of the form 2007-0001, 2007-0002; hbyymmincr of the form HB08010001 where HB=Home Branch','incremental|annual|hbyymmincr|OFF','Choice');
diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl
index 815a71d..915c7ee 100755
--- a/installer/data/mysql/updatedatabase.pl
+++ b/installer/data/mysql/updatedatabase.pl
@@ -4550,6 +4550,14 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
SetVersion ($DBversion);
}
+$DBversion = "3.06.00.XXX";
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+ $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('DashBoardDisplayed','1','','Display Dashboard on main page','YesNo')");
+ print "Upgrade to $DBversion done. Added Dashboard Syspref \n";
+ SetVersion ($DBversion);
+}
+
+
=head1 FUNCTIONS
=head2 DropAllForeignKeys($table)
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/admin.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/admin.pref
index f026c7e..49c259a 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/admin.pref
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/admin.pref
@@ -95,3 +95,11 @@ Administration:
-
- The CAS Authentication Server can be found at
- pref: casServerUrl
+ Dashboard:
+ -
+ - pref: DashBoardDisplayed
+ default: 0
+ choices:
+ yes: Show
+ no: "Don't Show"
+ - Switch on Dashboard on main page.
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/intranet-main.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/intranet-main.tt
index 0a2b20c..ea4c6a6 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/intranet-main.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/intranet-main.tt
@@ -117,6 +117,117 @@
</div><!-- /koha-news -->
</div>
[% END %]
+
+<!-- Dashboard, if on -->
+[% IF DashBoardDisplayed %]
+[% UNLESS nofile %]
+<fieldset class="rows">
+<legend>Koha Library Dashboard</legend>
+ <table style="border:0px;" id="dashboard">
+ <tr style="border-bottom: 0px;border-left: 0px;">
+ <td style="border-left: 0px;border-bottom: 0px;">
+ <table id="overview" width="400">
+ <tr>
+ <th>Overview</th>
+ <th>System</th>
+ <th>My Library</th>
+ </tr>
+ <tr align="left">
+ <td align="left">Number of Biblios
+ </td>
+ <td>[% number_of_biblios %]</td>
+ <td style="background-color:#E8E8E8"></td>
+ </tr>
+ <tr>
+ <td>Biblios added in last 7 days</td>
+ <td>[% biblios_7days %]</td>
+ <td style="background-color:#E8E8E8"></td>
+ </tr>
+ <tr>
+ <td>Number of Items</td>
+ <td>[% items_system %]</td>
+ <td>[% items_library %]</td>
+ </tr>
+ <tr>
+ <td>Number of items added in last 7 days</td>
+ <td> [% items_7days_system %]</td>
+ <td>[% items_7days_system %]</td>
+ </tr>
+ <tr>
+ <td>Registered Borrowers</td>
+ <td>[% borrowers_system %]</td>
+ <td>[% borrowers_library %]</td>
+ </tr>
+ <tr>
+ <td>Expired Borrowers</td>
+ <td>[% expired_borrowers_system %]</td>
+ <td>[% expired_borrowers_library %]</td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td></td>
+ <td></td>
+ </tr>
+
+ </table>
+ Last updated: [% last_updated %]
+ </td>
+ <td style="border-bottom: 0px;border-left: 0px;">
+ <table id="circulation" width="400">
+ <tr>
+ <th>Circulation</th>
+ <th>System</th>
+ <th>My Library</th>
+ </tr>
+ <tr align="left">
+ <td align="left">Items on Loan
+ </td>
+ <td>[% issues_system %]</td>
+ <td>[% issues_library %]</td>
+ </tr>
+ <tr>
+ <td>Loan History</td>
+ <td>[% loan_history_system %]</td>
+ <td>[% loan_history_library %]</td>
+ </tr>
+ <tr>
+ <td>Items Overdue</td>
+ <td>[% overdues_system %]</td>
+ <td>[% overdues_library %]</td>
+ </tr>
+ <tr>
+ <td>Overdue within 7 days</td>
+ <td>[% overdues_7days_system %]</td>
+ <td>[% overdues_7days_library %]</td>
+ </tr>
+ <tr>
+ <td>Overdue 8-14 days</td>
+ <td>[% overdues_14days_system %]</td>
+ <td>[% overdues_14days_library %]</td>
+ </tr>
+ <tr>
+ <td>Overdue 15-21 days</td>
+ <td>[% overdues_21days_system %]</td>
+ <td>[% overdues_21days_library %]</td>
+ </tr>
+ <tr>
+ <td>Very Overdue Items</td>
+ <td>[% very_overdue_system %]</td>
+ <td>[% very_overdue_library %]</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+</fieldset>
+</div>
+</div>
+</div>
+[% END %]
+[% END %]
+[% IF nofile %]
+<b>[% nofile %]</b>
+[% END %]
</div>
[% INCLUDE 'intranet-bottom.inc' %]
diff --git a/mainpage.pl b/mainpage.pl
index 25ee475..62d3fee 100755
--- a/mainpage.pl
+++ b/mainpage.pl
@@ -67,4 +67,180 @@ $template->param(
koha_news_count => $koha_news_count
);
+# Dashboard (If on in SysPref)
+my $nofile = "Dashboard is set to \"ON\". However there is no XML file to read. Have you run it at least once?";
+unless ( C4::Context->preference('DashBoardDisplayed') == 0 )
+ {
+ my $koha_conf = $ENV{'KOHA_CONF'};
+ my ($base,$file) = $koha_conf =~ m|^(.*[/\\])([^/\\]+?)$|;
+ my $xml_read = "dashboard_xml.out";
+ my $xml_file = "$base"."$xml_read";
+if (-e $xml_file) {
+ my $xml = new XML::Simple;
+ my $dash = $xml->XMLin($xml_file);
+ my $login_branch_name = $template->{VARS}{LoginBranchcode};
+ my $number_of_biblios;
+ my $biblios_7days;
+ my $items_7days_system;
+ my $items_7days_library;
+ my $borrowers_system;
+ my $expired_borrowers_library;
+ my $expired_borrowers_system;
+ my $loan_history_system;
+ my $loan_history_library;
+ my $overdues_library;
+ my $overdues_system;
+ my $overdues_7days_library;
+ my $overdues_7days_system;
+ my $overdues_14days_library;
+ my $overdues_14days_system;
+ my $overdues_21days_library;
+ my $overdues_21days_system;
+ my $very_overdue_library;
+ my $very_overdue_system;
+ my $borrowers_library;
+ my $issues_library;
+ my $issues_system;
+ my $items_library;
+ my $items_system;
+ my $last_updated;
+
+ $number_of_biblios = $dash->{biblios}->{NumberOfBiblios};
+ $biblios_7days = $dash->{biblio_7days}->{NumberOfBiblio7Days};
+ $items_7days_system = $dash->{items_7days_system}->{NumberOfItems7Days};
+ $borrowers_system = $dash->{number_of_borrowers_system}->{NumberofBorrowersSystem};
+ $loan_history_system = $dash->{loan_history_system}->{NumberOfLoans};
+ $items_system = $dash->{items_system}->{NumberOfItemsSystem};
+ $expired_borrowers_system = $dash->{expired_borrowers_system}->{ExpiredBorrowers};
+ $issues_system = $dash->{issues_system}->{NumberOfIssuesSystem};
+ $overdues_system = $dash->{overdues_system}->{NumberOfOverdues};
+ $overdues_7days_system = $dash->{overdues_7days_system}->{NumberOfOverdues};
+ $overdues_14days_system = $dash->{overdues_14days_system}->{NumberOfOverdues14Days};
+ $overdues_21days_system = $dash->{overdues_21days_system}->{NumberOfOverdues21Days};
+ $very_overdue_system = $dash->{very_overdue_system}->{Overdues};
+ $last_updated = $dash->{last_updated}->{UpdatedTime};
+
+# Looping for "logged in branch" dependant data
+ foreach my $numissl(@{$dash->{issues_library}})
+ {
+ if($numissl->{BranchCode} eq $login_branch_name)
+ {
+ $issues_library = $numissl->{NumberOfIssues}
+ }
+ }
+ foreach my $numitm(@{$dash->{items_library}})
+ {
+ if($numitm->{BranchCode} eq $login_branch_name)
+ {
+ $items_library = $numitm->{NumberOfItems}
+ }
+ }
+ foreach my $numbor(@{$dash->{borrowers_library}})
+ {
+ if($numbor->{BranchCode} eq $login_branch_name)
+ {
+ $borrowers_library = $numbor->{NumberOfBorrowers}
+ }
+ }
+ foreach my $numex(@{$dash->{expired_borrowers_library}})
+ {
+ if($numex->{BranchCode} eq $login_branch_name)
+ {
+ $expired_borrowers_library = $numex->{ExpiredBorrowers}
+ }
+ }
+
+ foreach my $numitm7(@{$dash->{items_7days_library}})
+ {
+ if($numitm7->{BranchCode} eq $login_branch_name)
+ {
+ $items_7days_library = $numitm7->{NumberOfItems7DaysLibrary}
+ }
+ }
+
+ foreach my $oldiss(@{$dash->{loan_history_library}})
+ {
+ if($oldiss->{BranchCode} eq $login_branch_name)
+ {
+ $loan_history_library = $oldiss->{NumberOfLoans}
+ }
+ }
+
+ foreach my $ovdlib(@{$dash->{overdues_library}})
+ {
+ if($ovdlib->{BranchCode} eq $login_branch_name)
+ {
+ $overdues_library = $ovdlib->{NumberOfOverdues}
+ }
+ }
+
+ foreach my $ovd7day(@{$dash->{overdues_7days_library}})
+ {
+ if($ovd7day->{BranchCode} eq $login_branch_name)
+ {
+ $overdues_7days_library = $ovd7day->{NumberOfOverdues7Days}
+ }
+ }
+
+ foreach my $ovd14day(@{$dash->{overdues_14days_library}})
+ {
+ if($ovd14day->{BranchCode} eq $login_branch_name)
+ {
+ $overdues_14days_library = $ovd14day->{NumberOfOverdues14Days}
+ }
+ }
+
+ foreach my $ovd21day(@{$dash->{overdues_21days_library}})
+ {
+ if($ovd21day->{BranchCode} eq $login_branch_name)
+ {
+ $overdues_21days_library = $ovd21day->{NumberOfOverdues21Days}
+ }
+ }
+
+ foreach my $vryod(@{$dash->{very_overdue_library}})
+ {
+ if($vryod->{BranchCode} eq $login_branch_name)
+ {
+ $very_overdue_library = $vryod->{NumberOfVeryOverdue}
+ }
+ }
+
+ $template->param('number_of_biblios' => $number_of_biblios,
+ 'biblios_7days' => $biblios_7days,
+ 'items_7days_system' => $items_7days_system,
+ 'items_7days_library' => $items_7days_library,
+ 'borrowers_system' => $borrowers_system,
+ 'expired_borrowers_library' => $expired_borrowers_library,
+ 'expired_borrowers_system' => $expired_borrowers_system,
+ 'overdues_library' => $overdues_library,
+ 'overdues_system' => $overdues_system,
+ 'overdues_7days_library' => $overdues_7days_library,
+ 'overdues_7days_system' => $overdues_7days_system,
+ 'overdues_14days_library' => $overdues_14days_library,
+ 'overdues_14days_system' => $overdues_14days_system,
+ 'overdues_21days_library' => $overdues_21days_library,
+ 'overdues_21days_system' => $overdues_21days_system,
+ 'very_overdue_library' => $very_overdue_library,
+ 'very_overdue_system' => $very_overdue_system,
+ 'loan_history_system' => $loan_history_system,
+ 'loan_history_library' => $loan_history_library,
+ 'issues_library' => $issues_library,
+ 'issues_system' => $issues_system,
+ 'items_library' => $items_library,
+ 'items_system' => $items_system,
+ 'borrowers_library' => $borrowers_library,
+ 'last_updated' => $last_updated
+
+ );
+}
+
+elsif(!-e $xml_file) {
+ $template->param('nofile' => $nofile,);
+ }
+
+}
+
+# Dashboard end
+
output_html_with_http_headers $query, $cookie, $template->output;
diff --git a/misc/migration_tools/dashboard_xml.pl b/misc/migration_tools/dashboard_xml.pl
new file mode 100644
index 0000000..9a7f03c
--- /dev/null
+++ b/misc/migration_tools/dashboard_xml.pl
@@ -0,0 +1,82 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use XML::Simple;
+use C4::Context;
+use C4::DashBoard;
+
+# This script should be run on a cron at specific intervals
+# It will generate XML with the results of the queries below
+# This can then be parsed and displayed on the Dashboard page.
+# The Syspref for Dashboard will need to be enabled too.
+
+# Using the KOHA_CONF variable to get the base directory.
+# The generated XML file will go there
+my $koha_conf = $ENV{'KOHA_CONF'};
+my ($base,$file) = $koha_conf =~ m|^(.*[/\\])([^/\\]+?)$|;
+my $out_file = 'dashboard_xml.out';
+my $path = "$base"."$out_file";
+
+my $items_library = number_of_items_library_xml;
+my $items_system = number_of_items_system_xml;
+my $borrowers_system = number_of_borrowers_system_xml;
+my $borrowers_library = number_of_borrowers_library_xml;
+my $issues_library = number_of_issues_library_xml;
+my $issues_system = number_of_issues_system_xml;
+my $biblios = number_of_biblios_xml;
+my $loan_history_system = number_of_loan_history_system_xml;
+my $loan_history_library = number_of_loan_history_library_xml;
+my $overdues_library = number_of_overdues_library_xml;
+my $overdues_system = number_of_overdues_system_xml;
+my $biblio_7days = number_of_biblios_7days_xml;
+my $items_7days_system = number_of_items_7days_system_xml;
+my $items_7days_library = number_of_items_7days_library_xml;
+my $overdues_7days_library = number_of_overdues_7days_library_xml;
+my $overdues_7days_system = number_of_overdues_7days_system_xml;
+my $overdues_14days_library = number_of_overdues_14days_library_xml;
+my $overdues_14days_system = number_of_overdues_14days_system_xml;
+my $overdues_21days_library = number_of_overdues_21days_library_xml;
+my $overdues_21days_system = number_of_overdues_21days_system_xml;
+my $very_overdue_library = number_of_veryoverdue_library_xml;
+my $very_overdue_system = number_of_veryoverdue_system_xml;
+my $expired_borrowers_library = expired_borrowers_library_xml;
+my $expired_borrowers_system = expired_borrowers_system_xml;
+my $last_updated = last_update_xml;
+
+
+open my $xml_file, '>:encoding(UTF-8)', $path or die "open($path): $!";
+ XMLout( {
+ items_library => $items_library,
+ items_system => $items_system,
+ borrowers_library => $borrowers_library,
+ issues_library => $issues_library,
+ issues_system => $issues_system,
+ biblios => $biblios,
+ loan_history_system => $loan_history_system,
+ loan_history_library => $loan_history_library,
+ overdues_library => $overdues_library,
+ overdues_system => $overdues_system,
+ biblio_7days => $biblio_7days,
+ items_7days_system => $items_7days_system,
+ items_7days_library => $items_7days_library,
+ overdues_7days_library => $overdues_7days_library,
+ overdues_7days_system => $overdues_7days_system,
+ overdues_14days_library => $overdues_14days_library,
+ overdues_14days_system => $overdues_14days_system,
+ overdues_21days_library => $overdues_21days_library,
+ overdues_21days_system => $overdues_21days_system,
+ very_overdue_library => $very_overdue_library,
+ very_overdue_system => $very_overdue_system,
+ expired_borrowers_library => $expired_borrowers_library,
+ expired_borrowers_system => $expired_borrowers_system,
+ number_of_borrowers_system => $borrowers_system,
+ last_updated => $last_updated
+ },
+
+ Outputfile => $xml_file,
+ XMLDecl => '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>',
+ AttrIndent => 1,
+ NoAttr => 1,
+ RootName => 'dashboard',
+ KeepRoot => 1
+ );
\ No newline at end of file
--
1.7.2.5
More information about the Patches
mailing list