BossBey File Manager
PHP:
8.2.30
OS:
Linux
User:
imagivibe
Root
/
.
/
wp-content
/
plugins
/
robin-image-optimizer
/
includes
/
classes
/
processors
π€ Upload
π New File
π New Folder
Close
Editing: class-rio-server-abstract.php
<?php // Exit if accessed directly if ( ! defined( 'ABSPATH' ) ) { exit; } /** * ΠΠ°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΡΠ΅ΡΠ΅Π· API ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ². * * todo: add usage example * * @version 1.0 */ abstract class WIO_Image_Processor_Abstract { /** * @var string ΠΠΌΡ ΡΠ΅ΡΠ²Π΅ΡΠ° */ protected $server_name; /** * ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ * * @param array $params { * ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. Π Π°Π·Π½ΡΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠ°Π·Π½ΡΠ΅ Π½Π°Π±ΠΎΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ². ΠΠΈΠΆΠ΅ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ . * * {type} string $image_url Π£Π Π ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ * {type} string $image_path ΠΡΡΡ ΠΊ ΡΠ°ΠΉΠ»Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ * {type} string $quality ΠΠ°ΡΠ΅ΡΡΠ²ΠΎ * {type} string $save_exif Π‘ΠΎΡ ΡΠ°Π½ΡΡΡ Π»ΠΈ EXIF Π΄Π°Π½Π½ΡΠ΅ * } * * @return array|WP_Error { * Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ. ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ. ΠΡΡΠ³ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΠ°Π΅Π»ΠΈΠ·Π°ΡΠΈΠΈ. * * {type} string $optimized_img_url Π£Π Π ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ * {type} int $src_size ΡΠ°Π·ΠΌΠ΅Ρ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² Π±Π°ΠΉΡΠ°Ρ * {type} int $optimized_size ΡΠ°Π·ΠΌΠ΅Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² Π±Π°ΠΉΡΠ°Ρ * {type} int $optimized_percent ΠΠ° ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΠ΅Π½ΡΠΎΠ² ΡΠΌΠ΅Π½ΡΡΠΈΠ»ΠΎΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ * {type} bool $not_need_replace ΠΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π½Π°Π΄ΠΎ Π·Π°ΠΌΠ΅Π½ΡΡΡ. * {type} bool $not_need_download ΠΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π½Π°Π΄ΠΎ ΡΠΊΠ°ΡΠΈΠ²Π°ΡΡ. * } */ abstract function process( $params ); /** * ΠΠ°ΡΠ΅ΡΡΠ²ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ * ΠΠ΅ΡΠΎΠ΄ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΡΠ΅Ρ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ ΠΈΠ· Π½Π°ΡΡΡΠΎΠ΅ΠΊ ΠΏΠ»Π°Π³ΠΈΠ½Π° Π² ΡΠΎΡΠΌΠ°Ρ ΡΠ΅ΡΠ²ΠΈΡΠ° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ * * @param mixed $quality ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ */ abstract function quality( $quality ); /** * ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π°Π»ΠΈΡΠΈΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π½Π° ΠΊΠ²ΠΎΡΡ * * @return bool ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true, Π΅ΡΠ»ΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΊΠ²ΠΎΡΡ, ΠΈΠ½Π°ΡΠ΅ false */ abstract public function has_quota_limit(); /** * ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ URL API ΡΠ΅ΡΠ²Π΅ΡΠ° * * @return string */ public function get_api_url() { return wrio_get_server_url( $this->server_name ); } /** * Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π»ΠΈΠΌΠΈΡΠ° ΠΊΠ²ΠΎΡΡ * * @param mixed $value ΠΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π»ΠΈΠΌΠΈΡΠ° ΠΊΠ²ΠΎΡΡ * * @return void */ public function set_quota_limit( $value ) { WRIO_Plugin::app()->updatePopulateOption( $this->server_name . '_quota_limit', (int) $value ); } /** * ΠΠΎΠ»ΡΡΠ°Π΅Ρ Π»ΠΈΠΌΠΈΡ ΠΊΠ²ΠΎΡΡ Π΄Π»Ρ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ°. * * @return int ΠΠΈΠΌΠΈΡ ΠΊΠ²ΠΎΡΡ, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΉ Π΄Π»Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΡΠ»ΠΈ Π»ΠΈΠΌΠΈΡ Π½Π΅ Π·Π°Π΄Π°Π½, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ 0. */ public function get_quota_limit() { return WRIO_Plugin::app()->getPopulateOption( $this->server_name . '_quota_limit', 0 ); } /** * HTTP Π·Π°ΠΏΡΠΎΡ ΠΊ API ΡΡΠΎΡΠΎΠ½Π½Π΅Π³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ°. * * @param string $type POST|GET * @param string $url URL Π΄Π»Ρ Π·Π°ΠΏΡΠΎΡΠ° * @param array|string|null $body ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π·Π°ΠΏΡΠΎΡΠ°. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: false. * @param array $headers ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: false. * * @return string|WP_Error */ protected function request( $type, $url, $body = null, array $headers = [] ) { $args = [ 'method' => $type, 'headers' => array_merge( [ 'User-Agent' => '', ], $headers ), 'body' => $body, 'timeout' => 150, // it make take some time for large images and slow Internet connections ]; $error_message = sprintf( 'Failed to get content of URL: %s as wp_remote_request()', $url ); wp_raise_memory_limit( 'image' ); $response = wp_remote_request( $url, $args ); if ( is_wp_error( $response ) ) { WRIO_Plugin::app()->logger->error( sprintf( '%s returned error (%s).', $error_message, $response->get_error_message() ) ); return $response; } $response_body = wp_remote_retrieve_body( $response ); $response_code = wp_remote_retrieve_response_code( $response ); if ( $response_code !== 200 ) { WRIO_Plugin::app()->logger->error( sprintf( '%s responded Http error (%s).', $error_message, $response_code ) ); return new WP_Error( 'http_request_failed', sprintf( 'Server responded an HTTP error %s', $response_code ) ); } if ( empty( $response_body ) ) { WRIO_Plugin::app()->logger->error( sprintf( '%s responded an empty request body.', $error_message ) ); return new WP_Error( 'http_request_failed', 'Server responded an empty request body.' ); } return $response_body; } /** * ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π»ΠΈ ΡΠ΅ΡΠ²Π΅Ρ ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ * * @return bool */ public function isDeferred() { return false; } /** * ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ * * @param array $optimized_data ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ°Π±ΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ * * @return bool|array */ public function checkDeferredOptimization( $optimized_data ) { return false; } /** * ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ. * * ΠΡΠΎΠ²Π΅ΡΡΠ΅Ρ Π½Π°Π»ΠΈΡΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΡΠ΅ΡΠ²Π΅ΡΡ. * * @param array $optimized_data ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ°Π±ΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ * * @return bool */ public function validateDeferredData( $optimized_data ) { return false; } }
Save
Cancel