/web/acc/phpsysinfo/images/Arch.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/web/acc/phpsysinfo/images/unknown.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
Property changes: |
Added: svn:mime-type |
+image/png |
\ No newline at end of property |
/web/acc/phpsysinfo/images/PLD.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/web/acc/phpsysinfo/images/Fedora.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
Property changes: |
Added: svn:mime-type |
+image/png |
\ No newline at end of property |
/web/acc/phpsysinfo/images/Ubuntu.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/web/acc/phpsysinfo/images/Trustix.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/web/acc/phpsysinfo/images/Cobalt.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
Property changes: |
Added: svn:mime-type |
+image/png |
\ No newline at end of property |
/web/acc/phpsysinfo/images/free-eos.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
Property changes: |
Added: svn:mime-type |
+image/png |
\ No newline at end of property |
/web/acc/phpsysinfo/images/Redhat.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
Property changes: |
Added: svn:mime-type |
+image/png |
\ No newline at end of property |
/web/acc/phpsysinfo/images/SunOS.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
Property changes: |
Added: svn:mime-type |
+image/png |
\ No newline at end of property |
/web/acc/phpsysinfo/images/xp.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/web/acc/phpsysinfo/images/FreeBSD.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
Property changes: |
Added: svn:mime-type |
+image/png |
\ No newline at end of property |
/web/acc/phpsysinfo/images/Slackware.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
Property changes: |
Added: svn:mime-type |
+image/png |
\ No newline at end of property |
/web/acc/phpsysinfo/images/Suse.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
Property changes: |
Added: svn:mime-type |
+image/png |
\ No newline at end of property |
/web/acc/phpsysinfo/images/NetBSD.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
Property changes: |
Added: svn:mime-type |
+image/png |
\ No newline at end of property |
/web/acc/phpsysinfo/images/Mandrake.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
Property changes: |
Added: svn:mime-type |
+image/png |
\ No newline at end of property |
/web/acc/phpsysinfo/images/Debian.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
Property changes: |
Added: svn:mime-type |
+image/png |
\ No newline at end of property |
/web/acc/phpsysinfo/images/Darwin.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
Property changes: |
Added: svn:mime-type |
+image/png |
\ No newline at end of property |
/web/acc/phpsysinfo/images/lfs.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
Property changes: |
Added: svn:mime-type |
+image/png |
\ No newline at end of property |
/web/acc/phpsysinfo/images/index.html |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
/phpsysinfo/images/Rubix.png |
---|
Property changes: |
Added: svn:mime-type |
+image/png |
\ No newline at end of property |
/web/acc/phpsysinfo/images/OpenBSD.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
Property changes: |
Added: svn:mime-type |
+image/png |
\ No newline at end of property |
/web/acc/phpsysinfo/images/CentOS.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
Property changes: |
Added: svn:mime-type |
+image/png |
\ No newline at end of property |
/web/acc/phpsysinfo/images/Gentoo.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
Property changes: |
Added: svn:mime-type |
+image/png |
\ No newline at end of property |
/web/acc/phpsysinfo/includes/xml/network.php |
---|
0,0 → 1,95 |
<?php |
/*************************************************************************** |
* Copyright (C) 2006 by phpSysInfo - A PHP System Information Script * |
* http://phpsysinfo.sourceforge.net/ * |
* * |
* This program is free software; you can redistribute it and/or modify * |
* it under the terms of the GNU General Public License as published by * |
* the Free Software Foundation; either version 2 of the License, or * |
* (at your option) any later version. * |
* * |
* This program is distributed in the hope that it will be useful, * |
* but WITHOUT ANY WARRANTY; without even the implied warranty of * |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * |
* GNU General Public License for more details. * |
* * |
* You should have received a copy of the GNU General Public License * |
* along with this program; if not, write to the * |
* Free Software Foundation, Inc., * |
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
***************************************************************************/ |
// $Id: network.php,v 1.15 2007/02/08 20:16:25 bigmichi1 Exp $ |
// |
// xml_network() |
// |
function xml_network () { |
global $sysinfo; |
$arrNet = $sysinfo->network(); |
$_text = " <Network>\n"; |
foreach( $arrNet as $strDev => $arrStats ) { |
$_text .= " <NetDevice>\n" |
. " <Name>" . htmlspecialchars( trim( $strDev ), ENT_QUOTES ) . "</Name>\n" |
. " <RxBytes>" . htmlspecialchars( $arrStats['rx_bytes'], ENT_QUOTES ) . "</RxBytes>\n" |
. " <TxBytes>" . htmlspecialchars( $arrStats['tx_bytes'], ENT_QUOTES ) . "</TxBytes>\n" |
. " <Errors>" . htmlspecialchars( $arrStats['errs'], ENT_QUOTES ) . "</Errors>\n" |
. " <Drops>" . htmlspecialchars( $arrStats['drop'], ENT_QUOTES ) . "</Drops>\n" |
. " </NetDevice>\n"; |
} |
$_text .= " </Network>\n"; |
return $_text; |
} |
// |
// html_network() |
// |
function html_network () { |
global $XPath; |
global $text; |
$textdir = direction(); |
$_text = "<table border=\"0\" width=\"100%\" align=\"center\">\n" |
. " <tr>\n" |
. " <td align=\"" . $textdir['left'] . "\" valign=\"top\"><font size=\"-1\"><b>" . $text['device'] . "</b></font></td>\n" |
. " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\"><b>" . $text['received'] . "</b></font></td>\n" |
. " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\"><b>" . $text['sent'] . "</b></font></td>\n" |
. " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\"><b>" . $text['errors'] . "</b></font></td>\n" |
. " </tr>\n"; |
for( $i = 1, $max = sizeof( $XPath->getDataParts( "/phpsysinfo/Network" ) ); $i < $max; $i++ ) { |
if( $XPath->match( "/phpsysinfo/Network/NetDevice[" . $i . "]/Name" ) ) { |
$_text .= " <tr>\n"; |
$_text .= " <td align=\"" . $textdir['left'] . "\" valign=\"top\"><font size=\"-1\">" . $XPath->getData( "/phpsysinfo/Network/NetDevice[" . $i . "]/Name" ) . "</font></td>\n"; |
$_text .= " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\">" . format_bytesize( $XPath->getData( "/phpsysinfo/Network/NetDevice[" . $i . "]/RxBytes" ) / 1024 ) . "</font></td>\n"; |
$_text .= " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\">" . format_bytesize( $XPath->getData( "/phpsysinfo/Network/NetDevice[" . $i . "]/TxBytes" ) / 1024 ) . "</font></td>\n"; |
$_text .= " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\">" . $XPath->getData( "/phpsysinfo/Network/NetDevice[" . $i . "]/Errors" ) . '/' . $XPath->getData( "/phpsysinfo/Network/NetDevice[" . $i . "]/Drops" ) . "</font></td>\n"; |
$_text .= " </tr>\n"; |
} |
} |
$_text .= "</table>"; |
return $_text; |
} |
function wml_network() { |
global $XPath; |
global $text; |
$_text = "<card id=\"network\" title=\"" . $text['netusage'] . "\">\n"; |
for( $i = 1, $max = sizeof( $XPath->getDataParts( "/phpsysinfo/Network" ) ); $i < $max; $i++ ) { |
if( $XPath->match( "/phpsysinfo/Network/NetDevice[" . $i . "]/Name" ) ) { |
$_text .= "<p>" . $text['device'] . ": " . $XPath->getData( "/phpsysinfo/Network/NetDevice[" . $i . "]/Name" ) . "<br/>\n" |
. "- U: " . format_bytesize( $XPath->getData("/phpsysinfo/Network/NetDevice[" . $i . "]/TxBytes" ) / 1024 ) . "<br/>\n" |
. "- D: " . format_bytesize( $XPath->getData("/phpsysinfo/Network/NetDevice[" . $i . "]/RxBytes" ) / 1024 ) . "<br/>\n" |
. "- E: " . $XPath->getData( "/phpsysinfo/Network/NetDevice[" . $i . "]/Errors" ) . '/' . $XPath->getData( "/phpsysinfo/Network/NetDevice[" . $i . "]/Drops" ) . "</p>\n"; |
} |
} |
$_text .= "</card>\n"; |
return $_text; |
} |
?> |
/web/acc/phpsysinfo/includes/xml/utilisateur.php.2 |
---|
0,0 → 1,87 |
<?php |
/*************************************************************************** |
* Copyright (C) 2006 by phpSysInfo - A PHP System Information Script * |
* http://phpsysinfo.sourceforge.net/ * |
* * |
* This program is free software; you can redistribute it and/or modify * |
* it under the terms of the GNU General Public License as published by * |
* the Free Software Foundation; either version 2 of the License, or * |
* (at your option) any later version. * |
* * |
* This program is distributed in the hope that it will be useful, * |
* but WITHOUT ANY WARRANTY; without even the implied warranty of * |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * |
* GNU General Public License for more details. * |
* * |
* You should have received a copy of the GNU General Public License * |
* along with this program; if not, write to the * |
* Free Software Foundation, Inc., * |
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
***************************************************************************/ |
// $Id: vitals.php,v 1.32 2007/02/18 18:59:54 bigmichi1 Exp $ |
// xml_vitals() |
function xml_utilisateur () { |
global $sysinfo; |
global $loadbar; |
global $show_vhostname; |
$strLoadavg = ""; |
$arrBuf = ( $loadbar ? $sysinfo->loadavg( $loadbar ) : $sysinfo->loadavg() ); |
foreach( $arrBuf['avg'] as $strValue) { |
$strLoadavg .= $strValue . ' '; |
} |
$_text = " <Portail>\n" |
. " <Utilisateur>" . htmlspecialchars( $show_vhostname ? $sysinfo->vhostname() : $sysinfo->chostname(), ENT_QUOTES ) . "</Utilisateur>\n" |
. " <Groupe>" . htmlspecialchars( $show_vhostname ? $sysinfo->vip_addr() : $sysinfo->ip_addr(), ENT_QUOTES ) . "</Groupe>\n"; |
$_text .= " </Portail>\n"; |
return $_text; |
} |
// html_vitals() |
function html_utilisateur () { |
global $webpath; |
global $XPath; |
global $text; |
$textdir = direction(); |
$scale_factor = 2; |
$strLoadbar = ""; |
$uptime = ""; |
if( $XPath->match( "/phpsysinfo/Portail/User" ) ) |
$strLoadbar = "<br>" . create_bargraph( $XPath->getData( "/phpsysinfo/Vitals/CPULoad" ), 100, $scale_factor ) . " " . $XPath->getData( "/phpsysinfo/Portail/User" ) . "%"; |
$_text = "<table border=\"0\" width=\"100%\" align=\"center\">\n" |
. " <tr>\n" |
. " <td valign=\"top\"><font size=\"-1\">" . $text['utilisateur'] . "</font></td>\n" |
. " <td><font size=\"-1\">" . $XPath->getData( "/phpsysinfo/Portail/Utilisateur" ) . "</font></td>\n" |
. " </tr>\n" |
. " <tr>\n" |
. " <td valign=\"top\"><font size=\"-1\">" . $text['groupe'] . "</font></td>\n" |
. " <td><font size=\"-1\">" . $XPath->getData( "/phpsysinfo/Portail/Groupe" ) . "</font></td>\n" |
. " </tr>\n" |
. "</table>\n"; |
return $_text; |
} |
function wml_utilisateur () { |
global $XPath; |
global $text; |
$_text = "<card id=\"vitals\" title=\"" . $text['vitals'] . "\">\n" |
. "<p>" . $text['hostname'] . ":<br/>\n" |
. "- " . $XPath->getData( "/phpsysinfo/Vitals/Hostname" ) . "</p>\n" |
. "<p>" . $text['ip'] . ":<br/>\n" |
. "- " . $XPath->getData( "/phpsysinfo/Vitals/IPAddr" ) . "</p>\n" |
. "</card>\n"; |
return $_text; |
} |
?> |
/web/acc/phpsysinfo/includes/xml/mbinfo.php |
---|
0,0 → 1,208 |
<?php |
/*************************************************************************** |
* Copyright (C) 2006 by phpSysInfo - A PHP System Information Script * |
* http://phpsysinfo.sourceforge.net/ * |
* * |
* This program is free software; you can redistribute it and/or modify * |
* it under the terms of the GNU General Public License as published by * |
* the Free Software Foundation; either version 2 of the License, or * |
* (at your option) any later version. * |
* * |
* This program is distributed in the hope that it will be useful, * |
* but WITHOUT ANY WARRANTY; without even the implied warranty of * |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * |
* GNU General Public License for more details. * |
* * |
* You should have received a copy of the GNU General Public License * |
* along with this program; if not, write to the * |
* Free Software Foundation, Inc., * |
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
***************************************************************************/ |
// $Id: mbinfo.php,v 1.20 2007/02/18 19:11:31 bigmichi1 Exp $ |
function xml_mbinfo() { |
global $text; |
global $mbinfo; |
$_text = ""; |
$arrBuff = $mbinfo->temperature(); |
$_text = " <MBinfo>\n"; |
if( sizeof($arrBuff ) > 0 ) { |
$_text .= " <Temperature>\n"; |
foreach( $arrBuff as $arrValue ) { |
$_text .= " <Item>\n"; |
$_text .= " <Label>" . htmlspecialchars( $arrValue['label'], ENT_QUOTES ) . "</Label>\n"; |
$_text .= " <Value>" . htmlspecialchars( $arrValue['value'], ENT_QUOTES ) . "</Value>\n"; |
$_text .= " <Limit>" . htmlspecialchars( $arrValue['limit'], ENT_QUOTES ) . "</Limit>\n"; |
$_text .= " </Item>\n"; |
} |
$_text .= " </Temperature>\n"; |
} |
$arrBuff = $mbinfo->fans(); |
if( sizeof( $arrBuff ) > 0 ) { |
$_text .= " <Fans>\n"; |
foreach( $arrBuff as $arrValue ) { |
$_text .= " <Item>\n"; |
$_text .= " <Label>" . htmlspecialchars( $arrValue['label'], ENT_QUOTES ) . "</Label>\n"; |
$_text .= " <Value>" . htmlspecialchars( $arrValue['value'], ENT_QUOTES ) . "</Value>\n"; |
$_text .= " <Min>" . htmlspecialchars( $arrValue['min'], ENT_QUOTES ) . "</Min>\n"; |
$_text .= " </Item>\n"; |
} |
$_text .= " </Fans>\n"; |
} |
$arrBuff = $mbinfo->voltage(); |
if( sizeof( $arrBuff ) > 0 ) { |
$_text .= " <Voltage>\n"; |
foreach( $arrBuff as $arrValue ) { |
$_text .= " <Item>\n"; |
$_text .= " <Label>" . htmlspecialchars( $arrValue['label'], ENT_QUOTES ) . "</Label>\n"; |
$_text .= " <Value>" . htmlspecialchars( $arrValue['value'], ENT_QUOTES ) . "</Value>\n"; |
$_text .= " <Min>" . htmlspecialchars( $arrValue['min'], ENT_QUOTES ) . "</Min>\n"; |
$_text .= " <Max>" . htmlspecialchars( $arrValue['max'], ENT_QUOTES ) . "</Max>\n"; |
$_text .= " </Item>\n"; |
} |
$_text .= " </Voltage>\n"; |
} |
$_text .= " </MBinfo>\n"; |
return $_text; |
} |
function html_mbtemp() { |
global $text; |
global $XPath; |
$textdir = direction(); |
$scale_factor = 2; |
$_text = " <tr>\n" |
. " <td><font size=\"-1\"><b>" . $text['s_label'] . "</b></font></td>\n" |
. " <td><font size=\"-1\"><b>" . $text['s_value'] . "</b></font></td>\n" |
. " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\"><b>" . $text['s_limit'] . "</b></font></td>\n" |
. " </tr>\n"; |
for( $i = 1, $max = sizeof( $XPath->getDataParts( "/phpsysinfo/MBinfo/Temperature" ) ); $i < $max; $i++ ) { |
$_text .= " <tr>\n" |
. " <td align=\"" . $textdir['left'] . "\" valign=\"top\"><font size=\"-1\">" . $XPath->getData( "/phpsysinfo/MBinfo/Temperature/Item[" . $i . "]/Label" ) . "</font></td>\n" |
. " <td align=\"" . $textdir['left'] . "\" valign=\"top\"><font size=\"-1\">"; |
if( $XPath->getData( "/phpsysinfo/MBinfo/Temperature/Item[" . $i . "]/Value" ) == 0) { |
$_text .= "Unknown - Not connected?"; |
} else { |
$_text .= create_bargraph( $XPath->getData( "/phpsysinfo/MBinfo/Temperature/Item[" . $i . "]/Value" ), $XPath->getData( "/phpsysinfo/MBinfo/Temperature/Item[" . $i . "]/Limit" ), $scale_factor ); |
} |
$_text .= temperature( $XPath->getData( "/phpsysinfo/MBinfo/Temperature/Item[" . $i . "]/Value" ) ) . "</font></td>\n" |
. " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\">" . temperature( $XPath->getData( "/phpsysinfo/MBinfo/Temperature/Item[" . $i . "]/Limit" ) ) . "</font></td>\n" |
. " </tr>\n"; |
} |
return $_text; |
} |
function html_mbfans() { |
global $text; |
global $XPath; |
$textdir = direction(); |
$booShowfans = false; |
$_text ="<table width=\"100%\">\n"; |
$_text .= " <tr>\n" |
. " <td><font size=\"-1\"><b>" . $text['s_label'] . "</b></font></td>\n" |
. " <td align=\"" . $textdir['right'] . "\"><font size=\"-1\"><b>" . $text['s_value'] . "</b></font></td>\n" |
. " <td align=\"" . $textdir['right'] . "\"><font size=\"-1\"><b>" . $text['s_min'] . "</b></font></td>\n" |
. " </tr>\n"; |
for( $i = 1, $max = sizeof( $XPath->getDataParts( "/phpsysinfo/MBinfo/Fans" ) ); $i < $max; $i++ ) { |
$_text .= " <tr>\n" |
. " <td align=\"" . $textdir['left'] . "\" valign=\"top\"><font size=\"-1\">" . $XPath->getData( "/phpsysinfo/MBinfo/Fans/Item[" . $i . "]/Label" ) . "</font></td>\n" |
. " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\">" . round( $XPath->getData( "/phpsysinfo/MBinfo/Fans/Item[" . $i . "]/Value" ) ) . " " . $text['rpm_mark'] . "</font></td>\n" |
. " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\">" . $XPath->getData( "/phpsysinfo/MBinfo/Fans/Item[" . $i . "]/Min" ) . " " . $text['rpm_mark'] . "</font></td>\n" |
. " </tr>\n"; |
if( round( $XPath->getData( "/phpsysinfo/MBinfo/Fans/Item[" . $i . "]/Value" ) ) > 0 ) { |
$booShowfans = true; |
} |
} |
$_text .= "</table>\n"; |
if( ! $booShowfans ) { |
$_text = ""; |
} |
return $_text; |
} |
function html_mbvoltage() { |
global $text; |
global $XPath; |
$textdir = direction(); |
$_text = "<table width=\"100%\">\n"; |
$_text .= " <tr>\n" |
. " <td><font size=\"-1\"><b>" . $text['s_label'] . "</b></font></td>\n" |
. " <td align=\"" . $textdir['right'] . "\"><font size=\"-1\"><b>" . $text['s_value'] . "</b></font></td>\n" |
. " <td align=\"" . $textdir['right'] . "\"><font size=\"-1\"><b>" . $text['s_min'] . "</b></font></td>\n" |
. " <td align=\"" . $textdir['right'] . "\"><font size=\"-1\"><b>" . $text['s_max'] . "</b></font></td>\n" |
. " </tr>\n"; |
for( $i = 1, $max = sizeof( $XPath->getDataParts( "/phpsysinfo/MBinfo/Voltage" ) ); $i < $max; $i++ ) { |
$_text .= " <tr>\n" |
. " <td align=\"" . $textdir['left'] . "\" valign=\"top\"><font size=\"-1\">" . $XPath->getData( "/phpsysinfo/MBinfo/Voltage/Item[" . $i . "]/Label" ) . "</font></td>\n" |
. " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\">" . $XPath->getData( "/phpsysinfo/MBinfo/Voltage/Item[" . $i . "]/Value" ) . " " . $text['voltage_mark'] . "</font></td>\n" |
. " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\">" . $XPath->getData( "/phpsysinfo/MBinfo/Voltage/Item[" . $i . "]/Min" ) . " " . $text['voltage_mark'] . "</font></td>\n" |
. " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\">" . $XPath->getData( "/phpsysinfo/MBinfo/Voltage/Item[" . $i . "]/Max" ) . " " . $text['voltage_mark'] . "</font></td>\n" |
. " </tr>\n"; |
} |
$_text .= "</table>\n"; |
return $_text; |
} |
function wml_mbtemp() { |
global $XPath; |
$_text = ""; |
for( $i = 1, $max = sizeof( $XPath->getDataParts( "/phpsysinfo/MBinfo/Temperature" ) ); $i < $max; $i++ ) { |
$_text .= "<p>" . $XPath->getData( "/phpsysinfo/MBinfo/Temperature/Item[" . $i . "]/Label" ) . ": "; |
if( $XPath->getData( "/phpsysinfo/MBinfo/Temperature/Item[" . $i . "]/Value" ) == 0 ) { |
$_text .= "Unknown - Not connected?</p>"; |
} else { |
$_text .= " " . str_replace( "°", "", temperature( $XPath->getData( "/phpsysinfo/MBinfo/Temperature/Item[" . $i . "]/Value" ) ) ) . "</p>\n"; |
} |
} |
return $_text; |
} |
function wml_mbfans() { |
global $text; |
global $XPath; |
$_text = "<card id=\"fans\" title=\"" . $text['fans'] . "\">\n"; |
for( $i = 1, $max = sizeof( $XPath->getDataParts( "/phpsysinfo/MBinfo/Fans" ) ); $i < $max; $i++ ) { |
$_text .= "<p>" . $XPath->getData( "/phpsysinfo/MBinfo/Fans/Item[" . $i . "]/Label" ) . ": " . round( $XPath->getData( "/phpsysinfo/MBinfo/Temperature/Item[" . $i . "]/Value" ) ) . " " . $text['rpm_mark'] . "</p>\n"; |
} |
$_text .= "</card>\n"; |
return $_text; |
} |
function wml_mbvoltage() { |
global $text; |
global $XPath; |
$_text = "<card id=\"volt\" title=\"" . $text['voltage'] . "\">\n"; |
for( $i = 1, $max = sizeof( $XPath->getDataParts( "/phpsysinfo/MBinfo/Voltage" ) ); $i < $max; $i++ ) { |
$_text .= "<p>" . $XPath->getData( "/phpsysinfo/MBinfo/Voltage/Item[" . $i . "]/Label" ) . ": " . $XPath->getData( "/phpsysinfo/MBinfo/Voltage/Item[" . $i . "]/Value" ) . " " . $text['voltage_mark'] . "</p>\n"; |
} |
$_text .= "</card>\n"; |
return $_text; |
} |
?> |
/web/acc/phpsysinfo/includes/xml/portail.php |
---|
0,0 → 1,183 |
<?php |
/*************************************************************************** |
* Copyright (C) 2006 by phpSysInfo - A PHP System Information Script * |
* http://phpsysinfo.sourceforge.net/ * |
* addons by 3abtux & Rexy for ALCASAR * |
* This program is free software; you can redistribute it and/or modify * |
* it under the terms of the GNU General Public License as published by * |
* the Free Software Foundation; either version 2 of the License, or * |
* (at your option) any later version. * |
* * |
* This program is distributed in the hope that it will be useful, * |
* but WITHOUT ANY WARRANTY; without even the implied warranty of * |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * |
* GNU General Public License for more details. * |
* * |
* You should have received a copy of the GNU General Public License * |
* along with this program; if not, write to the * |
* Free Software Foundation, Inc., * |
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
***************************************************************************/ |
// $Id: vitals.php,v 1.32 2007/02/18 18:59:54 bigmichi1 Exp $ |
// xml_utilisateur() |
function request ($texte) { |
$strResult = 0; |
// Déclaration des paramètres de connexion |
$host = "localhost"; |
$DB_USER = "radius"; |
$DB_RADIUS = "radius"; |
$radiuspwd = "X01WDItQ"; |
// Connexion au serveur |
mysql_connect($host, $DB_USER,$radiuspwd) or die("erreur de connexion au serveur"); |
mysql_select_db($DB_RADIUS) or die("erreur de connexion a la base de donnees"); |
// Creation et envoi de la requete |
if ($texte == 'user') {$query = "SELECT UserName FROM userinfo";} |
else { $query = "SELECT GroupName FROM radusergroup GROUP BY GroupName";} |
$result = mysql_query($query); |
// Recuperation des resultats |
$strResult = mysql_num_rows($result); |
// Deconnexion de la base de donnees |
mysql_close(); |
return $strResult; |
} |
function xml_portail () { |
global $sysinfo; |
$_text = " <Portail>\n" |
// . " <Utilisateur>" . htmlspecialchars( request('user'), ENT_QUOTES ) . "</Utilisateur>\n" |
. " <Utilisateur>" . "</Utilisateur>\n" |
. " <Groupe>" . "</Groupe>\n"; |
// . " <Groupe>" . htmlspecialchars( trim( request('group') ), ENT_QUOTES ) . "</Groupe>\n"; |
$_text .= " </Portail>\n"; |
return $_text; |
} |
// Fonction de test de connectivité internet |
function internetTest(){ |
$host = "www.google.fr"; |
$port = "80"; |
//var $num; //non utilisé |
//var $error; //non utilisé |
if (! $sock = @fsockopen($host, $port, $num, $error, 5)) { |
return false; |
} else { |
fclose($sock); |
return true; |
} |
} |
// Fonction de test du filtrage |
function filtrageTest($file, $search_regex){ |
$pointeur = fopen($file,"r"); |
$result = false; |
if ($pointeur) |
{ |
while (!feof($pointeur)) |
{ |
$ligne = fgets($pointeur); |
if (preg_match($search_regex, $ligne, $r)) |
{ |
$result = true; |
break; |
} |
} |
} |
fclose($pointeur); |
return $result; |
} |
// html_portail() |
function html_portail () { |
global $webpath; |
global $XPath; |
global $text; |
$file_version = "/var/www/html/VERSION"; |
$handle = fopen ($file_version, "r"); |
$INSTALLEDVERSION = fread ($handle, filesize ($file_version)); |
fclose ($handle); |
$file_bl = "/var/www/html/VERSION-BL"; |
$handle = fopen ($file_bl, "r"); |
$VERSIONBL = fread ($handle, filesize ($file_bl)); |
fclose ($handle); |
$nbr_user = request ('user'); |
$nbr_grp = request ('group'); |
$nbr_user_online = exec ("sudo /usr/sbin/chilli_query list | cut -d\" \" -f5 | grep \"1\" | wc -l"); |
if (filtrageTest("/usr/local/bin/alcasar-iptables.sh", "/^FILTERING=\"yes\"/")){ |
$network_filter_status = $text['enable'];} |
else { $network_filter_status = $text['disable'];} |
if (filtrageTest("/etc/dansguardian/dansguardian.conf","/^reportinglevel = 3/")){ |
$web_filter_status = $text['enable'];} |
else { $web_filter_status = $text['disable'];} |
if (filtrageTest("/etc/dansguardian/dansguardian.conf","/^proxyport = 8090/")){ |
$web_antivir_status = $text['enable'];} |
else { $web_antivir_status = $text['disable'];} |
if (InternetTest()){ |
$internet_status = "<img src='/images/state_ok.gif'>".$text['enable']; |
$version = dns_get_record("version.alcasar.info",DNS_TXT); |
$AVAILABLEDVERSION = $version[0]['txt']; |
} else { |
$internet_status = "<img src='/images/state_error.gif'>".$text['disable']; |
$AVAILABLEDVERSION = "-"; |
} |
$_text = "<table border=\"0\" width=\"100%\" align=\"center\">\n" |
. " <tr>\n" |
. " <td valign=\"top\"><font size=\"-1\">" . $text['portail-version'] . "</font></td>\n" |
. " <td><font size=\"-1\">" . $INSTALLEDVERSION . "</font></td>\n" |
. " </tr>\n" |
. " <tr>\n" |
. " <td valign=\"top\"><font size=\"-1\">" . $text['portail-disp'] . "</font></td>\n" |
. " <td><font size=\"-1\">" . $AVAILABLEDVERSION . "</font></td>\n" |
. " </tr>\n" |
. " <tr>\n" |
. " <td valign=\"top\"><font size=\"-1\">" . $text['utilisateur'] . "</font></td>\n" |
. " <td><font size=\"-1\">" . $nbr_user_online . " / " . $nbr_user . "</font></td>\n" |
. " </tr>\n" |
. " <tr>\n" |
. " <td valign=\"top\"><font size=\"-1\">" . $text['groupe'] . "</font></td>\n" |
. " <td><font size=\"-1\">" . $nbr_grp . "</font></td>\n" |
. " </tr>\n" |
. " <tr>\n" |
. " <td valign=\"top\"><font size=\"-1\">" . $text['net_filter'] . "</font></td>\n" |
. " <td><font size=\"-1\">" . $network_filter_status . "</font></td>\n" |
. " </tr>\n" |
. " <tr>\n" |
. " <td valign=\"top\"><font size=\"-1\">" . $text['web_filter'] . "</font></td>\n" |
. " <td><font size=\"-1\">antivirus : " . $web_antivir_status . ", domain/url : " . $web_filter_status . "</font></td>\n" |
. " </tr>\n" |
. " <tr>\n" |
. " <td valign=\"top\"><font size=\"-1\">" . $text['bl-version'] . "</font></td>\n" |
. " <td><font size=\"-1\">" . $VERSIONBL . "</font></td>\n" |
. " </tr>\n" |
. " <tr>\n" |
. " <td valign=\"top\"><font size=\"-1\">" . $text['internet_link'] . "</font></td>\n" |
. " <td><font size=\"-1\">" . $internet_status . "</font></td>\n" |
. " </tr>\n" |
. "</table>\n"; |
return $_text; |
} |
function wml_portail () { |
global $XPath; |
global $text; |
$_text = "<card id=\"vitals\" title=\"" . $text['vitals'] . "\">\n" |
. "<p>" . $text['hostname'] . ":<br/>\n" |
. "- " . $XPath->getData( "/phpsysinfo/Vitals/Hostname" ) . "</p>\n" |
. "<p>" . $text['ip'] . ":<br/>\n" |
. "- " . $XPath->getData( "/phpsysinfo/Vitals/IPAddr" ) . "</p>\n" |
. "<p>" . $text['kversion'] . ":<br/>\n" |
. "- " . $XPath->getData( "/phpsysinfo/Vitals/Kernel" ) . "</p>\n" |
. "<p>" . $text['uptime'] . ":<br/>\n" |
. "- " . uptime( $XPath->getData( "/phpsysinfo/Vitals/Uptime" ) ) . "</p>\n" |
. "<p>" . $text['users'] . ":<br/>" |
. "- " . $XPath->getData( "/phpsysinfo/Vitals/Users" ) . "</p>\n" |
. "<p>" . $text['loadavg'] . ":<br/>" |
. "- " . $XPath->getData( "/phpsysinfo/Vitals/LoadAvg" ) . "</p>\n" |
. "</card>\n"; |
return $_text; |
} |
?> |
/web/acc/phpsysinfo/includes/xml/hardware.php |
---|
0,0 → 1,224 |
<?php |
/*************************************************************************** |
* Copyright (C) 2006 by phpSysInfo - A PHP System Information Script * |
* http://phpsysinfo.sourceforge.net/ * |
* * |
* This program is free software; you can redistribute it and/or modify * |
* it under the terms of the GNU General Public License as published by * |
* the Free Software Foundation; either version 2 of the License, or * |
* (at your option) any later version. * |
* * |
* This program is distributed in the hope that it will be useful, * |
* but WITHOUT ANY WARRANTY; without even the implied warranty of * |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * |
* GNU General Public License for more details. * |
* * |
* You should have received a copy of the GNU General Public License * |
* along with this program; if not, write to the * |
* Free Software Foundation, Inc., * |
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
***************************************************************************/ |
// $Id: hardware.php,v 1.36 2007/01/21 11:13:51 bigmichi1 Exp $ |
function xml_hardware() { |
global $sysinfo; |
global $text; |
$strPcidevices = ""; $strIdedevices = ""; $strUsbdevices = ""; $strScsidevices = ""; |
$arrSys = $sysinfo->cpu_info(); |
$arrBuf = finddups( $sysinfo->pci() ); |
if( count( $arrBuf ) ) { |
for( $i = 0, $max = sizeof($arrBuf); $i < $max; $i++ ) { |
if( $arrBuf[$i] ) { |
$strPcidevices .= " <Device><Name>" . htmlspecialchars( chop( $arrBuf[$i] ), ENT_QUOTES ) . "</Name></Device>\n"; |
} |
} |
} |
$arrBuf = $sysinfo->ide(); |
if( count( $arrBuf ) ) { |
foreach( $arrBuf as $strKey => $arrValue ) { |
$strIdedevices .= " <Device>\n<Name>" . htmlspecialchars( $strKey . ': ' . $arrValue['model'], ENT_QUOTES ) . "</Name>\n"; |
if( isset( $arrValue['capacity'] ) ) { |
$strIdedevices .= '<Capacity>' . htmlspecialchars( $arrValue['capacity'], ENT_QUOTES ) . '</Capacity>'; |
} |
$strIdedevices .= "</Device>\n"; |
} |
} |
$arrBuf = $sysinfo->scsi(); |
if( count( $arrBuf ) ) { |
foreach( $arrBuf as $strKey => $arrValue ) { |
$strScsidevices .= "<Device>\n"; |
if( $strKey >= '0' && $strKey <= '9' ) { |
$strScsidevices .= " <Name>" . htmlspecialchars( $arrValue['model'], ENT_QUOTES ) . "</Name>\n"; |
} else { |
$strScsidevices .= " <Name>" . htmlspecialchars( $strKey . ': ' . $arrValue['model'], ENT_QUOTES ) . "</Name>\n"; |
} |
if( isset( $arrrValue['capacity'])) { |
$strScsidevices .= '<Capacity>' . htmlspecialchars( $arrValue['capacity'], ENT_QUOTES ) . '</Capacity>'; |
} |
$strScsidevices .= "</Device>\n"; |
} |
} |
$arrBuf = finddups( $sysinfo->usb() ); |
if( count( $arrBuf ) ) { |
for( $i = 0, $max = sizeof( $arrBuf ); $i < $max; $i++ ) { |
if( $arrBuf[$i] ) { |
$strUsbdevices .= " <Device><Name>" . htmlspecialchars( chop( $arrBuf[$i] ), ENT_QUOTES ) . "</Name></Device>\n"; |
} |
} |
} |
$_text = " <Hardware>\n"; |
$_text .= " <CPU>\n"; |
if( isset( $arrSys['cpus'] ) ) { |
$_text .= " <Number>" . htmlspecialchars( $arrSys['cpus'], ENT_QUOTES ) . "</Number>\n"; |
} |
if( isset( $arrSys['model'] ) ) { |
$_text .= " <Model>" . htmlspecialchars( $arrSys['model'], ENT_QUOTES ) . "</Model>\n"; |
} |
if( isset( $arrSys['temp'] ) ) { |
$_text .= " <Cputemp>" . htmlspecialchars( $arrSys['temp'], ENT_QUOTES ) . "</Cputemp>\n"; |
} |
if( isset( $arrSys['cpuspeed'] ) ) { |
$_text .= " <Cpuspeed>" . htmlspecialchars( $arrSys['cpuspeed'], ENT_QUOTES ) . "</Cpuspeed>\n"; |
} |
if( isset( $arrSys['busspeed'] ) ) { |
$_text .= " <Busspeed>" . htmlspecialchars( $arrSys['busspeed'], ENT_QUOTES ) . "</Busspeed>\n"; |
} |
if( isset( $arrSys['cache'] ) ) { |
$_text .= " <Cache>" . htmlspecialchars( $arrSys['cache'], ENT_QUOTES ) . "</Cache>\n"; |
} |
if( isset( $arrSys['bogomips'] ) ) { |
$_text .= " <Bogomips>" . htmlspecialchars( $arrSys['bogomips'], ENT_QUOTES ) . "</Bogomips>\n"; |
} |
$_text .= " </CPU>\n"; |
$_text .= " <PCI>\n"; |
if( $strPcidevices) { |
$_text .= $strPcidevices; |
} |
$_text .= " </PCI>\n"; |
$_text .= " <IDE>\n"; |
if( $strIdedevices) { |
$_text .= $strIdedevices; |
} |
$_text .= " </IDE>\n"; |
$_text .= " <SCSI>\n"; |
if( $strScsidevices) { |
$_text .= $strScsidevices; |
} |
$_text .= " </SCSI>\n"; |
$_text .= " <USB>\n"; |
if($strUsbdevices) { |
$_text .= $strUsbdevices; |
} |
$_text .= " </USB>\n"; |
$_text .= " </Hardware>\n"; |
return $_text; |
} |
function html_hardware () { |
global $XPath; |
global $text; |
$strPcidevices = ""; $strIdedevices = ""; $strUsbdevices = ""; $strScsidevices = ""; |
$textdir = direction(); |
for( $i = 1, $max = sizeof( $XPath->getDataParts( "/phpsysinfo/Hardware/PCI" ) ); $i < $max; $i++ ) { |
if( $XPath->match( "/phpsysinfo/Hardware/PCI/Device[" . $i . "]/Name" ) ) { |
$strPcidevices .= "<tr><td valign=\"top\"><font size=\"-1\">-</font></td><td><font size=\"-1\">" . $XPath->getData( "/phpsysinfo/Hardware/PCI/Device[" . $i . "]/Name" ) . "</font></td></tr>"; |
} |
} |
for( $i = 1, $max = sizeof( $XPath->getDataParts( "/phpsysinfo/Hardware/IDE" ) ); $i < $max; $i++ ) { |
if( $XPath->match( "/phpsysinfo/Hardware/IDE/Device[" . $i . "]" ) ) { |
$strIdedevices .= "<tr><td valign=\"top\"><font size=\"-1\">-</font></td><td><font size=\"-1\">" . $XPath->getData( "/phpsysinfo/Hardware/IDE/Device[" . $i . "]/Name" ); |
if( $XPath->match( "/phpsysinfo/Hardware/IDE/Device[" . $i . "]/Capacity" ) ) { |
$strIdedevices .= " (" . $text['capacity'] . ": " . format_bytesize( $XPath->getData( "/phpsysinfo/Hardware/IDE/Device[" . $i . "]/Capacity" ) / 2 ) . ")"; |
} |
$strIdedevices .= "</font></td></tr>"; |
} |
} |
for( $i = 1, $max = sizeof( $XPath->getDataParts( "/phpsysinfo/Hardware/SCSI" ) ); $i < $max; $i++ ) { |
if( $XPath->match( "/phpsysinfo/Hardware/SCSI/Device[" . $i . "]" ) ) { |
$strScsidevices .= "<tr><td valign=\"top\"><font size=\"-1\">-</font></td><td><font size=\"-1\">" . $XPath->getData( "/phpsysinfo/Hardware/SCSI/Device[" . $i . "]/Name" ); |
if( $XPath->match( "/phpsysinfo/Hardware/SCSI/Device[" . $i . "]/Capacity" ) ) { |
$strScsidevices .= " (" . $text['capacity'] . ": " . format_bytesize( $XPath->getData( "/phpsysinfo/Hardware/SCSI/Device[" . $i . "]/Capacity" ) / 2 ) . ")"; |
} |
$strScsidevices .= "</font></td></tr>"; |
} |
} |
for( $i = 1, $max = sizeof( $XPath->getDataParts( "/phpsysinfo/Hardware/USB" ) ); $i < $max; $i++ ) { |
if( $XPath->match( "/phpsysinfo/Hardware/USB/Device[" . $i . "]/Name" )) { |
$strUsbdevices .= "<tr><td valign=\"top\"><font size=\"-1\">-</font></td><td><font size=\"-1\">" . $XPath->getData( "/phpsysinfo/Hardware/USB/Device[" . $i . "]/Name" ) . "</font></td></tr>"; |
} |
} |
$_text = "<table border=\"0\" width=\"100%\" align=\"center\">\n"; |
if( $XPath->match( "/phpsysinfo/Hardware/CPU/Number" ) ) { |
$_text .= " <tr>\n <td valign=\"top\"><font size=\"-1\">" . $text['numcpu'] . "</font></td>\n <td><font size=\"-1\">" . $XPath->getData( "/phpsysinfo/Hardware/CPU/Number" ) . "</font></td>\n </tr>\n"; |
} |
if( $XPath->match( "/phpsysinfo/Hardware/CPU/Model" ) ) { |
$_text .= " <tr>\n <td valign=\"top\"><font size=\"-1\">" . $text['cpumodel'] . "</font></td>\n <td><font size=\"-1\">" . $XPath->getData( "/phpsysinfo/Hardware/CPU/Model" ); |
if( $XPath->match( "/phpsysinfo/Hardware/CPU/Cputemp" ) ) { |
$_text .= " @ " . temperature( $XPath->getData( "/phpsysinfo/Hardware/CPU/Cputemp" ) ); |
} |
$_text .= "</font></td>\n </tr>\n"; |
} |
if( $XPath->match( "/phpsysinfo/Hardware/CPU/Cpuspeed" ) ) { |
$_text .= " <tr>\n <td valign=\"top\"><font size=\"-1\">" . $text['cpuspeed'] . "</font></td>\n <td><font size=\"-1\">" . format_speed( $XPath->getData( "/phpsysinfo/Hardware/CPU/Cpuspeed" ) ) . "</font></td>\n </tr>\n"; |
} |
if( $XPath->match( "/phpsysinfo/Hardware/CPU/Busspeed" ) ) { |
$_text .= " <tr>\n <td valign=\"top\"><font size=\"-1\">" . $text['busspeed'] . "</font></td>\n <td><font size=\"-1\">" . format_speed( $XPath->getData( "/phpsysinfo/Hardware/CPU/Busspeed" ) ) . "</font></td>\n </tr>\n"; |
} |
if( $XPath->match("/phpsysinfo/Hardware/CPU/Cache" ) ) { |
$_text .= " <tr>\n <td valign=\"top\"><font size=\"-1\">" . $text['cache'] . "</font></td>\n <td><font size=\"-1\">" . format_bytesize( $XPath->getData( "/phpsysinfo/Hardware/CPU/Cache" ) ) . "</font></td>\n </tr>\n"; |
} |
if( $XPath->match( "/phpsysinfo/Hardware/CPU/Bogomips" ) ) { |
$_text .= " <tr>\n <td valign=\"top\"><font size=\"-1\">" . $text['bogomips'] . "</font></td>\n <td><font size=\"-1\">" . $XPath->getData( "/phpsysinfo/Hardware/CPU/Bogomips" ) . "</font></td>\n </tr>\n"; |
} |
$_text .= " <tr>\n <td valign=\"top\"><font size=\"-1\">" . $text['pci'] . "</font></td>\n <td>"; |
if( $strPcidevices) { |
$_text .= "<table>" . $strPcidevices . "</table>"; |
} else { |
$_text .= "<font size=\"-1\"><i>" . $text['none'] . "</i></font>"; |
} |
$_text .= "</td>\n </tr>\n"; |
$_text .= " <tr>\n <td valign=\"top\"><font size=\"-1\">" . $text['ide'] . "</font></td>\n <td>"; |
if( $strIdedevices ) { |
$_text .= "<table>" . $strIdedevices . "</table>"; |
} else { |
$_text .= "<font size=\"-1\"><i>" . $text['none'] . "</i></font>"; |
} |
$_text .= "</td>\n </tr>\n"; |
$_text .= " <tr>\n <td valign=\"top\"><font size=\"-1\">" . $text['scsi'] . "</font></td>\n <td>"; |
if( $strScsidevices ) { |
$_text .= "<table>" . $strScsidevices . "</table></td>\n </tr>"; |
} else { |
$_text .= "<font size=\"-1\"><i>" . $text['none'] . "</i></font>"; |
} |
$_text .= " <tr>\n <td valign=\"top\"><font size=\"-1\">" . $text['usb'] . "</font></td>\n <td>"; |
if( $strUsbdevices) { |
$_text .= "<table>" . $strUsbdevices . "</table></td>\n </tr>"; |
} else { |
$_text .= "<font size=\"-1\"><i>" . $text['none'] . "</i></font>"; |
} |
$_text .= "</table>"; |
return $_text; |
} |
?> |
/web/acc/phpsysinfo/includes/xml/vitals.php |
---|
0,0 → 1,124 |
<?php |
/*************************************************************************** |
* Copyright (C) 2006 by phpSysInfo - A PHP System Information Script * |
* http://phpsysinfo.sourceforge.net/ * |
* * |
* This program is free software; you can redistribute it and/or modify * |
* it under the terms of the GNU General Public License as published by * |
* the Free Software Foundation; either version 2 of the License, or * |
* (at your option) any later version. * |
* * |
* This program is distributed in the hope that it will be useful, * |
* but WITHOUT ANY WARRANTY; without even the implied warranty of * |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * |
* GNU General Public License for more details. * |
* * |
* You should have received a copy of the GNU General Public License * |
* along with this program; if not, write to the * |
* Free Software Foundation, Inc., * |
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
***************************************************************************/ |
// $Id: vitals.php,v 1.32 2007/02/18 18:59:54 bigmichi1 Exp $ |
// xml_vitals() |
function xml_vitals () { |
global $sysinfo; |
global $loadbar; |
global $show_vhostname; |
$strLoadavg = ""; |
$arrBuf = ( $loadbar ? $sysinfo->loadavg( $loadbar ) : $sysinfo->loadavg() ); |
foreach( $arrBuf['avg'] as $strValue) { |
$strLoadavg .= $strValue . ' '; |
} |
$_text = " <Vitals>\n" |
. " <Hostname>" . htmlspecialchars( $show_vhostname ? $sysinfo->vhostname() : $sysinfo->chostname(), ENT_QUOTES ) . "</Hostname>\n" |
. " <IPAddr>" . htmlspecialchars( $show_vhostname ? $sysinfo->vip_addr() : $sysinfo->ip_addr(), ENT_QUOTES ) . "</IPAddr>\n" |
. " <Kernel>" . htmlspecialchars( $sysinfo->kernel(), ENT_QUOTES ) . "</Kernel>\n" |
. " <Distro>" . htmlspecialchars( $sysinfo->distro(), ENT_QUOTES ) . "</Distro>\n" |
. " <Distroicon>" . htmlspecialchars( $sysinfo->distroicon(), ENT_QUOTES ) . "</Distroicon>\n" |
. " <Uptime>" . htmlspecialchars( $sysinfo->uptime(), ENT_QUOTES ) . "</Uptime>\n" |
. " <Users>" . htmlspecialchars( $sysinfo->users(), ENT_QUOTES ) . "</Users>\n" |
. " <LoadAvg>" . htmlspecialchars( trim( $strLoadavg ), ENT_QUOTES ) . "</LoadAvg>\n"; |
if( isset( $arrBuf['cpupercent'] ) ) { |
$_text .= " <CPULoad>" . htmlspecialchars( round( $arrBuf['cpupercent'], 2 ), ENT_QUOTES ) . "</CPULoad>"; |
} |
$_text .= " </Vitals>\n"; |
return $_text; |
} |
// html_vitals() |
function html_vitals () { |
global $webpath; |
global $XPath; |
global $text; |
$textdir = direction(); |
$scale_factor = 2; |
$strLoadbar = ""; |
$uptime = ""; |
if( $XPath->match( "/phpsysinfo/Vitals/CPULoad" ) ) |
$strLoadbar = "<br>" . create_bargraph( $XPath->getData( "/phpsysinfo/Vitals/CPULoad" ), 100, $scale_factor ) . " " . $XPath->getData( "/phpsysinfo/Vitals/CPULoad" ) . "%"; |
$_text = "<table border=\"0\" width=\"100%\" align=\"center\">\n" |
. " <tr>\n" |
. " <td valign=\"top\"><font size=\"-1\">" . $text['hostname'] . "</font></td>\n" |
. " <td><font size=\"-1\">" . $XPath->getData( "/phpsysinfo/Vitals/Hostname" ) . "</font></td>\n" |
. " </tr>\n" |
// . " <tr>\n" |
// . " <td valign=\"top\"><font size=\"-1\">" . $text['ip'] . "</font></td>\n" |
// . " <td><font size=\"-1\">" . $XPath->getData( "/phpsysinfo/Vitals/IPAddr" ) . "</font></td>\n" |
// . " </tr>\n" |
. " <tr>\n" |
. " <td valign=\"top\"><font size=\"-1\">" . $text['kversion'] . "</font></td>\n" |
. " <td><font size=\"-1\">" . $XPath->getData( "/phpsysinfo/Vitals/Kernel" ) . "</font></td>\n" |
. " </tr>\n" |
. " <tr>\n" |
. " <td valign=\"top\"><font size=\"-1\">" . $text['dversion'] . "</font></td>\n" |
. " <td><img width=\"16\" height=\"16\" alt=\"\" src=\"" . $webpath . "images/" . $XPath->getData( "/phpsysinfo/Vitals/Distroicon" ) . "\"> <font size=\"-1\">" . $XPath->getData("/phpsysinfo/Vitals/Distro") . "</font></td>\n" |
. " </tr>\n" |
. " <tr>\n" |
. " <td valign=\"top\"><font size=\"-1\">" . $text['uptime'] . "</font></td>\n" |
. " <td><font size=\"-1\">" . uptime( $XPath->getData( "/phpsysinfo/Vitals/Uptime" ) ) . "</font></td>\n" |
. " </tr>\n" |
. " <tr>\n" |
. " <td valign=\"top\"><font size=\"-1\">" . $text['users'] . "</font></td>\n" |
. " <td><font size=\"-1\">" . $XPath->getData( "/phpsysinfo/Vitals/Users" ) . "</font></td>\n" |
. " </tr>\n" |
. " <tr>\n" |
. " <td valign=\"top\"><font size=\"-1\">" . $text['loadavg'] . "</font></td>\n" |
. " <td><font size=\"-1\">" . $XPath->getData( "/phpsysinfo/Vitals/LoadAvg" ) . $strLoadbar . "</font></td>\n" |
. " </tr>\n" |
. "</table>\n"; |
return $_text; |
} |
function wml_vitals () { |
global $XPath; |
global $text; |
$_text = "<card id=\"vitals\" title=\"" . $text['vitals'] . "\">\n" |
. "<p>" . $text['hostname'] . ":<br/>\n" |
. "- " . $XPath->getData( "/phpsysinfo/Vitals/Hostname" ) . "</p>\n" |
. "<p>" . $text['ip'] . ":<br/>\n" |
. "- " . $XPath->getData( "/phpsysinfo/Vitals/IPAddr" ) . "</p>\n" |
. "<p>" . $text['kversion'] . ":<br/>\n" |
. "- " . $XPath->getData( "/phpsysinfo/Vitals/Kernel" ) . "</p>\n" |
. "<p>" . $text['uptime'] . ":<br/>\n" |
. "- " . uptime( $XPath->getData( "/phpsysinfo/Vitals/Uptime" ) ) . "</p>\n" |
. "<p>" . $text['users'] . ":<br/>" |
. "- " . $XPath->getData( "/phpsysinfo/Vitals/Users" ) . "</p>\n" |
. "<p>" . $text['loadavg'] . ":<br/>" |
. "- " . $XPath->getData( "/phpsysinfo/Vitals/LoadAvg" ) . "</p>\n" |
. "</card>\n"; |
return $_text; |
} |
?> |
/web/acc/phpsysinfo/includes/xml/index.html |
---|
--- phpsysinfo/includes/xml/hddtemp.php (nonexistent) |
+++ phpsysinfo/includes/xml/hddtemp.php (revision 325) |
@@ -0,0 +1,90 @@ |
+<?php |
+/*************************************************************************** |
+ * Copyright (C) 2006 by phpSysInfo - A PHP System Information Script * |
+ * http://phpsysinfo.sourceforge.net/ * |
+ * * |
+ * This program is free software; you can redistribute it and/or modify * |
+ * it under the terms of the GNU General Public License as published by * |
+ * the Free Software Foundation; either version 2 of the License, or * |
+ * (at your option) any later version. * |
+ * * |
+ * This program is distributed in the hope that it will be useful, * |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of * |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * |
+ * GNU General Public License for more details. * |
+ * * |
+ * You should have received a copy of the GNU General Public License * |
+ * along with this program; if not, write to the * |
+ * Free Software Foundation, Inc., * |
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
+ ***************************************************************************/ |
+ |
+// $Id: hddtemp.php,v 1.13 2007/02/08 20:16:25 bigmichi1 Exp $ |
+ |
+function xml_hddtemp() { |
+ global $hddtemp_avail, $hddtemp; |
+ $arrBuf = $hddtemp->temperature( $hddtemp_avail ); |
+ |
+ $_text = " <HDDTemp>\n"; |
+ for( $i = 0, $max = sizeof( $arrBuf ); $i < $max; $i++ ) { |
+ $_text .= " <Item>\n"; |
+ $_text .= " <Label>" . htmlspecialchars( $arrBuf[$i]['label'], ENT_QUOTES ) . "</Label>\n"; |
+ $_text .= " <Value>" . htmlspecialchars( $arrBuf[$i]['value'], ENT_QUOTES ) . "</Value>\n"; |
+ $_text .= " <Model>" . htmlspecialchars( $arrBuf[$i]['model'], ENT_QUOTES ) . "</Model>\n"; |
+ $_text .= " </Item>\n"; |
+ } |
+ $_text .= " </HDDTemp>\n"; |
+ |
+ return $_text; |
+} |
+ |
+function html_hddtemp() { |
+ global $XPath; |
+ global $text; |
+ global $sensor_program; |
+ |
+ $textdir = direction(); |
+ $scale_factor = 2; |
+ $_text = ""; |
+ $maxvalue = "+60"; |
+ |
+ if( $XPath->match( "/phpsysinfo/HDDTemp" ) ) { |
+ for( $i = 1, $max = sizeof( $XPath->getDataParts( "/phpsysinfo/HDDTemp" ) ); $i < $max; $i++ ) { |
+ if( $XPath->getData( "/phpsysinfo/HDDTemp/Item[" . $i . "]/Value" ) != 0 ) { |
+ $_text .= " <tr>\n"; |
+ $_text .= " <td align=\"" . $textdir['left'] . "\" valign=\"top\"><font size=\"-1\">". $XPath->getData( "/phpsysinfo/HDDTemp/Item[" . $i . "]/Model" ) . "</font></td>\n"; |
+ $_text .= " <td align=\"" . $textdir['left'] . "\" valign=\"top\" nowrap><font size=\"-1\">"; |
+ $_text .= create_bargraph( $XPath->getData( "/phpsysinfo/HDDTemp/Item[" . $i . "]/Value" ), $maxvalue, $scale_factor ); |
+ $_text .= temperature( $XPath->getData( "/phpsysinfo/HDDTemp/Item[" . $i . "]/Value" ) ) . "</font></td>\n"; |
+ $_text .= " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\">" . temperature( $maxvalue ) . "</font></td></tr>\n"; |
+ } |
+ } |
+ } |
+ if( strlen( $_text ) > 0 && empty( $sensor_program ) ) { |
+ $_text = " <tr>\n" |
+ . " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\"><b>" . $text['s_label'] . "</b></font></td>\n" |
+ . " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\"><b>" . $text['s_value'] . "</b></font></td>\n" |
+ . " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\"><b>" . $text['s_limit'] . "</b></font></td>\n" |
+ . " </tr>" . $_text; |
+ } |
+ |
+ return $_text; |
+} |
+ |
+function wml_hddtemp() { |
+ global $XPath; |
+ global $text; |
+ |
+ $_text = ""; |
+ |
+ if( $XPath->match( "/phpsysinfo/HDDTemp" ) ) { |
+ for( $i = 1; $i < sizeof( $XPath->getDataParts( "/phpsysinfo/HDDTemp" ) ); $i++ ) { |
+ if( $XPath->getData( "/phpsysinfo/HDDTemp/Item[" . $i . "]/Value") != 0 ) { |
+ $_text .= "<p>" . $XPath->getData( "/phpsysinfo/HDDTemp/Item[" . $i . "]/Model" ) . ": " . str_replace( "°", "", temperature( $XPath->getData( "/phpsysinfo/HDDTemp/Item[" . $i . "]/Value" ) ) ) . "</p>\n"; |
+ } |
+ } |
+ } |
+ |
+ return $_text; |
+} |
+?> |
/web/acc/phpsysinfo/includes/xml/filesystems.php |
---|
0,0 → 1,164 |
<?php |
/*************************************************************************** |
* Copyright (C) 2006 by phpSysInfo - A PHP System Information Script * |
* http://phpsysinfo.sourceforge.net/ * |
* * |
* This program is free software; you can redistribute it and/or modify * |
* it under the terms of the GNU General Public License as published by * |
* the Free Software Foundation; either version 2 of the License, or * |
* (at your option) any later version. * |
* * |
* This program is distributed in the hope that it will be useful, * |
* but WITHOUT ANY WARRANTY; without even the implied warranty of * |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * |
* GNU General Public License for more details. * |
* * |
* You should have received a copy of the GNU General Public License * |
* along with this program; if not, write to the * |
* Free Software Foundation, Inc., * |
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
***************************************************************************/ |
// $Id: filesystems.php,v 1.31 2007/02/08 20:16:25 bigmichi1 Exp $ |
// |
// xml_filesystems() |
// |
function xml_filesystems () { |
global $sysinfo; |
global $show_mount_point; |
$arrFs = $sysinfo->filesystems(); |
$_text = " <FileSystem>\n"; |
for ( $i = 0, $max = sizeof( $arrFs ); $i < $max; $i++ ) { |
$_text .= " <Mount>\n"; |
$_text .= " <MountPointID>" . htmlspecialchars( $i, ENT_QUOTES ) . "</MountPointID>\n"; |
if( $show_mount_point ) { |
$_text .= " <MountPoint>" . htmlspecialchars( $arrFs[$i]['mount'], ENT_QUOTES ) . "</MountPoint>\n"; |
} |
$_text .= " <Type>" . htmlspecialchars( $arrFs[$i]['fstype'], ENT_QUOTES ) . "</Type>\n" |
. " <Device><Name>" . htmlspecialchars( $arrFs[$i]['disk'], ENT_QUOTES ) . "</Name></Device>\n" |
. " <Percent>" . htmlspecialchars( $arrFs[$i]['percent'], ENT_QUOTES ) . "</Percent>\n" |
. " <Free>" . htmlspecialchars( $arrFs[$i]['free'], ENT_QUOTES ) . "</Free>\n" |
. " <Used>" . htmlspecialchars( $arrFs[$i]['used'], ENT_QUOTES ) . "</Used>\n" |
. " <Size>" . htmlspecialchars( $arrFs[$i]['size'], ENT_QUOTES ) . "</Size>\n"; |
if( isset( $arrFs[$i]['options'] ) ) { |
$_text .= " <Options>" . htmlspecialchars( $arrFs[$i]['options'], ENT_QUOTES ) . "</Options>\n"; |
} |
if( isset( $arrFs[$i]['inodes'] ) ) { |
$_text .= " <Inodes>" . htmlspecialchars( $arrFs[$i]['inodes'], ENT_QUOTES ) . "</Inodes>\n"; |
} |
$_text .= " </Mount>\n"; |
} |
$_text .= " </FileSystem>\n"; |
return $_text; |
} |
// |
// html_filesystems() |
// |
function html_filesystems () { |
global $XPath; |
global $text; |
global $show_mount_point; |
$textdir = direction(); |
$arrSum = array("size" => 0, "used" => 0, "free" => 0); |
$arrCounteddevlist = array(); |
$intScalefactor = 2; |
$_text = "<table border=\"0\" width=\"100%\" align=\"center\">\n"; |
$_text .= " <tr>\n"; |
if ($show_mount_point) { |
$_text .= " <td align=\"" . $textdir['left'] . "\" valign=\"top\"><font size=\"-1\"><b>" . $text['mount'] . "</b></font></td>\n"; |
} |
$_text .= " <td align=\"" . $textdir['left'] . "\" valign=\"top\"><font size=\"-1\"><b>" . $text['type'] . "</b></font></td>\n" |
. " <td align=\"" . $textdir['left'] . "\" valign=\"top\"><font size=\"-1\"><b>" . $text['partition'] . "</b></font></td>\n" |
. " <td align=\"" . $textdir['left'] . "\" valign=\"top\"><font size=\"-1\"><b>" . $text['percent'] . "</b></font></td>\n" |
. " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\"><b>" . $text['free'] . "</b></font></td>\n" |
. " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\"><b>" . $text['used'] . "</b></font></td>\n" |
. " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\"><b>" . $text['size'] . "</b></font></td>\n </tr>\n"; |
for( $i = 1, $max = sizeof( $XPath->getDataParts( "/phpsysinfo/FileSystem" ) ); $i < $max; $i++ ) { |
if( $XPath->match( "/phpsysinfo/FileSystem/Mount[" . $i . "]/MountPointID" ) ) { |
if( ! $XPath->match( "/phpsysinfo/FileSystem/Mount[" . $i . "]/Options" ) || ! stristr( $XPath->getData( "/phpsysinfo/FileSystem/Mount[" . $i . "]/Options" ), "bind" ) ) { |
if( ! in_array( $XPath->getData( "/phpsysinfo/FileSystem/Mount[" . $i . "]/Device/Name" ), $arrCounteddevlist ) ) { |
$arrSum['size'] += $XPath->getData( "/phpsysinfo/FileSystem/Mount[" . $i . "]/Size" ); |
$arrSum['used'] += $XPath->getData( "/phpsysinfo/FileSystem/Mount[" . $i . "]/Used" ); |
$arrSum['free'] += $XPath->getData( "/phpsysinfo/FileSystem/Mount[" . $i . "]/Free" ); |
if( PHP_OS != "WINNT" ) { |
$arrCounteddevlist[] = $XPath->getData( "/phpsysinfo/FileSystem/Mount[" . $i . "]/Device/Name" ); |
} |
} |
} |
$_text .= " <tr>\n"; |
if( $show_mount_point ) { |
$_text .= " <td align=\"" . $textdir['left'] . "\" valign=\"top\"><font size=\"-1\">" . $XPath->getData( "/phpsysinfo/FileSystem/Mount[" . $i . "]/MountPoint" ) . "</font></td>\n"; |
} |
$_text .= " <td align=\"" . $textdir['left'] . "\" valign=\"top\"><font size=\"-1\">" . $XPath->getData( "/phpsysinfo/FileSystem/Mount[" . $i . "]/Type" ) . "</font></td>\n" |
. " <td align=\"" . $textdir['left'] . "\" valign=\"top\"><font size=\"-1\">" . $XPath->getData( "/phpsysinfo/FileSystem/Mount[" . $i . "]/Device/Name" ) . "</font></td>\n" |
. " <td align=\"" . $textdir['left'] . "\" valign=\"top\"><font size=\"-1\">" |
. create_bargraph( $XPath->getData( "/phpsysinfo/FileSystem/Mount[" . $i . "]/Used" ), $XPath->getData( "/phpsysinfo/FileSystem/Mount[" . $i . "]/Size" ), $intScalefactor, $XPath->getData( "/phpsysinfo/FileSystem/Mount[" . $i . "]/Type" ) ) |
. " " . $XPath->getData( "/phpsysinfo/FileSystem/Mount[" . $i . "]/Percent" ) . "%"; |
if( $XPath->match( "/phpsysinfo/FileSystem/Mount[" . $i . "]/Inodes" ) ) { |
$_text .= " (" . $XPath->getData( "/phpsysinfo/FileSystem/Mount[" . $i . "]/Inodes" ) . "%)"; |
} |
$_text .= "</font></td>\n" |
. " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\">" . format_bytesize( $XPath->getData( "/phpsysinfo/FileSystem/Mount[" . $i . "]/Free" ) ) . "</font></td>\n" |
. " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\">" . format_bytesize( $XPath->getData( "/phpsysinfo/FileSystem/Mount[" . $i . "]/Used" ) ) . "</font></td>\n" |
. " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\">" . format_bytesize( $XPath->getData( "/phpsysinfo/FileSystem/Mount[" . $i . "]/Size" ) ) . "</font></td>\n" |
. " </tr>\n"; |
} |
} |
$_text .= " <tr>\n"; |
if( $show_mount_point ) { |
$_text .= " <td colspan=\"3\" align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\"><i>" . $text['totals'] . " : </i></font></td>\n"; |
} else { |
$_text .= " <td colspan=\"2\" align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\"><i>" . $text['totals'] . " : </i></font></td>\n"; |
} |
$_text .= " <td align=\"" . $textdir['left'] . "\" valign=\"top\"><font size=\"-1\">" |
. create_bargraph( $arrSum['used'], $arrSum['size'], $intScalefactor ) |
. " "; |
if( $arrSum['size'] == 0 ) { |
$_text .= "0"; |
} else { |
$_text .= round( 100 / $arrSum['size'] * $arrSum['used'] ); |
} |
$_text .= "%" . "</font></td>\n" |
. " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\">" . format_bytesize( $arrSum['free'] ) . "</font></td>\n" |
. " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\">" . format_bytesize( $arrSum['used'] ) . "</font></td>\n" |
. " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\">" . format_bytesize( $arrSum['size'] ) . "</font></td>\n </tr>\n" |
. "</table>\n"; |
return $_text; |
} |
function wml_filesystem() { |
global $XPath; |
global $text; |
global $show_mount_point; |
$_text = "<card id=\"filesystem\" title=\"" . $text['fs'] . "\">\n"; |
for( $i = 1; $i < sizeof( $XPath->getDataParts( "/phpsysinfo/FileSystem" ) ); $i++ ) { |
if( $XPath->match( "/phpsysinfo/FileSystem/Mount[" . $i . "]/MountPointID" ) ) { |
$_text .= "<p>"; |
if( $show_mount_point ) { |
$_text .= $XPath->getData( "/phpsysinfo/FileSystem/Mount[" . $i . "]/MountPoint" ) . "<br/>\n"; |
} else { |
$_text .= $XPath->getData( "/phpsysinfo/FileSystem/Mount[" . $i . "]/Device/Name" ) . "<br/>\n"; |
} |
$_text .= "- " . $text['free'] . ": " . format_bytesize( $XPath->getData("/phpsysinfo/FileSystem/Mount[" . $i . "]/Free" ) ) . "<br/>\n" |
. "- " . $text['used'] . ": " . format_bytesize( $XPath->getData("/phpsysinfo/FileSystem/Mount[" . $i . "]/Used" ) ) . "<br/>\n" |
. "- " . $text['size'] . ": " . format_bytesize( $XPath->getData("/phpsysinfo/FileSystem/Mount[" . $i . "]/Size" ) ) . "<br/>\n" |
. "</p>\n"; |
} |
} |
$_text .= "</card>\n"; |
return $_text; |
} |
?> |
/web/acc/phpsysinfo/includes/xml/memory.php |
---|
0,0 → 1,211 |
<?php |
/*************************************************************************** |
* Copyright (C) 2006 by phpSysInfo - A PHP System Information Script * |
* http://phpsysinfo.sourceforge.net/ * |
* * |
* This program is free software; you can redistribute it and/or modify * |
* it under the terms of the GNU General Public License as published by * |
* the Free Software Foundation; either version 2 of the License, or * |
* (at your option) any later version. * |
* * |
* This program is distributed in the hope that it will be useful, * |
* but WITHOUT ANY WARRANTY; without even the implied warranty of * |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * |
* GNU General Public License for more details. * |
* * |
* You should have received a copy of the GNU General Public License * |
* along with this program; if not, write to the * |
* Free Software Foundation, Inc., * |
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
***************************************************************************/ |
// $Id: memory.php,v 1.18 2007/02/08 20:16:25 bigmichi1 Exp $ |
// |
// xml_memory() |
// |
function xml_memory () { |
global $sysinfo; |
$arrMem = $sysinfo->memory(); |
$i = 0; |
$_text = " <Memory>\n" |
. " <Free>" . htmlspecialchars( $arrMem['ram']['free'], ENT_QUOTES ) . "</Free>\n" |
. " <Used>" . htmlspecialchars( $arrMem['ram']['used'], ENT_QUOTES ) . "</Used>\n" |
. " <Total>" . htmlspecialchars( $arrMem['ram']['total'], ENT_QUOTES ) . "</Total>\n" |
. " <Percent>" . htmlspecialchars( $arrMem['ram']['percent'], ENT_QUOTES ) . "</Percent>\n"; |
if( isset( $arrMem['ram']['app_percent'] ) ) { |
$_text .= " <App>" . htmlspecialchars( $arrMem['ram']['app'], ENT_QUOTES ) . "</App>\n <AppPercent>" . htmlspecialchars( $arrMem['ram']['app_percent'], ENT_QUOTES ) . "</AppPercent>\n"; |
} |
if( isset( $arrMem['ram']['buffers_percent'] ) ) { |
$_text .= " <Buffers>" . htmlspecialchars( $arrMem['ram']['buffers'], ENT_QUOTES ) . "</Buffers>\n <BuffersPercent>" . htmlspecialchars( $arrMem['ram']['buffers_percent'], ENT_QUOTES ) . "</BuffersPercent>\n"; |
} |
if( isset( $arrMem['ram']['cached_percent'] ) ) { |
$_text .= " <Cached>" . htmlspecialchars( $arrMem['ram']['cached'], ENT_QUOTES ) . "</Cached>\n <CachedPercent>" . htmlspecialchars( $arrMem['ram']['cached_percent'], ENT_QUOTES ) . "</CachedPercent>\n"; |
} |
$_text .= " </Memory>\n"; |
$_text .= " <Swap>\n"; |
if( isset( $arrMem['swap']['total'] ) && $arrMem['swap']['total'] > 0 ) { |
$_text .= " <Free>" . htmlspecialchars( $arrMem['swap']['free'], ENT_QUOTES ) . "</Free>\n" |
. " <Used>" . htmlspecialchars( $arrMem['swap']['used'], ENT_QUOTES ) . "</Used>\n" |
. " <Total>" . htmlspecialchars( $arrMem['swap']['total'], ENT_QUOTES ) . "</Total>\n" |
. " <Percent>" . htmlspecialchars( $arrMem['swap']['percent'], ENT_QUOTES ) . "</Percent>\n"; |
} |
$_text .= " </Swap>\n"; |
$_text .= " <Swapdevices>\n"; |
foreach( $arrMem['devswap'] as $arrDevice) { |
$_text .=" <Mount>\n" |
. " <MountPointID>" . htmlspecialchars( $i++, ENT_QUOTES ) . "</MountPointID>\n" |
. " <Type>Swap</Type>" |
. " <Device><Name>" . htmlspecialchars( $arrDevice['dev'], ENT_QUOTES ) . "</Name></Device>\n" |
. " <Percent>" . htmlspecialchars( $arrDevice['percent'], ENT_QUOTES ) . "</Percent>\n" |
. " <Free>" . htmlspecialchars( $arrDevice['free'], ENT_QUOTES ) . "</Free>\n" |
. " <Used>" . htmlspecialchars( $arrDevice['used'], ENT_QUOTES ) . "</Used>\n" |
. " <Size>" . htmlspecialchars( $arrDevice['total'], ENT_QUOTES ) . "</Size>\n" |
. " </Mount>\n"; |
} |
$_text .= " </Swapdevices>\n"; |
return $_text; |
} |
// |
// html_memory() |
// |
function html_memory () { |
global $XPath; |
global $text; |
$textdir = direction(); |
$scale_factor = 2; |
$strRam = create_bargraph( $XPath->getData( "/phpsysinfo/Memory/Used" ), $XPath->getData( "/phpsysinfo/Memory/Total" ), $scale_factor ); |
$strRam .= " " . $XPath->getData( "/phpsysinfo/Memory/Percent" ) . "% "; |
if( $XPath->match( "/phpsysinfo/Swap/Total" ) ) { |
$strSwap = create_bargraph( $XPath->getData( "/phpsysinfo/Swap/Used" ), $XPath->getData( "/phpsysinfo/Swap/Total" ), $scale_factor ); |
$strSwap .= " " . $XPath->getData( "/phpsysinfo/Swap/Percent" ) . "% "; |
} |
if( $XPath->match( "/phpsysinfo/Memory/AppPercent" ) ) { |
$strApp = create_bargraph( $XPath->getData( "/phpsysinfo/Memory/App" ), $XPath->getData( "/phpsysinfo/Memory/Total" ), $scale_factor ); |
$strApp .= " " . $XPath->getData( "/phpsysinfo/Memory/AppPercent" ) . "% "; |
} |
if( $XPath->match( "/phpsysinfo/Memory/BuffersPercent" ) ) { |
$strBuffers = create_bargraph( $XPath->getData( "/phpsysinfo/Memory/Buffers" ), $XPath->getData( "/phpsysinfo/Memory/Total" ), $scale_factor); |
$strBuffers .= " " . $XPath->getData( "/phpsysinfo/Memory/BuffersPercent" ) . "% "; |
} |
if( $XPath->match( "/phpsysinfo/Memory/CachedPercent" ) ) { |
$strCached = create_bargraph( $XPath->getData( "/phpsysinfo/Memory/Cached" ), $XPath->getData( "/phpsysinfo/Memory/Total" ), $scale_factor); |
$strCached .= " " . $XPath->getData( "/phpsysinfo/Memory/CachedPercent" ) . "% "; |
} |
$_text = "<table border=\"0\" width=\"100%\" align=\"center\">\n" |
. " <tr>\n" |
. " <td align=\"" . $textdir['left'] . "\" valign=\"top\"><font size=\"-1\"><b>" . $text['type'] . "</b></font></td>\n" |
. " <td align=\"" . $textdir['left'] . "\" valign=\"top\"><font size=\"-1\"><b>" . $text['percent'] . "</b></font></td>\n" |
. " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\"><b>" . $text['free'] . "</b></font></td>\n" |
. " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\"><b>" . $text['used'] . "</b></font></td>\n" |
. " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\"><b>" . $text['size'] . "</b></font></td>\n" |
. " </tr>\n" |
. " <tr>\n" |
. " <td align=\"" . $textdir['left'] . "\" valign=\"top\"><font size=\"-1\">" . $text['phymem'] . "</font></td>\n" |
. " <td align=\"" . $textdir['left'] . "\" valign=\"top\"><font size=\"-1\">" . $strRam . "</font></td>\n" |
. " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\">" . format_bytesize( $XPath->getData( "/phpsysinfo/Memory/Free" ) ) . "</font></td>\n" |
. " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\">" . format_bytesize( $XPath->getData( "/phpsysinfo/Memory/Used" ) ) . "</font></td>\n" |
. " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\">" . format_bytesize( $XPath->getData( "/phpsysinfo/Memory/Total" ) ) . "</font></td>\n" |
. " </tr>\n"; |
if( isset( $strApp ) ) { |
$_text .= " <tr>\n" |
. " <td align=\"" . $textdir['left'] . "\" valign=\"top\"><font size=\"-1\">- " . $text['app'] . "</font></td>\n" |
. " <td align=\"" . $textdir['left'] . "\" valign=\"top\"><font size=\"-1\">" . $strApp . "</font></td>\n" |
. " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\"> </font></td>\n" |
. " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\">" . format_bytesize( $XPath->getData( "/phpsysinfo/Memory/App" ) ) . "</font></td>\n" |
. " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\"> </font></td>\n" |
. " </tr>\n"; |
} |
if( isset( $strBuffers ) ) { |
$_text .= " <tr>\n" |
. " <td align=\"" . $textdir['left'] . "\" valign=\"top\"><font size=\"-1\">- " . $text['buffers'] . "</font></td>\n" |
. " <td align=\"" . $textdir['left'] . "\" valign=\"top\"><font size=\"-1\">" . $strBuffers . "</font></td>\n" |
. " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\"> </font></td>\n" |
. " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\">" . format_bytesize( $XPath->getData( "/phpsysinfo/Memory/Buffers" ) ) . "</font></td>\n" |
. " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\"> </font></td>\n" |
. " </tr>\n"; |
} |
if( isset( $strCached ) ) { |
$_text .= " <tr>\n" |
. " <td align=\"" . $textdir['left'] . "\" valign=\"top\"><font size=\"-1\">- " . $text['cached'] . "</font></td>\n" |
. " <td align=\"" . $textdir['left'] . "\" valign=\"top\"><font size=\"-1\">" . $strCached . "</font></td>\n" |
. " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\"> </font></td>\n" |
. " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\">" . format_bytesize( $XPath->getData( "/phpsysinfo/Memory/Cached" ) ) . "</font></td>\n" |
. " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\"> </font></td>\n" |
. " </tr>\n"; |
} |
if( isset( $strSwap ) ) { |
$_text .= " <tr>\n" |
. " <td align=\"" . $textdir['left'] . "\" valign=\"top\"><font size=\"-1\">" . $text['swap'] . "</font></td>\n" |
. " <td align=\"" . $textdir['left'] . "\" valign=\"top\"><font size=\"-1\">" . $strSwap . "</font></td>\n" |
. " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\">" . format_bytesize( $XPath->getData( "/phpsysinfo/Swap/Free" ) ) . "</font></td>\n" |
. " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\">" . format_bytesize( $XPath->getData( "/phpsysinfo/Swap/Used" ) ) . "</font></td>\n" |
. " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\">" . format_bytesize( $XPath->getData( "/phpsysinfo/Swap/Total" ) ) . "</font></td>\n" |
. " </tr>\n"; |
} |
if( ($max = sizeof( $XPath->getDataParts( "/phpsysinfo/Swapdevices" ) ) ) > 2 ) { |
for( $i = 1; $i < $max; $i++ ) { |
$strSwapdev = create_bargraph( $XPath->getData( "/phpsysinfo/Swapdevices/Mount[" . $i . "]/Used" ), $XPath->getData( "/phpsysinfo/Swapdevices/Mount[" . $i . "]/Size" ), $scale_factor ); |
$strSwapdev .= " " . $XPath->getData( "/phpsysinfo/Swapdevices/Mount[" . $i . "]/Percent" ) . "% "; |
$_text .= " <tr>\n" |
. " <td align=\"" . $textdir['left'] . "\" valign=\"top\"><font size=\"-1\"> - " . $XPath->getData( "/phpsysinfo/Swapdevices/Mount[" . $i . "]/Device/Name" ) . "</font></td>\n" |
. " <td align=\"" . $textdir['left'] . "\" valign=\"top\"><font size=\"-1\">" . $strSwapdev . "</font></td>\n" |
. " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\">" . format_bytesize( $XPath->getData("/phpsysinfo/Swapdevices/Mount[" . $i . "]/Free" ) ) . "</font></td>\n" |
. " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\">" . format_bytesize( $XPath->getData("/phpsysinfo/Swapdevices/Mount[" . $i . "]/Used" ) ) . "</font></td>\n" |
. " <td align=\"" . $textdir['right'] . "\" valign=\"top\"><font size=\"-1\">" . format_bytesize( $XPath->getData("/phpsysinfo/Swapdevices/Mount[" . $i . "]/Size" ) ) . "</font></td>\n" |
. " </tr>\n"; |
} |
} |
$_text .= "</table>"; |
return $_text; |
} |
function wml_memory() { |
global $XPath; |
global $text; |
$_text = "<card id=\"memory\" title=\"" . $text['memusage'] . "\">\n" |
. "<p>" . $text['phymem'] . ":<br/>\n" |
. "- " . $text['free'] . ": " . format_bytesize( $XPath->getData( "/phpsysinfo/Memory/Free" ) ) . "<br/>\n" |
. "- " . $text['used'] . ": " . format_bytesize( $XPath->getData( "/phpsysinfo/Memory/Used" ) ) . "<br/>\n" |
. "- " . $text['size'] . ": " . format_bytesize( $XPath->getData( "/phpsysinfo/Memory/Total" ) ) . "</p>\n"; |
if( $XPath->match( "/phpsysinfo/Memory/App" ) ) { |
$_text .= "<p>" . $text['app'] . ":<br/>\n" |
. "- " . $text['used'] . ": " . format_bytesize( $XPath->getData( "/phpsysinfo/Memory/App" ) ) . "</p>\n"; |
} |
if( $XPath->match( "/phpsysinfo/Memory/Cached" ) ) { |
$_text .= "<p>" . $text['cached'] . ":<br/>\n" |
. "- " . $text['used'] . ": " . format_bytesize( $XPath->getData( "/phpsysinfo/Memory/Cached" ) ) . "</p>\n"; |
} |
if( $XPath->match( "/phpsysinfo/Memory/Buffers" ) ) { |
$_text .= "<p>" . $text['buffers'] . ":<br/>\n" |
. "- " . $text['used'] . ": " . format_bytesize( $XPath->getData( "/phpsysinfo/Memory/Buffers" ) ) . "</p>\n"; |
} |
if( $XPath->match( "/phpsysinfo/Swap/Total" ) ) { |
$_text .= "<p>" . $text['swap'] . ":<br/>\n" |
. "- " . $text['free'] . ": " . format_bytesize( $XPath->getData( "/phpsysinfo/Swap/Free" ) ) . "<br/>\n" |
. "- " . $text['used'] . ": " . format_bytesize( $XPath->getData( "/phpsysinfo/Swap/Used" ) ) . "<br/>\n" |
. "- " . $text['size'] . ": " . format_bytesize( $XPath->getData( "/phpsysinfo/Swap/Total" ) ) . "</p>\n"; |
} |
$_text .= "</card>\n"; |
return $_text; |
} |
?> |
/web/acc/phpsysinfo/includes/lang/ja.php |
---|
0,0 → 1,3 |
<?php |
require 'jp.php'; |
?> |
/web/acc/phpsysinfo/includes/lang/he.php |
---|
0,0 → 1,107 |
<?php |
// |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// |
// $Id: he.php,v 1.16 2007/02/18 19:11:31 bigmichi1 Exp $ |
$charset = 'windows-1255'; |
$text_dir = 'rtl'; |
$text['title'] = 'îéãò òì äîòøëú'; |
$text['vitals'] = 'çéåðéåú îòøëú'; |
$text['hostname'] = 'ùí úçðä'; |
$text['ip'] = 'ëúåáú IP'; |
$text['kversion'] = 'âøñú ÷øðì'; |
$text['dversion'] = 'Distro Name'; |
$text['uptime'] = 'æîï ùäîòøëú ìîòìä'; |
$text['users'] = 'îùúùéí ðåëçééí'; |
$text['loadavg'] = 'îîåöò òåîñéí'; |
$text['hardware'] = 'îéãò çåîøä'; |
$text['numcpu'] = 'îòáãéí'; |
$text['cpumodel'] = 'ñåâ'; |
$text['cpuspeed'] = 'îäéøåú áMHz'; |
$text['busspeed'] = 'BUS Speed'; |
$text['cache'] = 'âåãì æëøåï îèîåï'; |
$text['bogomips'] = 'îäéøåú ábogomips'; |
$text['pci'] = 'äú÷ðé PCI'; |
$text['ide'] = 'äú÷ðé IDE'; |
$text['scsi'] = 'äú÷ðé SCSI'; |
$text['usb'] = 'äú÷ðé USB'; |
$text['netusage'] = 'øùú'; |
$text['device'] = 'äú÷ï'; |
$text['received'] = '÷éáì'; |
$text['sent'] = 'ùìç'; |
$text['errors'] = 'ú÷ìåú/æøé÷åú'; |
$text['connections'] = 'òøåöé ú÷ùåøú ôúåçéí'; |
$text['memusage'] = 'ðéöåìú æëøåï'; |
$text['phymem'] = 'æëøåï ôéæé'; |
$text['swap'] = 'æëøåï swap'; |
$text['fs'] = 'îòøëåú ÷áöéí îçåáøåú'; |
$text['mount'] = 'îçåáø'; |
$text['partition'] = 'îçéöä'; |
$text['percent'] = 'úëåìä áàçæåéí'; |
$text['type'] = 'ñåâ'; |
$text['free'] = 'çåôùé'; |
$text['used'] = 'áùéîåù'; |
$text['size'] = 'âåãì'; |
$text['totals'] = 'ñä"ë'; |
$text['kb'] = '÷éìå áúéí'; |
$text['mb'] = 'îâä'; |
$text['gb'] = 'âéâä'; |
$text['none'] = 'ììà'; |
$text['capacity'] = 'úëåìä'; |
$text['template'] = 'úáðéú'; |
$text['language'] = 'ùôä'; |
$text['submit'] = 'äâù'; |
$text['created'] = 'ðåöø ò"é'; |
$text['locale'] = 'en_US'; |
$text['gen_time'] = 'on %b %d, %Y at %I:%M %p'; |
$text['days'] = 'éîéí'; |
$text['hours'] = 'ùòåú'; |
$text['minutes'] = 'ã÷åú'; |
$text['temperature'] = 'Temperature'; |
$text['voltage'] = 'Voltage'; |
$text['fans'] = 'Fans'; |
$text['s_value'] = 'Value'; |
$text['s_min'] = 'Min'; |
$text['s_max'] = 'Max'; |
$text['hysteresis'] = 'Hysteresis'; |
$text['s_limit'] = 'Limit'; |
$text['s_label'] = 'Label'; |
$text['degreeC'] = '°C'; |
$text['degreeF'] = '°F'; |
$text['voltage_mark'] = 'V'; |
$text['rpm_mark'] = 'RPM'; |
$text['app'] = 'Kernel + applications'; |
$text['buffers'] = 'Buffers'; |
$text['cached'] = 'Cached'; |
?> |
/web/acc/phpsysinfo/includes/lang/fi.php |
---|
0,0 → 1,107 |
<?php |
// |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// |
// $Id: fi.php,v 1.17 2007/02/18 19:11:31 bigmichi1 Exp $ |
// Finnish language file by Jani 'Japala' Ponkko |
$text['title'] = 'Tietoa järjestelmästä'; |
$text['vitals'] = 'Perustiedot'; |
$text['hostname'] = 'Kanoninen nimi'; |
$text['ip'] = 'Käytettävä IP'; |
$text['kversion'] = 'Kernelin versio'; |
$text['dversion'] = 'Distro Name'; |
$text['uptime'] = 'Toiminta-aika'; |
$text['users'] = 'Käyttäjiä'; |
$text['loadavg'] = 'Keskikuormat'; |
$text['hardware'] = 'Laitteisto'; |
$text['numcpu'] = 'Prosessoreita'; |
$text['cpumodel'] = 'Malli'; |
$text['cpuspeed'] = 'Piirin MHz'; |
$text['busspeed'] = 'BUS Speed'; |
$text['cache'] = 'Välimuistin koko'; |
$text['bogomips'] = 'Järjestelmän Bogomipsit'; |
$text['pci'] = 'PCI Laitteet'; |
$text['ide'] = 'IDE Laitteet'; |
$text['scsi'] = 'SCSI Laitteet'; |
$text['usb'] = 'USB Laitteet'; |
$text['netusage'] = 'Verkon käyttö'; |
$text['device'] = 'Laite'; |
$text['received'] = 'Vastaanotettu'; |
$text['sent'] = 'Lähetetty'; |
$text['errors'] = 'Virheet/Pudotetut'; |
$text['memusage'] = 'Muistin kuormitus'; |
$text['phymem'] = 'Fyysinen muisti'; |
$text['swap'] = 'Virtuaalimuisti'; |
$text['fs'] = 'Liitetyt tiedostojärjestelmät'; |
$text['mount'] = 'Liitoskohta'; |
$text['partition'] = 'Osio'; |
$text['percent'] = 'Prosenttia kapasiteetista'; |
$text['type'] = 'Tyyppi'; |
$text['free'] = 'Vapaana'; |
$text['used'] = 'Käytössä'; |
$text['size'] = 'Koko'; |
$text['totals'] = 'Yhteensä'; |
$text['kb'] = 'KB'; |
$text['mb'] = 'MB'; |
$text['gb'] = 'GB'; |
$text['none'] = 'Ei yhtään'; |
$text['capacity'] = 'Kapasiteetti'; |
$text['template'] = 'Malli'; |
$text['language'] = 'Kieli'; |
$text['submit'] = 'Valitse'; |
$text['created'] = 'Luonut'; |
$text['locale'] = 'en_US'; |
$text['gen_time'] = 'on %b %d, %Y at %I:%M %p'; |
$text['days'] = 'päivää'; |
$text['hours'] = 'tuntia'; |
$text['minutes'] = 'minuuttia'; |
$text['temperature'] = 'Temperature'; |
$text['voltage'] = 'Voltage'; |
$text['fans'] = 'Fans'; |
$text['s_value'] = 'Value'; |
$text['s_min'] = 'Min'; |
$text['s_max'] = 'Max'; |
$text['hysteresis'] = 'Hysteresis'; |
$text['s_limit'] = 'Limit'; |
$text['s_label'] = 'Label'; |
$text['degreeC'] = '°C'; |
$text['degreeF'] = '°F'; |
$text['voltage_mark'] = 'V'; |
$text['rpm_mark'] = 'RPM'; |
$text['app'] = 'Kernel + applications'; |
$text['buffers'] = 'Buffers'; |
$text['cached'] = 'Cached'; |
$text['connections'] = 'Established Network Connections'; |
?> |
/web/acc/phpsysinfo/includes/lang/br.php |
---|
0,0 → 1,106 |
<?php |
// |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// |
// $Id: br.php,v 1.19 2007/02/18 19:11:31 bigmichi1 Exp $ |
// Translated by Álvaro Reguly - alvaro at reguly dot net |
// |
$text['title'] = 'Informações do Sistema'; |
$text['vitals'] = 'Sistema'; |
$text['hostname'] = 'Nome Canônico'; |
$text['ip'] = 'Números IP'; |
$text['kversion'] = 'Versão do Kernel'; |
$text['dversion'] = 'Distro Name'; |
$text['uptime'] = 'Uptime'; |
$text['users'] = 'Usuários Conectados'; |
$text['loadavg'] = 'Carga do Sistema'; |
$text['hardware'] = 'Informações do Hardware'; |
$text['numcpu'] = 'Processadores'; |
$text['cpumodel'] = 'Modelo'; |
$text['cpuspeed'] = 'CPU Speed'; |
$text['busspeed'] = 'BUS Speed'; |
$text['cache'] = 'Tamanho Cache'; |
$text['bogomips'] = 'Bogomips'; |
$text['pci'] = 'Dispositivos PCI'; |
$text['ide'] = 'Dispositivos IDE'; |
$text['scsi'] = 'Dispositivos SCSI'; |
$text['usb'] = 'Dispositivos USB'; |
$text['netusage'] = 'Utilização da Rede'; |
$text['device'] = 'Dispositivo'; |
$text['received'] = 'Recebidos'; |
$text['sent'] = 'Enviados'; |
$text['errors'] = 'Erros/Drop'; |
$text['memusage'] = 'Utilização da Memória'; |
$text['phymem'] = 'Memória Física'; |
$text['swap'] = 'Swap'; |
$text['fs'] = 'Sistemas de Arquivo Montados'; |
$text['mount'] = 'Mount'; |
$text['partition'] = 'Partição'; |
$text['percent'] = 'Porcentual da Capacidade'; |
$text['type'] = 'Tipo'; |
$text['free'] = 'Livres'; |
$text['used'] = 'Utilizados'; |
$text['size'] = 'Tamanho'; |
$text['totals'] = 'Totais'; |
$text['kb'] = 'KB'; |
$text['mb'] = 'MB'; |
$text['gb'] = 'GB'; |
$text['none'] = 'nenhum'; |
$text['capacity'] = 'Capacidade'; |
$text['template'] = 'Molde'; |
$text['language'] = 'Língua'; |
$text['submit'] = 'Enviar'; |
$text['created'] = 'Criado por'; |
$text['locale'] = 'en_US'; |
$text['gen_time'] = 'on %b %d, %Y at %I:%M %p'; |
$text['days'] = 'dias'; |
$text['hours'] = 'horas'; |
$text['minutes'] = 'minutos'; |
$text['temperature'] = 'Temperature'; |
$text['voltage'] = 'Voltage'; |
$text['fans'] = 'Fans'; |
$text['s_value'] = 'Value'; |
$text['s_min'] = 'Min'; |
$text['s_max'] = 'Max'; |
$text['hysteresis'] = 'Hysteresis'; |
$text['s_limit'] = 'Limit'; |
$text['s_label'] = 'Label'; |
$text['degreeC'] = '°C'; |
$text['degreeF'] = '°F'; |
$text['voltage_mark'] = 'V'; |
$text['rpm_mark'] = 'RPM'; |
$text['app'] = 'Kernel + applications'; |
$text['buffers'] = 'Buffers'; |
$text['cached'] = 'Cached'; |
$text['connections'] = 'Established Network Connections'; |
?> |
/web/acc/phpsysinfo/includes/lang/fr.php |
---|
0,0 → 1,118 |
<?php |
// |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// |
// $Id: fr.php,v 1.27 2007/03/15 08:22:31 bigmichi1 Exp $ |
$text['title'] = 'Informations Système '; |
$text['vitals'] = 'Système'; |
$text['hostname'] = 'Nom d\'hôte cannonique'; |
$text['ip'] = 'IP'; |
$text['kversion'] = 'Version du noyau'; |
$text['dversion'] = 'Distribution'; |
$text['uptime'] = 'Uptime'; |
$text['users'] = 'Utilisateurs'; |
$text['loadavg'] = 'Charge système'; |
$text['hardware'] = 'Informations Matériel'; |
$text['numcpu'] = 'Processeurs'; |
$text['cpumodel'] = 'Modèle'; |
$text['cpuspeed'] = 'Vitesse CPU'; |
$text['busspeed'] = 'Vitesse BUS'; |
$text['cache'] = 'Taille Cache'; |
$text['bogomips'] = 'Bogomips'; |
$text['usb'] = 'Périph. USB'; |
$text['pci'] = 'Périph. PCI'; |
$text['ide'] = 'Périph. IDE'; |
$text['scsi'] = 'Périph. SCSI'; |
// |
$text['portail'] = 'Informations générales du portail ALCASAR'; |
$text['portail-version']= 'Version installée'; |
$text['portail-disp'] = 'Versions disponibles'; |
$text['utilisateur'] = 'Usagers connectés / inscrits'; |
$text['groupe'] = 'Nombre de groupe(s)'; |
$text['bl-version'] = 'Liste noire'; |
$text['internet_link'] = "Lien Internet"; |
$text['enable'] = "actif"; |
$text['disable'] = "inactif"; |
$text['web_filter'] = "Filtrage WEB"; |
$text['net_filter'] = "Filtrage protocoles réseau"; |
// |
$text['netusage'] = 'Réseau'; |
$text['device'] = 'Périphérique'; |
$text['received'] = 'Réception'; |
$text['sent'] = 'Envoi'; |
$text['errors'] = 'Err/Drop'; |
$text['memusage'] = 'Utilisation mémoire'; |
$text['phymem'] = 'Mémoire Physique'; |
$text['swap'] = 'Swap disque'; |
$text['fs'] = 'Systèmes de fichiers montés'; |
$text['mount'] = 'Point'; |
$text['partition'] = 'Partition'; |
$text['percent'] = 'Utilisation'; |
$text['type'] = 'Type'; |
$text['free'] = 'Libre'; |
$text['used'] = 'Occupé'; |
$text['size'] = 'Taille'; |
$text['totals'] = 'Totaux'; |
$text['kb'] = 'Ko'; |
$text['mb'] = 'Mo'; |
$text['gb'] = 'Go'; |
$text['none'] = 'aucun'; |
$text['capacity'] = 'Capacité'; |
$text['template'] = 'Modèle '; |
$text['language'] = 'Langue '; |
$text['submit'] = 'Valider'; |
$text['created'] = 'Créé par'; |
$text['locale'] = 'fr_FR'; |
$text['gen_time'] = 'le %d %B %Y à %I:%M %p'; |
$text['days'] = 'jours'; |
$text['hours'] = 'heures'; |
$text['minutes'] = 'minutes'; |
$text['temperature'] = 'Température'; |
$text['voltage'] = 'Voltage'; |
$text['fans'] = 'Ventilateurs'; |
$text['s_value'] = 'valeur'; |
$text['s_min'] = 'Min'; |
$text['s_max'] = 'Max'; |
$text['hysteresis'] = 'Hystérésis'; |
$text['s_limit'] = 'Limite'; |
$text['s_label'] = 'Label'; |
$text['degreeC'] = '°C'; |
$text['degreeF'] = '°F'; |
$text['voltage_mark'] = 'V'; |
$text['rpm_mark'] = 'RPM'; |
$text['app'] = 'Kernel + applications'; |
$text['buffers'] = 'Buffers'; |
$text['cached'] = 'Cached'; |
$text['connections'] = 'Established Network Connections'; |
?> |
/web/acc/phpsysinfo/includes/lang/ar_utf8.php |
---|
0,0 → 1,110 |
<?php |
// |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// |
// $Id: ar_utf8.php,v 1.15 2007/02/18 19:11:30 bigmichi1 Exp $ |
// |
//Translated to arabic by: Nizar Abed - nizar@srcget.com - Adios |
$charset = 'utf-8'; |
$text['title'] = 'معلومات عن ألنظام'; |
$text['vitals'] = 'حيويه'; |
$text['hostname'] = ' ألمحطه'; |
$text['ip'] = 'IP عنوان أل'; |
$text['kversion'] = 'إصدار رقم'; |
$text['dversion'] = 'Distro Name'; |
$text['uptime'] = 'مدة ألتشغيل'; |
$text['users'] = 'مستخدمون'; |
$text['loadavg'] = 'معدل ألتشغيل'; |
$text['hardware'] = 'معلومات ألمعدات'; |
$text['numcpu'] = 'وحدات ألمعالجه'; |
$text['cpumodel'] = 'نوع'; |
$text['cpuspeed'] = 'سرعه في'; |
$text['busspeed'] = 'BUS Speed'; |
$text['cache'] = ' cache سعة ذاكرة'; |
$text['bogomips'] = 'Bogomips سرعه في'; |
$text['pci'] = 'PCI معدات '; |
$text['ide'] = 'IDE معدات'; |
$text['scsi'] = 'SCSI معدات'; |
$text['usb'] = 'USB معدات'; |
$text['netusage'] = 'إستعمال ألشبكه'; |
$text['device'] = 'معدات'; |
$text['received'] = 'إستقبل حتى ألآن'; |
$text['sent'] = 'أرسل'; |
$text['errors'] = 'أخطاء'; |
$text['connections'] = 'إتصالات شبكه منفذه'; |
$text['memusage'] = 'ذاكره مستعمله'; |
$text['phymem'] = 'ذاكره جسديه'; |
$text['swap'] = 'Swap ذاكرة'; |
$text['fs'] = 'أنظمة ملفات مخططه'; |
$text['mount'] = 'مخطط'; |
$text['partition'] = 'تقطيع'; |
$text['percent'] = 'سعه بألنسبه ألمؤيه'; |
$text['type'] = 'نوع'; |
$text['free'] = 'حر'; |
$text['used'] = 'مستعمل'; |
$text['size'] = 'حجم'; |
$text['totals'] = 'مجموع'; |
$text['kb'] = ' كيلو بايت KB'; |
$text['mb'] = 'ميغا بايت MB'; |
$text['gb'] = 'جيغا بايت GB'; |
$text['none'] = 'بدون'; |
$text['capacity'] = 'سعه'; |
$text['template'] = 'بنيه'; |
$text['language'] = 'لغه'; |
$text['submit'] = 'أدخل'; |
$text['created'] = 'إصدر بواسطة'; |
$text['days'] = 'أيام'; |
$text['hours'] = 'ساعات'; |
$text['minutes'] = 'دفائق'; |
$text['temperature'] = 'Temperature'; |
$text['voltage'] = 'Voltage'; |
$text['fans'] = 'Fans'; |
$text['s_value'] = 'Value'; |
$text['s_min'] = 'Min'; |
$text['s_max'] = 'Max'; |
$text['hysteresis'] = 'Hysteresis'; |
$text['s_limit'] = 'Limit'; |
$text['s_label'] = 'Label'; |
$text['degreeC'] = '°C'; |
$text['degreeF'] = '°F'; |
$text['voltage_mark'] = 'V'; |
$text['rpm_mark'] = 'RPM'; |
$text['app'] = 'Kernel + applications'; |
$text['buffers'] = 'Buffers'; |
$text['cached'] = 'Cached'; |
$text['locale'] = 'en_US'; |
$text['gen_time'] = 'on %b %d, %Y at %I:%M %p'; |
?> |
/web/acc/phpsysinfo/includes/lang/jp.php |
---|
0,0 → 1,108 |
<?php |
// |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// |
// $Id: jp.php,v 1.13 2007/02/18 19:11:31 bigmichi1 Exp $ |
$charset = 'euc-jp'; |
$text['title'] = '¥·¥¹¥Æ¥à¾ðÊó'; |
$text['vitals'] = '¥·¥¹¥Æ¥àÆ°ºî¾õ¶·'; |
$text['hostname'] = '¥Û¥¹¥È̾'; |
$text['ip'] = 'IP¥¢¥É¥ì¥¹'; |
$text['kversion'] = '¥«¡¼¥Í¥ë¥Ð¡¼¥¸¥ç¥ó(uname)'; |
$text['dversion'] = 'Distro Name'; |
$text['uptime'] = 'Ϣ³²ÔƯ»þ´Ö(uptime)'; |
$text['users'] = '¥í¥°¥¤¥ó¥æ¡¼¥¶¿ô'; |
$text['loadavg'] = '¥í¡¼¥É¥¢¥Ù¥ì¡¼¥¸'; |
$text['hardware'] = '¥Ï¡¼¥É¥¦¥§¥¢¾ðÊó'; |
$text['numcpu'] = 'CPU¿ô'; |
$text['cpumodel'] = 'CPU¥â¥Ç¥ë'; |
$text['cpuspeed'] = '¥¯¥í¥Ã¥¯Â®ÅÙ(MHz)'; |
$text['busspeed'] = 'BUS Speed'; |
$text['cache'] = '¥¥ã¥Ã¥·¥å¥µ¥¤¥º'; |
$text['bogomips'] = 'System Bogomips'; |
$text['pci'] = 'PCI¥Ç¥Ð¥¤¥¹°ìÍ÷'; |
$text['ide'] = 'IDE¥Ç¥Ð¥¤¥¹°ìÍ÷'; |
$text['scsi'] = 'SCSI¥Ç¥Ð¥¤¥¹°ìÍ÷'; |
$text['usb'] = 'USB¥Ç¥Ð¥¤¥¹°ìÍ÷'; |
$text['netusage'] = '¥Í¥Ã¥È¥ï¡¼¥¯ÍøÍѾõ¶·'; |
$text['device'] = '¥¤¥ó¥¿¥Õ¥§¥¤¥¹Ì¾'; |
$text['received'] = '¼õ¿®¥µ¥¤¥º'; |
$text['sent'] = 'Á÷¿®¥µ¥¤¥º'; |
$text['errors'] = '¥¨¥é¡¼/¼õ¿®ÉÔǽ'; |
$text['connections'] = '¸½ºßÀܳ¤·¤Æ¤¤¤ë¥Í¥Ã¥È¥ï¡¼¥¯Àܳ°ìÍ÷'; |
$text['memusage'] = '¥á¥â¥ê»ÈÍѾõ¶·'; |
$text['phymem'] = 'ʪÍý¥á¥â¥êÎÌ'; |
$text['swap'] = '¥Ç¥£¥¹¥¯¥¹¥ï¥Ã¥×'; |
$text['fs'] = '¥Þ¥¦¥ó¥ÈºÑ¤ß¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à°ìÍ÷'; |
$text['mount'] = '¥Þ¥¦¥ó¥È¥Ý¥¤¥ó¥È'; |
$text['partition'] = '¥Ç¥£¥¹¥¯¥Ñ¡¼¥Æ¥£¥·¥ç¥ó'; |
$text['percent'] = 'ÍøÍѳä¹ç'; |
$text['type'] = '¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¼ïÊÌ'; |
$text['free'] = '¶õ¤'; |
$text['used'] = 'ÍøÍÑ'; |
$text['size'] = 'Á´ÂÎ'; |
$text['totals'] = '¹ç·×'; |
$text['kb'] = 'KB'; |
$text['mb'] = 'MB'; |
$text['gb'] = 'GB'; |
$text['none'] = '¤¢¤ê¤Þ¤»¤ó'; |
$text['capacity'] = 'ÍÆÎÌ'; |
$text['template'] = '¥Ç¥¶¥¤¥óÁªÂò'; |
$text['language'] = '¸À¸ì'; |
$text['submit'] = 'Á÷¿®'; |
$text['created'] = 'Created by'; |
$text['days'] = 'Æü'; |
$text['hours'] = '»þ´Ö'; |
$text['minutes'] = 'ʬ'; |
$text['temperature'] = 'Temperature'; |
$text['voltage'] = 'Voltage'; |
$text['fans'] = 'Fans'; |
$text['s_value'] = 'Value'; |
$text['s_min'] = 'Min'; |
$text['s_max'] = 'Max'; |
$text['hysteresis'] = 'Hysteresis'; |
$text['s_limit'] = 'Limit'; |
$text['s_label'] = 'Label'; |
$text['degreeC'] = '°C'; |
$text['degreeF'] = '°F'; |
$text['voltage_mark'] = 'V'; |
$text['rpm_mark'] = 'RPM'; |
$text['app'] = 'Kernel + applications'; |
$text['buffers'] = 'Buffers'; |
$text['cached'] = 'Cached'; |
$text['locale'] = 'en_US'; |
$text['gen_time'] = 'on %b %d, %Y at %I:%M %p'; |
?> |
/web/acc/phpsysinfo/includes/lang/nl.php |
---|
0,0 → 1,111 |
<?php |
// |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// |
// $Id: nl.php,v 1.23 2007/02/18 19:11:31 bigmichi1 Exp $ |
if (PHP_OS == 'WINNT') { |
$text['locale'] = 'dutch'; // (windows) |
} |
else { |
$text['locale'] = 'nl-NL'; // (Linux and friends(?)) |
} |
$text['title'] = 'Systeem Informatie'; |
$text['vitals'] = 'Systeem overzicht'; |
$text['hostname'] = 'Toegewezen naam'; |
$text['ip'] = 'IP-adres'; |
$text['kversion'] = 'Kernelversie'; |
$text['dversion'] = 'Distributie'; |
$text['uptime'] = 'Uptime'; |
$text['users'] = 'Huidige gebruikers'; |
$text['loadavg'] = 'Gemiddelde belasting'; |
$text['hardware'] = 'Hardware overzicht'; |
$text['numcpu'] = 'Processors'; |
$text['cpumodel'] = 'Model'; |
$text['cpuspeed'] = 'CPU snelheid'; |
$text['busspeed'] = 'BUS snelheid'; |
$text['cache'] = 'Cache grootte'; |
$text['bogomips'] = 'Systeem Bogomips'; |
$text['pci'] = 'PCI Apparaten'; |
$text['ide'] = 'IDE Apparaten'; |
$text['scsi'] = 'SCSI Apparaten'; |
$text['usb'] = 'USB Apparaten'; |
$text['netusage'] = 'Netwerkgebruik'; |
$text['device'] = 'Apparaat'; |
$text['received'] = 'Ontvangen'; |
$text['sent'] = 'Verzonden'; |
$text['errors'] = 'Err/Drop'; |
$text['memusage'] = 'Geheugengebruik'; |
$text['phymem'] = 'Fysiek geheugen'; |
$text['swap'] = 'Swap geheugen'; |
$text['fs'] = 'Aangesloten bestandssystemen'; |
$text['mount'] = 'Mount'; |
$text['partition'] = 'Partitie'; |
$text['percent'] = 'Percentage gebruikt'; |
$text['type'] = 'Type'; |
$text['free'] = 'Vrij'; |
$text['used'] = 'Gebruikt'; |
$text['size'] = 'Grootte'; |
$text['totals'] = 'Totaal'; |
$text['kb'] = 'KB'; |
$text['mb'] = 'MB'; |
$text['gb'] = 'GB'; |
$text['none'] = 'geen'; |
$text['capacity'] = 'Capaciteit'; |
$text['template'] = 'Opmaak-model'; |
$text['language'] = 'Taal'; |
$text['submit'] = 'Toepassen'; |
$text['created'] = 'Gegenereerd door'; |
$text['gen_time'] = 'op %d %B %Y, om %H:%M'; |
$text['days'] = 'dagen'; |
$text['hours'] = 'uren'; |
$text['minutes'] = 'minuten'; |
$text['temperature'] = 'Temperatuur'; |
$text['voltage'] = 'Voltage'; |
$text['fans'] = 'Fans'; |
$text['s_value'] = 'Waarde'; |
$text['s_min'] = 'Min'; |
$text['s_max'] = 'Max'; |
$text['hysteresis'] = 'Hysterie'; |
$text['s_limit'] = 'Limiet'; |
$text['s_label'] = 'Omschrijving'; |
$text['degreeC'] = '°C'; |
$text['degreeF'] = '°F'; |
$text['voltage_mark'] = 'V'; |
$text['rpm_mark'] = 'RPM'; |
$text['app'] = 'Kernel + applications'; |
$text['buffers'] = 'Buffers'; |
$text['cached'] = 'Cached'; |
$text['connections'] = 'Established Network Connections'; |
?> |
/web/acc/phpsysinfo/includes/lang/pl.php |
---|
0,0 → 1,107 |
<?php |
// |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// |
// $Id: pl.php,v 1.16 2007/02/18 19:11:31 bigmichi1 Exp $ |
$charset = 'iso-8859-2'; |
$text['title'] = 'Informacja o systemie'; |
$text['vitals'] = 'Stan systemu'; |
$text['hostname'] = 'Nazwa kanoniczna hosta'; |
$text['ip'] = 'IP nas³uchuj±cy'; |
$text['kversion'] = 'Wersja j±dra'; |
$text['dversion'] = 'Distro Name'; |
$text['uptime'] = 'Uptime'; |
$text['users'] = 'Obecnych u¿ytkownków'; |
$text['loadavg'] = 'Obci±¿enia ¶rednie'; |
$text['hardware'] = 'Informacja o sprzêcie'; |
$text['numcpu'] = 'Procesory'; |
$text['cpumodel'] = 'Model'; |
$text['cpuspeed'] = 'Częstotliwość'; |
$text['busspeed'] = 'BUS Speed'; |
$text['cache'] = 'Cache Size'; |
$text['bogomips'] = 'System Bogomips'; |
$text['pci'] = 'Urz±dzenia PCI'; |
$text['ide'] = 'Urz±dzenia IDE'; |
$text['scsi'] = 'Urz±dzenia SCSI'; |
$text['usb'] = 'Urz±dzenia USB'; |
$text['netusage'] = 'Sieæ'; |
$text['device'] = 'Urz±dzenie'; |
$text['received'] = 'Odebrano'; |
$text['sent'] = 'Wys³ano'; |
$text['errors'] = 'B³êdow/Porzuconych'; |
$text['memusage'] = 'Obci±¿enie pamiêci'; |
$text['phymem'] = 'Pamiêæ fizyczna'; |
$text['swap'] = 'Pamiêæ Swap'; |
$text['fs'] = 'Zamontowane systemy plików'; |
$text['mount'] = 'Punkt montowania'; |
$text['partition'] = 'Partycja'; |
$text['percent'] = 'Procentowo zajête'; |
$text['type'] = 'Typ'; |
$text['free'] = 'Wolne'; |
$text['used'] = 'Zajête'; |
$text['size'] = 'Rozmiar'; |
$text['totals'] = 'Ca³kowite'; |
$text['kb'] = 'KB'; |
$text['mb'] = 'MB'; |
$text['gb'] = 'GB'; |
$text['none'] = 'brak'; |
$text['capacity'] = 'Rozmiar'; |
$text['template'] = 'Szablon'; |
$text['language'] = 'Jêzyk'; |
$text['submit'] = 'Wy¶lij'; |
$text['created'] = 'Utworzone przez'; |
$text['locale'] = 'pl_PL'; |
$text['gen_time'] = " %e %b %Y o godzinie %T"; |
$text['days'] = 'dni'; |
$text['hours'] = 'godzin'; |
$text['minutes'] = 'minut'; |
$text['temperature'] = 'Temperatura'; |
$text['voltage'] = 'Napiêcia'; |
$text['fans'] = 'Wiatraczki'; |
$text['s_value'] = 'Warto¶æ'; |
$text['s_min'] = 'Min'; |
$text['s_max'] = 'Max'; |
$text['hysteresis'] = 'Hystereza'; |
$text['s_limit'] = 'Limit'; |
$text['s_label'] = 'Nazwa'; |
$text['degreeC'] = '°C'; |
$text['degreeF'] = '°F'; |
$text['voltage_mark'] = 'V'; |
$text['rpm_mark'] = 'RPM'; |
$text['app'] = 'Kernel + applications'; |
$text['buffers'] = 'Buffers'; |
$text['cached'] = 'Cached'; |
$text['connections'] = 'Established Network Connections'; |
?> |
/web/acc/phpsysinfo/includes/lang/hu.php |
---|
0,0 → 1,108 |
<?php |
// |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// Translated by Zsozso - zsozso@internews.hu |
// $Id: hu.php,v 1.19 2007/02/18 19:11:31 bigmichi1 Exp $ |
$charset = 'iso-8859-2'; |
$text['title'] = 'Rendszer Információ'; |
$text['vitals'] = 'A Rendszer Alapvetõ Információi'; |
$text['hostname'] = 'Hostnév'; |
$text['ip'] = 'Figyelt IP'; |
$text['kversion'] = 'Kernel Verzió'; |
$text['dversion'] = 'Distro Name'; |
$text['uptime'] = 'Uptime'; |
$text['users'] = 'Pillanatnyi felhasználók'; |
$text['loadavg'] = 'Terhelési Átlag'; |
$text['hardware'] = 'Hardware Információ'; |
$text['numcpu'] = 'Processzor'; |
$text['cpumodel'] = 'Modell'; |
$text['cpuspeed'] = 'Chip MHz'; |
$text['busspeed'] = 'BUS Speed'; |
$text['cache'] = 'Cache Méret'; |
$text['bogomips'] = 'Rendszer Bogomips'; |
$text['pci'] = 'PCI Eszközök'; |
$text['ide'] = 'IDE Eszközök'; |
$text['scsi'] = 'SCSI Eszközök'; |
$text['usb'] = 'USB Eszközök'; |
$text['netusage'] = 'Háló Használat'; |
$text['device'] = 'Eszköz'; |
$text['received'] = 'Fogadott'; |
$text['sent'] = 'Küldött'; |
$text['errors'] = 'Err/Drop'; |
$text['connections'] = 'Létesített Hálózati Kapcsolatok'; |
$text['memusage'] = 'Memória Használat'; |
$text['phymem'] = 'Fizikai Memória'; |
$text['swap'] = 'Lemez Swap'; |
$text['fs'] = 'Csatlakoztatott File Rendszerek'; |
$text['mount'] = 'Mount'; |
$text['partition'] = 'Partíciók'; |
$text['percent'] = 'Százalékos Használat'; |
$text['type'] = 'Típus'; |
$text['free'] = 'Szabad'; |
$text['used'] = 'Használt'; |
$text['size'] = 'Méret'; |
$text['totals'] = 'Összesen'; |
$text['kb'] = 'KB'; |
$text['mb'] = 'MB'; |
$text['gb'] = 'GB'; |
$text['none'] = 'nincs'; |
$text['capacity'] = 'Kapacítás'; |
$text['template'] = 'Sablon'; |
$text['language'] = 'Nyelv'; |
$text['submit'] = 'Mehet'; |
$text['created'] = 'Készült:'; |
$text['locale'] = 'en_US'; |
$text['gen_time'] = 'on %b %d, %Y at %I:%M %p'; |
$text['days'] = 'nap'; |
$text['hours'] = 'óra'; |
$text['minutes'] = 'perc'; |
$text['temperature'] = 'Temperature'; |
$text['voltage'] = 'Voltage'; |
$text['fans'] = 'Fans'; |
$text['s_value'] = 'Value'; |
$text['s_min'] = 'Min'; |
$text['s_max'] = 'Max'; |
$text['hysteresis'] = 'Hysteresis'; |
$text['s_limit'] = 'Limit'; |
$text['s_label'] = 'Label'; |
$text['degreeC'] = '°C'; |
$text['degreeF'] = '°F'; |
$text['voltage_mark'] = 'V'; |
$text['rpm_mark'] = 'RPM'; |
$text['app'] = 'Kernel + applications'; |
$text['buffers'] = 'Buffers'; |
$text['cached'] = 'Cached'; |
?> |
/web/acc/phpsysinfo/includes/lang/no.php |
---|
0,0 → 1,105 |
<?php |
// |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// |
// $Id: no.php,v 1.19 2007/02/18 19:11:31 bigmichi1 Exp $ |
$text['title'] = 'Systeminformasjon'; |
$text['vitals'] = 'Vital Informasjon'; |
$text['hostname'] = 'Egentlige Tjenernavn'; |
$text['ip'] = 'IP-Adresse'; |
$text['kversion'] = 'Kernel Versjon'; |
$text['dversion'] = 'Distro Name'; |
$text['uptime'] = 'Oppetid'; |
$text['users'] = 'Antall Brukere'; |
$text['loadavg'] = 'Gj.Snitt Belastning'; |
$text['hardware'] = 'Maskinvareinformasjon'; |
$text['numcpu'] = 'Prosessorer'; |
$text['cpumodel'] = 'Modell'; |
$text['cpuspeed'] = 'Brikke MHz'; |
$text['busspeed'] = 'BUS Speed'; |
$text['cache'] = 'Cache Størrelse'; |
$text['bogomips'] = 'System Bogomips'; |
$text['pci'] = 'PCI Enheter'; |
$text['ide'] = 'IDE Enheter'; |
$text['scsi'] = 'SCSI Enheter'; |
$text['usb'] = 'USB Enheter'; |
$text['netusage'] = 'Nettverksbruk'; |
$text['device'] = 'Enhet'; |
$text['received'] = 'Mottatt'; |
$text['sent'] = 'Sendt'; |
$text['errors'] = 'Feil/Dropp'; |
$text['memusage'] = 'Minnebruk'; |
$text['phymem'] = 'Fysisk Minne'; |
$text['swap'] = 'Disk Swap'; |
$text['fs'] = 'Monterte Filsystemer'; |
$text['mount'] = 'Punkt'; |
$text['partition'] = 'Partisjon'; |
$text['percent'] = 'Brukt Kapasitet i Prosent'; |
$text['type'] = 'Type'; |
$text['free'] = 'Ledig'; |
$text['used'] = 'Brukt'; |
$text['size'] = 'Størrelse'; |
$text['totals'] = 'Totalt'; |
$text['kb'] = 'KB'; |
$text['mb'] = 'MB'; |
$text['gb'] = 'GB'; |
$text['none'] = 'Ingen'; |
$text['capacity'] = 'Kapasitet'; |
$text['template'] = 'Mal'; |
$text['language'] = 'Språk'; |
$text['submit'] = 'Endre'; |
$text['created'] = 'Generert av'; |
$text['locale'] = 'en_US'; |
$text['gen_time'] = 'on %b %d, %Y at %I:%M %p'; |
$text['days'] = 'dager'; |
$text['hours'] = 'timer'; |
$text['minutes'] = 'minutter'; |
$text['temperature'] = 'Temperature'; |
$text['voltage'] = 'Voltage'; |
$text['fans'] = 'Fans'; |
$text['s_value'] = 'Value'; |
$text['s_min'] = 'Min'; |
$text['s_max'] = 'Max'; |
$text['hysteresis'] = 'Hysteresis'; |
$text['s_limit'] = 'Limit'; |
$text['s_label'] = 'Label'; |
$text['degreeC'] = '°C'; |
$text['degreeF'] = '°F'; |
$text['voltage_mark'] = 'V'; |
$text['rpm_mark'] = 'RPM'; |
$text['app'] = 'Kernel + applications'; |
$text['buffers'] = 'Buffers'; |
$text['cached'] = 'Cached'; |
$text['connections'] = 'Established Network Connections'; |
?> |
/web/acc/phpsysinfo/includes/lang/lt.php |
---|
0,0 → 1,110 |
<?php |
// |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// |
// $Id: lt.php,v 1.20 2007/02/18 19:11:31 bigmichi1 Exp $ |
$charset = 'utf-8'; |
$text['title'] = 'Informacija apie sistemą'; |
$text['vitals'] = 'Sistema'; |
$text['hostname'] = 'Kompiuterio vardas'; |
$text['ip'] = 'IP adresas'; |
$text['kversion'] = 'Branduolio versija'; |
$text['dversion'] = 'Distribucija'; |
$text['uptime'] = 'Veikimo laikas'; |
$text['users'] = 'Vartotojai'; |
$text['loadavg'] = 'Apkrovos vidurkiai'; |
$text['hardware'] = 'Aparatūra'; |
$text['numcpu'] = 'Procesorių kiekis'; |
$text['cpumodel'] = 'Modelis'; |
$text['cpuspeed'] = 'Procesoriaus dažnis'; |
$text['busspeed'] = 'Magistralės dažnis'; |
$text['cache'] = 'Spartinančioji atmintinė'; |
$text['bogomips'] = 'Sistemos „bogomips“'; |
$text['pci'] = 'PCI įrenginiai'; |
$text['ide'] = 'IDE įrenginiai'; |
$text['scsi'] = 'SCSI įrenginiai'; |
$text['usb'] = 'USB įrenginiai'; |
$text['netusage'] = 'Tinklas'; |
$text['device'] = 'Įrenginys'; |
$text['received'] = 'Gauta'; |
$text['sent'] = 'Išsiųsta'; |
$text['errors'] = 'Klaidos/pamesti paketai'; |
$text['memusage'] = 'Atmintis'; |
$text['phymem'] = 'Operatyvioji atmintis'; |
$text['swap'] = 'Disko swap skirsnis'; |
$text['fs'] = 'Bylų sistema'; |
$text['mount'] = 'Prijungimo vieta'; |
$text['partition'] = 'Skirsnis'; |
$text['percent'] = 'Apkrova procentais'; |
$text['type'] = 'Tipas'; |
$text['free'] = 'Laisva'; |
$text['used'] = 'Apkrauta'; |
$text['size'] = 'Dydis'; |
$text['totals'] = 'Iš viso'; |
$text['kb'] = 'KB'; |
$text['mb'] = 'MB'; |
$text['gb'] = 'GB'; |
$text['none'] = 'nėra'; |
$text['capacity'] = 'Talpa'; |
$text['template'] = 'Šablonas'; |
$text['language'] = 'Kalba'; |
$text['submit'] = 'Atnaujinti'; |
$text['created'] = 'Naudojamas'; |
$text['days'] = 'd.'; |
$text['hours'] = 'val.'; |
$text['minutes'] = 'min.'; |
$text['temperature'] = 'Temperatūra'; |
$text['voltage'] = 'Įtampa'; |
$text['fans'] = 'Aušintuvai'; |
$text['s_value'] = 'Reikšmė'; |
$text['s_min'] = 'Min'; |
$text['s_max'] = 'Maks'; |
$text['hysteresis'] = 'Signalizuojama ties'; |
$text['s_limit'] = 'Riba'; |
$text['s_label'] = 'Pavadinimas'; |
$text['degreeC'] = '°C'; |
$text['degreeF'] = '°F'; |
$text['voltage_mark'] = 'V'; |
$text['rpm_mark'] = 'aps./min'; |
$text['app'] = 'Kernel + applications'; |
$text['buffers'] = 'Buffers'; |
$text['cached'] = 'Cached'; |
$text['connections'] = 'Established Network Connections'; |
$text['locale'] = 'en_US'; |
$text['gen_time'] = 'on %b %d, %Y at %I:%M %p'; |
?> |
/web/acc/phpsysinfo/includes/lang/ro.php |
---|
0,0 → 1,106 |
<?php |
// |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// |
// $Id: ro.php,v 1.0 6/9/01 12:41PM |
// Translated by Silviu Simen - ssimen@sympatico.ca |
$text['title'] = 'Informatii despre sistem'; |
$text['vitals'] = 'Informatii vitale'; |
$text['hostname'] = 'Numele canonic'; |
$text['ip'] = 'Adresa IP'; |
$text['kversion'] = 'Versiune nucleu'; |
$text['dversion'] = 'Distro Name'; |
$text['uptime'] = 'Timp de viata'; |
$text['users'] = 'Utilizatori curenti'; |
$text['loadavg'] = 'Incarcarea sistemului'; |
$text['hardware'] = 'Informatii hardware'; |
$text['numcpu'] = 'Procesoare'; |
$text['cpumodel'] = 'Model'; |
$text['cpuspeed'] = 'CPU Speed'; |
$text['busspeed'] = 'BUS Speed'; |
$text['cache'] = 'Marime Cache'; |
$text['bogomips'] = 'Bogomips'; |
$text['pci'] = 'Dispozitive PCI'; |
$text['ide'] = 'Dispozitive IDE'; |
$text['scsi'] = 'Dispozitive SCSI'; |
$text['usb'] = 'Dispozitive USB'; |
$text['netusage'] = 'Utilizarea retelei'; |
$text['device'] = 'Dispozitiv'; |
$text['received'] = 'Primit'; |
$text['sent'] = 'Trimis'; |
$text['errors'] = 'Erori'; |
$text['memusage'] = 'Utilizarea memoriei'; |
$text['phymem'] = 'Memorie fizica'; |
$text['swap'] = 'Disk Swap'; |
$text['fs'] = 'Sisteme de fisiere montate'; |
$text['mount'] = 'Punct montare'; |
$text['partition'] = 'Partitie'; |
$text['percent'] = 'Procent capacitate'; |
$text['type'] = 'Tip'; |
$text['free'] = 'Liber'; |
$text['used'] = 'Utilizat'; |
$text['size'] = 'Marime'; |
$text['totals'] = 'Total'; |
$text['kb'] = 'KB'; |
$text['mb'] = 'MB'; |
$text['gb'] = 'GB'; |
$text['none'] = 'nici unul'; |
$text['capacity'] = 'Capacitate'; |
$text['template'] = 'Model'; |
$text['language'] = 'Limba'; |
$text['submit'] = 'Actualizeaza'; |
$text['created'] = 'Creat de'; |
$text['locale'] = 'en_US'; |
$text['gen_time'] = 'on %b %d, %Y at %I:%M %p'; |
$text['days'] = 'zile'; |
$text['hours'] = 'ore'; |
$text['minutes'] = 'minute'; |
$text['temperature'] = 'Temperature'; |
$text['voltage'] = 'Voltage'; |
$text['fans'] = 'Fans'; |
$text['s_value'] = 'Value'; |
$text['s_min'] = 'Min'; |
$text['s_max'] = 'Max'; |
$text['hysteresis'] = 'Hysteresis'; |
$text['s_limit'] = 'Limit'; |
$text['s_label'] = 'Label'; |
$text['degreeC'] = '°C'; |
$text['degreeF'] = '°F'; |
$text['voltage_mark'] = 'V'; |
$text['rpm_mark'] = 'RPM'; |
$text['app'] = 'Kernel + applications'; |
$text['buffers'] = 'Buffers'; |
$text['cached'] = 'Cached'; |
$text['connections'] = 'Established Network Connections'; |
?> |
/web/acc/phpsysinfo/includes/lang/lv.php |
---|
0,0 → 1,106 |
<?php |
// |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// |
// $Id: lv.php,v 1.12 2007/02/18 19:11:31 bigmichi1 Exp $ |
$text['title'] = 'Sistçmas informâcija'; |
$text['vitals'] = 'Galvenie râdîtâji'; |
$text['hostname'] = 'Hosta vârds'; |
$text['ip'] = 'IP Adrese'; |
$text['kversion'] = 'Kerneïa versija'; |
$text['dversion'] = 'Distro Name'; |
$text['uptime'] = 'Nepârtrauktais darba laiks'; |
$text['users'] = 'Lietotâji'; |
$text['loadavg'] = 'Vidçjie ielâdes râdîtâji'; |
$text['hardware'] = 'Aparatûra'; |
$text['numcpu'] = 'Procesors'; |
$text['cpumodel'] = 'Modelis'; |
$text['cpuspeed'] = 'Èipa MHz'; |
$text['busspeed'] = 'BUS Speed'; |
$text['cache'] = 'Keð atmiòa'; |
$text['bogomips'] = 'Sistçmas "Bogomips"'; |
$text['pci'] = 'PCI ierîces'; |
$text['ide'] = 'IDE ierîces'; |
$text['scsi'] = 'SCSI ierîces'; |
$text['usb'] = 'USB ierîces'; |
$text['netusage'] = 'Tîkla informâcija'; |
$text['device'] = 'Ierîce'; |
$text['received'] = 'Saòemts'; |
$text['sent'] = 'Aizsûtîts'; |
$text['errors'] = 'Kïûdas/Zaudçtâs paketes'; |
$text['connections'] = 'Established Network Connections'; |
$text['memusage'] = 'Atmiòas lietojums'; |
$text['phymem'] = 'Operatîvâ atmiòa'; |
$text['swap'] = 'Swap atmiòa'; |
$text['fs'] = 'Cietie diski'; |
$text['mount'] = 'Mounta vieta'; |
$text['partition'] = 'Partîcija'; |
$text['percent'] = 'Aizòemts procentos'; |
$text['type'] = 'Tips'; |
$text['free'] = 'Brîvs'; |
$text['used'] = 'Aizòemts'; |
$text['size'] = 'Ietilpîba'; |
$text['totals'] = 'Kopâ'; |
$text['kb'] = 'KB'; |
$text['mb'] = 'MB'; |
$text['gb'] = 'GB'; |
$text['none'] = 'nav'; |
$text['capacity'] = 'Ietilpîba'; |
$text['template'] = 'Sagatave'; |
$text['language'] = 'Valoda'; |
$text['submit'] = 'Apstiprinât'; |
$text['created'] = 'Autors'; |
$text['locale'] = 'en_US'; |
$text['gen_time'] = 'on %b %d, %Y at %I:%M %p'; |
$text['days'] = 'dienas'; |
$text['hours'] = 'stundas'; |
$text['minutes'] = 'minûtes'; |
$text['temperature'] = 'Temperature'; |
$text['voltage'] = 'Voltage'; |
$text['fans'] = 'Fans'; |
$text['s_value'] = 'Value'; |
$text['s_min'] = 'Min'; |
$text['s_max'] = 'Max'; |
$text['hysteresis'] = 'Hysteresis'; |
$text['s_limit'] = 'Limit'; |
$text['s_label'] = 'Label'; |
$text['degreeC'] = '°C'; |
$text['degreeF'] = '°F'; |
$text['voltage_mark'] = 'V'; |
$text['rpm_mark'] = 'RPM'; |
$text['app'] = 'Kernel + applications'; |
$text['buffers'] = 'Buffers'; |
$text['cached'] = 'Cached'; |
?> |
/web/acc/phpsysinfo/includes/lang/ca.php |
---|
0,0 → 1,108 |
<?php |
// |
// phpSysInfo -A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// |
// $Id: ca.php,v 1.17 2007/02/18 19:11:31 bigmichi1 Exp $ |
// |
// Traductor: Miquel Guillamet Montalat |
// E-mail: mikelet15@netscape.com Web: http://gitx.dhs.org |
// |
$text['title'] = 'Informació del Sistema'; |
$text['vitals'] = 'Vital'; |
$text['hostname'] = 'Nom del Sistema'; |
$text['ip'] = 'Direcció IP'; |
$text['kversion'] = 'Versió del Kernel'; |
$text['dversion'] = 'Distro Name'; |
$text['uptime'] = 'Uptime'; |
$text['users'] = 'Usuaris actuals'; |
$text['loadavg'] = 'Carrega del Servidor'; |
$text['hardware'] = 'Informació del Hardware'; |
$text['numcpu'] = 'Processadors'; |
$text['cpumodel'] = 'Model'; |
$text['cpuspeed'] = 'Frequència en MHz'; |
$text['busspeed'] = 'BUS Speed'; |
$text['cache'] = 'RAM'; |
$text['bogomips'] = 'Bogomips'; |
$text['pci'] = 'Dispositius PCI'; |
$text['ide'] = 'Dispositius IDE'; |
$text['scsi'] = 'Dispositius SCSI'; |
$text['usb'] = 'Dispisitius USB'; |
$text['netusage'] = 'Utilització de la XARXA'; |
$text['device'] = 'Dispositiu'; |
$text['received'] = 'Rebut'; |
$text['sent'] = 'Enviat'; |
$text['errors'] = 'Errors/Perduts'; |
$text['memusage'] = 'Utilització de la RAM'; |
$text['phymem'] = 'Memoria Fisica'; |
$text['swap'] = 'Swap'; |
$text['fs'] = 'Particions Montades'; |
$text['mount'] = 'Montat a'; |
$text['partition'] = 'Partició'; |
$text['percent'] = 'Capacitat'; |
$text['type'] = 'Tipus'; |
$text['free'] = 'Lliure'; |
$text['used'] = 'Usat'; |
$text['size'] = 'Tamany'; |
$text['totals'] = 'Totals'; |
$text['kb'] = 'KB'; |
$text['mb'] = 'MB'; |
$text['gb'] = 'GB'; |
$text['none'] = 'ningun'; |
$text['capacity'] = 'Capacitat'; |
$text['template'] = 'Themes'; |
$text['language'] = 'Llenguatge'; |
$text['submit'] = 'Enviar'; |
$text['created'] = 'Creat per'; |
$text['locale'] = 'en_US'; |
$text['gen_time'] = 'on %b %d, %Y at %I:%M %p'; |
$text['days'] = 'dies'; |
$text['hours'] = 'hores'; |
$text['minutes'] = 'minuts'; |
$text['temperature'] = 'Temperature'; |
$text['voltage'] = 'Voltage'; |
$text['fans'] = 'Fans'; |
$text['s_value'] = 'Value'; |
$text['s_min'] = 'Min'; |
$text['s_max'] = 'Max'; |
$text['hysteresis'] = 'Hysteresis'; |
$text['s_limit'] = 'Limit'; |
$text['s_label'] = 'Label'; |
$text['degreeC'] = '°C'; |
$text['degreeF'] = '°F'; |
$text['voltage_mark'] = 'V'; |
$text['rpm_mark'] = 'RPM'; |
$text['app'] = 'Kernel + applications'; |
$text['buffers'] = 'Buffers'; |
$text['cached'] = 'Cached'; |
$text['connections'] = 'Established Network Connections'; |
?> |
/web/acc/phpsysinfo/includes/lang/pt.php |
---|
0,0 → 1,106 |
<?php |
// |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// |
// $Id: pt.php,v 1.15 2007/02/18 19:11:31 bigmichi1 Exp $ |
$text['title'] = 'Informações do Sistema'; |
$text['vitals'] = 'Informações Vitais'; |
$text['hostname'] = 'Hostname Canónico'; |
$text['ip'] = 'IP'; |
$text['kversion'] = 'Versão do Kernel'; |
$text['dversion'] = 'Distro Name'; |
$text['uptime'] = 'Uptime'; |
$text['users'] = 'Utilizadores Ligados'; |
$text['loadavg'] = 'Carga Média'; |
$text['hardware'] = 'Informações do Hardware'; |
$text['numcpu'] = 'Processadores'; |
$text['cpumodel'] = 'Modelo'; |
$text['cpuspeed'] = 'CPU Speed'; |
$text['busspeed'] = 'BUS Speed'; |
$text['cache'] = 'Tamanho da Cache'; |
$text['bogomips'] = 'Bogomips do Sistema'; |
$text['pci'] = 'Hardware PCI'; |
$text['ide'] = 'Hardware IDE'; |
$text['scsi'] = 'Hardware SCSI'; |
$text['usb'] = 'Hardware USB'; |
$text['netusage'] = 'Utilização da Rede'; |
$text['device'] = 'Dispositivo'; |
$text['received'] = 'Recebidos'; |
$text['sent'] = 'Enviados'; |
$text['errors'] = 'Erro/Rejeitados'; |
$text['connections'] = 'Ligações Estabelecidas'; |
$text['memusage'] = 'Utilização da Memória'; |
$text['phymem'] = 'Memória Física'; |
$text['swap'] = 'Swap'; |
$text['fs'] = 'Sistema de Ficheiros (Mounted)'; |
$text['mount'] = 'Mount'; |
$text['partition'] = 'Partições'; |
$text['percent'] = 'Capacidade em Percentagem'; |
$text['type'] = 'Tipo'; |
$text['free'] = 'Livre'; |
$text['used'] = 'Utilizada'; |
$text['size'] = 'Tamanho'; |
$text['totals'] = 'Totais'; |
$text['kb'] = 'KB'; |
$text['mb'] = 'MB'; |
$text['gb'] = 'GB'; |
$text['none'] = 'indisponível'; |
$text['capacity'] = 'Capacidade'; |
$text['template'] = 'Template'; |
$text['language'] = 'Idioma'; |
$text['submit'] = 'Enviar'; |
$text['created'] = 'Produzido por'; |
$text['locale'] = 'en_US'; |
$text['gen_time'] = 'on %b %d, %Y at %I:%M %p'; |
$text['days'] = 'dias'; |
$text['hours'] = 'horas'; |
$text['minutes'] = 'minutos'; |
$text['temperature'] = 'Temperature'; |
$text['voltage'] = 'Voltage'; |
$text['fans'] = 'Fans'; |
$text['s_value'] = 'Value'; |
$text['s_min'] = 'Min'; |
$text['s_max'] = 'Max'; |
$text['hysteresis'] = 'Hysteresis'; |
$text['s_limit'] = 'Limit'; |
$text['s_label'] = 'Label'; |
$text['degreeC'] = '°C'; |
$text['degreeF'] = '°F'; |
$text['voltage_mark'] = 'V'; |
$text['rpm_mark'] = 'RPM'; |
$text['app'] = 'Kernel + applications'; |
$text['buffers'] = 'Buffers'; |
$text['cached'] = 'Cached'; |
?> |
/web/acc/phpsysinfo/includes/lang/pt-br.php |
---|
0,0 → 1,110 |
<?php |
// |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// |
// $Id: pt-br.php,v 1.12 2007/02/18 19:11:31 bigmichi1 Exp $ |
// |
// Tradutor: Marcílio Cunha Marinho Maia, 29/03/2003 às 04:34 (Goiânia-GO,Brasil) |
// E-mail: marcilio@nextsolution.com.br Web: http://www.nextsolution.com.br |
// Icq: 22493131 |
$text['title'] = 'Informação Sobre o Sistema'; |
$text['vitals'] = 'Informações Vitais do Sistema'; |
$text['hostname'] = 'Nome do Servidor'; |
$text['ip'] = 'Número IP'; |
$text['kversion'] = 'Versão do Kernel'; |
$text['dversion'] = 'Distro Name'; |
$text['uptime'] = 'Tempo Ativo do Sistema'; |
$text['users'] = 'Usuarios Ativos'; |
$text['loadavg'] = 'Carga do Sistema'; |
$text['hardware'] = 'Informações sobre o Hardware'; |
$text['numcpu'] = 'Processadores'; |
$text['cpumodel'] = 'Modelo'; |
$text['cpuspeed'] = 'Velocidade em MHz'; |
$text['busspeed'] = 'BUS Speed'; |
$text['cache'] = 'Tamanho do Cache'; |
$text['bogomips'] = 'Velocidade em Bogomips'; |
$text['pci'] = 'Dispositivos PCI'; |
$text['ide'] = 'Dispositivos IDE'; |
$text['scsi'] = 'Dispositivos SCSI'; |
$text['usb'] = 'Dispositivos USB'; |
$text['netusage'] = 'Uso da Rede'; |
$text['device'] = 'Dispositivo'; |
$text['received'] = 'Recebido'; |
$text['sent'] = 'Enviado'; |
$text['errors'] = 'Perdido'; |
$text['connections'] = 'Conexões Estabelecidas'; |
$text['memusage'] = 'Utilização Memória'; |
$text['phymem'] = 'Memória Física'; |
$text['swap'] = 'Memória Virtual (SWAP)'; |
$text['fs'] = 'Sistemas de Arquivos'; |
$text['mount'] = 'Ponto de montagem'; |
$text['partition'] = 'Partição'; |
$text['percent'] = 'Capacidade Utilizada'; |
$text['type'] = 'Tipo'; |
$text['free'] = 'Livre'; |
$text['used'] = 'Utilizado'; |
$text['size'] = 'Tamanho'; |
$text['totals'] = 'Totais'; |
$text['kb'] = 'KB'; |
$text['mb'] = 'MB'; |
$text['gb'] = 'GB'; |
$text['none'] = 'N/A'; |
$text['capacity'] = 'Capacidade'; |
$text['template'] = 'Exemplos'; |
$text['language'] = 'Língua'; |
$text['submit'] = 'Entrar'; |
$text['created'] = 'Criado por'; |
$text['locale'] = 'en_US'; |
$text['gen_time'] = 'on %b %d, %Y at %I:%M %p'; |
$text['days'] = 'Dias'; |
$text['hours'] = 'Horas'; |
$text['minutes'] = 'Minutos'; |
$text['temperature'] = 'Temperature'; |
$text['voltage'] = 'Voltage'; |
$text['fans'] = 'Fans'; |
$text['s_value'] = 'Value'; |
$text['s_min'] = 'Min'; |
$text['s_max'] = 'Max'; |
$text['hysteresis'] = 'Hysteresis'; |
$text['s_limit'] = 'Limit'; |
$text['s_label'] = 'Label'; |
$text['degreeC'] = '°C'; |
$text['degreeF'] = '°F'; |
$text['voltage_mark'] = 'V'; |
$text['rpm_mark'] = 'RPM'; |
$text['app'] = 'Kernel + applications'; |
$text['buffers'] = 'Buffers'; |
$text['cached'] = 'Cached'; |
?> |
/web/acc/phpsysinfo/includes/lang/tr.php |
---|
0,0 → 1,106 |
<?php |
// |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// |
// $Id: tr.php,v 1.16 2007/02/18 19:11:31 bigmichi1 Exp $ |
$text['title'] = 'Sistem Bilgisi'; |
$text['vitals'] = 'Sistem Temel'; |
$text['hostname'] = 'Cannonical Host Adresi'; |
$text['ip'] = 'IP Adresi'; |
$text['kversion'] = 'Kernel Versiyonu'; |
$text['dversion'] = 'Distro Name'; |
$text['uptime'] = 'Açýk Kaldýðý Süre'; |
$text['users'] = 'Þu Andaki Kullanýcýlar'; |
$text['loadavg'] = 'Yükleme Ortalamasý'; |
$text['hardware'] = 'Hardware Bilgisi'; |
$text['numcpu'] = 'CPU Sayýsý'; |
$text['cpumodel'] = 'Model'; |
$text['cpuspeed'] = 'CPU Hýzý( Mhz)'; |
$text['busspeed'] = 'BUS Speed'; |
$text['cache'] = 'Cache Büyüklüðü'; |
$text['bogomips'] = 'Sistem Bogomips'; |
$text['pci'] = 'PCI Araçlar'; |
$text['ide'] = 'IDE Araçlar'; |
$text['scsi'] = 'SCSI Araçlar'; |
$text['usb'] = 'USB Araçlar'; |
$text['netusage'] = 'Network Kullanýmý'; |
$text['device'] = 'Arayüz'; |
$text['received'] = 'Alýnan'; |
$text['sent'] = 'Gönderilen'; |
$text['errors'] = 'Hata/Düþürülen'; |
$text['connections'] = 'Kurulmuþ Network Baðlantýlarý'; |
$text['memusage'] = 'Hafýza Kullanýmý'; |
$text['phymem'] = 'Fiziksel Hafýza'; |
$text['swap'] = 'Disk Swap'; |
$text['fs'] = 'Mount Edilmiþ Sistemler'; |
$text['mount'] = 'Mount'; |
$text['partition'] = 'Kýsým'; |
$text['percent'] = 'Yüzde Kapasite'; |
$text['type'] = 'Tür'; |
$text['free'] = 'Boþ Alan'; |
$text['used'] = 'Kullanýlan'; |
$text['size'] = 'Büyüklük'; |
$text['totals'] = 'Toplam'; |
$text['kb'] = 'KB'; |
$text['mb'] = 'MB'; |
$text['gb'] = 'GB'; |
$text['none'] = 'Hiçbiri'; |
$text['capacity'] = 'Kapasite'; |
$text['template'] = 'Arayüz'; |
$text['language'] = 'Dil'; |
$text['submit'] = 'Gönder'; |
$text['created'] = 'Yaratan'; |
$text['locale'] = 'en_US'; |
$text['gen_time'] = 'on %b %d, %Y at %I:%M %p'; |
$text['days'] = 'gün'; |
$text['hours'] = 'saat'; |
$text['minutes'] = 'dakika'; |
$text['temperature'] = 'Temperature'; |
$text['voltage'] = 'Voltage'; |
$text['fans'] = 'Fans'; |
$text['s_value'] = 'Value'; |
$text['s_min'] = 'Min'; |
$text['s_max'] = 'Max'; |
$text['hysteresis'] = 'Hysteresis'; |
$text['s_limit'] = 'Limit'; |
$text['s_label'] = 'Label'; |
$text['degreeC'] = '°C'; |
$text['degreeF'] = '°F'; |
$text['voltage_mark'] = 'V'; |
$text['rpm_mark'] = 'RPM'; |
$text['app'] = 'Kernel + applications'; |
$text['buffers'] = 'Buffers'; |
$text['cached'] = 'Cached'; |
?> |
/web/acc/phpsysinfo/includes/lang/ru.php |
---|
0,0 → 1,108 |
<?php |
// |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// |
// $Id: ru.php,v 1.0 2002/06/26 11:05:32 |
// Translated by Voldar (voldar@quality.s2.ru) |
$charset = 'cp1251'; |
$text['title'] = 'Ñèñòåìíàÿ èíôîðìàöèÿ'; |
$text['vitals'] = 'Îñíîâíûå äàííûå'; |
$text['hostname'] = 'Èìÿ õîñòà'; |
$text['ip'] = 'Ïðîñëóøèâàåìûé IP'; |
$text['kversion'] = 'Âåðñèÿ ÿäðà'; |
$text['dversion'] = 'Distro Name'; |
$text['uptime'] = 'Âðåìÿ ðàáîòû'; |
$text['users'] = 'Ïîëüçîâàòåëåé â ñèñòåìå'; |
$text['loadavg'] = 'Ñðåäíÿÿ çàãðóçêà'; |
$text['hardware'] = 'Àïïàðàòíîå îáåñïå÷åíèå'; |
$text['numcpu'] = 'Ïðîöåññîðû'; |
$text['cpumodel'] = 'Ìîäåëü'; |
$text['cpuspeed'] = 'Ñêîðîñòü ïðîöåññîðà MHz'; |
$text['busspeed'] = 'BUS Speed'; |
$text['cache'] = 'Ðàçìåð êåøà'; |
$text['bogomips'] = 'System Bogomips'; |
$text['pci'] = 'Óñòðîéñòâà PCI'; |
$text['ide'] = 'Óñòðîéñòâà IDE'; |
$text['scsi'] = 'Óñòðîéñòâà SCSI'; |
$text['usb'] = 'Óñòðîéñòâà USB'; |
$text['netusage'] = 'Èñïîëüçîâàíèå ñåòè'; |
$text['device'] = 'Óñòðîéñòâî'; |
$text['received'] = 'Ïîëó÷åíî'; |
$text['sent'] = 'Îòïðàâëåíî'; |
$text['errors'] = 'Îøèáîê'; |
$text['connections'] = 'Óñòàíîâëåííûå ñåòåâûå ñîåäèíåíèÿ'; |
$text['memusage'] = 'Èñïîëüçîâàíèå ïàìÿòè'; |
$text['phymem'] = 'Ôèçè÷åñêàÿ ïàìÿòü'; |
$text['swap'] = 'Ôàéë ïîäêà÷êè'; |
$text['fs'] = 'Ñìîíòèðîâàííûå ôàéëîâûå ñèñòåìû'; |
$text['mount'] = 'Òî÷êà ìîíòèðîâàíèÿ'; |
$text['partition'] = 'Ðàçäåë'; |
$text['percent'] = 'Ïðîöåíò èñïîëüçîâàíèÿ'; |
$text['type'] = 'Òèï'; |
$text['free'] = 'Ñâîáîäíî'; |
$text['used'] = 'Çàíÿòî'; |
$text['size'] = 'Ðàçìåð'; |
$text['totals'] = 'Âñåãî'; |
$text['kb'] = 'KB'; |
$text['mb'] = 'MB'; |
$text['gb'] = 'GB'; |
$text['none'] = 'îòñóòñòâóåò'; |
$text['capacity'] = 'Ðàçìåð'; |
$text['template'] = 'Øàáëîí'; |
$text['language'] = 'ßçûê'; |
$text['submit'] = 'Ïðèìåíèòü'; |
$text['created'] = 'Ñîçäàíî'; |
$text['locale'] = 'en_US'; |
$text['gen_time'] = 'on %b %d, %Y at %I:%M %p'; |
$text['days'] = 'äíåé'; |
$text['hours'] = 'hours'; |
$text['minutes'] = 'minutes'; |
$text['temperature'] = 'Temperature'; |
$text['voltage'] = 'Voltage'; |
$text['fans'] = 'Fans'; |
$text['s_value'] = 'Value'; |
$text['s_min'] = 'Min'; |
$text['s_max'] = 'Max'; |
$text['hysteresis'] = 'Hysteresis'; |
$text['s_limit'] = 'Limit'; |
$text['s_label'] = 'Label'; |
$text['degreeC'] = '°C'; |
$text['degreeF'] = '°F'; |
$text['voltage_mark'] = 'V'; |
$text['rpm_mark'] = 'RPM'; |
$text['app'] = 'Kernel + applications'; |
$text['buffers'] = 'Buffers'; |
$text['cached'] = 'Cached'; |
?> |
/web/acc/phpsysinfo/includes/lang/tw.php |
---|
0,0 → 1,107 |
<?php |
// |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// |
// $Id: tw.php,v 1.18 2007/02/18 19:11:31 bigmichi1 Exp $ |
$charset = 'big5'; |
$text['title'] = '¨t²Î¸ê°T'; |
$text['vitals'] = '¨t²Î¥Dn°T®§'; |
$text['hostname'] = '¥D¾÷¦WºÙ'; |
$text['ip'] = '¥D¾÷¹ï¥~ IP'; |
$text['kversion'] = '®Ö¤ßª©¥»'; |
$text['dversion'] = 'Distro Name'; |
$text['uptime'] = '¶}¾÷®É¶¡'; |
$text['users'] = '½u¤W¨Ï¥ÎªÌ'; |
$text['loadavg'] = '¥§¡t¸ü'; |
$text['hardware'] = 'µwÅé¸ê°T'; |
$text['numcpu'] = '³B²z¾¹¼Æ¶q'; |
$text['cpumodel'] = 'CPU«¬¸¹'; |
$text['cpuspeed'] = '´¹¤ù³t«×'; |
$text['busspeed'] = 'BUS Speed'; |
$text['cache'] = '§Ö¨ú¤j¤p'; |
$text['bogomips'] = '¨t²Î Bogomips'; |
$text['pci'] = 'PCI ³]³Æ'; |
$text['ide'] = 'IDE ³]³Æ'; |
$text['scsi'] = 'SCSI ³]³Æ'; |
$text['usb'] = 'USB ³]³Æ'; |
$text['netusage'] = 'ºô¸ô¨Ï¥Î¶q'; |
$text['device'] = 'ºô¸ô³]³Æ'; |
$text['received'] = '±µ¦¬'; |
$text['sent'] = '°e¥X'; |
$text['errors'] = '¿ù»~/¤¤Â_'; |
$text['memusage'] = '°O¾ÐÅé¨Ï¥Î¶q'; |
$text['phymem'] = '¹êÅé°O¾ÐÅé'; |
$text['swap'] = 'µêÀÀ°O¾ÐÅé(ºÏºÐ¸m´«)'; |
$text['fs'] = '¤w±¾¸üÀɮרt²Î'; |
$text['mount'] = '±¾¸ü¸ô®|'; |
$text['partition'] = '¤À³ÎºÏ°Ï'; |
$text['percent'] = '¨Ï¥Î¶q¦Ê¤À¤ñ'; |
$text['type'] = '«¬ºA'; |
$text['free'] = '³Ñ¾lªÅ¶¡'; |
$text['used'] = '¤w¨Ï¥Î'; |
$text['size'] = 'Á`®e¶q'; |
$text['totals'] = 'Á`¨Ï¥Î¶q'; |
$text['kb'] = 'KB'; |
$text['mb'] = 'MB'; |
$text['gb'] = 'GB'; |
$text['none'] = 'µL'; |
$text['capacity'] = '®e¶q'; |
$text['template'] = '½d¥»'; |
$text['language'] = '»y¨¥'; |
$text['submit'] = '°e¥X'; |
$text['created'] = '²£¥Í¥Ñ'; |
$text['locale'] = 'zh_TW.Big5'; |
$text['gen_time'] = 'on %b %d, %Y at %I:%M %p'; |
$text['days'] = '¤Ñ'; |
$text['hours'] = '¤p®É'; |
$text['minutes'] = '¤ÀÄÁ'; |
$text['temperature'] = 'Temperature'; |
$text['voltage'] = 'Voltage'; |
$text['fans'] = 'Fans'; |
$text['s_value'] = 'Value'; |
$text['s_min'] = 'Min'; |
$text['s_max'] = 'Max'; |
$text['hysteresis'] = 'Hysteresis'; |
$text['s_limit'] = 'Limit'; |
$text['s_label'] = 'Label'; |
$text['degreeC'] = '°C'; |
$text['degreeF'] = '°F'; |
$text['voltage_mark'] = 'V'; |
$text['rpm_mark'] = 'RPM'; |
$text['app'] = 'Kernel + applications'; |
$text['buffers'] = 'Buffers'; |
$text['cached'] = 'Cached'; |
$text['connections'] = 'Established Network Connections'; |
?> |
/web/acc/phpsysinfo/includes/lang/id.php |
---|
0,0 → 1,107 |
<?php |
// |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// |
// $Id: id.php,v 1.18 2007/02/18 19:11:31 bigmichi1 Exp $ |
// Translated by: Firman Pribadi <http://ragiel.dhs.org> |
$text['title'] = 'Informasi Sistem'; |
$text['vitals'] = 'Informasi Utama'; |
$text['hostname'] = 'Hostname Resmi'; |
$text['ip'] = 'IP Penerima'; |
$text['kversion'] = 'Versi Kernel'; |
$text['dversion'] = 'Distro Name'; |
$text['uptime'] = 'Aktif Selama'; |
$text['users'] = 'Pengguna Saat Ini'; |
$text['loadavg'] = 'Beban Rata-rata'; |
$text['hardware'] = 'Informasi Perangkat Keras'; |
$text['numcpu'] = 'Prosesor'; |
$text['cpumodel'] = 'Model'; |
$text['cpuspeed'] = 'CPU Speed'; |
$text['busspeed'] = 'BUS Speed'; |
$text['cache'] = 'Ukuran Cache'; |
$text['bogomips'] = 'Sistem Bogomips'; |
$text['pci'] = 'Perangkat PCI'; |
$text['ide'] = 'Perangkat IDE'; |
$text['scsi'] = 'Perangkat SCSI'; |
$text['usb'] = 'Perangkat USB'; |
$text['netusage'] = 'Status Penggunaan Jaringan'; |
$text['device'] = 'Perangkat'; |
$text['received'] = 'Diterima'; |
$text['sent'] = 'Dikirim'; |
$text['errors'] = 'Rusak/Drop'; |
$text['connections'] = 'Koneksi Jaringan Aktif'; |
$text['memusage'] = 'Status Penggunaan Memori'; |
$text['phymem'] = 'Memori Fisik'; |
$text['swap'] = 'Swap HardDisk'; |
$text['fs'] = 'Status Penggunaan Media Penyimpanan dan Filesystem'; |
$text['mount'] = 'Titik Mount'; |
$text['partition'] = 'Partisi'; |
$text['percent'] = 'Digunakan (Persen)'; |
$text['type'] = 'Tipe'; |
$text['free'] = 'Bebas'; |
$text['used'] = 'Digunakan'; |
$text['size'] = 'Ukuran'; |
$text['totals'] = 'Total'; |
$text['kb'] = 'KB'; |
$text['mb'] = 'MB'; |
$text['gb'] = 'GB'; |
$text['none'] = 'tidak ditemukan'; |
$text['capacity'] = 'Kapasitas'; |
$text['template'] = 'Template'; |
$text['language'] = 'Bahasa'; |
$text['submit'] = 'Gunakan'; |
$text['created'] = 'Dibangun menggunakan'; |
$text['locale'] = 'en_US'; |
$text['gen_time'] = 'on %b %d, %Y at %I:%M %p'; |
$text['days'] = 'hari'; |
$text['hours'] = 'jam'; |
$text['minutes'] = 'menit'; |
$text['temperature'] = 'Temperature'; |
$text['voltage'] = 'Voltage'; |
$text['fans'] = 'Fans'; |
$text['s_value'] = 'Value'; |
$text['s_min'] = 'Min'; |
$text['s_max'] = 'Max'; |
$text['hysteresis'] = 'Hysteresis'; |
$text['s_limit'] = 'Limit'; |
$text['s_label'] = 'Label'; |
$text['degreeC'] = '°C'; |
$text['degreeF'] = '°F'; |
$text['voltage_mark'] = 'V'; |
$text['rpm_mark'] = 'RPM'; |
$text['app'] = 'Kernel + applications'; |
$text['buffers'] = 'Buffers'; |
$text['cached'] = 'Cached'; |
?> |
/web/acc/phpsysinfo/includes/lang/cn.php |
---|
0,0 → 1,106 |
<?php |
// |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// |
// $Id: cn.php,v 1.17 2007/02/18 19:11:31 bigmichi1 Exp $ |
$charset = 'gb2312'; |
$text['title'] = 'ϵͳÐÅÏ¢'; |
$text['vitals'] = 'ϵͳÖ÷ÒªÐÅÏ¢'; |
$text['hostname'] = 'Ö÷»úÃû³Æ'; |
$text['ip'] = 'Ö÷»ú¶ÔÍâIP'; |
$text['kversion'] = 'Äں˰汾'; |
$text['dversion'] = 'Distro Name'; |
$text['uptime'] = '¿ª»úʱ¼ä'; |
$text['users'] = 'ÔÚÏßʹÓÃÕß'; |
$text['loadavg'] = 'ƽ¾ù¸ºÔØ'; |
$text['hardware'] = 'Ó²¼þÐÅÏ¢'; |
$text['numcpu'] = '´¦ÀíÆ÷ÊýÁ¿'; |
$text['cpumodel'] = 'CPUÐͺÅ'; |
$text['cpuspeed'] = 'оƬËÙ¶È'; |
$text['busspeed'] = 'BUS Speed'; |
$text['cache'] = 'Cache´óС'; |
$text['bogomips'] = 'ϵͳBogomips'; |
$text['pci'] = 'PCIÉ豸'; |
$text['ide'] = 'IDEÉ豸'; |
$text['scsi'] = 'SCSIÉ豸'; |
$text['usb'] = 'USBÉ豸'; |
$text['netusage'] = 'ÍøÂ縺ÔØ'; |
$text['device'] = 'ÍøÂçÉ豸'; |
$text['received'] = '½ÓÊÕ'; |
$text['sent'] = 'Ëͳö'; |
$text['errors'] = '´íÎó/ÖжÏ'; |
$text['memusage'] = 'ÄÚ´æʹÓÃÁ¿'; |
$text['phymem'] = 'ÎïÀíÄÚ´æ'; |
$text['swap'] = 'ÐéÄâÄÚ´æ(½»»»·ÖÇø)'; |
$text['fs'] = 'ÒѹÒÔØ·ÖÇø'; |
$text['mount'] = '¹ÒÔØ·¾¶'; |
$text['partition'] = 'ÎïÀí´ÅÅÌ'; |
$text['percent'] = 'ʹÓÃÁ¿°Ù·Ö±È'; |
$text['type'] = 'ÎļþϵͳÀàÐÍ'; |
$text['free'] = 'Ê£Óà¿Õ¼ä'; |
$text['used'] = 'ÒÑÓÿռä'; |
$text['size'] = '×ÜÈÝÁ¿'; |
$text['totals'] = '×ÜʹÓÃÁ¿'; |
$text['kb'] = 'KB'; |
$text['mb'] = 'MB'; |
$text['gb'] = 'GB'; |
$text['none'] = 'ÎÞ'; |
$text['capacity'] = 'ÈÝÁ¿'; |
$text['template'] = 'Ö÷Ìâ'; |
$text['language'] = 'ÓïÑÔ'; |
$text['submit'] = 'È·¶¨'; |
$text['created'] = 'Éú³É By'; |
$text['locale'] = 'zh_CN.eucCN'; |
$text['gen_time'] = 'on %b %d, %Y at %I:%M %p'; |
$text['days'] = 'Ìì'; |
$text['hours'] = 'Сʱ'; |
$text['minutes'] = '·ÖÖÓ'; |
$text['temperature'] = 'Temperature'; |
$text['voltage'] = 'Voltage'; |
$text['fans'] = 'Fans'; |
$text['s_value'] = 'Value'; |
$text['s_min'] = 'Min'; |
$text['s_max'] = 'Max'; |
$text['hysteresis'] = 'Hysteresis'; |
$text['s_limit'] = 'Limit'; |
$text['s_label'] = 'Label'; |
$text['degreeC'] = '°C'; |
$text['degreeF'] = '°F'; |
$text['voltage_mark'] = 'V'; |
$text['rpm_mark'] = 'RPM'; |
$text['app'] = 'Kernel + applications'; |
$text['buffers'] = 'Buffers'; |
$text['cached'] = 'Cached'; |
$text['connections'] = 'Established Network Connections'; |
?> |
/web/acc/phpsysinfo/includes/lang/en.php |
---|
0,0 → 1,118 |
<?php |
// |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// |
// $Id: en.php,v 1.21 2007/02/18 19:11:31 bigmichi1 Exp $ |
$text['title'] = 'System Information'; |
$text['vitals'] = 'System Vital'; |
$text['hostname'] = 'Canonical Hostname'; |
$text['ip'] = 'Listening IP'; |
$text['kversion'] = 'Kernel Version'; |
$text['dversion'] = 'Distro Name'; |
$text['uptime'] = 'Uptime'; |
$text['users'] = 'Current Users'; |
$text['loadavg'] = 'Load Averages'; |
$text['hardware'] = 'Hardware Information'; |
$text['numcpu'] = 'Processors'; |
$text['cpumodel'] = 'Model'; |
$text['cpuspeed'] = 'CPU Speed'; |
$text['busspeed'] = 'BUS Speed'; |
$text['cache'] = 'Cache Size'; |
$text['bogomips'] = 'System Bogomips'; |
$text['usb'] = 'USB Devices'; |
$text['pci'] = 'PCI Devices'; |
$text['ide'] = 'IDE Devices'; |
$text['scsi'] = 'SCSI Devices'; |
// |
$text['portail'] = 'General Informations about ALCASAR portal'; |
$text['portail-version']= 'Installed version'; |
$text['portail-disp'] = 'Available versions'; |
$text['utilisateur'] = 'logged user(s) / tot.'; |
$text['groupe'] = 'Number of group(s)'; |
$text['bl-version'] = 'Updated \'Blacklist\''; |
$text['internet_link'] = "Internet connexion"; |
$text['enable'] = "enable"; |
$text['disable'] = "disable"; |
$text['web_filter'] = "WEB filtering"; |
$text['net_filter'] = "Network protocols filtering"; |
// |
$text['netusage'] = 'Network Usage'; |
$text['device'] = 'Device'; |
$text['received'] = 'Received'; |
$text['sent'] = 'Sent'; |
$text['errors'] = 'Err/Drop'; |
$text['memusage'] = 'Memory Usage'; |
$text['phymem'] = 'Physical Memory'; |
$text['swap'] = 'Disk Swap'; |
$text['fs'] = 'Mounted Filesystems'; |
$text['mount'] = 'Mount'; |
$text['partition'] = 'Partition'; |
$text['percent'] = 'Percent Capacity'; |
$text['type'] = 'Type'; |
$text['free'] = 'Free'; |
$text['used'] = 'Used'; |
$text['size'] = 'Size'; |
$text['totals'] = 'Totals'; |
$text['kb'] = 'KB'; |
$text['mb'] = 'MB'; |
$text['gb'] = 'GB'; |
$text['none'] = 'none'; |
$text['capacity'] = 'Capacity'; |
$text['template'] = 'Template'; |
$text['language'] = 'Language'; |
$text['submit'] = 'Submit'; |
$text['created'] = 'Created by'; |
$text['locale'] = 'en_US'; |
$text['gen_time'] = 'on %b %d, %Y at %I:%M %p'; |
$text['days'] = 'days'; |
$text['hours'] = 'hours'; |
$text['minutes'] = 'minutes'; |
$text['temperature'] = 'Temperature'; |
$text['voltage'] = 'Voltage'; |
$text['fans'] = 'Fans'; |
$text['s_value'] = 'Value'; |
$text['s_min'] = 'Min'; |
$text['s_max'] = 'Max'; |
$text['hysteresis'] = 'Hysteresis'; |
$text['s_limit'] = 'Limit'; |
$text['s_label'] = 'Label'; |
$text['degreeC'] = '°C'; |
$text['degreeF'] = '°F'; |
$text['voltage_mark'] = 'V'; |
$text['rpm_mark'] = 'RPM'; |
$text['app'] = 'Kernel + applications'; |
$text['buffers'] = 'Buffers'; |
$text['cached'] = 'Cached'; |
$text['connections'] = 'Established Network Connections'; |
?> |
/web/acc/phpsysinfo/includes/lang/cs.php |
---|
0,0 → 1,107 |
<?php |
// |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// |
// $Id: cs.php,v 1.18 2007/02/18 19:11:31 bigmichi1 Exp $ |
$charset = 'iso-8859-2'; |
$text['title'] = 'Informace o systému'; |
$text['vitals'] = 'Základní informace'; |
$text['hostname'] = 'Jméno poèítaèe'; |
$text['ip'] = 'IP adresa'; |
$text['kversion'] = 'Verze jádra'; |
$text['dversion'] = 'Distro Name'; |
$text['uptime'] = 'Uptime'; |
$text['users'] = 'Pøihlá¹ených u¾ivatelù'; |
$text['loadavg'] = 'Prùmìrná zátì¾'; |
$text['hardware'] = 'Hardwarové informace'; |
$text['numcpu'] = 'Procesory'; |
$text['cpumodel'] = 'Model'; |
$text['cpuspeed'] = 'Frekvence'; |
$text['busspeed'] = 'BUS Speed'; |
$text['cache'] = 'Velikost cache'; |
$text['bogomips'] = 'Bogomipsy'; |
$text['pci'] = 'PCI zaøízení'; |
$text['ide'] = 'IDE zaøízení'; |
$text['scsi'] = 'SCSI zaøízení'; |
$text['usb'] = 'USB zaøízení'; |
$text['netusage'] = 'Pou¾ívání sítì'; |
$text['device'] = 'Zaøízení'; |
$text['received'] = 'Pøijato'; |
$text['sent'] = 'Odesláno'; |
$text['errors'] = 'Chyby/Vypu¹tìno'; |
$text['memusage'] = 'Obsazení pamìti'; |
$text['phymem'] = 'Fyzická pamì»'; |
$text['swap'] = 'Swap'; |
$text['fs'] = 'Pøipojené souborové systémy'; |
$text['mount'] = 'Adresáø'; |
$text['partition'] = 'Oddíl'; |
$text['percent'] = 'Obsazeno'; |
$text['type'] = 'Typ'; |
$text['free'] = 'Volno'; |
$text['used'] = 'Pou¾ito'; |
$text['size'] = 'Velikost'; |
$text['totals'] = 'Celkem'; |
$text['kb'] = 'KB'; |
$text['mb'] = 'MB'; |
$text['gb'] = 'GB'; |
$text['none'] = '¾ádná'; |
$text['capacity'] = 'Kapacita'; |
$text['template'] = '©ablona'; |
$text['language'] = 'Jazyk'; |
$text['submit'] = 'Odeslat'; |
$text['created'] = 'Vytvoøeno pomocí'; |
$text['locale'] = 'en_US'; |
$text['gen_time'] = 'on %b %d, %Y at %I:%M %p'; |
$text['days'] = 'dnù'; |
$text['hours'] = 'hodin'; |
$text['minutes'] = 'minut'; |
$text['temperature'] = 'Temperature'; |
$text['voltage'] = 'Voltage'; |
$text['fans'] = 'Fans'; |
$text['s_value'] = 'Value'; |
$text['s_min'] = 'Min'; |
$text['s_max'] = 'Max'; |
$text['hysteresis'] = 'Hysteresis'; |
$text['s_limit'] = 'Limit'; |
$text['s_label'] = 'Label'; |
$text['degreeC'] = '°C'; |
$text['degreeF'] = '°F'; |
$text['voltage_mark'] = 'V'; |
$text['rpm_mark'] = 'RPM'; |
$text['app'] = 'Kernel + applications'; |
$text['buffers'] = 'Buffers'; |
$text['cached'] = 'Cached'; |
$text['connections'] = 'Established Network Connections'; |
?> |
/web/acc/phpsysinfo/includes/lang/pa_utf8.php |
---|
0,0 → 1,108 |
<?php |
// |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// |
// $Id: pa_utf8.php,v 1.6 2007/02/18 19:11:31 bigmichi1 Exp $ |
$charset = 'utf-8'; |
$text['title'] = 'ਸਿਸਟਮ ਜਾਣਕਾਰੀ'; |
$text['vitals'] = 'ਸਿਸਟਮ ਮਾਰਕਮ'; |
$text['hostname'] = 'ਮੇਜ਼ਬਾਨ ਨਾਂ'; |
$text['ip'] = 'ਸੁਣਨ IP'; |
$text['kversion'] = 'ਕਰਨਲ ਵਰਜਨ'; |
$text['dversion'] = 'ਵੰਡ ਨਾਂ'; |
$text['uptime'] = 'ਚੱਲਣ ਸਮਾਂ'; |
$text['users'] = 'ਕੁੱਲ ਉਪਭੋਗੀ'; |
$text['loadavg'] = 'ਔਸਤ ਲੋਡ'; |
$text['hardware'] = 'ਜੰਤਰ ਜਾਣਕਾਰੀ'; |
$text['numcpu'] = 'ਪਰੋਸੈਸਰ'; |
$text['cpumodel'] = 'ਮਾਡਲ'; |
$text['cpuspeed'] = 'CPU ਗਤੀ'; |
$text['busspeed'] = 'ਬਸ ਗਤੀ'; |
$text['cache'] = 'ਕੈਂਚੇ ਅਕਾਰ'; |
$text['bogomips'] = 'ਸਿਸਟਮ Bogomips'; |
$text['pci'] = 'PCI ਜੰਤਰ'; |
$text['ide'] = 'IDE ਜੰਤਰ'; |
$text['scsi'] = 'SCSI ਜੰਤਰ'; |
$text['usb'] = 'USB ਜੰਤਰ'; |
$text['netusage'] = 'ਨੈੱਟਵਰਕ ਵਰਤੋਂ'; |
$text['device'] = 'ਜੰਤਰ'; |
$text['received'] = 'ਪਰਾਪਤ ਹੋਇਆ'; |
$text['sent'] = 'ਭੇਜਿਆ'; |
$text['errors'] = 'ਗਲਤੀ/ਸੁੱਟੇ'; |
$text['connections'] = 'ਸਥਾਪਤ ਨੈੱਟਵਰਕ ਕੁਨੈਕਸ਼ਨ'; |
$text['memusage'] = 'ਮੈਮੋਰੀ ਵਰਤੋਂ'; |
$text['phymem'] = 'ਭੌਤਿਕ ਮੈਮੋਰੀ'; |
$text['swap'] = 'ਡਿਸਕ ਸਵੈਪ'; |
$text['fs'] = 'ਮਾਊਂਟ ਕੀਤੇ ਫਾਇਲ ਸਿਸਟਮ'; |
$text['mount'] = 'ਮਾਊਂਟ'; |
$text['partition'] = 'ਭਾਗ'; |
$text['percent'] = 'ਫ਼ੀ-ਸਦੀ ਸਮੱਰਥਾ'; |
$text['type'] = 'ਕਿਸਮ'; |
$text['free'] = 'ਮੁਕਤ (ਖਾਲੀ)'; |
$text['used'] = 'ਵਰਤੀ'; |
$text['size'] = 'ਅਕਾਰ'; |
$text['totals'] = 'ਕੁੱਲ'; |
$text['kb'] = 'ਕਿਬਾ'; |
$text['mb'] = 'ਮੈਬਾ'; |
$text['gb'] = 'ਗੈਬਾ'; |
$text['none'] = 'ਕੋਈ ਨਹੀਂ'; |
$text['capacity'] = 'ਸਮੱਰਥਾ'; |
$text['template'] = 'ਨਮੂਨਾ'; |
$text['language'] = 'ਭਾਸ਼ਾ'; |
$text['submit'] = 'ਪੇਸ਼ ਕਰੋੇ'; |
$text['created'] = 'ਬਣਾਇਆ'; |
$text['locale'] = 'pa'; |
$text['gen_time'] = '%b %d, %Y ਨੂੰ %I:%M %p ਵਜੇ'; |
$text['days'] = 'ਦਿਨ'; |
$text['hours'] = 'ਘੰਟੇ'; |
$text['minutes'] = 'ਮਿੰਟ'; |
$text['temperature'] = 'ਤਾਪਮਾਨ'; |
$text['voltage'] = 'ਵੋਲਟੇਜ਼'; |
$text['fans'] = 'ਪੱਖੇ'; |
$text['s_value'] = 'ਮੁੱਲ'; |
$text['s_min'] = 'ਘੱਟੋ-ਘੱਟ'; |
$text['s_max'] = 'ਵੱਧੋ-ਵੱਧ'; |
$text['hysteresis'] = 'Hysteresis'; |
$text['s_limit'] = 'ਸੀਮਾ'; |
$text['s_label'] = 'ਲੇਬਲ'; |
$text['degreeC'] = '°C'; |
$text['degreeF'] = '°F'; |
$text['voltage_mark'] = 'V'; |
$text['rpm_mark'] = 'RPM'; |
$text['app'] = 'Kernel + applications'; |
$text['buffers'] = 'Buffers'; |
$text['cached'] = 'Cached'; |
?> |
/web/acc/phpsysinfo/includes/lang/ct.php |
---|
0,0 → 1,104 |
<?php |
// |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// |
// $Id: ct.php,v 1.17 2007/02/18 19:11:31 bigmichi1 Exp $ |
$text['title'] = 'Informació del Sistema'; |
$text['vitals'] = 'Vitals del Sistema'; |
$text['hostname'] = 'Nom Canònic'; |
$text['ip'] = 'Adreça IP'; |
$text['kversion'] = 'Versió del Kernel'; |
$text['dversion'] = 'Distro Name'; |
$text['uptime'] = 'Temps Aixecat'; |
$text['users'] = 'Usuaris Actuals'; |
$text['loadavg'] = 'Càrrega Promitg'; |
$text['hardware'] = 'Informació del Maquinari'; |
$text['numcpu'] = 'Processadors'; |
$text['cpumodel'] = 'Model'; |
$text['cpuspeed'] = 'Xip MHz'; |
$text['busspeed'] = 'BUS Speed'; |
$text['cache'] = 'Tamany Memòria Cau'; |
$text['bogomips'] = 'Bogomips'; |
$text['pci'] = 'Dispositius PCI'; |
$text['ide'] = 'Dispositius IDE'; |
$text['scsi'] = 'Dispositius SCSI'; |
$text['usb'] = 'Dispositius USB'; |
$text['netusage'] = 'Ús de la Xarxa'; |
$text['device'] = 'Dispositiu'; |
$text['received'] = 'Rebuts'; |
$text['sent'] = 'Enviats'; |
$text['errors'] = 'Errors/Perduts'; |
$text['memusage'] = 'Ús de la Memòria'; |
$text['phymem'] = 'Memòria Física'; |
$text['swap'] = 'Disc d\'Swap'; |
$text['fs'] = 'Sistemes d\'Arxius Muntats'; |
$text['mount'] = 'Muntat'; |
$text['partition'] = 'Partició'; |
$text['percent'] = 'Percentatge de Capacitat'; |
$text['type'] = 'Tipus'; |
$text['free'] = 'Lliure'; |
$text['used'] = 'Emprat'; |
$text['size'] = 'Tamany'; |
$text['totals'] = 'Totals'; |
$text['kb'] = 'KB'; |
$text['mb'] = 'MB'; |
$text['gb'] = 'GB'; |
$text['none'] = 'cap'; |
$text['capacity'] = 'Capacitat'; |
$text['template'] = 'Plantilla'; |
$text['language'] = 'Llengüa'; |
$text['submit'] = 'Enviar'; |
$text['created'] = 'Creat per'; |
$text['locale'] = 'en_US'; |
$text['gen_time'] = 'on %b %d, %Y at %I:%M %p'; |
$text['days'] = 'dies'; |
$text['hours'] = 'hores'; |
$text['minutes'] = 'minuts'; |
$text['temperature'] = 'Temperature'; |
$text['voltage'] = 'Voltage'; |
$text['fans'] = 'Fans'; |
$text['s_value'] = 'Value'; |
$text['s_min'] = 'Min'; |
$text['s_max'] = 'Max'; |
$text['hysteresis'] = 'Hysteresis'; |
$text['s_limit'] = 'Limit'; |
$text['s_label'] = 'Label'; |
$text['degreeC'] = '°C'; |
$text['degreeF'] = '°F'; |
$text['voltage_mark'] = 'V'; |
$text['rpm_mark'] = 'RPM'; |
$text['app'] = 'Kernel + applications'; |
$text['buffers'] = 'Buffers'; |
$text['cached'] = 'Cached'; |
$text['connections'] = 'Established Network Connections'; |
?> |
/web/acc/phpsysinfo/includes/lang/es.php |
---|
0,0 → 1,105 |
<?php |
// |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// |
// $Id: es.php,v 1.20 2007/02/18 19:11:31 bigmichi1 Exp $ |
$text['title'] = 'Información Del Sistema'; |
$text['vitals'] = 'Vitales'; |
$text['hostname'] = 'Nombre Del Sistema'; |
$text['ip'] = 'Dirección IP'; |
$text['kversion'] = 'Versión Del Núcleo'; |
$text['dversion'] = 'Distro Name'; |
$text['uptime'] = 'Uptime'; |
$text['users'] = 'Usuarios Actuales'; |
$text['loadavg'] = 'Promedio De Uso'; |
$text['hardware'] = 'Información Del Hardware'; |
$text['numcpu'] = 'Procesadores'; |
$text['cpumodel'] = 'Modelo'; |
$text['cpuspeed'] = 'Frecuencia'; |
$text['busspeed'] = 'BUS Speed'; |
$text['cache'] = 'Tamaño Del Caché'; |
$text['bogomips'] = 'Bogomips'; |
$text['pci'] = 'Dispositivos PCI'; |
$text['ide'] = 'Dispositivos IDE'; |
$text['scsi'] = 'Dispositivos SCSI'; |
$text['usb'] = 'Dispositivos USB'; |
$text['netusage'] = 'Utilización De La Red'; |
$text['device'] = 'Dispositivo'; |
$text['received'] = 'Recibidos'; |
$text['sent'] = 'Enviados'; |
$text['errors'] = 'Errores/Perdidos'; |
$text['memusage'] = 'Utilización De La Memoria'; |
$text['phymem'] = 'Memoria Física'; |
$text['swap'] = 'Memoria De Intercambio'; |
$text['fs'] = 'Sistemas De Archivos'; |
$text['mount'] = 'Punto De Montaje'; |
$text['partition'] = 'Partición'; |
$text['percent'] = 'Porcentaje De Uso'; |
$text['type'] = 'Tipo'; |
$text['free'] = 'Libre'; |
$text['used'] = 'Usado'; |
$text['size'] = 'Tamaño'; |
$text['totals'] = 'Totales'; |
$text['kb'] = 'KB'; |
$text['mb'] = 'MB'; |
$text['gb'] = 'GB'; |
$text['none'] = 'Ninguno'; |
$text['capacity'] = 'Capacidad'; |
$text['template'] = 'Plantilla'; |
$text['language'] = 'Idioma'; |
$text['submit'] = 'Enviar'; |
$text['created'] = 'Creado por'; |
$text['locale'] = 'en_US'; |
$text['gen_time'] = 'on %b %d, %Y at %I:%M %p'; |
$text['days'] = 'días'; |
$text['hours'] = 'horas'; |
$text['minutes'] = 'minutos'; |
$text['temperature'] = 'Temperature'; |
$text['voltage'] = 'Voltage'; |
$text['fans'] = 'Fans'; |
$text['s_value'] = 'Value'; |
$text['s_min'] = 'Min'; |
$text['s_max'] = 'Max'; |
$text['hysteresis'] = 'Hysteresis'; |
$text['s_limit'] = 'Limit'; |
$text['s_label'] = 'Label'; |
$text['degreeC'] = '°C'; |
$text['degreeF'] = '°F'; |
$text['voltage_mark'] = 'V'; |
$text['rpm_mark'] = 'RPM'; |
$text['app'] = 'Kernel + applications'; |
$text['buffers'] = 'Buffers'; |
$text['cached'] = 'Cached'; |
$text['connections'] = 'Established Network Connections'; |
?> |
/web/acc/phpsysinfo/includes/lang/et.php |
---|
0,0 → 1,105 |
<?php |
// |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// |
// $Id: et.php,v 1.21 2007/02/18 19:11:31 bigmichi1 Exp $ |
$text['title'] = 'Süsteemi informatsioon'; |
$text['vitals'] = 'System Vital'; |
$text['hostname'] = 'Kanooniline masinanimi'; |
$text['ip'] = 'Vastav IP'; |
$text['kversion'] = 'Kerneli versioon'; |
$text['dversion'] = 'Distro nimi'; |
$text['uptime'] = 'Masin elus juba'; |
$text['users'] = 'Hetkel kasutajaid'; |
$text['loadavg'] = 'Koormuse keskmised'; |
$text['hardware'] = 'Riistvara informatsioon'; |
$text['numcpu'] = 'Protsessoreid'; |
$text['cpumodel'] = 'Mudel'; |
$text['cpuspeed'] = 'Taktsagedus MHz'; |
$text['busspeed'] = 'Siinikiirus'; |
$text['cache'] = 'Vahemälu suurus'; |
$text['bogomips'] = 'Süsteemi BogoMIPS'; |
$text['pci'] = 'PCI-seadmed'; |
$text['ide'] = 'IDE-seadmed'; |
$text['scsi'] = 'SCSI-seadmed'; |
$text['usb'] = 'USB-seadmed'; |
$text['netusage'] = 'Võrguteenuse kasutamine'; |
$text['device'] = 'Seade'; |
$text['received'] = 'Saadud'; |
$text['sent'] = 'Saadetud'; |
$text['errors'] = 'Vigu/Hüljatud'; |
$text['memusage'] = 'Mälu kasutamine'; |
$text['phymem'] = 'Füüsiline mälu'; |
$text['swap'] = 'Saalemälu kettal'; |
$text['fs'] = 'Ühendatud failisüsteemid'; |
$text['mount'] = 'Ühendus'; |
$text['partition'] = 'Partitsioon'; |
$text['percent'] = 'Protsendiline hõivatus'; |
$text['type'] = 'Tüüp'; |
$text['free'] = 'Vaba'; |
$text['used'] = 'Kasutusel'; |
$text['size'] = 'Suurus'; |
$text['totals'] = 'Kokku'; |
$text['kb'] = 'KB'; |
$text['mb'] = 'MB'; |
$text['gb'] = 'GB'; |
$text['none'] = 'puudub'; |
$text['capacity'] = 'Hõivatus'; |
$text['template'] = 'Mall'; |
$text['language'] = 'Keel'; |
$text['submit'] = 'Kehtesta'; |
$text['created'] = 'Looja:'; |
$text['locale'] = 'en_US'; |
$text['gen_time'] = 'on %b %d, %Y at %I:%M %p'; |
$text['days'] = 'päeva'; |
$text['hours'] = 'tundi'; |
$text['minutes'] = 'minutit'; |
$text['temperature'] = 'Temperatuur'; |
$text['voltage'] = 'Pinge'; |
$text['fans'] = 'Ventilaatorid'; |
$text['s_value'] = 'Väärtus'; |
$text['s_min'] = 'Min'; |
$text['s_max'] = 'Max'; |
$text['hysteresis'] = 'Hüsterees'; |
$text['s_limit'] = 'Limiit'; |
$text['s_label'] = 'Label'; |
$text['degreeC'] = '°C'; |
$text['degreeF'] = '°F'; |
$text['voltage_mark'] = 'V'; |
$text['rpm_mark'] = 'RPM'; |
$text['app'] = 'Kernel + rakendused'; |
$text['buffers'] = 'Puhvrid'; |
$text['cached'] = 'Vahemälus'; |
$text['connections'] = 'Established Network Connections'; |
?> |
/web/acc/phpsysinfo/includes/lang/gr.php |
---|
0,0 → 1,108 |
<?php |
// |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// |
// $Id: gr.php,v 1.15 2007/02/18 19:11:31 bigmichi1 Exp $ |
$charset = "iso-8895-7"; |
$text['title'] = 'Ðëçñïöïñßåò ÓõóôÞìáôïò'; |
$text['vitals'] = '×áñáêôçñéóôéêÜ ÓõóôÞìáôïò'; |
$text['hostname'] = '¼íïìá ÕðïëïãéóôÞ'; |
$text['ip'] = 'Äéåõèõíóç ÉÑ'; |
$text['kversion'] = 'Åêäïóç ÐõñÞíá'; |
$text['dversion'] = 'Distro Name'; |
$text['uptime'] = '×ñüíïò Ëåéôïõñãßáò ÓõóôÞìáôïò'; |
$text['users'] = 'ÓõíäåìÝíïé ×ñÞóôåò'; |
$text['loadavg'] = 'Load Average'; |
$text['hardware'] = 'Ðëçñïöïñßåò Õëéêïý'; |
$text['numcpu'] = 'ÅðåîåñãáóôÝò'; |
$text['cpumodel'] = 'ÌïíôÝëï'; |
$text['cpuspeed'] = 'Ôá÷ýôçôá MHz'; |
$text['busspeed'] = 'BUS Speed'; |
$text['cache'] = 'ÌÝãåèïò ÌíÞìçò Cache'; |
$text['bogomips'] = 'ÅðåîåñãáóôéêÞ Éó÷ýò óå Bogomips'; |
$text['pci'] = 'ÓõóêåõÝò PCI'; |
$text['ide'] = 'ÓõóêåõÝò IDE'; |
$text['scsi'] = 'ÓõóêåõÝò SCSI'; |
$text['usb'] = 'ÓõóêåõÝò USB'; |
$text['netusage'] = '×ñÞóç Äéêôýïõ'; |
$text['device'] = 'ÓõóêåõÞ'; |
$text['received'] = 'Ëáìâáíüìåíá'; |
$text['sent'] = 'ÁðïóôáëìÝíá'; |
$text['errors'] = 'ÓöÜëìáôá'; |
$text['connections'] = 'ÅíåñãÝò ÓõíäÝóçò Äéêôýïõ'; |
$text['memusage'] = '×ñÞóç ÌíÞìçò'; |
$text['phymem'] = 'ÌíÞìç Physical'; |
$text['swap'] = 'Äßóêïò Swap'; |
$text['fs'] = 'ÐñïóáñôçìÝíá ÓõóôÞìáôá Áñ÷åßùí'; |
$text['mount'] = 'ÐñïóÜñôçóç'; |
$text['partition'] = 'ÊáôÜôìçóç'; |
$text['percent'] = '×ùñçôéêüôçôá %'; |
$text['type'] = 'Ôýðïò'; |
$text['free'] = 'Åëåýèåñá'; |
$text['used'] = 'Óå ÷ñÞóç'; |
$text['size'] = 'ÌÝãåèïò'; |
$text['totals'] = 'ÓõíïëéêÜ'; |
$text['kb'] = 'KB'; |
$text['mb'] = 'MB'; |
$text['gb'] = 'GB'; |
$text['none'] = '-'; |
$text['capacity'] = '×ùñçôéêüôçôá'; |
$text['template'] = 'ÈÝìá'; |
$text['language'] = 'Ãëþóóá'; |
$text['submit'] = 'ÕðïâïëÞ'; |
$text['created'] = 'ÄçìéïõñãÞèçêå áðü ôï'; |
$text['locale'] = 'en_US'; |
$text['gen_time'] = 'on %b %d, %Y at %I:%M %p'; |
$text['days'] = 'ìÝñåò'; |
$text['hours'] = 'þñåò'; |
$text['minutes'] = 'ëåðôÜ'; |
$text['temperature'] = 'Temperature'; |
$text['voltage'] = 'Voltage'; |
$text['fans'] = 'Fans'; |
$text['s_value'] = 'Value'; |
$text['s_min'] = 'Min'; |
$text['s_max'] = 'Max'; |
$text['hysteresis'] = 'Hysteresis'; |
$text['s_limit'] = 'Limit'; |
$text['s_label'] = 'Label'; |
$text['degreeC'] = '°C'; |
$text['degreeF'] = '°F'; |
$text['voltage_mark'] = 'V'; |
$text['rpm_mark'] = 'RPM'; |
$text['app'] = 'Kernel + applications'; |
$text['buffers'] = 'Buffers'; |
$text['cached'] = 'Cached'; |
?> |
/web/acc/phpsysinfo/includes/lang/eu.php |
---|
0,0 → 1,106 |
<?php |
// |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// |
// $Id: eu.php,v 1.16 2007/02/18 19:11:31 bigmichi1 Exp $ |
$text['title'] = 'Sistemaren Informazioa'; |
$text['vitals'] = 'Sistema'; |
$text['hostname'] = 'Zerbitzariaren izen Kanonikoa'; |
$text['ip'] = 'Entzuten duen IP-a'; |
$text['kversion'] = 'Kernel Bertsioa'; |
$text['dversion'] = 'Distro Name'; |
$text['uptime'] = 'Piztutako denbora'; |
$text['users'] = 'Uneko Erabiltzaileak'; |
$text['loadavg'] = 'Karga ertainak'; |
$text['hardware'] = 'Hardwarezko Informazioa'; |
$text['numcpu'] = 'Prozasatzailea'; |
$text['cpumodel'] = 'Modeloa'; |
$text['cpuspeed'] = 'Txip MHz'; |
$text['busspeed'] = 'BUS Speed'; |
$text['cache'] = 'Cache tamaina'; |
$text['bogomips'] = 'Sistemare Bogomips-ak'; |
$text['pci'] = 'PCI Dispositiboak'; |
$text['ide'] = 'IDE Dispositiboak'; |
$text['scsi'] = 'SCSI Dispositiboak'; |
$text['usb'] = 'USB Dispositiboak'; |
$text['netusage'] = 'Sarearen Erabilera'; |
$text['device'] = 'Dispositiboa'; |
$text['received'] = 'Jasotakoa'; |
$text['sent'] = 'Bidalitakoa'; |
$text['errors'] = 'Err/Huts'; |
$text['connections'] = 'Established Network Connections'; |
$text['memusage'] = 'Memoriaren Erabilpena'; |
$text['phymem'] = 'Memoria Fisikoa'; |
$text['swap'] = 'Disko Memoria'; |
$text['fs'] = 'Montatutako Fitxategi-sistemak'; |
$text['mount'] = 'Non montatuta'; |
$text['partition'] = 'Partizioa'; |
$text['percent'] = 'Ehunekoa'; |
$text['type'] = 'Mota'; |
$text['free'] = 'Aske'; |
$text['used'] = 'Erabilita'; |
$text['size'] = 'Tamaina'; |
$text['totals'] = 'Guztira'; |
$text['kb'] = 'KB'; |
$text['mb'] = 'MB'; |
$text['gb'] = 'GB'; |
$text['none'] = 'ezer ez'; |
$text['capacity'] = 'Kapazitatea'; |
$text['template'] = 'Txantiloia'; |
$text['language'] = 'Langoaia'; |
$text['submit'] = 'Bidali'; |
$text['created'] = 'Sortzailea: '; |
$text['locale'] = 'en_US'; |
$text['gen_time'] = 'on %b %d, %Y at %I:%M %p'; |
$text['days'] = 'egun'; |
$text['hours'] = 'ordu'; |
$text['minutes'] = 'minutu'; |
$text['temperature'] = 'Temperature'; |
$text['voltage'] = 'Voltage'; |
$text['fans'] = 'Fans'; |
$text['s_value'] = 'Value'; |
$text['s_min'] = 'Min'; |
$text['s_max'] = 'Max'; |
$text['hysteresis'] = 'Hysteresis'; |
$text['s_limit'] = 'Limit'; |
$text['s_label'] = 'Label'; |
$text['degreeC'] = '°C'; |
$text['degreeF'] = '°F'; |
$text['voltage_mark'] = 'V'; |
$text['rpm_mark'] = 'RPM'; |
$text['app'] = 'Kernel + applications'; |
$text['buffers'] = 'Buffers'; |
$text['cached'] = 'Cached'; |
?> |
/web/acc/phpsysinfo/includes/lang/ko.php |
---|
0,0 → 1,108 |
<?php |
// |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// |
// $Id: ko.php,v 1.17 2007/02/18 19:11:31 bigmichi1 Exp $ |
// Translated by Sungkook KIM - ace@aceteam.org |
$charset = 'euc-kr'; |
$text['title'] = '½Ã½ºÅÛ Á¤º¸'; |
$text['vitals'] = 'ÇöÀç ½Ã½ºÅÛ »óȲ'; |
$text['hostname'] = '½Ã½ºÅÛÀÇ È£½ºÆ®³×ÀÓ'; |
$text['ip'] = '½Ã½ºÅÛÀÇ IP ÁÖ¼Ò'; |
$text['kversion'] = 'Ä¿³Î ¹öÁ¯'; |
$text['dversion'] = 'Distro Name'; |
$text['uptime'] = '½ÇÇà ½Ã°£'; |
$text['users'] = 'ÇöÀç Á¢¼ÓÀÚ ¼ö'; |
$text['loadavg'] = 'Æò±Õ ·Îµå'; |
$text['hardware'] = 'Çϵå¿þ¾î Á¤º¸'; |
$text['numcpu'] = 'ÇÁ·Î¼¼¼ °¹¼ö'; |
$text['cpumodel'] = 'ÇÁ·Î¼¼¼ ¸ðµ¨'; |
$text['cpuspeed'] = 'Ĩ¼Â Ŭ·°'; |
$text['busspeed'] = 'BUS Speed'; |
$text['cache'] = 'Äɽ¬ »çÀÌÁî'; |
$text['bogomips'] = 'ÀÚüÅ×½ºÆ® Ŭ·°'; |
$text['pci'] = 'PCI ÀåÄ¡'; |
$text['ide'] = 'IDE ÀåÄ¡'; |
$text['scsi'] = 'SCSI ÀåÄ¡'; |
$text['usb'] = 'USB ÀåÄ¡'; |
$text['netusage'] = ' ³×Æ®¿öÅ© »ç¿ëÁ¤º¸'; |
$text['device'] = 'ÀåÄ¡'; |
$text['received'] = '¹ÞÀº ·®'; |
$text['sent'] = 'º¸³½ ·®'; |
$text['errors'] = '¿¡·¯ / ½ÇÆÐ'; |
$text['memusage'] = '¸Þ¸ð¸® »ç¿ë·®'; |
$text['phymem'] = '¹°¸®Àû ¸Þ¸ð¸®'; |
$text['swap'] = '½º¿Ò µð½ºÅ©'; |
$text['fs'] = '¸¶¿îÆ® ÇöȲ'; |
$text['mount'] = '¸¶¿îÆ®'; |
$text['partition'] = 'ÆÄƼ¼Ç'; |
$text['percent'] = ' ÆÛ¼¾Æ®'; |
$text['type'] = 'ŸÀÔ'; |
$text['free'] = '³²Àº·®'; |
$text['used'] = '»ç¿ë·®'; |
$text['size'] = 'ÃÑ ¿ë·®'; |
$text['totals'] = 'ÇÕ°è'; |
$text['kb'] = 'ų·Î¹ÙÀÌÆ®(KB)'; |
$text['mb'] = '¸Þ°¡¹ÙÀÌÆ®(MB)'; |
$text['gb'] = '±â°¡¹ÙÀÌÆ®(GB)'; |
$text['none'] = '¾øÀ½'; |
$text['capacity'] = '¿ë·®'; |
$text['template'] = 'ÅÛÇø´'; |
$text['language'] = '¾ð¾î'; |
$text['submit'] = 'Àû¿ë'; |
$text['created'] = '¸¸µçÀÌ'; |
$text['locale'] = 'en_US'; |
$text['gen_time'] = 'on %b %d, %Y at %I:%M %p'; |
$text['days'] = 'ÀÏ'; |
$text['hours'] = '½Ã'; |
$text['minutes'] = 'ºÐ'; |
$text['temperature'] = 'Temperature'; |
$text['voltage'] = 'Voltage'; |
$text['fans'] = 'Fans'; |
$text['s_value'] = 'Value'; |
$text['s_min'] = 'Min'; |
$text['s_max'] = 'Max'; |
$text['hysteresis'] = 'Hysteresis'; |
$text['s_limit'] = 'Limit'; |
$text['s_label'] = 'Label'; |
$text['degreeC'] = '°C'; |
$text['degreeF'] = '°F'; |
$text['voltage_mark'] = 'V'; |
$text['rpm_mark'] = 'RPM'; |
$text['app'] = 'Kernel + applications'; |
$text['buffers'] = 'Buffers'; |
$text['cached'] = 'Cached'; |
$text['connections'] = 'Established Network Connections'; |
?> |
/web/acc/phpsysinfo/includes/lang/is.php |
---|
0,0 → 1,105 |
<?php |
// |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// |
// $Id: is.php,v 1.18 2007/02/18 19:11:31 bigmichi1 Exp $ |
$text['title'] = 'Kerfisupplýsingar'; |
$text['vitals'] = 'Helstu upplýsingar'; |
$text['hostname'] = 'Vélarnafn'; |
$text['ip'] = 'IP-tala'; |
$text['kversion'] = 'Útgáfa kjarna'; |
$text['dversion'] = 'Nafn dreifingar'; |
$text['uptime'] = 'Uppitími'; |
$text['users'] = 'Notendur'; |
$text['loadavg'] = 'Meðalálag'; |
$text['hardware'] = 'Upplýsingar um vélbúnað'; |
$text['numcpu'] = 'Fjöldi örgjörva'; |
$text['cpumodel'] = 'Tegund'; |
$text['cpuspeed'] = 'Hraði'; |
$text['busspeed'] = 'BUS Speed'; |
$text['cache'] = 'Stærð flýtiminnis'; |
$text['bogomips'] = 'Bogomips'; |
$text['pci'] = 'PCI jaðartæki'; |
$text['ide'] = 'IDE jaðartæki'; |
$text['scsi'] = 'SCSI jaðartæki'; |
$text['usb'] = 'USB jaðartæki'; |
$text['netusage'] = 'Netnotkun'; |
$text['device'] = 'Jaðartæki'; |
$text['received'] = 'Móttekið'; |
$text['sent'] = 'Sent'; |
$text['errors'] = 'Villur/Hent'; |
$text['memusage'] = 'Minnisnotkun'; |
$text['phymem'] = 'Vinnsluminni'; |
$text['swap'] = 'Sýndarminni'; |
$text['fs'] = 'Tengd skráarkerfi'; |
$text['mount'] = 'Tengipunktur'; |
$text['partition'] = 'Disksneið'; |
$text['percent'] = 'Hlutfall af heildarstærð'; |
$text['type'] = 'Tegund'; |
$text['free'] = 'Laust'; |
$text['used'] = 'Notað'; |
$text['size'] = 'Stærð'; |
$text['totals'] = 'Samtals'; |
$text['kb'] = 'KB'; |
$text['mb'] = 'MB'; |
$text['gb'] = 'GB'; |
$text['none'] = 'ekkert'; |
$text['capacity'] = 'Heildarstærð'; |
$text['template'] = 'Sniðmát'; |
$text['language'] = 'Tungumál'; |
$text['submit'] = 'Senda'; |
$text['created'] = 'Búið til af'; |
$text['locale'] = 'is_IS'; |
$text['gen_time'] = 'þann %d.%m.%Y kl. %H:%M'; |
$text['days'] = 'dagar'; |
$text['hours'] = 'klukkustundir'; |
$text['minutes'] = 'mínútur'; |
$text['temperature'] = 'Hitastig'; |
$text['voltage'] = 'Volt'; |
$text['fans'] = 'Viftur'; |
$text['s_value'] = 'Gildi'; |
$text['s_min'] = 'Lægst'; |
$text['s_max'] = 'Hæst'; |
$text['hysteresis'] = 'Aðvörun lýkur'; |
$text['s_limit'] = 'Aðvörun byrjar'; |
$text['s_label'] = 'Nafn mælis'; |
$text['degreeC'] = '°C'; |
$text['degreeF'] = '°F'; |
$text['voltage_mark'] = 'V'; |
$text['rpm_mark'] = 'RPM'; |
$text['app'] = 'Kernel + applications'; |
$text['buffers'] = 'Buffers'; |
$text['cached'] = 'Cached'; |
$text['connections'] = 'Established Network Connections'; |
?> |
/web/acc/phpsysinfo/includes/lang/it.php |
---|
0,0 → 1,105 |
<?php |
// |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// |
// $Id: it.php,v 1.19 2007/02/18 19:11:31 bigmichi1 Exp $ |
$text['title'] = 'Informazioni sul Sistema'; |
$text['vitals'] = 'Informazioni Vitali'; |
$text['hostname'] = 'Nome Canonico'; |
$text['ip'] = 'Indirizzo IP'; |
$text['kversion'] = 'Versione del Kernel'; |
$text['dversion'] = 'Distro Name'; |
$text['uptime'] = 'Tempo di Esercizio'; |
$text['users'] = 'Utenti Collegati'; |
$text['loadavg'] = 'Carico Medio'; |
$text['hardware'] = 'Informazioni Hardware'; |
$text['numcpu'] = 'Processori'; |
$text['cpumodel'] = 'Modello'; |
$text['cpuspeed'] = 'MHz del Chip'; |
$text['busspeed'] = 'BUS Speed'; |
$text['cache'] = 'Dimensione Cache'; |
$text['bogomips'] = 'Bogomips del Sistema'; |
$text['pci'] = 'Unità PCI'; |
$text['ide'] = 'Unità IDE'; |
$text['scsi'] = 'Unità SCSI'; |
$text['usb'] = 'Unità USB'; |
$text['netusage'] = 'Utilizzo della Rete'; |
$text['device'] = 'Device'; |
$text['received'] = 'Ricevuti'; |
$text['sent'] = 'Inviati'; |
$text['errors'] = 'Err/Drop'; |
$text['memusage'] = 'Utilizzo della Memoria'; |
$text['phymem'] = 'Memoria Fisica'; |
$text['swap'] = 'Disco di Swap'; |
$text['fs'] = 'Filesystem Montati'; |
$text['mount'] = 'Punto di Mount'; |
$text['partition'] = 'Partizione'; |
$text['percent'] = 'Uso Percentuale'; |
$text['type'] = 'Tipo'; |
$text['free'] = 'Libero'; |
$text['used'] = 'Usato'; |
$text['size'] = 'Dimensione'; |
$text['totals'] = 'Totali'; |
$text['kb'] = 'KB'; |
$text['mb'] = 'MB'; |
$text['gb'] = 'GB'; |
$text['none'] = 'none'; |
$text['capacity'] = 'Capacità'; |
$text['template'] = 'Template'; |
$text['language'] = 'Lingua'; |
$text['submit'] = 'Invia'; |
$text['created'] = 'Creato da'; |
$text['locale'] = 'en_US'; |
$text['gen_time'] = 'on %b %d, %Y at %I:%M %p'; |
$text['days'] = 'giorni'; |
$text['hours'] = 'ore'; |
$text['minutes'] = 'minuti'; |
$text['temperature'] = 'Temperature'; |
$text['voltage'] = 'Voltage'; |
$text['fans'] = 'Fans'; |
$text['s_value'] = 'Value'; |
$text['s_min'] = 'Min'; |
$text['s_max'] = 'Max'; |
$text['hysteresis'] = 'Hysteresis'; |
$text['s_limit'] = 'Limit'; |
$text['s_label'] = 'Label'; |
$text['degreeC'] = '°C'; |
$text['degreeF'] = '°F'; |
$text['voltage_mark'] = 'V'; |
$text['rpm_mark'] = 'RPM'; |
$text['app'] = 'Kernel + applications'; |
$text['buffers'] = 'Buffers'; |
$text['cached'] = 'Cached'; |
$text['connections'] = 'Established Network Connections'; |
?> |
/web/acc/phpsysinfo/includes/lang/sk.php |
---|
0,0 → 1,107 |
<?php |
// |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// |
// $Id: sk.php,v 1.17 2007/02/18 19:11:31 bigmichi1 Exp $ |
$charset = 'iso-8859-2'; |
$text['title'] = 'Informácie o systéme'; |
$text['vitals'] = 'Základné informácie'; |
$text['hostname'] = 'Meno poèítaèa'; |
$text['ip'] = 'IP adresa'; |
$text['kversion'] = 'Verzia jadra'; |
$text['dversion'] = 'Distro Name'; |
$text['uptime'] = 'Uptime'; |
$text['users'] = 'Prihlásených u¾ívateåov'; |
$text['loadavg'] = 'Priemer loadu'; |
$text['hardware'] = 'Hardwarové informácie'; |
$text['numcpu'] = 'Procesory'; |
$text['cpumodel'] = 'Model'; |
$text['cpuspeed'] = 'Frekvencia'; |
$text['busspeed'] = 'BUS Speed'; |
$text['cache'] = 'Veåkos» cache'; |
$text['bogomips'] = 'Bogomipsov'; |
$text['pci'] = 'PCI zariadenia'; |
$text['ide'] = 'IDE zariadenia'; |
$text['scsi'] = 'SCSI zariadenia'; |
$text['usb'] = 'USB zariadenia'; |
$text['netusage'] = 'Pou¾ívanie siete'; |
$text['device'] = 'Zariadenia'; |
$text['received'] = 'Prijatých'; |
$text['sent'] = 'Odoslaných'; |
$text['errors'] = 'Chyby/Vypustených'; |
$text['memusage'] = 'Obsadenie pamäti'; |
$text['phymem'] = 'Fyzická pamä»'; |
$text['swap'] = 'Swap'; |
$text['fs'] = 'Namountované súborové systémy'; |
$text['mount'] = 'Adresár'; |
$text['partition'] = 'Partícia'; |
$text['percent'] = 'Obsadených'; |
$text['type'] = 'Typ'; |
$text['free'] = 'Voåných'; |
$text['used'] = 'Pou¾itých'; |
$text['size'] = 'Veåkos»'; |
$text['totals'] = 'Celkom'; |
$text['kb'] = 'KB'; |
$text['mb'] = 'MB'; |
$text['gb'] = 'GB'; |
$text['none'] = '¾iadne'; |
$text['capacity'] = 'Kapacita'; |
$text['template'] = '©ablóna'; |
$text['language'] = 'Jazyk'; |
$text['submit'] = 'Odosla»'; |
$text['created'] = 'Vytvorené pomocou'; |
$text['locale'] = 'en_US'; |
$text['gen_time'] = 'on %b %d, %Y at %I:%M %p'; |
$text['days'] = 'dní'; |
$text['hours'] = 'hodín'; |
$text['minutes'] = 'minút'; |
$text['temperature'] = 'Temperature'; |
$text['voltage'] = 'Voltage'; |
$text['fans'] = 'Fans'; |
$text['s_value'] = 'Value'; |
$text['s_min'] = 'Min'; |
$text['s_max'] = 'Max'; |
$text['hysteresis'] = 'Hysteresis'; |
$text['s_limit'] = 'Limit'; |
$text['s_label'] = 'Label'; |
$text['degreeC'] = '°C'; |
$text['degreeF'] = '°F'; |
$text['voltage_mark'] = 'V'; |
$text['rpm_mark'] = 'RPM'; |
$text['app'] = 'Kernel + applications'; |
$text['buffers'] = 'Buffers'; |
$text['cached'] = 'Cached'; |
$text['connections'] = 'Established Network Connections'; |
?> |
/web/acc/phpsysinfo/includes/lang/index.html |
---|
--- phpsysinfo/includes/lang/da.php (nonexistent) |
+++ phpsysinfo/includes/lang/da.php (revision 325) |
@@ -0,0 +1,107 @@ |
+<?php |
+// |
+// phpSysInfo - A PHP System Information Script |
+// http://phpsysinfo.sourceforge.net/ |
+// |
+// This program is free software; you can redistribute it and/or |
+// modify it under the terms of the GNU General Public License |
+// as published by the Free Software Foundation; either version 2 |
+// of the License, or (at your option) any later version. |
+// |
+// This program is distributed in the hope that it will be useful, |
+// but WITHOUT ANY WARRANTY; without even the implied warranty of |
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+// GNU General Public License for more details. |
+// |
+// You should have received a copy of the GNU General Public License |
+// along with this program; if not, write to the Free Software |
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
+// |
+// $Id: da.php,v 1.21 2007/02/18 19:11:31 bigmichi1 Exp $ |
+ |
+# Translated by Jonas Koch Bentzen (understroem.dk). |
+ |
+$text['title'] = 'Systeminformation'; |
+ |
+$text['vitals'] = 'Systemenheder'; |
+$text['hostname'] = 'Konisk værtsnavn'; |
+$text['ip'] = 'IP-adresse, der lyttes på'; |
+$text['kversion'] = 'Kerne-version'; |
+$text['dversion'] = 'Distro Name'; |
+$text['uptime'] = 'Oppetid'; |
+$text['users'] = 'Antal brugere logget ind lige nu'; |
+$text['loadavg'] = 'Ressourceforbrug - gennemsnit'; |
+ |
+$text['hardware'] = 'Hardwareinformation'; |
+$text['numcpu'] = 'Processorer'; |
+$text['cpumodel'] = 'Model'; |
+$text['cpuspeed'] = 'CPU Speed'; |
+$text['busspeed'] = 'BUS Speed'; |
+$text['cache'] = 'Cachestørrelse'; |
+$text['bogomips'] = 'Bogomips'; |
+ |
+$text['pci'] = 'PCI-enheder'; |
+$text['ide'] = 'IDE-enheder'; |
+$text['scsi'] = 'SCSI-enheder'; |
+$text['usb'] = 'USB-enheder'; |
+ |
+$text['netusage'] = 'Netværkstrafik'; |
+$text['device'] = 'Enhed'; |
+$text['received'] = 'Modtaget'; |
+$text['sent'] = 'Afsendt'; |
+$text['errors'] = 'Mislykket/tabt'; |
+ |
+$text['memusage'] = 'Hukommelsesforbrug'; |
+$text['phymem'] = 'Fysisk hukommelse'; |
+$text['swap'] = 'Swap'; |
+ |
+$text['fs'] = 'Monterede filsystemer'; |
+$text['mount'] = 'Monteret på'; |
+$text['partition'] = 'Partition'; |
+ |
+$text['percent'] = 'Procent af kapaciteten'; |
+$text['type'] = 'Type'; |
+$text['free'] = 'Ledig'; |
+$text['used'] = 'Brugt'; |
+$text['size'] = 'Størrelse'; |
+$text['totals'] = 'I alt'; |
+ |
+$text['kb'] = 'KB'; |
+$text['mb'] = 'MB'; |
+$text['gb'] = 'GB'; |
+ |
+$text['none'] = 'ingen'; |
+ |
+$text['capacity'] = 'Kapacitet'; |
+ |
+$text['template'] = 'Skabelon'; |
+$text['language'] = 'Sprog'; |
+$text['submit'] = 'Okay'; |
+$text['created'] = 'Lavet af'; |
+$text['locale'] = 'en_US'; |
+$text['gen_time'] = 'on %b %d, %Y at %I:%M %p'; |
+ |
+$text['days'] = 'dage'; |
+$text['hours'] = 'timer'; |
+$text['minutes'] = 'minutter'; |
+ |
+$text['temperature'] = 'Temperature'; |
+$text['voltage'] = 'Voltage'; |
+$text['fans'] = 'Fans'; |
+$text['s_value'] = 'Value'; |
+$text['s_min'] = 'Min'; |
+$text['s_max'] = 'Max'; |
+$text['hysteresis'] = 'Hysteresis'; |
+$text['s_limit'] = 'Limit'; |
+$text['s_label'] = 'Label'; |
+$text['degreeC'] = '°C'; |
+$text['degreeF'] = '°F'; |
+$text['voltage_mark'] = 'V'; |
+$text['rpm_mark'] = 'RPM'; |
+ |
+$text['app'] = 'Kernel + applications'; |
+$text['buffers'] = 'Buffers'; |
+$text['cached'] = 'Cached'; |
+ |
+$text['connections'] = 'Established Network Connections'; |
+?> |
/web/acc/phpsysinfo/includes/lang/sr.php |
---|
0,0 → 1,107 |
<?php |
// |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// |
// $Id: sr.php,v 1.8 2007/02/18 19:11:31 bigmichi1 Exp $ |
$charset = 'utf-8'; |
$text['title'] = 'Спецификација Система '; |
$text['vitals'] = 'Систем'; |
$text['hostname'] = 'Име домаћина'; |
$text['ip'] = 'ИП адреса'; |
$text['kversion'] = 'Верзија кернела'; |
$text['dversion'] = 'Дицтрибуција'; |
$text['uptime'] = 'Радно време'; |
$text['users'] = 'Број корисника'; |
$text['loadavg'] = 'Просечно оптерећење'; |
$text['hardware'] = 'Хардверске компоненте'; |
$text['numcpu'] = 'Процесор'; |
$text['cpumodel'] = 'Moдел'; |
$text['cpuspeed'] = 'CPU Speed'; |
$text['busspeed'] = 'BUS Speed'; |
$text['cache'] = 'Величина предмеморије'; |
$text['bogomips'] = 'Богомипс'; |
$text['usb'] = 'УСБ уређаји'; |
$text['pci'] = 'ПЦИ уређаји'; |
$text['ide'] = 'ИДЕ уређаји'; |
$text['scsi'] = 'СЦСИ уређаји'; |
$text['netusage'] = 'Мрежна Употреба'; |
$text['device'] = 'Уређај'; |
$text['received'] = 'Примљено'; |
$text['sent'] = 'Послато'; |
$text['errors'] = 'Грешке'; |
$text['connections'] = 'Успостављене конекције'; |
$text['memusage'] = 'Употреба меморије'; |
$text['phymem'] = 'Тврда memorija'; |
$text['swap'] = 'СВАП меморија'; |
$text['fs'] = 'Монтирани фајл системи'; |
$text['mount'] = 'Монтирани'; |
$text['partition'] = 'Партиција'; |
$text['percent'] = 'Проценти'; |
$text['type'] = 'Врста'; |
$text['free'] = 'Слободно'; |
$text['used'] = 'Искоришћено'; |
$text['size'] = 'Величина'; |
$text['totals'] = 'Укупно'; |
$text['kb'] = 'KB'; |
$text['mb'] = 'MB'; |
$text['gb'] = 'GB'; |
$text['none'] = 'ezer ez'; |
$text['capacity'] = 'Капацитет'; |
$text['template'] = 'Tемплат'; |
$text['language'] = 'Језик'; |
$text['submit'] = 'Пошаљи'; |
$text['created'] = 'Креирано: '; |
$text['locale'] = 'ср'; |
$text['gen_time'] = 'on %b %d, %Y at %I:%M %p'; |
$text['days'] = 'Дани'; |
$text['hours'] = 'Сати'; |
$text['minutes'] = 'Минути'; |
$text['temperature'] = 'Температура'; |
$text['voltage'] = 'Напајање'; |
$text['fans'] = 'Вентилатори'; |
$text['s_value'] = 'Снага'; |
$text['s_min'] = 'Мин'; |
$text['s_max'] = 'Mах'; |
$text['hysteresis'] = 'Аларм'; |
$text['s_limit'] = 'Лимит'; |
$text['s_label'] = 'Име'; |
$text['degreeC'] = '°C'; |
$text['degreeF'] = '°F'; |
$text['voltage_mark'] = 'V'; |
$text['rpm_mark'] = 'RPM'; |
$text['app'] = 'Kernel + applications'; |
$text['buffers'] = 'Buffers'; |
$text['cached'] = 'Cached'; |
?> |
/web/acc/phpsysinfo/includes/lang/big5.php |
---|
0,0 → 1,107 |
<?php |
// |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// |
// $Id: big5.php,v 1.19 2007/02/18 19:11:31 bigmichi1 Exp $ |
// |
$charset = 'big5'; |
$text['title'] = '¨t²Î¸ê°T'; |
$text['vitals'] = '¨t²Î¸ê·½'; |
$text['hostname'] = '¥D¾÷¦WºÙ'; |
$text['ip'] = '¥D¾÷¹ï¥~ IP'; |
$text['kversion'] = '®Ö¤ßª©¥»'; |
$text['dversion'] = 'Distro Name'; |
$text['uptime'] = '¤w¶}¾÷®É¶¡'; |
$text['users'] = 'µn¤J¤H¼Æ'; |
$text['loadavg'] = '¨t²Ît¸ü'; |
$text['hardware'] = 'µwÅé¸ê·½'; |
$text['numcpu'] = '¹Bºâ¤¸'; |
$text['cpumodel'] = 'CPU«¬¸¹'; |
$text['cpuspeed'] = '¤u§@ÀW²v'; |
$text['busspeed'] = 'BUS Speed'; |
$text['cache'] = '§Ö¨ú¤j¤p'; |
$text['bogomips'] = 'ÅÞ¿è¹Bºâ¤¸'; |
$text['pci'] = 'PCI ¤¶±'; |
$text['ide'] = 'IDE ¤¶±'; |
$text['scsi'] = 'SCSI ¤¶±'; |
$text['usb'] = 'USB ¤¶±'; |
$text['netusage'] = 'ºô¸ô«Ê¥]'; |
$text['device'] = '¤¶±'; |
$text['received'] = '±µ¦¬'; |
$text['sent'] = '¶Ç°e'; |
$text['errors'] = '¿ù»~/¿ò¥¢'; |
$text['connections'] = 'Established Network Connections'; |
$text['memusage'] = '°O¾ÐÅé¸ê·½'; |
$text['phymem'] = '¹êÅé°O¾ÐÅé'; |
$text['swap'] = 'µêÀÀ°O¾ÐÅé(ºÏºÐ¸m´«)'; |
$text['fs'] = '¤w±¾¤JªºÀɮרt²Î'; |
$text['mount'] = '±¾¤J'; |
$text['partition'] = 'ºÏ°Ï'; |
$text['percent'] = '¨Ï¥Î¦Ê¤À¤ñ'; |
$text['type'] = '®æ¦¡'; |
$text['free'] = 'ªÅ¾l'; |
$text['used'] = '¤w¥Î'; |
$text['size'] = '¤j¤p'; |
$text['totals'] = '¦Xp'; |
$text['kb'] = 'KB'; |
$text['mb'] = 'MB'; |
$text['gb'] = 'GB'; |
$text['none'] = 'µL'; |
$text['capacity'] = '®e¶q'; |
$text['template'] = '¼Ë¦¡'; |
$text['language'] = '»y¨¥'; |
$text['submit'] = '½T©w'; |
$text['created'] = '²£¥Í¥Ñ'; |
$text['locale'] = 'zh_TW.Big5'; |
$text['gen_time'] = 'on %b %d, %Y at %I:%M %p'; |
$text['days'] = '¤Ñ'; |
$text['hours'] = '¤p®É'; |
$text['minutes'] = '¤ÀÄÁ'; |
$text['temperature'] = 'Temperature'; |
$text['voltage'] = 'Voltage'; |
$text['fans'] = 'Fans'; |
$text['s_value'] = 'Value'; |
$text['s_min'] = 'Min'; |
$text['s_max'] = 'Max'; |
$text['hysteresis'] = 'Hysteresis'; |
$text['s_limit'] = 'Limit'; |
$text['s_label'] = 'Label'; |
$text['degreeC'] = '°C'; |
$text['degreeF'] = '°F'; |
$text['voltage_mark'] = 'V'; |
$text['rpm_mark'] = 'RPM'; |
$text['app'] = 'Kernel + applications'; |
$text['buffers'] = 'Buffers'; |
$text['cached'] = 'Cached'; |
?> |
/web/acc/phpsysinfo/includes/lang/de.php |
---|
0,0 → 1,105 |
<?php |
// |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// |
// $Id: de.php,v 1.22 2007/02/18 19:11:31 bigmichi1 Exp $ |
$text['title'] = 'System Information'; |
$text['vitals'] = 'System Übersicht'; |
$text['hostname'] = 'Zugewiesener Hostname'; |
$text['ip'] = 'Überwachte IP'; |
$text['kversion'] = 'Kernel Version'; |
$text['dversion'] = 'Distro Name'; |
$text['uptime'] = 'Betriebszeit'; |
$text['users'] = 'Eingeloggte Benutzer'; |
$text['loadavg'] = 'Auslastung'; |
$text['hardware'] = 'Hardware Übersicht'; |
$text['numcpu'] = 'Prozessoren'; |
$text['cpumodel'] = 'Modell'; |
$text['cpuspeed'] = 'Taktfrequenz'; |
$text['busspeed'] = 'BUS Speed'; |
$text['cache'] = 'Cachegröße'; |
$text['bogomips'] = 'System Bogomips'; |
$text['pci'] = 'PCI Geräte'; |
$text['ide'] = 'IDE Geräte'; |
$text['scsi'] = 'SCSI Geräte'; |
$text['usb'] = 'USB Geräte'; |
$text['netusage'] = 'Netzwerk-Auslastung'; |
$text['device'] = 'Schnittstelle'; |
$text['received'] = 'Empfangen'; |
$text['sent'] = 'Gesendet'; |
$text['errors'] = 'Fehler/Verworfen'; |
$text['memusage'] = 'Speicher-Auslastung'; |
$text['phymem'] = 'Physikalischer Speicher'; |
$text['swap'] = 'Auslagerungsdatei'; |
$text['fs'] = 'Angemeldete Dateisysteme'; |
$text['mount'] = 'Mount'; |
$text['partition'] = 'Partition'; |
$text['percent'] = 'Prozentuale Auslastung'; |
$text['type'] = 'Typ'; |
$text['free'] = 'Frei'; |
$text['used'] = 'Benutzt'; |
$text['size'] = 'Größe'; |
$text['totals'] = 'Insgesamt'; |
$text['kb'] = 'KB'; |
$text['mb'] = 'MB'; |
$text['gb'] = 'GB'; |
$text['none'] = 'keine'; |
$text['capacity'] = 'Kapazität'; |
$text['template'] = 'Vorlage'; |
$text['language'] = 'Sprache'; |
$text['submit'] = 'Ändern'; |
$text['created'] = 'Erstellt von'; |
$text['locale'] = 'de_DE'; |
$text['gen_time'] = 'am %d.%b %Y um %H:%M'; |
$text['days'] = 'Tage'; |
$text['hours'] = 'Stunden'; |
$text['minutes'] = 'Minuten'; |
$text['temperature'] = 'Temperatur'; |
$text['voltage'] = 'Spannungen'; |
$text['fans'] = 'Lüfter'; |
$text['s_value'] = 'Wert'; |
$text['s_min'] = 'Min'; |
$text['s_max'] = 'Max'; |
$text['hysteresis'] = 'Hysteresis'; |
$text['s_limit'] = 'Grenzwert'; |
$text['s_label'] = 'Bezeichnung'; |
$text['degreeC'] = '°C'; |
$text['degreeF'] = '°F'; |
$text['voltage_mark'] = 'V'; |
$text['rpm_mark'] = 'Umin'; |
$text['app'] = 'Kernel + Anwendungen'; |
$text['buffers'] = 'Puffer'; |
$text['cached'] = 'Cache'; |
$text['connections'] = 'Aktive Netzwerkverbindungen'; |
?> |
/web/acc/phpsysinfo/includes/lang/sv.php |
---|
0,0 → 1,108 |
<?php |
// |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// |
// $Id: sv.php,v 1.17 2007/02/18 19:11:31 bigmichi1 Exp $ |
// |
// translation by shockzor |
// updated/edited by jetthe |
$text['title'] = 'Systeminformation'; |
$text['vitals'] = 'Allmän information'; |
$text['hostname'] = 'Värdnamn'; |
$text['ip'] = 'IP-adress'; |
$text['kversion'] = 'Kernel-version'; |
$text['dversion'] = 'Distro Name'; |
$text['uptime'] = 'Drifttid'; |
$text['users'] = 'Aktuella användare'; |
$text['loadavg'] = 'Medelbelastning'; |
$text['hardware'] = 'Hårdvaruinformation'; |
$text['numcpu'] = 'Processorer'; |
$text['cpumodel'] = 'Modell'; |
$text['cpuspeed'] = 'Klockfrekvens'; |
$text['busspeed'] = 'BUS Speed'; |
$text['cache'] = 'Cachestorlek'; |
$text['bogomips'] = 'Bogomips'; |
$text['pci'] = 'PCI-enheter'; |
$text['ide'] = 'IDE-enheter'; |
$text['scsi'] = 'SCSI-enheter'; |
$text['usb'] = 'USB-enheter'; |
$text['netusage'] = 'Nätverksanvändning'; |
$text['device'] = 'Enheter'; |
$text['received'] = 'Mottaget'; |
$text['sent'] = 'Skickat'; |
$text['errors'] = 'Fel/Förlorat'; |
$text['memusage'] = 'Minnesanvändning'; |
$text['phymem'] = 'Fysiskt minne'; |
$text['swap'] = 'Växlingsminne'; |
$text['fs'] = 'Monterade filsystem'; |
$text['mount'] = 'Monteringspunkt'; |
$text['partition'] = 'Partition'; |
$text['percent'] = 'Kapacitetsutnyttjande'; |
$text['type'] = 'Typ'; |
$text['free'] = 'Ledigt'; |
$text['used'] = 'Använt'; |
$text['size'] = 'Storlek'; |
$text['totals'] = 'Totalt'; |
$text['kb'] = 'kB'; |
$text['mb'] = 'MB'; |
$text['gb'] = 'GB'; |
$text['none'] = 'inga'; |
$text['capacity'] = 'Kapacitet'; |
$text['template'] = 'Mall'; |
$text['language'] = 'Språk'; |
$text['submit'] = 'Skicka'; |
$text['days'] = 'dagar'; |
$text['hours'] = 'timmar'; |
$text['minutes'] = 'minuter'; |
$text['created'] = 'Skapat av'; |
$text['locale'] = 'en_US'; |
$text['gen_time'] = 'on %b %d, %Y at %I:%M %p'; |
$text['temperature'] = 'Temperature'; |
$text['voltage'] = 'Voltage'; |
$text['fans'] = 'Fans'; |
$text['s_value'] = 'Value'; |
$text['s_min'] = 'Min'; |
$text['s_max'] = 'Max'; |
$text['hysteresis'] = 'Hysteresis'; |
$text['s_limit'] = 'Limit'; |
$text['s_label'] = 'Label'; |
$text['degreeC'] = '°C'; |
$text['degreeF'] = '°F'; |
$text['voltage_mark'] = 'V'; |
$text['rpm_mark'] = 'RPM'; |
$text['app'] = 'Kernel + applications'; |
$text['buffers'] = 'Buffers'; |
$text['cached'] = 'Cached'; |
$text['connections'] = 'Established Network Connections'; |
?> |
/web/acc/phpsysinfo/includes/lang/bg.php |
---|
0,0 → 1,108 |
<?php |
// |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// |
// $Id: bg.php,v 1.16 2007/02/18 19:11:31 bigmichi1 Exp $ |
$charset = 'cp-1251'; |
$text['title'] = 'Ñèñòåìíà Èíôîðìàöèÿ'; |
$text['vitals'] = 'Æèçíåíà Èíôîðàìöèÿ'; |
$text['hostname'] = 'Èìå íà õîñòà'; |
$text['ip'] = 'IP Àäðåñ'; |
$text['kversion'] = 'Âåðñèÿ íà ÿäðîòî'; |
$text['dversion'] = 'Distro Name'; |
$text['uptime'] = 'Ðàáîòè îò'; |
$text['users'] = 'Âêëþ÷åíè ïîòðåáèòåëè'; |
$text['loadavg'] = 'Ñðåäíî íàòîâàðâàíå'; |
$text['hardware'] = 'Èíôîðìàöèÿ çà õàðäóåðà'; |
$text['numcpu'] = 'Áðîé ïðîöåñîðè'; |
$text['cpumodel'] = 'Ìîäåë íà ïðîöåñîð'; |
$text['cpuspeed'] = '×åñòîòà'; |
$text['busspeed'] = 'BUS Speed'; |
$text['cache'] = 'Ðàçìåð íà êåøa '; |
$text['bogomips'] = 'Bogomips èíäåêñ'; |
$text['pci'] = 'PCI óñòðîéñòâà'; |
$text['ide'] = 'IDE óñòðîéñòâà'; |
$text['scsi'] = 'SCSI óñòðîéñòâà'; |
$text['usb'] = 'USB óñòðîéñòâà'; |
$text['netusage'] = 'Ìðåæîâà èíôîðìàöèÿ'; |
$text['device'] = 'Èíòåðôåéñè'; |
$text['received'] = 'Ïîëó÷åíè'; |
$text['sent'] = 'Èçïðàòåíè'; |
$text['errors'] = 'Ãðåøêè/Èçïóñíàòè'; |
$text['connections'] = 'Óñúùåñòâåíè ìðåæîâè âðúçêè'; |
$text['memusage'] = 'Îïåðàòèâíà ïàìåò'; |
$text['phymem'] = 'Ôèçè÷åñêà ïàìåò'; |
$text['swap'] = 'Swap ïàìåò'; |
$text['fs'] = 'Ôàéëîâè ñèñòåìè'; |
$text['mount'] = 'Ìÿñòî'; |
$text['partition'] = 'Äÿë'; |
$text['percent'] = 'Ïðîöåíòíî èçïîëçâàíå'; |
$text['type'] = 'Òèï'; |
$text['free'] = 'Ñâîáîäíè'; |
$text['used'] = 'Èçïîëçâàíè'; |
$text['size'] = 'Îáù îáåì'; |
$text['totals'] = 'Âñè÷êî'; |
$text['kb'] = 'KB'; |
$text['mb'] = 'MB'; |
$text['gb'] = 'GB'; |
$text['none'] = 'íÿìà'; |
$text['capacity'] = 'Êàïàöèòåò'; |
$text['template'] = 'Òåìà'; |
$text['language'] = 'Åçèê'; |
$text['submit'] = 'Îïðåñíè'; |
$text['created'] = 'Ñúçäàäåíî ñ'; |
$text['locale'] = 'en_US'; |
$text['gen_time'] = 'on %b %d, %Y at %I:%M %p'; |
$text['days'] = 'äíè'; |
$text['hours'] = '÷àñà'; |
$text['minutes'] = 'ìèíóòè'; |
$text['temperature'] = 'Temperature'; |
$text['voltage'] = 'Voltage'; |
$text['fans'] = 'Fans'; |
$text['s_value'] = 'Value'; |
$text['s_min'] = 'Min'; |
$text['s_max'] = 'Max'; |
$text['hysteresis'] = 'Hysteresis'; |
$text['s_limit'] = 'Limit'; |
$text['s_label'] = 'Label'; |
$text['degreeC'] = '°C'; |
$text['degreeF'] = '°F'; |
$text['voltage_mark'] = 'V'; |
$text['rpm_mark'] = 'RPM'; |
$text['app'] = 'Kernel + applications'; |
$text['buffers'] = 'Buffers'; |
$text['cached'] = 'Cached'; |
?> |
/web/acc/phpsysinfo/includes/os/class.WINNT.inc.php |
---|
0,0 → 1,344 |
<?php |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// WINNT implementation written by Carl C. Longnecker, longneck@iname.com |
// $Id: class.WINNT.inc.php,v 1.25 2007/03/07 20:21:27 bigmichi1 Exp $ |
class sysinfo { |
// $wmi holds the COM object that we pull all the WMI data from |
var $wmi; |
// $wmidevices holds all devices, which are in the system |
var $wmidevices; |
// this constructor initialis the $wmi object |
function sysinfo () |
{ |
// don't set this params for local connection, it will not work |
$strHostname = ''; |
$strUser = ''; |
$strPassword = ''; |
// initialize the wmi object |
$objLocator = new COM("WbemScripting.SWbemLocator"); |
if($strHostname == "") { |
$this->wmi = $objLocator->ConnectServer(); |
} else{ |
$this->wmi = $objLocator->ConnectServer($strHostname, "rootcimv2", "$strHostname\$strUser", $strPassword); |
} |
} |
// private function for getting a list of values in the specified context, optionally filter this list, based on the list from second parameter |
function _GetWMI($strClass, $strValue = array() ) { |
$objWEBM = $this->wmi->Get($strClass); |
if( PHP_VERSION < 5 ) { |
$objProp = $objWEBM->Properties_; |
$arrProp = $objProp->Next($objProp->Count); |
$objWEBMCol = $objWEBM->Instances_(); |
$arrWEBMCol = $objWEBMCol->Next($objWEBMCol->Count); |
} else { |
$arrProp = $objWEBM->Properties_; |
$arrWEBMCol = $objWEBM->Instances_(); |
} |
foreach($arrWEBMCol as $objItem) |
{ |
@reset($arrProp); |
$arrInstance = array(); |
foreach($arrProp as $propItem) |
{ |
eval("\$value = \$objItem->" .$propItem->Name .";"); |
if( empty( $strValue ) ) { |
$arrInstance[$propItem->Name] = trim($value); |
} else { |
if( in_array( $propItem->Name, $strValue ) ) { |
$arrInstance[$propItem->Name] = trim($value); |
} |
} |
} |
$arrData[] = $arrInstance; |
} |
return $arrData; |
} |
// private function for getting different device types from the system |
function _devicelist ( $strType ) { |
if( empty( $this->wmidevices ) ) { |
$this->wmidevices = $this->_GetWMI( "Win32_PnPEntity", array( "Name", "PNPDeviceID" ) ); |
} |
$list = array(); |
foreach ( $this->wmidevices as $device ) { |
if ( substr( $device["PNPDeviceID"], 0, strpos( $device["PNPDeviceID"], "\\" ) + 1 ) == ( $strType . "\\" ) ) { |
$list[] = $device["Name"]; |
} |
} |
return $list; |
} |
// get our apache SERVER_NAME or vhost |
function vhostname () { |
if (! ($result = getenv('SERVER_NAME'))) { |
$result = 'N.A.'; |
} |
return $result; |
} |
// get the IP address of our vhost name |
function vip_addr () { |
return gethostbyname($this->vhostname()); |
} |
// get our canonical hostname |
function chostname () |
{ |
$buffer = $this->_GetWMI( "Win32_ComputerSystem", array( "Name" ) ); |
$result = $buffer[0]["Name"]; |
return gethostbyaddr(gethostbyname($result)); |
} |
// get the IP address of our canonical hostname |
function ip_addr () |
{ |
$buffer = $this->_GetWMI( "Win32_ComputerSystem", array( "Name" ) ); |
$result = $buffer[0]["Name"]; |
return gethostbyname($result); |
} |
function kernel () |
{ |
$buffer = $this->_GetWMI( "Win32_OperatingSystem", array( "Version", "ServicePackMajorVersion" ) ); |
$result = $buffer[0]["Version"]; |
if( $buffer[0]["ServicePackMajorVersion"] > 0 ) { |
$result .= " SP" . $buffer[0]["ServicePackMajorVersion"]; |
} |
return $result; |
} |
// get the time the system is running |
function uptime () |
{ |
$result = 0; |
$buffer = $this->_GetWMI( "Win32_OperatingSystem", array( "LastBootUpTime", "LocalDateTime" ) ); |
$byear = intval(substr($buffer[0]["LastBootUpTime"], 0, 4)); |
$bmonth = intval(substr($buffer[0]["LastBootUpTime"], 4, 2)); |
$bday = intval(substr($buffer[0]["LastBootUpTime"], 6, 2)); |
$bhour = intval(substr($buffer[0]["LastBootUpTime"], 8, 2)); |
$bminute = intval(substr($buffer[0]["LastBootUpTime"], 10, 2)); |
$bseconds = intval(substr($buffer[0]["LastBootUpTime"], 12, 2)); |
$lyear = intval(substr($buffer[0]["LocalDateTime"], 0, 4)); |
$lmonth = intval(substr($buffer[0]["LocalDateTime"], 4, 2)); |
$lday = intval(substr($buffer[0]["LocalDateTime"], 6, 2)); |
$lhour = intval(substr($buffer[0]["LocalDateTime"], 8, 2)); |
$lminute = intval(substr($buffer[0]["LocalDateTime"], 10, 2)); |
$lseconds = intval(substr($buffer[0]["LocalDateTime"], 12, 2)); |
$boottime = mktime($bhour, $bminute, $bseconds, $bmonth, $bday, $byear); |
$localtime = mktime($lhour, $lminute, $lseconds, $lmonth, $lday, $lyear); |
$result = $localtime - $boottime; |
return $result; |
} |
// count the users, which are logged in |
function users () |
{ |
if( stristr( $this->kernel(), "2000 P" ) ) return "N.A."; |
$buffer = $this->_GetWMI( "Win32_PerfRawData_TermService_TerminalServices", array( "TotalSessions" ) ); |
return $buffer[0]["TotalSessions"]; |
} |
// get the load of the processors |
function loadavg ($bar = false) |
{ |
$buffer = $this->_GetWMI( "Win32_Processor", array( "LoadPercentage" ) ); |
$cpuload = array(); |
for( $i = 0; $i < count( $buffer ); $i++ ) { |
$cpuload['avg'][] = $buffer[$i]["LoadPercentage"]; |
} |
if ($bar) { |
$cpuload['cpupercent'] = array_sum( $cpuload['avg'] ) / count( $buffer ); |
} |
return $cpuload; |
} |
// get some informations about the cpu's |
function cpu_info () |
{ |
$buffer = $this->_GetWMI( "Win32_Processor", array( "Name", "L2CacheSize", "CurrentClockSpeed", "ExtClock" ) ); |
$results["cpus"] = 0; |
foreach ($buffer as $cpu) { |
$results["cpus"]++; |
$results["model"] = $cpu["Name"]; |
$results["cache"] = $cpu["L2CacheSize"]; |
$results["cpuspeed"] = $cpu["CurrentClockSpeed"]; |
$results["busspeed"] = $cpu["ExtClock"]; |
} |
return $results; |
} |
// get the pci devices from the system |
function pci () |
{ |
$pci = $this->_devicelist( "PCI" ); |
return $pci; |
} |
// get the ide devices from the system |
function ide () |
{ |
$buffer = $this->_devicelist( "IDE" ); |
$ide = array(); |
foreach ( $buffer as $device ) { |
$ide[]['model'] = $device; |
} |
return $ide; |
} |
// get the scsi devices from the system |
function scsi () |
{ |
$scsi = $this->_devicelist( "SCSI" ); |
return $scsi; |
} |
// get the usb devices from the system |
function usb () |
{ |
$usb = $this->_devicelist( "USB" ); |
return $usb; |
} |
// get the sbus devices from the system - currently not called |
function sbus () |
{ |
$sbus = $this->_devicelist( "SBUS" ); |
return $sbus; |
} |
// get the netowrk devices and rx/tx bytes |
function network () { |
$results = array(); |
$buffer = $this->_GetWMI( "Win32_PerfRawData_Tcpip_NetworkInterface" ); |
foreach( $buffer as $device ) { |
$dev_name = $device["Name"]; |
// http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/win32_perfrawdata_tcpip_networkinterface.asp |
// there is a possible bug in the wmi interfaceabout uint32 and uint64: http://www.ureader.com/message/1244948.aspx, so that |
// magative numbers would occour, try to calculate the nagative value from total - positive number |
if( $device["BytesSentPersec"] < 0) { |
$results[$dev_name]['tx_bytes'] = $device["BytesTotalPersec"] - $device["BytesReceivedPersec"]; |
} else { |
$results[$dev_name]['tx_bytes'] = $device["BytesSentPersec"]; |
} |
if( $device["BytesReceivedPersec"] < 0 ) { |
$results[$dev_name]['rx_bytes'] = $device["BytesTotalPersec"] - $device["BytesSentPersec"]; |
} else { |
$results[$dev_name]['rx_bytes'] = $device["BytesReceivedPersec"]; |
} |
$results[$dev_name]['rx_packets'] = $device["PacketsReceivedPersec"]; |
$results[$dev_name]['tx_packets'] = $device["PacketsSentPersec"]; |
$results[$dev_name]['rx_errs'] = $device["PacketsReceivedErrors"]; |
$results[$dev_name]['rx_drop'] = $device["PacketsReceivedDiscarded"]; |
$results[$dev_name]['errs'] = $device["PacketsReceivedErrors"]; |
$results[$dev_name]['drop'] = $device["PacketsReceivedDiscarded"]; |
} |
return $results; |
} |
function memory () |
{ |
$buffer = $this->_GetWMI( "Win32_LogicalMemoryConfiguration", array( "TotalPhysicalMemory" ) ); |
$results['ram']['total'] = $buffer[0]["TotalPhysicalMemory"]; |
$buffer = $this->_GetWMI( "Win32_PerfRawData_PerfOS_Memory", array( "AvailableKBytes" ) ); |
$results['ram']['free'] = $buffer[0]["AvailableKBytes"]; |
$results['ram']['used'] = $results['ram']['total'] - $results['ram']['free']; |
$results['ram']['percent'] = ceil( ( $results['ram']['used'] * 100 ) / $results['ram']['total'] ); |
$results['swap']['total'] = 0; |
$results['swap']['used'] = 0; |
$results['swap']['free'] = 0; |
$buffer = $this->_GetWMI( "Win32_PageFileUsage" ); // no need to filter, using nearly everything from output |
$k = 0; |
foreach ($buffer as $swapdevice) { |
$results['devswap'][$k]['dev'] = $swapdevice["Name"]; |
$results['devswap'][$k]['total'] = $swapdevice["AllocatedBaseSize"] * 1024; |
$results['devswap'][$k]['used'] = $swapdevice["CurrentUsage"] * 1024; |
$results['devswap'][$k]['free'] = ( $swapdevice["AllocatedBaseSize"] - $swapdevice["CurrentUsage"] ) * 1024; |
$results['devswap'][$k]['percent'] = ceil( $swapdevice["CurrentUsage"] / $swapdevice["AllocatedBaseSize"] ); |
$results['swap']['total'] += $results['devswap'][$k]['total']; |
$results['swap']['used'] += $results['devswap'][$k]['used']; |
$results['swap']['free'] += $results['devswap'][$k]['free']; |
$k += 1; |
} |
$results['swap']['percent'] = ceil( $results['swap']['used'] / $results['swap']['total'] * 100 ); |
return $results; |
} |
// get the filesystem informations |
function filesystems () |
{ |
$typearray = array("Unknown", "No Root Directory", "Removeable Disk", |
"Local Disk", "Network Drive", "Compact Disc", "RAM Disk"); |
$floppyarray = array("Unknown", "5 1/4 in.", "3 1/2 in.", "3 1/2 in.", |
"3 1/2 in.", "3 1/2 in.", "5 1/4 in.", "5 1/4 in.", "5 1/4 in.", |
"5 1/4 in.", "5 1/4 in.", "Other", "HD", "3 1/2 in.", "3 1/2 in.", |
"5 1/4 in.", "5 1/4 in.", "3 1/2 in.", "3 1/2 in.", "5 1/4 in.", |
"3 1/2 in.", "3 1/2 in.", "8 in."); |
$buffer = $this->_GetWMI( "Win32_LogicalDisk" , array( "Name", "Size", "FreeSpace", "FileSystem", "DriveType", "MediaType" ) ); |
$k = 0; |
foreach ( $buffer as $filesystem ) { |
if ( hide_mount( $filesystem["Name"] ) ) { |
continue; |
} |
$results[$k]['mount'] = $filesystem["Name"]; |
$results[$k]['size'] = $filesystem["Size"] / 1024; |
$results[$k]['used'] = ( $filesystem["Size"] - $filesystem["FreeSpace"] ) / 1024; |
$results[$k]['free'] = $filesystem["FreeSpace"] / 1024; |
@$results[$k]['percent'] = ceil( $results[$k]['used'] / $results[$k]['size'] * 100 ); // silence this line, nobody is having a floppy in the drive everytime |
$results[$k]['fstype'] = $filesystem["FileSystem"]; |
$results[$k]['disk'] = $typearray[$filesystem["DriveType"]]; |
if ( $filesystem["MediaType"] != "" && $filesystem["DriveType"] == 2 ) $results[$k]['disk'] .= " (" . $floppyarray[$filesystem["MediaType"]] . ")"; |
$k += 1; |
} |
return $results; |
} |
function distro () |
{ |
$buffer = $this->_GetWMI( "Win32_OperatingSystem", array( "Caption" ) ); |
return $buffer[0]["Caption"]; |
} |
function distroicon () |
{ |
return 'xp.gif'; |
} |
} |
?> |
/web/acc/phpsysinfo/includes/os/class.NetBSD.inc.php |
---|
0,0 → 1,111 |
<?php |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// $Id: class.NetBSD.inc.php,v 1.18 2006/04/18 16:57:32 bigmichi1 Exp $ |
if (!defined('IN_PHPSYSINFO')) { |
die("No Hacking"); |
} |
require_once(APP_ROOT . '/includes/os/class.BSD.common.inc.php'); |
class sysinfo extends bsd_common { |
var $cpu_regexp; |
var $scsi_regexp; |
// Our contstructor |
// this function is run on the initialization of this class |
function sysinfo () { |
$this->bsd_common(); |
$this->cpu_regexp = "^cpu(.*)\, (.*) MHz"; |
$this->scsi_regexp1 = "^(.*) at scsibus.*: <(.*)> .*"; |
$this->scsi_regexp2 = "^(da[0-9]): (.*)MB "; |
$this->cpu_regexp2 = "/user = (.*), nice = (.*), sys = (.*), intr = (.*), idle = (.*)/"; |
$this->pci_regexp1 = '/(.*) at pci[0-9] dev [0-9]* function [0-9]*: (.*)$/'; |
$this->pci_regexp2 = '/"(.*)" (.*).* at [.0-9]+ irq/'; |
} |
function get_sys_ticks () { |
$a = $this->grab_key('kern.boottime'); |
$sys_ticks = time() - $a; |
return $sys_ticks; |
} |
function network () { |
$netstat_b = execute_program('netstat', '-nbdi | cut -c1-25,44- | grep "^[a-z]*[0-9][ \t].*Link"'); |
$netstat_n = execute_program('netstat', '-ndi | cut -c1-25,44- | grep "^[a-z]*[0-9][ \t].*Link"'); |
$lines_b = explode("\n", $netstat_b); |
$lines_n = explode("\n", $netstat_n); |
$results = array(); |
for ($i = 0, $max = sizeof($lines_b); $i < $max; $i++) { |
$ar_buf_b = preg_split("/\s+/", $lines_b[$i]); |
$ar_buf_n = preg_split("/\s+/", $lines_n[$i]); |
if (!empty($ar_buf_b[0]) && !empty($ar_buf_n[3])) { |
$results[$ar_buf_b[0]] = array(); |
$results[$ar_buf_b[0]]['rx_bytes'] = $ar_buf_b[3]; |
$results[$ar_buf_b[0]]['rx_packets'] = $ar_buf_n[3]; |
$results[$ar_buf_b[0]]['rx_errs'] = $ar_buf_n[4]; |
$results[$ar_buf_b[0]]['rx_drop'] = $ar_buf_n[8]; |
$results[$ar_buf_b[0]]['tx_bytes'] = $ar_buf_b[4]; |
$results[$ar_buf_b[0]]['tx_packets'] = $ar_buf_n[5]; |
$results[$ar_buf_b[0]]['tx_errs'] = $ar_buf_n[6]; |
$results[$ar_buf_b[0]]['tx_drop'] = $ar_buf_n[8]; |
$results[$ar_buf_b[0]]['errs'] = $ar_buf_n[4] + $ar_buf_n[6]; |
$results[$ar_buf_b[0]]['drop'] = $ar_buf_n[8]; |
} |
} |
return $results; |
} |
// get the ide device information out of dmesg |
function ide () { |
$results = array(); |
$s = 0; |
for ($i = 0, $max = count($this->read_dmesg()); $i < $max; $i++) { |
$buf = $this->dmesg[$i]; |
if (preg_match('/^(.*) at (pciide|wdc|atabus|atapibus)[0-9] (.*): <(.*)>/', $buf, $ar_buf)) { |
$s = $ar_buf[1]; |
$results[$s]['model'] = $ar_buf[4]; |
$results[$s]['media'] = 'Hard Disk'; |
// now loop again and find the capacity |
for ($j = 0, $max1 = count($this->read_dmesg()); $j < $max1; $j++) { |
$buf_n = $this->dmesg[$j]; |
if (preg_match("/^($s): (.*), (.*), (.*)MB, .*$/", $buf_n, $ar_buf_n)) { |
$results[$s]['capacity'] = $ar_buf_n[4] * 2048 * 1.049; |
} elseif (preg_match("/^($s): (.*) MB, (.*), (.*), .*$/", $buf_n, $ar_buf_n)) { |
$results[$s]['capacity'] = $ar_buf_n[2] * 2048; |
} |
} |
} |
} |
asort($results); |
return $results; |
} |
function distroicon () { |
$result = 'NetBSD.png'; |
return($result); |
} |
} |
?> |
/web/acc/phpsysinfo/includes/os/class.BSD.common.inc.php |
---|
0,0 → 1,300 |
<?php |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// $Id: class.BSD.common.inc.php,v 1.52 2006/06/13 18:31:52 bigmichi1 Exp $ |
if (!defined('IN_PHPSYSINFO')) { |
die("No Hacking"); |
} |
require_once(APP_ROOT . '/includes/os/class.parseProgs.inc.php'); |
class bsd_common { |
var $dmesg; |
var $parser; |
// Our constructor |
// this function is run on the initialization of this class |
function bsd_common () { |
$this->parser = new Parser(); |
$this->parser->df_param = ""; |
} |
// read /var/run/dmesg.boot, but only if we haven't already. |
function read_dmesg () { |
if (! $this->dmesg) { |
if( PHP_OS == "Darwin" ) { |
$this->dmesg = array(); |
} else { |
$parts = explode("rebooting", rfts( '/var/run/dmesg.boot' ) ); |
$this->dmesg = explode("\n", $parts[count($parts) - 1]); |
} |
} |
return $this->dmesg; |
} |
// grabs a key from sysctl(8) |
function grab_key ($key) { |
return execute_program('sysctl', "-n $key"); |
} |
// get our apache SERVER_NAME or vhost |
function hostname () { |
if (!($result = getenv('SERVER_NAME'))) { |
$result = "N.A."; |
} |
return $result; |
} |
// get our canonical hostname |
function chostname () { |
return execute_program('hostname'); |
} |
// get the IP address of our canonical hostname |
function ip_addr () { |
if (!($result = getenv('SERVER_ADDR'))) { |
$result = gethostbyname($this->chostname()); |
} |
return $result; |
} |
function kernel () { |
$s = $this->grab_key('kern.version'); |
$a = explode(':', $s); |
return $a[0] . $a[1] . ':' . $a[2]; |
} |
function uptime () { |
$result = $this->get_sys_ticks(); |
return $result; |
} |
function users () { |
return execute_program('who', '| wc -l'); |
} |
function loadavg ($bar = false) { |
$s = $this->grab_key('vm.loadavg'); |
$s = ereg_replace('{ ', '', $s); |
$s = ereg_replace(' }', '', $s); |
$results['avg'] = explode(' ', $s); |
if ($bar) { |
if ($fd = $this->grab_key('kern.cp_time')) { |
// Find out the CPU load |
// user + sys = load |
// total = total |
preg_match($this->cpu_regexp2, $fd, $res ); |
$load = $res[2] + $res[3] + $res[4]; // cpu.user + cpu.sys |
$total = $res[2] + $res[3] + $res[4] + $res[5]; // cpu.total |
// we need a second value, wait 1 second befor getting (< 1 second no good value will occour) |
sleep(1); |
$fd = $this->grab_key('kern.cp_time'); |
preg_match($this->cpu_regexp2, $fd, $res ); |
$load2 = $res[2] + $res[3] + $res[4]; |
$total2 = $res[2] + $res[3] + $res[4] + $res[5]; |
$results['cpupercent'] = (100*($load2 - $load)) / ($total2 - $total); |
} |
} |
return $results; |
} |
function cpu_info () { |
$results = array(); |
$ar_buf = array(); |
$results['model'] = $this->grab_key('hw.model'); |
$results['cpus'] = $this->grab_key('hw.ncpu'); |
for ($i = 0, $max = count($this->read_dmesg()); $i < $max; $i++) { |
$buf = $this->dmesg[$i]; |
if (preg_match("/$this->cpu_regexp/", $buf, $ar_buf)) { |
$results['cpuspeed'] = round($ar_buf[2]); |
break; |
} |
} |
return $results; |
} |
// get the scsi device information out of dmesg |
function scsi () { |
$results = array(); |
$ar_buf = array(); |
for ($i = 0, $max = count($this->read_dmesg()); $i < $max; $i++) { |
$buf = $this->dmesg[$i]; |
if (preg_match("/$this->scsi_regexp1/", $buf, $ar_buf)) { |
$s = $ar_buf[1]; |
$results[$s]['model'] = $ar_buf[2]; |
$results[$s]['media'] = 'Hard Disk'; |
} elseif (preg_match("/$this->scsi_regexp2/", $buf, $ar_buf)) { |
$s = $ar_buf[1]; |
$results[$s]['capacity'] = $ar_buf[2] * 2048 * 1.049; |
} |
} |
// return array_values(array_unique($results)); |
// 1. more useful to have device names |
// 2. php 4.1.1 array_unique() deletes non-unique values. |
asort($results); |
return $results; |
} |
// get the pci device information out of dmesg |
function pci () { |
$results = array(); |
if( !( is_array($results = $this->parser->parse_lspci()) || is_array($results = $this->parser->parse_pciconf() ))) { |
for ($i = 0, $s = 0; $i < count($this->read_dmesg()); $i++) { |
$buf = $this->dmesg[$i]; |
if(!isset($this->pci_regexp1) && !isset($this->pci_regexp2)) { |
$this->pci_regexp1 = '/(.*): <(.*)>(.*) pci[0-9]$/'; |
$this->pci_regexp2 = '/(.*): <(.*)>.* at [.0-9]+ irq/'; |
} |
if (preg_match($this->pci_regexp1, $buf, $ar_buf)) { |
$results[$s++] = $ar_buf[1] . ": " . $ar_buf[2]; |
} elseif (preg_match($this->pci_regexp2, $buf, $ar_buf)) { |
$results[$s++] = $ar_buf[1] . ": " . $ar_buf[2]; |
} |
} |
asort($results); |
} |
return $results; |
} |
// get the ide device information out of dmesg |
function ide () { |
$results = array(); |
$s = 0; |
for ($i = 0, $max = count($this->read_dmesg()); $i < $max; $i++) { |
$buf = $this->dmesg[$i]; |
if (preg_match('/^(ad[0-9]+): (.*)MB <(.*)> (.*) (.*)/', $buf, $ar_buf)) { |
$s = $ar_buf[1]; |
$results[$s]['model'] = $ar_buf[3]; |
$results[$s]['media'] = 'Hard Disk'; |
$results[$s]['capacity'] = $ar_buf[2] * 2048 * 1.049; |
} elseif (preg_match('/^(acd[0-9]+): (.*) <(.*)> (.*)/', $buf, $ar_buf)) { |
$s = $ar_buf[1]; |
$results[$s]['model'] = $ar_buf[3]; |
$results[$s]['media'] = 'CD-ROM'; |
} |
} |
// return array_values(array_unique($results)); |
// 1. more useful to have device names |
// 2. php 4.1.1 array_unique() deletes non-unique values. |
asort($results); |
return $results; |
} |
// place holder function until we add acual usb detection |
function usb () { |
return array(); |
} |
function sbus () { |
$results = array(); |
$_results[0] = ""; |
// TODO. Nothing here yet. Move along. |
$results = $_results; |
return $results; |
} |
function memory () { |
$s = $this->grab_key('hw.physmem'); |
if (PHP_OS == 'FreeBSD' || PHP_OS == 'OpenBSD') { |
// vmstat on fbsd 4.4 or greater outputs kbytes not hw.pagesize |
// I should probably add some version checking here, but for now |
// we only support fbsd 4.4 |
$pagesize = 1024; |
} else { |
$pagesize = $this->grab_key('hw.pagesize'); |
} |
$results['ram'] = array(); |
$pstat = execute_program('vmstat'); |
$lines = explode("\n", $pstat); |
for ($i = 0, $max = sizeof($lines); $i < $max; $i++) { |
$ar_buf = preg_split("/\s+/", $lines[$i], 19); |
if ($i == 2) { |
if(PHP_OS == 'NetBSD') { |
$results['ram']['free'] = $ar_buf[5]; |
} else { |
$results['ram']['free'] = $ar_buf[5] * $pagesize / 1024; |
} |
} |
} |
$results['ram']['total'] = $s / 1024; |
$results['ram']['shared'] = 0; |
$results['ram']['buffers'] = 0; |
$results['ram']['used'] = $results['ram']['total'] - $results['ram']['free']; |
$results['ram']['cached'] = 0; |
$results['ram']['percent'] = round(($results['ram']['used'] * 100) / $results['ram']['total']); |
if (PHP_OS == 'OpenBSD' || PHP_OS == 'NetBSD') { |
$pstat = execute_program('swapctl', '-l -k'); |
} else { |
$pstat = execute_program('swapinfo', '-k'); |
} |
$lines = explode("\n", $pstat); |
$results['swap']['total'] = 0; |
$results['swap']['used'] = 0; |
$results['swap']['free'] = 0; |
for ($i = 1, $max = sizeof($lines); $i < $max; $i++) { |
$ar_buf = preg_split("/\s+/", $lines[$i], 6); |
if ($ar_buf[0] != 'Total') { |
$results['swap']['total'] = $results['swap']['total'] + $ar_buf[1]; |
$results['swap']['used'] = $results['swap']['used'] + $ar_buf[2]; |
$results['swap']['free'] = $results['swap']['free'] + $ar_buf[3]; |
$results['devswap'][$i - 1] = array(); |
$results['devswap'][$i - 1]['dev'] = $ar_buf[0]; |
$results['devswap'][$i - 1]['total'] = $ar_buf[1]; |
$results['devswap'][$i - 1]['used'] = $ar_buf[2]; |
$results['devswap'][$i - 1]['free'] = ($results['devswap'][$i - 1]['total'] - $results['devswap'][$i - 1]['used']); |
$results['devswap'][$i - 1]['percent'] = $ar_buf[2] > 0 ? round(($ar_buf[2] * 100) / $ar_buf[1]) : 0; |
} |
} |
$results['swap']['percent'] = round(($results['swap']['used'] * 100) / $results['swap']['total']); |
if( is_callable( array( 'sysinfo', 'memory_additional' ) ) ) { |
$results = $this->memory_additional( $results ); |
} |
return $results; |
} |
function filesystems () { |
return $this->parser->parse_filesystems(); |
} |
function distro () { |
$distro = execute_program('uname', '-s'); |
$result = $distro; |
return($result); |
} |
} |
?> |
/web/acc/phpsysinfo/includes/os/class.Linux.inc.php |
---|
0,0 → 1,552 |
<?php |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// $Id: class.Linux.inc.php,v 1.88 2007/02/25 20:50:52 bigmichi1 Exp $ |
if (!defined('IN_PHPSYSINFO')) { |
die("No Hacking"); |
} |
require_once(APP_ROOT . '/includes/os/class.BSD.common.inc.php'); |
class sysinfo { |
var $inifile = "distros.ini"; |
var $icon = "unknown.png"; |
var $distro = "unknown"; |
var $parser; |
// get the distro name and icon when create the sysinfo object |
function sysinfo() { |
$this->parser = new Parser(); |
$this->parser->df_param = 'P'; |
$list = @parse_ini_file(APP_ROOT . "/" . $this->inifile, true); |
if (!$list) { |
return; |
} |
$distro_info = execute_program('lsb_release','-a 2> /dev/null', false); // We have the '2> /dev/null' because Ubuntu gives an error on this command which causes the distro to be unknown |
if ( $distro_info != 'ERROR') { |
$distro_tmp = explode("\n",$distro_info); |
foreach( $distro_tmp as $info ) { |
$info_tmp = explode(':', $info, 2); |
$distro[ $info_tmp[0] ] = trim($info_tmp[1]); |
} |
if( !isset( $list[$distro['Distributor ID']] ) ){ |
return; |
} |
$this->icon = isset($list[$distro['Distributor ID']]["Image"]) ? $list[$distro['Distributor ID']]["Image"] : $this->icon; |
$this->distro = $distro['Description']; |
} else { // Fall back in case 'lsb_release' does not exist ;) |
foreach ($list as $section => $distribution) { |
if (!isset($distribution["Files"])) { |
continue; |
} else { |
foreach (explode(";", $distribution["Files"]) as $filename) { |
if (file_exists($filename)) { |
$buf = rfts( $filename ); |
$this->icon = isset($distribution["Image"]) ? $distribution["Image"] : $this->icon; |
$this->distro = isset($distribution["Name"]) ? $distribution["Name"] . " " . trim($buf) : trim($buf); |
break 2; |
} |
} |
} |
} |
} |
} |
// get our apache SERVER_NAME or vhost |
function vhostname () { |
if (! ($result = getenv('SERVER_NAME'))) { |
$result = 'N.A.'; |
} |
return $result; |
} |
// get the IP address of our vhost name |
function vip_addr () { |
return gethostbyname($this->vhostname()); |
} |
// get our canonical hostname |
function chostname () { |
$result = rfts( '/proc/sys/kernel/hostname', 1 ); |
if ( $result == "ERROR" ) { |
$result = "N.A."; |
} else { |
$result = gethostbyaddr( gethostbyname( trim( $result ) ) ); |
} |
return $result; |
} |
// get the IP address of our canonical hostname |
function ip_addr () { |
if (!($result = getenv('SERVER_ADDR'))) { |
$result = gethostbyname($this->chostname()); |
} |
return $result; |
} |
function kernel () { |
$buf = rfts( '/proc/version', 1 ); |
if ( $buf == "ERROR" ) { |
$result = "N.A."; |
} else { |
if (preg_match('/version (.*?) /', $buf, $ar_buf)) { |
$result = $ar_buf[1]; |
if (preg_match('/SMP/', $buf)) { |
$result .= ' (SMP)'; |
} |
} |
} |
return $result; |
} |
function uptime () { |
$buf = rfts( '/proc/uptime', 1 ); |
$ar_buf = explode( ' ', $buf ); |
$result = trim( $ar_buf[0] ); |
return $result; |
} |
function users () { |
$strResult = 0; |
$strBuf = execute_program('who', '-q'); |
if( $strBuf != "ERROR" ) { |
$arrWho = explode( '=', $strBuf ); |
$strResult = $arrWho[1]; |
} |
return $strResult; |
} |
function loadavg ($bar = false) { |
$buf = rfts( '/proc/loadavg' ); |
if( $buf == "ERROR" ) { |
$results['avg'] = array('N.A.', 'N.A.', 'N.A.'); |
} else { |
$results['avg'] = preg_split("/\s/", $buf, 4); |
unset($results['avg'][3]); // don't need the extra values, only first three |
} |
if ($bar) { |
$buf = rfts( '/proc/stat', 1 ); |
if( $buf != "ERROR" ) { |
sscanf($buf, "%*s %Ld %Ld %Ld %Ld", $ab, $ac, $ad, $ae); |
// Find out the CPU load |
// user + sys = load |
// total = total |
$load = $ab + $ac + $ad; // cpu.user + cpu.sys |
$total = $ab + $ac + $ad + $ae; // cpu.total |
// we need a second value, wait 1 second befor getting (< 1 second no good value will occour) |
sleep(1); |
$buf = rfts( '/proc/stat', 1 ); |
sscanf($buf, "%*s %Ld %Ld %Ld %Ld", $ab, $ac, $ad, $ae); |
$load2 = $ab + $ac + $ad; |
$total2 = $ab + $ac + $ad + $ae; |
$results['cpupercent'] = (100*($load2 - $load)) / ($total2 - $total); |
} |
} |
return $results; |
} |
function cpu_info () { |
$bufr = rfts( '/proc/cpuinfo' ); |
$results = array("cpus" => 0); |
if ( $bufr != "ERROR" ) { |
$bufe = explode("\n", $bufr); |
$results = array('cpus' => 0, 'bogomips' => 0); |
$ar_buf = array(); |
foreach( $bufe as $buf ) { |
$arrBuff = preg_split('/\s+:\s+/', trim($buf)); |
if( count( $arrBuff ) == 2 ) { |
$key = $arrBuff[0]; |
$value = $arrBuff[1]; |
// All of the tags here are highly architecture dependant. |
// the only way I could reconstruct them for machines I don't |
// have is to browse the kernel source. So if your arch isn't |
// supported, tell me you want it written in. |
switch ($key) { |
case 'model name': |
$results['model'] = $value; |
break; |
case 'cpu MHz': |
$results['cpuspeed'] = sprintf('%.2f', $value); |
break; |
case 'cycle frequency [Hz]': // For Alpha arch - 2.2.x |
$results['cpuspeed'] = sprintf('%.2f', $value / 1000000); |
break; |
case 'clock': // For PPC arch (damn borked POS) |
$results['cpuspeed'] = sprintf('%.2f', $value); |
break; |
case 'cpu': // For PPC arch (damn borked POS) |
$results['model'] = $value; |
break; |
case 'L2 cache': // More for PPC |
$results['cache'] = $value; |
break; |
case 'revision': // For PPC arch (damn borked POS) |
$results['model'] .= ' ( rev: ' . $value . ')'; |
break; |
case 'cpu model': // For Alpha arch - 2.2.x |
$results['model'] .= ' (' . $value . ')'; |
break; |
case 'cache size': |
$results['cache'] = $value; |
break; |
case 'bogomips': |
$results['bogomips'] += $value; |
break; |
case 'BogoMIPS': // For alpha arch - 2.2.x |
$results['bogomips'] += $value; |
break; |
case 'BogoMips': // For sparc arch |
$results['bogomips'] += $value; |
break; |
case 'cpus detected': // For Alpha arch - 2.2.x |
$results['cpus'] += $value; |
break; |
case 'system type': // Alpha arch - 2.2.x |
$results['model'] .= ', ' . $value . ' '; |
break; |
case 'platform string': // Alpha arch - 2.2.x |
$results['model'] .= ' (' . $value . ')'; |
break; |
case 'processor': |
$results['cpus'] += 1; |
break; |
case 'Cpu0ClkTck': // Linux sparc64 |
$results['cpuspeed'] = sprintf('%.2f', hexdec($value) / 1000000); |
break; |
case 'Cpu0Bogo': // Linux sparc64 & sparc32 |
$results['bogomips'] = $value; |
break; |
case 'ncpus probed': // Linux sparc64 & sparc32 |
$results['cpus'] = $value; |
break; |
} |
} |
} |
// sparc64 specific code follows |
// This adds the ability to display the cache that a CPU has |
// Originally made by Sven Blumenstein <bazik@gentoo.org> in 2004 |
// Modified by Tom Weustink <freshy98@gmx.net> in 2004 |
$sparclist = array('SUNW,UltraSPARC@0,0', 'SUNW,UltraSPARC-II@0,0', 'SUNW,UltraSPARC@1c,0', 'SUNW,UltraSPARC-IIi@1c,0', 'SUNW,UltraSPARC-II@1c,0', 'SUNW,UltraSPARC-IIe@0,0'); |
foreach ($sparclist as $name) { |
$buf = rfts( '/proc/openprom/' . $name . '/ecache-size',1 , 32, false ); |
if( $buf != "ERROR" ) { |
$results['cache'] = base_convert($buf, 16, 10)/1024 . ' KB'; |
} |
} |
// sparc64 specific code ends |
// XScale detection code |
if ( $results['cpus'] == 0 ) { |
foreach( $bufe as $buf ) { |
$fields = preg_split('/\s*:\s*/', trim($buf), 2); |
if (sizeof($fields) == 2) { |
list($key, $value) = $fields; |
switch($key) { |
case 'Processor': |
$results['cpus'] += 1; |
$results['model'] = $value; |
break; |
case 'BogoMIPS': //BogoMIPS are not BogoMIPS on this CPU, it's the speed, no BogoMIPS available |
$results['cpuspeed'] = $value; |
break; |
case 'I size': |
$results['cache'] = $value; |
break; |
case 'D size': |
$results['cache'] += $value; |
break; |
} |
} |
} |
$results['cache'] = $results['cache'] / 1024 . " KB"; |
} |
} |
$keys = array_keys($results); |
$keys2be = array('model', 'cpuspeed', 'cache', 'bogomips', 'cpus'); |
while ($ar_buf = each($keys2be)) { |
if (! in_array($ar_buf[1], $keys)) { |
$results[$ar_buf[1]] = 'N.A.'; |
} |
} |
$buf = rfts( '/proc/acpi/thermal_zone/THRM/temperature', 1, 4096, false ); |
if ( $buf != "ERROR" ) { |
$results['temp'] = substr( $buf, 25, 2 ); |
} |
return $results; |
} |
function pci () { |
$arrResults = array(); |
$booDevice = false; |
if( ! $arrResults = $this->parser->parse_lspci() ) { |
$strBuf = rfts( '/proc/pci', 0, 4096, false ); |
if( $strBuf != "ERROR" ) { |
$arrBuf = explode( "\n", $strBuf ); |
foreach( $arrBuf as $strLine ) { |
if( preg_match( '/Bus/', $strLine ) ) { |
$booDevice = true; |
continue; |
} |
if( $booDevice ) { |
list( $strKey, $strValue ) = explode( ': ', $strLine, 2 ); |
if( ! preg_match( '/bridge/i', $strKey ) && ! preg_match( '/USB/i ', $strKey ) ) { |
$arrResults[] = preg_replace( '/\([^\)]+\)\.$/', '', trim( $strValue ) ); |
} |
$booDevice = false; |
} |
} |
asort( $arrResults ); |
} |
} |
return $arrResults; |
} |
function ide () { |
$results = array(); |
$bufd = gdc( '/proc/ide', false ); |
foreach( $bufd as $file ) { |
if (preg_match('/^hd/', $file)) { |
$results[$file] = array(); |
$buf = rfts("/proc/ide/" . $file . "/media", 1 ); |
if ( $buf != "ERROR" ) { |
$results[$file]['media'] = trim($buf); |
if ($results[$file]['media'] == 'disk') { |
$results[$file]['media'] = 'Hard Disk'; |
$buf = rfts( "/proc/ide/" . $file . "/capacity", 1, 4096, false); |
if( $buf == "ERROR" ) { |
$buf = rfts( "/sys/block/" . $file . "/size", 1, 4096, false); |
} |
if ( $buf != "ERROR" ) { |
$results[$file]['capacity'] = trim( $buf ); |
} |
} elseif ($results[$file]['media'] == 'cdrom') { |
$results[$file]['media'] = 'CD-ROM'; |
unset($results[$file]['capacity']); |
} |
} else { |
unset($results[$file]); |
} |
$buf = rfts( "/proc/ide/" . $file . "/model", 1 ); |
if ( $buf != "ERROR" ) { |
$results[$file]['model'] = trim( $buf ); |
if (preg_match('/WDC/', $results[$file]['model'])) { |
$results[$file]['manufacture'] = 'Western Digital'; |
} elseif (preg_match('/IBM/', $results[$file]['model'])) { |
$results[$file]['manufacture'] = 'IBM'; |
} elseif (preg_match('/FUJITSU/', $results[$file]['model'])) { |
$results[$file]['manufacture'] = 'Fujitsu'; |
} else { |
$results[$file]['manufacture'] = 'Unknown'; |
} |
} |
} |
} |
asort($results); |
return $results; |
} |
function scsi () { |
$results = array(); |
$dev_vendor = ''; |
$dev_model = ''; |
$dev_rev = ''; |
$dev_type = ''; |
$s = 1; |
$get_type = 0; |
$bufr = execute_program('lsscsi', '-c', false); |
if( $bufr == "ERROR" ) { |
$bufr = rfts( '/proc/scsi/scsi', 0, 4096, false); |
} |
if ( $bufr != "ERROR" ) { |
$bufe = explode("\n", $bufr); |
foreach( $bufe as $buf ) { |
if (preg_match('/Vendor/', $buf)) { |
preg_match('/Vendor: (.*) Model: (.*) Rev: (.*)/i', $buf, $dev); |
list($key, $value) = explode(': ', $buf, 2); |
$dev_str = $value; |
$get_type = true; |
continue; |
} |
if ($get_type) { |
preg_match('/Type:\s+(\S+)/i', $buf, $dev_type); |
$results[$s]['model'] = "$dev[1] $dev[2] ($dev_type[1])"; |
$results[$s]['media'] = "Hard Disk"; |
$s++; |
$get_type = false; |
} |
} |
} |
asort($results); |
return $results; |
} |
function usb () { |
$results = array(); |
$devnum = -1; |
$bufr = execute_program('lsusb', '', false); |
if( $bufr == "ERROR" ) { |
$bufr = rfts( '/proc/bus/usb/devices', 0, 4096, false ); |
if ( $bufr != "ERROR" ) { |
$bufe = explode("\n", $bufr); |
foreach( $bufe as $buf ) { |
if (preg_match('/^T/', $buf)) { |
$devnum += 1; |
$results[$devnum] = ""; |
} elseif (preg_match('/^S:/', $buf)) { |
list($key, $value) = explode(': ', $buf, 2); |
list($key, $value2) = explode('=', $value, 2); |
if (trim($key) != "SerialNumber") { |
$results[$devnum] .= " " . trim($value2); |
$devstring = 0; |
} |
} |
} |
} |
} else { |
$bufe = explode( "\n", $bufr ); |
foreach( $bufe as $buf ) { |
$device = preg_split("/ /", $buf, 7); |
if( isset( $device[6] ) && trim( $device[6] ) != "" ) { |
$results[$devnum++] = trim( $device[6] ); |
} |
} |
} |
return $results; |
} |
function sbus () { |
$results = array(); |
$_results[0] = ""; |
// TODO. Nothing here yet. Move along. |
$results = $_results; |
return $results; |
} |
function network () { |
$results = array(); |
$bufr = rfts( '/proc/net/dev' ); |
if ( $bufr != "ERROR" ) { |
$bufe = explode("\n", $bufr); |
foreach( $bufe as $buf ) { |
if (preg_match('/:/', $buf)) { |
list($dev_name, $stats_list) = preg_split('/:/', $buf, 2); |
$stats = preg_split('/\s+/', trim($stats_list)); |
$results[$dev_name] = array(); |
$results[$dev_name]['rx_bytes'] = $stats[0]; |
$results[$dev_name]['rx_packets'] = $stats[1]; |
$results[$dev_name]['rx_errs'] = $stats[2]; |
$results[$dev_name]['rx_drop'] = $stats[3]; |
$results[$dev_name]['tx_bytes'] = $stats[8]; |
$results[$dev_name]['tx_packets'] = $stats[9]; |
$results[$dev_name]['tx_errs'] = $stats[10]; |
$results[$dev_name]['tx_drop'] = $stats[11]; |
$results[$dev_name]['errs'] = $stats[2] + $stats[10]; |
$results[$dev_name]['drop'] = $stats[3] + $stats[11]; |
} |
} |
} |
return $results; |
} |
function memory () { |
$results['ram'] = array('total' => 0, 'free' => 0, 'used' => 0, 'percent' => 0); |
$results['swap'] = array('total' => 0, 'free' => 0, 'used' => 0, 'percent' => 0); |
$results['devswap'] = array(); |
$bufr = rfts( '/proc/meminfo' ); |
if ( $bufr != "ERROR" ) { |
$bufe = explode("\n", $bufr); |
foreach( $bufe as $buf ) { |
if (preg_match('/^MemTotal:\s+(.*)\s*kB/i', $buf, $ar_buf)) { |
$results['ram']['total'] = $ar_buf[1]; |
} else if (preg_match('/^MemFree:\s+(.*)\s*kB/i', $buf, $ar_buf)) { |
$results['ram']['free'] = $ar_buf[1]; |
} else if (preg_match('/^Cached:\s+(.*)\s*kB/i', $buf, $ar_buf)) { |
$results['ram']['cached'] = $ar_buf[1]; |
} else if (preg_match('/^Buffers:\s+(.*)\s*kB/i', $buf, $ar_buf)) { |
$results['ram']['buffers'] = $ar_buf[1]; |
} |
} |
$results['ram']['used'] = $results['ram']['total'] - $results['ram']['free']; |
$results['ram']['percent'] = round(($results['ram']['used'] * 100) / $results['ram']['total']); |
// values for splitting memory usage |
if (isset($results['ram']['cached']) && isset($results['ram']['buffers'])) { |
$results['ram']['app'] = $results['ram']['used'] - $results['ram']['cached'] - $results['ram']['buffers']; |
$results['ram']['app_percent'] = round(($results['ram']['app'] * 100) / $results['ram']['total']); |
$results['ram']['buffers_percent'] = round(($results['ram']['buffers'] * 100) / $results['ram']['total']); |
$results['ram']['cached_percent'] = round(($results['ram']['cached'] * 100) / $results['ram']['total']); |
} |
$bufr = rfts( '/proc/swaps' ); |
if ( $bufr != "ERROR" ) { |
$swaps = explode("\n", $bufr); |
for ($i = 1; $i < (sizeof($swaps)); $i++) { |
if( trim( $swaps[$i] ) != "" ) { |
$ar_buf = preg_split('/\s+/', $swaps[$i], 6); |
$results['devswap'][$i - 1] = array(); |
$results['devswap'][$i - 1]['dev'] = $ar_buf[0]; |
$results['devswap'][$i - 1]['total'] = $ar_buf[2]; |
$results['devswap'][$i - 1]['used'] = $ar_buf[3]; |
$results['devswap'][$i - 1]['free'] = ($results['devswap'][$i - 1]['total'] - $results['devswap'][$i - 1]['used']); |
$results['devswap'][$i - 1]['percent'] = round(($ar_buf[3] * 100) / $ar_buf[2]); |
$results['swap']['total'] += $ar_buf[2]; |
$results['swap']['used'] += $ar_buf[3]; |
$results['swap']['free'] = $results['swap']['total'] - $results['swap']['used']; |
$results['swap']['percent'] = round(($results['swap']['used'] * 100) / $results['swap']['total']); |
} |
} |
} |
} |
return $results; |
} |
function filesystems () { |
return $this->parser->parse_filesystems(); |
} |
function distro () { |
return $this->distro; |
} |
function distroicon () { |
return $this->icon; |
} |
} |
?> |
/web/acc/phpsysinfo/includes/os/class.HP-UX.inc.php |
---|
0,0 → 1,423 |
<?php |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// $Id: class.HP-UX.inc.php,v 1.20 2007/02/18 18:59:54 bigmichi1 Exp $ |
class sysinfo { |
// get our apache SERVER_NAME or vhost |
function vhostname () { |
if (! ($result = getenv('SERVER_NAME'))) { |
$result = 'N.A.'; |
} |
return $result; |
} |
// get the IP address of our vhost name |
function vip_addr () { |
return gethostbyname($this->vhostname()); |
} |
// get our canonical hostname |
function chostname () { |
return execute_program('hostname'); |
} |
// get the IP address of our canonical hostname |
function ip_addr () { |
if (!($result = getenv('SERVER_ADDR'))) { |
$result = gethostbyname($this->chostname()); |
} |
return $result; |
} |
function kernel () { |
return execute_program('uname', '-srvm'); |
} |
function uptime () { |
$result = 0; |
$ar_buf = array(); |
$buf = execute_program('uptime'); |
if (preg_match("/up (\d+) days,\s*(\d+):(\d+),/", $buf, $ar_buf)) { |
$min = $ar_buf[3]; |
$hours = $ar_buf[2]; |
$days = $ar_buf[1]; |
$result = $days * 86400 + $hours * 3600 + $min * 60; |
} |
return $result; |
} |
function users () { |
$who = explode('=', execute_program('who', '-q')); |
$result = $who[1]; |
return $result; |
} |
function loadavg ($bar = false) { |
$ar_buf = array(); |
$buf = execute_program('uptime'); |
if (preg_match("/average: (.*), (.*), (.*)$/", $buf, $ar_buf)) { |
$results['avg'] = array($ar_buf[1], $ar_buf[2], $ar_buf[3]); |
} else { |
$results['avg'] = array('N.A.', 'N.A.', 'N.A.'); |
} |
return $results; |
} |
function cpu_info () { |
$results = array(); |
$ar_buf = array(); |
$bufr = rfts( '/proc/cpuinfo' ); |
if( $bufr != "ERROR" ) { |
$bufe = explode( "\n", $bufr ); |
foreach( $bufe as $buf ) { |
list($key, $value) = preg_split('/\s+:\s+/', trim($buf), 2); |
// All of the tags here are highly architecture dependant. |
// the only way I could reconstruct them for machines I don't |
// have is to browse the kernel source. So if your arch isn't |
// supported, tell me you want it written in. |
switch ($key) { |
case 'model name': |
$results['model'] = $value; |
break; |
case 'cpu MHz': |
$results['cpuspeed'] = sprintf('%.2f', $value); |
break; |
case 'cycle frequency [Hz]': // For Alpha arch - 2.2.x |
$results['cpuspeed'] = sprintf('%.2f', $value / 1000000); |
break; |
case 'clock': // For PPC arch (damn borked POS) |
$results['cpuspeed'] = sprintf('%.2f', $value); |
break; |
case 'cpu': // For PPC arch (damn borked POS) |
$results['model'] = $value; |
break; |
case 'revision': // For PPC arch (damn borked POS) |
$results['model'] .= ' ( rev: ' . $value . ')'; |
break; |
case 'cpu model': // For Alpha arch - 2.2.x |
$results['model'] .= ' (' . $value . ')'; |
break; |
case 'cache size': |
$results['cache'] = $value; |
break; |
case 'bogomips': |
$results['bogomips'] += $value; |
break; |
case 'BogoMIPS': // For alpha arch - 2.2.x |
$results['bogomips'] += $value; |
break; |
case 'BogoMips': // For sparc arch |
$results['bogomips'] += $value; |
break; |
case 'cpus detected': // For Alpha arch - 2.2.x |
$results['cpus'] += $value; |
break; |
case 'system type': // Alpha arch - 2.2.x |
$results['model'] .= ', ' . $value . ' '; |
break; |
case 'platform string': // Alpha arch - 2.2.x |
$results['model'] .= ' (' . $value . ')'; |
break; |
case 'processor': |
$results['cpus'] += 1; |
break; |
} |
} |
fclose($fd); |
} |
$keys = array_keys($results); |
$keys2be = array('model', 'cpuspeed', 'cache', 'bogomips', 'cpus'); |
while ($ar_buf = each($keys2be)) { |
if (! in_array($ar_buf[1], $keys)) { |
$results[$ar_buf[1]] = 'N.A.'; |
} |
} |
return $results; |
} |
function pci () { |
$results = array(); |
$bufr = rfts( '/proc/pci' ); |
if( $bufr != "ERROR" ) { |
$bufe = explode( "\n", $bufr ); |
foreach( $bufe as $buf ) { |
if (preg_match('/Bus/', $buf)) { |
$device = true; |
continue; |
} |
if ($device) { |
list($key, $value) = explode(': ', $buf, 2); |
if (!preg_match('/bridge/i', $key) && !preg_match('/USB/i', $key)) { |
$results[] = preg_replace('/\([^\)]+\)\.$/', '', trim($value)); |
} |
$device = false; |
} |
} |
} |
asort($results); |
return $results; |
} |
function ide () { |
$results = array(); |
$bufd = gdc( '/proc/ide' ); |
foreach( $bufd as $file ) { |
if (preg_match('/^hd/', $file)) { |
$results[$file] = array(); |
// Check if device is CD-ROM (CD-ROM capacity shows as 1024 GB) |
$buf = rfts( "/proc/ide/" . $file . "/media", 1 ); |
if( $buf != "ERROR" ) { |
$results[$file]['media'] = trim( $buf ); |
if ($results[$file]['media'] == 'disk') { |
$results[$file]['media'] = 'Hard Disk'; |
} |
if ($results[$file]['media'] == 'cdrom') { |
$results[$file]['media'] = 'CD-ROM'; |
} |
} |
$buf = rfts( "/proc/ide/" . $file . "/model", 1 ); |
if( $buf != "ERROR" ) { |
$results[$file]['model'] = trim( $buf ); |
if (preg_match('/WDC/', $results[$file]['model'])) { |
$results[$file]['manufacture'] = 'Western Digital'; |
} elseif (preg_match('/IBM/', $results[$file]['model'])) { |
$results[$file]['manufacture'] = 'IBM'; |
} elseif (preg_match('/FUJITSU/', $results[$file]['model'])) { |
$results[$file]['manufacture'] = 'Fujitsu'; |
} else { |
$results[$file]['manufacture'] = 'Unknown'; |
} |
} |
$buf = rfts( "/proc/ide/" . $file . "/capacity", 1 ); |
if( $buf != "ERROR" ) { |
$results[$file]['capacity'] = trim( $buf ); |
if ($results[$file]['media'] == 'CD-ROM') { |
unset($results[$file]['capacity']); |
} |
} |
} |
} |
asort($results); |
return $results; |
} |
function scsi () { |
$results = array(); |
$dev_vendor = ''; |
$dev_model = ''; |
$dev_rev = ''; |
$dev_type = ''; |
$s = 1; |
$bufr = rfts( '/proc/scsi/scsi' ); |
if( $bufr != "ERROR" ) { |
$bufe = explode( "\n", $bufr ); |
foreach( $bufe as $buf ) { |
if (preg_match('/Vendor/', $buf)) { |
preg_match('/Vendor: (.*) Model: (.*) Rev: (.*)/i', $buf, $dev); |
list($key, $value) = explode(': ', $buf, 2); |
$dev_str = $value; |
$get_type = 1; |
continue; |
} |
if ($get_type) { |
preg_match('/Type:\s+(\S+)/i', $buf, $dev_type); |
$results[$s]['model'] = "$dev[1] $dev[2] ($dev_type[1])"; |
$results[$s]['media'] = "Hard Disk"; |
$s++; |
$get_type = 0; |
} |
} |
} |
asort($results); |
return $results; |
} |
function usb () { |
$results = array(); |
$devstring = 0; |
$devnum = -1; |
$bufr = rfts( '/proc/bus/usb/devices' ); |
if( $bufr != "ERROR" ) { |
$bufe = explode( "\n", $bufr ); |
foreach( $bufe as $buf ) { |
if (preg_match('/^T/', $buf)) { |
$devnum += 1; |
} |
if (preg_match('/^S/', $buf)) { |
$devstring = 1; |
} |
if ($devstring) { |
list($key, $value) = explode(': ', $buf, 2); |
list($key, $value2) = explode('=', $value, 2); |
$results[$devnum] .= " " . trim($value2); |
$devstring = 0; |
} |
} |
} |
return $results; |
} |
function sbus () { |
$results = array(); |
$_results[0] = ""; |
// TODO. Nothing here yet. Move along. |
$results = $_results; |
return $results; |
} |
function network () { |
$netstat = execute_program('netstat', '-ni | tail -n +2'); |
$lines = explode("\n", $netstat); |
$results = array(); |
for ($i = 0, $max = sizeof($lines); $i < $max; $i++) { |
$ar_buf = preg_split("/\s+/", $lines[$i]); |
if (!empty($ar_buf[0]) && !empty($ar_buf[3])) { |
$results[$ar_buf[0]] = array(); |
$results[$ar_buf[0]]['rx_bytes'] = $ar_buf[4]; |
$results[$ar_buf[0]]['rx_packets'] = $ar_buf[4]; |
$results[$ar_buf[0]]['rx_errs'] = $ar_buf[5]; |
$results[$ar_buf[0]]['rx_drop'] = $ar_buf[8]; |
$results[$ar_buf[0]]['tx_bytes'] = $ar_buf[6]; |
$results[$ar_buf[0]]['tx_packets'] = $ar_buf[6]; |
$results[$ar_buf[0]]['tx_errs'] = $ar_buf[7]; |
$results[$ar_buf[0]]['tx_drop'] = $ar_buf[8]; |
$results[$ar_buf[0]]['errs'] = $ar_buf[5] + $ar_buf[7]; |
$results[$ar_buf[0]]['drop'] = $ar_buf[8]; |
} |
} |
return $results; |
} |
function memory () { |
$results['ram'] = array(); |
$results['swap'] = array(); |
$results['devswap'] = array(); |
$bufr = rfts( '/proc/meminfo' ); |
if( $bufr != "ERROR" ) { |
$bufe = explode( "\n", $bufr ); |
foreach( $bufe as $buf ) { |
if (preg_match('/Mem:\s+(.*)$/', $buf, $ar_buf)) { |
$ar_buf = preg_split('/\s+/', $ar_buf[1], 6); |
$results['ram']['total'] = $ar_buf[0] / 1024; |
$results['ram']['used'] = $ar_buf[1] / 1024; |
$results['ram']['free'] = $ar_buf[2] / 1024; |
$results['ram']['shared'] = $ar_buf[3] / 1024; |
$results['ram']['buffers'] = $ar_buf[4] / 1024; |
$results['ram']['cached'] = $ar_buf[5] / 1024; |
// I don't like this since buffers and cache really aren't |
// 'used' per say, but I get too many emails about it. |
$results['ram']['percent'] = round(($results['ram']['used'] * 100) / $results['ram']['total']); |
} |
if (preg_match('/Swap:\s+(.*)$/', $buf, $ar_buf)) { |
$ar_buf = preg_split('/\s+/', $ar_buf[1], 3); |
$results['swap']['total'] = $ar_buf[0] / 1024; |
$results['swap']['used'] = $ar_buf[1] / 1024; |
$results['swap']['free'] = $ar_buf[2] / 1024; |
$results['swap']['percent'] = round(($ar_buf[1] * 100) / $ar_buf[0]); |
// Get info on individual swap files |
$swaps = rfts( '/proc/swaps' ); |
if( $swaps != "ERROR" ) { |
$swapdevs = explode("\n", $swaps); |
for ($i = 1, $max = (sizeof($swapdevs) - 1); $i < $max; $i++) { |
$ar_buf = preg_split('/\s+/', $swapdevs[$i], 6); |
$results['devswap'][$i - 1] = array(); |
$results['devswap'][$i - 1]['dev'] = $ar_buf[0]; |
$results['devswap'][$i - 1]['total'] = $ar_buf[2]; |
$results['devswap'][$i - 1]['used'] = $ar_buf[3]; |
$results['devswap'][$i - 1]['free'] = ($results['devswap'][$i - 1]['total'] - $results['devswap'][$i - 1]['used']); |
$results['devswap'][$i - 1]['percent'] = round(($ar_buf[3] * 100) / $ar_buf[2]); |
} |
break; |
} |
} |
} |
} |
return $results; |
} |
function filesystems () { |
$df = execute_program('df', '-kP'); |
$mounts = explode("\n", $df); |
$fstype = array(); |
$s = execute_program('mount', '-v'); |
$lines = explode("\n", $s); |
$i = 0; |
while (list(, $line) = each($lines)) { |
$a = explode(' ', $line); |
$fsdev[$a[0]] = $a[4]; |
} |
for ($i = 1, $j = 0, $max = sizeof($mounts); $i < $max; $i++) { |
$ar_buf = preg_split("/\s+/", $mounts[$i], 6); |
if (hide_mount($ar_buf[5])) { |
continue; |
} |
$results[$j] = array(); |
$results[$j]['disk'] = $ar_buf[0]; |
$results[$j]['size'] = $ar_buf[1]; |
$results[$j]['used'] = $ar_buf[2]; |
$results[$j]['free'] = $ar_buf[3]; |
$results[$j]['percent'] = $ar_buf[4]; |
$results[$j]['mount'] = $ar_buf[5]; |
($fstype[$ar_buf[5]]) ? $results[$j]['fstype'] = $fstype[$ar_buf[5]] : $results[$j]['fstype'] = $fsdev[$ar_buf[0]]; |
$j++; |
} |
return $results; |
} |
function distro () { |
$result = 'HP-UX'; |
return($result); |
} |
function distroicon () { |
$result = 'unknown.png'; |
return($result); |
} |
} |
?> |
/web/acc/phpsysinfo/includes/os/class.Linux.inc.php.default |
---|
0,0 → 1,552 |
<?php |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// $Id: class.Linux.inc.php,v 1.88 2007/02/25 20:50:52 bigmichi1 Exp $ |
if (!defined('IN_PHPSYSINFO')) { |
die("No Hacking"); |
} |
require_once(APP_ROOT . '/includes/os/class.BSD.common.inc.php'); |
class sysinfo { |
var $inifile = "distros.ini"; |
var $icon = "unknown.png"; |
var $distro = "unknown"; |
var $parser; |
// get the distro name and icon when create the sysinfo object |
function sysinfo() { |
$this->parser = new Parser(); |
$this->parser->df_param = 'P'; |
$list = @parse_ini_file(APP_ROOT . "/" . $this->inifile, true); |
if (!$list) { |
return; |
} |
$distro_info = execute_program('lsb_release','-a 2> /dev/null', false); // We have the '2> /dev/null' because Ubuntu gives an error on this command which causes the distro to be unknown |
if ( $distro_info != 'ERROR') { |
$distro_tmp = explode("\n",$distro_info); |
foreach( $distro_tmp as $info ) { |
$info_tmp = explode(':', $info, 2); |
$distro[ $info_tmp[0] ] = trim($info_tmp[1]); |
} |
if( !isset( $list[$distro['Distributor ID']] ) ){ |
return; |
} |
$this->icon = isset($list[$distro['Distributor ID']]["Image"]) ? $list[$distro['Distributor ID']]["Image"] : $this->icon; |
$this->distro = $distro['Description']; |
} else { // Fall back in case 'lsb_release' does not exist ;) |
foreach ($list as $section => $distribution) { |
if (!isset($distribution["Files"])) { |
continue; |
} else { |
foreach (explode(";", $distribution["Files"]) as $filename) { |
if (file_exists($filename)) { |
$buf = rfts( $filename ); |
$this->icon = isset($distribution["Image"]) ? $distribution["Image"] : $this->icon; |
$this->distro = isset($distribution["Name"]) ? $distribution["Name"] . " " . trim($buf) : trim($buf); |
break 2; |
} |
} |
} |
} |
} |
} |
// get our apache SERVER_NAME or vhost |
function vhostname () { |
if (! ($result = getenv('SERVER_NAME'))) { |
$result = 'N.A.'; |
} |
return $result; |
} |
// get the IP address of our vhost name |
function vip_addr () { |
return gethostbyname($this->vhostname()); |
} |
// get our canonical hostname |
function chostname () { |
$result = rfts( '/proc/sys/kernel/hostname', 1 ); |
if ( $result == "ERROR" ) { |
$result = "N.A."; |
} else { |
$result = gethostbyaddr( gethostbyname( trim( $result ) ) ); |
} |
return $result; |
} |
// get the IP address of our canonical hostname |
function ip_addr () { |
if (!($result = getenv('SERVER_ADDR'))) { |
$result = gethostbyname($this->chostname()); |
} |
return $result; |
} |
function kernel () { |
$buf = rfts( '/proc/version', 1 ); |
if ( $buf == "ERROR" ) { |
$result = "N.A."; |
} else { |
if (preg_match('/version (.*?) /', $buf, $ar_buf)) { |
$result = $ar_buf[1]; |
if (preg_match('/SMP/', $buf)) { |
$result .= ' (SMP)'; |
} |
} |
} |
return $result; |
} |
function uptime () { |
$buf = rfts( '/proc/uptime', 1 ); |
$ar_buf = explode( ' ', $buf ); |
$result = trim( $ar_buf[0] ); |
return $result; |
} |
function users () { |
$strResult = 0; |
$strBuf = execute_program('who', '-q'); |
if( $strBuf != "ERROR" ) { |
$arrWho = explode( '=', $strBuf ); |
$strResult = $arrWho[1]; |
} |
return $strResult; |
} |
function loadavg ($bar = false) { |
$buf = rfts( '/proc/loadavg' ); |
if( $buf == "ERROR" ) { |
$results['avg'] = array('N.A.', 'N.A.', 'N.A.'); |
} else { |
$results['avg'] = preg_split("/\s/", $buf, 4); |
unset($results['avg'][3]); // don't need the extra values, only first three |
} |
if ($bar) { |
$buf = rfts( '/proc/stat', 1 ); |
if( $buf != "ERROR" ) { |
sscanf($buf, "%*s %Ld %Ld %Ld %Ld", $ab, $ac, $ad, $ae); |
// Find out the CPU load |
// user + sys = load |
// total = total |
$load = $ab + $ac + $ad; // cpu.user + cpu.sys |
$total = $ab + $ac + $ad + $ae; // cpu.total |
// we need a second value, wait 1 second befor getting (< 1 second no good value will occour) |
sleep(1); |
$buf = rfts( '/proc/stat', 1 ); |
sscanf($buf, "%*s %Ld %Ld %Ld %Ld", $ab, $ac, $ad, $ae); |
$load2 = $ab + $ac + $ad; |
$total2 = $ab + $ac + $ad + $ae; |
$results['cpupercent'] = (100*($load2 - $load)) / ($total2 - $total); |
} |
} |
return $results; |
} |
function cpu_info () { |
$bufr = rfts( '/proc/cpuinfo' ); |
$results = array("cpus" => 0); |
if ( $bufr != "ERROR" ) { |
$bufe = explode("\n", $bufr); |
$results = array('cpus' => 0, 'bogomips' => 0); |
$ar_buf = array(); |
foreach( $bufe as $buf ) { |
$arrBuff = preg_split('/\s+:\s+/', trim($buf)); |
if( count( $arrBuff ) == 2 ) { |
$key = $arrBuff[0]; |
$value = $arrBuff[1]; |
// All of the tags here are highly architecture dependant. |
// the only way I could reconstruct them for machines I don't |
// have is to browse the kernel source. So if your arch isn't |
// supported, tell me you want it written in. |
switch ($key) { |
case 'model name': |
$results['model'] = $value; |
break; |
case 'cpu MHz': |
$results['cpuspeed'] = sprintf('%.2f', $value); |
break; |
case 'cycle frequency [Hz]': // For Alpha arch - 2.2.x |
$results['cpuspeed'] = sprintf('%.2f', $value / 1000000); |
break; |
case 'clock': // For PPC arch (damn borked POS) |
$results['cpuspeed'] = sprintf('%.2f', $value); |
break; |
case 'cpu': // For PPC arch (damn borked POS) |
$results['model'] = $value; |
break; |
case 'L2 cache': // More for PPC |
$results['cache'] = $value; |
break; |
case 'revision': // For PPC arch (damn borked POS) |
$results['model'] .= ' ( rev: ' . $value . ')'; |
break; |
case 'cpu model': // For Alpha arch - 2.2.x |
$results['model'] .= ' (' . $value . ')'; |
break; |
case 'cache size': |
$results['cache'] = $value; |
break; |
case 'bogomips': |
$results['bogomips'] += $value; |
break; |
case 'BogoMIPS': // For alpha arch - 2.2.x |
$results['bogomips'] += $value; |
break; |
case 'BogoMips': // For sparc arch |
$results['bogomips'] += $value; |
break; |
case 'cpus detected': // For Alpha arch - 2.2.x |
$results['cpus'] += $value; |
break; |
case 'system type': // Alpha arch - 2.2.x |
$results['model'] .= ', ' . $value . ' '; |
break; |
case 'platform string': // Alpha arch - 2.2.x |
$results['model'] .= ' (' . $value . ')'; |
break; |
case 'processor': |
$results['cpus'] += 1; |
break; |
case 'Cpu0ClkTck': // Linux sparc64 |
$results['cpuspeed'] = sprintf('%.2f', hexdec($value) / 1000000); |
break; |
case 'Cpu0Bogo': // Linux sparc64 & sparc32 |
$results['bogomips'] = $value; |
break; |
case 'ncpus probed': // Linux sparc64 & sparc32 |
$results['cpus'] = $value; |
break; |
} |
} |
} |
// sparc64 specific code follows |
// This adds the ability to display the cache that a CPU has |
// Originally made by Sven Blumenstein <bazik@gentoo.org> in 2004 |
// Modified by Tom Weustink <freshy98@gmx.net> in 2004 |
$sparclist = array('SUNW,UltraSPARC@0,0', 'SUNW,UltraSPARC-II@0,0', 'SUNW,UltraSPARC@1c,0', 'SUNW,UltraSPARC-IIi@1c,0', 'SUNW,UltraSPARC-II@1c,0', 'SUNW,UltraSPARC-IIe@0,0'); |
foreach ($sparclist as $name) { |
$buf = rfts( '/proc/openprom/' . $name . '/ecache-size',1 , 32, false ); |
if( $buf != "ERROR" ) { |
$results['cache'] = base_convert($buf, 16, 10)/1024 . ' KB'; |
} |
} |
// sparc64 specific code ends |
// XScale detection code |
if ( $results['cpus'] == 0 ) { |
foreach( $bufe as $buf ) { |
$fields = preg_split('/\s*:\s*/', trim($buf), 2); |
if (sizeof($fields) == 2) { |
list($key, $value) = $fields; |
switch($key) { |
case 'Processor': |
$results['cpus'] += 1; |
$results['model'] = $value; |
break; |
case 'BogoMIPS': //BogoMIPS are not BogoMIPS on this CPU, it's the speed, no BogoMIPS available |
$results['cpuspeed'] = $value; |
break; |
case 'I size': |
$results['cache'] = $value; |
break; |
case 'D size': |
$results['cache'] += $value; |
break; |
} |
} |
} |
$results['cache'] = $results['cache'] / 1024 . " KB"; |
} |
} |
$keys = array_keys($results); |
$keys2be = array('model', 'cpuspeed', 'cache', 'bogomips', 'cpus'); |
while ($ar_buf = each($keys2be)) { |
if (! in_array($ar_buf[1], $keys)) { |
$results[$ar_buf[1]] = 'N.A.'; |
} |
} |
$buf = rfts( '/proc/acpi/thermal_zone/THRM/temperature', 1, 4096, false ); |
if ( $buf != "ERROR" ) { |
$results['temp'] = substr( $buf, 25, 2 ); |
} |
return $results; |
} |
function pci () { |
$arrResults = array(); |
$booDevice = false; |
if( ! $arrResults = $this->parser->parse_lspci() ) { |
$strBuf = rfts( '/proc/pci', 0, 4096, false ); |
if( $strBuf != "ERROR" ) { |
$arrBuf = explode( "\n", $strBuf ); |
foreach( $arrBuf as $strLine ) { |
if( preg_match( '/Bus/', $strLine ) ) { |
$booDevice = true; |
continue; |
} |
if( $booDevice ) { |
list( $strKey, $strValue ) = explode( ': ', $strLine, 2 ); |
if( ! preg_match( '/bridge/i', $strKey ) && ! preg_match( '/USB/i ', $strKey ) ) { |
$arrResults[] = preg_replace( '/\([^\)]+\)\.$/', '', trim( $strValue ) ); |
} |
$booDevice = false; |
} |
} |
asort( $arrResults ); |
} |
} |
return $arrResults; |
} |
function ide () { |
$results = array(); |
$bufd = gdc( '/proc/ide', false ); |
foreach( $bufd as $file ) { |
if (preg_match('/^hd/', $file)) { |
$results[$file] = array(); |
$buf = rfts("/proc/ide/" . $file . "/media", 1 ); |
if ( $buf != "ERROR" ) { |
$results[$file]['media'] = trim($buf); |
if ($results[$file]['media'] == 'disk') { |
$results[$file]['media'] = 'Hard Disk'; |
$buf = rfts( "/proc/ide/" . $file . "/capacity", 1, 4096, false); |
if( $buf == "ERROR" ) { |
$buf = rfts( "/sys/block/" . $file . "/size", 1, 4096, false); |
} |
if ( $buf != "ERROR" ) { |
$results[$file]['capacity'] = trim( $buf ); |
} |
} elseif ($results[$file]['media'] == 'cdrom') { |
$results[$file]['media'] = 'CD-ROM'; |
unset($results[$file]['capacity']); |
} |
} else { |
unset($results[$file]); |
} |
$buf = rfts( "/proc/ide/" . $file . "/model", 1 ); |
if ( $buf != "ERROR" ) { |
$results[$file]['model'] = trim( $buf ); |
if (preg_match('/WDC/', $results[$file]['model'])) { |
$results[$file]['manufacture'] = 'Western Digital'; |
} elseif (preg_match('/IBM/', $results[$file]['model'])) { |
$results[$file]['manufacture'] = 'IBM'; |
} elseif (preg_match('/FUJITSU/', $results[$file]['model'])) { |
$results[$file]['manufacture'] = 'Fujitsu'; |
} else { |
$results[$file]['manufacture'] = 'Unknown'; |
} |
} |
} |
} |
asort($results); |
return $results; |
} |
function scsi () { |
$results = array(); |
$dev_vendor = ''; |
$dev_model = ''; |
$dev_rev = ''; |
$dev_type = ''; |
$s = 1; |
$get_type = 0; |
$bufr = execute_program('lsscsi', '-c', false); |
if( $bufr == "ERROR" ) { |
$bufr = rfts( '/proc/scsi/scsi', 0, 4096, false); |
} |
if ( $bufr != "ERROR" ) { |
$bufe = explode("\n", $bufr); |
foreach( $bufe as $buf ) { |
if (preg_match('/Vendor/', $buf)) { |
preg_match('/Vendor: (.*) Model: (.*) Rev: (.*)/i', $buf, $dev); |
list($key, $value) = explode(': ', $buf, 2); |
$dev_str = $value; |
$get_type = true; |
continue; |
} |
if ($get_type) { |
preg_match('/Type:\s+(\S+)/i', $buf, $dev_type); |
$results[$s]['model'] = "$dev[1] $dev[2] ($dev_type[1])"; |
$results[$s]['media'] = "Hard Disk"; |
$s++; |
$get_type = false; |
} |
} |
} |
asort($results); |
return $results; |
} |
function usb () { |
$results = array(); |
$devnum = -1; |
$bufr = execute_program('lsusb', '', false); |
if( $bufr == "ERROR" ) { |
$bufr = rfts( '/proc/bus/usb/devices', 0, 4096, false ); |
if ( $bufr != "ERROR" ) { |
$bufe = explode("\n", $bufr); |
foreach( $bufe as $buf ) { |
if (preg_match('/^T/', $buf)) { |
$devnum += 1; |
$results[$devnum] = ""; |
} elseif (preg_match('/^S:/', $buf)) { |
list($key, $value) = explode(': ', $buf, 2); |
list($key, $value2) = explode('=', $value, 2); |
if (trim($key) != "SerialNumber") { |
$results[$devnum] .= " " . trim($value2); |
$devstring = 0; |
} |
} |
} |
} |
} else { |
$bufe = explode( "\n", $bufr ); |
foreach( $bufe as $buf ) { |
$device = preg_split("/ /", $buf, 7); |
if( isset( $device[6] ) && trim( $device[6] ) != "" ) { |
$results[$devnum++] = trim( $device[6] ); |
} |
} |
} |
return $results; |
} |
function sbus () { |
$results = array(); |
$_results[0] = ""; |
// TODO. Nothing here yet. Move along. |
$results = $_results; |
return $results; |
} |
function network () { |
$results = array(); |
$bufr = rfts( '/proc/net/dev' ); |
if ( $bufr != "ERROR" ) { |
$bufe = explode("\n", $bufr); |
foreach( $bufe as $buf ) { |
if (preg_match('/:/', $buf)) { |
list($dev_name, $stats_list) = preg_split('/:/', $buf, 2); |
$stats = preg_split('/\s+/', trim($stats_list)); |
$results[$dev_name] = array(); |
$results[$dev_name]['rx_bytes'] = $stats[0]; |
$results[$dev_name]['rx_packets'] = $stats[1]; |
$results[$dev_name]['rx_errs'] = $stats[2]; |
$results[$dev_name]['rx_drop'] = $stats[3]; |
$results[$dev_name]['tx_bytes'] = $stats[8]; |
$results[$dev_name]['tx_packets'] = $stats[9]; |
$results[$dev_name]['tx_errs'] = $stats[10]; |
$results[$dev_name]['tx_drop'] = $stats[11]; |
$results[$dev_name]['errs'] = $stats[2] + $stats[10]; |
$results[$dev_name]['drop'] = $stats[3] + $stats[11]; |
} |
} |
} |
return $results; |
} |
function memory () { |
$results['ram'] = array('total' => 0, 'free' => 0, 'used' => 0, 'percent' => 0); |
$results['swap'] = array('total' => 0, 'free' => 0, 'used' => 0, 'percent' => 0); |
$results['devswap'] = array(); |
$bufr = rfts( '/proc/meminfo' ); |
if ( $bufr != "ERROR" ) { |
$bufe = explode("\n", $bufr); |
foreach( $bufe as $buf ) { |
if (preg_match('/^MemTotal:\s+(.*)\s*kB/i', $buf, $ar_buf)) { |
$results['ram']['total'] = $ar_buf[1]; |
} else if (preg_match('/^MemFree:\s+(.*)\s*kB/i', $buf, $ar_buf)) { |
$results['ram']['free'] = $ar_buf[1]; |
} else if (preg_match('/^Cached:\s+(.*)\s*kB/i', $buf, $ar_buf)) { |
$results['ram']['cached'] = $ar_buf[1]; |
} else if (preg_match('/^Buffers:\s+(.*)\s*kB/i', $buf, $ar_buf)) { |
$results['ram']['buffers'] = $ar_buf[1]; |
} |
} |
$results['ram']['used'] = $results['ram']['total'] - $results['ram']['free']; |
$results['ram']['percent'] = round(($results['ram']['used'] * 100) / $results['ram']['total']); |
// values for splitting memory usage |
if (isset($results['ram']['cached']) && isset($results['ram']['buffers'])) { |
$results['ram']['app'] = $results['ram']['used'] - $results['ram']['cached'] - $results['ram']['buffers']; |
$results['ram']['app_percent'] = round(($results['ram']['app'] * 100) / $results['ram']['total']); |
$results['ram']['buffers_percent'] = round(($results['ram']['buffers'] * 100) / $results['ram']['total']); |
$results['ram']['cached_percent'] = round(($results['ram']['cached'] * 100) / $results['ram']['total']); |
} |
$bufr = rfts( '/proc/swaps' ); |
if ( $bufr != "ERROR" ) { |
$swaps = explode("\n", $bufr); |
for ($i = 1; $i < (sizeof($swaps)); $i++) { |
if( trim( $swaps[$i] ) != "" ) { |
$ar_buf = preg_split('/\s+/', $swaps[$i], 6); |
$results['devswap'][$i - 1] = array(); |
$results['devswap'][$i - 1]['dev'] = $ar_buf[0]; |
$results['devswap'][$i - 1]['total'] = $ar_buf[2]; |
$results['devswap'][$i - 1]['used'] = $ar_buf[3]; |
$results['devswap'][$i - 1]['free'] = ($results['devswap'][$i - 1]['total'] - $results['devswap'][$i - 1]['used']); |
$results['devswap'][$i - 1]['percent'] = round(($ar_buf[3] * 100) / $ar_buf[2]); |
$results['swap']['total'] += $ar_buf[2]; |
$results['swap']['used'] += $ar_buf[3]; |
$results['swap']['free'] = $results['swap']['total'] - $results['swap']['used']; |
$results['swap']['percent'] = round(($results['swap']['used'] * 100) / $results['swap']['total']); |
} |
} |
} |
} |
return $results; |
} |
function filesystems () { |
return $this->parser->parse_filesystems(); |
} |
function distro () { |
return $this->distro; |
} |
function distroicon () { |
return $this->icon; |
} |
} |
?> |
/web/acc/phpsysinfo/includes/os/class.Darwin.inc.php |
---|
0,0 → 1,198 |
<?php |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// $Id: class.Darwin.inc.php,v 1.33 2006/06/14 16:36:34 bigmichi1 Exp $ |
if (!defined('IN_PHPSYSINFO')) { |
die("No Hacking"); |
} |
require_once(APP_ROOT . '/includes/os/class.BSD.common.inc.php'); |
$error->addWarning("The Darwin version of phpSysInfo is work in progress, some things currently don't work"); |
class sysinfo extends bsd_common { |
var $cpu_regexp; |
var $scsi_regexp; |
var $parser; |
// Our contstructor |
// this function is run on the initialization of this class |
function sysinfo () { |
// $this->cpu_regexp = "CPU: (.*) \((.*)-MHz (.*)\)"; |
// $this->scsi_regexp1 = "^(.*): <(.*)> .*SCSI.*device"; |
$this->cpu_regexp2 = "/(.*) ([0-9]+) ([0-9]+) ([0-9]+) ([0-9]+)/"; |
$this->parser = new Parser(); |
} |
function grab_key ($key) { |
$s = execute_program('sysctl', $key); |
$s = ereg_replace($key . ': ', '', $s); |
$s = ereg_replace($key . ' = ', '', $s); // fix Apple set keys |
return $s; |
} |
function grab_ioreg ($key) { |
$s = execute_program('ioreg', '-cls "' . $key . '" | grep "' . $key . '"'); //ioreg -cls "$key" | grep "$key" |
$s = ereg_replace('\|', '', $s); |
$s = ereg_replace('\+\-\o', '', $s); |
$s = ereg_replace('[ ]+', '', $s); |
$s = ereg_replace('<[^>]+>', '', $s); // remove possible XML conflicts |
return $s; |
} |
function get_sys_ticks () { |
$a = execute_program('sysctl', '-n kern.boottime'); // get boottime (value in seconds) |
$sys_ticks = time() - $a; |
return $sys_ticks; |
} |
function cpu_info () { |
$results = array(); |
// $results['model'] = $this->grab_key('hw.model'); // need to expand this somehow... |
// $results['model'] = $this->grab_key('hw.machine'); |
$results['model'] = ereg_replace('Processor type: ', '', execute_program('hostinfo', '| grep "Processor type"')); // get processor type |
$results['cpus'] = $this->grab_key('hw.ncpu'); |
$results['cpuspeed'] = round($this->grab_key('hw.cpufrequency') / 1000000); // return cpu speed - Mhz |
$results['busspeed'] = round($this->grab_key('hw.busfrequency') / 1000000); // return bus speed - Mhz |
$results['cache'] = round($this->grab_key('hw.l2cachesize') / 1024); // return l2 cache |
if (($this->grab_key('hw.model') == "PowerMac3,6") && ($results['cpus'] == "2")) { $results['model'] = 'Dual G4 - (PowerPC 7450)';} // is Dual G4 |
if (($this->grab_key('hw.model') == "PowerMac7,2") && ($results['cpus'] == "2")) { $results['model'] = 'Dual G5 - (PowerPC 970)';} // is Dual G5 |
if (($this->grab_key('hw.model') == "PowerMac1,1") && ($results['cpus'] == "1")) { $results['model'] = 'B&W G3 - (PowerPC 750)';} // is B&W G3 |
return $results; |
} |
// get the pci device information out of ioreg |
function pci () { |
$results = array(); |
$s = $this->grab_ioreg('IOPCIDevice'); |
$lines = explode("\n", $s); |
for ($i = 0, $max = sizeof($lines); $i < $max; $i++) { |
$ar_buf = preg_split("/\s+/", $lines[$i], 19); |
$results[$i] = $ar_buf[0]; |
} |
asort($results); |
return array_values(array_unique($results)); |
} |
// get the ide device information out of ioreg |
function ide () { |
$results = array(); |
// ioreg | grep "Media <class IOMedia>" |
$s = $this->grab_ioreg('IOATABlockStorageDevice'); |
$lines = explode("\n", $s); |
$j = 0; |
for ($i = 0, $max = sizeof($lines); $i < $max; $i++) { |
$ar_buf = preg_split("/\/\//", $lines[$i], 19); |
if ( isset( $ar_buf[1] ) && $ar_buf[1] == 'class IOMedia' && preg_match('/Media/', $ar_buf[0])) { |
$results[$j++]['model'] = $ar_buf[0]; |
} |
} |
asort($results); |
return array_values(array_unique($results)); |
} |
function memory () { |
$s = $this->grab_key('hw.memsize'); |
$results['ram'] = array(); |
$results['swap'] = array(); |
$results['devswap'] = array(); |
$pstat = execute_program('vm_stat'); // use darwin's vm_stat |
$lines = explode("\n", $pstat); |
for ($i = 0, $max = sizeof($lines); $i < $max; $i++) { |
$ar_buf = preg_split("/\s+/", $lines[$i], 19); |
if ($i == 1) { |
$results['ram']['free'] = $ar_buf[2] * 4; // calculate free memory from page sizes (each page = 4MB) |
} |
} |
$results['ram']['total'] = $s / 1024; |
$results['ram']['shared'] = 0; |
$results['ram']['buffers'] = 0; |
$results['ram']['used'] = $results['ram']['total'] - $results['ram']['free']; |
$results['ram']['cached'] = 0; |
$results['ram']['percent'] = round(($results['ram']['used'] * 100) / $results['ram']['total']); |
// need to fix the swap info... |
// meanwhile silence and / or disable the swap information |
$pstat = execute_program('swapinfo', '-k', false); |
if( $pstat != "ERROR" ) { |
$lines = explode("\n", $pstat); |
for ($i = 0, $max = sizeof($lines); $i < $max; $i++) { |
$ar_buf = preg_split("/\s+/", $lines[$i], 6); |
if ($i == 0) { |
$results['swap']['total'] = 0; |
$results['swap']['used'] = 0; |
$results['swap']['free'] = 0; |
} else { |
$results['swap']['total'] = $results['swap']['total'] + $ar_buf[1]; |
$results['swap']['used'] = $results['swap']['used'] + $ar_buf[2]; |
$results['swap']['free'] = $results['swap']['free'] + $ar_buf[3]; |
} |
} |
$results['swap']['percent'] = round(($results['swap']['used'] * 100) / $results['swap']['total']); |
} |
return $results; |
} |
function network () { |
$netstat = execute_program('netstat', '-nbdi | cut -c1-24,42- | grep Link'); |
$lines = explode("\n", $netstat); |
$results = array(); |
for ($i = 0, $max = sizeof($lines); $i < $max; $i++) { |
$ar_buf = preg_split("/\s+/", $lines[$i], 10); |
if (!empty($ar_buf[0])) { |
$results[$ar_buf[0]] = array(); |
$results[$ar_buf[0]]['rx_bytes'] = $ar_buf[5]; |
$results[$ar_buf[0]]['rx_packets'] = $ar_buf[3]; |
$results[$ar_buf[0]]['rx_errs'] = $ar_buf[4]; |
$results[$ar_buf[0]]['rx_drop'] = isset( $ar_buf[10] ) ? $ar_buf[10] : 0; |
$results[$ar_buf[0]]['tx_bytes'] = $ar_buf[8]; |
$results[$ar_buf[0]]['tx_packets'] = $ar_buf[6]; |
$results[$ar_buf[0]]['tx_errs'] = $ar_buf[7]; |
$results[$ar_buf[0]]['tx_drop'] = isset( $ar_buf[10] ) ? $ar_buf[10] : 0; |
$results[$ar_buf[0]]['errs'] = $ar_buf[4] + $ar_buf[7]; |
$results[$ar_buf[0]]['drop'] = isset( $ar_buf[10] ) ? $ar_buf[10] : 0; |
} |
} |
return $results; |
} |
function distroicon () { |
$result = 'Darwin.png'; |
return($result); |
} |
} |
?> |
/web/acc/phpsysinfo/includes/os/class.parseProgs.inc.php |
---|
0,0 → 1,159 |
<?php |
/*************************************************************************** |
* Copyright (C) 2006 by phpSysInfo - A PHP System Information Script * |
* http://phpsysinfo.sourceforge.net/ * |
* * |
* This program is free software; you can redistribute it and/or modify * |
* it under the terms of the GNU General Public License as published by * |
* the Free Software Foundation; either version 2 of the License, or * |
* (at your option) any later version. * |
* * |
* This program is distributed in the hope that it will be useful, * |
* but WITHOUT ANY WARRANTY; without even the implied warranty of * |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * |
* GNU General Public License for more details. * |
* * |
* You should have received a copy of the GNU General Public License * |
* along with this program; if not, write to the * |
* Free Software Foundation, Inc., * |
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
***************************************************************************/ |
// $Id: class.parseProgs.inc.php,v 1.12 2007/02/01 17:37:06 bigmichi1 Exp $ |
class Parser { |
var $debug = false; |
var $df_param = ""; |
function parse_lspci() { |
$arrResults = array(); |
if ( ( $strBuff = execute_program( "lspci", "", $this->debug ) ) != "ERROR" ) { |
$arrLines = explode( "\n", $strBuff ); |
foreach( $arrLines as $strLine ) { |
list( $strAddr, $strName) = explode( ' ', trim( $strLine ), 2 ); |
$strName = preg_replace( '/\(.*\)/', '', $strName); |
$arrResults[] = $strName; |
} |
} |
if( empty( $arrResults ) ) { |
return false; |
} else { |
asort( $arrResults ); |
return $arrResults; |
} |
} |
function parse_pciconf() { |
$arrResults = array(); |
$intS = 0; |
if( ( $strBuff = execute_program( "pciconf", "-lv", $this->debug ) ) != "ERROR" ) { |
$arrLines = explode( "\n", $strBuff ); |
foreach( $arrLines as $strLine ) { |
if( preg_match( "/(.*) = '(.*)'/", $strLine, $arrParts ) ) { |
if( trim( $arrParts[1] ) == "vendor" ) { |
$arrResults[$intS] = trim( $arrParts[2] ); |
} elseif( trim( $arrParts[1]) == "device" ) { |
$arrResults[$intS] .= " - " . trim( $arrParts[2] ); |
$intS++; |
} |
} |
} |
} |
if( empty( $arrResults ) ) { |
return false; |
} else { |
asort( $arrResults ); |
return $arrResults; |
} |
} |
function parse_filesystems() { |
global $show_bind, $show_inodes; |
$results = array(); |
$j = 0; |
$df = execute_program('df', '-k' . $this->df_param ); |
$df = preg_split("/\n/", $df, -1, PREG_SPLIT_NO_EMPTY); |
sort($df); |
if( $show_inodes ) { |
$df2 = execute_program('df', '-i' . $this->df_param ); |
$df2 = preg_split("/\n/", $df2, -1, PREG_SPLIT_NO_EMPTY); |
sort( $df2 ); |
} |
$mount = execute_program('mount'); |
$mount = preg_split("/\n/", $mount, -1, PREG_SPLIT_NO_EMPTY); |
sort($mount); |
foreach( $df as $df_line) { |
$df_buf1 = preg_split("/(\%\s)/", $df_line, 2); |
if( count($df_buf1) != 2) { |
continue; |
} |
preg_match("/(.*)(\s+)(([0-9]+)(\s+)([0-9]+)(\s+)([0-9]+)(\s+)([0-9]+)$)/", $df_buf1[0], $df_buf2); |
$df_buf = array($df_buf2[1], $df_buf2[4], $df_buf2[6], $df_buf2[8], $df_buf2[10], $df_buf1[1]); |
if( $show_inodes ) { |
preg_match_all("/([0-9]+)%/", $df2[$j + 1], $inode_buf, PREG_SET_ORDER); |
} |
if( count($df_buf) == 6 ) { |
$df_buf[5] = trim( $df_buf[5] ); |
if( hide_mount( $df_buf[5] ) ) { |
continue; |
} |
$df_buf[0] = trim( str_replace("\$", "\\$", $df_buf[0] ) ); |
$current = 0; |
foreach( $mount as $mount_line ) { |
if ( preg_match("#" . $df_buf[0] . " on " . $df_buf[5] . " type (.*) \((.*)\)#", $mount_line, $mount_buf) ) { |
$mount_buf[1] .= "," . $mount_buf[2]; |
} elseif ( !preg_match("#" . $df_buf[0] . "(.*) on " . $df_buf[5] . " \((.*)\)#", $mount_line, $mount_buf) ) { |
continue; |
} |
$strFstype = substr( $mount_buf[1], 0, strpos( $mount_buf[1], "," ) ); |
if( hide_fstype( $strFstype ) ) { |
continue; |
} |
$current++; |
if( $show_bind || !stristr($mount_buf[2], "bind")) { |
$results[$j] = array(); |
$results[$j]['disk'] = str_replace( "\\$", "\$", $df_buf[0] ); |
$results[$j]['size'] = $df_buf[1]; |
$results[$j]['used'] = $df_buf[2]; |
$results[$j]['free'] = $df_buf[3]; |
// --> Bug 1527673 |
if( $results[$j]['used'] < 0 ) { |
$results[$j]['size'] = $results[$j]['free']; |
$results[$j]['free'] = 0; |
$results[$j]['used'] = $results[$j]['size']; |
} |
// <-- Bug 1527673 |
// --> Bug 1649430 |
if( $results[$j]['size'] == 0 ) { |
break; |
} else { |
$results[$j]['percent'] = round(($results[$j]['used'] * 100) / $results[$j]['size']); |
} |
// <-- Bug 1649430 |
$results[$j]['mount'] = $df_buf[5]; |
$results[$j]['fstype'] = $strFstype; |
$results[$j]['options'] = substr( $mount_buf[1], strpos( $mount_buf[1], "," ) + 1, strlen( $mount_buf[1] ) ); |
if( $show_inodes && isset($inode_buf[ count( $inode_buf ) - 1][1]) ) { |
$results[$j]['inodes'] = $inode_buf[ count( $inode_buf ) - 1][1]; |
} |
$j++; |
unset( $mount[$current - 1] ); |
sort( $mount ); |
break; |
} |
} |
} |
} |
return $results; |
} |
} |
?> |
/web/acc/phpsysinfo/includes/os/class.SunOS.inc.php |
---|
0,0 → 1,240 |
<?php |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// $Id: class.SunOS.inc.php,v 1.24 2007/02/18 18:59:54 bigmichi1 Exp $ |
$error->addError("WARN", "The SunOS version of phpSysInfo is work in progress, some things currently don't work"); |
class sysinfo { |
// Extract kernel values via kstat() interface |
function kstat ($key) { |
$m = execute_program('kstat', "-p d $key"); |
list($key, $value) = explode("\t", trim($m), 2); |
return $value; |
} |
function vhostname () { |
if (! ($result = getenv('SERVER_NAME'))) { |
$result = 'N.A.'; |
} |
return $result; |
} |
// get the IP address of our vhost name |
function vip_addr () { |
return gethostbyname($this->vhostname()); |
} |
// get our canonical hostname |
function chostname () { |
if ($result = execute_program('uname', '-n')) { |
$result = gethostbyaddr(gethostbyname($result)); |
} else { |
$result = 'N.A.'; |
} |
return $result; |
} |
// get the IP address of our canonical hostname |
function ip_addr () { |
if (!($result = getenv('SERVER_ADDR'))) { |
$result = gethostbyname($this->chostname()); |
} |
return $result; |
} |
function kernel () { |
$os = execute_program('uname', '-s'); |
$version = execute_program('uname', '-r'); |
return $os . ' ' . $version; |
} |
function uptime () { |
$result = time() - $this->kstat('unix:0:system_misc:boot_time'); |
return $result; |
} |
function users () { |
$who = explode('=', execute_program('who', '-q')); |
$result = $who[1]; |
return $result; |
} |
function loadavg ($bar = false) { |
$load1 = $this->kstat('unix:0:system_misc:avenrun_1min'); |
$load5 = $this->kstat('unix:0:system_misc:avenrun_5min'); |
$load15 = $this->kstat('unix:0:system_misc:avenrun_15min'); |
$results['avg'] = array( round($load1/256, 2), round($load5/256, 2), round($load15/256, 2) ); |
return $results; |
} |
function cpu_info () { |
$results = array(); |
$ar_buf = array(); |
$results['model'] = execute_program('uname', '-i'); |
$results['cpuspeed'] = $this->kstat('cpu_info:0:cpu_info0:clock_MHz'); |
$results['cache'] = $this->kstat('cpu_info:0:cpu_info0:cpu_type'); |
$results['cpus'] = $this->kstat('unix:0:system_misc:ncpus'); |
return $results; |
} |
function pci () { |
// FIXME |
$results = array(); |
return $results; |
} |
function ide () { |
// FIXME |
$results = array(); |
return $results; |
} |
function scsi () { |
// FIXME |
$results = array(); |
return $results; |
} |
function usb () { |
// FIXME |
$results = array(); |
return $results; |
} |
function sbus () { |
$results = array(); |
$_results[0] = ""; |
// TODO. Nothing here yet. Move along. |
$results = $_results; |
return $results; |
} |
function network () { |
$results = array(); |
$netstat = execute_program('netstat', '-ni | awk \'(NF ==10){print;}\''); |
$lines = explode("\n", $netstat); |
$results = array(); |
for ($i = 0, $max = sizeof($lines); $i < $max; $i++) { |
$ar_buf = preg_split("/\s+/", $lines[$i]); |
if ((!empty($ar_buf[0])) && ($ar_buf[0] != 'Name')) { |
$results[$ar_buf[0]] = array(); |
$results[$ar_buf[0]]['rx_bytes'] = 0; |
$results[$ar_buf[0]]['rx_packets'] = $ar_buf[4]; |
$results[$ar_buf[0]]['rx_errs'] = $ar_buf[5]; |
$results[$ar_buf[0]]['rx_drop'] = 0; |
$results[$ar_buf[0]]['tx_bytes'] = 0; |
$results[$ar_buf[0]]['tx_packets'] = $ar_buf[6]; |
$results[$ar_buf[0]]['tx_errs'] = $ar_buf[7]; |
$results[$ar_buf[0]]['tx_drop'] = 0; |
$results[$ar_buf[0]]['errs'] = $ar_buf[5] + $ar_buf[ |
7]; |
$results[$ar_buf[0]]['drop'] = 0; |
preg_match('/^(\D+)(\d+)$/', $ar_buf[0], $intf); |
$prefix = $intf[1] . ':' . $intf[2] . ':' . $intf[1] . $intf[2] . ':'; |
$cnt = $this->kstat($prefix . 'drop'); |
if ($cnt > 0) { |
$results[$ar_buf[0]]['rx_drop'] = $cnt; |
} |
$cnt = $this->kstat($prefix . 'obytes64'); |
if ($cnt > 0) { |
$results[$ar_buf[0]]['tx_bytes'] = $cnt; |
} |
$cnt = $this->kstat($prefix . 'rbytes64'); |
if ($cnt > 0) { |
$results[$ar_buf[0]]['rx_bytes'] = $cnt; |
} |
} |
} |
return $results; |
} |
function memory () { |
$results['devswap'] = array(); |
$results['ram'] = array(); |
$pagesize = $this->kstat('unix:0:seg_cache:slab_size'); |
$results['ram']['total'] = $this->kstat('unix:0:system_pages:pagestotal') * $pagesize / 1024; |
$results['ram']['used'] = $this->kstat('unix:0:system_pages:pageslocked') * $pagesize / 1024; |
$results['ram']['free'] = $this->kstat('unix:0:system_pages:pagesfree') * $pagesize / 1024; |
$results['ram']['shared'] = 0; |
$results['ram']['buffers'] = 0; |
$results['ram']['cached'] = 0; |
$results['ram']['percent'] = round(($results['ram']['used'] * 100) / $results['ram']['total']); |
$results['swap'] = array(); |
$results['swap']['total'] = $this->kstat('unix:0:vminfo:swap_avail') / 1024 / 1024; |
$results['swap']['used'] = $this->kstat('unix:0:vminfo:swap_alloc') / 1024 / 1024; |
$results['swap']['free'] = $this->kstat('unix:0:vminfo:swap_free') / 1024 / 1024; |
$results['swap']['percent'] = round(($ar_buf[1] * 100) / $ar_buf[0]); |
$results['swap']['percent'] = round(($results['swap']['used'] * 100) / $results['swap']['total']); |
return $results; |
} |
function filesystems () { |
$df = execute_program('df', '-k'); |
$mounts = explode("\n", $df); |
$dftypes = execute_program('df', '-n'); |
$mounttypes = explode("\n", $dftypes); |
for ($i = 1, $j = 0, $max = sizeof($mounts); $i < $max; $i++) { |
$ar_buf = preg_split('/\s+/', $mounts[$i], 6); |
$ty_buf = explode(':', $mounttypes[$i-1], 2); |
if (hide_mount($ar_buf[5])) { |
continue; |
} |
$results[$j] = array(); |
$results[$j]['disk'] = $ar_buf[0]; |
$results[$j]['size'] = $ar_buf[1]; |
$results[$j]['used'] = $ar_buf[2]; |
$results[$j]['free'] = $ar_buf[3]; |
$results[$j]['percent'] = round(($results[$j]['used'] * 100) / $results[$j]['size']); |
$results[$j]['mount'] = $ar_buf[5]; |
$results[$j]['fstype'] = $ty_buf[1]; |
$j++; |
} |
return $results; |
} |
function distro () { |
$result = 'SunOS'; |
return($result); |
} |
function distroicon () { |
$result = 'SunOS.png'; |
return($result); |
} |
} |
?> |
/web/acc/phpsysinfo/includes/os/index.html |
---|
--- phpsysinfo/includes/os/class.OpenBSD.inc.php (nonexistent) |
+++ phpsysinfo/includes/os/class.OpenBSD.inc.php (revision 325) |
@@ -0,0 +1,110 @@ |
+<?php |
+ |
+// phpSysInfo - A PHP System Information Script |
+// http://phpsysinfo.sourceforge.net/ |
+ |
+// This program is free software; you can redistribute it and/or |
+// modify it under the terms of the GNU General Public License |
+// as published by the Free Software Foundation; either version 2 |
+// of the License, or (at your option) any later version. |
+ |
+// This program is distributed in the hope that it will be useful, |
+// but WITHOUT ANY WARRANTY; without even the implied warranty of |
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+// GNU General Public License for more details. |
+ |
+// You should have received a copy of the GNU General Public License |
+// along with this program; if not, write to the Free Software |
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
+ |
+// $Id: class.OpenBSD.inc.php,v 1.21 2006/04/18 17:46:15 bigmichi1 Exp $ |
+if (!defined('IN_PHPSYSINFO')) { |
+ die("No Hacking"); |
+} |
+ |
+require_once(APP_ROOT . '/includes/os/class.BSD.common.inc.php'); |
+ |
+class sysinfo extends bsd_common { |
+ var $cpu_regexp = ""; |
+ var $scsi_regexp1 = ""; |
+ var $scsi_regexp2 = ""; |
+ var $cpu_regexp2 = ""; |
+ |
+ // Our contstructor |
+ // this function is run on the initialization of this class |
+ function sysinfo () { |
+ $this->bsd_common(); |
+ $this->cpu_regexp = "^cpu(.*) (.*) MHz"; |
+ $this->scsi_regexp1 = "^(.*) at scsibus.*: <(.*)> .*"; |
+ $this->scsi_regexp2 = "^(da[0-9]): (.*)MB "; |
+ $this->cpu_regexp2 = "/(.*),(.*),(.*),(.*),(.*)/"; |
+ $this->pci_regexp1 = '/(.*) at pci[0-9] .* "(.*)"/'; |
+ $this->pci_regexp2 = '/"(.*)" (.*).* at [.0-9]+ irq/'; |
+ } |
+ |
+ function get_sys_ticks () { |
+ $a = $this->grab_key('kern.boottime'); |
+ $sys_ticks = time() - $a; |
+ return $sys_ticks; |
+ } |
+ |
+ function network () { |
+ $netstat_b = execute_program('netstat', '-nbdi | cut -c1-25,44- | grep Link | grep -v \'* \''); |
+ $netstat_n = execute_program('netstat', '-ndi | cut -c1-25,44- | grep Link | grep -v \'* \''); |
+ $lines_b = explode("\n", $netstat_b); |
+ $lines_n = explode("\n", $netstat_n); |
+ $results = array(); |
+ for ($i = 0, $max = sizeof($lines_b); $i < $max; $i++) { |
+ $ar_buf_b = preg_split("/\s+/", $lines_b[$i]); |
+ $ar_buf_n = preg_split("/\s+/", $lines_n[$i]); |
+ if (!empty($ar_buf_b[0]) && !empty($ar_buf_n[3])) { |
+ $results[$ar_buf_b[0]] = array(); |
+ |
+ $results[$ar_buf_b[0]]['rx_bytes'] = $ar_buf_b[3]; |
+ $results[$ar_buf_b[0]]['rx_packets'] = $ar_buf_n[3]; |
+ $results[$ar_buf_b[0]]['rx_errs'] = $ar_buf_n[4]; |
+ $results[$ar_buf_b[0]]['rx_drop'] = $ar_buf_n[8]; |
+ |
+ $results[$ar_buf_b[0]]['tx_bytes'] = $ar_buf_b[4]; |
+ $results[$ar_buf_b[0]]['tx_packets'] = $ar_buf_n[5]; |
+ $results[$ar_buf_b[0]]['tx_errs'] = $ar_buf_n[6]; |
+ $results[$ar_buf_b[0]]['tx_drop'] = $ar_buf_n[8]; |
+ |
+ $results[$ar_buf_b[0]]['errs'] = $ar_buf_n[4] + $ar_buf_n[6]; |
+ $results[$ar_buf_b[0]]['drop'] = $ar_buf_n[8]; |
+ } |
+ } |
+ return $results; |
+ } |
+ // get the ide device information out of dmesg |
+ function ide () { |
+ $results = array(); |
+ |
+ $s = 0; |
+ for ($i = 0, $max = count($this->read_dmesg()); $i < $max; $i++) { |
+ $buf = $this->dmesg[$i]; |
+ if (preg_match('/^(.*) at pciide[0-9] (.*): <(.*)>/', $buf, $ar_buf)) { |
+ $s = $ar_buf[1]; |
+ $results[$s]['model'] = $ar_buf[3]; |
+ $results[$s]['media'] = 'Hard Disk'; |
+ // now loop again and find the capacity |
+ for ($j = 0, $max1 = count($this->read_dmesg()); $j < $max1; $j++) { |
+ $buf_n = $this->dmesg[$j]; |
+ if (preg_match("/^($s): (.*), (.*), (.*)MB, .*$/", $buf_n, $ar_buf_n)) { |
+ $results[$s]['capacity'] = $ar_buf_n[4] * 2048 * 1.049;; |
+ } |
+ } |
+ } |
+ } |
+ asort($results); |
+ return $results; |
+ } |
+ |
+ function distroicon () { |
+ $result = 'OpenBSD.png'; |
+ return($result); |
+ } |
+ |
+} |
+ |
+?> |
/web/acc/phpsysinfo/includes/os/class.FreeBSD.inc.php |
---|
0,0 → 1,108 |
<?php |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// $Id: class.FreeBSD.inc.php,v 1.17 2006/04/18 16:22:26 bigmichi1 Exp $ |
if (!defined('IN_PHPSYSINFO')) { |
die("No Hacking"); |
} |
require_once(APP_ROOT . '/includes/os/class.BSD.common.inc.php'); |
class sysinfo extends bsd_common { |
var $cpu_regexp = ""; |
var $scsi_regexp1 = ""; |
var $scsi_regexp2 = ""; |
var $cpu_regexp2 = ""; |
// Our contstructor |
// this function is run on the initialization of this class |
function sysinfo () { |
$this->bsd_common(); |
$this->cpu_regexp = "CPU: (.*) \((.*)-MHz (.*)\)"; |
$this->scsi_regexp1 = "^(.*): <(.*)> .*SCSI.*device"; |
$this->scsi_regexp2 = "^(da[0-9]): (.*)MB "; |
$this->cpu_regexp2 = "/(.*) ([0-9]+) ([0-9]+) ([0-9]+) ([0-9]+)/"; |
} |
function get_sys_ticks () { |
$s = explode(' ', $this->grab_key('kern.boottime')); |
$a = ereg_replace('{ ', '', $s[3]); |
$sys_ticks = time() - $a; |
return $sys_ticks; |
} |
function network () { |
$netstat = execute_program('netstat', '-nibd | grep Link'); |
$lines = explode("\n", $netstat); |
$results = array(); |
for ($i = 0, $max = sizeof($lines); $i < $max; $i++) { |
$ar_buf = preg_split("/\s+/", $lines[$i]); |
if (!empty($ar_buf[0])) { |
$results[$ar_buf[0]] = array(); |
if (strlen($ar_buf[3]) < 15) { |
$results[$ar_buf[0]]['rx_bytes'] = $ar_buf[5]; |
$results[$ar_buf[0]]['rx_packets'] = $ar_buf[3]; |
$results[$ar_buf[0]]['rx_errs'] = $ar_buf[4]; |
$results[$ar_buf[0]]['rx_drop'] = $ar_buf[10]; |
$results[$ar_buf[0]]['tx_bytes'] = $ar_buf[8]; |
$results[$ar_buf[0]]['tx_packets'] = $ar_buf[6]; |
$results[$ar_buf[0]]['tx_errs'] = $ar_buf[7]; |
$results[$ar_buf[0]]['tx_drop'] = $ar_buf[10]; |
$results[$ar_buf[0]]['errs'] = $ar_buf[4] + $ar_buf[7]; |
$results[$ar_buf[0]]['drop'] = $ar_buf[10]; |
} else { |
$results[$ar_buf[0]]['rx_bytes'] = $ar_buf[6]; |
$results[$ar_buf[0]]['rx_packets'] = $ar_buf[4]; |
$results[$ar_buf[0]]['rx_errs'] = $ar_buf[5]; |
$results[$ar_buf[0]]['rx_drop'] = $ar_buf[11]; |
$results[$ar_buf[0]]['tx_bytes'] = $ar_buf[9]; |
$results[$ar_buf[0]]['tx_packets'] = $ar_buf[7]; |
$results[$ar_buf[0]]['tx_errs'] = $ar_buf[8]; |
$results[$ar_buf[0]]['tx_drop'] = $ar_buf[11]; |
$results[$ar_buf[0]]['errs'] = $ar_buf[5] + $ar_buf[8]; |
$results[$ar_buf[0]]['drop'] = $ar_buf[11]; |
} |
} |
} |
return $results; |
} |
function distroicon () { |
$result = 'FreeBSD.png'; |
return($result); |
} |
function memory_additional($results) { |
$pagesize = $this->grab_key("hw.pagesize"); |
$results['ram']['cached'] = $this->grab_key("vm.stats.vm.v_cache_count") * $pagesize / 1024; |
$results['ram']['cached_percent'] = round( $results['ram']['cached'] * 100 / $results['ram']['total']); |
$results['ram']['app'] = $this->grab_key("vm.stats.vm.v_active_count") * $pagesize / 1024; |
$results['ram']['app_percent'] = round( $results['ram']['app'] * 100 / $results['ram']['total']); |
$results['ram']['buffers'] = $results['ram']['used'] - $results['ram']['app'] - $results['ram']['cached']; |
$results['ram']['buffers_percent'] = round( $results['ram']['buffers'] * 100 / $results['ram']['total']); |
return $results; |
} |
} |
?> |
/web/acc/phpsysinfo/includes/system_header.php |
---|
0,0 → 1,55 |
<?php |
/*************************************************************************** |
* Copyright (C) 2006 by phpSysInfo - A PHP System Information Script * |
* http://phpsysinfo.sourceforge.net/ * |
* * |
* This program is free software; you can redistribute it and/or modify * |
* it under the terms of the GNU General Public License as published by * |
* the Free Software Foundation; either version 2 of the License, or * |
* (at your option) any later version. * |
* * |
* This program is distributed in the hope that it will be useful, * |
* but WITHOUT ANY WARRANTY; without even the implied warranty of * |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * |
* GNU General Public License for more details. * |
* * |
* You should have received a copy of the GNU General Public License * |
* along with this program; if not, write to the * |
* Free Software Foundation, Inc., * |
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
***************************************************************************/ |
// $Id: system_header.php,v 1.30 2007/02/11 15:57:17 bigmichi1 Exp $ |
if( ! defined( 'IN_PHPSYSINFO' ) ) { |
die( "No Hacking" ); |
} |
setlocale( LC_ALL, $text['locale'] ); |
global $XPath; |
header( "Cache-Control: no-cache, must-revalidate" ); |
if( ! isset( $charset ) ) { |
$charset = "iso-8859-1"; |
} |
header( "Content-Type: text/html; charset=" . $charset ); |
echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n"; |
echo "<html>\n"; |
echo created_by(); |
echo "<head>\n"; |
echo "\t<title>" . $text['title'], " -- ", $XPath->getData('/phpsysinfo/Vitals/Hostname'), " --</title>\n"; |
echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=" . $charset . "\">"; |
if( file_exists( APP_ROOT . "/templates/" . $template . "/" . $template . ".css" ) ) { |
echo "\t<link rel=\"stylesheet\" type=\"text/css\" href=\"" . $webpath . "templates/" . $template . "/" . $template . ".css\">\n"; |
} |
echo "</head>\n"; |
if( file_exists( APP_ROOT . "/templates/" . $template . "/images/" . $template . "_background.gif" ) ) { |
echo "<body background=\"" . $webpath . "templates/" . $template . "/images/" . $template . "_background.gif\">"; |
} else { |
echo "<body>\n"; |
} |
?> |
/web/acc/phpsysinfo/includes/indicator.php |
---|
0,0 → 1,62 |
<?php |
/*************************************************************************** |
* Copyright (C) 2006 by phpSysInfo - A PHP System Information Script * |
* http://phpsysinfo.sourceforge.net/ * |
* * |
* This program is free software; you can redistribute it and/or modify * |
* it under the terms of the GNU General Public License as published by * |
* the Free Software Foundation; either version 2 of the License, or * |
* (at your option) any later version. * |
* * |
* This program is distributed in the hope that it will be useful, * |
* but WITHOUT ANY WARRANTY; without even the implied warranty of * |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * |
* GNU General Public License for more details. * |
* * |
* You should have received a copy of the GNU General Public License * |
* along with this program; if not, write to the * |
* Free Software Foundation, Inc., * |
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
***************************************************************************/ |
// $Id: indicator.php,v 1.4 2006/06/15 18:42:30 bigmichi1 Exp $ |
if ( ! defined( 'IN_PHPSYSINFO' ) ) { |
die( "No Hacking" ); |
} |
$start = $_GET['color1']; |
$end = $_GET['color2']; |
$percent = $_GET['percent']; |
$height = $_GET['height']; |
$width = 300; |
sscanf( $start, "%2x%2x%2x", $rbase, $gbase, $bbase ); |
sscanf( $end, "%2x%2x%2x", $rend, $gend, $bend ); |
if( $rbase == $rend ) $rend = $rend - 1; |
if( $gbase == $gend ) $gend = $gend - 1; |
if( $bbase == $bend ) $bend = $bend - 1; |
$rmod = ( $rend - $rbase ) / $width; |
$gmod = ( $gend - $gbase ) / $width; |
$bmod = ( $bend - $bbase ) / $width; |
$image = imagecreatetruecolor( $width, $height ); |
imagefilledrectangle( $image, 0, 0, $width, $height, imagecolorallocate( $image, 255,255,255 ) ); |
$step = $width / 100; |
for( $i = 0; $i < $percent * $step; $i = $i + $step + 1 ) { |
$r = ( $rmod * $i ) + $rbase; |
$g = ( $gmod * $i ) + $gbase; |
$b = ( $bmod * $i ) + $bbase; |
$color = imagecolorallocate( $image, $r, $g, $b ); |
imagefilledrectangle( $image, $i, 0, $i + $step, $height, $color ); |
} |
imagerectangle( $image, 0, 0, $width - 1, $height - 1, imagecolorallocate( $image, 0, 0, 0 ) ); |
imagepng( $image ); |
imagedestroy( $image ); |
?> |
/web/acc/phpsysinfo/includes/common_functions.php |
---|
0,0 → 1,439 |
<?php |
/*************************************************************************** |
* Copyright (C) 2006 by phpSysInfo - A PHP System Information Script * |
* http://phpsysinfo.sourceforge.net/ * |
* * |
* This program is free software; you can redistribute it and/or modify * |
* it under the terms of the GNU General Public License as published by * |
* the Free Software Foundation; either version 2 of the License, or * |
* (at your option) any later version. * |
* * |
* This program is distributed in the hope that it will be useful, * |
* but WITHOUT ANY WARRANTY; without even the implied warranty of * |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * |
* GNU General Public License for more details. * |
* * |
* You should have received a copy of the GNU General Public License * |
* along with this program; if not, write to the * |
* Free Software Foundation, Inc., * |
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
***************************************************************************/ |
// $Id: common_functions.php,v 1.55 2007/02/20 19:20:20 bigmichi1 Exp $ |
// usefull during development |
if( isset($showerrors) && $showerrors ) { |
error_reporting( E_ALL | E_NOTICE ); |
} else { |
error_reporting( E_ERROR | E_WARNING | E_PARSE ); |
} |
// HTML/XML Comment |
function created_by () { |
global $VERSION; |
return "<!--\n\tCreated By: phpSysInfo - " . $VERSION . "\n\thttp://phpsysinfo.sourceforge.net/\n-->\n"; |
} |
// print out the bar graph |
// $value as full percentages |
// $maximim as current maximum |
// $b as scale factor |
// $type as filesystem type |
function create_bargraph ($value, $maximum, $b, $type = "") { |
global $webpath; |
$textdir = direction(); |
$imgpath = $webpath . 'templates/' . TEMPLATE_SET . '/images/'; |
$maximum == 0 ? $barwidth = 0 : $barwidth = round((100 / $maximum) * $value) * $b; |
$red = 90 * $b; |
$yellow = 75 * $b; |
if (!file_exists(APP_ROOT . "/templates/" . TEMPLATE_SET . "/images/nobar_left.gif")) { |
if ($barwidth == 0) { |
return '<img height="' . BAR_HEIGHT . '" alt="" src="' . $imgpath . 'bar_' . $textdir['left'] . '.gif">' |
.'<img height="' . BAR_HEIGHT . '" alt="" src="' . $imgpath . 'bar_middle.gif" width="1">' |
.'<img height="' . BAR_HEIGHT . '" alt="" src="' . $imgpath . 'bar_' . $textdir['right'] . '.gif">'; |
} elseif ( file_exists( APP_ROOT . "/templates/" . TEMPLATE_SET . "/images/yellowbar_left.gif") && ( $barwidth > $yellow ) && ( $barwidth < $red ) ) { |
return '<img height="' . BAR_HEIGHT . '" alt="" src="' . $imgpath . 'yellowbar_' . $textdir['left'] . '.gif">' |
.'<img height="' . BAR_HEIGHT . '" alt="" src="' . $imgpath . 'yellowbar_middle.gif" width="' . $barwidth . '">' |
.'<img height="' . BAR_HEIGHT . '" alt="" src="' . $imgpath . 'yellowbar_' . $textdir['right'] . '.gif">'; |
} elseif ( ( $barwidth < $red ) || ( $type == "iso9660" ) || ( $type == "CDFS" ) ) { |
return '<img height="' . BAR_HEIGHT . '" alt="" src="' . $imgpath . 'bar_' . $textdir['left'] . '.gif">' |
.'<img height="' . BAR_HEIGHT . '" alt="" src="' . $imgpath . 'bar_middle.gif" width="' . $barwidth . '">' |
.'<img height="' . BAR_HEIGHT . '" alt="" src="' . $imgpath . 'bar_' . $textdir['right'] . '.gif">'; |
} else { |
return '<img height="' . BAR_HEIGHT . '" alt="" src="' . $imgpath . 'redbar_' . $textdir['left'] . '.gif">' |
.'<img height="' . BAR_HEIGHT . '" alt="" src="' . $imgpath . 'redbar_middle.gif" width="' . $barwidth . '">' |
.'<img height="' . BAR_HEIGHT . '" alt="" src="' . $imgpath . 'redbar_' . $textdir['right'] . '.gif">'; |
} |
} else { |
if ($barwidth == 0) { |
return '<img height="' . BAR_HEIGHT . '" alt="" src="' . $imgpath . 'nobar_' . $textdir['left'] . '.gif">' |
.'<img height="' . BAR_HEIGHT . '" alt="" src="' . $imgpath . 'nobar_middle.gif" width="' . ( 100 * $b ) . '">' |
.'<img height="' . BAR_HEIGHT . '" alt="" src="' . $imgpath . 'nobar_' . $textdir['right'] . '.gif">'; |
} elseif ( file_exists( APP_ROOT . "/templates/" . TEMPLATE_SET . "/images/yellowbar_left.gif" ) && ( $barwidth > $yellow ) && ( $barwidth < $red ) ) { |
return '<img height="' . BAR_HEIGHT . '" alt="" src="' . $imgpath . 'yellowbar_' . $textdir['left'] . '.gif">' |
.'<img height="' . BAR_HEIGHT . '" alt="" src="' . $imgpath . 'yellowbar_middle.gif" width="' . $barwidth . '">' |
.'<img height="' . BAR_HEIGHT . '" alt="" src="' . $imgpath . 'nobar_middle.gif" width="' . ( ( 100 * $b ) - $barwidth ) . '">' |
.'<img height="' . BAR_HEIGHT . '" alt="" src="' . $imgpath . 'nobar_' . $textdir['right'] . '.gif">'; |
} elseif ( ( $barwidth < $red ) || ( $type == "iso9660" ) || ( $type == "CDFS" ) ) { |
return '<img height="' . BAR_HEIGHT . '" alt="" src="' . $imgpath . 'bar_' . $textdir['left'] . '.gif">' |
.'<img height="' . BAR_HEIGHT . '" alt="" src="' . $imgpath . 'bar_middle.gif" width="' . $barwidth . '">' |
.'<img height="' . BAR_HEIGHT . '" alt="" src="' . $imgpath . 'nobar_middle.gif" width="' . ( ( 100 * $b ) - $barwidth ) . '">' |
.'<img height="' . BAR_HEIGHT . '" alt="" src="' . $imgpath . 'nobar_' . $textdir['right'] . '.gif">'; |
} elseif ( $barwidth == ( 100 * $b ) ) { |
return '<img height="' . BAR_HEIGHT . '" alt="" src="' . $imgpath . 'redbar_' . $textdir['left'] . '.gif">' |
.'<img height="' . BAR_HEIGHT . '" alt="" src="' . $imgpath . 'redbar_middle.gif" width="' . ( 100 * $b ) . '">' |
.'<img height="' . BAR_HEIGHT . '" alt="" src="' . $imgpath . 'redbar_' . $textdir['right'] . '.gif">'; |
} else { |
return '<img height="' . BAR_HEIGHT . '" alt="" src="' . $imgpath . 'redbar_' . $textdir['left'] . '.gif">' |
.'<img height="' . BAR_HEIGHT . '" alt="" src="' . $imgpath . 'redbar_middle.gif" width="' . $barwidth . '">' |
.'<img height="' . BAR_HEIGHT . '" alt="" src="' . $imgpath . 'nobar_middle.gif" width="' . ( ( 100 * $b ) - $barwidth ) . '">' |
.'<img height="' . BAR_HEIGHT . '" alt="" src="' . $imgpath . 'nobar_' . $textdir['right'] . '.gif">'; |
} |
} |
} |
function create_bargraph_grad( $value, $maximum, $b, $type = "" ) { |
global $webpath; |
$maximum == 0 ? $barwidth = 0 : $barwidth = round( ( 100 / $maximum ) * $value ); |
$startColor = '0ef424'; // green |
$endColor = 'ee200a'; // red |
if ( $barwidth > 100 ) { |
$barwidth = 0; |
} |
return '<img height="' . BAR_HEIGHT . '" width="300" src="' . $webpath . 'includes/indicator.php?height=' . BAR_HEIGHT . '&percent=' . $barwidth . '&color1=' . $startColor . '&color2=' . $endColor . '" alt="">'; |
} |
function direction() { |
global $text_dir; |
if( ! isset( $text_dir ) || ( $text_dir == "ltr" ) ) { |
$arrResult['direction'] = "ltr"; |
$arrResult['left'] = "left"; |
$arrResult['right'] = "right"; |
} else { |
$arrResult['direction'] = "rtl"; |
$arrResult['left'] = "right"; |
$arrResult['right'] = "left"; |
} |
return $arrResult; |
} |
// Find a system program. Do path checking |
function find_program ($strProgram) { |
global $addpaths; |
$arrPath = array( '/bin', '/sbin', '/usr/bin', '/usr/sbin', '/usr/local/bin', '/usr/local/sbin' ); |
if( isset( $addpaths ) && is_array( $addpaths ) ) { |
$arrPath = array_merge( $arrPath, $addpaths ); |
} |
if ( function_exists( "is_executable" ) ) { |
foreach ( $arrPath as $strPath ) { |
$strProgrammpath = $strPath . "/" . $strProgram; |
if( is_executable( $strProgrammpath ) ) { |
return $strProgrammpath; |
} |
} |
} else { |
return strpos( $strProgram, '.exe' ); |
} |
} |
// Execute a system program. return a trim()'d result. |
// does very crude pipe checking. you need ' | ' for it to work |
// ie $program = execute_program('netstat', '-anp | grep LIST'); |
// NOT $program = execute_program('netstat', '-anp|grep LIST'); |
function execute_program ($strProgramname, $strArgs = '', $booErrorRep = true ) { |
global $error; |
$strBuffer = ''; |
$strError = ''; |
$strProgram = find_program($strProgramname); |
if ( ! $strProgram ) { |
if( $booErrorRep ) { |
$error->addError( 'find_program(' . $strProgramname . ')', 'program not found on the machine', __LINE__, __FILE__); |
} |
return "ERROR"; |
} |
// see if we've gotten a |, if we have we need to do patch checking on the cmd |
if( $strArgs ) { |
$arrArgs = explode( ' ', $strArgs ); |
for( $i = 0; $i < count( $arrArgs ); $i++ ) { |
if ( $arrArgs[$i] == '|' ) { |
$strCmd = $arrArgs[$i + 1]; |
$strNewcmd = find_program( $strCmd ); |
$strArgs = ereg_replace( "\| " . $strCmd, "| " . $strNewcmd, $strArgs ); |
} |
} |
} |
// no proc_open() below php 4.3 |
if( function_exists( 'proc_open' ) ) { |
$descriptorspec = array( |
0 => array("pipe", "r"), // stdin is a pipe that the child will read from |
1 => array("pipe", "w"), // stdout is a pipe that the child will write to |
2 => array("pipe", "w") // stderr is a pipe that the child will write to |
); |
$process = proc_open( $strProgram . " " . $strArgs, $descriptorspec, $pipes ); |
if( is_resource( $process ) ) { |
while( !feof( $pipes[1] ) ) { |
$strBuffer .= fgets( $pipes[1], 1024 ); |
} |
fclose( $pipes[1] ); |
while( !feof( $pipes[2] ) ) { |
$strError .= fgets( $pipes[2], 1024 ); |
} |
fclose( $pipes[2] ); |
} |
$return_value = proc_close( $process ); |
} else { |
if( $fp = popen( "(" . $strProgram . " " . $strArgs . " > /dev/null) 3>&1 1>&2 2>&3", 'r' ) ) { |
while( ! feof( $fp ) ) { |
$strError .= fgets( $fp, 4096 ); |
} |
pclose( $fp ); |
} |
$strError = trim( $strError ); |
if( $fp = popen( $strProgram . " " . $strArgs, 'r' ) ) { |
while( ! feof( $fp ) ) { |
$strBuffer .= fgets( $fp, 4096 ); |
} |
$return_value = pclose( $fp ); |
} |
} |
$strError = trim( $strError ); |
$strBuffer = trim( $strBuffer ); |
if( ! empty( $strError ) || $return_value <> 0 ) { |
if( $booErrorRep ) { |
$error->addError( $strProgram, $strError . "\nReturn value: " . $return_value, __LINE__, __FILE__); |
} |
} |
return $strBuffer; |
} |
// A helper function, when passed a number representing KB, |
// and optionally the number of decimal places required, |
// it returns a formated number string, with unit identifier. |
function format_bytesize ($intKbytes, $intDecplaces = 2) { |
global $text; |
$strSpacer = ' '; |
if( $intKbytes > 1048576 ) { |
$strResult = sprintf( '%.' . $intDecplaces . 'f', $intKbytes / 1048576 ); |
$strResult .= $strSpacer . $text['gb']; |
} elseif( $intKbytes > 1024 ) { |
$strResult = sprintf( '%.' . $intDecplaces . 'f', $intKbytes / 1024); |
$strResult .= $strSpacer . $text['mb']; |
} else { |
$strResult = sprintf( '%.' . $intDecplaces . 'f', $intKbytes ); |
$strResult .= $strSpacer . $text['kb']; |
} |
return $strResult; |
} |
function format_speed( $intHz ) { |
$strResult = ""; |
if( $intHz < 1000 ) { |
$strResult = $intHz . " Mhz"; |
} else { |
$strResult = round( $intHz / 1000, 2 ) . " GHz"; |
} |
return $strResult; |
} |
function get_gif_image_height( $image ) { |
// gives the height of the given GIF image, by reading it's LSD (Logical Screen Discriptor) |
// by Edwin Meester aka MillenniumV3 |
// Header: |
//3bytes Discription |
// 3bytes Version |
// LSD: |
//2bytes Logical Screen Width |
// 2bytes Logical Screen Height |
// 1bit Global Color Table Flag |
// 3bits Color Resolution |
// 1bit Sort Flag |
// 3bits Size of Global Color Table |
// 1byte Background Color Index |
// 1byte Pixel Aspect Ratio |
// Open Image |
$fp = fopen( $image, 'rb' ); |
// read Header + LSD |
$strHeaderandlsd = fread( $fp, 13 ); |
fclose( $fp ); |
// calc Height from Logical Screen Height bytes |
$intResult = ord( $strHeaderandlsd{8} ) + ord( $strHeaderandlsd{9} ) * 255; |
return $intResult; |
} |
// Check if a string exist in the global $hide_mounts. |
// Return true if this is the case. |
function hide_mount( $strMount ) { |
global $hide_mounts; |
if( isset( $hide_mounts ) && is_array( $hide_mounts ) && in_array( $strMount, $hide_mounts ) ) { |
return true; |
} else { |
return false; |
} |
} |
// Check if a string exist in the global $hide_fstypes. |
// Return true if this is the case. |
function hide_fstype( $strFSType ) { |
global $hide_fstypes; |
if( isset( $hide_fstypes ) && is_array( $hide_fstypes ) && in_array( $strFSType, $hide_fstypes ) ) { |
return true; |
} else { |
return false; |
} |
} |
function uptime( $intTimestamp ) { |
global $text; |
$strUptime = ''; |
$intMin = $intTimestamp / 60; |
$intHours = $intMin / 60; |
$intDays = floor( $intHours / 24 ); |
$intHours = floor( $intHours - ( $intDays * 24 ) ); |
$intMin = floor( $intMin - ( $intDays * 60 * 24 ) - ( $intHours * 60 ) ); |
if( $intDays != 0 ) { |
$strUptime .= $intDays. " " . $text['days'] . " "; |
} |
if( $intHours != 0 ) { |
$strUptime .= $intHours . " " . $text['hours'] . " "; |
} |
$strUptime .= $intMin . " " . $text['minutes']; |
return $strUptime; |
} |
//Replace some chars which are not valid in xml with iso-8859-1 encoding |
function replace_specialchars( &$strXml ) { |
$arrSearch = array( chr(174), chr(169), chr(228), chr(246), chr(252), chr(214), chr(220), chr(196) ); |
$arrReplace = array( "(R)", "(C)", "ae", "oe", "ue", "Oe", "Ue", "Ae" ); |
$strXml = str_replace( $arrSearch, $arrReplace, $strXml ); |
} |
// find duplicate entrys and count them, show this value befor the duplicated name |
function finddups( $arrInput ) { |
$arrResult = array(); |
if( is_array( $arrInput ) ) { |
$arrBuffer = array_count_values( $arrInput ); |
foreach( $arrBuffer as $strKey => $intValue) { |
if( $intValue > 1 ) { |
$arrResult[] = "(" . $intValue . "x) " . $strKey; |
} else { |
$arrResult[] = $strKey; |
} |
} |
} |
return $arrResult; |
} |
function rfts( $strFileName, $intLines = 0, $intBytes = 4096, $booErrorRep = true ) { |
global $error; |
$strFile = ""; |
$intCurLine = 1; |
if( file_exists( $strFileName ) ) { |
if( $fd = fopen( $strFileName, 'r' ) ) { |
while( !feof( $fd ) ) { |
$strFile .= fgets( $fd, $intBytes ); |
if( $intLines <= $intCurLine && $intLines != 0 ) { |
break; |
} else { |
$intCurLine++; |
} |
} |
fclose( $fd ); |
} else { |
if( $booErrorRep ) { |
$error->addError( 'fopen(' . $strFileName . ')', 'file can not read by phpsysinfo', __LINE__, __FILE__ ); |
} |
return "ERROR"; |
} |
} else { |
if( $booErrorRep ) { |
$error->addError( 'file_exists(' . $strFileName . ')', 'the file does not exist on your machine', __LINE__, __FILE__ ); |
} |
return "ERROR"; |
} |
return $strFile; |
} |
function gdc( $strPath, $booErrorRep = true ) { |
global $error; |
$arrDirectoryContent = array(); |
if( is_dir( $strPath ) ) { |
if( $handle = opendir( $strPath ) ) { |
while( ( $strFile = readdir( $handle ) ) !== false ) { |
if( $strFile != "." && $strFile != ".." && $strFile != "CVS" ) { |
$arrDirectoryContent[] = $strFile; |
} |
} |
closedir( $handle ); |
} else { |
if( $booErrorRep ) { |
$error->addError( 'opendir(' . $strPath . ')', 'directory can not be read by phpsysinfo', __LINE__, __FILE__ ); |
} |
} |
} else { |
if( $booErrorRep ) { |
$error->addError( 'is_dir(' . $strPath . ')', 'directory does not exist on your machine', __LINE__, __FILE__ ); |
} |
} |
return $arrDirectoryContent; |
} |
function temperature( $floatTempC ) { |
global $temperatureformat, $text, $error; |
$strResult = " "; |
switch( strtoupper( $temperatureformat ) ) { |
case "F": |
$floatFahrenheit = $floatTempC * 1.8 + 32; |
$strResult .= round( $floatFahrenheit ) . $text['degreeF']; |
break; |
case "C": |
$strResult .= round( $floatTempC ) . $text['degreeC']; |
break; |
case "F-C": |
$floatFahrenheit = $floatTempC * 1.8 + 32; |
$strResult .= round( $floatFahrenheit ) . $text['degreeF']; |
$strResult .= " ("; |
$strResult .= round( $floatTempC ) . $text['degreeC']; |
$strResult .= ")"; |
break; |
case "C-F": |
$floatFahrenheit = $floatTempC * 1.8 + 32; |
$strResult .= round( $floatTempC ) . $text['degreeC']; |
$strResult .= " ("; |
$strResult .= round( $floatFahrenheit ) . $text['degreeF']; |
$strResult .= ")"; |
break; |
default: |
$error->addError( 'temperature(' . $floatTempC . ')', 'wrong or unspecified temperature format', __LINE__, __FILE__ ); |
break; |
} |
return $strResult; |
} |
?> |
/web/acc/phpsysinfo/includes/system_footer.php |
---|
0,0 → 1,95 |
<?php |
/*************************************************************************** |
* Copyright (C) 2006 by phpSysInfo - A PHP System Information Script * |
* http://phpsysinfo.sourceforge.net/ * |
* * |
* This program is free software; you can redistribute it and/or modify * |
* it under the terms of the GNU General Public License as published by * |
* the Free Software Foundation; either version 2 of the License, or * |
* (at your option) any later version. * |
* * |
* This program is distributed in the hope that it will be useful, * |
* but WITHOUT ANY WARRANTY; without even the implied warranty of * |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * |
* GNU General Public License for more details. * |
* * |
* You should have received a copy of the GNU General Public License * |
* along with this program; if not, write to the * |
* Free Software Foundation, Inc., * |
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
***************************************************************************/ |
// $Id: system_footer.php,v 1.51.4.1 2007/08/19 09:22:21 xqus Exp $ |
if( ! defined( 'IN_PHPSYSINFO' ) ) { |
die( "No Hacking" ); |
} |
$arrDirection = direction(); |
if( ! $hide_picklist ) { |
echo "<center>\n"; |
$update_form = "<form method=\"POST\" action=\"" . htmlentities($_SERVER['PHP_SELF']) . "\">\n" . "\t" . $text['template'] . ": \n" . "\t<select name=\"template\">\n"; |
$resDir = opendir( APP_ROOT . '/templates/' ); |
while( false !== ( $strFile = readdir( $resDir ) ) ) { |
if( $strFile != 'CVS' && $strFile[0] != '.' && is_dir( APP_ROOT . '/templates/' . $strFile ) ) { |
$arrFilelist[] = $strFile; |
} |
} |
closedir( $resDir ); |
asort( $arrFilelist ); |
foreach( $arrFilelist as $strVal ) { |
if( $_COOKIE['template'] == $strVal ) { |
$update_form .= "\t\t<option value=\"" . $strVal . "\" SELECTED>" . $strVal . "</option>\n"; |
} else { |
$update_form .= "\t\t<option value=\"" . $strVal . "\">" . $strVal . "</option>\n"; |
} |
} |
$update_form .= "\t\t<option value=\"xml\">XML</option>\n"; |
$update_form .= "\t\t<option value=\"wml\">WML</option>\n"; |
$update_form .= "\t\t<option value=\"random\""; |
if( $_COOKIE['template'] == 'random' ) { |
$update_form .= " SELECTED"; |
} |
$update_form .= ">random</option>\n"; |
$update_form .= "\t</select>\n"; |
$update_form .= "\t " . $text['language'] . ": \n" . "\t<select name=\"lng\">\n"; |
unset( $arrFilelist ); |
$resDir = opendir( APP_ROOT . "/includes/lang/" ); |
while( false !== ( $strFile = readdir( $resDir ) ) ) { |
if ( $strFile[0] != '.' && is_file( APP_ROOT . "/includes/lang/" . $strFile ) && preg_match( "/\.php$/", $strFile ) ) { |
$arrFilelist[] = preg_replace("/\.php$/", "", $strFile ); |
} |
} |
closedir($resDir); |
asort( $arrFilelist ); |
foreach( $arrFilelist as $strVal ) { |
if( $_COOKIE['lng'] == $strVal ) { |
$update_form .= "\t\t<option value=\"" . $strVal . "\" SELECTED>" . $strVal . "</option>\n"; |
} else { |
$update_form .= "\t\t<option value=\"" . $strVal . "\">" . $strVal . "</option>\n"; |
} |
} |
$update_form .= "\t\t<option value=\"browser\""; |
if( $_COOKIE['lng'] == "browser" ) { |
$update_form .= " SELECTED"; |
} |
$update_form .= ">browser default</option>\n\t</select>\n"; |
$update_form .= "\t<input type=\"submit\" value=\"" . $text['submit'] . "\">\n" . "</form>\n"; |
echo $update_form; |
echo "</center>\n"; |
} else { |
echo "<br>\n"; |
} |
echo "<hr>\n"; |
echo "<table width=\"100%\">\n\t<tr>\n"; |
echo "\t\t<td align=\"" . $arrDirection['left'] . "\"><font size=\"-1\">" . $text['created'] . " <a href=\"http://phpsysinfo.sourceforge.net\" target=\"_blank\">phpSysInfo-" . $VERSION . "</a> " . strftime( $text['gen_time'], time() ) . "</font></td>\n"; |
echo "\t\t<td align=\"" . $arrDirection['right'] . "\"><font size=\"-1\">" . round( ( array_sum( explode( " ", microtime() ) ) - $startTime ), 4 ). " sec</font></td>\n"; |
echo "\t</tr>\n</table>\n"; |
echo "<br>\n</body>\n</html>\n"; |
?> |
/web/acc/phpsysinfo/includes/index.html |
---|
--- phpsysinfo/includes/class.error.inc.php (nonexistent) |
+++ phpsysinfo/includes/class.error.inc.php (revision 325) |
@@ -0,0 +1,129 @@ |
+<?php |
+/*************************************************************************** |
+ * Copyright (C) 2006 by phpSysInfo - A PHP System Information Script * |
+ * http://phpsysinfo.sourceforge.net/ * |
+ * * |
+ * This program is free software; you can redistribute it and/or modify * |
+ * it under the terms of the GNU General Public License as published by * |
+ * the Free Software Foundation; either version 2 of the License, or * |
+ * (at your option) any later version. * |
+ * * |
+ * This program is distributed in the hope that it will be useful, * |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of * |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * |
+ * GNU General Public License for more details. * |
+ * * |
+ * You should have received a copy of the GNU General Public License * |
+ * along with this program; if not, write to the * |
+ * Free Software Foundation, Inc., * |
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
+ ***************************************************************************/ |
+ |
+// $Id: class.error.inc.php,v 1.9 2007/02/11 15:57:17 bigmichi1 Exp $ |
+ |
+class Error { |
+ |
+ // Array which holds the error messages |
+ var $arrErrorList = array(); |
+ // current number of errors encountered |
+ var $errors = 0; |
+ |
+ /** |
+ * |
+ * addError() |
+ * |
+ * @param strCommand string Command, which cause the Error |
+ * @param strMessage string additional Message, to describe the Error |
+ * @param intLine integer on which line the Error occours |
+ * @param strFile string in which File the Error occours |
+ * |
+ * @return - |
+ * |
+ **/ |
+ function addError( $strCommand, $strMessage, $intLine, $strFile ) { |
+ $this->arrErrorList[$this->errors]['command'] = $strCommand; |
+ $this->arrErrorList[$this->errors]['message'] = $strMessage; |
+ $this->arrErrorList[$this->errors]['line'] = $intLine; |
+ $this->arrErrorList[$this->errors]['file'] = basename( $strFile ); |
+ $this->errors++; |
+ } |
+ |
+ /** |
+ * |
+ * addWarning() |
+ * |
+ * @param strMessage string Warning message to display |
+ * |
+ * @return - |
+ * |
+ **/ |
+ function addWarning( $strMessage ) { |
+ $this->arrErrorList[$this->errors]['command'] = "WARN"; |
+ $this->arrErrorList[$this->errors]['message'] = $strMessage; |
+ $this->errors++; |
+ } |
+ |
+ /** |
+ * |
+ * ErrorsAsHTML() |
+ * |
+ * @param - |
+ * |
+ * @return string string which contains a HTML table which can be used to echo out the errors |
+ * |
+ **/ |
+ function ErrorsAsHTML() { |
+ $strHTMLString = ""; |
+ $strWARNString = ""; |
+ $strHTMLhead = "<table width=\"100%\" border=\"0\">\n" |
+ . "\t<tr>\n" |
+ . "\t\t<td><font size=\"-1\"><b>File</b></font></td>\n" |
+ . "\t\t<td><font size=\"-1\"><b>Line</b></font></td>\n" |
+ . "\t\t<td><font size=\"-1\"><b>Command</b></font></td>\n" |
+ . "\t\t<td><font size=\"-1\"><b>Message</b></font></td>\n" |
+ . "\t</tr>\n"; |
+ $strHTMLfoot = "</table>\n"; |
+ |
+ if( $this->errors > 0 ) { |
+ foreach( $this->arrErrorList as $arrLine ) { |
+ if( $arrLine['command'] == "WARN" ) { |
+ $strWARNString .= "<font size=\"-1\"><b>WARNING: " . str_replace( "\n", "<br>", htmlspecialchars( $arrLine['message'] ) ) . "</b></font><br>\n"; |
+ } else { |
+ $strHTMLString .= "\t<tr>\n" |
+ . "\t\t<td><font size=\"-1\">" . htmlspecialchars( $arrLine['file'] ) . "</font></td>\n" |
+ . "\t\t<td><font size=\"-1\">" . $arrLine['line'] . "</font></td>\n" |
+ . "\t\t<td><font size=\"-1\">" . htmlspecialchars( $arrLine['command'] ) . "</font></td>\n" |
+ . "\t\t<td><font size=\"-1\">" . str_replace( "\n", "<br>", htmlspecialchars( $arrLine['message'] ) ) . "</font></td>\n" |
+ . "\t</tr>\n"; |
+ } |
+ } |
+ } |
+ |
+ if( !empty( $strHTMLString ) ) { |
+ $strHTMLString = $strWARNString . $strHTMLhead . $strHTMLString . $strHTMLfoot; |
+ } else { |
+ $strHTMLString = $strWARNString; |
+ } |
+ |
+ return $strHTMLString; |
+ } |
+ |
+ /** |
+ * |
+ * ErrorsExist() |
+ * |
+ * @param - |
+ * |
+ * @return true there are errors logged |
+ * false no errors logged |
+ * |
+ **/ |
+ function ErrorsExist() { |
+ if( $this->errors > 0 ) { |
+ return true; |
+ } else { |
+ return false; |
+ } |
+ } |
+} |
+?> |
/web/acc/phpsysinfo/includes/class.Template.inc.php |
---|
0,0 → 1,449 |
<?php |
/**************************************************************************\ |
* eGroupWare API - Template class * |
* (C) Copyright 1999-2000 NetUSE GmbH Kristian Koehntopp * |
* ------------------------------------------------------------------------ * |
* http://www.egroupware.org/ * |
* ------------------------------------------------------------------------ * |
* This program is free software; you can redistribute it and/or modify it * |
* under the terms of the GNU Lesser General Public License as published * |
* by the Free Software Foundation; either version 2.1 of the License, or * |
* any later version. * |
\**************************************************************************/ |
/* $Id: class.Template.inc.php,v 1.5 2005/11/26 13:01:24 bigmichi1 Exp $ */ |
class Template |
{ |
var $classname = 'Template'; |
/* if set, echo assignments */ |
var $debug = False; |
/* $file[handle] = 'filename'; */ |
var $file = array(); |
/* relative filenames are relative to this pathname */ |
var $root = ''; |
/* $varkeys[key] = 'key'; $varvals[key] = 'value'; */ |
var $varkeys = array(); |
var $varvals = array(); |
/* 'remove' => remove undefined variables |
* 'comment' => replace undefined variables with comments |
* 'keep' => keep undefined variables |
*/ |
var $unknowns = 'remove'; |
/* 'yes' => halt, 'report' => report error, continue, 'no' => ignore error quietly */ |
var $halt_on_error = 'yes'; |
/* last error message is retained here */ |
var $last_error = ''; |
/***************************************************************************/ |
/* public: Constructor. |
* root: template directory. |
* unknowns: how to handle unknown variables. |
*/ |
function Template($root = '.', $unknowns = 'remove') |
{ |
$this->set_root($root); |
$this->set_unknowns($unknowns); |
} |
/* public: setroot(pathname $root) |
* root: new template directory. |
*/ |
function set_root($root) |
{ |
if (!is_dir($root)) |
{ |
$this->halt("set_root: $root is not a directory."); |
return false; |
} |
$this->root = $root; |
return true; |
} |
/* public: set_unknowns(enum $unknowns) |
* unknowns: 'remove', 'comment', 'keep' |
* |
*/ |
function set_unknowns($unknowns = 'keep') |
{ |
$this->unknowns = $unknowns; |
} |
/* public: set_file(array $filelist) |
* filelist: array of handle, filename pairs. |
* |
* public: set_file(string $handle, string $filename) |
* handle: handle for a filename, |
* filename: name of template file |
*/ |
function set_file($handle, $filename = '') |
{ |
if (!is_array($handle)) |
{ |
if ($filename == '') |
{ |
$this->halt("set_file: For handle $handle filename is empty."); |
return false; |
} |
$this->file[$handle] = $this->filename($filename); |
} |
else |
{ |
reset($handle); |
while(list($h, $f) = each($handle)) |
{ |
$this->file[$h] = $this->filename($f); |
} |
} |
} |
/* public: set_block(string $parent, string $handle, string $name = '') |
* extract the template $handle from $parent, |
* place variable {$name} instead. |
*/ |
function set_block($parent, $handle, $name = '') |
{ |
if (!$this->loadfile($parent)) |
{ |
$this->halt("subst: unable to load $parent."); |
return false; |
} |
if ($name == '') |
{ |
$name = $handle; |
} |
$str = $this->get_var($parent); |
$reg = "/<!--\s+BEGIN $handle\s+-->(.*)\n\s*<!--\s+END $handle\s+-->/sm"; |
preg_match_all($reg, $str, $m); |
$str = preg_replace($reg, '{' . "$name}", $str); |
$this->set_var($handle, $m[1][0]); |
$this->set_var($parent, $str); |
} |
/* public: set_var(array $values) |
* values: array of variable name, value pairs. |
* |
* public: set_var(string $varname, string $value) |
* varname: name of a variable that is to be defined |
* value: value of that variable |
*/ |
function set_var($varname, $value = '') |
{ |
if (!is_array($varname)) |
{ |
if (!empty($varname)) |
{ |
if ($this->debug) |
{ |
print "scalar: set *$varname* to *$value*<br>\n"; |
} |
$this->varkeys[$varname] = $this->varname($varname); |
$this->varvals[$varname] = str_replace('phpGroupWare','eGroupWare',$value); |
} |
} |
else |
{ |
reset($varname); |
while(list($k, $v) = each($varname)) |
{ |
if (!empty($k)) |
{ |
if ($this->debug) |
{ |
print "array: set *$k* to *$v*<br>\n"; |
} |
$this->varkeys[$k] = $this->varname($k); |
$this->varvals[$k] = str_replace('phpGroupWare','eGroupWare',$v); |
} |
} |
} |
} |
/* public: subst(string $handle) |
* handle: handle of template where variables are to be substituted. |
*/ |
function subst($handle) |
{ |
if (!$this->loadfile($handle)) |
{ |
$this->halt("subst: unable to load $handle."); |
return false; |
} |
$str = $this->get_var($handle); |
reset($this->varkeys); |
while (list($k, $v) = each($this->varkeys)) |
{ |
$str = str_replace($v, $this->varvals[$k], $str); |
} |
return $str; |
} |
/* public: psubst(string $handle) |
* handle: handle of template where variables are to be substituted. |
*/ |
function psubst($handle) |
{ |
print $this->subst($handle); |
return false; |
} |
/* public: parse(string $target, string $handle, boolean append) |
* public: parse(string $target, array $handle, boolean append) |
* target: handle of variable to generate |
* handle: handle of template to substitute |
* append: append to target handle |
*/ |
function parse($target, $handle, $append = false) |
{ |
if (!is_array($handle)) |
{ |
$str = $this->subst($handle); |
if ($append) |
{ |
$this->set_var($target, $this->get_var($target) . $str); |
} |
else |
{ |
$this->set_var($target, $str); |
} |
} |
else |
{ |
reset($handle); |
while(list($i, $h) = each($handle)) |
{ |
$str = $this->subst($h); |
$this->set_var($target, $str); |
} |
} |
return $str; |
} |
function pparse($target, $handle, $append = false) |
{ |
print $this->parse($target, $handle, $append); |
return false; |
} |
/* This is short for finish parse */ |
function fp($target, $handle, $append = False) |
{ |
return $this->finish($this->parse($target, $handle, $append)); |
} |
/* This is a short cut for print finish parse */ |
function pfp($target, $handle, $append = False) |
{ |
echo $this->finish($this->parse($target, $handle, $append)); |
} |
/* public: get_vars() |
*/ |
function get_vars() |
{ |
reset($this->varkeys); |
while(list($k, $v) = each($this->varkeys)) |
{ |
$result[$k] = $this->varvals[$k]; |
} |
return $result; |
} |
/* public: get_var(string varname) |
* varname: name of variable. |
* |
* public: get_var(array varname) |
* varname: array of variable names |
*/ |
function get_var($varname) |
{ |
if (!is_array($varname)) |
{ |
return $this->varvals[$varname]; |
} |
else |
{ |
reset($varname); |
while(list($k, $v) = each($varname)) |
{ |
$result[$k] = $this->varvals[$k]; |
} |
return $result; |
} |
} |
/* public: get_undefined($handle) |
* handle: handle of a template. |
*/ |
function get_undefined($handle) |
{ |
if (!$this->loadfile($handle)) |
{ |
$this->halt("get_undefined: unable to load $handle."); |
return false; |
} |
preg_match_all("/\{([^}]+)\}/", $this->get_var($handle), $m); |
$m = $m[1]; |
if (!is_array($m)) |
{ |
return false; |
} |
reset($m); |
while(list($k, $v) = each($m)) |
{ |
if (!isset($this->varkeys[$v])) |
{ |
$result[$v] = $v; |
} |
} |
if (count($result)) |
{ |
return $result; |
} |
else |
{ |
return false; |
} |
} |
/* public: finish(string $str) |
* str: string to finish. |
*/ |
function finish($str) |
{ |
switch ($this->unknowns) |
{ |
case 'keep': |
break; |
case 'remove': |
$str = preg_replace('/{[^ \t\r\n}]+}/', '', $str); |
break; |
case 'comment': |
$str = preg_replace('/{([^ \t\r\n}]+)}/', "<!-- Template $handle: Variable \\1 undefined -->", $str); |
break; |
} |
return $str; |
} |
/* public: p(string $varname) |
* varname: name of variable to print. |
*/ |
function p($varname) |
{ |
print $this->finish($this->get_var($varname)); |
} |
function get($varname) |
{ |
return $this->finish($this->get_var($varname)); |
} |
/***************************************************************************/ |
/* private: filename($filename) |
* filename: name to be completed. |
*/ |
function filename($filename,$root='',$time=1) |
{ |
if($root=='') |
{ |
$root=$this->root; |
} |
if (substr($filename, 0, 1) != '/') |
{ |
$new_filename = $root.'/'.$filename; |
} |
else |
{ |
$new_filename = $filename; |
} |
if (!file_exists($new_filename)) |
{ |
if($time==2) |
{ |
$this->halt("filename: file $new_filename does not exist."); |
} |
else |
{ |
$new_root = str_replace($GLOBALS['egw_info']['server']['template_set'],'default',$root); |
$new_filename = $this->filename(str_replace($root.'/','',$new_filename),$new_root,2); |
} |
} |
return $new_filename; |
} |
/* private: varname($varname) |
* varname: name of a replacement variable to be protected. |
*/ |
function varname($varname) |
{ |
return '{'.$varname.'}'; |
} |
/* private: loadfile(string $handle) |
* handle: load file defined by handle, if it is not loaded yet. |
*/ |
function loadfile($handle) |
{ |
if (isset($this->varkeys[$handle]) and !empty($this->varvals[$handle])) |
{ |
return true; |
} |
if (!isset($this->file[$handle])) |
{ |
$this->halt("loadfile: $handle is not a valid handle."); |
return false; |
} |
$filename = $this->file[$handle]; |
$str = implode('', @file($filename)); |
if (empty($str)) |
{ |
$this->halt("loadfile: While loading $handle, $filename does not exist or is empty."); |
return false; |
} |
$this->set_var($handle, $str); |
return true; |
} |
/***************************************************************************/ |
/* public: halt(string $msg) |
* msg: error message to show. |
*/ |
function halt($msg) |
{ |
$this->last_error = $msg; |
if ($this->halt_on_error != 'no') |
{ |
$this->haltmsg($msg); |
} |
if ($this->halt_on_error == 'yes') |
{ |
echo('<b>Halted.</b>'); |
} |
exit; |
} |
/* public, override: haltmsg($msg) |
* msg: error message to show. |
*/ |
function haltmsg($msg) |
{ |
printf("<b>Template Error:</b> %s<br>\n", $msg); |
} |
} |
/web/acc/phpsysinfo/includes/mb/class.mbm5.inc.php |
---|
0,0 → 1,79 |
<?php |
// |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// |
// $Id: class.mbm5.inc.php,v 1.7 2007/02/18 19:11:31 bigmichi1 Exp $ |
class mbinfo { |
var $buf_label; |
var $buf_value; |
function mbinfo() { |
$buffer = rfts( APP_ROOT . "/data/MBM5.csv" ); |
if( strpos( $buffer, ";") === false ) { |
$delim = ","; |
} else { |
$delim = ";"; |
} |
$buffer = explode( "\n", $buffer ); |
$this->buf_label = explode( $delim, $buffer[0] ); |
$this->buf_value = explode( $delim, $buffer[1] ); |
} |
function temperature() { |
$results = array(); |
$intCount = 0; |
for( $intPosi = 3; $intPosi < 6; $intPosi++ ) { |
$results[$intCount]['label'] = $this->buf_label[$intPosi]; |
$results[$intCount]['value'] = $this->buf_value[$intPosi]; |
$results[$intCount]['limit'] = '70.0'; |
$intCount++; |
} |
return $results; |
} |
function fans() { |
$results = array(); |
$intCount = 0; |
for( $intPosi = 13; $intPosi < 16; $intPosi++ ) { |
$results[$intCount]['label'] = $this->buf_label[$intPosi]; |
$results[$intCount]['value'] = $this->buf_value[$intPosi]; |
$results[$intCount]['min'] = '3000'; |
$intCount++; |
} |
return $results; |
} |
function voltage() { |
$results = array(); |
$intCount = 0; |
for( $intPosi = 6; $intPosi < 13; $intPosi++ ) { |
$results[$intCount]['label'] = $this->buf_label[$intPosi]; |
$results[$intCount]['value'] = $this->buf_value[$intPosi]; |
$results[$intCount]['min'] = '0.00'; |
$results[$intCount]['max'] = '0.00'; |
$intCount++; |
} |
return $results; |
} |
} |
?> |
/web/acc/phpsysinfo/includes/mb/class.lmsensors.inc.php |
---|
0,0 → 1,175 |
<?php |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// $Id: class.lmsensors.inc.php,v 1.19 2007/02/18 19:11:31 bigmichi1 Exp $ |
if (!defined('IN_PHPSYSINFO')) { |
die("No Hacking"); |
} |
require_once(APP_ROOT . "/includes/common_functions.php"); |
class mbinfo { |
var $lines; |
function mbinfo() { |
$lines = execute_program("sensors", ""); |
// Martijn Stolk: Dirty fix for misinterpreted output of sensors, |
// where info could come on next line when the label is too long. |
$lines = str_replace(":\n", ":", $lines); |
$lines = str_replace("\n\n", "\n", $lines); |
$this->lines = explode("\n", $lines); |
} |
function temperature() { |
$ar_buf = array(); |
$results = array(); |
$sensors_value = $this->lines; |
foreach($sensors_value as $line) { |
$data = array(); |
if (ereg("(.*):(.*)\((.*)=(.*),(.*)=(.*)\)(.*)", $line, $data)) ; |
elseif (ereg("(.*):(.*)\((.*)=(.*)\)(.*)", $line, $data)) ; |
else (ereg("(.*):(.*)", $line, $data)); |
if (count($data) > 1) { |
$temp = substr(trim($data[2]), -1); |
switch ($temp) { |
case "C"; |
case "F": |
array_push($ar_buf, $line); |
break; |
} |
} |
} |
$i = 0; |
foreach($ar_buf as $line) { |
unset($data); |
if (ereg("(.*):(.*).C[ ]*\((.*)=(.*).C,(.*)=(.*).C\)(.*)\)", $line, $data)) ; |
elseif (ereg("(.*):(.*).C[ ]*\((.*)=(.*).C,(.*)=(.*).C\)(.*)", $line, $data)) ; |
elseif (ereg("(.*):(.*).C[ ]*\((.*)=(.*).C\)(.*)", $line, $data)) ; |
else (ereg("(.*):(.*).C", $line, $data)); |
$results[$i]['label'] = $data[1]; |
$results[$i]['value'] = trim($data[2]); |
if ( isset( $data[6] ) && trim( $data[2] ) > trim( $data[6] ) ) { |
$results[$i]['limit'] = "+75"; |
$results[$i]['perce'] = "+75"; |
} else { |
$results[$i]['limit'] = isset($data[4]) ? trim($data[4]) : "+75"; |
$results[$i]['perce'] = isset($data[6]) ? trim($data[6]) : "+75"; |
} |
if ($results[$i]['limit'] < $results[$i]['perce']) { |
$results[$i]['limit'] = $results[$i]['perce']; |
} |
$i++; |
} |
asort($results); |
return array_values($results); |
} |
function fans() { |
$ar_buf = array(); |
$results = array(); |
$sensors_value = $this->lines; |
foreach($sensors_value as $line) { |
$data = array(); |
if (ereg("(.*):(.*)\((.*)=(.*),(.*)=(.*)\)(.*)", $line, $data)); |
elseif (ereg("(.*):(.*)\((.*)=(.*)\)(.*)", $line, $data)); |
else ereg("(.*):(.*)", $line, $data); |
if (count($data) > 1) { |
$temp = explode(" ", trim($data[2])); |
if (count($temp) == 1) |
$temp = explode("\xb0", trim($data[2])); |
if(isset($temp[1])) { |
switch ($temp[1]) { |
case "RPM": |
array_push($ar_buf, $line); |
break; |
} |
} |
} |
} |
$i = 0; |
foreach($ar_buf as $line) { |
unset($data); |
if (ereg("(.*):(.*) RPM \((.*)=(.*) RPM,(.*)=(.*)\)(.*)\)", $line, $data)); |
elseif (ereg("(.*):(.*) RPM \((.*)=(.*) RPM,(.*)=(.*)\)(.*)", $line, $data)); |
elseif (ereg("(.*):(.*) RPM \((.*)=(.*) RPM\)(.*)", $line, $data)); |
else ereg("(.*):(.*) RPM", $line, $data); |
$results[$i]['label'] = trim($data[1]); |
$results[$i]['value'] = trim($data[2]); |
$results[$i]['min'] = isset($data[4]) ? trim($data[4]) : 0; |
$i++; |
} |
asort($results); |
return array_values($results); |
} |
function voltage() { |
$ar_buf = array(); |
$results = array(); |
$sensors_value = $this->lines; |
foreach($sensors_value as $line) { |
$data = array(); |
if (ereg("(.*):(.*)\((.*)=(.*),(.*)=(.*)\)(.*)", $line, $data)); |
else ereg("(.*):(.*)", $line, $data); |
if (count($data) > 1) { |
$temp = explode(" ", trim($data[2])); |
if (count($temp) == 1) |
$temp = explode("\xb0", trim($data[2])); |
if (isset($temp[1])) { |
switch ($temp[1]) { |
case "V": |
array_push($ar_buf, $line); |
break; |
} |
} |
} |
} |
$i = 0; |
foreach($ar_buf as $line) { |
unset($data); |
if (ereg("(.*):(.*) V \((.*)=(.*) V,(.*)=(.*) V\)(.*)\)", $line, $data)); |
elseif (ereg("(.*):(.*) V \((.*)=(.*) V,(.*)=(.*) V\)(.*)", $line, $data)); |
else ereg("(.*):(.*) V$", $line, $data); |
if(isset($data[1])) { |
$results[$i]['label'] = trim($data[1]); |
$results[$i]['value'] = trim($data[2]); |
$results[$i]['min'] = isset($data[4]) ? trim($data[4]) : 0; |
$results[$i]['max'] = isset($data[6]) ? trim($data[6]) : 0; |
$i++; |
} |
} |
return $results; |
} |
} |
?> |
/web/acc/phpsysinfo/includes/mb/class.hddtemp.inc.php |
---|
0,0 → 1,114 |
<?php |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// $Id: class.hddtemp.inc.php,v 1.7 2007/01/21 13:17:20 bigmichi1 Exp $ |
class hddtemp { |
function temperature($hddtemp_avail) { |
$ar_buf = array(); |
$results = array(); |
switch ($hddtemp_avail) { |
case "tcp": |
// Timo van Roermund: connect to the hddtemp daemon, use a 5 second timeout. |
$fp = fsockopen('localhost', 7634, $errno, $errstr, 5); |
// if connected, read the output of the hddtemp daemon |
if ($fp) { |
// read output of the daemon |
$lines = ''; |
while (!feof($fp)) { |
$lines .= fread($fp, 1024); |
} |
// close the connection |
fclose($fp); |
} else { |
die("HDDTemp error: " . $errno . ", " . $errstr); |
} |
$lines = str_replace("||", "|\n|", $lines); |
$ar_buf = explode("\n", $lines); |
break; |
case "suid": |
$strDrives = ""; |
$strContent = rfts( "/proc/diskstats", 0, 4096, false ); |
if( $strContent != "ERROR" ) { |
$arrContent = explode( "\n", $strContent ); |
foreach( $arrContent as $strLine ) { |
preg_match( "/^\s(.*)\s([a-z]*)\s(.*)/", $strLine, $arrSplit ); |
if( !empty( $arrSplit[2] ) ) { |
$strDrive = '/dev/' . $arrSplit[2]; |
if( file_exists( $strDrive ) ) { |
$strDrives = $strDrives . $strDrive . ' '; |
} |
} |
} |
} else { |
$strContent = rfts( "/proc/partitions", 0, 4096, false ); |
if( $strContent != "ERROR" ) { |
$arrContent = explode( "\n", $strContent ); |
foreach( $arrContent as $strLine ) { |
if( !preg_match( "/^\s(.*)\s([\/a-z0-9]*(\/disc))\s(.*)/", $strLine, $arrSplit ) ) { |
preg_match( "/^\s(.*)\s([a-z]*)\s(.*)/", $strLine, $arrSplit ); |
} |
if( !empty( $arrSplit[2] ) ) { |
$strDrive = '/dev/' . $arrSplit[2]; |
if( file_exists( $strDrive ) ) { |
$strDrives = $strDrives . $strDrive . ' '; |
} |
} |
} |
} |
} |
if( trim( $strDrives ) == "" ) { |
return array(); |
} |
$hddtemp_value = execute_program("hddtemp", $strDrives); |
$hddtemp_value = explode("\n", $hddtemp_value); |
foreach($hddtemp_value as $line) { |
$temp = preg_split("/:\s/", $line, 3); |
if(count($temp) == 3 && preg_match("/^[0-9]/", $temp[2])) { |
list($temp[2], $temp[3]) = (preg_split("/\s/", $temp[2])); |
array_push( $ar_buf, "|" . implode("|", $temp) . "|"); |
} |
} |
break; |
default: |
die("Bad hddtemp configuration in config.php"); |
} |
// Timo van Roermund: parse the info from the hddtemp daemon. |
$i = 0; |
foreach($ar_buf as $line) { |
$data = array(); |
if (ereg("\|(.*)\|(.*)\|(.*)\|(.*)\|", $line, $data)) { |
if( trim($data[3]) != "ERR" ) { |
// get the info we need |
$results[$i]['label'] = $data[1]; |
$results[$i]['value'] = $data[3]; |
$results[$i]['model'] = $data[2]; |
$i++; |
} |
} |
} |
return $results; |
} |
} |
?> |
/web/acc/phpsysinfo/includes/mb/class.mbmon.inc.php |
---|
0,0 → 1,99 |
<?php |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// This class was created by Z. Frombach ( zoltan at frombach dot com ) |
// $Id: class.mbmon.inc.php,v 1.5 2007/02/18 19:11:31 bigmichi1 Exp $ |
class mbinfo { |
var $lines; |
function temperature() { |
$results = array(); |
if (!isset($this->lines) ) { |
$this->lines = explode("\n", execute_program('mbmon', '-c 1 -r')); |
} |
$i = 0; |
foreach($this->lines as $line) { |
if (preg_match('/^(TEMP\d*)\s*:\s*(.*)$/D', $line, $data)) { |
if ($data[2]<>'0') { |
$results[$i]['label'] = $data[1]; |
$results[$i]['limit'] = '70.0'; |
if($data[2] > 250) { |
$results[$i]['value'] = 0; |
$results[$i]['percent'] = 0; |
} else { |
$results[$i]['value'] = $data[2]; |
$results[$i]['percent'] = $results[$i]['value'] * 100 / $results[$i]['limit']; |
} |
$i++; |
} |
} |
} |
return $results; |
} |
function fans() { |
$results = array(); |
if (!isset($this->lines) ) { |
$this->lines = explode("\n", execute_program('mbmon', '-c 1 -r')); |
} |
$i = 0; |
foreach($this->lines as $line) { |
if (preg_match('/^(FAN\d*)\s*:\s*(.*)$/D', $line, $data)) { |
if ($data[2]<>'0') { |
$results[$i]['label'] = $data[1]; |
$results[$i]['value'] = $data[2]; |
$results[$i]['min'] = '3000'; |
$i++; |
} |
} |
} |
return $results; |
} |
function voltage() { |
$results = array(); |
if (!isset($this->lines) ) { |
$this->lines = explode("\n", execute_program('mbmon', '-c 1 -r')); |
} |
$i = 0; |
foreach($this->lines as $line) { |
if (preg_match('/^(V.*)\s*:\s*(.*)$/D', $line, $data)) { |
if ($data[2]<>'+0.00') { |
$results[$i]['label'] = $data[1]; |
$results[$i]['value'] = $data[2]; |
$results[$i]['min'] = '0.00'; |
$results[$i]['max'] = '0.00'; |
$i++; |
} |
} |
} |
return $results; |
} |
} |
?> |
/web/acc/phpsysinfo/includes/mb/index.html |
---|
--- phpsysinfo/includes/mb/class.healthd.inc.php (nonexistent) |
+++ phpsysinfo/includes/mb/class.healthd.inc.php (revision 325) |
@@ -0,0 +1,116 @@ |
+<?php |
+ |
+// phpSysInfo - A PHP System Information Script |
+// http://phpsysinfo.sourceforge.net/ |
+ |
+// This program is free software; you can redistribute it and/or |
+// modify it under the terms of the GNU General Public License |
+// as published by the Free Software Foundation; either version 2 |
+// of the License, or (at your option) any later version. |
+ |
+// This program is distributed in the hope that it will be useful, |
+// but WITHOUT ANY WARRANTY; without even the implied warranty of |
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+// GNU General Public License for more details. |
+ |
+// You should have received a copy of the GNU General Public License |
+// along with this program; if not, write to the Free Software |
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
+ |
+// $Id: class.healthd.inc.php,v 1.6 2007/02/18 19:11:31 bigmichi1 Exp $ |
+ |
+class mbinfo { |
+ var $lines; |
+ |
+ function temperature() { |
+ $ar_buf = array(); |
+ $results = array(); |
+ |
+ if (!isset($this->lines)) { |
+ $this->lines = execute_program('healthdc', '-t'); |
+ } |
+ |
+ $ar_buf = preg_split("/\t+/", $this->lines); |
+ |
+ $results[0]['label'] = 'temp1'; |
+ $results[0]['value'] = $ar_buf[1]; |
+ $results[0]['limit'] = '70.0'; |
+ $results[0]['percent'] = $results[0]['value'] * 100 / $results[0]['limit']; |
+ $results[1]['label'] = 'temp2'; |
+ $results[1]['value'] = $ar_buf[2]; |
+ $results[1]['limit'] = '70.0'; |
+ $results[1]['percent'] = $results[1]['value'] * 100 / $results[1]['limit']; |
+ $results[2]['label'] = 'temp3'; |
+ $results[2]['value'] = $ar_buf[3]; |
+ $results[2]['limit'] = '70.0'; |
+ $results[2]['percent'] = $results[2]['value'] * 100 / $results[2]['limit']; |
+ return $results; |
+ } |
+ |
+ function fans() { |
+ $ar_buf = array(); |
+ $results = array(); |
+ |
+ if (!isset($this->lines)) { |
+ $this->lines = execute_program('healthdc', '-t'); |
+ } |
+ |
+ $ar_buf = preg_split("/\t+/", $this->lines); |
+ |
+ $results[0]['label'] = 'fan1'; |
+ $results[0]['value'] = $ar_buf[4]; |
+ $results[0]['min'] = '3000'; |
+ $results[1]['label'] = 'fan2'; |
+ $results[1]['value'] = $ar_buf[5]; |
+ $results[1]['min'] = '3000'; |
+ $results[2]['label'] = 'fan3'; |
+ $results[2]['value'] = $ar_buf[6]; |
+ $results[2]['min'] = '3000'; |
+ |
+ return $results; |
+ } |
+ |
+ function voltage() { |
+ $ar_buf = array(); |
+ $results = array(); |
+ |
+ if (!isset($this->lines)) { |
+ $this->lines = execute_program('healthdc', '-t'); |
+ } |
+ |
+ $ar_buf = preg_split("/\t+/", $this->lines); |
+ |
+ $results[0]['label'] = 'Vcore1'; |
+ $results[0]['value'] = $ar_buf[7]; |
+ $results[0]['min'] = '0.00'; |
+ $results[0]['max'] = '0.00'; |
+ $results[1]['label'] = 'Vcore2'; |
+ $results[1]['value'] = $ar_buf[8]; |
+ $results[1]['min'] = '0.00'; |
+ $results[1]['max'] = '0.00'; |
+ $results[2]['label'] = '3volt'; |
+ $results[2]['value'] = $ar_buf[9]; |
+ $results[2]['min'] = '0.00'; |
+ $results[2]['max'] = '0.00'; |
+ $results[3]['label'] = '+5Volt'; |
+ $results[3]['value'] = $ar_buf[10]; |
+ $results[3]['min'] = '0.00'; |
+ $results[3]['max'] = '0.00'; |
+ $results[4]['label'] = '+12Volt'; |
+ $results[4]['value'] = $ar_buf[11]; |
+ $results[4]['min'] = '0.00'; |
+ $results[4]['max'] = '0.00'; |
+ $results[5]['label'] = '-12Volt'; |
+ $results[5]['value'] = $ar_buf[12]; |
+ $results[5]['min'] = '0.00'; |
+ $results[5]['max'] = '0.00'; |
+ $results[6]['label'] = '-5Volt'; |
+ $results[6]['value'] = $ar_buf[13]; |
+ $results[6]['min'] = '0.00'; |
+ $results[6]['max'] = '0.00'; |
+ |
+ return $results; |
+ } |
+} |
+ |
+?> |
/web/acc/phpsysinfo/includes/mb/class.hwsensors.inc.php |
---|
0,0 → 1,80 |
<?php |
// phpSysInfo - A PHP System Information Script |
// http://phpsysinfo.sourceforge.net/ |
// This program is free software; you can redistribute it and/or |
// modify it under the terms of the GNU General Public License |
// as published by the Free Software Foundation; either version 2 |
// of the License, or (at your option) any later version. |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
// $Id: class.hwsensors.inc.php,v 1.4 2006/05/20 17:01:07 bigmichi1 Exp $ |
class mbinfo { |
var $lines; |
function mbinfo() { |
$this->lines = execute_program('sysctl', '-w hw.sensors'); |
$this->lines = explode("\n", $this->lines); |
} |
function temperature() { |
$ar_buf = array(); |
$results = array(); |
foreach( $this->lines as $line ) { |
$ar_buf = preg_split("/[\s,]+/", $line); |
if( isset( $ar_buf[3] ) && $ar_buf[2] == 'temp') { |
$results[$j]['label'] = $ar_buf[1]; |
$results[$j]['value'] = $ar_buf[3]; |
$results[$j]['limit'] = '70.0'; |
$results[$j]['percent'] = $results[$j]['value'] * 100 / $results[$j]['limit']; |
$j++; |
} |
} |
return $results; |
} |
function fans() { |
$ar_buf = array(); |
$results = array(); |
foreach( $this->lines as $line ) { |
$ar_buf = preg_split("/[\s,]+/", $line ); |
if( isset( $ar_buf[3] ) && $ar_buf[2] == 'fanrpm') { |
$results[$j]['label'] = $ar_buf[1]; |
$results[$j]['value'] = $ar_buf[3]; |
$j++; |
} |
} |
return $results; |
} |
function voltage() { |
$ar_buf = array(); |
$results = array(); |
foreach( $this->lines as $line ) { |
$ar_buf = preg_split("/[\s,]+/", $line ); |
if ( isset( $ar_buf[3] ) && $ar_buf[2] == 'volts_dc') { |
$results[$j]['label'] = $ar_buf[1]; |
$results[$j]['value'] = $ar_buf[3]; |
$results[$j]['min'] = '0.00'; |
$results[$j]['max'] = '0.00'; |
$j++; |
} |
} |
return $results; |
} |
} |
?> |
/web/acc/phpsysinfo/includes/XPath.class.php |
---|
0,0 → 1,6355 |
<?php |
/** |
* Php.XPath |
* |
* +======================================================================================================+ |
* | A php class for searching an XML document using XPath, and making modifications using a DOM |
* | style API. Does not require the DOM XML PHP library. |
* | |
* +======================================================================================================+ |
* | What Is XPath: |
* | -------------- |
* | - "What SQL is for a relational database, XPath is for an XML document." -- Sam Blum |
* | - "The primary purpose of XPath is to address parts of an XML document. In support of this |
* | primary purpose, it also provides basic facilities for manipulting it." -- W3C |
* | |
* | XPath in action and a very nice intro is under: |
* | http://www.zvon.org/xxl/XPathTutorial/General/examples.html |
* | Specs Can be found under: |
* | http://www.w3.org/TR/xpath W3C XPath Recommendation |
* | http://www.w3.org/TR/xpath20 W3C XPath Recommendation |
* | |
* | NOTE: Most of the XPath-spec has been realized, but not all. Usually this should not be |
* | problem as the missing part is either rarely used or it's simpler to do with PHP itself. |
* +------------------------------------------------------------------------------------------------------+ |
* | Requires PHP version 4.0.5 and up |
* +------------------------------------------------------------------------------------------------------+ |
* | Main Active Authors: |
* | -------------------- |
* | Nigel Swinson <nigelswinson@users.sourceforge.net> |
* | Started around 2001-07, saved phpxml from near death and renamed to Php.XPath |
* | Restructured XPath code to stay in line with XPath spec. |
* | Sam Blum <bs_php@infeer.com> |
* | Started around 2001-09 1st major restruct (V2.0) and testbench initiator. |
* | 2nd (V3.0) major rewrite in 2002-02 |
* | Daniel Allen <bigredlinux@yahoo.com> |
* | Started around 2001-10 working to make Php.XPath adhere to specs |
* | Main Former Author: Michael P. Mehl <mpm@phpxml.org> |
* | Inital creator of V 1.0. Stoped activities around 2001-03 |
* +------------------------------------------------------------------------------------------------------+ |
* | Code Structure: |
* | --------------_ |
* | The class is split into 3 main objects. To keep usability easy all 3 |
* | objects are in this file (but may be split in 3 file in future). |
* | +-------------+ |
* | | XPathBase | XPathBase holds general and debugging functions. |
* | +------+------+ |
* | v |
* | +-------------+ XPathEngine is the implementation of the W3C XPath spec. It contains the |
* | | XPathEngine | XML-import (parser), -export and can handle xPathQueries. It's a fully |
* | +------+------+ functional class but has no functions to modify the XML-document (see following). |
* | v |
* | +-------------+ |
* | | XPath | XPath extends the functionality with actions to modify the XML-document. |
* | +-------------+ We tryed to implement a DOM - like interface. |
* +------------------------------------------------------------------------------------------------------+ |
* | Usage: |
* | ------ |
* | Scroll to the end of this php file and you will find a short sample code to get you started |
* +------------------------------------------------------------------------------------------------------+ |
* | Glossary: |
* | --------- |
* | To understand how to use the functions and to pass the right parameters, read following: |
* | |
* | Document: (full node tree, XML-tree) |
* | After a XML-source has been imported and parsed, it's stored as a tree of nodes sometimes |
* | refered to as 'document'. |
* | |
* | AbsoluteXPath: (xPath, xPathSet) |
* | A absolute XPath is a string. It 'points' to *one* node in the XML-document. We use the |
* | term 'absolute' to emphasise that it is not an xPath-query (see xPathQuery). A valid xPath |
* | has the form like '/AAA[1]/BBB[2]/CCC[1]'. Usually functions that require a node (see Node) |
* | will also accept an abs. XPath. |
* | |
* | Node: (node, nodeSet, node-tree) |
* | Some funtions require or return a node (or a whole node-tree). Nodes are only used with the |
* | XPath-interface and have an internal structure. Every node in a XML document has a unique |
* | corresponding abs. xPath. That's why public functions that accept a node, will usually also |
* | accept a abs. xPath (a string) 'pointing' to an existing node (see absolutXPath). |
* | |
* | XPathQuery: (xquery, query) |
* | A xPath-query is a string that is matched against the XML-document. The result of the match |
* | is a xPathSet (vector of xPath's). It's always possible to pass a single absoluteXPath |
* | instead of a xPath-query. A valid xPathQuery could look like this: |
* | '//XXX/*[contains(., "foo")]/..' (See the link in 'What Is XPath' to learn more). |
* | |
* | |
* +------------------------------------------------------------------------------------------------------+ |
* | Internals: |
* | ---------- |
* | - The Node Tree |
* | ------------- |
* | A central role of the package is how the XML-data is stored. The whole data is in a node-tree. |
* | A node can be seen as the equvalent to a tag in the XML soure with some extra info. |
* | For instance the following XML |
* | <AAA foo="x">***<BBB/><CCC/>**<BBB/>*</AAA> |
* | Would produce folowing node-tree: |
* | 'super-root' <-- $nodeRoot (Very handy) |
* | | |
* | 'depth' 0 AAA[1] <-- top node. The 'textParts' of this node would be |
* | / | \ 'textParts' => array('***','','**','*') |
* | 'depth' 1 BBB[1] CCC[1] BBB[2] (NOTE: Is always size of child nodes+1) |
* | - The Node |
* | -------- |
* | The node itself is an structure desiged mainly to be used in connection with the interface of PHP.XPath. |
* | That means it's possible for functions to return a sub-node-tree that can be used as input of an other |
* | PHP.XPath function. |
* | |
* | The main structure of a node is: |
* | $node = array( |
* | 'name' => '', # The tag name. E.g. In <FOO bar="aaa"/> it would be 'FOO' |
* | 'attributes' => array(), # The attributes of the tag E.g. In <FOO bar="aaa"/> it would be array('bar'=>'aaa') |
* | 'textParts' => array(), # Array of text parts surrounding the children E.g. <FOO>aa<A>bb<B/>cc</A>dd</FOO> -> array('aa','bb','cc','dd') |
* | 'childNodes' => array(), # Array of refences (pointers) to child nodes. |
* | |
* | For optimisation reasions some additional data is stored in the node too: |
* | 'parentNode' => NULL # Reference (pointer) to the parent node (or NULL if it's 'super root') |
* | 'depth' => 0, # The tag depth (or tree level) starting with the root tag at 0. |
* | 'pos' => 0, # Is the zero-based position this node has in the parent's 'childNodes'-list. |
* | 'contextPos' => 1, # Is the one-based position this node has by counting the siblings tags (tags with same name) |
* | 'xpath' => '' # Is the abs. XPath to this node. |
* | 'generated_id'=> '' # The id returned for this node by generate-id() (attribute and text nodes not supported) |
* | |
* | - The NodeIndex |
* | ------------- |
* | Every node in the tree has an absolute XPath. E.g '/AAA[1]/BBB[2]' the $nodeIndex is a hash array |
* | to all the nodes in the node-tree. The key used is the absolute XPath (a string). |
* | |
* +------------------------------------------------------------------------------------------------------+ |
* | License: |
* | -------- |
* | The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License"); |
* | you may not use this file except in compliance with the License. You may obtain a copy of the |
* | License at http://www.mozilla.org/MPL/ |
* | |
* | Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY |
* | OF ANY KIND, either express or implied. See the License for the specific language governing |
* | rights and limitations under the License. |
* | |
* | The Original Code is <phpXML/>. |
* | |
* | The Initial Developer of the Original Code is Michael P. Mehl. Portions created by Michael |
* | P. Mehl are Copyright (C) 2001 Michael P. Mehl. All Rights Reserved. |
* | |
* | Contributor(s): N.Swinson / S.Blum / D.Allen |
* | |
* | Alternatively, the contents of this file may be used under the terms of either of the GNU |
* | General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public |
* | License Version 2.1 or later (the "LGPL"), in which case the provisions of the GPL or the |
* | LGPL License are applicable instead of those above. If you wish to allow use of your version |
* | of this file only under the terms of the GPL or the LGPL License and not to allow others to |
* | use your version of this file under the MPL, indicate your decision by deleting the |
* | provisions above and replace them with the notice and other provisions required by the |
* | GPL or the LGPL License. If you do not delete the provisions above, a recipient may use |
* | your version of this file under either the MPL, the GPL or the LGPL License. |
* | |
* +======================================================================================================+ |
* |
* @author S.Blum / N.Swinson / D.Allen / (P.Mehl) |
* @link http://sourceforge.net/projects/phpxpath/ |
* @version 3.5 |
* @CVS $Id: XPath.class.php,v 1.9 2005/11/16 17:26:05 bigmichi1 Exp $ |
*/ |
// Include guard, protects file being included twice |
$ConstantName = 'INCLUDED_'.strtoupper(__FILE__); |
if (defined($ConstantName)) return; |
define($ConstantName,1, TRUE); |
/************************************************************************************************ |
* =============================================================================================== |
* X P a t h B a s e - Class |
* =============================================================================================== |
************************************************************************************************/ |
class XPathBase { |
var $_lastError; |
// As debugging of the xml parse is spread across several functions, we need to make this a member. |
var $bDebugXmlParse = FALSE; |
// do we want to do profiling? |
var $bClassProfiling = FALSE; |
// Used to help navigate through the begin/end debug calls |
var $iDebugNextLinkNumber = 1; |
var $aDebugOpenLinks = array(); |
var $aDebugFunctions = array( |
//'_evaluatePrimaryExpr', |
//'_evaluateExpr', |
//'_evaluateStep', |
//'_checkPredicates', |
//'_evaluateFunction', |
//'_evaluateOperator', |
//'_evaluatePathExpr', |
); |
/** |
* Constructor |
*/ |
function XPathBase() { |
# $this->bDebugXmlParse = TRUE; |
$this->properties['verboseLevel'] = 1; // 0=silent, 1 and above produce verbose output (an echo to screen). |
if (!isSet($_ENV)) { // Note: $_ENV introduced in 4.1.0. In earlier versions, use $HTTP_ENV_VARS. |
$_ENV = $GLOBALS['HTTP_ENV_VARS']; |
} |
// Windows 95/98 do not support file locking. Detecting OS (Operation System) and setting the |
// properties['OS_supports_flock'] to FALSE if win 95/98 is detected. |
// This will surpress the file locking error reported from win 98 users when exportToFile() is called. |
// May have to add more OS's to the list in future (Macs?). |
// ### Note that it's only the FAT and NFS file systems that are really a problem. NTFS and |
// the latest php libs do support flock() |
$_ENV['OS'] = isSet($_ENV['OS']) ? $_ENV['OS'] : 'Unknown OS'; |
switch ($_ENV['OS']) { |
case 'Windows_95': |
case 'Windows_98': |
case 'Unknown OS': |
// should catch Mac OS X compatible environment |
if (!empty($_SERVER['SERVER_SOFTWARE']) |
&& preg_match('/Darwin/',$_SERVER['SERVER_SOFTWARE'])) { |
// fall-through |
} else { |
$this->properties['OS_supports_flock'] = FALSE; |
break; |
} |
default: |
$this->properties['OS_supports_flock'] = TRUE; |
} |
} |
/** |
* Resets the object so it's able to take a new xml sting/file |
* |
* Constructing objects is slow. If you can, reuse ones that you have used already |
* by using this reset() function. |
*/ |
function reset() { |
$this->_lastError = ''; |
} |
//----------------------------------------------------------------------------------------- |
// XPathBase ------ Helpers ------ |
//----------------------------------------------------------------------------------------- |
/** |
* This method checks the right amount and match of brackets |
* |
* @param $term (string) String in which is checked. |
* @return (bool) TRUE: OK / FALSE: KO |
*/ |
function _bracketsCheck($term) { |
$leng = strlen($term); |
$brackets = 0; |
$bracketMisscount = $bracketMissmatsh = FALSE; |
$stack = array(); |
for ($i=0; $i<$leng; $i++) { |
switch ($term[$i]) { |
case '(' : |
case '[' : |
$stack[$brackets] = $term[$i]; |
$brackets++; |
break; |
case ')': |
$brackets--; |
if ($brackets<0) { |
$bracketMisscount = TRUE; |
break 2; |
} |
if ($stack[$brackets] != '(') { |
$bracketMissmatsh = TRUE; |
break 2; |
} |
break; |
case ']' : |
$brackets--; |
if ($brackets<0) { |
$bracketMisscount = TRUE; |
break 2; |
} |
if ($stack[$brackets] != '[') { |
$bracketMissmatsh = TRUE; |
break 2; |
} |
break; |
} |
} |
// Check whether we had a valid number of brackets. |
if ($brackets != 0) $bracketMisscount = TRUE; |
if ($bracketMisscount || $bracketMissmatsh) { |
return FALSE; |
} |
return TRUE; |
} |
/** |
* Looks for a string within another string -- BUT the search-string must be located *outside* of any brackets. |
* |
* This method looks for a string within another string. Brackets in the |
* string the method is looking through will be respected, which means that |
* only if the string the method is looking for is located outside of |
* brackets, the search will be successful. |
* |
* @param $term (string) String in which the search shall take place. |
* @param $expression (string) String that should be searched. |
* @return (int) This method returns -1 if no string was found, |
* otherwise the offset at which the string was found. |
*/ |
function _searchString($term, $expression) { |
$bracketCounter = 0; // Record where we are in the brackets. |
$leng = strlen($term); |
$exprLeng = strlen($expression); |
for ($i=0; $i<$leng; $i++) { |
$char = $term[$i]; |
if ($char=='(' || $char=='[') { |
$bracketCounter++; |
continue; |
} |
elseif ($char==')' || $char==']') { |
$bracketCounter--; |
} |
if ($bracketCounter == 0) { |
// Check whether we can find the expression at this index. |
if (substr($term, $i, $exprLeng) == $expression) return $i; |
} |
} |
// Nothing was found. |
return (-1); |
} |
/** |
* Split a string by a searator-string -- BUT the separator-string must be located *outside* of any brackets. |
* |
* Returns an array of strings, each of which is a substring of string formed |
* by splitting it on boundaries formed by the string separator. |
* |
* @param $separator (string) String that should be searched. |
* @param $term (string) String in which the search shall take place. |
* @return (array) see above |
*/ |
function _bracketExplode($separator, $term) { |
// Note that it doesn't make sense for $separator to itself contain (,),[ or ], |
// but as this is a private function we should be ok. |
$resultArr = array(); |
$bracketCounter = 0; // Record where we are in the brackets. |
do { // BEGIN try block |
// Check if any separator is in the term |
$sepLeng = strlen($separator); |
if (strpos($term, $separator)===FALSE) { // no separator found so end now |
$resultArr[] = $term; |
break; // try-block |
} |
// Make a substitute separator out of 'unused chars'. |
$substituteSep = str_repeat(chr(2), $sepLeng); |
// Now determine the first bracket '(' or '['. |
$tmp1 = strpos($term, '('); |
$tmp2 = strpos($term, '['); |
if ($tmp1===FALSE) { |
$startAt = (int)$tmp2; |
} elseif ($tmp2===FALSE) { |
$startAt = (int)$tmp1; |
} else { |
$startAt = min($tmp1, $tmp2); |
} |
// Get prefix string part before the first bracket. |
$preStr = substr($term, 0, $startAt); |
// Substitute separator in prefix string. |
$preStr = str_replace($separator, $substituteSep, $preStr); |
// Now get the rest-string (postfix string) |
$postStr = substr($term, $startAt); |
// Go all the way through the rest-string. |
$strLeng = strlen($postStr); |
for ($i=0; $i < $strLeng; $i++) { |
$char = $postStr[$i]; |
// Spot (,),[,] and modify our bracket counter. Note there is an |
// assumption here that you don't have a string(with[mis)matched]brackets. |
// This should be ok as the dodgy string will be detected elsewhere. |
if ($char=='(' || $char=='[') { |
$bracketCounter++; |
continue; |
} |
elseif ($char==')' || $char==']') { |
$bracketCounter--; |
} |
// If no brackets surround us check for separator |
if ($bracketCounter == 0) { |
// Check whether we can find the expression starting at this index. |
if ((substr($postStr, $i, $sepLeng) == $separator)) { |
// Substitute the found separator |
for ($j=0; $j<$sepLeng; $j++) { |
$postStr[$i+$j] = $substituteSep[$j]; |
} |
} |
} |
} |
// Now explod using the substitute separator as key. |
$resultArr = explode($substituteSep, $preStr . $postStr); |
} while (FALSE); // End try block |
// Return the results that we found. May be a array with 1 entry. |
return $resultArr; |
} |
/** |
* Split a string at it's groups, ie bracketed expressions |
* |
* Returns an array of strings, when concatenated together would produce the original |
* string. ie a(b)cde(f)(g) would map to: |
* array ('a', '(b)', cde', '(f)', '(g)') |
* |
* @param $string (string) The string to process |
* @param $open (string) The substring for the open of a group |
* @param $close (string) The substring for the close of a group |
* @return (array) The parsed string, see above |
*/ |
function _getEndGroups($string, $open='[', $close=']') { |
// Note that it doesn't make sense for $separator to itself contain (,),[ or ], |
// but as this is a private function we should be ok. |
$resultArr = array(); |
do { // BEGIN try block |
// Check if we have both an open and a close tag |
if (empty($open) and empty($close)) { // no separator found so end now |
$resultArr[] = $string; |
break; // try-block |
} |
if (empty($string)) { |
$resultArr[] = $string; |
break; // try-block |
} |
while (!empty($string)) { |
// Now determine the first bracket '(' or '['. |
$openPos = strpos($string, $open); |
$closePos = strpos($string, $close); |
if ($openPos===FALSE || $closePos===FALSE) { |
// Oh, no more groups to be found then. Quit |
$resultArr[] = $string; |
break; |
} |
// Sanity check |
if ($openPos > $closePos) { |
// Malformed string, dump the rest and quit. |
$resultArr[] = $string; |
break; |
} |
// Get prefix string part before the first bracket. |
$preStr = substr($string, 0, $openPos); |
// This is the first string that will go in our output |
if (!empty($preStr)) |
$resultArr[] = $preStr; |
// Skip over what we've proceed, including the open char |
$string = substr($string, $openPos + 1 - strlen($string)); |
// Find the next open char and adjust our close char |
//echo "close: $closePos\nopen: $openPos\n\n"; |
$closePos -= $openPos + 1; |
$openPos = strpos($string, $open); |
//echo "close: $closePos\nopen: $openPos\n\n"; |
// While we have found nesting... |
while ($openPos && $closePos && ($closePos > $openPos)) { |
// Find another close pos after the one we are looking at |
$closePos = strpos($string, $close, $closePos + 1); |
// And skip our open |
$openPos = strpos($string, $open, $openPos + 1); |
} |
//echo "close: $closePos\nopen: $openPos\n\n"; |
// If we now have a close pos, then it's the end of the group. |
if ($closePos === FALSE) { |
// We didn't... so bail dumping what was left |
$resultArr[] = $open.$string; |
break; |
} |
// We did, so we can extract the group |
$resultArr[] = $open.substr($string, 0, $closePos + 1); |
// Skip what we have processed |
$string = substr($string, $closePos + 1); |
} |
} while (FALSE); // End try block |
// Return the results that we found. May be a array with 1 entry. |
return $resultArr; |
} |
/** |
* Retrieves a substring before a delimiter. |
* |
* This method retrieves everything from a string before a given delimiter, |
* not including the delimiter. |
* |
* @param $string (string) String, from which the substring should be extracted. |
* @param $delimiter (string) String containing the delimiter to use. |
* @return (string) Substring from the original string before the delimiter. |
* @see _afterstr() |
*/ |
function _prestr(&$string, $delimiter, $offset=0) { |
// Return the substring. |
$offset = ($offset<0) ? 0 : $offset; |
$pos = strpos($string, $delimiter, $offset); |
if ($pos===FALSE) return $string; else return substr($string, 0, $pos); |
} |
/** |
* Retrieves a substring after a delimiter. |
* |
* This method retrieves everything from a string after a given delimiter, |
* not including the delimiter. |
* |
* @param $string (string) String, from which the substring should be extracted. |
* @param $delimiter (string) String containing the delimiter to use. |
* @return (string) Substring from the original string after the delimiter. |
* @see _prestr() |
*/ |
function _afterstr($string, $delimiter, $offset=0) { |
$offset = ($offset<0) ? 0 : $offset; |
// Return the substring. |
return substr($string, strpos($string, $delimiter, $offset) + strlen($delimiter)); |
} |
//----------------------------------------------------------------------------------------- |
// XPathBase ------ Debug Stuff ------ |
//----------------------------------------------------------------------------------------- |
/** |
* Alter the verbose (error) level reporting. |
* |
* Pass an int. >0 to turn on, 0 to turn off. The higher the number, the |
* higher the level of verbosity. By default, the class has a verbose level |
* of 1. |
* |
* @param $levelOfVerbosity (int) default is 1 = on |
*/ |
function setVerbose($levelOfVerbosity = 1) { |
$level = -1; |
if ($levelOfVerbosity === TRUE) { |
$level = 1; |
} elseif ($levelOfVerbosity === FALSE) { |
$level = 0; |
} elseif (is_numeric($levelOfVerbosity)) { |
$level = $levelOfVerbosity; |
} |
if ($level >= 0) $this->properties['verboseLevel'] = $levelOfVerbosity; |
} |
/** |
* Returns the last occured error message. |
* |
* @access public |
* @return string (may be empty if there was no error at all) |
* @see _setLastError(), _lastError |
*/ |
function getLastError() { |
return $this->_lastError; |
} |
/** |
* Creates a textual error message and sets it. |
* |
* example: 'XPath error in THIS_FILE_NAME:LINE. Message: YOUR_MESSAGE'; |
* |
* I don't think the message should include any markup because not everyone wants to debug |
* into the browser window. |
* |
* You should call _displayError() rather than _setLastError() if you would like the message, |
* dependant on their verbose settings, echoed to the screen. |
* |
* @param $message (string) a textual error message default is '' |
* @param $line (int) the line number where the error occured, use __LINE__ |
* @see getLastError() |
*/ |
function _setLastError($message='', $line='-', $file='-') { |
$this->_lastError = 'XPath error in ' . basename($file) . ':' . $line . '. Message: ' . $message; |
} |
/** |
* Displays an error message. |
* |
* This method displays an error messages depending on the users verbose settings |
* and sets the last error message. |
* |
* If also possibly stops the execution of the script. |
* ### Terminate should not be allowed --fab. Should it?? N.S. |
* |
* @param $message (string) Error message to be displayed. |
* @param $lineNumber (int) line number given by __LINE__ |
* @param $terminate (bool) (default TURE) End the execution of this script. |
*/ |
function _displayError($message, $lineNumber='-', $file='-', $terminate=TRUE) { |
// Display the error message. |
$err = '<b>XPath error in '.basename($file).':'.$lineNumber.'</b> '.$message."<br \>\n"; |
$this->_setLastError($message, $lineNumber, $file); |
if (($this->properties['verboseLevel'] > 0) OR ($terminate)) echo $err; |
// End the execution of this script. |
if ($terminate) exit; |
} |
/** |
* Displays a diagnostic message |
* |
* This method displays an error messages |
* |
* @param $message (string) Error message to be displayed. |
* @param $lineNumber (int) line number given by __LINE__ |
*/ |
function _displayMessage($message, $lineNumber='-', $file='-') { |
// Display the error message. |
$err = '<b>XPath message from '.basename($file).':'.$lineNumber.'</b> '.$message."<br \>\n"; |
if ($this->properties['verboseLevel'] > 0) echo $err; |
} |
/** |
* Called to begin the debug run of a function. |
* |
* This method starts a <DIV><PRE> tag so that the entry to this function |
* is clear to the debugging user. Call _closeDebugFunction() at the |
* end of the function to create a clean box round the function call. |
* |
* @author Nigel Swinson <nigelswinson@users.sourceforge.net> |
* @author Sam Blum <bs_php@infeer.com> |
* @param $functionName (string) the name of the function we are beginning to debug |
* @param $bDebugFlag (bool) TRUE if we are to draw a call stack, FALSE otherwise |
* @return (array) the output from the microtime() function. |
* @see _closeDebugFunction() |
*/ |
function _beginDebugFunction($functionName, $bDebugFlag) { |
if ($bDebugFlag) { |
$fileName = basename(__FILE__); |
static $color = array('green','blue','red','lime','fuchsia', 'aqua'); |
static $colIndex = -1; |
$colIndex++; |
echo '<div style="clear:both" align="left"> '; |
echo '<pre STYLE="border:solid thin '. $color[$colIndex % 6] . '; padding:5">'; |
echo '<a style="float:right;margin:5px" name="'.$this->iDebugNextLinkNumber.'Open" href="#'.$this->iDebugNextLinkNumber.'Close">Function Close '.$this->iDebugNextLinkNumber.'</a>'; |
echo "<STRONG>{$fileName} : {$functionName}</STRONG>"; |
echo '<hr style="clear:both">'; |
array_push($this->aDebugOpenLinks, $this->iDebugNextLinkNumber); |
$this->iDebugNextLinkNumber++; |
} |
if ($this->bClassProfiling) |
$this->_ProfBegin($FunctionName); |
return TRUE; |
} |
/** |
* Called to end the debug run of a function. |
* |
* This method ends a <DIV><PRE> block and reports the time since $aStartTime |
* is clear to the debugging user. |
* |
* @author Nigel Swinson <nigelswinson@users.sourceforge.net> |
* @param $functionName (string) the name of the function we are beginning to debug |
* @param $return_value (mixed) the return value from the function call that |
* we are debugging |
* @param $bDebugFlag (bool) TRUE if we are to draw a call stack, FALSE otherwise |
*/ |
function _closeDebugFunction($functionName, $returnValue = "", $bDebugFlag) { |
if ($bDebugFlag) { |
echo "<hr>"; |
$iOpenLinkNumber = array_pop($this->aDebugOpenLinks); |
echo '<a style="float:right" name="'.$iOpenLinkNumber.'Close" href="#'.$iOpenLinkNumber.'Open">Function Open '.$iOpenLinkNumber.'</a>'; |
if (isSet($returnValue)) { |
if (is_array($returnValue)) |
echo "Return Value: ".print_r($returnValue)."\n"; |
else if (is_numeric($returnValue)) |
echo "Return Value: ".(string)$returnValue."\n"; |
else if (is_bool($returnValue)) |
echo "Return Value: ".($returnValue ? "TRUE" : "FALSE")."\n"; |
else |
echo "Return Value: \"".htmlspecialchars($returnValue)."\"\n"; |
} |
echo '<br style="clear:both">'; |
echo " \n</pre></div>"; |
} |
if ($this->bClassProfiling) |
$this->_ProfEnd($FunctionName); |
return TRUE; |
} |
/** |
* Profile begin call |
*/ |
function _ProfBegin($sonFuncName) { |
static $entryTmpl = array ( 'start' => array(), |
'recursiveCount' => 0, |
'totTime' => 0, |
'callCount' => 0 ); |
$now = explode(' ', microtime()); |
if (empty($this->callStack)) { |
$fatherFuncName = ''; |
} |
else { |
$fatherFuncName = $this->callStack[sizeOf($this->callStack)-1]; |
$fatherEntry = &$this->profile[$fatherFuncName]; |
} |
$this->callStack[] = $sonFuncName; |
if (!isSet($this->profile[$sonFuncName])) { |
$this->profile[$sonFuncName] = $entryTmpl; |
} |
$sonEntry = &$this->profile[$sonFuncName]; |
$sonEntry['callCount']++; |
// if we call the t's the same function let the time run, otherwise sum up |
if ($fatherFuncName == $sonFuncName) { |
$sonEntry['recursiveCount']++; |
} |
if (!empty($fatherFuncName)) { |
$last = $fatherEntry['start']; |
$fatherEntry['totTime'] += round( (($now[1] - $last[1]) + ($now[0] - $last[0]))*10000 ); |
$fatherEntry['start'] = 0; |
} |
$sonEntry['start'] = explode(' ', microtime()); |
} |
/** |
* Profile end call |
*/ |
function _ProfEnd($sonFuncName) { |
$now = explode(' ', microtime()); |
array_pop($this->callStack); |
if (empty($this->callStack)) { |
$fatherFuncName = ''; |
} |
else { |
$fatherFuncName = $this->callStack[sizeOf($this->callStack)-1]; |
$fatherEntry = &$this->profile[$fatherFuncName]; |
} |
$sonEntry = &$this->profile[$sonFuncName]; |
if (empty($sonEntry)) { |
echo "ERROR in profEnd(): '$funcNam' not in list. Seams it was never started ;o)"; |
} |
$last = $sonEntry['start']; |
$sonEntry['totTime'] += round( (($now[1] - $last[1]) + ($now[0] - $last[0]))*10000 ); |
$sonEntry['start'] = 0; |
if (!empty($fatherEntry)) $fatherEntry['start'] = explode(' ', microtime()); |
} |
/** |
* Show profile gathered so far as HTML table |
*/ |
function _ProfileToHtml() { |
$sortArr = array(); |
if (empty($this->profile)) return ''; |
reset($this->profile); |
while (list($funcName) = each($this->profile)) { |
$sortArrKey[] = $this->profile[$funcName]['totTime']; |
$sortArrVal[] = $funcName; |
} |
//echo '<pre>';var_dump($sortArrVal);echo '</pre>'; |
array_multisort ($sortArrKey, SORT_DESC, $sortArrVal ); |
//echo '<pre>';var_dump($sortArrVal);echo '</pre>'; |
$totTime = 0; |
$size = sizeOf($sortArrVal); |
for ($i=0; $i<$size; $i++) { |
$funcName = &$sortArrVal[$i]; |
$totTime += $this->profile[$funcName]['totTime']; |
} |
$out = '<table border="1">'; |
$out .='<tr align="center" bgcolor="#bcd6f1"><th>Function</th><th> % </th><th>Total [ms]</th><th># Call</th><th>[ms] per Call</th><th># Recursive</th></tr>'; |
for ($i=0; $i<$size; $i++) { |
$funcName = &$sortArrVal[$i]; |
$row = &$this->profile[$funcName]; |
$procent = round($row['totTime']*100/$totTime); |
if ($procent>20) $bgc = '#ff8080'; |
elseif ($procent>15) $bgc = '#ff9999'; |
elseif ($procent>10) $bgc = '#ffcccc'; |
elseif ($procent>5) $bgc = '#ffffcc'; |
else $bgc = '#66ff99'; |
$out .="<tr align='center' bgcolor='{$bgc}'>"; |
$out .='<td>'. $funcName .'</td><td>'. $procent .'% '.'</td><td>'. $row['totTime']/10 .'</td><td>'. $row['callCount'] .'</td><td>'. round($row['totTime']/10/$row['callCount'],2) .'</td><td>'. $row['recursiveCount'].'</td>'; |
$out .='</tr>'; |
} |
$out .= '</table> Total Time [' . $totTime/10 .'ms]' ; |
echo $out; |
return TRUE; |
} |
/** |
* Echo an XPath context for diagnostic purposes |
* |
* @param $context (array) An XPath context |
*/ |
function _printContext($context) { |
echo "{$context['nodePath']}({$context['pos']}/{$context['size']})"; |
} |
/** |
* This is a debug helper function. It dumps the node-tree as HTML |
* |
* *QUICK AND DIRTY*. Needs some polishing. |
* |
* @param $node (array) A node |
* @param $indent (string) (optional, default=''). For internal recursive calls. |
*/ |
function _treeDump($node, $indent = '') { |
$out = ''; |
// Get rid of recursion |
$parentName = empty($node['parentNode']) ? "SUPER ROOT" : $node['parentNode']['name']; |
unset($node['parentNode']); |
$node['parentNode'] = $parentName ; |
$out .= "NODE[{$node['name']}]\n"; |
foreach($node as $key => $val) { |
if ($key === 'childNodes') continue; |
if (is_Array($val)) { |
$out .= $indent . " [{$key}]\n" . arrayToStr($val, $indent . ' '); |
} else { |
$out .= $indent . " [{$key}] => '{$val}' \n"; |
} |
} |
if (!empty($node['childNodes'])) { |
$out .= $indent . " ['childNodes'] (Size = ".sizeOf($node['childNodes']).")\n"; |
foreach($node['childNodes'] as $key => $childNode) { |
$out .= $indent . " [$key] => " . $this->_treeDump($childNode, $indent . ' ') . "\n"; |
} |
} |
if (empty($indent)) { |
return "<pre>" . htmlspecialchars($out) . "</pre>"; |
} |
return $out; |
} |
} // END OF CLASS XPathBase |
/************************************************************************************************ |
* =============================================================================================== |
* X P a t h E n g i n e - Class |
* =============================================================================================== |
************************************************************************************************/ |
class XPathEngine extends XPathBase { |
// List of supported XPath axes. |
// What a stupid idea from W3C to take axes name containing a '-' (dash) |
// NOTE: We replace the '-' with '_' to avoid the conflict with the minus operator. |
// We will then do the same on the users Xpath querys |
// -sibling => _sibling |
// -or- => _or_ |
// |
// This array contains a list of all valid axes that can be evaluated in an |
// XPath query. |
var $axes = array ( 'ancestor', 'ancestor_or_self', 'attribute', 'child', 'descendant', |
'descendant_or_self', 'following', 'following_sibling', |
'namespace', 'parent', 'preceding', 'preceding_sibling', 'self' |
); |
// List of supported XPath functions. |
// What a stupid idea from W3C to take function name containing a '-' (dash) |
// NOTE: We replace the '-' with '_' to avoid the conflict with the minus operator. |
// We will then do the same on the users Xpath querys |
// starts-with => starts_with |
// substring-before => substring_before |
// substring-after => substring_after |
// string-length => string_length |
// |
// This array contains a list of all valid functions that can be evaluated |
// in an XPath query. |
var $functions = array ( 'last', 'position', 'count', 'id', 'name', |
'string', 'concat', 'starts_with', 'contains', 'substring_before', |
'substring_after', 'substring', 'string_length', 'normalize_space', 'translate', |
'boolean', 'not', 'true', 'false', 'lang', 'number', 'sum', 'floor', |
'ceiling', 'round', 'x_lower', 'x_upper', 'generate_id' ); |
// List of supported XPath operators. |
// |
// This array contains a list of all valid operators that can be evaluated |
// in a predicate of an XPath query. The list is ordered by the |
// precedence of the operators (lowest precedence first). |
var $operators = array( ' or ', ' and ', '=', '!=', '<=', '<', '>=', '>', |
'+', '-', '*', ' div ', ' mod ', ' | '); |
// List of literals from the xPath string. |
var $axPathLiterals = array(); |
// The index and tree that is created during the analysis of an XML source. |
var $nodeIndex = array(); |
var $nodeRoot = array(); |
var $emptyNode = array( |
'name' => '', // The tag name. E.g. In <FOO bar="aaa"/> it would be 'FOO' |
'attributes' => array(), // The attributes of the tag E.g. In <FOO bar="aaa"/> it would be array('bar'=>'aaa') |
'childNodes' => array(), // Array of pointers to child nodes. |
'textParts' => array(), // Array of text parts between the cilderen E.g. <FOO>aa<A>bb<B/>cc</A>dd</FOO> -> array('aa','bb','cc','dd') |
'parentNode' => NULL, // Pointer to parent node or NULL if this node is the 'super root' |
//-- *!* Following vars are set by the indexer and is for optimisation only *!* |
'depth' => 0, // The tag depth (or tree level) starting with the root tag at 0. |
'pos' => 0, // Is the zero-based position this node has in the parents 'childNodes'-list. |
'contextPos' => 1, // Is the one-based position this node has by counting the siblings tags (tags with same name) |
'xpath' => '' // Is the abs. XPath to this node. |
); |
var $_indexIsDirty = FALSE; |
// These variable used during the parse XML source |
var $nodeStack = array(); // The elements that we have still to close. |
var $parseStackIndex = 0; // The current element of the nodeStack[] that we are adding to while |
// parsing an XML source. Corresponds to the depth of the xml node. |
// in our input data. |
var $parseOptions = array(); // Used to set the PHP's XML parser options (see xml_parser_set_option) |
var $parsedTextLocation = ''; // A reference to where we have to put char data collected during XML parsing |
var $parsInCData = 0 ; // Is >0 when we are inside a CDATA section. |
var $parseSkipWhiteCache = 0; // A cache of the skip whitespace parse option to speed up the parse. |
// This is the array of error strings, to keep consistency. |
var $errorStrings = array( |
'AbsoluteXPathRequired' => "The supplied xPath '%s' does not *uniquely* describe a node in the xml document.", |
'NoNodeMatch' => "The supplied xPath-query '%s' does not match *any* node in the xml document.", |
'RootNodeAlreadyExists' => "An xml document may have only one root node." |
); |
/** |
* Constructor |
* |
* Optionally you may call this constructor with the XML-filename to parse and the |
* XML option vector. Each of the entries in the option vector will be passed to |
* xml_parser_set_option(). |
* |
* A option vector sample: |
* $xmlOpt = array(XML_OPTION_CASE_FOLDING => FALSE, |
* XML_OPTION_SKIP_WHITE => TRUE); |
* |
* @param $userXmlOptions (array) (optional) Vector of (<optionID>=><value>, |
* <optionID>=><value>, ...). See PHP's |
* xml_parser_set_option() docu for a list of possible |
* options. |
* @see importFromFile(), importFromString(), setXmlOptions() |
*/ |
function XPathEngine($userXmlOptions=array()) { |
parent::XPathBase(); |
// Default to not folding case |
$this->parseOptions[XML_OPTION_CASE_FOLDING] = FALSE; |
// And not skipping whitespace |
$this->parseOptions[XML_OPTION_SKIP_WHITE] = FALSE; |
// Now merge in the overrides. |
// Don't use PHP's array_merge! |
if (is_array($userXmlOptions)) { |
foreach($userXmlOptions as $key => $val) $this->parseOptions[$key] = $val; |
} |
} |
/** |
* Resets the object so it's able to take a new xml sting/file |
* |
* Constructing objects is slow. If you can, reuse ones that you have used already |
* by using this reset() function. |
*/ |
function reset() { |
parent::reset(); |
$this->properties['xmlFile'] = ''; |
$this->parseStackIndex = 0; |
$this->parsedTextLocation = ''; |
$this->parsInCData = 0; |
$this->nodeIndex = array(); |
$this->nodeRoot = array(); |
$this->nodeStack = array(); |
$this->aLiterals = array(); |
$this->_indexIsDirty = FALSE; |
} |
//----------------------------------------------------------------------------------------- |
// XPathEngine ------ Get / Set Stuff ------ |
//----------------------------------------------------------------------------------------- |
/** |
* Returns the property/ies you want. |
* |
* if $param is not given, all properties will be returned in a hash. |
* |
* @param $param (string) the property you want the value of, or NULL for all the properties |
* @return (mixed) string OR hash of all params, or NULL on an unknown parameter. |
*/ |
function getProperties($param=NULL) { |
$this->properties['hasContent'] = !empty($this->nodeRoot); |
$this->properties['caseFolding'] = $this->parseOptions[XML_OPTION_CASE_FOLDING]; |
$this->properties['skipWhiteSpaces'] = $this->parseOptions[XML_OPTION_SKIP_WHITE]; |
if (empty($param)) return $this->properties; |
if (isSet($this->properties[$param])) { |
return $this->properties[$param]; |
} else { |
return NULL; |
} |
} |
/** |
* Set an xml_parser_set_option() |
* |
* @param $optionID (int) The option ID (e.g. XML_OPTION_SKIP_WHITE) |
* @param $value (int) The option value. |
* @see XML parser functions in PHP doc |
*/ |
function setXmlOption($optionID, $value) { |
if (!is_numeric($optionID)) return; |
$this->parseOptions[$optionID] = $value; |
} |
/** |
* Sets a number of xml_parser_set_option()s |
* |
* @param $userXmlOptions (array) An array of parser options. |
* @see setXmlOption |
*/ |
function setXmlOptions($userXmlOptions=array()) { |
if (!is_array($userXmlOptions)) return; |
foreach($userXmlOptions as $key => $val) { |
$this->setXmlOption($key, $val); |
} |
} |
/** |
* Alternative way to control whether case-folding is enabled for this XML parser. |
* |
* Short cut to setXmlOptions(XML_OPTION_CASE_FOLDING, TRUE/FALSE) |
* |
* When it comes to XML, case-folding simply means uppercasing all tag- |
* and attribute-names (NOT the content) if set to TRUE. Note if you |
* have this option set, then your XPath queries will also be case folded |
* for you. |
* |
* @param $onOff (bool) (default TRUE) |
* @see XML parser functions in PHP doc |
*/ |
function setCaseFolding($onOff=TRUE) { |
$this->parseOptions[XML_OPTION_CASE_FOLDING] = $onOff; |
} |
/** |
* Alternative way to control whether skip-white-spaces is enabled for this XML parser. |
* |
* Short cut to setXmlOptions(XML_OPTION_SKIP_WHITE, TRUE/FALSE) |
* |
* When it comes to XML, skip-white-spaces will trim the tag content. |
* An XML file with no whitespace will be faster to process, but will make |
* your data less human readable when you come to write it out. |
* |
* Running with this option on will slow the class down, so if you want to |
* speed up your XML, then run it through once skipping white-spaces, then |
* write out the new version of your XML without whitespace, then use the |
* new XML file with skip whitespaces turned off. |
* |
* @param $onOff (bool) (default TRUE) |
* @see XML parser functions in PHP doc |
*/ |
function setSkipWhiteSpaces($onOff=TRUE) { |
$this->parseOptions[XML_OPTION_SKIP_WHITE] = $onOff; |
} |
/** |
* Get the node defined by the $absoluteXPath. |
* |
* @param $absoluteXPath (string) (optional, default is 'super-root') xpath to the node. |
* @return (array) The node, or FALSE if the node wasn't found. |
*/ |
function &getNode($absoluteXPath='') { |
if ($absoluteXPath==='/') $absoluteXPath = ''; |
if (!isSet($this->nodeIndex[$absoluteXPath])) return FALSE; |
if ($this->_indexIsDirty) $this->reindexNodeTree(); |
return $this->nodeIndex[$absoluteXPath]; |
} |
/** |
* Get a the content of a node text part or node attribute. |
* |
* If the absolute Xpath references an attribute (Xpath ends with @ or attribute::), |
* then the text value of that node-attribute is returned. |
* Otherwise the Xpath is referencing a text part of the node. This can be either a |
* direct reference to a text part (Xpath ends with text()[<nr>]) or indirect reference |
* (a simple abs. Xpath to a node). |
* 1) Direct Reference (xpath ends with text()[<part-number>]): |
* If the 'part-number' is omitted, the first text-part is assumed; starting by 1. |
* Negative numbers are allowed, where -1 is the last text-part a.s.o. |
* 2) Indirect Reference (a simple abs. Xpath to a node): |
* Default is to return the *whole text*; that is the concated text-parts of the matching |
* node. (NOTE that only in this case you'll only get a copy and changes to the returned |
* value wounld have no effect). Optionally you may pass a parameter |
* $textPartNr to define the text-part you want; starting by 1. |
* Negative numbers are allowed, where -1 is the last text-part a.s.o. |
* |
* NOTE I : The returned value can be fetched by reference |
* E.g. $text =& wholeText(). If you wish to modify the text. |
* NOTE II: text-part numbers out of range will return FALSE |
* SIDENOTE:The function name is a suggestion from W3C in the XPath specification level 3. |
* |
* @param $absoluteXPath (string) xpath to the node (See above). |
* @param $textPartNr (int) If referring to a node, specifies which text part |
* to query. |
* @return (&string) A *reference* to the text if the node that the other |
* parameters describe or FALSE if the node is not found. |
*/ |
function &wholeText($absoluteXPath, $textPartNr=NULL) { |
$status = FALSE; |
$text = NULL; |
if ($this->_indexIsDirty) $this->reindexNodeTree(); |
do { // try-block |
if (preg_match(";(.*)/(attribute::|@)([^/]*)$;U", $absoluteXPath, $matches)) { |
$absoluteXPath = $matches[1]; |
$attribute = $matches[3]; |
if (!isSet($this->nodeIndex[$absoluteXPath]['attributes'][$attribute])) { |
$this->_displayError("The $absoluteXPath/attribute::$attribute value isn't a node in this document.", __LINE__, __FILE__, FALSE); |
break; // try-block |
} |
$text =& $this->nodeIndex[$absoluteXPath]['attributes'][$attribute]; |
$status = TRUE; |
break; // try-block |
} |
// Xpath contains a 'text()'-function, thus goes right to a text node. If so interpret the Xpath. |
if (preg_match(":(.*)/text\(\)(\[(.*)\])?$:U", $absoluteXPath, $matches)) { |
$absoluteXPath = $matches[1]; |
if (!isSet($this->nodeIndex[$absoluteXPath])) { |
$this->_displayError("The $absoluteXPath value isn't a node in this document.", __LINE__, __FILE__, FALSE); |
break; // try-block |
} |
// Get the amount of the text parts in the node. |
$textPartSize = sizeOf($this->nodeIndex[$absoluteXPath]['textParts']); |
// default to the first text node if a text node was not specified |
$textPartNr = isSet($matches[2]) ? substr($matches[2],1,-1) : 1; |
// Support negative indexes like -1 === last a.s.o. |
if ($textPartNr < 0) $textPartNr = $textPartSize + $textPartNr +1; |
if (($textPartNr <= 0) OR ($textPartNr > $textPartSize)) { |
$this->_displayError("The $absoluteXPath/text()[$textPartNr] value isn't a NODE in this document.", __LINE__, __FILE__, FALSE); |
break; // try-block |
} |
$text =& $this->nodeIndex[$absoluteXPath]['textParts'][$textPartNr - 1]; |
$status = TRUE; |
break; // try-block |
} |
// At this point we have been given an xpath with neither a 'text()' nor 'attribute::' axis at the end |
// So we assume a get to text is wanted and use the optioanl fallback parameters $textPartNr |
if (!isSet($this->nodeIndex[$absoluteXPath])) { |
$this->_displayError("The $absoluteXPath value isn't a node in this document.", __LINE__, __FILE__, FALSE); |
break; // try-block |
} |
// Get the amount of the text parts in the node. |
$textPartSize = sizeOf($this->nodeIndex[$absoluteXPath]['textParts']); |
// If $textPartNr == NULL we return a *copy* of the whole concated text-parts |
if (is_null($textPartNr)) { |
unset($text); |
$text = implode('', $this->nodeIndex[$absoluteXPath]['textParts']); |
$status = TRUE; |
break; // try-block |
} |
// Support negative indexes like -1 === last a.s.o. |
if ($textPartNr < 0) $textPartNr = $textPartSize + $textPartNr +1; |
if (($textPartNr <= 0) OR ($textPartNr > $textPartSize)) { |
$this->_displayError("The $absoluteXPath has no text part at pos [$textPartNr] (Note: text parts start with 1).", __LINE__, __FILE__, FALSE); |
break; // try-block |
} |
$text =& $this->nodeIndex[$absoluteXPath]['textParts'][$textPartNr -1]; |
$status = TRUE; |
} while (FALSE); // END try-block |
if (!$status) return FALSE; |
return $text; |
} |
/** |
* Obtain the string value of an object |
* |
* http://www.w3.org/TR/xpath#dt-string-value |
* |
* "For every type of node, there is a way of determining a string-value for a node of that type. |
* For some types of node, the string-value is part of the node; for other types of node, the |
* string-value is computed from the string-value of descendant nodes." |
* |
* @param $node (node) The node we have to convert |
* @return (string) The string value of the node. "" if the object has no evaluatable |
* string value |
*/ |
function _stringValue($node) { |
// Decode the entitites and then add the resulting literal string into our array. |
return $this->_addLiteral($this->decodeEntities($this->wholeText($node))); |
} |
//----------------------------------------------------------------------------------------- |
// XPathEngine ------ Export the XML Document ------ |
//----------------------------------------------------------------------------------------- |
/** |
* Returns the containing XML as marked up HTML with specified nodes hi-lighted |
* |
* @param $absoluteXPath (string) The address of the node you would like to export. |
* If empty the whole document will be exported. |
* @param $hilighXpathList (array) A list of nodes that you would like to highlight |
* @return (mixed) The Xml document marked up as HTML so that it can |
* be viewed in a browser, including any XML headers. |
* FALSE on error. |
* @see _export() |
*/ |
function exportAsHtml($absoluteXPath='', $hilightXpathList=array()) { |
$htmlString = $this->_export($absoluteXPath, $xmlHeader=NULL, $hilightXpathList); |
if (!$htmlString) return FALSE; |
return "<pre>\n" . $htmlString . "\n</pre>"; |
} |
/** |
* Given a context this function returns the containing XML |
* |
* @param $absoluteXPath (string) The address of the node you would like to export. |
* If empty the whole document will be exported. |
* @param $xmlHeader (array) The string that you would like to appear before |
* the XML content. ie before the <root></root>. If you |
* do not specify this argument, the xmlHeader that was |
* found in the parsed xml file will be used instead. |
* @return (mixed) The Xml fragment/document, suitable for writing |
* out to an .xml file or as part of a larger xml file, or |
* FALSE on error. |
* @see _export() |
*/ |
function exportAsXml($absoluteXPath='', $xmlHeader=NULL) { |
$this->hilightXpathList = NULL; |
return $this->_export($absoluteXPath, $xmlHeader); |
} |
/** |
* Generates a XML string with the content of the current document and writes it to a file. |
* |
* Per default includes a <?xml ...> tag at the start of the data too. |
* |
* @param $fileName (string) |
* @param $absoluteXPath (string) The path to the parent node you want(see text above) |
* @param $xmlHeader (array) The string that you would like to appear before |
* the XML content. ie before the <root></root>. If you |
* do not specify this argument, the xmlHeader that was |
* found in the parsed xml file will be used instead. |
* @return (string) The returned string contains well-formed XML data |
* or FALSE on error. |
* @see exportAsXml(), exportAsHtml() |
*/ |
function exportToFile($fileName, $absoluteXPath='', $xmlHeader=NULL) { |
$status = FALSE; |
do { // try-block |
if (!($hFile = fopen($fileName, "wb"))) { // Did we open the file ok? |
$errStr = "Failed to open the $fileName xml file."; |
break; // try-block |
} |
if ($this->properties['OS_supports_flock']) { |
if (!flock($hFile, LOCK_EX + LOCK_NB)) { // Lock the file |
$errStr = "Couldn't get an exclusive lock on the $fileName file."; |
break; // try-block |
} |
} |
if (!($xmlOut = $this->_export($absoluteXPath, $xmlHeader))) { |
$errStr = "Export failed"; |
break; // try-block |
} |
$iBytesWritten = fwrite($hFile, $xmlOut); |
if ($iBytesWritten != strlen($xmlOut)) { |
$errStr = "Write error when writing back the $fileName file."; |
break; // try-block |
} |
// Flush and unlock the file |
@fflush($hFile); |
$status = TRUE; |
} while(FALSE); |
@flock($hFile, LOCK_UN); |
@fclose($hFile); |
// Sanity check the produced file. |
clearstatcache(); |
if (filesize($fileName) < strlen($xmlOut)) { |
$errStr = "Write error when writing back the $fileName file."; |
$status = FALSE; |
} |
if (!$status) $this->_displayError($errStr, __LINE__, __FILE__, FALSE); |
return $status; |
} |
/** |
* Generates a XML string with the content of the current document. |
* |
* This is the start for extracting the XML-data from the node-tree. We do some preperations |
* and then call _InternalExport() to fetch the main XML-data. You optionally may pass |
* xpath to any node that will then be used as top node, to extract XML-parts of the |
* document. Default is '', meaning to extract the whole document. |
* |
* You also may pass a 'xmlHeader' (usually something like <?xml version="1.0"? > that will |
* overwrite any other 'xmlHeader', if there was one in the original source. If there |
* wasn't one in the original source, and you still don't specify one, then it will |
* use a default of <?xml version="1.0"? > |
* Finaly, when exporting to HTML, you may pass a vector xPaths you want to hi-light. |
* The hi-lighted tags and attributes will receive a nice color. |
* |
* NOTE I : The output can have 2 formats: |
* a) If "skip white spaces" is/was set. (Not Recommended - slower) |
* The output is formatted by adding indenting and carriage returns. |
* b) If "skip white spaces" is/was *NOT* set. |
* 'as is'. No formatting is done. The output should the same as the |
* the original parsed XML source. |
* |
* @param $absoluteXPath (string) (optional, default is root) The node we choose as top-node |
* @param $xmlHeader (string) (optional) content before <root/> (see text above) |
* @param $hilightXpath (array) (optional) a vector of xPaths to nodes we wat to |
* hi-light (see text above) |
* @return (mixed) The xml string, or FALSE on error. |
*/ |
function _export($absoluteXPath='', $xmlHeader=NULL, $hilightXpathList='') { |
// Check whether a root node is given. |
if (empty($absoluteXpath)) $absoluteXpath = ''; |
if ($absoluteXpath == '/') $absoluteXpath = ''; |
if ($this->_indexIsDirty) $this->reindexNodeTree(); |
if (!isSet($this->nodeIndex[$absoluteXpath])) { |
// If the $absoluteXpath was '' and it didn't exist, then the document is empty |
// and we can safely return ''. |
if ($absoluteXpath == '') return ''; |
$this->_displayError("The given xpath '{$absoluteXpath}' isn't a node in this document.", __LINE__, __FILE__, FALSE); |
return FALSE; |
} |
$this->hilightXpathList = $hilightXpathList; |
$this->indentStep = ' '; |
$hilightIsActive = is_array($hilightXpathList); |
if ($hilightIsActive) { |
$this->indentStep = ' '; |
} |
// Cache this now |
$this->parseSkipWhiteCache = isSet($this->parseOptions[XML_OPTION_SKIP_WHITE]) ? $this->parseOptions[XML_OPTION_SKIP_WHITE] : FALSE; |
/////////////////////////////////////// |
// Get the starting node and begin with the header |
// Get the start node. The super root is a special case. |
$startNode = NULL; |
if (empty($absoluteXPath)) { |
$superRoot = $this->nodeIndex['']; |
// If they didn't specify an xml header, use the one in the object |
if (is_null($xmlHeader)) { |
$xmlHeader = $this->parseSkipWhiteCache ? trim($superRoot['textParts'][0]) : $superRoot['textParts'][0]; |
// If we still don't have an XML header, then use a suitable default |
if (empty($xmlHeader)) { |
$xmlHeader = '<?xml version="1.0"?>'; |
} |
} |
if (isSet($superRoot['childNodes'][0])) $startNode = $superRoot['childNodes'][0]; |
} else { |
$startNode = $this->nodeIndex[$absoluteXPath]; |
} |
if (!empty($xmlHeader)) { |
$xmlOut = $this->parseSkipWhiteCache ? $xmlHeader."\n" : $xmlHeader; |
} else { |
$xmlOut = ''; |
} |
/////////////////////////////////////// |
// Output the document. |
if (($xmlOut .= $this->_InternalExport($startNode)) === FALSE) { |
return FALSE; |
} |
/////////////////////////////////////// |
// Convert our markers to hi-lights. |
if ($hilightIsActive) { |
$from = array('<', '>', chr(2), chr(3)); |
$to = array('<', '>', '<font color="#FF0000"><b>', '</b></font>'); |
$xmlOut = str_replace($from, $to, $xmlOut); |
} |
return $xmlOut; |
} |
/** |
* Export the xml document starting at the named node. |
* |
* @param $node (node) The node we have to start exporting from |
* @return (string) The string representation of the node. |
*/ |
function _InternalExport($node) { |
$ThisFunctionName = '_InternalExport'; |
$bDebugThisFunction = in_array($ThisFunctionName, $this->aDebugFunctions); |
$this->_beginDebugFunction($ThisFunctionName, $bDebugThisFunction); |
if ($bDebugThisFunction) { |
echo "Exporting node: ".$node['xpath']."<br>\n"; |
} |
//////////////////////////////// |
// Quick out. |
if (empty($node)) return ''; |
// The output starts as empty. |
$xmlOut = ''; |
// This loop will output the text before the current child of a parent then the |
// current child. Where the child is a short tag we output the child, then move |
// onto the next child. Where the child is not a short tag, we output the open tag, |
// then queue up on currentParentStack[] the child. |
// |
// When we run out of children, we then output the last text part, and close the |
// 'parent' tag before popping the stack and carrying on. |
// |
// To illustrate, the numbers in this xml file indicate what is output on each |
// pass of the while loop: |
// |
// 1 |
// <1>2 |
// <2>3 |
// <3/>4 |
// </4>5 |
// <5/>6 |
// </6> |
// Although this is neater done using recursion, there's a 33% performance saving |
// to be gained by using this stack mechanism. |
// Only add CR's if "skip white spaces" was set. Otherwise leave as is. |
$CR = ($this->parseSkipWhiteCache) ? "\n" : ''; |
$currentIndent = ''; |
$hilightIsActive = is_array($this->hilightXpathList); |
// To keep track of where we are in the document we use a node stack. The node |
// stack has the following parallel entries: |
// 'Parent' => (array) A copy of the parent node that who's children we are |
// exporting |
// 'ChildIndex' => (array) The child index of the corresponding parent that we |
// are currently exporting. |
// 'Highlighted'=> (bool) If we are highlighting this node. Only relevant if |
// the hilight is active. |
// Setup our node stack. The loop is designed to output children of a parent, |
// not the parent itself, so we must put the parent on as the starting point. |
$nodeStack['Parent'] = array($node['parentNode']); |
// And add the childpos of our node in it's parent to our "child index stack". |
$nodeStack['ChildIndex'] = array($node['pos']); |
// We start at 0. |
$nodeStackIndex = 0; |
// We have not to output text before/after our node, so blank it. We will recover it |
// later |
$OldPreceedingStringValue = $nodeStack['Parent'][0]['textParts'][$node['pos']]; |
$OldPreceedingStringRef =& $nodeStack['Parent'][0]['textParts'][$node['pos']]; |
$OldPreceedingStringRef = ""; |
$currentXpath = ""; |
// While we still have data on our stack |
while ($nodeStackIndex >= 0) { |
// Count the children and get a copy of the current child. |
$iChildCount = count($nodeStack['Parent'][$nodeStackIndex]['childNodes']); |
$currentChild = $nodeStack['ChildIndex'][$nodeStackIndex]; |
// Only do the auto indenting if the $parseSkipWhiteCache flag was set. |
if ($this->parseSkipWhiteCache) |
$currentIndent = str_repeat($this->indentStep, $nodeStackIndex); |
if ($bDebugThisFunction) |
echo "Exporting child ".($currentChild+1)." of node {$nodeStack['Parent'][$nodeStackIndex]['xpath']}\n"; |
/////////////////////////////////////////// |
// Add the text before our child. |
// Add the text part before the current child |
$tmpTxt =& $nodeStack['Parent'][$nodeStackIndex]['textParts'][$currentChild]; |
if (isSet($tmpTxt) AND ($tmpTxt!="")) { |
// Only add CR indent if there were children |
if ($iChildCount) |
$xmlOut .= $CR.$currentIndent; |
// Hilight if necessary. |
$highlightStart = $highlightEnd = ''; |
if ($hilightIsActive) { |
$currentXpath = $nodeStack['Parent'][$nodeStackIndex]['xpath'].'/text()['.($currentChild+1).']'; |
if (in_array($currentXpath, $this->hilightXpathList)) { |
// Yes we hilight |
$highlightStart = chr(2); |
$highlightEnd = chr(3); |
} |
} |
$xmlOut .= $highlightStart.$nodeStack['Parent'][$nodeStackIndex]['textParts'][$currentChild].$highlightEnd; |
} |
if ($iChildCount && $nodeStackIndex) $xmlOut .= $CR; |
/////////////////////////////////////////// |
// Are there any more children? |
if ($iChildCount <= $currentChild) { |
// Nope, so output the last text before the closing tag |
$tmpTxt =& $nodeStack['Parent'][$nodeStackIndex]['textParts'][$currentChild+1]; |
if (isSet($tmpTxt) AND ($tmpTxt!="")) { |
// Hilight if necessary. |
$highlightStart = $highlightEnd = ''; |
if ($hilightIsActive) { |
$currentXpath = $nodeStack['Parent'][$nodeStackIndex]['xpath'].'/text()['.($currentChild+2).']'; |
if (in_array($currentXpath, $this->hilightXpathList)) { |
// Yes we hilight |
$highlightStart = chr(2); |
$highlightEnd = chr(3); |
} |
} |
$xmlOut .= $highlightStart |
.$currentIndent.$nodeStack['Parent'][$nodeStackIndex]['textParts'][$currentChild+1].$CR |
.$highlightEnd; |
} |
// Now close this tag, as we are finished with this child. |
// Potentially output an (slightly smaller indent). |
if ($this->parseSkipWhiteCache |
&& count($nodeStack['Parent'][$nodeStackIndex]['childNodes'])) { |
$xmlOut .= str_repeat($this->indentStep, $nodeStackIndex - 1); |
} |
// Check whether the xml-tag is to be hilighted. |
$highlightStart = $highlightEnd = ''; |
if ($hilightIsActive) { |
$currentXpath = $nodeStack['Parent'][$nodeStackIndex]['xpath']; |
if (in_array($currentXpath, $this->hilightXpathList)) { |
// Yes we hilight |
$highlightStart = chr(2); |
$highlightEnd = chr(3); |
} |
} |
$xmlOut .= $highlightStart |
.'</'.$nodeStack['Parent'][$nodeStackIndex]['name'].'>' |
.$highlightEnd; |
// Decrement the $nodeStackIndex to go back to the next unfinished parent. |
$nodeStackIndex--; |
// If the index is 0 we are finished exporting the last node, as we may have been |
// exporting an internal node. |
if ($nodeStackIndex == 0) break; |
// Indicate to the parent that we are finished with this child. |
$nodeStack['ChildIndex'][$nodeStackIndex]++; |
continue; |
} |
/////////////////////////////////////////// |
// Ok, there are children still to process. |
// Queue up the next child (I can copy because I won't modify and copying is faster.) |
$nodeStack['Parent'][$nodeStackIndex + 1] = $nodeStack['Parent'][$nodeStackIndex]['childNodes'][$currentChild]; |
// Work out if it is a short child tag. |
$iGrandChildCount = count($nodeStack['Parent'][$nodeStackIndex + 1]['childNodes']); |
$shortGrandChild = (($iGrandChildCount == 0) AND (implode('',$nodeStack['Parent'][$nodeStackIndex + 1]['textParts'])=='')); |
/////////////////////////////////////////// |
// Assemble the attribute string first. |
$attrStr = ''; |
foreach($nodeStack['Parent'][$nodeStackIndex + 1]['attributes'] as $key=>$val) { |
// Should we hilight the attribute? |
if ($hilightIsActive AND in_array($currentXpath.'/attribute::'.$key, $this->hilightXpathList)) { |
$hiAttrStart = chr(2); |
$hiAttrEnd = chr(3); |
} else { |
$hiAttrStart = $hiAttrEnd = ''; |
} |
$attrStr .= ' '.$hiAttrStart.$key.'="'.$val.'"'.$hiAttrEnd; |
} |
/////////////////////////////////////////// |
// Work out what goes before and after the tag content |
$beforeTagContent = $currentIndent; |
if ($shortGrandChild) $afterTagContent = '/>'; |
else $afterTagContent = '>'; |
// Check whether the xml-tag is to be hilighted. |
if ($hilightIsActive) { |
$currentXpath = $nodeStack['Parent'][$nodeStackIndex + 1]['xpath']; |
if (in_array($currentXpath, $this->hilightXpathList)) { |
// Yes we hilight |
$beforeTagContent .= chr(2); |
$afterTagContent .= chr(3); |
} |
} |
$beforeTagContent .= '<'; |
// if ($shortGrandChild) $afterTagContent .= $CR; |
/////////////////////////////////////////// |
// Output the tag |
$xmlOut .= $beforeTagContent |
.$nodeStack['Parent'][$nodeStackIndex + 1]['name'].$attrStr |
.$afterTagContent; |
/////////////////////////////////////////// |
// Carry on. |
// If it is a short tag, then we've already done this child, we just move to the next |
if ($shortGrandChild) { |
// Move to the next child, we need not go deeper in the tree. |
$nodeStack['ChildIndex'][$nodeStackIndex]++; |
// But if we are just exporting the one node we'd go no further. |
if ($nodeStackIndex == 0) break; |
} else { |
// Else queue up the child going one deeper in the stack |
$nodeStackIndex++; |
// Start with it's first child |
$nodeStack['ChildIndex'][$nodeStackIndex] = 0; |
} |
} |
$result = $xmlOut; |
// Repair what we "undid" |
$OldPreceedingStringRef = $OldPreceedingStringValue; |
//////////////////////////////////////////// |
$this->_closeDebugFunction($ThisFunctionName, $result, $bDebugThisFunction); |
return $result; |
} |
//----------------------------------------------------------------------------------------- |
// XPathEngine ------ Import the XML Source ------ |
//----------------------------------------------------------------------------------------- |
/** |
* Reads a file or URL and parses the XML data. |
* |
* Parse the XML source and (upon success) store the information into an internal structure. |
* |
* @param $fileName (string) Path and name (or URL) of the file to be read and parsed. |
* @return (bool) TRUE on success, FALSE on failure (check getLastError()) |
* @see importFromString(), getLastError(), |
*/ |
function importFromFile($fileName) { |
$status = FALSE; |
$errStr = ''; |
do { // try-block |
// Remember file name. Used in error output to know in which file it happend |
$this->properties['xmlFile'] = $fileName; |
// If we already have content, then complain. |
if (!empty($this->nodeRoot)) { |
$errStr = 'Called when this object already contains xml data. Use reset().'; |
break; // try-block |
} |
// The the source is an url try to fetch it. |
if (preg_match(';^http(s)?://;', $fileName)) { |
// Read the content of the url...this is really prone to errors, and we don't really |
// check for too many here...for now, suppressing both possible warnings...we need |
// to check if we get a none xml page or something of that nature in the future |
$xmlString = @implode('', @file($fileName)); |
if (!empty($xmlString)) { |
$status = TRUE; |
} else { |
$errStr = "The url '{$fileName}' could not be found or read."; |
} |
break; // try-block |
} |
// Reaching this point we're dealing with a real file (not an url). Check if the file exists and is readable. |
if (!is_readable($fileName)) { // Read the content from the file |
$errStr = "File '{$fileName}' could not be found or read."; |
break; // try-block |
} |
if (is_dir($fileName)) { |
$errStr = "'{$fileName}' is a directory."; |
break; // try-block |
} |
// Read the file |
if (!($fp = @fopen($fileName, 'rb'))) { |
$errStr = "Failed to open '{$fileName}' for read."; |
break; // try-block |
} |
$xmlString = fread($fp, filesize($fileName)); |
@fclose($fp); |
$status = TRUE; |
} while (FALSE); |
if (!$status) { |
$this->_displayError('In importFromFile(): '. $errStr, __LINE__, __FILE__, FALSE); |
return FALSE; |
} |
return $this->importFromString($xmlString); |
} |
/** |
* Reads a string and parses the XML data. |
* |
* Parse the XML source and (upon success) store the information into an internal structure. |
* If a parent xpath is given this means that XML data is to be *appended* to that parent. |
* |
* ### If a function uses setLastError(), then say in the function header that getLastError() is useful. |
* |
* @param $xmlString (string) Name of the string to be read and parsed. |
* @param $absoluteParentPath (string) Node to append data too (see above) |
* @return (bool) TRUE on success, FALSE on failure |
* (check getLastError()) |
*/ |
function importFromString($xmlString, $absoluteParentPath = '') { |
$ThisFunctionName = 'importFromString'; |
$bDebugThisFunction = in_array($ThisFunctionName, $this->aDebugFunctions); |
$this->_beginDebugFunction($ThisFunctionName, $bDebugThisFunction); |
if ($bDebugThisFunction) { |
echo "Importing from string of length ".strlen($xmlString)." to node '$absoluteParentPath'\n<br>"; |
echo "Parser options:\n<br>"; |
print_r($this->parseOptions); |
} |
$status = FALSE; |
$errStr = ''; |
do { // try-block |
// If we already have content, then complain. |
if (!empty($this->nodeRoot) AND empty($absoluteParentPath)) { |
$errStr = 'Called when this object already contains xml data. Use reset() or pass the parent Xpath as 2ed param to where tie data will append.'; |
break; // try-block |
} |
// Check whether content has been read. |
if (empty($xmlString)) { |
// Nothing to do!! |
$status = TRUE; |
// If we were importing to root, build a blank root. |
if (empty($absoluteParentPath)) { |
$this->_createSuperRoot(); |
} |
$this->reindexNodeTree(); |
// $errStr = 'This xml document (string) was empty'; |
break; // try-block |
} else { |
$xmlString = $this->_translateAmpersand($xmlString); |
} |
// Restart our node index with a root entry. |
$nodeStack = array(); |
$this->parseStackIndex = 0; |
// If a parent xpath is given this means that XML data is to be *appended* to that parent. |
if (!empty($absoluteParentPath)) { |
// Check if parent exists |
if (!isSet($this->nodeIndex[$absoluteParentPath])) { |
$errStr = "You tried to append XML data to a parent '$absoluteParentPath' that does not exist."; |
break; // try-block |
} |
// Add it as the starting point in our array. |
$this->nodeStack[0] =& $this->nodeIndex[$absoluteParentPath]; |
} else { |
// Build a 'super-root' |
$this->_createSuperRoot(); |
// Put it in as the start of our node stack. |
$this->nodeStack[0] =& $this->nodeRoot; |
} |
// Point our text buffer reference at the next text part of the root |
$this->parsedTextLocation =& $this->nodeStack[0]['textParts'][]; |
$this->parsInCData = 0; |
// We cache this now. |
$this->parseSkipWhiteCache = isSet($this->parseOptions[XML_OPTION_SKIP_WHITE]) ? $this->parseOptions[XML_OPTION_SKIP_WHITE] : FALSE; |
// Create an XML parser. |
$parser = xml_parser_create(); |
// Set default XML parser options. |
if (is_array($this->parseOptions)) { |
foreach($this->parseOptions as $key => $val) { |
xml_parser_set_option($parser, $key, $val); |
} |
} |
// Set the object and the element handlers for the XML parser. |
xml_set_object($parser, $this); |
xml_set_element_handler($parser, '_handleStartElement', '_handleEndElement'); |
xml_set_character_data_handler($parser, '_handleCharacterData'); |
xml_set_default_handler($parser, '_handleDefaultData'); |
xml_set_processing_instruction_handler($parser, '_handlePI'); |
// Parse the XML source and on error generate an error message. |
if (!xml_parse($parser, $xmlString, TRUE)) { |
$source = empty($this->properties['xmlFile']) ? 'string' : 'file ' . basename($this->properties['xmlFile']) . "'"; |
$errStr = "XML error in given {$source} on line ". |
xml_get_current_line_number($parser). ' column '. xml_get_current_column_number($parser) . |
'. Reason:'. xml_error_string(xml_get_error_code($parser)); |
break; // try-block |
} |
// Free the parser. |
@xml_parser_free($parser); |
// And we don't need this any more. |
$this->nodeStack = array(); |
$this->reindexNodeTree(); |
if ($bDebugThisFunction) { |
print_r(array_keys($this->nodeIndex)); |
} |
$status = TRUE; |
} while (FALSE); |
if (!$status) { |
$this->_displayError('In importFromString(): '. $errStr, __LINE__, __FILE__, FALSE); |
$bResult = FALSE; |
} else { |
$bResult = TRUE; |
} |
//////////////////////////////////////////// |
$this->_closeDebugFunction($ThisFunctionName, $bResult, $bDebugThisFunction); |
return $bResult; |
} |
//----------------------------------------------------------------------------------------- |
// XPathEngine ------ XML Handlers ------ |
//----------------------------------------------------------------------------------------- |
/** |
* Handles opening XML tags while parsing. |
* |
* While parsing a XML document for each opening tag this method is |
* called. It'll add the tag found to the tree of document nodes. |
* |
* @param $parser (int) Handler for accessing the current XML parser. |
* @param $name (string) Name of the opening tag found in the document. |
* @param $attributes (array) Associative array containing a list of |
* all attributes of the tag found in the document. |
* @see _handleEndElement(), _handleCharacterData() |
*/ |
function _handleStartElement($parser, $nodeName, $attributes) { |
if (empty($nodeName)) { |
$this->_displayError('XML error in file at line'. xml_get_current_line_number($parser) .'. Empty name.', __LINE__, __FILE__); |
return; |
} |
// Trim accumulated text if necessary. |
if ($this->parseSkipWhiteCache) { |
$iCount = count($this->nodeStack[$this->parseStackIndex]['textParts']); |
$this->nodeStack[$this->parseStackIndex]['textParts'][$iCount-1] = rtrim($this->parsedTextLocation); |
} |
if ($this->bDebugXmlParse) { |
echo "<blockquote>" . htmlspecialchars("Start node: <".$nodeName . ">")."<br>"; |
echo "Appended to stack entry: $this->parseStackIndex<br>\n"; |
echo "Text part before element is: ".htmlspecialchars($this->parsedTextLocation); |
/* |
echo "<pre>"; |
$dataPartsCount = count($this->nodeStack[$this->parseStackIndex]['textParts']); |
for ($i = 0; $i < $dataPartsCount; $i++) { |
echo "$i:". htmlspecialchars($this->nodeStack[$this->parseStackIndex]['textParts'][$i])."\n"; |
} |
echo "</pre>"; |
*/ |
} |
// Add a node and set path to current. |
if (!$this->_internalAppendChild($this->parseStackIndex, $nodeName)) { |
$this->_displayError('Internal error during parse of XML file at line'. xml_get_current_line_number($parser) .'. Empty name.', __LINE__, __FILE__); |
return; |
} |
// We will have gone one deeper then in the stack. |
$this->parseStackIndex++; |
// Point our parseTxtBuffer reference at the new node. |
$this->parsedTextLocation =& $this->nodeStack[$this->parseStackIndex]['textParts'][0]; |
// Set the attributes. |
if (!empty($attributes)) { |
if ($this->bDebugXmlParse) { |
echo 'Attributes: <br>'; |
print_r($attributes); |
echo '<br>'; |
} |
$this->nodeStack[$this->parseStackIndex]['attributes'] = $attributes; |
} |
} |
/** |
* Handles closing XML tags while parsing. |
* |
* While parsing a XML document for each closing tag this method is called. |
* |
* @param $parser (int) Handler for accessing the current XML parser. |
* @param $name (string) Name of the closing tag found in the document. |
* @see _handleStartElement(), _handleCharacterData() |
*/ |
function _handleEndElement($parser, $name) { |
if (($this->parsedTextLocation=='') |
&& empty($this->nodeStack[$this->parseStackIndex]['textParts'])) { |
// We reach this point when parsing a tag of format <foo/>. The 'textParts'-array |
// should stay empty and not have an empty string in it. |
} else { |
// Trim accumulated text if necessary. |
if ($this->parseSkipWhiteCache) { |
$iCount = count($this->nodeStack[$this->parseStackIndex]['textParts']); |
$this->nodeStack[$this->parseStackIndex]['textParts'][$iCount-1] = rtrim($this->parsedTextLocation); |
} |
} |
if ($this->bDebugXmlParse) { |
echo "Text part after element is: ".htmlspecialchars($this->parsedTextLocation)."<br>\n"; |
echo htmlspecialchars("Parent:<{$this->parseStackIndex}>, End-node:</$name> '".$this->parsedTextLocation) . "'<br>Text nodes:<pre>\n"; |
$dataPartsCount = count($this->nodeStack[$this->parseStackIndex]['textParts']); |
for ($i = 0; $i < $dataPartsCount; $i++) { |
echo "$i:". htmlspecialchars($this->nodeStack[$this->parseStackIndex]['textParts'][$i])."\n"; |
} |
var_dump($this->nodeStack[$this->parseStackIndex]['textParts']); |
echo "</pre></blockquote>\n"; |
} |
// Jump back to the parent element. |
$this->parseStackIndex--; |
// Set our reference for where we put any more whitespace |
$this->parsedTextLocation =& $this->nodeStack[$this->parseStackIndex]['textParts'][]; |
// Note we leave the entry in the stack, as it will get blanked over by the next element |
// at this level. The safe thing to do would be to remove it too, but in the interests |
// of performance, we will not bother, as were it to be a problem, then it would be an |
// internal bug anyway. |
if ($this->parseStackIndex < 0) { |
$this->_displayError('Internal error during parse of XML file at line'. xml_get_current_line_number($parser) .'. Empty name.', __LINE__, __FILE__); |
return; |
} |
} |
/** |
* Handles character data while parsing. |
* |
* While parsing a XML document for each character data this method |
* is called. It'll add the character data to the document tree. |
* |
* @param $parser (int) Handler for accessing the current XML parser. |
* @param $text (string) Character data found in the document. |
* @see _handleStartElement(), _handleEndElement() |
*/ |
function _handleCharacterData($parser, $text) { |
if ($this->parsInCData >0) $text = $this->_translateAmpersand($text, $reverse=TRUE); |
if ($this->bDebugXmlParse) echo "Handling character data: '".htmlspecialchars($text)."'<br>"; |
if ($this->parseSkipWhiteCache AND !empty($text) AND !$this->parsInCData) { |
// Special case CR. CR always comes in a separate data. Trans. it to '' or ' '. |
// If txtBuffer is already ending with a space use '' otherwise ' '. |
$bufferHasEndingSpace = (empty($this->parsedTextLocation) OR substr($this->parsedTextLocation, -1) === ' ') ? TRUE : FALSE; |
if ($text=="\n") { |
$text = $bufferHasEndingSpace ? '' : ' '; |
} else { |
if ($bufferHasEndingSpace) { |
$text = ltrim(preg_replace('/\s+/', ' ', $text)); |
} else { |
$text = preg_replace('/\s+/', ' ', $text); |
} |
} |
if ($this->bDebugXmlParse) echo "'Skip white space' is ON. reduced to : '" .htmlspecialchars($text) . "'<br>"; |
} |
$this->parsedTextLocation .= $text; |
} |
/** |
* Default handler for the XML parser. |
* |
* While parsing a XML document for string not caught by one of the other |
* handler functions, we end up here. |
* |
* @param $parser (int) Handler for accessing the current XML parser. |
* @param $text (string) Character data found in the document. |
* @see _handleStartElement(), _handleEndElement() |
*/ |
function _handleDefaultData($parser, $text) { |
do { // try-block |
if (!strcmp($text, '<![CDATA[')) { |
$this->parsInCData++; |
} elseif (!strcmp($text, ']]>')) { |
$this->parsInCData--; |
if ($this->parsInCData < 0) $this->parsInCData = 0; |
} |
$this->parsedTextLocation .= $this->_translateAmpersand($text, $reverse=TRUE); |
if ($this->bDebugXmlParse) echo "Default handler data: ".htmlspecialchars($text)."<br>"; |
break; // try-block |
} while (FALSE); // END try-block |
} |
/** |
* Handles processing instruction (PI) |
* |
* A processing instruction has the following format: |
* <? target data ? > e.g. <? dtd version="1.0" ? > |
* |
* Currently I have no bether idea as to left it 'as is' and treat the PI data as normal |
* text (and adding the surrounding PI-tags <? ? >). |
* |
* @param $parser (int) Handler for accessing the current XML parser. |
* @param $target (string) Name of the PI target. E.g. XML, PHP, DTD, ... |
* @param $data (string) Associative array containing a list of |
* @see PHP's manual "xml_set_processing_instruction_handler" |
*/ |
function _handlePI($parser, $target, $data) { |
//echo("pi data=".$data."end"); exit; |
$data = $this->_translateAmpersand($data, $reverse=TRUE); |
$this->parsedTextLocation .= "<?{$target} {$data}?>"; |
return TRUE; |
} |
//----------------------------------------------------------------------------------------- |
// XPathEngine ------ Node Tree Stuff ------ |
//----------------------------------------------------------------------------------------- |
/** |
* Creates a super root node. |
*/ |
function _createSuperRoot() { |
// Build a 'super-root' |
$this->nodeRoot = $this->emptyNode; |
$this->nodeRoot['name'] = ''; |
$this->nodeRoot['parentNode'] = NULL; |
$this->nodeIndex[''] =& $this->nodeRoot; |
} |
/** |
* Adds a new node to the XML document tree during xml parsing. |
* |
* This method adds a new node to the tree of nodes of the XML document |
* being handled by this class. The new node is created according to the |
* parameters passed to this method. This method is a much watered down |
* version of appendChild(), used in parsing an xml file only. |
* |
* It is assumed that adding starts with root and progresses through the |
* document in parse order. New nodes must have a corresponding parent. And |
* once we have read the </> tag for the element we will never need to add |
* any more data to that node. Otherwise the add will be ignored or fail. |
* |
* The function is faciliated by a nodeStack, which is an array of nodes that |
* we have yet to close. |
* |
* @param $stackParentIndex (int) The index into the nodeStack[] of the parent |
* node to which the new node should be added as |
* a child. *READONLY* |
* @param $nodeName (string) Name of the new node. *READONLY* |
* @return (bool) TRUE if we successfully added a new child to |
* the node stack at index $stackParentIndex + 1, |
* FALSE on error. |
*/ |
function _internalAppendChild($stackParentIndex, $nodeName) { |
// This call is likely to be executed thousands of times, so every 0.01ms counts. |
// If you want to debug this function, you'll have to comment the stuff back in |
//$bDebugThisFunction = FALSE; |
/* |
$ThisFunctionName = '_internalAppendChild'; |
$bDebugThisFunction = in_array($ThisFunctionName, $this->aDebugFunctions); |
$this->_beginDebugFunction($ThisFunctionName, $bDebugThisFunction); |
if ($bDebugThisFunction) { |
echo "Current Node (parent-index) and the child to append : '{$stackParentIndex}' + '{$nodeName}' \n<br>"; |
} |
*/ |
////////////////////////////////////// |
if (!isSet($this->nodeStack[$stackParentIndex])) { |
$errStr = "Invalid parent. You tried to append the tag '{$nodeName}' to an non-existing parent in our node stack '{$stackParentIndex}'."; |
$this->_displayError('In _internalAppendChild(): '. $errStr, __LINE__, __FILE__, FALSE); |
/* |
$this->_closeDebugFunction($ThisFunctionName, FALSE, $bDebugThisFunction); |
*/ |
return FALSE; |
} |
// Retrieve the parent node from the node stack. This is the last node at that |
// depth that we have yet to close. This is where we should add the text/node. |
$parentNode =& $this->nodeStack[$stackParentIndex]; |
// Brand new node please |
$newChildNode = $this->emptyNode; |
// Save the vital information about the node. |
$newChildNode['name'] = $nodeName; |
$parentNode['childNodes'][] =& $newChildNode; |
// Add to our node stack |
$this->nodeStack[$stackParentIndex + 1] =& $newChildNode; |
/* |
if ($bDebugThisFunction) { |
echo "The new node received index: '".($stackParentIndex + 1)."'\n"; |
foreach($this->nodeStack as $key => $val) echo "$key => ".$val['name']."\n"; |
} |
$this->_closeDebugFunction($ThisFunctionName, TRUE, $bDebugThisFunction); |
*/ |
return TRUE; |
} |
/** |
* Update nodeIndex and every node of the node-tree. |
* |
* Call after you have finished any tree modifications other wise a match with |
* an xPathQuery will produce wrong results. The $this->nodeIndex[] is recreated |
* and every nodes optimization data is updated. The optimization data is all the |
* data that is duplicate information, would just take longer to find. Child nodes |
* with value NULL are removed from the tree. |
* |
* By default the modification functions in this component will automatically re-index |
* the nodes in the tree. Sometimes this is not the behaver you want. To surpress the |
* reindex, set the functions $autoReindex to FALSE and call reindexNodeTree() at the |
* end of your changes. This sometimes leads to better code (and less CPU overhead). |
* |
* Sample: |
* ======= |
* Given the xml is <AAA><B/>.<B/>.<B/></AAA> | Goal is <AAA>.<B/>.</AAA> (Delete B[1] and B[3]) |
* $xPathSet = $xPath->match('//B'); # Will result in array('/AAA[1]/B[1]', '/AAA[1]/B[2]', '/AAA[1]/B[3]'); |
* Three ways to do it. |
* 1) Top-Down (with auto reindexing) - Safe, Slow and you get easily mix up with the the changing node index |
* removeChild('/AAA[1]/B[1]'); // B[1] removed, thus all B[n] become B[n-1] !! |
* removeChild('/AAA[1]/B[2]'); // Now remove B[2] (That originaly was B[3]) |
* 2) Bottom-Up (with auto reindexing) - Safe, Slow and the changing node index (caused by auto-reindex) can be ignored. |
* for ($i=sizeOf($xPathSet)-1; $i>=0; $i--) { |
* if ($i==1) continue; |
* removeChild($xPathSet[$i]); |
* } |
* 3) // Top-down (with *NO* auto reindexing) - Fast, Safe as long as you call reindexNodeTree() |
* foreach($xPathSet as $xPath) { |
* // Specify no reindexing |
* if ($xPath == $xPathSet[1]) continue; |
* removeChild($xPath, $autoReindex=FALSE); |
* // The object is now in a slightly inconsistent state. |
* } |
* // Finally do the reindex and the object is consistent again |
* reindexNodeTree(); |
* |
* @return (bool) TRUE on success, FALSE otherwise. |
* @see _recursiveReindexNodeTree() |
*/ |
function reindexNodeTree() { |
//return; |
$this->_indexIsDirty = FALSE; |
$this->nodeIndex = array(); |
$this->nodeIndex[''] =& $this->nodeRoot; |
// Quick out for when the tree has no data. |
if (empty($this->nodeRoot)) return TRUE; |
return $this->_recursiveReindexNodeTree(''); |
} |
/** |
* Create the ids that are accessable through the generate-id() function |
*/ |
function _generate_ids() { |
// If we have generated them already, then bail. |
if (isset($this->nodeIndex['']['generate_id'])) return; |
// keys generated are the string 'id0' . hexatridecimal-based (0..9,a-z) index |
$aNodeIndexes = array_keys($this->nodeIndex); |
$idNumber = 0; |
foreach($aNodeIndexes as $index => $key) { |
// $this->nodeIndex[$key]['generated_id'] = 'id' . base_convert($index,10,36); |
// Skip attribute and text nodes. |
// ### Currently don't support attribute and text nodes. |
if (strstr($key, 'text()') !== FALSE) continue; |
if (strstr($key, 'attribute::') !== FALSE) continue; |
$this->nodeIndex[$key]['generated_id'] = 'idPhpXPath' . $idNumber; |
// Make the id's sequential so that we can test predictively. |
$idNumber++; |
} |
} |
/** |
* Here's where the work is done for reindexing (see reindexNodeTree) |
* |
* @param $absoluteParentPath (string) the xPath to the parent node |
* @return (bool) TRUE on success, FALSE otherwise. |
* @see reindexNodeTree() |
*/ |
function _recursiveReindexNodeTree($absoluteParentPath) { |
$parentNode =& $this->nodeIndex[$absoluteParentPath]; |
// Check for any 'dead' child nodes first and concate the text parts if found. |
for ($iChildIndex=sizeOf($parentNode['childNodes'])-1; $iChildIndex>=0; $iChildIndex--) { |
// Check if the child node still exits (it may have been removed). |
if (!empty($parentNode['childNodes'][$iChildIndex])) continue; |
// Child node was removed. We got to merge the text parts then. |
$parentNode['textParts'][$iChildIndex] .= $parentNode['textParts'][$iChildIndex+1]; |
array_splice($parentNode['textParts'], $iChildIndex+1, 1); |
array_splice($parentNode['childNodes'], $iChildIndex, 1); |
} |
// Now start a reindex. |
$contextHash = array(); |
$childSize = sizeOf($parentNode['childNodes']); |
// If there are no children, we have to treat this specially: |
if ($childSize == 0) { |
// Add a dummy text node. |
$this->nodeIndex[$absoluteParentPath.'/text()[1]'] =& $parentNode; |
} else { |
for ($iChildIndex=0; $iChildIndex<$childSize; $iChildIndex++) { |
$childNode =& $parentNode['childNodes'][$iChildIndex]; |
// Make sure that there is a text-part in front of every node. (May be empty) |
if (!isSet($parentNode['textParts'][$iChildIndex])) $parentNode['textParts'][$iChildIndex] = ''; |
// Count the nodes with same name (to determine their context position) |
$childName = $childNode['name']; |
if (empty($contextHash[$childName])) { |
$contextPos = $contextHash[$childName] = 1; |
} else { |
$contextPos = ++$contextHash[$childName]; |
} |
// Make the node-index hash |
$newPath = $absoluteParentPath . '/' . $childName . '['.$contextPos.']'; |
// ### Note ultimately we will end up supporting text nodes as actual nodes. |
// Preceed with a dummy entry for the text node. |
$this->nodeIndex[$absoluteParentPath.'/text()['.($childNode['pos']+1).']'] =& $childNode; |
// Then the node itself |
$this->nodeIndex[$newPath] =& $childNode; |
// Now some dummy nodes for each of the attribute nodes. |
$iAttributeCount = sizeOf($childNode['attributes']); |
if ($iAttributeCount > 0) { |
$aAttributesNames = array_keys($childNode['attributes']); |
for ($iAttributeIndex = 0; $iAttributeIndex < $iAttributeCount; $iAttributeIndex++) { |
$attribute = $aAttributesNames[$iAttributeIndex]; |
$newAttributeNode = $this->emptyNode; |
$newAttributeNode['name'] = $attribute; |
$newAttributeNode['textParts'] = array($childNode['attributes'][$attribute]); |
$newAttributeNode['contextPos'] = $iAttributeIndex; |
$newAttributeNode['xpath'] = "$newPath/attribute::$attribute"; |
$newAttributeNode['parentNode'] =& $childNode; |
$newAttributeNode['depth'] =& $parentNode['depth'] + 2; |
// Insert the node as a master node, not a reference, otherwise there will be |
// variable "bleeding". |
$this->nodeIndex["$newPath/attribute::$attribute"] = $newAttributeNode; |
} |
} |
// Update the node info (optimisation) |
$childNode['parentNode'] =& $parentNode; |
$childNode['depth'] = $parentNode['depth'] + 1; |
$childNode['pos'] = $iChildIndex; |
$childNode['contextPos'] = $contextHash[$childName]; |
$childNode['xpath'] = $newPath; |
$this->_recursiveReindexNodeTree($newPath); |
// Follow with a dummy entry for the text node. |
$this->nodeIndex[$absoluteParentPath.'/text()['.($childNode['pos']+2).']'] =& $childNode; |
} |
// Make sure that their is a text-part after the last node. |
if (!isSet($parentNode['textParts'][$iChildIndex])) $parentNode['textParts'][$iChildIndex] = ''; |
} |
return TRUE; |
} |
/** |
* Clone a node and it's child nodes. |
* |
* NOTE: If the node has children you *MUST* use the reference operator! |
* E.g. $clonedNode =& cloneNode($node); |
* Otherwise the children will not point back to the parent, they will point |
* back to your temporary variable instead. |
* |
* @param $node (mixed) Either a node (hash array) or an abs. Xpath to a node in |
* the current doc |
* @return (&array) A node and it's child nodes. |
*/ |
function &cloneNode($node, $recursive=FALSE) { |
if (is_string($node) AND isSet($this->nodeIndex[$node])) { |
$node = $this->nodeIndex[$node]; |
} |
// Copy the text-parts () |
$textParts = $node['textParts']; |
$node['textParts'] = array(); |
foreach ($textParts as $key => $val) { |
$node['textParts'][] = $val; |
} |
$childSize = sizeOf($node['childNodes']); |
for ($i=0; $i<$childSize; $i++) { |
$childNode =& $this->cloneNode($node['childNodes'][$i], TRUE); // copy child |
$node['childNodes'][$i] =& $childNode; // reference the copy |
$childNode['parentNode'] =& $node; // child references the parent. |
} |
if (!$recursive) { |
//$node['childNodes'][0]['parentNode'] = null; |
//print "<pre>"; |
//var_dump($node); |
} |
return $node; |
} |
/** Nice to have but __sleep() has a bug. |
(2002-2 PHP V4.1. See bug #15350) |
/** |
* PHP cals this function when you call PHP's serialize. |
* |
* It prevents cyclic referencing, which is why print_r() of an XPath object doesn't work. |
* |
function __sleep() { |
// Destroy recursive pointers |
$keys = array_keys($this->nodeIndex); |
$size = sizeOf($keys); |
for ($i=0; $i<$size; $i++) { |
unset($this->nodeIndex[$keys[$i]]['parentNode']); |
} |
unset($this->nodeIndex); |
} |
/** |
* PHP cals this function when you call PHP's unserialize. |
* |
* It reindexes the node-tree |
* |
function __wakeup() { |
$this->reindexNodeTree(); |
} |
*/ |
//----------------------------------------------------------------------------------------- |
// XPath ------ XPath Query / Evaluation Handlers ------ |
//----------------------------------------------------------------------------------------- |
/** |
* Matches (evaluates) an XPath query |
* |
* This method tries to evaluate an XPath query by parsing it. A XML source must |
* have been imported before this method is able to work. |
* |
* @param $xPathQuery (string) XPath query to be evaluated. |
* @param $baseXPath (string) (default is super-root) XPath query to a single document node, |
* from which the XPath query should start evaluating. |
* @return (mixed) The result of the XPath expression. Either: |
* node-set (an ordered collection of absolute references to nodes without duplicates) |
* boolean (true or false) |
* number (a floating-point number) |
* string (a sequence of UCS characters) |
*/ |
function match($xPathQuery, $baseXPath='') { |
if ($this->_indexIsDirty) $this->reindexNodeTree(); |
// Replace a double slashes, because they'll cause problems otherwise. |
static $slashes2descendant = array( |
'//@' => '/descendant_or_self::*/attribute::', |
'//' => '/descendant_or_self::node()/', |
'/@' => '/attribute::'); |
// Stupid idea from W3C to take axes name containing a '-' (dash) !!! |
// We replace the '-' with '_' to avoid the conflict with the minus operator. |
static $dash2underscoreHash = array( |
'-sibling' => '_sibling', |
'-or-' => '_or_', |
'starts-with' => 'starts_with', |
'substring-before' => 'substring_before', |
'substring-after' => 'substring_after', |
'string-length' => 'string_length', |
'normalize-space' => 'normalize_space', |
'x-lower' => 'x_lower', |
'x-upper' => 'x_upper', |
'generate-id' => 'generate_id'); |
if (empty($xPathQuery)) return array(); |
// Special case for when document is empty. |
if (empty($this->nodeRoot)) return array(); |
if (!isSet($this->nodeIndex[$baseXPath])) { |
$xPathSet = $this->_resolveXPathQuery($baseXPath,'match'); |
if (sizeOf($xPathSet) !== 1) { |
$this->_displayError(sprintf($this->errorStrings['NoNodeMatch'], $xPathQuery), __LINE__, __FILE__, FALSE); |
return FALSE; |
} |
$baseXPath = $xPathSet[0]; |
} |
// We should possibly do a proper syntactical parse, but instead we will cheat and just |
// remove any literals that could make things very difficult for us, and replace them with |
// special tags. Then we can treat the xPathQuery much more easily as JUST "syntax". Provided |
// there are no literals in the string, then we can guarentee that most of the operators and |
// syntactical elements are indeed elements and not just part of a literal string. |
$processedxPathQuery = $this->_removeLiterals($xPathQuery); |
// Replace a double slashes, and '-' (dash) in axes names. |
$processedxPathQuery = strtr($processedxPathQuery, $slashes2descendant); |
$processedxPathQuery = strtr($processedxPathQuery, $dash2underscoreHash); |
// Build the context |
$context = array('nodePath' => $baseXPath, 'pos' => 1, 'size' => 1); |
// The primary syntactic construct in XPath is the expression. |
$result = $this->_evaluateExpr($processedxPathQuery, $context); |
// We might have been returned a string.. If so convert back to a literal |
$literalString = $this->_asLiteral($result); |
if ($literalString != FALSE) return $literalString; |
else return $result; |
} |
/** |
* Alias for the match function |
* |
* @see match() |
*/ |
function evaluate($xPathQuery, $baseXPath='') { |
return $this->match($xPathQuery, $baseXPath); |
} |
/** |
* Parse out the literals of an XPath expression. |
* |
* Instead of doing a full lexical parse, we parse out the literal strings, and then |
* Treat the sections of the string either as parts of XPath or literal strings. So |
* this function replaces each literal it finds with a literal reference, and then inserts |
* the reference into an array of strings that we can access. The literals can be accessed |
* later from the literals associative array. |
* |
* Example: |
* XPathExpr = /AAA[@CCC = "hello"]/BBB[DDD = 'world'] |
* => literals: array("hello", "world") |
* return value: /AAA[@CCC = $1]/BBB[DDD = $2] |
* |
* Note: This does not interfere with the VariableReference syntactical element, as these |
* elements must not start with a number. |
* |
* @param $xPathQuery (string) XPath expression to be processed |
* @return (string) The XPath expression without the literals. |
* |
*/ |
function _removeLiterals($xPathQuery) { |
// What comes first? A " or a '? |
if (!preg_match(":^([^\"']*)([\"'].*)$:", $xPathQuery, $aMatches)) { |
// No " or ' means no more literals. |
return $xPathQuery; |
} |
$result = $aMatches[1]; |
$remainder = $aMatches[2]; |
// What kind of literal? |
if (preg_match(':^"([^"]*)"(.*)$:', $remainder, $aMatches)) { |
// A "" literal. |
$literal = $aMatches[1]; |
$remainder = $aMatches[2]; |
} else if (preg_match(":^'([^']*)'(.*)$:", $remainder, $aMatches)) { |
// A '' literal. |
$literal = $aMatches[1]; |
$remainder = $aMatches[2]; |
} else { |
$this->_displayError("The '$xPathQuery' argument began a literal, but did not close it.", __LINE__, __FILE__); |
} |
// Store the literal |
$literalNumber = count($this->axPathLiterals); |
$this->axPathLiterals[$literalNumber] = $literal; |
$result .= '$'.$literalNumber; |
return $result.$this->_removeLiterals($remainder); |
} |
/** |
* Returns the given string as a literal reference. |
* |
* @param $string (string) The string that we are processing |
* @return (mixed) The literal string. FALSE if the string isn't a literal reference. |
*/ |
function _asLiteral($string) { |
if (empty($string)) return FALSE; |
if (empty($string[0])) return FALSE; |
if ($string[0] == '$') { |
$remainder = substr($string, 1); |
if (is_numeric($remainder)) { |
// We have a string reference then. |
$stringNumber = (int)$remainder; |
if ($stringNumber >= count($this->axPathLiterals)) { |
$this->_displayError("Internal error. Found a string reference that we didn't set in xPathQuery: '$xPathQuery'.", __LINE__, __FILE__); |
return FALSE; |
} |
return $this->axPathLiterals[$stringNumber]; |
} |
} |
// It's not a reference then. |
return FALSE; |
} |
/** |
* Adds a literal to our array of literals |
* |
* In order to make sure we don't interpret literal strings as XPath expressions, we have to |
* encode literal strings so that we know that they are not XPaths. |
* |
* @param $string (string) The literal string that we need to store for future access |
* @return (mixed) A reference string to this literal. |
*/ |
function _addLiteral($string) { |
// Store the literal |
$literalNumber = count($this->axPathLiterals); |
$this->axPathLiterals[$literalNumber] = $string; |
$result = '$'.$literalNumber; |
return $result; |
} |
/** |
* Look for operators in the expression |
* |
* Parses through the given expression looking for operators. If found returns |
* the operands and the operator in the resulting array. |
* |
* @param $xPathQuery (string) XPath query to be evaluated. |
* @return (array) If an operator is found, it returns an array containing |
* information about the operator. If no operator is found |
* then it returns an empty array. If an operator is found, |
* but has invalid operands, it returns FALSE. |
* The resulting array has the following entries: |
* 'operator' => The string version of operator that was found, |
* trimmed for whitespace |
* 'left operand' => The left operand, or empty if there was no |
* left operand for this operator. |
* 'right operand' => The right operand, or empty if there was no |
* right operand for this operator. |
*/ |
function _GetOperator($xPathQuery) { |
$position = 0; |
$operator = ''; |
// The results of this function can easily be cached. |
static $aResultsCache = array(); |
if (isset($aResultsCache[$xPathQuery])) { |
return $aResultsCache[$xPathQuery]; |
} |
// Run through all operators and try to find one. |
$opSize = sizeOf($this->operators); |
for ($i=0; $i<$opSize; $i++) { |
// Pick an operator to try. |
$operator = $this->operators[$i]; |
// Quickcheck. If not present don't wast time searching 'the hard way' |
if (strpos($xPathQuery, $operator)===FALSE) continue; |
// Special check |
$position = $this->_searchString($xPathQuery, $operator); |
// Check whether a operator was found. |
if ($position <= 0 ) continue; |
// Check whether it's the equal operator. |
if ($operator == '=') { |
// Also look for other operators containing the equal sign. |
switch ($xPathQuery[$position-1]) { |
case '<' : |
$position--; |
$operator = '<='; |
break; |
case '>' : |
$position--; |
$operator = '>='; |
break; |
case '!' : |
$position--; |
$operator = '!='; |
break; |
default: |
// It's a pure = operator then. |
} |
break; |
} |
if ($operator == '*') { |
// http://www.w3.org/TR/xpath#exprlex: |
// "If there is a preceding token and the preceding token is not one of @, ::, (, [, |
// or an Operator, then a * must be recognized as a MultiplyOperator and an NCName must |
// be recognized as an OperatorName." |
// Get some substrings. |
$character = substr($xPathQuery, $position - 1, 1); |
// Check whether it's a multiply operator or a name test. |
if (strchr('/@:([', $character) != FALSE) { |
// Don't use the operator. |
$position = -1; |
continue; |
} else { |
// The operator is good. Lets use it. |
break; |
} |
} |
// Extremely annoyingly, we could have a node name like "for-each" and we should not |
// parse this as a "-" operator. So if the first char of the right operator is alphabetic, |
// then this is NOT an interger operator. |
if (strchr('-+*', $operator) != FALSE) { |
$rightOperand = trim(substr($xPathQuery, $position + strlen($operator))); |
if (strlen($rightOperand) > 1) { |
if (preg_match(':^\D$:', $rightOperand[0])) { |
// Don't use the operator. |
$position = -1; |
continue; |
} else { |
// The operator is good. Lets use it. |
break; |
} |
} |
} |
// The operator must be good then :o) |
break; |
} // end while each($this->operators) |
// Did we find an operator? |
if ($position == -1) { |
$aResultsCache[$xPathQuery] = array(); |
return array(); |
} |
///////////////////////////////////////////// |
// Get the operands |
// Get the left and the right part of the expression. |
$leftOperand = trim(substr($xPathQuery, 0, $position)); |
$rightOperand = trim(substr($xPathQuery, $position + strlen($operator))); |
// Remove whitespaces. |
$leftOperand = trim($leftOperand); |
$rightOperand = trim($rightOperand); |
///////////////////////////////////////////// |
// Check the operands. |
if ($leftOperand == '') { |
$aResultsCache[$xPathQuery] = FALSE; |
return FALSE; |
} |
if ($rightOperand == '') { |
$aResultsCache[$xPathQuery] = FALSE; |
return FALSE; |
} |
// Package up and return what we found. |
$aResult = array('operator' => $operator, |
'left operand' => $leftOperand, |
'right operand' => $rightOperand); |
$aResultsCache[$xPathQuery] = $aResult; |
return $aResult; |
} |
/** |
* Evaluates an XPath PrimaryExpr |
* |
* http://www.w3.org/TR/xpath#section-Basics |
* |
* [15] PrimaryExpr ::= VariableReference |
* | '(' Expr ')' |
* | Literal |
* | Number |
* | FunctionCall |
* |
* @param $xPathQuery (string) XPath query to be evaluated. |
* @param $context (array) The context from which to evaluate |
* @param $results (mixed) If the expression could be parsed and evaluated as one of these |
* syntactical elements, then this will be either: |
* - node-set (an ordered collection of nodes without duplicates) |
* - boolean (true or false) |
* - number (a floating-point number) |
* - string (a sequence of UCS characters) |
* @return (string) An empty string if the query was successfully parsed and |
* evaluated, else a string containing the reason for failing. |
* @see evaluate() |
*/ |
function _evaluatePrimaryExpr($xPathQuery, $context, &$result) { |
$ThisFunctionName = '_evaluatePrimaryExpr'; |
$bDebugThisFunction = in_array($ThisFunctionName, $this->aDebugFunctions); |
$this->_beginDebugFunction($ThisFunctionName, $bDebugThisFunction); |
if ($bDebugThisFunction) { |
echo "Path: $xPathQuery\n"; |
echo "Context:"; |
$this->_printContext($context); |
echo "\n"; |
} |
// Certain expressions will never be PrimaryExpr, so to speed up processing, cache the |
// results we do find from this function. |
static $aResultsCache = array(); |
// Do while false loop |
$error = ""; |
// If the result is independant of context, then we can cache the result and speed this function |
// up on future calls. |
$bCacheableResult = FALSE; |
do { |
if (isset($aResultsCache[$xPathQuery])) { |
$error = $aResultsCache[$xPathQuery]['Error']; |
$result = $aResultsCache[$xPathQuery]['Result']; |
break; |
} |
// VariableReference |
// ### Not supported. |
// Is it a number? |
// | Number |
if (is_numeric($xPathQuery)) { |
$result = doubleval($xPathQuery); |
$bCacheableResult = TRUE; |
break; |
} |
// If it starts with $, and the remainder is a number, then it's a string. |
// | Literal |
$literal = $this->_asLiteral($xPathQuery); |
if ($literal !== FALSE) { |
$result = $xPathQuery; |
$bCacheableResult = TRUE; |
break; |
} |
// Is it a function? |
// | FunctionCall |
{ |
// Check whether it's all wrapped in a function. will be like count(.*) where .* is anything |
// text() will try to be matched here, so just explicitly ignore it |
$regex = ":^([^\(\)\[\]/]*)\s*\((.*)\)$:U"; |
if (preg_match($regex, $xPathQuery, $aMatch) && $xPathQuery != "text()") { |
$function = $aMatch[1]; |
$data = $aMatch[2]; |
// It is possible that we will get "a() or b()" which will match as function "a" with |
// arguments ") or b(" which is clearly wrong... _bracketsCheck() should catch this. |
if ($this->_bracketsCheck($data)) { |
if (in_array($function, $this->functions)) { |
if ($bDebugThisFunction) echo "XPathExpr: $xPathQuery is a $function() function call:\n"; |
$result = $this->_evaluateFunction($function, $data, $context); |
break; |
} |
} |
} |
} |
// Is it a bracketed expression? |
// | '(' Expr ')' |
// If it is surrounded by () then trim the brackets |
$bBrackets = FALSE; |
if (preg_match(":^\((.*)\):", $xPathQuery, $aMatches)) { |
// Do not keep trimming off the () as we could have "(() and ())" |
$bBrackets = TRUE; |
$xPathQuery = $aMatches[1]; |
} |
if ($bBrackets) { |
// Must be a Expr then. |
$result = $this->_evaluateExpr($xPathQuery, $context); |
break; |
} |
// Can't be a PrimaryExpr then. |
$error = "Expression is not a PrimaryExpr"; |
$bCacheableResult = TRUE; |
} while (FALSE); |
////////////////////////////////////////////// |
// If possible, cache the result. |
if ($bCacheableResult) { |
$aResultsCache[$xPathQuery]['Error'] = $error; |
$aResultsCache[$xPathQuery]['Result'] = $result; |
} |
$this->_closeDebugFunction($ThisFunctionName, array('result' => $result, 'error' => $error), $bDebugThisFunction); |
// Return the result. |
return $error; |
} |
/** |
* Evaluates an XPath Expr |
* |
* $this->evaluate() is the entry point and does some inits, while this |
* function is called recursive internaly for every sub-xPath expresion we find. |
* It handles the following syntax, and calls evaluatePathExpr if it finds that none |
* of this grammer applies. |
* |
* http://www.w3.org/TR/xpath#section-Basics |
* |
* [14] Expr ::= OrExpr |
* [21] OrExpr ::= AndExpr |
* | OrExpr 'or' AndExpr |
* [22] AndExpr ::= EqualityExpr |
* | AndExpr 'and' EqualityExpr |
* [23] EqualityExpr ::= RelationalExpr |
* | EqualityExpr '=' RelationalExpr |
* | EqualityExpr '!=' RelationalExpr |
* [24] RelationalExpr ::= AdditiveExpr |
* | RelationalExpr '<' AdditiveExpr |
* | RelationalExpr '>' AdditiveExpr |
* | RelationalExpr '<=' AdditiveExpr |
* | RelationalExpr '>=' AdditiveExpr |
* [25] AdditiveExpr ::= MultiplicativeExpr |
* | AdditiveExpr '+' MultiplicativeExpr |
* | AdditiveExpr '-' MultiplicativeExpr |
* [26] MultiplicativeExpr ::= UnaryExpr |
* | MultiplicativeExpr MultiplyOperator UnaryExpr |
* | MultiplicativeExpr 'div' UnaryExpr |
* | MultiplicativeExpr 'mod' UnaryExpr |
* [27] UnaryExpr ::= UnionExpr |
* | '-' UnaryExpr |
* [18] UnionExpr ::= PathExpr |
* | UnionExpr '|' PathExpr |
* |
* NOTE: The effect of the above grammar is that the order of precedence is |
* (lowest precedence first): |
* 1) or |
* 2) and |
* 3) =, != |
* 4) <=, <, >=, > |
* 5) +, - |
* 6) *, div, mod |
* 7) - (negate) |
* 8) | |
* |
* @param $xPathQuery (string) XPath query to be evaluated. |
* @param $context (array) An associative array the describes the context from which |
* to evaluate the XPath Expr. Contains three members: |
* 'nodePath' => The absolute XPath expression to the context node |
* 'size' => The context size |
* 'pos' => The context position |
* @return (mixed) The result of the XPath expression. Either: |
* node-set (an ordered collection of nodes without duplicates) |
* boolean (true or false) |
* number (a floating-point number) |
* string (a sequence of UCS characters) |
* @see evaluate() |
*/ |
function _evaluateExpr($xPathQuery, $context) { |
$ThisFunctionName = '_evaluateExpr'; |
$bDebugThisFunction = in_array($ThisFunctionName, $this->aDebugFunctions); |
$this->_beginDebugFunction($ThisFunctionName, $bDebugThisFunction); |
if ($bDebugThisFunction) { |
echo "Path: $xPathQuery\n"; |
echo "Context:"; |
$this->_printContext($context); |
echo "\n"; |
} |
// Numpty check |
if (!isset($xPathQuery) || ($xPathQuery == '')) { |
$this->_displayError("The \$xPathQuery argument must have a value.", __LINE__, __FILE__); |
return FALSE; |
} |
// At the top level we deal with booleans. Only if the Expr is just an AdditiveExpr will |
// the result not be a boolean. |
// |
// |
// Between these syntactical elements we get PathExprs. |
// Do while false loop |
do { |
static $aKnownPathExprCache = array(); |
if (isset($aKnownPathExprCache[$xPathQuery])) { |
if ($bDebugThisFunction) echo "XPathExpr is a PathExpr\n"; |
$result = $this->_evaluatePathExpr($xPathQuery, $context); |
break; |
} |
// Check for operators first, as we could have "() op ()" and the PrimaryExpr will try to |
// say that that is an Expr called ") op (" |
// Set the default position and the type of the operator. |
$aOperatorInfo = $this->_GetOperator($xPathQuery); |
// An expression can be one of these, and we should catch these "first" as they are most common |
if (empty($aOperatorInfo)) { |
$error = $this->_evaluatePrimaryExpr($xPathQuery, $context, $result); |
if (empty($error)) { |
// It could be parsed as a PrimaryExpr, so look no further :o) |
break; |
} |
} |
// Check whether an operator was found. |
if (empty($aOperatorInfo)) { |
if ($bDebugThisFunction) echo "XPathExpr is a PathExpr\n"; |
$aKnownPathExprCache[$xPathQuery] = TRUE; |
// No operator. Means we have a PathExpr then. Go to the next level. |
$result = $this->_evaluatePathExpr($xPathQuery, $context); |
break; |
} |
if ($bDebugThisFunction) { echo "\nFound and operator:"; print_r($aOperatorInfo); }//LEFT:[$leftOperand] oper:[$operator] RIGHT:[$rightOperand]"; |
$operator = $aOperatorInfo['operator']; |
///////////////////////////////////////////// |
// Recursively process the operator |
// Check the kind of operator. |
switch ($operator) { |
case ' or ': |
case ' and ': |
$operatorType = 'Boolean'; |
break; |
case '+': |
case '-': |
case '*': |
case ' div ': |
case ' mod ': |
$operatorType = 'Integer'; |
break; |
case ' | ': |
$operatorType = 'NodeSet'; |
break; |
case '<=': |
case '<': |
case '>=': |
case '>': |
case '=': |
case '!=': |
$operatorType = 'Multi'; |
break; |
default: |
$this->_displayError("Internal error. Default case of switch statement reached.", __LINE__, __FILE__); |
} |
if ($bDebugThisFunction) echo "\nOperator is a [$operator]($operatorType operator)"; |
///////////////////////////////////////////// |
// Evaluate the operands |
// Evaluate the left part. |
if ($bDebugThisFunction) echo "\nEvaluating LEFT:[{$aOperatorInfo['left operand']}]\n"; |
$left = $this->_evaluateExpr($aOperatorInfo['left operand'], $context); |
if ($bDebugThisFunction) {echo "{$aOperatorInfo['left operand']} evals as:\n"; print_r($left); } |
// If it is a boolean operator, it's possible we don't need to evaluate the right part. |
// Only evaluate the right part if we need to. |
$right = ''; |
if ($operatorType == 'Boolean') { |
// Is the left part false? |
$left = $this->_handleFunction_boolean($left, $context); |
if (!$left and ($operator == ' and ')) { |
$result = FALSE; |
break; |
} else if ($left and ($operator == ' or ')) { |
$result = TRUE; |
break; |
} |
} |
// Evaluate the right part |
if ($bDebugThisFunction) echo "\nEvaluating RIGHT:[{$aOperatorInfo['right operand']}]\n"; |
$right = $this->_evaluateExpr($aOperatorInfo['right operand'], $context); |
if ($bDebugThisFunction) {echo "{$aOperatorInfo['right operand']} evals as:\n"; print_r($right); echo "\n";} |
///////////////////////////////////////////// |
// Combine the operands |
// If necessary, work out how to treat the multi operators |
if ($operatorType != 'Multi') { |
$result = $this->_evaluateOperator($left, $operator, $right, $operatorType, $context); |
} else { |
// http://www.w3.org/TR/xpath#booleans |
// If both objects to be compared are node-sets, then the comparison will be true if and |
// only if there is a node in the first node-set and a node in the second node-set such |
// that the result of performing the comparison on the string-values of the two nodes is |
// true. |
// |
// If one object to be compared is a node-set and the other is a number, then the |
// comparison will be true if and only if there is a node in the node-set such that the |
// result of performing the comparison on the number to be compared and on the result of |
// converting the string-value of that node to a number using the number function is true. |
// |
// If one object to be compared is a node-set and the other is a string, then the comparison |
// will be true if and only if there is a node in the node-set such that the result of performing |
// the comparison on the string-value of the node and the other string is true. |
// |
// If one object to be compared is a node-set and the other is a boolean, then the comparison |
// will be true if and only if the result of performing the comparison on the boolean and on |
// the result of converting the node-set to a boolean using the boolean function is true. |
if (is_array($left) || is_array($right)) { |
if ($bDebugThisFunction) echo "As one of the operands is an array, we will need to loop\n"; |
if (is_array($left) && is_array($right)) { |
$operatorType = 'String'; |
} elseif (is_numeric($left) || is_numeric($right)) { |
$operatorType = 'Integer'; |
} elseif (is_bool($left)) { |
$operatorType = 'Boolean'; |
$right = $this->_handleFunction_boolean($right, $context); |
} elseif (is_bool($right)) { |
$operatorType = 'Boolean'; |
$left = $this->_handleFunction_boolean($left, $context); |
} else { |
$operatorType = 'String'; |
} |
if ($bDebugThisFunction) echo "Equals operator is a $operatorType operator\n"; |
// Turn both operands into arrays to simplify logic |
$aLeft = $left; |
$aRight = $right; |
if (!is_array($aLeft)) $aLeft = array($aLeft); |
if (!is_array($aRight)) $aRight = array($aRight); |
$result = FALSE; |
if (!empty($aLeft)) { |
foreach ($aLeft as $leftItem) { |
if (empty($aRight)) break; |
// If the item is from a node set, we should evaluate it's string-value |
if (is_array($left)) { |
if ($bDebugThisFunction) echo "\tObtaining string-value of LHS:$leftItem as it's from a nodeset\n"; |
$leftItem = $this->_stringValue($leftItem); |
} |
foreach ($aRight as $rightItem) { |
// If the item is from a node set, we should evaluate it's string-value |
if (is_array($right)) { |
if ($bDebugThisFunction) echo "\tObtaining string-value of RHS:$rightItem as it's from a nodeset\n"; |
$rightItem = $this->_stringValue($rightItem); |
} |
if ($bDebugThisFunction) echo "\tEvaluating $leftItem $operator $rightItem\n"; |
$result = $this->_evaluateOperator($leftItem, $operator, $rightItem, $operatorType, $context); |
if ($result === TRUE) break; |
} |
if ($result === TRUE) break; |
} |
} |
} |
// When neither object to be compared is a node-set and the operator is = or !=, then the |
// objects are compared by converting them to a common type as follows and then comparing |
// them. |
// |
// If at least one object to be compared is a boolean, then each object to be compared |
// is converted to a boolean as if by applying the boolean function. |
// |
// Otherwise, if at least one object to be compared is a number, then each object to be |
// compared is converted to a number as if by applying the number function. |
// |
// Otherwise, both objects to be compared are converted to strings as if by applying |
// the string function. |
// |
// The = comparison will be true if and only if the objects are equal; the != comparison |
// will be true if and only if the objects are not equal. Numbers are compared for equality |
// according to IEEE 754 [IEEE 754]. Two booleans are equal if either both are true or |
// both are false. Two strings are equal if and only if they consist of the same sequence |
// of UCS characters. |
else { |
if (is_bool($left) || is_bool($right)) { |
$operatorType = 'Boolean'; |
} elseif (is_numeric($left) || is_numeric($right)) { |
$operatorType = 'Integer'; |
} else { |
$operatorType = 'String'; |
} |
if ($bDebugThisFunction) echo "Equals operator is a $operatorType operator\n"; |
$result = $this->_evaluateOperator($left, $operator, $right, $operatorType, $context); |
} |
} |
} while (FALSE); |
////////////////////////////////////////////// |
$this->_closeDebugFunction($ThisFunctionName, $result, $bDebugThisFunction); |
// Return the result. |
return $result; |
} |
/** |
* Evaluate the result of an operator whose operands have been evaluated |
* |
* If the operator type is not "NodeSet", then neither the left or right operators |
* will be node sets, as the processing when one or other is an array is complex, |
* and should be handled by the caller. |
* |
* @param $left (mixed) The left operand |
* @param $right (mixed) The right operand |
* @param $operator (string) The operator to use to combine the operands |
* @param $operatorType (string) The type of the operator. Either 'Boolean', |
* 'Integer', 'String', or 'NodeSet' |
* @param $context (array) The context from which to evaluate |
* @return (mixed) The result of the XPath expression. Either: |
* node-set (an ordered collection of nodes without duplicates) |
* boolean (true or false) |
* number (a floating-point number) |
* string (a sequence of UCS characters) |
*/ |
function _evaluateOperator($left, $operator, $right, $operatorType, $context) { |
$ThisFunctionName = '_evaluateOperator'; |
$bDebugThisFunction = in_array($ThisFunctionName, $this->aDebugFunctions); |
$this->_beginDebugFunction($ThisFunctionName, $bDebugThisFunction); |
if ($bDebugThisFunction) { |
echo "left: $left\n"; |
echo "right: $right\n"; |
echo "operator: $operator\n"; |
echo "operator type: $operatorType\n"; |
} |
// Do while false loop |
do { |
// Handle the operator depending on the operator type. |
switch ($operatorType) { |
case 'Boolean': |
{ |
// Boolify the arguments. (The left arg is already a bool) |
$right = $this->_handleFunction_boolean($right, $context); |
switch ($operator) { |
case '=': // Compare the two results. |
$result = (bool)($left == $right); |
break; |
case ' or ': // Return the two results connected by an 'or'. |
$result = (bool)( $left or $right ); |
break; |
case ' and ': // Return the two results connected by an 'and'. |
$result = (bool)( $left and $right ); |
break; |
case '!=': // Check whether the two results are not equal. |
$result = (bool)( $left != $right ); |
break; |
default: |
$this->_displayError("Internal error. Default case of switch statement reached.", __LINE__, __FILE__); |
} |
} |
break; |
case 'Integer': |
{ |
// Convert both left and right operands into numbers. |
if (empty($left) && ($operator == '-')) { |
// There may be no left operator if the op is '-' |
$left = 0; |
} else { |
$left = $this->_handleFunction_number($left, $context); |
} |
$right = $this->_handleFunction_number($right, $context); |
if ($bDebugThisFunction) echo "\nLeft is $left, Right is $right\n"; |
switch ($operator) { |
case '=': // Compare the two results. |
$result = (bool)($left == $right); |
break; |
case '!=': // Compare the two results. |
$result = (bool)($left != $right); |
break; |
case '+': // Return the result by adding one result to the other. |
$result = $left + $right; |
break; |
case '-': // Return the result by decrease one result by the other. |
$result = $left - $right; |
break; |
case '*': // Return a multiplication of the two results. |
$result = $left * $right; |
break; |
case ' div ': // Return a division of the two results. |
$result = $left / $right; |
break; |
case ' mod ': // Return a modulo division of the two results. |
$result = $left % $right; |
break; |
case '<=': // Compare the two results. |
$result = (bool)( $left <= $right ); |
break; |
case '<': // Compare the two results. |
$result = (bool)( $left < $right ); |
break; |
case '>=': // Compare the two results. |
$result = (bool)( $left >= $right ); |
break; |
case '>': // Compare the two results. |
$result = (bool)( $left > $right ); |
break; |
default: |
$this->_displayError("Internal error. Default case of switch statement reached.", __LINE__, __FILE__); |
} |
} |
break; |
case 'NodeSet': |
// Add the nodes to the result set |
$result = array_merge($left, $right); |
// Remove duplicated nodes. |
$result = array_unique($result); |
// Preserve doc order if there was more than one query. |
if (count($result) > 1) { |
$result = $this->_sortByDocOrder($result); |
} |
break; |
case 'String': |
$left = $this->_handleFunction_string($left, $context); |
$right = $this->_handleFunction_string($right, $context); |
if ($bDebugThisFunction) echo "\nLeft is $left, Right is $right\n"; |
switch ($operator) { |
case '=': // Compare the two results. |
$result = (bool)($left == $right); |
break; |
case '!=': // Compare the two results. |
$result = (bool)($left != $right); |
break; |
default: |
$this->_displayError("Internal error. Default case of switch statement reached.", __LINE__, __FILE__); |
} |
break; |
default: |
$this->_displayError("Internal error. Default case of switch statement reached.", __LINE__, __FILE__); |
} |
} while (FALSE); |
////////////////////////////////////////////// |
$this->_closeDebugFunction($ThisFunctionName, $result, $bDebugThisFunction); |
// Return the result. |
return $result; |
} |
/** |
* Evaluates an XPath PathExpr |
* |
* It handles the following syntax: |
* |
* http://www.w3.org/TR/xpath#node-sets |
* http://www.w3.org/TR/xpath#NT-LocationPath |
* http://www.w3.org/TR/xpath#path-abbrev |
* http://www.w3.org/TR/xpath#NT-Step |
* |
* [19] PathExpr ::= LocationPath |
* | FilterExpr |
* | FilterExpr '/' RelativeLocationPath |
* | FilterExpr '//' RelativeLocationPath |
* [20] FilterExpr ::= PrimaryExpr |
* | FilterExpr Predicate |
* [1] LocationPath ::= RelativeLocationPath |
* | AbsoluteLocationPath |
* [2] AbsoluteLocationPath ::= '/' RelativeLocationPath? |
* | AbbreviatedAbsoluteLocationPath |
* [3] RelativeLocationPath ::= Step |
* | RelativeLocationPath '/' Step |
* | AbbreviatedRelativeLocationPath |
* [4] Step ::= AxisSpecifier NodeTest Predicate* |
* | AbbreviatedStep |
* [5] AxisSpecifier ::= AxisName '::' |
* | AbbreviatedAxisSpecifier |
* [10] AbbreviatedAbsoluteLocationPath |
* ::= '//' RelativeLocationPath |
* [11] AbbreviatedRelativeLocationPath |
* ::= RelativeLocationPath '//' Step |
* [12] AbbreviatedStep ::= '.' |
* | '..' |
* [13] AbbreviatedAxisSpecifier |
* ::= '@'? |
* |
* If you expand all the abbreviated versions, then the grammer simplifies to: |
* |
* [19] PathExpr ::= RelativeLocationPath |
* | '/' RelativeLocationPath? |
* | FilterExpr |
* | FilterExpr '/' RelativeLocationPath |
* [20] FilterExpr ::= PrimaryExpr |
* | FilterExpr Predicate |
* [3] RelativeLocationPath ::= Step |
* | RelativeLocationPath '/' Step |
* [4] Step ::= AxisName '::' NodeTest Predicate* |
* |
* Conceptually you can say that we should split by '/' and try to treat the parts |
* as steps, and if that fails then try to treat it as a PrimaryExpr. |
* |
* @param $PathExpr (string) PathExpr syntactical element |
* @param $context (array) The context from which to evaluate |
* @return (mixed) The result of the XPath expression. Either: |
* node-set (an ordered collection of nodes without duplicates) |
* boolean (true or false) |
* number (a floating-point number) |
* string (a sequence of UCS characters) |
* @see evaluate() |
*/ |
function _evaluatePathExpr($PathExpr, $context) { |
$ThisFunctionName = '_evaluatePathExpr'; |
$bDebugThisFunction = in_array($ThisFunctionName, $this->aDebugFunctions); |
$this->_beginDebugFunction($ThisFunctionName, $bDebugThisFunction); |
if ($bDebugThisFunction) { |
echo "PathExpr: $PathExpr\n"; |
echo "Context:"; |
$this->_printContext($context); |
echo "\n"; |
} |
// Numpty check |
if (empty($PathExpr)) { |
$this->_displayError("The \$PathExpr argument must have a value.", __LINE__, __FILE__); |
return FALSE; |
} |
////////////////////////////////////////////// |
// Parsing the expression into steps is a cachable operation as it doesn't depend on the context |
static $aResultsCache = array(); |
if (isset($aResultsCache[$PathExpr])) { |
$steps = $aResultsCache[$PathExpr]; |
} else { |
// Note that we have used $this->slashes2descendant to simplify this logic, so the |
// "Abbreviated" paths basically never exist as '//' never exists. |
// mini syntax check |
if (!$this->_bracketsCheck($PathExpr)) { |
$this->_displayError('While parsing an XPath query, in the PathExpr "' . |
$PathExpr. |
'", there was an invalid number of brackets or a bracket mismatch.', __LINE__, __FILE__); |
} |
// Save the current path. |
$this->currentXpathQuery = $PathExpr; |
// Split the path at every slash *outside* a bracket. |
$steps = $this->_bracketExplode('/', $PathExpr); |
if ($bDebugThisFunction) { echo "<hr>Split the path '$PathExpr' at every slash *outside* a bracket.\n "; print_r($steps); } |
// Check whether the first element is empty. |
if (empty($steps[0])) { |
// Remove the first and empty element. It's a starting '//'. |
array_shift($steps); |
} |
$aResultsCache[$PathExpr] = $steps; |
} |
// Start to evaluate the steps. |
// ### Consider implementing an evaluateSteps() function that removes recursion from |
// evaluateStep() |
$result = $this->_evaluateStep($steps, $context); |
// Preserve doc order if there was more than one result |
if (count($result) > 1) { |
$result = $this->_sortByDocOrder($result); |
} |
////////////////////////////////////////////// |
$this->_closeDebugFunction($ThisFunctionName, $result, $bDebugThisFunction); |
// Return the result. |
return $result; |
} |
/** |
* Sort an xPathSet by doc order. |
* |
* @param $xPathSet (array) Array of full paths to nodes that need to be sorted |
* @return (array) Array containing the same contents as $xPathSet, but |
* with the contents in doc order |
*/ |
function _sortByDocOrder($xPathSet) { |
$ThisFunctionName = '_sortByDocOrder'; |
$bDebugThisFunction = in_array($ThisFunctionName, $this->aDebugFunctions); |
$this->_beginDebugFunction($ThisFunctionName, $bDebugThisFunction); |
if ($bDebugThisFunction) { |
echo "_sortByDocOrder(xPathSet:[".count($xPathSet)."])"; |
echo "xPathSet:\n"; |
print_r($xPathSet); |
echo "<hr>\n"; |
} |
////////////////////////////////////////////// |
$aResult = array(); |
// Spot some common shortcuts. |
if (count($xPathSet) < 1) { |
$aResult = $xPathSet; |
} else { |
// Build an array of doc-pos indexes. |
$aDocPos = array(); |
$nodeCount = count($this->nodeIndex); |
$aPaths = array_keys($this->nodeIndex); |
if ($bDebugThisFunction) { |
echo "searching for path indices in array_keys(this->nodeIndex)...\n"; |
//print_r($aPaths); |
} |
// The last index we found. In general the elements will be in groups |
// that are themselves in order. |
$iLastIndex = 0; |
foreach ($xPathSet as $path) { |
// Cycle round the nodes, starting at the last index, looking for the path. |
$foundNode = FALSE; |
for ($iIndex = $iLastIndex; $iIndex < $nodeCount + $iLastIndex; $iIndex++) { |
$iThisIndex = $iIndex % $nodeCount; |
if (!strcmp($aPaths[$iThisIndex],$path)) { |
// we have found the doc-position index of the path |
$aDocPos[] = $iThisIndex; |
$iLastIndex = $iThisIndex; |
$foundNode = TRUE; |
break; |
} |
} |
if ($bDebugThisFunction) { |
if (!$foundNode) |
echo "Error: $path not found in \$this->nodeIndex\n"; |
else |
echo "Found node after ".($iIndex - $iLastIndex)." iterations\n"; |
} |
} |
// Now count the number of doc pos we have and the number of results and |
// confirm that we have the same number of each. |
$iDocPosCount = count($aDocPos); |
$iResultCount = count($xPathSet); |
if ($iDocPosCount != $iResultCount) { |
if ($bDebugThisFunction) { |
echo "count(\$aDocPos)=$iDocPosCount; count(\$result)=$iResultCount\n"; |
print_r(array_keys($this->nodeIndex)); |
} |
$this->_displayError('Results from _InternalEvaluate() are corrupt. '. |
'Do you need to call reindexNodeTree()?', __LINE__, __FILE__); |
} |
// Now sort the indexes. |
sort($aDocPos); |
// And now convert back to paths. |
$iPathCount = count($aDocPos); |
for ($iIndex = 0; $iIndex < $iPathCount; $iIndex++) { |
$aResult[] = $aPaths[$aDocPos[$iIndex]]; |
} |
} |
// Our result from the function is this array. |
$result = $aResult; |
////////////////////////////////////////////// |
$this->_closeDebugFunction($ThisFunctionName, $result, $bDebugThisFunction); |
// Return the result. |
return $result; |
} |
/** |
* Evaluate a step from a XPathQuery expression at a specific contextPath. |
* |
* Steps are the arguments of a XPathQuery when divided by a '/'. A contextPath is a |
* absolute XPath (or vector of XPaths) to a starting node(s) from which the step should |
* be evaluated. |
* |
* @param $steps (array) Vector containing the remaining steps of the current |
* XPathQuery expression. |
* @param $context (array) The context from which to evaluate |
* @return (array) Vector of absolute XPath's as a result of the step |
* evaluation. The results will not necessarily be in doc order |
* @see _evaluatePathExpr() |
*/ |
function _evaluateStep($steps, $context) { |
$ThisFunctionName = '_evaluateStep'; |
$bDebugThisFunction = in_array($ThisFunctionName, $this->aDebugFunctions); |
$this->_beginDebugFunction($ThisFunctionName, $bDebugThisFunction); |
if ($bDebugThisFunction) { |
echo "Context:"; |
$this->_printContext($context); |
echo "\n"; |
echo "Steps: "; |
print_r($steps); |
echo "<hr>\n"; |
} |
////////////////////////////////////////////// |
$result = array(); // Create an empty array for saving the abs. XPath's found. |
$contextPaths = array(); // Create an array to save the new contexts. |
$step = trim(array_shift($steps)); // Get this step. |
if ($bDebugThisFunction) echo __LINE__.":Evaluating step $step\n"; |
$axis = $this->_getAxis($step); // Get the axis of the current step. |
// If there was no axis, then it must be a PrimaryExpr |
if ($axis == FALSE) { |
if ($bDebugThisFunction) echo __LINE__.":Step is not an axis but a PrimaryExpr\n"; |
// ### This isn't correct, as the result of this function might not be a node set. |
$error = $this->_evaluatePrimaryExpr($step, $context, $contextPaths); |
if (!empty($error)) { |
$this->_displayError("Expression failed to parse as PrimaryExpr because: $error" |
, __LINE__, __FILE__, FALSE); |
} |
} else { |
if ($bDebugThisFunction) { echo __LINE__.":Axis of step is:\n"; print_r($axis); echo "\n";} |
$method = '_handleAxis_' . $axis['axis']; // Create the name of the method. |
// Check whether the axis handler is defined. If not display an error message. |
if (!method_exists($this, $method)) { |
$this->_displayError('While parsing an XPath query, the axis ' . |
$axis['axis'] . ' could not be handled, because this version does not support this axis.', __LINE__, __FILE__); |
} |
if ($bDebugThisFunction) echo __LINE__.":Calling user method $method\n"; |
// Perform an axis action. |
$contextPaths = $this->$method($axis, $context['nodePath']); |
if ($bDebugThisFunction) { echo __LINE__.":We found these contexts from this step:\n"; print_r( $contextPaths ); echo "\n";} |
} |
// Check whether there are predicates. |
if (count($contextPaths) > 0 && count($axis['predicate']) > 0) { |
if ($bDebugThisFunction) echo __LINE__.":Filtering contexts by predicate...\n"; |
// Check whether each node fits the predicates. |
$contextPaths = $this->_checkPredicates($contextPaths, $axis['predicate']); |
} |
// Check whether there are more steps left. |
if (count($steps) > 0) { |
if ($bDebugThisFunction) echo __LINE__.":Evaluating next step given the context of the first step...\n"; |
// Continue the evaluation of the next steps. |
// Run through the array. |
$size = sizeOf($contextPaths); |
for ($pos=0; $pos<$size; $pos++) { |
// Build new context |
$newContext = array('nodePath' => $contextPaths[$pos], 'size' => $size, 'pos' => $pos + 1); |
if ($bDebugThisFunction) echo __LINE__.":Evaluating step for the {$contextPaths[$pos]} context...\n"; |
// Call this method for this single path. |
$xPathSetNew = $this->_evaluateStep($steps, $newContext); |
if ($bDebugThisFunction) {echo "New results for this context:\n"; print_r($xPathSetNew);} |
$result = array_merge($result, $xPathSetNew); |
} |
// Remove duplicated nodes. |
$result = array_unique($result); |
} else { |
$result = $contextPaths; // Save the found contexts. |
} |
////////////////////////////////////////////// |
$this->_closeDebugFunction($ThisFunctionName, $result, $bDebugThisFunction); |
// Return the result. |
return $result; |
} |
/** |
* Checks whether a node matches predicates. |
* |
* This method checks whether a list of nodes passed to this method match |
* a given list of predicates. |
* |
* @param $xPathSet (array) Array of full paths of all nodes to be tested. |
* @param $predicates (array) Array of predicates to use. |
* @return (array) Vector of absolute XPath's that match the given predicates. |
* @see _evaluateStep() |
*/ |
function _checkPredicates($xPathSet, $predicates) { |
$ThisFunctionName = '_checkPredicates'; |
$bDebugThisFunction = in_array($ThisFunctionName, $this->aDebugFunctions); |
$this->_beginDebugFunction($ThisFunctionName, $bDebugThisFunction); |
if ($bDebugThisFunction) { |
echo "XPathSet:"; |
print_r($xPathSet); |
echo "Predicates:"; |
print_r($predicates); |
echo "<hr>"; |
} |
////////////////////////////////////////////// |
// Create an empty set of nodes. |
$result = array(); |
// Run through all predicates. |
$pSize = sizeOf($predicates); |
for ($j=0; $j<$pSize; $j++) { |
$predicate = $predicates[$j]; |
if ($bDebugThisFunction) echo "Evaluating predicate \"$predicate\"\n"; |
// This will contain all the nodes that match this predicate |
$aNewSet = array(); |
// Run through all nodes. |
$contextSize = count($xPathSet); |
for ($contextPos=0; $contextPos<$contextSize; $contextPos++) { |
$xPath = $xPathSet[$contextPos]; |
// Build the context for this predicate |
$context = array('nodePath' => $xPath, 'size' => $contextSize, 'pos' => $contextPos + 1); |
// Check whether the predicate is just an number. |
if (preg_match('/^\d+$/', $predicate)) { |
if ($bDebugThisFunction) echo "Taking short cut and calling _handleFunction_position() directly.\n"; |
// Take a short cut. If it is just a position, then call |
// _handleFunction_position() directly. 70% of the |
// time this will be the case. ## N.S |
// $check = (bool) ($predicate == $context['pos']); |
$check = (bool) ($predicate == $this->_handleFunction_position('', $context)); |
} else { |
// Else do the predicate check the long and through way. |
$check = $this->_evaluateExpr($predicate, $context); |
} |
if ($bDebugThisFunction) { |
echo "Evaluating the predicate returned "; |
var_dump($check); |
echo "\n"; |
} |
if (is_int($check)) { // Check whether it's an integer. |
// Check whether it's the current position. |
$check = (bool) ($check == $this->_handleFunction_position('', $context)); |
} else { |
$check = (bool) ($this->_handleFunction_boolean($check, $context)); |
// if ($bDebugThisFunction) {echo $this->_handleFunction_string($check, $context);} |
} |
if ($bDebugThisFunction) echo "Node $xPath matches predicate $predicate: " . (($check) ? "TRUE" : "FALSE") ."\n"; |
// Do we add it? |
if ($check) $aNewSet[] = $xPath; |
} |
// Use the newly filtered list. |
$xPathSet = $aNewSet; |
if ($bDebugThisFunction) {echo "Node set now contains : "; print_r($xPathSet); } |
} |
$result = $xPathSet; |
////////////////////////////////////////////// |
$this->_closeDebugFunction($ThisFunctionName, $result, $bDebugThisFunction); |
// Return the array of nodes. |
return $result; |
} |
/** |
* Evaluates an XPath function |
* |
* This method evaluates a given XPath function with its arguments on a |
* specific node of the document. |
* |
* @param $function (string) Name of the function to be evaluated. |
* @param $arguments (string) String containing the arguments being |
* passed to the function. |
* @param $context (array) The context from which to evaluate |
* @return (mixed) This method returns the result of the evaluation of |
* the function. Depending on the function the type of the |
* return value can be different. |
* @see evaluate() |
*/ |
function _evaluateFunction($function, $arguments, $context) { |
$ThisFunctionName = '_evaluateFunction'; |
$bDebugThisFunction = in_array($ThisFunctionName, $this->aDebugFunctions); |
$this->_beginDebugFunction($ThisFunctionName, $bDebugThisFunction); |
if ($bDebugThisFunction) { |
if (is_array($arguments)) { |
echo "Arguments:\n"; |
print_r($arguments); |
} else { |
echo "Arguments: $arguments\n"; |
} |
echo "Context:"; |
$this->_printContext($context); |
echo "\n"; |
echo "<hr>\n"; |
} |
///////////////////////////////////// |
// Remove whitespaces. |
$function = trim($function); |
$arguments = trim($arguments); |
// Create the name of the function handling function. |
$method = '_handleFunction_'. $function; |
// Check whether the function handling function is available. |
if (!method_exists($this, $method)) { |
// Display an error message. |
$this->_displayError("While parsing an XPath query, ". |
"the function \"$function\" could not be handled, because this ". |
"version does not support this function.", __LINE__, __FILE__); |
} |
if ($bDebugThisFunction) echo "Calling function $method($arguments)\n"; |
// Return the result of the function. |
$result = $this->$method($arguments, $context); |
////////////////////////////////////////////// |
// Return the nodes found. |
$this->_closeDebugFunction($ThisFunctionName, $result, $bDebugThisFunction); |
// Return the result. |
return $result; |
} |
/** |
* Checks whether a node matches a node-test. |
* |
* This method checks whether a node in the document matches a given node-test. |
* A node test is something like text(), node(), or an element name. |
* |
* @param $contextPath (string) Full xpath of the node, which should be tested for |
* matching the node-test. |
* @param $nodeTest (string) String containing the node-test for the node. |
* @return (boolean) This method returns TRUE if the node matches the |
* node-test, otherwise FALSE. |
* @see evaluate() |
*/ |
function _checkNodeTest($contextPath, $nodeTest) { |
// Empty node test means that it must match |
if (empty($nodeTest)) return TRUE; |
if ($nodeTest == '*') { |
// * matches all element nodes. |
return (!preg_match(':/[^/]+\(\)\[\d+\]$:U', $contextPath)); |
} |
elseif (preg_match('/^[\w-:\.]+$/', $nodeTest)) { |
// http://www.w3.org/TR/2000/REC-xml-20001006#NT-Name |
// The real spec for what constitutes whitespace is quite elaborate, and |
// we currently just hope that "\w" catches them all. In reality it should |
// start with a letter too, not a number, but we've just left it simple. |
// It's just a node name test. It should end with "/$nodeTest[x]" |
return (preg_match('"/'.$nodeTest.'\[\d+\]$"', $contextPath)); |
} |
elseif (preg_match('/\(/U', $nodeTest)) { // Check whether it's a function. |
// Get the type of function to use. |
$function = $this->_prestr($nodeTest, '('); |
// Check whether the node fits the method. |
switch ($function) { |
case 'node': // Add this node to the list of nodes. |
return TRUE; |
case 'text': // Check whether the node has some text. |
$tmp = implode('', $this->nodeIndex[$contextPath]['textParts']); |
if (!empty($tmp)) { |
return TRUE; // Add this node to the list of nodes. |
} |
break; |
/******** NOT supported (yet?) |
case 'comment': // Check whether the node has some comment. |
if (!empty($this->nodeIndex[$contextPath]['comment'])) { |
return TRUE; // Add this node to the list of nodes. |
} |
break; |
case 'processing-instruction': |
$literal = $this->_afterstr($axis['node-test'], '('); // Get the literal argument. |
$literal = substr($literal, 0, strlen($literal) - 1); // Cut the literal. |
// Check whether a literal was given. |
if (!empty($literal)) { |
// Check whether the node's processing instructions are matching the literals given. |
if ($this->nodeIndex[$context]['processing-instructions'] == $literal) { |
return TRUE; // Add this node to the node-set. |
} |
} else { |
// Check whether the node has processing instructions. |
if (!empty($this->nodeIndex[$contextPath]['processing-instructions'])) { |
return TRUE; // Add this node to the node-set. |
} |
} |
break; |
***********/ |
default: // Display an error message. |
$this->_displayError('While parsing an XPath query there was an undefined function called "' . |
str_replace($function, '<b>'.$function.'</b>', $this->currentXpathQuery) .'"', __LINE__, __FILE__); |
} |
} |
else { // Display an error message. |
$this->_displayError("While parsing the XPath query \"{$this->currentXpathQuery}\" ". |
"an empty and therefore invalid node-test has been found.", __LINE__, __FILE__, FALSE); |
} |
return FALSE; // Don't add this context. |
} |
//----------------------------------------------------------------------------------------- |
// XPath ------ XPath AXIS Handlers ------ |
//----------------------------------------------------------------------------------------- |
/** |
* Retrieves axis information from an XPath query step. |
* |
* This method tries to extract the name of the axis and its node-test |
* from a given step of an XPath query at a given node. If it can't parse |
* the step, then we treat it as a PrimaryExpr. |
* |
* [4] Step ::= AxisSpecifier NodeTest Predicate* |
* | AbbreviatedStep |
* [5] AxisSpecifier ::= AxisName '::' |
* | AbbreviatedAxisSpecifier |
* [12] AbbreviatedStep ::= '.' |
* | '..' |
* [13] AbbreviatedAxisSpecifier |
* ::= '@'? |
* |
* [7] NodeTest ::= NameTest |
* | NodeType '(' ')' |
* | 'processing-instruction' '(' Literal ')' |
* [37] NameTest ::= '*' |
* | NCName ':' '*' |
* | QName |
* [38] NodeType ::= 'comment' |
* | 'text' |
* | 'processing-instruction' |
* | 'node' |
* |
* @param $step (string) String containing a step of an XPath query. |
* @return (array) Contains information about the axis found in the step, or FALSE |
* if the string isn't a valid step. |
* @see _evaluateStep() |
*/ |
function _getAxis($step) { |
// The results of this function are very cachable, as it is completely independant of context. |
static $aResultsCache = array(); |
// Create an array to save the axis information. |
$axis = array( |
'axis' => '', |
'node-test' => '', |
'predicate' => array() |
); |
$cacheKey = $step; |
do { // parse block |
$parseBlock = 1; |
if (isset($aResultsCache[$cacheKey])) { |
return $aResultsCache[$cacheKey]; |
} else { |
// We have some danger of causing recursion here if we refuse to parse a step as having an |
// axis, and demand it be treated as a PrimaryExpr. So if we are going to fail, make sure |
// we record what we tried, so that we can catch to see if it comes straight back. |
$guess = array( |
'axis' => 'child', |
'node-test' => $step, |
'predicate' => array()); |
$aResultsCache[$cacheKey] = $guess; |
} |
/////////////////////////////////////////////////// |
// Spot the steps that won't come with an axis |
// Check whether the step is empty or only self. |
if (empty($step) OR ($step == '.') OR ($step == 'current()')) { |
// Set it to the default value. |
$step = '.'; |
$axis['axis'] = 'self'; |
$axis['node-test'] = '*'; |
break $parseBlock; |
} |
if ($step == '..') { |
// Select the parent axis. |
$axis['axis'] = 'parent'; |
$axis['node-test'] = '*'; |
break $parseBlock; |
} |
/////////////////////////////////////////////////// |
// Pull off the predicates |
// Check whether there are predicates and add the predicate to the list |
// of predicates without []. Get contents of every [] found. |
$groups = $this->_getEndGroups($step); |
//print_r($groups); |
$groupCount = count($groups); |
while (($groupCount > 0) && ($groups[$groupCount - 1][0] == '[')) { |
// Remove the [] and add the predicate to the top of the list |
$predicate = substr($groups[$groupCount - 1], 1, -1); |
array_unshift($axis['predicate'], $predicate); |
// Pop a group off the end of the list |
array_pop($groups); |
$groupCount--; |
} |
// Finally stick the rest back together and this is the rest of our step |
if ($groupCount > 0) { |
$step = implode('', $groups); |
} |
/////////////////////////////////////////////////// |
// Pull off the axis |
// Check for abbreviated syntax |
if ($step[0] == '@') { |
// Use the attribute axis and select the attribute. |
$axis['axis'] = 'attribute'; |
$step = substr($step, 1); |
} else { |
// Check whether the axis is given in plain text. |
if (preg_match("/^([^:]*)::(.*)$/", $step, $match)) { |
// Split the step to extract axis and node-test. |
$axis['axis'] = $match[1]; |
$step = $match[2]; |
} else { |
// The default axis is child |
$axis['axis'] = 'child'; |
} |
} |
/////////////////////////////////////////////////// |
// Process the rest which will either a node test, or else this isn't a step. |
// Check whether is an abbreviated syntax. |
if ($step == '*') { |
// Use the child axis and select all children. |
$axis['node-test'] = '*'; |
break $parseBlock; |
} |
// ### I'm pretty sure our current handling of cdata is a fudge, and we should |
// really do this better, but leave this as is for now. |
if ($step == "text()") { |
// Handle the text node |
$axis["node-test"] = "cdata"; |
break $parseBlock; |
} |
// There are a few node tests that we match verbatim. |
if ($step == "node()" |
|| $step == "comment()" |
|| $step == "text()" |
|| $step == "processing-instruction") { |
$axis["node-test"] = $step; |
break $parseBlock; |
} |
// processing-instruction() is allowed to take an argument, but if it does, the argument |
// is a literal, which we will have parsed out to $[number]. |
if (preg_match(":processing-instruction\(\$\d*\):", $step)) { |
$axis["node-test"] = $step; |
break $parseBlock; |
} |
// The only remaining way this can be a step, is if the remaining string is a simple name |
// or else a :* name. |
// http://www.w3.org/TR/xpath#NT-NameTest |
// NameTest ::= '*' |
// | NCName ':' '*' |
// | QName |
// QName ::= (Prefix ':')? LocalPart |
// Prefix ::= NCName |
// LocalPart ::= NCName |
// |
// ie |
// NameTest ::= '*' |
// | NCName ':' '*' |
// | (NCName ':')? NCName |
// NCName ::= (Letter | '_') (NCNameChar)* |
$NCName = "[a-zA-Z_][\w\.\-_]*"; |
if (preg_match("/^$NCName:$NCName$/", $step) |
|| preg_match("/^$NCName:*$/", $step)) { |
$axis['node-test'] = $step; |
if (!empty($this->parseOptions[XML_OPTION_CASE_FOLDING])) { |
// Case in-sensitive |
$axis['node-test'] = strtoupper($axis['node-test']); |
} |
// Not currently recursing |
$LastFailedStep = ''; |
$LastFailedContext = ''; |
break $parseBlock; |
} |
// It's not a node then, we must treat it as a PrimaryExpr |
// Check for recursion |
if ($LastFailedStep == $step) { |
$this->_displayError('Recursion detected while parsing an XPath query, in the step ' . |
str_replace($step, '<b>'.$step.'</b>', $this->currentXpathQuery) |
, __LINE__, __FILE__, FALSE); |
$axis['node-test'] = $step; |
} else { |
$LastFailedStep = $step; |
$axis = FALSE; |
} |
} while(FALSE); // end parse block |
// Check whether it's a valid axis. |
if ($axis !== FALSE) { |
if (!in_array($axis['axis'], array_merge($this->axes, array('function')))) { |
// Display an error message. |
$this->_displayError('While parsing an XPath query, in the step ' . |
str_replace($step, '<b>'.$step.'</b>', $this->currentXpathQuery) . |
' the invalid axis ' . $axis['axis'] . ' was found.', __LINE__, __FILE__, FALSE); |
} |
} |
// Cache the real axis information |
$aResultsCache[$cacheKey] = $axis; |
// Return the axis information. |
return $axis; |
} |
/** |
* Handles the XPath child axis. |
* |
* This method handles the XPath child axis. It essentially filters out the |
* children to match the name specified after the '/'. |
* |
* @param $axis (array) Array containing information about the axis. |
* @param $contextPath (string) xpath to starting node from which the axis should |
* be processed. |
* @return (array) A vector containing all nodes that were found, during |
* the evaluation of the axis. |
* @see evaluate() |
*/ |
function _handleAxis_child($axis, $contextPath) { |
$xPathSet = array(); // Create an empty node-set to hold the results of the child matches |
if ($axis["node-test"] == "cdata") { |
if (!isSet($this->nodeIndex[$contextPath]['textParts']) ) return ''; |
$tSize = sizeOf($this->nodeIndex[$contextPath]['textParts']); |
for ($i=1; $i<=$tSize; $i++) { |
$xPathSet[] = $contextPath . '/text()['.$i.']'; |
} |
} |
else { |
// Get a list of all children. |
$allChildren = $this->nodeIndex[$contextPath]['childNodes']; |
// Run through all children in the order they where set. |
$cSize = sizeOf($allChildren); |
for ($i=0; $i<$cSize; $i++) { |
$childPath = $contextPath .'/'. $allChildren[$i]['name'] .'['. $allChildren[$i]['contextPos'] .']'; |
$textChildPath = $contextPath.'/text()['.($i + 1).']'; |
// Check the text node |
if ($this->_checkNodeTest($textChildPath, $axis['node-test'])) { // node test check |
$xPathSet[] = $textChildPath; // Add the child to the node-set. |
} |
// Check the actual node |
if ($this->_checkNodeTest($childPath, $axis['node-test'])) { // node test check |
$xPathSet[] = $childPath; // Add the child to the node-set. |
} |
} |
// Finally there will be one more text node to try |
$textChildPath = $contextPath.'/text()['.($cSize + 1).']'; |
// Check the text node |
if ($this->_checkNodeTest($textChildPath, $axis['node-test'])) { // node test check |
$xPathSet[] = $textChildPath; // Add the child to the node-set. |
} |
} |
return $xPathSet; // Return the nodeset. |
} |
/** |
* Handles the XPath parent axis. |
* |
* @param $axis (array) Array containing information about the axis. |
* @param $contextPath (string) xpath to starting node from which the axis should be processed. |
* @return (array) A vector containing all nodes that were found, during the |
* evaluation of the axis. |
* @see evaluate() |
*/ |
function _handleAxis_parent($axis, $contextPath) { |
$xPathSet = array(); // Create an empty node-set. |
// Check whether the parent matches the node-test. |
$parentPath = $this->getParentXPath($contextPath); |
if ($this->_checkNodeTest($parentPath, $axis['node-test'])) { |
$xPathSet[] = $parentPath; // Add this node to the list of nodes. |
} |
return $xPathSet; // Return the nodeset. |
} |
/** |
* Handles the XPath attribute axis. |
* |
* @param $axis (array) Array containing information about the axis. |
* @param $contextPath (string) xpath to starting node from which the axis should be processed. |
* @return (array) A vector containing all nodes that were found, during the evaluation of the axis. |
* @see evaluate() |
*/ |
function _handleAxis_attribute($axis, $contextPath) { |
$xPathSet = array(); // Create an empty node-set. |
// Check whether all nodes should be selected. |
$nodeAttr = $this->nodeIndex[$contextPath]['attributes']; |
if ($axis['node-test'] == '*' |
|| $axis['node-test'] == 'node()') { |
foreach($nodeAttr as $key=>$dummy) { // Run through the attributes. |
$xPathSet[] = $contextPath.'/attribute::'.$key; // Add this node to the node-set. |
} |
} |
elseif (isset($nodeAttr[$axis['node-test']])) { |
$xPathSet[] = $contextPath . '/attribute::'. $axis['node-test']; // Add this node to the node-set. |
} |
return $xPathSet; // Return the nodeset. |
} |
/** |
* Handles the XPath self axis. |
* |
* @param $axis (array) Array containing information about the axis. |
* @param $contextPath (string) xpath to starting node from which the axis should be processed. |
* @return (array) A vector containing all nodes that were found, during the evaluation of the axis. |
* @see evaluate() |
*/ |
function _handleAxis_self($axis, $contextPath) { |
$xPathSet = array(); // Create an empty node-set. |
// Check whether the context match the node-test. |
if ($this->_checkNodeTest($contextPath, $axis['node-test'])) { |
$xPathSet[] = $contextPath; // Add this node to the node-set. |
} |
return $xPathSet; // Return the nodeset. |
} |
/** |
* Handles the XPath descendant axis. |
* |
* @param $axis (array) Array containing information about the axis. |
* @param $contextPath (string) xpath to starting node from which the axis should be processed. |
* @return (array) A vector containing all nodes that were found, during the evaluation of the axis. |
* @see evaluate() |
*/ |
function _handleAxis_descendant($axis, $contextPath) { |
$xPathSet = array(); // Create an empty node-set. |
// Get a list of all children. |
$allChildren = $this->nodeIndex[$contextPath]['childNodes']; |
// Run through all children in the order they where set. |
$cSize = sizeOf($allChildren); |
for ($i=0; $i<$cSize; $i++) { |
$childPath = $allChildren[$i]['xpath']; |
// Check whether the child matches the node-test. |
if ($this->_checkNodeTest($childPath, $axis['node-test'])) { |
$xPathSet[] = $childPath; // Add the child to the list of nodes. |
} |
// Recurse to the next level. |
$xPathSet = array_merge($xPathSet, $this->_handleAxis_descendant($axis, $childPath)); |
} |
return $xPathSet; // Return the nodeset. |
} |
/** |
* Handles the XPath ancestor axis. |
* |
* @param $axis (array) Array containing information about the axis. |
* @param $contextPath (string) xpath to starting node from which the axis should be processed. |
* @return (array) A vector containing all nodes that were found, during the evaluation of the axis. |
* @see evaluate() |
*/ |
function _handleAxis_ancestor($axis, $contextPath) { |
$xPathSet = array(); // Create an empty node-set. |
$parentPath = $this->getParentXPath($contextPath); // Get the parent of the current node. |
// Check whether the parent isn't super-root. |
if (!empty($parentPath)) { |
// Check whether the parent matches the node-test. |
if ($this->_checkNodeTest($parentPath, $axis['node-test'])) { |
$xPathSet[] = $parentPath; // Add the parent to the list of nodes. |
} |
// Handle all other ancestors. |
$xPathSet = array_merge($this->_handleAxis_ancestor($axis, $parentPath), $xPathSet); |
} |
return $xPathSet; // Return the nodeset. |
} |
/** |
* Handles the XPath namespace axis. |
* |
* @param $axis (array) Array containing information about the axis. |
* @param $contextPath (string) xpath to starting node from which the axis should be processed. |
* @return (array) A vector containing all nodes that were found, during the evaluation of the axis. |
* @see evaluate() |
*/ |
function _handleAxis_namespace($axis, $contextPath) { |
$this->_displayError("The axis 'namespace is not suported'", __LINE__, __FILE__, FALSE); |
} |
/** |
* Handles the XPath following axis. |
* |
* @param $axis (array) Array containing information about the axis. |
* @param $contextPath (string) xpath to starting node from which the axis should be processed. |
* @return (array) A vector containing all nodes that were found, during the evaluation of the axis. |
* @see evaluate() |
*/ |
function _handleAxis_following($axis, $contextPath) { |
$xPathSet = array(); // Create an empty node-set. |
do { // try-block |
$node = $this->nodeIndex[$contextPath]; // Get the current node |
$position = $node['pos']; // Get the current tree position. |
$parent = $node['parentNode']; |
// Check if there is a following sibling at all; if not end. |
if ($position >= sizeOf($parent['childNodes'])) break; // try-block |
// Build the starting abs. XPath |
$startXPath = $parent['childNodes'][$position+1]['xpath']; |
// Run through all nodes of the document. |
$nodeKeys = array_keys($this->nodeIndex); |
$nodeSize = sizeOf($nodeKeys); |
for ($k=0; $k<$nodeSize; $k++) { |
if ($nodeKeys[$k] == $startXPath) break; // Check whether this is the starting abs. XPath |
} |
for (; $k<$nodeSize; $k++) { |
// Check whether the node fits the node-test. |
if ($this->_checkNodeTest($nodeKeys[$k], $axis['node-test'])) { |
$xPathSet[] = $nodeKeys[$k]; // Add the node to the list of nodes. |
} |
} |
} while(FALSE); |
return $xPathSet; // Return the nodeset. |
} |
/** |
* Handles the XPath preceding axis. |
* |
* @param $axis (array) Array containing information about the axis. |
* @param $contextPath (string) xpath to starting node from which the axis should be processed. |
* @return (array) A vector containing all nodes that were found, during the evaluation of the axis. |
* @see evaluate() |
*/ |
function _handleAxis_preceding($axis, $contextPath) { |
$xPathSet = array(); // Create an empty node-set. |
// Run through all nodes of the document. |
foreach ($this->nodeIndex as $xPath=>$dummy) { |
if (empty($xPath)) continue; // skip super-Root |
// Check whether this is the context node. |
if ($xPath == $contextPath) { |
break; // After this we won't look for more nodes. |
} |
if (!strncmp($xPath, $contextPath, strLen($xPath))) { |
continue; |
} |
// Check whether the node fits the node-test. |
if ($this->_checkNodeTest($xPath, $axis['node-test'])) { |
$xPathSet[] = $xPath; // Add the node to the list of nodes. |
} |
} |
return $xPathSet; // Return the nodeset. |
} |
/** |
* Handles the XPath following-sibling axis. |
* |
* @param $axis (array) Array containing information about the axis. |
* @param $contextPath (string) xpath to starting node from which the axis should be processed. |
* @return (array) A vector containing all nodes that were found, during the evaluation of the axis. |
* @see evaluate() |
*/ |
function _handleAxis_following_sibling($axis, $contextPath) { |
$xPathSet = array(); // Create an empty node-set. |
// Get all children from the parent. |
$siblings = $this->_handleAxis_child($axis, $this->getParentXPath($contextPath)); |
// Create a flag whether the context node was already found. |
$found = FALSE; |
// Run through all siblings. |
$size = sizeOf($siblings); |
for ($i=0; $i<$size; $i++) { |
$sibling = $siblings[$i]; |
// Check whether the context node was already found. |
if ($found) { |
// Check whether the sibling matches the node-test. |
if ($this->_checkNodeTest($sibling, $axis['node-test'])) { |
$xPathSet[] = $sibling; // Add the sibling to the list of nodes. |
} |
} |
// Check if we reached *this* context node. |
if ($sibling == $contextPath) { |
$found = TRUE; // Continue looking for other siblings. |
} |
} |
return $xPathSet; // Return the nodeset. |
} |
/** |
* Handles the XPath preceding-sibling axis. |
* |
* @param $axis (array) Array containing information about the axis. |
* @param $contextPath (string) xpath to starting node from which the axis should be processed. |
* @return (array) A vector containing all nodes that were found, during the evaluation of the axis. |
* @see evaluate() |
*/ |
function _handleAxis_preceding_sibling($axis, $contextPath) { |
$xPathSet = array(); // Create an empty node-set. |
// Get all children from the parent. |
$siblings = $this->_handleAxis_child($axis, $this->getParentXPath($contextPath)); |
// Run through all siblings. |
$size = sizeOf($siblings); |
for ($i=0; $i<$size; $i++) { |
$sibling = $siblings[$i]; |
// Check whether this is the context node. |
if ($sibling == $contextPath) { |
break; // Don't continue looking for other siblings. |
} |
// Check whether the sibling matches the node-test. |
if ($this->_checkNodeTest($sibling, $axis['node-test'])) { |
$xPathSet[] = $sibling; // Add the sibling to the list of nodes. |
} |
} |
return $xPathSet; // Return the nodeset. |
} |
/** |
* Handles the XPath descendant-or-self axis. |
* |
* @param $axis (array) Array containing information about the axis. |
* @param $contextPath (string) xpath to starting node from which the axis should be processed. |
* @return (array) A vector containing all nodes that were found, during the evaluation of the axis. |
* @see evaluate() |
*/ |
function _handleAxis_descendant_or_self($axis, $contextPath) { |
$xPathSet = array(); // Create an empty node-set. |
// Read the nodes. |
$xPathSet = array_merge( |
$this->_handleAxis_self($axis, $contextPath), |
$this->_handleAxis_descendant($axis, $contextPath) |
); |
return $xPathSet; // Return the nodeset. |
} |
/** |
* Handles the XPath ancestor-or-self axis. |
* |
* This method handles the XPath ancestor-or-self axis. |
* |
* @param $axis (array) Array containing information about the axis. |
* @param $contextPath (string) xpath to starting node from which the axis should be processed. |
* @return (array) A vector containing all nodes that were found, during the evaluation of the axis. |
* @see evaluate() |
*/ |
function _handleAxis_ancestor_or_self ( $axis, $contextPath) { |
$xPathSet = array(); // Create an empty node-set. |
// Read the nodes. |
$xPathSet = array_merge( |
$this->_handleAxis_ancestor($axis, $contextPath), |
$this->_handleAxis_self($axis, $contextPath) |
); |
return $xPathSet; // Return the nodeset. |
} |
//----------------------------------------------------------------------------------------- |
// XPath ------ XPath FUNCTION Handlers ------ |
//----------------------------------------------------------------------------------------- |
/** |
* Handles the XPath function last. |
* |
* @param $arguments (string) String containing the arguments that were passed to the function. |
* @param $context (array) The context from which to evaluate the function |
* @return (mixed) Depending on the type of function being processed |
* @see evaluate() |
*/ |
function _handleFunction_last($arguments, $context) { |
return $context['size']; |
} |
/** |
* Handles the XPath function position. |
* |
* @param $arguments (string) String containing the arguments that were passed to the function. |
* @param $context (array) The context from which to evaluate the function |
* @return (mixed) Depending on the type of function being processed |
* @see evaluate() |
*/ |
function _handleFunction_position($arguments, $context) { |
return $context['pos']; |
} |
/** |
* Handles the XPath function count. |
* |
* @param $arguments (string) String containing the arguments that were passed to the function. |
* @param $context (array) The context from which to evaluate the function |
* @return (mixed) Depending on the type of function being processed |
* @see evaluate() |
*/ |
function _handleFunction_count($arguments, $context) { |
// Evaluate the argument of the method as an XPath and return the number of results. |
return count($this->_evaluateExpr($arguments, $context)); |
} |
/** |
* Handles the XPath function id. |
* |
* @param $arguments (string) String containing the arguments that were passed to the function. |
* @param $context (array) The context from which to evaluate the function |
* @return (mixed) Depending on the type of function being processed |
* @see evaluate() |
*/ |
function _handleFunction_id($arguments, $context) { |
$arguments = trim($arguments); // Trim the arguments. |
$arguments = explode(' ', $arguments); // Now split the arguments into an array. |
// Create a list of nodes. |
$resultXPaths = array(); |
// Run through all nodes of the document. |
$keys = array_keys($this->nodeIndex); |
$kSize = $sizeOf($keys); |
for ($i=0; $i<$kSize; $i++) { |
if (empty($keys[$i])) continue; // skip super-Root |
if (in_array($this->nodeIndex[$keys[$i]]['attributes']['id'], $arguments)) { |
$resultXPaths[] = $context['nodePath']; // Add this node to the list of nodes. |
} |
} |
return $resultXPaths; // Return the list of nodes. |
} |
/** |
* Handles the XPath function name. |
* |
* @param $arguments (string) String containing the arguments that were passed to the function. |
* @param $context (array) The context from which to evaluate the function |
* @return (mixed) Depending on the type of function being processed |
* @see evaluate() |
*/ |
function _handleFunction_name($arguments, $context) { |
// If the argument it omitted, it defaults to a node-set with the context node as its only member. |
if (empty($arguments)) { |
return $this->_addLiteral($this->nodeIndex[$context['nodePath']]['name']); |
} |
// Evaluate the argument to get a node set. |
$nodeSet = $this->_evaluateExpr($arguments, $context); |
if (!is_array($nodeSet)) return ''; |
if (count($nodeSet) < 1) return ''; |
if (!isset($this->nodeIndex[$nodeSet[0]])) return ''; |
// Return a reference to the name of the node. |
return $this->_addLiteral($this->nodeIndex[$nodeSet[0]]['name']); |
} |
/** |
* Handles the XPath function string. |
* |
* http://www.w3.org/TR/xpath#section-String-Functions |
* |
* @param $arguments (string) String containing the arguments that were passed to the function. |
* @param $context (array) The context from which to evaluate the function |
* @return (mixed) Depending on the type of function being processed |
* @see evaluate() |
*/ |
function _handleFunction_string($arguments, $context) { |
// Check what type of parameter is given |
if (is_array($arguments)) { |
// Get the value of the first result (which means we want to concat all the text...unless |
// a specific text() node has been given, and it will switch off to substringData |
if (!count($arguments)) $result = ''; |
else { |
$result = $this->_stringValue($arguments[0]); |
if (($literal = $this->_asLiteral($result)) !== FALSE) { |
$result = $literal; |
} |
} |
} |
// Is it a number string? |
elseif (preg_match('/^[0-9]+(\.[0-9]+)?$/', $arguments) OR preg_match('/^\.[0-9]+$/', $arguments)) { |
// ### Note no support for NaN and Infinity. |
$number = doubleval($arguments); // Convert the digits to a number. |
$result = strval($number); // Return the number. |
} |
elseif (is_bool($arguments)) { // Check whether it's TRUE or FALSE and return as string. |
// ### Note that we used to return TRUE and FALSE which was incorrect according to the standard. |
if ($arguments === TRUE) { |
$result = 'true'; |
} else { |
$result = 'false'; |
} |
} |
elseif (($literal = $this->_asLiteral($arguments)) !== FALSE) { |
return $literal; |
} |
elseif (!empty($arguments)) { |
// Spec says: |
// "An object of a type other than the four basic types is converted to a string in a way that |
// is dependent on that type." |
// Use the argument as an XPath. |
$result = $this->_evaluateExpr($arguments, $context); |
if (is_string($result) && is_string($arguments) && (!strcmp($result, $arguments))) { |
$this->_displayError("Loop detected in XPath expression. Probably an internal error :o/. _handleFunction_string($result)", __LINE__, __FILE__, FALSE); |
return ''; |
} else { |
$result = $this->_handleFunction_string($result, $context); |
} |
} |
else { |
$result = ''; // Return an empty string. |
} |
return $result; |
} |
/** |
* Handles the XPath function concat. |
* |
* @param $arguments (string) String containing the arguments that were passed to the function. |
* @param $context (array) The context from which to evaluate the function |
* @return (mixed) Depending on the type of function being processed |
* @see evaluate() |
*/ |
function _handleFunction_concat($arguments, $context) { |
// Split the arguments. |
$arguments = explode(',', $arguments); |
// Run through each argument and evaluate it. |
$size = sizeof($arguments); |
for ($i=0; $i<$size; $i++) { |
$arguments[$i] = trim($arguments[$i]); // Trim each argument. |
// Evaluate it. |
$arguments[$i] = $this->_handleFunction_string($arguments[$i], $context); |
} |
$arguments = implode('', $arguments); // Put the string together and return it. |
return $this->_addLiteral($arguments); |
} |
/** |
* Handles the XPath function starts-with. |
* |
* @param $arguments (string) String containing the arguments that were passed to the function. |
* @param $context (array) The context from which to evaluate the function |
* @return (mixed) Depending on the type of function being processed |
* @see evaluate() |
*/ |
function _handleFunction_starts_with($arguments, $context) { |
// Get the arguments. |
$first = trim($this->_prestr($arguments, ',')); |
$second = trim($this->_afterstr($arguments, ',')); |
// Evaluate each argument. |
$first = $this->_handleFunction_string($first, $context); |
$second = $this->_handleFunction_string($second, $context); |
// Check whether the first string starts with the second one. |
return (bool) ereg('^'.$second, $first); |
} |
/** |
* Handles the XPath function contains. |
* |
* @param $arguments (string) String containing the arguments that were passed to the function. |
* @param $context (array) The context from which to evaluate the function |
* @return (mixed) Depending on the type of function being processed |
* @see evaluate() |
*/ |
function _handleFunction_contains($arguments, $context) { |
// Get the arguments. |
$first = trim($this->_prestr($arguments, ',')); |
$second = trim($this->_afterstr($arguments, ',')); |
//echo "Predicate: $arguments First: ".$first." Second: ".$second."\n"; |
// Evaluate each argument. |
$first = $this->_handleFunction_string($first, $context); |
$second = $this->_handleFunction_string($second, $context); |
//echo $second.": ".$first."\n"; |
// If the search string is null, then the provided there is a value it will contain it as |
// it is considered that all strings contain the empty string. ## N.S. |
if ($second==='') return TRUE; |
// Check whether the first string starts with the second one. |
if (strpos($first, $second) === FALSE) { |
return FALSE; |
} else { |
return TRUE; |
} |
} |
/** |
* Handles the XPath function substring-before. |
* |
* @param $arguments (string) String containing the arguments that were passed to the function. |
* @param $context (array) The context from which to evaluate the function |
* @return (mixed) Depending on the type of function being processed |
* @see evaluate() |
*/ |
function _handleFunction_substring_before($arguments, $context) { |
// Get the arguments. |
$first = trim($this->_prestr($arguments, ',')); |
$second = trim($this->_afterstr($arguments, ',')); |
// Evaluate each argument. |
$first = $this->_handleFunction_string($first, $context); |
$second = $this->_handleFunction_string($second, $context); |
// Return the substring. |
return $this->_addLiteral($this->_prestr(strval($first), strval($second))); |
} |
/** |
* Handles the XPath function substring-after. |
* |
* @param $arguments (string) String containing the arguments that were passed to the function. |
* @param $context (array) The context from which to evaluate the function |
* @return (mixed) Depending on the type of function being processed |
* @see evaluate() |
*/ |
function _handleFunction_substring_after($arguments, $context) { |
// Get the arguments. |
$first = trim($this->_prestr($arguments, ',')); |
$second = trim($this->_afterstr($arguments, ',')); |
// Evaluate each argument. |
$first = $this->_handleFunction_string($first, $context); |
$second = $this->_handleFunction_string($second, $context); |
// Return the substring. |
return $this->_addLiteral($this->_afterstr(strval($first), strval($second))); |
} |
/** |
* Handles the XPath function substring. |
* |
* @param $arguments (string) String containing the arguments that were passed to the function. |
* @param $context (array) The context from which to evaluate the function |
* @return (mixed) Depending on the type of function being processed |
* @see evaluate() |
*/ |
function _handleFunction_substring($arguments, $context) { |
// Split the arguments. |
$arguments = explode(",", $arguments); |
$size = sizeOf($arguments); |
for ($i=0; $i<$size; $i++) { // Run through all arguments. |
$arguments[$i] = trim($arguments[$i]); // Trim the string. |
// Evaluate each argument. |
$arguments[$i] = $this->_handleFunction_string($arguments[$i], $context); |
} |
// Check whether a third argument was given and return the substring.. |
if (!empty($arguments[2])) { |
return $this->_addLiteral(substr(strval($arguments[0]), $arguments[1] - 1, $arguments[2])); |
} else { |
return $this->_addLiteral(substr(strval($arguments[0]), $arguments[1] - 1)); |
} |
} |
/** |
* Handles the XPath function string-length. |
* |
* @param $arguments (string) String containing the arguments that were passed to the function. |
* @param $context (array) The context from which to evaluate the function |
* @return (mixed) Depending on the type of function being processed |
* @see evaluate() |
*/ |
function _handleFunction_string_length($arguments, $context) { |
$arguments = trim($arguments); // Trim the argument. |
// Evaluate the argument. |
$arguments = $this->_handleFunction_string($arguments, $context); |
return strlen(strval($arguments)); // Return the length of the string. |
} |
/** |
* Handles the XPath function normalize-space. |
* |
* The normalize-space function returns the argument string with whitespace |
* normalized by stripping leading and trailing whitespace and replacing sequences |
* of whitespace characters by a single space. |
* If the argument is omitted, it defaults to the context node converted to a string, |
* in other words the string-value of the context node |
* |
* @param $arguments (string) String containing the arguments that were passed to the function. |
* @param $context (array) The context from which to evaluate the function |
* @return (stri)g trimed string |
* @see evaluate() |
*/ |
function _handleFunction_normalize_space($arguments, $context) { |
if (empty($arguments)) { |
$arguments = $this->getParentXPath($context['nodePath']).'/'.$this->nodeIndex[$context['nodePath']]['name'].'['.$this->nodeIndex[$context['nodePath']]['contextPos'].']'; |
} else { |
$arguments = $this->_handleFunction_string($arguments, $context); |
} |
$arguments = trim(preg_replace (";[[:space:]]+;s",' ',$arguments)); |
return $this->_addLiteral($arguments); |
} |
/** |
* Handles the XPath function translate. |
* |
* @param $arguments (string) String containing the arguments that were passed to the function. |
* @param $context (array) The context from which to evaluate the function |
* @return (mixed) Depending on the type of function being processed |
* @see evaluate() |
*/ |
function _handleFunction_translate($arguments, $context) { |
$arguments = explode(',', $arguments); // Split the arguments. |
$size = sizeOf($arguments); |
for ($i=0; $i<$size; $i++) { // Run through all arguments. |
$arguments[$i] = trim($arguments[$i]); // Trim the argument. |
// Evaluate the argument. |
$arguments[$i] = $this->_handleFunction_string($arguments[$i], $context); |
} |
// Return the translated string. |
return $this->_addLiteral(strtr($arguments[0], $arguments[1], $arguments[2])); |
} |
/** |
* Handles the XPath function boolean. |
* |
* http://www.w3.org/TR/xpath#section-Boolean-Functions |
* |
* @param $arguments (string) String containing the arguments that were passed to the function. |
* @param $context (array) The context from which to evaluate the function |
* @return (mixed) Depending on the type of function being processed |
* @see evaluate() |
*/ |
function _handleFunction_boolean($arguments, $context) { |
if (empty($arguments)) { |
return FALSE; // Sorry, there were no arguments. |
} |
// a bool is dead obvious |
elseif (is_bool($arguments)) { |
return $arguments; |
} |
// a node-set is true if and only if it is non-empty |
elseif (is_array($arguments)) { |
return (count($arguments) > 0); |
} |
// a number is true if and only if it is neither positive or negative zero nor NaN |
// (Straight out of the XPath spec.. makes no sense?????) |
elseif (preg_match('/^[0-9]+(\.[0-9]+)?$/', $arguments) || preg_match('/^\.[0-9]+$/', $arguments)) { |
$number = doubleval($arguments); // Convert the digits to a number. |
// If number zero return FALSE else TRUE. |
if ($number == 0) return FALSE; else return TRUE; |
} |
// a string is true if and only if its length is non-zero |
elseif (($literal = $this->_asLiteral($arguments)) !== FALSE) { |
return (strlen($literal) != 0); |
} |
// an object of a type other than the four basic types is converted to a boolean in a |
// way that is dependent on that type |
else { |
// Spec says: |
// "An object of a type other than the four basic types is converted to a number in a way |
// that is dependent on that type" |
// Try to evaluate the argument as an XPath. |
$result = $this->_evaluateExpr($arguments, $context); |
if (is_string($result) && is_string($arguments) && (!strcmp($result, $arguments))) { |
$this->_displayError("Loop detected in XPath expression. Probably an internal error :o/. _handleFunction_boolean($result)", __LINE__, __FILE__, FALSE); |
return FALSE; |
} else { |
return $this->_handleFunction_boolean($result, $context); |
} |
} |
} |
/** |
* Handles the XPath function not. |
* |
* @param $arguments (string) String containing the arguments that were passed to the function. |
* @param $context (array) The context from which to evaluate the function |
* @return (mixed) Depending on the type of function being processed |
* @see evaluate() |
*/ |
function _handleFunction_not($arguments, $context) { |
// Return the negative value of the content of the brackets. |
$bArgResult = $this->_handleFunction_boolean($arguments, $context); |
//echo "Before inversion: ".($bArgResult?"TRUE":"FALSE")."\n"; |
return !$bArgResult; |
} |
/** |
* Handles the XPath function TRUE. |
* |
* @param $arguments (string) String containing the arguments that were passed to the function. |
* @param $context (array) The context from which to evaluate the function |
* @return (mixed) Depending on the type of function being processed |
* @see evaluate() |
*/ |
function _handleFunction_true($arguments, $context) { |
return TRUE; // Return TRUE. |
} |
/** |
* Handles the XPath function FALSE. |
* |
* @param $arguments (string) String containing the arguments that were passed to the function. |
* @param $context (array) The context from which to evaluate the function |
* @return (mixed) Depending on the type of function being processed |
* @see evaluate() |
*/ |
function _handleFunction_false($arguments, $context) { |
return FALSE; // Return FALSE. |
} |
/** |
* Handles the XPath function lang. |
* |
* @param $arguments (string) String containing the arguments that were passed to the function. |
* @param $context (array) The context from which to evaluate the function |
* @return (mixed) Depending on the type of function being processed |
* @see evaluate() |
*/ |
function _handleFunction_lang($arguments, $context) { |
$arguments = trim($arguments); // Trim the arguments. |
$currentNode = $this->nodeIndex[$context['nodePath']]; |
while (!empty($currentNode['name'])) { // Run through the ancestors. |
// Check whether the node has an language attribute. |
if (isSet($currentNode['attributes']['xml:lang'])) { |
// Check whether it's the language, the user asks for; if so return TRUE else FALSE |
return eregi('^'.$arguments, $currentNode['attributes']['xml:lang']); |
} |
$currentNode = $currentNode['parentNode']; // Move up to parent |
} // End while |
return FALSE; |
} |
/** |
* Handles the XPath function number. |
* |
* http://www.w3.org/TR/xpath#section-Number-Functions |
* |
* @param $arguments (string) String containing the arguments that were passed to the function. |
* @param $context (array) The context from which to evaluate the function |
* @return (mixed) Depending on the type of function being processed |
* @see evaluate() |
*/ |
function _handleFunction_number($arguments, $context) { |
// Check the type of argument. |
// A string that is a number |
if (is_numeric($arguments)) { |
return doubleval($arguments); // Return the argument as a number. |
} |
// A bool |
elseif (is_bool($arguments)) { // Return TRUE/FALSE as a number. |
if ($arguments === TRUE) return 1; else return 0; |
} |
// A node set |
elseif (is_array($arguments)) { |
// Is converted to a string then handled like a string |
$string = $this->_handleFunction_string($arguments, $context); |
if (is_numeric($string)) |
return doubleval($string); |
} |
elseif (($literal = $this->_asLiteral($arguments)) !== FALSE) { |
if (is_numeric($literal)) { |
return doubleval($literal); |
} else { |
// If we are to stick strictly to the spec, we should return NaN, but lets just |
// leave PHP to see if can do some dynamic conversion. |
return $literal; |
} |
} |
else { |
// Spec says: |
// "An object of a type other than the four basic types is converted to a number in a way |
// that is dependent on that type" |
// Try to evaluate the argument as an XPath. |
$result = $this->_evaluateExpr($arguments, $context); |
if (is_string($result) && is_string($arguments) && (!strcmp($result, $arguments))) { |
$this->_displayError("Loop detected in XPath expression. Probably an internal error :o/. _handleFunction_number($result)", __LINE__, __FILE__, FALSE); |
return FALSE; |
} else { |
return $this->_handleFunction_number($result, $context); |
} |
} |
} |
/** |
* Handles the XPath function sum. |
* |
* @param $arguments (string) String containing the arguments that were passed to the function. |
* @param $context (array) The context from which to evaluate the function |
* @return (mixed) Depending on the type of function being processed |
* @see evaluate() |
*/ |
function _handleFunction_sum($arguments, $context) { |
$arguments = trim($arguments); // Trim the arguments. |
// Evaluate the arguments as an XPath query. |
$result = $this->_evaluateExpr($arguments, $context); |
$sum = 0; // Create a variable to save the sum. |
// The sum function expects a node set as an argument. |
if (is_array($result)) { |
// Run through all results. |
$size = sizeOf($result); |
for ($i=0; $i<$size; $i++) { |
$value = $this->_stringValue($result[$i], $context); |
if (($literal = $this->_asLiteral($value)) !== FALSE) { |
$value = $literal; |
} |
$sum += doubleval($value); // Add it to the sum. |
} |
} |
return $sum; // Return the sum. |
} |
/** |
* Handles the XPath function floor. |
* |
* @param $arguments (string) String containing the arguments that were passed to the function. |
* @param $context (array) The context from which to evaluate the function |
* @return (mixed) Depending on the type of function being processed |
* @see evaluate() |
*/ |
function _handleFunction_floor($arguments, $context) { |
if (!is_numeric($arguments)) { |
$arguments = $this->_handleFunction_number($arguments, $context); |
} |
$arguments = doubleval($arguments); // Convert the arguments to a number. |
return floor($arguments); // Return the result |
} |
/** |
* Handles the XPath function ceiling. |
* |
* @param $arguments (string) String containing the arguments that were passed to the function. |
* @param $context (array) The context from which to evaluate the function |
* @return (mixed) Depending on the type of function being processed |
* @see evaluate() |
*/ |
function _handleFunction_ceiling($arguments, $context) { |
if (!is_numeric($arguments)) { |
$arguments = $this->_handleFunction_number($arguments, $context); |
} |
$arguments = doubleval($arguments); // Convert the arguments to a number. |
return ceil($arguments); // Return the result |
} |
/** |
* Handles the XPath function round. |
* |
* @param $arguments (string) String containing the arguments that were passed to the function. |
* @param $context (array) The context from which to evaluate the function |
* @return (mixed) Depending on the type of function being processed |
* @see evaluate() |
*/ |
function _handleFunction_round($arguments, $context) { |
if (!is_numeric($arguments)) { |
$arguments = $this->_handleFunction_number($arguments, $context); |
} |
$arguments = doubleval($arguments); // Convert the arguments to a number. |
return round($arguments); // Return the result |
} |
//----------------------------------------------------------------------------------------- |
// XPath ------ XPath Extension FUNCTION Handlers ------ |
//----------------------------------------------------------------------------------------- |
/** |
* Handles the XPath function x-lower. |
* |
* lower case a string. |
* string x-lower(string) |
* |
* @param $arguments (string) String containing the arguments that were passed to the function. |
* @param $context (array) The context from which to evaluate the function |
* @return (mixed) Depending on the type of function being processed |
* @see evaluate() |
*/ |
function _handleFunction_x_lower($arguments, $context) { |
// Evaluate the argument. |
$string = $this->_handleFunction_string($arguments, $context); |
// Return a reference to the lowercased string |
return $this->_addLiteral(strtolower(strval($string))); |
} |
/** |
* Handles the XPath function x-upper. |
* |
* upper case a string. |
* string x-upper(string) |
* |
* @param $arguments (string) String containing the arguments that were passed to the function. |
* @param $context (array) The context from which to evaluate the function |
* @return (mixed) Depending on the type of function being processed |
* @see evaluate() |
*/ |
function _handleFunction_x_upper($arguments, $context) { |
// Evaluate the argument. |
$string = $this->_handleFunction_string($arguments, $context); |
// Return a reference to the lowercased string |
return $this->_addLiteral(strtoupper(strval($string))); |
} |
/** |
* Handles the XPath function generate-id. |
* |
* Produce a unique id for the first node of the node set. |
* |
* Example usage, produces an index of all the nodes in an .xml document, where the content of each |
* "section" is the exported node as XML. |
* |
* $aFunctions = $xPath->match('//'); |
* |
* foreach ($aFunctions as $Function) { |
* $id = $xPath->match("generate-id($Function)"); |
* echo "<a href='#$id'>$Function</a><br>"; |
* } |
* |
* foreach ($aFunctions as $Function) { |
* $id = $xPath->match("generate-id($Function)"); |
* echo "<h2 id='$id'>$Function</h2>"; |
* echo htmlspecialchars($xPath->exportAsXml($Function)); |
* } |
* |
* @param $arguments (string) String containing the arguments that were passed to the function. |
* @param $context (array) The context from which to evaluate the function |
* @return (mixed) Depending on the type of function being processed |
* @author Ricardo Garcia |
* @see evaluate() |
*/ |
function _handleFunction_generate_id($arguments, $context) { |
// If the argument is omitted, it defaults to a node-set with the context node as its only member. |
if (is_string($arguments) && empty($arguments)) { |
// We need ids then |
$this->_generate_ids(); |
return $this->_addLiteral($this->nodeIndex[$context['nodePath']]['generated_id']); |
} |
// Evaluate the argument to get a node set. |
$nodeSet = $this->_evaluateExpr($arguments, $context); |
if (!is_array($nodeSet)) return ''; |
if (count($nodeSet) < 1) return ''; |
if (!isset($this->nodeIndex[$nodeSet[0]])) return ''; |
// Return a reference to the name of the node. |
// We need ids then |
$this->_generate_ids(); |
return $this->_addLiteral($this->nodeIndex[$nodeSet[0]]['generated_id']); |
} |
//----------------------------------------------------------------------------------------- |
// XPathEngine ------ Help Stuff ------ |
//----------------------------------------------------------------------------------------- |
/** |
* Decodes the character set entities in the given string. |
* |
* This function is given for convenience, as all text strings or attributes |
* are going to come back to you with their entities still encoded. You can |
* use this function to remove these entites. |
* |
* It makes use of the get_html_translation_table(HTML_ENTITIES) php library |
* call, so is limited in the same ways. At the time of writing this seemed |
* be restricted to iso-8859-1 |
* |
* ### Provide an option that will do this by default. |
* |
* @param $encodedData (mixed) The string or array that has entities you would like to remove |
* @param $reverse (bool) If TRUE entities will be encoded rather than decoded, ie |
* < to < rather than < to <. |
* @return (mixed) The string or array returned with entities decoded. |
*/ |
function decodeEntities($encodedData, $reverse=FALSE) { |
static $aEncodeTbl; |
static $aDecodeTbl; |
// Get the translation entities, but we'll cache the result to enhance performance. |
if (empty($aDecodeTbl)) { |
// Get the translation entities. |
$aEncodeTbl = get_html_translation_table(HTML_ENTITIES); |
$aDecodeTbl = array_flip($aEncodeTbl); |
} |
// If it's just a single string. |
if (!is_array($encodedData)) { |
if ($reverse) { |
return strtr($encodedData, $aEncodeTbl); |
} else { |
return strtr($encodedData, $aDecodeTbl); |
} |
} |
$result = array(); |
foreach($encodedData as $string) { |
if ($reverse) { |
$result[] = strtr($string, $aEncodeTbl); |
} else { |
$result[] = strtr($string, $aDecodeTbl); |
} |
} |
return $result; |
} |
/** |
* Compare two nodes to see if they are equal (point to the same node in the doc) |
* |
* 2 nodes are considered equal if the absolute XPath is equal. |
* |
* @param $node1 (mixed) Either an absolute XPath to an node OR a real tree-node (hash-array) |
* @param $node2 (mixed) Either an absolute XPath to an node OR a real tree-node (hash-array) |
* @return (bool) TRUE if equal (see text above), FALSE if not (and on error). |
*/ |
function equalNodes($node1, $node2) { |
$xPath_1 = is_string($node1) ? $node1 : $this->getNodePath($node1); |
$xPath_2 = is_string($node2) ? $node2 : $this->getNodePath($node2); |
return (strncasecmp ($xPath_1, $xPath_2, strLen($xPath_1)) == 0); |
} |
/** |
* Get the absolute XPath of a node that is in a document tree. |
* |
* @param $node (array) A real tree-node (hash-array) |
* @return (string) The string path to the node or FALSE on error. |
*/ |
function getNodePath($node) { |
if (!empty($node['xpath'])) return $node['xpath']; |
$pathInfo = array(); |
do { |
if (empty($node['name']) OR empty($node['parentNode'])) break; // End criteria |
$pathInfo[] = array('name' => $node['name'], 'contextPos' => $node['contextPos']); |
$node = $node['parentNode']; |
} while (TRUE); |
$xPath = ''; |
for ($i=sizeOf($pathInfo)-1; $i>=0; $i--) { |
$xPath .= '/' . $pathInfo[$i]['name'] . '[' . $pathInfo[$i]['contextPos'] . ']'; |
} |
if (empty($xPath)) return FALSE; |
return $xPath; |
} |
/** |
* Retrieves the absolute parent XPath query. |
* |
* The parents stored in the tree are only relative parents...but all the parent |
* information is stored in the XPath query itself...so instead we use a function |
* to extract the parent from the absolute Xpath query |
* |
* @param $childPath (string) String containing an absolute XPath query |
* @return (string) returns the absolute XPath of the parent |
*/ |
function getParentXPath($absoluteXPath) { |
$lastSlashPos = strrpos($absoluteXPath, '/'); |
if ($lastSlashPos == 0) { // it's already the root path |
return ''; // 'super-root' |
} else { |
return (substr($absoluteXPath, 0, $lastSlashPos)); |
} |
} |
/** |
* Returns TRUE if the given node has child nodes below it |
* |
* @param $absoluteXPath (string) full path of the potential parent node |
* @return (bool) TRUE if this node exists and has a child, FALSE otherwise |
*/ |
function hasChildNodes($absoluteXPath) { |
if ($this->_indexIsDirty) $this->reindexNodeTree(); |
return (bool) (isSet($this->nodeIndex[$absoluteXPath]) |
AND sizeOf($this->nodeIndex[$absoluteXPath]['childNodes'])); |
} |
/** |
* Translate all ampersands to it's literal entities '&' and back. |
* |
* I wasn't aware of this problem at first but it's important to understand why we do this. |
* At first you must know: |
* a) PHP's XML parser *translates* all entities to the equivalent char E.g. < is returned as '<' |
* b) PHP's XML parser (in V 4.1.0) has problems with most *literal* entities! The only one's that are |
* recognized are &, < > and ". *ALL* others (like © a.s.o.) cause an |
* XML_ERROR_UNDEFINED_ENTITY error. I reported this as bug at http://bugs.php.net/bug.php?id=15092 |
* (It turned out not to be a 'real' bug, but one of those nice W3C-spec things). |
* |
* Forget position b) now. It's just for info. Because the way we will solve a) will also solve b) too. |
* |
* THE PROBLEM |
* To understand the problem, here a sample: |
* Given is the following XML: "<AAA> < > </AAA>" |
* Try to parse it and PHP's XML parser will fail with a XML_ERROR_UNDEFINED_ENTITY becaus of |
* the unknown litteral-entity ' '. (The numeric equivalent ' ' would work though). |
* Next try is to use the numeric equivalent 160 for ' ', thus "<AAA> <   > </AAA>" |
* The data we receive in the tag <AAA> is " < > ". So we get the *translated entities* and |
* NOT the 3 entities <   >. Thus, we will not even notice that there were entities at all! |
* In *most* cases we're not able to tell if the data was given as entity or as 'normal' char. |
* E.g. When receiving a quote or a single space were not able to tell if it was given as 'normal' char |
* or as or ". Thus we loose the entity-information of the XML-data! |
* |
* THE SOLUTION |
* The better solution is to keep the data 'as is' by replacing the '&' before parsing begins. |
* E.g. Taking the original input from above, this would result in "<AAA> &lt; &nbsp; &gt; </AAA>" |
* The data we receive now for the tag <AAA> is " < > ". and that's what we want. |
* |
* The bad thing is, that a global replace will also replace data in section that are NOT translated by the |
* PHP XML-parser. That is comments (<!-- -->), IP-sections (stuff between <? ? >) and CDATA-block too. |
* So all data comming from those sections must be reversed. This is done during the XML parse phase. |
* So: |
* a) Replacement of all '&' in the XML-source. |
* b) All data that is not char-data or in CDATA-block have to be reversed during the XML-parse phase. |
* |
* @param $xmlSource (string) The XML string |
* @return (string) The XML string with translated ampersands. |
*/ |
function _translateAmpersand($xmlSource, $reverse=FALSE) { |
$PHP5 = (substr(phpversion(), 0, 1) == '5'); |
if ($PHP5) { |
//otherwise we receive &nbsp; instead of |
return $xmlSource; |
} else { |
return ($reverse ? str_replace('&', '&', $xmlSource) : str_replace('&', '&', $xmlSource)); |
} |
} |
} // END OF CLASS XPathEngine |
/************************************************************************************************ |
* =============================================================================================== |
* X P a t h - Class |
* =============================================================================================== |
************************************************************************************************/ |
define('XPATH_QUERYHIT_ALL' , 1); |
define('XPATH_QUERYHIT_FIRST' , 2); |
define('XPATH_QUERYHIT_UNIQUE', 3); |
class XPath extends XPathEngine { |
/** |
* Constructor of the class |
* |
* Optionally you may call this constructor with the XML-filename to parse and the |
* XML option vector. A option vector sample: |
* $xmlOpt = array(XML_OPTION_CASE_FOLDING => FALSE, XML_OPTION_SKIP_WHITE => TRUE); |
* |
* @param $userXmlOptions (array) (optional) Vector of (<optionID>=><value>, <optionID>=><value>, ...) |
* @param $fileName (string) (optional) Filename of XML file to load from. |
* It is recommended that you call importFromFile() |
* instead as you will get an error code. If the |
* import fails, the object will be set to FALSE. |
* @see parent::XPathEngine() |
*/ |
function XPath($fileName='', $userXmlOptions=array()) { |
parent::XPathEngine($userXmlOptions); |
$this->properties['modMatch'] = XPATH_QUERYHIT_ALL; |
if ($fileName) { |
if (!$this->importFromFile($fileName)) { |
// Re-run the base constructor to "reset" the object. If the user has any sense, then |
// they will have created the object, and then explicitly called importFromFile(), giving |
// them the chance to catch and handle the error properly. |
parent::XPathEngine($userXmlOptions); |
} |
} |
} |
/** |
* Resets the object so it's able to take a new xml sting/file |
* |
* Constructing objects is slow. If you can, reuse ones that you have used already |
* by using this reset() function. |
*/ |
function reset() { |
parent::reset(); |
$this->properties['modMatch'] = XPATH_QUERYHIT_ALL; |
} |
//----------------------------------------------------------------------------------------- |
// XPath ------ Get / Set Stuff ------ |
//----------------------------------------------------------------------------------------- |
/** |
* Resolves and xPathQuery array depending on the property['modMatch'] |
* |
* Most of the modification functions of XPath will also accept a xPathQuery (instead |
* of an absolute Xpath). The only problem is that the query could match more the one |
* node. The question is, if the none, the fist or all nodes are to be modified. |
* The behaver can be set with setModMatch() |
* |
* @param $modMatch (int) One of the following: |
* - XPATH_QUERYHIT_ALL (default) |
* - XPATH_QUERYHIT_FIRST |
* - XPATH_QUERYHIT_UNIQUE // If the query matches more then one node. |
* @see _resolveXPathQuery() |
*/ |
function setModMatch($modMatch = XPATH_QUERYHIT_ALL) { |
switch($modMatch) { |
case XPATH_QUERYHIT_UNIQUE : $this->properties['modMatch'] = XPATH_QUERYHIT_UNIQUE; break; |
case XPATH_QUERYHIT_FIRST: $this->properties['modMatch'] = XPATH_QUERYHIT_FIRST; break; |
default: $this->properties['modMatch'] = XPATH_QUERYHIT_ALL; |
} |
} |
//----------------------------------------------------------------------------------------- |
// XPath ------ DOM Like Modification ------ |
//----------------------------------------------------------------------------------------- |
//----------------------------------------------------------------------------------------- |
// XPath ------ Child (Node) Set/Get ------ |
//----------------------------------------------------------------------------------------- |
/** |
* Retrieves the name(s) of a node or a group of document nodes. |
* |
* This method retrieves the names of a group of document nodes |
* specified in the argument. So if the argument was '/A[1]/B[2]' then it |
* would return 'B' if the node did exist in the tree. |
* |
* @param $xPathQuery (mixed) Array or single full document path(s) of the node(s), |
* from which the names should be retrieved. |
* @return (mixed) Array or single string of the names of the specified |
* nodes, or just the individual name. If the node did |
* not exist, then returns FALSE. |
*/ |
function nodeName($xPathQuery) { |
if (is_array($xPathQuery)) { |
$xPathSet = $xPathQuery; |
} else { |
// Check for a valid xPathQuery |
$xPathSet = $this->_resolveXPathQuery($xPathQuery,'nodeName'); |
} |
if (count($xPathSet) == 0) return FALSE; |
// For each node, get it's name |
$result = array(); |
foreach($xPathSet as $xPath) { |
$node = &$this->getNode($xPath); |
if (!$node) { |
// ### Fatal internal error?? |
continue; |
} |
$result[] = $node['name']; |
} |
// If just a single string, return string |
if (count($xPathSet) == 1) $result = $result[0]; |
// Return result. |
return $result; |
} |
/** |
* Removes a node from the XML document. |
* |
* This method removes a node from the tree of nodes of the XML document. If the node |
* is a document node, all children of the node and its character data will be removed. |
* If the node is an attribute node, only this attribute will be removed, the node to which |
* the attribute belongs as well as its children will remain unmodified. |
* |
* NOTE: When passing a xpath-query instead of an abs. Xpath. |
* Depending on setModMatch() one, none or multiple nodes are affected. |
* |
* @param $xPathQuery (string) xpath to the node (See note above). |
* @param $autoReindex (bool) (optional, default=TRUE) Reindex the document to reflect |
* the changes. A performance helper. See reindexNodeTree() |
* @return (bool) TRUE on success, FALSE on error; |
* @see setModMatch(), reindexNodeTree() |
*/ |
function removeChild($xPathQuery, $autoReindex=TRUE) { |
$ThisFunctionName = 'removeChild'; |
$bDebugThisFunction = in_array($ThisFunctionName, $this->aDebugFunctions); |
$this->_beginDebugFunction($ThisFunctionName, $bDebugThisFunction); |
if ($bDebugThisFunction) { |
echo "Node: $xPathQuery\n"; |
echo '<hr>'; |
} |
$NULL = NULL; |
$status = FALSE; |
do { // try-block |
// Check for a valid xPathQuery |
$xPathSet = $this->_resolveXPathQuery($xPathQuery,'removeChild'); |
if (sizeOf($xPathSet) === 0) { |
$this->_displayError(sprintf($this->errorStrings['NoNodeMatch'], $xPathQuery), __LINE__, __FILE__, FALSE); |
break; // try-block |
} |
$mustReindex = FALSE; |
// Make chages from 'bottom-up'. In this manner the modifications will not affect itself. |
for ($i=sizeOf($xPathSet)-1; $i>=0; $i--) { |
$absoluteXPath = $xPathSet[$i]; |
if (preg_match(';/attribute::;', $absoluteXPath)) { // Handle the case of an attribute node |
$xPath = $this->_prestr($absoluteXPath, '/attribute::'); // Get the path to the attribute node's parent. |
$attribute = $this->_afterstr($absoluteXPath, '/attribute::'); // Get the name of the attribute. |
unSet($this->nodeIndex[$xPath]['attributes'][$attribute]); // Unset the attribute |
if ($bDebugThisFunction) echo "We removed the attribute '$attribute' of node '$xPath'.\n"; |
continue; |
} |
// Otherwise remove the node by setting it to NULL. It will be removed on the next reindexNodeTree() call. |
$mustReindex = $autoReindex; |
// Flag the index as dirty; it's not uptodate. A reindex will be forced (if dirty) when exporting the XML doc |
$this->_indexIsDirty = TRUE; |
$theNode = $this->nodeIndex[$absoluteXPath]; |
$theNode['parentNode']['childNodes'][$theNode['pos']] =& $NULL; |
if ($bDebugThisFunction) echo "We removed the node '$absoluteXPath'.\n"; |
} |
// Reindex the node tree again |
if ($mustReindex) $this->reindexNodeTree(); |
$status = TRUE; |
} while(FALSE); |
$this->_closeDebugFunction($ThisFunctionName, $status, $bDebugThisFunction); |
return $status; |
} |
/** |
* Replace a node with any data string. The $data is taken 1:1. |
* |
* This function will delete the node you define by $absoluteXPath (plus it's sub-nodes) and |
* substitute it by the string $text. Often used to push in not well formed HTML. |
* WARNING: |
* The $data is taken 1:1. |
* You are in charge that the data you enter is valid XML if you intend |
* to export and import the content again. |
* |
* NOTE: When passing a xpath-query instead of an abs. Xpath. |
* Depending on setModMatch() one, none or multiple nodes are affected. |
* |
* @param $xPathQuery (string) xpath to the node (See note above). |
* @param $data (string) String containing the content to be set. *READONLY* |
* @param $autoReindex (bool) (optional, default=TRUE) Reindex the document to reflect |
* the changes. A performance helper. See reindexNodeTree() |
* @return (bool) TRUE on success, FALSE on error; |
* @see setModMatch(), replaceChild(), reindexNodeTree() |
*/ |
function replaceChildByData($xPathQuery, $data, $autoReindex=TRUE) { |
$ThisFunctionName = 'replaceChildByData'; |
$bDebugThisFunction = in_array($ThisFunctionName, $this->aDebugFunctions); |
$this->_beginDebugFunction($ThisFunctionName, $bDebugThisFunction); |
if ($bDebugThisFunction) { |
echo "Node: $xPathQuery\n"; |
} |
$NULL = NULL; |
$status = FALSE; |
do { // try-block |
// Check for a valid xPathQuery |
$xPathSet = $this->_resolveXPathQuery($xPathQuery,'replaceChildByData'); |
if (sizeOf($xPathSet) === 0) { |
$this->_displayError(sprintf($this->errorStrings['NoNodeMatch'], $xPathQuery), __LINE__, __FILE__, FALSE); |
break; // try-block |
} |
$mustReindex = FALSE; |
// Make chages from 'bottom-up'. In this manner the modifications will not affect itself. |
for ($i=sizeOf($xPathSet)-1; $i>=0; $i--) { |
$mustReindex = $autoReindex; |
// Flag the index as dirty; it's not uptodate. A reindex will be forced (if dirty) when exporting the XML doc |
$this->_indexIsDirty = TRUE; |
$absoluteXPath = $xPathSet[$i]; |
$theNode = $this->nodeIndex[$absoluteXPath]; |
$pos = $theNode['pos']; |
$theNode['parentNode']['textParts'][$pos] .= $data; |
$theNode['parentNode']['childNodes'][$pos] =& $NULL; |
if ($bDebugThisFunction) echo "We replaced the node '$absoluteXPath' with data.\n"; |
} |
// Reindex the node tree again |
if ($mustReindex) $this->reindexNodeTree(); |
$status = TRUE; |
} while(FALSE); |
$this->_closeDebugFunction($ThisFunctionName, ($status) ? 'Success' : '!!! FAILD !!!', $bDebugThisFunction); |
return $status; |
} |
/** |
* Replace the node(s) that matches the xQuery with the passed node (or passed node-tree) |
* |
* If the passed node is a string it's assumed to be XML and replaceChildByXml() |
* will be called. |
* NOTE: When passing a xpath-query instead of an abs. Xpath. |
* Depending on setModMatch() one, none or multiple nodes are affected. |
* |
* @param $xPathQuery (string) Xpath to the node being replaced. |
* @param $node (mixed) String or Array (Usually a String) |
* If string: Vaild XML. E.g. "<A/>" or "<A> foo <B/> bar <A/>" |
* If array: A Node (can be a whole sub-tree) (See comment in header) |
* @param $autoReindex (bool) (optional, default=TRUE) Reindex the document to reflect |
* the changes. A performance helper. See reindexNodeTree() |
* @return (array) The last replaced $node (can be a whole sub-tree) |
* @see reindexNodeTree() |
*/ |
function &replaceChild($xPathQuery, $node, $autoReindex=TRUE) { |
$NULL = NULL; |
if (is_string($node)) { |
if (empty($node)) { //--sam. Not sure how to react on an empty string - think it's an error. |
return array(); |
} else { |
if (!($node = $this->_xml2Document($node))) return FALSE; |
} |
} |
// Special case if it's 'super root'. We then have to take the child node == top node |
if (empty($node['parentNode'])) $node = $node['childNodes'][0]; |
$status = FALSE; |
do { // try-block |
// Check for a valid xPathQuery |
$xPathSet = $this->_resolveXPathQuery($xPathQuery,'replaceChild'); |
if (sizeOf($xPathSet) === 0) { |
$this->_displayError(sprintf($this->errorStrings['NoNodeMatch'], $xPathQuery), __LINE__, __FILE__, FALSE); |
break; // try-block |
} |
$mustReindex = FALSE; |
// Make chages from 'bottom-up'. In this manner the modifications will not affect itself. |
for ($i=sizeOf($xPathSet)-1; $i>=0; $i--) { |
$mustReindex = $autoReindex; |
// Flag the index as dirty; it's not uptodate. A reindex will be forced (if dirty) when exporting the XML doc |
$this->_indexIsDirty = TRUE; |
$absoluteXPath = $xPathSet[$i]; |
$childNode =& $this->nodeIndex[$absoluteXPath]; |
$parentNode =& $childNode['parentNode']; |
$childNode['parentNode'] =& $NULL; |
$childPos = $childNode['pos']; |
$parentNode['childNodes'][$childPos] =& $this->cloneNode($node); |
} |
if ($mustReindex) $this->reindexNodeTree(); |
$status = TRUE; |
} while(FALSE); |
if (!$status) return FALSE; |
return $childNode; |
} |
/** |
* Insert passed node (or passed node-tree) at the node(s) that matches the xQuery. |
* |
* With parameters you can define if the 'hit'-node is shifted to the right or left |
* and if it's placed before of after the text-part. |
* Per derfault the 'hit'-node is shifted to the right and the node takes the place |
* the of the 'hit'-node. |
* NOTE: When passing a xpath-query instead of an abs. Xpath. |
* Depending on setModMatch() one, none or multiple nodes are affected. |
* |
* E.g. Following is given: AAA[1] |
* / \ |
* ..BBB[1]..BBB[2] .. |
* |
* a) insertChild('/AAA[1]/BBB[2]', <node CCC>) |
* b) insertChild('/AAA[1]/BBB[2]', <node CCC>, $shiftRight=FALSE) |
* c) insertChild('/AAA[1]/BBB[2]', <node CCC>, $shiftRight=FALSE, $afterText=FALSE) |
* |
* a) b) c) |
* AAA[1] AAA[1] AAA[1] |
* / | \ / | \ / | \ |
* ..BBB[1]..CCC[1]BBB[2].. ..BBB[1]..BBB[2]..CCC[1] ..BBB[1]..BBB[2]CCC[1].. |
* |
* #### Do a complete review of the "(optional)" tag after several arguments. |
* |
* @param $xPathQuery (string) Xpath to the node to append. |
* @param $node (mixed) String or Array (Usually a String) |
* If string: Vaild XML. E.g. "<A/>" or "<A> foo <B/> bar <A/>" |
* If array: A Node (can be a whole sub-tree) (See comment in header) |
* @param $shiftRight (bool) (optional, default=TRUE) Shift the target node to the right. |
* @param $afterText (bool) (optional, default=TRUE) Insert after the text. |
* @param $autoReindex (bool) (optional, default=TRUE) Reindex the document to reflect |
* the changes. A performance helper. See reindexNodeTree() |
* @return (mixed) FALSE on error (or no match). On success we return the path(s) to the newly |
* appended nodes. That is: Array of paths if more then 1 node was added or |
* a single path string if only one node was added. |
* NOTE: If autoReindex is FALSE, then we can't return the *complete* path |
* as the exact doc-pos isn't available without reindexing. In that case we leave |
* out the last [docpos] in the path(s). ie we'd return /A[3]/B instead of /A[3]/B[2] |
* @see appendChildByXml(), reindexNodeTree() |
*/ |
function insertChild($xPathQuery, $node, $shiftRight=TRUE, $afterText=TRUE, $autoReindex=TRUE) { |
if (is_string($node)) { |
if (empty($node)) { //--sam. Not sure how to react on an empty string - think it's an error. |
return FALSE; |
} else { |
if (!($node = $this->_xml2Document($node))) return FALSE; |
} |
} |
// Special case if it's 'super root'. We then have to take the child node == top node |
if (empty($node['parentNode'])) $node = $node['childNodes'][0]; |
// Check for a valid xPathQuery |
$xPathSet = $this->_resolveXPathQuery($xPathQuery,'insertChild'); |
if (sizeOf($xPathSet) === 0) { |
$this->_displayError(sprintf($this->errorStrings['NoNodeMatch'], $xPathQuery), __LINE__, __FILE__, FALSE); |
return FALSE; |
} |
$mustReindex = FALSE; |
$newNodes = array(); |
$result = array(); |
// Make chages from 'bottom-up'. In this manner the modifications will not affect itself. |
for ($i=sizeOf($xPathSet)-1; $i>=0; $i--) { |
$absoluteXPath = $xPathSet[$i]; |
$childNode =& $this->nodeIndex[$absoluteXPath]; |
$parentNode =& $childNode['parentNode']; |
// We can't insert at the super root or at the root. |
if (empty($absoluteXPath) || (!$parentNode['parentNode'])) { |
$this->_displayError(sprintf($this->errorStrings['RootNodeAlreadyExists']), __LINE__, __FILE__, FALSE); |
return FALSE; |
} |
$mustReindex = $autoReindex; |
// Flag the index as dirty; it's not uptodate. A reindex will be forced (if dirty) when exporting the XML doc |
$this->_indexIsDirty = TRUE; |
//Special case: It not possible to add siblings to the top node. |
if (empty($parentNode['name'])) continue; |
$newNode =& $this->cloneNode($node); |
$pos = $shiftRight ? $childNode['pos'] : $childNode['pos']+1; |
$parentNode['childNodes'] = array_merge( |
array_slice($parentNode['childNodes'], 0, $pos), |
array(&$newNode), |
array_slice($parentNode['childNodes'], $pos) |
); |
$pos += $afterText ? 1 : 0; |
$parentNode['textParts'] = array_merge( |
array_slice($parentNode['textParts'], 0, $pos), |
array(''), |
array_slice($parentNode['textParts'], $pos) |
); |
// We are going from bottom to top, but the user will want results from top to bottom. |
if ($mustReindex) { |
// We'll have to wait till after the reindex to get the full path to this new node. |
$newNodes[] = &$newNode; |
} else { |
// If we are reindexing the tree later, then we can't return the user any |
// useful results, so we just return them the count. |
$newNodePath = $parentNode['xpath'].'/'.$newNode['name']; |
array_unshift($result, $newNodePath); |
} |
} |
if ($mustReindex) { |
$this->reindexNodeTree(); |
// Now we must fill in the result array. Because until now we did not |
// know what contextpos our newly added entries had, just their pos within |
// the siblings. |
foreach ($newNodes as $newNode) { |
array_unshift($result, $newNode['xpath']); |
} |
} |
if (count($result) == 1) $result = $result[0]; |
return $result; |
} |
/** |
* Appends a child to anothers children. |
* |
* If you intend to do a lot of appending, you should leave autoIndex as FALSE |
* and then call reindexNodeTree() when you are finished all the appending. |
* |
* @param $xPathQuery (string) Xpath to the node to append to. |
* @param $node (mixed) String or Array (Usually a String) |
* If string: Vaild XML. E.g. "<A/>" or "<A> foo <B/> bar <A/>" |
* If array: A Node (can be a whole sub-tree) (See comment in header) |
* @param $afterText (bool) (optional, default=FALSE) Insert after the text. |
* @param $autoReindex (bool) (optional, default=TRUE) Reindex the document to reflect |
* the changes. A performance helper. See reindexNodeTree() |
* @return (mixed) FALSE on error (or no match). On success we return the path(s) to the newly |
* appended nodes. That is: Array of paths if more then 1 node was added or |
* a single path string if only one node was added. |
* NOTE: If autoReindex is FALSE, then we can't return the *complete* path |
* as the exact doc-pos isn't available without reindexing. In that case we leave |
* out the last [docpos] in the path(s). ie we'd return /A[3]/B instead of /A[3]/B[2] |
* @see insertChild(), reindexNodeTree() |
*/ |
function appendChild($xPathQuery, $node, $afterText=FALSE, $autoReindex=TRUE) { |
if (is_string($node)) { |
if (empty($node)) { //--sam. Not sure how to react on an empty string - think it's an error. |
return FALSE; |
} else { |
if (!($node = $this->_xml2Document($node))) return FALSE; |
} |
} |
// Special case if it's 'super root'. We then have to take the child node == top node |
if (empty($node['parentNode'])) $node = $node['childNodes'][0]; |
// Check for a valid xPathQuery |
$xPathSet = $this->_resolveXPathQueryForNodeMod($xPathQuery, 'appendChild'); |
if (sizeOf($xPathSet) === 0) return FALSE; |
$mustReindex = FALSE; |
$newNodes = array(); |
$result = array(); |
// Make chages from 'bottom-up'. In this manner the modifications will not affect itself. |
for ($i=sizeOf($xPathSet)-1; $i>=0; $i--) { |
$mustReindex = $autoReindex; |
// Flag the index as dirty; it's not uptodate. A reindex will be forced (if dirty) when exporting the XML doc |
$this->_indexIsDirty = TRUE; |
$absoluteXPath = $xPathSet[$i]; |
$parentNode =& $this->nodeIndex[$absoluteXPath]; |
$newNode =& $this->cloneNode($node); |
$parentNode['childNodes'][] =& $newNode; |
$pos = count($parentNode['textParts']); |
$pos -= $afterText ? 0 : 1; |
$parentNode['textParts'] = array_merge( |
array_slice($parentNode['textParts'], 0, $pos), |
array(''), |
array_slice($parentNode['textParts'], $pos) |
); |
// We are going from bottom to top, but the user will want results from top to bottom. |
if ($mustReindex) { |
// We'll have to wait till after the reindex to get the full path to this new node. |
$newNodes[] = &$newNode; |
} else { |
// If we are reindexing the tree later, then we can't return the user any |
// useful results, so we just return them the count. |
array_unshift($result, "$absoluteXPath/{$newNode['name']}"); |
} |
} |
if ($mustReindex) { |
$this->reindexNodeTree(); |
// Now we must fill in the result array. Because until now we did not |
// know what contextpos our newly added entries had, just their pos within |
// the siblings. |
foreach ($newNodes as $newNode) { |
array_unshift($result, $newNode['xpath']); |
} |
} |
if (count($result) == 1) $result = $result[0]; |
return $result; |
} |
/** |
* Inserts a node before the reference node with the same parent. |
* |
* If you intend to do a lot of appending, you should leave autoIndex as FALSE |
* and then call reindexNodeTree() when you are finished all the appending. |
* |
* @param $xPathQuery (string) Xpath to the node to insert new node before |
* @param $node (mixed) String or Array (Usually a String) |
* If string: Vaild XML. E.g. "<A/>" or "<A> foo <B/> bar <A/>" |
* If array: A Node (can be a whole sub-tree) (See comment in header) |
* @param $afterText (bool) (optional, default=FLASE) Insert after the text. |
* @param $autoReindex (bool) (optional, default=TRUE) Reindex the document to reflect |
* the changes. A performance helper. See reindexNodeTree() |
* @return (mixed) FALSE on error (or no match). On success we return the path(s) to the newly |
* appended nodes. That is: Array of paths if more then 1 node was added or |
* a single path string if only one node was added. |
* NOTE: If autoReindex is FALSE, then we can't return the *complete* path |
* as the exact doc-pos isn't available without reindexing. In that case we leave |
* out the last [docpos] in the path(s). ie we'd return /A[3]/B instead of /A[3]/B[2] |
* @see reindexNodeTree() |
*/ |
function insertBefore($xPathQuery, $node, $afterText=TRUE, $autoReindex=TRUE) { |
return $this->insertChild($xPathQuery, $node, $shiftRight=TRUE, $afterText, $autoReindex); |
} |
//----------------------------------------------------------------------------------------- |
// XPath ------ Attribute Set/Get ------ |
//----------------------------------------------------------------------------------------- |
/** |
* Retrieves a dedecated attribute value or a hash-array of all attributes of a node. |
* |
* The first param $absoluteXPath must be a valid xpath OR a xpath-query that results |
* to *one* xpath. If the second param $attrName is not set, a hash-array of all attributes |
* of that node is returned. |
* |
* Optionally you may pass an attrubute name in $attrName and the function will return the |
* string value of that attribute. |
* |
* @param $absoluteXPath (string) Full xpath OR a xpath-query that results to *one* xpath. |
* @param $attrName (string) (Optional) The name of the attribute. See above. |
* @return (mixed) hash-array or a string of attributes depending if the |
* parameter $attrName was set (see above). FALSE if the |
* node or attribute couldn't be found. |
* @see setAttribute(), removeAttribute() |
*/ |
function getAttributes($absoluteXPath, $attrName=NULL) { |
// Numpty check |
if (!isSet($this->nodeIndex[$absoluteXPath])) { |
$xPathSet = $this->_resolveXPathQuery($absoluteXPath,'getAttributes'); |
if (empty($xPathSet)) return FALSE; |
// only use the first entry |
$absoluteXPath = $xPathSet[0]; |
} |
if (!empty($this->parseOptions[XML_OPTION_CASE_FOLDING])) { |
// Case in-sensitive |
$attrName = strtoupper($attrName); |
} |
// Return the complete list or just the desired element |
if (is_null($attrName)) { |
return $this->nodeIndex[$absoluteXPath]['attributes']; |
} elseif (isSet($this->nodeIndex[$absoluteXPath]['attributes'][$attrName])) { |
return $this->nodeIndex[$absoluteXPath]['attributes'][$attrName]; |
} |
return FALSE; |
} |
/** |
* Set attributes of a node(s). |
* |
* This method sets a number single attributes. An existing attribute is overwritten (default) |
* with the new value, but setting the last param to FALSE will prevent overwritten. |
* NOTE: When passing a xpath-query instead of an abs. Xpath. |
* Depending on setModMatch() one, none or multiple nodes are affected. |
* |
* @param $xPathQuery (string) xpath to the node (See note above). |
* @param $name (string) Attribute name. |
* @param $value (string) Attribute value. |
* @param $overwrite (bool) If the attribute is already set we overwrite it (see text above) |
* @return (bool) TRUE on success, FALSE on failure. |
* @see getAttributes(), removeAttribute() |
*/ |
function setAttribute($xPathQuery, $name, $value, $overwrite=TRUE) { |
return $this->setAttributes($xPathQuery, array($name => $value), $overwrite); |
} |
/** |
* Version of setAttribute() that sets multiple attributes to node(s). |
* |
* This method sets a number of attributes. Existing attributes are overwritten (default) |
* with the new values, but setting the last param to FALSE will prevent overwritten. |
* NOTE: When passing a xpath-query instead of an abs. Xpath. |
* Depending on setModMatch() one, none or multiple nodes are affected. |
* |
* @param $xPathQuery (string) xpath to the node (See note above). |
* @param $attributes (array) associative array of attributes to set. |
* @param $overwrite (bool) If the attributes are already set we overwrite them (see text above) |
* @return (bool) TRUE on success, FALSE otherwise |
* @see setAttribute(), getAttributes(), removeAttribute() |
*/ |
function setAttributes($xPathQuery, $attributes, $overwrite=TRUE) { |
$status = FALSE; |
do { // try-block |
// The attributes parameter should be an associative array. |
if (!is_array($attributes)) break; // try-block |
// Check for a valid xPathQuery |
$xPathSet = $this->_resolveXPathQuery($xPathQuery,'setAttributes'); |
foreach($xPathSet as $absoluteXPath) { |
// Add the attributes to the node. |
$theNode =& $this->nodeIndex[$absoluteXPath]; |
if (empty($theNode['attributes'])) { |
$this->nodeIndex[$absoluteXPath]['attributes'] = $attributes; |
} else { |
$theNode['attributes'] = $overwrite ? array_merge($theNode['attributes'],$attributes) : array_merge($attributes, $theNode['attributes']); |
} |
} |
$status = TRUE; |
} while(FALSE); // END try-block |
return $status; |
} |
/** |
* Removes an attribute of a node(s). |
* |
* This method removes *ALL* attributres per default unless the second parameter $attrList is set. |
* $attrList can be either a single attr-name as string OR a vector of attr-names as array. |
* E.g. |
* removeAttribute(<xPath>); # will remove *ALL* attributes. |
* removeAttribute(<xPath>, 'A'); # will only remove attributes called 'A'. |
* removeAttribute(<xPath>, array('A_1','A_2')); # will remove attribute 'A_1' and 'A_2'. |
* NOTE: When passing a xpath-query instead of an abs. Xpath. |
* Depending on setModMatch() one, none or multiple nodes are affected. |
* |
* @param $xPathQuery (string) xpath to the node (See note above). |
* @param $attrList (mixed) (optional) if not set will delete *all* (see text above) |
* @return (bool) TRUE on success, FALSE if the node couldn't be found |
* @see getAttributes(), setAttribute() |
*/ |
function removeAttribute($xPathQuery, $attrList=NULL) { |
// Check for a valid xPathQuery |
$xPathSet = $this->_resolveXPathQuery($xPathQuery, 'removeAttribute'); |
if (!empty($attrList) AND is_string($attrList)) $attrList = array($attrList); |
if (!is_array($attrList)) return FALSE; |
foreach($xPathSet as $absoluteXPath) { |
// If the attribute parameter wasn't set then remove all the attributes |
if ($attrList[0] === NULL) { |
$this->nodeIndex[$absoluteXPath]['attributes'] = array(); |
continue; |
} |
// Remove all the elements in the array then. |
foreach($attrList as $name) { |
unset($this->nodeIndex[$absoluteXPath]['attributes'][$name]); |
} |
} |
return TRUE; |
} |
//----------------------------------------------------------------------------------------- |
// XPath ------ Text Set/Get ------ |
//----------------------------------------------------------------------------------------- |
/** |
* Retrieve all the text from a node as a single string. |
* |
* Sample |
* Given is: <AA> This <BB\>is <BB\> some<BB\>text </AA> |
* Return of getData('/AA[1]') would be: " This is sometext " |
* The first param $xPathQuery must be a valid xpath OR a xpath-query that |
* results to *one* xpath. |
* |
* @param $xPathQuery (string) xpath to the node - resolves to *one* xpath. |
* @return (mixed) The returned string (see above), FALSE if the node |
* couldn't be found or is not unique. |
* @see getDataParts() |
*/ |
function getData($xPathQuery) { |
$aDataParts = $this->getDataParts($xPathQuery); |
if ($aDataParts === FALSE) return FALSE; |
return implode('', $aDataParts); |
} |
/** |
* Retrieve all the text from a node as a vector of strings |
* |
* Where each element of the array was interrupted by a non-text child element. |
* |
* Sample |
* Given is: <AA> This <BB\>is <BB\> some<BB\>text </AA> |
* Return of getDataParts('/AA[1]') would be: array([0]=>' This ', [1]=>'is ', [2]=>' some', [3]=>'text '); |
* The first param $absoluteXPath must be a valid xpath OR a xpath-query that results |
* to *one* xpath. |
* |
* @param $xPathQuery (string) xpath to the node - resolves to *one* xpath. |
* @return (mixed) The returned array (see above), or FALSE if node is not |
* found or is not unique. |
* @see getData() |
*/ |
function getDataParts($xPathQuery) { |
// Resolve xPath argument |
$xPathSet = $this->_resolveXPathQuery($xPathQuery, 'getDataParts'); |
if (1 !== ($setSize=count($xPathSet))) { |
$this->_displayError(sprintf($this->errorStrings['AbsoluteXPathRequired'], $xPathQuery) . "Not unique xpath-query, matched {$setSize}-times.", __LINE__, __FILE__, FALSE); |
return FALSE; |
} |
$absoluteXPath = $xPathSet[0]; |
// Is it an attribute node? |
if (preg_match(";(.*)/attribute::([^/]*)$;U", $xPathSet[0], $matches)) { |
$absoluteXPath = $matches[1]; |
$attribute = $matches[2]; |
if (!isSet($this->nodeIndex[$absoluteXPath]['attributes'][$attribute])) { |
$this->_displayError("The $absoluteXPath/attribute::$attribute value isn't a node in this document.", __LINE__, __FILE__, FALSE); |
continue; |
} |
return array($this->nodeIndex[$absoluteXPath]['attributes'][$attribute]); |
} else if (preg_match(":(.*)/text\(\)(\[(.*)\])?$:U", $xPathQuery, $matches)) { |
$absoluteXPath = $matches[1]; |
$textPartNr = $matches[2]; |
return array($this->nodeIndex[$absoluteXPath]['textParts'][$textPartNr]); |
} else { |
return $this->nodeIndex[$absoluteXPath]['textParts']; |
} |
} |
/** |
* Retrieves a sub string of a text-part OR attribute-value. |
* |
* This method retrieves the sub string of a specific text-part OR (if the |
* $absoluteXPath references an attribute) the the sub string of the attribute value. |
* If no 'direct referencing' is used (Xpath ends with text()[<part-number>]), then |
* the first text-part of the node ist returned (if exsiting). |
* |
* @param $absoluteXPath (string) Xpath to the node (See note above). |
* @param $offset (int) (optional, default is 0) Starting offset. (Just like PHP's substr()) |
* @param $count (number) (optional, default is ALL) Character count (Just like PHP's substr()) |
* @return (mixed) The sub string, FALSE if not found or on error |
* @see XPathEngine::wholeText(), PHP's substr() |
*/ |
function substringData($absoluteXPath, $offset = 0, $count = NULL) { |
if (!($text = $this->wholeText($absoluteXPath))) return FALSE; |
if (is_null($count)) { |
return substr($text, $offset); |
} else { |
return substr($text, $offset, $count); |
} |
} |
/** |
* Replace a sub string of a text-part OR attribute-value. |
* |
* NOTE: When passing a xpath-query instead of an abs. Xpath. |
* Depending on setModMatch() one, none or multiple nodes are affected. |
* |
* @param $xPathQuery (string) xpath to the node (See note above). |
* @param $replacement (string) The string to replace with. |
* @param $offset (int) (optional, default is 0) Starting offset. (Just like PHP's substr_replace ()) |
* @param $count (number) (optional, default is 0=ALL) Character count (Just like PHP's substr_replace()) |
* @param $textPartNr (int) (optional) (see _getTextSet() ) |
* @return (bool) The new string value on success, FALSE if not found or on error |
* @see substringData() |
*/ |
function replaceData($xPathQuery, $replacement, $offset = 0, $count = 0, $textPartNr=1) { |
if (!($textSet = $this->_getTextSet($xPathQuery, $textPartNr))) return FALSE; |
$tSize=sizeOf($textSet); |
for ($i=0; $i<$tSize; $i++) { |
if ($count) { |
$textSet[$i] = substr_replace($textSet[$i], $replacement, $offset, $count); |
} else { |
$textSet[$i] = substr_replace($textSet[$i], $replacement, $offset); |
} |
} |
return TRUE; |
} |
/** |
* Insert a sub string in a text-part OR attribute-value. |
* |
* NOTE: When passing a xpath-query instead of an abs. Xpath. |
* Depending on setModMatch() one, none or multiple nodes are affected. |
* |
* @param $xPathQuery (string) xpath to the node (See note above). |
* @param $data (string) The string to replace with. |
* @param $offset (int) (optional, default is 0) Offset at which to insert the data. |
* @return (bool) The new string on success, FALSE if not found or on error |
* @see replaceData() |
*/ |
function insertData($xPathQuery, $data, $offset=0) { |
return $this->replaceData($xPathQuery, $data, $offset, 0); |
} |
/** |
* Append text data to the end of the text for an attribute OR node text-part. |
* |
* This method adds content to a node. If it's an attribute node, then |
* the value of the attribute will be set, otherwise the passed data will append to |
* character data of the node text-part. Per default the first text-part is taken. |
* |
* NOTE: When passing a xpath-query instead of an abs. Xpath. |
* Depending on setModMatch() one, none or multiple nodes are affected. |
* |
* @param $xPathQuery (string) to the node(s) (See note above). |
* @param $data (string) String containing the content to be added. |
* @param $textPartNr (int) (optional, default is 1) (see _getTextSet()) |
* @return (bool) TRUE on success, otherwise FALSE |
* @see _getTextSet() |
*/ |
function appendData($xPathQuery, $data, $textPartNr=1) { |
if (!($textSet = $this->_getTextSet($xPathQuery, $textPartNr))) return FALSE; |
$tSize=sizeOf($textSet); |
for ($i=0; $i<$tSize; $i++) { |
$textSet[$i] .= $data; |
} |
return TRUE; |
} |
/** |
* Delete the data of a node. |
* |
* This method deletes content of a node. If it's an attribute node, then |
* the value of the attribute will be removed, otherwise the node text-part. |
* will be deleted. Per default the first text-part is deleted. |
* |
* NOTE: When passing a xpath-query instead of an abs. Xpath. |
* Depending on setModMatch() one, none or multiple nodes are affected. |
* |
* @param $xPathQuery (string) to the node(s) (See note above). |
* @param $offset (int) (optional, default is 0) Starting offset. (Just like PHP's substr_replace()) |
* @param $count (number) (optional, default is 0=ALL) Character count. (Just like PHP's substr_replace()) |
* @param $textPartNr (int) (optional, default is 0) the text part to delete (see _getTextSet()) |
* @return (bool) TRUE on success, otherwise FALSE |
* @see _getTextSet() |
*/ |
function deleteData($xPathQuery, $offset=0, $count=0, $textPartNr=1) { |
if (!($textSet = $this->_getTextSet($xPathQuery, $textPartNr))) return FALSE; |
$tSize=sizeOf($textSet); |
for ($i=0; $i<$tSize; $i++) { |
if (!$count) |
$textSet[$i] = ""; |
else |
$textSet[$i] = substr_replace($textSet[$i],'', $offset, $count); |
} |
return TRUE; |
} |
//----------------------------------------------------------------------------------------- |
// XPath ------ Help Stuff ------ |
//----------------------------------------------------------------------------------------- |
/** |
* Parse the XML to a node-tree. A so called 'document' |
* |
* @param $xmlString (string) The string to turn into a document node. |
* @return (&array) a node-tree |
*/ |
function &_xml2Document($xmlString) { |
$xmlOptions = array( |
XML_OPTION_CASE_FOLDING => $this->getProperties('caseFolding'), |
XML_OPTION_SKIP_WHITE => $this->getProperties('skipWhiteSpaces') |
); |
$xmlParser = new XPathEngine($xmlOptions); |
$xmlParser->setVerbose($this->properties['verboseLevel']); |
// Parse the XML string |
if (!$xmlParser->importFromString($xmlString)) { |
$this->_displayError($xmlParser->getLastError(), __LINE__, __FILE__, FALSE); |
return FALSE; |
} |
return $xmlParser->getNode('/'); |
} |
/** |
* Get a reference-list to node text part(s) or node attribute(s). |
* |
* If the Xquery references an attribute(s) (Xquery ends with attribute::), |
* then the text value of the node-attribute(s) is/are returned. |
* Otherwise the Xquery is referencing to text part(s) of node(s). This can be either a |
* direct reference to text part(s) (Xquery ends with text()[<nr>]) or indirect reference |
* (a simple Xquery to node(s)). |
* 1) Direct Reference (Xquery ends with text()[<part-number>]): |
* If the 'part-number' is omitted, the first text-part is assumed; starting by 1. |
* Negative numbers are allowed, where -1 is the last text-part a.s.o. |
* 2) Indirect Reference (a simple Xquery to node(s)): |
* Default is to return the first text part(s). Optionally you may pass a parameter |
* $textPartNr to define the text-part you want; starting by 1. |
* Negative numbers are allowed, where -1 is the last text-part a.s.o. |
* |
* NOTE I : The returned vector is a set of references to the text parts / attributes. |
* This is handy, if you wish to modify the contents. |
* NOTE II: text-part numbers out of range will not be in the list |
* NOTE III:Instead of an absolute xpath you may also pass a xpath-query. |
* Depending on setModMatch() one, none or multiple nodes are affected. |
* |
* @param $xPathQuery (string) xpath to the node (See note above). |
* @param $textPartNr (int) String containing the content to be set. |
* @return (mixed) A vector of *references* to the text that match, or |
* FALSE on error |
* @see XPathEngine::wholeText() |
*/ |
function _getTextSet($xPathQuery, $textPartNr=1) { |
$ThisFunctionName = '_getTextSet'; |
$bDebugThisFunction = in_array($ThisFunctionName, $this->aDebugFunctions); |
$this->_beginDebugFunction($ThisFunctionName, $bDebugThisFunction); |
if ($bDebugThisFunction) { |
echo "Node: $xPathQuery\n"; |
echo "Text Part Number: $textPartNr\n"; |
echo "<hr>"; |
} |
$status = FALSE; |
$funcName = '_getTextSet'; |
$textSet = array(); |
do { // try-block |
// Check if it's a Xpath reference to an attribut(s). Xpath ends with attribute::) |
if (preg_match(";(.*)/(attribute::|@)([^/]*)$;U", $xPathQuery, $matches)) { |
$xPathQuery = $matches[1]; |
$attribute = $matches[3]; |
// Quick out |
if (isSet($this->nodeIndex[$xPathQuery])) { |
$xPathSet[] = $xPathQuery; |
} else { |
// Try to evaluate the absoluteXPath (since it seems to be an Xquery and not an abs. Xpath) |
$xPathSet = $this->_resolveXPathQuery("$xPathQuery/attribute::$attribute", $funcName); |
} |
foreach($xPathSet as $absoluteXPath) { |
preg_match(";(.*)/attribute::([^/]*)$;U", $xPathSet[0], $matches); |
$absoluteXPath = $matches[1]; |
$attribute = $matches[2]; |
if (!isSet($this->nodeIndex[$absoluteXPath]['attributes'][$attribute])) { |
$this->_displayError("The $absoluteXPath/attribute::$attribute value isn't a node in this document.", __LINE__, __FILE__, FALSE); |
continue; |
} |
$textSet[] =& $this->nodes[$absoluteXPath]['attributes'][$attribute]; |
} |
$status = TRUE; |
break; // try-block |
} |
// Check if it's a Xpath reference direct to a text-part(s). (xpath ends with text()[<part-number>]) |
if (preg_match(":(.*)/text\(\)(\[(.*)\])?$:U", $xPathQuery, $matches)) { |
$xPathQuery = $matches[1]; |
// default to the first text node if a text node was not specified |
$textPartNr = isSet($matches[2]) ? substr($matches[2],1,-1) : 1; |
// Quick check |
if (isSet($this->nodeIndex[$xPathQuery])) { |
$xPathSet[] = $xPathQuery; |
} else { |
// Try to evaluate the absoluteXPath (since it seams to be an Xquery and not an abs. Xpath) |
$xPathSet = $this->_resolveXPathQuery("$xPathQuery/text()[$textPartNr]", $funcName); |
} |
} |
else { |
// At this point we have been given an xpath with neither a 'text()' or 'attribute::' axis at the end |
// So this means to get the text-part of the node. If parameter $textPartNr was not set, use the last |
// text-part. |
if (isSet($this->nodeIndex[$xPathQuery])) { |
$xPathSet[] = $xPathQuery; |
} else { |
// Try to evaluate the absoluteXPath (since it seams to be an Xquery and not an abs. Xpath) |
$xPathSet = $this->_resolveXPathQuery($xPathQuery, $funcName); |
} |
} |
if ($bDebugThisFunction) { |
echo "Looking up paths for:\n"; |
print_r($xPathSet); |
} |
// Now fetch all text-parts that match. (May be 0,1 or many) |
foreach($xPathSet as $absoluteXPath) { |
unset($text); |
if ($text =& $this->wholeText($absoluteXPath, $textPartNr)) { |
$textSet[] =& $text; |
} else { |
// The node does not yet have any text, so we have to add a '' string so that |
// if we insert or replace to it, then we'll actually have something to op on. |
$this->nodeIndex[$absoluteXPath]['textParts'][$textPartNr-1] = ''; |
$textSet[] =& $this->nodeIndex[$absoluteXPath]['textParts'][$textPartNr-1]; |
} |
} |
$status = TRUE; |
} while (FALSE); // END try-block |
if (!$status) $result = FALSE; |
else $result = $textSet; |
$this->_closeDebugFunction($ThisFunctionName, $result, $bDebugThisFunction); |
return $result; |
} |
/** |
* Resolves an xPathQuery vector for a node op for modification |
* |
* It is possible to create a brand new object, and try to append and insert nodes |
* into it, so this is a version of _resolveXPathQuery() that will autocreate the |
* super root if it detects that it is not present and the $xPathQuery is empty. |
* |
* Also it demands that there be at least one node returned, and displays a suitable |
* error message if the returned xPathSet does not contain any nodes. |
* |
* @param $xPathQuery (string) An xpath query targeting a single node. If empty() |
* returns the root node and auto creates the root node |
* if it doesn't exist. |
* @param $function (string) The function in which this check was called |
* @return (array) Vector of $absoluteXPath's (May be empty) |
* @see _resolveXPathQuery() |
*/ |
function _resolveXPathQueryForNodeMod($xPathQuery, $functionName) { |
$xPathSet = array(); |
if (empty($xPathQuery)) { |
// You can append even if the root node doesn't exist. |
if (!isset($this->nodeIndex[$xPathQuery])) $this->_createSuperRoot(); |
$xPathSet[] = ''; |
// However, you can only append to the super root, if there isn't already a root entry. |
$rootNodes = $this->_resolveXPathQuery('/*','appendChild'); |
if (count($rootNodes) !== 0) { |
$this->_displayError(sprintf($this->errorStrings['RootNodeAlreadyExists']), __LINE__, __FILE__, FALSE); |
return array(); |
} |
} else { |
$xPathSet = $this->_resolveXPathQuery($xPathQuery,'appendChild'); |
if (sizeOf($xPathSet) === 0) { |
$this->_displayError(sprintf($this->errorStrings['NoNodeMatch'], $xPathQuery), __LINE__, __FILE__, FALSE); |
return array(); |
} |
} |
return $xPathSet; |
} |
/** |
* Resolves an xPathQuery vector depending on the property['modMatch'] |
* |
* To: |
* - all matches, |
* - the first |
* - none (If the query matches more then one node.) |
* see setModMatch() for details |
* |
* @param $xPathQuery (string) An xpath query targeting a single node. If empty() |
* returns the root node (if it exists). |
* @param $function (string) The function in which this check was called |
* @return (array) Vector of $absoluteXPath's (May be empty) |
* @see setModMatch() |
*/ |
function _resolveXPathQuery($xPathQuery, $function) { |
$xPathSet = array(); |
do { // try-block |
if (isSet($this->nodeIndex[$xPathQuery])) { |
$xPathSet[] = $xPathQuery; |
break; // try-block |
} |
if (empty($xPathQuery)) break; // try-block |
if (substr($xPathQuery, -1) === '/') break; // If the xPathQuery ends with '/' then it cannot be a good query. |
// If this xPathQuery is not absolute then attempt to evaluate it |
$xPathSet = $this->match($xPathQuery); |
$resultSize = sizeOf($xPathSet); |
switch($this->properties['modMatch']) { |
case XPATH_QUERYHIT_UNIQUE : |
if ($resultSize >1) { |
$xPathSet = array(); |
if ($this->properties['verboseLevel']) $this->_displayError("Canceled function '{$function}'. The query '{$xPathQuery}' mached {$resultSize} nodes and 'modMatch' is set to XPATH_QUERYHIT_UNIQUE.", __LINE__, __FILE__, FALSE); |
} |
break; |
case XPATH_QUERYHIT_FIRST : |
if ($resultSize >1) { |
$xPathSet = array($xPathSet[0]); |
if ($this->properties['verboseLevel']) $this->_displayError("Only modified first node in function '{$function}' because the query '{$xPathQuery}' mached {$resultSize} nodes and 'modMatch' is set to XPATH_QUERYHIT_FIRST.", __LINE__, __FILE__, FALSE); |
} |
break; |
default: ; // DO NOTHING |
} |
} while (FALSE); |
if ($this->properties['verboseLevel'] >= 2) $this->_displayMessage("'{$xPathQuery}' parameter from '{$function}' returned the following nodes: ".(count($xPathSet)?implode('<br>', $xPathSet):'[none]'), __LINE__, __FILE__); |
return $xPathSet; |
} |
} // END OF CLASS XPath |
// ----------------------------------------------------------------------------------------- |
// ----------------------------------------------------------------------------------------- |
// ----------------------------------------------------------------------------------------- |
// ----------------------------------------------------------------------------------------- |
/************************************************************************************************** |
// Usage Sample: |
// ------------- |
// Following code will give you an idea how to work with PHP.XPath. It's a working sample |
// to help you get started. :o) |
// Take the comment tags away and run this file. |
**************************************************************************************************/ |
/** |
* Produces a short title line. |
*/ |
function _title($title) { |
echo "<br><hr><b>" . htmlspecialchars($title) . "</b><hr>\n"; |
} |
$self = isSet($_SERVER) ? $_SERVER['PHP_SELF'] : $PHP_SELF; |
if (basename($self) == 'XPath.class.php') { |
// The sampe source: |
$q = '?'; |
$xmlSource = <<< EOD |
<{$q}Process_Instruction test="© All right reserved" {$q}> |
<AAA foo="bar"> ,,1,, |
..1.. <![CDATA[ bla bla |
newLine blo blo ]]> |
<BBB foo="bar"> |
..2.. |
</BBB>..3..<CC/> ..4..</AAA> |
EOD; |
// The sample code: |
$xmlOptions = array(XML_OPTION_CASE_FOLDING => TRUE, XML_OPTION_SKIP_WHITE => TRUE); |
$xPath = new XPath(FALSE, $xmlOptions); |
//$xPath->bDebugXmlParse = TRUE; |
if (!$xPath->importFromString($xmlSource)) { echo $xPath->getLastError(); exit; } |
_title("Following was imported:"); |
echo $xPath->exportAsHtml(); |
_title("Get some content"); |
echo "Last text part in <AAA>: '" . $xPath->wholeText('/AAA[1]', -1) ."'<br>\n"; |
echo "All the text in <AAA>: '" . $xPath->wholeText('/AAA[1]') ."'<br>\n"; |
echo "The attibute value in <BBB> using getAttributes('/AAA[1]/BBB[1]', 'FOO'): '" . $xPath->getAttributes('/AAA[1]', 'FOO') ."'<br>\n"; |
echo "The attibute value in <BBB> using getData('/AAA[1]/@FOO'): '" . $xPath->getData('/AAA[1]/@FOO') ."'<br>\n"; |
_title("Append some additional XML below /AAA/BBB:"); |
$xPath->appendChild('/AAA[1]/BBB[1]', '<CCC> Step 1. Append new node </CCC>', $afterText=FALSE); |
$xPath->appendChild('/AAA[1]/BBB[1]', '<CCC> Step 2. Append new node </CCC>', $afterText=TRUE); |
$xPath->appendChild('/AAA[1]/BBB[1]', '<CCC> Step 3. Append new node </CCC>', $afterText=TRUE); |
echo $xPath->exportAsHtml(); |
_title("Insert some additional XML below <AAA>:"); |
$xPath->reindexNodeTree(); |
$xPath->insertChild('/AAA[1]/BBB[1]', '<BB> Step 1. Insert new node </BB>', $shiftRight=TRUE, $afterText=TRUE); |
$xPath->insertChild('/AAA[1]/BBB[1]', '<BB> Step 2. Insert new node </BB>', $shiftRight=FALSE, $afterText=TRUE); |
$xPath->insertChild('/AAA[1]/BBB[1]', '<BB> Step 3. Insert new node </BB>', $shiftRight=FALSE, $afterText=FALSE); |
echo $xPath->exportAsHtml(); |
_title("Replace the last <BB> node with new XML data '<DDD> Replaced last BB </DDD>':"); |
$xPath->reindexNodeTree(); |
$xPath->replaceChild('/AAA[1]/BB[last()]', '<DDD> Replaced last BB </DDD>', $afterText=FALSE); |
echo $xPath->exportAsHtml(); |
_title("Replace second <BB> node with normal text"); |
$xPath->reindexNodeTree(); |
$xPath->replaceChildByData('/AAA[1]/BB[2]', '"Some new text"'); |
echo $xPath->exportAsHtml(); |
} |
?> |
/web/acc/phpsysinfo/templates/alcasar/form.tpl |
---|
0,0 → 1,56 |
{errors} |
<table width="100%" border="0" cellspacing="0" cellpadding="0"> |
<tr bgcolor="#666666"><th height="20">{title}</th><tr> |
<tr bgcolor="#FFCC66"><td><img src="/images/pix.gif" width="1" height="2"></td></tr> |
</table> |
<table width="100%" border="1" cellspacing="0" cellpadding="1"> |
<tr><td> |
<table width="100%" align="center"> |
<tr> |
<td width="50%" valign="top"> |
{portail} |
</td> |
<td width="50%" valign="top"> |
{vitals} |
</td> |
</tr> |
<tr> |
<td colspan="2"> |
{memory} |
</td> |
</tr> |
<tr> |
<td colspan="2"> |
{filesystems} |
</td> |
</tr> |
<tr> |
<td width="50%" valign="top"> |
{hardware} |
</td> |
<td width="50%" valign="top"> |
{network} |
</td> |
</tr> |
</table> |
<table width="100%"> |
<tr> |
<td width="55%" valign="top"> |
{mbtemp} |
<br> |
{mbfans} |
</td> |
<td width="45%" valign="top"> |
{mbvoltage} |
</td> |
</tr> |
</table> |
</td> |
</tr> |
</table> |
/web/acc/phpsysinfo/templates/alcasar/images/redbar_right.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/web/acc/phpsysinfo/templates/alcasar/images/redbar_middle.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/web/acc/phpsysinfo/templates/alcasar/images/bar_left.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/web/acc/phpsysinfo/templates/alcasar/images/bar_right.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/phpsysinfo/templates/alcasar/images/bar_middle.gif |
---|
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/web/acc/phpsysinfo/templates/alcasar/images/index.html |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/phpsysinfo/templates/alcasar/images/trans.gif |
---|
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/web/acc/phpsysinfo/templates/alcasar/images/redbar_left.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/web/acc/phpsysinfo/templates/alcasar/box.tpl |
---|
0,0 → 1,19 |
<table width="100%"> |
<tr> |
<td> |
<table border="1" class="box"> |
<tr class="boxheader"> |
<td class="boxheader">{title}</td> |
</tr> |
<tr class="boxbody"> |
<td dir="{text_dir}">{content}</td> |
</tr> |
</table> |
</td> |
</tr> |
</table> |
/web/acc/phpsysinfo/templates/alcasar/index.html |
---|
--- phpsysinfo/templates/alcasar/alcasar.css (nonexistent) |
+++ phpsysinfo/templates/alcasar/alcasar.css (revision 325) |
@@ -0,0 +1,77 @@ |
+A { |
+ color: #000000; |
+ text-decoration: none; |
+} |
+A:link { |
+ color: #486591; |
+ background-color: transparent; |
+} |
+A:visited { |
+ color: #6f6c81; |
+ background-color: transparent; |
+} |
+A:active { |
+ |
+ background-color: transparent; |
+} |
+body { |
+ color: #000000; |
+ background-color: #F7F3EF; |
+ background-color: #EFEFEF; |
+ text-decoration: none; |
+ font-family: Verdana,Helvetica,sans-serif; |
+ font-size: 11px; |
+ font-weight: normal; |
+} |
+font { |
+ color: #000000; |
+ text-decoration: none; |
+ font-family: Verdana,Helvetica,sans-serif; |
+ font-size: 11px; |
+ font-weight: normal; |
+} |
+H1 { |
+ color: #000000; |
+ background-color: transparent; |
+ text-decoration: none; |
+ font-family: Verdana,Helvetica,sans-serif; |
+ font-size: 20px; |
+} |
+select { |
+ color: black; |
+ text-decoration: none; |
+ font-family: Verdana,Helvetica,sans-serif; |
+ font-size: 10px; |
+ font-weight: normal; |
+} |
+input { |
+ color: black; |
+ text-decoration: none; |
+ font-family: Verdana,Helvetica,sans-serif; |
+ font-size: 10px; |
+ font-weight: bold; |
+} |
+table |
+{ |
+ border: none; |
+ margin: 0px; |
+ padding: 0px; |
+} |
+table.box { |
+ color: #fefefe; |
+ background-color: transparent; |
+ border: none; |
+ padding: 1px; |
+ width: 100%; |
+} |
+tr.boxheader { |
+ background-color: #9BA1A8; |
+} |
+td.boxheader { |
+ color: #000000; |
+ text-align: center; |
+} |
+tr.boxbody { |
+ color: #000000; |
+ background-color: #F7F3EF; |
+} |
/web/acc/lib/fpdf16/license.txt |
---|
0,0 → 1,6 |
Permission is hereby granted, free of charge, to any person obtaining a copy |
of this software to use, copy, modify, distribute, sublicense, and/or sell |
copies of the software, and to permit persons to whom the software is furnished |
to do so. |
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. |
Property changes: |
Added: svn:eol-style |
+native |
\ No newline at end of property |
/web/acc/lib/fpdf16/fpdf.php |
---|
0,0 → 1,1732 |
<?php |
/******************************************************************************* |
* FPDF * |
* * |
* Version : 1.6 * |
* Date : 2008-08-03 * |
* Auteur : Olivier PLATHEY * |
*******************************************************************************/ |
define('FPDF_VERSION','1.6'); |
class FPDF |
{ |
var $page; //current page number |
var $n; //current object number |
var $offsets; //array of object offsets |
var $buffer; //buffer holding in-memory PDF |
var $pages; //array containing pages |
var $state; //current document state |
var $compress; //compression flag |
var $k; //scale factor (number of points in user unit) |
var $DefOrientation; //default orientation |
var $CurOrientation; //current orientation |
var $PageFormats; //available page formats |
var $DefPageFormat; //default page format |
var $CurPageFormat; //current page format |
var $PageSizes; //array storing non-default page sizes |
var $wPt,$hPt; //dimensions of current page in points |
var $w,$h; //dimensions of current page in user unit |
var $lMargin; //left margin |
var $tMargin; //top margin |
var $rMargin; //right margin |
var $bMargin; //page break margin |
var $cMargin; //cell margin |
var $x,$y; //current position in user unit |
var $lasth; //height of last printed cell |
var $LineWidth; //line width in user unit |
var $CoreFonts; //array of standard font names |
var $fonts; //array of used fonts |
var $FontFiles; //array of font files |
var $diffs; //array of encoding differences |
var $FontFamily; //current font family |
var $FontStyle; //current font style |
var $underline; //underlining flag |
var $CurrentFont; //current font info |
var $FontSizePt; //current font size in points |
var $FontSize; //current font size in user unit |
var $DrawColor; //commands for drawing color |
var $FillColor; //commands for filling color |
var $TextColor; //commands for text color |
var $ColorFlag; //indicates whether fill and text colors are different |
var $ws; //word spacing |
var $images; //array of used images |
var $PageLinks; //array of links in pages |
var $links; //array of internal links |
var $AutoPageBreak; //automatic page breaking |
var $PageBreakTrigger; //threshold used to trigger page breaks |
var $InHeader; //flag set when processing header |
var $InFooter; //flag set when processing footer |
var $ZoomMode; //zoom display mode |
var $LayoutMode; //layout display mode |
var $title; //title |
var $subject; //subject |
var $author; //author |
var $keywords; //keywords |
var $creator; //creator |
var $AliasNbPages; //alias for total number of pages |
var $PDFVersion; //PDF version number |
/******************************************************************************* |
* * |
* Public methods * |
* * |
*******************************************************************************/ |
function FPDF($orientation='P', $unit='mm', $format='A4') |
{ |
//Some checks |
$this->_dochecks(); |
//Initialization of properties |
$this->page=0; |
$this->n=2; |
$this->buffer=''; |
$this->pages=array(); |
$this->PageSizes=array(); |
$this->state=0; |
$this->fonts=array(); |
$this->FontFiles=array(); |
$this->diffs=array(); |
$this->images=array(); |
$this->links=array(); |
$this->InHeader=false; |
$this->InFooter=false; |
$this->lasth=0; |
$this->FontFamily=''; |
$this->FontStyle=''; |
$this->FontSizePt=12; |
$this->underline=false; |
$this->DrawColor='0 G'; |
$this->FillColor='0 g'; |
$this->TextColor='0 g'; |
$this->ColorFlag=false; |
$this->ws=0; |
//Standard fonts |
$this->CoreFonts=array('courier'=>'Courier', 'courierB'=>'Courier-Bold', 'courierI'=>'Courier-Oblique', 'courierBI'=>'Courier-BoldOblique', |
'helvetica'=>'Helvetica', 'helveticaB'=>'Helvetica-Bold', 'helveticaI'=>'Helvetica-Oblique', 'helveticaBI'=>'Helvetica-BoldOblique', |
'times'=>'Times-Roman', 'timesB'=>'Times-Bold', 'timesI'=>'Times-Italic', 'timesBI'=>'Times-BoldItalic', |
'symbol'=>'Symbol', 'zapfdingbats'=>'ZapfDingbats'); |
//Scale factor |
if($unit=='pt') |
$this->k=1; |
elseif($unit=='mm') |
$this->k=72/25.4; |
elseif($unit=='cm') |
$this->k=72/2.54; |
elseif($unit=='in') |
$this->k=72; |
else |
$this->Error('Incorrect unit: '.$unit); |
//Page format |
$this->PageFormats=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)); |
if(is_string($format)) |
$format=$this->_getpageformat($format); |
$this->DefPageFormat=$format; |
$this->CurPageFormat=$format; |
//Page orientation |
$orientation=strtolower($orientation); |
if($orientation=='p' || $orientation=='portrait') |
{ |
$this->DefOrientation='P'; |
$this->w=$this->DefPageFormat[0]; |
$this->h=$this->DefPageFormat[1]; |
} |
elseif($orientation=='l' || $orientation=='landscape') |
{ |
$this->DefOrientation='L'; |
$this->w=$this->DefPageFormat[1]; |
$this->h=$this->DefPageFormat[0]; |
} |
else |
$this->Error('Incorrect orientation: '.$orientation); |
$this->CurOrientation=$this->DefOrientation; |
$this->wPt=$this->w*$this->k; |
$this->hPt=$this->h*$this->k; |
//Page margins (1 cm) |
$margin=28.35/$this->k; |
$this->SetMargins($margin,$margin); |
//Interior cell margin (1 mm) |
$this->cMargin=$margin/10; |
//Line width (0.2 mm) |
$this->LineWidth=.567/$this->k; |
//Automatic page break |
$this->SetAutoPageBreak(true,2*$margin); |
//Full width display mode |
$this->SetDisplayMode('fullwidth'); |
//Enable compression |
$this->SetCompression(true); |
//Set default PDF version number |
$this->PDFVersion='1.3'; |
} |
function SetMargins($left, $top, $right=null) |
{ |
//Set left, top and right margins |
$this->lMargin=$left; |
$this->tMargin=$top; |
if($right===null) |
$right=$left; |
$this->rMargin=$right; |
} |
function SetLeftMargin($margin) |
{ |
//Set left margin |
$this->lMargin=$margin; |
if($this->page>0 && $this->x<$margin) |
$this->x=$margin; |
} |
function SetTopMargin($margin) |
{ |
//Set top margin |
$this->tMargin=$margin; |
} |
function SetRightMargin($margin) |
{ |
//Set right margin |
$this->rMargin=$margin; |
} |
function SetAutoPageBreak($auto, $margin=0) |
{ |
//Set auto page break mode and triggering margin |
$this->AutoPageBreak=$auto; |
$this->bMargin=$margin; |
$this->PageBreakTrigger=$this->h-$margin; |
} |
function SetDisplayMode($zoom, $layout='continuous') |
{ |
//Set display mode in viewer |
if($zoom=='fullpage' || $zoom=='fullwidth' || $zoom=='real' || $zoom=='default' || !is_string($zoom)) |
$this->ZoomMode=$zoom; |
else |
$this->Error('Incorrect zoom display mode: '.$zoom); |
if($layout=='single' || $layout=='continuous' || $layout=='two' || $layout=='default') |
$this->LayoutMode=$layout; |
else |
$this->Error('Incorrect layout display mode: '.$layout); |
} |
function SetCompression($compress) |
{ |
//Set page compression |
if(function_exists('gzcompress')) |
$this->compress=$compress; |
else |
$this->compress=false; |
} |
function SetTitle($title, $isUTF8=false) |
{ |
//Title of document |
if($isUTF8) |
$title=$this->_UTF8toUTF16($title); |
$this->title=$title; |
} |
function SetSubject($subject, $isUTF8=false) |
{ |
//Subject of document |
if($isUTF8) |
$subject=$this->_UTF8toUTF16($subject); |
$this->subject=$subject; |
} |
function SetAuthor($author, $isUTF8=false) |
{ |
//Author of document |
if($isUTF8) |
$author=$this->_UTF8toUTF16($author); |
$this->author=$author; |
} |
function SetKeywords($keywords, $isUTF8=false) |
{ |
//Keywords of document |
if($isUTF8) |
$keywords=$this->_UTF8toUTF16($keywords); |
$this->keywords=$keywords; |
} |
function SetCreator($creator, $isUTF8=false) |
{ |
//Creator of document |
if($isUTF8) |
$creator=$this->_UTF8toUTF16($creator); |
$this->creator=$creator; |
} |
function AliasNbPages($alias='{nb}') |
{ |
//Define an alias for total number of pages |
$this->AliasNbPages=$alias; |
} |
function Error($msg) |
{ |
//Fatal error |
die('<b>FPDF error:</b> '.$msg); |
} |
function Open() |
{ |
//Begin document |
$this->state=1; |
} |
function Close() |
{ |
//Terminate document |
if($this->state==3) |
return; |
if($this->page==0) |
$this->AddPage(); |
//Page footer |
$this->InFooter=true; |
$this->Footer(); |
$this->InFooter=false; |
//Close page |
$this->_endpage(); |
//Close document |
$this->_enddoc(); |
} |
function AddPage($orientation='', $format='') |
{ |
//Start a new page |
if($this->state==0) |
$this->Open(); |
$family=$this->FontFamily; |
$style=$this->FontStyle.($this->underline ? 'U' : ''); |
$size=$this->FontSizePt; |
$lw=$this->LineWidth; |
$dc=$this->DrawColor; |
$fc=$this->FillColor; |
$tc=$this->TextColor; |
$cf=$this->ColorFlag; |
if($this->page>0) |
{ |
//Page footer |
$this->InFooter=true; |
$this->Footer(); |
$this->InFooter=false; |
//Close page |
$this->_endpage(); |
} |
//Start new page |
$this->_beginpage($orientation,$format); |
//Set line cap style to square |
$this->_out('2 J'); |
//Set line width |
$this->LineWidth=$lw; |
$this->_out(sprintf('%.2F w',$lw*$this->k)); |
//Set font |
if($family) |
$this->SetFont($family,$style,$size); |
//Set colors |
$this->DrawColor=$dc; |
if($dc!='0 G') |
$this->_out($dc); |
$this->FillColor=$fc; |
if($fc!='0 g') |
$this->_out($fc); |
$this->TextColor=$tc; |
$this->ColorFlag=$cf; |
//Page header |
$this->InHeader=true; |
$this->Header(); |
$this->InHeader=false; |
//Restore line width |
if($this->LineWidth!=$lw) |
{ |
$this->LineWidth=$lw; |
$this->_out(sprintf('%.2F w',$lw*$this->k)); |
} |
//Restore font |
if($family) |
$this->SetFont($family,$style,$size); |
//Restore colors |
if($this->DrawColor!=$dc) |
{ |
$this->DrawColor=$dc; |
$this->_out($dc); |
} |
if($this->FillColor!=$fc) |
{ |
$this->FillColor=$fc; |
$this->_out($fc); |
} |
$this->TextColor=$tc; |
$this->ColorFlag=$cf; |
} |
function Header() |
{ |
//To be implemented in your own inherited class |
} |
function Footer() |
{ |
//To be implemented in your own inherited class |
} |
function PageNo() |
{ |
//Get current page number |
return $this->page; |
} |
function SetDrawColor($r, $g=null, $b=null) |
{ |
//Set color for all stroking operations |
if(($r==0 && $g==0 && $b==0) || $g===null) |
$this->DrawColor=sprintf('%.3F G',$r/255); |
else |
$this->DrawColor=sprintf('%.3F %.3F %.3F RG',$r/255,$g/255,$b/255); |
if($this->page>0) |
$this->_out($this->DrawColor); |
} |
function SetFillColor($r, $g=null, $b=null) |
{ |
//Set color for all filling operations |
if(($r==0 && $g==0 && $b==0) || $g===null) |
$this->FillColor=sprintf('%.3F g',$r/255); |
else |
$this->FillColor=sprintf('%.3F %.3F %.3F rg',$r/255,$g/255,$b/255); |
$this->ColorFlag=($this->FillColor!=$this->TextColor); |
if($this->page>0) |
$this->_out($this->FillColor); |
} |
function SetTextColor($r, $g=null, $b=null) |
{ |
//Set color for text |
if(($r==0 && $g==0 && $b==0) || $g===null) |
$this->TextColor=sprintf('%.3F g',$r/255); |
else |
$this->TextColor=sprintf('%.3F %.3F %.3F rg',$r/255,$g/255,$b/255); |
$this->ColorFlag=($this->FillColor!=$this->TextColor); |
} |
function GetStringWidth($s) |
{ |
//Get width of a string in the current font |
$s=(string)$s; |
$cw=&$this->CurrentFont['cw']; |
$w=0; |
$l=strlen($s); |
for($i=0;$i<$l;$i++) |
$w+=$cw[$s[$i]]; |
return $w*$this->FontSize/1000; |
} |
function SetLineWidth($width) |
{ |
//Set line width |
$this->LineWidth=$width; |
if($this->page>0) |
$this->_out(sprintf('%.2F w',$width*$this->k)); |
} |
function Line($x1, $y1, $x2, $y2) |
{ |
//Draw a line |
$this->_out(sprintf('%.2F %.2F m %.2F %.2F l S',$x1*$this->k,($this->h-$y1)*$this->k,$x2*$this->k,($this->h-$y2)*$this->k)); |
} |
function Rect($x, $y, $w, $h, $style='') |
{ |
//Draw a rectangle |
if($style=='F') |
$op='f'; |
elseif($style=='FD' || $style=='DF') |
$op='B'; |
else |
$op='S'; |
$this->_out(sprintf('%.2F %.2F %.2F %.2F re %s',$x*$this->k,($this->h-$y)*$this->k,$w*$this->k,-$h*$this->k,$op)); |
} |
function AddFont($family, $style='', $file='') |
{ |
//Add a TrueType or Type1 font |
$family=strtolower($family); |
if($file=='') |
$file=str_replace(' ','',$family).strtolower($style).'.php'; |
if($family=='arial') |
$family='helvetica'; |
$style=strtoupper($style); |
if($style=='IB') |
$style='BI'; |
$fontkey=$family.$style; |
if(isset($this->fonts[$fontkey])) |
return; |
include($this->_getfontpath().$file); |
if(!isset($name)) |
$this->Error('Could not include font definition file'); |
$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 |
$d=0; |
$nb=count($this->diffs); |
for($i=1;$i<=$nb;$i++) |
{ |
if($this->diffs[$i]==$diff) |
{ |
$d=$i; |
break; |
} |
} |
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 |
$this->FontFiles[$file]=array('length1'=>$size1, 'length2'=>$size2); |
} |
} |
function SetFont($family, $style='', $size=0) |
{ |
//Select a font; size given in points |
global $fpdf_charwidths; |
$family=strtolower($family); |
if($family=='') |
$family=$this->FontFamily; |
if($family=='arial') |
$family='helvetica'; |
elseif($family=='symbol' || $family=='zapfdingbats') |
$style=''; |
$style=strtoupper($style); |
if(strpos($style,'U')!==false) |
{ |
$this->underline=true; |
$style=str_replace('U','',$style); |
} |
else |
$this->underline=false; |
if($style=='IB') |
$style='BI'; |
if($size==0) |
$size=$this->FontSizePt; |
//Test if font is already selected |
if($this->FontFamily==$family && $this->FontStyle==$style && $this->FontSizePt==$size) |
return; |
//Test if used for the first time |
$fontkey=$family.$style; |
if(!isset($this->fonts[$fontkey])) |
{ |
//Check if one of the standard fonts |
if(isset($this->CoreFonts[$fontkey])) |
{ |
if(!isset($fpdf_charwidths[$fontkey])) |
{ |
//Load metric file |
$file=$family; |
if($family=='times' || $family=='helvetica') |
$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 |
$this->Error('Undefined font: '.$family.' '.$style); |
} |
//Select it |
$this->FontFamily=$family; |
$this->FontStyle=$style; |
$this->FontSizePt=$size; |
$this->FontSize=$size/$this->k; |
$this->CurrentFont=&$this->fonts[$fontkey]; |
if($this->page>0) |
$this->_out(sprintf('BT /F%d %.2F Tf ET',$this->CurrentFont['i'],$this->FontSizePt)); |
} |
function SetFontSize($size) |
{ |
//Set font size in points |
if($this->FontSizePt==$size) |
return; |
$this->FontSizePt=$size; |
$this->FontSize=$size/$this->k; |
if($this->page>0) |
$this->_out(sprintf('BT /F%d %.2F Tf ET',$this->CurrentFont['i'],$this->FontSizePt)); |
} |
function AddLink() |
{ |
//Create a new internal link |
$n=count($this->links)+1; |
$this->links[$n]=array(0, 0); |
return $n; |
} |
function SetLink($link, $y=0, $page=-1) |
{ |
//Set destination of internal link |
if($y==-1) |
$y=$this->y; |
if($page==-1) |
$page=$this->page; |
$this->links[$link]=array($page, $y); |
} |
function Link($x, $y, $w, $h, $link) |
{ |
//Put a link on the page |
$this->PageLinks[$this->page][]=array($x*$this->k, $this->hPt-$y*$this->k, $w*$this->k, $h*$this->k, $link); |
} |
function Text($x, $y, $txt) |
{ |
//Output a string |
$s=sprintf('BT %.2F %.2F Td (%s) Tj ET',$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); |
if($this->underline && $txt!='') |
$s.=' '.$this->_dounderline($x,$y,$txt); |
if($this->ColorFlag) |
$s='q '.$this->TextColor.' '.$s.' Q'; |
$this->_out($s); |
} |
function AcceptPageBreak() |
{ |
//Accept automatic page break or not |
return $this->AutoPageBreak; |
} |
function Cell($w, $h=0, $txt='', $border=0, $ln=0, $align='', $fill=false, $link='') |
{ |
//Output a cell |
$k=$this->k; |
if($this->y+$h>$this->PageBreakTrigger && !$this->InHeader && !$this->InFooter && $this->AcceptPageBreak()) |
{ |
//Automatic page break |
$x=$this->x; |
$ws=$this->ws; |
if($ws>0) |
{ |
$this->ws=0; |
$this->_out('0 Tw'); |
} |
$this->AddPage($this->CurOrientation,$this->CurPageFormat); |
$this->x=$x; |
if($ws>0) |
{ |
$this->ws=$ws; |
$this->_out(sprintf('%.3F Tw',$ws*$k)); |
} |
} |
if($w==0) |
$w=$this->w-$this->rMargin-$this->x; |
$s=''; |
if($fill || $border==1) |
{ |
if($fill) |
$op=($border==1) ? 'B' : 'f'; |
else |
$op='S'; |
$s=sprintf('%.2F %.2F %.2F %.2F re %s ',$this->x*$k,($this->h-$this->y)*$k,$w*$k,-$h*$k,$op); |
} |
if(is_string($border)) |
{ |
$x=$this->x; |
$y=$this->y; |
if(strpos($border,'L')!==false) |
$s.=sprintf('%.2F %.2F m %.2F %.2F l S ',$x*$k,($this->h-$y)*$k,$x*$k,($this->h-($y+$h))*$k); |
if(strpos($border,'T')!==false) |
$s.=sprintf('%.2F %.2F m %.2F %.2F l S ',$x*$k,($this->h-$y)*$k,($x+$w)*$k,($this->h-$y)*$k); |
if(strpos($border,'R')!==false) |
$s.=sprintf('%.2F %.2F m %.2F %.2F l S ',($x+$w)*$k,($this->h-$y)*$k,($x+$w)*$k,($this->h-($y+$h))*$k); |
if(strpos($border,'B')!==false) |
$s.=sprintf('%.2F %.2F m %.2F %.2F l S ',$x*$k,($this->h-($y+$h))*$k,($x+$w)*$k,($this->h-($y+$h))*$k); |
} |
if($txt!=='') |
{ |
if($align=='R') |
$dx=$w-$this->cMargin-$this->GetStringWidth($txt); |
elseif($align=='C') |
$dx=($w-$this->GetStringWidth($txt))/2; |
else |
$dx=$this->cMargin; |
if($this->ColorFlag) |
$s.='q '.$this->TextColor.' '; |
$txt2=str_replace(')','\\)',str_replace('(','\\(',str_replace('\\','\\\\',$txt))); |
$s.=sprintf('BT %.2F %.2F Td (%s) Tj ET',($this->x+$dx)*$k,($this->h-($this->y+.5*$h+.3*$this->FontSize))*$k,$txt2); |
if($this->underline) |
$s.=' '.$this->_dounderline($this->x+$dx,$this->y+.5*$h+.3*$this->FontSize,$txt); |
if($this->ColorFlag) |
$s.=' Q'; |
if($link) |
$this->Link($this->x+$dx,$this->y+.5*$h-.5*$this->FontSize,$this->GetStringWidth($txt),$this->FontSize,$link); |
} |
if($s) |
$this->_out($s); |
$this->lasth=$h; |
if($ln>0) |
{ |
//Go to next line |
$this->y+=$h; |
if($ln==1) |
$this->x=$this->lMargin; |
} |
else |
$this->x+=$w; |
} |
function MultiCell($w, $h, $txt, $border=0, $align='J', $fill=false) |
{ |
//Output text with automatic or explicit line breaks |
$cw=&$this->CurrentFont['cw']; |
if($w==0) |
$w=$this->w-$this->rMargin-$this->x; |
$wmax=($w-2*$this->cMargin)*1000/$this->FontSize; |
$s=str_replace("\r",'',$txt); |
$nb=strlen($s); |
if($nb>0 && $s[$nb-1]=="\n") |
$nb--; |
$b=0; |
if($border) |
{ |
if($border==1) |
{ |
$border='LTRB'; |
$b='LRT'; |
$b2='LR'; |
} |
else |
{ |
$b2=''; |
if(strpos($border,'L')!==false) |
$b2.='L'; |
if(strpos($border,'R')!==false) |
$b2.='R'; |
$b=(strpos($border,'T')!==false) ? $b2.'T' : $b2; |
} |
} |
$sep=-1; |
$i=0; |
$j=0; |
$l=0; |
$ns=0; |
$nl=1; |
while($i<$nb) |
{ |
//Get next character |
$c=$s[$i]; |
if($c=="\n") |
{ |
//Explicit line break |
if($this->ws>0) |
{ |
$this->ws=0; |
$this->_out('0 Tw'); |
} |
$this->Cell($w,$h,substr($s,$j,$i-$j),$b,2,$align,$fill); |
$i++; |
$sep=-1; |
$j=$i; |
$l=0; |
$ns=0; |
$nl++; |
if($border && $nl==2) |
$b=$b2; |
continue; |
} |
if($c==' ') |
{ |
$sep=$i; |
$ls=$l; |
$ns++; |
} |
$l+=$cw[$c]; |
if($l>$wmax) |
{ |
//Automatic line break |
if($sep==-1) |
{ |
if($i==$j) |
$i++; |
if($this->ws>0) |
{ |
$this->ws=0; |
$this->_out('0 Tw'); |
} |
$this->Cell($w,$h,substr($s,$j,$i-$j),$b,2,$align,$fill); |
} |
else |
{ |
if($align=='J') |
{ |
$this->ws=($ns>1) ? ($wmax-$ls)/1000*$this->FontSize/($ns-1) : 0; |
$this->_out(sprintf('%.3F Tw',$this->ws*$this->k)); |
} |
$this->Cell($w,$h,substr($s,$j,$sep-$j),$b,2,$align,$fill); |
$i=$sep+1; |
} |
$sep=-1; |
$j=$i; |
$l=0; |
$ns=0; |
$nl++; |
if($border && $nl==2) |
$b=$b2; |
} |
else |
$i++; |
} |
//Last chunk |
if($this->ws>0) |
{ |
$this->ws=0; |
$this->_out('0 Tw'); |
} |
if($border && strpos($border,'B')!==false) |
$b.='B'; |
$this->Cell($w,$h,substr($s,$j,$i-$j),$b,2,$align,$fill); |
$this->x=$this->lMargin; |
} |
function Write($h, $txt, $link='') |
{ |
//Output text in flowing mode |
$cw=&$this->CurrentFont['cw']; |
$w=$this->w-$this->rMargin-$this->x; |
$wmax=($w-2*$this->cMargin)*1000/$this->FontSize; |
$s=str_replace("\r",'',$txt); |
$nb=strlen($s); |
$sep=-1; |
$i=0; |
$j=0; |
$l=0; |
$nl=1; |
while($i<$nb) |
{ |
//Get next character |
$c=$s[$i]; |
if($c=="\n") |
{ |
//Explicit line break |
$this->Cell($w,$h,substr($s,$j,$i-$j),0,2,'',0,$link); |
$i++; |
$sep=-1; |
$j=$i; |
$l=0; |
if($nl==1) |
{ |
$this->x=$this->lMargin; |
$w=$this->w-$this->rMargin-$this->x; |
$wmax=($w-2*$this->cMargin)*1000/$this->FontSize; |
} |
$nl++; |
continue; |
} |
if($c==' ') |
$sep=$i; |
$l+=$cw[$c]; |
if($l>$wmax) |
{ |
//Automatic line break |
if($sep==-1) |
{ |
if($this->x>$this->lMargin) |
{ |
//Move to next line |
$this->x=$this->lMargin; |
$this->y+=$h; |
$w=$this->w-$this->rMargin-$this->x; |
$wmax=($w-2*$this->cMargin)*1000/$this->FontSize; |
$i++; |
$nl++; |
continue; |
} |
if($i==$j) |
$i++; |
$this->Cell($w,$h,substr($s,$j,$i-$j),0,2,'',0,$link); |
} |
else |
{ |
$this->Cell($w,$h,substr($s,$j,$sep-$j),0,2,'',0,$link); |
$i=$sep+1; |
} |
$sep=-1; |
$j=$i; |
$l=0; |
if($nl==1) |
{ |
$this->x=$this->lMargin; |
$w=$this->w-$this->rMargin-$this->x; |
$wmax=($w-2*$this->cMargin)*1000/$this->FontSize; |
} |
$nl++; |
} |
else |
$i++; |
} |
//Last chunk |
if($i!=$j) |
$this->Cell($l/1000*$this->FontSize,$h,substr($s,$j),0,0,'',0,$link); |
} |
function Ln($h=null) |
{ |
//Line feed; default value is last cell height |
$this->x=$this->lMargin; |
if($h===null) |
$this->y+=$this->lasth; |
else |
$this->y+=$h; |
} |
function Image($file, $x=null, $y=null, $w=0, $h=0, $type='', $link='') |
{ |
//Put an image on the page |
if(!isset($this->images[$file])) |
{ |
//First use of this image, get info |
if($type=='') |
{ |
$pos=strrpos($file,'.'); |
if(!$pos) |
$this->Error('Image file has no extension and no type was specified: '.$file); |
$type=substr($file,$pos+1); |
} |
$type=strtolower($type); |
if($type=='jpeg') |
$type='jpg'; |
$mtd='_parse'.$type; |
if(!method_exists($this,$mtd)) |
$this->Error('Unsupported image type: '.$type); |
$info=$this->$mtd($file); |
$info['i']=count($this->images)+1; |
$this->images[$file]=$info; |
} |
else |
$info=$this->images[$file]; |
//Automatic width and height calculation if needed |
if($w==0 && $h==0) |
{ |
//Put image at 72 dpi |
$w=$info['w']/$this->k; |
$h=$info['h']/$this->k; |
} |
elseif($w==0) |
$w=$h*$info['w']/$info['h']; |
elseif($h==0) |
$h=$w*$info['h']/$info['w']; |
//Flowing mode |
if($y===null) |
{ |
if($this->y+$h>$this->PageBreakTrigger && !$this->InHeader && !$this->InFooter && $this->AcceptPageBreak()) |
{ |
//Automatic page break |
$x2=$this->x; |
$this->AddPage($this->CurOrientation,$this->CurPageFormat); |
$this->x=$x2; |
} |
$y=$this->y; |
$this->y+=$h; |
} |
if($x===null) |
$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'])); |
if($link) |
$this->Link($x,$y,$w,$h,$link); |
} |
function GetX() |
{ |
//Get x position |
return $this->x; |
} |
function SetX($x) |
{ |
//Set x position |
if($x>=0) |
$this->x=$x; |
else |
$this->x=$this->w+$x; |
} |
function GetY() |
{ |
//Get y position |
return $this->y; |
} |
function SetY($y) |
{ |
//Set y position and reset x |
$this->x=$this->lMargin; |
if($y>=0) |
$this->y=$y; |
else |
$this->y=$this->h+$y; |
} |
function SetXY($x, $y) |
{ |
//Set x and y positions |
$this->SetY($y); |
$this->SetX($x); |
} |
function Output($name='', $dest='') |
{ |
//Output PDF to some destination |
if($this->state<3) |
$this->Close(); |
$dest=strtoupper($dest); |
if($dest=='') |
{ |
if($name=='') |
{ |
$name='doc.pdf'; |
$dest='I'; |
} |
else |
$dest='F'; |
} |
switch($dest) |
{ |
case 'I': |
//Send to standard output |
if(ob_get_length()) |
$this->Error('Some data has already been output, can\'t send PDF file'); |
if(php_sapi_name()!='cli') |
{ |
//We send to a browser |
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('Cache-Control: private, max-age=0, must-revalidate'); |
header('Pragma: public'); |
ini_set('zlib.output_compression','0'); |
} |
echo $this->buffer; |
break; |
case 'D': |
//Download file |
if(ob_get_length()) |
$this->Error('Some data has already been output, can\'t send PDF file'); |
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('Cache-Control: private, max-age=0, must-revalidate'); |
header('Pragma: public'); |
ini_set('zlib.output_compression','0'); |
echo $this->buffer; |
break; |
case 'F': |
//Save to local file |
$f=fopen($name,'wb'); |
if(!$f) |
$this->Error('Unable to create output file: '.$name); |
fwrite($f,$this->buffer,strlen($this->buffer)); |
fclose($f); |
break; |
case 'S': |
//Return as a string |
return $this->buffer; |
default: |
$this->Error('Incorrect output destination: '.$dest); |
} |
return ''; |
} |
/******************************************************************************* |
* * |
* Protected methods * |
* * |
*******************************************************************************/ |
function _dochecks() |
{ |
//Check availability of %F |
if(sprintf('%.1F',1.0)!='1.0') |
$this->Error('This version of PHP is not supported'); |
//Check mbstring overloading |
if(ini_get('mbstring.func_overload') & 2) |
$this->Error('mbstring overloading must be disabled'); |
//Disable runtime magic quotes |
if(get_magic_quotes_runtime()) |
@set_magic_quotes_runtime(0); |
} |
function _getpageformat($format) |
{ |
$format=strtolower($format); |
if(!isset($this->PageFormats[$format])) |
$this->Error('Unknown page format: '.$format); |
$a=$this->PageFormats[$format]; |
return array($a[0]/$this->k, $a[1]/$this->k); |
} |
function _getfontpath() |
{ |
if(!defined('FPDF_FONTPATH') && is_dir(dirname(__FILE__).'/font')) |
define('FPDF_FONTPATH',dirname(__FILE__).'/font/'); |
return defined('FPDF_FONTPATH') ? FPDF_FONTPATH : ''; |
} |
function _beginpage($orientation, $format) |
{ |
$this->page++; |
$this->pages[$this->page]=''; |
$this->state=2; |
$this->x=$this->lMargin; |
$this->y=$this->tMargin; |
$this->FontFamily=''; |
//Check page size |
if($orientation=='') |
$orientation=$this->DefOrientation; |
else |
$orientation=strtoupper($orientation[0]); |
if($format=='') |
$format=$this->DefPageFormat; |
else |
{ |
if(is_string($format)) |
$format=$this->_getpageformat($format); |
} |
if($orientation!=$this->CurOrientation || $format[0]!=$this->CurPageFormat[0] || $format[1]!=$this->CurPageFormat[1]) |
{ |
//New size |
if($orientation=='P') |
{ |
$this->w=$format[0]; |
$this->h=$format[1]; |
} |
else |
{ |
$this->w=$format[1]; |
$this->h=$format[0]; |
} |
$this->wPt=$this->w*$this->k; |
$this->hPt=$this->h*$this->k; |
$this->PageBreakTrigger=$this->h-$this->bMargin; |
$this->CurOrientation=$orientation; |
$this->CurPageFormat=$format; |
} |
if($orientation!=$this->DefOrientation || $format[0]!=$this->DefPageFormat[0] || $format[1]!=$this->DefPageFormat[1]) |
$this->PageSizes[$this->page]=array($this->wPt, $this->hPt); |
} |
function _endpage() |
{ |
$this->state=1; |
} |
function _escape($s) |
{ |
//Escape special characters in strings |
$s=str_replace('\\','\\\\',$s); |
$s=str_replace('(','\\(',$s); |
$s=str_replace(')','\\)',$s); |
$s=str_replace("\r",'\\r',$s); |
return $s; |
} |
function _textstring($s) |
{ |
//Format a text string |
return '('.$this->_escape($s).')'; |
} |
function _UTF8toUTF16($s) |
{ |
//Convert UTF-8 to UTF-16BE with BOM |
$res="\xFE\xFF"; |
$nb=strlen($s); |
$i=0; |
while($i<$nb) |
{ |
$c1=ord($s[$i++]); |
if($c1>=224) |
{ |
//3-byte character |
$c2=ord($s[$i++]); |
$c3=ord($s[$i++]); |
$res.=chr((($c1 & 0x0F)<<4) + (($c2 & 0x3C)>>2)); |
$res.=chr((($c2 & 0x03)<<6) + ($c3 & 0x3F)); |
} |
elseif($c1>=192) |
{ |
//2-byte character |
$c2=ord($s[$i++]); |
$res.=chr(($c1 & 0x1C)>>2); |
$res.=chr((($c1 & 0x03)<<6) + ($c2 & 0x3F)); |
} |
else |
{ |
//Single-byte character |
$res.="\0".chr($c1); |
} |
} |
return $res; |
} |
function _dounderline($x, $y, $txt) |
{ |
//Underline text |
$up=$this->CurrentFont['up']; |
$ut=$this->CurrentFont['ut']; |
$w=$this->GetStringWidth($txt)+$this->ws*substr_count($txt,' '); |
return sprintf('%.2F %.2F %.2F %.2F re f',$x*$this->k,($this->h-($y-$up/1000*$this->FontSize))*$this->k,$w*$this->k,-$ut/1000*$this->FontSizePt); |
} |
function _parsejpg($file) |
{ |
//Extract info from a JPEG file |
$a=GetImageSize($file); |
if(!$a) |
$this->Error('Missing or incorrect image file: '.$file); |
if($a[2]!=2) |
$this->Error('Not a JPEG file: '.$file); |
if(!isset($a['channels']) || $a['channels']==3) |
$colspace='DeviceRGB'; |
elseif($a['channels']==4) |
$colspace='DeviceCMYK'; |
else |
$colspace='DeviceGray'; |
$bpc=isset($a['bits']) ? $a['bits'] : 8; |
//Read whole 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); |
} |
function _parsepng($file) |
{ |
//Extract info from a PNG file |
$f=fopen($file,'rb'); |
if(!$f) |
$this->Error('Can\'t open image file: '.$file); |
//Check signature |
if($this->_readstream($f,8)!=chr(137).'PNG'.chr(13).chr(10).chr(26).chr(10)) |
$this->Error('Not a PNG file: '.$file); |
//Read header chunk |
$this->_readstream($f,4); |
if($this->_readstream($f,4)!='IHDR') |
$this->Error('Incorrect PNG file: '.$file); |
$w=$this->_readint($f); |
$h=$this->_readint($f); |
$bpc=ord($this->_readstream($f,1)); |
if($bpc>8) |
$this->Error('16-bit depth not supported: '.$file); |
$ct=ord($this->_readstream($f,1)); |
if($ct==0) |
$colspace='DeviceGray'; |
elseif($ct==2) |
$colspace='DeviceRGB'; |
elseif($ct==3) |
$colspace='Indexed'; |
else |
$this->Error('Alpha channel not supported: '.$file); |
if(ord($this->_readstream($f,1))!=0) |
$this->Error('Unknown compression method: '.$file); |
if(ord($this->_readstream($f,1))!=0) |
$this->Error('Unknown filter method: '.$file); |
if(ord($this->_readstream($f,1))!=0) |
$this->Error('Interlacing not supported: '.$file); |
$this->_readstream($f,4); |
$parms='/DecodeParms <</Predictor 15 /Colors '.($ct==2 ? 3 : 1).' /BitsPerComponent '.$bpc.' /Columns '.$w.'>>'; |
//Scan chunks looking for palette, transparency and image data |
$pal=''; |
$trns=''; |
$data=''; |
do |
{ |
$n=$this->_readint($f); |
$type=$this->_readstream($f,4); |
if($type=='PLTE') |
{ |
//Read palette |
$pal=$this->_readstream($f,$n); |
$this->_readstream($f,4); |
} |
elseif($type=='tRNS') |
{ |
//Read transparency info |
$t=$this->_readstream($f,$n); |
if($ct==0) |
$trns=array(ord(substr($t,1,1))); |
elseif($ct==2) |
$trns=array(ord(substr($t,1,1)), ord(substr($t,3,1)), ord(substr($t,5,1))); |
else |
{ |
$pos=strpos($t,chr(0)); |
if($pos!==false) |
$trns=array($pos); |
} |
$this->_readstream($f,4); |
} |
elseif($type=='IDAT') |
{ |
//Read image data block |
$data.=$this->_readstream($f,$n); |
$this->_readstream($f,4); |
} |
elseif($type=='IEND') |
break; |
else |
$this->_readstream($f,$n+4); |
} |
while($n); |
if($colspace=='Indexed' && empty($pal)) |
$this->Error('Missing palette in '.$file); |
fclose($f); |
return array('w'=>$w, 'h'=>$h, 'cs'=>$colspace, 'bpc'=>$bpc, 'f'=>'FlateDecode', 'parms'=>$parms, 'pal'=>$pal, 'trns'=>$trns, 'data'=>$data); |
} |
function _readstream($f, $n) |
{ |
//Read n bytes from stream |
$res=''; |
while($n>0 && !feof($f)) |
{ |
$s=fread($f,$n); |
if($s===false) |
$this->Error('Error while reading stream'); |
$n-=strlen($s); |
$res.=$s; |
} |
if($n>0) |
$this->Error('Unexpected end of stream'); |
return $res; |
} |
function _readint($f) |
{ |
//Read a 4-byte integer from stream |
$a=unpack('Ni',$this->_readstream($f,4)); |
return $a['i']; |
} |
function _parsegif($file) |
{ |
//Extract info from a GIF file (via PNG conversion) |
if(!function_exists('imagepng')) |
$this->Error('GD extension is required for GIF support'); |
if(!function_exists('imagecreatefromgif')) |
$this->Error('GD has no GIF read support'); |
$im=imagecreatefromgif($file); |
if(!$im) |
$this->Error('Missing or incorrect image file: '.$file); |
imageinterlace($im,0); |
$tmp=tempnam('.','gif'); |
if(!$tmp) |
$this->Error('Unable to create a temporary file'); |
if(!imagepng($im,$tmp)) |
$this->Error('Error while saving to temporary file'); |
imagedestroy($im); |
$info=$this->_parsepng($tmp); |
unlink($tmp); |
return $info; |
} |
function _newobj() |
{ |
//Begin a new object |
$this->n++; |
$this->offsets[$this->n]=strlen($this->buffer); |
$this->_out($this->n.' 0 obj'); |
} |
function _putstream($s) |
{ |
$this->_out('stream'); |
$this->_out($s); |
$this->_out('endstream'); |
} |
function _out($s) |
{ |
//Add a line to the document |
if($this->state==2) |
$this->pages[$this->page].=$s."\n"; |
else |
$this->buffer.=$s."\n"; |
} |
function _putpages() |
{ |
$nb=$this->page; |
if(!empty($this->AliasNbPages)) |
{ |
//Replace number of pages |
for($n=1;$n<=$nb;$n++) |
$this->pages[$n]=str_replace($this->AliasNbPages,$nb,$this->pages[$n]); |
} |
if($this->DefOrientation=='P') |
{ |
$wPt=$this->DefPageFormat[0]*$this->k; |
$hPt=$this->DefPageFormat[1]*$this->k; |
} |
else |
{ |
$wPt=$this->DefPageFormat[1]*$this->k; |
$hPt=$this->DefPageFormat[0]*$this->k; |
} |
$filter=($this->compress) ? '/Filter /FlateDecode ' : ''; |
for($n=1;$n<=$nb;$n++) |
{ |
//Page |
$this->_newobj(); |
$this->_out('<</Type /Page'); |
$this->_out('/Parent 1 0 R'); |
if(isset($this->PageSizes[$n])) |
$this->_out(sprintf('/MediaBox [0 0 %.2F %.2F]',$this->PageSizes[$n][0],$this->PageSizes[$n][1])); |
$this->_out('/Resources 2 0 R'); |
if(isset($this->PageLinks[$n])) |
{ |
//Links |
$annots='/Annots ['; |
foreach($this->PageLinks[$n] as $pl) |
{ |
$rect=sprintf('%.2F %.2F %.2F %.2F',$pl[0],$pl[1],$pl[0]+$pl[2],$pl[1]-$pl[3]); |
$annots.='<</Type /Annot /Subtype /Link /Rect ['.$rect.'] /Border [0 0 0] '; |
if(is_string($pl[4])) |
$annots.='/A <</S /URI /URI '.$this->_textstring($pl[4]).'>>>>'; |
else |
{ |
$l=$this->links[$pl[4]]; |
$h=isset($this->PageSizes[$l[0]]) ? $this->PageSizes[$l[0]][1] : $hPt; |
$annots.=sprintf('/Dest [%d 0 R /XYZ 0 %.2F null]>>',1+2*$l[0],$h-$l[1]*$this->k); |
} |
} |
$this->_out($annots.']'); |
} |
$this->_out('/Contents '.($this->n+1).' 0 R>>'); |
$this->_out('endobj'); |
//Page content |
$p=($this->compress) ? gzcompress($this->pages[$n]) : $this->pages[$n]; |
$this->_newobj(); |
$this->_out('<<'.$filter.'/Length '.strlen($p).'>>'); |
$this->_putstream($p); |
$this->_out('endobj'); |
} |
//Pages root |
$this->offsets[1]=strlen($this->buffer); |
$this->_out('1 0 obj'); |
$this->_out('<</Type /Pages'); |
$kids='/Kids ['; |
for($i=0;$i<$nb;$i++) |
$kids.=(3+2*$i).' 0 R '; |
$this->_out($kids.']'); |
$this->_out('/Count '.$nb); |
$this->_out(sprintf('/MediaBox [0 0 %.2F %.2F]',$wPt,$hPt)); |
$this->_out('>>'); |
$this->_out('endobj'); |
} |
function _putfonts() |
{ |
$nf=$this->n; |
foreach($this->diffs as $diff) |
{ |
//Encodings |
$this->_newobj(); |
$this->_out('<</Type /Encoding /BaseEncoding /WinAnsiEncoding /Differences ['.$diff.']>>'); |
$this->_out('endobj'); |
} |
foreach($this->FontFiles as $file=>$info) |
{ |
//Font file embedding |
$this->_newobj(); |
$this->FontFiles[$file]['n']=$this->n; |
$font=''; |
$f=fopen($this->_getfontpath().$file,'rb',1); |
if(!$f) |
$this->Error('Font file not found'); |
while(!feof($f)) |
$font.=fread($f,8192); |
fclose($f); |
$compressed=(substr($file,-2)=='.z'); |
if(!$compressed && isset($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)); |
if($compressed) |
$this->_out('/Filter /FlateDecode'); |
$this->_out('/Length1 '.$info['length1']); |
if(isset($info['length2'])) |
$this->_out('/Length2 '.$info['length2'].' /Length3 0'); |
$this->_out('>>'); |
$this->_putstream($font); |
$this->_out('endobj'); |
} |
foreach($this->fonts as $k=>$font) |
{ |
//Font objects |
$this->fonts[$k]['n']=$this->n+1; |
$type=$font['type']; |
$name=$font['name']; |
if($type=='core') |
{ |
//Standard font |
$this->_newobj(); |
$this->_out('<</Type /Font'); |
$this->_out('/BaseFont /'.$name); |
$this->_out('/Subtype /Type1'); |
if($name!='Symbol' && $name!='ZapfDingbats') |
$this->_out('/Encoding /WinAnsiEncoding'); |
$this->_out('>>'); |
$this->_out('endobj'); |
} |
elseif($type=='Type1' || $type=='TrueType') |
{ |
//Additional Type1 or TrueType font |
$this->_newobj(); |
$this->_out('<</Type /Font'); |
$this->_out('/BaseFont /'.$name); |
$this->_out('/Subtype /'.$type); |
$this->_out('/FirstChar 32 /LastChar 255'); |
$this->_out('/Widths '.($this->n+1).' 0 R'); |
$this->_out('/FontDescriptor '.($this->n+2).' 0 R'); |
if($font['enc']) |
{ |
if(isset($font['diff'])) |
$this->_out('/Encoding '.($nf+$font['diff']).' 0 R'); |
else |
$this->_out('/Encoding /WinAnsiEncoding'); |
} |
$this->_out('>>'); |
$this->_out('endobj'); |
//Widths |
$this->_newobj(); |
$cw=&$font['cw']; |
$s='['; |
for($i=32;$i<=255;$i++) |
$s.=$cw[chr($i)].' '; |
$this->_out($s.']'); |
$this->_out('endobj'); |
//Descriptor |
$this->_newobj(); |
$s='<</Type /FontDescriptor /FontName /'.$name; |
foreach($font['desc'] as $k=>$v) |
$s.=' /'.$k.' '.$v; |
$file=$font['file']; |
if($file) |
$s.=' /FontFile'.($type=='Type1' ? '' : '2').' '.$this->FontFiles[$file]['n'].' 0 R'; |
$this->_out($s.'>>'); |
$this->_out('endobj'); |
} |
else |
{ |
//Allow for additional types |
$mtd='_put'.strtolower($type); |
if(!method_exists($this,$mtd)) |
$this->Error('Unsupported font type: '.$type); |
$this->$mtd($font); |
} |
} |
} |
function _putimages() |
{ |
$filter=($this->compress) ? '/Filter /FlateDecode ' : ''; |
reset($this->images); |
while(list($file,$info)=each($this->images)) |
{ |
$this->_newobj(); |
$this->images[$file]['n']=$this->n; |
$this->_out('<</Type /XObject'); |
$this->_out('/Subtype /Image'); |
$this->_out('/Width '.$info['w']); |
$this->_out('/Height '.$info['h']); |
if($info['cs']=='Indexed') |
$this->_out('/ColorSpace [/Indexed /DeviceRGB '.(strlen($info['pal'])/3-1).' '.($this->n+1).' 0 R]'); |
else |
{ |
$this->_out('/ColorSpace /'.$info['cs']); |
if($info['cs']=='DeviceCMYK') |
$this->_out('/Decode [1 0 1 0 1 0 1 0]'); |
} |
$this->_out('/BitsPerComponent '.$info['bpc']); |
if(isset($info['f'])) |
$this->_out('/Filter /'.$info['f']); |
if(isset($info['parms'])) |
$this->_out($info['parms']); |
if(isset($info['trns']) && is_array($info['trns'])) |
{ |
$trns=''; |
for($i=0;$i<count($info['trns']);$i++) |
$trns.=$info['trns'][$i].' '.$info['trns'][$i].' '; |
$this->_out('/Mask ['.$trns.']'); |
} |
$this->_out('/Length '.strlen($info['data']).'>>'); |
$this->_putstream($info['data']); |
unset($this->images[$file]['data']); |
$this->_out('endobj'); |
//Palette |
if($info['cs']=='Indexed') |
{ |
$this->_newobj(); |
$pal=($this->compress) ? gzcompress($info['pal']) : $info['pal']; |
$this->_out('<<'.$filter.'/Length '.strlen($pal).'>>'); |
$this->_putstream($pal); |
$this->_out('endobj'); |
} |
} |
} |
function _putxobjectdict() |
{ |
foreach($this->images as $image) |
$this->_out('/I'.$image['i'].' '.$image['n'].' 0 R'); |
} |
function _putresourcedict() |
{ |
$this->_out('/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]'); |
$this->_out('/Font <<'); |
foreach($this->fonts as $font) |
$this->_out('/F'.$font['i'].' '.$font['n'].' 0 R'); |
$this->_out('>>'); |
$this->_out('/XObject <<'); |
$this->_putxobjectdict(); |
$this->_out('>>'); |
} |
function _putresources() |
{ |
$this->_putfonts(); |
$this->_putimages(); |
//Resource dictionary |
$this->offsets[2]=strlen($this->buffer); |
$this->_out('2 0 obj'); |
$this->_out('<<'); |
$this->_putresourcedict(); |
$this->_out('>>'); |
$this->_out('endobj'); |
} |
function _putinfo() |
{ |
$this->_out('/Producer '.$this->_textstring('FPDF '.FPDF_VERSION)); |
if(!empty($this->title)) |
$this->_out('/Title '.$this->_textstring($this->title)); |
if(!empty($this->subject)) |
$this->_out('/Subject '.$this->_textstring($this->subject)); |
if(!empty($this->author)) |
$this->_out('/Author '.$this->_textstring($this->author)); |
if(!empty($this->keywords)) |
$this->_out('/Keywords '.$this->_textstring($this->keywords)); |
if(!empty($this->creator)) |
$this->_out('/Creator '.$this->_textstring($this->creator)); |
$this->_out('/CreationDate '.$this->_textstring('D:'.@date('YmdHis'))); |
} |
function _putcatalog() |
{ |
$this->_out('/Type /Catalog'); |
$this->_out('/Pages 1 0 R'); |
if($this->ZoomMode=='fullpage') |
$this->_out('/OpenAction [3 0 R /Fit]'); |
elseif($this->ZoomMode=='fullwidth') |
$this->_out('/OpenAction [3 0 R /FitH null]'); |
elseif($this->ZoomMode=='real') |
$this->_out('/OpenAction [3 0 R /XYZ null null 1]'); |
elseif(!is_string($this->ZoomMode)) |
$this->_out('/OpenAction [3 0 R /XYZ null null '.($this->ZoomMode/100).']'); |
if($this->LayoutMode=='single') |
$this->_out('/PageLayout /SinglePage'); |
elseif($this->LayoutMode=='continuous') |
$this->_out('/PageLayout /OneColumn'); |
elseif($this->LayoutMode=='two') |
$this->_out('/PageLayout /TwoColumnLeft'); |
} |
function _putheader() |
{ |
$this->_out('%PDF-'.$this->PDFVersion); |
} |
function _puttrailer() |
{ |
$this->_out('/Size '.($this->n+1)); |
$this->_out('/Root '.$this->n.' 0 R'); |
$this->_out('/Info '.($this->n-1).' 0 R'); |
} |
function _enddoc() |
{ |
$this->_putheader(); |
$this->_putpages(); |
$this->_putresources(); |
//Info |
$this->_newobj(); |
$this->_out('<<'); |
$this->_putinfo(); |
$this->_out('>>'); |
$this->_out('endobj'); |
//Catalog |
$this->_newobj(); |
$this->_out('<<'); |
$this->_putcatalog(); |
$this->_out('>>'); |
$this->_out('endobj'); |
//Cross-ref |
$o=strlen($this->buffer); |
$this->_out('xref'); |
$this->_out('0 '.($this->n+1)); |
$this->_out('0000000000 65535 f '); |
for($i=1;$i<=$this->n;$i++) |
$this->_out(sprintf('%010d 00000 n ',$this->offsets[$i])); |
//Trailer |
$this->_out('trailer'); |
$this->_out('<<'); |
$this->_puttrailer(); |
$this->_out('>>'); |
$this->_out('startxref'); |
$this->_out($o); |
$this->_out('%%EOF'); |
$this->state=3; |
} |
//End of class |
} |
//Handle special IE contype request |
if(isset($_SERVER['HTTP_USER_AGENT']) && $_SERVER['HTTP_USER_AGENT']=='contype') |
{ |
header('Content-Type: application/pdf'); |
exit; |
} |
?> |
/web/acc/lib/fpdf16/font/timesi.php |
---|
0,0 → 1,15 |
<?php |
$fpdf_charwidths['timesI']=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(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, |
'B'=>611,'C'=>667,'D'=>722,'E'=>611,'F'=>611,'G'=>722,'H'=>722,'I'=>333,'J'=>444,'K'=>667,'L'=>556,'M'=>833,'N'=>667,'O'=>722,'P'=>611,'Q'=>722,'R'=>611,'S'=>500,'T'=>556,'U'=>722,'V'=>611,'W'=>833, |
'X'=>611,'Y'=>556,'Z'=>556,'['=>389,'\\'=>278,']'=>389,'^'=>422,'_'=>500,'`'=>333,'a'=>500,'b'=>500,'c'=>444,'d'=>500,'e'=>444,'f'=>278,'g'=>500,'h'=>500,'i'=>278,'j'=>278,'k'=>444,'l'=>278,'m'=>722, |
'n'=>500,'o'=>500,'p'=>500,'q'=>500,'r'=>389,'s'=>389,'t'=>278,'u'=>500,'v'=>444,'w'=>667,'x'=>444,'y'=>444,'z'=>389,'{'=>400,'|'=>275,'}'=>400,'~'=>541,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500, |
chr(132)=>556,chr(133)=>889,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>500,chr(139)=>333,chr(140)=>944,chr(141)=>350,chr(142)=>556,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>556,chr(148)=>556,chr(149)=>350,chr(150)=>500,chr(151)=>889,chr(152)=>333,chr(153)=>980, |
chr(154)=>389,chr(155)=>333,chr(156)=>667,chr(157)=>350,chr(158)=>389,chr(159)=>556,chr(160)=>250,chr(161)=>389,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>275,chr(167)=>500,chr(168)=>333,chr(169)=>760,chr(170)=>276,chr(171)=>500,chr(172)=>675,chr(173)=>333,chr(174)=>760,chr(175)=>333, |
chr(176)=>400,chr(177)=>675,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>500,chr(182)=>523,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>310,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>500,chr(192)=>611,chr(193)=>611,chr(194)=>611,chr(195)=>611,chr(196)=>611,chr(197)=>611, |
chr(198)=>889,chr(199)=>667,chr(200)=>611,chr(201)=>611,chr(202)=>611,chr(203)=>611,chr(204)=>333,chr(205)=>333,chr(206)=>333,chr(207)=>333,chr(208)=>722,chr(209)=>667,chr(210)=>722,chr(211)=>722,chr(212)=>722,chr(213)=>722,chr(214)=>722,chr(215)=>675,chr(216)=>722,chr(217)=>722,chr(218)=>722,chr(219)=>722, |
chr(220)=>722,chr(221)=>556,chr(222)=>611,chr(223)=>500,chr(224)=>500,chr(225)=>500,chr(226)=>500,chr(227)=>500,chr(228)=>500,chr(229)=>500,chr(230)=>667,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>500, |
chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>675,chr(248)=>500,chr(249)=>500,chr(250)=>500,chr(251)=>500,chr(252)=>500,chr(253)=>444,chr(254)=>500,chr(255)=>444); |
?> |
/web/acc/lib/fpdf16/font/timesbi.php |
---|
0,0 → 1,15 |
<?php |
$fpdf_charwidths['timesBI']=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(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, |
'B'=>667,'C'=>667,'D'=>722,'E'=>667,'F'=>667,'G'=>722,'H'=>778,'I'=>389,'J'=>500,'K'=>667,'L'=>611,'M'=>889,'N'=>722,'O'=>722,'P'=>611,'Q'=>722,'R'=>667,'S'=>556,'T'=>611,'U'=>722,'V'=>667,'W'=>889, |
'X'=>667,'Y'=>611,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>570,'_'=>500,'`'=>333,'a'=>500,'b'=>500,'c'=>444,'d'=>500,'e'=>444,'f'=>333,'g'=>500,'h'=>556,'i'=>278,'j'=>278,'k'=>500,'l'=>278,'m'=>778, |
'n'=>556,'o'=>500,'p'=>500,'q'=>500,'r'=>389,'s'=>389,'t'=>278,'u'=>556,'v'=>444,'w'=>667,'x'=>500,'y'=>444,'z'=>389,'{'=>348,'|'=>220,'}'=>348,'~'=>570,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500, |
chr(132)=>500,chr(133)=>1000,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>556,chr(139)=>333,chr(140)=>944,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>500,chr(151)=>1000,chr(152)=>333,chr(153)=>1000, |
chr(154)=>389,chr(155)=>333,chr(156)=>722,chr(157)=>350,chr(158)=>389,chr(159)=>611,chr(160)=>250,chr(161)=>389,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>220,chr(167)=>500,chr(168)=>333,chr(169)=>747,chr(170)=>266,chr(171)=>500,chr(172)=>606,chr(173)=>333,chr(174)=>747,chr(175)=>333, |
chr(176)=>400,chr(177)=>570,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>576,chr(182)=>500,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>300,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>500,chr(192)=>667,chr(193)=>667,chr(194)=>667,chr(195)=>667,chr(196)=>667,chr(197)=>667, |
chr(198)=>944,chr(199)=>667,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>389,chr(205)=>389,chr(206)=>389,chr(207)=>389,chr(208)=>722,chr(209)=>722,chr(210)=>722,chr(211)=>722,chr(212)=>722,chr(213)=>722,chr(214)=>722,chr(215)=>570,chr(216)=>722,chr(217)=>722,chr(218)=>722,chr(219)=>722, |
chr(220)=>722,chr(221)=>611,chr(222)=>611,chr(223)=>500,chr(224)=>500,chr(225)=>500,chr(226)=>500,chr(227)=>500,chr(228)=>500,chr(229)=>500,chr(230)=>722,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>556, |
chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>570,chr(248)=>500,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>444,chr(254)=>500,chr(255)=>444); |
?> |
/web/acc/lib/fpdf16/font/zapfdingbats.php |
---|
0,0 → 1,15 |
<?php |
$fpdf_charwidths['zapfdingbats']=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(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, |
'B'=>786,'C'=>788,'D'=>788,'E'=>790,'F'=>793,'G'=>794,'H'=>816,'I'=>823,'J'=>789,'K'=>841,'L'=>823,'M'=>833,'N'=>816,'O'=>831,'P'=>923,'Q'=>744,'R'=>723,'S'=>749,'T'=>790,'U'=>792,'V'=>695,'W'=>776, |
'X'=>768,'Y'=>792,'Z'=>759,'['=>707,'\\'=>708,']'=>682,'^'=>701,'_'=>826,'`'=>815,'a'=>789,'b'=>789,'c'=>707,'d'=>687,'e'=>696,'f'=>689,'g'=>786,'h'=>787,'i'=>713,'j'=>791,'k'=>785,'l'=>791,'m'=>873, |
'n'=>761,'o'=>762,'p'=>762,'q'=>759,'r'=>759,'s'=>892,'t'=>892,'u'=>788,'v'=>784,'w'=>438,'x'=>138,'y'=>277,'z'=>415,'{'=>392,'|'=>392,'}'=>668,'~'=>668,chr(127)=>0,chr(128)=>390,chr(129)=>390,chr(130)=>317,chr(131)=>317, |
chr(132)=>276,chr(133)=>276,chr(134)=>509,chr(135)=>509,chr(136)=>410,chr(137)=>410,chr(138)=>234,chr(139)=>234,chr(140)=>334,chr(141)=>334,chr(142)=>0,chr(143)=>0,chr(144)=>0,chr(145)=>0,chr(146)=>0,chr(147)=>0,chr(148)=>0,chr(149)=>0,chr(150)=>0,chr(151)=>0,chr(152)=>0,chr(153)=>0, |
chr(154)=>0,chr(155)=>0,chr(156)=>0,chr(157)=>0,chr(158)=>0,chr(159)=>0,chr(160)=>0,chr(161)=>732,chr(162)=>544,chr(163)=>544,chr(164)=>910,chr(165)=>667,chr(166)=>760,chr(167)=>760,chr(168)=>776,chr(169)=>595,chr(170)=>694,chr(171)=>626,chr(172)=>788,chr(173)=>788,chr(174)=>788,chr(175)=>788, |
chr(176)=>788,chr(177)=>788,chr(178)=>788,chr(179)=>788,chr(180)=>788,chr(181)=>788,chr(182)=>788,chr(183)=>788,chr(184)=>788,chr(185)=>788,chr(186)=>788,chr(187)=>788,chr(188)=>788,chr(189)=>788,chr(190)=>788,chr(191)=>788,chr(192)=>788,chr(193)=>788,chr(194)=>788,chr(195)=>788,chr(196)=>788,chr(197)=>788, |
chr(198)=>788,chr(199)=>788,chr(200)=>788,chr(201)=>788,chr(202)=>788,chr(203)=>788,chr(204)=>788,chr(205)=>788,chr(206)=>788,chr(207)=>788,chr(208)=>788,chr(209)=>788,chr(210)=>788,chr(211)=>788,chr(212)=>894,chr(213)=>838,chr(214)=>1016,chr(215)=>458,chr(216)=>748,chr(217)=>924,chr(218)=>748,chr(219)=>918, |
chr(220)=>927,chr(221)=>928,chr(222)=>928,chr(223)=>834,chr(224)=>873,chr(225)=>828,chr(226)=>924,chr(227)=>924,chr(228)=>917,chr(229)=>930,chr(230)=>931,chr(231)=>463,chr(232)=>883,chr(233)=>836,chr(234)=>836,chr(235)=>867,chr(236)=>867,chr(237)=>696,chr(238)=>696,chr(239)=>874,chr(240)=>0,chr(241)=>874, |
chr(242)=>760,chr(243)=>946,chr(244)=>771,chr(245)=>865,chr(246)=>771,chr(247)=>888,chr(248)=>967,chr(249)=>888,chr(250)=>831,chr(251)=>873,chr(252)=>927,chr(253)=>970,chr(254)=>918,chr(255)=>0); |
?> |
/web/acc/lib/fpdf16/font/helveticai.php |
---|
0,0 → 1,15 |
<?php |
$fpdf_charwidths['helveticaI']=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(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, |
'B'=>667,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>500,'K'=>667,'L'=>556,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944, |
'X'=>667,'Y'=>667,'Z'=>611,'['=>278,'\\'=>278,']'=>278,'^'=>469,'_'=>556,'`'=>333,'a'=>556,'b'=>556,'c'=>500,'d'=>556,'e'=>556,'f'=>278,'g'=>556,'h'=>556,'i'=>222,'j'=>222,'k'=>500,'l'=>222,'m'=>833, |
'n'=>556,'o'=>556,'p'=>556,'q'=>556,'r'=>333,'s'=>500,'t'=>278,'u'=>556,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>500,'{'=>334,'|'=>260,'}'=>334,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>222,chr(131)=>556, |
chr(132)=>333,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>222,chr(146)=>222,chr(147)=>333,chr(148)=>333,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000, |
chr(154)=>500,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>260,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333, |
chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>556,chr(182)=>537,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>667,chr(193)=>667,chr(194)=>667,chr(195)=>667,chr(196)=>667,chr(197)=>667, |
chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722, |
chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>500,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>556,chr(241)=>556, |
chr(242)=>556,chr(243)=>556,chr(244)=>556,chr(245)=>556,chr(246)=>556,chr(247)=>584,chr(248)=>611,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>500,chr(254)=>556,chr(255)=>500); |
?> |
/web/acc/lib/fpdf16/font/makefont/iso-8859-1.map |
---|
0,0 → 1,256 |
!00 U+0000 .notdef |
!01 U+0001 .notdef |
!02 U+0002 .notdef |
!03 U+0003 .notdef |
!04 U+0004 .notdef |
!05 U+0005 .notdef |
!06 U+0006 .notdef |
!07 U+0007 .notdef |
!08 U+0008 .notdef |
!09 U+0009 .notdef |
!0A U+000A .notdef |
!0B U+000B .notdef |
!0C U+000C .notdef |
!0D U+000D .notdef |
!0E U+000E .notdef |
!0F U+000F .notdef |
!10 U+0010 .notdef |
!11 U+0011 .notdef |
!12 U+0012 .notdef |
!13 U+0013 .notdef |
!14 U+0014 .notdef |
!15 U+0015 .notdef |
!16 U+0016 .notdef |
!17 U+0017 .notdef |
!18 U+0018 .notdef |
!19 U+0019 .notdef |
!1A U+001A .notdef |
!1B U+001B .notdef |
!1C U+001C .notdef |
!1D U+001D .notdef |
!1E U+001E .notdef |
!1F U+001F .notdef |
!20 U+0020 space |
!21 U+0021 exclam |
!22 U+0022 quotedbl |
!23 U+0023 numbersign |
!24 U+0024 dollar |
!25 U+0025 percent |
!26 U+0026 ampersand |
!27 U+0027 quotesingle |
!28 U+0028 parenleft |
!29 U+0029 parenright |
!2A U+002A asterisk |
!2B U+002B plus |
!2C U+002C comma |
!2D U+002D hyphen |
!2E U+002E period |
!2F U+002F slash |
!30 U+0030 zero |
!31 U+0031 one |
!32 U+0032 two |
!33 U+0033 three |
!34 U+0034 four |
!35 U+0035 five |
!36 U+0036 six |
!37 U+0037 seven |
!38 U+0038 eight |
!39 U+0039 nine |
!3A U+003A colon |
!3B U+003B semicolon |
!3C U+003C less |
!3D U+003D equal |
!3E U+003E greater |
!3F U+003F question |
!40 U+0040 at |
!41 U+0041 A |
!42 U+0042 B |
!43 U+0043 C |
!44 U+0044 D |
!45 U+0045 E |
!46 U+0046 F |
!47 U+0047 G |
!48 U+0048 H |
!49 U+0049 I |
!4A U+004A J |
!4B U+004B K |
!4C U+004C L |
!4D U+004D M |
!4E U+004E N |
!4F U+004F O |
!50 U+0050 P |
!51 U+0051 Q |
!52 U+0052 R |
!53 U+0053 S |
!54 U+0054 T |
!55 U+0055 U |
!56 U+0056 V |
!57 U+0057 W |
!58 U+0058 X |
!59 U+0059 Y |
!5A U+005A Z |
!5B U+005B bracketleft |
!5C U+005C backslash |
!5D U+005D bracketright |
!5E U+005E asciicircum |
!5F U+005F underscore |
!60 U+0060 grave |
!61 U+0061 a |
!62 U+0062 b |
!63 U+0063 c |
!64 U+0064 d |
!65 U+0065 e |
!66 U+0066 f |
!67 U+0067 g |
!68 U+0068 h |
!69 U+0069 i |
!6A U+006A j |
!6B U+006B k |
!6C U+006C l |
!6D U+006D m |
!6E U+006E n |
!6F U+006F o |
!70 U+0070 p |
!71 U+0071 q |
!72 U+0072 r |
!73 U+0073 s |
!74 U+0074 t |
!75 U+0075 u |
!76 U+0076 v |
!77 U+0077 w |
!78 U+0078 x |
!79 U+0079 y |
!7A U+007A z |
!7B U+007B braceleft |
!7C U+007C bar |
!7D U+007D braceright |
!7E U+007E asciitilde |
!7F U+007F .notdef |
!80 U+0080 .notdef |
!81 U+0081 .notdef |
!82 U+0082 .notdef |
!83 U+0083 .notdef |
!84 U+0084 .notdef |
!85 U+0085 .notdef |
!86 U+0086 .notdef |
!87 U+0087 .notdef |
!88 U+0088 .notdef |
!89 U+0089 .notdef |
!8A U+008A .notdef |
!8B U+008B .notdef |
!8C U+008C .notdef |
!8D U+008D .notdef |
!8E U+008E .notdef |
!8F U+008F .notdef |
!90 U+0090 .notdef |
!91 U+0091 .notdef |
!92 U+0092 .notdef |
!93 U+0093 .notdef |
!94 U+0094 .notdef |
!95 U+0095 .notdef |
!96 U+0096 .notdef |
!97 U+0097 .notdef |
!98 U+0098 .notdef |
!99 U+0099 .notdef |
!9A U+009A .notdef |
!9B U+009B .notdef |
!9C U+009C .notdef |
!9D U+009D .notdef |
!9E U+009E .notdef |
!9F U+009F .notdef |
!A0 U+00A0 space |
!A1 U+00A1 exclamdown |
!A2 U+00A2 cent |
!A3 U+00A3 sterling |
!A4 U+00A4 currency |
!A5 U+00A5 yen |
!A6 U+00A6 brokenbar |
!A7 U+00A7 section |
!A8 U+00A8 dieresis |
!A9 U+00A9 copyright |
!AA U+00AA ordfeminine |
!AB U+00AB guillemotleft |
!AC U+00AC logicalnot |
!AD U+00AD hyphen |
!AE U+00AE registered |
!AF U+00AF macron |
!B0 U+00B0 degree |
!B1 U+00B1 plusminus |
!B2 U+00B2 twosuperior |
!B3 U+00B3 threesuperior |
!B4 U+00B4 acute |
!B5 U+00B5 mu |
!B6 U+00B6 paragraph |
!B7 U+00B7 periodcentered |
!B8 U+00B8 cedilla |
!B9 U+00B9 onesuperior |
!BA U+00BA ordmasculine |
!BB U+00BB guillemotright |
!BC U+00BC onequarter |
!BD U+00BD onehalf |
!BE U+00BE threequarters |
!BF U+00BF questiondown |
!C0 U+00C0 Agrave |
!C1 U+00C1 Aacute |
!C2 U+00C2 Acircumflex |
!C3 U+00C3 Atilde |
!C4 U+00C4 Adieresis |
!C5 U+00C5 Aring |
!C6 U+00C6 AE |
!C7 U+00C7 Ccedilla |
!C8 U+00C8 Egrave |
!C9 U+00C9 Eacute |
!CA U+00CA Ecircumflex |
!CB U+00CB Edieresis |
!CC U+00CC Igrave |
!CD U+00CD Iacute |
!CE U+00CE Icircumflex |
!CF U+00CF Idieresis |
!D0 U+00D0 Eth |
!D1 U+00D1 Ntilde |
!D2 U+00D2 Ograve |
!D3 U+00D3 Oacute |
!D4 U+00D4 Ocircumflex |
!D5 U+00D5 Otilde |
!D6 U+00D6 Odieresis |
!D7 U+00D7 multiply |
!D8 U+00D8 Oslash |
!D9 U+00D9 Ugrave |
!DA U+00DA Uacute |
!DB U+00DB Ucircumflex |
!DC U+00DC Udieresis |
!DD U+00DD Yacute |
!DE U+00DE Thorn |
!DF U+00DF germandbls |
!E0 U+00E0 agrave |
!E1 U+00E1 aacute |
!E2 U+00E2 acircumflex |
!E3 U+00E3 atilde |
!E4 U+00E4 adieresis |
!E5 U+00E5 aring |
!E6 U+00E6 ae |
!E7 U+00E7 ccedilla |
!E8 U+00E8 egrave |
!E9 U+00E9 eacute |
!EA U+00EA ecircumflex |
!EB U+00EB edieresis |
!EC U+00EC igrave |
!ED U+00ED iacute |
!EE U+00EE icircumflex |
!EF U+00EF idieresis |
!F0 U+00F0 eth |
!F1 U+00F1 ntilde |
!F2 U+00F2 ograve |
!F3 U+00F3 oacute |
!F4 U+00F4 ocircumflex |
!F5 U+00F5 otilde |
!F6 U+00F6 odieresis |
!F7 U+00F7 divide |
!F8 U+00F8 oslash |
!F9 U+00F9 ugrave |
!FA U+00FA uacute |
!FB U+00FB ucircumflex |
!FC U+00FC udieresis |
!FD U+00FD yacute |
!FE U+00FE thorn |
!FF U+00FF ydieresis |
/web/acc/lib/fpdf16/font/makefont/iso-8859-2.map |
---|
0,0 → 1,256 |
!00 U+0000 .notdef |
!01 U+0001 .notdef |
!02 U+0002 .notdef |
!03 U+0003 .notdef |
!04 U+0004 .notdef |
!05 U+0005 .notdef |
!06 U+0006 .notdef |
!07 U+0007 .notdef |
!08 U+0008 .notdef |
!09 U+0009 .notdef |
!0A U+000A .notdef |
!0B U+000B .notdef |
!0C U+000C .notdef |
!0D U+000D .notdef |
!0E U+000E .notdef |
!0F U+000F .notdef |
!10 U+0010 .notdef |
!11 U+0011 .notdef |
!12 U+0012 .notdef |
!13 U+0013 .notdef |
!14 U+0014 .notdef |
!15 U+0015 .notdef |
!16 U+0016 .notdef |
!17 U+0017 .notdef |
!18 U+0018 .notdef |
!19 U+0019 .notdef |
!1A U+001A .notdef |
!1B U+001B .notdef |
!1C U+001C .notdef |
!1D U+001D .notdef |
!1E U+001E .notdef |
!1F U+001F .notdef |
!20 U+0020 space |
!21 U+0021 exclam |
!22 U+0022 quotedbl |
!23 U+0023 numbersign |
!24 U+0024 dollar |
!25 U+0025 percent |
!26 U+0026 ampersand |
!27 U+0027 quotesingle |
!28 U+0028 parenleft |
!29 U+0029 parenright |
!2A U+002A asterisk |
!2B U+002B plus |
!2C U+002C comma |
!2D U+002D hyphen |
!2E U+002E period |
!2F U+002F slash |
!30 U+0030 zero |
!31 U+0031 one |
!32 U+0032 two |
!33 U+0033 three |
!34 U+0034 four |
!35 U+0035 five |
!36 U+0036 six |
!37 U+0037 seven |
!38 U+0038 eight |
!39 U+0039 nine |
!3A U+003A colon |
!3B U+003B semicolon |
!3C U+003C less |
!3D U+003D equal |
!3E U+003E greater |
!3F U+003F question |
!40 U+0040 at |
!41 U+0041 A |
!42 U+0042 B |
!43 U+0043 C |
!44 U+0044 D |
!45 U+0045 E |
!46 U+0046 F |
!47 U+0047 G |
!48 U+0048 H |
!49 U+0049 I |
!4A U+004A J |
!4B U+004B K |
!4C U+004C L |
!4D U+004D M |
!4E U+004E N |
!4F U+004F O |
!50 U+0050 P |
!51 U+0051 Q |
!52 U+0052 R |
!53 U+0053 S |
!54 U+0054 T |
!55 U+0055 U |
!56 U+0056 V |
!57 U+0057 W |
!58 U+0058 X |
!59 U+0059 Y |
!5A U+005A Z |
!5B U+005B bracketleft |
!5C U+005C backslash |
!5D U+005D bracketright |
!5E U+005E asciicircum |
!5F U+005F underscore |
!60 U+0060 grave |
!61 U+0061 a |
!62 U+0062 b |
!63 U+0063 c |
!64 U+0064 d |
!65 U+0065 e |
!66 U+0066 f |
!67 U+0067 g |
!68 U+0068 h |
!69 U+0069 i |
!6A U+006A j |
!6B U+006B k |
!6C U+006C l |
!6D U+006D m |
!6E U+006E n |
!6F U+006F o |
!70 U+0070 p |
!71 U+0071 q |
!72 U+0072 r |
!73 U+0073 s |
!74 U+0074 t |
!75 U+0075 u |
!76 U+0076 v |
!77 U+0077 w |
!78 U+0078 x |
!79 U+0079 y |
!7A U+007A z |
!7B U+007B braceleft |
!7C U+007C bar |
!7D U+007D braceright |
!7E U+007E asciitilde |
!7F U+007F .notdef |
!80 U+0080 .notdef |
!81 U+0081 .notdef |
!82 U+0082 .notdef |
!83 U+0083 .notdef |
!84 U+0084 .notdef |
!85 U+0085 .notdef |
!86 U+0086 .notdef |
!87 U+0087 .notdef |
!88 U+0088 .notdef |
!89 U+0089 .notdef |
!8A U+008A .notdef |
!8B U+008B .notdef |
!8C U+008C .notdef |
!8D U+008D .notdef |
!8E U+008E .notdef |
!8F U+008F .notdef |
!90 U+0090 .notdef |
!91 U+0091 .notdef |
!92 U+0092 .notdef |
!93 U+0093 .notdef |
!94 U+0094 .notdef |
!95 U+0095 .notdef |
!96 U+0096 .notdef |
!97 U+0097 .notdef |
!98 U+0098 .notdef |
!99 U+0099 .notdef |
!9A U+009A .notdef |
!9B U+009B .notdef |
!9C U+009C .notdef |
!9D U+009D .notdef |
!9E U+009E .notdef |
!9F U+009F .notdef |
!A0 U+00A0 space |
!A1 U+0104 Aogonek |
!A2 U+02D8 breve |
!A3 U+0141 Lslash |
!A4 U+00A4 currency |
!A5 U+013D Lcaron |
!A6 U+015A Sacute |
!A7 U+00A7 section |
!A8 U+00A8 dieresis |
!A9 U+0160 Scaron |
!AA U+015E Scedilla |
!AB U+0164 Tcaron |
!AC U+0179 Zacute |
!AD U+00AD hyphen |
!AE U+017D Zcaron |
!AF U+017B Zdotaccent |
!B0 U+00B0 degree |
!B1 U+0105 aogonek |
!B2 U+02DB ogonek |
!B3 U+0142 lslash |
!B4 U+00B4 acute |
!B5 U+013E lcaron |
!B6 U+015B sacute |
!B7 U+02C7 caron |
!B8 U+00B8 cedilla |
!B9 U+0161 scaron |
!BA U+015F scedilla |
!BB U+0165 tcaron |
!BC U+017A zacute |
!BD U+02DD hungarumlaut |
!BE U+017E zcaron |
!BF U+017C zdotaccent |
!C0 U+0154 Racute |
!C1 U+00C1 Aacute |
!C2 U+00C2 Acircumflex |
!C3 U+0102 Abreve |
!C4 U+00C4 Adieresis |
!C5 U+0139 Lacute |
!C6 U+0106 Cacute |
!C7 U+00C7 Ccedilla |
!C8 U+010C Ccaron |
!C9 U+00C9 Eacute |
!CA U+0118 Eogonek |
!CB U+00CB Edieresis |
!CC U+011A Ecaron |
!CD U+00CD Iacute |
!CE U+00CE Icircumflex |
!CF U+010E Dcaron |
!D0 U+0110 Dcroat |
!D1 U+0143 Nacute |
!D2 U+0147 Ncaron |
!D3 U+00D3 Oacute |
!D4 U+00D4 Ocircumflex |
!D5 U+0150 Ohungarumlaut |
!D6 U+00D6 Odieresis |
!D7 U+00D7 multiply |
!D8 U+0158 Rcaron |
!D9 U+016E Uring |
!DA U+00DA Uacute |
!DB U+0170 Uhungarumlaut |
!DC U+00DC Udieresis |
!DD U+00DD Yacute |
!DE U+0162 Tcommaaccent |
!DF U+00DF germandbls |
!E0 U+0155 racute |
!E1 U+00E1 aacute |
!E2 U+00E2 acircumflex |
!E3 U+0103 abreve |
!E4 U+00E4 adieresis |
!E5 U+013A lacute |
!E6 U+0107 cacute |
!E7 U+00E7 ccedilla |
!E8 U+010D ccaron |
!E9 U+00E9 eacute |
!EA U+0119 eogonek |
!EB U+00EB edieresis |
!EC U+011B ecaron |
!ED U+00ED iacute |
!EE U+00EE icircumflex |
!EF U+010F dcaron |
!F0 U+0111 dcroat |
!F1 U+0144 nacute |
!F2 U+0148 ncaron |
!F3 U+00F3 oacute |
!F4 U+00F4 ocircumflex |
!F5 U+0151 ohungarumlaut |
!F6 U+00F6 odieresis |
!F7 U+00F7 divide |
!F8 U+0159 rcaron |
!F9 U+016F uring |
!FA U+00FA uacute |
!FB U+0171 uhungarumlaut |
!FC U+00FC udieresis |
!FD U+00FD yacute |
!FE U+0163 tcommaaccent |
!FF U+02D9 dotaccent |
/web/acc/lib/fpdf16/font/makefont/cp874.map |
---|
0,0 → 1,225 |
!00 U+0000 .notdef |
!01 U+0001 .notdef |
!02 U+0002 .notdef |
!03 U+0003 .notdef |
!04 U+0004 .notdef |
!05 U+0005 .notdef |
!06 U+0006 .notdef |
!07 U+0007 .notdef |
!08 U+0008 .notdef |
!09 U+0009 .notdef |
!0A U+000A .notdef |
!0B U+000B .notdef |
!0C U+000C .notdef |
!0D U+000D .notdef |
!0E U+000E .notdef |
!0F U+000F .notdef |
!10 U+0010 .notdef |
!11 U+0011 .notdef |
!12 U+0012 .notdef |
!13 U+0013 .notdef |
!14 U+0014 .notdef |
!15 U+0015 .notdef |
!16 U+0016 .notdef |
!17 U+0017 .notdef |
!18 U+0018 .notdef |
!19 U+0019 .notdef |
!1A U+001A .notdef |
!1B U+001B .notdef |
!1C U+001C .notdef |
!1D U+001D .notdef |
!1E U+001E .notdef |
!1F U+001F .notdef |
!20 U+0020 space |
!21 U+0021 exclam |
!22 U+0022 quotedbl |
!23 U+0023 numbersign |
!24 U+0024 dollar |
!25 U+0025 percent |
!26 U+0026 ampersand |
!27 U+0027 quotesingle |
!28 U+0028 parenleft |
!29 U+0029 parenright |
!2A U+002A asterisk |
!2B U+002B plus |
!2C U+002C comma |
!2D U+002D hyphen |
!2E U+002E period |
!2F U+002F slash |
!30 U+0030 zero |
!31 U+0031 one |
!32 U+0032 two |
!33 U+0033 three |
!34 U+0034 four |
!35 U+0035 five |
!36 U+0036 six |
!37 U+0037 seven |
!38 U+0038 eight |
!39 U+0039 nine |
!3A U+003A colon |
!3B U+003B semicolon |
!3C U+003C less |
!3D U+003D equal |
!3E U+003E greater |
!3F U+003F question |
!40 U+0040 at |
!41 U+0041 A |
!42 U+0042 B |
!43 U+0043 C |
!44 U+0044 D |
!45 U+0045 E |
!46 U+0046 F |
!47 U+0047 G |
!48 U+0048 H |
!49 U+0049 I |
!4A U+004A J |
!4B U+004B K |
!4C U+004C L |
!4D U+004D M |
!4E U+004E N |
!4F U+004F O |
!50 U+0050 P |
!51 U+0051 Q |
!52 U+0052 R |
!53 U+0053 S |
!54 U+0054 T |
!55 U+0055 U |
!56 U+0056 V |
!57 U+0057 W |
!58 U+0058 X |
!59 U+0059 Y |
!5A U+005A Z |
!5B U+005B bracketleft |
!5C U+005C backslash |
!5D U+005D bracketright |
!5E U+005E asciicircum |
!5F U+005F underscore |
!60 U+0060 grave |
!61 U+0061 a |
!62 U+0062 b |
!63 U+0063 c |
!64 U+0064 d |
!65 U+0065 e |
!66 U+0066 f |
!67 U+0067 g |
!68 U+0068 h |
!69 U+0069 i |
!6A U+006A j |
!6B U+006B k |
!6C U+006C l |
!6D U+006D m |
!6E U+006E n |
!6F U+006F o |
!70 U+0070 p |
!71 U+0071 q |
!72 U+0072 r |
!73 U+0073 s |
!74 U+0074 t |
!75 U+0075 u |
!76 U+0076 v |
!77 U+0077 w |
!78 U+0078 x |
!79 U+0079 y |
!7A U+007A z |
!7B U+007B braceleft |
!7C U+007C bar |
!7D U+007D braceright |
!7E U+007E asciitilde |
!7F U+007F .notdef |
!80 U+20AC Euro |
!85 U+2026 ellipsis |
!91 U+2018 quoteleft |
!92 U+2019 quoteright |
!93 U+201C quotedblleft |
!94 U+201D quotedblright |
!95 U+2022 bullet |
!96 U+2013 endash |
!97 U+2014 emdash |
!A0 U+00A0 space |
!A1 U+0E01 kokaithai |
!A2 U+0E02 khokhaithai |
!A3 U+0E03 khokhuatthai |
!A4 U+0E04 khokhwaithai |
!A5 U+0E05 khokhonthai |
!A6 U+0E06 khorakhangthai |
!A7 U+0E07 ngonguthai |
!A8 U+0E08 chochanthai |
!A9 U+0E09 chochingthai |
!AA U+0E0A chochangthai |
!AB U+0E0B sosothai |
!AC U+0E0C chochoethai |
!AD U+0E0D yoyingthai |
!AE U+0E0E dochadathai |
!AF U+0E0F topatakthai |
!B0 U+0E10 thothanthai |
!B1 U+0E11 thonangmonthothai |
!B2 U+0E12 thophuthaothai |
!B3 U+0E13 nonenthai |
!B4 U+0E14 dodekthai |
!B5 U+0E15 totaothai |
!B6 U+0E16 thothungthai |
!B7 U+0E17 thothahanthai |
!B8 U+0E18 thothongthai |
!B9 U+0E19 nonuthai |
!BA U+0E1A bobaimaithai |
!BB U+0E1B poplathai |
!BC U+0E1C phophungthai |
!BD U+0E1D fofathai |
!BE U+0E1E phophanthai |
!BF U+0E1F fofanthai |
!C0 U+0E20 phosamphaothai |
!C1 U+0E21 momathai |
!C2 U+0E22 yoyakthai |
!C3 U+0E23 roruathai |
!C4 U+0E24 ruthai |
!C5 U+0E25 lolingthai |
!C6 U+0E26 luthai |
!C7 U+0E27 wowaenthai |
!C8 U+0E28 sosalathai |
!C9 U+0E29 sorusithai |
!CA U+0E2A sosuathai |
!CB U+0E2B hohipthai |
!CC U+0E2C lochulathai |
!CD U+0E2D oangthai |
!CE U+0E2E honokhukthai |
!CF U+0E2F paiyannoithai |
!D0 U+0E30 saraathai |
!D1 U+0E31 maihanakatthai |
!D2 U+0E32 saraaathai |
!D3 U+0E33 saraamthai |
!D4 U+0E34 saraithai |
!D5 U+0E35 saraiithai |
!D6 U+0E36 sarauethai |
!D7 U+0E37 saraueethai |
!D8 U+0E38 sarauthai |
!D9 U+0E39 sarauuthai |
!DA U+0E3A phinthuthai |
!DF U+0E3F bahtthai |
!E0 U+0E40 saraethai |
!E1 U+0E41 saraaethai |
!E2 U+0E42 saraothai |
!E3 U+0E43 saraaimaimuanthai |
!E4 U+0E44 saraaimaimalaithai |
!E5 U+0E45 lakkhangyaothai |
!E6 U+0E46 maiyamokthai |
!E7 U+0E47 maitaikhuthai |
!E8 U+0E48 maiekthai |
!E9 U+0E49 maithothai |
!EA U+0E4A maitrithai |
!EB U+0E4B maichattawathai |
!EC U+0E4C thanthakhatthai |
!ED U+0E4D nikhahitthai |
!EE U+0E4E yamakkanthai |
!EF U+0E4F fongmanthai |
!F0 U+0E50 zerothai |
!F1 U+0E51 onethai |
!F2 U+0E52 twothai |
!F3 U+0E53 threethai |
!F4 U+0E54 fourthai |
!F5 U+0E55 fivethai |
!F6 U+0E56 sixthai |
!F7 U+0E57 seventhai |
!F8 U+0E58 eightthai |
!F9 U+0E59 ninethai |
!FA U+0E5A angkhankhuthai |
!FB U+0E5B khomutthai |
/web/acc/lib/fpdf16/font/makefont/iso-8859-4.map |
---|
0,0 → 1,256 |
!00 U+0000 .notdef |
!01 U+0001 .notdef |
!02 U+0002 .notdef |
!03 U+0003 .notdef |
!04 U+0004 .notdef |
!05 U+0005 .notdef |
!06 U+0006 .notdef |
!07 U+0007 .notdef |
!08 U+0008 .notdef |
!09 U+0009 .notdef |
!0A U+000A .notdef |
!0B U+000B .notdef |
!0C U+000C .notdef |
!0D U+000D .notdef |
!0E U+000E .notdef |
!0F U+000F .notdef |
!10 U+0010 .notdef |
!11 U+0011 .notdef |
!12 U+0012 .notdef |
!13 U+0013 .notdef |
!14 U+0014 .notdef |
!15 U+0015 .notdef |
!16 U+0016 .notdef |
!17 U+0017 .notdef |
!18 U+0018 .notdef |
!19 U+0019 .notdef |
!1A U+001A .notdef |
!1B U+001B .notdef |
!1C U+001C .notdef |
!1D U+001D .notdef |
!1E U+001E .notdef |
!1F U+001F .notdef |
!20 U+0020 space |
!21 U+0021 exclam |
!22 U+0022 quotedbl |
!23 U+0023 numbersign |
!24 U+0024 dollar |
!25 U+0025 percent |
!26 U+0026 ampersand |
!27 U+0027 quotesingle |
!28 U+0028 parenleft |
!29 U+0029 parenright |
!2A U+002A asterisk |
!2B U+002B plus |
!2C U+002C comma |
!2D U+002D hyphen |
!2E U+002E period |
!2F U+002F slash |
!30 U+0030 zero |
!31 U+0031 one |
!32 U+0032 two |
!33 U+0033 three |
!34 U+0034 four |
!35 U+0035 five |
!36 U+0036 six |
!37 U+0037 seven |
!38 U+0038 eight |
!39 U+0039 nine |
!3A U+003A colon |
!3B U+003B semicolon |
!3C U+003C less |
!3D U+003D equal |
!3E U+003E greater |
!3F U+003F question |
!40 U+0040 at |
!41 U+0041 A |
!42 U+0042 B |
!43 U+0043 C |
!44 U+0044 D |
!45 U+0045 E |
!46 U+0046 F |
!47 U+0047 G |
!48 U+0048 H |
!49 U+0049 I |
!4A U+004A J |
!4B U+004B K |
!4C U+004C L |
!4D U+004D M |
!4E U+004E N |
!4F U+004F O |
!50 U+0050 P |
!51 U+0051 Q |
!52 U+0052 R |
!53 U+0053 S |
!54 U+0054 T |
!55 U+0055 U |
!56 U+0056 V |
!57 U+0057 W |
!58 U+0058 X |
!59 U+0059 Y |
!5A U+005A Z |
!5B U+005B bracketleft |
!5C U+005C backslash |
!5D U+005D bracketright |
!5E U+005E asciicircum |
!5F U+005F underscore |
!60 U+0060 grave |
!61 U+0061 a |
!62 U+0062 b |
!63 U+0063 c |
!64 U+0064 d |
!65 U+0065 e |
!66 U+0066 f |
!67 U+0067 g |
!68 U+0068 h |
!69 U+0069 i |
!6A U+006A j |
!6B U+006B k |
!6C U+006C l |
!6D U+006D m |
!6E U+006E n |
!6F U+006F o |
!70 U+0070 p |
!71 U+0071 q |
!72 U+0072 r |
!73 U+0073 s |
!74 U+0074 t |
!75 U+0075 u |
!76 U+0076 v |
!77 U+0077 w |
!78 U+0078 x |
!79 U+0079 y |
!7A U+007A z |
!7B U+007B braceleft |
!7C U+007C bar |
!7D U+007D braceright |
!7E U+007E asciitilde |
!7F U+007F .notdef |
!80 U+0080 .notdef |
!81 U+0081 .notdef |
!82 U+0082 .notdef |
!83 U+0083 .notdef |
!84 U+0084 .notdef |
!85 U+0085 .notdef |
!86 U+0086 .notdef |
!87 U+0087 .notdef |
!88 U+0088 .notdef |
!89 U+0089 .notdef |
!8A U+008A .notdef |
!8B U+008B .notdef |
!8C U+008C .notdef |
!8D U+008D .notdef |
!8E U+008E .notdef |
!8F U+008F .notdef |
!90 U+0090 .notdef |
!91 U+0091 .notdef |
!92 U+0092 .notdef |
!93 U+0093 .notdef |
!94 U+0094 .notdef |
!95 U+0095 .notdef |
!96 U+0096 .notdef |
!97 U+0097 .notdef |
!98 U+0098 .notdef |
!99 U+0099 .notdef |
!9A U+009A .notdef |
!9B U+009B .notdef |
!9C U+009C .notdef |
!9D U+009D .notdef |
!9E U+009E .notdef |
!9F U+009F .notdef |
!A0 U+00A0 space |
!A1 U+0104 Aogonek |
!A2 U+0138 kgreenlandic |
!A3 U+0156 Rcommaaccent |
!A4 U+00A4 currency |
!A5 U+0128 Itilde |
!A6 U+013B Lcommaaccent |
!A7 U+00A7 section |
!A8 U+00A8 dieresis |
!A9 U+0160 Scaron |
!AA U+0112 Emacron |
!AB U+0122 Gcommaaccent |
!AC U+0166 Tbar |
!AD U+00AD hyphen |
!AE U+017D Zcaron |
!AF U+00AF macron |
!B0 U+00B0 degree |
!B1 U+0105 aogonek |
!B2 U+02DB ogonek |
!B3 U+0157 rcommaaccent |
!B4 U+00B4 acute |
!B5 U+0129 itilde |
!B6 U+013C lcommaaccent |
!B7 U+02C7 caron |
!B8 U+00B8 cedilla |
!B9 U+0161 scaron |
!BA U+0113 emacron |
!BB U+0123 gcommaaccent |
!BC U+0167 tbar |
!BD U+014A Eng |
!BE U+017E zcaron |
!BF U+014B eng |
!C0 U+0100 Amacron |
!C1 U+00C1 Aacute |
!C2 U+00C2 Acircumflex |
!C3 U+00C3 Atilde |
!C4 U+00C4 Adieresis |
!C5 U+00C5 Aring |
!C6 U+00C6 AE |
!C7 U+012E Iogonek |
!C8 U+010C Ccaron |
!C9 U+00C9 Eacute |
!CA U+0118 Eogonek |
!CB U+00CB Edieresis |
!CC U+0116 Edotaccent |
!CD U+00CD Iacute |
!CE U+00CE Icircumflex |
!CF U+012A Imacron |
!D0 U+0110 Dcroat |
!D1 U+0145 Ncommaaccent |
!D2 U+014C Omacron |
!D3 U+0136 Kcommaaccent |
!D4 U+00D4 Ocircumflex |
!D5 U+00D5 Otilde |
!D6 U+00D6 Odieresis |
!D7 U+00D7 multiply |
!D8 U+00D8 Oslash |
!D9 U+0172 Uogonek |
!DA U+00DA Uacute |
!DB U+00DB Ucircumflex |
!DC U+00DC Udieresis |
!DD U+0168 Utilde |
!DE U+016A Umacron |
!DF U+00DF germandbls |
!E0 U+0101 amacron |
!E1 U+00E1 aacute |
!E2 U+00E2 acircumflex |
!E3 U+00E3 atilde |
!E4 U+00E4 adieresis |
!E5 U+00E5 aring |
!E6 U+00E6 ae |
!E7 U+012F iogonek |
!E8 U+010D ccaron |
!E9 U+00E9 eacute |
!EA U+0119 eogonek |
!EB U+00EB edieresis |
!EC U+0117 edotaccent |
!ED U+00ED iacute |
!EE U+00EE icircumflex |
!EF U+012B imacron |
!F0 U+0111 dcroat |
!F1 U+0146 ncommaaccent |
!F2 U+014D omacron |
!F3 U+0137 kcommaaccent |
!F4 U+00F4 ocircumflex |
!F5 U+00F5 otilde |
!F6 U+00F6 odieresis |
!F7 U+00F7 divide |
!F8 U+00F8 oslash |
!F9 U+0173 uogonek |
!FA U+00FA uacute |
!FB U+00FB ucircumflex |
!FC U+00FC udieresis |
!FD U+0169 utilde |
!FE U+016B umacron |
!FF U+02D9 dotaccent |
/web/acc/lib/fpdf16/font/makefont/iso-8859-5.map |
---|
0,0 → 1,256 |
!00 U+0000 .notdef |
!01 U+0001 .notdef |
!02 U+0002 .notdef |
!03 U+0003 .notdef |
!04 U+0004 .notdef |
!05 U+0005 .notdef |
!06 U+0006 .notdef |
!07 U+0007 .notdef |
!08 U+0008 .notdef |
!09 U+0009 .notdef |
!0A U+000A .notdef |
!0B U+000B .notdef |
!0C U+000C .notdef |
!0D U+000D .notdef |
!0E U+000E .notdef |
!0F U+000F .notdef |
!10 U+0010 .notdef |
!11 U+0011 .notdef |
!12 U+0012 .notdef |
!13 U+0013 .notdef |
!14 U+0014 .notdef |
!15 U+0015 .notdef |
!16 U+0016 .notdef |
!17 U+0017 .notdef |
!18 U+0018 .notdef |
!19 U+0019 .notdef |
!1A U+001A .notdef |
!1B U+001B .notdef |
!1C U+001C .notdef |
!1D U+001D .notdef |
!1E U+001E .notdef |
!1F U+001F .notdef |
!20 U+0020 space |
!21 U+0021 exclam |
!22 U+0022 quotedbl |
!23 U+0023 numbersign |
!24 U+0024 dollar |
!25 U+0025 percent |
!26 U+0026 ampersand |
!27 U+0027 quotesingle |
!28 U+0028 parenleft |
!29 U+0029 parenright |
!2A U+002A asterisk |
!2B U+002B plus |
!2C U+002C comma |
!2D U+002D hyphen |
!2E U+002E period |
!2F U+002F slash |
!30 U+0030 zero |
!31 U+0031 one |
!32 U+0032 two |
!33 U+0033 three |
!34 U+0034 four |
!35 U+0035 five |
!36 U+0036 six |
!37 U+0037 seven |
!38 U+0038 eight |
!39 U+0039 nine |
!3A U+003A colon |
!3B U+003B semicolon |
!3C U+003C less |
!3D U+003D equal |
!3E U+003E greater |
!3F U+003F question |
!40 U+0040 at |
!41 U+0041 A |
!42 U+0042 B |
!43 U+0043 C |
!44 U+0044 D |
!45 U+0045 E |
!46 U+0046 F |
!47 U+0047 G |
!48 U+0048 H |
!49 U+0049 I |
!4A U+004A J |
!4B U+004B K |
!4C U+004C L |
!4D U+004D M |
!4E U+004E N |
!4F U+004F O |
!50 U+0050 P |
!51 U+0051 Q |
!52 U+0052 R |
!53 U+0053 S |
!54 U+0054 T |
!55 U+0055 U |
!56 U+0056 V |
!57 U+0057 W |
!58 U+0058 X |
!59 U+0059 Y |
!5A U+005A Z |
!5B U+005B bracketleft |
!5C U+005C backslash |
!5D U+005D bracketright |
!5E U+005E asciicircum |
!5F U+005F underscore |
!60 U+0060 grave |
!61 U+0061 a |
!62 U+0062 b |
!63 U+0063 c |
!64 U+0064 d |
!65 U+0065 e |
!66 U+0066 f |
!67 U+0067 g |
!68 U+0068 h |
!69 U+0069 i |
!6A U+006A j |
!6B U+006B k |
!6C U+006C l |
!6D U+006D m |
!6E U+006E n |
!6F U+006F o |
!70 U+0070 p |
!71 U+0071 q |
!72 U+0072 r |
!73 U+0073 s |
!74 U+0074 t |
!75 U+0075 u |
!76 U+0076 v |
!77 U+0077 w |
!78 U+0078 x |
!79 U+0079 y |
!7A U+007A z |
!7B U+007B braceleft |
!7C U+007C bar |
!7D U+007D braceright |
!7E U+007E asciitilde |
!7F U+007F .notdef |
!80 U+0080 .notdef |
!81 U+0081 .notdef |
!82 U+0082 .notdef |
!83 U+0083 .notdef |
!84 U+0084 .notdef |
!85 U+0085 .notdef |
!86 U+0086 .notdef |
!87 U+0087 .notdef |
!88 U+0088 .notdef |
!89 U+0089 .notdef |
!8A U+008A .notdef |
!8B U+008B .notdef |
!8C U+008C .notdef |
!8D U+008D .notdef |
!8E U+008E .notdef |
!8F U+008F .notdef |
!90 U+0090 .notdef |
!91 U+0091 .notdef |
!92 U+0092 .notdef |
!93 U+0093 .notdef |
!94 U+0094 .notdef |
!95 U+0095 .notdef |
!96 U+0096 .notdef |
!97 U+0097 .notdef |
!98 U+0098 .notdef |
!99 U+0099 .notdef |
!9A U+009A .notdef |
!9B U+009B .notdef |
!9C U+009C .notdef |
!9D U+009D .notdef |
!9E U+009E .notdef |
!9F U+009F .notdef |
!A0 U+00A0 space |
!A1 U+0401 afii10023 |
!A2 U+0402 afii10051 |
!A3 U+0403 afii10052 |
!A4 U+0404 afii10053 |
!A5 U+0405 afii10054 |
!A6 U+0406 afii10055 |
!A7 U+0407 afii10056 |
!A8 U+0408 afii10057 |
!A9 U+0409 afii10058 |
!AA U+040A afii10059 |
!AB U+040B afii10060 |
!AC U+040C afii10061 |
!AD U+00AD hyphen |
!AE U+040E afii10062 |
!AF U+040F afii10145 |
!B0 U+0410 afii10017 |
!B1 U+0411 afii10018 |
!B2 U+0412 afii10019 |
!B3 U+0413 afii10020 |
!B4 U+0414 afii10021 |
!B5 U+0415 afii10022 |
!B6 U+0416 afii10024 |
!B7 U+0417 afii10025 |
!B8 U+0418 afii10026 |
!B9 U+0419 afii10027 |
!BA U+041A afii10028 |
!BB U+041B afii10029 |
!BC U+041C afii10030 |
!BD U+041D afii10031 |
!BE U+041E afii10032 |
!BF U+041F afii10033 |
!C0 U+0420 afii10034 |
!C1 U+0421 afii10035 |
!C2 U+0422 afii10036 |
!C3 U+0423 afii10037 |
!C4 U+0424 afii10038 |
!C5 U+0425 afii10039 |
!C6 U+0426 afii10040 |
!C7 U+0427 afii10041 |
!C8 U+0428 afii10042 |
!C9 U+0429 afii10043 |
!CA U+042A afii10044 |
!CB U+042B afii10045 |
!CC U+042C afii10046 |
!CD U+042D afii10047 |
!CE U+042E afii10048 |
!CF U+042F afii10049 |
!D0 U+0430 afii10065 |
!D1 U+0431 afii10066 |
!D2 U+0432 afii10067 |
!D3 U+0433 afii10068 |
!D4 U+0434 afii10069 |
!D5 U+0435 afii10070 |
!D6 U+0436 afii10072 |
!D7 U+0437 afii10073 |
!D8 U+0438 afii10074 |
!D9 U+0439 afii10075 |
!DA U+043A afii10076 |
!DB U+043B afii10077 |
!DC U+043C afii10078 |
!DD U+043D afii10079 |
!DE U+043E afii10080 |
!DF U+043F afii10081 |
!E0 U+0440 afii10082 |
!E1 U+0441 afii10083 |
!E2 U+0442 afii10084 |
!E3 U+0443 afii10085 |
!E4 U+0444 afii10086 |
!E5 U+0445 afii10087 |
!E6 U+0446 afii10088 |
!E7 U+0447 afii10089 |
!E8 U+0448 afii10090 |
!E9 U+0449 afii10091 |
!EA U+044A afii10092 |
!EB U+044B afii10093 |
!EC U+044C afii10094 |
!ED U+044D afii10095 |
!EE U+044E afii10096 |
!EF U+044F afii10097 |
!F0 U+2116 afii61352 |
!F1 U+0451 afii10071 |
!F2 U+0452 afii10099 |
!F3 U+0453 afii10100 |
!F4 U+0454 afii10101 |
!F5 U+0455 afii10102 |
!F6 U+0456 afii10103 |
!F7 U+0457 afii10104 |
!F8 U+0458 afii10105 |
!F9 U+0459 afii10106 |
!FA U+045A afii10107 |
!FB U+045B afii10108 |
!FC U+045C afii10109 |
!FD U+00A7 section |
!FE U+045E afii10110 |
!FF U+045F afii10193 |
/web/acc/lib/fpdf16/font/makefont/koi8-r.map |
---|
0,0 → 1,256 |
!00 U+0000 .notdef |
!01 U+0001 .notdef |
!02 U+0002 .notdef |
!03 U+0003 .notdef |
!04 U+0004 .notdef |
!05 U+0005 .notdef |
!06 U+0006 .notdef |
!07 U+0007 .notdef |
!08 U+0008 .notdef |
!09 U+0009 .notdef |
!0A U+000A .notdef |
!0B U+000B .notdef |
!0C U+000C .notdef |
!0D U+000D .notdef |
!0E U+000E .notdef |
!0F U+000F .notdef |
!10 U+0010 .notdef |
!11 U+0011 .notdef |
!12 U+0012 .notdef |
!13 U+0013 .notdef |
!14 U+0014 .notdef |
!15 U+0015 .notdef |
!16 U+0016 .notdef |
!17 U+0017 .notdef |
!18 U+0018 .notdef |
!19 U+0019 .notdef |
!1A U+001A .notdef |
!1B U+001B .notdef |
!1C U+001C .notdef |
!1D U+001D .notdef |
!1E U+001E .notdef |
!1F U+001F .notdef |
!20 U+0020 space |
!21 U+0021 exclam |
!22 U+0022 quotedbl |
!23 U+0023 numbersign |
!24 U+0024 dollar |
!25 U+0025 percent |
!26 U+0026 ampersand |
!27 U+0027 quotesingle |
!28 U+0028 parenleft |
!29 U+0029 parenright |
!2A U+002A asterisk |
!2B U+002B plus |
!2C U+002C comma |
!2D U+002D hyphen |
!2E U+002E period |
!2F U+002F slash |
!30 U+0030 zero |
!31 U+0031 one |
!32 U+0032 two |
!33 U+0033 three |
!34 U+0034 four |
!35 U+0035 five |
!36 U+0036 six |
!37 U+0037 seven |
!38 U+0038 eight |
!39 U+0039 nine |
!3A U+003A colon |
!3B U+003B semicolon |
!3C U+003C less |
!3D U+003D equal |
!3E U+003E greater |
!3F U+003F question |
!40 U+0040 at |
!41 U+0041 A |
!42 U+0042 B |
!43 U+0043 C |
!44 U+0044 D |
!45 U+0045 E |
!46 U+0046 F |
!47 U+0047 G |
!48 U+0048 H |
!49 U+0049 I |
!4A U+004A J |
!4B U+004B K |
!4C U+004C L |
!4D U+004D M |
!4E U+004E N |
!4F U+004F O |
!50 U+0050 P |
!51 U+0051 Q |
!52 U+0052 R |
!53 U+0053 S |
!54 U+0054 T |
!55 U+0055 U |
!56 U+0056 V |
!57 U+0057 W |
!58 U+0058 X |
!59 U+0059 Y |
!5A U+005A Z |
!5B U+005B bracketleft |
!5C U+005C backslash |
!5D U+005D bracketright |
!5E U+005E asciicircum |
!5F U+005F underscore |
!60 U+0060 grave |
!61 U+0061 a |
!62 U+0062 b |
!63 U+0063 c |
!64 U+0064 d |
!65 U+0065 e |
!66 U+0066 f |
!67 U+0067 g |
!68 U+0068 h |
!69 U+0069 i |
!6A U+006A j |
!6B U+006B k |
!6C U+006C l |
!6D U+006D m |
!6E U+006E n |
!6F U+006F o |
!70 U+0070 p |
!71 U+0071 q |
!72 U+0072 r |
!73 U+0073 s |
!74 U+0074 t |
!75 U+0075 u |
!76 U+0076 v |
!77 U+0077 w |
!78 U+0078 x |
!79 U+0079 y |
!7A U+007A z |
!7B U+007B braceleft |
!7C U+007C bar |
!7D U+007D braceright |
!7E U+007E asciitilde |
!7F U+007F .notdef |
!80 U+2500 SF100000 |
!81 U+2502 SF110000 |
!82 U+250C SF010000 |
!83 U+2510 SF030000 |
!84 U+2514 SF020000 |
!85 U+2518 SF040000 |
!86 U+251C SF080000 |
!87 U+2524 SF090000 |
!88 U+252C SF060000 |
!89 U+2534 SF070000 |
!8A U+253C SF050000 |
!8B U+2580 upblock |
!8C U+2584 dnblock |
!8D U+2588 block |
!8E U+258C lfblock |
!8F U+2590 rtblock |
!90 U+2591 ltshade |
!91 U+2592 shade |
!92 U+2593 dkshade |
!93 U+2320 integraltp |
!94 U+25A0 filledbox |
!95 U+2219 periodcentered |
!96 U+221A radical |
!97 U+2248 approxequal |
!98 U+2264 lessequal |
!99 U+2265 greaterequal |
!9A U+00A0 space |
!9B U+2321 integralbt |
!9C U+00B0 degree |
!9D U+00B2 twosuperior |
!9E U+00B7 periodcentered |
!9F U+00F7 divide |
!A0 U+2550 SF430000 |
!A1 U+2551 SF240000 |
!A2 U+2552 SF510000 |
!A3 U+0451 afii10071 |
!A4 U+2553 SF520000 |
!A5 U+2554 SF390000 |
!A6 U+2555 SF220000 |
!A7 U+2556 SF210000 |
!A8 U+2557 SF250000 |
!A9 U+2558 SF500000 |
!AA U+2559 SF490000 |
!AB U+255A SF380000 |
!AC U+255B SF280000 |
!AD U+255C SF270000 |
!AE U+255D SF260000 |
!AF U+255E SF360000 |
!B0 U+255F SF370000 |
!B1 U+2560 SF420000 |
!B2 U+2561 SF190000 |
!B3 U+0401 afii10023 |
!B4 U+2562 SF200000 |
!B5 U+2563 SF230000 |
!B6 U+2564 SF470000 |
!B7 U+2565 SF480000 |
!B8 U+2566 SF410000 |
!B9 U+2567 SF450000 |
!BA U+2568 SF460000 |
!BB U+2569 SF400000 |
!BC U+256A SF540000 |
!BD U+256B SF530000 |
!BE U+256C SF440000 |
!BF U+00A9 copyright |
!C0 U+044E afii10096 |
!C1 U+0430 afii10065 |
!C2 U+0431 afii10066 |
!C3 U+0446 afii10088 |
!C4 U+0434 afii10069 |
!C5 U+0435 afii10070 |
!C6 U+0444 afii10086 |
!C7 U+0433 afii10068 |
!C8 U+0445 afii10087 |
!C9 U+0438 afii10074 |
!CA U+0439 afii10075 |
!CB U+043A afii10076 |
!CC U+043B afii10077 |
!CD U+043C afii10078 |
!CE U+043D afii10079 |
!CF U+043E afii10080 |
!D0 U+043F afii10081 |
!D1 U+044F afii10097 |
!D2 U+0440 afii10082 |
!D3 U+0441 afii10083 |
!D4 U+0442 afii10084 |
!D5 U+0443 afii10085 |
!D6 U+0436 afii10072 |
!D7 U+0432 afii10067 |
!D8 U+044C afii10094 |
!D9 U+044B afii10093 |
!DA U+0437 afii10073 |
!DB U+0448 afii10090 |
!DC U+044D afii10095 |
!DD U+0449 afii10091 |
!DE U+0447 afii10089 |
!DF U+044A afii10092 |
!E0 U+042E afii10048 |
!E1 U+0410 afii10017 |
!E2 U+0411 afii10018 |
!E3 U+0426 afii10040 |
!E4 U+0414 afii10021 |
!E5 U+0415 afii10022 |
!E6 U+0424 afii10038 |
!E7 U+0413 afii10020 |
!E8 U+0425 afii10039 |
!E9 U+0418 afii10026 |
!EA U+0419 afii10027 |
!EB U+041A afii10028 |
!EC U+041B afii10029 |
!ED U+041C afii10030 |
!EE U+041D afii10031 |
!EF U+041E afii10032 |
!F0 U+041F afii10033 |
!F1 U+042F afii10049 |
!F2 U+0420 afii10034 |
!F3 U+0421 afii10035 |
!F4 U+0422 afii10036 |
!F5 U+0423 afii10037 |
!F6 U+0416 afii10024 |
!F7 U+0412 afii10019 |
!F8 U+042C afii10046 |
!F9 U+042B afii10045 |
!FA U+0417 afii10025 |
!FB U+0428 afii10042 |
!FC U+042D afii10047 |
!FD U+0429 afii10043 |
!FE U+0427 afii10041 |
!FF U+042A afii10044 |
/web/acc/lib/fpdf16/font/makefont/iso-8859-7.map |
---|
0,0 → 1,250 |
!00 U+0000 .notdef |
!01 U+0001 .notdef |
!02 U+0002 .notdef |
!03 U+0003 .notdef |
!04 U+0004 .notdef |
!05 U+0005 .notdef |
!06 U+0006 .notdef |
!07 U+0007 .notdef |
!08 U+0008 .notdef |
!09 U+0009 .notdef |
!0A U+000A .notdef |
!0B U+000B .notdef |
!0C U+000C .notdef |
!0D U+000D .notdef |
!0E U+000E .notdef |
!0F U+000F .notdef |
!10 U+0010 .notdef |
!11 U+0011 .notdef |
!12 U+0012 .notdef |
!13 U+0013 .notdef |
!14 U+0014 .notdef |
!15 U+0015 .notdef |
!16 U+0016 .notdef |
!17 U+0017 .notdef |
!18 U+0018 .notdef |
!19 U+0019 .notdef |
!1A U+001A .notdef |
!1B U+001B .notdef |
!1C U+001C .notdef |
!1D U+001D .notdef |
!1E U+001E .notdef |
!1F U+001F .notdef |
!20 U+0020 space |
!21 U+0021 exclam |
!22 U+0022 quotedbl |
!23 U+0023 numbersign |
!24 U+0024 dollar |
!25 U+0025 percent |
!26 U+0026 ampersand |
!27 U+0027 quotesingle |
!28 U+0028 parenleft |
!29 U+0029 parenright |
!2A U+002A asterisk |
!2B U+002B plus |
!2C U+002C comma |
!2D U+002D hyphen |
!2E U+002E period |
!2F U+002F slash |
!30 U+0030 zero |
!31 U+0031 one |
!32 U+0032 two |
!33 U+0033 three |
!34 U+0034 four |
!35 U+0035 five |
!36 U+0036 six |
!37 U+0037 seven |
!38 U+0038 eight |
!39 U+0039 nine |
!3A U+003A colon |
!3B U+003B semicolon |
!3C U+003C less |
!3D U+003D equal |
!3E U+003E greater |
!3F U+003F question |
!40 U+0040 at |
!41 U+0041 A |
!42 U+0042 B |
!43 U+0043 C |
!44 U+0044 D |
!45 U+0045 E |
!46 U+0046 F |
!47 U+0047 G |
!48 U+0048 H |
!49 U+0049 I |
!4A U+004A J |
!4B U+004B K |
!4C U+004C L |
!4D U+004D M |
!4E U+004E N |
!4F U+004F O |
!50 U+0050 P |
!51 U+0051 Q |
!52 U+0052 R |
!53 U+0053 S |
!54 U+0054 T |
!55 U+0055 U |
!56 U+0056 V |
!57 U+0057 W |
!58 U+0058 X |
!59 U+0059 Y |
!5A U+005A Z |
!5B U+005B bracketleft |
!5C U+005C backslash |
!5D U+005D bracketright |
!5E U+005E asciicircum |
!5F U+005F underscore |
!60 U+0060 grave |
!61 U+0061 a |
!62 U+0062 b |
!63 U+0063 c |
!64 U+0064 d |
!65 U+0065 e |
!66 U+0066 f |
!67 U+0067 g |
!68 U+0068 h |
!69 U+0069 i |
!6A U+006A j |
!6B U+006B k |
!6C U+006C l |
!6D U+006D m |
!6E U+006E n |
!6F U+006F o |
!70 U+0070 p |
!71 U+0071 q |
!72 U+0072 r |
!73 U+0073 s |
!74 U+0074 t |
!75 U+0075 u |
!76 U+0076 v |
!77 U+0077 w |
!78 U+0078 x |
!79 U+0079 y |
!7A U+007A z |
!7B U+007B braceleft |
!7C U+007C bar |
!7D U+007D braceright |
!7E U+007E asciitilde |
!7F U+007F .notdef |
!80 U+0080 .notdef |
!81 U+0081 .notdef |
!82 U+0082 .notdef |
!83 U+0083 .notdef |
!84 U+0084 .notdef |
!85 U+0085 .notdef |
!86 U+0086 .notdef |
!87 U+0087 .notdef |
!88 U+0088 .notdef |
!89 U+0089 .notdef |
!8A U+008A .notdef |
!8B U+008B .notdef |
!8C U+008C .notdef |
!8D U+008D .notdef |
!8E U+008E .notdef |
!8F U+008F .notdef |
!90 U+0090 .notdef |
!91 U+0091 .notdef |
!92 U+0092 .notdef |
!93 U+0093 .notdef |
!94 U+0094 .notdef |
!95 U+0095 .notdef |
!96 U+0096 .notdef |
!97 U+0097 .notdef |
!98 U+0098 .notdef |
!99 U+0099 .notdef |
!9A U+009A .notdef |
!9B U+009B .notdef |
!9C U+009C .notdef |
!9D U+009D .notdef |
!9E U+009E .notdef |
!9F U+009F .notdef |
!A0 U+00A0 space |
!A1 U+2018 quoteleft |
!A2 U+2019 quoteright |
!A3 U+00A3 sterling |
!A6 U+00A6 brokenbar |
!A7 U+00A7 section |
!A8 U+00A8 dieresis |
!A9 U+00A9 copyright |
!AB U+00AB guillemotleft |
!AC U+00AC logicalnot |
!AD U+00AD hyphen |
!AF U+2015 afii00208 |
!B0 U+00B0 degree |
!B1 U+00B1 plusminus |
!B2 U+00B2 twosuperior |
!B3 U+00B3 threesuperior |
!B4 U+0384 tonos |
!B5 U+0385 dieresistonos |
!B6 U+0386 Alphatonos |
!B7 U+00B7 periodcentered |
!B8 U+0388 Epsilontonos |
!B9 U+0389 Etatonos |
!BA U+038A Iotatonos |
!BB U+00BB guillemotright |
!BC U+038C Omicrontonos |
!BD U+00BD onehalf |
!BE U+038E Upsilontonos |
!BF U+038F Omegatonos |
!C0 U+0390 iotadieresistonos |
!C1 U+0391 Alpha |
!C2 U+0392 Beta |
!C3 U+0393 Gamma |
!C4 U+0394 Delta |
!C5 U+0395 Epsilon |
!C6 U+0396 Zeta |
!C7 U+0397 Eta |
!C8 U+0398 Theta |
!C9 U+0399 Iota |
!CA U+039A Kappa |
!CB U+039B Lambda |
!CC U+039C Mu |
!CD U+039D Nu |
!CE U+039E Xi |
!CF U+039F Omicron |
!D0 U+03A0 Pi |
!D1 U+03A1 Rho |
!D3 U+03A3 Sigma |
!D4 U+03A4 Tau |
!D5 U+03A5 Upsilon |
!D6 U+03A6 Phi |
!D7 U+03A7 Chi |
!D8 U+03A8 Psi |
!D9 U+03A9 Omega |
!DA U+03AA Iotadieresis |
!DB U+03AB Upsilondieresis |
!DC U+03AC alphatonos |
!DD U+03AD epsilontonos |
!DE U+03AE etatonos |
!DF U+03AF iotatonos |
!E0 U+03B0 upsilondieresistonos |
!E1 U+03B1 alpha |
!E2 U+03B2 beta |
!E3 U+03B3 gamma |
!E4 U+03B4 delta |
!E5 U+03B5 epsilon |
!E6 U+03B6 zeta |
!E7 U+03B7 eta |
!E8 U+03B8 theta |
!E9 U+03B9 iota |
!EA U+03BA kappa |
!EB U+03BB lambda |
!EC U+03BC mu |
!ED U+03BD nu |
!EE U+03BE xi |
!EF U+03BF omicron |
!F0 U+03C0 pi |
!F1 U+03C1 rho |
!F2 U+03C2 sigma1 |
!F3 U+03C3 sigma |
!F4 U+03C4 tau |
!F5 U+03C5 upsilon |
!F6 U+03C6 phi |
!F7 U+03C7 chi |
!F8 U+03C8 psi |
!F9 U+03C9 omega |
!FA U+03CA iotadieresis |
!FB U+03CB upsilondieresis |
!FC U+03CC omicrontonos |
!FD U+03CD upsilontonos |
!FE U+03CE omegatonos |
/web/acc/lib/fpdf16/font/makefont/cp1250.map |
---|
0,0 → 1,251 |
!00 U+0000 .notdef |
!01 U+0001 .notdef |
!02 U+0002 .notdef |
!03 U+0003 .notdef |
!04 U+0004 .notdef |
!05 U+0005 .notdef |
!06 U+0006 .notdef |
!07 U+0007 .notdef |
!08 U+0008 .notdef |
!09 U+0009 .notdef |
!0A U+000A .notdef |
!0B U+000B .notdef |
!0C U+000C .notdef |
!0D U+000D .notdef |
!0E U+000E .notdef |
!0F U+000F .notdef |
!10 U+0010 .notdef |
!11 U+0011 .notdef |
!12 U+0012 .notdef |
!13 U+0013 .notdef |
!14 U+0014 .notdef |
!15 U+0015 .notdef |
!16 U+0016 .notdef |
!17 U+0017 .notdef |
!18 U+0018 .notdef |
!19 U+0019 .notdef |
!1A U+001A .notdef |
!1B U+001B .notdef |
!1C U+001C .notdef |
!1D U+001D .notdef |
!1E U+001E .notdef |
!1F U+001F .notdef |
!20 U+0020 space |
!21 U+0021 exclam |
!22 U+0022 quotedbl |
!23 U+0023 numbersign |
!24 U+0024 dollar |
!25 U+0025 percent |
!26 U+0026 ampersand |
!27 U+0027 quotesingle |
!28 U+0028 parenleft |
!29 U+0029 parenright |
!2A U+002A asterisk |
!2B U+002B plus |
!2C U+002C comma |
!2D U+002D hyphen |
!2E U+002E period |
!2F U+002F slash |
!30 U+0030 zero |
!31 U+0031 one |
!32 U+0032 two |
!33 U+0033 three |
!34 U+0034 four |
!35 U+0035 five |
!36 U+0036 six |
!37 U+0037 seven |
!38 U+0038 eight |
!39 U+0039 nine |
!3A U+003A colon |
!3B U+003B semicolon |
!3C U+003C less |
!3D U+003D equal |
!3E U+003E greater |
!3F U+003F question |
!40 U+0040 at |
!41 U+0041 A |
!42 U+0042 B |
!43 U+0043 C |
!44 U+0044 D |
!45 U+0045 E |
!46 U+0046 F |
!47 U+0047 G |
!48 U+0048 H |
!49 U+0049 I |
!4A U+004A J |
!4B U+004B K |
!4C U+004C L |
!4D U+004D M |
!4E U+004E N |
!4F U+004F O |
!50 U+0050 P |
!51 U+0051 Q |
!52 U+0052 R |
!53 U+0053 S |
!54 U+0054 T |
!55 U+0055 U |
!56 U+0056 V |
!57 U+0057 W |
!58 U+0058 X |
!59 U+0059 Y |
!5A U+005A Z |
!5B U+005B bracketleft |
!5C U+005C backslash |
!5D U+005D bracketright |
!5E U+005E asciicircum |
!5F U+005F underscore |
!60 U+0060 grave |
!61 U+0061 a |
!62 U+0062 b |
!63 U+0063 c |
!64 U+0064 d |
!65 U+0065 e |
!66 U+0066 f |
!67 U+0067 g |
!68 U+0068 h |
!69 U+0069 i |
!6A U+006A j |
!6B U+006B k |
!6C U+006C l |
!6D U+006D m |
!6E U+006E n |
!6F U+006F o |
!70 U+0070 p |
!71 U+0071 q |
!72 U+0072 r |
!73 U+0073 s |
!74 U+0074 t |
!75 U+0075 u |
!76 U+0076 v |
!77 U+0077 w |
!78 U+0078 x |
!79 U+0079 y |
!7A U+007A z |
!7B U+007B braceleft |
!7C U+007C bar |
!7D U+007D braceright |
!7E U+007E asciitilde |
!7F U+007F .notdef |
!80 U+20AC Euro |
!82 U+201A quotesinglbase |
!84 U+201E quotedblbase |
!85 U+2026 ellipsis |
!86 U+2020 dagger |
!87 U+2021 daggerdbl |
!89 U+2030 perthousand |
!8A U+0160 Scaron |
!8B U+2039 guilsinglleft |
!8C U+015A Sacute |
!8D U+0164 Tcaron |
!8E U+017D Zcaron |
!8F U+0179 Zacute |
!91 U+2018 quoteleft |
!92 U+2019 quoteright |
!93 U+201C quotedblleft |
!94 U+201D quotedblright |
!95 U+2022 bullet |
!96 U+2013 endash |
!97 U+2014 emdash |
!99 U+2122 trademark |
!9A U+0161 scaron |
!9B U+203A guilsinglright |
!9C U+015B sacute |
!9D U+0165 tcaron |
!9E U+017E zcaron |
!9F U+017A zacute |
!A0 U+00A0 space |
!A1 U+02C7 caron |
!A2 U+02D8 breve |
!A3 U+0141 Lslash |
!A4 U+00A4 currency |
!A5 U+0104 Aogonek |
!A6 U+00A6 brokenbar |
!A7 U+00A7 section |
!A8 U+00A8 dieresis |
!A9 U+00A9 copyright |
!AA U+015E Scedilla |
!AB U+00AB guillemotleft |
!AC U+00AC logicalnot |
!AD U+00AD hyphen |
!AE U+00AE registered |
!AF U+017B Zdotaccent |
!B0 U+00B0 degree |
!B1 U+00B1 plusminus |
!B2 U+02DB ogonek |
!B3 U+0142 lslash |
!B4 U+00B4 acute |
!B5 U+00B5 mu |
!B6 U+00B6 paragraph |
!B7 U+00B7 periodcentered |
!B8 U+00B8 cedilla |
!B9 U+0105 aogonek |
!BA U+015F scedilla |
!BB U+00BB guillemotright |
!BC U+013D Lcaron |
!BD U+02DD hungarumlaut |
!BE U+013E lcaron |
!BF U+017C zdotaccent |
!C0 U+0154 Racute |
!C1 U+00C1 Aacute |
!C2 U+00C2 Acircumflex |
!C3 U+0102 Abreve |
!C4 U+00C4 Adieresis |
!C5 U+0139 Lacute |
!C6 U+0106 Cacute |
!C7 U+00C7 Ccedilla |
!C8 U+010C Ccaron |
!C9 U+00C9 Eacute |
!CA U+0118 Eogonek |
!CB U+00CB Edieresis |
!CC U+011A Ecaron |
!CD U+00CD Iacute |
!CE U+00CE Icircumflex |
!CF U+010E Dcaron |
!D0 U+0110 Dcroat |
!D1 U+0143 Nacute |
!D2 U+0147 Ncaron |
!D3 U+00D3 Oacute |
!D4 U+00D4 Ocircumflex |
!D5 U+0150 Ohungarumlaut |
!D6 U+00D6 Odieresis |
!D7 U+00D7 multiply |
!D8 U+0158 Rcaron |
!D9 U+016E Uring |
!DA U+00DA Uacute |
!DB U+0170 Uhungarumlaut |
!DC U+00DC Udieresis |
!DD U+00DD Yacute |
!DE U+0162 Tcommaaccent |
!DF U+00DF germandbls |
!E0 U+0155 racute |
!E1 U+00E1 aacute |
!E2 U+00E2 acircumflex |
!E3 U+0103 abreve |
!E4 U+00E4 adieresis |
!E5 U+013A lacute |
!E6 U+0107 cacute |
!E7 U+00E7 ccedilla |
!E8 U+010D ccaron |
!E9 U+00E9 eacute |
!EA U+0119 eogonek |
!EB U+00EB edieresis |
!EC U+011B ecaron |
!ED U+00ED iacute |
!EE U+00EE icircumflex |
!EF U+010F dcaron |
!F0 U+0111 dcroat |
!F1 U+0144 nacute |
!F2 U+0148 ncaron |
!F3 U+00F3 oacute |
!F4 U+00F4 ocircumflex |
!F5 U+0151 ohungarumlaut |
!F6 U+00F6 odieresis |
!F7 U+00F7 divide |
!F8 U+0159 rcaron |
!F9 U+016F uring |
!FA U+00FA uacute |
!FB U+0171 uhungarumlaut |
!FC U+00FC udieresis |
!FD U+00FD yacute |
!FE U+0163 tcommaaccent |
!FF U+02D9 dotaccent |
/web/acc/lib/fpdf16/font/makefont/iso-8859-9.map |
---|
0,0 → 1,256 |
!00 U+0000 .notdef |
!01 U+0001 .notdef |
!02 U+0002 .notdef |
!03 U+0003 .notdef |
!04 U+0004 .notdef |
!05 U+0005 .notdef |
!06 U+0006 .notdef |
!07 U+0007 .notdef |
!08 U+0008 .notdef |
!09 U+0009 .notdef |
!0A U+000A .notdef |
!0B U+000B .notdef |
!0C U+000C .notdef |
!0D U+000D .notdef |
!0E U+000E .notdef |
!0F U+000F .notdef |
!10 U+0010 .notdef |
!11 U+0011 .notdef |
!12 U+0012 .notdef |
!13 U+0013 .notdef |
!14 U+0014 .notdef |
!15 U+0015 .notdef |
!16 U+0016 .notdef |
!17 U+0017 .notdef |
!18 U+0018 .notdef |
!19 U+0019 .notdef |
!1A U+001A .notdef |
!1B U+001B .notdef |
!1C U+001C .notdef |
!1D U+001D .notdef |
!1E U+001E .notdef |
!1F U+001F .notdef |
!20 U+0020 space |
!21 U+0021 exclam |
!22 U+0022 quotedbl |
!23 U+0023 numbersign |
!24 U+0024 dollar |
!25 U+0025 percent |
!26 U+0026 ampersand |
!27 U+0027 quotesingle |
!28 U+0028 parenleft |
!29 U+0029 parenright |
!2A U+002A asterisk |
!2B U+002B plus |
!2C U+002C comma |
!2D U+002D hyphen |
!2E U+002E period |
!2F U+002F slash |
!30 U+0030 zero |
!31 U+0031 one |
!32 U+0032 two |
!33 U+0033 three |
!34 U+0034 four |
!35 U+0035 five |
!36 U+0036 six |
!37 U+0037 seven |
!38 U+0038 eight |
!39 U+0039 nine |
!3A U+003A colon |
!3B U+003B semicolon |
!3C U+003C less |
!3D U+003D equal |
!3E U+003E greater |
!3F U+003F question |
!40 U+0040 at |
!41 U+0041 A |
!42 U+0042 B |
!43 U+0043 C |
!44 U+0044 D |
!45 U+0045 E |
!46 U+0046 F |
!47 U+0047 G |
!48 U+0048 H |
!49 U+0049 I |
!4A U+004A J |
!4B U+004B K |
!4C U+004C L |
!4D U+004D M |
!4E U+004E N |
!4F U+004F O |
!50 U+0050 P |
!51 U+0051 Q |
!52 U+0052 R |
!53 U+0053 S |
!54 U+0054 T |
!55 U+0055 U |
!56 U+0056 V |
!57 U+0057 W |
!58 U+0058 X |
!59 U+0059 Y |
!5A U+005A Z |
!5B U+005B bracketleft |
!5C U+005C backslash |
!5D U+005D bracketright |
!5E U+005E asciicircum |
!5F U+005F underscore |
!60 U+0060 grave |
!61 U+0061 a |
!62 U+0062 b |
!63 U+0063 c |
!64 U+0064 d |
!65 U+0065 e |
!66 U+0066 f |
!67 U+0067 g |
!68 U+0068 h |
!69 U+0069 i |
!6A U+006A j |
!6B U+006B k |
!6C U+006C l |
!6D U+006D m |
!6E U+006E n |
!6F U+006F o |
!70 U+0070 p |
!71 U+0071 q |
!72 U+0072 r |
!73 U+0073 s |
!74 U+0074 t |
!75 U+0075 u |
!76 U+0076 v |
!77 U+0077 w |
!78 U+0078 x |
!79 U+0079 y |
!7A U+007A z |
!7B U+007B braceleft |
!7C U+007C bar |
!7D U+007D braceright |
!7E U+007E asciitilde |
!7F U+007F .notdef |
!80 U+0080 .notdef |
!81 U+0081 .notdef |
!82 U+0082 .notdef |
!83 U+0083 .notdef |
!84 U+0084 .notdef |
!85 U+0085 .notdef |
!86 U+0086 .notdef |
!87 U+0087 .notdef |
!88 U+0088 .notdef |
!89 U+0089 .notdef |
!8A U+008A .notdef |
!8B U+008B .notdef |
!8C U+008C .notdef |
!8D U+008D .notdef |
!8E U+008E .notdef |
!8F U+008F .notdef |
!90 U+0090 .notdef |
!91 U+0091 .notdef |
!92 U+0092 .notdef |
!93 U+0093 .notdef |
!94 U+0094 .notdef |
!95 U+0095 .notdef |
!96 U+0096 .notdef |
!97 U+0097 .notdef |
!98 U+0098 .notdef |
!99 U+0099 .notdef |
!9A U+009A .notdef |
!9B U+009B .notdef |
!9C U+009C .notdef |
!9D U+009D .notdef |
!9E U+009E .notdef |
!9F U+009F .notdef |
!A0 U+00A0 space |
!A1 U+00A1 exclamdown |
!A2 U+00A2 cent |
!A3 U+00A3 sterling |
!A4 U+00A4 currency |
!A5 U+00A5 yen |
!A6 U+00A6 brokenbar |
!A7 U+00A7 section |
!A8 U+00A8 dieresis |
!A9 U+00A9 copyright |
!AA U+00AA ordfeminine |
!AB U+00AB guillemotleft |
!AC U+00AC logicalnot |
!AD U+00AD hyphen |
!AE U+00AE registered |
!AF U+00AF macron |
!B0 U+00B0 degree |
!B1 U+00B1 plusminus |
!B2 U+00B2 twosuperior |
!B3 U+00B3 threesuperior |
!B4 U+00B4 acute |
!B5 U+00B5 mu |
!B6 U+00B6 paragraph |
!B7 U+00B7 periodcentered |
!B8 U+00B8 cedilla |
!B9 U+00B9 onesuperior |
!BA U+00BA ordmasculine |
!BB U+00BB guillemotright |
!BC U+00BC onequarter |
!BD U+00BD onehalf |
!BE U+00BE threequarters |
!BF U+00BF questiondown |
!C0 U+00C0 Agrave |
!C1 U+00C1 Aacute |
!C2 U+00C2 Acircumflex |
!C3 U+00C3 Atilde |
!C4 U+00C4 Adieresis |
!C5 U+00C5 Aring |
!C6 U+00C6 AE |
!C7 U+00C7 Ccedilla |
!C8 U+00C8 Egrave |
!C9 U+00C9 Eacute |
!CA U+00CA Ecircumflex |
!CB U+00CB Edieresis |
!CC U+00CC Igrave |
!CD U+00CD Iacute |
!CE U+00CE Icircumflex |
!CF U+00CF Idieresis |
!D0 U+011E Gbreve |
!D1 U+00D1 Ntilde |
!D2 U+00D2 Ograve |
!D3 U+00D3 Oacute |
!D4 U+00D4 Ocircumflex |
!D5 U+00D5 Otilde |
!D6 U+00D6 Odieresis |
!D7 U+00D7 multiply |
!D8 U+00D8 Oslash |
!D9 U+00D9 Ugrave |
!DA U+00DA Uacute |
!DB U+00DB Ucircumflex |
!DC U+00DC Udieresis |
!DD U+0130 Idotaccent |
!DE U+015E Scedilla |
!DF U+00DF germandbls |
!E0 U+00E0 agrave |
!E1 U+00E1 aacute |
!E2 U+00E2 acircumflex |
!E3 U+00E3 atilde |
!E4 U+00E4 adieresis |
!E5 U+00E5 aring |
!E6 U+00E6 ae |
!E7 U+00E7 ccedilla |
!E8 U+00E8 egrave |
!E9 U+00E9 eacute |
!EA U+00EA ecircumflex |
!EB U+00EB edieresis |
!EC U+00EC igrave |
!ED U+00ED iacute |
!EE U+00EE icircumflex |
!EF U+00EF idieresis |
!F0 U+011F gbreve |
!F1 U+00F1 ntilde |
!F2 U+00F2 ograve |
!F3 U+00F3 oacute |
!F4 U+00F4 ocircumflex |
!F5 U+00F5 otilde |
!F6 U+00F6 odieresis |
!F7 U+00F7 divide |
!F8 U+00F8 oslash |
!F9 U+00F9 ugrave |
!FA U+00FA uacute |
!FB U+00FB ucircumflex |
!FC U+00FC udieresis |
!FD U+0131 dotlessi |
!FE U+015F scedilla |
!FF U+00FF ydieresis |
/web/acc/lib/fpdf16/font/makefont/cp1251.map |
---|
0,0 → 1,255 |
!00 U+0000 .notdef |
!01 U+0001 .notdef |
!02 U+0002 .notdef |
!03 U+0003 .notdef |
!04 U+0004 .notdef |
!05 U+0005 .notdef |
!06 U+0006 .notdef |
!07 U+0007 .notdef |
!08 U+0008 .notdef |
!09 U+0009 .notdef |
!0A U+000A .notdef |
!0B U+000B .notdef |
!0C U+000C .notdef |
!0D U+000D .notdef |
!0E U+000E .notdef |
!0F U+000F .notdef |
!10 U+0010 .notdef |
!11 U+0011 .notdef |
!12 U+0012 .notdef |
!13 U+0013 .notdef |
!14 U+0014 .notdef |
!15 U+0015 .notdef |
!16 U+0016 .notdef |
!17 U+0017 .notdef |
!18 U+0018 .notdef |
!19 U+0019 .notdef |
!1A U+001A .notdef |
!1B U+001B .notdef |
!1C U+001C .notdef |
!1D U+001D .notdef |
!1E U+001E .notdef |
!1F U+001F .notdef |
!20 U+0020 space |
!21 U+0021 exclam |
!22 U+0022 quotedbl |
!23 U+0023 numbersign |
!24 U+0024 dollar |
!25 U+0025 percent |
!26 U+0026 ampersand |
!27 U+0027 quotesingle |
!28 U+0028 parenleft |
!29 U+0029 parenright |
!2A U+002A asterisk |
!2B U+002B plus |
!2C U+002C comma |
!2D U+002D hyphen |
!2E U+002E period |
!2F U+002F slash |
!30 U+0030 zero |
!31 U+0031 one |
!32 U+0032 two |
!33 U+0033 three |
!34 U+0034 four |
!35 U+0035 five |
!36 U+0036 six |
!37 U+0037 seven |
!38 U+0038 eight |
!39 U+0039 nine |
!3A U+003A colon |
!3B U+003B semicolon |
!3C U+003C less |
!3D U+003D equal |
!3E U+003E greater |
!3F U+003F question |
!40 U+0040 at |
!41 U+0041 A |
!42 U+0042 B |
!43 U+0043 C |
!44 U+0044 D |
!45 U+0045 E |
!46 U+0046 F |
!47 U+0047 G |
!48 U+0048 H |
!49 U+0049 I |
!4A U+004A J |
!4B U+004B K |
!4C U+004C L |
!4D U+004D M |
!4E U+004E N |
!4F U+004F O |
!50 U+0050 P |
!51 U+0051 Q |
!52 U+0052 R |
!53 U+0053 S |
!54 U+0054 T |
!55 U+0055 U |
!56 U+0056 V |
!57 U+0057 W |
!58 U+0058 X |
!59 U+0059 Y |
!5A U+005A Z |
!5B U+005B bracketleft |
!5C U+005C backslash |
!5D U+005D bracketright |
!5E U+005E asciicircum |
!5F U+005F underscore |
!60 U+0060 grave |
!61 U+0061 a |
!62 U+0062 b |
!63 U+0063 c |
!64 U+0064 d |
!65 U+0065 e |
!66 U+0066 f |
!67 U+0067 g |
!68 U+0068 h |
!69 U+0069 i |
!6A U+006A j |
!6B U+006B k |
!6C U+006C l |
!6D U+006D m |
!6E U+006E n |
!6F U+006F o |
!70 U+0070 p |
!71 U+0071 q |
!72 U+0072 r |
!73 U+0073 s |
!74 U+0074 t |
!75 U+0075 u |
!76 U+0076 v |
!77 U+0077 w |
!78 U+0078 x |
!79 U+0079 y |
!7A U+007A z |
!7B U+007B braceleft |
!7C U+007C bar |
!7D U+007D braceright |
!7E U+007E asciitilde |
!7F U+007F .notdef |
!80 U+0402 afii10051 |
!81 U+0403 afii10052 |
!82 U+201A quotesinglbase |
!83 U+0453 afii10100 |
!84 U+201E quotedblbase |
!85 U+2026 ellipsis |
!86 U+2020 dagger |
!87 U+2021 daggerdbl |
!88 U+20AC Euro |
!89 U+2030 perthousand |
!8A U+0409 afii10058 |
!8B U+2039 guilsinglleft |
!8C U+040A afii10059 |
!8D U+040C afii10061 |
!8E U+040B afii10060 |
!8F U+040F afii10145 |
!90 U+0452 afii10099 |
!91 U+2018 quoteleft |
!92 U+2019 quoteright |
!93 U+201C quotedblleft |
!94 U+201D quotedblright |
!95 U+2022 bullet |
!96 U+2013 endash |
!97 U+2014 emdash |
!99 U+2122 trademark |
!9A U+0459 afii10106 |
!9B U+203A guilsinglright |
!9C U+045A afii10107 |
!9D U+045C afii10109 |
!9E U+045B afii10108 |
!9F U+045F afii10193 |
!A0 U+00A0 space |
!A1 U+040E afii10062 |
!A2 U+045E afii10110 |
!A3 U+0408 afii10057 |
!A4 U+00A4 currency |
!A5 U+0490 afii10050 |
!A6 U+00A6 brokenbar |
!A7 U+00A7 section |
!A8 U+0401 afii10023 |
!A9 U+00A9 copyright |
!AA U+0404 afii10053 |
!AB U+00AB guillemotleft |
!AC U+00AC logicalnot |
!AD U+00AD hyphen |
!AE U+00AE registered |
!AF U+0407 afii10056 |
!B0 U+00B0 degree |
!B1 U+00B1 plusminus |
!B2 U+0406 afii10055 |
!B3 U+0456 afii10103 |
!B4 U+0491 afii10098 |
!B5 U+00B5 mu |
!B6 U+00B6 paragraph |
!B7 U+00B7 periodcentered |
!B8 U+0451 afii10071 |
!B9 U+2116 afii61352 |
!BA U+0454 afii10101 |
!BB U+00BB guillemotright |
!BC U+0458 afii10105 |
!BD U+0405 afii10054 |
!BE U+0455 afii10102 |
!BF U+0457 afii10104 |
!C0 U+0410 afii10017 |
!C1 U+0411 afii10018 |
!C2 U+0412 afii10019 |
!C3 U+0413 afii10020 |
!C4 U+0414 afii10021 |
!C5 U+0415 afii10022 |
!C6 U+0416 afii10024 |
!C7 U+0417 afii10025 |
!C8 U+0418 afii10026 |
!C9 U+0419 afii10027 |
!CA U+041A afii10028 |
!CB U+041B afii10029 |
!CC U+041C afii10030 |
!CD U+041D afii10031 |
!CE U+041E afii10032 |
!CF U+041F afii10033 |
!D0 U+0420 afii10034 |
!D1 U+0421 afii10035 |
!D2 U+0422 afii10036 |
!D3 U+0423 afii10037 |
!D4 U+0424 afii10038 |
!D5 U+0425 afii10039 |
!D6 U+0426 afii10040 |
!D7 U+0427 afii10041 |
!D8 U+0428 afii10042 |
!D9 U+0429 afii10043 |
!DA U+042A afii10044 |
!DB U+042B afii10045 |
!DC U+042C afii10046 |
!DD U+042D afii10047 |
!DE U+042E afii10048 |
!DF U+042F afii10049 |
!E0 U+0430 afii10065 |
!E1 U+0431 afii10066 |
!E2 U+0432 afii10067 |
!E3 U+0433 afii10068 |
!E4 U+0434 afii10069 |
!E5 U+0435 afii10070 |
!E6 U+0436 afii10072 |
!E7 U+0437 afii10073 |
!E8 U+0438 afii10074 |
!E9 U+0439 afii10075 |
!EA U+043A afii10076 |
!EB U+043B afii10077 |
!EC U+043C afii10078 |
!ED U+043D afii10079 |
!EE U+043E afii10080 |
!EF U+043F afii10081 |
!F0 U+0440 afii10082 |
!F1 U+0441 afii10083 |
!F2 U+0442 afii10084 |
!F3 U+0443 afii10085 |
!F4 U+0444 afii10086 |
!F5 U+0445 afii10087 |
!F6 U+0446 afii10088 |
!F7 U+0447 afii10089 |
!F8 U+0448 afii10090 |
!F9 U+0449 afii10091 |
!FA U+044A afii10092 |
!FB U+044B afii10093 |
!FC U+044C afii10094 |
!FD U+044D afii10095 |
!FE U+044E afii10096 |
!FF U+044F afii10097 |
/web/acc/lib/fpdf16/font/makefont/koi8-u.map |
---|
0,0 → 1,256 |
!00 U+0000 .notdef |
!01 U+0001 .notdef |
!02 U+0002 .notdef |
!03 U+0003 .notdef |
!04 U+0004 .notdef |
!05 U+0005 .notdef |
!06 U+0006 .notdef |
!07 U+0007 .notdef |
!08 U+0008 .notdef |
!09 U+0009 .notdef |
!0A U+000A .notdef |
!0B U+000B .notdef |
!0C U+000C .notdef |
!0D U+000D .notdef |
!0E U+000E .notdef |
!0F U+000F .notdef |
!10 U+0010 .notdef |
!11 U+0011 .notdef |
!12 U+0012 .notdef |
!13 U+0013 .notdef |
!14 U+0014 .notdef |
!15 U+0015 .notdef |
!16 U+0016 .notdef |
!17 U+0017 .notdef |
!18 U+0018 .notdef |
!19 U+0019 .notdef |
!1A U+001A .notdef |
!1B U+001B .notdef |
!1C U+001C .notdef |
!1D U+001D .notdef |
!1E U+001E .notdef |
!1F U+001F .notdef |
!20 U+0020 space |
!21 U+0021 exclam |
!22 U+0022 quotedbl |
!23 U+0023 numbersign |
!24 U+0024 dollar |
!25 U+0025 percent |
!26 U+0026 ampersand |
!27 U+0027 quotesingle |
!28 U+0028 parenleft |
!29 U+0029 parenright |
!2A U+002A asterisk |
!2B U+002B plus |
!2C U+002C comma |
!2D U+002D hyphen |
!2E U+002E period |
!2F U+002F slash |
!30 U+0030 zero |
!31 U+0031 one |
!32 U+0032 two |
!33 U+0033 three |
!34 U+0034 four |
!35 U+0035 five |
!36 U+0036 six |
!37 U+0037 seven |
!38 U+0038 eight |
!39 U+0039 nine |
!3A U+003A colon |
!3B U+003B semicolon |
!3C U+003C less |
!3D U+003D equal |
!3E U+003E greater |
!3F U+003F question |
!40 U+0040 at |
!41 U+0041 A |
!42 U+0042 B |
!43 U+0043 C |
!44 U+0044 D |
!45 U+0045 E |
!46 U+0046 F |
!47 U+0047 G |
!48 U+0048 H |
!49 U+0049 I |
!4A U+004A J |
!4B U+004B K |
!4C U+004C L |
!4D U+004D M |
!4E U+004E N |
!4F U+004F O |
!50 U+0050 P |
!51 U+0051 Q |
!52 U+0052 R |
!53 U+0053 S |
!54 U+0054 T |
!55 U+0055 U |
!56 U+0056 V |
!57 U+0057 W |
!58 U+0058 X |
!59 U+0059 Y |
!5A U+005A Z |
!5B U+005B bracketleft |
!5C U+005C backslash |
!5D U+005D bracketright |
!5E U+005E asciicircum |
!5F U+005F underscore |
!60 U+0060 grave |
!61 U+0061 a |
!62 U+0062 b |
!63 U+0063 c |
!64 U+0064 d |
!65 U+0065 e |
!66 U+0066 f |
!67 U+0067 g |
!68 U+0068 h |
!69 U+0069 i |
!6A U+006A j |
!6B U+006B k |
!6C U+006C l |
!6D U+006D m |
!6E U+006E n |
!6F U+006F o |
!70 U+0070 p |
!71 U+0071 q |
!72 U+0072 r |
!73 U+0073 s |
!74 U+0074 t |
!75 U+0075 u |
!76 U+0076 v |
!77 U+0077 w |
!78 U+0078 x |
!79 U+0079 y |
!7A U+007A z |
!7B U+007B braceleft |
!7C U+007C bar |
!7D U+007D braceright |
!7E U+007E asciitilde |
!7F U+007F .notdef |
!80 U+2500 SF100000 |
!81 U+2502 SF110000 |
!82 U+250C SF010000 |
!83 U+2510 SF030000 |
!84 U+2514 SF020000 |
!85 U+2518 SF040000 |
!86 U+251C SF080000 |
!87 U+2524 SF090000 |
!88 U+252C SF060000 |
!89 U+2534 SF070000 |
!8A U+253C SF050000 |
!8B U+2580 upblock |
!8C U+2584 dnblock |
!8D U+2588 block |
!8E U+258C lfblock |
!8F U+2590 rtblock |
!90 U+2591 ltshade |
!91 U+2592 shade |
!92 U+2593 dkshade |
!93 U+2320 integraltp |
!94 U+25A0 filledbox |
!95 U+2022 bullet |
!96 U+221A radical |
!97 U+2248 approxequal |
!98 U+2264 lessequal |
!99 U+2265 greaterequal |
!9A U+00A0 space |
!9B U+2321 integralbt |
!9C U+00B0 degree |
!9D U+00B2 twosuperior |
!9E U+00B7 periodcentered |
!9F U+00F7 divide |
!A0 U+2550 SF430000 |
!A1 U+2551 SF240000 |
!A2 U+2552 SF510000 |
!A3 U+0451 afii10071 |
!A4 U+0454 afii10101 |
!A5 U+2554 SF390000 |
!A6 U+0456 afii10103 |
!A7 U+0457 afii10104 |
!A8 U+2557 SF250000 |
!A9 U+2558 SF500000 |
!AA U+2559 SF490000 |
!AB U+255A SF380000 |
!AC U+255B SF280000 |
!AD U+0491 afii10098 |
!AE U+255D SF260000 |
!AF U+255E SF360000 |
!B0 U+255F SF370000 |
!B1 U+2560 SF420000 |
!B2 U+2561 SF190000 |
!B3 U+0401 afii10023 |
!B4 U+0404 afii10053 |
!B5 U+2563 SF230000 |
!B6 U+0406 afii10055 |
!B7 U+0407 afii10056 |
!B8 U+2566 SF410000 |
!B9 U+2567 SF450000 |
!BA U+2568 SF460000 |
!BB U+2569 SF400000 |
!BC U+256A SF540000 |
!BD U+0490 afii10050 |
!BE U+256C SF440000 |
!BF U+00A9 copyright |
!C0 U+044E afii10096 |
!C1 U+0430 afii10065 |
!C2 U+0431 afii10066 |
!C3 U+0446 afii10088 |
!C4 U+0434 afii10069 |
!C5 U+0435 afii10070 |
!C6 U+0444 afii10086 |
!C7 U+0433 afii10068 |
!C8 U+0445 afii10087 |
!C9 U+0438 afii10074 |
!CA U+0439 afii10075 |
!CB U+043A afii10076 |
!CC U+043B afii10077 |
!CD U+043C afii10078 |
!CE U+043D afii10079 |
!CF U+043E afii10080 |
!D0 U+043F afii10081 |
!D1 U+044F afii10097 |
!D2 U+0440 afii10082 |
!D3 U+0441 afii10083 |
!D4 U+0442 afii10084 |
!D5 U+0443 afii10085 |
!D6 U+0436 afii10072 |
!D7 U+0432 afii10067 |
!D8 U+044C afii10094 |
!D9 U+044B afii10093 |
!DA U+0437 afii10073 |
!DB U+0448 afii10090 |
!DC U+044D afii10095 |
!DD U+0449 afii10091 |
!DE U+0447 afii10089 |
!DF U+044A afii10092 |
!E0 U+042E afii10048 |
!E1 U+0410 afii10017 |
!E2 U+0411 afii10018 |
!E3 U+0426 afii10040 |
!E4 U+0414 afii10021 |
!E5 U+0415 afii10022 |
!E6 U+0424 afii10038 |
!E7 U+0413 afii10020 |
!E8 U+0425 afii10039 |
!E9 U+0418 afii10026 |
!EA U+0419 afii10027 |
!EB U+041A afii10028 |
!EC U+041B afii10029 |
!ED U+041C afii10030 |
!EE U+041D afii10031 |
!EF U+041E afii10032 |
!F0 U+041F afii10033 |
!F1 U+042F afii10049 |
!F2 U+0420 afii10034 |
!F3 U+0421 afii10035 |
!F4 U+0422 afii10036 |
!F5 U+0423 afii10037 |
!F6 U+0416 afii10024 |
!F7 U+0412 afii10019 |
!F8 U+042C afii10046 |
!F9 U+042B afii10045 |
!FA U+0417 afii10025 |
!FB U+0428 afii10042 |
!FC U+042D afii10047 |
!FD U+0429 afii10043 |
!FE U+0427 afii10041 |
!FF U+042A afii10044 |
/web/acc/lib/fpdf16/font/makefont/cp1252.map |
---|
0,0 → 1,251 |
!00 U+0000 .notdef |
!01 U+0001 .notdef |
!02 U+0002 .notdef |
!03 U+0003 .notdef |
!04 U+0004 .notdef |
!05 U+0005 .notdef |
!06 U+0006 .notdef |
!07 U+0007 .notdef |
!08 U+0008 .notdef |
!09 U+0009 .notdef |
!0A U+000A .notdef |
!0B U+000B .notdef |
!0C U+000C .notdef |
!0D U+000D .notdef |
!0E U+000E .notdef |
!0F U+000F .notdef |
!10 U+0010 .notdef |
!11 U+0011 .notdef |
!12 U+0012 .notdef |
!13 U+0013 .notdef |
!14 U+0014 .notdef |
!15 U+0015 .notdef |
!16 U+0016 .notdef |
!17 U+0017 .notdef |
!18 U+0018 .notdef |
!19 U+0019 .notdef |
!1A U+001A .notdef |
!1B U+001B .notdef |
!1C U+001C .notdef |
!1D U+001D .notdef |
!1E U+001E .notdef |
!1F U+001F .notdef |
!20 U+0020 space |
!21 U+0021 exclam |
!22 U+0022 quotedbl |
!23 U+0023 numbersign |
!24 U+0024 dollar |
!25 U+0025 percent |
!26 U+0026 ampersand |
!27 U+0027 quotesingle |
!28 U+0028 parenleft |
!29 U+0029 parenright |
!2A U+002A asterisk |
!2B U+002B plus |
!2C U+002C comma |
!2D U+002D hyphen |
!2E U+002E period |
!2F U+002F slash |
!30 U+0030 zero |
!31 U+0031 one |
!32 U+0032 two |
!33 U+0033 three |
!34 U+0034 four |
!35 U+0035 five |
!36 U+0036 six |
!37 U+0037 seven |
!38 U+0038 eight |
!39 U+0039 nine |
!3A U+003A colon |
!3B U+003B semicolon |
!3C U+003C less |
!3D U+003D equal |
!3E U+003E greater |
!3F U+003F question |
!40 U+0040 at |
!41 U+0041 A |
!42 U+0042 B |
!43 U+0043 C |
!44 U+0044 D |
!45 U+0045 E |
!46 U+0046 F |
!47 U+0047 G |
!48 U+0048 H |
!49 U+0049 I |
!4A U+004A J |
!4B U+004B K |
!4C U+004C L |
!4D U+004D M |
!4E U+004E N |
!4F U+004F O |
!50 U+0050 P |
!51 U+0051 Q |
!52 U+0052 R |
!53 U+0053 S |
!54 U+0054 T |
!55 U+0055 U |
!56 U+0056 V |
!57 U+0057 W |
!58 U+0058 X |
!59 U+0059 Y |
!5A U+005A Z |
!5B U+005B bracketleft |
!5C U+005C backslash |
!5D U+005D bracketright |
!5E U+005E asciicircum |
!5F U+005F underscore |
!60 U+0060 grave |
!61 U+0061 a |
!62 U+0062 b |
!63 U+0063 c |
!64 U+0064 d |
!65 U+0065 e |
!66 U+0066 f |
!67 U+0067 g |
!68 U+0068 h |
!69 U+0069 i |
!6A U+006A j |
!6B U+006B k |
!6C U+006C l |
!6D U+006D m |
!6E U+006E n |
!6F U+006F o |
!70 U+0070 p |
!71 U+0071 q |
!72 U+0072 r |
!73 U+0073 s |
!74 U+0074 t |
!75 U+0075 u |
!76 U+0076 v |
!77 U+0077 w |
!78 U+0078 x |
!79 U+0079 y |
!7A U+007A z |
!7B U+007B braceleft |
!7C U+007C bar |
!7D U+007D braceright |
!7E U+007E asciitilde |
!7F U+007F .notdef |
!80 U+20AC Euro |
!82 U+201A quotesinglbase |
!83 U+0192 florin |
!84 U+201E quotedblbase |
!85 U+2026 ellipsis |
!86 U+2020 dagger |
!87 U+2021 daggerdbl |
!88 U+02C6 circumflex |
!89 U+2030 perthousand |
!8A U+0160 Scaron |
!8B U+2039 guilsinglleft |
!8C U+0152 OE |
!8E U+017D Zcaron |
!91 U+2018 quoteleft |
!92 U+2019 quoteright |
!93 U+201C quotedblleft |
!94 U+201D quotedblright |
!95 U+2022 bullet |
!96 U+2013 endash |
!97 U+2014 emdash |
!98 U+02DC tilde |
!99 U+2122 trademark |
!9A U+0161 scaron |
!9B U+203A guilsinglright |
!9C U+0153 oe |
!9E U+017E zcaron |
!9F U+0178 Ydieresis |
!A0 U+00A0 space |
!A1 U+00A1 exclamdown |
!A2 U+00A2 cent |
!A3 U+00A3 sterling |
!A4 U+00A4 currency |
!A5 U+00A5 yen |
!A6 U+00A6 brokenbar |
!A7 U+00A7 section |
!A8 U+00A8 dieresis |
!A9 U+00A9 copyright |
!AA U+00AA ordfeminine |
!AB U+00AB guillemotleft |
!AC U+00AC logicalnot |
!AD U+00AD hyphen |
!AE U+00AE registered |
!AF U+00AF macron |
!B0 U+00B0 degree |
!B1 U+00B1 plusminus |
!B2 U+00B2 twosuperior |
!B3 U+00B3 threesuperior |
!B4 U+00B4 acute |
!B5 U+00B5 mu |
!B6 U+00B6 paragraph |
!B7 U+00B7 periodcentered |
!B8 U+00B8 cedilla |
!B9 U+00B9 onesuperior |
!BA U+00BA ordmasculine |
!BB U+00BB guillemotright |
!BC U+00BC onequarter |
!BD U+00BD onehalf |
!BE U+00BE threequarters |
!BF U+00BF questiondown |
!C0 U+00C0 Agrave |
!C1 U+00C1 Aacute |
!C2 U+00C2 Acircumflex |
!C3 U+00C3 Atilde |
!C4 U+00C4 Adieresis |
!C5 U+00C5 Aring |
!C6 U+00C6 AE |
!C7 U+00C7 Ccedilla |
!C8 U+00C8 Egrave |
!C9 U+00C9 Eacute |
!CA U+00CA Ecircumflex |
!CB U+00CB Edieresis |
!CC U+00CC Igrave |
!CD U+00CD Iacute |
!CE U+00CE Icircumflex |
!CF U+00CF Idieresis |
!D0 U+00D0 Eth |
!D1 U+00D1 Ntilde |
!D2 U+00D2 Ograve |
!D3 U+00D3 Oacute |
!D4 U+00D4 Ocircumflex |
!D5 U+00D5 Otilde |
!D6 U+00D6 Odieresis |
!D7 U+00D7 multiply |
!D8 U+00D8 Oslash |
!D9 U+00D9 Ugrave |
!DA U+00DA Uacute |
!DB U+00DB Ucircumflex |
!DC U+00DC Udieresis |
!DD U+00DD Yacute |
!DE U+00DE Thorn |
!DF U+00DF germandbls |
!E0 U+00E0 agrave |
!E1 U+00E1 aacute |
!E2 U+00E2 acircumflex |
!E3 U+00E3 atilde |
!E4 U+00E4 adieresis |
!E5 U+00E5 aring |
!E6 U+00E6 ae |
!E7 U+00E7 ccedilla |
!E8 U+00E8 egrave |
!E9 U+00E9 eacute |
!EA U+00EA ecircumflex |
!EB U+00EB edieresis |
!EC U+00EC igrave |
!ED U+00ED iacute |
!EE U+00EE icircumflex |
!EF U+00EF idieresis |
!F0 U+00F0 eth |
!F1 U+00F1 ntilde |
!F2 U+00F2 ograve |
!F3 U+00F3 oacute |
!F4 U+00F4 ocircumflex |
!F5 U+00F5 otilde |
!F6 U+00F6 odieresis |
!F7 U+00F7 divide |
!F8 U+00F8 oslash |
!F9 U+00F9 ugrave |
!FA U+00FA uacute |
!FB U+00FB ucircumflex |
!FC U+00FC udieresis |
!FD U+00FD yacute |
!FE U+00FE thorn |
!FF U+00FF ydieresis |
/web/acc/lib/fpdf16/font/makefont/cp1253.map |
---|
0,0 → 1,239 |
!00 U+0000 .notdef |
!01 U+0001 .notdef |
!02 U+0002 .notdef |
!03 U+0003 .notdef |
!04 U+0004 .notdef |
!05 U+0005 .notdef |
!06 U+0006 .notdef |
!07 U+0007 .notdef |
!08 U+0008 .notdef |
!09 U+0009 .notdef |
!0A U+000A .notdef |
!0B U+000B .notdef |
!0C U+000C .notdef |
!0D U+000D .notdef |
!0E U+000E .notdef |
!0F U+000F .notdef |
!10 U+0010 .notdef |
!11 U+0011 .notdef |
!12 U+0012 .notdef |
!13 U+0013 .notdef |
!14 U+0014 .notdef |
!15 U+0015 .notdef |
!16 U+0016 .notdef |
!17 U+0017 .notdef |
!18 U+0018 .notdef |
!19 U+0019 .notdef |
!1A U+001A .notdef |
!1B U+001B .notdef |
!1C U+001C .notdef |
!1D U+001D .notdef |
!1E U+001E .notdef |
!1F U+001F .notdef |
!20 U+0020 space |
!21 U+0021 exclam |
!22 U+0022 quotedbl |
!23 U+0023 numbersign |
!24 U+0024 dollar |
!25 U+0025 percent |
!26 U+0026 ampersand |
!27 U+0027 quotesingle |
!28 U+0028 parenleft |
!29 U+0029 parenright |
!2A U+002A asterisk |
!2B U+002B plus |
!2C U+002C comma |
!2D U+002D hyphen |
!2E U+002E period |
!2F U+002F slash |
!30 U+0030 zero |
!31 U+0031 one |
!32 U+0032 two |
!33 U+0033 three |
!34 U+0034 four |
!35 U+0035 five |
!36 U+0036 six |
!37 U+0037 seven |
!38 U+0038 eight |
!39 U+0039 nine |
!3A U+003A colon |
!3B U+003B semicolon |
!3C U+003C less |
!3D U+003D equal |
!3E U+003E greater |
!3F U+003F question |
!40 U+0040 at |
!41 U+0041 A |
!42 U+0042 B |
!43 U+0043 C |
!44 U+0044 D |
!45 U+0045 E |
!46 U+0046 F |
!47 U+0047 G |
!48 U+0048 H |
!49 U+0049 I |
!4A U+004A J |
!4B U+004B K |
!4C U+004C L |
!4D U+004D M |
!4E U+004E N |
!4F U+004F O |
!50 U+0050 P |
!51 U+0051 Q |
!52 U+0052 R |
!53 U+0053 S |
!54 U+0054 T |
!55 U+0055 U |
!56 U+0056 V |
!57 U+0057 W |
!58 U+0058 X |
!59 U+0059 Y |
!5A U+005A Z |
!5B U+005B bracketleft |
!5C U+005C backslash |
!5D U+005D bracketright |
!5E U+005E asciicircum |
!5F U+005F underscore |
!60 U+0060 grave |
!61 U+0061 a |
!62 U+0062 b |
!63 U+0063 c |
!64 U+0064 d |
!65 U+0065 e |
!66 U+0066 f |
!67 U+0067 g |
!68 U+0068 h |
!69 U+0069 i |
!6A U+006A j |
!6B U+006B k |
!6C U+006C l |
!6D U+006D m |
!6E U+006E n |
!6F U+006F o |
!70 U+0070 p |
!71 U+0071 q |
!72 U+0072 r |
!73 U+0073 s |
!74 U+0074 t |
!75 U+0075 u |
!76 U+0076 v |
!77 U+0077 w |
!78 U+0078 x |
!79 U+0079 y |
!7A U+007A z |
!7B U+007B braceleft |
!7C U+007C bar |
!7D U+007D braceright |
!7E U+007E asciitilde |
!7F U+007F .notdef |
!80 U+20AC Euro |
!82 U+201A quotesinglbase |
!83 U+0192 florin |
!84 U+201E quotedblbase |
!85 U+2026 ellipsis |
!86 U+2020 dagger |
!87 U+2021 daggerdbl |
!89 U+2030 perthousand |
!8B U+2039 guilsinglleft |
!91 U+2018 quoteleft |
!92 U+2019 quoteright |
!93 U+201C quotedblleft |
!94 U+201D quotedblright |
!95 U+2022 bullet |
!96 U+2013 endash |
!97 U+2014 emdash |
!99 U+2122 trademark |
!9B U+203A guilsinglright |
!A0 U+00A0 space |
!A1 U+0385 dieresistonos |
!A2 U+0386 Alphatonos |
!A3 U+00A3 sterling |
!A4 U+00A4 currency |
!A5 U+00A5 yen |
!A6 U+00A6 brokenbar |
!A7 U+00A7 section |
!A8 U+00A8 dieresis |
!A9 U+00A9 copyright |
!AB U+00AB guillemotleft |
!AC U+00AC logicalnot |
!AD U+00AD hyphen |
!AE U+00AE registered |
!AF U+2015 afii00208 |
!B0 U+00B0 degree |
!B1 U+00B1 plusminus |
!B2 U+00B2 twosuperior |
!B3 U+00B3 threesuperior |
!B4 U+0384 tonos |
!B5 U+00B5 mu |
!B6 U+00B6 paragraph |
!B7 U+00B7 periodcentered |
!B8 U+0388 Epsilontonos |
!B9 U+0389 Etatonos |
!BA U+038A Iotatonos |
!BB U+00BB guillemotright |
!BC U+038C Omicrontonos |
!BD U+00BD onehalf |
!BE U+038E Upsilontonos |
!BF U+038F Omegatonos |
!C0 U+0390 iotadieresistonos |
!C1 U+0391 Alpha |
!C2 U+0392 Beta |
!C3 U+0393 Gamma |
!C4 U+0394 Delta |
!C5 U+0395 Epsilon |
!C6 U+0396 Zeta |
!C7 U+0397 Eta |
!C8 U+0398 Theta |
!C9 U+0399 Iota |
!CA U+039A Kappa |
!CB U+039B Lambda |
!CC U+039C Mu |
!CD U+039D Nu |
!CE U+039E Xi |
!CF U+039F Omicron |
!D0 U+03A0 Pi |
!D1 U+03A1 Rho |
!D3 U+03A3 Sigma |
!D4 U+03A4 Tau |
!D5 U+03A5 Upsilon |
!D6 U+03A6 Phi |
!D7 U+03A7 Chi |
!D8 U+03A8 Psi |
!D9 U+03A9 Omega |
!DA U+03AA Iotadieresis |
!DB U+03AB Upsilondieresis |
!DC U+03AC alphatonos |
!DD U+03AD epsilontonos |
!DE U+03AE etatonos |
!DF U+03AF iotatonos |
!E0 U+03B0 upsilondieresistonos |
!E1 U+03B1 alpha |
!E2 U+03B2 beta |
!E3 U+03B3 gamma |
!E4 U+03B4 delta |
!E5 U+03B5 epsilon |
!E6 U+03B6 zeta |
!E7 U+03B7 eta |
!E8 U+03B8 theta |
!E9 U+03B9 iota |
!EA U+03BA kappa |
!EB U+03BB lambda |
!EC U+03BC mu |
!ED U+03BD nu |
!EE U+03BE xi |
!EF U+03BF omicron |
!F0 U+03C0 pi |
!F1 U+03C1 rho |
!F2 U+03C2 sigma1 |
!F3 U+03C3 sigma |
!F4 U+03C4 tau |
!F5 U+03C5 upsilon |
!F6 U+03C6 phi |
!F7 U+03C7 chi |
!F8 U+03C8 psi |
!F9 U+03C9 omega |
!FA U+03CA iotadieresis |
!FB U+03CB upsilondieresis |
!FC U+03CC omicrontonos |
!FD U+03CD upsilontonos |
!FE U+03CE omegatonos |
/web/acc/lib/fpdf16/font/makefont/makefont.php |
---|
0,0 → 1,419 |
<?php |
/******************************************************************************* |
* Utilitaire de génération de fichier de définition de police * |
* * |
* Version : 1.14 * |
* Date : 03/08/2008 * |
* Auteur : Olivier PLATHEY * |
*******************************************************************************/ |
function ReadMap($enc) |
{ |
//Read a map file |
$file=dirname(__FILE__).'/'.strtolower($enc).'.map'; |
$a=file($file); |
if(empty($a)) |
die('<b>Error:</b> encoding not found: '.$enc); |
$cc2gn=array(); |
foreach($a as $l) |
{ |
if($l[0]=='!') |
{ |
$e=preg_split('/[ \\t]+/',rtrim($l)); |
$cc=hexdec(substr($e[0],1)); |
$gn=$e[2]; |
$cc2gn[$cc]=$gn; |
} |
} |
for($i=0;$i<=255;$i++) |
{ |
if(!isset($cc2gn[$i])) |
$cc2gn[$i]='.notdef'; |
} |
return $cc2gn; |
} |
function ReadAFM($file, &$map) |
{ |
//Read a font metric file |
$a=file($file); |
if(empty($a)) |
die('File not found'); |
$widths=array(); |
$fm=array(); |
$fix=array('Edot'=>'Edotaccent','edot'=>'edotaccent','Idot'=>'Idotaccent','Zdot'=>'Zdotaccent','zdot'=>'zdotaccent', |
'Odblacute'=>'Ohungarumlaut','odblacute'=>'ohungarumlaut','Udblacute'=>'Uhungarumlaut','udblacute'=>'uhungarumlaut', |
'Gcedilla'=>'Gcommaaccent','gcedilla'=>'gcommaaccent','Kcedilla'=>'Kcommaaccent','kcedilla'=>'kcommaaccent', |
'Lcedilla'=>'Lcommaaccent','lcedilla'=>'lcommaaccent','Ncedilla'=>'Ncommaaccent','ncedilla'=>'ncommaaccent', |
'Rcedilla'=>'Rcommaaccent','rcedilla'=>'rcommaaccent','Scedilla'=>'Scommaaccent','scedilla'=>'scommaaccent', |
'Tcedilla'=>'Tcommaaccent','tcedilla'=>'tcommaaccent','Dslash'=>'Dcroat','dslash'=>'dcroat','Dmacron'=>'Dcroat','dmacron'=>'dcroat', |
'combininggraveaccent'=>'gravecomb','combininghookabove'=>'hookabovecomb','combiningtildeaccent'=>'tildecomb', |
'combiningacuteaccent'=>'acutecomb','combiningdotbelow'=>'dotbelowcomb','dongsign'=>'dong'); |
foreach($a as $l) |
{ |
$e=explode(' ',rtrim($l)); |
if(count($e)<2) |
continue; |
$code=$e[0]; |
$param=$e[1]; |
if($code=='C') |
{ |
//Character metrics |
$cc=(int)$e[1]; |
$w=$e[4]; |
$gn=$e[7]; |
if(substr($gn,-4)=='20AC') |
$gn='Euro'; |
if(isset($fix[$gn])) |
{ |
//Fix incorrect glyph name |
foreach($map as $c=>$n) |
{ |
if($n==$fix[$gn]) |
$map[$c]=$gn; |
} |
} |
if(empty($map)) |
{ |
//Symbolic font: use built-in encoding |
$widths[$cc]=$w; |
} |
else |
{ |
$widths[$gn]=$w; |
if($gn=='X') |
$fm['CapXHeight']=$e[13]; |
} |
if($gn=='.notdef') |
$fm['MissingWidth']=$w; |
} |
elseif($code=='FontName') |
$fm['FontName']=$param; |
elseif($code=='Weight') |
$fm['Weight']=$param; |
elseif($code=='ItalicAngle') |
$fm['ItalicAngle']=(double)$param; |
elseif($code=='Ascender') |
$fm['Ascender']=(int)$param; |
elseif($code=='Descender') |
$fm['Descender']=(int)$param; |
elseif($code=='UnderlineThickness') |
$fm['UnderlineThickness']=(int)$param; |
elseif($code=='UnderlinePosition') |
$fm['UnderlinePosition']=(int)$param; |
elseif($code=='IsFixedPitch') |
$fm['IsFixedPitch']=($param=='true'); |
elseif($code=='FontBBox') |
$fm['FontBBox']=array($e[1],$e[2],$e[3],$e[4]); |
elseif($code=='CapHeight') |
$fm['CapHeight']=(int)$param; |
elseif($code=='StdVW') |
$fm['StdVW']=(int)$param; |
} |
if(!isset($fm['FontName'])) |
die('FontName not found'); |
if(!empty($map)) |
{ |
if(!isset($widths['.notdef'])) |
$widths['.notdef']=600; |
if(!isset($widths['Delta']) && isset($widths['increment'])) |
$widths['Delta']=$widths['increment']; |
//Order widths according to map |
for($i=0;$i<=255;$i++) |
{ |
if(!isset($widths[$map[$i]])) |
{ |
echo '<b>Warning:</b> character '.$map[$i].' is missing<br>'; |
$widths[$i]=$widths['.notdef']; |
} |
else |
$widths[$i]=$widths[$map[$i]]; |
} |
} |
$fm['Widths']=$widths; |
return $fm; |
} |
function MakeFontDescriptor($fm, $symbolic) |
{ |
//Ascent |
$asc=(isset($fm['Ascender']) ? $fm['Ascender'] : 1000); |
$fd="array('Ascent'=>".$asc; |
//Descent |
$desc=(isset($fm['Descender']) ? $fm['Descender'] : -200); |
$fd.=",'Descent'=>".$desc; |
//CapHeight |
if(isset($fm['CapHeight'])) |
$ch=$fm['CapHeight']; |
elseif(isset($fm['CapXHeight'])) |
$ch=$fm['CapXHeight']; |
else |
$ch=$asc; |
$fd.=",'CapHeight'=>".$ch; |
//Flags |
$flags=0; |
if(isset($fm['IsFixedPitch']) && $fm['IsFixedPitch']) |
$flags+=1<<0; |
if($symbolic) |
$flags+=1<<2; |
if(!$symbolic) |
$flags+=1<<5; |
if(isset($fm['ItalicAngle']) && $fm['ItalicAngle']!=0) |
$flags+=1<<6; |
$fd.=",'Flags'=>".$flags; |
//FontBBox |
if(isset($fm['FontBBox'])) |
$fbb=$fm['FontBBox']; |
else |
$fbb=array(0,$desc-100,1000,$asc+100); |
$fd.=",'FontBBox'=>'[".$fbb[0].' '.$fbb[1].' '.$fbb[2].' '.$fbb[3]."]'"; |
//ItalicAngle |
$ia=(isset($fm['ItalicAngle']) ? $fm['ItalicAngle'] : 0); |
$fd.=",'ItalicAngle'=>".$ia; |
//StemV |
if(isset($fm['StdVW'])) |
$stemv=$fm['StdVW']; |
elseif(isset($fm['Weight']) && preg_match('/bold|black/i',$fm['Weight'])) |
$stemv=120; |
else |
$stemv=70; |
$fd.=",'StemV'=>".$stemv; |
//MissingWidth |
if(isset($fm['MissingWidth'])) |
$fd.=",'MissingWidth'=>".$fm['MissingWidth']; |
$fd.=')'; |
return $fd; |
} |
function MakeWidthArray($fm) |
{ |
//Make character width array |
$s="array(\n\t"; |
$cw=$fm['Widths']; |
for($i=0;$i<=255;$i++) |
{ |
if(chr($i)=="'") |
$s.="'\\''"; |
elseif(chr($i)=="\\") |
$s.="'\\\\'"; |
elseif($i>=32 && $i<=126) |
$s.="'".chr($i)."'"; |
else |
$s.="chr($i)"; |
$s.='=>'.$fm['Widths'][$i]; |
if($i<255) |
$s.=','; |
if(($i+1)%22==0) |
$s.="\n\t"; |
} |
$s.=')'; |
return $s; |
} |
function MakeFontEncoding($map) |
{ |
//Build differences from reference encoding |
$ref=ReadMap('cp1252'); |
$s=''; |
$last=0; |
for($i=32;$i<=255;$i++) |
{ |
if($map[$i]!=$ref[$i]) |
{ |
if($i!=$last+1) |
$s.=$i.' '; |
$last=$i; |
$s.='/'.$map[$i].' '; |
} |
} |
return rtrim($s); |
} |
function SaveToFile($file, $s, $mode) |
{ |
$f=fopen($file,'w'.$mode); |
if(!$f) |
die('Can\'t write to file '.$file); |
fwrite($f,$s,strlen($s)); |
fclose($f); |
} |
function ReadShort($f) |
{ |
$a=unpack('n1n',fread($f,2)); |
return $a['n']; |
} |
function ReadLong($f) |
{ |
$a=unpack('N1N',fread($f,4)); |
return $a['N']; |
} |
function CheckTTF($file) |
{ |
//Check if font license allows embedding |
$f=fopen($file,'rb'); |
if(!$f) |
die('<b>Error:</b> Can\'t open '.$file); |
//Extract number of tables |
fseek($f,4,SEEK_CUR); |
$nb=ReadShort($f); |
fseek($f,6,SEEK_CUR); |
//Seek OS/2 table |
$found=false; |
for($i=0;$i<$nb;$i++) |
{ |
if(fread($f,4)=='OS/2') |
{ |
$found=true; |
break; |
} |
fseek($f,12,SEEK_CUR); |
} |
if(!$found) |
{ |
fclose($f); |
return; |
} |
fseek($f,4,SEEK_CUR); |
$offset=ReadLong($f); |
fseek($f,$offset,SEEK_SET); |
//Extract fsType flags |
fseek($f,8,SEEK_CUR); |
$fsType=ReadShort($f); |
$rl=($fsType & 0x02)!=0; |
$pp=($fsType & 0x04)!=0; |
$e=($fsType & 0x08)!=0; |
fclose($f); |
if($rl && !$pp && !$e) |
echo '<b>Warning:</b> font license does not allow embedding'; |
} |
/******************************************************************************* |
* fontfile : chemin du fichier TTF (ou chaîne vide si pas d'incorporation) * |
* afmfile : chemin du fichier AFM * |
* enc : encodage (ou chaîne vide si la police est symbolique) * |
* patch : patch optionnel pour l'encodage * |
* type : type de la police si fontfile est vide * |
*******************************************************************************/ |
function MakeFont($fontfile, $afmfile, $enc='cp1252', $patch=array(), $type='TrueType') |
{ |
//Generate a font definition file |
if(get_magic_quotes_runtime()) |
@set_magic_quotes_runtime(0); |
ini_set('auto_detect_line_endings','1'); |
if($enc) |
{ |
$map=ReadMap($enc); |
foreach($patch as $cc=>$gn) |
$map[$cc]=$gn; |
} |
else |
$map=array(); |
if(!file_exists($afmfile)) |
die('<b>Error:</b> AFM file not found: '.$afmfile); |
$fm=ReadAFM($afmfile,$map); |
if($enc) |
$diff=MakeFontEncoding($map); |
else |
$diff=''; |
$fd=MakeFontDescriptor($fm,empty($map)); |
//Find font type |
if($fontfile) |
{ |
$ext=strtolower(substr($fontfile,-3)); |
if($ext=='ttf') |
$type='TrueType'; |
elseif($ext=='pfb') |
$type='Type1'; |
else |
die('<b>Error:</b> unrecognized font file extension: '.$ext); |
} |
else |
{ |
if($type!='TrueType' && $type!='Type1') |
die('<b>Error:</b> incorrect font type: '.$type); |
} |
//Start generation |
$s='<?php'."\n"; |
$s.='$type=\''.$type."';\n"; |
$s.='$name=\''.$fm['FontName']."';\n"; |
$s.='$desc='.$fd.";\n"; |
if(!isset($fm['UnderlinePosition'])) |
$fm['UnderlinePosition']=-100; |
if(!isset($fm['UnderlineThickness'])) |
$fm['UnderlineThickness']=50; |
$s.='$up='.$fm['UnderlinePosition'].";\n"; |
$s.='$ut='.$fm['UnderlineThickness'].";\n"; |
$w=MakeWidthArray($fm); |
$s.='$cw='.$w.";\n"; |
$s.='$enc=\''.$enc."';\n"; |
$s.='$diff=\''.$diff."';\n"; |
$basename=substr(basename($afmfile),0,-4); |
if($fontfile) |
{ |
//Embedded font |
if(!file_exists($fontfile)) |
die('<b>Error:</b> font file not found: '.$fontfile); |
if($type=='TrueType') |
CheckTTF($fontfile); |
$f=fopen($fontfile,'rb'); |
if(!$f) |
die('<b>Error:</b> Can\'t open '.$fontfile); |
$file=fread($f,filesize($fontfile)); |
fclose($f); |
if($type=='Type1') |
{ |
//Find first two sections and discard third one |
$header=(ord($file[0])==128); |
if($header) |
{ |
//Strip first binary header |
$file=substr($file,6); |
} |
$pos=strpos($file,'eexec'); |
if(!$pos) |
die('<b>Error:</b> font file does not seem to be valid Type1'); |
$size1=$pos+6; |
if($header && ord($file[$size1])==128) |
{ |
//Strip second binary header |
$file=substr($file,0,$size1).substr($file,$size1+6); |
} |
$pos=strpos($file,'00000000'); |
if(!$pos) |
die('<b>Error:</b> font file does not seem to be valid Type1'); |
$size2=$pos-$size1; |
$file=substr($file,0,$size1+$size2); |
} |
if(function_exists('gzcompress')) |
{ |
$cmp=$basename.'.z'; |
SaveToFile($cmp,gzcompress($file),'b'); |
$s.='$file=\''.$cmp."';\n"; |
echo 'Font file compressed ('.$cmp.')<br>'; |
} |
else |
{ |
$s.='$file=\''.basename($fontfile)."';\n"; |
echo '<b>Notice:</b> font file could not be compressed (zlib extension not available)<br>'; |
} |
if($type=='Type1') |
{ |
$s.='$size1='.$size1.";\n"; |
$s.='$size2='.$size2.";\n"; |
} |
else |
$s.='$originalsize='.filesize($fontfile).";\n"; |
} |
else |
{ |
//Not embedded font |
$s.='$file='."'';\n"; |
} |
$s.="?>\n"; |
SaveToFile($basename.'.php',$s,'t'); |
echo 'Font definition file generated ('.$basename.'.php'.')<br>'; |
} |
?> |
/web/acc/lib/fpdf16/font/makefont/cp1254.map |
---|
0,0 → 1,249 |
!00 U+0000 .notdef |
!01 U+0001 .notdef |
!02 U+0002 .notdef |
!03 U+0003 .notdef |
!04 U+0004 .notdef |
!05 U+0005 .notdef |
!06 U+0006 .notdef |
!07 U+0007 .notdef |
!08 U+0008 .notdef |
!09 U+0009 .notdef |
!0A U+000A .notdef |
!0B U+000B .notdef |
!0C U+000C .notdef |
!0D U+000D .notdef |
!0E U+000E .notdef |
!0F U+000F .notdef |
!10 U+0010 .notdef |
!11 U+0011 .notdef |
!12 U+0012 .notdef |
!13 U+0013 .notdef |
!14 U+0014 .notdef |
!15 U+0015 .notdef |
!16 U+0016 .notdef |
!17 U+0017 .notdef |
!18 U+0018 .notdef |
!19 U+0019 .notdef |
!1A U+001A .notdef |
!1B U+001B .notdef |
!1C U+001C .notdef |
!1D U+001D .notdef |
!1E U+001E .notdef |
!1F U+001F .notdef |
!20 U+0020 space |
!21 U+0021 exclam |
!22 U+0022 quotedbl |
!23 U+0023 numbersign |
!24 U+0024 dollar |
!25 U+0025 percent |
!26 U+0026 ampersand |
!27 U+0027 quotesingle |
!28 U+0028 parenleft |
!29 U+0029 parenright |
!2A U+002A asterisk |
!2B U+002B plus |
!2C U+002C comma |
!2D U+002D hyphen |
!2E U+002E period |
!2F U+002F slash |
!30 U+0030 zero |
!31 U+0031 one |
!32 U+0032 two |
!33 U+0033 three |
!34 U+0034 four |
!35 U+0035 five |
!36 U+0036 six |
!37 U+0037 seven |
!38 U+0038 eight |
!39 U+0039 nine |
!3A U+003A colon |
!3B U+003B semicolon |
!3C U+003C less |
!3D U+003D equal |
!3E U+003E greater |
!3F U+003F question |
!40 U+0040 at |
!41 U+0041 A |
!42 U+0042 B |
!43 U+0043 C |
!44 U+0044 D |
!45 U+0045 E |
!46 U+0046 F |
!47 U+0047 G |
!48 U+0048 H |
!49 U+0049 I |
!4A U+004A J |
!4B U+004B K |
!4C U+004C L |
!4D U+004D M |
!4E U+004E N |
!4F U+004F O |
!50 U+0050 P |
!51 U+0051 Q |
!52 U+0052 R |
!53 U+0053 S |
!54 U+0054 T |
!55 U+0055 U |
!56 U+0056 V |
!57 U+0057 W |
!58 U+0058 X |
!59 U+0059 Y |
!5A U+005A Z |
!5B U+005B bracketleft |
!5C U+005C backslash |
!5D U+005D bracketright |
!5E U+005E asciicircum |
!5F U+005F underscore |
!60 U+0060 grave |
!61 U+0061 a |
!62 U+0062 b |
!63 U+0063 c |
!64 U+0064 d |
!65 U+0065 e |
!66 U+0066 f |
!67 U+0067 g |
!68 U+0068 h |
!69 U+0069 i |
!6A U+006A j |
!6B U+006B k |
!6C U+006C l |
!6D U+006D m |
!6E U+006E n |
!6F U+006F o |
!70 U+0070 p |
!71 U+0071 q |
!72 U+0072 r |
!73 U+0073 s |
!74 U+0074 t |
!75 U+0075 u |
!76 U+0076 v |
!77 U+0077 w |
!78 U+0078 x |
!79 U+0079 y |
!7A U+007A z |
!7B U+007B braceleft |
!7C U+007C bar |
!7D U+007D braceright |
!7E U+007E asciitilde |
!7F U+007F .notdef |
!80 U+20AC Euro |
!82 U+201A quotesinglbase |
!83 U+0192 florin |
!84 U+201E quotedblbase |
!85 U+2026 ellipsis |
!86 U+2020 dagger |
!87 U+2021 daggerdbl |
!88 U+02C6 circumflex |
!89 U+2030 perthousand |
!8A U+0160 Scaron |
!8B U+2039 guilsinglleft |
!8C U+0152 OE |
!91 U+2018 quoteleft |
!92 U+2019 quoteright |
!93 U+201C quotedblleft |
!94 U+201D quotedblright |
!95 U+2022 bullet |
!96 U+2013 endash |
!97 U+2014 emdash |
!98 U+02DC tilde |
!99 U+2122 trademark |
!9A U+0161 scaron |
!9B U+203A guilsinglright |
!9C U+0153 oe |
!9F U+0178 Ydieresis |
!A0 U+00A0 space |
!A1 U+00A1 exclamdown |
!A2 U+00A2 cent |
!A3 U+00A3 sterling |
!A4 U+00A4 currency |
!A5 U+00A5 yen |
!A6 U+00A6 brokenbar |
!A7 U+00A7 section |
!A8 U+00A8 dieresis |
!A9 U+00A9 copyright |
!AA U+00AA ordfeminine |
!AB U+00AB guillemotleft |
!AC U+00AC logicalnot |
!AD U+00AD hyphen |
!AE U+00AE registered |
!AF U+00AF macron |
!B0 U+00B0 degree |
!B1 U+00B1 plusminus |
!B2 U+00B2 twosuperior |
!B3 U+00B3 threesuperior |
!B4 U+00B4 acute |
!B5 U+00B5 mu |
!B6 U+00B6 paragraph |
!B7 U+00B7 periodcentered |
!B8 U+00B8 cedilla |
!B9 U+00B9 onesuperior |
!BA U+00BA ordmasculine |
!BB U+00BB guillemotright |
!BC U+00BC onequarter |
!BD U+00BD onehalf |
!BE U+00BE threequarters |
!BF U+00BF questiondown |
!C0 U+00C0 Agrave |
!C1 U+00C1 Aacute |
!C2 U+00C2 Acircumflex |
!C3 U+00C3 Atilde |
!C4 U+00C4 Adieresis |
!C5 U+00C5 Aring |
!C6 U+00C6 AE |
!C7 U+00C7 Ccedilla |
!C8 U+00C8 Egrave |
!C9 U+00C9 Eacute |
!CA U+00CA Ecircumflex |
!CB U+00CB Edieresis |
!CC U+00CC Igrave |
!CD U+00CD Iacute |
!CE U+00CE Icircumflex |
!CF U+00CF Idieresis |
!D0 U+011E Gbreve |
!D1 U+00D1 Ntilde |
!D2 U+00D2 Ograve |
!D3 U+00D3 Oacute |
!D4 U+00D4 Ocircumflex |
!D5 U+00D5 Otilde |
!D6 U+00D6 Odieresis |
!D7 U+00D7 multiply |
!D8 U+00D8 Oslash |
!D9 U+00D9 Ugrave |
!DA U+00DA Uacute |
!DB U+00DB Ucircumflex |
!DC U+00DC Udieresis |
!DD U+0130 Idotaccent |
!DE U+015E Scedilla |
!DF U+00DF germandbls |
!E0 U+00E0 agrave |
!E1 U+00E1 aacute |
!E2 U+00E2 acircumflex |
!E3 U+00E3 atilde |
!E4 U+00E4 adieresis |
!E5 U+00E5 aring |
!E6 U+00E6 ae |
!E7 U+00E7 ccedilla |
!E8 U+00E8 egrave |
!E9 U+00E9 eacute |
!EA U+00EA ecircumflex |
!EB U+00EB edieresis |
!EC U+00EC igrave |
!ED U+00ED iacute |
!EE U+00EE icircumflex |
!EF U+00EF idieresis |
!F0 U+011F gbreve |
!F1 U+00F1 ntilde |
!F2 U+00F2 ograve |
!F3 U+00F3 oacute |
!F4 U+00F4 ocircumflex |
!F5 U+00F5 otilde |
!F6 U+00F6 odieresis |
!F7 U+00F7 divide |
!F8 U+00F8 oslash |
!F9 U+00F9 ugrave |
!FA U+00FA uacute |
!FB U+00FB ucircumflex |
!FC U+00FC udieresis |
!FD U+0131 dotlessi |
!FE U+015F scedilla |
!FF U+00FF ydieresis |
/web/acc/lib/fpdf16/font/makefont/cp1255.map |
---|
0,0 → 1,233 |
!00 U+0000 .notdef |
!01 U+0001 .notdef |
!02 U+0002 .notdef |
!03 U+0003 .notdef |
!04 U+0004 .notdef |
!05 U+0005 .notdef |
!06 U+0006 .notdef |
!07 U+0007 .notdef |
!08 U+0008 .notdef |
!09 U+0009 .notdef |
!0A U+000A .notdef |
!0B U+000B .notdef |
!0C U+000C .notdef |
!0D U+000D .notdef |
!0E U+000E .notdef |
!0F U+000F .notdef |
!10 U+0010 .notdef |
!11 U+0011 .notdef |
!12 U+0012 .notdef |
!13 U+0013 .notdef |
!14 U+0014 .notdef |
!15 U+0015 .notdef |
!16 U+0016 .notdef |
!17 U+0017 .notdef |
!18 U+0018 .notdef |
!19 U+0019 .notdef |
!1A U+001A .notdef |
!1B U+001B .notdef |
!1C U+001C .notdef |
!1D U+001D .notdef |
!1E U+001E .notdef |
!1F U+001F .notdef |
!20 U+0020 space |
!21 U+0021 exclam |
!22 U+0022 quotedbl |
!23 U+0023 numbersign |
!24 U+0024 dollar |
!25 U+0025 percent |
!26 U+0026 ampersand |
!27 U+0027 quotesingle |
!28 U+0028 parenleft |
!29 U+0029 parenright |
!2A U+002A asterisk |
!2B U+002B plus |
!2C U+002C comma |
!2D U+002D hyphen |
!2E U+002E period |
!2F U+002F slash |
!30 U+0030 zero |
!31 U+0031 one |
!32 U+0032 two |
!33 U+0033 three |
!34 U+0034 four |
!35 U+0035 five |
!36 U+0036 six |
!37 U+0037 seven |
!38 U+0038 eight |
!39 U+0039 nine |
!3A U+003A colon |
!3B U+003B semicolon |
!3C U+003C less |
!3D U+003D equal |
!3E U+003E greater |
!3F U+003F question |
!40 U+0040 at |
!41 U+0041 A |
!42 U+0042 B |
!43 U+0043 C |
!44 U+0044 D |
!45 U+0045 E |
!46 U+0046 F |
!47 U+0047 G |
!48 U+0048 H |
!49 U+0049 I |
!4A U+004A J |
!4B U+004B K |
!4C U+004C L |
!4D U+004D M |
!4E U+004E N |
!4F U+004F O |
!50 U+0050 P |
!51 U+0051 Q |
!52 U+0052 R |
!53 U+0053 S |
!54 U+0054 T |
!55 U+0055 U |
!56 U+0056 V |
!57 U+0057 W |
!58 U+0058 X |
!59 U+0059 Y |
!5A U+005A Z |
!5B U+005B bracketleft |
!5C U+005C backslash |
!5D U+005D bracketright |
!5E U+005E asciicircum |
!5F U+005F underscore |
!60 U+0060 grave |
!61 U+0061 a |
!62 U+0062 b |
!63 U+0063 c |
!64 U+0064 d |
!65 U+0065 e |
!66 U+0066 f |
!67 U+0067 g |
!68 U+0068 h |
!69 U+0069 i |
!6A U+006A j |
!6B U+006B k |
!6C U+006C l |
!6D U+006D m |
!6E U+006E n |
!6F U+006F o |
!70 U+0070 p |
!71 U+0071 q |
!72 U+0072 r |
!73 U+0073 s |
!74 U+0074 t |
!75 U+0075 u |
!76 U+0076 v |
!77 U+0077 w |
!78 U+0078 x |
!79 U+0079 y |
!7A U+007A z |
!7B U+007B braceleft |
!7C U+007C bar |
!7D U+007D braceright |
!7E U+007E asciitilde |
!7F U+007F .notdef |
!80 U+20AC Euro |
!82 U+201A quotesinglbase |
!83 U+0192 florin |
!84 U+201E quotedblbase |
!85 U+2026 ellipsis |
!86 U+2020 dagger |
!87 U+2021 daggerdbl |
!88 U+02C6 circumflex |
!89 U+2030 perthousand |
!8B U+2039 guilsinglleft |
!91 U+2018 quoteleft |
!92 U+2019 quoteright |
!93 U+201C quotedblleft |
!94 U+201D quotedblright |
!95 U+2022 bullet |
!96 U+2013 endash |
!97 U+2014 emdash |
!98 U+02DC tilde |
!99 U+2122 trademark |
!9B U+203A guilsinglright |
!A0 U+00A0 space |
!A1 U+00A1 exclamdown |
!A2 U+00A2 cent |
!A3 U+00A3 sterling |
!A4 U+20AA afii57636 |
!A5 U+00A5 yen |
!A6 U+00A6 brokenbar |
!A7 U+00A7 section |
!A8 U+00A8 dieresis |
!A9 U+00A9 copyright |
!AA U+00D7 multiply |
!AB U+00AB guillemotleft |
!AC U+00AC logicalnot |
!AD U+00AD sfthyphen |
!AE U+00AE registered |
!AF U+00AF macron |
!B0 U+00B0 degree |
!B1 U+00B1 plusminus |
!B2 U+00B2 twosuperior |
!B3 U+00B3 threesuperior |
!B4 U+00B4 acute |
!B5 U+00B5 mu |
!B6 U+00B6 paragraph |
!B7 U+00B7 middot |
!B8 U+00B8 cedilla |
!B9 U+00B9 onesuperior |
!BA U+00F7 divide |
!BB U+00BB guillemotright |
!BC U+00BC onequarter |
!BD U+00BD onehalf |
!BE U+00BE threequarters |
!BF U+00BF questiondown |
!C0 U+05B0 afii57799 |
!C1 U+05B1 afii57801 |
!C2 U+05B2 afii57800 |
!C3 U+05B3 afii57802 |
!C4 U+05B4 afii57793 |
!C5 U+05B5 afii57794 |
!C6 U+05B6 afii57795 |
!C7 U+05B7 afii57798 |
!C8 U+05B8 afii57797 |
!C9 U+05B9 afii57806 |
!CB U+05BB afii57796 |
!CC U+05BC afii57807 |
!CD U+05BD afii57839 |
!CE U+05BE afii57645 |
!CF U+05BF afii57841 |
!D0 U+05C0 afii57842 |
!D1 U+05C1 afii57804 |
!D2 U+05C2 afii57803 |
!D3 U+05C3 afii57658 |
!D4 U+05F0 afii57716 |
!D5 U+05F1 afii57717 |
!D6 U+05F2 afii57718 |
!D7 U+05F3 gereshhebrew |
!D8 U+05F4 gershayimhebrew |
!E0 U+05D0 afii57664 |
!E1 U+05D1 afii57665 |
!E2 U+05D2 afii57666 |
!E3 U+05D3 afii57667 |
!E4 U+05D4 afii57668 |
!E5 U+05D5 afii57669 |
!E6 U+05D6 afii57670 |
!E7 U+05D7 afii57671 |
!E8 U+05D8 afii57672 |
!E9 U+05D9 afii57673 |
!EA U+05DA afii57674 |
!EB U+05DB afii57675 |
!EC U+05DC afii57676 |
!ED U+05DD afii57677 |
!EE U+05DE afii57678 |
!EF U+05DF afii57679 |
!F0 U+05E0 afii57680 |
!F1 U+05E1 afii57681 |
!F2 U+05E2 afii57682 |
!F3 U+05E3 afii57683 |
!F4 U+05E4 afii57684 |
!F5 U+05E5 afii57685 |
!F6 U+05E6 afii57686 |
!F7 U+05E7 afii57687 |
!F8 U+05E8 afii57688 |
!F9 U+05E9 afii57689 |
!FA U+05EA afii57690 |
!FD U+200E afii299 |
!FE U+200F afii300 |
/web/acc/lib/fpdf16/font/makefont/cp1257.map |
---|
0,0 → 1,244 |
!00 U+0000 .notdef |
!01 U+0001 .notdef |
!02 U+0002 .notdef |
!03 U+0003 .notdef |
!04 U+0004 .notdef |
!05 U+0005 .notdef |
!06 U+0006 .notdef |
!07 U+0007 .notdef |
!08 U+0008 .notdef |
!09 U+0009 .notdef |
!0A U+000A .notdef |
!0B U+000B .notdef |
!0C U+000C .notdef |
!0D U+000D .notdef |
!0E U+000E .notdef |
!0F U+000F .notdef |
!10 U+0010 .notdef |
!11 U+0011 .notdef |
!12 U+0012 .notdef |
!13 U+0013 .notdef |
!14 U+0014 .notdef |
!15 U+0015 .notdef |
!16 U+0016 .notdef |
!17 U+0017 .notdef |
!18 U+0018 .notdef |
!19 U+0019 .notdef |
!1A U+001A .notdef |
!1B U+001B .notdef |
!1C U+001C .notdef |
!1D U+001D .notdef |
!1E U+001E .notdef |
!1F U+001F .notdef |
!20 U+0020 space |
!21 U+0021 exclam |
!22 U+0022 quotedbl |
!23 U+0023 numbersign |
!24 U+0024 dollar |
!25 U+0025 percent |
!26 U+0026 ampersand |
!27 U+0027 quotesingle |
!28 U+0028 parenleft |
!29 U+0029 parenright |
!2A U+002A asterisk |
!2B U+002B plus |
!2C U+002C comma |
!2D U+002D hyphen |
!2E U+002E period |
!2F U+002F slash |
!30 U+0030 zero |
!31 U+0031 one |
!32 U+0032 two |
!33 U+0033 three |
!34 U+0034 four |
!35 U+0035 five |
!36 U+0036 six |
!37 U+0037 seven |
!38 U+0038 eight |
!39 U+0039 nine |
!3A U+003A colon |
!3B U+003B semicolon |
!3C U+003C less |
!3D U+003D equal |
!3E U+003E greater |
!3F U+003F question |
!40 U+0040 at |
!41 U+0041 A |
!42 U+0042 B |
!43 U+0043 C |
!44 U+0044 D |
!45 U+0045 E |
!46 U+0046 F |
!47 U+0047 G |
!48 U+0048 H |
!49 U+0049 I |
!4A U+004A J |
!4B U+004B K |
!4C U+004C L |
!4D U+004D M |
!4E U+004E N |
!4F U+004F O |
!50 U+0050 P |
!51 U+0051 Q |
!52 U+0052 R |
!53 U+0053 S |
!54 U+0054 T |
!55 U+0055 U |
!56 U+0056 V |
!57 U+0057 W |
!58 U+0058 X |
!59 U+0059 Y |
!5A U+005A Z |
!5B U+005B bracketleft |
!5C U+005C backslash |
!5D U+005D bracketright |
!5E U+005E asciicircum |
!5F U+005F underscore |
!60 U+0060 grave |
!61 U+0061 a |
!62 U+0062 b |
!63 U+0063 c |
!64 U+0064 d |
!65 U+0065 e |
!66 U+0066 f |
!67 U+0067 g |
!68 U+0068 h |
!69 U+0069 i |
!6A U+006A j |
!6B U+006B k |
!6C U+006C l |
!6D U+006D m |
!6E U+006E n |
!6F U+006F o |
!70 U+0070 p |
!71 U+0071 q |
!72 U+0072 r |
!73 U+0073 s |
!74 U+0074 t |
!75 U+0075 u |
!76 U+0076 v |
!77 U+0077 w |
!78 U+0078 x |
!79 U+0079 y |
!7A U+007A z |
!7B U+007B braceleft |
!7C U+007C bar |
!7D U+007D braceright |
!7E U+007E asciitilde |
!7F U+007F .notdef |
!80 U+20AC Euro |
!82 U+201A quotesinglbase |
!84 U+201E quotedblbase |
!85 U+2026 ellipsis |
!86 U+2020 dagger |
!87 U+2021 daggerdbl |
!89 U+2030 perthousand |
!8B U+2039 guilsinglleft |
!8D U+00A8 dieresis |
!8E U+02C7 caron |
!8F U+00B8 cedilla |
!91 U+2018 quoteleft |
!92 U+2019 quoteright |
!93 U+201C quotedblleft |
!94 U+201D quotedblright |
!95 U+2022 bullet |
!96 U+2013 endash |
!97 U+2014 emdash |
!99 U+2122 trademark |
!9B U+203A guilsinglright |
!9D U+00AF macron |
!9E U+02DB ogonek |
!A0 U+00A0 space |
!A2 U+00A2 cent |
!A3 U+00A3 sterling |
!A4 U+00A4 currency |
!A6 U+00A6 brokenbar |
!A7 U+00A7 section |
!A8 U+00D8 Oslash |
!A9 U+00A9 copyright |
!AA U+0156 Rcommaaccent |
!AB U+00AB guillemotleft |
!AC U+00AC logicalnot |
!AD U+00AD hyphen |
!AE U+00AE registered |
!AF U+00C6 AE |
!B0 U+00B0 degree |
!B1 U+00B1 plusminus |
!B2 U+00B2 twosuperior |
!B3 U+00B3 threesuperior |
!B4 U+00B4 acute |
!B5 U+00B5 mu |
!B6 U+00B6 paragraph |
!B7 U+00B7 periodcentered |
!B8 U+00F8 oslash |
!B9 U+00B9 onesuperior |
!BA U+0157 rcommaaccent |
!BB U+00BB guillemotright |
!BC U+00BC onequarter |
!BD U+00BD onehalf |
!BE U+00BE threequarters |
!BF U+00E6 ae |
!C0 U+0104 Aogonek |
!C1 U+012E Iogonek |
!C2 U+0100 Amacron |
!C3 U+0106 Cacute |
!C4 U+00C4 Adieresis |
!C5 U+00C5 Aring |
!C6 U+0118 Eogonek |
!C7 U+0112 Emacron |
!C8 U+010C Ccaron |
!C9 U+00C9 Eacute |
!CA U+0179 Zacute |
!CB U+0116 Edotaccent |
!CC U+0122 Gcommaaccent |
!CD U+0136 Kcommaaccent |
!CE U+012A Imacron |
!CF U+013B Lcommaaccent |
!D0 U+0160 Scaron |
!D1 U+0143 Nacute |
!D2 U+0145 Ncommaaccent |
!D3 U+00D3 Oacute |
!D4 U+014C Omacron |
!D5 U+00D5 Otilde |
!D6 U+00D6 Odieresis |
!D7 U+00D7 multiply |
!D8 U+0172 Uogonek |
!D9 U+0141 Lslash |
!DA U+015A Sacute |
!DB U+016A Umacron |
!DC U+00DC Udieresis |
!DD U+017B Zdotaccent |
!DE U+017D Zcaron |
!DF U+00DF germandbls |
!E0 U+0105 aogonek |
!E1 U+012F iogonek |
!E2 U+0101 amacron |
!E3 U+0107 cacute |
!E4 U+00E4 adieresis |
!E5 U+00E5 aring |
!E6 U+0119 eogonek |
!E7 U+0113 emacron |
!E8 U+010D ccaron |
!E9 U+00E9 eacute |
!EA U+017A zacute |
!EB U+0117 edotaccent |
!EC U+0123 gcommaaccent |
!ED U+0137 kcommaaccent |
!EE U+012B imacron |
!EF U+013C lcommaaccent |
!F0 U+0161 scaron |
!F1 U+0144 nacute |
!F2 U+0146 ncommaaccent |
!F3 U+00F3 oacute |
!F4 U+014D omacron |
!F5 U+00F5 otilde |
!F6 U+00F6 odieresis |
!F7 U+00F7 divide |
!F8 U+0173 uogonek |
!F9 U+0142 lslash |
!FA U+015B sacute |
!FB U+016B umacron |
!FC U+00FC udieresis |
!FD U+017C zdotaccent |
!FE U+017E zcaron |
!FF U+02D9 dotaccent |
/web/acc/lib/fpdf16/font/makefont/cp1258.map |
---|
0,0 → 1,247 |
!00 U+0000 .notdef |
!01 U+0001 .notdef |
!02 U+0002 .notdef |
!03 U+0003 .notdef |
!04 U+0004 .notdef |
!05 U+0005 .notdef |
!06 U+0006 .notdef |
!07 U+0007 .notdef |
!08 U+0008 .notdef |
!09 U+0009 .notdef |
!0A U+000A .notdef |
!0B U+000B .notdef |
!0C U+000C .notdef |
!0D U+000D .notdef |
!0E U+000E .notdef |
!0F U+000F .notdef |
!10 U+0010 .notdef |
!11 U+0011 .notdef |
!12 U+0012 .notdef |
!13 U+0013 .notdef |
!14 U+0014 .notdef |
!15 U+0015 .notdef |
!16 U+0016 .notdef |
!17 U+0017 .notdef |
!18 U+0018 .notdef |
!19 U+0019 .notdef |
!1A U+001A .notdef |
!1B U+001B .notdef |
!1C U+001C .notdef |
!1D U+001D .notdef |
!1E U+001E .notdef |
!1F U+001F .notdef |
!20 U+0020 space |
!21 U+0021 exclam |
!22 U+0022 quotedbl |
!23 U+0023 numbersign |
!24 U+0024 dollar |
!25 U+0025 percent |
!26 U+0026 ampersand |
!27 U+0027 quotesingle |
!28 U+0028 parenleft |
!29 U+0029 parenright |
!2A U+002A asterisk |
!2B U+002B plus |
!2C U+002C comma |
!2D U+002D hyphen |
!2E U+002E period |
!2F U+002F slash |
!30 U+0030 zero |
!31 U+0031 one |
!32 U+0032 two |
!33 U+0033 three |
!34 U+0034 four |
!35 U+0035 five |
!36 U+0036 six |
!37 U+0037 seven |
!38 U+0038 eight |
!39 U+0039 nine |
!3A U+003A colon |
!3B U+003B semicolon |
!3C U+003C less |
!3D U+003D equal |
!3E U+003E greater |
!3F U+003F question |
!40 U+0040 at |
!41 U+0041 A |
!42 U+0042 B |
!43 U+0043 C |
!44 U+0044 D |
!45 U+0045 E |
!46 U+0046 F |
!47 U+0047 G |
!48 U+0048 H |
!49 U+0049 I |
!4A U+004A J |
!4B U+004B K |
!4C U+004C L |
!4D U+004D M |
!4E U+004E N |
!4F U+004F O |
!50 U+0050 P |
!51 U+0051 Q |
!52 U+0052 R |
!53 U+0053 S |
!54 U+0054 T |
!55 U+0055 U |
!56 U+0056 V |
!57 U+0057 W |
!58 U+0058 X |
!59 U+0059 Y |
!5A U+005A Z |
!5B U+005B bracketleft |
!5C U+005C backslash |
!5D U+005D bracketright |
!5E U+005E asciicircum |
!5F U+005F underscore |
!60 U+0060 grave |
!61 U+0061 a |
!62 U+0062 b |
!63 U+0063 c |
!64 U+0064 d |
!65 U+0065 e |
!66 U+0066 f |
!67 U+0067 g |
!68 U+0068 h |
!69 U+0069 i |
!6A U+006A j |
!6B U+006B k |
!6C U+006C l |
!6D U+006D m |
!6E U+006E n |
!6F U+006F o |
!70 U+0070 p |
!71 U+0071 q |
!72 U+0072 r |
!73 U+0073 s |
!74 U+0074 t |
!75 U+0075 u |
!76 U+0076 v |
!77 U+0077 w |
!78 U+0078 x |
!79 U+0079 y |
!7A U+007A z |
!7B U+007B braceleft |
!7C U+007C bar |
!7D U+007D braceright |
!7E U+007E asciitilde |
!7F U+007F .notdef |
!80 U+20AC Euro |
!82 U+201A quotesinglbase |
!83 U+0192 florin |
!84 U+201E quotedblbase |
!85 U+2026 ellipsis |
!86 U+2020 dagger |
!87 U+2021 daggerdbl |
!88 U+02C6 circumflex |
!89 U+2030 perthousand |
!8B U+2039 guilsinglleft |
!8C U+0152 OE |
!91 U+2018 quoteleft |
!92 U+2019 quoteright |
!93 U+201C quotedblleft |
!94 U+201D quotedblright |
!95 U+2022 bullet |
!96 U+2013 endash |
!97 U+2014 emdash |
!98 U+02DC tilde |
!99 U+2122 trademark |
!9B U+203A guilsinglright |
!9C U+0153 oe |
!9F U+0178 Ydieresis |
!A0 U+00A0 space |
!A1 U+00A1 exclamdown |
!A2 U+00A2 cent |
!A3 U+00A3 sterling |
!A4 U+00A4 currency |
!A5 U+00A5 yen |
!A6 U+00A6 brokenbar |
!A7 U+00A7 section |
!A8 U+00A8 dieresis |
!A9 U+00A9 copyright |
!AA U+00AA ordfeminine |
!AB U+00AB guillemotleft |
!AC U+00AC logicalnot |
!AD U+00AD hyphen |
!AE U+00AE registered |
!AF U+00AF macron |
!B0 U+00B0 degree |
!B1 U+00B1 plusminus |
!B2 U+00B2 twosuperior |
!B3 U+00B3 threesuperior |
!B4 U+00B4 acute |
!B5 U+00B5 mu |
!B6 U+00B6 paragraph |
!B7 U+00B7 periodcentered |
!B8 U+00B8 cedilla |
!B9 U+00B9 onesuperior |
!BA U+00BA ordmasculine |
!BB U+00BB guillemotright |
!BC U+00BC onequarter |
!BD U+00BD onehalf |
!BE U+00BE threequarters |
!BF U+00BF questiondown |
!C0 U+00C0 Agrave |
!C1 U+00C1 Aacute |
!C2 U+00C2 Acircumflex |
!C3 U+0102 Abreve |
!C4 U+00C4 Adieresis |
!C5 U+00C5 Aring |
!C6 U+00C6 AE |
!C7 U+00C7 Ccedilla |
!C8 U+00C8 Egrave |
!C9 U+00C9 Eacute |
!CA U+00CA Ecircumflex |
!CB U+00CB Edieresis |
!CC U+0300 gravecomb |
!CD U+00CD Iacute |
!CE U+00CE Icircumflex |
!CF U+00CF Idieresis |
!D0 U+0110 Dcroat |
!D1 U+00D1 Ntilde |
!D2 U+0309 hookabovecomb |
!D3 U+00D3 Oacute |
!D4 U+00D4 Ocircumflex |
!D5 U+01A0 Ohorn |
!D6 U+00D6 Odieresis |
!D7 U+00D7 multiply |
!D8 U+00D8 Oslash |
!D9 U+00D9 Ugrave |
!DA U+00DA Uacute |
!DB U+00DB Ucircumflex |
!DC U+00DC Udieresis |
!DD U+01AF Uhorn |
!DE U+0303 tildecomb |
!DF U+00DF germandbls |
!E0 U+00E0 agrave |
!E1 U+00E1 aacute |
!E2 U+00E2 acircumflex |
!E3 U+0103 abreve |
!E4 U+00E4 adieresis |
!E5 U+00E5 aring |
!E6 U+00E6 ae |
!E7 U+00E7 ccedilla |
!E8 U+00E8 egrave |
!E9 U+00E9 eacute |
!EA U+00EA ecircumflex |
!EB U+00EB edieresis |
!EC U+0301 acutecomb |
!ED U+00ED iacute |
!EE U+00EE icircumflex |
!EF U+00EF idieresis |
!F0 U+0111 dcroat |
!F1 U+00F1 ntilde |
!F2 U+0323 dotbelowcomb |
!F3 U+00F3 oacute |
!F4 U+00F4 ocircumflex |
!F5 U+01A1 ohorn |
!F6 U+00F6 odieresis |
!F7 U+00F7 divide |
!F8 U+00F8 oslash |
!F9 U+00F9 ugrave |
!FA U+00FA uacute |
!FB U+00FB ucircumflex |
!FC U+00FC udieresis |
!FD U+01B0 uhorn |
!FE U+20AB dong |
!FF U+00FF ydieresis |
/web/acc/lib/fpdf16/font/makefont/iso-8859-11.map |
---|
0,0 → 1,248 |
!00 U+0000 .notdef |
!01 U+0001 .notdef |
!02 U+0002 .notdef |
!03 U+0003 .notdef |
!04 U+0004 .notdef |
!05 U+0005 .notdef |
!06 U+0006 .notdef |
!07 U+0007 .notdef |
!08 U+0008 .notdef |
!09 U+0009 .notdef |
!0A U+000A .notdef |
!0B U+000B .notdef |
!0C U+000C .notdef |
!0D U+000D .notdef |
!0E U+000E .notdef |
!0F U+000F .notdef |
!10 U+0010 .notdef |
!11 U+0011 .notdef |
!12 U+0012 .notdef |
!13 U+0013 .notdef |
!14 U+0014 .notdef |
!15 U+0015 .notdef |
!16 U+0016 .notdef |
!17 U+0017 .notdef |
!18 U+0018 .notdef |
!19 U+0019 .notdef |
!1A U+001A .notdef |
!1B U+001B .notdef |
!1C U+001C .notdef |
!1D U+001D .notdef |
!1E U+001E .notdef |
!1F U+001F .notdef |
!20 U+0020 space |
!21 U+0021 exclam |
!22 U+0022 quotedbl |
!23 U+0023 numbersign |
!24 U+0024 dollar |
!25 U+0025 percent |
!26 U+0026 ampersand |
!27 U+0027 quotesingle |
!28 U+0028 parenleft |
!29 U+0029 parenright |
!2A U+002A asterisk |
!2B U+002B plus |
!2C U+002C comma |
!2D U+002D hyphen |
!2E U+002E period |
!2F U+002F slash |
!30 U+0030 zero |
!31 U+0031 one |
!32 U+0032 two |
!33 U+0033 three |
!34 U+0034 four |
!35 U+0035 five |
!36 U+0036 six |
!37 U+0037 seven |
!38 U+0038 eight |
!39 U+0039 nine |
!3A U+003A colon |
!3B U+003B semicolon |
!3C U+003C less |
!3D U+003D equal |
!3E U+003E greater |
!3F U+003F question |
!40 U+0040 at |
!41 U+0041 A |
!42 U+0042 B |
!43 U+0043 C |
!44 U+0044 D |
!45 U+0045 E |
!46 U+0046 F |
!47 U+0047 G |
!48 U+0048 H |
!49 U+0049 I |
!4A U+004A J |
!4B U+004B K |
!4C U+004C L |
!4D U+004D M |
!4E U+004E N |
!4F U+004F O |
!50 U+0050 P |
!51 U+0051 Q |
!52 U+0052 R |
!53 U+0053 S |
!54 U+0054 T |
!55 U+0055 U |
!56 U+0056 V |
!57 U+0057 W |
!58 U+0058 X |
!59 U+0059 Y |
!5A U+005A Z |
!5B U+005B bracketleft |
!5C U+005C backslash |
!5D U+005D bracketright |
!5E U+005E asciicircum |
!5F U+005F underscore |
!60 U+0060 grave |
!61 U+0061 a |
!62 U+0062 b |
!63 U+0063 c |
!64 U+0064 d |
!65 U+0065 e |
!66 U+0066 f |
!67 U+0067 g |
!68 U+0068 h |
!69 U+0069 i |
!6A U+006A j |
!6B U+006B k |
!6C U+006C l |
!6D U+006D m |
!6E U+006E n |
!6F U+006F o |
!70 U+0070 p |
!71 U+0071 q |
!72 U+0072 r |
!73 U+0073 s |
!74 U+0074 t |
!75 U+0075 u |
!76 U+0076 v |
!77 U+0077 w |
!78 U+0078 x |
!79 U+0079 y |
!7A U+007A z |
!7B U+007B braceleft |
!7C U+007C bar |
!7D U+007D braceright |
!7E U+007E asciitilde |
!7F U+007F .notdef |
!80 U+0080 .notdef |
!81 U+0081 .notdef |
!82 U+0082 .notdef |
!83 U+0083 .notdef |
!84 U+0084 .notdef |
!85 U+0085 .notdef |
!86 U+0086 .notdef |
!87 U+0087 .notdef |
!88 U+0088 .notdef |
!89 U+0089 .notdef |
!8A U+008A .notdef |
!8B U+008B .notdef |
!8C U+008C .notdef |
!8D U+008D .notdef |
!8E U+008E .notdef |
!8F U+008F .notdef |
!90 U+0090 .notdef |
!91 U+0091 .notdef |
!92 U+0092 .notdef |
!93 U+0093 .notdef |
!94 U+0094 .notdef |
!95 U+0095 .notdef |
!96 U+0096 .notdef |
!97 U+0097 .notdef |
!98 U+0098 .notdef |
!99 U+0099 .notdef |
!9A U+009A .notdef |
!9B U+009B .notdef |
!9C U+009C .notdef |
!9D U+009D .notdef |
!9E U+009E .notdef |
!9F U+009F .notdef |
!A0 U+00A0 space |
!A1 U+0E01 kokaithai |
!A2 U+0E02 khokhaithai |
!A3 U+0E03 khokhuatthai |
!A4 U+0E04 khokhwaithai |
!A5 U+0E05 khokhonthai |
!A6 U+0E06 khorakhangthai |
!A7 U+0E07 ngonguthai |
!A8 U+0E08 chochanthai |
!A9 U+0E09 chochingthai |
!AA U+0E0A chochangthai |
!AB U+0E0B sosothai |
!AC U+0E0C chochoethai |
!AD U+0E0D yoyingthai |
!AE U+0E0E dochadathai |
!AF U+0E0F topatakthai |
!B0 U+0E10 thothanthai |
!B1 U+0E11 thonangmonthothai |
!B2 U+0E12 thophuthaothai |
!B3 U+0E13 nonenthai |
!B4 U+0E14 dodekthai |
!B5 U+0E15 totaothai |
!B6 U+0E16 thothungthai |
!B7 U+0E17 thothahanthai |
!B8 U+0E18 thothongthai |
!B9 U+0E19 nonuthai |
!BA U+0E1A bobaimaithai |
!BB U+0E1B poplathai |
!BC U+0E1C phophungthai |
!BD U+0E1D fofathai |
!BE U+0E1E phophanthai |
!BF U+0E1F fofanthai |
!C0 U+0E20 phosamphaothai |
!C1 U+0E21 momathai |
!C2 U+0E22 yoyakthai |
!C3 U+0E23 roruathai |
!C4 U+0E24 ruthai |
!C5 U+0E25 lolingthai |
!C6 U+0E26 luthai |
!C7 U+0E27 wowaenthai |
!C8 U+0E28 sosalathai |
!C9 U+0E29 sorusithai |
!CA U+0E2A sosuathai |
!CB U+0E2B hohipthai |
!CC U+0E2C lochulathai |
!CD U+0E2D oangthai |
!CE U+0E2E honokhukthai |
!CF U+0E2F paiyannoithai |
!D0 U+0E30 saraathai |
!D1 U+0E31 maihanakatthai |
!D2 U+0E32 saraaathai |
!D3 U+0E33 saraamthai |
!D4 U+0E34 saraithai |
!D5 U+0E35 saraiithai |
!D6 U+0E36 sarauethai |
!D7 U+0E37 saraueethai |
!D8 U+0E38 sarauthai |
!D9 U+0E39 sarauuthai |
!DA U+0E3A phinthuthai |
!DF U+0E3F bahtthai |
!E0 U+0E40 saraethai |
!E1 U+0E41 saraaethai |
!E2 U+0E42 saraothai |
!E3 U+0E43 saraaimaimuanthai |
!E4 U+0E44 saraaimaimalaithai |
!E5 U+0E45 lakkhangyaothai |
!E6 U+0E46 maiyamokthai |
!E7 U+0E47 maitaikhuthai |
!E8 U+0E48 maiekthai |
!E9 U+0E49 maithothai |
!EA U+0E4A maitrithai |
!EB U+0E4B maichattawathai |
!EC U+0E4C thanthakhatthai |
!ED U+0E4D nikhahitthai |
!EE U+0E4E yamakkanthai |
!EF U+0E4F fongmanthai |
!F0 U+0E50 zerothai |
!F1 U+0E51 onethai |
!F2 U+0E52 twothai |
!F3 U+0E53 threethai |
!F4 U+0E54 fourthai |
!F5 U+0E55 fivethai |
!F6 U+0E56 sixthai |
!F7 U+0E57 seventhai |
!F8 U+0E58 eightthai |
!F9 U+0E59 ninethai |
!FA U+0E5A angkhankhuthai |
!FB U+0E5B khomutthai |
/web/acc/lib/fpdf16/font/makefont/iso-8859-15.map |
---|
0,0 → 1,256 |
!00 U+0000 .notdef |
!01 U+0001 .notdef |
!02 U+0002 .notdef |
!03 U+0003 .notdef |
!04 U+0004 .notdef |
!05 U+0005 .notdef |
!06 U+0006 .notdef |
!07 U+0007 .notdef |
!08 U+0008 .notdef |
!09 U+0009 .notdef |
!0A U+000A .notdef |
!0B U+000B .notdef |
!0C U+000C .notdef |
!0D U+000D .notdef |
!0E U+000E .notdef |
!0F U+000F .notdef |
!10 U+0010 .notdef |
!11 U+0011 .notdef |
!12 U+0012 .notdef |
!13 U+0013 .notdef |
!14 U+0014 .notdef |
!15 U+0015 .notdef |
!16 U+0016 .notdef |
!17 U+0017 .notdef |
!18 U+0018 .notdef |
!19 U+0019 .notdef |
!1A U+001A .notdef |
!1B U+001B .notdef |
!1C U+001C .notdef |
!1D U+001D .notdef |
!1E U+001E .notdef |
!1F U+001F .notdef |
!20 U+0020 space |
!21 U+0021 exclam |
!22 U+0022 quotedbl |
!23 U+0023 numbersign |
!24 U+0024 dollar |
!25 U+0025 percent |
!26 U+0026 ampersand |
!27 U+0027 quotesingle |
!28 U+0028 parenleft |
!29 U+0029 parenright |
!2A U+002A asterisk |
!2B U+002B plus |
!2C U+002C comma |
!2D U+002D hyphen |
!2E U+002E period |
!2F U+002F slash |
!30 U+0030 zero |
!31 U+0031 one |
!32 U+0032 two |
!33 U+0033 three |
!34 U+0034 four |
!35 U+0035 five |
!36 U+0036 six |
!37 U+0037 seven |
!38 U+0038 eight |
!39 U+0039 nine |
!3A U+003A colon |
!3B U+003B semicolon |
!3C U+003C less |
!3D U+003D equal |
!3E U+003E greater |
!3F U+003F question |
!40 U+0040 at |
!41 U+0041 A |
!42 U+0042 B |
!43 U+0043 C |
!44 U+0044 D |
!45 U+0045 E |
!46 U+0046 F |
!47 U+0047 G |
!48 U+0048 H |
!49 U+0049 I |
!4A U+004A J |
!4B U+004B K |
!4C U+004C L |
!4D U+004D M |
!4E U+004E N |
!4F U+004F O |
!50 U+0050 P |
!51 U+0051 Q |
!52 U+0052 R |
!53 U+0053 S |
!54 U+0054 T |
!55 U+0055 U |
!56 U+0056 V |
!57 U+0057 W |
!58 U+0058 X |
!59 U+0059 Y |
!5A U+005A Z |
!5B U+005B bracketleft |
!5C U+005C backslash |
!5D U+005D bracketright |
!5E U+005E asciicircum |
!5F U+005F underscore |
!60 U+0060 grave |
!61 U+0061 a |
!62 U+0062 b |
!63 U+0063 c |
!64 U+0064 d |
!65 U+0065 e |
!66 U+0066 f |
!67 U+0067 g |
!68 U+0068 h |
!69 U+0069 i |
!6A U+006A j |
!6B U+006B k |
!6C U+006C l |
!6D U+006D m |
!6E U+006E n |
!6F U+006F o |
!70 U+0070 p |
!71 U+0071 q |
!72 U+0072 r |
!73 U+0073 s |
!74 U+0074 t |
!75 U+0075 u |
!76 U+0076 v |
!77 U+0077 w |
!78 U+0078 x |
!79 U+0079 y |
!7A U+007A z |
!7B U+007B braceleft |
!7C U+007C bar |
!7D U+007D braceright |
!7E U+007E asciitilde |
!7F U+007F .notdef |
!80 U+0080 .notdef |
!81 U+0081 .notdef |
!82 U+0082 .notdef |
!83 U+0083 .notdef |
!84 U+0084 .notdef |
!85 U+0085 .notdef |
!86 U+0086 .notdef |
!87 U+0087 .notdef |
!88 U+0088 .notdef |
!89 U+0089 .notdef |
!8A U+008A .notdef |
!8B U+008B .notdef |
!8C U+008C .notdef |
!8D U+008D .notdef |
!8E U+008E .notdef |
!8F U+008F .notdef |
!90 U+0090 .notdef |
!91 U+0091 .notdef |
!92 U+0092 .notdef |
!93 U+0093 .notdef |
!94 U+0094 .notdef |
!95 U+0095 .notdef |
!96 U+0096 .notdef |
!97 U+0097 .notdef |
!98 U+0098 .notdef |
!99 U+0099 .notdef |
!9A U+009A .notdef |
!9B U+009B .notdef |
!9C U+009C .notdef |
!9D U+009D .notdef |
!9E U+009E .notdef |
!9F U+009F .notdef |
!A0 U+00A0 space |
!A1 U+00A1 exclamdown |
!A2 U+00A2 cent |
!A3 U+00A3 sterling |
!A4 U+20AC Euro |
!A5 U+00A5 yen |
!A6 U+0160 Scaron |
!A7 U+00A7 section |
!A8 U+0161 scaron |
!A9 U+00A9 copyright |
!AA U+00AA ordfeminine |
!AB U+00AB guillemotleft |
!AC U+00AC logicalnot |
!AD U+00AD hyphen |
!AE U+00AE registered |
!AF U+00AF macron |
!B0 U+00B0 degree |
!B1 U+00B1 plusminus |
!B2 U+00B2 twosuperior |
!B3 U+00B3 threesuperior |
!B4 U+017D Zcaron |
!B5 U+00B5 mu |
!B6 U+00B6 paragraph |
!B7 U+00B7 periodcentered |
!B8 U+017E zcaron |
!B9 U+00B9 onesuperior |
!BA U+00BA ordmasculine |
!BB U+00BB guillemotright |
!BC U+0152 OE |
!BD U+0153 oe |
!BE U+0178 Ydieresis |
!BF U+00BF questiondown |
!C0 U+00C0 Agrave |
!C1 U+00C1 Aacute |
!C2 U+00C2 Acircumflex |
!C3 U+00C3 Atilde |
!C4 U+00C4 Adieresis |
!C5 U+00C5 Aring |
!C6 U+00C6 AE |
!C7 U+00C7 Ccedilla |
!C8 U+00C8 Egrave |
!C9 U+00C9 Eacute |
!CA U+00CA Ecircumflex |
!CB U+00CB Edieresis |
!CC U+00CC Igrave |
!CD U+00CD Iacute |
!CE U+00CE Icircumflex |
!CF U+00CF Idieresis |
!D0 U+00D0 Eth |
!D1 U+00D1 Ntilde |
!D2 U+00D2 Ograve |
!D3 U+00D3 Oacute |
!D4 U+00D4 Ocircumflex |
!D5 U+00D5 Otilde |
!D6 U+00D6 Odieresis |
!D7 U+00D7 multiply |
!D8 U+00D8 Oslash |
!D9 U+00D9 Ugrave |
!DA U+00DA Uacute |
!DB U+00DB Ucircumflex |
!DC U+00DC Udieresis |
!DD U+00DD Yacute |
!DE U+00DE Thorn |
!DF U+00DF germandbls |
!E0 U+00E0 agrave |
!E1 U+00E1 aacute |
!E2 U+00E2 acircumflex |
!E3 U+00E3 atilde |
!E4 U+00E4 adieresis |
!E5 U+00E5 aring |
!E6 U+00E6 ae |
!E7 U+00E7 ccedilla |
!E8 U+00E8 egrave |
!E9 U+00E9 eacute |
!EA U+00EA ecircumflex |
!EB U+00EB edieresis |
!EC U+00EC igrave |
!ED U+00ED iacute |
!EE U+00EE icircumflex |
!EF U+00EF idieresis |
!F0 U+00F0 eth |
!F1 U+00F1 ntilde |
!F2 U+00F2 ograve |
!F3 U+00F3 oacute |
!F4 U+00F4 ocircumflex |
!F5 U+00F5 otilde |
!F6 U+00F6 odieresis |
!F7 U+00F7 divide |
!F8 U+00F8 oslash |
!F9 U+00F9 ugrave |
!FA U+00FA uacute |
!FB U+00FB ucircumflex |
!FC U+00FC udieresis |
!FD U+00FD yacute |
!FE U+00FE thorn |
!FF U+00FF ydieresis |
/web/acc/lib/fpdf16/font/makefont/iso-8859-16.map |
---|
0,0 → 1,256 |
!00 U+0000 .notdef |
!01 U+0001 .notdef |
!02 U+0002 .notdef |
!03 U+0003 .notdef |
!04 U+0004 .notdef |
!05 U+0005 .notdef |
!06 U+0006 .notdef |
!07 U+0007 .notdef |
!08 U+0008 .notdef |
!09 U+0009 .notdef |
!0A U+000A .notdef |
!0B U+000B .notdef |
!0C U+000C .notdef |
!0D U+000D .notdef |
!0E U+000E .notdef |
!0F U+000F .notdef |
!10 U+0010 .notdef |
!11 U+0011 .notdef |
!12 U+0012 .notdef |
!13 U+0013 .notdef |
!14 U+0014 .notdef |
!15 U+0015 .notdef |
!16 U+0016 .notdef |
!17 U+0017 .notdef |
!18 U+0018 .notdef |
!19 U+0019 .notdef |
!1A U+001A .notdef |
!1B U+001B .notdef |
!1C U+001C .notdef |
!1D U+001D .notdef |
!1E U+001E .notdef |
!1F U+001F .notdef |
!20 U+0020 space |
!21 U+0021 exclam |
!22 U+0022 quotedbl |
!23 U+0023 numbersign |
!24 U+0024 dollar |
!25 U+0025 percent |
!26 U+0026 ampersand |
!27 U+0027 quotesingle |
!28 U+0028 parenleft |
!29 U+0029 parenright |
!2A U+002A asterisk |
!2B U+002B plus |
!2C U+002C comma |
!2D U+002D hyphen |
!2E U+002E period |
!2F U+002F slash |
!30 U+0030 zero |
!31 U+0031 one |
!32 U+0032 two |
!33 U+0033 three |
!34 U+0034 four |
!35 U+0035 five |
!36 U+0036 six |
!37 U+0037 seven |
!38 U+0038 eight |
!39 U+0039 nine |
!3A U+003A colon |
!3B U+003B semicolon |
!3C U+003C less |
!3D U+003D equal |
!3E U+003E greater |
!3F U+003F question |
!40 U+0040 at |
!41 U+0041 A |
!42 U+0042 B |
!43 U+0043 C |
!44 U+0044 D |
!45 U+0045 E |
!46 U+0046 F |
!47 U+0047 G |
!48 U+0048 H |
!49 U+0049 I |
!4A U+004A J |
!4B U+004B K |
!4C U+004C L |
!4D U+004D M |
!4E U+004E N |
!4F U+004F O |
!50 U+0050 P |
!51 U+0051 Q |
!52 U+0052 R |
!53 U+0053 S |
!54 U+0054 T |
!55 U+0055 U |
!56 U+0056 V |
!57 U+0057 W |
!58 U+0058 X |
!59 U+0059 Y |
!5A U+005A Z |
!5B U+005B bracketleft |
!5C U+005C backslash |
!5D U+005D bracketright |
!5E U+005E asciicircum |
!5F U+005F underscore |
!60 U+0060 grave |
!61 U+0061 a |
!62 U+0062 b |
!63 U+0063 c |
!64 U+0064 d |
!65 U+0065 e |
!66 U+0066 f |
!67 U+0067 g |
!68 U+0068 h |
!69 U+0069 i |
!6A U+006A j |
!6B U+006B k |
!6C U+006C l |
!6D U+006D m |
!6E U+006E n |
!6F U+006F o |
!70 U+0070 p |
!71 U+0071 q |
!72 U+0072 r |
!73 U+0073 s |
!74 U+0074 t |
!75 U+0075 u |
!76 U+0076 v |
!77 U+0077 w |
!78 U+0078 x |
!79 U+0079 y |
!7A U+007A z |
!7B U+007B braceleft |
!7C U+007C bar |
!7D U+007D braceright |
!7E U+007E asciitilde |
!7F U+007F .notdef |
!80 U+0080 .notdef |
!81 U+0081 .notdef |
!82 U+0082 .notdef |
!83 U+0083 .notdef |
!84 U+0084 .notdef |
!85 U+0085 .notdef |
!86 U+0086 .notdef |
!87 U+0087 .notdef |
!88 U+0088 .notdef |
!89 U+0089 .notdef |
!8A U+008A .notdef |
!8B U+008B .notdef |
!8C U+008C .notdef |
!8D U+008D .notdef |
!8E U+008E .notdef |
!8F U+008F .notdef |
!90 U+0090 .notdef |
!91 U+0091 .notdef |
!92 U+0092 .notdef |
!93 U+0093 .notdef |
!94 U+0094 .notdef |
!95 U+0095 .notdef |
!96 U+0096 .notdef |
!97 U+0097 .notdef |
!98 U+0098 .notdef |
!99 U+0099 .notdef |
!9A U+009A .notdef |
!9B U+009B .notdef |
!9C U+009C .notdef |
!9D U+009D .notdef |
!9E U+009E .notdef |
!9F U+009F .notdef |
!A0 U+00A0 space |
!A1 U+0104 Aogonek |
!A2 U+0105 aogonek |
!A3 U+0141 Lslash |
!A4 U+20AC Euro |
!A5 U+201E quotedblbase |
!A6 U+0160 Scaron |
!A7 U+00A7 section |
!A8 U+0161 scaron |
!A9 U+00A9 copyright |
!AA U+0218 Scommaaccent |
!AB U+00AB guillemotleft |
!AC U+0179 Zacute |
!AD U+00AD hyphen |
!AE U+017A zacute |
!AF U+017B Zdotaccent |
!B0 U+00B0 degree |
!B1 U+00B1 plusminus |
!B2 U+010C Ccaron |
!B3 U+0142 lslash |
!B4 U+017D Zcaron |
!B5 U+201D quotedblright |
!B6 U+00B6 paragraph |
!B7 U+00B7 periodcentered |
!B8 U+017E zcaron |
!B9 U+010D ccaron |
!BA U+0219 scommaaccent |
!BB U+00BB guillemotright |
!BC U+0152 OE |
!BD U+0153 oe |
!BE U+0178 Ydieresis |
!BF U+017C zdotaccent |
!C0 U+00C0 Agrave |
!C1 U+00C1 Aacute |
!C2 U+00C2 Acircumflex |
!C3 U+0102 Abreve |
!C4 U+00C4 Adieresis |
!C5 U+0106 Cacute |
!C6 U+00C6 AE |
!C7 U+00C7 Ccedilla |
!C8 U+00C8 Egrave |
!C9 U+00C9 Eacute |
!CA U+00CA Ecircumflex |
!CB U+00CB Edieresis |
!CC U+00CC Igrave |
!CD U+00CD Iacute |
!CE U+00CE Icircumflex |
!CF U+00CF Idieresis |
!D0 U+0110 Dcroat |
!D1 U+0143 Nacute |
!D2 U+00D2 Ograve |
!D3 U+00D3 Oacute |
!D4 U+00D4 Ocircumflex |
!D5 U+0150 Ohungarumlaut |
!D6 U+00D6 Odieresis |
!D7 U+015A Sacute |
!D8 U+0170 Uhungarumlaut |
!D9 U+00D9 Ugrave |
!DA U+00DA Uacute |
!DB U+00DB Ucircumflex |
!DC U+00DC Udieresis |
!DD U+0118 Eogonek |
!DE U+021A Tcommaaccent |
!DF U+00DF germandbls |
!E0 U+00E0 agrave |
!E1 U+00E1 aacute |
!E2 U+00E2 acircumflex |
!E3 U+0103 abreve |
!E4 U+00E4 adieresis |
!E5 U+0107 cacute |
!E6 U+00E6 ae |
!E7 U+00E7 ccedilla |
!E8 U+00E8 egrave |
!E9 U+00E9 eacute |
!EA U+00EA ecircumflex |
!EB U+00EB edieresis |
!EC U+00EC igrave |
!ED U+00ED iacute |
!EE U+00EE icircumflex |
!EF U+00EF idieresis |
!F0 U+0111 dcroat |
!F1 U+0144 nacute |
!F2 U+00F2 ograve |
!F3 U+00F3 oacute |
!F4 U+00F4 ocircumflex |
!F5 U+0151 ohungarumlaut |
!F6 U+00F6 odieresis |
!F7 U+015B sacute |
!F8 U+0171 uhungarumlaut |
!F9 U+00F9 ugrave |
!FA U+00FA uacute |
!FB U+00FB ucircumflex |
!FC U+00FC udieresis |
!FD U+0119 eogonek |
!FE U+021B tcommaaccent |
!FF U+00FF ydieresis |
/web/acc/lib/fpdf16/font/helveticabi.php |
---|
0,0 → 1,15 |
<?php |
$fpdf_charwidths['helveticaBI']=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(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, |
'B'=>722,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>556,'K'=>722,'L'=>611,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944, |
'X'=>667,'Y'=>667,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>584,'_'=>556,'`'=>333,'a'=>556,'b'=>611,'c'=>556,'d'=>611,'e'=>556,'f'=>333,'g'=>611,'h'=>611,'i'=>278,'j'=>278,'k'=>556,'l'=>278,'m'=>889, |
'n'=>611,'o'=>611,'p'=>611,'q'=>611,'r'=>389,'s'=>556,'t'=>333,'u'=>611,'v'=>556,'w'=>778,'x'=>556,'y'=>556,'z'=>500,'{'=>389,'|'=>280,'}'=>389,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>278,chr(131)=>556, |
chr(132)=>500,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>278,chr(146)=>278,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000, |
chr(154)=>556,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>280,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333, |
chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>611,chr(182)=>556,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722, |
chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722, |
chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>556,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>611,chr(241)=>611, |
chr(242)=>611,chr(243)=>611,chr(244)=>611,chr(245)=>611,chr(246)=>611,chr(247)=>584,chr(248)=>611,chr(249)=>611,chr(250)=>611,chr(251)=>611,chr(252)=>611,chr(253)=>556,chr(254)=>611,chr(255)=>556); |
?> |
/web/acc/lib/fpdf16/font/times.php |
---|
0,0 → 1,15 |
<?php |
$fpdf_charwidths['times']=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(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, |
'B'=>667,'C'=>667,'D'=>722,'E'=>611,'F'=>556,'G'=>722,'H'=>722,'I'=>333,'J'=>389,'K'=>722,'L'=>611,'M'=>889,'N'=>722,'O'=>722,'P'=>556,'Q'=>722,'R'=>667,'S'=>556,'T'=>611,'U'=>722,'V'=>722,'W'=>944, |
'X'=>722,'Y'=>722,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>469,'_'=>500,'`'=>333,'a'=>444,'b'=>500,'c'=>444,'d'=>500,'e'=>444,'f'=>333,'g'=>500,'h'=>500,'i'=>278,'j'=>278,'k'=>500,'l'=>278,'m'=>778, |
'n'=>500,'o'=>500,'p'=>500,'q'=>500,'r'=>333,'s'=>389,'t'=>278,'u'=>500,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>444,'{'=>480,'|'=>200,'}'=>480,'~'=>541,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500, |
chr(132)=>444,chr(133)=>1000,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>556,chr(139)=>333,chr(140)=>889,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>444,chr(148)=>444,chr(149)=>350,chr(150)=>500,chr(151)=>1000,chr(152)=>333,chr(153)=>980, |
chr(154)=>389,chr(155)=>333,chr(156)=>722,chr(157)=>350,chr(158)=>444,chr(159)=>722,chr(160)=>250,chr(161)=>333,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>200,chr(167)=>500,chr(168)=>333,chr(169)=>760,chr(170)=>276,chr(171)=>500,chr(172)=>564,chr(173)=>333,chr(174)=>760,chr(175)=>333, |
chr(176)=>400,chr(177)=>564,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>500,chr(182)=>453,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>310,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>444,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722, |
chr(198)=>889,chr(199)=>667,chr(200)=>611,chr(201)=>611,chr(202)=>611,chr(203)=>611,chr(204)=>333,chr(205)=>333,chr(206)=>333,chr(207)=>333,chr(208)=>722,chr(209)=>722,chr(210)=>722,chr(211)=>722,chr(212)=>722,chr(213)=>722,chr(214)=>722,chr(215)=>564,chr(216)=>722,chr(217)=>722,chr(218)=>722,chr(219)=>722, |
chr(220)=>722,chr(221)=>722,chr(222)=>556,chr(223)=>500,chr(224)=>444,chr(225)=>444,chr(226)=>444,chr(227)=>444,chr(228)=>444,chr(229)=>444,chr(230)=>667,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>500, |
chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>564,chr(248)=>500,chr(249)=>500,chr(250)=>500,chr(251)=>500,chr(252)=>500,chr(253)=>500,chr(254)=>500,chr(255)=>500); |
?> |
/web/acc/lib/fpdf16/font/timesb.php |
---|
0,0 → 1,15 |
<?php |
$fpdf_charwidths['timesB']=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(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, |
'B'=>667,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>778,'I'=>389,'J'=>500,'K'=>778,'L'=>667,'M'=>944,'N'=>722,'O'=>778,'P'=>611,'Q'=>778,'R'=>722,'S'=>556,'T'=>667,'U'=>722,'V'=>722,'W'=>1000, |
'X'=>722,'Y'=>722,'Z'=>667,'['=>333,'\\'=>278,']'=>333,'^'=>581,'_'=>500,'`'=>333,'a'=>500,'b'=>556,'c'=>444,'d'=>556,'e'=>444,'f'=>333,'g'=>500,'h'=>556,'i'=>278,'j'=>333,'k'=>556,'l'=>278,'m'=>833, |
'n'=>556,'o'=>500,'p'=>556,'q'=>556,'r'=>444,'s'=>389,'t'=>333,'u'=>556,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>444,'{'=>394,'|'=>220,'}'=>394,'~'=>520,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500, |
chr(132)=>500,chr(133)=>1000,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>556,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>667,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>500,chr(151)=>1000,chr(152)=>333,chr(153)=>1000, |
chr(154)=>389,chr(155)=>333,chr(156)=>722,chr(157)=>350,chr(158)=>444,chr(159)=>722,chr(160)=>250,chr(161)=>333,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>220,chr(167)=>500,chr(168)=>333,chr(169)=>747,chr(170)=>300,chr(171)=>500,chr(172)=>570,chr(173)=>333,chr(174)=>747,chr(175)=>333, |
chr(176)=>400,chr(177)=>570,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>556,chr(182)=>540,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>330,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>500,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722, |
chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>389,chr(205)=>389,chr(206)=>389,chr(207)=>389,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>570,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722, |
chr(220)=>722,chr(221)=>722,chr(222)=>611,chr(223)=>556,chr(224)=>500,chr(225)=>500,chr(226)=>500,chr(227)=>500,chr(228)=>500,chr(229)=>500,chr(230)=>722,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>556, |
chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>570,chr(248)=>500,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>500,chr(254)=>556,chr(255)=>500); |
?> |
/web/acc/lib/fpdf16/font/helvetica.php |
---|
0,0 → 1,15 |
<?php |
$fpdf_charwidths['helvetica']=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(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, |
'B'=>667,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>500,'K'=>667,'L'=>556,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944, |
'X'=>667,'Y'=>667,'Z'=>611,'['=>278,'\\'=>278,']'=>278,'^'=>469,'_'=>556,'`'=>333,'a'=>556,'b'=>556,'c'=>500,'d'=>556,'e'=>556,'f'=>278,'g'=>556,'h'=>556,'i'=>222,'j'=>222,'k'=>500,'l'=>222,'m'=>833, |
'n'=>556,'o'=>556,'p'=>556,'q'=>556,'r'=>333,'s'=>500,'t'=>278,'u'=>556,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>500,'{'=>334,'|'=>260,'}'=>334,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>222,chr(131)=>556, |
chr(132)=>333,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>222,chr(146)=>222,chr(147)=>333,chr(148)=>333,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000, |
chr(154)=>500,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>260,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333, |
chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>556,chr(182)=>537,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>667,chr(193)=>667,chr(194)=>667,chr(195)=>667,chr(196)=>667,chr(197)=>667, |
chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722, |
chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>500,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>556,chr(241)=>556, |
chr(242)=>556,chr(243)=>556,chr(244)=>556,chr(245)=>556,chr(246)=>556,chr(247)=>584,chr(248)=>611,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>500,chr(254)=>556,chr(255)=>500); |
?> |
/web/acc/lib/fpdf16/font/symbol.php |
---|
0,0 → 1,15 |
<?php |
$fpdf_charwidths['symbol']=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(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, |
'B'=>667,'C'=>722,'D'=>612,'E'=>611,'F'=>763,'G'=>603,'H'=>722,'I'=>333,'J'=>631,'K'=>722,'L'=>686,'M'=>889,'N'=>722,'O'=>722,'P'=>768,'Q'=>741,'R'=>556,'S'=>592,'T'=>611,'U'=>690,'V'=>439,'W'=>768, |
'X'=>645,'Y'=>795,'Z'=>611,'['=>333,'\\'=>863,']'=>333,'^'=>658,'_'=>500,'`'=>500,'a'=>631,'b'=>549,'c'=>549,'d'=>494,'e'=>439,'f'=>521,'g'=>411,'h'=>603,'i'=>329,'j'=>603,'k'=>549,'l'=>549,'m'=>576, |
'n'=>521,'o'=>549,'p'=>549,'q'=>521,'r'=>549,'s'=>603,'t'=>439,'u'=>576,'v'=>713,'w'=>686,'x'=>493,'y'=>686,'z'=>494,'{'=>480,'|'=>200,'}'=>480,'~'=>549,chr(127)=>0,chr(128)=>0,chr(129)=>0,chr(130)=>0,chr(131)=>0, |
chr(132)=>0,chr(133)=>0,chr(134)=>0,chr(135)=>0,chr(136)=>0,chr(137)=>0,chr(138)=>0,chr(139)=>0,chr(140)=>0,chr(141)=>0,chr(142)=>0,chr(143)=>0,chr(144)=>0,chr(145)=>0,chr(146)=>0,chr(147)=>0,chr(148)=>0,chr(149)=>0,chr(150)=>0,chr(151)=>0,chr(152)=>0,chr(153)=>0, |
chr(154)=>0,chr(155)=>0,chr(156)=>0,chr(157)=>0,chr(158)=>0,chr(159)=>0,chr(160)=>750,chr(161)=>620,chr(162)=>247,chr(163)=>549,chr(164)=>167,chr(165)=>713,chr(166)=>500,chr(167)=>753,chr(168)=>753,chr(169)=>753,chr(170)=>753,chr(171)=>1042,chr(172)=>987,chr(173)=>603,chr(174)=>987,chr(175)=>603, |
chr(176)=>400,chr(177)=>549,chr(178)=>411,chr(179)=>549,chr(180)=>549,chr(181)=>713,chr(182)=>494,chr(183)=>460,chr(184)=>549,chr(185)=>549,chr(186)=>549,chr(187)=>549,chr(188)=>1000,chr(189)=>603,chr(190)=>1000,chr(191)=>658,chr(192)=>823,chr(193)=>686,chr(194)=>795,chr(195)=>987,chr(196)=>768,chr(197)=>768, |
chr(198)=>823,chr(199)=>768,chr(200)=>768,chr(201)=>713,chr(202)=>713,chr(203)=>713,chr(204)=>713,chr(205)=>713,chr(206)=>713,chr(207)=>713,chr(208)=>768,chr(209)=>713,chr(210)=>790,chr(211)=>790,chr(212)=>890,chr(213)=>823,chr(214)=>549,chr(215)=>250,chr(216)=>713,chr(217)=>603,chr(218)=>603,chr(219)=>1042, |
chr(220)=>987,chr(221)=>603,chr(222)=>987,chr(223)=>603,chr(224)=>494,chr(225)=>329,chr(226)=>790,chr(227)=>790,chr(228)=>786,chr(229)=>713,chr(230)=>384,chr(231)=>384,chr(232)=>384,chr(233)=>384,chr(234)=>384,chr(235)=>384,chr(236)=>494,chr(237)=>494,chr(238)=>494,chr(239)=>494,chr(240)=>0,chr(241)=>329, |
chr(242)=>274,chr(243)=>686,chr(244)=>686,chr(245)=>686,chr(246)=>384,chr(247)=>384,chr(248)=>384,chr(249)=>384,chr(250)=>384,chr(251)=>384,chr(252)=>494,chr(253)=>494,chr(254)=>494,chr(255)=>0); |
?> |
/web/acc/lib/fpdf16/font/helveticab.php |
---|
0,0 → 1,15 |
<?php |
$fpdf_charwidths['helveticaB']=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(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, |
'B'=>722,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>556,'K'=>722,'L'=>611,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944, |
'X'=>667,'Y'=>667,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>584,'_'=>556,'`'=>333,'a'=>556,'b'=>611,'c'=>556,'d'=>611,'e'=>556,'f'=>333,'g'=>611,'h'=>611,'i'=>278,'j'=>278,'k'=>556,'l'=>278,'m'=>889, |
'n'=>611,'o'=>611,'p'=>611,'q'=>611,'r'=>389,'s'=>556,'t'=>333,'u'=>611,'v'=>556,'w'=>778,'x'=>556,'y'=>556,'z'=>500,'{'=>389,'|'=>280,'}'=>389,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>278,chr(131)=>556, |
chr(132)=>500,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>278,chr(146)=>278,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000, |
chr(154)=>556,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>280,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333, |
chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>611,chr(182)=>556,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722, |
chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722, |
chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>556,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>611,chr(241)=>611, |
chr(242)=>611,chr(243)=>611,chr(244)=>611,chr(245)=>611,chr(246)=>611,chr(247)=>584,chr(248)=>611,chr(249)=>611,chr(250)=>611,chr(251)=>611,chr(252)=>611,chr(253)=>556,chr(254)=>611,chr(255)=>556); |
?> |
/web/acc/lib/fpdf16/font/courier.php |
---|
0,0 → 1,7 |
<?php |
for($i=0;$i<=255;$i++) |
$fpdf_charwidths['courier'][chr($i)]=600; |
$fpdf_charwidths['courierB']=$fpdf_charwidths['courier']; |
$fpdf_charwidths['courierI']=$fpdf_charwidths['courier']; |
$fpdf_charwidths['courierBI']=$fpdf_charwidths['courier']; |
?> |
/web/acc/manager/htdocs/help/callback_number_help.html |
---|
0,0 → 1,47 |
<html> |
<head> |
<title>Callback-Number Help Page</title> |
<link rel="stylesheet" href="../style.css"> |
</head> |
<body bgcolor="#80a040" background="../images/greenlines1.gif" link="black" alink="black"> |
<center> |
<table border=0 width=540 cellpadding=1 cellspacing=1> |
<tr valign=top> |
<td width=340></td> |
<td bgcolor="black" width=400> |
<table border=0 width=100% cellpadding=2 cellspacing=0> |
<tr bgcolor="#907030" align=right valign=top><th><font color="white">Callback-Number Help Page</font> </th></tr> |
</table> |
</td></tr> |
<tr bgcolor="black" valign=top><td colspan=2> |
<table border=0 width=100% cellpadding=12 cellspacing=0 bgcolor="#ffffd0" valign=top> |
<tr><td> |
<br> |
<center> |
<pre> |
Attribute Number: 19 |
Value: String |
</pre> |
<br> |
<pre> |
The value of this attribute is the number to which the RADIUS client |
gear should return a call to the authenticating user. Depending on |
what packet this attribute is found in, different actions may be |
configured. For instance, if <i>Callback-Number</i> is found in an |
<i>Access Request</i> packet, the implementation may assume that the |
end user is requesting callback service. If the attribute is found |
in the <i>Access Accept</i> packet, it can mean everything that the |
administrator configuring the gear wants it to mean. In fact, in |
some cases, <i>Callback-ID</i> and <i>Callback-Number</i> will <i>not</i> be found |
together in one packet. |
</pre> |
</td></tr> |
<tr><td align=center> |
<a href="javascript:window.close();"><b>Close Window</b></a> |
</td></tr> |
</center> |
</table> |
</tr> |
</table> |
</body> |
</html> |
/web/acc/manager/htdocs/help/simultaneous_use_help.html |
---|
0,0 → 1,27 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
<HTML><!-- written by Rexy --> |
<HEAD> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
<title>Help Page</title> |
<link rel="stylesheet" href="/css/style.css" type="text/css"> |
</HEAD> |
<body> |
<center> |
<TABLE width="100%" border="0" cellspacing="0" cellpadding="0"> |
<tr><th>SESSION SIMULTANEE - SIMULTANNEOUS USE</th></tr> |
<tr bgcolor="#FFCC66"><td><img src="/images/pix.gif" width="1" height="2"></td></tr> |
</TABLE> |
<TABLE width="100%" border=1 cellspacing=0 cellpadding=1> |
<tr><td valign="middle" align="center"> |
Cet attribut définit le nombre maximum de sessions simultanées |
qu'un usager peut ouvrir (non renseigné = infini) |
<hr> |
This attribute defines the maximum number of concurrent logins |
for a user (empty = infinity) |
</td></tr> |
</table> |
<br> |
<a href="javascript:window.close();"><b>Close / Fermer</b></a> |
</center> |
</body> |
</html> |
/web/acc/manager/htdocs/help/class_help.html |
---|
0,0 → 1,45 |
<html> |
<head> |
<title>Class Help Page</title> |
<link rel="stylesheet" href="../style.css"> |
</head> |
<body bgcolor="#80a040" background="../images/greenlines1.gif" link="black" alink="black"> |
<center> |
<table border=0 width=540 cellpadding=1 cellspacing=1> |
<tr valign=top> |
<td width=340></td> |
<td bgcolor="black" width=400> |
<table border=0 width=100% cellpadding=2 cellspacing=0> |
<tr bgcolor="#907030" align=right valign=top><th><font color="white">Class Help Page</font> </th></tr> |
</table> |
</td></tr> |
<tr bgcolor="black" valign=top><td colspan=2> |
<table border=0 width=100% cellpadding=12 cellspacing=0 bgcolor="#ffffd0" valign=top> |
<tr><td> |
<br> |
<center> |
<pre> |
Attribute Number: 25 |
Value: String |
</pre> |
<br> |
<pre> |
The Class attribute mainly exists to funnel identification and |
property information to the accounting systems of RADIUS |
implementations.<br> |
From RFC2865:<br>"This Attribute is available to be sent by the server to the client |
in an Access-Accept and SHOULD be sent unmodified by the client to |
the accounting server as part of the Accounting-Request packet if |
accounting is supported. The client MUST NOT interpret the |
attribute locally." |
</pre> |
</td></tr> |
<tr><td align=center> |
<a href="javascript:window.close();"><b>Close Window</b></a> |
</td></tr> |
</center> |
</table> |
</tr> |
</table> |
</body> |
</html> |
/web/acc/manager/htdocs/help/chillispot_bandwidth_max_up_help.html |
---|
0,0 → 1,27 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
<HTML><!-- written by Rexy --> |
<HEAD> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
<title>Help Page</title> |
<link rel="stylesheet" href="/css/style.css" type="text/css"> |
</HEAD> |
<body> |
<center> |
<TABLE width="100%" border="0" cellspacing="0" cellpadding="0"> |
<tr><th>BANDE PASSANTE MAX EN EMISSION - BANDWIDTH MAX UP</th></tr> |
<tr bgcolor="#FFCC66"><td><img src="/images/pix.gif" width="1" height="2"></td></tr> |
</TABLE> |
<TABLE width="100%" border=1 cellspacing=0 cellpadding=1> |
<tr><td valign="middle" align="center"> |
Cet attribut définit la bande passante maximum en émission |
d'un usager ou groupe d'usagers (non renseigné = infini). |
<HR> |
This attribute defines the maximum upload bandwidth |
for a user or group (nothing = unlimited). |
</td></tr> |
</table> |
<br> |
<a href="javascript:window.close();"><b>Close / Fermer</b></a> |
</center> |
</body> |
</html> |
/web/acc/manager/htdocs/help/callback_id_help.html |
---|
0,0 → 1,46 |
<html> |
<head> |
<title>Callback-ID Help Page</title> |
<link rel="stylesheet" href="../style.css"> |
</head> |
<body bgcolor="#80a040" background="../images/greenlines1.gif" link="black" alink="black"> |
<center> |
<table border=0 width=540 cellpadding=1 cellspacing=1> |
<tr valign=top> |
<td width=340></td> |
<td bgcolor="black" width=400> |
<table border=0 width=100% cellpadding=2 cellspacing=0> |
<tr bgcolor="#907030" align=right valign=top><th><font color="white">Callback-ID Help Page</font> </th></tr> |
</table> |
</td></tr> |
<tr bgcolor="black" valign=top><td colspan=2> |
<table border=0 width=100% cellpadding=12 cellspacing=0 bgcolor="#ffffd0" valign=top> |
<tr><td> |
<br> |
<center> |
<pre> |
Attribute Number: 20 |
Value: String |
</pre> |
<br> |
<pre> |
This attribute is used when a RADIUS implementation is set up to |
return a user's call. This is commonly used in corporate situations |
to avoid long-distance charges in hotel rooms and other remote |
locations. This value, A STRING, is often the identifier for a |
profile configured on the service equipment; there is no specific |
standrad for a string name, a triggered action, or something else. |
In other words, it is environment specific. RADIUS client gear is |
allowed to reject a connection if this attribute is present but |
not supported by the gear. |
</pre> |
</td></tr> |
<tr><td align=center> |
<a href="javascript:window.close();"><b>Close Window</b></a> |
</td></tr> |
</center> |
</table> |
</tr> |
</table> |
</body> |
</html> |
/web/acc/manager/htdocs/help/framed_ip_netmask_help.html |
---|
0,0 → 1,38 |
<html> |
<head> |
<title>Framed-IP-Netmask Help Page</title> |
<link rel="stylesheet" href="../style.css"> |
</head> |
<body bgcolor="#80a040" background="../images/greenlines1.gif" link="black" alink="black"> |
<center> |
<table border=0 width=540 cellpadding=1 cellspacing=1> |
<tr valign=top> |
<td width=340></td> |
<td bgcolor="black" width=400> |
<table border=0 width=100% cellpadding=2 cellspacing=0> |
<tr bgcolor="#907030" align=right valign=top><th><font color="white">Framed-IP-Netmask Help Page</font> </th></tr> |
</table> |
</td></tr> |
<tr bgcolor="black" valign=top><td colspan=2> |
<table border=0 width=100% cellpadding=12 cellspacing=0 bgcolor="#ffffd0" valign=top> |
<tr><td> |
<br> |
<center> |
<pre> |
Attribute Number: 9 |
Value: IPADDR |
</pre> |
<pre> |
This attribute can be used to assign a specific netmask to |
a connection. |
</pre> |
</td></tr> |
<tr><td align=center> |
<a href="javascript:window.close();"><b>Close Window</b></a> |
</td></tr> |
</center> |
</table> |
</tr> |
</table> |
</body> |
</html> |
/web/acc/manager/htdocs/help/badusers_help.html |
---|
0,0 → 1,36 |
<html> |
<head> |
<title>BADUSERS Help Page</title> |
<link rel="stylesheet" href="../style.css"> |
</head> |
<body bgcolor="#80a040" background="../images/greenlines1.gif" link="black" alink="black"> |
<center> |
<table border=0 width=540 cellpadding=1 cellspacing=1> |
<tr valign=top> |
<td width=340></td> |
<td bgcolor="black" width=400> |
<table border=0 width=100% cellpadding=2 cellspacing=0> |
<tr bgcolor="#907030" align=right valign=top><th><font color="white">Expiration Help Page</font> </th></tr> |
</table> |
</td></tr> |
<tr bgcolor="black" valign=top><td colspan=2> |
<table border=0 width=100% cellpadding=12 cellspacing=0 bgcolor="#ffffd0" valign=top> |
<tr><td> |
<br> |
<center> |
<pre> |
The badusers table can be used to keep a history of unauthorized actions by |
certain users. |
To add a user to the badusers table you first have to insert a descriptive text |
in the 'Lock Message' attribute |
</pre> |
</td></tr> |
<tr><td align=center> |
<a href="javascript:window.close();"><b>Close Window</b></a> |
</td></tr> |
</center> |
</table> |
</tr> |
</table> |
</body> |
</html> |
/web/acc/manager/htdocs/help/login_time_help2.html |
---|
0,0 → 1,49 |
<html> |
<head> |
<title>Login-Time Help Page</title> |
<link rel="stylesheet" href="../style.css"> |
</head> |
<body bgcolor="#80a040" background="../images/greenlines1.gif" link="black" alink="black"> |
<center> |
<table border=0 width=540 cellpadding=1 cellspacing=1> |
<tr valign=top> |
<td width=340></td> |
<td bgcolor="black" width=400> |
<table border=0 width=100% cellpadding=2 cellspacing=0> |
<tr bgcolor="#907030" align=right valign=top><th><font color="white">Login-Time Help Page</font> </th></tr> |
</table> |
</td></tr> |
<tr bgcolor="black" valign=top><td colspan=2> |
<table border=0 width=100% cellpadding=12 cellspacing=0 bgcolor="#ffffd0" valign=top> |
<tr><td> |
<br> |
<center> |
<pre> |
Login-Time defines the time span a user may login to the system. The |
format of a so-called time string is like the format used by UUCP. |
A time string may be a list of simple time strings separated by "|" or ",". |
Each simple time string must begin with a day definition. That can be just |
one day, multiple days, or a range of days separated by a hyphen. A |
day is Mo, Tu, We, Th, Fr, Sa or Su, or Wk for Mo-Fr. "Any" or "Al" |
means all days. |
After that a range of hours follows in hhmm-hhmm format. |
For example, "Wk2305-0855,Sa,Su2305-1655". |
Radiusd calculates the number of seconds left in the time span, and |
sets the Session-Timeout to that number of seconds. So if someones |
Login-Time is "Al0800-1800" and he logs in at 17:30, Session-Timeout |
is set to 1800 seconds so that he is kicked off at 18:00. |
</pre> |
</td></tr> |
<tr><td align=center> |
<a href="javascript:window.close();"><b>Close Window</b></a> |
</td></tr> |
</center> |
</table> |
</tr> |
</table> |
</body> |
</html> |
/web/acc/manager/htdocs/help/wispr_redirection_url_help.html |
---|
0,0 → 1,26 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
<HTML><!-- written by Rexy --> |
<HEAD> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
<title>Help Page</title> |
<link rel="stylesheet" href="/css/style.css" type="text/css"> |
</HEAD> |
<body> |
<center> |
<TABLE width="100%" border="0" cellspacing="0" cellpadding="0"> |
<tr><th>URL DE REDIRECTION - REDIRECTION URL</th></tr> |
<tr bgcolor="#FFCC66"><td><img src="/images/pix.gif" width="1" height="2"></td></tr> |
</TABLE> |
<TABLE width="100%" border=1 cellspacing=0 cellpadding=1> |
<tr><td valign="middle" align="center"> |
Cet attribut définit l'URL de redirection après authentification. |
(non renseigné = URL demandé par l'usager) |
<hr> |
This attribute defines the redirection URL after authentication. |
</td></tr> |
</table> |
<br> |
<a href="javascript:window.close();"><b>Close / Fermer</b></a> |
</center> |
</body> |
</html> |
/web/acc/manager/htdocs/help/chillispot_max_input_octets_help.html |
---|
0,0 → 1,31 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
<HTML><!-- written by Rexy --> |
<HEAD> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
<title>Help Page</title> |
<link rel="stylesheet" href="/css/style.css" type="text/css"> |
</HEAD> |
<body> |
<center> |
<TABLE width="100%" border="0" cellspacing="0" cellpadding="0"> |
<tr><th>VOLUME MAX D'OCTETS - MAX INPUT OCTETS</th></tr> |
<tr bgcolor="#FFCC66"><td><img src="/images/pix.gif" width="1" height="2"></td></tr> |
</TABLE> |
<TABLE width="100%" border=1 cellspacing=0 cellpadding=1> |
<tr><td valign="middle" align="center"> |
Cet attribut définit le nombre d'octets maximum que l'usager est |
autorisé à <u>émettre</u>. Après cette limite l'usager est déconnecté. |
<HR> |
This attribute defines the maximum number of octets the user is allowed to |
<u>transmit</u>. After this limit has been reached the user will be disconnected. |
</pre> |
</td></tr> |
<tr><td align=center> |
<a href="javascript:window.close();"><b>Close Window</b></a> |
</td></tr> |
</center> |
</table> |
</tr> |
</table> |
</body> |
</html> |
/web/acc/manager/htdocs/help/framed_compression_help.html |
---|
0,0 → 1,38 |
<html> |
<head> |
<title>Framed Compression Help Page</title> |
<link rel="stylesheet" href="../style.css"> |
</head> |
<body bgcolor="#80a040" background="../images/greenlines1.gif" link="black" alink="black"> |
<center> |
<table border=0 width=540 cellpadding=1 cellspacing=1> |
<tr valign=top> |
<td width=340></td> |
<td bgcolor="black" width=400> |
<table border=0 width=100% cellpadding=2 cellspacing=0> |
<tr bgcolor="#907030" align=right valign=top><th><font color="white">Framed Compression Help Page</font> </th></tr> |
</table> |
</td></tr> |
<tr bgcolor="black" valign=top><td colspan=2> |
<table border=0 width=100% cellpadding=12 cellspacing=0 bgcolor="#ffffd0" valign=top> |
<tr><td> |
<br> |
<center> |
<pre> |
Framed-Compression indicates a compression protocol to be used for the link. |
Possible values are: |
</pre> |
<i>None</i><br> |
<i>Van-Jacobson-TCP-IP</i><br> |
<i>IPX-Header-Compression</i><br> |
<i>Stac-LZS</i><br> |
</td></tr> |
<tr><td align=center> |
<a href="javascript:window.close();"><b>Close Window</b></a> |
</td></tr> |
</center> |
</table> |
</tr> |
</table> |
</body> |
</html> |
/web/acc/manager/htdocs/help/framed_protocol_help.html |
---|
0,0 → 1,42 |
<html> |
<head> |
<title>Framed Protocol Help Page</title> |
<link rel="stylesheet" href="../style.css"> |
</head> |
<body bgcolor="#80a040" background="../images/greenlines1.gif" link="black" alink="black"> |
<center> |
<table border=0 width=540 cellpadding=1 cellspacing=1> |
<tr valign=top> |
<td width=340></td> |
<td bgcolor="black" width=400> |
<table border=0 width=100% cellpadding=2 cellspacing=0> |
<tr bgcolor="#907030" align=right valign=top><th><font color="white">Framed Protocol Help Page</font> </th></tr> |
</table> |
</td></tr> |
<tr bgcolor="black" valign=top><td colspan=2> |
<table border=0 width=100% cellpadding=12 cellspacing=0 bgcolor="#ffffd0" valign=top> |
<tr><td> |
<br> |
<center> |
<pre> |
This Attribute indicates the framing to be used for framed access. |
It MAY be used in both Access-Request and Access-Accept packets. |
Possible values are: |
</pre> |
<i>1 PPP</i><br> |
<i>2 SLIP</i><br> |
<i>3 AppleTalk Remote Access Protocol (ARAP)</i><br> |
<i>4 Gandalf proprietary SingleLink/Multilink protocol</i><br> |
<i>5 Xylogics proprietary IPX/SLIP</i><br> |
<i>6 X.75 Synchronous</i><br> |
</td></tr> |
<tr><td align=center> |
<a href="javascript:window.close();"><b>Close Window</b></a> |
</td></tr> |
</center> |
</table> |
</tr> |
</table> |
</body> |
</html> |
/web/acc/manager/htdocs/help/chillispot_max_output_octets_help.html |
---|
0,0 → 1,27 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
<HTML><!-- written by Rexy --> |
<HEAD> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
<title>Help Page</title> |
<link rel="stylesheet" href="/css/style.css" type="text/css"> |
</HEAD> |
<body> |
<center> |
<TABLE width="100%" border="0" cellspacing="0" cellpadding="0"> |
<tr><th>VOLUME MAX EN SORTIE - MAX OUTPUT OCTET</th></tr> |
<tr bgcolor="#FFCC66"><td><img src="/images/pix.gif" width="1" height="2"></td></tr> |
</TABLE> |
<TABLE width="100%" border=1 cellspacing=0 cellpadding=1> |
<tr><td valign="middle" align="center"> |
Cet attribut définit le nombre d'octets maximum que l'usager est |
autorisé à <u>recevoir</u>. Après cette limite l'usager est déconnecté. |
<HR> |
This attribute defines the maximum number of octets the user is allowed to |
<u>receive</u>. After this limit has been reached the user will be disconnected. |
</td></tr> |
</table> |
<br> |
<a href="javascript:window.close();"><b>Close / Fermer</b></a> |
</center> |
</body> |
</html> |
/web/acc/manager/htdocs/help/expiration_help.html |
---|
0,0 → 1,30 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
<HTML><!-- written by Rexy --> |
<HEAD> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
<title>Help Page</title> |
<link rel="stylesheet" href="/css/style.css" type="text/css"> |
</HEAD> |
<body> |
<center> |
<TABLE width="100%" border="0" cellspacing="0" cellpadding="0"> |
<tr><th>DATE d'EXPIRATION - EXPIRATION DATE</th></tr> |
<tr bgcolor="#FFCC66"><td><img src="/images/pix.gif" width="1" height="2"></td></tr> |
</TABLE> |
<TABLE width="100%" border=1 cellspacing=0 cellpadding=1> |
<tr><td valign="middle" align="center"> |
Cet attribut définit la date d'expiration du compte. |
Le format est "jour mois année" (ex: 20 april 2002). |
Les mois en anglais sont : january, february, march, april, may, june, |
july, august, september, october, november, december |
<HR> |
This attribute can be used to set the user expiration date. It |
should be in the format "month_day month_name year" like: |
"20 april 2002" |
</td></tr> |
</table> |
<br> |
<a href="javascript:window.close();"><b>Close / Fermer</b></a> |
</center> |
</body> |
</html> |
/web/acc/manager/htdocs/help/port_limit_help.html |
---|
0,0 → 1,35 |
<html> |
<head> |
<title>Port Limit Help Page</title> |
<link rel="stylesheet" href="../style.css"> |
</head> |
<body bgcolor="#80a040" background="../images/greenlines1.gif" link="black" alink="black"> |
<center> |
<table border=0 width=540 cellpadding=1 cellspacing=1> |
<tr valign=top> |
<td width=340></td> |
<td bgcolor="black" width=400> |
<table border=0 width=100% cellpadding=2 cellspacing=0> |
<tr bgcolor="#907030" align=right valign=top><th><font color="white">Port Limit Help Page</font> </th></tr> |
</table> |
</td></tr> |
<tr bgcolor="black" valign=top><td colspan=2> |
<table border=0 width=100% cellpadding=12 cellspacing=0 bgcolor="#ffffd0" valign=top> |
<tr><td> |
<br> |
<center> |
<pre> |
Port-Limit is intended for use in conjuction with Multilink PPP or similar uses. |
It defines the maximum number of channels the user is allowed to open during |
a multilink dialup session. |
</pre> |
</td></tr> |
<tr><td align=center> |
<a href="javascript:window.close();"><b>Close Window</b></a> |
</td></tr> |
</center> |
</table> |
</tr> |
</table> |
</body> |
</html> |
/web/acc/manager/htdocs/help/framed_mtu_help.html |
---|
0,0 → 1,39 |
<html> |
<head> |
<title>Framed-MTU Help Page</title> |
<link rel="stylesheet" href="../style.css"> |
</head> |
<body bgcolor="#80a040" background="../images/greenlines1.gif" link="black" alink="black"> |
<center> |
<table border=0 width=540 cellpadding=1 cellspacing=1> |
<tr valign=top> |
<td width=340></td> |
<td bgcolor="black" width=400> |
<table border=0 width=100% cellpadding=2 cellspacing=0> |
<tr bgcolor="#907030" align=right valign=top><th><font color="white">Framed-MTU Help Page</font> </th></tr> |
</table> |
</td></tr> |
<tr bgcolor="black" valign=top><td colspan=2> |
<table border=0 width=100% cellpadding=12 cellspacing=0 bgcolor="#ffffd0" valign=top> |
<tr><td> |
<br> |
<center> |
<pre> |
Attribute Numer: 12 |
Value: Integer |
</pre> |
<pre> |
MTU, the Maximum Transfer Unit, is the largest |
packet size that can be transmitted over a connection.<br> |
The value can be between 64 and 65535. |
</pre> |
</td></tr> |
<tr><td align=center> |
<a href="javascript:window.close();"><b>Close Window</b></a> |
</td></tr> |
</center> |
</table> |
</tr> |
</table> |
</body> |
</html> |
/web/acc/manager/htdocs/help/idle_timeout_help.html |
---|
0,0 → 1,35 |
<html> |
<head> |
<title>Idle Timeout Help Page</title> |
<link rel="stylesheet" href="../style.css"> |
</head> |
<body bgcolor="#80a040" background="../images/greenlines1.gif" link="black" alink="black"> |
<center> |
<table border=0 width=540 cellpadding=1 cellspacing=1> |
<tr valign=top> |
<td width=340></td> |
<td bgcolor="black" width=400> |
<table border=0 width=100% cellpadding=2 cellspacing=0> |
<tr bgcolor="#907030" align=right valign=top><th><font color="white">Idle Timeout Help Page</font> </th></tr> |
</table> |
</td></tr> |
<tr bgcolor="black" valign=top><td colspan=2> |
<table border=0 width=100% cellpadding=12 cellspacing=0 bgcolor="#ffffd0" valign=top> |
<tr><td> |
<br> |
<center> |
<pre> |
This Attribute sets the maximum number of consecutive seconds of |
idle connection allowed to the user before termination of the |
session or prompt. |
</pre> |
</td></tr> |
<tr><td align=center> |
<a href="javascript:window.close();"><b>Close Window</b></a> |
</td></tr> |
</center> |
</table> |
</tr> |
</table> |
</body> |
</html> |
/web/acc/manager/htdocs/help/login_time_help.html |
---|
0,0 → 1,39 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
<HTML><!-- written by Rexy --> |
<HEAD> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
<title>Help Page</title> |
<link rel="stylesheet" href="/css/style.css" type="text/css"> |
</HEAD> |
<body> |
<center> |
<TABLE width="100%" border="0" cellspacing="0" cellpadding="0"> |
<tr><th>PERIODES DE CONNEXION - LOGIN TIME</th></tr> |
<tr bgcolor="#FFCC66"><td><img src="/images/pix.gif" width="1" height="2"></td></tr> |
</TABLE> |
<TABLE width="100%" border=1 cellspacing=0 cellpadding=1> |
<tr><td valign="middle" align="center"> |
Cet attribut définit les périodes pendant lesquelles un usager ou un groupe |
peut se connecter. |
Le format de cet attribut est une liste de chaînes de caractères séparées par une ",". |
Chaque chaîne définit une période de la semaine. |
Les journées sont définies ainsi : mo, tu, we, th, fr, sa ou su. |
"wk" couvre la période du lundi au vendredi. "any" couvre tous les jours de |
la semaine. |
Le jour est suivi du créneau horaire au format hhmm-hhmm |
Par exemple "Wk0755-1700,Sa,Su2000-2230" permet de se connecter les jours ouvrés de 7h55 à 17h00 et le week-end de 20h00 à 22h30 |
<hr> |
Login-Time defines the time span a user may login to the system. |
A time string may be a list of simple time strings separated by "|" or ",". |
Each simple time string must begin with a day definition. That can be just |
one day, multiple days, or a range of days separated by a hyphen. A |
day is Mo, Tu, We, Th, Fr, Sa or Su, or Wk for Mo-Fr. "Any" means all days. |
After that a range of hours follows in hhmm-hhmm format. |
For example, "Wk0755-1700,Sa,Su2000-2230" allows connections on opens days between 07h55 and 17h00 and the W.E between 20h00 and 22h30 |
</td></tr> |
</table> |
<br> |
<a href="javascript:window.close();"><b>Close / Fermer</b></a> |
</center> |
</body> |
</html> |
/web/acc/manager/htdocs/help/session_timeout_help.html |
---|
0,0 → 1,27 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
<HTML><!-- written by Rexy --> |
<HEAD> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
<title>Help page</title> |
<link rel="stylesheet" href="/css/style.css" type="text/css"> |
</HEAD> |
<body> |
<center> |
<TABLE width="100%" border="0" cellspacing="0" cellpadding="0"> |
<tr><th>DUREE DE SESSION - SESSION TIMEOUT</th></tr> |
<tr bgcolor="#FFCC66"><td><img src="/images/pix.gif" width="1" height="2"></td></tr> |
</TABLE> |
<TABLE width="100%" border=1 cellspacing=0 cellpadding=1> |
<tr><td valign="middle" align="center"> |
Ces attibuts ('durée limite mensuelle, journalière et d'une session') |
définissent la durée de connexion des usagers ou des groupes d'usagers (en secondes). |
<HR> |
These Attributes set the maximum number of seconds of service to be |
provided to the user or the users groups before termination of the session or prompt. |
</td></tr> |
</table> |
<br> |
<a href="javascript:window.close();"><b>Close / Fermer</b></a> |
</center> |
</body> |
</html> |
/web/acc/manager/htdocs/help/chillispot_bandwidth_max_down_help.html |
---|
0,0 → 1,27 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
<HTML><!-- written by Rexy --> |
<HEAD> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
<title>Help Page</title> |
<link rel="stylesheet" href="/css/style.css" type="text/css"> |
</HEAD> |
<body> |
<center> |
<TABLE width="100%" border="0" cellspacing="0" cellpadding="0"> |
<tr><th>BANDE PASSANTE MAX EN RECEPTION - BANDWIDTH MAX DOWN</th></tr> |
<tr bgcolor="#FFCC66"><td><img src="/images/pix.gif" width="1" height="2"></td></tr> |
</TABLE> |
<TABLE width="100%" border=1 cellspacing=0 cellpadding=1> |
<tr><td valign="middle" align="center"> |
Cet attribut définit la bande passante maximum en téléchargement |
d'un usager ou groupe d'usagers (non renseigné = infini). |
<HR> |
This attribute defines the maximum download bandwidth |
for a user or group (nothing = unlimited). |
</td></tr> |
</table> |
<br> |
<a href="javascript:window.close();"><b>Close / Fermer</b></a> |
</center> |
</body> |
</html> |
/web/acc/manager/htdocs/help/framed_ip_address_help.html |
---|
0,0 → 1,40 |
<html> |
<head> |
<title>Framed-IP-Address Help Page</title> |
<link rel="stylesheet" href="../style.css"> |
</head> |
<body bgcolor="#80a040" background="../images/greenlines1.gif" link="black" alink="black"> |
<center> |
<table border=0 width=540 cellpadding=1 cellspacing=1> |
<tr valign=top> |
<td width=340></td> |
<td bgcolor="black" width=400> |
<table border=0 width=100% cellpadding=2 cellspacing=0> |
<tr bgcolor="#907030" align=right valign=top><th><font color="white">Framed-IP-Address Help Page</font> </th></tr> |
</table> |
</td></tr> |
<tr bgcolor="black" valign=top><td colspan=2> |
<table border=0 width=100% cellpadding=12 cellspacing=0 bgcolor="#ffffd0" valign=top> |
<tr><td> |
<br> |
<center> |
<pre> |
Framed-IP-Address can be used to specify the IP address that |
a dialup user will use. There are two special values: |
</pre> |
<i>255.255.255.255: Assign the user requested IP</i><br> |
<i>255.255.255.254: Assign an IP from the NAS IP pool</i><br> |
<pre> |
All other values will be assigned as they are to the user dialup |
interface |
</pre> |
</td></tr> |
<tr><td align=center> |
<a href="javascript:window.close();"><b>Close Window</b></a> |
</td></tr> |
</center> |
</table> |
</tr> |
</table> |
</body> |
</html> |
/web/acc/manager/htdocs/help/lock_message_help.html |
---|
0,0 → 1,37 |
<html> |
<head> |
<title>Lock Message Help Page</title> |
<link rel="stylesheet" href="../style.css"> |
</head> |
<body bgcolor="#80a040" background="../images/greenlines1.gif" link="black" alink="black"> |
<center> |
<table border=0 width=540 cellpadding=1 cellspacing=1> |
<tr valign=top> |
<td width=340></td> |
<td bgcolor="black" width=400> |
<table border=0 width=100% cellpadding=2 cellspacing=0> |
<tr bgcolor="#907030" align=right valign=top><th><font color="white">Lock Message Help Page</font> </th></tr> |
</table> |
</td></tr> |
<tr bgcolor="black" valign=top><td colspan=2> |
<table border=0 width=100% cellpadding=12 cellspacing=0 bgcolor="#ffffd0" valign=top> |
<tr><td> |
<br> |
<center> |
<pre> |
The Lock Message will be included as a Reply-Item in all radius server responses for |
the user. It will also appear in the Usefull User Description in the user admin page. |
It is intended to be used as a hint to the user and to the administrator for the reason |
of the user lock out. |
In case it is a multi word message it should be enclosed in double quotes |
</pre> |
</td></tr> |
<tr><td align=center> |
<a href="javascript:window.close();"><b>Close Window</b></a> |
</td></tr> |
</center> |
</table> |
</tr> |
</table> |
</body> |
</html> |
/web/acc/manager/htdocs/help/reply_message_help.html |
---|
0,0 → 1,50 |
<html> |
<head> |
<title>Reply-Message Help Page</title> |
<link rel="stylesheet" href="../style.css"> |
</head> |
<body bgcolor="#80a040" background="../images/greenlines1.gif" link="black" alink="black"> |
<center> |
<table border=0 width=540 cellpadding=1 cellspacing=1> |
<tr valign=top> |
<td width=340></td> |
<td bgcolor="black" width=400> |
<table border=0 width=100% cellpadding=2 cellspacing=0> |
<tr bgcolor="#907030" align=right valign=top><th><font color="white">Reply-Message Help Page</font> </th></tr> |
</table> |
</td></tr> |
<tr bgcolor="black" valign=top><td colspan=2> |
<table border=0 width=100% cellpadding=12 cellspacing=0 bgcolor="#ffffd0" valign=top> |
<tr><td> |
<br> |
<center> |
<pre> |
Attribute Numer: 18 |
Value: String |
</pre> |
<pre> |
The Reply-Message attribute is used to send a message back to the client |
in response of another packet. |
RFC2865 describes it as easy as:<br> |
"This attribute indicates text which MAY be displayed to the user. |
When used in an Access-Accept, it is the success message. |
When used in an Access-Reject, it is the failure message. It MAY |
indicate a dialog message to prompt the user before another |
Access-Request attempt. |
When used in an Access-Challenge, it MAY indicate a dialog message |
to prompt the user for a response. |
Multiple Reply-Message's MAY be included and if any are displayed, |
they MUST be displayed in the same order as they appear in the packet. |
A summary of the Reply-Message Attribute format is shown below. The |
fields are transmitted from left to right." |
</pre> |
</td></tr> |
<tr><td align=center> |
<a href="javascript:window.close();"><b>Close Window</b></a> |
</td></tr> |
</center> |
</table> |
</tr> |
</table> |
</body> |
</html> |
/web/acc/manager/htdocs/help/dialup_access_help.html |
---|
0,0 → 1,36 |
<html> |
<head> |
<title>Dialup Access Help Page</title> |
<link rel="stylesheet" href="../style.css"> |
</head> |
<body bgcolor="#80a040" background="../images/greenlines1.gif" link="black" alink="black"> |
<center> |
<table border=0 width=540 cellpadding=1 cellspacing=1> |
<tr valign=top> |
<td width=340></td> |
<td bgcolor="black" width=400> |
<table border=0 width=100% cellpadding=2 cellspacing=0> |
<tr bgcolor="#907030" align=right valign=top><th><font color="white">Dialup Access Help Page</font> </th></tr> |
</table> |
</td></tr> |
<tr bgcolor="black" valign=top><td colspan=2> |
<table border=0 width=100% cellpadding=12 cellspacing=0 bgcolor="#ffffd0" valign=top> |
<tr><td> |
<br> |
<center> |
<pre> |
If the Dialup-Access attribute is specified, the ldap module |
checks for its existance in user object. If it exists and is |
set to FALSE, user is denied remote access. Otherwise, the user |
is allowed remote access. |
</pre> |
</td></tr> |
<tr><td align=center> |
<a href="javascript:window.close();"><b>Close Window</b></a> |
</td></tr> |
</center> |
</table> |
</tr> |
</table> |
</body> |
</html> |
/web/acc/manager/htdocs/help/filter_id_help.html |
---|
0,0 → 1,38 |
<html> |
<head> |
<title>Framed-Id Help Page</title> |
<link rel="stylesheet" href="../style.css"> |
</head> |
<body bgcolor="#80a040" background="../images/greenlines1.gif" link="black" alink="black"> |
<center> |
<table border=0 width=540 cellpadding=1 cellspacing=1> |
<tr valign=top> |
<td width=340></td> |
<td bgcolor="black" width=400> |
<table border=0 width=100% cellpadding=2 cellspacing=0> |
<tr bgcolor="#907030" align=right valign=top><th><font color="white">Filter-Id Help Page</font> </th></tr> |
</table> |
</td></tr> |
<tr bgcolor="black" valign=top><td colspan=2> |
<table border=0 width=100% cellpadding=12 cellspacing=0 bgcolor="#ffffd0" valign=top> |
<tr><td> |
<br> |
<center> |
<pre> |
This Attribute indicates the name of the filter list for this |
user. Zero or more Filter-Id attributes MAY be sent in an |
Access-Accept packet. |
Identifying a filter list by name allows the filter to be used on |
different NASes without regard to filter-list implementation |
details. |
</td></tr> |
<tr><td align=center> |
<a href="javascript:window.close();"><b>Close Window</b></a> |
</td></tr> |
</center> |
</table> |
</tr> |
</table> |
</body> |
</html> |
/web/acc/manager/htdocs/help/service_type_help.html |
---|
0,0 → 1,81 |
<html> |
<head> |
<title>Service-Type Help Page</title> |
<link rel="stylesheet" href="../style.css"> |
</head> |
<body bgcolor="#80a040" background="../images/greenlines1.gif" link="black" alink="black"> |
<center> |
<table border=0 width=540 cellpadding=1 cellspacing=1> |
<tr valign=top> |
<td width=340></td> |
<td bgcolor="black" width=400> |
<table border=0 width=100% cellpadding=2 cellspacing=0> |
<tr bgcolor="#907030" align=right valign=top><th><font color="white">Service-Type Help Page</font> </th></tr> |
</table> |
</td></tr> |
<tr bgcolor="black" valign=top><td colspan=2> |
<table border=0 width=100% cellpadding=12 cellspacing=0 bgcolor="#ffffd0" valign=top> |
<tr><td> |
<br> |
<center> |
<pre> |
This Attribute indicates the type of service the user has |
requested, or the type of service to be provided. It MAY be used |
in both Access-Request and Access-Accept packets. A NAS is not |
required to implement all of these service types, and MUST treat |
unknown or unsupported Service-Types as though an Access-Reject |
had been received instead. |
Possible values are. |
</pre> |
<i>1 Login</i><br> |
<i>2 Framed</i><br> |
<i>3 Callback Login</i><br> |
<i>4 Callback Framed</i><br> |
<i>5 Outbound</i><br> |
<i>6 Administrative</i><br> |
<i>7 NAS Prompt</i><br> |
<i>8 Authenticate Only</i><br> |
<i>9 Callback NAS Prompt</i><br> |
<pre> |
The service types are defined as follows when used in an Access- |
Accept. When used in an Access-Request, they should be considered |
to be a hint to the RADIUS server that the NAS has reason to |
believe the user would prefer the kind of service indicated, but |
the server is not required to honor the hint. |
Login The user should be connected to a host. |
Framed A Framed Protocol should be started for the |
User, such as PPP or SLIP. |
Callback Login The user should be disconnected and called |
back, then connected to a host. |
Callback Framed The user should be disconnected and called |
back, then a Framed Protocol should be started |
for the User, such as PPP or SLIP. |
Outbound The user should be granted access to outgoing |
devices. |
Administrative The user should be granted access to the |
administrative interface to the NAS from which |
privileged commands can be executed. |
NAS Prompt The user should be provided a command prompt |
on the NAS from which non-privileged commands |
can be executed. |
Authenticate Only Only Authentication is requested, and no |
authorization information needs to be returned |
in the Access-Accept (typically used by proxy |
servers rather than the NAS itself). |
Callback NAS Prompt The user should be disconnected and called |
back, then provided a command prompt on the |
NAS from which non-privileged commands can be |
executed. |
</pre> |
</td></tr> |
<tr><td align=center> |
<a href="javascript:window.close();"><b>Close Window</b></a> |
</td></tr> |
</center> |
</table> |
</tr> |
</table> |
</body> |
</html> |
/web/acc/manager/htdocs/help/auth_type_help.html |
---|
0,0 → 1,44 |
<html> |
<head> |
<title>Auth-Type Help Page</title> |
<link rel="stylesheet" href="../style.css"> |
</head> |
<body bgcolor="#80a040" background="../images/greenlines1.gif" link="black" alink="black"> |
<center> |
<table border=0 width=540 cellpadding=1 cellspacing=1> |
<tr valign=top> |
<td width=340></td> |
<td bgcolor="black" width=400> |
<table border=0 width=100% cellpadding=2 cellspacing=0> |
<tr bgcolor="#907030" align=right valign=top><th><font color="white">Auth-Type Help Page</font> </th></tr> |
</table> |
</td></tr> |
<tr bgcolor="black" valign=top><td colspan=2> |
<table border=0 width=100% cellpadding=12 cellspacing=0 bgcolor="#ffffd0" valign=top> |
<tr><td> |
<br> |
<center> |
<pre> |
Value: String |
</pre> |
<pre> |
The Auth-Type attribute describes which authentication module to call. |
Standard values from a default FreeRADIUS setup my be: |
</pre> |
<i>PAP</i><br> |
<i>CHAP</i><br> |
<i>MSCHAP</i><br> |
<i>PAM</i><br> |
<i>UNIX</i><br> |
<i>LADP</i><br> |
<i>EAP</i><br> |
</td></tr> |
<tr><td align=center> |
<a href="javascript:window.close();"><b>Close Window</b></a> |
</td></tr> |
</center> |
</table> |
</tr> |
</table> |
</body> |
</html> |
/web/acc/manager/htdocs/help/chillispot_max_total_octets_help.html |
---|
0,0 → 1,33 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
<HTML><!-- written by Rexy --> |
<HEAD> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
<title>Help Page</title> |
<link rel="stylesheet" href="/css/style.css" type="text/css"> |
</HEAD> |
<body> |
<center> |
<TABLE width="100%" border="0" cellspacing="0" cellpadding="0"> |
<tr><th>VOLULE MAX d'OCTETS TRANFERE - MAX TOTAL OCTETS</th></tr> |
<tr bgcolor="#FFCC66"><td><img src="/images/pix.gif" width="1" height="2"></td></tr> |
</TABLE> |
<TABLE width="100%" border=1 cellspacing=0 cellpadding=1> |
<tr><td valign="middle" align="center"> |
Cet attribut définit le nombre d'octets maximum que l'usager est |
autorisé à transférer (somme des octets émis et reçus). |
Après cette limite l'usager est déconnecté. |
<HR> |
This attribute defines the maximum number of octets the user is |
allowed to transfer (sum of octets transmitted and received). |
After this limit has been reached the user will be disconnected. |
</pre> |
</td></tr> |
<tr><td align=center> |
<a href="javascript:window.close();"><b>Close Window</b></a> |
</td></tr> |
</center> |
</table> |
</tr> |
</table> |
</body> |
</html> |
/web/acc/manager/htdocs/help/help.php |
---|
0,0 → 1,76 |
<html> |
<head> |
<title>Help page</title> |
<link rel="stylesheet" href="../style.css"> |
<!-- Fonctions JavaScript --> |
<SCRIPT LANGUAGE="JavaScript"> |
function ouvrir(page) |
{ |
window.open(page, "portail", "alwaysRaised=yes,toolbar=no,location=yes,directories=no,status=no,menubar=yes,scrollbars=yes,resizable=no,copyhistory=no,hotkeys=no,width=640 ,height=480"); |
} |
</SCRIPT> |
<!-- fin javascript --> |
</head> |
<body bgcolor="#EFEFEF"> |
<center> |
<table border=0 width=550 cellpadding=0 cellspacing=0> |
<tr valign=top> |
<!--<td align=center><img src="../images/title2.gif"></td>--> |
</tr> |
</table> |
<table border=0 width=400 cellpadding=0 cellspacing=2></table> |
<br> |
<table border=0 width=540 cellpadding=1 cellspacing=1> |
<tr valign=top> |
<td width=540></td> |
<td bgcolor="black" width=400> |
<table border=0 width=100% cellpadding=2 cellspacing=0> |
<tr bgcolor="#907030" align=right valign=top><th><font color="white">Page d'aide de Dialup Admin</font> </th></tr> |
</table> |
</td></tr> |
<tr bgcolor="black" valign=top><td colspan=2> |
<table border=0 width=100% cellpadding=12 cellspacing=0 bgcolor="#ffffd0" valign=top> |
<tr><td> |
<br> |
<!--<b>Choisissez le fichier d'aide que vous voulez lire :</b><br><br> |
<form name="readhelp" method=post> |
<select name=help_file> |
<?php |
#$selected[$help_file] = 'selected'; |
# |
#echo <<<EOM |
#<option $selected[faq] value="faq">FAQ File |
#<option $selected[readme] value="readme">README File |
#<option $selected[howto] value="howto">HOWTO File |
#EOM; |
?> |
</select> |
<br><br> |
<input type=submit class=button value="Read File"> |
</form> |
--> |
<td><a href=javascript:ouvrir("http://wiki.freeradius.org/index.php/FAQ")>http://wiki.freeradius.org/index.php/FAQ</a></td> |
<pre> |
<?php |
#$in_file = '../../doc/FAQ_dialup.html'; |
#if ($help_file == 'readme') |
# $in_file = '../../README'; |
#else if ($help_file == 'howto') |
# $in_file = '../../doc/HOWTO'; |
#else if ($help_file == 'faq') |
# $in_file = 'FAQ'; |
#if ($in_file != '') |
# readfile("$in_file"); |
?> |
</pre> |
<br> |
</td></tr> |
</table> |
</tr> |
</table> |
</body> |
</html> |
/web/acc/manager/lib/sql/delete_group.php |
---|
0,0 → 1,31 |
<?php |
if (is_file("../lib/sql/drivers/$config[sql_type]/functions.php")) |
include_once("../lib/sql/drivers/$config[sql_type]/functions.php"); |
else{ |
echo "<b>Could not include SQL library</b><br>\n"; |
exit(); |
} |
$link = @da_sql_pconnect($config); |
if ($link){ |
$res = @da_sql_query($link,$config, |
"DELETE FROM $config[sql_groupreply_table] WHERE groupname = '$login';"); |
if ($res){ |
$res = @da_sql_query($link,$config, |
"DELETE FROM $config[sql_groupcheck_table] WHERE groupname = '$login';"); |
if ($res){ |
$res = @da_sql_query($link,$config, |
"DELETE FROM $config[sql_usergroup_table] WHERE groupname = '$login';"); |
if ($res) |
echo "<b>Le groupe $login a été correctement supprimé</b><br>\n"; |
else |
echo "<b>Error deleting group $login from usergroup table: " . da_sql_error($link,$config) . "</b><br>\n"; |
} |
else |
echo "<b>Error deleting group $login from group check table: " . da_sql_error($link,$config) . "</b><br>\n"; |
} |
else |
echo "<b>Error deleting group $login from group reply table: " . da_sql_error($link,$config) . "</b><br>\n"; |
} |
else |
echo "<b>Could not connect to SQL database</b><br>\n"; |
?> |
/web/acc/manager/lib/sql/password_check.php |
---|
0,0 → 1,36 |
<?php |
require('password.php'); |
if (is_file("../lib/sql/drivers/$config[sql_type]/functions.php")) |
include_once("../lib/sql/drivers/$config[sql_type]/functions.php"); |
else{ |
echo "<b>Could not include SQL library</b><br>\n"; |
exit(); |
} |
if ($action == 'checkpass'){ |
$link = @da_sql_pconnect($config); |
if ($link){ |
$res = @da_sql_query($link,$config, |
"SELECT attribute,value FROM $config[sql_check_table] WHERE username = '$login' |
AND attribute = '$config[sql_password_attribute]';"); |
if ($res){ |
$row = @da_sql_fetch_array($res,$config); |
if (is_file("../lib/crypt/$config[general_encryption_method].php")){ |
include("../lib/crypt/$config[general_encryption_method].php"); |
$enc_passwd = $row[value]; |
$passwd = da_encrypt($passwd,$enc_passwd); |
if ($passwd == $enc_passwd) |
// $msg = '<font color=blue><b>YES It is that</b></font>'; |
$msg = '<font color=blue><b>Le mot de passe est correct</b></font>'; |
else |
// $msg = '<font color=red><b>NO It is wrong</b></font>'; |
$msg = '<font color=red><b>Le mot de passe n\'est pas correct</b></font>'; |
} |
else |
echo "<b>Could not open encryption library file</b><br>\n"; |
} |
} |
echo "<b>$msg</b>\n"; |
} |
?> |
</form> |
/web/acc/manager/lib/sql/create_group.php |
---|
0,0 → 1,89 |
<?php |
require_once('../lib/functions.php'); |
if (is_file("../lib/sql/drivers/$config[sql_type]/functions.php")) |
include_once("../lib/sql/drivers/$config[sql_type]/functions.php"); |
else{ |
echo "<b>Could not include SQL library</b><br>\n"; |
exit(); |
} |
if ($config[sql_use_operators] == 'true'){ |
include("../lib/operators.php"); |
$text = ',op'; |
$passwd_op = ",':='"; |
} |
$da_abort=0; |
$op_val2 = ''; |
$link = @da_sql_pconnect($config); |
if ($link){ |
$Members = preg_split("/[\n\s]+/",$members,-1,PREG_SPLIT_NO_EMPTY); |
if (!empty($Members)){ |
foreach ($Members as $member){ |
$member = da_sql_escape_string($member); |
$res = @da_sql_query($link,$config, |
"INSERT INTO $config[sql_usergroup_table] (username,groupname) |
VALUES ('$member','$login');"); |
if (!$res || !@da_sql_affected_rows($link,$res,$config)){ |
echo "<b>Unable to add user $member in group $login: " . da_sql_error($link,$config) . "</b><br>\n"; |
$da_abort=1; |
} |
} |
} |
else |
{ |
$res = @da_sql_query($link,$config, |
"INSERT INTO $config[sql_usergroup_table] (username,groupname) |
VALUES ('$login','$login');"); |
if (!$res || !@da_sql_affected_rows($link,$res,$config)) |
{ |
echo "<b>Unable to add user $member in group $login: " . da_sql_error($link,$config) . "</b><br>\n"; |
$da_abort=1; |
} |
else |
{ |
echo "<b>Un groupe ne pouvant être vide, l'usager '$login' a été créé (usager virtuel)<br>"; |
} |
} |
if (!$da_abort) |
{ |
foreach($show_attrs as $key => $attr){ |
if ($attrmap["$key"] == 'none') |
continue; |
if ($attrmap["$key"] == ''){ |
$attrmap["$key"] = $key; |
$attr_type["$key"] = 'replyItem'; |
$rev_attrmap["$key"] = $key; |
} |
if ($attr_type["$key"] == 'checkItem'){ |
$table = "$config[sql_groupcheck_table]"; |
$type = 1; |
} |
else if ($attr_type["$key"] == 'replyItem'){ |
$table = "$config[sql_groupreply_table]"; |
$type = 2; |
} |
$val = $$attrmap["$key"]; |
$val = da_sql_escape_string($val); |
$op_name = $attrmap["$key"] . '_op'; |
$op_val = $$op_name; |
if ($op_val != ''){ |
$op_val = da_sql_escape_string($op_val); |
if (check_operator($op_val,$type) == -1){ |
echo "<b>Invalid operator ($op_val) for attribute $key</b><br>\n"; |
coninue; |
} |
$op_val2 = ",'$op_val'"; |
} |
if ($val == '' || check_defaults($val,$op_val,$default_vals["$key"])) |
continue; |
$res = @da_sql_query($link,$config, |
"INSERT INTO $table (attribute,value,groupname $text) |
VALUES ('$attrmap[$key]','$val','$login' $op_val2);"); |
if (!$res || !@da_sql_affected_rows($link,$res,$config)) |
echo "<b>Query failed for attribute $key: " . da_sql_error($link,$config) . "</b><br>\n"; |
} |
echo "<b>Le groupe $login a été correctement créé</b><br>\n"; |
} |
} |
else |
echo "<b>Could not connect to SQL database</b><br>\n"; |
?> |
/web/acc/manager/lib/sql/delete_user.php |
---|
0,0 → 1,37 |
<?php |
if (is_file("../lib/sql/drivers/$config[sql_type]/functions.php")) |
include_once("../lib/sql/drivers/$config[sql_type]/functions.php"); |
else{ |
echo "<b>Could not include SQL library</b><br>\n"; |
exit(); |
} |
$link = @da_sql_pconnect($config); |
if ($link){ |
$res = @da_sql_query($link,$config, |
"DELETE FROM $config[sql_reply_table] WHERE username = '$login';"); |
if ($res){ |
$res = @da_sql_query($link,$config, |
"DELETE FROM $config[sql_check_table] WHERE username = '$login';"); |
if ($res){ |
$res = @da_sql_query($link,$config, |
"DELETE FROM $config[sql_usergroup_table] WHERE username = '$login';"); |
if (!$res) |
echo "<b>Error deleting user $login from user group table: " . da_sql_error($link,$config) . "</b><br>\n"; |
if ($config[sql_use_user_info_table] == 'true'){ |
$res = @da_sql_query($link,$config, |
"DELETE FROM $config[sql_user_info_table] WHERE username = '$login';"); |
if ($res) |
echo "<b>L'usager $login a été correctement supprimé</b><br>\n"; |
else |
echo "<b>Error deleting user $login from user info table: " . da_sql_error($link,$config) . "</b><br>\n"; |
} |
} |
else |
echo "<b>Error deleting user $login from check table: " . da_sql_error($link,$config) . "</b><br>\n"; |
} |
else |
echo "<b>Error deleting user $login from reply table: " . da_sql_error($link,$config) . "</b><br>\n"; |
} |
else |
echo "<b>Could not connect to SQL database</b><br>\n"; |
?> |
/web/acc/manager/lib/sql/find.php |
---|
0,0 → 1,57 |
<?php |
if (is_file("../lib/sql/drivers/$config[sql_type]/functions.php")) |
include_once("../lib/sql/drivers/$config[sql_type]/functions.php"); |
else{ |
echo "<b>Could not include SQL library</b><br>\n"; |
exit(); |
} |
unset($found_users); |
$link = @da_sql_pconnect($config); |
if ($link){ |
$search = da_sql_escape_string($search); |
if (!is_numeric($max)) |
# $max = 10; |
# modif by MG fo Alcasar |
$max = 40; |
if ($max > 500) |
$max = 10; |
if (($search_IN == 'name' || $search_IN == 'department' || $search_IN == 'username') && |
$config[sql_use_user_info_table] == 'true'){ |
$res = @da_sql_query($link,$config, |
"SELECT " . da_sql_limit($max,0,$config) . " username FROM $config[sql_user_info_table] WHERE |
lower($search_IN) LIKE '%$search%' " . |
# da_sql_limit($max,1,$config) . " " . da_sql_limit($max,2,$config) . " ;"); |
# modif by MG for Alcasar |
da_sql_limit($max,1,$config) . " " . da_sql_limit($max,1,$config) . " ;"); |
if ($res){ |
while(($row = @da_sql_fetch_array($res,$config))) |
$found_users[] = $row[username]; |
} |
else |
"<b>Database query failed: " . da_sql_error($link,$config) . "</b><br>\n"; |
} |
else if ($search_IN == 'radius' && $radius_attr != ''){ |
require("../lib/sql/attrmap.php"); |
if ($attrmap["$radius_attr"] == ''){ |
$attrmap["$radius_attr"] = $radius_attr; |
$attr_type["$radius_attr"] = 'replyItem'; |
} |
$table = ($attr_type[$radius_attr] == 'checkItem') ? $config[sql_check_table] : $config[sql_reply_table]; |
$attr = $attrmap[$radius_attr]; |
$attr = da_sql_escape_string($attr); |
$res = @da_sql_query($link,$config, |
"SELECT " . da_sql_limit($max,0,$config) . " username FROM $table WHERE attribute = '$attr' |
AND value LIKE '%$search%' " . da_sql_limit($max,1,$config) . " " . da_sql_limit($max,2,$config) . " ;"); |
if ($res){ |
while(($row = @da_sql_fetch_array($res,$config))) |
$found_users[] = $row[username]; |
} |
else |
"<b>Database query failed: " . da_sql_error($link,$config) . "</b><br>\n"; |
} |
} |
else |
echo "<b>Could not connect to SQL database</b><br>\n"; |
?> |
/web/acc/manager/lib/sql/create_user.php |
---|
0,0 → 1,120 |
<?php |
if (is_file("../lib/sql/drivers/$config[sql_type]/functions.php")) |
include_once("../lib/sql/drivers/$config[sql_type]/functions.php"); |
else{ |
echo "<b>Could not include SQL library</b><br>\n"; |
exit(); |
} |
include_once('../lib/functions.php'); |
if ($config[sql_use_operators] == 'true'){ |
include("../lib/operators.php"); |
$text = ',op'; |
$passwd_op = ",':='"; |
} |
$da_abort=0; |
$op_val2 = ''; |
$link = @da_sql_pconnect($config); |
if ($link){ |
if (is_file("../lib/crypt/$config[general_encryption_method].php")){ |
include("../lib/crypt/$config[general_encryption_method].php"); |
$passwd = da_encrypt($passwd); |
$passwd = da_sql_escape_string($passwd); |
$res = @da_sql_query($link,$config, |
"INSERT INTO $config[sql_check_table] (attribute,value,username $text) |
VALUES ('$config[sql_password_attribute]','$passwd','$login' $passwd_op);"); |
if (!$res || !@da_sql_affected_rows($link,$res,$config)){ |
echo "<b>Unable to add user $login: " . da_sql_error($link,$config) . "</b><br>\n"; |
$da_abort=1; |
} |
if ($config[sql_use_user_info_table] == 'true' && !$da_abort){ |
$res = @da_sql_query($link,$config, |
"SELECT username FROM $config[sql_user_info_table] WHERE |
username = '$login';"); |
if ($res){ |
if (!@da_sql_num_rows($res,$config)){ |
$Fcn = da_sql_escape_string($Fcn); |
$Fmail = da_sql_escape_string($Fmail); |
$Fou = da_sql_escape_string($Fou); |
$Fhomephone = da_sql_escape_string($Fhomephone); |
$Fworkphone = da_sql_escape_string($Fworkphone); |
$Fmobile = da_sql_escape_string($Fmobile); |
$res = @da_sql_query($link,$config, |
"INSERT INTO $config[sql_user_info_table] |
(username,name,mail,department,homephone,workphone,mobile) VALUES |
('$login','$Fcn','$Fmail','$Fou','$Fhomephone','$Ftelephonenumber','$Fmobile');"); |
if (!$res || !@da_sql_affected_rows($link,$res,$config)) |
echo "<b>Could not add user information in user info table: " . da_sql_error($link,$config) . "</b><br>\n"; |
} |
else |
echo "<b>Cet usager existe déjà dans la table 'info'</b><br>\n"; |
} |
else |
echo "<b>Could not add user information in user info table: " . da_sql_error($link,$config) . "</b><br>\n"; |
} |
if ($Fgroup != ''){ |
$Fgroup = da_sql_escape_string($Fgroup); |
$res = @da_sql_query($link,$config, |
"SELECT username FROM $config[sql_usergroup_table] |
WHERE username = '$login' AND groupname = '$Fgroup';"); |
if ($res){ |
if (!@da_sql_num_rows($res,$config)){ |
$res = @da_sql_query($link,$config, |
"INSERT INTO $config[sql_usergroup_table] |
(username,groupname) VALUES ('$login','$Fgroup');"); |
if (!$res || !@da_sql_affected_rows($link,$res,$config)) |
echo "<b>Could not add user to group $Fgroup. SQL Error</b><br>\n"; |
} |
else |
echo "<b>User already is a member of group $Fgroup</b><br>\n"; |
} |
else |
echo "<b>Could not add user to group $Fgroup: " . da_sql_error($link,$config) . "</b><br>\n"; |
} |
if (!$da_abort){ |
if ($Fgroup != '') |
require('../lib/defaults.php'); |
foreach($show_attrs as $key => $attr){ |
if ($attrmap["$key"] == 'none') |
continue; |
if ($attrmap["$key"] == ''){ |
$attrmap["$key"] = $key; |
$attr_type["$key"] = 'replyItem'; |
$rev_attrmap["$key"] = $key; |
} |
if ($attr_type["$key"] == 'checkItem'){ |
$table = "$config[sql_check_table]"; |
$type = 1; |
} |
else if ($attr_type["$key"] == 'replyItem'){ |
$table = "$config[sql_reply_table]"; |
$type = 2; |
} |
$val = $$attrmap["$key"]; |
$val = da_sql_escape_string($val); |
$op_name = $attrmap["$key"] . '_op'; |
$op_val = $$op_name; |
if ($op_val != ''){ |
$op_val = da_sql_escape_string($op_val); |
if (check_operator($op_val,$type) == -1){ |
echo "<b>Invalid operator ($op_val) for attribute $key</b><br>\n"; |
coninue; |
} |
$op_val2 = ",'$op_val'"; |
} |
if ($val == '' || check_defaults($val,$op_val,$default_vals["$key"])) |
continue; |
$res = @da_sql_query($link,$config, |
"INSERT INTO $table (attribute,value,username $text) |
VALUES ('$attrmap[$key]','$val','$login' $op_val2);"); |
if (!$res || !@da_sql_affected_rows($link,$res,$config)) |
echo "<b>Query failed for attribute $key: " . da_sql_error($link,$config) . "</b><br>\n"; |
} |
} |
echo "<b>Usager correctement créé</b><br>\n"; |
} |
else |
echo "<b>Could not open encryption library file</b><br>\n"; |
} |
else |
echo "<b>Could not connect to SQL database</b><br>\n"; |
?> |
/web/acc/manager/lib/sql/drivers/mysql/functions.php |
---|
0,0 → 1,136 |
<?php |
function da_sql_limit($limit,$point,$config) |
{ |
switch($point){ |
case 0: |
return ''; |
case 1: |
return ''; |
//modif by MG for Alcasar |
case 2: |
return "LIMIT $limit"; |
case 3: |
return "LIMIT $limit"; |
} |
} |
function da_sql_host_connect($server,$config) |
{ |
if ($config[sql_use_http_credentials] == 'yes'){ |
global $HTTP_SERVER_VARS; |
$SQL_user = $HTTP_SERVER_VARS["PHP_AUTH_USER"]; |
$SQL_passwd = $HTTP_SERVER_VARS["PHP_AUTH_PW"]; |
} |
else{ |
$SQL_user = $config[sql_username]; |
$SQL_passwd = $config[sql_password]; |
} |
if ($config[sql_connect_timeout] != 0) |
@ini_set('mysql.connect_timeout',$config[sql_connect_timeout]); |
if ($config[sql_debug] == 'true') |
print "<b>DEBUG(SQL,MYSQL DRIVER): Connect: User=$SQL_user,Password=$SQL_passwd </b><br>\n"; |
return @mysql_connect("$server:$config[sql_port]",$SQL_user,$SQL_passwd); |
} |
function da_sql_connect($config) |
{ |
if ($config[sql_use_http_credentials] == 'yes'){ |
global $HTTP_SERVER_VARS; |
$SQL_user = $HTTP_SERVER_VARS["PHP_AUTH_USER"]; |
$SQL_passwd = $HTTP_SERVER_VARS["PHP_AUTH_PW"]; |
} |
else{ |
$SQL_user = $config[sql_username]; |
$SQL_passwd = $config[sql_password]; |
} |
if ($config[sql_connect_timeout] != 0) |
@ini_set('mysql.connect_timeout',$config[sql_connect_timeout]); |
if ($config[sql_debug] == 'true') |
print "<b>DEBUG(SQL,MYSQL DRIVER): Connect: User=$SQL_user,Password=$SQL_passwd </b><br>\n"; |
return @mysql_connect("$config[sql_server]:$config[sql_port]",$SQL_user,$SQL_passwd); |
} |
function da_sql_pconnect($config) |
{ |
if ($config[sql_use_http_credentials] == 'yes'){ |
global $HTTP_SERVER_VARS; |
$SQL_user = $HTTP_SERVER_VARS["PHP_AUTH_USER"]; |
$SQL_passwd = $HTTP_SERVER_VARS["PHP_AUTH_PW"]; |
} |
else{ |
$SQL_user = $config[sql_username]; |
$SQL_passwd = $config[sql_password]; |
} |
if ($config[sql_connect_timeout] != 0) |
@ini_set('mysql.connect_timeout',$config[sql_connect_timeout]); |
if ($config[sql_debug] == 'true') |
print "<b>DEBUG(SQL,MYSQL DRIVER): Connect: User=$SQL_user,Password=$SQL_passwd </b><br>\n"; |
return @mysql_pconnect("$config[sql_server]:$config[sql_port]",$SQL_user,$SQL_passwd); |
} |
function da_sql_close($link,$config) |
{ |
return @mysql_close($link); |
} |
function da_sql_escape_string($string) |
{ |
return @mysql_escape_string($string); |
} |
function da_sql_query($link,$config,$query) |
{ |
if ($config[sql_debug] == 'true') |
print "<b>DEBUG(SQL,MYSQL DRIVER): Query: <i>$query</i></b><br>\n"; |
return @mysql_db_query($config[sql_database],$query,$link); |
} |
function da_sql_num_rows($result,$config) |
{ |
if ($config[sql_debug] == 'true') |
print "<b>DEBUG(SQL,MYSQL DRIVER): Query Result: Num rows:: " . @mysql_num_rows($result) . "</b><br>\n"; |
return @mysql_num_rows($result); |
} |
function da_sql_fetch_array($result,$config) |
{ |
$row = array_change_key_case(@mysql_fetch_array($result, |
MYSQL_ASSOC),CASE_LOWER); |
if ($config[sql_debug] == 'true'){ |
print "<b>DEBUG(SQL,MYSQL DRIVER): Query Result: <pre>"; |
print_r($row); |
print "</b></pre>\n"; |
} |
return $row; |
} |
function da_sql_affected_rows($link,$result,$config) |
{ |
if ($config[sql_debug] == 'true') |
print "<b>DEBUG(SQL,MYSQL DRIVER): Query Result: Affected rows:: " . @mysql_affected_rows($result) . "</b><br>\n"; |
return @mysql_affected_rows($link); |
} |
function da_sql_list_fields($table,$link,$config) |
{ |
return @mysql_list_fields($config[sql_database],$table); |
} |
function da_sql_num_fields($fields,$config) |
{ |
return @mysql_num_fields($fields); |
} |
function da_sql_field_name($fields,$num,$config) |
{ |
return @mysql_field_name($fields,$num); |
} |
function da_sql_error($link,$config) |
{ |
return @mysql_error($link); |
} |
?> |
/web/acc/manager/lib/crypt/crypt.php |
---|
0,0 → 1,14 |
<?php |
function da_encrypt() |
{ |
$numargs=func_num_args(); |
$passwd=func_get_arg(0); |
# calcul d'un salt pour forcer le chiffrement en MD5 au lieu de blowfish par defaut dans php versin mdva > 2007.1 |
$salt='$1$passwd$'; |
if ($numargs == 2){ |
$salt=func_get_arg(1); |
return crypt($passwd,$salt); |
} |
return crypt($passwd,$salt); |
} |
?> |