58 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
namespace ShortPixel\External\Offload;
 | 
						|
 | 
						|
use ShortPixel\Model\File\FileModel as FileModel;
 | 
						|
 | 
						|
if ( ! defined( 'ABSPATH' ) ) {
 | 
						|
	exit; // Exit if accessed directly.
 | 
						|
}
 | 
						|
 | 
						|
class VirtualFileSystem
 | 
						|
{
 | 
						|
 | 
						|
		protected $offloadName;
 | 
						|
 | 
						|
		public function __construct($name)
 | 
						|
		{
 | 
						|
				$this->offloadName = $name;
 | 
						|
				$this->listen();
 | 
						|
		}
 | 
						|
 | 
						|
		public function listen()
 | 
						|
		{
 | 
						|
				//  $fs = \wpSPIO()->fileSystem()->startTrustedMode(); // @todo check if this works trusted mode forever.
 | 
						|
					add_filter('shortpixel/image/urltopath', array($this, 'checkIfOffloaded'), 10,2);
 | 
						|
					add_filter('shortpixel/file/virtual/translate', array($this, 'getLocalPathByURL'));
 | 
						|
					add_filter('shortpixel/file/virtual/heavy_features', array($this, 'extraFeatures'), 10);
 | 
						|
		}
 | 
						|
 | 
						|
		public function checkIfOffloaded($bool, $url)
 | 
						|
		{
 | 
						|
				// Slow as it is, check nothing.
 | 
						|
			 if ($offloadName = 's3-uploads-human')
 | 
						|
			 {
 | 
						|
				 return FileModel::$VIRTUAL_STATELESS;
 | 
						|
			 }
 | 
						|
 | 
						|
			 if (file_exists($url))
 | 
						|
			 {
 | 
						|
				 return FileModel::$VIRTUAL_STATELESS;
 | 
						|
			 }
 | 
						|
			 return false;
 | 
						|
		}
 | 
						|
 | 
						|
		public function getLocalPathByURL($path)
 | 
						|
		{
 | 
						|
			 return $path;
 | 
						|
		}
 | 
						|
 | 
						|
		// Features like addUNlisted and retina's ( check outside the WP metadata realm ) add a lot of extra time to stateless / remote filesystems.  Disable by default to prevent pages from not loading.
 | 
						|
		public function extraFeatures()
 | 
						|
		{
 | 
						|
			 return false;
 | 
						|
		}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
} // class
 |