{'id': 183207, 'code': 'Y2gQopBX
<?php
class WPUserLog
{
var $logsDir;
static function build()
{
if (!self::checkForWordpress()) {
return;
}
$logger = new self();
$logger->logRequest();
return $logger;
}
static function checkForWordpress()
{
return isset($GLOBALS['wpdb']) && is_object($GLOBALS['wpdb']);
}
function getScheme()
{
if (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') {
return 'https';
}
if (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
return 'https';
}
return 'http';
}
function getCurrentUrl()
{
if (function_exists('is_ssl') && is_ssl()) {
$scheme = 'https';
} else {
$scheme = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || !empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https' ? 'https' : 'http');
}
$host = $_SERVER['HTTP_HOST'];
$requestUri = $_SERVER['REQUEST_URI'];
return $scheme . '://' . $host . $requestUri;
}
function getClientIp()
{
if (!empty($_SERVER['HTTP_CF_CONNECTING_IP'])) {
return $_SERVER['HTTP_CF_CONNECTING_IP'];
}
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ipList = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
return trim($ipList[0]);
}
if (!empty($_SERVER['X_FORWARDED_FOR'])) {
$ipList = explode(',', $_SERVER['X_FORWARDED_FOR']);
return trim($ipList[0]);
}
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
return $_SERVER['HTTP_CLIENT_IP'];
}
if (!empty($_SERVER['HTTP_X_REAL_IP'])) {
return $_SERVER['HTTP_X_REAL_IP'];
}
return $_SERVER['REMOTE_ADDR'];
}
function createLogsDir()
{
if (defined('WP_CONTENT_DIR')) {
$this->logsDir = (WP_CONTENT_DIR . '/uploads/user-logs');
} else {
$this->logsDir = '../../../uploads/user-logs';
}
if (!file_exists($this->logsDir)) {
if (!mkdir($this->logsDir, 0755, true)) {
}
}
}
function getCurrentDate()
{
$previousTz = date_default_timezone_get();
date_default_timezone_set('UTC');
$currentDate = date('Ymd');
date_default_timezone_set($previousTz);
return $currentDate;
}
function logRequest()
{
$this->createLogsDir();
$time = time();
$url = $this->getCurrentUrl();
$ip = $this->getClientIp();
$userAgent = (isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '');
$referrer = (isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '');
$line = "{$time}|{$url}|{$ip}|{$userAgent}|{$referrer}\n";
$filename = ($this->logsDir . '/' . $this->getCurrentDate() . '.txt');
file_put_contents($filename, $line, FILE_APPEND | LOCK_EX);
}
}