From 66765a51556ed4e4d3e6b65bccb96facdd785adc Mon Sep 17 00:00:00 2001 From: Brad Touesnard Date: Mon, 19 Jan 2015 14:35:17 -0400 Subject: [PATCH] Deploying version 0.8.1 --- .scrutinizer.yml | 9 --- assets/css/styles.css | 2 +- assets/js/script.js | 10 ++- assets/js/script.min.js | 2 +- assets/sass/styles.scss | 2 +- classes/amazon-s3-and-cloudfront.php | 92 ++++++++++++-------------- classes/as3cf-upgrade.php | 5 ++ languages/amazon-s3-and-cloudfront.pot | 51 +++++++------- readme.txt | 8 ++- wordpress-s3.php | 6 +- 10 files changed, 95 insertions(+), 92 deletions(-) delete mode 100644 .scrutinizer.yml diff --git a/.scrutinizer.yml b/.scrutinizer.yml deleted file mode 100644 index 291e94a0..00000000 --- a/.scrutinizer.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -checks: - php: - code_rating: true - duplication: true -tools: - php_code_sniffer: - config: - standard: WordPress diff --git a/assets/css/styles.css b/assets/css/styles.css index 95e941a7..c9719edd 100644 --- a/assets/css/styles.css +++ b/assets/css/styles.css @@ -1 +1 @@ -.aws-main .error pre{background:#eaeaea;background:rgba(0,0,0,0.07);display:block;padding:10px 15px}.aws-main .error pre code{padding:0;background:none}.aws-main .as3cf-notice,.aws-main .error{max-width:935px}.aws-main .updated{display:none}.aws-main .updated.show{display:block}.as3cf-settings{position:relative;width:650px;min-height:800px}.as3cf-settings .as3cf-main-settings{display:none}.as3cf-settings .as3cf-main-settings p{font-size:13px}.as3cf-settings .as3cf-main-settings p a{color:#444}.as3cf-settings.as3cf-has-bucket .as3cf-bucket-select{display:none}.as3cf-settings.as3cf-has-bucket .as3cf-main-settings{display:block}.as3cf-settings tr.configure-url,.as3cf-settings tr.advanced-options{display:none}.as3cf-settings .object-prefix-desc em{white-space:nowrap}.as3cf-settings .as3cf-url-preview-wrap{background:#ffffff;text-align:center;padding:20px 20px 10px;max-width:610px;width:100%}.as3cf-settings .as3cf-url-preview-wrap .as3cf-url-preview{margin-top:5px;overflow-x:scroll;padding-bottom:15px}.as3cf-settings .as3cf-url-preview-wrap span{color:#aaa;text-transform:uppercase;font-weight:bold}.as3cf-settings .as3cf-ssl p.info{margin-top:10px;padding:0}.as3cf-settings .as3cf-radio-group label{display:block;margin-bottom:10px}.as3cf-settings .as3cf-radio-group label.disabled,.as3cf-settings .as3cf-radio-group label.disabled p{color:#bbbbbb;cursor:default}.as3cf-settings .as3cf-radio-group p{padding-left:25px;color:#6b6b6b;margin:0;font-size:12px}.as3cf-settings .as3cf-radio-group p.as3cf-setting{margin-top:5px}.as3cf-settings .as3cf-switch{position:relative}.as3cf-settings .as3cf-switch.disabled span{cursor:default;margin:1px 0 0 0}.as3cf-settings .as3cf-switch.disabled span.checked{background:#F1F1F1;border:1px solid #dddddd;color:#a3a3a3}.as3cf-settings .as3cf-switch span{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;cursor:pointer;float:left;display:inline-block;height:100%;font-size:12px;line-height:20px;border-radius:2px;-webkit-border-radius:2px;font-weight:bold;padding:4px 8px;background:#F1F1F1;border:1px solid #dddddd;color:#CCCCCC;margin:1px -1px 0;z-index:1}.as3cf-settings .as3cf-switch span.checked{background:#ffffff;border-color:#E4E4E4;color:#373737;padding:5px 10px;margin:0;z-index:2}.as3cf-settings .as3cf-switch input[type="checkbox"]{position:absolute !important;top:0;left:0;opacity:0;filter:alpha(opacity=0);z-index:-1}.as3cf-settings .as3cf-setting.hide{display:none}.as3cf-settings .as3cf-bucket-actions{position:absolute;right:0;top:2px}.as3cf-settings .as3cf-bucket-actions .as3cf-cancel-bucket-select-wrap{display:none}.as3cf-settings .as3cf-bucket-actions .as3cf-cancel-bucket-select-wrap:after{content:" | "}.as3cf-settings .as3cf-bucket-list-wrapper{background:#fff;padding:15px 20px;margin-bottom:2em}.as3cf-settings .as3cf-bucket-list-wrapper .as3cf-bucket-list{max-height:300px;overflow:auto;margin:0}.as3cf-settings .as3cf-bucket-list-wrapper .as3cf-bucket-list li{font-size:14px;padding:10px 0}.as3cf-settings .as3cf-bucket-list-wrapper .as3cf-bucket-list a{color:#444;text-decoration:none}.as3cf-settings .as3cf-bucket-list-wrapper .as3cf-bucket-list a:hover,.as3cf-settings .as3cf-bucket-list-wrapper .as3cf-bucket-list a.selected{color:#0074A2}.as3cf-settings .as3cf-bucket-list-wrapper .as3cf-bucket-list a.selected{font-weight:bold}.as3cf-settings .as3cf-bucket-list-wrapper .as3cf-bucket-list a .bucket{float:left;clear:both}.as3cf-settings .as3cf-bucket-list-wrapper .as3cf-bucket-list a .bucket .dashicons{margin-right:5px}.as3cf-settings .as3cf-bucket-list-wrapper .as3cf-bucket-list a .spinner{float:left;background-size:15px 15px}.as3cf-settings .as3cf-bucket-list-wrapper .as3cf-bucket-list.saving{opacity:0.5}.as3cf-settings .as3cf-create-bucket-form input[type="text"]{width:80%}.as3cf-settings select.bucket{margin-bottom:5px;width:380px}.as3cf-settings .form-table td{padding-left:0;padding-right:0}.as3cf-settings .form-table td:first-child{vertical-align:top;min-width:120px}.as3cf-settings .form-table h3{font-weight:normal;text-transform:uppercase;margin:0}.as3cf-settings .form-table h4{margin:0}.as3cf-settings .form-table .as3cf-border-bottom td{border-bottom:1px solid #ddd}.as3cf-settings .as3cf-active-bucket{font-weight:bold;margin-right:10px}.as3cf-settings .tooltip{position:relative;z-index:2;cursor:pointer}.as3cf-settings .tooltip:before,.as3cf-settings .tooltip:after{visibility:hidden;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);opacity:0;pointer-events:none}.as3cf-settings .tooltip:before{position:absolute;bottom:150%;left:50%;margin-bottom:5px;margin-left:-250px;padding:10px;width:500px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;background-color:#000;background-color:rgba(51,51,51,0.9);color:#fff;content:attr(data-tooltip);text-align:center;font-size:14px;line-height:1.3}.as3cf-settings .tooltip:after{position:absolute;bottom:150%;left:50%;margin-left:-5px;width:0;border-top:5px solid #000;border-top:5px solid rgba(51,51,51,0.9);border-right:5px solid transparent;border-left:5px solid transparent;content:" ";font-size:0;line-height:0}.as3cf-settings .tooltip:hover:before,.as3cf-settings .tooltip:hover:after{visibility:visible;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);opacity:1}.as3cf-banner img{display:block}.as3cf-sidebar{position:absolute;top:17px;right:-312px;width:292px}.as3cf-sidebar .block{padding:20px;border:1px solid #ccc}.as3cf-sidebar .subscribe{border-top:none}.as3cf-sidebar .subscribe h2{padding:0;margin:0;margin-bottom:0.5em;color:#666;font-size:20px;line-height:1.2em;float:none}.as3cf-sidebar .subscribe h3{font-size:16px;margin:0}.as3cf-sidebar .subscribe p{margin:0}.as3cf-sidebar .subscribe .intro{margin-bottom:1em;line-height:1.4}.as3cf-sidebar .subscribe ul{margin-left:20px;list-style-type:disc}.as3cf-sidebar .subscribe li{line-height:1.4}.as3cf-sidebar .subscribe .links{margin-bottom:2em}.as3cf-sidebar .subscribe .links a{text-decoration:none}.as3cf-sidebar .subscribe .promise{color:#999;font-size:12px;line-height:1.4em}.as3cf-sidebar .subscribe .field{margin-bottom:0.5em}.as3cf-sidebar .subscribe .field p{margin-bottom:0.3em}.as3cf-sidebar .subscribe .field.submit-button{margin-bottom:1em}.as3cf-sidebar .credits{border-top:0}.as3cf-sidebar .credits h4{font-size:16px;margin-top:0;margin-bottom:10px}.as3cf-sidebar .credits ul{margin:0}.as3cf-sidebar .credits li{overflow:hidden}.as3cf-sidebar .credits li:last-child{margin-bottom:0}.as3cf-sidebar .credits img{float:left;margin-right:10px}.as3cf-sidebar .credits span{float:left;display:block;line-height:32px}.as3cf-sidebar .credits a{display:block;text-decoration:none;color:#444;font-size:16px;text-align:center}.as3cf-sidebar .credits a:hover{color:#888}@media (min--moz-device-pixel-ratio: 1.3), (-o-min-device-pixel-ratio: 2.6 / 2), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx){.as3cf-sidebar .as3cf-banner{background-image:url(../img/snail@2x.jpg);background-size:292px 165px;width:292px;height:165px;display:block}.as3cf-sidebar .as3cf-banner img{display:none}}@media screen and (max-width: 1052px){.as3cf-sidebar{position:relative;top:auto;right:auto;margin-top:50px}} +.aws-main .error pre{background:#eaeaea;background:rgba(0,0,0,0.07);display:block;padding:10px 15px}.aws-main .error pre code{padding:0;background:none}.aws-main .as3cf-notice,.aws-main .error{max-width:935px}.aws-main .updated{display:none}.aws-main .updated.as3cf-notice,.aws-main .updated.show{display:block}.as3cf-settings{position:relative;width:650px;min-height:800px}.as3cf-settings .as3cf-main-settings{display:none}.as3cf-settings .as3cf-main-settings p{font-size:13px}.as3cf-settings .as3cf-main-settings p a{color:#444}.as3cf-settings.as3cf-has-bucket .as3cf-bucket-select{display:none}.as3cf-settings.as3cf-has-bucket .as3cf-main-settings{display:block}.as3cf-settings tr.configure-url,.as3cf-settings tr.advanced-options{display:none}.as3cf-settings .object-prefix-desc em{white-space:nowrap}.as3cf-settings .as3cf-url-preview-wrap{background:#ffffff;text-align:center;padding:20px 20px 10px;max-width:610px;width:100%}.as3cf-settings .as3cf-url-preview-wrap .as3cf-url-preview{margin-top:5px;overflow-x:scroll;padding-bottom:15px}.as3cf-settings .as3cf-url-preview-wrap span{color:#aaa;text-transform:uppercase;font-weight:bold}.as3cf-settings .as3cf-ssl p.info{margin-top:10px;padding:0}.as3cf-settings .as3cf-radio-group label{display:block;margin-bottom:10px}.as3cf-settings .as3cf-radio-group label.disabled,.as3cf-settings .as3cf-radio-group label.disabled p{color:#bbbbbb;cursor:default}.as3cf-settings .as3cf-radio-group p{padding-left:25px;color:#6b6b6b;margin:0;font-size:12px}.as3cf-settings .as3cf-radio-group p.as3cf-setting{margin-top:5px}.as3cf-settings .as3cf-switch{position:relative}.as3cf-settings .as3cf-switch.disabled span{cursor:default;margin:1px 0 0 0}.as3cf-settings .as3cf-switch.disabled span.checked{background:#F1F1F1;border:1px solid #dddddd;color:#a3a3a3}.as3cf-settings .as3cf-switch span{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;cursor:pointer;float:left;display:inline-block;height:100%;font-size:12px;line-height:20px;border-radius:2px;-webkit-border-radius:2px;font-weight:bold;padding:4px 8px;background:#F1F1F1;border:1px solid #dddddd;color:#CCCCCC;margin:1px -1px 0;z-index:1}.as3cf-settings .as3cf-switch span.checked{background:#ffffff;border-color:#E4E4E4;color:#373737;padding:5px 10px;margin:0;z-index:2}.as3cf-settings .as3cf-switch input[type="checkbox"]{position:absolute !important;top:0;left:0;opacity:0;filter:alpha(opacity=0);z-index:-1}.as3cf-settings .as3cf-setting.hide{display:none}.as3cf-settings .as3cf-bucket-actions{position:absolute;right:0;top:2px}.as3cf-settings .as3cf-bucket-actions .as3cf-cancel-bucket-select-wrap{display:none}.as3cf-settings .as3cf-bucket-actions .as3cf-cancel-bucket-select-wrap:after{content:" | "}.as3cf-settings .as3cf-bucket-list-wrapper{background:#fff;padding:15px 20px;margin-bottom:2em}.as3cf-settings .as3cf-bucket-list-wrapper .as3cf-bucket-list{max-height:300px;overflow:auto;margin:0}.as3cf-settings .as3cf-bucket-list-wrapper .as3cf-bucket-list li{font-size:14px;padding:10px 0}.as3cf-settings .as3cf-bucket-list-wrapper .as3cf-bucket-list a{color:#444;text-decoration:none}.as3cf-settings .as3cf-bucket-list-wrapper .as3cf-bucket-list a:hover,.as3cf-settings .as3cf-bucket-list-wrapper .as3cf-bucket-list a.selected{color:#0074A2}.as3cf-settings .as3cf-bucket-list-wrapper .as3cf-bucket-list a.selected{font-weight:bold}.as3cf-settings .as3cf-bucket-list-wrapper .as3cf-bucket-list a .bucket{float:left;clear:both}.as3cf-settings .as3cf-bucket-list-wrapper .as3cf-bucket-list a .bucket .dashicons{margin-right:5px}.as3cf-settings .as3cf-bucket-list-wrapper .as3cf-bucket-list a .spinner{float:left;background-size:15px 15px}.as3cf-settings .as3cf-bucket-list-wrapper .as3cf-bucket-list.saving{opacity:0.5}.as3cf-settings .as3cf-create-bucket-form input[type="text"]{width:80%}.as3cf-settings select.bucket{margin-bottom:5px;width:380px}.as3cf-settings .form-table td{padding-left:0;padding-right:0}.as3cf-settings .form-table td:first-child{vertical-align:top;min-width:120px}.as3cf-settings .form-table h3{font-weight:normal;text-transform:uppercase;margin:0}.as3cf-settings .form-table h4{margin:0}.as3cf-settings .form-table .as3cf-border-bottom td{border-bottom:1px solid #ddd}.as3cf-settings .as3cf-active-bucket{font-weight:bold;margin-right:10px}.as3cf-settings .tooltip{position:relative;z-index:2;cursor:pointer}.as3cf-settings .tooltip:before,.as3cf-settings .tooltip:after{visibility:hidden;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);opacity:0;pointer-events:none}.as3cf-settings .tooltip:before{position:absolute;bottom:150%;left:50%;margin-bottom:5px;margin-left:-250px;padding:10px;width:500px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;background-color:#000;background-color:rgba(51,51,51,0.9);color:#fff;content:attr(data-tooltip);text-align:center;font-size:14px;line-height:1.3}.as3cf-settings .tooltip:after{position:absolute;bottom:150%;left:50%;margin-left:-5px;width:0;border-top:5px solid #000;border-top:5px solid rgba(51,51,51,0.9);border-right:5px solid transparent;border-left:5px solid transparent;content:" ";font-size:0;line-height:0}.as3cf-settings .tooltip:hover:before,.as3cf-settings .tooltip:hover:after{visibility:visible;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);opacity:1}.as3cf-banner img{display:block}.as3cf-sidebar{position:absolute;top:17px;right:-312px;width:292px}.as3cf-sidebar .block{padding:20px;border:1px solid #ccc}.as3cf-sidebar .subscribe{border-top:none}.as3cf-sidebar .subscribe h2{padding:0;margin:0;margin-bottom:0.5em;color:#666;font-size:20px;line-height:1.2em;float:none}.as3cf-sidebar .subscribe h3{font-size:16px;margin:0}.as3cf-sidebar .subscribe p{margin:0}.as3cf-sidebar .subscribe .intro{margin-bottom:1em;line-height:1.4}.as3cf-sidebar .subscribe ul{margin-left:20px;list-style-type:disc}.as3cf-sidebar .subscribe li{line-height:1.4}.as3cf-sidebar .subscribe .links{margin-bottom:2em}.as3cf-sidebar .subscribe .links a{text-decoration:none}.as3cf-sidebar .subscribe .promise{color:#999;font-size:12px;line-height:1.4em}.as3cf-sidebar .subscribe .field{margin-bottom:0.5em}.as3cf-sidebar .subscribe .field p{margin-bottom:0.3em}.as3cf-sidebar .subscribe .field.submit-button{margin-bottom:1em}.as3cf-sidebar .credits{border-top:0}.as3cf-sidebar .credits h4{font-size:16px;margin-top:0;margin-bottom:10px}.as3cf-sidebar .credits ul{margin:0}.as3cf-sidebar .credits li{overflow:hidden}.as3cf-sidebar .credits li:last-child{margin-bottom:0}.as3cf-sidebar .credits img{float:left;margin-right:10px}.as3cf-sidebar .credits span{float:left;display:block;line-height:32px}.as3cf-sidebar .credits a{display:block;text-decoration:none;color:#444;font-size:16px;text-align:center}.as3cf-sidebar .credits a:hover{color:#888}@media (min--moz-device-pixel-ratio: 1.3), (-o-min-device-pixel-ratio: 2.6 / 2), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx){.as3cf-sidebar .as3cf-banner{background-image:url(../img/snail@2x.jpg);background-size:292px 165px;width:292px;height:165px;display:block}.as3cf-sidebar .as3cf-banner img{display:none}}@media screen and (max-width: 1052px){.as3cf-sidebar{position:relative;top:auto;right:auto;margin-top:50px}} diff --git a/assets/js/script.js b/assets/js/script.js index bbf3bb92..be4c42c3 100644 --- a/assets/js/script.js +++ b/assets/js/script.js @@ -57,7 +57,7 @@ if($changeBucket.length){ $changeBucket.on('click', function(e){ e.preventDefault(); - $( '.updated' ).hide(); + $( '.updated' ).not('.as3cf-notice').hide(); $('.as3cf-can-write-error').hide(); $('.as3cf-settings').removeClass('as3cf-has-bucket'); loadBuckets(); @@ -131,6 +131,8 @@ } var bucket = this; + var previous_bucket = $('.as3cf-bucket-list a.selected' ).attr('data-bucket'); + $('.as3cf-bucket-list a' ).removeClass('selected'); $(bucket).addClass('selected'); @@ -152,6 +154,8 @@ error: function(jqXHR, textStatus, errorThrown) { $bucketList.removeClass('saving'); show_bucket_error( as3cf_i18n.save_bucket_error, errorThrown ); + $('.as3cf-bucket-list a' ).removeClass('selected'); + $( '.as3cf-bucket-list a[data-bucket="' + previous_bucket + '"]' ).addClass( 'selected' ); }, success: function(data, textStatus, jqXHR) { $(bucket).find('.spinner').hide(); @@ -160,6 +164,8 @@ bucket_select( bucketName, data['region'], data['can_write'] ); } else { show_bucket_error( as3cf_i18n.save_bucket_error, data['error'] ); + $('.as3cf-bucket-list a' ).removeClass('selected'); + $( '.as3cf-bucket-list a[data-bucket="' + previous_bucket + '"]' ).addClass( 'selected' ); } } }); @@ -180,7 +186,7 @@ $( '.as3cf-active-bucket' ).text( bucket ); $( '#as3cf-bucket' ).val( bucket ); $( '#as3cf-region' ).val( region ); - $( '.updated' ).show(); + $( '.updated' ).not('.as3cf-notice' ).show(); // check permission on bucket if( can_write === false){ $('.as3cf-can-write-error').show(); diff --git a/assets/js/script.min.js b/assets/js/script.min.js index 25c2a013..37d2af18 100644 --- a/assets/js/script.min.js +++ b/assets/js/script.min.js @@ -1 +1 @@ -!function(a){var b;a(document).ready(function(){function c(){a(".as3cf-bucket-error").hide(),h.html('
  • '+h.attr("data-working")+"
  • ");var b={action:"as3cf-get-buckets",_nonce:as3cf_i18n.get_buckets_nonce};a.ajax({url:ajaxurl,type:"POST",dataType:"JSON",data:b,error:function(a,b,c){h.html(""),d(as3cf_i18n.get_buckets_error,c)},success:function(b){h.html(""),"undefined"!=typeof b.success?a(b.buckets).each(function(a,c){var d=c.Name==b.selected?"selected":"";h.append('
  • '+c.Name+'
  • ')}):d(as3cf_i18n.get_buckets_error,b.error)}})}function d(b,c){a(".as3cf-bucket-error span.title").html(b),a(".as3cf-bucket-error span.message").html(c),a(".as3cf-bucket-error").show()}function e(b,c,d){""==a(".as3cf-active-bucket").text()&&(f("copy-to-s3-wrap"),f("serve-from-s3-wrap")),a(".as3cf-active-bucket").text(b),a("#as3cf-bucket").val(b),a("#as3cf-region").val(c),a(".updated").show(),d===!1&&a(".as3cf-can-write-error").show(),a(".as3cf-settings").addClass("as3cf-has-bucket"),g()}function f(b){a("#"+b+" span").toggleClass("checked");var c=a("#"+b+" span.on").hasClass("checked"),d=a("#"+b).data("checkbox"),e=a("input#"+d);e.attr("checked",c),e.trigger("change")}function g(){a(".as3cf-url-preview").html("Generating...");var b={_nonce:as3cf_i18n.get_url_preview_nonce};a.each(a(".as3cf-main-settings form").serializeArray(),function(c,d){var e=d.name,f=d.value;e=e.replace("[]",""),b[e]=void 0===b[e]?f:a.isArray(b[e])?b[e].concat(f):[b[e],f]}),b.action="as3cf-get-url-preview",a.ajax({url:ajaxurl,type:"POST",dataType:"JSON",data:b,error:function(a,b,c){alert(as3cf_i18n.get_url_preview_error+c)},success:function(b){"undefined"!=typeof b.success?a(".as3cf-url-preview").html(b.url):alert(as3cf_i18n.get_url_preview_error+b.error)}})}a(".as3cf-settings").each(function(){var b=a(this),f=a(".as3cf-bucket-list"),g=b.find(".as3cf-create-bucket-form");if(g.length){var h=g.find("button"),i=h.text();g.on("submit",function(b){b.preventDefault(),a(".as3cf-bucket-error").hide(),f.addClass("saving"),h.text(h.attr("data-working")),h.prop("disabled",!0);var j=g.find('input[name="bucket_name"]').val(),k={action:"as3cf-create-bucket",bucket_name:j,_nonce:as3cf_i18n.create_bucket_nonce};a.ajax({url:ajaxurl,type:"POST",dataType:"JSON",data:k,error:function(a,b,c){h.text(i),d(as3cf_i18n.create_bucket_error,c)},success:function(b){h.text(i),h.prop("disabled",!1),"undefined"!=typeof b.success?(e(j,b.region,b.can_write),g.find('input[name="bucket_name"]').val(""),a(".as3cf-bucket-list a").removeClass("selected"),c(),f.removeClass("saving")):d(as3cf_i18n.create_bucket_error,b.error)}})})}var j=b.find(".as3cf-change-bucket");j.length&&j.on("click",function(b){b.preventDefault(),a(".updated").hide(),a(".as3cf-can-write-error").hide(),a(".as3cf-settings").removeClass("as3cf-has-bucket"),c(),a(".as3cf-active-bucket").html&&a(".as3cf-cancel-bucket-select-wrap").show(),a(".as3cf-bucket-list a.selected").length&&a(".as3cf-bucket-list").scrollTop(a(".as3cf-bucket-list a.selected").position().top-50)});var k=b.find(".as3cf-refresh-buckets");k.length&&k.on("click",function(a){a.preventDefault(),c()});var l=b.find(".as3cf-cancel-bucket-select");l.length&&l.on("click",function(b){b.preventDefault(),a(".as3cf-bucket-error").hide(),a(".as3cf-settings").addClass("as3cf-has-bucket")})});var h=a(".as3cf-bucket-list");h.on("click","a",function(b){if(b.preventDefault(),a(this).hasClass("selected"))return void a(".as3cf-settings").addClass("as3cf-has-bucket");var c=this;a(".as3cf-bucket-list a").removeClass("selected"),a(c).addClass("selected"),h.addClass("saving"),a(c).find(".spinner").show();var f=a(c).attr("data-bucket"),g={action:"as3cf-save-bucket",bucket_name:f,_nonce:as3cf_i18n.save_bucket_nonce};a.ajax({url:ajaxurl,type:"POST",dataType:"JSON",data:g,error:function(a,b,c){h.removeClass("saving"),d(as3cf_i18n.save_bucket_error,c)},success:function(b){a(c).find(".spinner").hide(),h.removeClass("saving"),"undefined"!=typeof b.success?e(f,b.region,b.can_write):d(as3cf_i18n.save_bucket_error,b.error)}})}),a(".as3cf-switch").on("click","span",function(){if(!a(this).parent().hasClass("disabled")){var b=a(this).parent().attr("id");f(b)}}),a(".as3cf-settings").length&&!a(".as3cf-settings").hasClass("as3cf-has-bucket")&&c(),a("#copy-to-s3").is(":checked")&&a("tr.advanced-options").show(),a(".as3cf-settings").on("change","#copy-to-s3",function(){a("tr.advanced-options").toggle()}),a("#serve-from-s3").is(":checked")&&a("tr.configure-url").show(),a(".as3cf-settings").on("change","#serve-from-s3",function(){a("tr.configure-url").toggle()}),a(".as3cf-settings").on("change",".sub-toggle",function(){var b=a(this).attr("id");a(".as3cf-setting."+b).toggleClass("hide")}),a(".as3cf-domain").on("change",'input[type="radio"]',function(){var b=a('input:radio[name="domain"]:checked').val();"cloudfront"==b&&a(".as3cf-setting.cloudfront").hasClass("hide")?a(".as3cf-setting.cloudfront").removeClass("hide"):a(".as3cf-setting.cloudfront").addClass("hide")}),a(".as3cf-ssl").on("change",'input[type="radio"]',function(){var b=a('input:radio[name="ssl"]:checked').val();if("https"==b){var c=a('input:radio[name="domain"]:checked').val();"subdomain"==c&&a('input[name="domain"][value="path"]').attr("checked",!0),a(".subdomain-wrap input").attr("disabled",!0),a(".subdomain-wrap").addClass("disabled")}else a(".subdomain-wrap input").removeAttr("disabled"),a(".subdomain-wrap").removeClass("disabled")}),a(".url-preview").on("change","input",function(){g()}),b=a(".as3cf-main-settings form").serialize(),a(document).on("submit",".as3cf-main-settings form",function(){a(window).off("beforeunload.as3cf-settings")}),a(window).on("beforeunload.as3cf-settings",function(){return a(".as3cf-main-settings form").serialize()!=b?as3cf_i18n.save_alert:void 0})})}(jQuery); \ No newline at end of file +!function(a){var b;a(document).ready(function(){function c(){a(".as3cf-bucket-error").hide(),h.html('
  • '+h.attr("data-working")+"
  • ");var b={action:"as3cf-get-buckets",_nonce:as3cf_i18n.get_buckets_nonce};a.ajax({url:ajaxurl,type:"POST",dataType:"JSON",data:b,error:function(a,b,c){h.html(""),d(as3cf_i18n.get_buckets_error,c)},success:function(b){h.html(""),"undefined"!=typeof b.success?a(b.buckets).each(function(a,c){var d=c.Name==b.selected?"selected":"";h.append('
  • '+c.Name+'
  • ')}):d(as3cf_i18n.get_buckets_error,b.error)}})}function d(b,c){a(".as3cf-bucket-error span.title").html(b),a(".as3cf-bucket-error span.message").html(c),a(".as3cf-bucket-error").show()}function e(b,c,d){""==a(".as3cf-active-bucket").text()&&(f("copy-to-s3-wrap"),f("serve-from-s3-wrap")),a(".as3cf-active-bucket").text(b),a("#as3cf-bucket").val(b),a("#as3cf-region").val(c),a(".updated").not(".as3cf-notice").show(),d===!1&&a(".as3cf-can-write-error").show(),a(".as3cf-settings").addClass("as3cf-has-bucket"),g()}function f(b){a("#"+b+" span").toggleClass("checked");var c=a("#"+b+" span.on").hasClass("checked"),d=a("#"+b).data("checkbox"),e=a("input#"+d);e.attr("checked",c),e.trigger("change")}function g(){a(".as3cf-url-preview").html("Generating...");var b={_nonce:as3cf_i18n.get_url_preview_nonce};a.each(a(".as3cf-main-settings form").serializeArray(),function(c,d){var e=d.name,f=d.value;e=e.replace("[]",""),b[e]=void 0===b[e]?f:a.isArray(b[e])?b[e].concat(f):[b[e],f]}),b.action="as3cf-get-url-preview",a.ajax({url:ajaxurl,type:"POST",dataType:"JSON",data:b,error:function(a,b,c){alert(as3cf_i18n.get_url_preview_error+c)},success:function(b){"undefined"!=typeof b.success?a(".as3cf-url-preview").html(b.url):alert(as3cf_i18n.get_url_preview_error+b.error)}})}a(".as3cf-settings").each(function(){var b=a(this),f=a(".as3cf-bucket-list"),g=b.find(".as3cf-create-bucket-form");if(g.length){var h=g.find("button"),i=h.text();g.on("submit",function(b){b.preventDefault(),a(".as3cf-bucket-error").hide(),f.addClass("saving"),h.text(h.attr("data-working")),h.prop("disabled",!0);var j=g.find('input[name="bucket_name"]').val(),k={action:"as3cf-create-bucket",bucket_name:j,_nonce:as3cf_i18n.create_bucket_nonce};a.ajax({url:ajaxurl,type:"POST",dataType:"JSON",data:k,error:function(a,b,c){h.text(i),d(as3cf_i18n.create_bucket_error,c)},success:function(b){h.text(i),h.prop("disabled",!1),"undefined"!=typeof b.success?(e(j,b.region,b.can_write),g.find('input[name="bucket_name"]').val(""),a(".as3cf-bucket-list a").removeClass("selected"),c(),f.removeClass("saving")):d(as3cf_i18n.create_bucket_error,b.error)}})})}var j=b.find(".as3cf-change-bucket");j.length&&j.on("click",function(b){b.preventDefault(),a(".updated").not(".as3cf-notice").hide(),a(".as3cf-can-write-error").hide(),a(".as3cf-settings").removeClass("as3cf-has-bucket"),c(),a(".as3cf-active-bucket").html&&a(".as3cf-cancel-bucket-select-wrap").show(),a(".as3cf-bucket-list a.selected").length&&a(".as3cf-bucket-list").scrollTop(a(".as3cf-bucket-list a.selected").position().top-50)});var k=b.find(".as3cf-refresh-buckets");k.length&&k.on("click",function(a){a.preventDefault(),c()});var l=b.find(".as3cf-cancel-bucket-select");l.length&&l.on("click",function(b){b.preventDefault(),a(".as3cf-bucket-error").hide(),a(".as3cf-settings").addClass("as3cf-has-bucket")})});var h=a(".as3cf-bucket-list");h.on("click","a",function(b){if(b.preventDefault(),a(this).hasClass("selected"))return void a(".as3cf-settings").addClass("as3cf-has-bucket");var c=this,f=a(".as3cf-bucket-list a.selected").attr("data-bucket");a(".as3cf-bucket-list a").removeClass("selected"),a(c).addClass("selected"),h.addClass("saving"),a(c).find(".spinner").show();var g=a(c).attr("data-bucket"),i={action:"as3cf-save-bucket",bucket_name:g,_nonce:as3cf_i18n.save_bucket_nonce};a.ajax({url:ajaxurl,type:"POST",dataType:"JSON",data:i,error:function(b,c,e){h.removeClass("saving"),d(as3cf_i18n.save_bucket_error,e),a(".as3cf-bucket-list a").removeClass("selected"),a('.as3cf-bucket-list a[data-bucket="'+f+'"]').addClass("selected")},success:function(b){a(c).find(".spinner").hide(),h.removeClass("saving"),"undefined"!=typeof b.success?e(g,b.region,b.can_write):(d(as3cf_i18n.save_bucket_error,b.error),a(".as3cf-bucket-list a").removeClass("selected"),a('.as3cf-bucket-list a[data-bucket="'+f+'"]').addClass("selected"))}})}),a(".as3cf-switch").on("click","span",function(){if(!a(this).parent().hasClass("disabled")){var b=a(this).parent().attr("id");f(b)}}),a(".as3cf-settings").length&&!a(".as3cf-settings").hasClass("as3cf-has-bucket")&&c(),a("#copy-to-s3").is(":checked")&&a("tr.advanced-options").show(),a(".as3cf-settings").on("change","#copy-to-s3",function(){a("tr.advanced-options").toggle()}),a("#serve-from-s3").is(":checked")&&a("tr.configure-url").show(),a(".as3cf-settings").on("change","#serve-from-s3",function(){a("tr.configure-url").toggle()}),a(".as3cf-settings").on("change",".sub-toggle",function(){var b=a(this).attr("id");a(".as3cf-setting."+b).toggleClass("hide")}),a(".as3cf-domain").on("change",'input[type="radio"]',function(){var b=a('input:radio[name="domain"]:checked').val();"cloudfront"==b&&a(".as3cf-setting.cloudfront").hasClass("hide")?a(".as3cf-setting.cloudfront").removeClass("hide"):a(".as3cf-setting.cloudfront").addClass("hide")}),a(".as3cf-ssl").on("change",'input[type="radio"]',function(){var b=a('input:radio[name="ssl"]:checked').val();if("https"==b){var c=a('input:radio[name="domain"]:checked').val();"subdomain"==c&&a('input[name="domain"][value="path"]').attr("checked",!0),a(".subdomain-wrap input").attr("disabled",!0),a(".subdomain-wrap").addClass("disabled")}else a(".subdomain-wrap input").removeAttr("disabled"),a(".subdomain-wrap").removeClass("disabled")}),a(".url-preview").on("change","input",function(){g()}),b=a(".as3cf-main-settings form").serialize(),a(document).on("submit",".as3cf-main-settings form",function(){a(window).off("beforeunload.as3cf-settings")}),a(window).on("beforeunload.as3cf-settings",function(){return a(".as3cf-main-settings form").serialize()!=b?as3cf_i18n.save_alert:void 0})})}(jQuery); \ No newline at end of file diff --git a/assets/sass/styles.scss b/assets/sass/styles.scss index 41171b9a..0e34a07e 100644 --- a/assets/sass/styles.scss +++ b/assets/sass/styles.scss @@ -19,7 +19,7 @@ .updated { display: none; - &.show { + &.as3cf-notice, &.show { display: block; } } diff --git a/classes/amazon-s3-and-cloudfront.php b/classes/amazon-s3-and-cloudfront.php index 28b40786..5345ff4a 100644 --- a/classes/amazon-s3-and-cloudfront.php +++ b/classes/amazon-s3-and-cloudfront.php @@ -98,6 +98,9 @@ function get_setting( $key, $default = '' ) { if ( 'region' == $key && ! isset( $settings['region'] ) ) { $bucket = $this->get_setting( 'bucket' ); $region = $this->get_bucket_region( $bucket ); + if ( is_wp_error( $region ) ) { + $region = ''; + } return $region; } @@ -244,14 +247,15 @@ function prepare_intermediate_images_to_remove( $post_id, &$objects, $path ) { /** * Delete bulk objects from an S3 bucket * + * @param string $region * @param string $bucket * @param array $objects * @param bool $log_error * @param bool $return_on_error */ - function delete_s3_objects( $bucket, $objects, $log_error = false, $return_on_error = false ) { + function delete_s3_objects( $region, $bucket, $objects, $log_error = false, $return_on_error = false ) { try { - $this->get_s3client()->deleteObjects( array( + $this->get_s3client( $region )->deleteObjects( array( 'Bucket' => $bucket, 'Objects' => $objects, ) ); @@ -275,8 +279,11 @@ function delete_attachment( $post_id ) { } $bucket = $s3object['bucket']; - - $this->set_s3client_region( $s3object ); + $region = $this->get_s3object_region( $s3object ); + if ( is_wp_error( $region ) ) { + error_log( 'Error retrieving region: ' . $region->get_error_message() ); + $region = ''; + } $amazon_path = dirname( $s3object['key'] ); $objects = array(); @@ -295,7 +302,7 @@ function delete_attachment( $post_id ) { ); } - $this->delete_s3_objects( $bucket, $hidpi_images ); + $this->delete_s3_objects( $region, $bucket, $hidpi_images ); } // add main file to be deleted @@ -303,7 +310,7 @@ function delete_attachment( $post_id ) { 'Key' => $s3object['key'], ); - $this->delete_s3_objects( $bucket, $objects, true, true ); + $this->delete_s3_objects( $region, $bucket, $objects, true, true ); delete_post_meta( $post_id, 'amazonS3_info' ); } @@ -356,6 +363,7 @@ function wp_update_attachment_metadata( $data, $post_id ) { // use bucket from settings $bucket = $this->get_setting( 'bucket' ); + $region = $this->get_setting( 'region' ); } $file_path = get_attached_file( $post_id, true ); @@ -364,11 +372,10 @@ function wp_update_attachment_metadata( $data, $post_id ) { $acl = apply_filters( 'wps3_upload_acl', $acl, $type, $data, $post_id, $this ); // Old naming convention, will be deprecated soon $acl = apply_filters( 'as3cf_upload_acl', $acl, $data, $post_id ); - $s3client = $this->get_s3client(); - $s3object = array( 'bucket' => $bucket, 'key' => $prefix . $file_name, + 'region' => $region, ); // store acl if not default @@ -376,13 +383,7 @@ function wp_update_attachment_metadata( $data, $post_id ) { $s3object['acl'] = $acl; } - // use existing region - if ( isset( $region ) ) { - $s3object['region'] = $region; - } - - // retrieve region when necessary and set the region of the s3client - $s3object['region'] = $this->set_s3client_region( $s3object ); + $s3client = $this->get_s3client( $region ); $args = array( 'Bucket' => $bucket, @@ -407,7 +408,7 @@ function wp_update_attachment_metadata( $data, $post_id ) { ); // edited resized image files $this->prepare_intermediate_images_to_remove( $post_id, $objects_to_remove, $prefix ); - $this->delete_s3_objects( $bucket, $objects_to_remove, true ); + $this->delete_s3_objects( $region, $bucket, $objects_to_remove, true ); } $files_to_remove = array(); @@ -581,11 +582,13 @@ function wp_handle_upload_prefilter( $file ) { $time = current_time( 'timestamp' ); $time = date( 'Y/m', $time ); - $prefix = ltrim( trailingslashit( $this->get_setting( 'object-prefix' ) ), '/' ); + $prefix = ltrim( trailingslashit( $this->get_object_prefix() ), '/' ); $prefix .= ltrim( trailingslashit( $this->get_dynamic_prefix( $time ) ), '/' ); - $s3client = $this->get_s3client(); $bucket = $this->get_setting( 'bucket' ); + $region = $this->get_setting( 'region' ); + + $s3client = $this->get_s3client( $region ); $number = ''; while ( $s3client->doesObjectExist( $bucket, $prefix . $filename ) !== false ) { @@ -802,7 +805,7 @@ function get_attachment_url( $post_id, $expires = null, $size = null, $meta = nu if ( ! is_null( $expires ) ) { try { $expires = time() + $expires; - $secure_url = $this->get_s3client()->getObjectUrl( $s3object['bucket'], $s3object['key'], $expires ); + $secure_url = $this->get_s3client( $region )->getObjectUrl( $s3object['bucket'], $s3object['key'], $expires ); } catch ( Exception $e ) { return new WP_Error( 'exception', $e->getMessage() ); @@ -1050,6 +1053,9 @@ function save_bucket( $bucket_name ) { } $this->set_setting( 'bucket', $bucket_name ); $region = $this->get_bucket_region( $bucket_name ); + if ( is_wp_error( $region ) ) { + return false; + } $this->set_setting( 'region', $region ); $this->save_settings(); @@ -1064,9 +1070,19 @@ function admin_menu( $aws ) { add_action( 'load-' . $hook_suffix , array( $this, 'plugin_load' ) ); } - function get_s3client() { + function get_s3client( $region = false ) { if ( is_null( $this->s3client ) ) { - $this->s3client = $this->aws->get_client()->get( 's3' ); + + if ( $region ) { + $args = array( + 'region' => $this->translate_region( $region ), + 'signature' => 'v4', + ); + } else { + $args = array(); + } + + $this->s3client = $this->aws->get_client()->get( 's3', $args ); } return $this->s3client; @@ -1084,6 +1100,8 @@ function get_bucket_region( $bucket ) { $region = $this->get_s3client()->getBucketLocation( array( 'Bucket' => $bucket ) ); } catch ( Exception $e ) { + error_log( sprintf( __( 'There was an error attempting to get the region of the bucket %s: %s', 'as3cf' ), $bucket, $e->getMessage() ) ); + return new WP_Error( 'exception', $e->getMessage() ); } @@ -1140,31 +1158,6 @@ function translate_region( $region ) { return $region; } - /** - * Set the region of the AWS client based on the bucket. - * - * This is needed for non US standard buckets to add and delete files. - * - * @param array $s3object - * @param int $post_id - * - * @return string - region name - */ - function set_s3client_region( $s3object, $post_id = null ) { - $region = $this->get_s3object_region( $s3object, $post_id ); - - if ( is_wp_error( $region ) ) { - return ''; - } - - if ( $region ) { - $region = $this->translate_region( $region ); - $this->get_s3client()->setRegion( $region ); - } - - return $region; - } - /** * AJAX handler for get_buckets() */ @@ -1221,7 +1214,7 @@ function check_write_permission( $bucket = null, $region = null ) { $file_name = 'as3cf-permission-check.txt'; $file_contents = __( 'This is a test file to check if the user has write permission to S3. Delete me if found.', 'as3cf' ); - $path = $this->get_setting( 'object-prefix' ); + $path = $this->get_object_prefix(); $key = $path . $file_name; $args = array( @@ -1236,11 +1229,8 @@ function check_write_permission( $bucket = null, $region = null ) { if ( is_null( $region ) ) { $region = $this->get_setting( 'region' ); } - if ( $region ) { - $this->get_s3client()->setRegion( $region ); - } // attempt to create the test file - $this->get_s3client()->putObject( $args ); + $this->get_s3client( $region )->putObject( $args ); // delete it straight away if created $this->get_s3client()->deleteObject( array( 'Bucket' => $bucket, diff --git a/classes/as3cf-upgrade.php b/classes/as3cf-upgrade.php index 284ff3c5..fc72e251 100644 --- a/classes/as3cf-upgrade.php +++ b/classes/as3cf-upgrade.php @@ -62,6 +62,11 @@ function maybe_init_upgrade() { return; } + // make sure this only fires inside the network admin for multisites + if ( is_multisite() && ! is_network_admin() ) { + return; + } + // Have we completed the upgrade yet? if ( $this->as3cf->get_setting( 'post_meta_version', 0 ) > 0 ) { return; diff --git a/languages/amazon-s3-and-cloudfront.pot b/languages/amazon-s3-and-cloudfront.pot index 7bb1eb5f..3385590b 100644 --- a/languages/amazon-s3-and-cloudfront.pot +++ b/languages/amazon-s3-and-cloudfront.pot @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: Amazon S3 and CloudFront\n" -"POT-Creation-Date: 2015-01-09 16:19-0000\n" -"PO-Revision-Date: 2015-01-09 16:19-0000\n" +"POT-Creation-Date: 2015-01-19 16:02-0000\n" +"PO-Revision-Date: 2015-01-19 16:02-0000\n" "Last-Translator: Delicious Brains \n" "Language-Team: Delicious Brains \n" "Language: en\n" @@ -28,58 +28,63 @@ msgstr "" msgid "S3 and CloudFront" msgstr "" -#: classes/amazon-s3-and-cloudfront.php:920 +#: classes/amazon-s3-and-cloudfront.php:923 msgid "There was an error attempting to access the file system" msgstr "" -#: classes/amazon-s3-and-cloudfront.php:960 +#: classes/amazon-s3-and-cloudfront.php:963 msgid "Cheatin’ eh?" msgstr "" -#: classes/amazon-s3-and-cloudfront.php:964 +#: classes/amazon-s3-and-cloudfront.php:967 msgid "You do not have sufficient permissions to access this page." msgstr "" -#: classes/amazon-s3-and-cloudfront.php:970 +#: classes/amazon-s3-and-cloudfront.php:973 msgid "No bucket name provided." msgstr "" -#: classes/amazon-s3-and-cloudfront.php:996 -#: classes/amazon-s3-and-cloudfront.php:1029 +#: classes/amazon-s3-and-cloudfront.php:999 +#: classes/amazon-s3-and-cloudfront.php:1032 msgid "Failed to retrieve bucket region." msgstr "" -#: classes/amazon-s3-and-cloudfront.php:1222 +#: classes/amazon-s3-and-cloudfront.php:1103 +#, php-format +msgid "There was an error attempting to get the region of the bucket %s: %s" +msgstr "" + +#: classes/amazon-s3-and-cloudfront.php:1215 msgid "" "This is a test file to check if the user has write permission to S3. Delete " "me if found." msgstr "" -#: classes/amazon-s3-and-cloudfront.php:1270 +#: classes/amazon-s3-and-cloudfront.php:1260 msgid "Bucket Name:" msgstr "" -#: classes/amazon-s3-and-cloudfront.php:1271 +#: classes/amazon-s3-and-cloudfront.php:1261 msgid "Error creating bucket: " msgstr "" -#: classes/amazon-s3-and-cloudfront.php:1273 +#: classes/amazon-s3-and-cloudfront.php:1263 msgid "Error fetching buckets: " msgstr "" -#: classes/amazon-s3-and-cloudfront.php:1275 +#: classes/amazon-s3-and-cloudfront.php:1265 msgid "Error saving bucket: " msgstr "" -#: classes/amazon-s3-and-cloudfront.php:1278 +#: classes/amazon-s3-and-cloudfront.php:1268 msgid "Error getting URL preview: " msgstr "" -#: classes/amazon-s3-and-cloudfront.php:1279 +#: classes/amazon-s3-and-cloudfront.php:1269 msgid "The changes you made will be lost if you navigate away from this page" msgstr "" -#: classes/amazon-s3-and-cloudfront.php:1291 +#: classes/amazon-s3-and-cloudfront.php:1281 msgid "Cheatin' eh?" msgstr "" @@ -140,7 +145,7 @@ msgstr "" msgid "Update Amazon S3 and CloudFront to the latest version" msgstr "" -#: classes/as3cf-upgrade.php:90 +#: classes/as3cf-upgrade.php:95 #, php-format msgid "" "Running Metadata Update — We’re going through " @@ -153,32 +158,32 @@ msgid "" "performance." msgstr "" -#: classes/as3cf-upgrade.php:91 +#: classes/as3cf-upgrade.php:96 msgid "Pause Update" msgstr "" -#: classes/as3cf-upgrade.php:95 +#: classes/as3cf-upgrade.php:100 msgid "" "Metadata Update Paused — Updating Media Library " "metadata has been paused." msgstr "" -#: classes/as3cf-upgrade.php:96 +#: classes/as3cf-upgrade.php:101 msgid "Restart Update" msgstr "" -#: classes/as3cf-upgrade.php:99 +#: classes/as3cf-upgrade.php:104 msgid "" "Error Updating Metadata — We ran into some errors " "attempting to update the metadata for all your Media Library items that have " "been uploaded to S3. Please check your error log for details." msgstr "" -#: classes/as3cf-upgrade.php:100 +#: classes/as3cf-upgrade.php:105 msgid "Try Run It Again" msgstr "" -#: classes/as3cf-upgrade.php:163 +#: classes/as3cf-upgrade.php:168 #, php-format msgid "Every %d Minutes" msgstr "" diff --git a/readme.txt b/readme.txt index f3af0056..e3b55151 100644 --- a/readme.txt +++ b/readme.txt @@ -4,7 +4,7 @@ Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_i Tags: uploads, amazon, s3, mirror, admin, media, cdn, cloudfront Requires at least: 3.5 Tested up to: 4.1 -Stable tag: 0.8 +Stable tag: 0.8.1 License: GPLv3 Copies files to Amazon S3 as they are uploaded to the Media Library. Optionally configure Amazon CloudFront for faster delivery. @@ -59,6 +59,12 @@ This version requires PHP 5.3.3+ and the Amazon Web Services plugin == Changelog == += 0.8.1 - 2015-01-19 = +* Bug Fix: Permission problems on installs running on EC2s +* Bug Fix: Blank settings page due to WP_Error on S3 permission check +* Bug Fix: Warning: strtolower() expects parameter 1 to be string, object given +* Bug Fix: Region post meta update running on subsites of Multisite installs + = 0.8 - 2015-01-10 = * New: Redesigned settings UI * Improvement: SSL setting can be fully controlled, HTTPS for urls always, based on request or never diff --git a/wordpress-s3.php b/wordpress-s3.php index 49e9bece..3fc7a1f6 100644 --- a/wordpress-s3.php +++ b/wordpress-s3.php @@ -4,7 +4,7 @@ Plugin URI: http://wordpress.org/extend/plugins/amazon-s3-and-cloudfront/ Description: Automatically copies media uploads to Amazon S3 for storage and delivery. Optionally configure Amazon CloudFront for even faster delivery. Author: Brad Touesnard -Version: 0.8 +Version: 0.8.1 Author URI: http://bradt.ca Network: True Text Domain: as3cf @@ -26,13 +26,13 @@ // Then completely rewritten. */ -$GLOBALS['aws_meta']['amazon-s3-and-cloudfront']['version'] = '0.8'; +$GLOBALS['aws_meta']['amazon-s3-and-cloudfront']['version'] = '0.8.1'; $GLOBALS['aws_meta']['amazon-s3-and-cloudfront']['supported_addon_versions'] = array( 'amazon-s3-and-cloudfront-edd' => '1.0', ); -$aws_plugin_version_required = '0.2.1'; +$aws_plugin_version_required = '0.2.2'; require dirname( __FILE__ ) . '/classes/as3cf-compatibility-check.php'; global $as3cf_compat_check;