first commit

This commit is contained in:
2026-03-05 13:07:40 +01:00
commit 64ba0721ee
25709 changed files with 4691006 additions and 0 deletions

View File

@@ -0,0 +1,65 @@
<?php
/**
* Class WPDesk_Flexible_Shipping_SaaS_Settings
*/
class WPDesk_Flexible_Shipping_Logger_Downloader implements \FSVendor\WPDesk\PluginBuilder\Plugin\HookablePluginDependant {
use \FSVendor\WPDesk\PluginBuilder\Plugin\PluginAccess;
const GET_PARAMETER = 'fs-get-log';
/**
* Logger factory.
*
* @var \FSVendor\WPDesk\Logger\WPDeskLoggerFactory
*/
private $logger_factory;
/**
* WPDesk_Flexible_Shipping_SaaS_Logger_Downloader constructor.
*
* @param \FSVendor\WPDesk\Logger\WPDeskLoggerFactory $logger_factory Logger factory.
*/
public function __construct( \FSVendor\WPDesk\Logger\WPDeskLoggerFactory $logger_factory = null ) {
$this->logger_factory = $logger_factory;
}
/**
* Hooks.
*/
public function hooks() {
add_action( 'admin_init', [ $this, 'handle_log_file_download' ] );
}
/**
* Get download URL.
*
* @return string
*/
public function get_download_url() {
return admin_url( 'admin.php?' . self::GET_PARAMETER . '=1' );
}
/**
* Handle log file download.
*/
public function handle_log_file_download() {
if ( isset( $_GET[ self::GET_PARAMETER ] ) ) {
if ( current_user_can( 'manage_options' ) ) {
$logger_settings = new WPDesk_Flexible_Shipping_Logger_Settings();
$file_name = $this->logger_factory->getFileName( $logger_settings->get_logger_channel_name() );
if ( file_exists( $file_name ) ) {
header( 'Content-Type: text/plain' );
header( 'Content-Disposition: attachment; filename="fs-debug.log"' );
readfile( $file_name );
} else {
wp_die( __( 'File not exists!', 'flexible-shipping' ) );
}
} else {
wp_die( __( 'Insufficient privileges!', 'flexible-shipping' ) );
}
}
}
}

View File

@@ -0,0 +1,39 @@
<?php
/**
* Class WPDesk_Flexible_Shipping_Logger_Factory
*
* @deprecated
*/
class WPDesk_Flexible_Shipping_Logger_Factory {
const NULL_LOG_NAME = 'null-log';
/**
* Logger.
*
* @var \Psr\Log\LoggerInterface
*/
private static $logger;
/**
* Create logger.
*
* @return \Psr\Log\LoggerInterface
*/
public static function create_logger() {
if ( null === self::$logger ) {
$logger_settings = new WPDesk_Flexible_Shipping_Logger_Settings();
if ( $logger_settings->is_enabled() ) {
self::$logger = new WPDesk_Flexible_Shipping_WooCommerce_Context_Logger(
@\FSVendor\WPDesk\Logger\LoggerFacade::get_logger( $logger_settings->get_logger_channel_name() ),
$logger_settings->get_logging_context()
);
} else {
self::$logger = new \Monolog\Logger( self::NULL_LOG_NAME );
}
}
return self::$logger;
}
}

View File

@@ -0,0 +1,100 @@
<?php
/**
* Class WPDesk_Flexible_Shipping_SaaS_Settings
*/
class WPDesk_Flexible_Shipping_Logger_Settings {
const LOGGER_CHANNEL_NAME = 'fs';
const DEBUG_LOG_OPTION = 'debug_log';
const OPTION_NAME = 'fs_logger_enabled';
const OPTION_VALUE_DISABLED = '0';
const OPTION_VALUE_ENABLED = '1';
/**
* Enabled.
*
* @var bool
*/
private $enabled = false;
/**
* SaaS settings.
*
* @var WPDesk_Flexible_Shipping_Settings
*/
private $saas_settings;
/**
* WPDesk_Flexible_Shipping_SaaS_Logger_Settings constructor.
*
* @param WPDesk_Flexible_Shipping_Settings $saas_settings SaaS settings.
*/
public function __construct( WPDesk_Flexible_Shipping_Settings $saas_settings = null ) {
$option_value = get_option( self::OPTION_NAME, self::OPTION_VALUE_DISABLED );
$this->enabled = self::OPTION_VALUE_ENABLED === $option_value;
$this->saas_settings = $saas_settings;
}
/**
* Get logger channel name.
*
* @return string
*/
public function get_logger_channel_name() {
return self::LOGGER_CHANNEL_NAME;
}
/**
* Is enabled.
*
* @return bool
*/
public function is_enabled() {
return $this->enabled;
}
/**
* Update option from saas settings.
*/
public function update_option_from_saas_settings() {
$saas_settings_value = $this->saas_settings->get_option( self::DEBUG_LOG_OPTION );
if ( ! empty( $saas_settings_value ) && 'yes' === $saas_settings_value ) {
$option_value = self::OPTION_VALUE_ENABLED;
} else {
$option_value = self::OPTION_VALUE_DISABLED;
}
update_option( self::OPTION_NAME, $option_value );
$this->enabled = self::OPTION_VALUE_ENABLED === $option_value;
}
/**
* Add fields to settings.
*
* @param array $settings Settings.
*
* @return array
*/
public function add_fields_to_settings( array $settings ) {
$settings[ self::DEBUG_LOG_OPTION ] = array(
'type' => 'checkbox',
'label' => __( 'Enable Debug Mode', 'flexible-shipping' ),
'title' => __( 'Debug mode', 'flexible-shipping' ),
);
if ( 'yes' === $this->saas_settings->get_option( self::DEBUG_LOG_OPTION ) ) {
$downloader = new WPDesk_Flexible_Shipping_Logger_Downloader();
$settings[ self::DEBUG_LOG_OPTION ]['description'] = sprintf(
// Translators: URL.
__( '%1$sDownload debug.log file%2$s', 'flexible-shipping' ),
sprintf( '<a href="%1$s" target="_blank">', $downloader->get_download_url() ),
'</a>'
);
}
return $settings;
}
}

View File

@@ -0,0 +1,56 @@
<?php
use Psr\Log\LoggerInterface;
use Psr\Log\LoggerTrait;
/**
* Class WPDesk_Flexible_Shipping_WooCommerce_Context_Logger
*/
class WPDesk_Flexible_Shipping_WooCommerce_Context_Logger implements LoggerInterface {
use LoggerTrait;
/**
* Logger.
*
* @var LoggerInterface
*/
private $logger;
/**
* Default context.
*
* @var array
*/
private $default_context;
/**
* WPDesk_Flexible_Shipping_Context_Logger constructor.
*
* @param LoggerInterface $logger Logger.
* @param string $source WooCommerce source context.
* @param array $context Default context for logger.
*/
public function __construct( LoggerInterface $logger, $source, array $context = [] ) {
$this->logger = $logger;
$context['source'] = $source;
$this->default_context = $context;
}
/**
* Logs with an arbitrary level.
*
* @param string $level Level.
* @param string $message Message.
* @param array $context Context.
*
* @return void
*/
public function log( $level, $message, array $context = array() ) {
$context = array_merge( $this->default_context, $context );
$this->logger->log( $level, $message, $context );
}
}