From 3f6ae90cd93e17214fabbdeff840cc80c962a3b5 Mon Sep 17 00:00:00 2001 From: Ashley Rich Date: Mon, 7 Mar 2016 16:44:44 +0000 Subject: [PATCH] Deploying version 0.3.5 --- README.md | 6 + amazon-web-services.php | 7 +- assets/css/styles.css | 2 +- assets/img/as3cf-banner-bw.jpg | Bin 0 -> 28115 bytes assets/img/as3cf-banner-bw@2x.jpg | Bin 0 -> 62653 bytes assets/img/icon-acf-image-crop.svg | 10 ++ assets/img/icon-pro.svg | 10 -- assets/js/script.js | 7 +- assets/sass/styles.scss | 176 +++++++++++-------------- classes/amazon-web-services.php | 144 ++++++++++++-------- classes/aws-plugin-base.php | 137 ++++++++++++++++++- classes/wp-aws-compatibility-check.php | 15 ++- classes/wp-aws-uninstall.php | 52 +++++++- languages/amazon-web-services-en.pot | 108 ++++++++------- languages/amazon-web-services-pt-br.mo | Bin 3634 -> 0 bytes readme.txt | 6 + view/addon.php | 3 + view/settings.php | 6 +- 18 files changed, 457 insertions(+), 232 deletions(-) create mode 100644 assets/img/as3cf-banner-bw.jpg create mode 100644 assets/img/as3cf-banner-bw@2x.jpg create mode 100644 assets/img/icon-acf-image-crop.svg delete mode 100644 assets/img/icon-pro.svg delete mode 100644 languages/amazon-web-services-pt-br.mo diff --git a/README.md b/README.md index b87b068..ce1a708 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,12 @@ This plugin is required by other plugins, which uses its libraries and its setti ## Changelog ## +### 0.3.5 - 2016-03-07 ### +* Improvement: Support for `DBI_` prefixed constants to avoid conflicts with other plugins +* Improvement: Redesign of the Addons page +* Improvement: Compatibility with WP Offload S3 Lite 1.0 +* Improvement: Compatibility with WP Offload S3 1.1 + ### 0.3.4 - 2015-11-02 ### * Improvement: Compatibility with WP Offload S3 Pro 1.0.3 diff --git a/amazon-web-services.php b/amazon-web-services.php index cf03314..f48ed18 100644 --- a/amazon-web-services.php +++ b/amazon-web-services.php @@ -4,7 +4,7 @@ Plugin URI: http://wordpress.org/extend/plugins/amazon-web-services/ Description: Includes the Amazon Web Services PHP libraries, stores access keys, and allows other plugins to hook into it. Author: Delicious Brains -Version: 0.3.4 +Version: 0.3.5 Author URI: http://deliciousbrains.com/ Network: True Text Domain: amazon-web-services @@ -22,10 +22,11 @@ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // ********************************************************************** -$GLOBALS['aws_meta']['amazon-web-services']['version'] = '0.3.4'; +$GLOBALS['aws_meta']['amazon-web-services']['version'] = '0.3.5'; $GLOBALS['aws_meta']['amazon-web-services']['supported_addon_versions'] = array( - 'amazon-s3-and-cloudfront' => '0.9', + 'amazon-s3-and-cloudfront' => '0.9', + 'amazon-s3-and-cloudfront-pro' => '1.0b1', ); require dirname( __FILE__ ) . '/classes/aws-compatibility-check.php'; diff --git a/assets/css/styles.css b/assets/css/styles.css index a5acad1..0bd503f 100644 --- a/assets/css/styles.css +++ b/assets/css/styles.css @@ -1 +1 @@ -.aws-content,.aws-updated,.aws-compatibility-notice{box-sizing:border-box;max-width:650px}.toplevel_page_amazon-web-services .error,.toplevel_page_amazon-web-services .notice,.toplevel_page_amazon-web-services .updated{box-sizing:border-box;max-width:650px}.aws-addons,.aws-main[data-view="addons"] .aws-compatibility-notice{max-width:772px}.aws-settings h3{font-size:20px}.aws-settings .need-help{background-color:#fff;padding:20px 20px 20px 50px;line-height:1;font-size:16px;font-weight:bold;position:relative}.aws-settings .need-help:before{font-family:"dashicons";content:"\f348";font-size:24px;line-height:1;width:24px;height:24px;position:absolute;top:16px;left:16px}.aws-settings .need-help a{text-decoration:none}.aws-settings p{font-size:14px}body.toplevel_page_amazon-web-services .wrap h1{color:#fff;font-weight:600;font-size:26px;line-height:1;margin:20px 0 15px 0;width:650px;padding:100px 0 0 25px;height:150px;background:#f7a80d url(../img/aws-logo.svg) right 40px center no-repeat;background-size:100px 79px;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.aws-addons .addons-list{margin:20px 0 200px;padding-top:5px;border-top:1px solid #ddd;font-size:14px}.aws-addons .addons-list li:last-child{margin-bottom:0}.aws-addons .addons-list article{margin-top:10px;width:100%;height:250px;position:relative;font-weight:300;line-height:1;overflow:hidden}.aws-addons .addons-list article .info{position:absolute;bottom:20px;left:20px}.aws-addons .addons-list article .info ul{margin:16px 0 0;color:rgba(255,255,255,0.7)}.aws-addons .addons-list article .info ul li{display:inline-block;margin:0 30px 0 0}.aws-addons .addons-list article .info ul li:last-child{margin-right:0}.aws-addons .addons-list article .info a{color:#fff;text-decoration:none}.aws-addons .addons-list article .info a:hover{text-decoration:underline}.aws-addons .addons-list article h1,.aws-addons .addons-list article h2{padding:0;color:#fff;line-height:1;font-weight:600}.aws-addons .addons-list article h1{margin:0;font-size:26px}.aws-addons .addons-list article h2{margin:4px 0 0;font-size:18px}.aws-addons .addons-list article .label{position:absolute;top:10px;right:10px;font-style:italic;color:#fff}.aws-addons .addons-list ul{margin:0 120px 0 80px}.aws-addons .addons-list ul article{height:100px}.aws-addons .addons-list ul article .info{position:static;padding:25px 20px 25px 110px}.aws-addons .addons-list ul article .info ul{margin:12px 0 0}.aws-addons .addons-list ul article h1{font-size:22px}.aws-addons .addons-list ul ul{margin-right:0}.aws-addons .addons-list ul ul article{height:80px}.aws-addons .addons-list ul ul article .info{padding:19px 10px 19px 90px}.aws-addons .addons-list ul ul article .info ul{margin:8px 0 0}.aws-addons .addons-list ul ul article h1{font-size:20px;font-weight:300}.aws-addons .addons-list .amazon-s3-and-cloudfront article{background-image:url(../img/as3cf-banner.jpg);background-size:772px 250px;background-repeat:no-repeat}@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){.aws-addons .addons-list .amazon-s3-and-cloudfront article{background-image:url(../img/as3cf-banner@2x.jpg)}}.aws-addons .addons-list .amazon-s3-and-cloudfront-pro article{background:#d4a637 url(../img/icon-pro.svg) no-repeat 15px center;background-size:70px 70px}.aws-addons .addons-list .amazon-s3-and-cloudfront-woocommerce article{background:#a46497 url(../img/icon-woocommerce.svg) no-repeat 15px center;background-size:50px 50px}.aws-addons .addons-list .amazon-s3-and-cloudfront-edd article{background:#1d2428 url(../img/icon-edd.svg) no-repeat 15px center;background-size:50px 50px}.aws-addons .addons-list .amazon-s3-and-cloudfront-assets article{background:#0769ad url(../img/icon-assets.svg) no-repeat 15px center;background-size:50px 50px}.aws-addons .addons-list .amazon-s3-and-cloudfront-wpml article{background:#277f91 url(../img/icon-wpml.svg) no-repeat 15px center;background-size:50px 50px}.aws-addons .addons-list .amazon-s3-and-cloudfront-meta-slider article{background:#03b0d8 url(../img/icon-meta-slider.svg) no-repeat 15px center;background-size:50px 50px}.aws-addons .addons-list .amazon-s3-and-cloudfront-enable-media-replace article{background:#3c6 url(../img/icon-enable-media-replace.svg) no-repeat 15px center;background-size:50px 50px}.aws-addons .addons-list li li.addon{position:relative}.aws-addons .addons-list li li.addon:before,.aws-addons .addons-list li li.addon:after{content:'';position:absolute;display:block;background:#ddd}.aws-addons .addons-list li li.addon:before{top:0;left:-45px;width:10px;height:65px}.aws-addons .addons-list li li.addon:after{top:55px;left:-45px;width:35px;height:10px}.aws-addons .addons-list li li.addon li:before{height:45px}.aws-addons .addons-list li li.addon li:after{top:35px}.aws-addons .addons-list li li.addon:not(:first-child):before{top:-45px;height:80px}.aws-addons .addons-list li li.addon .info span.type{position:absolute;top:10px;right:15px;font-style:italic;color:#fff} +.aws-content,.aws-updated,.aws-compatibility-notice{-webkit-box-sizing:border-box;box-sizing:border-box;max-width:650px}.toplevel_page_amazon-web-services .error,.toplevel_page_amazon-web-services .notice,.toplevel_page_amazon-web-services .updated{-webkit-box-sizing:border-box;box-sizing:border-box;max-width:650px}.aws-addons,.aws-main[data-view="addons"] .aws-compatibility-notice{max-width:772px}.aws-settings h3{font-size:20px}.aws-settings .need-help{background-color:#fff;padding:20px 20px 20px 50px;line-height:1;font-size:16px;font-weight:bold;position:relative}.aws-settings .need-help:before{font-family:"dashicons";content:"\f348";font-size:24px;line-height:1;width:24px;height:24px;position:absolute;top:16px;left:16px}.aws-settings .need-help a{text-decoration:none}.aws-settings p{font-size:14px}body.toplevel_page_amazon-web-services .wrap h1{color:#fff;font-weight:600;font-size:26px;line-height:1;margin:20px 0 15px 0;width:650px;padding:100px 0 0 25px;height:150px;background:#f7a80d url(../img/aws-logo.svg) right 40px center no-repeat;background-size:100px 79px;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.aws-addons .addons-list{margin:20px 0 200px;padding-top:5px;border-top:1px solid #ddd;font-size:14px}.aws-addons .addons-list li:last-child{margin-bottom:0}.aws-addons .addons-list article{margin-top:10px;width:100%;height:250px;position:relative;font-weight:300;line-height:1;overflow:hidden}.aws-addons .addons-list article .info{position:absolute;bottom:20px;left:20px}.aws-addons .addons-list article .info ul{margin:16px 0 0;color:rgba(255,255,255,0.7)}.aws-addons .addons-list article .info ul li{display:inline-block;margin:0 30px 0 0}.aws-addons .addons-list article .info ul li:last-child{margin-right:0}.aws-addons .addons-list article .info a{color:#fff;text-decoration:none}.aws-addons .addons-list article .info a:hover{text-decoration:underline}.aws-addons .addons-list article h1,.aws-addons .addons-list article h2{padding:0;color:#fff;line-height:1;font-weight:600}.aws-addons .addons-list article h1{margin:0;font-size:26px}.aws-addons .addons-list article h2{margin:4px 0 0;font-size:18px}.aws-addons .addons-list article .label{position:absolute;top:10px;right:10px;font-style:italic;color:#fff}.aws-addons .addons-list>li>ul{background-color:#fff;border-top:0;padding:10px;overflow:hidden}.aws-addons .addons-list>li>ul article{width:244px;float:left;margin-right:10px}.aws-addons .addons-list>li>ul article img{width:80px;height:80px}.aws-addons .addons-list>li>ul article h1{font-size:22px;line-height:1.2}.aws-addons .addons-list>li>ul article .info{left:0;right:0;margin:0 auto;width:210px;text-align:center}.aws-addons .addons-list>li>ul article .info ul li{margin-right:10px;font-size:13px;line-height:1.6}.aws-addons .addons-list>li>ul li{margin-bottom:0}.aws-addons .addons-list .amazon-s3-and-cloudfront>article{background-image:url(../img/as3cf-banner-bw.jpg);background-size:772px 150px;background-repeat:no-repeat;height:150px}@media (min--moz-device-pixel-ratio: 1.3), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx){.aws-addons .addons-list .amazon-s3-and-cloudfront>article{background-image:url(../img/as3cf-banner-bw@2x.jpg)}}.aws-addons .addons-list .amazon-s3-and-cloudfront-pro>article{background-image:url(../img/as3cf-banner.jpg);background-size:772px 250px;background-repeat:no-repeat}@media (min--moz-device-pixel-ratio: 1.3), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx){.aws-addons .addons-list .amazon-s3-and-cloudfront-pro>article{background-image:url(../img/as3cf-banner@2x.jpg)}}.aws-addons .addons-list .amazon-s3-and-cloudfront-woocommerce>article{background-color:#a46497;margin:0}.aws-addons .addons-list .amazon-s3-and-cloudfront-edd>article{background-color:#1d2428;background-position:center 50px}.aws-addons .addons-list .amazon-s3-and-cloudfront-assets>article{background-color:#0769ad;width:498px;margin-top:0}.aws-addons .addons-list .amazon-s3-and-cloudfront-assets>article img{width:100px;height:100px}.aws-addons .addons-list .amazon-s3-and-cloudfront-assets>article h1{font-size:30px}.aws-addons .addons-list .amazon-s3-and-cloudfront-wpml>article{background-color:#277f91}.aws-addons .addons-list .amazon-s3-and-cloudfront-meta-slider>article{background-color:#03b0d8;margin-right:0}.aws-addons .addons-list .amazon-s3-and-cloudfront-enable-media-replace>article{background-color:#33cc66}.aws-addons .addons-list .amazon-s3-and-cloudfront-enable-media-replace>article img{width:70px;height:70px;margin-bottom:10px}.aws-addons .addons-list .amazon-s3-and-cloudfront-acf-image-crop>article{background-color:#f55e4f} diff --git a/assets/img/as3cf-banner-bw.jpg b/assets/img/as3cf-banner-bw.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8ee652bfc3528cd5693cdf64db8e17371fa9a772 GIT binary patch literal 28115 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 o0M5^guGHQEoEy5y|4Wm_3L5)DB!=# z`8I%2$J^S`A3y;BU36mrfb#_)pS_otn~Ic_i>IU&*7b>vq_wNFl%JKGl#Hab6hKYW z&&|r((Z&n$#Kz9SMP1-~?NS8+0EI;%L?J=?BwF9;-@a~ufbI=>i=|02_XIj;^n9=fc}Rn;-LWsq3!BngOHb0 zkg%3kP(&yyOUlSAD#|H}BaqTE@>0^WQnJz#NLdv*X%#sn;@?H!f|>``R^^V4-oI&G zwA2OuJt<#bUrAqCNmma$DH&yDWhrT-6cQ`2V_E&d&eL>tE2GUUzK%n~nb~w5PGZn~l^R z8&6kn4{MtXaKZl|U##8#o6tXi7u=}mxLSKV+qigL*HIU^=#j)aU{$1bq!nb)a!B;W zn#suM%A;izw6xLM%F6P(dRlVYa{s}-?&9fX+ITql*kJWMT%8gBS|1gM|G|Tn z9$M#uVLfdHT}7mVma?*rp0u(8Qcq4x39Y0pEhF%69PIy?^Zyq|>Vmk`Kb!eKHupbW z7ZUSN^}j^*qVZqCZsT$x;T{*Fe7*~y|CfLQu#Fdw48{2rAQV9PUj=wk1A;ETfgmc- zKZOcR^{)a3Lm*HH1WZj$LqknX_kR`&AP`6eqM`$aCB?v+Z0D_pPCYdPwY!9~x@0}J~H1f5HX@;S!3!XjlYSOs_4;1@XJdWsW9PADY31XUsginl=tA5h@1^=%O?Dao@|YeUP}X;RhCZswC8-s z+=$K@#GQU*fkpmOA&UnPd0{C^t7x%~bHF0rIjk*=dGm%C?fCovx4*eeB@--6&R;@kC_^z)lE;Ho;c37lOI(8p8P_C4`;mqBBMUVu z`;dh8Mqs0o=;CeByNF@J2o!;40^K|Ig^Sf;#Lc9FDI*6^SJWO4v7sMvLLg6I|)Xca%^M5?v^U?wJ=4e6hY zLG#QGNT8A<5_=?MRv5}D?#`zLUE}V-;XIL$Z#^A!PDCSZ&n|ppcQgK8xC)V1(gr=R zk;}`i_aOi-mBXL~el3{`FXNs<8@yVCYDtNK-8lErrPDbBRf`nLdwpK75L2%zWpG@f z9HJz6@C&6PStSD}S5i01VA6SHn+GbbKAtr^7GSgsAgkxQj{ae_^&V28qX569`h3`@ zemA|Wr1WG&twTk=tMC4!AGu1c?jdxd)5jP)4@P^Bu*TbX3NyaPX+RfN0RrDs9!zgR zYJpmlDLwXZsufgHt?q!|e<6~&G=74)>-D$nOLt}I&cM84&sEJ&cp&D{6Z43

SnE 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 + + + Untitled 5 + Created with Sketch. + + + + + \ No newline at end of file diff --git a/assets/img/icon-pro.svg b/assets/img/icon-pro.svg deleted file mode 100644 index 04173ac..0000000 --- a/assets/img/icon-pro.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - Untitled - Created with Sketch. - - - - - \ No newline at end of file diff --git a/assets/js/script.js b/assets/js/script.js index 7e8ef00..9e0916b 100644 --- a/assets/js/script.js +++ b/assets/js/script.js @@ -1,4 +1,4 @@ -(function($) { +(function( $ ) { $( document ).ready( function() { @@ -9,8 +9,7 @@ var $form = $( 'form', $container ); if ( 'block' === $form.css( 'display' ) ) { $form.hide(); - } - else { + } else { $form.show(); } return false; @@ -23,4 +22,4 @@ } ); -})(jQuery); \ No newline at end of file +})( jQuery ); diff --git a/assets/sass/styles.scss b/assets/sass/styles.scss index e4fd50e..51a5f63 100644 --- a/assets/sass/styles.scss +++ b/assets/sass/styles.scss @@ -153,51 +153,66 @@ body.toplevel_page_amazon-web-services .wrap { } } - // Second depth - ul { - margin: 0 120px 0 80px; + // Addons + > li > ul { + background-color: #fff; + border-top: 0; + padding: 10px; + overflow: hidden; article { - height: 100px; - - .info { - position: static; - padding: 25px 20px 25px 110px; + width: 244px; + float: left; + margin-right: 10px; - ul { - margin: 12px 0 0; - } + img { + width: 80px; + height: 80px; } h1 { font-size: 22px; + line-height: 1.2; } - } - - // Third depth - ul { - margin-right: 0; - - article { - height: 80px; - .info { - padding: 19px 10px 19px 90px; + .info { + left: 0; + right: 0; + margin: 0 auto; + width: 210px; + text-align: center; - ul { - margin: 8px 0 0; + ul { + li { + margin-right: 10px; + font-size: 13px; + line-height: 1.6; } } - - h1 { - font-size: 20px; - font-weight: 300; - } } } + + li { + margin-bottom: 0; + } + } + + .amazon-s3-and-cloudfront > article { + background-image: url(../img/as3cf-banner-bw.jpg); + background-size: 772px 150px; + background-repeat: no-repeat; + height: 150px; + + @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) { + background-image: url(../img/as3cf-banner-bw@2x.jpg); + } } - .amazon-s3-and-cloudfront article { + .amazon-s3-and-cloudfront-pro > article { background-image: url(../img/as3cf-banner.jpg); background-size: 772px 250px; background-repeat: no-repeat; @@ -211,93 +226,52 @@ body.toplevel_page_amazon-web-services .wrap { } } - .amazon-s3-and-cloudfront-pro article { - background: #d4a637 url(../img/icon-pro.svg) no-repeat 15px center; - background-size: 70px 70px; + .amazon-s3-and-cloudfront-woocommerce > article { + background-color: #a46497; + margin: 0; } - .amazon-s3-and-cloudfront-woocommerce article { - background: #a46497 url(../img/icon-woocommerce.svg) no-repeat 15px center; - background-size: 50px 50px; + .amazon-s3-and-cloudfront-edd > article { + background-color: #1d2428; + background-position: center 50px; } - .amazon-s3-and-cloudfront-edd article { - background: #1d2428 url(../img/icon-edd.svg) no-repeat 15px center; - background-size: 50px 50px; - } + .amazon-s3-and-cloudfront-assets > article { + background-color: #0769ad; + width: 498px; + margin-top: 0; - .amazon-s3-and-cloudfront-assets article { - background: #0769ad url(../img/icon-assets.svg) no-repeat 15px center; - background-size: 50px 50px; - } + img { + width: 100px; + height: 100px; + } - .amazon-s3-and-cloudfront-wpml article { - background: #277f91 url(../img/icon-wpml.svg) no-repeat 15px center; - background-size: 50px 50px; + h1 { + font-size: 30px; + } } - .amazon-s3-and-cloudfront-meta-slider article { - background: #03b0d8 url(../img/icon-meta-slider.svg) no-repeat 15px center; - background-size: 50px 50px; + .amazon-s3-and-cloudfront-wpml > article { + background-color: #277f91; } - .amazon-s3-and-cloudfront-enable-media-replace article { - background: #33cc66 url(../img/icon-enable-media-replace.svg) no-repeat 15px center; - background-size: 50px 50px; + .amazon-s3-and-cloudfront-meta-slider > article { + background-color: #03b0d8; + margin-right: 0; } - // Tree hierarchy - li li.addon { - position: relative; - - &:before, - &:after { - content: ''; - position: absolute; - display: block; - background: #ddd; - } - - &:before { - top: 0; - left: -45px; - width: 10px; - height: 65px; - } - - &:after { - top: 55px; - left: -45px; - width: 35px; - height: 10px; - } - - // Second depth - li:before { - height: 45px; - } + .amazon-s3-and-cloudfront-enable-media-replace > article { + background-color: #33cc66; - li:after { - top: 35px; - } - - // Adjust height for all but first child - &:not(:first-child) { - &:before { - top: -45px; - height: 80px; - } + img { + width: 70px; + height: 70px; + margin-bottom: 10px; } + } - .info { - span.type { - position: absolute; - top: 10px; - right: 15px; - font-style: italic; - color: #fff; - } - } + .amazon-s3-and-cloudfront-acf-image-crop > article { + background-color: #f55e4f; } } } \ No newline at end of file diff --git a/classes/amazon-web-services.php b/classes/amazon-web-services.php index b47b466..6ff6596 100644 --- a/classes/amazon-web-services.php +++ b/classes/amazon-web-services.php @@ -24,6 +24,7 @@ class Amazon_Web_Services extends AWS_Plugin_Base { private $client; const SETTINGS_KEY = 'aws_settings'; + const SETTINGS_CONSTANT = 'AWS_SETTINGS'; /** * @param string $plugin_file_path @@ -112,22 +113,20 @@ function add_page( $page_title, $menu_title, $capability, $menu_slug, $function * Load styles for the AWS menu item */ function enqueue_menu_styles() { - $version = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? time() : $this->plugin_version; - $src = plugins_url( 'assets/css/global.css', $this->plugin_file_path ); - wp_enqueue_style( 'aws-global-styles', $src, array(), $version ); + $src = plugins_url( 'assets/css/global.css', $this->plugin_file_path ); + wp_enqueue_style( 'aws-global-styles', $src, array(), $this->get_asset_version() ); } /** * Plugin loading enqueue scripts and styles */ function plugin_load() { - $version = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? time() : $this->plugin_version; + $version = $this->get_asset_version(); + $suffix = $this->get_asset_suffix(); $src = plugins_url( 'assets/css/styles.css', $this->plugin_file_path ); wp_enqueue_style( 'aws-styles', $src, array(), $version ); - $suffix = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '' : '.min'; - $src = plugins_url( 'assets/js/script' . $suffix . '.js', $this->plugin_file_path ); wp_enqueue_script( 'aws-script', $src, array( 'jquery' ), $version, true ); @@ -224,6 +223,15 @@ function are_key_constants_set() { return defined( 'AWS_ACCESS_KEY_ID' ) && defined( 'AWS_SECRET_ACCESS_KEY' ); } + /** + * Check if we are using the prefixed constants for the AWS access credentials + * + * @return bool + */ + function are_prefixed_key_constants_set() { + return defined( 'DBI_AWS_ACCESS_KEY_ID' ) && defined( 'DBI_AWS_SECRET_ACCESS_KEY' ); + } + /** * Check if access keys are defined either by constants or database * @@ -239,8 +247,10 @@ function are_access_keys_set() { * @return string */ function get_access_key_id() { - if ( $this->are_key_constants_set() ) { - return AWS_ACCESS_KEY_ID; + if ( defined( 'DBI_AWS_ACCESS_KEY_ID' ) ) { + return DBI_AWS_ACCESS_KEY_ID; + } elseif ( defined( 'AWS_ACCESS_KEY_ID' ) ) { + return AWS_ACCESS_KEY_ID; // Deprecated } return $this->get_setting( 'access_key_id' ); @@ -252,8 +262,10 @@ function get_access_key_id() { * @return string */ function get_secret_access_key() { - if ( $this->are_key_constants_set() ) { - return AWS_SECRET_ACCESS_KEY; + if ( defined( 'DBI_AWS_SECRET_ACCESS_KEY' ) ) { + return DBI_AWS_SECRET_ACCESS_KEY; + } elseif ( defined( 'AWS_SECRET_ACCESS_KEY' ) ) { + return AWS_SECRET_ACCESS_KEY; // Deprecated } return $this->get_setting( 'secret_access_key' ); @@ -347,50 +359,61 @@ function get_plugin_action_settings_text() { function get_addons( $unfiltered = false ) { $addons = array( 'amazon-s3-and-cloudfront' => array( - 'title' => __( 'WP Offload S3', 'amazon-web-services' ), + 'title' => __( 'WP Offload S3 Lite', 'amazon-web-services' ), 'url' => 'https://wordpress.org/plugins/amazon-s3-and-cloudfront/', 'install' => true, - 'addons' => array( - 'amazon-s3-and-cloudfront-pro' => array( - 'title' => __( 'Pro Upgrade', 'amazon-web-services' ), - 'url' => 'https://deliciousbrains.com/wp-offload-s3/', - 'addons' => array( - 'amazon-s3-and-cloudfront-assets' => array( - 'title' => __( 'Assets', 'amazon-web-services' ), - 'url' => 'https://deliciousbrains.com/wp-offload-s3/doc/assets-addon/', - 'label' => __( 'Addon', 'amazon-web-services' ), - ), - 'amazon-s3-and-cloudfront-woocommerce' => array( - 'title' => __( 'WooCommerce', 'amazon-web-services' ), - 'url' => 'https://deliciousbrains.com/wp-offload-s3/doc/woocommerce-addon/', - 'label' => __( 'Addon', 'amazon-web-services' ), - 'parent_plugin_basename' => 'woocommerce/woocommerce.php', - ), - 'amazon-s3-and-cloudfront-edd' => array( - 'title' => __( 'Easy Digital Downloads', 'amazon-web-services' ), - 'url' => 'https://deliciousbrains.com/wp-offload-s3/doc/edd-addon/', - 'label' => __( 'Addon', 'amazon-web-services' ), - 'parent_plugin_basename' => 'easy-digital-downloads/easy-digital-downloads.php', - ), - 'amazon-s3-and-cloudfront-wpml' => array( - 'title' => __( 'WPML', 'amazon-web-services' ), - 'url' => 'https://deliciousbrains.com/wp-offload-s3/doc/wpml-addon/', - 'label' => __( 'Addon', 'amazon-web-services' ), - 'parent_plugin_basename' => 'wpml-media/plugin.php', - ), - 'amazon-s3-and-cloudfront-meta-slider' => array( - 'title' => __( 'Meta Slider', 'amazon-web-services' ), - 'url' => 'https://deliciousbrains.com/wp-offload-s3/doc/meta-slider-addon/', - 'label' => __( 'Addon', 'amazon-web-services' ), - 'parent_plugin_basename' => 'ml-slider/ml-slider.php', - ), - 'amazon-s3-and-cloudfront-enable-media-replace' => array( - 'title' => __( 'Enable Media Replace', 'amazon-web-services' ), - 'url' => 'https://deliciousbrains.com/wp-offload-s3/doc/enable-media-replace-addon/', - 'label' => __( 'Addon', 'amazon-web-services' ), - 'parent_plugin_basename' => 'enable-media-replace/enable-media-replace.php', - ), - ), + ), + 'amazon-s3-and-cloudfront-pro' => array( + 'title' => __( 'WP Offload S3', 'amazon-web-services' ), + 'url' => 'https://deliciousbrains.com/wp-offload-s3/', + 'addons' => array( + 'amazon-s3-and-cloudfront-assets' => array( + 'title' => __( 'Assets', 'amazon-web-services' ), + 'url' => 'https://deliciousbrains.com/wp-offload-s3/doc/assets-addon/', + 'label' => __( 'Feature', 'amazon-web-services' ), + 'icon' => true, + ), + 'amazon-s3-and-cloudfront-woocommerce' => array( + 'title' => __( 'WooCommerce', 'amazon-web-services' ), + 'url' => 'https://deliciousbrains.com/wp-offload-s3/doc/woocommerce-addon/', + 'label' => __( 'Integration', 'amazon-web-services' ), + 'parent_plugin_basename' => 'woocommerce/woocommerce.php', + 'icon' => true, + ), + 'amazon-s3-and-cloudfront-edd' => array( + 'title' => __( 'Easy Digital Downloads', 'amazon-web-services' ), + 'url' => 'https://deliciousbrains.com/wp-offload-s3/doc/edd-addon/', + 'label' => __( 'Integration', 'amazon-web-services' ), + 'parent_plugin_basename' => 'easy-digital-downloads/easy-digital-downloads.php', + 'icon' => true, + ), + 'amazon-s3-and-cloudfront-wpml' => array( + 'title' => __( 'WPML', 'amazon-web-services' ), + 'url' => 'https://deliciousbrains.com/wp-offload-s3/doc/wpml-addon/', + 'label' => __( 'Integration', 'amazon-web-services' ), + 'parent_plugin_basename' => 'wpml-media/plugin.php', + 'icon' => true, + ), + 'amazon-s3-and-cloudfront-meta-slider' => array( + 'title' => __( 'Meta Slider', 'amazon-web-services' ), + 'url' => 'https://deliciousbrains.com/wp-offload-s3/doc/meta-slider-addon/', + 'label' => __( 'Integration', 'amazon-web-services' ), + 'parent_plugin_basename' => 'ml-slider/ml-slider.php', + 'icon' => true, + ), + 'amazon-s3-and-cloudfront-enable-media-replace' => array( + 'title' => __( 'Enable Media Replace', 'amazon-web-services' ), + 'url' => 'https://deliciousbrains.com/wp-offload-s3/doc/enable-media-replace-addon/', + 'label' => __( 'Integration', 'amazon-web-services' ), + 'parent_plugin_basename' => 'enable-media-replace/enable-media-replace.php', + 'icon' => true, + ), + 'amazon-s3-and-cloudfront-acf-image-crop' => array( + 'title' => __( 'ACF Image Crop', 'amazon-web-services' ), + 'url' => 'https://deliciousbrains.com/wp-offload-s3/doc/acf-image-crop-addon/', + 'label' => __( 'Integration', 'amazon-web-services' ), + 'parent_plugin_basename' => 'acf-image-crop-add-on/acf-image-crop.php', + 'icon' => true, ), ), ), @@ -415,6 +438,10 @@ function render_addons( $addons = null ) { $addons = $this->get_addons(); } + if ( class_exists( 'Amazon_S3_And_CloudFront_Pro' ) ) { + unset( $addons['amazon-s3-and-cloudfront'] ); + } + foreach ( $addons as $slug => $addon ) { $this->render_view( 'addon', array( 'slug' => $slug, 'addon' => $addon ) ); } @@ -452,6 +479,19 @@ function get_addon_install_link( $slug, $addon ) { } } + /** + * Get the URL of the addon's icon + * + * @param string $slug + * + * @return string + */ + function get_addon_icon_url( $slug ) { + $filename = str_replace( 'amazon-s3-and-cloudfront-', '', $slug ); + $filename = 'icon-' . $filename . '.svg'; + echo plugins_url( 'assets/img/' . $filename, $this->plugin_file_path ); + } + /** * Add details link to AWS addon page * diff --git a/classes/aws-plugin-base.php b/classes/aws-plugin-base.php index 2acb9b9..23c47dd 100644 --- a/classes/aws-plugin-base.php +++ b/classes/aws-plugin-base.php @@ -13,6 +13,11 @@ class AWS_Plugin_Base { */ private $settings; + /** + * @var array + */ + private $defined_settings; + function __construct( $plugin_file_path ) { $this->plugin_file_path = $plugin_file_path; $this->plugin_dir_path = rtrim( plugin_dir_path( $plugin_file_path ), '/' ); @@ -74,12 +79,88 @@ public function get_plugin_dir_path() { */ function get_settings( $force = false ) { if ( is_null( $this->settings ) || $force ) { - $this->settings = get_site_option( static::SETTINGS_KEY ); + $this->settings = $this->filter_settings( get_site_option( static::SETTINGS_KEY ) ); } return $this->settings; } + /** + * Get all settings that have been defined via constant for the plugin + * + * @param bool $force + * + * @return array + */ + function get_defined_settings( $force = false ) { + if ( is_null( $this->defined_settings ) || $force ) { + $this->defined_settings = array(); + $unserialized = array(); + $class = get_class( $this ); + + if ( defined( "$class::SETTINGS_CONSTANT" ) ) { + $constant = static::SETTINGS_CONSTANT; + if ( defined( $constant ) ) { + $unserialized = maybe_unserialize( constant( $constant ) ); + } + } + + $unserialized = is_array( $unserialized ) ? $unserialized : array(); + + foreach ( $unserialized as $key => $value ) { + if ( ! in_array( $key, $this->get_settings_whitelist() ) ) { + continue; + } + + if ( is_bool( $value ) || is_null( $value ) ) { + $value = (int) $value; + } + + if ( is_numeric( $value ) ) { + $value = strval( $value ); + } else { + $value = sanitize_text_field( $value ); + } + + $this->defined_settings[ $key ] = $value; + } + } + + return $this->defined_settings; + } + + /** + * Filter the plugin settings array + * + * @param array $settings + * + * @return array $settings + */ + function filter_settings( $settings ) { + $defined_settings = $this->get_defined_settings(); + + // Bail early if there are no defined settings + if ( empty( $defined_settings ) ) { + return $settings; + } + + foreach ( $defined_settings as $key => $value ) { + $settings[ $key ] = $value; + } + + return $settings; + } + + /** + * Get the whitelisted settings for the plugin. + * Meant to be overridden in child classes. + * + * @return array + */ + function get_settings_whitelist() { + return array(); + } + /** * Get a specific setting * @@ -92,10 +173,27 @@ function get_setting( $key, $default = '' ) { $this->get_settings(); if ( isset( $this->settings[ $key ] ) ) { - return $this->settings[ $key ]; + $setting = $this->settings[ $key ]; + } else { + $setting = $default; } - return $default; + return apply_filters( 'aws_get_setting', $setting, $key ); + } + + /** + * Gets a single setting that has been defined in the plugin settings constant + * + * @param string $key + * @param mixed $default + * + * @return mixed + */ + function get_defined_setting( $key, $default = '' ) { + $defined_settings = $this->get_defined_settings(); + $setting = isset( $defined_settings[ $key ] ) ? $defined_settings[ $key ] : $default; + + return $setting; } /** @@ -111,6 +209,21 @@ function remove_setting( $key ) { } } + /** + * Removes a defined setting from the defined_settings array. + * + * Does not unset the actual constant. + * + * @param $key + */ + function remove_defined_setting( $key ) { + $this->get_defined_settings(); + + if ( isset( $this->defined_settings[ $key ] ) ) { + unset( $this->defined_settings[ $key ] ); + } + } + /** * Render a view template file * @@ -188,4 +301,22 @@ function plugin_actions_settings_link( $links, $file ) { return $links; } + + /** + * Get the version used for script enqueuing + * + * @return mixed + */ + public function get_asset_version() { + return defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? time() : $this->plugin_version; + } + + /** + * Get the filename suffix used for script enqueuing + * + * @return mixed + */ + public function get_asset_suffix() { + return defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min'; + } } \ No newline at end of file diff --git a/classes/wp-aws-compatibility-check.php b/classes/wp-aws-compatibility-check.php index 61ab3cd..15ec5d7 100644 --- a/classes/wp-aws-compatibility-check.php +++ b/classes/wp-aws-compatibility-check.php @@ -30,7 +30,7 @@ class WP_AWS_Compatibility_Check { protected $plugin_slug; /** - * @var string The name of the plugin, e.g. WP Offload S3 - Pro Upgrade + * @var string The name of the plugin, e.g. WP Offload S3 */ protected $plugin_name; @@ -123,6 +123,19 @@ function is_compatible() { return $compatible; } + /** + * Is a plugin active + * + * @param string $plugin_base + * + * @return bool + */ + function is_plugin_active( $plugin_base ) { + include_once( ABSPATH . 'wp-admin/includes/plugin.php' ); + + return is_plugin_active( $plugin_base ); + } + /** * Get the basename for the plugin * diff --git a/classes/wp-aws-uninstall.php b/classes/wp-aws-uninstall.php index b24a097..e9414a3 100644 --- a/classes/wp-aws-uninstall.php +++ b/classes/wp-aws-uninstall.php @@ -53,6 +53,11 @@ class WP_AWS_Uninstall { */ protected $transients; + /** + * @var array|string User meta to be deleted + */ + protected $usermeta; + /** * @var array Blog(s) in site */ @@ -65,17 +70,20 @@ class WP_AWS_Uninstall { * @param array|string $postmeta * @param array|string $crons * @param array|string $transients + * @param array|string $usermeta */ public function __construct( $options = array(), $postmeta = array(), $crons = array(), - $transients = array() + $transients = array(), + $usermeta = array() ) { $this->options = $this->maybe_convert_to_array( $options ); $this->postmeta = $this->maybe_convert_to_array( $postmeta ); $this->crons = $this->maybe_convert_to_array( $crons ); $this->transients = $this->maybe_convert_to_array( $transients ); + $this->usermeta = $this->maybe_convert_to_array( $usermeta ); $this->set_blog_ids(); @@ -83,6 +91,7 @@ public function __construct( $this->delete_postmeta(); $this->clear_crons(); $this->delete_transients(); + $this->delete_usermeta(); } /** @@ -201,17 +210,52 @@ public function delete_transients() { $subsite_transients = $this->maybe_convert_to_array( $this->transients['subsite'] ); foreach ( $this->blog_ids as $blog_id ) { - if ( is_multisite() && ! $this->is_current_blog( $blog_id ) ) { + if ( is_multisite() && $blog_id !== get_current_blog_id() ) { switch_to_blog( $blog_id ); } foreach ( $subsite_transients as $transient ) { delete_transient( $transient ); } + + if ( is_multisite() ) { + restore_current_blog(); + } } + } + } + + /** + * Delete user meta. + */ + public function delete_usermeta() { + global $wpdb; + + if ( empty( $this->usermeta ) ) { + return; + } + + // Loop through our user meta keys to create our WHERE clauses. + $where_array = array(); + foreach ( $this->usermeta as $usermeta ) { + $where_array[] = $wpdb->prepare( "meta_key = '%s'", $usermeta ); + } + + // Merge all WHERE clauses into an OR comparison. + $where_sql = implode( ' OR ', $where_array ); + + // Get any user ids that have keys to be deleted. + $user_ids = $wpdb->get_col( "SELECT DISTINCT user_id FROM {$wpdb->usermeta} WHERE {$where_sql}" ); + + // Bail if no user has keys to be deleted. + if ( empty( $user_ids ) ) { + return; + } - if ( is_multisite() && ! $this->is_current_blog( $blog_id ) ) { - restore_current_blog(); + // Loop through the list of users and delete our user meta. + foreach ( $user_ids as $user_id ) { + foreach ( $this->usermeta as $usermeta ) { + delete_user_meta( $user_id, $usermeta ); } } } diff --git a/languages/amazon-web-services-en.pot b/languages/amazon-web-services-en.pot index 2739740..4fa8b16 100644 --- a/languages/amazon-web-services-en.pot +++ b/languages/amazon-web-services-en.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: amazon-web-services\n" "Report-Msgid-Bugs-To: nom@deliciousbrains.com\n" -"POT-Creation-Date: 2015-11-02 14:25+0000\n" +"POT-Creation-Date: 2016-03-07 16:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,105 +17,113 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#: classes/amazon-web-services.php:50 -#: classes/amazon-web-services.php:196 +#: classes/amazon-web-services.php:51 +#: classes/amazon-web-services.php:195 msgid "Amazon Web Services" msgstr "" -#: classes/amazon-web-services.php:51 +#: classes/amazon-web-services.php:52 msgid "AWS" msgstr "" -#: classes/amazon-web-services.php:74 +#: classes/amazon-web-services.php:75 msgid "Addons" msgstr "" -#: classes/amazon-web-services.php:82 -#: classes/amazon-web-services.php:337 +#: classes/amazon-web-services.php:83 +#: classes/amazon-web-services.php:349 #: view/settings.php:14 msgid "Access Keys" msgstr "" -#: classes/amazon-web-services.php:154 +#: classes/amazon-web-services.php:153 msgid "Cheatin' eh?" msgstr "" -#: classes/amazon-web-services.php:205 +#: classes/amazon-web-services.php:204 msgid "Amazon Web Services: Addons" msgstr "" -#: classes/amazon-web-services.php:285 +#: classes/amazon-web-services.php:297 #, php-format msgid "" "You must first set your AWS access keys to use this addon." msgstr "" -#: classes/amazon-web-services.php:350 -msgid "WP Offload S3" +#: classes/amazon-web-services.php:362 +msgid "WP Offload S3 Lite" msgstr "" -#: classes/amazon-web-services.php:355 -msgid "Pro Upgrade" +#: classes/amazon-web-services.php:367 +msgid "WP Offload S3" msgstr "" -#: classes/amazon-web-services.php:359 +#: classes/amazon-web-services.php:371 msgid "Assets" msgstr "" -#: classes/amazon-web-services.php:361 -#: classes/amazon-web-services.php:366 -#: classes/amazon-web-services.php:372 -#: classes/amazon-web-services.php:378 -#: classes/amazon-web-services.php:384 -#: classes/amazon-web-services.php:390 -msgid "Addon" +#: classes/amazon-web-services.php:373 +msgid "Feature" msgstr "" -#: classes/amazon-web-services.php:364 +#: classes/amazon-web-services.php:377 msgid "WooCommerce" msgstr "" -#: classes/amazon-web-services.php:370 +#: classes/amazon-web-services.php:379 +#: classes/amazon-web-services.php:386 +#: classes/amazon-web-services.php:393 +#: classes/amazon-web-services.php:400 +#: classes/amazon-web-services.php:407 +#: classes/amazon-web-services.php:414 +msgid "Integration" +msgstr "" + +#: classes/amazon-web-services.php:384 msgid "Easy Digital Downloads" msgstr "" -#: classes/amazon-web-services.php:376 +#: classes/amazon-web-services.php:391 msgid "WPML" msgstr "" -#: classes/amazon-web-services.php:382 +#: classes/amazon-web-services.php:398 msgid "Meta Slider" msgstr "" -#: classes/amazon-web-services.php:388 +#: classes/amazon-web-services.php:405 msgid "Enable Media Replace" msgstr "" -#: classes/amazon-web-services.php:434 +#: classes/amazon-web-services.php:412 +msgid "ACF Image Crop" +msgstr "" + +#: classes/amazon-web-services.php:461 msgctxt "Plugin already installed and activated" msgid "Installed & Activated" msgstr "" -#: classes/amazon-web-services.php:436 +#: classes/amazon-web-services.php:463 msgctxt "Plugin already installed" msgid "Installed" msgstr "" -#: classes/amazon-web-services.php:437 +#: classes/amazon-web-services.php:464 msgctxt "Activate plugin now" msgid "Activate Now" msgstr "" -#: classes/amazon-web-services.php:440 +#: classes/amazon-web-services.php:467 msgctxt "Install plugin now" msgid "Install Now" msgstr "" -#: classes/amazon-web-services.php:463 +#: classes/amazon-web-services.php:503 msgid "Visit Site" msgstr "" -#: classes/amazon-web-services.php:466 +#: classes/amazon-web-services.php:506 msgctxt "View plugin details" msgid "View Details" msgstr "" @@ -142,83 +150,83 @@ msgid "" "7.16.2+ compiled with OpenSSL and zlib. Your server currently has" msgstr "" -#: classes/aws-plugin-base.php:166 +#: classes/aws-plugin-base.php:279 msgid "Settings" msgstr "" -#: classes/wp-aws-compatibility-check.php:310 +#: classes/wp-aws-compatibility-check.php:323 msgid "deactivate" msgstr "" -#: classes/wp-aws-compatibility-check.php:311 +#: classes/wp-aws-compatibility-check.php:324 #, php-format msgid "You can %s the %s plugin to get rid of this notice." msgstr "" -#: classes/wp-aws-compatibility-check.php:314 +#: classes/wp-aws-compatibility-check.php:327 #, php-format msgid "%s has been disabled as it requires the %s plugin." msgstr "" -#: classes/wp-aws-compatibility-check.php:318 +#: classes/wp-aws-compatibility-check.php:331 msgid "which is currently disabled." msgstr "" -#: classes/wp-aws-compatibility-check.php:320 +#: classes/wp-aws-compatibility-check.php:333 msgid "It appears to be installed already." msgstr "" -#: classes/wp-aws-compatibility-check.php:322 +#: classes/wp-aws-compatibility-check.php:335 msgctxt "Activate plugin" msgid "Activate it now." msgstr "" -#: classes/wp-aws-compatibility-check.php:329 +#: classes/wp-aws-compatibility-check.php:342 #, php-format msgid "Install and activate it." msgstr "" -#: classes/wp-aws-compatibility-check.php:340 +#: classes/wp-aws-compatibility-check.php:353 #, php-format msgid "" "%s has been disabled as it requires version %s or later of the %s plugin." msgstr "" -#: classes/wp-aws-compatibility-check.php:343 +#: classes/wp-aws-compatibility-check.php:356 #, php-format msgid "You currently have version %s installed." msgstr "" -#: classes/wp-aws-compatibility-check.php:350 -#: classes/wp-aws-compatibility-check.php:388 +#: classes/wp-aws-compatibility-check.php:363 +#: classes/wp-aws-compatibility-check.php:401 #, php-format msgid "A valid license for %s is required to update." msgstr "" -#: classes/wp-aws-compatibility-check.php:358 +#: classes/wp-aws-compatibility-check.php:371 msgid "Update to the latest version" msgstr "" -#: classes/wp-aws-compatibility-check.php:370 +#: classes/wp-aws-compatibility-check.php:383 #, php-format msgid "" "%1$s has been disabled because it is not a supported addon of the %2$s " "plugin." msgstr "" -#: classes/wp-aws-compatibility-check.php:379 +#: classes/wp-aws-compatibility-check.php:392 #, php-format msgid "" "%1$s has been disabled because it will not work with the version of the %2$s " "plugin installed. %1$s %3$s or later is required." msgstr "" -#: classes/wp-aws-compatibility-check.php:382 +#: classes/wp-aws-compatibility-check.php:395 #, php-format msgid "Update %s to the latest version" msgstr "" -#: classes/wp-aws-compatibility-check.php:451 +#: classes/wp-aws-compatibility-check.php:464 #, php-format msgid "The %s plugin has been deactivated." msgstr "" diff --git a/languages/amazon-web-services-pt-br.mo b/languages/amazon-web-services-pt-br.mo deleted file mode 100644 index 8a0ba743caa87a72dfb6e4460a12da1fdfdcf2e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3634 zcma)9O^h7H6)u94kj)QZ0^|?nVPvr7o%Ze;Y-iS9XR~X=#x}e0tZg6%RMTBEQ@E$9 zUDZA7v6NesTcSufM?jW?EFmF*5JJcjQZ&~fgmTISkaCDPp&*2O z?&^B=e!lm<_D4H+{7vBZbNu}Re_!woe*e5<3-83``?&uR@I&A|z)yhR0sas86W~qY zeZYIaCBzSayMYoo2Ydy11^9j7<1qFz@Yle<13w1x^FQt=_x%;P6ZbCx?*hI7TmZfc z{4?+-knR8J+d`ZKz6ksf_%ZMy;G1yjm%tBzyMdnp?+4!h-Ew^&@N?X+0I@|J!66R< ze*fIkHO4#E8%_&o4Gz#G7afv;eZ+oM7`}-yEG2j$G zTs+?ri*c;Hr;}<(E6YvX=6WD=Z4DiF&N{J}B-VJb*q4{_taX5-NoXmxMRLMflh+I9 zRhwGM4K%EYrJjNb^BAe#F|pF2p)Ckj9)0BS-0Y$GoO*JgV23KB<9kWQu`NtaLzPd5 zjYg@2a!W@f^_=P)-L>2ATJXASsK}1&mkUvKLS;Q6C-a_iWNgmcRH9+b7LGQuMr=(- zccZMAg)pR3WG|41~d9!OFPIY{N zaHQh%oEj*ZlBAAx{fHeDE5_$CP3dX7Ay!R{*Kknb;bTvFYAaUC)2b0K5mcr#ua5JJMn+=1pj!o?bhY;H&c<~JZJC&ufasWO#Us|pMk4pEj zxk@I=#F>T%MK2FiNTVk#~5r0IfpEd?iX+M;w5k8&`v z>%}?_Ecy1RY5Qy*q$@9K*48I()+AA~YzCD?VY}_XS&icUe><(^lVHKcLZf`N_S70Z z5gmvQ>+CbdLtRh?&TL4xi3d3RWgV zN>oQP2evcBy%L^JbXP=W*KhVDsN6vmII%B{?1mQTmp#MtggdZ$b{oCtbw5KQTuB3F zQVRb(b)4;g-5DW636Mh1Gc67D16|6ZU^P_a*5$HBLWZ%|*ih|8P0}5URa&aHR*48U zCaP(RTo@aU4vVO#lWvF-gz<_!YpabjYM|Mx#xi=pNpmx^Pc&u@HRcY{%;DzaziQ4L z+&6>Y)ajMe#~bI$2%0n-%}gy}@`4SG^$xWR-#KQ!rZTjx`2Y2jqrIDt{+n`F>)xb;Wp=D8Vgd32AV1)AMEKlM!GNo5p9 zt94C!GPU^{*zNbvM6*+C&c2}Hys?sOIl0YbpJKV0hmtN+g0u$>z_7wN^4>OuV7UR+ z2+A>#qwAw<76Mg@Pc1S~A2j=x_SDbE1w@E-Co@BVi5haE5}8;JZQ?yaoS;p3bc;A$ zED$`#QE8Q3PGOV7XNi)fMpYt(g~hIQ_!2vd^?|xfyqo7lF}mus#TE^*(m1Ei5Bg$s zbyKUbz;i7G4`Xn%^gM`_W>a2u3k~{GJbEk9-6}oXCd3zQpX(fxlv9B8IJk~n!2V`R zqDfcF61)J9P=UHcMeS=}lT`HL7(+ZEn_GH$Px}-3@ki8&fm6nZ_7+jU<0B@g0qrxJ$!rRa` zd{nX2ZFUTfXR+hX!8E{E4f?fyb#*&F*Zyz?6XipjB^K#h#RtW>uF-fqQLSc(eN4-c zkz19lu6?a!ib@@8f$Sk!3F6NcikBBM#ivxRguq-2N|yFG$aA6P5^xlZ(tV{d6D9;L zXi>?BswK8Eg83546}l&6Jk+6*w#s%TN#HgyOG^lnplsnHd62*v>rOJ?B?p>?e%dGI^{#AD!B_xf!y&|3L>BMObG637Bij+ z+F;^qq+FI_$Mu_h0|qP)MI3

+ + +

diff --git a/view/settings.php b/view/settings.php index 26a98d5..31cb519 100644 --- a/view/settings.php +++ b/view/settings.php @@ -19,7 +19,7 @@

- are_key_constants_set() && ! $use_ec2_iam_roles ) : ?> + are_prefixed_key_constants_set() || $this->are_key_constants_set() ) ) : ?>

@@ -31,8 +31,8 @@

-
define( 'AWS_ACCESS_KEY_ID', '********************' );
-define( 'AWS_SECRET_ACCESS_KEY', '****************************************' );
+
define( 'DBI_AWS_ACCESS_KEY_ID', '********************' );
+define( 'DBI_AWS_SECRET_ACCESS_KEY', '****************************************' );

click here to reveal a form.', 'amazon-web-services' ); ?>