Your IP : 216.73.216.85


Current Path : /home/smartconb/www/armencom33/administrator/components/com_eyesite/helpers/
Upload File :
Current File : /home/smartconb/www/armencom33/administrator/components/com_eyesite/helpers/trace_helper.php

<?php
/********************************************************************
Product		: Eyesite
Date		: 6 May 2024
Copyright	: Les Arbres Design 2009-2024
Contact		: https://www.lesarbresdesign.info
Licence		: GNU General Public License
*********************************************************************/
defined('_JEXEC') or die('Restricted Access');

use Joomla\CMS\Factory;
use Joomla\CMS\Uri\Uri;
use Joomla\CMS\Installer\Installer;
use Joomla\CMS\Plugin\PluginHelper;

define("LAE_TRACE_FILE_NAME", 'trace.txt');
define("LAE_TRACE_FILE_PATH", JPATH_ROOT.'/components/com_eyesite/trace.txt');
define("LAE_TRACE_FILE_URL", Uri::root().'components/com_eyesite/trace.txt');
define("LAE_MAX_TRACE_SIZE", 5000000);	// about 5Mb
define("LAE_MAX_TRACE_AGE",   21600);		// maximum trace file age in seconds (6 hours)
define("LAE_UTF8_HEADER",     "\xEF"."\xBB"."\xBF");	// UTF8 file header

if (class_exists("LAE_trace"))
	return;

class LAE_trace
{

//-------------------------------------------------------------------------------
// Write an entry to the trace file
// Tracing is ON if the trace file exists
// if $no_time is true, the date time is not added
//
static function trace($data, $showtime=true)
{
	if (@!file_exists(LAE_TRACE_FILE_PATH))
		return;
	if (filesize(LAE_TRACE_FILE_PATH) > LAE_MAX_TRACE_SIZE)
		{
		@unlink(LAE_TRACE_FILE_PATH);
		@file_put_contents(LAE_TRACE_FILE_PATH, LAE_UTF8_HEADER.date("d/m/y H:i").' New trace file created'."\n");
		}
    if ($showtime)
    	@file_put_contents(LAE_TRACE_FILE_PATH, date("H:i:s").' '.$data."\n",FILE_APPEND);
    else
    	@file_put_contents(LAE_TRACE_FILE_PATH, '  '.$data."\n",FILE_APPEND);
}

//-------------------------------------------------------------------------------
// Start a new trace file
//
static function init_trace($config_data)
{
	self::delete_trace_file();
	@file_put_contents(LAE_TRACE_FILE_PATH, LAE_UTF8_HEADER.date("d/m/y H:i").' Tracing Initialised'."\n");
	
	$locale = setlocale(LC_ALL,0);
	$app = Factory::getApplication();

	$db = Factory::getDBO();
	$db->setQuery("SELECT version()");
	$db_version = $db->loadResult();

	$db->setQuery("SHOW VARIABLES LIKE 'character_set_%'");
	$rows = $db->loadObjectList();
	$charset_info = '';
	foreach ($rows as $row)
		$charset_info .= '    '.$row->Variable_name.' = '.$row->Value."\n";

	self::trace('Eyesite version  : '.self::getComponentVersion(), false);
	self::trace('Eyesite plugin   : '.self::getPluginStatus(), false);
	self::trace("Joomla version   : ".JVERSION, false);
	self::trace("PHP version      : ".phpversion(), false);
	self::trace("Server OS        : ".PHP_OS, false);
	self::trace("PHP locale       : ".print_r($locale, true), false);
	self::trace("JPATH_ROOT       : ".JPATH_ROOT, false);
	self::trace("Uri::root()      : ".Uri::root(), false);
	self::trace("Config live_site : ".$app->get('live_site'), false);
	$tmp_dir = $app->get('tmp_path');
	if (is_writable($tmp_dir))
		self::trace("Temp directory is writeable: ".$tmp_dir, false);
	else
		self::trace("Temp directory is NOT writeable: ".$tmp_dir, false);
	self::trace("Database         : ".$db_version."\n".$charset_info, false);
	self::trace("Eyesite config   : ".print_r($config_data, true),false);
}

//-------------------------------------------------------------------------------
// Trace an entry point
// Tracing is ON if the trace file exists
//
static function trace_entry_point($front=false)
{
	if (@!file_exists(LAE_TRACE_FILE_PATH))
		return;
		
// if the trace file is more than 6 hours old, delete it, which will switch tracing off
//  - we don't want trace to be left on accidentally

	$filetime = @filemtime(LAE_TRACE_FILE_PATH);
	if (time() > ($filetime + LAE_MAX_TRACE_AGE))
		{
		self::delete_trace_file();
		return;
		}
			
	$date_time = date("d/m/y H:i:s").' ';	
	if ($front)
		self::trace("\n".$date_time.'================================ [Front Entry Point] ================================');
	else
		self::trace("\n".$date_time.'================================ [Admin Entry Point] ================================');
	$input = Factory::getApplication()->input;
	$method = $input->server->getString('REQUEST_METHOD','');
	$ip_address = $input->server->getString('REMOTE_ADDR','');
	$request_uri = $input->server->getString('REQUEST_URI','');  // includes all GET data
	$requested_with = $input->server->getString('HTTP_X_REQUESTED_WITH','');
	if ($requested_with == 'XMLHttpRequest')
		$method .= ' by AJAX';
	self::trace("$method from $ip_address @ $request_uri");
	$langObj = Factory::getLanguage();
	$language = $langObj->get('tag');
	self::trace("Site language is $language");
	if ($front)
		{
		if (!empty($input->server->getString('HTTP_USER_AGENT','')))
			self::trace('HTTP_USER_AGENT: '.$input->server->getString('HTTP_USER_AGENT',''));
		if (!empty($input->server->getString('HTTP_REFERER','')))
			self::trace('HTTP_REFERER: '.$input->server->getString('HTTP_REFERER',''));
		if (!empty($input->server->getString('HTTP_CONTENT_TYPE','')))
			self::trace('HTTP_CONTENT_TYPE: '.$input->server->getString('HTTP_CONTENT_TYPE',''));
		$session = Factory::getApplication()->getSession();
		$session_id = $session->getId();
		self::trace("Joomla session ID: $session_id");
		}
	if (!empty($input->get->getArray()))
		self::trace("Get data: ".print_r($input->get->getArray(),true));
	if (!empty($input->post->getArray()))
		self::trace("Post data: ".print_r($input->post->getArray(),true));
	if (!empty($input->files->getArray()))
		self::trace('File data: '.print_r($input->files->getArray(),true));
}

//-------------------------------------------------------------------------------
// Delete the trace file
//
static function delete_trace_file()
{
	if (@file_exists(LAE_TRACE_FILE_PATH))
		@unlink(LAE_TRACE_FILE_PATH);
}

//-------------------------------------------------------------------------------
// Return true if tracing is currently active
//
static function tracing()
{
	if (@file_exists(LAE_TRACE_FILE_PATH))
		return true;
	else
		return false;
}

//-------------------------------------------------------------------------------
// Get the component version from the component manifest XML file
//
static function getComponentVersion()
{
	$xml_array = Installer::parseXMLInstallFile(JPATH_ADMINISTRATOR.'/components/com_eyesite/eyesite.xml');
	return $xml_array['version'];
}

//-------------------------------------------------------------------------------
// Get the plugin status
//
static function getPluginStatus()
{
	$plugin_path = '/plugins/system/eyesite/eyesite.xml';

	if (!file_exists(JPATH_ROOT.$plugin_path))
		return 'Not installed';
		
	$xml_array = Installer::parseXMLInstallFile(JPATH_ROOT.$plugin_path);
	$version = $xml_array['version'];
		
	if (PluginHelper::isEnabled('system', 'eyesite'))
		return 'Version '.$version.' installed and enabled';
		
	return 'Version '.$version.' installed but disabled';
}

}