Version Description
Release date August 31st, 2021
* Fix: in some cases, the MIME type of other files than images were wrongly set to image/jpg
;
* Fix: when restoring from backup a PNG that was converted to JPG, the MIME type wasn't set back to image/png
;
* Fix: in case backup fails for any reason, the image in discussion will be skipped (so the original one won't get overwritten);
* Language: 0 new string added, 0 updated, 0 fuzzed, and 0 obsoleted.
Download this release
Release Info
Developer | petredobrescu |
Plugin | ShortPixel Image Optimizer |
Version | 4.22.5 |
Comparing to | |
See all releases |
Code changes from version 4.22.4 to 4.22.5
- class/Model/ImageModel.php +0 -1
- class/shortpixel-png2jpg.php +6 -4
- class/wp-short-pixel.php +5 -1
- readme.txt +8 -1
- shortpixel_api.php +1 -7
- wp-shortpixel.php +2 -2
class/Model/ImageModel.php
CHANGED
@@ -239,7 +239,6 @@ class ImageModel extends \ShortPixel\Model
|
|
239 |
// Find Thumbs returns *full file path*
|
240 |
$foundThumbs = \WpShortPixelMediaLbraryAdapter::findThumbs($pathFile->getFullPath());
|
241 |
|
242 |
-
//Log::addTemp('Found Thumbs', $foundThumbs);
|
243 |
// no thumbs, then done.
|
244 |
if (count($foundThumbs) == 0)
|
245 |
{
|
239 |
// Find Thumbs returns *full file path*
|
240 |
$foundThumbs = \WpShortPixelMediaLbraryAdapter::findThumbs($pathFile->getFullPath());
|
241 |
|
|
|
242 |
// no thumbs, then done.
|
243 |
if (count($foundThumbs) == 0)
|
244 |
{
|
class/shortpixel-png2jpg.php
CHANGED
@@ -322,7 +322,7 @@ class ShortPixelPng2Jpg {
|
|
322 |
$baseRelPath = '';
|
323 |
else
|
324 |
$baseRelPath = trailingslashit($baseRelPath);
|
325 |
-
|
326 |
$toReplace[self::removeUrlProtocol($imageUrl)] = $baseUrl . $baseRelPath . wp_basename($ret['file']);
|
327 |
$pngSize = $ret['png_size'];
|
328 |
$jpgSize = $ret['jpg_size'];
|
@@ -375,6 +375,7 @@ class ShortPixelPng2Jpg {
|
|
375 |
update_post_meta($ID, '_wp_attachment_metadata', $meta);
|
376 |
$itemHandler->deleteItemCache(); // remove cache since filetype changes.
|
377 |
Log::addDebug("Updated meta: " . json_encode($meta));
|
|
|
378 |
do_action('shortpixel/image/convertpng2jpg_after', $ID, $meta);
|
379 |
}
|
380 |
|
@@ -404,7 +405,6 @@ class ShortPixelPng2Jpg {
|
|
404 |
*/
|
405 |
protected function updateFileAlsoInWPMLDuplicates($parentID, &$parentMeta, $file){
|
406 |
$duplicates = ShortPixelMetaFacade::getWPMLDuplicates($parentID);
|
407 |
-
Log::addTemp("Update Duplicates on png2jpg", $duplicates);
|
408 |
foreach($duplicates as $ID) {
|
409 |
$meta = $parentID == $ID ? $parentMeta : wp_get_attachment_metadata($ID);
|
410 |
$meta['file'] = $file;
|
@@ -452,7 +452,7 @@ class ShortPixelPng2Jpg {
|
|
452 |
'attachments' => array("UPDATE $wpdb->posts SET guid = replace(guid, %s, %s) WHERE post_type = 'attachment'", __('Attachments','shortpixel-image-optimiser') ),
|
453 |
'links' => array("UPDATE $wpdb->links SET link_url = replace(link_url, %s, %s)", __('Links','shortpixel-image-optimiser') ),
|
454 |
'custom' => array("UPDATE $wpdb->postmeta SET meta_value = replace(meta_value, %s, %s)", __('Custom Fields','shortpixel-image-optimiser') ),
|
455 |
-
'guids' => array("UPDATE $wpdb->posts SET guid = replace(guid, %s, %s)
|
456 |
);
|
457 |
if(count($options) == 0) {
|
458 |
$options = array_keys($queries);
|
@@ -501,7 +501,9 @@ class ShortPixelPng2Jpg {
|
|
501 |
else {
|
502 |
foreach($map as $oldurl => $newurl) {
|
503 |
if(strlen($newurl)) {
|
504 |
-
|
|
|
|
|
505 |
$results[$option] = array($result, $queries[$option][1]);
|
506 |
}
|
507 |
}
|
322 |
$baseRelPath = '';
|
323 |
else
|
324 |
$baseRelPath = trailingslashit($baseRelPath);
|
325 |
+
|
326 |
$toReplace[self::removeUrlProtocol($imageUrl)] = $baseUrl . $baseRelPath . wp_basename($ret['file']);
|
327 |
$pngSize = $ret['png_size'];
|
328 |
$jpgSize = $ret['jpg_size'];
|
375 |
update_post_meta($ID, '_wp_attachment_metadata', $meta);
|
376 |
$itemHandler->deleteItemCache(); // remove cache since filetype changes.
|
377 |
Log::addDebug("Updated meta: " . json_encode($meta));
|
378 |
+
wp_update_post(array('ID' => $ID, 'post_mime_type' => 'image/jpeg' ));
|
379 |
do_action('shortpixel/image/convertpng2jpg_after', $ID, $meta);
|
380 |
}
|
381 |
|
405 |
*/
|
406 |
protected function updateFileAlsoInWPMLDuplicates($parentID, &$parentMeta, $file){
|
407 |
$duplicates = ShortPixelMetaFacade::getWPMLDuplicates($parentID);
|
|
|
408 |
foreach($duplicates as $ID) {
|
409 |
$meta = $parentID == $ID ? $parentMeta : wp_get_attachment_metadata($ID);
|
410 |
$meta['file'] = $file;
|
452 |
'attachments' => array("UPDATE $wpdb->posts SET guid = replace(guid, %s, %s) WHERE post_type = 'attachment'", __('Attachments','shortpixel-image-optimiser') ),
|
453 |
'links' => array("UPDATE $wpdb->links SET link_url = replace(link_url, %s, %s)", __('Links','shortpixel-image-optimiser') ),
|
454 |
'custom' => array("UPDATE $wpdb->postmeta SET meta_value = replace(meta_value, %s, %s)", __('Custom Fields','shortpixel-image-optimiser') ),
|
455 |
+
'guids' => array("UPDATE $wpdb->posts SET guid = replace(guid, %s, %s) ", __('GUIDs','shortpixel-image-optimiser') )
|
456 |
);
|
457 |
if(count($options) == 0) {
|
458 |
$options = array_keys($queries);
|
501 |
else {
|
502 |
foreach($map as $oldurl => $newurl) {
|
503 |
if(strlen($newurl)) {
|
504 |
+
$prepared = $wpdb->prepare( $queries[$option][0], $oldurl, $newurl);
|
505 |
+
Log::addDebug("Prepared Query", $prepared);
|
506 |
+
$result = $wpdb->query( $prepared );
|
507 |
$results[$option] = array($result, $queries[$option][1]);
|
508 |
}
|
509 |
}
|
class/wp-short-pixel.php
CHANGED
@@ -1422,7 +1422,7 @@ class WPShortPixel {
|
|
1422 |
//$prio = $this->prioQ->remove($ID);
|
1423 |
$prio = $this->prioQ->remove($itemId);
|
1424 |
if(isset($result["Code"])
|
1425 |
-
&& ( $result["Code"]
|
1426 |
|| (in_array(0+$result["Code"], array(-201)) && $meta->getRetries() >= 3))) { //for -201 (invalid image format) we retry only 3 times.
|
1427 |
//put this one in the failed images list - to show the user at the end
|
1428 |
$prio = $this->prioQ->addToFailed($itemHandler->getQueuedId());
|
@@ -2032,6 +2032,10 @@ class WPShortPixel {
|
|
2032 |
$fsFile = $fs->getFile($png2jpgMain); // original is non-existing at this time. :: Target
|
2033 |
$bkFile = $fs->getFile($bkFolder->getPath() . $fsFile->getFileName()); // Update this, because of filename (extension)
|
2034 |
|
|
|
|
|
|
|
|
|
2035 |
}
|
2036 |
|
2037 |
//first check if the file is readable by the current user - otherwise it will be unaccessible for the web browser
|
1422 |
//$prio = $this->prioQ->remove($ID);
|
1423 |
$prio = $this->prioQ->remove($itemId);
|
1424 |
if(isset($result["Code"])
|
1425 |
+
&& ( in_array($result["Code"], array("write-fail", "backup-fail")) //could not write
|
1426 |
|| (in_array(0+$result["Code"], array(-201)) && $meta->getRetries() >= 3))) { //for -201 (invalid image format) we retry only 3 times.
|
1427 |
//put this one in the failed images list - to show the user at the end
|
1428 |
$prio = $this->prioQ->addToFailed($itemHandler->getQueuedId());
|
2032 |
$fsFile = $fs->getFile($png2jpgMain); // original is non-existing at this time. :: Target
|
2033 |
$bkFile = $fs->getFile($bkFolder->getPath() . $fsFile->getFileName()); // Update this, because of filename (extension)
|
2034 |
|
2035 |
+
// Do the mime type
|
2036 |
+
wp_update_post(array('ID' => $attachmentID, 'post_mime_type' => 'image/png' ));
|
2037 |
+
|
2038 |
+
|
2039 |
}
|
2040 |
|
2041 |
//first check if the file is readable by the current user - otherwise it will be unaccessible for the web browser
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Tags: convert webp, optimize images, image optimization, resize, compressor, ima
|
|
4 |
Requires at least: 4.2.0
|
5 |
Tested up to: 5.8
|
6 |
Requires PHP: 5.6
|
7 |
-
Stable tag: 4.22.
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
@@ -314,6 +314,13 @@ Alternatively, you can use this filter in your theme's functions.php file:
|
|
314 |
|
315 |
== Changelog ==
|
316 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
317 |
= 4.22.4 =
|
318 |
Release date August 25th, 2021
|
319 |
* Compat: Added a notification system for the cases when AVIF files cannot be delivered with the current server/host settings;
|
4 |
Requires at least: 4.2.0
|
5 |
Tested up to: 5.8
|
6 |
Requires PHP: 5.6
|
7 |
+
Stable tag: 4.22.5
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
314 |
|
315 |
== Changelog ==
|
316 |
|
317 |
+
= 4.22.5 =
|
318 |
+
Release date August 31st, 2021
|
319 |
+
* Fix: in some cases, the MIME type of other files than images were wrongly set to `image/jpg`;
|
320 |
+
* Fix: when restoring from backup a PNG that was converted to JPG, the MIME type wasn't set back to `image/png`;
|
321 |
+
* Fix: in case backup fails for any reason, the image in discussion will be skipped (so the original one won't get overwritten);
|
322 |
+
* Language: 0 new string added, 0 updated, 0 fuzzed, and 0 obsoleted.
|
323 |
+
|
324 |
= 4.22.4 =
|
325 |
Release date August 25th, 2021
|
326 |
* Compat: Added a notification system for the cases when AVIF files cannot be delivered with the current server/host settings;
|
shortpixel_api.php
CHANGED
@@ -434,7 +434,6 @@ class ShortPixelAPI {
|
|
434 |
if($avifUrl !== "NA") {
|
435 |
$avifUrl = $this->setPreferredProtocol(urldecode($avifUrl));
|
436 |
$avifTempFile = download_url($avifUrl, $downloadTimeout);
|
437 |
-
Log::addTemp("Download Avif " . $avifUrl);
|
438 |
$avifTempFile = is_wp_error( $avifTempFile ) ? "NA" : $avifTempFile;
|
439 |
}
|
440 |
|
@@ -672,9 +671,6 @@ class ShortPixelAPI {
|
|
672 |
$webpUrl = isset($fileData->$webpType) ? $fileData->$webpType : 'NA';
|
673 |
$avifUrl = isset($fileData->$avifType) ? $fileData->$avifType : 'NA';
|
674 |
|
675 |
-
Log::addTemp('Searching for types : ' . $webpType . ' - ' . $avifType);
|
676 |
-
Log::addtemp("HandleSuccess, FileData ", $fileData);
|
677 |
-
|
678 |
//TODO la sfarsit sa faca fallback la handleDownload
|
679 |
if($archive) {
|
680 |
$downloadResult = $this->fromArchive($archive['Path'], $fileData->$fileType, $fileData->$fileSize, $fileData->OriginalSize, $webpUrl, $avifUrl );
|
@@ -711,8 +707,7 @@ class ShortPixelAPI {
|
|
711 |
if( $this->_settings->backupImages )
|
712 |
{
|
713 |
$backupStatus = self::backupImage($mainPath, $PATHs);
|
714 |
-
|
715 |
-
if($backupStatus == self::STATUS_FAIL) {
|
716 |
$itemHandler->incrementRetries(1, self::ERR_SAVE_BKP, $backupStatus["Message"]);
|
717 |
self::cleanupTemporaryFiles($archive, empty($tempFiles) ? array() : $tempFiles);
|
718 |
Log::addError('Failed to create image backup!', array('status' => $backupStatus));
|
@@ -812,7 +807,6 @@ class ShortPixelAPI {
|
|
812 |
/*$targetAvifFileCompat = $fs->getFile($targetFile->getFileDir() . $targetFile->getFileName() . '.avif');*/
|
813 |
|
814 |
$targetWebPFile = $fs->getFile($targetFile->getFileDir() . $targetFile->getFileBase() . '.avif');
|
815 |
-
Log::addTemp("Moving Avif file ");
|
816 |
$tempAvifFilePATH->move($targetWebPFile);
|
817 |
|
818 |
}
|
434 |
if($avifUrl !== "NA") {
|
435 |
$avifUrl = $this->setPreferredProtocol(urldecode($avifUrl));
|
436 |
$avifTempFile = download_url($avifUrl, $downloadTimeout);
|
|
|
437 |
$avifTempFile = is_wp_error( $avifTempFile ) ? "NA" : $avifTempFile;
|
438 |
}
|
439 |
|
671 |
$webpUrl = isset($fileData->$webpType) ? $fileData->$webpType : 'NA';
|
672 |
$avifUrl = isset($fileData->$avifType) ? $fileData->$avifType : 'NA';
|
673 |
|
|
|
|
|
|
|
674 |
//TODO la sfarsit sa faca fallback la handleDownload
|
675 |
if($archive) {
|
676 |
$downloadResult = $this->fromArchive($archive['Path'], $fileData->$fileType, $fileData->$fileSize, $fileData->OriginalSize, $webpUrl, $avifUrl );
|
707 |
if( $this->_settings->backupImages )
|
708 |
{
|
709 |
$backupStatus = self::backupImage($mainPath, $PATHs);
|
710 |
+
if($backupStatus['Status'] == self::STATUS_FAIL) {
|
|
|
711 |
$itemHandler->incrementRetries(1, self::ERR_SAVE_BKP, $backupStatus["Message"]);
|
712 |
self::cleanupTemporaryFiles($archive, empty($tempFiles) ? array() : $tempFiles);
|
713 |
Log::addError('Failed to create image backup!', array('status' => $backupStatus));
|
807 |
/*$targetAvifFileCompat = $fs->getFile($targetFile->getFileDir() . $targetFile->getFileName() . '.avif');*/
|
808 |
|
809 |
$targetWebPFile = $fs->getFile($targetFile->getFileDir() . $targetFile->getFileBase() . '.avif');
|
|
|
810 |
$tempAvifFilePATH->move($targetWebPFile);
|
811 |
|
812 |
}
|
wp-shortpixel.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
* Plugin Name: ShortPixel Image Optimizer
|
4 |
* Plugin URI: https://shortpixel.com/
|
5 |
* Description: ShortPixel optimizes images automatically, while guarding the quality of your images. Check your <a href="options-general.php?page=wp-shortpixel-settings" target="_blank">Settings > ShortPixel</a> page on how to start optimizing your image library and make your website load faster.
|
6 |
-
* Version: 4.22.
|
7 |
* Author: ShortPixel
|
8 |
* Author URI: https://shortpixel.com
|
9 |
* GitHub Plugin URI: https://github.com/short-pixel-optimizer/shortpixel-image-optimiser
|
@@ -33,7 +33,7 @@ define('SHORTPIXEL_PLUGIN_DIR', __DIR__);
|
|
33 |
|
34 |
//define('SHORTPIXEL_AFFILIATE_CODE', '');
|
35 |
|
36 |
-
define('SHORTPIXEL_IMAGE_OPTIMISER_VERSION', "4.22.
|
37 |
define('SHORTPIXEL_MAX_TIMEOUT', 10);
|
38 |
define('SHORTPIXEL_VALIDATE_MAX_TIMEOUT', 15);
|
39 |
define('SHORTPIXEL_BACKUP', 'ShortpixelBackups');
|
3 |
* Plugin Name: ShortPixel Image Optimizer
|
4 |
* Plugin URI: https://shortpixel.com/
|
5 |
* Description: ShortPixel optimizes images automatically, while guarding the quality of your images. Check your <a href="options-general.php?page=wp-shortpixel-settings" target="_blank">Settings > ShortPixel</a> page on how to start optimizing your image library and make your website load faster.
|
6 |
+
* Version: 4.22.5
|
7 |
* Author: ShortPixel
|
8 |
* Author URI: https://shortpixel.com
|
9 |
* GitHub Plugin URI: https://github.com/short-pixel-optimizer/shortpixel-image-optimiser
|
33 |
|
34 |
//define('SHORTPIXEL_AFFILIATE_CODE', '');
|
35 |
|
36 |
+
define('SHORTPIXEL_IMAGE_OPTIMISER_VERSION', "4.22.5");
|
37 |
define('SHORTPIXEL_MAX_TIMEOUT', 10);
|
38 |
define('SHORTPIXEL_VALIDATE_MAX_TIMEOUT', 15);
|
39 |
define('SHORTPIXEL_BACKUP', 'ShortpixelBackups');
|