Version Description
Release date: 13th November 2019 * call the hook enable-media-replace-upload-done on both modes * fix JSON compatibility for hostings that don't have JSON module activated * Language 0 new strings added, 0 updated, 0 fuzzied, and 0 obsoleted
Download this release
Release Info
| Developer | ShortPixel |
| Plugin | |
| Version | 3.3.7 |
| Comparing to | |
| See all releases | |
Code changes from version 3.3.6 to 3.3.7
- build/shortpixel/autoload.php +1 -1
- build/shortpixel/log/src/ShortPixelLogger.php +1 -1
- build/shortpixel/notices/composer.json +1 -1
- build/shortpixel/notices/src/NoticeController.php +19 -9
- build/shortpixel/notices/src/NoticeModel.php +1 -10
- classes/emr-plugin.php +6 -1
- classes/file.php +1 -1
- classes/replacer.php +6 -4
- classes/uihelper.php +12 -0
- enable-media-replace.php +1 -1
- js/emr_admin.js +2 -2
- readme.txt +8 -1
- thumbnail_updater.php +0 -1
build/shortpixel/autoload.php
CHANGED
|
@@ -1,5 +1,5 @@
|
|
| 1 |
<?php
|
| 2 |
-
require_once "PackageLoader.php";
|
| 3 |
$loader = new EnableMediaReplace\Build\PackageLoader();
|
| 4 |
$loader->load(__DIR__);
|
| 5 |
|
| 1 |
<?php
|
| 2 |
+
require_once (dirname(__FILE__) . "/PackageLoader.php");
|
| 3 |
$loader = new EnableMediaReplace\Build\PackageLoader();
|
| 4 |
$loader->load(__DIR__);
|
| 5 |
|
build/shortpixel/log/src/ShortPixelLogger.php
CHANGED
|
@@ -171,7 +171,7 @@ namespace EnableMediaReplace\ShortPixelLogger;
|
|
| 171 |
$line = $this->formatLine($items);
|
| 172 |
|
| 173 |
// try to write to file. Don't write if directory doesn't exists (leads to notices)
|
| 174 |
-
if ($this->logPath && is_dir(dirname($this->logPath) )
|
| 175 |
{
|
| 176 |
file_put_contents($this->logPath,$line, FILE_APPEND);
|
| 177 |
}
|
| 171 |
$line = $this->formatLine($items);
|
| 172 |
|
| 173 |
// try to write to file. Don't write if directory doesn't exists (leads to notices)
|
| 174 |
+
if ($this->logPath && is_dir(dirname($this->logPath)) )
|
| 175 |
{
|
| 176 |
file_put_contents($this->logPath,$line, FILE_APPEND);
|
| 177 |
}
|
build/shortpixel/notices/composer.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
| 1 |
{
|
| 2 |
"name": "shortpixel/notices",
|
| 3 |
"description": "ShortPixel WordPress Notice System",
|
| 4 |
-
"version": "1.
|
| 5 |
"type": "library",
|
| 6 |
"license": "MIT",
|
| 7 |
"authors": [
|
| 1 |
{
|
| 2 |
"name": "shortpixel/notices",
|
| 3 |
"description": "ShortPixel WordPress Notice System",
|
| 4 |
+
"version": "1.2",
|
| 5 |
"type": "library",
|
| 6 |
"license": "MIT",
|
| 7 |
"authors": [
|
build/shortpixel/notices/src/NoticeController.php
CHANGED
|
@@ -64,9 +64,18 @@ class NoticeController //extends ShortPixelController
|
|
| 64 |
}
|
| 65 |
|
| 66 |
|
| 67 |
-
public function addNotice($message, $code)
|
| 68 |
{
|
| 69 |
$notice = new NoticeModel($message, $code);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 70 |
self::$notices[] = $notice;
|
| 71 |
$this->countNotices();
|
| 72 |
Log::addDebug('Adding notice - ', $notice);
|
|
@@ -124,38 +133,39 @@ class NoticeController //extends ShortPixelController
|
|
| 124 |
|
| 125 |
/** Adds a notice, quick and fast method
|
| 126 |
* @param String $message The Message you want to notify
|
|
|
|
| 127 |
* @param int $code A value of messageType as defined in model
|
| 128 |
* @returm Object Instance of noticeModel
|
| 129 |
*/
|
| 130 |
|
| 131 |
-
public static function addNormal($message)
|
| 132 |
{
|
| 133 |
$noticeController = self::getInstance();
|
| 134 |
-
$notice = $noticeController->addNotice($message, NoticeModel::NOTICE_NORMAL);
|
| 135 |
return $notice;
|
| 136 |
|
| 137 |
}
|
| 138 |
|
| 139 |
-
public static function addError($message)
|
| 140 |
{
|
| 141 |
$noticeController = self::getInstance();
|
| 142 |
-
$notice = $noticeController->addNotice($message, NoticeModel::NOTICE_ERROR);
|
| 143 |
return $notice;
|
| 144 |
|
| 145 |
}
|
| 146 |
|
| 147 |
-
public static function addWarning($message)
|
| 148 |
{
|
| 149 |
$noticeController = self::getInstance();
|
| 150 |
-
$notice = $noticeController->addNotice($message, NoticeModel::NOTICE_WARNING);
|
| 151 |
return $notice;
|
| 152 |
|
| 153 |
}
|
| 154 |
|
| 155 |
-
public static function addSuccess($message)
|
| 156 |
{
|
| 157 |
$noticeController = self::getInstance();
|
| 158 |
-
$notice = $noticeController->addNotice($message, NoticeModel::NOTICE_SUCCESS);
|
| 159 |
return $notice;
|
| 160 |
|
| 161 |
}
|
| 64 |
}
|
| 65 |
|
| 66 |
|
| 67 |
+
public function addNotice($message, $code, $unique)
|
| 68 |
{
|
| 69 |
$notice = new NoticeModel($message, $code);
|
| 70 |
+
|
| 71 |
+
if ($unique)
|
| 72 |
+
{
|
| 73 |
+
foreach(self::$notices as $nitem)
|
| 74 |
+
{
|
| 75 |
+
if ($nitem->message == $notice->message && $nitem->code == $notice->code) // same message.
|
| 76 |
+
return false;
|
| 77 |
+
}
|
| 78 |
+
}
|
| 79 |
self::$notices[] = $notice;
|
| 80 |
$this->countNotices();
|
| 81 |
Log::addDebug('Adding notice - ', $notice);
|
| 133 |
|
| 134 |
/** Adds a notice, quick and fast method
|
| 135 |
* @param String $message The Message you want to notify
|
| 136 |
+
* @param Boolean $unique If unique, check to not repeat notice exact same text in notices. Discard if so
|
| 137 |
* @param int $code A value of messageType as defined in model
|
| 138 |
* @returm Object Instance of noticeModel
|
| 139 |
*/
|
| 140 |
|
| 141 |
+
public static function addNormal($message, $unique = false)
|
| 142 |
{
|
| 143 |
$noticeController = self::getInstance();
|
| 144 |
+
$notice = $noticeController->addNotice($message, NoticeModel::NOTICE_NORMAL, $unique);
|
| 145 |
return $notice;
|
| 146 |
|
| 147 |
}
|
| 148 |
|
| 149 |
+
public static function addError($message, $unique = false)
|
| 150 |
{
|
| 151 |
$noticeController = self::getInstance();
|
| 152 |
+
$notice = $noticeController->addNotice($message, NoticeModel::NOTICE_ERROR, $unique);
|
| 153 |
return $notice;
|
| 154 |
|
| 155 |
}
|
| 156 |
|
| 157 |
+
public static function addWarning($message, $unique = false)
|
| 158 |
{
|
| 159 |
$noticeController = self::getInstance();
|
| 160 |
+
$notice = $noticeController->addNotice($message, NoticeModel::NOTICE_WARNING, $unique);
|
| 161 |
return $notice;
|
| 162 |
|
| 163 |
}
|
| 164 |
|
| 165 |
+
public static function addSuccess($message, $unique = false)
|
| 166 |
{
|
| 167 |
$noticeController = self::getInstance();
|
| 168 |
+
$notice = $noticeController->addNotice($message, NoticeModel::NOTICE_SUCCESS, $unique);
|
| 169 |
return $notice;
|
| 170 |
|
| 171 |
}
|
build/shortpixel/notices/src/NoticeModel.php
CHANGED
|
@@ -3,7 +3,7 @@ namespace EnableMediaReplace\Notices;
|
|
| 3 |
|
| 4 |
class NoticeModel //extends ShortPixelModel
|
| 5 |
{
|
| 6 |
-
|
| 7 |
public $code;
|
| 8 |
|
| 9 |
protected $viewed = false;
|
|
@@ -88,9 +88,6 @@ class NoticeModel //extends ShortPixelModel
|
|
| 88 |
break;
|
| 89 |
}
|
| 90 |
|
| 91 |
-
/*$image = '<img src="' . plugins_url('/shortpixel-image-optimiser/res/img/robo-' . $icon . '.png') . '"
|
| 92 |
-
srcset="' . plugins_url( 'shortpixel-image-optimiser/res/img/robo-' . $icon . '.png' ) . ' 1x, ' . plugins_url( 'shortpixel-image-optimiser/res/img/robo-' . $icon . '@2x.png') . ' 2x" class="short-pixel-notice-icon">';
|
| 93 |
-
*/
|
| 94 |
|
| 95 |
if ($this->is_removable)
|
| 96 |
{
|
|
@@ -107,10 +104,4 @@ class NoticeModel //extends ShortPixelModel
|
|
| 107 |
}
|
| 108 |
|
| 109 |
|
| 110 |
-
|
| 111 |
-
// @todo Transient save, since that is used in some parts.
|
| 112 |
-
// save
|
| 113 |
-
// load
|
| 114 |
-
|
| 115 |
-
|
| 116 |
}
|
| 3 |
|
| 4 |
class NoticeModel //extends ShortPixelModel
|
| 5 |
{
|
| 6 |
+
public $message;
|
| 7 |
public $code;
|
| 8 |
|
| 9 |
protected $viewed = false;
|
| 88 |
break;
|
| 89 |
}
|
| 90 |
|
|
|
|
|
|
|
|
|
|
| 91 |
|
| 92 |
if ($this->is_removable)
|
| 93 |
{
|
| 104 |
}
|
| 105 |
|
| 106 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 107 |
}
|
classes/emr-plugin.php
CHANGED
|
@@ -20,6 +20,11 @@ class EnableMediaReplacePlugin
|
|
| 20 |
if (is_null(self::$instance))
|
| 21 |
self::$instance = new EnableMediaReplacePlugin();
|
| 22 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 23 |
return self::$instance;
|
| 24 |
}
|
| 25 |
|
|
@@ -45,7 +50,7 @@ class EnableMediaReplacePlugin
|
|
| 45 |
add_action('network_admin_notices', array($this,'display_network_notices'));
|
| 46 |
add_action('wp_ajax_emr_dismiss_notices', array($this,'dismiss_notices'));
|
| 47 |
|
| 48 |
-
// editors
|
| 49 |
add_action( 'add_meta_boxes', function () { add_meta_box('emr-eplace-box', __('Replace Image', 'enable-media-replace'), array($this, 'replace_meta_box'), 'attachment', 'side', 'low'); } );
|
| 50 |
add_filter('attachment_fields_to_edit', array($this, 'attachment_editor'), 10, 2);
|
| 51 |
|
| 20 |
if (is_null(self::$instance))
|
| 21 |
self::$instance = new EnableMediaReplacePlugin();
|
| 22 |
|
| 23 |
+
$log = Log::getInstance();
|
| 24 |
+
$uploaddir =wp_upload_dir();
|
| 25 |
+
if (isset($uploaddir['basedir']))
|
| 26 |
+
$log->setLogPath($uploaddir['basedir'] . "/emr_log");
|
| 27 |
+
|
| 28 |
return self::$instance;
|
| 29 |
}
|
| 30 |
|
| 50 |
add_action('network_admin_notices', array($this,'display_network_notices'));
|
| 51 |
add_action('wp_ajax_emr_dismiss_notices', array($this,'dismiss_notices'));
|
| 52 |
|
| 53 |
+
// editors
|
| 54 |
add_action( 'add_meta_boxes', function () { add_meta_box('emr-eplace-box', __('Replace Image', 'enable-media-replace'), array($this, 'replace_meta_box'), 'attachment', 'side', 'low'); } );
|
| 55 |
add_filter('attachment_fields_to_edit', array($this, 'attachment_editor'), 10, 2);
|
| 56 |
|
classes/file.php
CHANGED
|
@@ -10,7 +10,7 @@ class emrFile
|
|
| 10 |
protected $file; // the full file w/ path.
|
| 11 |
protected $extension;
|
| 12 |
protected $fileName;
|
| 13 |
-
protected $filePath; // with trailing slash!
|
| 14 |
protected $fileURL;
|
| 15 |
protected $fileMime;
|
| 16 |
protected $permissions = 0;
|
| 10 |
protected $file; // the full file w/ path.
|
| 11 |
protected $extension;
|
| 12 |
protected $fileName;
|
| 13 |
+
protected $filePath; // with trailing slash! not the image name.
|
| 14 |
protected $fileURL;
|
| 15 |
protected $fileMime;
|
| 16 |
protected $permissions = 0;
|
classes/replacer.php
CHANGED
|
@@ -39,7 +39,6 @@ class Replacer
|
|
| 39 |
$this->post_id = $post_id;
|
| 40 |
|
| 41 |
$source_file = trim(get_attached_file($post_id, apply_filters( 'emr_unfiltered_get_attached_file', true )));
|
| 42 |
-
|
| 43 |
$this->sourceFile = new File($source_file);
|
| 44 |
|
| 45 |
$this->source_post = get_post($post_id);
|
|
@@ -134,8 +133,9 @@ class Replacer
|
|
| 134 |
|
| 135 |
if ($this->replaceMode == self::MODE_SEARCHREPLACE)
|
| 136 |
{
|
| 137 |
-
$title = $this->getNewTitle();
|
| 138 |
|
|
|
|
|
|
|
| 139 |
$update_ar = array('ID' => $this->post_id);
|
| 140 |
$update_ar['post_title'] = $title;
|
| 141 |
$update_ar['post_name'] = sanitize_title($title);
|
|
@@ -156,8 +156,8 @@ class Replacer
|
|
| 156 |
}
|
| 157 |
}
|
| 158 |
$this->doSearchReplace();
|
| 159 |
-
|
| 160 |
-
}
|
| 161 |
|
| 162 |
if(wp_attachment_is_image($this->post_id))
|
| 163 |
{
|
|
@@ -180,6 +180,8 @@ class Replacer
|
|
| 180 |
$cache = new emrCache();
|
| 181 |
$cache->flushCache($cache_args);
|
| 182 |
|
|
|
|
|
|
|
| 183 |
}
|
| 184 |
|
| 185 |
protected function getNewTitle()
|
| 39 |
$this->post_id = $post_id;
|
| 40 |
|
| 41 |
$source_file = trim(get_attached_file($post_id, apply_filters( 'emr_unfiltered_get_attached_file', true )));
|
|
|
|
| 42 |
$this->sourceFile = new File($source_file);
|
| 43 |
|
| 44 |
$this->source_post = get_post($post_id);
|
| 133 |
|
| 134 |
if ($this->replaceMode == self::MODE_SEARCHREPLACE)
|
| 135 |
{
|
|
|
|
| 136 |
|
| 137 |
+
// Write new image title.
|
| 138 |
+
$title = $this->getNewTitle();
|
| 139 |
$update_ar = array('ID' => $this->post_id);
|
| 140 |
$update_ar['post_title'] = $title;
|
| 141 |
$update_ar['post_name'] = sanitize_title($title);
|
| 156 |
}
|
| 157 |
}
|
| 158 |
$this->doSearchReplace();
|
| 159 |
+
|
| 160 |
+
} // SEARCH REPLACE MODE
|
| 161 |
|
| 162 |
if(wp_attachment_is_image($this->post_id))
|
| 163 |
{
|
| 180 |
$cache = new emrCache();
|
| 181 |
$cache->flushCache($cache_args);
|
| 182 |
|
| 183 |
+
do_action("enable-media-replace-upload-done", $this->target_url, $this->source_url);
|
| 184 |
+
|
| 185 |
}
|
| 186 |
|
| 187 |
protected function getNewTitle()
|
classes/uihelper.php
CHANGED
|
@@ -53,6 +53,18 @@ class UIHelper
|
|
| 53 |
$url = admin_url('post.php');
|
| 54 |
$url = add_query_arg(array('action' => 'edit', 'post' => $post_id, 'emr_replaced' => '1'), $url);
|
| 55 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 56 |
$url = apply_filters('emr_returnurl', $url);
|
| 57 |
Log::addDebug('Success URL- ' . $url);
|
| 58 |
|
| 53 |
$url = admin_url('post.php');
|
| 54 |
$url = add_query_arg(array('action' => 'edit', 'post' => $post_id, 'emr_replaced' => '1'), $url);
|
| 55 |
|
| 56 |
+
if (isset($_REQUEST['SHORTPIXEL_DEBUG']))
|
| 57 |
+
{
|
| 58 |
+
$spdebug = $_REQUEST['SHORTPIXEL_DEBUG'];
|
| 59 |
+
if (is_numeric($spdebug))
|
| 60 |
+
$spdebug = intval($spdebug);
|
| 61 |
+
else {
|
| 62 |
+
$spdebug = sanitize_text_field($spdebug);
|
| 63 |
+
}
|
| 64 |
+
|
| 65 |
+
$url = add_query_arg('SHORTPIXEL_DEBUG', $spdebug, $url);
|
| 66 |
+
}
|
| 67 |
+
|
| 68 |
$url = apply_filters('emr_returnurl', $url);
|
| 69 |
Log::addDebug('Success URL- ' . $url);
|
| 70 |
|
enable-media-replace.php
CHANGED
|
@@ -3,7 +3,7 @@
|
|
| 3 |
Plugin Name: Enable Media Replace
|
| 4 |
Plugin URI: https://wordpress.org/plugins/enable-media-replace/
|
| 5 |
Description: Enable replacing media files by uploading a new file in the "Edit Media" section of the WordPress Media Library.
|
| 6 |
-
Version: 3.3.
|
| 7 |
Author: ShortPixel
|
| 8 |
Author URI: https://shortpixel.com
|
| 9 |
Text Domain: enable-media-replace
|
| 3 |
Plugin Name: Enable Media Replace
|
| 4 |
Plugin URI: https://wordpress.org/plugins/enable-media-replace/
|
| 5 |
Description: Enable replacing media files by uploading a new file in the "Edit Media" section of the WordPress Media Library.
|
| 6 |
+
Version: 3.3.7
|
| 7 |
Author: ShortPixel
|
| 8 |
Author URI: https://shortpixel.com
|
| 9 |
Text Domain: enable-media-replace
|
js/emr_admin.js
CHANGED
|
@@ -26,7 +26,7 @@ jQuery(document).ready(function($)
|
|
| 26 |
var source = $('.image_placeholder').first();
|
| 27 |
if (typeof( $(source).data('filetype') ) !== 'undefined')
|
| 28 |
{
|
| 29 |
-
source_type = $(source).data('filetype');
|
| 30 |
this.debug('detected type - ' + source_type);
|
| 31 |
}
|
| 32 |
if (source.hasClass('is_image'))
|
|
@@ -108,7 +108,7 @@ jQuery(document).ready(function($)
|
|
| 108 |
if (file !== null) /// file is null when empty, or error
|
| 109 |
{
|
| 110 |
target_is_image = (file.type.indexOf('image') >= 0) ? true : false;
|
| 111 |
-
target_type = file.type;
|
| 112 |
}
|
| 113 |
// If image, load thumbnail and get dimensions.
|
| 114 |
if (file && target_is_image)
|
| 26 |
var source = $('.image_placeholder').first();
|
| 27 |
if (typeof( $(source).data('filetype') ) !== 'undefined')
|
| 28 |
{
|
| 29 |
+
source_type = $(source).data('filetype').trim();
|
| 30 |
this.debug('detected type - ' + source_type);
|
| 31 |
}
|
| 32 |
if (source.hasClass('is_image'))
|
| 108 |
if (file !== null) /// file is null when empty, or error
|
| 109 |
{
|
| 110 |
target_is_image = (file.type.indexOf('image') >= 0) ? true : false;
|
| 111 |
+
target_type = file.type.trim();
|
| 112 |
}
|
| 113 |
// If image, load thumbnail and get dimensions.
|
| 114 |
if (file && target_is_image)
|
readme.txt
CHANGED
|
@@ -3,7 +3,7 @@ Contributors: ShortPixel
|
|
| 3 |
Donate link: https://www.paypal.me/resizeImage
|
| 4 |
Tags: replace, attachment, media, files, replace image, replace jpg, change media, replace media, image, file
|
| 5 |
Requires at least: 4.2
|
| 6 |
-
Tested up to: 5.
|
| 7 |
Requires PHP: 5.4
|
| 8 |
Stable tag: trunk
|
| 9 |
|
|
@@ -47,6 +47,13 @@ If you want more control over the format used to display the time, you can use t
|
|
| 47 |
|
| 48 |
== Changelog ==
|
| 49 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 50 |
= 3.3.6 =
|
| 51 |
|
| 52 |
Release date: 5th September 2019
|
| 3 |
Donate link: https://www.paypal.me/resizeImage
|
| 4 |
Tags: replace, attachment, media, files, replace image, replace jpg, change media, replace media, image, file
|
| 5 |
Requires at least: 4.2
|
| 6 |
+
Tested up to: 5.3
|
| 7 |
Requires PHP: 5.4
|
| 8 |
Stable tag: trunk
|
| 9 |
|
| 47 |
|
| 48 |
== Changelog ==
|
| 49 |
|
| 50 |
+
= 3.3.7 =
|
| 51 |
+
|
| 52 |
+
Release date: 13th November 2019
|
| 53 |
+
* call the hook enable-media-replace-upload-done on both modes
|
| 54 |
+
* fix JSON compatibility for hostings that don't have JSON module activated
|
| 55 |
+
* Language – 0 new strings added, 0 updated, 0 fuzzied, and 0 obsoleted
|
| 56 |
+
|
| 57 |
= 3.3.6 =
|
| 58 |
|
| 59 |
Release date: 5th September 2019
|
thumbnail_updater.php
CHANGED
|
@@ -100,7 +100,6 @@ class ThumbnailUpdater
|
|
| 100 |
|
| 101 |
$replace_sql = $wpdb->prepare($sql, $from, $to );
|
| 102 |
$wpdb->query($replace_sql);
|
| 103 |
-
|
| 104 |
}
|
| 105 |
}
|
| 106 |
|
| 100 |
|
| 101 |
$replace_sql = $wpdb->prepare($sql, $from, $to );
|
| 102 |
$wpdb->query($replace_sql);
|
|
|
|
| 103 |
}
|
| 104 |
}
|
| 105 |
|
