Merge tag 'upstream/0.6.25'

Upstream version 0.6.25
This commit is contained in:
Mario Fetka 2017-05-20 15:29:40 +02:00
commit 2594665299
44 changed files with 2255 additions and 2694 deletions

View File

@ -1,6 +1,12 @@
**pnp-0.6.?? ??/??/2013** **pnp-0.6.?? ??/??/2015**
**pnp-0.6.24 07/30/2013** **pnp-0.6.25 01/03/2015**
* Update: FPDF Update to Version 1.7
* Bugfix: Default source fixed by AWiddersheim
* Bugfix: Fixed urlencoding of Host- and Servicenames by Andreas Doehler
* Bugfix: Fixed Timeranges by AWiddersheim
**pnp-0.6.24 07/30/2014**
* Bugfix: Fixed some more XSS issues * Bugfix: Fixed some more XSS issues
* Bugfix: Fixed PHP issue while running on PHP 5.6 ( Reported by Sven Nierlein ) * Bugfix: Fixed PHP issue while running on PHP 5.6 ( Reported by Sven Nierlein )

22
configure vendored
View File

@ -1,6 +1,6 @@
#! /bin/sh #! /bin/sh
# Guess values for system-dependent variables and create Makefiles. # Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.61 for pnp 0.6.24. # Generated by GNU Autoconf 2.61 for pnp 0.6.25.
# #
# Report bugs to <pnp4nagios-devel@lists.sourceforge.net>. # Report bugs to <pnp4nagios-devel@lists.sourceforge.net>.
# #
@ -574,8 +574,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
# Identity of this package. # Identity of this package.
PACKAGE_NAME='pnp' PACKAGE_NAME='pnp'
PACKAGE_TARNAME='pnp' PACKAGE_TARNAME='pnp'
PACKAGE_VERSION='0.6.24' PACKAGE_VERSION='0.6.25'
PACKAGE_STRING='pnp 0.6.24' PACKAGE_STRING='pnp 0.6.25'
PACKAGE_BUGREPORT='pnp4nagios-devel@lists.sourceforge.net' PACKAGE_BUGREPORT='pnp4nagios-devel@lists.sourceforge.net'
ac_unique_file="src/" ac_unique_file="src/"
@ -1219,7 +1219,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing. # Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh. # This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF cat <<_ACEOF
\`configure' configures pnp 0.6.24 to adapt to many kinds of systems. \`configure' configures pnp 0.6.25 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]... Usage: $0 [OPTION]... [VAR=VALUE]...
@ -1284,7 +1284,7 @@ fi
if test -n "$ac_init_help"; then if test -n "$ac_init_help"; then
case $ac_init_help in case $ac_init_help in
short | recursive ) echo "Configuration of pnp 0.6.24:";; short | recursive ) echo "Configuration of pnp 0.6.25:";;
esac esac
cat <<\_ACEOF cat <<\_ACEOF
@ -1380,7 +1380,7 @@ fi
test -n "$ac_init_help" && exit $ac_status test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then if $ac_init_version; then
cat <<\_ACEOF cat <<\_ACEOF
pnp configure 0.6.24 pnp configure 0.6.25
generated by GNU Autoconf 2.61 generated by GNU Autoconf 2.61
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@ -1394,7 +1394,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake. running configure, to aid debugging if configure makes a mistake.
It was created by pnp $as_me 0.6.24, which was It was created by pnp $as_me 0.6.25, which was
generated by GNU Autoconf 2.61. Invocation command line was generated by GNU Autoconf 2.61. Invocation command line was
$ $0 $@ $ $0 $@
@ -1764,9 +1764,9 @@ _ACEOF
PKG_NAME=pnp4nagios PKG_NAME=pnp4nagios
PKG_VERSION="0.6.24" PKG_VERSION="0.6.25"
PKG_HOME_URL="http://www.pnp4nagios.org/pnp/start" PKG_HOME_URL="http://www.pnp4nagios.org/pnp/start"
PKG_REL_DATE="30-07-2014" PKG_REL_DATE="03-01-2015"
@ -6330,7 +6330,7 @@ exec 6>&1
# report actual input values of CONFIG_FILES etc. instead of their # report actual input values of CONFIG_FILES etc. instead of their
# values after options handling. # values after options handling.
ac_log=" ac_log="
This file was extended by pnp $as_me 0.6.24, which was This file was extended by pnp $as_me 0.6.25, which was
generated by GNU Autoconf 2.61. Invocation command line was generated by GNU Autoconf 2.61. Invocation command line was
CONFIG_FILES = $CONFIG_FILES CONFIG_FILES = $CONFIG_FILES
@ -6379,7 +6379,7 @@ Report bugs to <bug-autoconf@gnu.org>."
_ACEOF _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\ ac_cs_version="\\
pnp config.status 0.6.24 pnp config.status 0.6.25
configured by $0, generated by GNU Autoconf 2.61, configured by $0, generated by GNU Autoconf 2.61,
with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"

View File

@ -2,7 +2,7 @@
# Process this file with autoconf to produce a configure script. # Process this file with autoconf to produce a configure script.
AC_PREREQ(2.61) AC_PREREQ(2.61)
AC_INIT(pnp, 0.6.24, pnp4nagios-devel@lists.sourceforge.net) AC_INIT(pnp, 0.6.25, pnp4nagios-devel@lists.sourceforge.net)
AC_CONFIG_SRCDIR(src/) AC_CONFIG_SRCDIR(src/)
AC_CONFIG_HEADERS(include/config.h:include/config.h.in) AC_CONFIG_HEADERS(include/config.h:include/config.h.in)
AC_PREFIX_DEFAULT(/usr/local/pnp4nagios) AC_PREFIX_DEFAULT(/usr/local/pnp4nagios)
@ -11,9 +11,9 @@ AC_DEFINE([DEFAULT_NAGIOS_USER], [nagios], [Default Nagios User])
AC_DEFINE([DEFAULT_NAGIOS_GROUP], [nagios], [Default Nagios Group]) AC_DEFINE([DEFAULT_NAGIOS_GROUP], [nagios], [Default Nagios Group])
PKG_NAME=pnp4nagios PKG_NAME=pnp4nagios
PKG_VERSION="0.6.24" PKG_VERSION="0.6.25"
PKG_HOME_URL="http://www.pnp4nagios.org/pnp/start" PKG_HOME_URL="http://www.pnp4nagios.org/pnp/start"
PKG_REL_DATE="30-07-2014" PKG_REL_DATE="03-01-2015"
AC_SUBST(PKG_NAME) AC_SUBST(PKG_NAME)
AC_SUBST(PKG_VERSION) AC_SUBST(PKG_VERSION)
AC_SUBST(PKG_HOME_URL) AC_SUBST(PKG_HOME_URL)

View File

@ -1,7 +1,7 @@
#!@PERL@ #!@PERL@
# nagios: -epn # nagios: -epn
## check_pnp_rrds - PNP4Nagios. ## check_pnp_rrds - PNP4Nagios.
## Copyright (c) 2006-2009 Joerg Linge (http://www.pnp4nagios.org) ## Copyright (c) 2006-2015 Joerg Linge (http://www.pnp4nagios.org)
## ##
## This program is free software; you can redistribute it and/or ## This program is free software; you can redistribute it and/or
## modify it under the terms of the GNU General Public License ## modify it under the terms of the GNU General Public License

View File

@ -1,7 +1,7 @@
#!@PERL@ #!@PERL@
# nagios: -epn # nagios: -epn
## @PKG_NAME@@PKG_VERSION@ ## @PKG_NAME@@PKG_VERSION@
## Copyright (c) 2005-2010 Joerg Linge (http://www.pnp4nagios.org) ## Copyright (c) 2005-2015 Joerg Linge (http://www.pnp4nagios.org)
## ##
## This program is free software; you can redistribute it and/or ## This program is free software; you can redistribute it and/or
## modify it under the terms of the GNU General Public License ## modify it under the terms of the GNU General Public License
@ -1548,7 +1548,7 @@ sub read_keyfile {
sub print_help { sub print_help {
print <<EOD; print <<EOD;
Copyright (c) 2005-2010 Joerg Linge <pitchfork\@pnp4nagios.org> Copyright (c) 2005-2015 Joerg Linge <pitchfork\@pnp4nagios.org>
Use process_perfdata.pl to store Nagios Plugin Performance Data into RRD Databases Use process_perfdata.pl to store Nagios Plugin Performance Data into RRD Databases
Options: Options:

View File

@ -1,6 +1,6 @@
#!@PERL@ #!@PERL@
## @PKG_NAME@@PKG_VERSION@ rrd_convert.pl ## @PKG_NAME@@PKG_VERSION@ rrd_convert.pl
## Copyright (c) 2006-2010 Joerg Linge (http://www.pnp4nagios.org) ## Copyright (c) 2006-2015 Joerg Linge (http://www.pnp4nagios.org)
## ##
## This program is free software; you can redistribute it and/or ## This program is free software; you can redistribute it and/or
## modify it under the terms of the GNU General Public License ## modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
# nagios: -epn # nagios: -epn
## @PKG_NAME@@PKG_VERSION@ ## @PKG_NAME@@PKG_VERSION@
# #
# Copyright (c) 2012 PNP4Nagios Developer Team (http://www.pnp4nagios.org) # Copyright (c) 2006-2015 PNP4Nagios Developer Team (http://www.pnp4nagios.org)
# #
# This program is free software; you can redistribute it and/or # This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License # modify it under the terms of the GNU General Public License

View File

@ -48,7 +48,7 @@ class Graph_Controller extends System_Controller {
if($this->host != "" && $this->service != ""){ if($this->host != "" && $this->service != ""){
$this->service = pnp::clean($this->service); $this->service = pnp::clean($this->service);
$this->host = pnp::clean($this->host); $this->host = pnp::clean($this->host);
$this->url = "?host=".$this->host."&srv=".$this->service; $this->url = "?host=".urlencode($this->host)."&srv=".urlencode($this->service);
$services = $this->data->getServices($this->host); $services = $this->data->getServices($this->host);
#Landingpage for mobile devices #Landingpage for mobile devices
if($this->isMobileDevice()){ if($this->isMobileDevice()){

View File

@ -23,13 +23,13 @@ class System_Controller extends Template_Controller {
// Check for mod_rewrite // Check for mod_rewrite
$this->check_mod_rewrite(); $this->check_mod_rewrite();
$this->start = pnp::clean($this->input->get('start',FALSE)); $this->start = $this->input->get('start',FALSE);
$this->end = pnp::clean($this->input->get('end',FALSE)); $this->end = $this->input->get('end',FALSE);
$this->theme = pnp::clean($this->input->get('theme',FALSE)); $this->theme = pnp::clean($this->input->get('theme',FALSE));
$this->view = pnp::clean($this->input->get('view', "")); $this->view = pnp::clean($this->input->get('view', ""));
$this->host = pnp::clean($this->input->get('host',NULL)); $this->host = pnp::clean($this->input->get('host',NULL));
$this->service = pnp::clean($this->input->get('srv',NULL)); $this->service = pnp::clean($this->input->get('srv',NULL));
$this->source = pnp::clean($this->input->get('source',0)); $this->source = pnp::clean($this->input->get('source',NULL));
$this->version = pnp::clean($this->input->get('version',NULL)); $this->version = pnp::clean($this->input->get('version',NULL));
$this->tpl = pnp::clean($this->input->get('tpl')); $this->tpl = pnp::clean($this->input->get('tpl'));
$this->controller = Router::$controller; $this->controller = Router::$controller;

View File

@ -70,7 +70,7 @@ class Zoom_Controller extends System_Controller {
$this->template->source = $this->source; $this->template->source = $this->source;
$this->template->end = $this->end; $this->template->end = $this->end;
$this->template->start = $this->start; $this->template->start = $this->start;
$this->url = "?host=".$this->host."&srv=".$this->service; $this->url = "?host=".urlencode($this->host)."&srv=".urlencode($this->service);
$this->template->graph_height = $this->graph_height; $this->template->graph_height = $this->graph_height;
$this->template->graph_width = $this->graph_width; $this->template->graph_width = $this->graph_width;
}else{ }else{

View File

@ -44,6 +44,8 @@ class pnp_Core {
* *
*/ */
public static function zoom_icon($host,$service,$start,$end,$source,$view,$graph_width,$graph_height){ public static function zoom_icon($host,$service,$start,$end,$source,$view,$graph_width,$graph_height){
$service = urlencode(urlencode($service));
$host = urlencode(urlencode($host));
print "<a href=\"javascript:Gzoom('".url::base(TRUE)."zoom?host=$host&srv=$service&view=$view&source=$source&end=$end&start=$start&graph_width=$graph_width&graph_height=$graph_height');\" title=\"Zoom into the Graph\"><img src=\"".url::base()."media/images/zoom.png\"></a>\n"; print "<a href=\"javascript:Gzoom('".url::base(TRUE)."zoom?host=$host&srv=$service&view=$view&source=$source&end=$end&start=$start&graph_width=$graph_width&graph_height=$graph_height');\" title=\"Zoom into the Graph\"><img src=\"".url::base()."media/images/zoom.png\"></a>\n";
} }

View File

@ -661,7 +661,7 @@ class Data_Model extends System_Model
if(!is_numeric($end)){ if(!is_numeric($end)){
$timestamp = strtotime($end); $timestamp = strtotime($end);
if(!$timestamp){ if(!$timestamp){
throw new Kohana_User_Exception('Wrong Format', "$end"); throw new Kohana_User_Exception('Wrong Format', "End -> $end");
}else{ }else{
$end = $timestamp; $end = $timestamp;
} }

9
share/pnp/application/vendor/fpdf/font/courier.php vendored Normal file → Executable file
View File

@ -1,7 +1,8 @@
<?php <?php
$type = 'Core';
$name = 'Courier';
$up = -100;
$ut = 50;
for($i=0;$i<=255;$i++) for($i=0;$i<=255;$i++)
$fpdf_charwidths['courier'][chr($i)]=600; $cw[chr($i)] = 600;
$fpdf_charwidths['courierB']=$fpdf_charwidths['courier'];
$fpdf_charwidths['courierI']=$fpdf_charwidths['courier'];
$fpdf_charwidths['courierBI']=$fpdf_charwidths['courier'];
?> ?>

View File

@ -0,0 +1,8 @@
<?php
$type = 'Core';
$name = 'Courier-Bold';
$up = -100;
$ut = 50;
for($i=0;$i<=255;$i++)
$cw[chr($i)] = 600;
?>

View File

@ -0,0 +1,8 @@
<?php
$type = 'Core';
$name = 'Courier-BoldOblique';
$up = -100;
$ut = 50;
for($i=0;$i<=255;$i++)
$cw[chr($i)] = 600;
?>

View File

@ -0,0 +1,8 @@
<?php
$type = 'Core';
$name = 'Courier-Oblique';
$up = -100;
$ut = 50;
for($i=0;$i<=255;$i++)
$cw[chr($i)] = 600;
?>

6
share/pnp/application/vendor/fpdf/font/helvetica.php vendored Normal file → Executable file
View File

@ -1,5 +1,9 @@
<?php <?php
$fpdf_charwidths['helvetica']=array( $type = 'Core';
$name = 'Helvetica';
$up = -100;
$ut = 50;
$cw = array(
chr(0)=>278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278, chr(0)=>278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278,
chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>278,'"'=>355,'#'=>556,'$'=>556,'%'=>889,'&'=>667,'\''=>191,'('=>333,')'=>333,'*'=>389,'+'=>584, chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>278,'"'=>355,'#'=>556,'$'=>556,'%'=>889,'&'=>667,'\''=>191,'('=>333,')'=>333,'*'=>389,'+'=>584,
','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>278,';'=>278,'<'=>584,'='=>584,'>'=>584,'?'=>556,'@'=>1015,'A'=>667, ','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>278,';'=>278,'<'=>584,'='=>584,'>'=>584,'?'=>556,'@'=>1015,'A'=>667,

6
share/pnp/application/vendor/fpdf/font/helveticab.php vendored Normal file → Executable file
View File

@ -1,5 +1,9 @@
<?php <?php
$fpdf_charwidths['helveticaB']=array( $type = 'Core';
$name = 'Helvetica-Bold';
$up = -100;
$ut = 50;
$cw = array(
chr(0)=>278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278, chr(0)=>278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278,
chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>333,'"'=>474,'#'=>556,'$'=>556,'%'=>889,'&'=>722,'\''=>238,'('=>333,')'=>333,'*'=>389,'+'=>584, chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>333,'"'=>474,'#'=>556,'$'=>556,'%'=>889,'&'=>722,'\''=>238,'('=>333,')'=>333,'*'=>389,'+'=>584,
','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>333,';'=>333,'<'=>584,'='=>584,'>'=>584,'?'=>611,'@'=>975,'A'=>722, ','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>333,';'=>333,'<'=>584,'='=>584,'>'=>584,'?'=>611,'@'=>975,'A'=>722,

6
share/pnp/application/vendor/fpdf/font/helveticabi.php vendored Normal file → Executable file
View File

@ -1,5 +1,9 @@
<?php <?php
$fpdf_charwidths['helveticaBI']=array( $type = 'Core';
$name = 'Helvetica-BoldOblique';
$up = -100;
$ut = 50;
$cw = array(
chr(0)=>278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278, chr(0)=>278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278,
chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>333,'"'=>474,'#'=>556,'$'=>556,'%'=>889,'&'=>722,'\''=>238,'('=>333,')'=>333,'*'=>389,'+'=>584, chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>333,'"'=>474,'#'=>556,'$'=>556,'%'=>889,'&'=>722,'\''=>238,'('=>333,')'=>333,'*'=>389,'+'=>584,
','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>333,';'=>333,'<'=>584,'='=>584,'>'=>584,'?'=>611,'@'=>975,'A'=>722, ','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>333,';'=>333,'<'=>584,'='=>584,'>'=>584,'?'=>611,'@'=>975,'A'=>722,

6
share/pnp/application/vendor/fpdf/font/helveticai.php vendored Normal file → Executable file
View File

@ -1,5 +1,9 @@
<?php <?php
$fpdf_charwidths['helveticaI']=array( $type = 'Core';
$name = 'Helvetica-Oblique';
$up = -100;
$ut = 50;
$cw = array(
chr(0)=>278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278, chr(0)=>278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278,
chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>278,'"'=>355,'#'=>556,'$'=>556,'%'=>889,'&'=>667,'\''=>191,'('=>333,')'=>333,'*'=>389,'+'=>584, chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>278,'"'=>355,'#'=>556,'$'=>556,'%'=>889,'&'=>667,'\''=>191,'('=>333,')'=>333,'*'=>389,'+'=>584,
','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>278,';'=>278,'<'=>584,'='=>584,'>'=>584,'?'=>556,'@'=>1015,'A'=>667, ','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>278,';'=>278,'<'=>584,'='=>584,'>'=>584,'?'=>556,'@'=>1015,'A'=>667,

6
share/pnp/application/vendor/fpdf/font/symbol.php vendored Normal file → Executable file
View File

@ -1,5 +1,9 @@
<?php <?php
$fpdf_charwidths['symbol']=array( $type = 'Core';
$name = 'Symbol';
$up = -100;
$ut = 50;
$cw = array(
chr(0)=>250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250, chr(0)=>250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250,
chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>713,'#'=>500,'$'=>549,'%'=>833,'&'=>778,'\''=>439,'('=>333,')'=>333,'*'=>500,'+'=>549, chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>713,'#'=>500,'$'=>549,'%'=>833,'&'=>778,'\''=>439,'('=>333,')'=>333,'*'=>500,'+'=>549,
','=>250,'-'=>549,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>278,';'=>278,'<'=>549,'='=>549,'>'=>549,'?'=>444,'@'=>549,'A'=>722, ','=>250,'-'=>549,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>278,';'=>278,'<'=>549,'='=>549,'>'=>549,'?'=>444,'@'=>549,'A'=>722,

6
share/pnp/application/vendor/fpdf/font/times.php vendored Normal file → Executable file
View File

@ -1,5 +1,9 @@
<?php <?php
$fpdf_charwidths['times']=array( $type = 'Core';
$name = 'Times-Roman';
$up = -100;
$ut = 50;
$cw = array(
chr(0)=>250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250, chr(0)=>250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250,
chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>408,'#'=>500,'$'=>500,'%'=>833,'&'=>778,'\''=>180,'('=>333,')'=>333,'*'=>500,'+'=>564, chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>408,'#'=>500,'$'=>500,'%'=>833,'&'=>778,'\''=>180,'('=>333,')'=>333,'*'=>500,'+'=>564,
','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>278,';'=>278,'<'=>564,'='=>564,'>'=>564,'?'=>444,'@'=>921,'A'=>722, ','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>278,';'=>278,'<'=>564,'='=>564,'>'=>564,'?'=>444,'@'=>921,'A'=>722,

6
share/pnp/application/vendor/fpdf/font/timesb.php vendored Normal file → Executable file
View File

@ -1,5 +1,9 @@
<?php <?php
$fpdf_charwidths['timesB']=array( $type = 'Core';
$name = 'Times-Bold';
$up = -100;
$ut = 50;
$cw = array(
chr(0)=>250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250, chr(0)=>250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250,
chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>555,'#'=>500,'$'=>500,'%'=>1000,'&'=>833,'\''=>278,'('=>333,')'=>333,'*'=>500,'+'=>570, chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>555,'#'=>500,'$'=>500,'%'=>1000,'&'=>833,'\''=>278,'('=>333,')'=>333,'*'=>500,'+'=>570,
','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>333,';'=>333,'<'=>570,'='=>570,'>'=>570,'?'=>500,'@'=>930,'A'=>722, ','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>333,';'=>333,'<'=>570,'='=>570,'>'=>570,'?'=>500,'@'=>930,'A'=>722,

6
share/pnp/application/vendor/fpdf/font/timesbi.php vendored Normal file → Executable file
View File

@ -1,5 +1,9 @@
<?php <?php
$fpdf_charwidths['timesBI']=array( $type = 'Core';
$name = 'Times-BoldItalic';
$up = -100;
$ut = 50;
$cw = array(
chr(0)=>250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250, chr(0)=>250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250,
chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>389,'"'=>555,'#'=>500,'$'=>500,'%'=>833,'&'=>778,'\''=>278,'('=>333,')'=>333,'*'=>500,'+'=>570, chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>389,'"'=>555,'#'=>500,'$'=>500,'%'=>833,'&'=>778,'\''=>278,'('=>333,')'=>333,'*'=>500,'+'=>570,
','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>333,';'=>333,'<'=>570,'='=>570,'>'=>570,'?'=>500,'@'=>832,'A'=>667, ','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>333,';'=>333,'<'=>570,'='=>570,'>'=>570,'?'=>500,'@'=>832,'A'=>667,

6
share/pnp/application/vendor/fpdf/font/timesi.php vendored Normal file → Executable file
View File

@ -1,5 +1,9 @@
<?php <?php
$fpdf_charwidths['timesI']=array( $type = 'Core';
$name = 'Times-Italic';
$up = -100;
$ut = 50;
$cw = array(
chr(0)=>250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250, chr(0)=>250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250,
chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>420,'#'=>500,'$'=>500,'%'=>833,'&'=>778,'\''=>214,'('=>333,')'=>333,'*'=>500,'+'=>675, chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>420,'#'=>500,'$'=>500,'%'=>833,'&'=>778,'\''=>214,'('=>333,')'=>333,'*'=>500,'+'=>675,
','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>333,';'=>333,'<'=>675,'='=>675,'>'=>675,'?'=>500,'@'=>920,'A'=>611, ','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>333,';'=>333,'<'=>675,'='=>675,'>'=>675,'?'=>500,'@'=>920,'A'=>611,

6
share/pnp/application/vendor/fpdf/font/zapfdingbats.php vendored Normal file → Executable file
View File

@ -1,5 +1,9 @@
<?php <?php
$fpdf_charwidths['zapfdingbats']=array( $type = 'Core';
$name = 'ZapfDingbats';
$up = -100;
$ut = 50;
$cw = array(
chr(0)=>0,chr(1)=>0,chr(2)=>0,chr(3)=>0,chr(4)=>0,chr(5)=>0,chr(6)=>0,chr(7)=>0,chr(8)=>0,chr(9)=>0,chr(10)=>0,chr(11)=>0,chr(12)=>0,chr(13)=>0,chr(14)=>0,chr(15)=>0,chr(16)=>0,chr(17)=>0,chr(18)=>0,chr(19)=>0,chr(20)=>0,chr(21)=>0, chr(0)=>0,chr(1)=>0,chr(2)=>0,chr(3)=>0,chr(4)=>0,chr(5)=>0,chr(6)=>0,chr(7)=>0,chr(8)=>0,chr(9)=>0,chr(10)=>0,chr(11)=>0,chr(12)=>0,chr(13)=>0,chr(14)=>0,chr(15)=>0,chr(16)=>0,chr(17)=>0,chr(18)=>0,chr(19)=>0,chr(20)=>0,chr(21)=>0,
chr(22)=>0,chr(23)=>0,chr(24)=>0,chr(25)=>0,chr(26)=>0,chr(27)=>0,chr(28)=>0,chr(29)=>0,chr(30)=>0,chr(31)=>0,' '=>278,'!'=>974,'"'=>961,'#'=>974,'$'=>980,'%'=>719,'&'=>789,'\''=>790,'('=>791,')'=>690,'*'=>960,'+'=>939, chr(22)=>0,chr(23)=>0,chr(24)=>0,chr(25)=>0,chr(26)=>0,chr(27)=>0,chr(28)=>0,chr(29)=>0,chr(30)=>0,chr(31)=>0,' '=>278,'!'=>974,'"'=>961,'#'=>974,'$'=>980,'%'=>719,'&'=>789,'\''=>790,'('=>791,')'=>690,'*'=>960,'+'=>939,
','=>549,'-'=>855,'.'=>911,'/'=>933,'0'=>911,'1'=>945,'2'=>974,'3'=>755,'4'=>846,'5'=>762,'6'=>761,'7'=>571,'8'=>677,'9'=>763,':'=>760,';'=>759,'<'=>754,'='=>494,'>'=>552,'?'=>537,'@'=>577,'A'=>692, ','=>549,'-'=>855,'.'=>911,'/'=>933,'0'=>911,'1'=>945,'2'=>974,'3'=>755,'4'=>846,'5'=>762,'6'=>761,'7'=>571,'8'=>677,'9'=>763,':'=>760,';'=>759,'<'=>754,'='=>494,'>'=>552,'?'=>537,'@'=>577,'A'=>692,

452
share/pnp/application/vendor/fpdf/fpdf.php vendored Normal file → Executable file
View File

@ -2,12 +2,12 @@
/******************************************************************************* /*******************************************************************************
* FPDF * * FPDF *
* * * *
* Version: 1.6 * * Version: 1.7 *
* Date: 2008-08-03 * * Date: 2011-06-18 *
* Author: Olivier PLATHEY * * Author: Olivier PLATHEY *
*******************************************************************************/ *******************************************************************************/
define('FPDF_VERSION','1.6'); define('FPDF_VERSION','1.7');
class FPDF class FPDF
{ {
@ -21,10 +21,10 @@ var $compress; //compression flag
var $k; // scale factor (number of points in user unit) var $k; // scale factor (number of points in user unit)
var $DefOrientation; // default orientation var $DefOrientation; // default orientation
var $CurOrientation; // current orientation var $CurOrientation; // current orientation
var $PageFormats; //available page formats var $StdPageSizes; // standard page sizes
var $DefPageFormat; //default page format var $DefPageSize; // default page size
var $CurPageFormat; //current page format var $CurPageSize; // current page size
var $PageSizes; //array storing non-default page sizes var $PageSizes; // used for pages with non default sizes or orientations
var $wPt, $hPt; // dimensions of current page in points var $wPt, $hPt; // dimensions of current page in points
var $w, $h; // dimensions of current page in user unit var $w, $h; // dimensions of current page in user unit
var $lMargin; // left margin var $lMargin; // left margin
@ -35,7 +35,8 @@ var $cMargin; //cell margin
var $x, $y; // current position in user unit var $x, $y; // current position in user unit
var $lasth; // height of last printed cell var $lasth; // height of last printed cell
var $LineWidth; // line width in user unit var $LineWidth; // line width in user unit
var $CoreFonts; //array of standard font names var $fontpath; // path containing fonts
var $CoreFonts; // array of core font names
var $fonts; // array of used fonts var $fonts; // array of used fonts
var $FontFiles; // array of font files var $FontFiles; // array of font files
var $diffs; // array of encoding differences var $diffs; // array of encoding differences
@ -72,7 +73,7 @@ var $PDFVersion; //PDF version number
* Public methods * * Public methods *
* * * *
*******************************************************************************/ *******************************************************************************/
function FPDF($orientation='P', $unit='mm', $format='A4') function FPDF($orientation='P', $unit='mm', $size='A4')
{ {
// Some checks // Some checks
$this->_dochecks(); $this->_dochecks();
@ -100,11 +101,19 @@ function FPDF($orientation='P', $unit='mm', $format='A4')
$this->TextColor = '0 g'; $this->TextColor = '0 g';
$this->ColorFlag = false; $this->ColorFlag = false;
$this->ws = 0; $this->ws = 0;
//Standard fonts // Font path
$this->CoreFonts=array('courier'=>'Courier', 'courierB'=>'Courier-Bold', 'courierI'=>'Courier-Oblique', 'courierBI'=>'Courier-BoldOblique', if(defined('FPDF_FONTPATH'))
'helvetica'=>'Helvetica', 'helveticaB'=>'Helvetica-Bold', 'helveticaI'=>'Helvetica-Oblique', 'helveticaBI'=>'Helvetica-BoldOblique', {
'times'=>'Times-Roman', 'timesB'=>'Times-Bold', 'timesI'=>'Times-Italic', 'timesBI'=>'Times-BoldItalic', $this->fontpath = FPDF_FONTPATH;
'symbol'=>'Symbol', 'zapfdingbats'=>'ZapfDingbats'); if(substr($this->fontpath,-1)!='/' && substr($this->fontpath,-1)!='\\')
$this->fontpath .= '/';
}
elseif(is_dir(dirname(__FILE__).'/font'))
$this->fontpath = dirname(__FILE__).'/font/';
else
$this->fontpath = '';
// Core fonts
$this->CoreFonts = array('courier', 'helvetica', 'times', 'symbol', 'zapfdingbats');
// Scale factor // Scale factor
if($unit=='pt') if($unit=='pt')
$this->k = 1; $this->k = 1;
@ -116,26 +125,25 @@ function FPDF($orientation='P', $unit='mm', $format='A4')
$this->k = 72; $this->k = 72;
else else
$this->Error('Incorrect unit: '.$unit); $this->Error('Incorrect unit: '.$unit);
//Page format // Page sizes
$this->PageFormats=array('a3'=>array(841.89,1190.55), 'a4'=>array(595.28,841.89), 'a5'=>array(420.94,595.28), $this->StdPageSizes = array('a3'=>array(841.89,1190.55), 'a4'=>array(595.28,841.89), 'a5'=>array(420.94,595.28),
'letter'=>array(612,792), 'legal'=>array(612,1008)); 'letter'=>array(612,792), 'legal'=>array(612,1008));
if(is_string($format)) $size = $this->_getpagesize($size);
$format=$this->_getpageformat($format); $this->DefPageSize = $size;
$this->DefPageFormat=$format; $this->CurPageSize = $size;
$this->CurPageFormat=$format;
// Page orientation // Page orientation
$orientation = strtolower($orientation); $orientation = strtolower($orientation);
if($orientation=='p' || $orientation=='portrait') if($orientation=='p' || $orientation=='portrait')
{ {
$this->DefOrientation = 'P'; $this->DefOrientation = 'P';
$this->w=$this->DefPageFormat[0]; $this->w = $size[0];
$this->h=$this->DefPageFormat[1]; $this->h = $size[1];
} }
elseif($orientation=='l' || $orientation=='landscape') elseif($orientation=='l' || $orientation=='landscape')
{ {
$this->DefOrientation = 'L'; $this->DefOrientation = 'L';
$this->w=$this->DefPageFormat[1]; $this->w = $size[1];
$this->h=$this->DefPageFormat[0]; $this->h = $size[0];
} }
else else
$this->Error('Incorrect orientation: '.$orientation); $this->Error('Incorrect orientation: '.$orientation);
@ -151,8 +159,8 @@ function FPDF($orientation='P', $unit='mm', $format='A4')
$this->LineWidth = .567/$this->k; $this->LineWidth = .567/$this->k;
// Automatic page break // Automatic page break
$this->SetAutoPageBreak(true,2*$margin); $this->SetAutoPageBreak(true,2*$margin);
//Full width display mode // Default display mode
$this->SetDisplayMode('fullwidth'); $this->SetDisplayMode('default');
// Enable compression // Enable compression
$this->SetCompression(true); $this->SetCompression(true);
// Set default PDF version number // Set default PDF version number
@ -197,7 +205,7 @@ function SetAutoPageBreak($auto, $margin=0)
$this->PageBreakTrigger = $this->h-$margin; $this->PageBreakTrigger = $this->h-$margin;
} }
function SetDisplayMode($zoom, $layout='continuous') function SetDisplayMode($zoom, $layout='default')
{ {
// Set display mode in viewer // Set display mode in viewer
if($zoom=='fullpage' || $zoom=='fullwidth' || $zoom=='real' || $zoom=='default' || !is_string($zoom)) if($zoom=='fullpage' || $zoom=='fullwidth' || $zoom=='real' || $zoom=='default' || !is_string($zoom))
@ -294,14 +302,14 @@ function Close()
$this->_enddoc(); $this->_enddoc();
} }
function AddPage($orientation='', $format='') function AddPage($orientation='', $size='')
{ {
// Start a new page // Start a new page
if($this->state==0) if($this->state==0)
$this->Open(); $this->Open();
$family = $this->FontFamily; $family = $this->FontFamily;
$style = $this->FontStyle.($this->underline ? 'U' : ''); $style = $this->FontStyle.($this->underline ? 'U' : '');
$size=$this->FontSizePt; $fontsize = $this->FontSizePt;
$lw = $this->LineWidth; $lw = $this->LineWidth;
$dc = $this->DrawColor; $dc = $this->DrawColor;
$fc = $this->FillColor; $fc = $this->FillColor;
@ -317,7 +325,7 @@ function AddPage($orientation='', $format='')
$this->_endpage(); $this->_endpage();
} }
// Start new page // Start new page
$this->_beginpage($orientation,$format); $this->_beginpage($orientation,$size);
// Set line cap style to square // Set line cap style to square
$this->_out('2 J'); $this->_out('2 J');
// Set line width // Set line width
@ -325,7 +333,7 @@ function AddPage($orientation='', $format='')
$this->_out(sprintf('%.2F w',$lw*$this->k)); $this->_out(sprintf('%.2F w',$lw*$this->k));
// Set font // Set font
if($family) if($family)
$this->SetFont($family,$style,$size); $this->SetFont($family,$style,$fontsize);
// Set colors // Set colors
$this->DrawColor = $dc; $this->DrawColor = $dc;
if($dc!='0 G') if($dc!='0 G')
@ -347,7 +355,7 @@ function AddPage($orientation='', $format='')
} }
// Restore font // Restore font
if($family) if($family)
$this->SetFont($family,$style,$size); $this->SetFont($family,$style,$fontsize);
// Restore colors // Restore colors
if($this->DrawColor!=$dc) if($this->DrawColor!=$dc)
{ {
@ -452,64 +460,47 @@ function Rect($x, $y, $w, $h, $style='')
function AddFont($family, $style='', $file='') function AddFont($family, $style='', $file='')
{ {
//Add a TrueType or Type1 font // Add a TrueType, OpenType or Type1 font
$family = strtolower($family); $family = strtolower($family);
if($file=='') if($file=='')
$file = str_replace(' ','',$family).strtolower($style).'.php'; $file = str_replace(' ','',$family).strtolower($style).'.php';
if($family=='arial')
$family='helvetica';
$style = strtoupper($style); $style = strtoupper($style);
if($style=='IB') if($style=='IB')
$style = 'BI'; $style = 'BI';
$fontkey = $family.$style; $fontkey = $family.$style;
if(isset($this->fonts[$fontkey])) if(isset($this->fonts[$fontkey]))
return; return;
include($this->_getfontpath().$file); $info = $this->_loadfont($file);
if(!isset($name)) $info['i'] = count($this->fonts)+1;
$this->Error('Could not include font definition file'); if(!empty($info['diff']))
$i=count($this->fonts)+1;
$this->fonts[$fontkey]=array('i'=>$i, 'type'=>$type, 'name'=>$name, 'desc'=>$desc, 'up'=>$up, 'ut'=>$ut, 'cw'=>$cw, 'enc'=>$enc, 'file'=>$file);
if($diff)
{ {
// Search existing encodings // Search existing encodings
$d=0; $n = array_search($info['diff'],$this->diffs);
$nb=count($this->diffs); if(!$n)
for($i=1;$i<=$nb;$i++)
{ {
if($this->diffs[$i]==$diff) $n = count($this->diffs)+1;
$this->diffs[$n] = $info['diff'];
}
$info['diffn'] = $n;
}
if(!empty($info['file']))
{ {
$d=$i; // Embedded font
break; if($info['type']=='TrueType')
} $this->FontFiles[$info['file']] = array('length1'=>$info['originalsize']);
}
if($d==0)
{
$d=$nb+1;
$this->diffs[$d]=$diff;
}
$this->fonts[$fontkey]['diff']=$d;
}
if($file)
{
if($type=='TrueType')
$this->FontFiles[$file]=array('length1'=>$originalsize);
else else
$this->FontFiles[$file]=array('length1'=>$size1, 'length2'=>$size2); $this->FontFiles[$info['file']] = array('length1'=>$info['size1'], 'length2'=>$info['size2']);
} }
$this->fonts[$fontkey] = $info;
} }
function SetFont($family, $style='', $size=0) function SetFont($family, $style='', $size=0)
{ {
// Select a font; size given in points // Select a font; size given in points
global $fpdf_charwidths;
$family=strtolower($family);
if($family=='') if($family=='')
$family = $this->FontFamily; $family = $this->FontFamily;
if($family=='arial') else
$family='helvetica'; $family = strtolower($family);
elseif($family=='symbol' || $family=='zapfdingbats')
$style='';
$style = strtoupper($style); $style = strtoupper($style);
if(strpos($style,'U')!==false) if(strpos($style,'U')!==false)
{ {
@ -525,27 +516,20 @@ function SetFont($family, $style='', $size=0)
// Test if font is already selected // Test if font is already selected
if($this->FontFamily==$family && $this->FontStyle==$style && $this->FontSizePt==$size) if($this->FontFamily==$family && $this->FontStyle==$style && $this->FontSizePt==$size)
return; return;
//Test if used for the first time // Test if font is already loaded
$fontkey = $family.$style; $fontkey = $family.$style;
if(!isset($this->fonts[$fontkey])) if(!isset($this->fonts[$fontkey]))
{ {
//Check if one of the standard fonts // Test if one of the core fonts
if(isset($this->CoreFonts[$fontkey])) if($family=='arial')
$family = 'helvetica';
if(in_array($family,$this->CoreFonts))
{ {
if(!isset($fpdf_charwidths[$fontkey])) if($family=='symbol' || $family=='zapfdingbats')
{ $style = '';
//Load metric file $fontkey = $family.$style;
$file=$family; if(!isset($this->fonts[$fontkey]))
if($family=='times' || $family=='helvetica') $this->AddFont($family,$style);
$file.=strtolower($style);
include($this->_getfontpath().$file.'.php');
if(!isset($fpdf_charwidths[$fontkey]))
$this->Error('Could not include font metric file');
}
$i=count($this->fonts)+1;
$name=$this->CoreFonts[$fontkey];
$cw=$fpdf_charwidths[$fontkey];
$this->fonts[$fontkey]=array('i'=>$i, 'type'=>'core', 'name'=>$name, 'up'=>-100, 'ut'=>50, 'cw'=>$cw);
} }
else else
$this->Error('Undefined font: '.$family.' '.$style); $this->Error('Undefined font: '.$family.' '.$style);
@ -626,7 +610,7 @@ function Cell($w, $h=0, $txt='', $border=0, $ln=0, $align='', $fill=false, $link
$this->ws = 0; $this->ws = 0;
$this->_out('0 Tw'); $this->_out('0 Tw');
} }
$this->AddPage($this->CurOrientation,$this->CurPageFormat); $this->AddPage($this->CurOrientation,$this->CurPageSize);
$this->x = $x; $this->x = $x;
if($ws>0) if($ws>0)
{ {
@ -920,17 +904,23 @@ function Image($file, $x=null, $y=null, $w=0, $h=0, $type='', $link='')
} }
else else
$info = $this->images[$file]; $info = $this->images[$file];
// Automatic width and height calculation if needed // Automatic width and height calculation if needed
if($w==0 && $h==0) if($w==0 && $h==0)
{ {
//Put image at 72 dpi // Put image at 96 dpi
$w=$info['w']/$this->k; $w = -96;
$h=$info['h']/$this->k; $h = -96;
} }
elseif($w==0) if($w<0)
$w = -$info['w']*72/$w/$this->k;
if($h<0)
$h = -$info['h']*72/$h/$this->k;
if($w==0)
$w = $h*$info['w']/$info['h']; $w = $h*$info['w']/$info['h'];
elseif($h==0) if($h==0)
$h = $w*$info['h']/$info['w']; $h = $w*$info['h']/$info['w'];
// Flowing mode // Flowing mode
if($y===null) if($y===null)
{ {
@ -938,12 +928,13 @@ function Image($file, $x=null, $y=null, $w=0, $h=0, $type='', $link='')
{ {
// Automatic page break // Automatic page break
$x2 = $this->x; $x2 = $this->x;
$this->AddPage($this->CurOrientation,$this->CurPageFormat); $this->AddPage($this->CurOrientation,$this->CurPageSize);
$this->x = $x2; $this->x = $x2;
} }
$y = $this->y; $y = $this->y;
$this->y += $h; $this->y += $h;
} }
if($x===null) if($x===null)
$x = $this->x; $x = $this->x;
$this->_out(sprintf('q %.2F 0 0 %.2F %.2F %.2F cm /I%d Do Q',$w*$this->k,$h*$this->k,$x*$this->k,($this->h-($y+$h))*$this->k,$info['i'])); $this->_out(sprintf('q %.2F 0 0 %.2F %.2F %.2F cm /I%d Do Q',$w*$this->k,$h*$this->k,$x*$this->k,($this->h-($y+$h))*$this->k,$info['i']));
@ -1009,34 +1000,24 @@ function Output($name='', $dest='')
{ {
case 'I': case 'I':
// Send to standard output // Send to standard output
if(ob_get_length()) $this->_checkoutput();
$this->Error('Some data has already been output, can\'t send PDF file'); if(PHP_SAPI!='cli')
if(php_sapi_name()!='cli')
{ {
// We send to a browser // We send to a browser
header('Content-Type: application/pdf'); header('Content-Type: application/pdf');
if(headers_sent())
$this->Error('Some data has already been output, can\'t send PDF file');
header('Content-Length: '.strlen($this->buffer));
header('Content-Disposition: inline; filename="'.$name.'"'); header('Content-Disposition: inline; filename="'.$name.'"');
header('Cache-Control: private, max-age=0, must-revalidate'); header('Cache-Control: private, max-age=0, must-revalidate');
header('Pragma: public'); header('Pragma: public');
ini_set('zlib.output_compression','0');
} }
echo $this->buffer; echo $this->buffer;
break; break;
case 'D': case 'D':
// Download file // Download file
if(ob_get_length()) $this->_checkoutput();
$this->Error('Some data has already been output, can\'t send PDF file');
header('Content-Type: application/x-download'); header('Content-Type: application/x-download');
if(headers_sent())
$this->Error('Some data has already been output, can\'t send PDF file');
header('Content-Length: '.strlen($this->buffer));
header('Content-Disposition: attachment; filename="'.$name.'"'); header('Content-Disposition: attachment; filename="'.$name.'"');
header('Cache-Control: private, max-age=0, must-revalidate'); header('Cache-Control: private, max-age=0, must-revalidate');
header('Pragma: public'); header('Pragma: public');
ini_set('zlib.output_compression','0');
echo $this->buffer; echo $this->buffer;
break; break;
case 'F': case 'F':
@ -1069,28 +1050,51 @@ function _dochecks()
// Check mbstring overloading // Check mbstring overloading
if(ini_get('mbstring.func_overload') & 2) if(ini_get('mbstring.func_overload') & 2)
$this->Error('mbstring overloading must be disabled'); $this->Error('mbstring overloading must be disabled');
//Disable runtime magic quotes // Ensure runtime magic quotes are disabled
if(get_magic_quotes_runtime()) if(get_magic_quotes_runtime())
@set_magic_quotes_runtime(0); @set_magic_quotes_runtime(0);
} }
function _getpageformat($format) function _checkoutput()
{ {
$format=strtolower($format); if(PHP_SAPI!='cli')
if(!isset($this->PageFormats[$format])) {
$this->Error('Unknown page format: '.$format); if(headers_sent($file,$line))
$a=$this->PageFormats[$format]; $this->Error("Some data has already been output, can't send PDF file (output started at $file:$line)");
}
if(ob_get_length())
{
// The output buffer is not empty
if(preg_match('/^(\xEF\xBB\xBF)?\s*$/',ob_get_contents()))
{
// It contains only a UTF-8 BOM and/or whitespace, let's clean it
ob_clean();
}
else
$this->Error("Some data has already been output, can't send PDF file");
}
}
function _getpagesize($size)
{
if(is_string($size))
{
$size = strtolower($size);
if(!isset($this->StdPageSizes[$size]))
$this->Error('Unknown page size: '.$size);
$a = $this->StdPageSizes[$size];
return array($a[0]/$this->k, $a[1]/$this->k); return array($a[0]/$this->k, $a[1]/$this->k);
} }
else
function _getfontpath()
{ {
if(!defined('FPDF_FONTPATH') && is_dir(dirname(__FILE__).'/font')) if($size[0]>$size[1])
define('FPDF_FONTPATH',dirname(__FILE__).'/font/'); return array($size[1], $size[0]);
return defined('FPDF_FONTPATH') ? FPDF_FONTPATH : ''; else
return $size;
}
} }
function _beginpage($orientation, $format) function _beginpage($orientation, $size)
{ {
$this->page++; $this->page++;
$this->pages[$this->page] = ''; $this->pages[$this->page] = '';
@ -1098,38 +1102,35 @@ function _beginpage($orientation, $format)
$this->x = $this->lMargin; $this->x = $this->lMargin;
$this->y = $this->tMargin; $this->y = $this->tMargin;
$this->FontFamily = ''; $this->FontFamily = '';
//Check page size // Check page size and orientation
if($orientation=='') if($orientation=='')
$orientation = $this->DefOrientation; $orientation = $this->DefOrientation;
else else
$orientation = strtoupper($orientation[0]); $orientation = strtoupper($orientation[0]);
if($format=='') if($size=='')
$format=$this->DefPageFormat; $size = $this->DefPageSize;
else else
$size = $this->_getpagesize($size);
if($orientation!=$this->CurOrientation || $size[0]!=$this->CurPageSize[0] || $size[1]!=$this->CurPageSize[1])
{ {
if(is_string($format)) // New size or orientation
$format=$this->_getpageformat($format);
}
if($orientation!=$this->CurOrientation || $format[0]!=$this->CurPageFormat[0] || $format[1]!=$this->CurPageFormat[1])
{
//New size
if($orientation=='P') if($orientation=='P')
{ {
$this->w=$format[0]; $this->w = $size[0];
$this->h=$format[1]; $this->h = $size[1];
} }
else else
{ {
$this->w=$format[1]; $this->w = $size[1];
$this->h=$format[0]; $this->h = $size[0];
} }
$this->wPt = $this->w*$this->k; $this->wPt = $this->w*$this->k;
$this->hPt = $this->h*$this->k; $this->hPt = $this->h*$this->k;
$this->PageBreakTrigger = $this->h-$this->bMargin; $this->PageBreakTrigger = $this->h-$this->bMargin;
$this->CurOrientation = $orientation; $this->CurOrientation = $orientation;
$this->CurPageFormat=$format; $this->CurPageSize = $size;
} }
if($orientation!=$this->DefOrientation || $format[0]!=$this->DefPageFormat[0] || $format[1]!=$this->DefPageFormat[1]) if($orientation!=$this->DefOrientation || $size[0]!=$this->DefPageSize[0] || $size[1]!=$this->DefPageSize[1])
$this->PageSizes[$this->page] = array($this->wPt, $this->hPt); $this->PageSizes[$this->page] = array($this->wPt, $this->hPt);
} }
@ -1138,6 +1139,16 @@ function _endpage()
$this->state = 1; $this->state = 1;
} }
function _loadfont($font)
{
// Load a font definition file from the font directory
include($this->fontpath.$font);
$a = get_defined_vars();
if(!isset($a['name']))
$this->Error('Could not include font definition file');
return $a;
}
function _escape($s) function _escape($s)
{ {
// Escape special characters in strings // Escape special characters in strings
@ -1199,7 +1210,7 @@ function _dounderline($x, $y, $txt)
function _parsejpg($file) function _parsejpg($file)
{ {
// Extract info from a JPEG file // Extract info from a JPEG file
$a=GetImageSize($file); $a = getimagesize($file);
if(!$a) if(!$a)
$this->Error('Missing or incorrect image file: '.$file); $this->Error('Missing or incorrect image file: '.$file);
if($a[2]!=2) if($a[2]!=2)
@ -1211,12 +1222,7 @@ function _parsejpg($file)
else else
$colspace = 'DeviceGray'; $colspace = 'DeviceGray';
$bpc = isset($a['bits']) ? $a['bits'] : 8; $bpc = isset($a['bits']) ? $a['bits'] : 8;
//Read whole file $data = file_get_contents($file);
$f=fopen($file,'rb');
$data='';
while(!feof($f))
$data.=fread($f,8192);
fclose($f);
return array('w'=>$a[0], 'h'=>$a[1], 'cs'=>$colspace, 'bpc'=>$bpc, 'f'=>'DCTDecode', 'data'=>$data); return array('w'=>$a[0], 'h'=>$a[1], 'cs'=>$colspace, 'bpc'=>$bpc, 'f'=>'DCTDecode', 'data'=>$data);
} }
@ -1226,9 +1232,17 @@ function _parsepng($file)
$f = fopen($file,'rb'); $f = fopen($file,'rb');
if(!$f) if(!$f)
$this->Error('Can\'t open image file: '.$file); $this->Error('Can\'t open image file: '.$file);
$info = $this->_parsepngstream($f,$file);
fclose($f);
return $info;
}
function _parsepngstream($f, $file)
{
// Check signature // Check signature
if($this->_readstream($f,8)!=chr(137).'PNG'.chr(13).chr(10).chr(26).chr(10)) if($this->_readstream($f,8)!=chr(137).'PNG'.chr(13).chr(10).chr(26).chr(10))
$this->Error('Not a PNG file: '.$file); $this->Error('Not a PNG file: '.$file);
// Read header chunk // Read header chunk
$this->_readstream($f,4); $this->_readstream($f,4);
if($this->_readstream($f,4)!='IHDR') if($this->_readstream($f,4)!='IHDR')
@ -1239,14 +1253,14 @@ function _parsepng($file)
if($bpc>8) if($bpc>8)
$this->Error('16-bit depth not supported: '.$file); $this->Error('16-bit depth not supported: '.$file);
$ct = ord($this->_readstream($f,1)); $ct = ord($this->_readstream($f,1));
if($ct==0) if($ct==0 || $ct==4)
$colspace = 'DeviceGray'; $colspace = 'DeviceGray';
elseif($ct==2) elseif($ct==2 || $ct==6)
$colspace = 'DeviceRGB'; $colspace = 'DeviceRGB';
elseif($ct==3) elseif($ct==3)
$colspace = 'Indexed'; $colspace = 'Indexed';
else else
$this->Error('Alpha channel not supported: '.$file); $this->Error('Unknown color type: '.$file);
if(ord($this->_readstream($f,1))!=0) if(ord($this->_readstream($f,1))!=0)
$this->Error('Unknown compression method: '.$file); $this->Error('Unknown compression method: '.$file);
if(ord($this->_readstream($f,1))!=0) if(ord($this->_readstream($f,1))!=0)
@ -1254,7 +1268,8 @@ function _parsepng($file)
if(ord($this->_readstream($f,1))!=0) if(ord($this->_readstream($f,1))!=0)
$this->Error('Interlacing not supported: '.$file); $this->Error('Interlacing not supported: '.$file);
$this->_readstream($f,4); $this->_readstream($f,4);
$parms='/DecodeParms <</Predictor 15 /Colors '.($ct==2 ? 3 : 1).' /BitsPerComponent '.$bpc.' /Columns '.$w.'>>'; $dp = '/Predictor 15 /Colors '.($colspace=='DeviceRGB' ? 3 : 1).' /BitsPerComponent '.$bpc.' /Columns '.$w;
// Scan chunks looking for palette, transparency and image data // Scan chunks looking for palette, transparency and image data
$pal = ''; $pal = '';
$trns = ''; $trns = '';
@ -1297,10 +1312,54 @@ function _parsepng($file)
$this->_readstream($f,$n+4); $this->_readstream($f,$n+4);
} }
while($n); while($n);
if($colspace=='Indexed' && empty($pal)) if($colspace=='Indexed' && empty($pal))
$this->Error('Missing palette in '.$file); $this->Error('Missing palette in '.$file);
fclose($f); $info = array('w'=>$w, 'h'=>$h, 'cs'=>$colspace, 'bpc'=>$bpc, 'f'=>'FlateDecode', 'dp'=>$dp, 'pal'=>$pal, 'trns'=>$trns);
return array('w'=>$w, 'h'=>$h, 'cs'=>$colspace, 'bpc'=>$bpc, 'f'=>'FlateDecode', 'parms'=>$parms, 'pal'=>$pal, 'trns'=>$trns, 'data'=>$data); if($ct>=4)
{
// Extract alpha channel
if(!function_exists('gzuncompress'))
$this->Error('Zlib not available, can\'t handle alpha channel: '.$file);
$data = gzuncompress($data);
$color = '';
$alpha = '';
if($ct==4)
{
// Gray image
$len = 2*$w;
for($i=0;$i<$h;$i++)
{
$pos = (1+$len)*$i;
$color .= $data[$pos];
$alpha .= $data[$pos];
$line = substr($data,$pos+1,$len);
$color .= preg_replace('/(.)./s','$1',$line);
$alpha .= preg_replace('/.(.)/s','$1',$line);
}
}
else
{
// RGB image
$len = 4*$w;
for($i=0;$i<$h;$i++)
{
$pos = (1+$len)*$i;
$color .= $data[$pos];
$alpha .= $data[$pos];
$line = substr($data,$pos+1,$len);
$color .= preg_replace('/(.{3})./s','$1',$line);
$alpha .= preg_replace('/.{3}(.)/s','$1',$line);
}
}
unset($data);
$data = gzcompress($color);
$info['smask'] = gzcompress($alpha);
if($this->PDFVersion<'1.4')
$this->PDFVersion = '1.4';
}
$info['data'] = $data;
return $info;
} }
function _readstream($f, $n) function _readstream($f, $n)
@ -1338,6 +1397,22 @@ function _parsegif($file)
if(!$im) if(!$im)
$this->Error('Missing or incorrect image file: '.$file); $this->Error('Missing or incorrect image file: '.$file);
imageinterlace($im,0); imageinterlace($im,0);
$f = @fopen('php://temp','rb+');
if($f)
{
// Perform conversion in memory
ob_start();
imagepng($im);
$data = ob_get_clean();
imagedestroy($im);
fwrite($f,$data);
rewind($f);
$info = $this->_parsepngstream($f,$file);
fclose($f);
}
else
{
// Use temporary file
$tmp = tempnam('.','gif'); $tmp = tempnam('.','gif');
if(!$tmp) if(!$tmp)
$this->Error('Unable to create a temporary file'); $this->Error('Unable to create a temporary file');
@ -1346,6 +1421,7 @@ function _parsegif($file)
imagedestroy($im); imagedestroy($im);
$info = $this->_parsepng($tmp); $info = $this->_parsepng($tmp);
unlink($tmp); unlink($tmp);
}
return $info; return $info;
} }
@ -1384,13 +1460,13 @@ function _putpages()
} }
if($this->DefOrientation=='P') if($this->DefOrientation=='P')
{ {
$wPt=$this->DefPageFormat[0]*$this->k; $wPt = $this->DefPageSize[0]*$this->k;
$hPt=$this->DefPageFormat[1]*$this->k; $hPt = $this->DefPageSize[1]*$this->k;
} }
else else
{ {
$wPt=$this->DefPageFormat[1]*$this->k; $wPt = $this->DefPageSize[1]*$this->k;
$hPt=$this->DefPageFormat[0]*$this->k; $hPt = $this->DefPageSize[0]*$this->k;
} }
$filter = ($this->compress) ? '/Filter /FlateDecode ' : ''; $filter = ($this->compress) ? '/Filter /FlateDecode ' : '';
for($n=1;$n<=$nb;$n++) for($n=1;$n<=$nb;$n++)
@ -1421,6 +1497,8 @@ function _putpages()
} }
$this->_out($annots.']'); $this->_out($annots.']');
} }
if($this->PDFVersion>'1.3')
$this->_out('/Group <</Type /Group /S /Transparency /CS /DeviceRGB>>');
$this->_out('/Contents '.($this->n+1).' 0 R>>'); $this->_out('/Contents '.($this->n+1).' 0 R>>');
$this->_out('endobj'); $this->_out('endobj');
// Page content // Page content
@ -1459,28 +1537,12 @@ function _putfonts()
// Font file embedding // Font file embedding
$this->_newobj(); $this->_newobj();
$this->FontFiles[$file]['n'] = $this->n; $this->FontFiles[$file]['n'] = $this->n;
$font=''; $font = file_get_contents($this->fontpath.$file,true);
$f=fopen($this->_getfontpath().$file,'rb',1); if(!$font)
if(!$f) $this->Error('Font file not found: '.$file);
$this->Error('Font file not found');
while(!feof($f))
$font.=fread($f,8192);
fclose($f);
$compressed = (substr($file,-2)=='.z'); $compressed = (substr($file,-2)=='.z');
if(!$compressed && isset($info['length2'])) if(!$compressed && isset($info['length2']))
{ $font = substr($font,6,$info['length1']).substr($font,6+$info['length1']+6,$info['length2']);
$header=(ord($font[0])==128);
if($header)
{
//Strip first binary header
$font=substr($font,6);
}
if($header && ord($font[$info['length1']])==128)
{
//Strip second binary header
$font=substr($font,0,$info['length1']).substr($font,$info['length1']+6);
}
}
$this->_out('<</Length '.strlen($font)); $this->_out('<</Length '.strlen($font));
if($compressed) if($compressed)
$this->_out('/Filter /FlateDecode'); $this->_out('/Filter /FlateDecode');
@ -1497,9 +1559,9 @@ function _putfonts()
$this->fonts[$k]['n'] = $this->n+1; $this->fonts[$k]['n'] = $this->n+1;
$type = $font['type']; $type = $font['type'];
$name = $font['name']; $name = $font['name'];
if($type=='core') if($type=='Core')
{ {
//Standard font // Core font
$this->_newobj(); $this->_newobj();
$this->_out('<</Type /Font'); $this->_out('<</Type /Font');
$this->_out('/BaseFont /'.$name); $this->_out('/BaseFont /'.$name);
@ -1511,7 +1573,7 @@ function _putfonts()
} }
elseif($type=='Type1' || $type=='TrueType') elseif($type=='Type1' || $type=='TrueType')
{ {
//Additional Type1 or TrueType font // Additional Type1 or TrueType/OpenType font
$this->_newobj(); $this->_newobj();
$this->_out('<</Type /Font'); $this->_out('<</Type /Font');
$this->_out('/BaseFont /'.$name); $this->_out('/BaseFont /'.$name);
@ -1519,13 +1581,10 @@ function _putfonts()
$this->_out('/FirstChar 32 /LastChar 255'); $this->_out('/FirstChar 32 /LastChar 255');
$this->_out('/Widths '.($this->n+1).' 0 R'); $this->_out('/Widths '.($this->n+1).' 0 R');
$this->_out('/FontDescriptor '.($this->n+2).' 0 R'); $this->_out('/FontDescriptor '.($this->n+2).' 0 R');
if($font['enc']) if(isset($font['diffn']))
{ $this->_out('/Encoding '.($nf+$font['diffn']).' 0 R');
if(isset($font['diff']))
$this->_out('/Encoding '.($nf+$font['diff']).' 0 R');
else else
$this->_out('/Encoding /WinAnsiEncoding'); $this->_out('/Encoding /WinAnsiEncoding');
}
$this->_out('>>'); $this->_out('>>');
$this->_out('endobj'); $this->_out('endobj');
// Widths // Widths
@ -1541,9 +1600,8 @@ function _putfonts()
$s = '<</Type /FontDescriptor /FontName /'.$name; $s = '<</Type /FontDescriptor /FontName /'.$name;
foreach($font['desc'] as $k=>$v) foreach($font['desc'] as $k=>$v)
$s .= ' /'.$k.' '.$v; $s .= ' /'.$k.' '.$v;
$file=$font['file']; if(!empty($font['file']))
if($file) $s .= ' /FontFile'.($type=='Type1' ? '' : '2').' '.$this->FontFiles[$font['file']]['n'].' 0 R';
$s.=' /FontFile'.($type=='Type1' ? '' : '2').' '.$this->FontFiles[$file]['n'].' 0 R';
$this->_out($s.'>>'); $this->_out($s.'>>');
$this->_out('endobj'); $this->_out('endobj');
} }
@ -1560,12 +1618,18 @@ function _putfonts()
function _putimages() function _putimages()
{ {
$filter=($this->compress) ? '/Filter /FlateDecode ' : ''; foreach(array_keys($this->images) as $file)
reset($this->images); {
while(list($file,$info)=each($this->images)) $this->_putimage($this->images[$file]);
unset($this->images[$file]['data']);
unset($this->images[$file]['smask']);
}
}
function _putimage(&$info)
{ {
$this->_newobj(); $this->_newobj();
$this->images[$file]['n']=$this->n; $info['n'] = $this->n;
$this->_out('<</Type /XObject'); $this->_out('<</Type /XObject');
$this->_out('/Subtype /Image'); $this->_out('/Subtype /Image');
$this->_out('/Width '.$info['w']); $this->_out('/Width '.$info['w']);
@ -1581,8 +1645,8 @@ function _putimages()
$this->_out('/BitsPerComponent '.$info['bpc']); $this->_out('/BitsPerComponent '.$info['bpc']);
if(isset($info['f'])) if(isset($info['f']))
$this->_out('/Filter /'.$info['f']); $this->_out('/Filter /'.$info['f']);
if(isset($info['parms'])) if(isset($info['dp']))
$this->_out($info['parms']); $this->_out('/DecodeParms <<'.$info['dp'].'>>');
if(isset($info['trns']) && is_array($info['trns'])) if(isset($info['trns']) && is_array($info['trns']))
{ {
$trns = ''; $trns = '';
@ -1590,21 +1654,29 @@ function _putimages()
$trns .= $info['trns'][$i].' '.$info['trns'][$i].' '; $trns .= $info['trns'][$i].' '.$info['trns'][$i].' ';
$this->_out('/Mask ['.$trns.']'); $this->_out('/Mask ['.$trns.']');
} }
if(isset($info['smask']))
$this->_out('/SMask '.($this->n+1).' 0 R');
$this->_out('/Length '.strlen($info['data']).'>>'); $this->_out('/Length '.strlen($info['data']).'>>');
$this->_putstream($info['data']); $this->_putstream($info['data']);
unset($this->images[$file]['data']);
$this->_out('endobj'); $this->_out('endobj');
// Soft mask
if(isset($info['smask']))
{
$dp = '/Predictor 15 /Colors 1 /BitsPerComponent 8 /Columns '.$info['w'];
$smask = array('w'=>$info['w'], 'h'=>$info['h'], 'cs'=>'DeviceGray', 'bpc'=>8, 'f'=>$info['f'], 'dp'=>$dp, 'data'=>$info['smask']);
$this->_putimage($smask);
}
// Palette // Palette
if($info['cs']=='Indexed') if($info['cs']=='Indexed')
{ {
$this->_newobj(); $filter = ($this->compress) ? '/Filter /FlateDecode ' : '';
$pal = ($this->compress) ? gzcompress($info['pal']) : $info['pal']; $pal = ($this->compress) ? gzcompress($info['pal']) : $info['pal'];
$this->_newobj();
$this->_out('<<'.$filter.'/Length '.strlen($pal).'>>'); $this->_out('<<'.$filter.'/Length '.strlen($pal).'>>');
$this->_putstream($pal); $this->_putstream($pal);
$this->_out('endobj'); $this->_out('endobj');
} }
} }
}
function _putxobjectdict() function _putxobjectdict()
{ {
@ -1664,7 +1736,7 @@ function _putcatalog()
elseif($this->ZoomMode=='real') elseif($this->ZoomMode=='real')
$this->_out('/OpenAction [3 0 R /XYZ null null 1]'); $this->_out('/OpenAction [3 0 R /XYZ null null 1]');
elseif(!is_string($this->ZoomMode)) elseif(!is_string($this->ZoomMode))
$this->_out('/OpenAction [3 0 R /XYZ null null '.($this->ZoomMode/100).']'); $this->_out('/OpenAction [3 0 R /XYZ null null '.sprintf('%.2F',$this->ZoomMode/100).']');
if($this->LayoutMode=='single') if($this->LayoutMode=='single')
$this->_out('/PageLayout /SinglePage'); $this->_out('/PageLayout /SinglePage');
elseif($this->LayoutMode=='continuous') elseif($this->LayoutMode=='continuous')

View File

@ -57,6 +57,7 @@ jQuery.noConflict();
<div style="position:relative;"> <div style="position:relative;">
<?php <?php
echo "<div start=$start end=$end style=\"width:".$graph_width."px; height:".$graph_height."px; position:absolute; top:33px\" class=\"graph\" id=\"".$this->url."\" ></div>"; echo "<div start=$start end=$end style=\"width:".$graph_width."px; height:".$graph_height."px; position:absolute; top:33px\" class=\"graph\" id=\"".$this->url."\" ></div>";
$srv = urlencode($srv);
if(!empty($tpl)){ if(!empty($tpl)){
echo "<img class=\"graph\" src=\"image?source=$source" echo "<img class=\"graph\" src=\"image?source=$source"
."&tpl=$tpl" ."&tpl=$tpl"

View File

@ -45,7 +45,7 @@ und die Performancedaten
<p> <p>
Wie man unschwer erkennt, sind die Performancedaten auf die maschinelle Verarbeitung ausgelegt. Das Format ist in den Wie man unschwer erkennt, sind die Performancedaten auf die maschinelle Verarbeitung ausgelegt. Das Format ist in den
<a href="http://nagiosplug.sourceforge.net/developer-guidelines.html#AEN201" class="urlextern" title="http://nagiosplug.sourceforge.net/developer-guidelines.html#AEN201" rel="nofollow">Developer Guidelines</a> <a href="https://www.monitoring-plugins.org/doc/guidelines.html#AEN200" class="urlextern" title="https://www.monitoring-plugins.org/doc/guidelines.html#AEN200" rel="nofollow">Developer Guidelines</a>
festgelegt (einen Auszug davon gibt es <a href="/de/pnp-0.6/perfdata_format" class="wikilink1" title="de:pnp-0.6:perfdata_format">an dieser Stelle</a>), es soll aber hier noch einmal kurz erl&auml;utert werden. festgelegt (einen Auszug davon gibt es <a href="/de/pnp-0.6/perfdata_format" class="wikilink1" title="de:pnp-0.6:perfdata_format">an dieser Stelle</a>), es soll aber hier noch einmal kurz erl&auml;utert werden.
</p> </p>
@ -69,7 +69,7 @@ Mehrere Datenreihen werden durch Leerzeichen getrennt. Die eigentlichen Daten d&
</p> </p>
</div> </div>
<!-- SECTION "Anforderungen an Plugins" [27-1903] --> <!-- SECTION "Anforderungen an Plugins" [27-1898] -->
<h2><a name="benoetigte_software" id="benoetigte_software">Ben&ouml;tigte Software</a></h2> <h2><a name="benoetigte_software" id="benoetigte_software">Ben&ouml;tigte Software</a></h2>
<div class="level2"> <div class="level2">
<ul> <ul>
@ -87,7 +87,7 @@ Achtung: wird RRDtool ohne Paket-Manager installiert, fehlen anschließend m&oum
</ul> </ul>
</div> </div>
<!-- SECTION "Ben&ouml;tigte Software" [1904-2519] --> <!-- SECTION "Ben&ouml;tigte Software" [1899-2514] -->
<h2><a name="lizenz" id="lizenz">Lizenz</a></h2> <h2><a name="lizenz" id="lizenz">Lizenz</a></h2>
<div class="level2"> <div class="level2">
@ -97,7 +97,7 @@ PNP ist unter der <a href="http://www.gnu.de/documents/gpl-2.0.de.html" class="u
</p> </p>
</div> </div>
<!-- SECTION "Lizenz" [2520-2625] --> <!-- SECTION "Lizenz" [2515-2620] -->
<h2><a name="download" id="download">Download</a></h2> <h2><a name="download" id="download">Download</a></h2>
<div class="level2"> <div class="level2">
@ -123,7 +123,7 @@ Die aktuelle Entwicklung ist jederzeit unter <a href="https://github.com/lingej/
</p> </p>
</div> </div>
<!-- SECTION "Download" [2626-3395] --> <!-- SECTION "Download" [2621-3390] -->
<h2><a name="support" id="support">Support</a></h2> <h2><a name="support" id="support">Support</a></h2>
<div class="level2"> <div class="level2">
@ -160,7 +160,7 @@ Weiterhin k&ouml;nnen die Mailinglisten auf Sourceforge verwendet werden. Dort i
</p> </p>
</div> </div>
<!-- SECTION "Support" [3396-4710] --> <!-- SECTION "Support" [3391-4705] -->
<h2><a name="datenhaltung" id="datenhaltung">Datenhaltung</a></h2> <h2><a name="datenhaltung" id="datenhaltung">Datenhaltung</a></h2>
<div class="level2"> <div class="level2">
@ -183,4 +183,4 @@ Durch die Speicherung in diesem Format &auml;ndert sich die Dateigr&ouml;ße nac
</p> </p>
</div> </div>
<!-- SECTION "Datenhaltung" [4711-] --> <!-- SECTION "Datenhaltung" [4706-] -->

View File

@ -120,7 +120,7 @@ und die Performancedaten
<p> <p>
Wie man unschwer erkennt, sind die Performancedaten auf die maschinelle Verarbeitung ausgelegt. Das Format ist in den Wie man unschwer erkennt, sind die Performancedaten auf die maschinelle Verarbeitung ausgelegt. Das Format ist in den
<a href="http://nagiosplug.sourceforge.net/developer-guidelines.html#AEN201" class="urlextern" title="http://nagiosplug.sourceforge.net/developer-guidelines.html#AEN201" rel="nofollow">Developer Guidelines</a> <a href="https://www.monitoring-plugins.org/doc/guidelines.html#AEN200" class="urlextern" title="https://www.monitoring-plugins.org/doc/guidelines.html#AEN200" rel="nofollow">Developer Guidelines</a>
festgelegt (einen Auszug davon gibt es <a href="/de/pnp-0.6/perfdata_format" class="wikilink1" title="de:pnp-0.6:perfdata_format">an dieser Stelle</a>), es soll aber hier noch einmal kurz erl&auml;utert werden. festgelegt (einen Auszug davon gibt es <a href="/de/pnp-0.6/perfdata_format" class="wikilink1" title="de:pnp-0.6:perfdata_format">an dieser Stelle</a>), es soll aber hier noch einmal kurz erl&auml;utert werden.
</p> </p>
@ -3360,7 +3360,7 @@ Es bleibt Drittanbietern &uuml;berlassen, aus den Performance-Daten Graphen zu e
</p> </p>
<p> <p>
Quelle: <a href="http://nagiosplug.sourceforge.net/developer-guidelines.html#AEN201" class="urlextern" title="http://nagiosplug.sourceforge.net/developer-guidelines.html#AEN201" rel="nofollow">http://nagiosplug.sourceforge.net/developer-guidelines.html#AEN201</a> Quelle: <a href="https://www.monitoring-plugins.org/doc/guidelines.html#AEN200" class="urlextern" title="https://www.monitoring-plugins.org/doc/guidelines.html#AEN200" rel="nofollow">https://www.monitoring-plugins.org/doc/guidelines.html#AEN200</a>
</p> </p>
<div class="inclmeta level"> <div class="inclmeta level">

View File

@ -57,6 +57,6 @@ Es bleibt Drittanbietern &uuml;berlassen, aus den Performance-Daten Graphen zu e
</p> </p>
<p> <p>
Quelle: <a href="http://nagiosplug.sourceforge.net/developer-guidelines.html#AEN201" class="urlextern" title="http://nagiosplug.sourceforge.net/developer-guidelines.html#AEN201" rel="nofollow">http://nagiosplug.sourceforge.net/developer-guidelines.html#AEN201</a> Quelle: <a href="https://www.monitoring-plugins.org/doc/guidelines.html#AEN200" class="urlextern" title="https://www.monitoring-plugins.org/doc/guidelines.html#AEN200" rel="nofollow">https://www.monitoring-plugins.org/doc/guidelines.html#AEN200</a>
</p> </p>

View File

@ -44,7 +44,7 @@ and the performance data
<p> <p>
Performance data is designed for automatic processing. The format is specified within the <a href="http://nagiosplug.sourceforge.net/developer-guidelines.html#AEN201" class="urlextern" title="http://nagiosplug.sourceforge.net/developer-guidelines.html#AEN201" rel="nofollow">Developer Guidelines</a> (you&#039;ll find an excerpt <a href="/pnp-0.6/perfdata_format" class="wikilink1" title="pnp-0.6:perfdata_format">here</a>) but should be exemplified here nonetheless: Performance data is designed for automatic processing. The format is specified within the <a href="https://www.monitoring-plugins.org/doc/guidelines.html#AEN200" class="urlextern" title="https://www.monitoring-plugins.org/doc/guidelines.html#AEN200" rel="nofollow">Developer Guidelines</a> (you&#039;ll find an excerpt <a href="/pnp-0.6/perfdata_format" class="wikilink1" title="pnp-0.6:perfdata_format">here</a>) but should be exemplified here nonetheless:
</p> </p>
<pre class="code"> rta=2.687ms;3000.000;5000.000;0; <pre class="code"> rta=2.687ms;3000.000;5000.000;0;
@ -67,7 +67,7 @@ Several data series are separated by blanks. The actual data must not contains a
</p> </p>
</div> </div>
<!-- SECTION "System requirements" [27-1698] --> <!-- SECTION "System requirements" [27-1693] -->
<h2><a name="required_software" id="required_software">Required Software</a></h2> <h2><a name="required_software" id="required_software">Required Software</a></h2>
<div class="level2"> <div class="level2">
<ul> <ul>
@ -85,7 +85,7 @@ Attention: installing RRDtool without a packet manager might lead to missing dej
</ul> </ul>
</div> </div>
<!-- SECTION "Required Software" [1699-2245] --> <!-- SECTION "Required Software" [1694-2240] -->
<h2><a name="license" id="license">License</a></h2> <h2><a name="license" id="license">License</a></h2>
<div class="level2"> <div class="level2">
@ -95,7 +95,7 @@ PNP is licensed under <a href="http://www.gnu.org/licenses/gpl-2.0.txt" class="u
</p> </p>
</div> </div>
<!-- SECTION "License" [2246-2340] --> <!-- SECTION "License" [2241-2335] -->
<h2><a name="download" id="download">Download</a></h2> <h2><a name="download" id="download">Download</a></h2>
<div class="level2"> <div class="level2">
@ -119,7 +119,7 @@ The current development can be viewed anytime at <a href="https://github.com/lin
</p> </p>
</div> </div>
<!-- SECTION "Download" [2341-2996] --> <!-- SECTION "Download" [2336-2991] -->
<h2><a name="support" id="support">Support</a></h2> <h2><a name="support" id="support">Support</a></h2>
<div class="level2"> <div class="level2">
@ -154,7 +154,7 @@ The mailing lists on Sourceforge can be used to request support (and are limited
</p> </p>
</div> </div>
<!-- SECTION "Support" [2997-4303] --> <!-- SECTION "Support" [2992-4298] -->
<h2><a name="storage" id="storage">Storage</a></h2> <h2><a name="storage" id="storage">Storage</a></h2>
<div class="level2"> <div class="level2">
@ -172,7 +172,7 @@ Using this storage format the size of the files will stay the same over time. Pe
</p> </p>
</div> </div>
<!-- SECTION "Storage" [4304-5060] --> <!-- SECTION "Storage" [4299-5055] -->
<h2><a name="statistics_and_links_to_sourceforge" id="statistics_and_links_to_sourceforge">Statistics and links to Sourceforge</a></h2> <h2><a name="statistics_and_links_to_sourceforge" id="statistics_and_links_to_sourceforge">Statistics and links to Sourceforge</a></h2>
<div class="level2"> <div class="level2">
<ul class="rss"><li><div class="li"><em>An error occurred while fetching this feed: </em><a href="http://sourceforge.net/export/rss2_projsummary.php?group_id=191615" class="urlextern" title="http://sourceforge.net/export/rss2_projsummary.php?group_id=191615" rel="nofollow">http://sourceforge.net/export/rss2_projsummary.php?group_id=191615</a></div></li></ul> <ul class="rss"><li><div class="li"><em>An error occurred while fetching this feed: </em><a href="http://sourceforge.net/export/rss2_projsummary.php?group_id=191615" class="urlextern" title="http://sourceforge.net/export/rss2_projsummary.php?group_id=191615" rel="nofollow">http://sourceforge.net/export/rss2_projsummary.php?group_id=191615</a></div></li></ul>
@ -183,4 +183,4 @@ Using this storage format the size of the files will stay the same over time. Pe
</p> </p>
</div> </div>
<!-- SECTION "Statistics and links to Sourceforge" [5061-] --> <!-- SECTION "Statistics and links to Sourceforge" [5056-] -->

View File

@ -113,7 +113,7 @@ and the performance data
<p> <p>
Performance data is designed for automatic processing. The format is specified within the <a href="http://nagiosplug.sourceforge.net/developer-guidelines.html#AEN201" class="urlextern" title="http://nagiosplug.sourceforge.net/developer-guidelines.html#AEN201" rel="nofollow">Developer Guidelines</a> (you&#039;ll find an excerpt <a href="/pnp-0.6/perfdata_format" class="wikilink1" title="pnp-0.6:perfdata_format">here</a>) but should be exemplified here nonetheless: Performance data is designed for automatic processing. The format is specified within the <a href="https://www.monitoring-plugins.org/doc/guidelines.html#AEN200" class="urlextern" title="https://www.monitoring-plugins.org/doc/guidelines.html#AEN200" rel="nofollow">Developer Guidelines</a> (you&#039;ll find an excerpt <a href="/pnp-0.6/perfdata_format" class="wikilink1" title="pnp-0.6:perfdata_format">here</a>) but should be exemplified here nonetheless:
</p> </p>
<pre class="code"> rta=2.687ms;3000.000;5000.000;0; <pre class="code"> rta=2.687ms;3000.000;5000.000;0;
@ -423,7 +423,7 @@ Changes can be tracked on <a href="http://pnp4nagios.git.sourceforge.net/git/git
</p> </p>
<p> <p>
The current Version is <a href="https://sourceforge.net/projects/pnp4nagios/files/latest" class="urlextern" title="https://sourceforge.net/projects/pnp4nagios/files/latest" rel="nofollow"> pnp4nagios-0.6.22.tar.gz</a> The current Version is <a href="https://sourceforge.net/projects/pnp4nagios/files/latest" class="urlextern" title="https://sourceforge.net/projects/pnp4nagios/files/latest" rel="nofollow"> pnp4nagios-0.6.24.tar.gz</a>
</p> </p>
</div> </div>
@ -443,7 +443,7 @@ This is allways the latest GIT HEAD Version
<p> <p>
Last Update: Wed Jul 30 06:30:01 CEST 2014 Last Update: Sat Jan 3 13:30:01 CET 2015
</p> </p>
</div> </div>
@ -455,6 +455,10 @@ Last Update: Wed Jul 30 06:30:01 CEST 2014
<strong>pnp-0.6.?? ??/??/2013</strong> <strong>pnp-0.6.?? ??/??/2013</strong>
</p> </p>
<p>
<strong>pnp-0.6.24 07/30/2014</strong>
</p>
<ul> <ul>
<li class="level1"><div class="li"> Bugfix: Fixed some more XSS issues</div> <li class="level1"><div class="li"> Bugfix: Fixed some more XSS issues</div>
</li> </li>
@ -464,7 +468,7 @@ Last Update: Wed Jul 30 06:30:01 CEST 2014
<p> <p>
<strong>pnp-0.6.22 04/06/2014</strong> <strong>pnp-0.6.22 06/04/2014</strong>
</p> </p>
<ul> <ul>
<li class="level1"><div class="li"> Bugfix: Fixed livestatus socket parsing ( Pekka Panula )</div> <li class="level1"><div class="li"> Bugfix: Fixed livestatus socket parsing ( Pekka Panula )</div>
@ -3735,7 +3739,7 @@ It is up to third party programs to convert the Nagios plugins performance data
</p> </p>
<p> <p>
Origin: <a href="http://nagiosplug.sourceforge.net/developer-guidelines.html#AEN201" class="urlextern" title="http://nagiosplug.sourceforge.net/developer-guidelines.html#AEN201" rel="nofollow">http://nagiosplug.sourceforge.net/developer-guidelines.html#AEN201</a> Origin: <a href="https://www.monitoring-plugins.org/doc/guidelines.html#AEN200" class="urlextern" title="https://www.monitoring-plugins.org/doc/guidelines.html#AEN200" rel="nofollow">https://www.monitoring-plugins.org/doc/guidelines.html#AEN200</a>
</p> </p>
<div class="inclmeta level"> <div class="inclmeta level">

View File

@ -15,7 +15,7 @@ Changes can be tracked on <a href="http://pnp4nagios.git.sourceforge.net/git/git
</p> </p>
<p> <p>
The current Version is <a href="https://sourceforge.net/projects/pnp4nagios/files/latest" class="urlextern" title="https://sourceforge.net/projects/pnp4nagios/files/latest" rel="nofollow"> pnp4nagios-0.6.22.tar.gz</a> The current Version is <a href="https://sourceforge.net/projects/pnp4nagios/files/latest" class="urlextern" title="https://sourceforge.net/projects/pnp4nagios/files/latest" rel="nofollow"> pnp4nagios-0.6.24.tar.gz</a>
</p> </p>
</div> </div>
@ -35,21 +35,36 @@ This is allways the latest GIT HEAD Version
<p> <p>
Last Update: Wed Jul 30 12:30:45 CEST 2014 Last Update: Sat Jan 3 14:08:23 CET 2015
</p> </p>
</div> </div>
<!-- SECTION "Latest Devel Version" [327-550] --> <!-- SECTION "Latest Devel Version" [327-549] -->
<h2><a name="changelog" id="changelog">ChangeLog</a></h2> <h2><a name="changelog" id="changelog">ChangeLog</a></h2>
<div class="level2"> <div class="level2">
<p> <p>
<strong>pnp-0.6.?? ??/??/2013</strong> <strong>pnp-0.6.?? ??/??/2015</strong>
</p> </p>
<p> <p>
<strong>pnp-0.6.24 07/30/2013</strong> <strong>pnp-0.6.25 01/03/2015</strong>
</p>
<ul>
<li class="level1"><div class="li"> Update: FPDF Update to Version 1.7</div>
</li>
<li class="level1"><div class="li"> Bugfix: Default source fixed by AWiddersheim</div>
</li>
<li class="level1"><div class="li"> Bugfix: Fixed urlencoding of Host- and Servicenames by Andreas Doehler</div>
</li>
<li class="level1"><div class="li"> Bugfix: Fixed Timeranges by AWiddersheim</div>
</li>
</ul>
<p>
<strong>pnp-0.6.24 07/30/2014</strong>
</p> </p>
<ul> <ul>
<li class="level1"><div class="li"> Bugfix: Fixed some more XSS issues</div> <li class="level1"><div class="li"> Bugfix: Fixed some more XSS issues</div>
@ -475,4 +490,4 @@ Last Update: Wed Jul 30 12:30:45 CEST 2014
</ul> </ul>
</div> </div>
<!-- SECTION "ChangeLog" [551-] --> <!-- SECTION "ChangeLog" [550-] -->

View File

@ -56,6 +56,6 @@ It is up to third party programs to convert the Nagios plugins performance data
</p> </p>
<p> <p>
Origin: <a href="http://nagiosplug.sourceforge.net/developer-guidelines.html#AEN201" class="urlextern" title="http://nagiosplug.sourceforge.net/developer-guidelines.html#AEN201" rel="nofollow">http://nagiosplug.sourceforge.net/developer-guidelines.html#AEN201</a> Origin: <a href="https://www.monitoring-plugins.org/doc/guidelines.html#AEN200" class="urlextern" title="https://www.monitoring-plugins.org/doc/guidelines.html#AEN200" rel="nofollow">https://www.monitoring-plugins.org/doc/guidelines.html#AEN200</a>
</p> </p>

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 272 B

After

Width:  |  Height:  |  Size: 273 B

2
share/pnp/media/js/jquery-min.js vendored Normal file

File diff suppressed because one or more lines are too long

125
share/pnp/media/js/jquery-ui.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -1,14 +0,0 @@
/*
* imgAreaSelect jQuery plugin
* version 0.9.10
*
* Copyright (c) 2008-2013 Michal Wojciechowski (odyniec.net)
*
* Dual licensed under the MIT (MIT-LICENSE.txt)
* and GPL (GPL-LICENSE.txt) licenses.
*
* http://odyniec.net/projects/imgareaselect/
*
* Added to the DFSG tarball by
* Markus Frosch <markus@lazyfrosch.de>
*/

View File

@ -1,730 +0,0 @@
/*
* imgAreaSelect jQuery plugin
* version 0.9.10
*
* Copyright (c) 2008-2013 Michal Wojciechowski (odyniec.net)
*
* Dual licensed under the MIT (MIT-LICENSE.txt)
* and GPL (GPL-LICENSE.txt) licenses.
*
* http://odyniec.net/projects/imgareaselect/
*
*/
(function($) {
var abs = Math.abs,
max = Math.max,
min = Math.min,
round = Math.round;
function div() {
return $('<div/>');
}
$.imgAreaSelect = function (img, options) {
var
$img = $(img),
imgLoaded,
$box = div(),
$area = div(),
$border = div().add(div()).add(div()).add(div()),
$outer = div().add(div()).add(div()).add(div()),
$handles = $([]),
$areaOpera,
left, top,
imgOfs = { left: 0, top: 0 },
imgWidth, imgHeight,
$parent,
parOfs = { left: 0, top: 0 },
zIndex = 0,
position = 'absolute',
startX, startY,
scaleX, scaleY,
resize,
minWidth, minHeight, maxWidth, maxHeight,
aspectRatio,
shown,
x1, y1, x2, y2,
selection = { x1: 0, y1: 0, x2: 0, y2: 0, width: 0, height: 0 },
docElem = document.documentElement,
ua = navigator.userAgent,
$p, d, i, o, w, h, adjusted;
function viewX(x) {
return x + imgOfs.left - parOfs.left;
}
function viewY(y) {
return y + imgOfs.top - parOfs.top;
}
function selX(x) {
return x - imgOfs.left + parOfs.left;
}
function selY(y) {
return y - imgOfs.top + parOfs.top;
}
function evX(event) {
return event.pageX - parOfs.left;
}
function evY(event) {
return event.pageY - parOfs.top;
}
function getSelection(noScale) {
var sx = noScale || scaleX, sy = noScale || scaleY;
return { x1: round(selection.x1 * sx),
y1: round(selection.y1 * sy),
x2: round(selection.x2 * sx),
y2: round(selection.y2 * sy),
width: round(selection.x2 * sx) - round(selection.x1 * sx),
height: round(selection.y2 * sy) - round(selection.y1 * sy) };
}
function setSelection(x1, y1, x2, y2, noScale) {
var sx = noScale || scaleX, sy = noScale || scaleY;
selection = {
x1: round(x1 / sx || 0),
y1: round(y1 / sy || 0),
x2: round(x2 / sx || 0),
y2: round(y2 / sy || 0)
};
selection.width = selection.x2 - selection.x1;
selection.height = selection.y2 - selection.y1;
}
function adjust() {
if (!imgLoaded || !$img.width())
return;
imgOfs = { left: round($img.offset().left), top: round($img.offset().top) };
imgWidth = $img.innerWidth();
imgHeight = $img.innerHeight();
imgOfs.top += ($img.outerHeight() - imgHeight) >> 1;
imgOfs.left += ($img.outerWidth() - imgWidth) >> 1;
minWidth = round(options.minWidth / scaleX) || 0;
minHeight = round(options.minHeight / scaleY) || 0;
maxWidth = round(min(options.maxWidth / scaleX || 1<<24, imgWidth));
maxHeight = round(min(options.maxHeight / scaleY || 1<<24, imgHeight));
if ($().jquery == '1.3.2' && position == 'fixed' &&
!docElem['getBoundingClientRect'])
{
imgOfs.top += max(document.body.scrollTop, docElem.scrollTop);
imgOfs.left += max(document.body.scrollLeft, docElem.scrollLeft);
}
parOfs = /absolute|relative/.test($parent.css('position')) ?
{ left: round($parent.offset().left) - $parent.scrollLeft(),
top: round($parent.offset().top) - $parent.scrollTop() } :
position == 'fixed' ?
{ left: $(document).scrollLeft(), top: $(document).scrollTop() } :
{ left: 0, top: 0 };
left = viewX(0);
top = viewY(0);
if (selection.x2 > imgWidth || selection.y2 > imgHeight)
doResize();
}
function update(resetKeyPress) {
if (!shown) return;
$box.css({ left: viewX(selection.x1), top: viewY(selection.y1) })
.add($area).width(w = selection.width).height(h = selection.height);
$area.add($border).add($handles).css({ left: 0, top: 0 });
$border
.width(max(w - $border.outerWidth() + $border.innerWidth(), 0))
.height(max(h - $border.outerHeight() + $border.innerHeight(), 0));
$($outer[0]).css({ left: left, top: top,
width: selection.x1, height: imgHeight });
$($outer[1]).css({ left: left + selection.x1, top: top,
width: w, height: selection.y1 });
$($outer[2]).css({ left: left + selection.x2, top: top,
width: imgWidth - selection.x2, height: imgHeight });
$($outer[3]).css({ left: left + selection.x1, top: top + selection.y2,
width: w, height: imgHeight - selection.y2 });
w -= $handles.outerWidth();
h -= $handles.outerHeight();
switch ($handles.length) {
case 8:
$($handles[4]).css({ left: w >> 1 });
$($handles[5]).css({ left: w, top: h >> 1 });
$($handles[6]).css({ left: w >> 1, top: h });
$($handles[7]).css({ top: h >> 1 });
case 4:
$handles.slice(1,3).css({ left: w });
$handles.slice(2,4).css({ top: h });
}
if (resetKeyPress !== false) {
if ($.imgAreaSelect.onKeyPress != docKeyPress)
$(document).unbind($.imgAreaSelect.keyPress,
$.imgAreaSelect.onKeyPress);
if (options.keys)
$(document)[$.imgAreaSelect.keyPress](
$.imgAreaSelect.onKeyPress = docKeyPress);
}
if (msie && $border.outerWidth() - $border.innerWidth() == 2) {
$border.css('margin', 0);
setTimeout(function () { $border.css('margin', 'auto'); }, 0);
}
}
function doUpdate(resetKeyPress) {
adjust();
update(resetKeyPress);
x1 = viewX(selection.x1); y1 = viewY(selection.y1);
x2 = viewX(selection.x2); y2 = viewY(selection.y2);
}
function hide($elem, fn) {
options.fadeSpeed ? $elem.fadeOut(options.fadeSpeed, fn) : $elem.hide();
}
function areaMouseMove(event) {
var x = selX(evX(event)) - selection.x1,
y = selY(evY(event)) - selection.y1;
if (!adjusted) {
adjust();
adjusted = true;
$box.one('mouseout', function () { adjusted = false; });
}
resize = '';
if (options.resizable) {
if (y <= options.resizeMargin)
resize = 'n';
else if (y >= selection.height - options.resizeMargin)
resize = 's';
if (x <= options.resizeMargin)
resize += 'w';
else if (x >= selection.width - options.resizeMargin)
resize += 'e';
}
$box.css('cursor', resize ? resize + '-resize' :
options.movable ? 'move' : '');
if ($areaOpera)
$areaOpera.toggle();
}
function docMouseUp(event) {
$('body').css('cursor', '');
if (options.autoHide || selection.width * selection.height == 0)
hide($box.add($outer), function () { $(this).hide(); });
$(document).unbind('mousemove', selectingMouseMove);
$box.mousemove(areaMouseMove);
options.onSelectEnd(img, getSelection());
}
function areaMouseDown(event) {
if (event.which != 1) return false;
adjust();
if (resize) {
$('body').css('cursor', resize + '-resize');
x1 = viewX(selection[/w/.test(resize) ? 'x2' : 'x1']);
y1 = viewY(selection[/n/.test(resize) ? 'y2' : 'y1']);
$(document).mousemove(selectingMouseMove)
.one('mouseup', docMouseUp);
$box.unbind('mousemove', areaMouseMove);
}
else if (options.movable) {
startX = left + selection.x1 - evX(event);
startY = top + selection.y1 - evY(event);
$box.unbind('mousemove', areaMouseMove);
$(document).mousemove(movingMouseMove)
.one('mouseup', function () {
options.onSelectEnd(img, getSelection());
$(document).unbind('mousemove', movingMouseMove);
$box.mousemove(areaMouseMove);
});
}
else
$img.mousedown(event);
return false;
}
function fixAspectRatio(xFirst) {
if (aspectRatio)
if (xFirst) {
x2 = max(left, min(left + imgWidth,
x1 + abs(y2 - y1) * aspectRatio * (x2 > x1 || -1)));
y2 = round(max(top, min(top + imgHeight,
y1 + abs(x2 - x1) / aspectRatio * (y2 > y1 || -1))));
x2 = round(x2);
}
else {
y2 = max(top, min(top + imgHeight,
y1 + abs(x2 - x1) / aspectRatio * (y2 > y1 || -1)));
x2 = round(max(left, min(left + imgWidth,
x1 + abs(y2 - y1) * aspectRatio * (x2 > x1 || -1))));
y2 = round(y2);
}
}
function doResize() {
x1 = min(x1, left + imgWidth);
y1 = min(y1, top + imgHeight);
if (abs(x2 - x1) < minWidth) {
x2 = x1 - minWidth * (x2 < x1 || -1);
if (x2 < left)
x1 = left + minWidth;
else if (x2 > left + imgWidth)
x1 = left + imgWidth - minWidth;
}
if (abs(y2 - y1) < minHeight) {
y2 = y1 - minHeight * (y2 < y1 || -1);
if (y2 < top)
y1 = top + minHeight;
else if (y2 > top + imgHeight)
y1 = top + imgHeight - minHeight;
}
x2 = max(left, min(x2, left + imgWidth));
y2 = max(top, min(y2, top + imgHeight));
fixAspectRatio(abs(x2 - x1) < abs(y2 - y1) * aspectRatio);
if (abs(x2 - x1) > maxWidth) {
x2 = x1 - maxWidth * (x2 < x1 || -1);
fixAspectRatio();
}
if (abs(y2 - y1) > maxHeight) {
y2 = y1 - maxHeight * (y2 < y1 || -1);
fixAspectRatio(true);
}
selection = { x1: selX(min(x1, x2)), x2: selX(max(x1, x2)),
y1: selY(min(y1, y2)), y2: selY(max(y1, y2)),
width: abs(x2 - x1), height: abs(y2 - y1) };
update();
options.onSelectChange(img, getSelection());
}
function selectingMouseMove(event) {
x2 = /w|e|^$/.test(resize) || aspectRatio ? evX(event) : viewX(selection.x2);
y2 = /n|s|^$/.test(resize) || aspectRatio ? evY(event) : viewY(selection.y2);
doResize();
return false;
}
function doMove(newX1, newY1) {
x2 = (x1 = newX1) + selection.width;
y2 = (y1 = newY1) + selection.height;
$.extend(selection, { x1: selX(x1), y1: selY(y1), x2: selX(x2),
y2: selY(y2) });
update();
options.onSelectChange(img, getSelection());
}
function movingMouseMove(event) {
x1 = max(left, min(startX + evX(event), left + imgWidth - selection.width));
y1 = max(top, min(startY + evY(event), top + imgHeight - selection.height));
doMove(x1, y1);
event.preventDefault();
return false;
}
function startSelection() {
$(document).unbind('mousemove', startSelection);
adjust();
x2 = x1;
y2 = y1;
doResize();
resize = '';
if (!$outer.is(':visible'))
$box.add($outer).hide().fadeIn(options.fadeSpeed||0);
shown = true;
$(document).unbind('mouseup', cancelSelection)
.mousemove(selectingMouseMove).one('mouseup', docMouseUp);
$box.unbind('mousemove', areaMouseMove);
options.onSelectStart(img, getSelection());
}
function cancelSelection() {
$(document).unbind('mousemove', startSelection)
.unbind('mouseup', cancelSelection);
hide($box.add($outer));
setSelection(selX(x1), selY(y1), selX(x1), selY(y1));
if (!(this instanceof $.imgAreaSelect)) {
options.onSelectChange(img, getSelection());
options.onSelectEnd(img, getSelection());
}
}
function imgMouseDown(event) {
if (event.which != 1 || $outer.is(':animated')) return false;
adjust();
startX = x1 = evX(event);
startY = y1 = evY(event);
$(document).mousemove(startSelection).mouseup(cancelSelection);
return false;
}
function windowResize() {
doUpdate(false);
}
function imgLoad() {
imgLoaded = true;
setOptions(options = $.extend({
classPrefix: 'imgareaselect',
movable: true,
parent: 'body',
resizable: true,
resizeMargin: 10,
onInit: function () {},
onSelectStart: function () {},
onSelectChange: function () {},
onSelectEnd: function () {}
}, options));
$box.add($outer).css({ visibility: '' });
if (options.show) {
shown = true;
adjust();
update();
$box.add($outer).hide().fadeIn(options.fadeSpeed||0);
}
setTimeout(function () { options.onInit(img, getSelection()); }, 0);
}
var docKeyPress = function(event) {
var k = options.keys, d, t, key = event.keyCode;
d = !isNaN(k.alt) && (event.altKey || event.originalEvent.altKey) ? k.alt :
!isNaN(k.ctrl) && event.ctrlKey ? k.ctrl :
!isNaN(k.shift) && event.shiftKey ? k.shift :
!isNaN(k.arrows) ? k.arrows : 10;
if (k.arrows == 'resize' || (k.shift == 'resize' && event.shiftKey) ||
(k.ctrl == 'resize' && event.ctrlKey) ||
(k.alt == 'resize' && (event.altKey || event.originalEvent.altKey)))
{
switch (key) {
case 37:
d = -d;
case 39:
t = max(x1, x2);
x1 = min(x1, x2);
x2 = max(t + d, x1);
fixAspectRatio();
break;
case 38:
d = -d;
case 40:
t = max(y1, y2);
y1 = min(y1, y2);
y2 = max(t + d, y1);
fixAspectRatio(true);
break;
default:
return;
}
doResize();
}
else {
x1 = min(x1, x2);
y1 = min(y1, y2);
switch (key) {
case 37:
doMove(max(x1 - d, left), y1);
break;
case 38:
doMove(x1, max(y1 - d, top));
break;
case 39:
doMove(x1 + min(d, imgWidth - selX(x2)), y1);
break;
case 40:
doMove(x1, y1 + min(d, imgHeight - selY(y2)));
break;
default:
return;
}
}
return false;
};
function styleOptions($elem, props) {
for (var option in props)
if (options[option] !== undefined)
$elem.css(props[option], options[option]);
}
function setOptions(newOptions) {
if (newOptions.parent)
($parent = $(newOptions.parent)).append($box.add($outer));
$.extend(options, newOptions);
adjust();
if (newOptions.handles != null) {
$handles.remove();
$handles = $([]);
i = newOptions.handles ? newOptions.handles == 'corners' ? 4 : 8 : 0;
while (i--)
$handles = $handles.add(div());
$handles.addClass(options.classPrefix + '-handle').css({
position: 'absolute',
fontSize: 0,
zIndex: zIndex + 1 || 1
});
if (!parseInt($handles.css('width')) >= 0)
$handles.width(5).height(5);
if (o = options.borderWidth)
$handles.css({ borderWidth: o, borderStyle: 'solid' });
styleOptions($handles, { borderColor1: 'border-color',
borderColor2: 'background-color',
borderOpacity: 'opacity' });
}
scaleX = options.imageWidth / imgWidth || 1;
scaleY = options.imageHeight / imgHeight || 1;
if (newOptions.x1 != null) {
setSelection(newOptions.x1, newOptions.y1, newOptions.x2,
newOptions.y2);
newOptions.show = !newOptions.hide;
}
if (newOptions.keys)
options.keys = $.extend({ shift: 1, ctrl: 'resize' },
newOptions.keys);
$outer.addClass(options.classPrefix + '-outer');
$area.addClass(options.classPrefix + '-selection');
for (i = 0; i++ < 4;)
$($border[i-1]).addClass(options.classPrefix + '-border' + i);
styleOptions($area, { selectionColor: 'background-color',
selectionOpacity: 'opacity' });
styleOptions($border, { borderOpacity: 'opacity',
borderWidth: 'border-width' });
styleOptions($outer, { outerColor: 'background-color',
outerOpacity: 'opacity' });
if (o = options.borderColor1)
$($border[0]).css({ borderStyle: 'solid', borderColor: o });
if (o = options.borderColor2)
$($border[1]).css({ borderStyle: 'dashed', borderColor: o });
$box.append($area.add($border).add($areaOpera)).append($handles);
if (msie) {
if (o = ($outer.css('filter')||'').match(/opacity=(\d+)/))
$outer.css('opacity', o[1]/100);
if (o = ($border.css('filter')||'').match(/opacity=(\d+)/))
$border.css('opacity', o[1]/100);
}
if (newOptions.hide)
hide($box.add($outer));
else if (newOptions.show && imgLoaded) {
shown = true;
$box.add($outer).fadeIn(options.fadeSpeed||0);
doUpdate();
}
aspectRatio = (d = (options.aspectRatio || '').split(/:/))[0] / d[1];
$img.add($outer).unbind('mousedown', imgMouseDown);
if (options.disable || options.enable === false) {
$box.unbind('mousemove', areaMouseMove).unbind('mousedown', areaMouseDown);
$(window).unbind('resize', windowResize);
}
else {
if (options.enable || options.disable === false) {
if (options.resizable || options.movable)
$box.mousemove(areaMouseMove).mousedown(areaMouseDown);
$(window).resize(windowResize);
}
if (!options.persistent)
$img.add($outer).mousedown(imgMouseDown);
}
options.enable = options.disable = undefined;
}
this.remove = function () {
setOptions({ disable: true });
$box.add($outer).remove();
};
this.getOptions = function () { return options; };
this.setOptions = setOptions;
this.getSelection = getSelection;
this.setSelection = setSelection;
this.cancelSelection = cancelSelection;
this.update = doUpdate;
var msie = (/msie ([\w.]+)/i.exec(ua)||[])[1],
opera = /opera/i.test(ua),
safari = /webkit/i.test(ua) && !/chrome/i.test(ua);
$p = $img;
while ($p.length) {
zIndex = max(zIndex,
!isNaN($p.css('z-index')) ? $p.css('z-index') : zIndex);
if ($p.css('position') == 'fixed')
position = 'fixed';
$p = $p.parent(':not(body)');
}
zIndex = options.zIndex || zIndex;
if (msie)
$img.attr('unselectable', 'on');
$.imgAreaSelect.keyPress = msie || safari ? 'keydown' : 'keypress';
if (opera)
$areaOpera = div().css({ width: '100%', height: '100%',
position: 'absolute', zIndex: zIndex + 2 || 2 });
$box.add($outer).css({ visibility: 'hidden', position: position,
overflow: 'hidden', zIndex: zIndex || '0' });
$box.css({ zIndex: zIndex + 2 || 2 });
$area.add($border).css({ position: 'absolute', fontSize: 0 });
img.complete || img.readyState == 'complete' || !$img.is('img') ?
imgLoad() : $img.one('load', imgLoad);
if (!imgLoaded && msie && msie >= 7)
img.src = img.src;
};
$.fn.imgAreaSelect = function (options) {
options = options || {};
this.each(function () {
if ($(this).data('imgAreaSelect')) {
if (options.remove) {
$(this).data('imgAreaSelect').remove();
$(this).removeData('imgAreaSelect');
}
else
$(this).data('imgAreaSelect').setOptions(options);
}
else if (!options.remove) {
if (options.enable === undefined && options.disable === undefined)
options.enable = true;
$(this).data('imgAreaSelect', new $.imgAreaSelect(this, options));
}
});
if (options.instance)
return $(this).data('imgAreaSelect');
return this;
};
})(jQuery);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -72,7 +72,7 @@ foreach ($this->DS as $KEY=>$VAL) {
$def[$defcnt] .= rrd::area("ag","#$green"); $def[$defcnt] .= rrd::area("ag","#$green");
$def[$defcnt] .= rrd::area("ay","#$yellow"); $def[$defcnt] .= rrd::area("ay","#$yellow");
$def[$defcnt] .= rrd::area("ar","#$red"); $def[$defcnt] .= rrd::area("ar","#$red");
$def[$defcnt] .= rrd::line1("fullscans","#000000", "Full table sacns"); $def[$defcnt] .= rrd::line1("fullscans","#000000", "Full table scans");
$def[$defcnt] .= rrd::gprint("fullscans",array("MAX", "AVERAGE", "LAST"),"%3.2lf"); $def[$defcnt] .= rrd::gprint("fullscans",array("MAX", "AVERAGE", "LAST"),"%3.2lf");
$defcnt++; $defcnt++;
} }
@ -359,6 +359,14 @@ foreach ($this->DS as $KEY=>$VAL) {
$defcnt++; $defcnt++;
} }
if(preg_match('/^sql_runtime$/', $VAL['NAME'])) {
$ds_name[$defcnt] = "SQL runtime";
$opt[$defcnt] = "--vertical-label \"Seconds\" --title \"Execution time of the SQL statement\" ";
$def[$defcnt] = "";
$def[$defcnt] .= rrd::def("runtime",$VAL['RRDFILE'],$VAL['DS'],"AVERAGE:reduce=LAST") ;
$def[$defcnt] .= rrd::area("runtime","#111111");
$def[$defcnt] .= rrd::gprint("runtime",array("LAST", "MAX", "AVERAGE"),"%3.2lf Seconds") ;
$defcnt++;
}
} }
?> ?>