89 lines
1.9 KiB
PHP
89 lines
1.9 KiB
PHP
|
<?php
|
||
|
namespace ShortPixel\External\Offload;
|
||
|
use ShortPixel\ShortPixelLogger\ShortPixelLogger as Log;
|
||
|
|
||
|
if ( ! defined( 'ABSPATH' ) ) {
|
||
|
exit; // Exit if accessed directly.
|
||
|
}
|
||
|
|
||
|
// Class to check what offloader to use and load it. To offload.
|
||
|
class Offloader
|
||
|
{
|
||
|
private static $instance;
|
||
|
private static $offload_instance;
|
||
|
private $offloadName;
|
||
|
|
||
|
public static function getInstance()
|
||
|
{
|
||
|
if (is_null(self::$instance))
|
||
|
{
|
||
|
self::$instance = new Offloader();
|
||
|
}
|
||
|
|
||
|
return self::$instance;
|
||
|
}
|
||
|
|
||
|
public function __construct()
|
||
|
{
|
||
|
add_action('plugins_loaded', array($this, 'load'));
|
||
|
add_action('as3cf_init', array($this, 'initS3Offload'));
|
||
|
}
|
||
|
|
||
|
public function load()
|
||
|
{
|
||
|
$bool = $this->checkVirtualLoaders();
|
||
|
if (true === $bool)
|
||
|
{
|
||
|
self::$offload_instance = new VirtualFileSystem($this->offloadName);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
protected function checkVirtualLoaders()
|
||
|
{
|
||
|
if ( class_exists('\Stack\Config') ) // Bitpoke Stack MU
|
||
|
{
|
||
|
$this->offloadName = 'stack';
|
||
|
return true;
|
||
|
}
|
||
|
elseif (defined('STACK_MEDIA_BUCKET'))
|
||
|
{
|
||
|
$this->offloadName = 'stack';
|
||
|
return true;
|
||
|
}
|
||
|
elseif (class_exists('\S3_Uploads\Plugin'))
|
||
|
{
|
||
|
$this->offloadName = 's3-uploads-human';
|
||
|
return true;
|
||
|
}
|
||
|
/* (Doesn't work)
|
||
|
elseif (function_exists('ud_check_stateless_media'))
|
||
|
{
|
||
|
$this->offloadName = 'wp-stateless';
|
||
|
return true;
|
||
|
} */
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
// If As3cfInit is called check WpOffload runtime. This is later in order than plugins_loaded!
|
||
|
public function initS3Offload($as3cf)
|
||
|
{
|
||
|
if (is_null(self::$offload_instance))
|
||
|
{
|
||
|
$this->offloadName = 'wp-offload';
|
||
|
self::$offload_instance = new wpOffload($as3cf);
|
||
|
}
|
||
|
else {
|
||
|
Log::addError('Instance is not null - other virtual component has loaded! (' . $this->offloadName . ')');
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public function getOffloadName()
|
||
|
{
|
||
|
return $this->offloadName;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
Offloader::getInstance(); // init
|