63 lines
1.6 KiB
PHP
63 lines
1.6 KiB
PHP
<?php
|
|
|
|
if (!defined('WPO_VERSION')) die('No direct access allowed');
|
|
use \WebPConvert\Convert\ConverterFactory;
|
|
|
|
require_once(WPO_PLUGIN_MAIN_PATH . 'vendor/autoload.php');
|
|
require_once(WPO_PLUGIN_MAIN_PATH . 'webp/class-wpo-webp-test-run.php');
|
|
|
|
if (!class_exists('WPO_WebP_Convert')) :
|
|
|
|
class WPO_WebP_Convert {
|
|
|
|
public $converters = null;
|
|
|
|
public function __construct() {
|
|
$this->converters = WP_Optimize()->get_options()->get_option('webp_converters');
|
|
}
|
|
|
|
/**
|
|
* Converts uploaded image to webp format
|
|
*
|
|
* @param string $source - path of the source file
|
|
*/
|
|
public function convert($source) {
|
|
if (count($this->converters) < 1) return false;
|
|
|
|
$destination = $this->get_destination_path($source);
|
|
$this->check_converters_and_do_conversion($source, $destination);
|
|
}
|
|
|
|
/**
|
|
* Returns the destination full path
|
|
*
|
|
* @param string $source - path of the source file
|
|
*
|
|
* @return string $destination - path of destination file
|
|
*/
|
|
protected function get_destination_path($source) {
|
|
$path_parts = pathinfo($source);
|
|
$destination = $path_parts['dirname'] . '/'. basename($source) . '.webp';
|
|
return $destination;
|
|
}
|
|
|
|
/**
|
|
* Loop through available converters and do the conversion
|
|
*
|
|
* @param string $source - path of source file
|
|
* @param string $destination - path of destination file
|
|
*/
|
|
protected function check_converters_and_do_conversion($source, $destination) {
|
|
foreach ($this->converters as $converter) {
|
|
$converter_instance = ConverterFactory::makeConverter(
|
|
$converter,
|
|
$source,
|
|
$destination
|
|
);
|
|
$converter_instance->doConvert();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
endif;
|