#!/usr/bin/perl

=head1 NAME

joomla-sessions - Munin plugin for different stats over a Joomla MySQL
database

=head1 CONFIGURATION

=over

=item env.mysql

Optional, path to the MySQL binary.  Defaults to C</usr/bin/mysql>.

=item env.mysqlopts

Optional, command line options for "mysql". May be used to set
username and password.  No default value.

=item env.database

Optional, name of the joomla database name.  Defaults to C<mydatabase>.

=back

=head2 Configuration example


  [joomla_sessions*]
    env.mysql /usr/bin/mysql                               # MySQL binary (optional)
    env.mysqlopts -u <MYSQL_USERNAME> -p<MYSQL_PASSWORD>   # How to connect to the database (optional if no password is set)
    env.database databasename                              # Joomla database (optional)

=head1 AUTHORS

Copyright (C) 2011 - Csaba Martha (http://www.zenebuzi.com)

Based on Rowdy Schwachfer (http://rowdy.nl) 's Spotweb plugin

=head1 LICENSE

GPLv3 or later


=cut

# 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 3 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.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

use strict;

my $MYSQL = $ENV{mysql} || "/usr/bin/mysql";
my $MYSQLOPTS = $ENV{mysqlopts} || "";
my $DATABASE = $ENV{database} || "mydatabase";

# Output for config
if(defined $ARGV[0] && $ARGV[0] eq 'config') {
    print <<EOC
graph_title Joomla Actual User Sessions (Totals)
graph_vlabel Session Number
graph_category cms
anonsessions.label Anonym Sessions
graph_scale no
all.warning 10000
all.critical 15000
EOC
;
    print <<EOC
all.label All
EOC
;
    print <<EOC
registered.label Registered
EOC
;

        exit 0;
}

#Anonym Session count
my $anonsessions = `$MYSQL $MYSQLOPTS -e 'SELECT COUNT( session_id ) FROM $DATABASE.jos_session WHERE usertype = "''"'`;
$anonsessions =~ /(\d+)/; 
print "anonsessions.value ".$1."\n";

#Registered count
my $registered = `$MYSQL $MYSQLOPTS -e 'SELECT COUNT(usertype) FROM $DATABASE.jos_session WHERE usertype = "'Registered'"'`;
$registered =~/(\d+)/;
print "registered.value ".$1."\n";

#All count
my $all = `$MYSQL $MYSQLOPTS -e 'SELECT COUNT(usertype) FROM $DATABASE.jos_session'`;
$all =~/(\d+)/;
print "all.value ".$1."\n";
