2024-09-07 20:53:46 +10:00
< ? php
/**
* XML Generation class
*
* PHP version 5
*
* @ category PHP
* @ package PSI_XML
* @ author Michael Cramer < BigMichi1 @ users . sourceforge . net >
* @ copyright 2009 phpSysInfo
2025-05-14 16:14:01 +01:00
* @ license http :// opensource . org / licenses / gpl - 2.0 . php GNU General Public License version 2 , or ( at your option ) any later version
2024-09-07 20:53:46 +10:00
* @ version SVN : $Id : class . XML . inc . php 699 2012 - 09 - 15 11 : 57 : 13 Z namiltd $
* @ link http :// phpsysinfo . sourceforge . net
*/
/**
* class for generation of the xml
*
* @ category PHP
* @ package PSI_XML
* @ author Michael Cramer < BigMichi1 @ users . sourceforge . net >
* @ copyright 2009 phpSysInfo
2025-05-14 16:14:01 +01:00
* @ license http :// opensource . org / licenses / gpl - 2.0 . php GNU General Public License version 2 , or ( at your option ) any later version
2024-09-07 20:53:46 +10:00
* @ version Release : 3.0
* @ link http :// phpsysinfo . sourceforge . net
*/
class XML
{
/**
* Sysinfo object where the information retrieval methods are included
*
* @ var PSI_Interface_OS
*/
private $_sysinfo ;
/**
* @ var System
*/
private $_sys = null ;
/**
* xml object with the xml content
*
* @ var SimpleXMLExtended
*/
private $_xml ;
/**
* object for error handling
*
2025-05-14 16:14:01 +01:00
* @ var PSI_Error
2024-09-07 20:53:46 +10:00
*/
private $_errors ;
/**
* array with all enabled plugins ( name )
*
* @ var array
*/
private $_plugins ;
/**
* plugin name if pluginrequest
*
* @ var string
*/
private $_plugin = '' ;
/**
* generate the entire xml with all plugins or only a part of the xml ( main or plugin )
*
* @ var boolean
*/
private $_complete_request = false ;
/**
* doing some initial tasks
* - generate the xml structure with the right header elements
* - get the error object for error output
* - get a instance of the sysinfo object
*
* @ param boolean $complete generate xml with all plugins or not
* @ param string $pluginname name of the plugin
*
* @ return void
*/
2025-05-14 16:14:01 +01:00
public function __construct ( $complete = false , $pluginname = " " , $blockname = false )
2024-09-07 20:53:46 +10:00
{
2025-05-14 16:14:01 +01:00
$this -> _errors = PSI_Error :: singleton ();
$this -> _plugin = $pluginname ;
2024-09-07 20:53:46 +10:00
if ( $complete ) {
$this -> _complete_request = true ;
} else {
$this -> _complete_request = false ;
}
2025-05-14 16:14:01 +01:00
if ( defined ( 'PSI_EMU_PORT' )) {
$os = 'SSH' ;
} elseif ( defined ( 'PSI_EMU_HOSTNAME' )) {
$os = 'WINNT' ;
} else {
$os = PSI_OS ;
}
$this -> _sysinfo = new $os ( $blockname );
2024-09-07 20:53:46 +10:00
$this -> _plugins = CommonFunctions :: getPlugins ();
$this -> _xmlbody ();
}
/**
* generate common information
*
* @ return void
*/
private function _buildVitals ()
{
$vitals = $this -> _xml -> addChild ( 'Vitals' );
$vitals -> addAttribute ( 'Hostname' , $this -> _sys -> getHostname ());
$vitals -> addAttribute ( 'IPAddr' , $this -> _sys -> getIp ());
$vitals -> addAttribute ( 'Kernel' , $this -> _sys -> getKernel ());
$vitals -> addAttribute ( 'Distro' , $this -> _sys -> getDistribution ());
$vitals -> addAttribute ( 'Distroicon' , $this -> _sys -> getDistributionIcon ());
$vitals -> addAttribute ( 'Uptime' , $this -> _sys -> getUptime ());
$vitals -> addAttribute ( 'Users' , $this -> _sys -> getUsers ());
$vitals -> addAttribute ( 'LoadAvg' , $this -> _sys -> getLoad ());
if ( $this -> _sys -> getLoadPercent () !== null ) {
$vitals -> addAttribute ( 'CPULoad' , $this -> _sys -> getLoadPercent ());
}
if ( $this -> _sysinfo -> getLanguage () !== null ) {
$vitals -> addAttribute ( 'SysLang' , $this -> _sysinfo -> getLanguage ());
}
if ( $this -> _sysinfo -> getEncoding () !== null ) {
$vitals -> addAttribute ( 'CodePage' , $this -> _sysinfo -> getEncoding ());
}
//processes
if (( $procss = $this -> _sys -> getProcesses ()) !== null ) {
if ( isset ( $procss [ '*' ]) && (( $procall = $procss [ '*' ]) > 0 )) {
$vitals -> addAttribute ( 'Processes' , $procall );
if ( ! isset ( $procss [ ' ' ]) || ! ( $procss [ ' ' ] > 0 )) { // not unknown
$procsum = 0 ;
if ( isset ( $procss [ 'R' ]) && (( $proctmp = $procss [ 'R' ]) > 0 )) {
$vitals -> addAttribute ( 'ProcessesRunning' , $proctmp );
$procsum += $proctmp ;
}
if ( isset ( $procss [ 'S' ]) && (( $proctmp = $procss [ 'S' ]) > 0 )) {
$vitals -> addAttribute ( 'ProcessesSleeping' , $proctmp );
$procsum += $proctmp ;
}
if ( isset ( $procss [ 'T' ]) && (( $proctmp = $procss [ 'T' ]) > 0 )) {
$vitals -> addAttribute ( 'ProcessesStopped' , $proctmp );
$procsum += $proctmp ;
}
if ( isset ( $procss [ 'Z' ]) && (( $proctmp = $procss [ 'Z' ]) > 0 )) {
$vitals -> addAttribute ( 'ProcessesZombie' , $proctmp );
$procsum += $proctmp ;
}
if ( isset ( $procss [ 'D' ]) && (( $proctmp = $procss [ 'D' ]) > 0 )) {
$vitals -> addAttribute ( 'ProcessesWaiting' , $proctmp );
$procsum += $proctmp ;
}
if (( $proctmp = $procall - $procsum ) > 0 ) {
$vitals -> addAttribute ( 'ProcessesOther' , $proctmp );
}
}
}
}
2025-05-14 16:14:01 +01:00
if (( $os = $this -> _sys -> getOS ()) == 'Android' ) {
$vitals -> addAttribute ( 'OS' , 'Linux' );
} elseif ( $os == 'GNU' ) {
$vitals -> addAttribute ( 'OS' , 'Hurd' );
} else {
$vitals -> addAttribute ( 'OS' , $os );
}
2024-09-07 20:53:46 +10:00
}
/**
* generate the network information
*
* @ return void
*/
private function _buildNetwork ()
{
$hideDevices = array ();
$network = $this -> _xml -> addChild ( 'Network' );
if ( defined ( 'PSI_HIDE_NETWORK_INTERFACE' )) {
if ( is_string ( PSI_HIDE_NETWORK_INTERFACE )) {
if ( preg_match ( ARRAY_EXP , PSI_HIDE_NETWORK_INTERFACE )) {
$hideDevices = eval ( PSI_HIDE_NETWORK_INTERFACE );
} else {
$hideDevices = array ( PSI_HIDE_NETWORK_INTERFACE );
}
} elseif ( PSI_HIDE_NETWORK_INTERFACE === true ) {
return ;
}
}
foreach ( $this -> _sys -> getNetDevices () as $dev ) {
2025-05-14 16:14:01 +01:00
if ( defined ( 'PSI_HIDE_NETWORK_INTERFACE_REGEX' ) && PSI_HIDE_NETWORK_INTERFACE_REGEX ) {
$hide = false ;
foreach ( $hideDevices as $hidedev ) {
if ( preg_match ( '/^' . $hidedev . '$/' , trim ( $dev -> getName ()))) {
$hide = true ;
break ;
}
}
} else {
$hide = in_array ( trim ( $dev -> getName ()), $hideDevices );
}
if ( ! $hide ) {
2024-09-07 20:53:46 +10:00
$device = $network -> addChild ( 'NetDevice' );
$device -> addAttribute ( 'Name' , $dev -> getName ());
2025-05-14 16:14:01 +01:00
$rxbytes = $dev -> getRxBytes ();
$txbytes = $dev -> getTxBytes ();
$device -> addAttribute ( 'RxBytes' , $rxbytes );
$device -> addAttribute ( 'TxBytes' , $txbytes );
if ( defined ( 'PSI_SHOW_NETWORK_ACTIVE_SPEED' ) && PSI_SHOW_NETWORK_ACTIVE_SPEED ) {
if (( $rxbytes == 0 ) && ( $txbytes == 0 )) {
$rxrate = $dev -> getRxRate ();
$txrate = $dev -> getTxRate ();
if (( $rxrate !== null ) || ( $txrate !== null )) {
if ( $rxrate !== null ) {
$device -> addAttribute ( 'RxRate' , $rxrate );
} else {
$device -> addAttribute ( 'RxRate' , 0 );
}
if ( $txrate !== null ) {
$device -> addAttribute ( 'TxRate' , $txrate );
} else {
$device -> addAttribute ( 'TxRate' , 0 );
}
}
}
}
2024-09-07 20:53:46 +10:00
$device -> addAttribute ( 'Err' , $dev -> getErrors ());
$device -> addAttribute ( 'Drops' , $dev -> getDrops ());
2025-05-14 16:14:01 +01:00
if ( defined ( 'PSI_SHOW_NETWORK_BRIDGE' ) && PSI_SHOW_NETWORK_BRIDGE && $dev -> getBridge ()) {
$device -> addAttribute ( 'Bridge' , $dev -> getBridge ());
}
if ( defined ( 'PSI_SHOW_NETWORK_INFOS' ) && PSI_SHOW_NETWORK_INFOS && $dev -> getInfo ()) {
2024-09-07 20:53:46 +10:00
$device -> addAttribute ( 'Info' , $dev -> getInfo ());
2025-05-14 16:14:01 +01:00
}
2024-09-07 20:53:46 +10:00
}
}
}
/**
* generate the hardware information
*
* @ return void
*/
private function _buildHardware ()
{
$hardware = $this -> _xml -> addChild ( 'Hardware' );
2025-05-14 16:14:01 +01:00
if (( $machine = $this -> _sys -> getMachine ()) != " " ) {
$machine = trim ( preg_replace ( " / \ s+/ " , " " , preg_replace ( " /^ \ s*[ \ /,]*/ " , " " , preg_replace ( " / \ / \ s+,/ " , " /, " , $machine )))); // remove leading slash or comma and unnecessary spaces
if ( preg_match ( '/, BIOS .*$/' , $machine , $mbuf , PREG_OFFSET_CAPTURE )) {
$comapos = $mbuf [ 0 ][ 1 ];
$endstr = $mbuf [ 0 ][ 0 ];
$offset = 0 ;
while (( $offset < $comapos )
&& (( $slashpos = strpos ( $machine , " / " , $offset )) !== false )
&& ( $slashpos < $comapos )) {
$len1 = $comapos - $slashpos - 1 ;
$str1 = substr ( $machine , $slashpos + 1 , $len1 );
$begstr = substr ( $machine , 0 , $slashpos );
if ( $len1 > 0 ) { // no empty
$str2 = substr ( $begstr , - $len1 - 1 );
} else {
$str2 = " " ;
}
if (( " " . $str1 === $str2 ) || ( $str1 === $begstr )) { // duplicates
$machine = $begstr . $endstr ;
break ;
}
$offset = $slashpos + 1 ;
}
2024-09-07 20:53:46 +10:00
}
2025-05-14 16:14:01 +01:00
if ( $machine != " " ) {
$hardware -> addAttribute ( 'Name' , $machine );
2024-09-07 20:53:46 +10:00
}
}
2025-05-14 16:14:01 +01:00
if ( defined ( 'PSI_SHOW_VIRTUALIZER_INFO' ) && PSI_SHOW_VIRTUALIZER_INFO ) {
$virt = $this -> _sys -> getVirtualizer ();
$virtstring = " " ;
foreach ( $virt as $virtkey => $virtvalue ) if ( $virtvalue ) {
if ( $virtstring !== " " ) {
$virtstring .= " , " ;
}
if ( $virtkey === 'microsoft' ) {
if ( ! isset ( $virt [ " wsl " ]) || ! $virt [ " wsl " ]) {
$virtstring .= 'hyper-v' ;
}
} elseif ( $virtkey === 'kvm' ) {
$virtstring .= 'qemu-kvm' ;
} elseif ( $virtkey === 'oracle' ) {
$virtstring .= 'virtualbox' ;
} elseif ( $virtkey === 'zvm' ) {
$virtstring .= 'z/vm' ;
} elseif ( $virtkey === 'sre' ) {
$virtstring .= 'lmhs sre' ;
} else {
$virtstring .= $virtkey ;
}
}
if ( $virtstring !== " " ) {
$hardware -> addAttribute ( 'Virtualizer' , $virtstring );
}
2024-09-07 20:53:46 +10:00
}
$cpu = null ;
2025-05-14 16:14:01 +01:00
$vendortab = null ;
2024-09-07 20:53:46 +10:00
foreach ( $this -> _sys -> getCpus () as $oneCpu ) {
if ( $cpu === null ) $cpu = $hardware -> addChild ( 'CPU' );
$tmp = $cpu -> addChild ( 'CpuCore' );
$tmp -> addAttribute ( 'Model' , $oneCpu -> getModel ());
2025-05-14 16:14:01 +01:00
if ( $oneCpu -> getVoltage () > 0 ) {
$tmp -> addAttribute ( 'Voltage' , $oneCpu -> getVoltage ());
}
if ( $oneCpu -> getCpuSpeed () > 0 ) {
2024-09-07 20:53:46 +10:00
$tmp -> addAttribute ( 'CpuSpeed' , $oneCpu -> getCpuSpeed ());
2025-05-14 16:14:01 +01:00
} elseif ( $oneCpu -> getCpuSpeed () == - 1 ) {
$tmp -> addAttribute ( 'CpuSpeed' , 0 ); // core stopped
2024-09-07 20:53:46 +10:00
}
2025-05-14 16:14:01 +01:00
if ( $oneCpu -> getCpuSpeedMax () > 0 ) {
2024-09-07 20:53:46 +10:00
$tmp -> addAttribute ( 'CpuSpeedMax' , $oneCpu -> getCpuSpeedMax ());
}
2025-05-14 16:14:01 +01:00
if ( $oneCpu -> getCpuSpeedMin () > 0 ) {
2024-09-07 20:53:46 +10:00
$tmp -> addAttribute ( 'CpuSpeedMin' , $oneCpu -> getCpuSpeedMin ());
}
2025-05-14 16:14:01 +01:00
/*
2024-09-07 20:53:46 +10:00
if ( $oneCpu -> getTemp () !== null ) {
$tmp -> addAttribute ( 'CpuTemp' , $oneCpu -> getTemp ());
}
2025-05-14 16:14:01 +01:00
*/
2024-09-07 20:53:46 +10:00
if ( $oneCpu -> getBusSpeed () !== null ) {
$tmp -> addAttribute ( 'BusSpeed' , $oneCpu -> getBusSpeed ());
}
if ( $oneCpu -> getCache () !== null ) {
$tmp -> addAttribute ( 'Cache' , $oneCpu -> getCache ());
}
if ( $oneCpu -> getVirt () !== null ) {
$tmp -> addAttribute ( 'Virt' , $oneCpu -> getVirt ());
}
2025-05-14 16:14:01 +01:00
if ( $oneCpu -> getVendorId () !== null ) {
if ( $vendortab === null ) $vendortab = @ parse_ini_file ( PSI_APP_ROOT . " /data/cpus.ini " , true );
$shortvendorid = $oneCpu -> getVendorId ();
if ( $vendortab && ( $shortvendorid != " " ) && isset ( $vendortab [ 'manufacturer' ][ $shortvendorid ])) {
$tmp -> addAttribute ( 'Manufacturer' , $vendortab [ 'manufacturer' ][ $shortvendorid ]);
}
}
2024-09-07 20:53:46 +10:00
if ( $oneCpu -> getBogomips () !== null ) {
$tmp -> addAttribute ( 'Bogomips' , $oneCpu -> getBogomips ());
}
if ( $oneCpu -> getLoad () !== null ) {
$tmp -> addAttribute ( 'Load' , $oneCpu -> getLoad ());
}
}
2025-05-14 16:14:01 +01:00
$mem = null ;
foreach ( System :: removeDupsAndCount ( $this -> _sys -> getMemDevices ()) as $dev ) {
if ( $mem === null ) $mem = $hardware -> addChild ( 'MEM' );
$tmp = $mem -> addChild ( 'Chip' );
$tmp -> addAttribute ( 'Name' , $dev -> getName ());
if ( defined ( 'PSI_SHOW_DEVICES_INFOS' ) && PSI_SHOW_DEVICES_INFOS ) {
if ( $dev -> getCapacity () !== null ) {
$tmp -> addAttribute ( 'Capacity' , $dev -> getCapacity ());
}
if ( $dev -> getManufacturer () !== null ) {
$tmp -> addAttribute ( 'Manufacturer' , $dev -> getManufacturer ());
}
if ( $dev -> getProduct () !== null ) {
$tmp -> addAttribute ( 'Product' , $dev -> getProduct ());
}
if ( $dev -> getSpeed () !== null ) {
$tmp -> addAttribute ( 'Speed' , $dev -> getSpeed ());
}
if ( $dev -> getVoltage () !== null ) {
$tmp -> addAttribute ( 'Voltage' , $dev -> getVoltage ());
}
if ( defined ( 'PSI_SHOW_DEVICES_SERIAL' ) && PSI_SHOW_DEVICES_SERIAL && ( $dev -> getSerial () !== null )) {
$tmp -> addAttribute ( 'Serial' , $dev -> getSerial ());
}
}
if ( $dev -> getCount () > 1 ) {
$tmp -> addAttribute ( 'Count' , $dev -> getCount ());
}
}
$pci = null ;
foreach ( System :: removeDupsAndCount ( $this -> _sys -> getPciDevices ()) as $dev ) {
if ( $pci === null ) $pci = $hardware -> addChild ( 'PCI' );
$tmp = $pci -> addChild ( 'Device' );
$tmp -> addAttribute ( 'Name' , $dev -> getName ());
if ( defined ( 'PSI_SHOW_DEVICES_INFOS' ) && PSI_SHOW_DEVICES_INFOS ) {
if ( $dev -> getManufacturer () !== null ) {
$tmp -> addAttribute ( 'Manufacturer' , $dev -> getManufacturer ());
}
if ( $dev -> getProduct () !== null ) {
$tmp -> addAttribute ( 'Product' , $dev -> getProduct ());
}
}
if ( $dev -> getCount () > 1 ) {
$tmp -> addAttribute ( 'Count' , $dev -> getCount ());
}
}
$ide = null ;
foreach ( System :: removeDupsAndCount ( $this -> _sys -> getIdeDevices ()) as $dev ) {
if ( $ide === null ) $ide = $hardware -> addChild ( 'IDE' );
$tmp = $ide -> addChild ( 'Device' );
$tmp -> addAttribute ( 'Name' , $dev -> getName ());
if ( defined ( 'PSI_SHOW_DEVICES_INFOS' ) && PSI_SHOW_DEVICES_INFOS ) {
if ( $dev -> getCapacity () !== null ) {
$tmp -> addAttribute ( 'Capacity' , $dev -> getCapacity ());
}
if ( defined ( 'PSI_SHOW_DEVICES_SERIAL' ) && PSI_SHOW_DEVICES_SERIAL && ( $dev -> getSerial () !== null )) {
$tmp -> addAttribute ( 'Serial' , $dev -> getSerial ());
}
}
if ( $dev -> getCount () > 1 ) {
$tmp -> addAttribute ( 'Count' , $dev -> getCount ());
}
}
$scsi = null ;
foreach ( System :: removeDupsAndCount ( $this -> _sys -> getScsiDevices ()) as $dev ) {
if ( $scsi === null ) $scsi = $hardware -> addChild ( 'SCSI' );
$tmp = $scsi -> addChild ( 'Device' );
$tmp -> addAttribute ( 'Name' , $dev -> getName ());
if ( defined ( 'PSI_SHOW_DEVICES_INFOS' ) && PSI_SHOW_DEVICES_INFOS ) {
if ( $dev -> getCapacity () !== null ) {
$tmp -> addAttribute ( 'Capacity' , $dev -> getCapacity ());
}
if ( defined ( 'PSI_SHOW_DEVICES_SERIAL' ) && PSI_SHOW_DEVICES_SERIAL && ( $dev -> getSerial () !== null )) {
$tmp -> addAttribute ( 'Serial' , $dev -> getSerial ());
}
}
if ( $dev -> getCount () > 1 ) {
$tmp -> addAttribute ( 'Count' , $dev -> getCount ());
}
}
$nvme = null ;
foreach ( System :: removeDupsAndCount ( $this -> _sys -> getNvmeDevices ()) as $dev ) {
if ( $nvme === null ) $nvme = $hardware -> addChild ( 'NVMe' );
$tmp = $nvme -> addChild ( 'Device' );
$tmp -> addAttribute ( 'Name' , $dev -> getName ());
if ( defined ( 'PSI_SHOW_DEVICES_INFOS' ) && PSI_SHOW_DEVICES_INFOS ) {
if ( $dev -> getCapacity () !== null ) {
$tmp -> addAttribute ( 'Capacity' , $dev -> getCapacity ());
}
if ( defined ( 'PSI_SHOW_DEVICES_SERIAL' ) && PSI_SHOW_DEVICES_SERIAL && ( $dev -> getSerial () !== null )) {
$tmp -> addAttribute ( 'Serial' , $dev -> getSerial ());
}
}
if ( $dev -> getCount () > 1 ) {
$tmp -> addAttribute ( 'Count' , $dev -> getCount ());
}
}
$usb = null ;
foreach ( System :: removeDupsAndCount ( $this -> _sys -> getUsbDevices ()) as $dev ) {
if ( $usb === null ) $usb = $hardware -> addChild ( 'USB' );
$tmp = $usb -> addChild ( 'Device' );
$tmp -> addAttribute ( 'Name' , $dev -> getName ());
if ( defined ( 'PSI_SHOW_DEVICES_INFOS' ) && PSI_SHOW_DEVICES_INFOS ) {
if ( $dev -> getManufacturer () !== null ) {
$tmp -> addAttribute ( 'Manufacturer' , $dev -> getManufacturer ());
}
if ( $dev -> getProduct () !== null ) {
$tmp -> addAttribute ( 'Product' , $dev -> getProduct ());
}
if ( $dev -> getSpeed () !== null ) {
$tmp -> addAttribute ( 'Speed' , $dev -> getSpeed ());
}
if ( defined ( 'PSI_SHOW_DEVICES_SERIAL' ) && PSI_SHOW_DEVICES_SERIAL && ( $dev -> getSerial () !== null )) {
$tmp -> addAttribute ( 'Serial' , $dev -> getSerial ());
}
}
if ( $dev -> getCount () > 1 ) {
$tmp -> addAttribute ( 'Count' , $dev -> getCount ());
}
}
$tb = null ;
foreach ( System :: removeDupsAndCount ( $this -> _sys -> getTbDevices ()) as $dev ) {
if ( $tb === null ) $tb = $hardware -> addChild ( 'TB' );
$tmp = $tb -> addChild ( 'Device' );
$tmp -> addAttribute ( 'Name' , $dev -> getName ());
if ( $dev -> getCount () > 1 ) {
$tmp -> addAttribute ( 'Count' , $dev -> getCount ());
}
}
$i2c = null ;
foreach ( System :: removeDupsAndCount ( $this -> _sys -> getI2cDevices ()) as $dev ) {
if ( $i2c === null ) $i2c = $hardware -> addChild ( 'I2C' );
$tmp = $i2c -> addChild ( 'Device' );
$tmp -> addAttribute ( 'Name' , $dev -> getName ());
if ( $dev -> getCount () > 1 ) {
$tmp -> addAttribute ( 'Count' , $dev -> getCount ());
}
}
2024-09-07 20:53:46 +10:00
}
/**
* generate the memory information
*
* @ return void
*/
private function _buildMemory ()
{
$memory = $this -> _xml -> addChild ( 'Memory' );
$memory -> addAttribute ( 'Free' , $this -> _sys -> getMemFree ());
$memory -> addAttribute ( 'Used' , $this -> _sys -> getMemUsed ());
$memory -> addAttribute ( 'Total' , $this -> _sys -> getMemTotal ());
$memory -> addAttribute ( 'Percent' , $this -> _sys -> getMemPercentUsed ());
if (( $this -> _sys -> getMemApplication () !== null ) || ( $this -> _sys -> getMemBuffer () !== null ) || ( $this -> _sys -> getMemCache () !== null )) {
$details = $memory -> addChild ( 'Details' );
if ( $this -> _sys -> getMemApplication () !== null ) {
$details -> addAttribute ( 'App' , $this -> _sys -> getMemApplication ());
$details -> addAttribute ( 'AppPercent' , $this -> _sys -> getMemPercentApplication ());
}
if ( $this -> _sys -> getMemBuffer () !== null ) {
$details -> addAttribute ( 'Buffers' , $this -> _sys -> getMemBuffer ());
$details -> addAttribute ( 'BuffersPercent' , $this -> _sys -> getMemPercentBuffer ());
}
if ( $this -> _sys -> getMemCache () !== null ) {
$details -> addAttribute ( 'Cached' , $this -> _sys -> getMemCache ());
$details -> addAttribute ( 'CachedPercent' , $this -> _sys -> getMemPercentCache ());
}
}
if ( count ( $this -> _sys -> getSwapDevices ()) > 0 ) {
$swap = $memory -> addChild ( 'Swap' );
$swap -> addAttribute ( 'Free' , $this -> _sys -> getSwapFree ());
$swap -> addAttribute ( 'Used' , $this -> _sys -> getSwapUsed ());
$swap -> addAttribute ( 'Total' , $this -> _sys -> getSwapTotal ());
$swap -> addAttribute ( 'Percent' , $this -> _sys -> getSwapPercentUsed ());
$i = 1 ;
foreach ( $this -> _sys -> getSwapDevices () as $dev ) {
$swapMount = $swap -> addChild ( 'Mount' );
$this -> _fillDevice ( $swapMount , $dev , $i ++ );
}
}
}
/**
* fill a xml element with atrributes from a disk device
*
* @ param SimpleXmlExtended $mount Xml - Element
* @ param DiskDevice $dev DiskDevice
2025-05-14 16:14:01 +01:00
* @ param int $i counter
2024-09-07 20:53:46 +10:00
*
2025-05-14 16:14:01 +01:00
* @ return void
2024-09-07 20:53:46 +10:00
*/
private function _fillDevice ( SimpleXMLExtended $mount , DiskDevice $dev , $i )
{
$mount -> addAttribute ( 'MountPointID' , $i );
2025-05-14 16:14:01 +01:00
if ( $dev -> getFsType () !== " " ) {
$mount -> addAttribute ( 'FSType' , $dev -> getFsType ());
}
2024-09-07 20:53:46 +10:00
$mount -> addAttribute ( 'Name' , $dev -> getName ());
$mount -> addAttribute ( 'Free' , sprintf ( " %.0f " , $dev -> getFree ()));
$mount -> addAttribute ( 'Used' , sprintf ( " %.0f " , $dev -> getUsed ()));
$mount -> addAttribute ( 'Total' , sprintf ( " %.0f " , $dev -> getTotal ()));
2025-05-14 16:14:01 +01:00
$percentUsed = $dev -> getPercentUsed ();
$mount -> addAttribute ( 'Percent' , $percentUsed );
if ( $dev -> getPercentInodesUsed () !== null ) {
$mount -> addAttribute ( 'Inodes' , $dev -> getPercentInodesUsed ());
}
if ( $dev -> getIgnore () > 0 ) $mount -> addAttribute ( 'Ignore' , $dev -> getIgnore ());
if ( PSI_SHOW_MOUNT_OPTION ) {
2024-09-07 20:53:46 +10:00
if ( $dev -> getOptions () !== null ) {
$mount -> addAttribute ( 'MountOptions' , preg_replace ( " /,/ " , " , " , $dev -> getOptions ()));
}
}
2025-05-14 16:14:01 +01:00
if ( PSI_SHOW_MOUNT_POINT && ( $dev -> getMountPoint () !== null )) {
2024-09-07 20:53:46 +10:00
$mount -> addAttribute ( 'MountPoint' , $dev -> getMountPoint ());
}
}
/**
* generate the filesysteminformation
*
* @ return void
*/
private function _buildFilesystems ()
{
2025-05-14 16:14:01 +01:00
$hideMounts = $hideFstypes = $hideDisks = $ignoreFree = $ignoreTotal = $ignoreUsage = $ignoreThreshold = array ();
2024-09-07 20:53:46 +10:00
if ( defined ( 'PSI_HIDE_MOUNTS' ) && is_string ( PSI_HIDE_MOUNTS )) {
if ( preg_match ( ARRAY_EXP , PSI_HIDE_MOUNTS )) {
$hideMounts = eval ( PSI_HIDE_MOUNTS );
} else {
$hideMounts = array ( PSI_HIDE_MOUNTS );
}
}
if ( defined ( 'PSI_HIDE_FS_TYPES' ) && is_string ( PSI_HIDE_FS_TYPES )) {
if ( preg_match ( ARRAY_EXP , PSI_HIDE_FS_TYPES )) {
$hideFstypes = eval ( PSI_HIDE_FS_TYPES );
} else {
$hideFstypes = array ( PSI_HIDE_FS_TYPES );
}
}
if ( defined ( 'PSI_HIDE_DISKS' )) {
if ( is_string ( PSI_HIDE_DISKS )) {
if ( preg_match ( ARRAY_EXP , PSI_HIDE_DISKS )) {
$hideDisks = eval ( PSI_HIDE_DISKS );
} else {
$hideDisks = array ( PSI_HIDE_DISKS );
}
} elseif ( PSI_HIDE_DISKS === true ) {
return ;
}
}
2025-05-14 16:14:01 +01:00
if ( defined ( 'PSI_IGNORE_FREE' ) && is_string ( PSI_IGNORE_FREE )) {
if ( preg_match ( ARRAY_EXP , PSI_IGNORE_FREE )) {
$ignoreFree = eval ( PSI_IGNORE_FREE );
} else {
$ignoreFree = array ( PSI_IGNORE_FREE );
}
}
if ( defined ( 'PSI_IGNORE_TOTAL' ) && is_string ( PSI_IGNORE_TOTAL )) {
if ( preg_match ( ARRAY_EXP , PSI_IGNORE_TOTAL )) {
$ignoreTotal = eval ( PSI_IGNORE_TOTAL );
} else {
$ignoreTotal = array ( PSI_IGNORE_TOTAL );
}
}
if ( defined ( 'PSI_IGNORE_USAGE' ) && is_string ( PSI_IGNORE_USAGE )) {
if ( preg_match ( ARRAY_EXP , PSI_IGNORE_USAGE )) {
$ignoreUsage = eval ( PSI_IGNORE_USAGE );
} else {
$ignoreUsage = array ( PSI_IGNORE_USAGE );
}
}
if ( defined ( 'PSI_IGNORE_THRESHOLD_FS_TYPES' ) && is_string ( PSI_IGNORE_THRESHOLD_FS_TYPES )) {
if ( preg_match ( ARRAY_EXP , PSI_IGNORE_THRESHOLD_FS_TYPES )) {
$ignoreThreshold = eval ( PSI_IGNORE_THRESHOLD_FS_TYPES );
} else {
$ignoreThreshold = array ( PSI_IGNORE_THRESHOLD_FS_TYPES );
}
}
2024-09-07 20:53:46 +10:00
$fs = $this -> _xml -> addChild ( 'FileSystem' );
2025-05-14 16:14:01 +01:00
$i = 1 ;
2024-09-07 20:53:46 +10:00
foreach ( $this -> _sys -> getDiskDevices () as $disk ) {
if ( ! in_array ( $disk -> getMountPoint (), $hideMounts , true ) && ! in_array ( $disk -> getFsType (), $hideFstypes , true ) && ! in_array ( $disk -> getName (), $hideDisks , true )) {
$mount = $fs -> addChild ( 'Mount' );
2025-05-14 16:14:01 +01:00
if ( in_array ( $disk -> getFsType (), $ignoreThreshold , true )) {
$disk -> setIgnore ( 4 );
} elseif ( in_array ( $disk -> getMountPoint (), $ignoreUsage , true )) {
$disk -> setIgnore ( 3 );
} elseif ( in_array ( $disk -> getMountPoint (), $ignoreTotal , true )) {
$disk -> setIgnore ( 2 );
} elseif ( in_array ( $disk -> getMountPoint (), $ignoreFree , true )) {
$disk -> setIgnore ( 1 );
}
2024-09-07 20:53:46 +10:00
$this -> _fillDevice ( $mount , $disk , $i ++ );
}
}
}
/**
* generate the motherboard information
*
* @ return void
*/
private function _buildMbinfo ()
{
$mbinfo = $this -> _xml -> addChild ( 'MBInfo' );
2025-05-14 16:14:01 +01:00
$temp = $fan = $volt = $power = $current = $other = null ;
$hideSensors = array ();
2024-09-07 20:53:46 +10:00
if ( sizeof ( unserialize ( PSI_MBINFO )) > 0 ) {
2025-05-14 16:14:01 +01:00
if ( defined ( 'PSI_HIDE_SENSORS' ) && is_string ( PSI_HIDE_SENSORS )) {
if ( preg_match ( ARRAY_EXP , PSI_HIDE_SENSORS )) {
$hideSensors = eval ( PSI_HIDE_SENSORS );
} else {
$hideSensors = array ( PSI_HIDE_SENSORS );
}
}
2024-09-07 20:53:46 +10:00
foreach ( unserialize ( PSI_MBINFO ) as $mbinfoclass ) {
$mbinfo_data = new $mbinfoclass ();
$mbinfo_detail = $mbinfo_data -> getMBInfo ();
2025-05-14 16:14:01 +01:00
if ( ! $this -> _sysinfo -> getBlockName () || $this -> _sysinfo -> getBlockName () === 'temperature' || $this -> _sysinfo -> getBlockName () === 'mbinfo' ) foreach ( $mbinfo_detail -> getMbTemp () as $dev ) {
$mbinfo_name = $dev -> getName ();
if ( ! in_array ( $mbinfo_name , $hideSensors , true )) {
if ( $temp == null ) {
$temp = $mbinfo -> addChild ( 'Temperature' );
}
$item = $temp -> addChild ( 'Item' );
$item -> addAttribute ( 'Label' , $mbinfo_name );
$item -> addAttribute ( 'Value' , $dev -> getValue ());
$alarm = false ;
if ( $dev -> getMax () !== null ) {
$item -> addAttribute ( 'Max' , $dev -> getMax ());
$alarm = true ;
}
if ( defined ( 'PSI_SENSOR_EVENTS' ) && PSI_SENSOR_EVENTS && ( $dev -> getEvent () !== " " ) && ((( strtolower ( $dev -> getEvent ())) !== " alarm " ) || $alarm || ( $dev -> getValue () == 0 ))) {
$item -> addAttribute ( 'Event' , ucfirst ( strtolower ( $dev -> getEvent ())));
}
2024-09-07 20:53:46 +10:00
}
}
2025-05-14 16:14:01 +01:00
if ( ! $this -> _sysinfo -> getBlockName () || $this -> _sysinfo -> getBlockName () === 'fans' || $this -> _sysinfo -> getBlockName () === 'mbinfo' ) foreach ( $mbinfo_detail -> getMbFan () as $dev ) {
$mbinfo_name = $dev -> getName ();
if ( ! in_array ( $mbinfo_name , $hideSensors , true )) {
if ( $fan == null ) {
$fan = $mbinfo -> addChild ( 'Fans' );
}
$item = $fan -> addChild ( 'Item' );
$item -> addAttribute ( 'Label' , $mbinfo_name );
$item -> addAttribute ( 'Value' , $dev -> getValue ());
$alarm = false ;
if ( $dev -> getMin () !== null ) {
$item -> addAttribute ( 'Min' , $dev -> getMin ());
$alarm = true ;
}
if ( $dev -> getUnit () !== " " ) {
$item -> addAttribute ( 'Unit' , $dev -> getUnit ());
}
if ( defined ( 'PSI_SENSOR_EVENTS' ) && PSI_SENSOR_EVENTS && ( $dev -> getEvent () !== " " ) && ((( strtolower ( $dev -> getEvent ())) !== " alarm " ) || $alarm || ( $dev -> getValue () == 0 ))) {
$item -> addAttribute ( 'Event' , ucfirst ( strtolower ( $dev -> getEvent ())));
}
2024-09-07 20:53:46 +10:00
}
}
2025-05-14 16:14:01 +01:00
if ( ! $this -> _sysinfo -> getBlockName () || $this -> _sysinfo -> getBlockName () === 'voltage' || $this -> _sysinfo -> getBlockName () === 'mbinfo' ) foreach ( $mbinfo_detail -> getMbVolt () as $dev ) {
$mbinfo_name = $dev -> getName ();
if ( ! in_array ( $mbinfo_name , $hideSensors , true )) {
if ( $volt == null ) {
$volt = $mbinfo -> addChild ( 'Voltage' );
}
$item = $volt -> addChild ( 'Item' );
$item -> addAttribute ( 'Label' , $mbinfo_name );
$item -> addAttribute ( 'Value' , $dev -> getValue ());
$alarm = false ;
if (( $dev -> getMin () === null ) || ( $dev -> getMin () != 0 ) || ( $dev -> getMax () === null ) || ( $dev -> getMax () != 0 )) {
if ( $dev -> getMin () !== null ) {
$item -> addAttribute ( 'Min' , $dev -> getMin ());
$alarm = true ;
}
if ( $dev -> getMax () !== null ) {
$item -> addAttribute ( 'Max' , $dev -> getMax ());
$alarm = true ;
}
}
if ( defined ( 'PSI_SENSOR_EVENTS' ) && PSI_SENSOR_EVENTS && ( $dev -> getEvent () !== " " ) && ((( strtolower ( $dev -> getEvent ())) !== " alarm " ) || $alarm || ( $dev -> getValue () == 0 ))) {
$item -> addAttribute ( 'Event' , ucfirst ( strtolower ( $dev -> getEvent ())));
}
2024-09-07 20:53:46 +10:00
}
}
2025-05-14 16:14:01 +01:00
if ( ! $this -> _sysinfo -> getBlockName () || $this -> _sysinfo -> getBlockName () === 'power' || $this -> _sysinfo -> getBlockName () === 'mbinfo' ) foreach ( $mbinfo_detail -> getMbPower () as $dev ) {
$mbinfo_name = $dev -> getName ();
if ( ! in_array ( $mbinfo_name , $hideSensors , true )) {
if ( $power == null ) {
$power = $mbinfo -> addChild ( 'Power' );
}
$item = $power -> addChild ( 'Item' );
$item -> addAttribute ( 'Label' , $mbinfo_name );
$item -> addAttribute ( 'Value' , $dev -> getValue ());
$alarm = false ;
if ( $dev -> getMax () !== null ) {
$item -> addAttribute ( 'Max' , $dev -> getMax ());
$alarm = true ;
}
if ( defined ( 'PSI_SENSOR_EVENTS' ) && PSI_SENSOR_EVENTS && ( $dev -> getEvent () !== " " ) && ((( strtolower ( $dev -> getEvent ())) !== " alarm " ) || $alarm || ( $dev -> getValue () == 0 ))) {
$item -> addAttribute ( 'Event' , ucfirst ( strtolower ( $dev -> getEvent ())));
}
2024-09-07 20:53:46 +10:00
}
}
2025-05-14 16:14:01 +01:00
if ( ! $this -> _sysinfo -> getBlockName () || $this -> _sysinfo -> getBlockName () === 'current' || $this -> _sysinfo -> getBlockName () === 'mbinfo' ) foreach ( $mbinfo_detail -> getMbCurrent () as $dev ) {
$mbinfo_name = $dev -> getName ();
if ( ! in_array ( $mbinfo_name , $hideSensors , true )) {
if ( $current == null ) {
$current = $mbinfo -> addChild ( 'Current' );
}
$item = $current -> addChild ( 'Item' );
$item -> addAttribute ( 'Label' , $mbinfo_name );
$item -> addAttribute ( 'Value' , $dev -> getValue ());
$alarm = false ;
if (( $dev -> getMin () === null ) || ( $dev -> getMin () != 0 ) || ( $dev -> getMax () === null ) || ( $dev -> getMax () != 0 )) {
if ( $dev -> getMin () !== null ) {
$item -> addAttribute ( 'Min' , $dev -> getMin ());
$alarm = true ;
}
if ( $dev -> getMax () !== null ) {
$item -> addAttribute ( 'Max' , $dev -> getMax ());
$alarm = true ;
}
}
if ( defined ( 'PSI_SENSOR_EVENTS' ) && PSI_SENSOR_EVENTS && ( $dev -> getEvent () !== " " ) && ((( strtolower ( $dev -> getEvent ())) !== " alarm " ) || $alarm || ( $dev -> getValue () == 0 ))) {
$item -> addAttribute ( 'Event' , ucfirst ( strtolower ( $dev -> getEvent ())));
}
2024-09-07 20:53:46 +10:00
}
}
2025-05-14 16:14:01 +01:00
if ( ! $this -> _sysinfo -> getBlockName () || $this -> _sysinfo -> getBlockName () === 'other' || $this -> _sysinfo -> getBlockName () === 'mbinfo' ) foreach ( $mbinfo_detail -> getMbOther () as $dev ) {
$mbinfo_name = $dev -> getName ();
if ( ! in_array ( $mbinfo_name , $hideSensors , true )) {
if ( $other == null ) {
$other = $mbinfo -> addChild ( 'Other' );
}
$item = $other -> addChild ( 'Item' );
$item -> addAttribute ( 'Label' , $mbinfo_name );
$item -> addAttribute ( 'Value' , $dev -> getValue ());
if ( $dev -> getUnit () !== " " ) {
$item -> addAttribute ( 'Unit' , $dev -> getUnit ());
}
if ( defined ( 'PSI_SENSOR_EVENTS' ) && PSI_SENSOR_EVENTS && $dev -> getEvent () !== " " ) {
$item -> addAttribute ( 'Event' , ucfirst ( strtolower ( $dev -> getEvent ())));
}
}
2024-09-07 20:53:46 +10:00
}
}
}
}
/**
* generate the ups information
*
* @ return void
*/
private function _buildUpsinfo ()
{
$upsinfo = $this -> _xml -> addChild ( 'UPSInfo' );
2025-05-14 16:14:01 +01:00
if ( ! defined ( 'PSI_EMU_HOSTNAME' ) && defined ( 'PSI_UPS_APCUPSD_CGI_ENABLE' ) && PSI_UPS_APCUPSD_CGI_ENABLE ) {
2024-09-07 20:53:46 +10:00
$upsinfo -> addAttribute ( 'ApcupsdCgiLinks' , true );
}
if ( sizeof ( unserialize ( PSI_UPSINFO )) > 0 ) {
foreach ( unserialize ( PSI_UPSINFO ) as $upsinfoclass ) {
$upsinfo_data = new $upsinfoclass ();
$upsinfo_detail = $upsinfo_data -> getUPSInfo ();
foreach ( $upsinfo_detail -> getUpsDevices () as $ups ) {
$item = $upsinfo -> addChild ( 'UPS' );
$item -> addAttribute ( 'Name' , $ups -> getName ());
if ( $ups -> getModel () !== " " ) {
$item -> addAttribute ( 'Model' , $ups -> getModel ());
}
2025-05-14 16:14:01 +01:00
if ( $ups -> getMode () !== " " ) {
$item -> addAttribute ( 'Mode' , $ups -> getMode ());
}
2024-09-07 20:53:46 +10:00
if ( $ups -> getStartTime () !== " " ) {
$item -> addAttribute ( 'StartTime' , $ups -> getStartTime ());
}
$item -> addAttribute ( 'Status' , $ups -> getStatus ());
2025-05-14 16:14:01 +01:00
if ( $ups -> getBeeperStatus () !== null ) {
$item -> addAttribute ( 'BeeperStatus' , $ups -> getBeeperStatus ());
}
2024-09-07 20:53:46 +10:00
if ( $ups -> getTemperatur () !== null ) {
$item -> addAttribute ( 'Temperature' , $ups -> getTemperatur ());
}
if ( $ups -> getOutages () !== null ) {
$item -> addAttribute ( 'OutagesCount' , $ups -> getOutages ());
}
if ( $ups -> getLastOutage () !== null ) {
$item -> addAttribute ( 'LastOutage' , $ups -> getLastOutage ());
}
if ( $ups -> getLastOutageFinish () !== null ) {
$item -> addAttribute ( 'LastOutageFinish' , $ups -> getLastOutageFinish ());
}
if ( $ups -> getLineVoltage () !== null ) {
$item -> addAttribute ( 'LineVoltage' , $ups -> getLineVoltage ());
}
if ( $ups -> getLineFrequency () !== null ) {
$item -> addAttribute ( 'LineFrequency' , $ups -> getLineFrequency ());
}
if ( $ups -> getLoad () !== null ) {
$item -> addAttribute ( 'LoadPercent' , $ups -> getLoad ());
}
if ( $ups -> getBatteryDate () !== null ) {
$item -> addAttribute ( 'BatteryDate' , $ups -> getBatteryDate ());
}
if ( $ups -> getBatteryVoltage () !== null ) {
$item -> addAttribute ( 'BatteryVoltage' , $ups -> getBatteryVoltage ());
}
if ( $ups -> getBatterCharge () !== null ) {
$item -> addAttribute ( 'BatteryChargePercent' , $ups -> getBatterCharge ());
}
if ( $ups -> getTimeLeft () !== null ) {
$item -> addAttribute ( 'TimeLeftMinutes' , $ups -> getTimeLeft ());
}
}
}
}
}
/**
* generate the xml document
*
* @ return void
*/
private function _buildXml ()
{
2025-05-14 16:14:01 +01:00
if (( $this -> _plugin == '' ) || $this -> _complete_request ) {
2024-09-07 20:53:46 +10:00
if ( $this -> _sys === null ) {
2025-05-14 16:14:01 +01:00
if ( PSI_DEBUG ) {
// unstable version check
if ( ! is_numeric ( substr ( PSI_VERSION , - 1 ))) {
$this -> _errors -> addWarning ( " This is an unstable version of phpSysInfo, some things may not work correctly " );
}
2024-09-07 20:53:46 +10:00
// Safe mode check
$safe_mode = @ ini_get ( " safe_mode " ) ? true : false ;
if ( $safe_mode ) {
$this -> _errors -> addError ( " WARN " , " PhpSysInfo requires to set off 'safe_mode' in 'php.ini' " );
}
// Include path check
$include_path = @ ini_get ( " include_path " );
if ( $include_path && ( $include_path != " " )) {
$include_path = preg_replace ( " /(:)|(;)/ " , " \n " , $include_path );
if ( preg_match ( " /^ \ . $ /m " , $include_path )) {
$include_path = " . " ;
}
}
if ( $include_path != " . " ) {
$this -> _errors -> addError ( " WARN " , " PhpSysInfo requires '.' inside the 'include_path' in php.ini " );
}
// popen mode check
2025-05-14 16:14:01 +01:00
if ( defined ( " PSI_MODE_POPEN " ) && PSI_MODE_POPEN ) {
2024-09-07 20:53:46 +10:00
$this -> _errors -> addError ( " WARN " , " Installed version of PHP does not support proc_open() function, popen() is used " );
}
}
$this -> _sys = $this -> _sysinfo -> getSys ();
}
2025-05-14 16:14:01 +01:00
if ( ! $this -> _sysinfo -> getBlockName () || $this -> _sysinfo -> getBlockName () === 'vitals' ) $this -> _buildVitals ();
if ( ! $this -> _sysinfo -> getBlockName () || $this -> _sysinfo -> getBlockName () === 'network' ) $this -> _buildNetwork ();
if ( ! $this -> _sysinfo -> getBlockName () || $this -> _sysinfo -> getBlockName () === 'hardware' ) $this -> _buildHardware ();
if ( ! $this -> _sysinfo -> getBlockName () || $this -> _sysinfo -> getBlockName () === 'memory' ) $this -> _buildMemory ();
if ( ! $this -> _sysinfo -> getBlockName () || $this -> _sysinfo -> getBlockName () === 'filesystem' ) $this -> _buildFilesystems ();
if ( ! $this -> _sysinfo -> getBlockName () || in_array ( $this -> _sysinfo -> getBlockName (), array ( 'mbinfo' , 'voltage' , 'current' , 'temperature' , 'fans' , 'power' , 'other' ))) $this -> _buildMbinfo ();
if ( ! $this -> _sysinfo -> getBlockName () || $this -> _sysinfo -> getBlockName () === 'ups' ) $this -> _buildUpsinfo ();
2024-09-07 20:53:46 +10:00
}
2025-05-14 16:14:01 +01:00
if ( ! $this -> _sysinfo -> getBlockName ()) $this -> _buildPlugins ();
2024-09-07 20:53:46 +10:00
$this -> _xml -> combinexml ( $this -> _errors -> errorsAddToXML ( $this -> _sysinfo -> getEncoding ()));
}
/**
* get the xml object
*
2025-05-14 16:14:01 +01:00
* @ return SimpleXmlElement
2024-09-07 20:53:46 +10:00
*/
public function getXml ()
{
$this -> _buildXml ();
return $this -> _xml -> getSimpleXmlElement ();
}
/**
* include xml - trees of the plugins to the main xml
*
* @ return void
*/
private function _buildPlugins ()
{
$pluginroot = $this -> _xml -> addChild ( " Plugins " );
2025-05-14 16:14:01 +01:00
if ((( $this -> _plugin != '' ) || $this -> _complete_request ) && count ( $this -> _plugins ) > 0 ) {
2024-09-07 20:53:46 +10:00
$plugins = array ();
if ( $this -> _complete_request ) {
$plugins = $this -> _plugins ;
}
2025-05-14 16:14:01 +01:00
if (( $this -> _plugin != '' )) {
2024-09-07 20:53:46 +10:00
$plugins = array ( $this -> _plugin );
}
foreach ( $plugins as $plugin ) {
2025-05-14 16:14:01 +01:00
if ( ! $this -> _complete_request ||
( ! defined ( 'PSI_PLUGIN_' . strtoupper ( $plugin ) . '_SSH_HOSTNAME' ) && ! defined ( 'PSI_PLUGIN_' . strtoupper ( $plugin ) . '_WMI_HOSTNAME' )) ||
( defined ( 'PSI_SSH_HOSTNAME' ) && ( PSI_SSH_HOSTNAME == constant ( 'PSI_PLUGIN_' . strtoupper ( $plugin ) . '_SSH_HOSTNAME' ))) ||
( defined ( 'PSI_WMI_HOSTNAME' ) && ( PSI_WMI_HOSTNAME == constant ( 'PSI_PLUGIN_' . strtoupper ( $plugin ) . '_WMI_HOSTNAME' )))) {
$object = new $plugin ( $this -> _sysinfo -> getEncoding ());
$object -> execute ();
$oxml = $object -> xml ();
if ( sizeof ( $oxml ) > 0 ) {
$pluginroot -> combinexml ( $oxml );
}
2024-09-07 20:53:46 +10:00
}
}
}
}
/**
* build the xml structure where the content can be inserted
*
* @ return void
*/
private function _xmlbody ()
{
$dom = new DOMDocument ( '1.0' , 'UTF-8' );
$root = $dom -> createElement ( " tns:phpsysinfo " );
$root -> setAttribute ( 'xmlns:tns' , 'http://phpsysinfo.sourceforge.net/' );
$root -> setAttribute ( 'xmlns:xsi' , 'http://www.w3.org/2001/XMLSchema-instance' );
$root -> setAttribute ( 'xsi:schemaLocation' , 'http://phpsysinfo.sourceforge.net/ phpsysinfo3.xsd' );
$dom -> appendChild ( $root );
$this -> _xml = new SimpleXMLExtended ( simplexml_import_dom ( $dom ), $this -> _sysinfo -> getEncoding ());
$generation = $this -> _xml -> addChild ( 'Generation' );
$generation -> addAttribute ( 'version' , PSI_VERSION_STRING );
$generation -> addAttribute ( 'timestamp' , time ());
$options = $this -> _xml -> addChild ( 'Options' );
$options -> addAttribute ( 'tempFormat' , defined ( 'PSI_TEMP_FORMAT' ) ? strtolower ( PSI_TEMP_FORMAT ) : 'c' );
$options -> addAttribute ( 'byteFormat' , defined ( 'PSI_BYTE_FORMAT' ) ? strtolower ( PSI_BYTE_FORMAT ) : 'auto_binary' );
2025-05-14 16:14:01 +01:00
$options -> addAttribute ( 'datetimeFormat' , defined ( 'PSI_DATETIME_FORMAT' ) ? strtolower ( PSI_DATETIME_FORMAT ) : 'utc' );
2024-09-07 20:53:46 +10:00
if ( defined ( 'PSI_REFRESH' )) {
2025-05-14 16:14:01 +01:00
$options -> addAttribute ( 'refresh' , max ( intval ( PSI_REFRESH ), 0 ));
2024-09-07 20:53:46 +10:00
} else {
$options -> addAttribute ( 'refresh' , 60000 );
}
if ( defined ( 'PSI_FS_USAGE_THRESHOLD' )) {
2025-05-14 16:14:01 +01:00
if ((( $fsut = intval ( PSI_FS_USAGE_THRESHOLD )) >= 1 ) && ( $fsut <= 99 )) {
$options -> addAttribute ( 'threshold' , $fsut );
2024-09-07 20:53:46 +10:00
}
} else {
$options -> addAttribute ( 'threshold' , 90 );
}
if ( count ( $this -> _plugins ) > 0 ) {
2025-05-14 16:14:01 +01:00
if (( $this -> _plugin != '' )) {
2024-09-07 20:53:46 +10:00
$plug = $this -> _xml -> addChild ( 'UsedPlugins' );
$plug -> addChild ( 'Plugin' ) -> addAttribute ( 'name' , $this -> _plugin );
} elseif ( $this -> _complete_request ) {
$plug = $this -> _xml -> addChild ( 'UsedPlugins' );
foreach ( $this -> _plugins as $plugin ) {
$plug -> addChild ( 'Plugin' ) -> addAttribute ( 'name' , $plugin );
}
2025-05-14 16:14:01 +01:00
/*
2024-09-07 20:53:46 +10:00
} else {
$plug = $this -> _xml -> addChild ( 'UnusedPlugins' );
foreach ( $this -> _plugins as $plugin ) {
$plug -> addChild ( 'Plugin' ) -> addAttribute ( 'name' , $plugin );
}
2025-05-14 16:14:01 +01:00
*/
2024-09-07 20:53:46 +10:00
}
}
}
}