Version Description
- fix problems with activating the keys on some systems that do not allow post requests
Download this release
Release Info
| Developer | ShortPixel |
| Plugin | |
| Version | 3.1.3 |
| Comparing to | |
| See all releases | |
Code changes from version 3.1.2 to 3.1.3
- js/short-pixel.js +20 -13
- readme.txt +5 -1
- shortpixel_api.php +2 -1
- wp-shortpixel.php +24 -11
js/short-pixel.js
CHANGED
|
@@ -34,25 +34,30 @@ var ShortPixel = function() {
|
|
| 34 |
}();
|
| 35 |
|
| 36 |
function showToolBarAlert($status, $message) {
|
|
|
|
| 37 |
switch($status) {
|
| 38 |
case ShortPixel.STATUS_QUOTA_EXCEEDED:
|
| 39 |
-
|
| 40 |
-
|
| 41 |
-
jQuery("
|
| 42 |
-
jQuery("
|
| 43 |
-
jQuery("
|
| 44 |
break;
|
| 45 |
case ShortPixel.STATUS_FAIL:
|
| 46 |
-
|
| 47 |
-
jQuery("
|
| 48 |
break;
|
| 49 |
case ShortPixel.STATUS_NO_KEY:
|
| 50 |
-
|
| 51 |
-
|
| 52 |
-
jQuery("
|
| 53 |
-
jQuery("
|
| 54 |
-
jQuery("
|
| 55 |
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
| 56 |
}
|
| 57 |
jQuery("li.shortpixel-toolbar-processing").removeClass("shortpixel-hide");
|
| 58 |
}
|
|
@@ -174,16 +179,18 @@ function checkBulkProcessingCallApi(){
|
|
| 174 |
if(0 + data['ThumbsCount'] > 0) {
|
| 175 |
cellMsg += "<br>+" + data['ThumbsCount'] + " thumbnails optimized";
|
| 176 |
}
|
|
|
|
| 177 |
setCellMessage(id, cellMsg);
|
| 178 |
var animator = new PercentageAnimator("#sp-msg-" + id + " span.percent", percent);
|
| 179 |
animator.animate(percent);
|
| 180 |
-
if(isBulkPage && typeof data["Thumb"] !== 'undefined' && data["PercentImprovement"] > 0) {
|
| 181 |
progressUpdate(data["BulkPercent"], data["BulkMsg"]);
|
| 182 |
if(data["Thumb"].length > 0){
|
| 183 |
sliderUpdate(id, data["Thumb"], data["BkThumb"], data["PercentImprovement"]);
|
| 184 |
}
|
| 185 |
}
|
| 186 |
//fall through
|
|
|
|
| 187 |
case ShortPixel.STATUS_ERROR: //for error and skip also we retry
|
| 188 |
case ShortPixel.STATUS_SKIP:
|
| 189 |
console.log('Server response: ' + response);
|
| 34 |
}();
|
| 35 |
|
| 36 |
function showToolBarAlert($status, $message) {
|
| 37 |
+
var robo = jQuery("li.shortpixel-toolbar-processing");
|
| 38 |
switch($status) {
|
| 39 |
case ShortPixel.STATUS_QUOTA_EXCEEDED:
|
| 40 |
+
robo.addClass("shortpixel-alert");
|
| 41 |
+
robo.addClass("shortpixel-quota-exceeded");
|
| 42 |
+
jQuery("a", robo).attr("href", "http://shortpixel.com/login/" + ShortPixel.API_KEY);
|
| 43 |
+
jQuery("a", robo).attr("target", "_blank");
|
| 44 |
+
jQuery("a div", robo).attr("title", "ShortPixel quota exceeded. Click to top-up");
|
| 45 |
break;
|
| 46 |
case ShortPixel.STATUS_FAIL:
|
| 47 |
+
robo.addClass("shortpixel-alert shortpixel-processing");
|
| 48 |
+
jQuery("a div", robo).attr("title", $message);
|
| 49 |
break;
|
| 50 |
case ShortPixel.STATUS_NO_KEY:
|
| 51 |
+
robo.addClass("shortpixel-alert");
|
| 52 |
+
robo.addClass("shortpixel-quota-exceeded");
|
| 53 |
+
jQuery("a", robo).attr("href", "http://shortpixel.com/wp-apikey");
|
| 54 |
+
jQuery("a", robo).attr("target", "_blank");
|
| 55 |
+
jQuery("a div", robo).attr("title", "Get API Key");
|
| 56 |
break;
|
| 57 |
+
case ShortPixel.STATUS_SUCCESS:
|
| 58 |
+
robo.removeClass("shortpixel-alert");
|
| 59 |
+
jQuery("a", robo).removeAttr("target");
|
| 60 |
+
jQuery("a", robo).attr("href", jQuery("a img", robo).attr("success-url"));
|
| 61 |
}
|
| 62 |
jQuery("li.shortpixel-toolbar-processing").removeClass("shortpixel-hide");
|
| 63 |
}
|
| 179 |
if(0 + data['ThumbsCount'] > 0) {
|
| 180 |
cellMsg += "<br>+" + data['ThumbsCount'] + " thumbnails optimized";
|
| 181 |
}
|
| 182 |
+
showToolBarAlert(ShortPixel.STATUS_SUCCESS, "");
|
| 183 |
setCellMessage(id, cellMsg);
|
| 184 |
var animator = new PercentageAnimator("#sp-msg-" + id + " span.percent", percent);
|
| 185 |
animator.animate(percent);
|
| 186 |
+
if(isBulkPage && typeof data["Thumb"] !== 'undefined') { // && data["PercentImprovement"] > 0) {
|
| 187 |
progressUpdate(data["BulkPercent"], data["BulkMsg"]);
|
| 188 |
if(data["Thumb"].length > 0){
|
| 189 |
sliderUpdate(id, data["Thumb"], data["BkThumb"], data["PercentImprovement"]);
|
| 190 |
}
|
| 191 |
}
|
| 192 |
//fall through
|
| 193 |
+
case ShortPixel.STATUS_RETRY:
|
| 194 |
case ShortPixel.STATUS_ERROR: //for error and skip also we retry
|
| 195 |
case ShortPixel.STATUS_SKIP:
|
| 196 |
console.log('Server response: ' + response);
|
readme.txt
CHANGED
|
@@ -5,7 +5,7 @@ Tags: picture, optimization, image editor, pngout, upload speed, shortpixel, co
|
|
| 5 |
|
| 6 |
Requires at least: 3.0.1
|
| 7 |
Tested up to: 4.3
|
| 8 |
-
Stable tag: 3.1.
|
| 9 |
License: GPLv2 or later
|
| 10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
| 11 |
|
|
@@ -168,6 +168,10 @@ The ShortPixel team is here to help. <a href="https://shortpixel.com/contact">Co
|
|
| 168 |
|
| 169 |
== Changelog ==
|
| 170 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 171 |
= 3.1.2 =
|
| 172 |
|
| 173 |
* bulk runs now only on media and post pages
|
| 5 |
|
| 6 |
Requires at least: 3.0.1
|
| 7 |
Tested up to: 4.3
|
| 8 |
+
Stable tag: 3.1.3
|
| 9 |
License: GPLv2 or later
|
| 10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
| 11 |
|
| 168 |
|
| 169 |
== Changelog ==
|
| 170 |
|
| 171 |
+
= 3.1.3 =
|
| 172 |
+
|
| 173 |
+
* fix problems with activating the keys on some systems that do not allow post requests
|
| 174 |
+
|
| 175 |
= 3.1.2 =
|
| 176 |
|
| 177 |
* bulk runs now only on media and post pages
|
shortpixel_api.php
CHANGED
|
@@ -13,6 +13,7 @@ class ShortPixelAPI {
|
|
| 13 |
const STATUS_SKIP = -4;
|
| 14 |
const STATUS_NOT_FOUND = -5;
|
| 15 |
const STATUS_NO_KEY = -6;
|
|
|
|
| 16 |
|
| 17 |
private $_apiKey = '';
|
| 18 |
private $_compressionType = '';
|
|
@@ -146,7 +147,7 @@ class ShortPixelAPI {
|
|
| 146 |
{//we'll try again next time user visits a page on admin panel
|
| 147 |
$apiRetries++;
|
| 148 |
update_option('wp-short-pixel-api-retries', $apiRetries);
|
| 149 |
-
return array("Status" => self::
|
| 150 |
}
|
| 151 |
}
|
| 152 |
$response = $this->doRequests($URLs, true, $ID);//send requests to API
|
| 13 |
const STATUS_SKIP = -4;
|
| 14 |
const STATUS_NOT_FOUND = -5;
|
| 15 |
const STATUS_NO_KEY = -6;
|
| 16 |
+
const STATUS_RETRY = -7;
|
| 17 |
|
| 18 |
private $_apiKey = '';
|
| 19 |
private $_compressionType = '';
|
| 147 |
{//we'll try again next time user visits a page on admin panel
|
| 148 |
$apiRetries++;
|
| 149 |
update_option('wp-short-pixel-api-retries', $apiRetries);
|
| 150 |
+
return array("Status" => self::STATUS_RETRY, "Message" => 'Timed out while processing. (pass '.$apiRetries.')');
|
| 151 |
}
|
| 152 |
}
|
| 153 |
$response = $this->doRequests($URLs, true, $ID);//send requests to API
|
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" target="_blank">Settings > ShortPixel</a> page on how to start optimizing your image library and make your website load faster.
|
| 6 |
-
* Version: 3.1.
|
| 7 |
* Author: ShortPixel
|
| 8 |
* Author URI: https://shortpixel.com
|
| 9 |
*/
|
|
@@ -21,7 +21,7 @@ define('SP_RESET_ON_ACTIVATE', false);
|
|
| 21 |
|
| 22 |
define('SP_AFFILIATE_CODE', '');
|
| 23 |
|
| 24 |
-
define('PLUGIN_VERSION', "3.1.
|
| 25 |
define('SP_MAX_TIMEOUT', 10);
|
| 26 |
define('SP_BACKUP', 'ShortpixelBackups');
|
| 27 |
define('SP_BACKUP_FOLDER', WP_CONTENT_DIR . DIRECTORY_SEPARATOR . 'uploads' . DIRECTORY_SEPARATOR . SP_BACKUP);
|
|
@@ -246,6 +246,7 @@ class WPShortPixel {
|
|
| 246 |
STATUS_QUOTA_EXCEEDED: <?= ShortPixelAPI::STATUS_QUOTA_EXCEEDED ?>,
|
| 247 |
STATUS_SKIP: <?= ShortPixelAPI::STATUS_SKIP ?>,
|
| 248 |
STATUS_NO_KEY: <?= ShortPixelAPI::STATUS_NO_KEY ?>,
|
|
|
|
| 249 |
WP_PLUGIN_URL: '<?= plugins_url( '', __FILE__ ) ?>',
|
| 250 |
API_KEY: "<?= $this->_apiKey ?>"
|
| 251 |
});
|
|
@@ -260,7 +261,7 @@ class WPShortPixel {
|
|
| 260 |
$extraClasses = " shortpixel-hide";
|
| 261 |
$tooltip = "ShortPixel optimizing...";
|
| 262 |
$icon = "shortpixel.png";
|
| 263 |
-
$link = current_user_can( 'edit_others_posts')? 'upload.php?page=wp-short-pixel-bulk' : 'upload.php';
|
| 264 |
$blank = "";
|
| 265 |
if($this->prioQ->processing()) {
|
| 266 |
$extraClasses = " shortpixel-processing";
|
|
@@ -284,7 +285,7 @@ class WPShortPixel {
|
|
| 284 |
$args = array(
|
| 285 |
'id' => 'shortpixel_processing',
|
| 286 |
'title' => '<div title="' . $tooltip . '" ><img src="'
|
| 287 |
-
. plugins_url( 'img/'.$icon, __FILE__ ) . '"><span class="shp-alert">!</span></div>',
|
| 288 |
'href' => $link,
|
| 289 |
'meta' => array('target'=> $blank, 'class' => 'shortpixel-toolbar-processing' . $extraClasses)
|
| 290 |
);
|
|
@@ -445,7 +446,7 @@ class WPShortPixel {
|
|
| 445 |
}
|
| 446 |
|
| 447 |
public function handleImageProcessing($ID = null) {
|
| 448 |
-
|
| 449 |
//0: check key
|
| 450 |
if( $this->_verifiedKey == false) {
|
| 451 |
if($ID == null){
|
|
@@ -998,25 +999,30 @@ class WPShortPixel {
|
|
| 998 |
'sslverify' => false,
|
| 999 |
'body' => array('key' => $apiKey)
|
| 1000 |
);
|
|
|
|
| 1001 |
|
| 1002 |
if($appendUserAgent) {
|
| 1003 |
$args['body']['useragent'] = "Agent" . urlencode($_SERVER['HTTP_USER_AGENT']);
|
|
|
|
| 1004 |
}
|
| 1005 |
if($validate) {
|
| 1006 |
$args['body']['DomainCheck'] = get_site_url();
|
| 1007 |
$imageCount = $this->countAllProcessableFiles();
|
| 1008 |
$args['body']['ImagesCount'] = $imageCount['mainFiles'];
|
| 1009 |
$args['body']['ThumbsCount'] = $imageCount['totalFiles'] - $imageCount['mainFiles'];
|
|
|
|
| 1010 |
}
|
| 1011 |
|
|
|
|
| 1012 |
$response = wp_remote_post($requestURL, $args);
|
| 1013 |
-
|
| 1014 |
-
if(is_wp_error( $response ))
|
| 1015 |
$response = wp_remote_post(str_replace('https://', 'http://', $requestURL), $args);
|
| 1016 |
-
|
| 1017 |
-
if(is_wp_error( $response ))
|
| 1018 |
-
$
|
| 1019 |
-
|
|
|
|
| 1020 |
$defaultData = array(
|
| 1021 |
"APIKeyValid" => false,
|
| 1022 |
"Message" => 'API Key could not be validated due to a connectivity error.<BR>Your firewall may be blocking us. Please contact your hosting provider and ask them to allow connections from your site to IP 176.9.106.46.<BR> If you still cannot validate your API Key after this, please <a href="https://shortpixel.com/contact" target="_blank">contact us</a> and we will try to help. ',
|
|
@@ -1052,6 +1058,13 @@ class WPShortPixel {
|
|
| 1052 |
update_option('wp-short-pixel-quota-exceeded',0);
|
| 1053 |
else
|
| 1054 |
update_option('wp-short-pixel-quota-exceeded',1);//activate quota limiting
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1055 |
return array(
|
| 1056 |
"APIKeyValid" => true,
|
| 1057 |
"APICallsMade" => number_format($data->APICallsMade) . ' images',
|
| 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" target="_blank">Settings > ShortPixel</a> page on how to start optimizing your image library and make your website load faster.
|
| 6 |
+
* Version: 3.1.3
|
| 7 |
* Author: ShortPixel
|
| 8 |
* Author URI: https://shortpixel.com
|
| 9 |
*/
|
| 21 |
|
| 22 |
define('SP_AFFILIATE_CODE', '');
|
| 23 |
|
| 24 |
+
define('PLUGIN_VERSION', "3.1.3");
|
| 25 |
define('SP_MAX_TIMEOUT', 10);
|
| 26 |
define('SP_BACKUP', 'ShortpixelBackups');
|
| 27 |
define('SP_BACKUP_FOLDER', WP_CONTENT_DIR . DIRECTORY_SEPARATOR . 'uploads' . DIRECTORY_SEPARATOR . SP_BACKUP);
|
| 246 |
STATUS_QUOTA_EXCEEDED: <?= ShortPixelAPI::STATUS_QUOTA_EXCEEDED ?>,
|
| 247 |
STATUS_SKIP: <?= ShortPixelAPI::STATUS_SKIP ?>,
|
| 248 |
STATUS_NO_KEY: <?= ShortPixelAPI::STATUS_NO_KEY ?>,
|
| 249 |
+
STATUS_RETRY: <?= ShortPixelAPI::STATUS_RETRY ?>,
|
| 250 |
WP_PLUGIN_URL: '<?= plugins_url( '', __FILE__ ) ?>',
|
| 251 |
API_KEY: "<?= $this->_apiKey ?>"
|
| 252 |
});
|
| 261 |
$extraClasses = " shortpixel-hide";
|
| 262 |
$tooltip = "ShortPixel optimizing...";
|
| 263 |
$icon = "shortpixel.png";
|
| 264 |
+
$successLink = $link = current_user_can( 'edit_others_posts')? 'upload.php?page=wp-short-pixel-bulk' : 'upload.php';
|
| 265 |
$blank = "";
|
| 266 |
if($this->prioQ->processing()) {
|
| 267 |
$extraClasses = " shortpixel-processing";
|
| 285 |
$args = array(
|
| 286 |
'id' => 'shortpixel_processing',
|
| 287 |
'title' => '<div title="' . $tooltip . '" ><img src="'
|
| 288 |
+
. plugins_url( 'img/'.$icon, __FILE__ ) . '" success-url="' . $successLink . '"><span class="shp-alert">!</span></div>',
|
| 289 |
'href' => $link,
|
| 290 |
'meta' => array('target'=> $blank, 'class' => 'shortpixel-toolbar-processing' . $extraClasses)
|
| 291 |
);
|
| 446 |
}
|
| 447 |
|
| 448 |
public function handleImageProcessing($ID = null) {
|
| 449 |
+
die("stop");
|
| 450 |
//0: check key
|
| 451 |
if( $this->_verifiedKey == false) {
|
| 452 |
if($ID == null){
|
| 999 |
'sslverify' => false,
|
| 1000 |
'body' => array('key' => $apiKey)
|
| 1001 |
);
|
| 1002 |
+
$argsStr = "?key=".$apiKey;
|
| 1003 |
|
| 1004 |
if($appendUserAgent) {
|
| 1005 |
$args['body']['useragent'] = "Agent" . urlencode($_SERVER['HTTP_USER_AGENT']);
|
| 1006 |
+
$argsStr .= "&useragent=Agent".$args['body']['useragent'];
|
| 1007 |
}
|
| 1008 |
if($validate) {
|
| 1009 |
$args['body']['DomainCheck'] = get_site_url();
|
| 1010 |
$imageCount = $this->countAllProcessableFiles();
|
| 1011 |
$args['body']['ImagesCount'] = $imageCount['mainFiles'];
|
| 1012 |
$args['body']['ThumbsCount'] = $imageCount['totalFiles'] - $imageCount['mainFiles'];
|
| 1013 |
+
$argsStr .= "&DomainCheck={$args['body']['DomainCheck']}&ImagesCount={$imageCount['mainFiles']}&ThumbsCount={$args['body']['ThumbsCount']}";
|
| 1014 |
}
|
| 1015 |
|
| 1016 |
+
//Try first HTTPS post
|
| 1017 |
$response = wp_remote_post($requestURL, $args);
|
| 1018 |
+
//some hosting providers won't allow https:// POST connections so we try http:// as well
|
| 1019 |
+
if(is_wp_error( $response ))
|
| 1020 |
$response = wp_remote_post(str_replace('https://', 'http://', $requestURL), $args);
|
| 1021 |
+
//Second fallback to HTTP get
|
| 1022 |
+
if(is_wp_error( $response )){
|
| 1023 |
+
$args['body'] = array();
|
| 1024 |
+
$response = wp_remote_get(str_replace('https://', 'http://', $requestURL).$argsStr, $args);
|
| 1025 |
+
}
|
| 1026 |
$defaultData = array(
|
| 1027 |
"APIKeyValid" => false,
|
| 1028 |
"Message" => 'API Key could not be validated due to a connectivity error.<BR>Your firewall may be blocking us. Please contact your hosting provider and ask them to allow connections from your site to IP 176.9.106.46.<BR> If you still cannot validate your API Key after this, please <a href="https://shortpixel.com/contact" target="_blank">contact us</a> and we will try to help. ',
|
| 1058 |
update_option('wp-short-pixel-quota-exceeded',0);
|
| 1059 |
else
|
| 1060 |
update_option('wp-short-pixel-quota-exceeded',1);//activate quota limiting
|
| 1061 |
+
|
| 1062 |
+
//if a not valid status exists, delete it
|
| 1063 |
+
$lastStatus = self::getOpt( 'wp-short-pixel-bulk-last-status', array('Status' => ShortPixelAPI::STATUS_SUCCESS));
|
| 1064 |
+
if($lastStatus['Status'] == ShortPixelAPI::STATUS_NO_KEY) {
|
| 1065 |
+
delete_option('wp-short-pixel-bulk-last-status');
|
| 1066 |
+
}
|
| 1067 |
+
|
| 1068 |
return array(
|
| 1069 |
"APIKeyValid" => true,
|
| 1070 |
"APICallsMade" => number_format($data->APICallsMade) . ' images',
|
