HamroKhanpin/hamrokhaanpaan/wp-content/__plugins/wp-optimize/webp/class-wpo-server-info.php
2024-04-29 13:12:44 +05:45

105 lines
2.0 KiB
PHP

<?php
if (!defined('WPO_PLUGIN_MAIN_PATH')) die('No direct access allowed');
class WPO_Server_Info {
private static $_instance = null;
/**
* @var $_server_name Web server engine name
*/
private $_server_name;
/**
* @var $_rewrite_status Web server's URL rewrite ability
*/
private $_rewrite_status;
/**
* Setup server information
*/
public function __construct() {
$this->set_server_name();
$this->set_rewrite_status();
}
/**
* Gets singleton instance
*
* @return object
*/
public static function get_instance() {
if (null === self::$_instance) {
self::$_instance = new self();
}
return self::$_instance;
}
/**
* Detect and set web server names
*/
private function set_server_name() {
global $is_apache, $is_nginx, $is_iis7, $is_IIS;
if ($is_apache) {
$this->_server_name = 'apache';
}
if ($is_iis7) {
$this->_server_name = 'iis7';
}
if ($is_IIS) {
$this->_server_name = 'iis';
}
if ($is_nginx) {
$this->_server_name = 'nginx';
}
}
/**
* Sets web server's rewrite ability
*/
private function set_rewrite_status() {
if ('apache' === $this->_server_name) {
$this->test_htaccess_capabilities();
} else {
$this->_rewrite_status = false;
}
}
/**
* Test Apache/LiteSpeed server's htaccess capabilities, and sets status and info
*/
private function test_htaccess_capabilities() {
if (!class_exists('WPO_Htaccess_Capabilities')) {
include_once WPO_PLUGIN_MAIN_PATH . 'webp/class-wpo-htaccess-capabilities.php';
}
$htc = WPO_Htaccess_Capabilities::get_instance();
if ($htc->htaccess_enabled && $htc->mod_rewrite && $htc->mod_headers && $htc->mod_mime) {
$this->_rewrite_status = true;
} elseif ($htc->htaccess_enabled) {
$this->_rewrite_status = false;
}
}
/**
* Getter for web server name
*
* @return string
*/
public function get_server_name() {
return $this->_server_name;
}
/**
* Getter for web server's rewrite capability
*
* @return bool
*/
public function get_rewrite_status() {
return $this->_rewrite_status;
}
}