Version Description
= 2.0 = This is a major upgrade that introduces support for DigitalOcean Spaces, renames the plugin to WP Offload Media Lite, and coincidentally upgrades some of its database settings. You may not be able to downgrade to WP Offload S3 Lite 1.x after upgrading to WP Offload Media Lite 2.0+.
= 1.1 = This is a major change, which ensures S3 URLs are no longer saved in post content. Instead, local URLs are filtered on page generation and replaced with the S3 version. If you depend on the S3 URLs being stored in post content you will need to make modifications to support this version.
= 0.6 = This version requires PHP 5.3.3+ and the Amazon Web Services plugin
Download this release
Release Info
Developer | deliciousbrains |
Plugin | WP Offload S3 Lite |
Version | 2.1.1 |
Comparing to | |
See all releases |
Code changes from version 2.1 to 2.1.1
- README.md +18 -7
- classes/amazon-s3-and-cloudfront.php +37 -25
- classes/as3cf-filter.php +19 -11
- classes/as3cf-plugin-compatibility.php +59 -7
- classes/filters/as3cf-local-to-s3.php +48 -29
- classes/providers/aws-provider.php +13 -0
- classes/providers/provider.php +55 -2
- languages/amazon-s3-and-cloudfront-en.pot +116 -96
- readme.txt +14 -3
- view/notice.php +18 -18
- view/provider-select.php +21 -2
- wordpress-s3.php +2 -2
README.md
CHANGED
@@ -1,10 +1,10 @@
|
|
1 |
-
# WP Offload Media Lite for Amazon S3
|
2 |
**Contributors:** bradt, deliciousbrains, ianmjones
|
3 |
**Tags:** uploads, amazon, s3, amazon s3, digitalocean, digitalocean spaces, google cloud storage, gcs, mirror, admin, media, cdn, cloudfront
|
4 |
**Requires at least:** 4.7
|
5 |
-
**Tested up to:** 5.
|
6 |
**Requires PHP:** 5.5
|
7 |
-
**Stable tag:** 2.
|
8 |
**License:** GPLv3
|
9 |
|
10 |
Copies files to Amazon S3, DigitalOcean Spaces or Google Cloud Storage as they are uploaded to the Media Library. Optionally configure Amazon CloudFront or another CDN for faster delivery.
|
@@ -61,16 +61,16 @@ If you upgrade to the pro version of [WP Offload Media](https://deliciousbrains.
|
|
61 |
## Screenshots ##
|
62 |
|
63 |
### 1. Select Cloud Storage Provider ###
|
64 |
-
![Select Cloud Storage Provider](https://raw.githubusercontent.com/deliciousbrains/wp-wp-offload-media-lite-for-amazon-s3-and-
|
65 |
|
66 |
### 2. Select or Create Bucket ###
|
67 |
-
![Select or Create Bucket](https://raw.githubusercontent.com/deliciousbrains/wp-wp-offload-media-lite-for-amazon-s3-and-
|
68 |
|
69 |
### 3. Settings Screen ###
|
70 |
-
![Settings Screen](https://raw.githubusercontent.com/deliciousbrains/wp-wp-offload-media-lite-for-amazon-s3-and-
|
71 |
|
72 |
### 4. Custom Domain Used With CDN ###
|
73 |
-
![Custom Domain Used With CDN](https://raw.githubusercontent.com/deliciousbrains/wp-wp-offload-media-lite-for-amazon-s3-and-
|
74 |
|
75 |
|
76 |
## Upgrade Notice ##
|
@@ -86,6 +86,17 @@ This version requires PHP 5.3.3+ and the Amazon Web Services plugin
|
|
86 |
|
87 |
## Changelog ##
|
88 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
89 |
### WP Offload Media Lite 2.1 - 2019-03-05 ###
|
90 |
* [Release Summary Blog Post](https://deliciousbrains.com/wp-offload-media-2-1-released/?utm_campaign=changelogs&utm_source=wordpress.org&utm_medium=free%2Bplugin%2Blisting)
|
91 |
* New: Google Cloud Storage is now supported
|
1 |
+
# WP Offload Media Lite for Amazon S3, DigitalOcean Spaces, and Google Cloud Storage #
|
2 |
**Contributors:** bradt, deliciousbrains, ianmjones
|
3 |
**Tags:** uploads, amazon, s3, amazon s3, digitalocean, digitalocean spaces, google cloud storage, gcs, mirror, admin, media, cdn, cloudfront
|
4 |
**Requires at least:** 4.7
|
5 |
+
**Tested up to:** 5.2
|
6 |
**Requires PHP:** 5.5
|
7 |
+
**Stable tag:** 2.2-dev
|
8 |
**License:** GPLv3
|
9 |
|
10 |
Copies files to Amazon S3, DigitalOcean Spaces or Google Cloud Storage as they are uploaded to the Media Library. Optionally configure Amazon CloudFront or another CDN for faster delivery.
|
61 |
## Screenshots ##
|
62 |
|
63 |
### 1. Select Cloud Storage Provider ###
|
64 |
+
![Select Cloud Storage Provider](https://raw.githubusercontent.com/deliciousbrains/wp-wp-offload-media-lite-for-amazon-s3,-digitalocean-spaces,-and-google-cloud-storage/assets/screenshot-1.png)
|
65 |
|
66 |
### 2. Select or Create Bucket ###
|
67 |
+
![Select or Create Bucket](https://raw.githubusercontent.com/deliciousbrains/wp-wp-offload-media-lite-for-amazon-s3,-digitalocean-spaces,-and-google-cloud-storage/assets/screenshot-2.png)
|
68 |
|
69 |
### 3. Settings Screen ###
|
70 |
+
![Settings Screen](https://raw.githubusercontent.com/deliciousbrains/wp-wp-offload-media-lite-for-amazon-s3,-digitalocean-spaces,-and-google-cloud-storage/assets/screenshot-3.png)
|
71 |
|
72 |
### 4. Custom Domain Used With CDN ###
|
73 |
+
![Custom Domain Used With CDN](https://raw.githubusercontent.com/deliciousbrains/wp-wp-offload-media-lite-for-amazon-s3,-digitalocean-spaces,-and-google-cloud-storage/assets/screenshot-4.png)
|
74 |
|
75 |
|
76 |
## Upgrade Notice ##
|
86 |
|
87 |
## Changelog ##
|
88 |
|
89 |
+
### WP Offload Media Lite 2.1.1 - 2019-04-29 ###
|
90 |
+
* New: Multisite domain mapping via WordPress MU Domain Mapping plugin is now supported
|
91 |
+
* Improvement: Local to Provider content filtering performance improvements
|
92 |
+
* Improvement: Warning notice shown when changing storage provider and media already offloaded
|
93 |
+
* Bug fix: Media title not retaining characters stripped from filename
|
94 |
+
* Bug fix: Warning: is_readable(): open_basedir restriction in effect. File(~/.aws/config) is not within the allowed path(s)
|
95 |
+
* Bug fix: Fatal error when GCS Key File not accessible
|
96 |
+
* Bug fix: Non-image offloads on subsites with 4 digit IDs get duplicate subsite ID in bucket path
|
97 |
+
* Bug fix: No srcset added to img tag if filename includes non-ASCII characters
|
98 |
+
* Bug fix: Full size image URL saved to img tag src attribute when thumbnail picked if filename includes non-ASCII characters
|
99 |
+
|
100 |
### WP Offload Media Lite 2.1 - 2019-03-05 ###
|
101 |
* [Release Summary Blog Post](https://deliciousbrains.com/wp-offload-media-2-1-released/?utm_campaign=changelogs&utm_source=wordpress.org&utm_medium=free%2Bplugin%2Blisting)
|
102 |
* New: Google Cloud Storage is now supported
|
classes/amazon-s3-and-cloudfront.php
CHANGED
@@ -188,8 +188,7 @@ class Amazon_S3_And_CloudFront extends AS3CF_Plugin_Base {
|
|
188 |
add_filter( 'wp_video_shortcode', array( $this, 'wp_media_shortcode' ), 100, 5 );
|
189 |
|
190 |
// Communication with provider, plugin needs to be setup
|
191 |
-
add_filter( '
|
192 |
-
add_filter( 'wp_handle_sideload_prefilter', array( $this, 'wp_handle_upload_prefilter' ), 1 );
|
193 |
add_filter( 'wp_update_attachment_metadata', array( $this, 'wp_update_attachment_metadata' ), 110, 2 );
|
194 |
add_filter( 'delete_attachment', array( $this, 'delete_attachment' ), 20 );
|
195 |
add_filter( 'update_attached_file', array( $this, 'update_attached_file' ), 100, 2 );
|
@@ -1431,17 +1430,17 @@ class Amazon_S3_And_CloudFront extends AS3CF_Plugin_Base {
|
|
1431 |
*
|
1432 |
* @param string $url
|
1433 |
*
|
1434 |
-
* @return null|string
|
1435 |
*/
|
1436 |
function get_folder_time_from_url( $url ) {
|
1437 |
if ( ! is_string( $url ) ) {
|
1438 |
return null;
|
1439 |
}
|
1440 |
|
1441 |
-
preg_match( '@[0-9]{4}/[0-9]{2}
|
1442 |
|
1443 |
if ( isset( $matches[0] ) ) {
|
1444 |
-
return $matches[0];
|
1445 |
}
|
1446 |
|
1447 |
return null;
|
@@ -1490,19 +1489,23 @@ class Amazon_S3_And_CloudFront extends AS3CF_Plugin_Base {
|
|
1490 |
}
|
1491 |
|
1492 |
/**
|
1493 |
-
*
|
|
|
|
|
|
|
|
|
1494 |
*
|
1495 |
-
* @
|
|
|
1496 |
*
|
1497 |
-
* @return array $file The altered file array with AWS unique filename.
|
1498 |
*/
|
1499 |
-
public function
|
1500 |
// Get Post ID if uploaded in post screen.
|
1501 |
$post_id = filter_input( INPUT_POST, 'post_id', FILTER_VALIDATE_INT );
|
1502 |
|
1503 |
-
$
|
1504 |
|
1505 |
-
return $
|
1506 |
}
|
1507 |
|
1508 |
/**
|
@@ -1510,22 +1513,20 @@ class Amazon_S3_And_CloudFront extends AS3CF_Plugin_Base {
|
|
1510 |
* This only applies when the remove local file option is enabled.
|
1511 |
*
|
1512 |
* @param string $filename Unique file name.
|
|
|
|
|
1513 |
* @param int $post_id Attachment's parent Post ID.
|
1514 |
*
|
1515 |
* @return string
|
1516 |
*/
|
1517 |
-
public function filter_unique_filename( $filename, $post_id = null ) {
|
1518 |
if ( ! $this->get_setting( 'copy-to-s3' ) || ! $this->is_plugin_setup( true ) ) {
|
1519 |
return $filename;
|
1520 |
}
|
1521 |
|
1522 |
// sanitize the file name before we begin processing
|
1523 |
$filename = sanitize_file_name( $filename );
|
1524 |
-
|
1525 |
-
// Get base filename without extension.
|
1526 |
-
$ext = pathinfo( $filename, PATHINFO_EXTENSION );
|
1527 |
-
$ext = $ext ? ".$ext" : '';
|
1528 |
-
$name = wp_basename( $filename, $ext );
|
1529 |
|
1530 |
// Edge case: if file is named '.ext', treat as an empty name.
|
1531 |
if ( $name === $ext ) {
|
@@ -4276,15 +4277,18 @@ class Amazon_S3_And_CloudFront extends AS3CF_Plugin_Base {
|
|
4276 |
*
|
4277 |
* @param string $prefix
|
4278 |
* @param null|bool $uploaded_to_provider
|
4279 |
-
*
|
4280 |
-
*
|
4281 |
-
*
|
|
|
4282 |
*
|
4283 |
* @return int
|
4284 |
*/
|
4285 |
-
public function count_attachments( $prefix, $uploaded_to_provider = null ) {
|
4286 |
global $wpdb;
|
4287 |
|
|
|
|
|
4288 |
$sql = "SELECT COUNT(DISTINCT p.ID)
|
4289 |
FROM `{$prefix}posts` p";
|
4290 |
|
@@ -4297,11 +4301,19 @@ class Amazon_S3_And_CloudFront extends AS3CF_Plugin_Base {
|
|
4297 |
|
4298 |
$operator = $uploaded_to_provider ? 'not ' : '';
|
4299 |
$where .= " AND pm.`post_id` is {$operator}null";
|
|
|
|
|
4300 |
}
|
4301 |
|
4302 |
$sql .= ' ' . $where;
|
4303 |
|
4304 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
4305 |
}
|
4306 |
|
4307 |
/**
|
@@ -4789,9 +4801,9 @@ class Amazon_S3_And_CloudFront extends AS3CF_Plugin_Base {
|
|
4789 |
$siteurl = trailingslashit( get_option( 'siteurl' ) );
|
4790 |
|
4791 |
if ( is_multisite() && ! $this->is_current_blog( get_current_blog_id() ) && 0 !== strpos( $url, $siteurl ) ) {
|
4792 |
-
// Replace
|
4793 |
-
$
|
4794 |
-
$url
|
4795 |
}
|
4796 |
|
4797 |
return $url;
|
188 |
add_filter( 'wp_video_shortcode', array( $this, 'wp_media_shortcode' ), 100, 5 );
|
189 |
|
190 |
// Communication with provider, plugin needs to be setup
|
191 |
+
add_filter( 'wp_unique_filename', array( $this, 'wp_unique_filename' ), 10, 3 );
|
|
|
192 |
add_filter( 'wp_update_attachment_metadata', array( $this, 'wp_update_attachment_metadata' ), 110, 2 );
|
193 |
add_filter( 'delete_attachment', array( $this, 'delete_attachment' ), 20 );
|
194 |
add_filter( 'update_attached_file', array( $this, 'update_attached_file' ), 100, 2 );
|
1430 |
*
|
1431 |
* @param string $url
|
1432 |
*
|
1433 |
+
* @return null|string YYYY/MM format.
|
1434 |
*/
|
1435 |
function get_folder_time_from_url( $url ) {
|
1436 |
if ( ! is_string( $url ) ) {
|
1437 |
return null;
|
1438 |
}
|
1439 |
|
1440 |
+
preg_match( '@[0-9]{4}/[0-9]{2}/@', $url, $matches );
|
1441 |
|
1442 |
if ( isset( $matches[0] ) ) {
|
1443 |
+
return untrailingslashit( $matches[0] );
|
1444 |
}
|
1445 |
|
1446 |
return null;
|
1489 |
}
|
1490 |
|
1491 |
/**
|
1492 |
+
* Filters the result when generating a unique file name.
|
1493 |
+
*
|
1494 |
+
* @param string $filename Unique file name.
|
1495 |
+
* @param string $ext File extension, eg. ".png".
|
1496 |
+
* @param string $dir Directory path.
|
1497 |
*
|
1498 |
+
* @return string
|
1499 |
+
* @since 4.5.0
|
1500 |
*
|
|
|
1501 |
*/
|
1502 |
+
public function wp_unique_filename( $filename, $ext, $dir ) {
|
1503 |
// Get Post ID if uploaded in post screen.
|
1504 |
$post_id = filter_input( INPUT_POST, 'post_id', FILTER_VALIDATE_INT );
|
1505 |
|
1506 |
+
$filename = $this->filter_unique_filename( $filename, $ext, $dir, $post_id );
|
1507 |
|
1508 |
+
return $filename;
|
1509 |
}
|
1510 |
|
1511 |
/**
|
1513 |
* This only applies when the remove local file option is enabled.
|
1514 |
*
|
1515 |
* @param string $filename Unique file name.
|
1516 |
+
* @param string $ext File extension, eg. ".png".
|
1517 |
+
* @param string $dir Directory path.
|
1518 |
* @param int $post_id Attachment's parent Post ID.
|
1519 |
*
|
1520 |
* @return string
|
1521 |
*/
|
1522 |
+
public function filter_unique_filename( $filename, $ext, $dir, $post_id = null ) {
|
1523 |
if ( ! $this->get_setting( 'copy-to-s3' ) || ! $this->is_plugin_setup( true ) ) {
|
1524 |
return $filename;
|
1525 |
}
|
1526 |
|
1527 |
// sanitize the file name before we begin processing
|
1528 |
$filename = sanitize_file_name( $filename );
|
1529 |
+
$name = wp_basename( $filename, $ext );
|
|
|
|
|
|
|
|
|
1530 |
|
1531 |
// Edge case: if file is named '.ext', treat as an empty name.
|
1532 |
if ( $name === $ext ) {
|
4277 |
*
|
4278 |
* @param string $prefix
|
4279 |
* @param null|bool $uploaded_to_provider
|
4280 |
+
* null - All attachments
|
4281 |
+
* true - Attachments only uploaded to provider
|
4282 |
+
* false - Attachments not uploaded to provider
|
4283 |
+
* @param bool $skip_transient Whether to force database query and skip transient, default false
|
4284 |
*
|
4285 |
* @return int
|
4286 |
*/
|
4287 |
+
public function count_attachments( $prefix, $uploaded_to_provider = null, $skip_transient = false ) {
|
4288 |
global $wpdb;
|
4289 |
|
4290 |
+
$transient_key = 'as3cf_' . $prefix . '_media_count';
|
4291 |
+
|
4292 |
$sql = "SELECT COUNT(DISTINCT p.ID)
|
4293 |
FROM `{$prefix}posts` p";
|
4294 |
|
4301 |
|
4302 |
$operator = $uploaded_to_provider ? 'not ' : '';
|
4303 |
$where .= " AND pm.`post_id` is {$operator}null";
|
4304 |
+
|
4305 |
+
$transient_key .= ( $uploaded_to_provider ) ? '_offloaded' : 'not_offloaded';
|
4306 |
}
|
4307 |
|
4308 |
$sql .= ' ' . $where;
|
4309 |
|
4310 |
+
if ( true === $skip_transient || false === ( $count = get_site_transient( $transient_key ) ) ) {
|
4311 |
+
$count = (int) $wpdb->get_var( $sql );
|
4312 |
+
|
4313 |
+
set_site_transient( $transient_key, $count, 2 * MINUTE_IN_SECONDS );
|
4314 |
+
}
|
4315 |
+
|
4316 |
+
return $count;
|
4317 |
}
|
4318 |
|
4319 |
/**
|
4801 |
$siteurl = trailingslashit( get_option( 'siteurl' ) );
|
4802 |
|
4803 |
if ( is_multisite() && ! $this->is_current_blog( get_current_blog_id() ) && 0 !== strpos( $url, $siteurl ) ) {
|
4804 |
+
// Replace original URL with subsite's current URL.
|
4805 |
+
$orig_siteurl = trailingslashit( apply_filters( 'as3cf_get_orig_siteurl', network_site_url() ) );
|
4806 |
+
$url = str_replace( $orig_siteurl, $siteurl, $url );
|
4807 |
}
|
4808 |
|
4809 |
return $url;
|
classes/as3cf-filter.php
CHANGED
@@ -421,7 +421,15 @@ abstract class AS3CF_Filter {
|
|
421 |
$attachment_id = null;
|
422 |
$bare_url = AS3CF_Utils::reduce_url( $url );
|
423 |
|
424 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
425 |
$attachment_id = $cache[ $bare_url ];
|
426 |
|
427 |
if ( $this->is_failure( $attachment_id ) ) {
|
@@ -493,7 +501,7 @@ abstract class AS3CF_Filter {
|
|
493 |
return false;
|
494 |
}
|
495 |
|
496 |
-
$base_url = AS3CF_Utils::reduce_url( $this->get_base_url( $attachment_id ) );
|
497 |
$basename = wp_basename( $base_url );
|
498 |
|
499 |
// Add full size URL
|
@@ -501,10 +509,10 @@ abstract class AS3CF_Filter {
|
|
501 |
|
502 |
// Add additional image size URLs
|
503 |
foreach ( $meta['sizes'] as $size ) {
|
504 |
-
$base_urls[] = str_replace( $basename, $size['file'], $base_url );
|
505 |
}
|
506 |
|
507 |
-
$url = AS3CF_Utils::reduce_url( $url );
|
508 |
|
509 |
if ( in_array( $url, $base_urls ) ) {
|
510 |
// Match found, return true
|
@@ -582,10 +590,10 @@ abstract class AS3CF_Filter {
|
|
582 |
return null;
|
583 |
}
|
584 |
|
585 |
-
$basename = wp_basename( $this->as3cf->maybe_remove_query_string( $url ) );
|
586 |
|
587 |
foreach ( $meta['sizes'] as $size => $file ) {
|
588 |
-
if ( $basename === $file['file'] ) {
|
589 |
return $size;
|
590 |
}
|
591 |
}
|
@@ -651,7 +659,7 @@ abstract class AS3CF_Filter {
|
|
651 |
/**
|
652 |
* Get post cache
|
653 |
*
|
654 |
-
* @param null|int|WP_Post $post
|
655 |
*
|
656 |
* @return array
|
657 |
*/
|
@@ -678,8 +686,8 @@ abstract class AS3CF_Filter {
|
|
678 |
/**
|
679 |
* Set the cache for the given post.
|
680 |
*
|
681 |
-
* @param null|int|WP_Post $post
|
682 |
-
* @param
|
683 |
*/
|
684 |
protected function set_post_cache( $post, $data ) {
|
685 |
$post_id = AS3CF_Utils::get_post_id( $post );
|
@@ -905,8 +913,8 @@ abstract class AS3CF_Filter {
|
|
905 |
}
|
906 |
|
907 |
if ( ! empty( $merge_cache ) ) {
|
908 |
-
$add_cache_keys
|
909 |
-
$merge_cache
|
910 |
}
|
911 |
|
912 |
return array_merge( $existing_cache, $merge_cache );
|
421 |
$attachment_id = null;
|
422 |
$bare_url = AS3CF_Utils::reduce_url( $url );
|
423 |
|
424 |
+
// If attachment ID recently or previously cached, skip full search.
|
425 |
+
if ( isset( $to_cache[ $bare_url ] ) ) {
|
426 |
+
$attachment_id = $to_cache[ $bare_url ];
|
427 |
+
|
428 |
+
if ( $this->is_failure( $attachment_id ) ) {
|
429 |
+
// Attachment ID failure, continue
|
430 |
+
continue;
|
431 |
+
}
|
432 |
+
} elseif ( isset( $cache[ $bare_url ] ) ) {
|
433 |
$attachment_id = $cache[ $bare_url ];
|
434 |
|
435 |
if ( $this->is_failure( $attachment_id ) ) {
|
501 |
return false;
|
502 |
}
|
503 |
|
504 |
+
$base_url = $this->as3cf->encode_filename_in_path( AS3CF_Utils::reduce_url( $this->get_base_url( $attachment_id ) ) );
|
505 |
$basename = wp_basename( $base_url );
|
506 |
|
507 |
// Add full size URL
|
509 |
|
510 |
// Add additional image size URLs
|
511 |
foreach ( $meta['sizes'] as $size ) {
|
512 |
+
$base_urls[] = str_replace( $basename, $this->as3cf->encode_filename_in_path( $size['file'] ), $base_url );
|
513 |
}
|
514 |
|
515 |
+
$url = $this->as3cf->encode_filename_in_path( AS3CF_Utils::reduce_url( $url ) );
|
516 |
|
517 |
if ( in_array( $url, $base_urls ) ) {
|
518 |
// Match found, return true
|
590 |
return null;
|
591 |
}
|
592 |
|
593 |
+
$basename = $this->as3cf->encode_filename_in_path( wp_basename( $this->as3cf->maybe_remove_query_string( $url ) ) );
|
594 |
|
595 |
foreach ( $meta['sizes'] as $size => $file ) {
|
596 |
+
if ( $basename === $this->as3cf->encode_filename_in_path( $file['file'] ) ) {
|
597 |
return $size;
|
598 |
}
|
599 |
}
|
659 |
/**
|
660 |
* Get post cache
|
661 |
*
|
662 |
+
* @param null|int|WP_Post $post Optional. Post ID or post object. Defaults to current post.
|
663 |
*
|
664 |
* @return array
|
665 |
*/
|
686 |
/**
|
687 |
* Set the cache for the given post.
|
688 |
*
|
689 |
+
* @param null|int|WP_Post $post Optional. Post ID or post object. Defaults to current post.
|
690 |
+
* @param $data
|
691 |
*/
|
692 |
protected function set_post_cache( $post, $data ) {
|
693 |
$post_id = AS3CF_Utils::get_post_id( $post );
|
913 |
}
|
914 |
|
915 |
if ( ! empty( $merge_cache ) ) {
|
916 |
+
$add_cache_keys = array_map( 'AS3CF_Utils::reduce_url', array_keys( $merge_cache ) );
|
917 |
+
$merge_cache = array_combine( $add_cache_keys, $merge_cache );
|
918 |
}
|
919 |
|
920 |
return array_merge( $existing_cache, $merge_cache );
|
classes/as3cf-plugin-compatibility.php
CHANGED
@@ -67,12 +67,16 @@ class AS3CF_Plugin_Compatibility {
|
|
67 |
/*
|
68 |
* Responsive Images WP 4.4
|
69 |
*/
|
|
|
70 |
add_filter( 'wp_calculate_image_srcset', array( $this, 'wp_calculate_image_srcset' ), 10, 5 );
|
71 |
add_filter( 'wp_calculate_image_srcset_meta', array( $this, 'wp_calculate_image_srcset_meta' ), 10, 4 );
|
72 |
|
73 |
// Maybe warn about PHP version if in admin screens.
|
74 |
add_action( 'admin_init', array( $this, 'maybe_warn_about_php_version' ) );
|
75 |
|
|
|
|
|
|
|
76 |
if ( $this->as3cf->is_plugin_setup( true ) ) {
|
77 |
$this->compatibility_init_if_setup();
|
78 |
}
|
@@ -610,7 +614,6 @@ class AS3CF_Plugin_Compatibility {
|
|
610 |
|
611 |
$client = $this->as3cf->get_provider_client( $region, true );
|
612 |
|
613 |
-
|
614 |
if ( ! empty( $client ) && $client->register_stream_wrapper( $region ) ) {
|
615 |
self::$stream_wrappers[ $stored_region ] = $client;
|
616 |
|
@@ -648,6 +651,40 @@ class AS3CF_Plugin_Compatibility {
|
|
648 |
return $url;
|
649 |
}
|
650 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
651 |
/**
|
652 |
* Adds 'srcset' and 'sizes' attributes to an existing S3 'img' element.
|
653 |
*
|
@@ -763,22 +800,22 @@ class AS3CF_Plugin_Compatibility {
|
|
763 |
return $image_meta;
|
764 |
}
|
765 |
|
766 |
-
$image_basename = wp_basename( $image_meta['file'] );
|
767 |
|
768 |
-
if ( false === strpos( $provider_object['key'], $image_basename ) ) {
|
769 |
// Not the correct attachment, abort
|
770 |
return $image_meta;
|
771 |
}
|
772 |
|
773 |
-
// Strip the meta file prefix so
|
774 |
// the S3 URL regardless of different prefixes for the offloaded file.
|
775 |
// Also ensure filename is encoded the same way as URL.
|
776 |
-
$image_meta['file'] =
|
777 |
|
778 |
// Ensure each size filename is encoded the same way as URL.
|
779 |
if ( ! empty( $image_meta['sizes'] ) ) {
|
780 |
$image_meta['sizes'] = array_map( function ( $size ) {
|
781 |
-
$size['file'] =
|
782 |
|
783 |
return $size;
|
784 |
}, $image_meta['sizes'] );
|
@@ -861,7 +898,7 @@ class AS3CF_Plugin_Compatibility {
|
|
861 |
// Get parent Post ID for cropped image.
|
862 |
$post_id = filter_input( INPUT_POST, 'id', FILTER_VALIDATE_INT );
|
863 |
|
864 |
-
$filename = $this->as3cf->filter_unique_filename( $filename, $post_id );
|
865 |
|
866 |
return $filename;
|
867 |
}
|
@@ -937,4 +974,19 @@ class AS3CF_Plugin_Compatibility {
|
|
937 |
|
938 |
return $dispatch_result;
|
939 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
940 |
}
|
67 |
/*
|
68 |
* Responsive Images WP 4.4
|
69 |
*/
|
70 |
+
add_filter( 'wp_get_attachment_metadata', array( $this, 'wp_get_attachment_metadata' ), 10, 2 );
|
71 |
add_filter( 'wp_calculate_image_srcset', array( $this, 'wp_calculate_image_srcset' ), 10, 5 );
|
72 |
add_filter( 'wp_calculate_image_srcset_meta', array( $this, 'wp_calculate_image_srcset_meta' ), 10, 4 );
|
73 |
|
74 |
// Maybe warn about PHP version if in admin screens.
|
75 |
add_action( 'admin_init', array( $this, 'maybe_warn_about_php_version' ) );
|
76 |
|
77 |
+
// WordPress MU Domain Mapping plugin compatibility.
|
78 |
+
add_filter( 'as3cf_get_orig_siteurl', array( $this, 'get_orig_siteurl' ) );
|
79 |
+
|
80 |
if ( $this->as3cf->is_plugin_setup( true ) ) {
|
81 |
$this->compatibility_init_if_setup();
|
82 |
}
|
614 |
|
615 |
$client = $this->as3cf->get_provider_client( $region, true );
|
616 |
|
|
|
617 |
if ( ! empty( $client ) && $client->register_stream_wrapper( $region ) ) {
|
618 |
self::$stream_wrappers[ $stored_region ] = $client;
|
619 |
|
651 |
return $url;
|
652 |
}
|
653 |
|
654 |
+
/**
|
655 |
+
* Fixes comparison of attachment metadata to already urlencoded content during 'the_content' filter.
|
656 |
+
*
|
657 |
+
* @param array $data
|
658 |
+
* @param int $attachment_id
|
659 |
+
*
|
660 |
+
* @return array
|
661 |
+
*/
|
662 |
+
public function wp_get_attachment_metadata( $data, $attachment_id ) {
|
663 |
+
global $wp_current_filter;
|
664 |
+
|
665 |
+
if (
|
666 |
+
is_array( $wp_current_filter ) &&
|
667 |
+
! empty( $wp_current_filter[0] ) &&
|
668 |
+
'the_content' === $wp_current_filter[0] &&
|
669 |
+
$this->as3cf->is_attachment_served_by_provider( $attachment_id )
|
670 |
+
) {
|
671 |
+
// Ensure each filename is encoded the same way as URL, slightly fixed up for wp_basename() manipulation compatibility.
|
672 |
+
if ( ! empty( $data['file'] ) ) {
|
673 |
+
$data['file'] = $this->as3cf->encode_filename_in_path( $data['file'] );
|
674 |
+
}
|
675 |
+
|
676 |
+
if ( ! empty( $data['sizes'] ) ) {
|
677 |
+
$data['sizes'] = array_map( function ( $size ) {
|
678 |
+
$size['file'] = $this->as3cf->encode_filename_in_path( $size['file'] );
|
679 |
+
|
680 |
+
return $size;
|
681 |
+
}, $data['sizes'] );
|
682 |
+
}
|
683 |
+
}
|
684 |
+
|
685 |
+
return $data;
|
686 |
+
}
|
687 |
+
|
688 |
/**
|
689 |
* Adds 'srcset' and 'sizes' attributes to an existing S3 'img' element.
|
690 |
*
|
800 |
return $image_meta;
|
801 |
}
|
802 |
|
803 |
+
$image_basename = $this->as3cf->encode_filename_in_path( wp_basename( $image_meta['file'] ) );
|
804 |
|
805 |
+
if ( false === strpos( $this->as3cf->encode_filename_in_path( $provider_object['key'] ), $image_basename ) ) {
|
806 |
// Not the correct attachment, abort
|
807 |
return $image_meta;
|
808 |
}
|
809 |
|
810 |
+
// Strip the meta file prefix so that just the filename will always match
|
811 |
// the S3 URL regardless of different prefixes for the offloaded file.
|
812 |
// Also ensure filename is encoded the same way as URL.
|
813 |
+
$image_meta['file'] = $image_basename;
|
814 |
|
815 |
// Ensure each size filename is encoded the same way as URL.
|
816 |
if ( ! empty( $image_meta['sizes'] ) ) {
|
817 |
$image_meta['sizes'] = array_map( function ( $size ) {
|
818 |
+
$size['file'] = $this->as3cf->encode_filename_in_path( $size['file'] );
|
819 |
|
820 |
return $size;
|
821 |
}, $image_meta['sizes'] );
|
898 |
// Get parent Post ID for cropped image.
|
899 |
$post_id = filter_input( INPUT_POST, 'id', FILTER_VALIDATE_INT );
|
900 |
|
901 |
+
$filename = $this->as3cf->filter_unique_filename( $filename, $ext, $dir, $post_id );
|
902 |
|
903 |
return $filename;
|
904 |
}
|
974 |
|
975 |
return $dispatch_result;
|
976 |
}
|
977 |
+
|
978 |
+
/**
|
979 |
+
* Domain Mapping may have overridden the original siteurl that is needed for search/replace.
|
980 |
+
*
|
981 |
+
* @param string $siteurl
|
982 |
+
*
|
983 |
+
* @return mixed
|
984 |
+
*/
|
985 |
+
public function get_orig_siteurl( $siteurl ) {
|
986 |
+
if ( defined( 'DOMAIN_MAPPING' ) && function_exists( 'get_original_url' ) ) {
|
987 |
+
$siteurl = get_original_url( 'siteurl' );
|
988 |
+
}
|
989 |
+
|
990 |
+
return $siteurl;
|
991 |
+
}
|
992 |
}
|
classes/filters/as3cf-local-to-s3.php
CHANGED
@@ -129,23 +129,38 @@ class AS3CF_Local_To_S3 extends AS3CF_Filter {
|
|
129 |
* @return array
|
130 |
*/
|
131 |
private function get_bare_upload_base_urls() {
|
132 |
-
$base_urls = array();
|
133 |
|
134 |
-
$
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
149 |
}
|
150 |
}
|
151 |
|
@@ -249,36 +264,40 @@ class AS3CF_Local_To_S3 extends AS3CF_Filter {
|
|
249 |
|
250 |
$path = $this->as3cf->decode_filename_in_path( ltrim( str_replace( $this->get_bare_upload_base_urls(), '', $full_url ), '/' ) );
|
251 |
|
252 |
-
$paths[ $path ]
|
253 |
-
$full_urls[ $full_url ] = $url;
|
254 |
-
$meta_values[]
|
255 |
}
|
256 |
|
257 |
if ( ! empty( $meta_values ) ) {
|
258 |
$sql = "
|
259 |
SELECT post_id, meta_value FROM {$wpdb->postmeta}
|
260 |
WHERE meta_key = '_wp_attached_file'
|
261 |
-
AND meta_value IN ( " . implode( ',', $meta_values ) . " )
|
262 |
";
|
263 |
|
264 |
$query_results = $wpdb->get_results( $sql );
|
265 |
|
266 |
if ( ! empty( $query_results ) ) {
|
267 |
foreach ( $query_results as $postmeta ) {
|
268 |
-
$attachment_id
|
269 |
-
$full_url
|
270 |
-
$this->query_cache[ $full_url ]
|
271 |
-
|
|
|
|
|
|
|
272 |
}
|
273 |
-
|
274 |
}
|
275 |
|
276 |
// No more attachment IDs found, set remaining results as false.
|
277 |
if ( count( $urls ) !== count( $results ) ) {
|
278 |
-
foreach ( $full_urls as $full_url => $
|
279 |
-
|
280 |
-
$
|
281 |
-
|
|
|
|
|
282 |
}
|
283 |
}
|
284 |
}
|
129 |
* @return array
|
130 |
*/
|
131 |
private function get_bare_upload_base_urls() {
|
132 |
+
static $base_urls = array();
|
133 |
|
134 |
+
if ( empty( $base_urls ) ) {
|
135 |
+
$domains = array();
|
136 |
+
|
137 |
+
// Original domain and path.
|
138 |
+
$uploads = wp_upload_dir();
|
139 |
+
$base_url = AS3CF_Utils::remove_scheme( $uploads['baseurl'] );
|
140 |
+
$orig_domain = AS3CF_Utils::parse_url( $base_url, PHP_URL_HOST );
|
141 |
+
$domains[] = $orig_domain;
|
142 |
+
$base_urls[] = $base_url;
|
143 |
+
|
144 |
+
// Current domain and path after potential domain mapping.
|
145 |
+
$base_url = $this->as3cf->maybe_fix_local_subsite_url( $uploads['baseurl'] );
|
146 |
+
$base_url = AS3CF_Utils::remove_scheme( $base_url );
|
147 |
+
$curr_domain = AS3CF_Utils::parse_url( $base_url, PHP_URL_HOST );
|
148 |
+
|
149 |
+
if ( $curr_domain !== $orig_domain ) {
|
150 |
+
$domains[] = $curr_domain;
|
151 |
+
}
|
152 |
+
|
153 |
+
/**
|
154 |
+
* Allow alteration of the local domains that can be matched on.
|
155 |
+
*
|
156 |
+
* @param array $domains
|
157 |
+
*/
|
158 |
+
$domains = apply_filters( 'as3cf_local_domains', $domains );
|
159 |
+
|
160 |
+
if ( ! empty( $domains ) ) {
|
161 |
+
foreach ( array_unique( $domains ) as $match_domain ) {
|
162 |
+
$base_urls[] = substr_replace( $base_url, $match_domain, 2, strlen( $curr_domain ) );
|
163 |
+
}
|
164 |
}
|
165 |
}
|
166 |
|
264 |
|
265 |
$path = $this->as3cf->decode_filename_in_path( ltrim( str_replace( $this->get_bare_upload_base_urls(), '', $full_url ), '/' ) );
|
266 |
|
267 |
+
$paths[ $path ] = $full_url;
|
268 |
+
$full_urls[ $full_url ][] = $url;
|
269 |
+
$meta_values[] = "'" . esc_sql( $path ) . "'";
|
270 |
}
|
271 |
|
272 |
if ( ! empty( $meta_values ) ) {
|
273 |
$sql = "
|
274 |
SELECT post_id, meta_value FROM {$wpdb->postmeta}
|
275 |
WHERE meta_key = '_wp_attached_file'
|
276 |
+
AND meta_value IN ( " . implode( ',', array_unique( $meta_values ) ) . " )
|
277 |
";
|
278 |
|
279 |
$query_results = $wpdb->get_results( $sql );
|
280 |
|
281 |
if ( ! empty( $query_results ) ) {
|
282 |
foreach ( $query_results as $postmeta ) {
|
283 |
+
$attachment_id = (int) $postmeta->post_id;
|
284 |
+
$full_url = $paths[ $postmeta->meta_value ];
|
285 |
+
$this->query_cache[ $full_url ] = $attachment_id;
|
286 |
+
foreach ( $full_urls[ $full_url ] as $url ) {
|
287 |
+
$results[ $url ] = $attachment_id;
|
288 |
+
}
|
289 |
+
unset( $full_urls[ $full_url ] );
|
290 |
}
|
|
|
291 |
}
|
292 |
|
293 |
// No more attachment IDs found, set remaining results as false.
|
294 |
if ( count( $urls ) !== count( $results ) ) {
|
295 |
+
foreach ( $full_urls as $full_url => $sizes ) {
|
296 |
+
foreach ( $sizes as $url ) {
|
297 |
+
if ( ! array_key_exists( $url, $results ) ) {
|
298 |
+
$this->query_cache[ $full_url ] = false;
|
299 |
+
$results[ $url ] = false;
|
300 |
+
}
|
301 |
}
|
302 |
}
|
303 |
}
|
classes/providers/aws-provider.php
CHANGED
@@ -155,10 +155,23 @@ class AWS_Provider extends Provider {
|
|
155 |
public function __construct( \AS3CF_Plugin_Base $as3cf ) {
|
156 |
parent::__construct( $as3cf );
|
157 |
|
|
|
|
|
158 |
// Autoloader.
|
159 |
require_once $as3cf->get_plugin_sdks_dir_path() . '/Aws3/aws-autoloader.php';
|
160 |
}
|
161 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
162 |
/**
|
163 |
* Returns default args array for the client.
|
164 |
*
|
155 |
public function __construct( \AS3CF_Plugin_Base $as3cf ) {
|
156 |
parent::__construct( $as3cf );
|
157 |
|
158 |
+
$this->disable_csm();
|
159 |
+
|
160 |
// Autoloader.
|
161 |
require_once $as3cf->get_plugin_sdks_dir_path() . '/Aws3/aws-autoloader.php';
|
162 |
}
|
163 |
|
164 |
+
/**
|
165 |
+
* Disable AWS CSM which tries to check ~/.aws/config causing issues if open_basedir in effect.
|
166 |
+
*
|
167 |
+
* @see https://github.com/aws/aws-sdk-php/issues/1659
|
168 |
+
*/
|
169 |
+
private function disable_csm() {
|
170 |
+
if ( apply_filters( 'as3cf_disable_aws_csm', true ) ) {
|
171 |
+
putenv( 'AWS_CSM_ENABLED=false' );
|
172 |
+
}
|
173 |
+
}
|
174 |
+
|
175 |
/**
|
176 |
* Returns default args array for the client.
|
177 |
*
|
classes/providers/provider.php
CHANGED
@@ -404,10 +404,63 @@ abstract class Provider {
|
|
404 |
if ( static::is_key_file_path_constant_defined() ) {
|
405 |
$constant = static::key_file_path_constant();
|
406 |
|
407 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
408 |
}
|
409 |
|
410 |
-
|
|
|
411 |
}
|
412 |
|
413 |
/**
|
404 |
if ( static::is_key_file_path_constant_defined() ) {
|
405 |
$constant = static::key_file_path_constant();
|
406 |
|
407 |
+
if ( $constant ) {
|
408 |
+
return $this->validate_key_file_path( constant( $constant ) );
|
409 |
+
} else {
|
410 |
+
// Constant defined but value is not a non-empty string.
|
411 |
+
return false;
|
412 |
+
}
|
413 |
+
}
|
414 |
+
|
415 |
+
return $this->validate_key_file_path( $this->as3cf->get_core_setting( static::$key_file_path_setting_name, false ) );
|
416 |
+
}
|
417 |
+
|
418 |
+
/**
|
419 |
+
* Validate a key file path to ensure it exists, is readable, and contains JSON.
|
420 |
+
*
|
421 |
+
* @param string $key_file_path
|
422 |
+
*
|
423 |
+
* @return bool|string
|
424 |
+
*/
|
425 |
+
public function validate_key_file_path( $key_file_path ) {
|
426 |
+
$notice_id = 'validate-key-file-path';
|
427 |
+
$this->as3cf->notices->remove_notice_by_id( $notice_id );
|
428 |
+
|
429 |
+
if ( empty( $key_file_path ) ) {
|
430 |
+
return false;
|
431 |
+
}
|
432 |
+
|
433 |
+
if ( ! file_exists( $key_file_path ) ) {
|
434 |
+
$this->as3cf->notices->add_notice( __( 'Given Key File Path is invalid or could not be accessed.', 'amazon-s3-and-cloudfront' ), array( 'type' => 'error', 'only_show_in_settings' => true, 'only_show_on_tab' => 'media', 'custom_id' => $notice_id ) );
|
435 |
+
|
436 |
+
return false;
|
437 |
+
}
|
438 |
+
|
439 |
+
try {
|
440 |
+
$value = file_get_contents( $key_file_path );
|
441 |
+
|
442 |
+
// An exception isn't always thrown, so check value instead.
|
443 |
+
if ( empty( $value ) ) {
|
444 |
+
$this->as3cf->notices->add_notice( __( 'Could not read Key File Path\'s contents.', 'amazon-s3-and-cloudfront' ), array( 'type' => 'error', 'only_show_in_settings' => true, 'only_show_on_tab' => 'media', 'custom_id' => $notice_id ) );
|
445 |
+
|
446 |
+
return false;
|
447 |
+
}
|
448 |
+
} catch ( \Exception $e ) {
|
449 |
+
$this->as3cf->notices->add_notice( __( 'Could not read Key File Path\'s contents.', 'amazon-s3-and-cloudfront' ), array( 'type' => 'error', 'only_show_in_settings' => true, 'only_show_on_tab' => 'media', 'custom_id' => $notice_id ) );
|
450 |
+
|
451 |
+
return false;
|
452 |
+
}
|
453 |
+
|
454 |
+
$value = json_decode( $value, true );
|
455 |
+
|
456 |
+
if ( empty( $value ) ) {
|
457 |
+
$this->as3cf->notices->add_notice( __( 'Given Key File Path does not contain valid JSON.', 'amazon-s3-and-cloudfront' ), array( 'type' => 'error', 'only_show_in_settings' => true, 'only_show_on_tab' => 'media', 'custom_id' => $notice_id ) );
|
458 |
+
|
459 |
+
return false;
|
460 |
}
|
461 |
|
462 |
+
// File exists and looks like JSON.
|
463 |
+
return $key_file_path;
|
464 |
}
|
465 |
|
466 |
/**
|
languages/amazon-s3-and-cloudfront-en.pot
CHANGED
@@ -8,7 +8,7 @@ msgid ""
|
|
8 |
msgstr ""
|
9 |
"Project-Id-Version: amazon-s3-and-cloudfront\n"
|
10 |
"Report-Msgid-Bugs-To: nom@deliciousbrains.com\n"
|
11 |
-
"POT-Creation-Date: 2019-
|
12 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
13 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
14 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
@@ -22,172 +22,172 @@ msgstr ""
|
|
22 |
msgid "Offload Media"
|
23 |
msgstr ""
|
24 |
|
25 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
26 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
27 |
msgid "Unknown"
|
28 |
msgstr ""
|
29 |
|
30 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
31 |
#: view/bucket-setting.php:17
|
32 |
-
#: view/provider-select.php:
|
33 |
msgid "defined in wp-config.php"
|
34 |
msgstr ""
|
35 |
|
36 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
37 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
38 |
#, php-format
|
39 |
msgid "File %s does not exist"
|
40 |
msgstr ""
|
41 |
|
42 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
43 |
#, php-format
|
44 |
msgid "Mime type %s is not allowed"
|
45 |
msgstr ""
|
46 |
|
47 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
48 |
msgid "Already offloaded to a different provider"
|
49 |
msgstr ""
|
50 |
|
51 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
52 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
53 |
#, php-format
|
54 |
msgid "Error offloading %s to provider: %s"
|
55 |
msgstr ""
|
56 |
|
57 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
58 |
msgid "This action can only be performed through an admin screen."
|
59 |
msgstr ""
|
60 |
|
61 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
62 |
msgid "Cheatin’ eh?"
|
63 |
msgstr ""
|
64 |
|
65 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
66 |
msgid "You do not have sufficient permissions to access this page."
|
67 |
msgstr ""
|
68 |
|
69 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
70 |
msgid "Error Getting Bucket Region"
|
71 |
msgstr ""
|
72 |
|
73 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
74 |
#, php-format
|
75 |
msgid "There was an error attempting to get the region of the bucket %s: %s"
|
76 |
msgstr ""
|
77 |
|
78 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
79 |
msgid ""
|
80 |
"This is a test file to check if the user has write permission to the bucket. "
|
81 |
"Delete me if found."
|
82 |
msgstr ""
|
83 |
|
84 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
85 |
#, php-format
|
86 |
msgid ""
|
87 |
"There was an error attempting to check the permissions of the bucket %s: %s"
|
88 |
msgstr ""
|
89 |
|
90 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
91 |
msgid "Error creating bucket"
|
92 |
msgstr ""
|
93 |
|
94 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
95 |
msgid "Bucket name too short."
|
96 |
msgstr ""
|
97 |
|
98 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
99 |
msgid "Bucket name too long."
|
100 |
msgstr ""
|
101 |
|
102 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
103 |
msgid ""
|
104 |
"Invalid character. Bucket names can contain lowercase letters, numbers, "
|
105 |
"periods and hyphens."
|
106 |
msgstr ""
|
107 |
|
108 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
109 |
msgid "Error saving bucket"
|
110 |
msgstr ""
|
111 |
|
112 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
113 |
msgid "Error fetching buckets"
|
114 |
msgstr ""
|
115 |
|
116 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
117 |
msgid "Error getting URL preview: "
|
118 |
msgstr ""
|
119 |
|
120 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
121 |
msgid "The changes you made will be lost if you navigate away from this page"
|
122 |
msgstr ""
|
123 |
|
124 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
125 |
msgid "Getting diagnostic info..."
|
126 |
msgstr ""
|
127 |
|
128 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
129 |
msgid "Error getting diagnostic info: "
|
130 |
msgstr ""
|
131 |
|
132 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
133 |
msgctxt "placeholder for hidden access key, 39 char max"
|
134 |
msgid "-- not shown --"
|
135 |
msgstr ""
|
136 |
|
137 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
138 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
139 |
msgid "Settings saved."
|
140 |
msgstr ""
|
141 |
|
142 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
143 |
msgid "Cheatin' eh?"
|
144 |
msgstr ""
|
145 |
|
146 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
147 |
msgid "No bucket name provided."
|
148 |
msgstr ""
|
149 |
|
150 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
151 |
msgid "Bucket name not valid."
|
152 |
msgstr ""
|
153 |
|
154 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
155 |
msgid "No region provided."
|
156 |
msgstr ""
|
157 |
|
158 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
159 |
-
#: view/provider-select.php:
|
160 |
msgctxt "placeholder for hidden secret access key, 39 char max"
|
161 |
msgid "-- not shown --"
|
162 |
msgstr ""
|
163 |
|
164 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
165 |
msgid "Key File not valid JSON."
|
166 |
msgstr ""
|
167 |
|
168 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
169 |
msgctxt "Show the media library tab"
|
170 |
msgid "Media Library"
|
171 |
msgstr ""
|
172 |
|
173 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
174 |
msgctxt "Show the addons tab"
|
175 |
msgid "Addons"
|
176 |
msgstr ""
|
177 |
|
178 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
179 |
msgctxt "Show the support tab"
|
180 |
msgid "Support"
|
181 |
msgstr ""
|
182 |
|
183 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
184 |
#, php-format
|
185 |
msgid ""
|
186 |
"<strong>WP Offload Media</strong> — The file %s has been given %s "
|
187 |
"permissions in the bucket."
|
188 |
msgstr ""
|
189 |
|
190 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
191 |
msgid ""
|
192 |
"<strong>WP Offload Media Requirement Missing</strong> — Looks like you "
|
193 |
"don't have an image manipulation library installed on this server and "
|
@@ -195,18 +195,18 @@ msgid ""
|
|
195 |
"Please setup GD or ImageMagick."
|
196 |
msgstr ""
|
197 |
|
198 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
199 |
#, php-format
|
200 |
msgid ""
|
201 |
"<a href=\"%s\">Define your access keys</a> to enable write access to the "
|
202 |
"bucket"
|
203 |
msgstr ""
|
204 |
|
205 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
206 |
msgid "Quick Start Guide"
|
207 |
msgstr ""
|
208 |
|
209 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
210 |
#, php-format
|
211 |
msgid ""
|
212 |
"Looks like we don't have write access to this bucket. It's likely that the "
|
@@ -215,7 +215,7 @@ msgid ""
|
|
215 |
"correctly."
|
216 |
msgstr ""
|
217 |
|
218 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
219 |
#, php-format
|
220 |
msgid ""
|
221 |
"Looks like we don't have access to the buckets. It's likely that the user "
|
@@ -223,39 +223,39 @@ msgid ""
|
|
223 |
"Please see our %s for instructions on setting up permissions correctly."
|
224 |
msgstr ""
|
225 |
|
226 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
227 |
msgid "WP Offload Media Activation"
|
228 |
msgstr ""
|
229 |
|
230 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
231 |
msgid ""
|
232 |
"WP Offload Media Lite and WP Offload Media cannot both be active. We've "
|
233 |
"automatically deactivated WP Offload Media Lite."
|
234 |
msgstr ""
|
235 |
|
236 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
237 |
msgid "WP Offload Media Lite Activation"
|
238 |
msgstr ""
|
239 |
|
240 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
241 |
msgid ""
|
242 |
"WP Offload Media Lite and WP Offload Media cannot both be active. We've "
|
243 |
"automatically deactivated WP Offload Media."
|
244 |
msgstr ""
|
245 |
|
246 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
247 |
msgid "More info »"
|
248 |
msgstr ""
|
249 |
|
250 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
251 |
msgid "this doc"
|
252 |
msgstr ""
|
253 |
|
254 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
255 |
msgid "WP Offload Media Feature Removed"
|
256 |
msgstr ""
|
257 |
|
258 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
259 |
#, php-format
|
260 |
msgid ""
|
261 |
"You had the \"Always non-SSL\" option selected in your settings, but we've "
|
@@ -266,59 +266,59 @@ msgid ""
|
|
266 |
"to the old behavior."
|
267 |
msgstr ""
|
268 |
|
269 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
270 |
msgid "Offload"
|
271 |
msgstr ""
|
272 |
|
273 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
274 |
msgctxt "Storage provider key name"
|
275 |
msgid "Storage Provider"
|
276 |
msgstr ""
|
277 |
|
278 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
279 |
msgctxt "Storage provider name"
|
280 |
msgid "Storage Provider"
|
281 |
msgstr ""
|
282 |
|
283 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
284 |
msgctxt "Bucket name"
|
285 |
msgid "Bucket"
|
286 |
msgstr ""
|
287 |
|
288 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
289 |
msgctxt "Path to file in bucket"
|
290 |
msgid "Path"
|
291 |
msgstr ""
|
292 |
|
293 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
294 |
msgctxt "Location of bucket"
|
295 |
msgid "Region"
|
296 |
msgstr ""
|
297 |
|
298 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
299 |
msgctxt "Access control list of the file in bucket"
|
300 |
msgid "Access"
|
301 |
msgstr ""
|
302 |
|
303 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
304 |
msgid "URL"
|
305 |
msgstr ""
|
306 |
|
307 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
308 |
msgid "Assets Pull"
|
309 |
msgstr ""
|
310 |
|
311 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
312 |
msgid ""
|
313 |
"An addon for WP Offload Media to serve your site's JS, CSS, and other "
|
314 |
"enqueued assets from Amazon CloudFront or another CDN."
|
315 |
msgstr ""
|
316 |
|
317 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
318 |
msgid "Feature"
|
319 |
msgstr ""
|
320 |
|
321 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
322 |
#, php-format
|
323 |
msgid ""
|
324 |
"<strong>Amazon Web Services Plugin No Longer Required</strong> — As of "
|
@@ -329,7 +329,7 @@ msgid ""
|
|
329 |
"plugin, it should be safe to deactivate and delete it. %2$s"
|
330 |
msgstr ""
|
331 |
|
332 |
-
#: classes/amazon-s3-and-cloudfront.php:
|
333 |
#, php-format
|
334 |
msgid ""
|
335 |
"<strong>WP Offload Media Settings Moved</strong> — You now define your "
|
@@ -462,27 +462,40 @@ msgstr ""
|
|
462 |
msgid "Settings"
|
463 |
msgstr ""
|
464 |
|
465 |
-
#: classes/as3cf-plugin-compatibility.php:
|
466 |
#, php-format
|
467 |
msgid "The local directory %s does not exist and could not be created."
|
468 |
msgstr ""
|
469 |
|
470 |
-
#: classes/as3cf-plugin-compatibility.php:
|
471 |
-
#: classes/as3cf-plugin-compatibility.php:
|
472 |
#: classes/upgrades/upgrade-meta-wp-error.php:81
|
473 |
#, php-format
|
474 |
msgid ""
|
475 |
"There was an error attempting to download the file %s from the bucket: %s"
|
476 |
msgstr ""
|
477 |
|
478 |
-
#: classes/as3cf-plugin-compatibility.php:
|
479 |
#, php-format
|
480 |
msgid ""
|
481 |
"<strong>Warning:</strong> This site is using PHP %1$s, in a future update WP "
|
482 |
"Offload Media will require PHP %2$s or later. %3$s"
|
483 |
msgstr ""
|
484 |
|
485 |
-
#: classes/providers/provider.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
486 |
#, php-format
|
487 |
msgid "You must first <a href=\"%s\">set your access keys</a>."
|
488 |
msgstr ""
|
@@ -640,7 +653,7 @@ msgid "File exists on server"
|
|
640 |
msgstr ""
|
641 |
|
642 |
#: view/bucket-select.php:38
|
643 |
-
#: view/provider-select.php:
|
644 |
msgid "« Back"
|
645 |
msgstr ""
|
646 |
|
@@ -807,15 +820,22 @@ msgstr ""
|
|
807 |
msgid "Show"
|
808 |
msgstr ""
|
809 |
|
810 |
-
#: view/provider-select.php:
|
811 |
msgid "Storage Provider"
|
812 |
msgstr ""
|
813 |
|
814 |
-
#: view/provider-select.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
815 |
msgid "Define access keys in wp-config.php"
|
816 |
msgstr ""
|
817 |
|
818 |
-
#: view/provider-select.php:
|
819 |
#, php-format
|
820 |
msgctxt "Access Keys defined in multiple defines."
|
821 |
msgid ""
|
@@ -824,7 +844,7 @@ msgid ""
|
|
824 |
"config.php."
|
825 |
msgstr ""
|
826 |
|
827 |
-
#: view/provider-select.php:
|
828 |
#, php-format
|
829 |
msgctxt "Access Keys defined in single define."
|
830 |
msgid ""
|
@@ -833,29 +853,29 @@ msgid ""
|
|
833 |
"config.php."
|
834 |
msgstr ""
|
835 |
|
836 |
-
#: view/provider-select.php:
|
837 |
-
#: view/provider-select.php:
|
838 |
msgctxt "joins multiple define keys in notice"
|
839 |
msgid " & "
|
840 |
msgstr ""
|
841 |
|
842 |
-
#: view/provider-select.php:
|
843 |
msgid ""
|
844 |
"Please check your wp-config.php file as it looks like one of your access key "
|
845 |
"defines is missing or incorrect."
|
846 |
msgstr ""
|
847 |
|
848 |
-
#: view/provider-select.php:
|
849 |
msgid ""
|
850 |
"Copy the following snippet <strong>near the top</strong> of your wp-config."
|
851 |
"php and replace the stars with the keys."
|
852 |
msgstr ""
|
853 |
|
854 |
-
#: view/provider-select.php:
|
855 |
msgid "Define key file path in wp-config.php"
|
856 |
msgstr ""
|
857 |
|
858 |
-
#: view/provider-select.php:
|
859 |
#, php-format
|
860 |
msgctxt "Key file path defined in single define."
|
861 |
msgid ""
|
@@ -864,18 +884,18 @@ msgid ""
|
|
864 |
"your wp-config.php."
|
865 |
msgstr ""
|
866 |
|
867 |
-
#: view/provider-select.php:
|
868 |
msgid ""
|
869 |
"Copy the following snippet <strong>near the top</strong> of your wp-config."
|
870 |
"php and replace \"<strong>/path/to/key/file.json</strong>\"."
|
871 |
msgstr ""
|
872 |
|
873 |
-
#: view/provider-select.php:
|
874 |
#, php-format
|
875 |
msgid "My server is on %s and I'd like to use IAM Roles"
|
876 |
msgstr ""
|
877 |
|
878 |
-
#: view/provider-select.php:
|
879 |
#, php-format
|
880 |
msgid ""
|
881 |
"You've defined the '%1$s' constant in your wp-config.php. To select a "
|
@@ -883,7 +903,7 @@ msgid ""
|
|
883 |
"config.php."
|
884 |
msgstr ""
|
885 |
|
886 |
-
#: view/provider-select.php:
|
887 |
#, php-format
|
888 |
msgid ""
|
889 |
"If you host your WordPress site on %s you should make use of IAM Roles. To "
|
@@ -891,45 +911,45 @@ msgid ""
|
|
891 |
"<strong>near the top</strong> of your wp-config.php."
|
892 |
msgstr ""
|
893 |
|
894 |
-
#: view/provider-select.php:
|
895 |
msgid ""
|
896 |
"I understand the risks but I'd like to store access keys in the database "
|
897 |
"anyway (not recommended)"
|
898 |
msgstr ""
|
899 |
|
900 |
-
#: view/provider-select.php:
|
901 |
msgid ""
|
902 |
"Storing your access keys in the database is less secure than the options "
|
903 |
"above, but if you're ok with that, go ahead and enter your keys in the form "
|
904 |
"below."
|
905 |
msgstr ""
|
906 |
|
907 |
-
#: view/provider-select.php:
|
908 |
msgid "Access Key ID"
|
909 |
msgstr ""
|
910 |
|
911 |
-
#: view/provider-select.php:
|
912 |
msgid "Secret Access Key"
|
913 |
msgstr ""
|
914 |
|
915 |
-
#: view/provider-select.php:
|
916 |
msgid ""
|
917 |
"I understand the risks but I'd like to store the key file's contents in the "
|
918 |
"database anyway (not recommended)"
|
919 |
msgstr ""
|
920 |
|
921 |
-
#: view/provider-select.php:
|
922 |
msgid ""
|
923 |
"Storing your key file's contents in the database is less secure than the "
|
924 |
"options above, but if you're ok with that, go ahead and enter your key "
|
925 |
"file's JSON data in the field below."
|
926 |
msgstr ""
|
927 |
|
928 |
-
#: view/provider-select.php:
|
929 |
msgid "Next"
|
930 |
msgstr ""
|
931 |
|
932 |
-
#: view/provider-select.php:
|
933 |
#: view/settings/media.php:261
|
934 |
msgid "Save Changes"
|
935 |
msgstr ""
|
8 |
msgstr ""
|
9 |
"Project-Id-Version: amazon-s3-and-cloudfront\n"
|
10 |
"Report-Msgid-Bugs-To: nom@deliciousbrains.com\n"
|
11 |
+
"POT-Creation-Date: 2019-04-29 10:28+0100\n"
|
12 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
13 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
14 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
22 |
msgid "Offload Media"
|
23 |
msgstr ""
|
24 |
|
25 |
+
#: classes/amazon-s3-and-cloudfront.php:277
|
26 |
+
#: classes/amazon-s3-and-cloudfront.php:291
|
27 |
msgid "Unknown"
|
28 |
msgstr ""
|
29 |
|
30 |
+
#: classes/amazon-s3-and-cloudfront.php:345
|
31 |
#: view/bucket-setting.php:17
|
32 |
+
#: view/provider-select.php:108
|
33 |
msgid "defined in wp-config.php"
|
34 |
msgstr ""
|
35 |
|
36 |
+
#: classes/amazon-s3-and-cloudfront.php:1091
|
37 |
+
#: classes/amazon-s3-and-cloudfront.php:1225
|
38 |
#, php-format
|
39 |
msgid "File %s does not exist"
|
40 |
msgstr ""
|
41 |
|
42 |
+
#: classes/amazon-s3-and-cloudfront.php:1104
|
43 |
#, php-format
|
44 |
msgid "Mime type %s is not allowed"
|
45 |
msgstr ""
|
46 |
|
47 |
+
#: classes/amazon-s3-and-cloudfront.php:1115
|
48 |
msgid "Already offloaded to a different provider"
|
49 |
msgstr ""
|
50 |
|
51 |
+
#: classes/amazon-s3-and-cloudfront.php:1189
|
52 |
+
#: classes/amazon-s3-and-cloudfront.php:1233
|
53 |
#, php-format
|
54 |
msgid "Error offloading %s to provider: %s"
|
55 |
msgstr ""
|
56 |
|
57 |
+
#: classes/amazon-s3-and-cloudfront.php:2375
|
58 |
msgid "This action can only be performed through an admin screen."
|
59 |
msgstr ""
|
60 |
|
61 |
+
#: classes/amazon-s3-and-cloudfront.php:2377
|
62 |
msgid "Cheatin’ eh?"
|
63 |
msgstr ""
|
64 |
|
65 |
+
#: classes/amazon-s3-and-cloudfront.php:2379
|
66 |
msgid "You do not have sufficient permissions to access this page."
|
67 |
msgstr ""
|
68 |
|
69 |
+
#: classes/amazon-s3-and-cloudfront.php:2659
|
70 |
msgid "Error Getting Bucket Region"
|
71 |
msgstr ""
|
72 |
|
73 |
+
#: classes/amazon-s3-and-cloudfront.php:2660
|
74 |
#, php-format
|
75 |
msgid "There was an error attempting to get the region of the bucket %s: %s"
|
76 |
msgstr ""
|
77 |
|
78 |
+
#: classes/amazon-s3-and-cloudfront.php:2791
|
79 |
msgid ""
|
80 |
"This is a test file to check if the user has write permission to the bucket. "
|
81 |
"Delete me if found."
|
82 |
msgstr ""
|
83 |
|
84 |
+
#: classes/amazon-s3-and-cloudfront.php:2797
|
85 |
#, php-format
|
86 |
msgid ""
|
87 |
"There was an error attempting to check the permissions of the bucket %s: %s"
|
88 |
msgstr ""
|
89 |
|
90 |
+
#: classes/amazon-s3-and-cloudfront.php:2879
|
91 |
msgid "Error creating bucket"
|
92 |
msgstr ""
|
93 |
|
94 |
+
#: classes/amazon-s3-and-cloudfront.php:2880
|
95 |
msgid "Bucket name too short."
|
96 |
msgstr ""
|
97 |
|
98 |
+
#: classes/amazon-s3-and-cloudfront.php:2881
|
99 |
msgid "Bucket name too long."
|
100 |
msgstr ""
|
101 |
|
102 |
+
#: classes/amazon-s3-and-cloudfront.php:2882
|
103 |
msgid ""
|
104 |
"Invalid character. Bucket names can contain lowercase letters, numbers, "
|
105 |
"periods and hyphens."
|
106 |
msgstr ""
|
107 |
|
108 |
+
#: classes/amazon-s3-and-cloudfront.php:2883
|
109 |
msgid "Error saving bucket"
|
110 |
msgstr ""
|
111 |
|
112 |
+
#: classes/amazon-s3-and-cloudfront.php:2884
|
113 |
msgid "Error fetching buckets"
|
114 |
msgstr ""
|
115 |
|
116 |
+
#: classes/amazon-s3-and-cloudfront.php:2885
|
117 |
msgid "Error getting URL preview: "
|
118 |
msgstr ""
|
119 |
|
120 |
+
#: classes/amazon-s3-and-cloudfront.php:2886
|
121 |
msgid "The changes you made will be lost if you navigate away from this page"
|
122 |
msgstr ""
|
123 |
|
124 |
+
#: classes/amazon-s3-and-cloudfront.php:2887
|
125 |
msgid "Getting diagnostic info..."
|
126 |
msgstr ""
|
127 |
|
128 |
+
#: classes/amazon-s3-and-cloudfront.php:2888
|
129 |
msgid "Error getting diagnostic info: "
|
130 |
msgstr ""
|
131 |
|
132 |
+
#: classes/amazon-s3-and-cloudfront.php:2889
|
133 |
msgctxt "placeholder for hidden access key, 39 char max"
|
134 |
msgid "-- not shown --"
|
135 |
msgstr ""
|
136 |
|
137 |
+
#: classes/amazon-s3-and-cloudfront.php:2891
|
138 |
+
#: classes/amazon-s3-and-cloudfront.php:4913
|
139 |
msgid "Settings saved."
|
140 |
msgstr ""
|
141 |
|
142 |
+
#: classes/amazon-s3-and-cloudfront.php:2980
|
143 |
msgid "Cheatin' eh?"
|
144 |
msgstr ""
|
145 |
|
146 |
+
#: classes/amazon-s3-and-cloudfront.php:3064
|
147 |
msgid "No bucket name provided."
|
148 |
msgstr ""
|
149 |
|
150 |
+
#: classes/amazon-s3-and-cloudfront.php:3073
|
151 |
msgid "Bucket name not valid."
|
152 |
msgstr ""
|
153 |
|
154 |
+
#: classes/amazon-s3-and-cloudfront.php:3086
|
155 |
msgid "No region provided."
|
156 |
msgstr ""
|
157 |
|
158 |
+
#: classes/amazon-s3-and-cloudfront.php:3163
|
159 |
+
#: view/provider-select.php:314
|
160 |
msgctxt "placeholder for hidden secret access key, 39 char max"
|
161 |
msgid "-- not shown --"
|
162 |
msgstr ""
|
163 |
|
164 |
+
#: classes/amazon-s3-and-cloudfront.php:3186
|
165 |
msgid "Key File not valid JSON."
|
166 |
msgstr ""
|
167 |
|
168 |
+
#: classes/amazon-s3-and-cloudfront.php:3228
|
169 |
msgctxt "Show the media library tab"
|
170 |
msgid "Media Library"
|
171 |
msgstr ""
|
172 |
|
173 |
+
#: classes/amazon-s3-and-cloudfront.php:3229
|
174 |
msgctxt "Show the addons tab"
|
175 |
msgid "Addons"
|
176 |
msgstr ""
|
177 |
|
178 |
+
#: classes/amazon-s3-and-cloudfront.php:3230
|
179 |
msgctxt "Show the support tab"
|
180 |
msgid "Support"
|
181 |
msgstr ""
|
182 |
|
183 |
+
#: classes/amazon-s3-and-cloudfront.php:3450
|
184 |
#, php-format
|
185 |
msgid ""
|
186 |
"<strong>WP Offload Media</strong> — The file %s has been given %s "
|
187 |
"permissions in the bucket."
|
188 |
msgstr ""
|
189 |
|
190 |
+
#: classes/amazon-s3-and-cloudfront.php:3469
|
191 |
msgid ""
|
192 |
"<strong>WP Offload Media Requirement Missing</strong> — Looks like you "
|
193 |
"don't have an image manipulation library installed on this server and "
|
195 |
"Please setup GD or ImageMagick."
|
196 |
msgstr ""
|
197 |
|
198 |
+
#: classes/amazon-s3-and-cloudfront.php:4182
|
199 |
#, php-format
|
200 |
msgid ""
|
201 |
"<a href=\"%s\">Define your access keys</a> to enable write access to the "
|
202 |
"bucket"
|
203 |
msgstr ""
|
204 |
|
205 |
+
#: classes/amazon-s3-and-cloudfront.php:4189
|
206 |
msgid "Quick Start Guide"
|
207 |
msgstr ""
|
208 |
|
209 |
+
#: classes/amazon-s3-and-cloudfront.php:4191
|
210 |
#, php-format
|
211 |
msgid ""
|
212 |
"Looks like we don't have write access to this bucket. It's likely that the "
|
215 |
"correctly."
|
216 |
msgstr ""
|
217 |
|
218 |
+
#: classes/amazon-s3-and-cloudfront.php:4193
|
219 |
#, php-format
|
220 |
msgid ""
|
221 |
"Looks like we don't have access to the buckets. It's likely that the user "
|
223 |
"Please see our %s for instructions on setting up permissions correctly."
|
224 |
msgstr ""
|
225 |
|
226 |
+
#: classes/amazon-s3-and-cloudfront.php:4354
|
227 |
msgid "WP Offload Media Activation"
|
228 |
msgstr ""
|
229 |
|
230 |
+
#: classes/amazon-s3-and-cloudfront.php:4355
|
231 |
msgid ""
|
232 |
"WP Offload Media Lite and WP Offload Media cannot both be active. We've "
|
233 |
"automatically deactivated WP Offload Media Lite."
|
234 |
msgstr ""
|
235 |
|
236 |
+
#: classes/amazon-s3-and-cloudfront.php:4357
|
237 |
msgid "WP Offload Media Lite Activation"
|
238 |
msgstr ""
|
239 |
|
240 |
+
#: classes/amazon-s3-and-cloudfront.php:4358
|
241 |
msgid ""
|
242 |
"WP Offload Media Lite and WP Offload Media cannot both be active. We've "
|
243 |
"automatically deactivated WP Offload Media."
|
244 |
msgstr ""
|
245 |
|
246 |
+
#: classes/amazon-s3-and-cloudfront.php:4410
|
247 |
msgid "More info »"
|
248 |
msgstr ""
|
249 |
|
250 |
+
#: classes/amazon-s3-and-cloudfront.php:4505
|
251 |
msgid "this doc"
|
252 |
msgstr ""
|
253 |
|
254 |
+
#: classes/amazon-s3-and-cloudfront.php:4507
|
255 |
msgid "WP Offload Media Feature Removed"
|
256 |
msgstr ""
|
257 |
|
258 |
+
#: classes/amazon-s3-and-cloudfront.php:4508
|
259 |
#, php-format
|
260 |
msgid ""
|
261 |
"You had the \"Always non-SSL\" option selected in your settings, but we've "
|
266 |
"to the old behavior."
|
267 |
msgstr ""
|
268 |
|
269 |
+
#: classes/amazon-s3-and-cloudfront.php:4538
|
270 |
msgid "Offload"
|
271 |
msgstr ""
|
272 |
|
273 |
+
#: classes/amazon-s3-and-cloudfront.php:4646
|
274 |
msgctxt "Storage provider key name"
|
275 |
msgid "Storage Provider"
|
276 |
msgstr ""
|
277 |
|
278 |
+
#: classes/amazon-s3-and-cloudfront.php:4647
|
279 |
msgctxt "Storage provider name"
|
280 |
msgid "Storage Provider"
|
281 |
msgstr ""
|
282 |
|
283 |
+
#: classes/amazon-s3-and-cloudfront.php:4648
|
284 |
msgctxt "Bucket name"
|
285 |
msgid "Bucket"
|
286 |
msgstr ""
|
287 |
|
288 |
+
#: classes/amazon-s3-and-cloudfront.php:4649
|
289 |
msgctxt "Path to file in bucket"
|
290 |
msgid "Path"
|
291 |
msgstr ""
|
292 |
|
293 |
+
#: classes/amazon-s3-and-cloudfront.php:4650
|
294 |
msgctxt "Location of bucket"
|
295 |
msgid "Region"
|
296 |
msgstr ""
|
297 |
|
298 |
+
#: classes/amazon-s3-and-cloudfront.php:4651
|
299 |
msgctxt "Access control list of the file in bucket"
|
300 |
msgid "Access"
|
301 |
msgstr ""
|
302 |
|
303 |
+
#: classes/amazon-s3-and-cloudfront.php:4652
|
304 |
msgid "URL"
|
305 |
msgstr ""
|
306 |
|
307 |
+
#: classes/amazon-s3-and-cloudfront.php:4876
|
308 |
msgid "Assets Pull"
|
309 |
msgstr ""
|
310 |
|
311 |
+
#: classes/amazon-s3-and-cloudfront.php:4877
|
312 |
msgid ""
|
313 |
"An addon for WP Offload Media to serve your site's JS, CSS, and other "
|
314 |
"enqueued assets from Amazon CloudFront or another CDN."
|
315 |
msgstr ""
|
316 |
|
317 |
+
#: classes/amazon-s3-and-cloudfront.php:4881
|
318 |
msgid "Feature"
|
319 |
msgstr ""
|
320 |
|
321 |
+
#: classes/amazon-s3-and-cloudfront.php:4927
|
322 |
#, php-format
|
323 |
msgid ""
|
324 |
"<strong>Amazon Web Services Plugin No Longer Required</strong> — As of "
|
329 |
"plugin, it should be safe to deactivate and delete it. %2$s"
|
330 |
msgstr ""
|
331 |
|
332 |
+
#: classes/amazon-s3-and-cloudfront.php:4959
|
333 |
#, php-format
|
334 |
msgid ""
|
335 |
"<strong>WP Offload Media Settings Moved</strong> — You now define your "
|
462 |
msgid "Settings"
|
463 |
msgstr ""
|
464 |
|
465 |
+
#: classes/as3cf-plugin-compatibility.php:579
|
466 |
#, php-format
|
467 |
msgid "The local directory %s does not exist and could not be created."
|
468 |
msgstr ""
|
469 |
|
470 |
+
#: classes/as3cf-plugin-compatibility.php:580
|
471 |
+
#: classes/as3cf-plugin-compatibility.php:592
|
472 |
#: classes/upgrades/upgrade-meta-wp-error.php:81
|
473 |
#, php-format
|
474 |
msgid ""
|
475 |
"There was an error attempting to download the file %s from the bucket: %s"
|
476 |
msgstr ""
|
477 |
|
478 |
+
#: classes/as3cf-plugin-compatibility.php:917
|
479 |
#, php-format
|
480 |
msgid ""
|
481 |
"<strong>Warning:</strong> This site is using PHP %1$s, in a future update WP "
|
482 |
"Offload Media will require PHP %2$s or later. %3$s"
|
483 |
msgstr ""
|
484 |
|
485 |
+
#: classes/providers/provider.php:434
|
486 |
+
msgid "Given Key File Path is invalid or could not be accessed."
|
487 |
+
msgstr ""
|
488 |
+
|
489 |
+
#: classes/providers/provider.php:444
|
490 |
+
#: classes/providers/provider.php:449
|
491 |
+
msgid "Could not read Key File Path's contents."
|
492 |
+
msgstr ""
|
493 |
+
|
494 |
+
#: classes/providers/provider.php:457
|
495 |
+
msgid "Given Key File Path does not contain valid JSON."
|
496 |
+
msgstr ""
|
497 |
+
|
498 |
+
#: classes/providers/provider.php:570
|
499 |
#, php-format
|
500 |
msgid "You must first <a href=\"%s\">set your access keys</a>."
|
501 |
msgstr ""
|
653 |
msgstr ""
|
654 |
|
655 |
#: view/bucket-select.php:38
|
656 |
+
#: view/provider-select.php:19
|
657 |
msgid "« Back"
|
658 |
msgstr ""
|
659 |
|
820 |
msgid "Show"
|
821 |
msgstr ""
|
822 |
|
823 |
+
#: view/provider-select.php:22
|
824 |
msgid "Storage Provider"
|
825 |
msgstr ""
|
826 |
|
827 |
+
#: view/provider-select.php:125
|
828 |
+
#, php-format
|
829 |
+
msgid ""
|
830 |
+
"<strong>Warning:</strong> You have %s offloaded Media Library items, you "
|
831 |
+
"should remove them from the bucket before changing storage provider."
|
832 |
+
msgstr ""
|
833 |
+
|
834 |
+
#: view/provider-select.php:148
|
835 |
msgid "Define access keys in wp-config.php"
|
836 |
msgstr ""
|
837 |
|
838 |
+
#: view/provider-select.php:157
|
839 |
#, php-format
|
840 |
msgctxt "Access Keys defined in multiple defines."
|
841 |
msgid ""
|
844 |
"config.php."
|
845 |
msgstr ""
|
846 |
|
847 |
+
#: view/provider-select.php:159
|
848 |
#, php-format
|
849 |
msgctxt "Access Keys defined in single define."
|
850 |
msgid ""
|
853 |
"config.php."
|
854 |
msgstr ""
|
855 |
|
856 |
+
#: view/provider-select.php:161
|
857 |
+
#: view/provider-select.php:211
|
858 |
msgctxt "joins multiple define keys in notice"
|
859 |
msgid " & "
|
860 |
msgstr ""
|
861 |
|
862 |
+
#: view/provider-select.php:170
|
863 |
msgid ""
|
864 |
"Please check your wp-config.php file as it looks like one of your access key "
|
865 |
"defines is missing or incorrect."
|
866 |
msgstr ""
|
867 |
|
868 |
+
#: view/provider-select.php:176
|
869 |
msgid ""
|
870 |
"Copy the following snippet <strong>near the top</strong> of your wp-config."
|
871 |
"php and replace the stars with the keys."
|
872 |
msgstr ""
|
873 |
|
874 |
+
#: view/provider-select.php:202
|
875 |
msgid "Define key file path in wp-config.php"
|
876 |
msgstr ""
|
877 |
|
878 |
+
#: view/provider-select.php:210
|
879 |
#, php-format
|
880 |
msgctxt "Key file path defined in single define."
|
881 |
msgid ""
|
884 |
"your wp-config.php."
|
885 |
msgstr ""
|
886 |
|
887 |
+
#: view/provider-select.php:216
|
888 |
msgid ""
|
889 |
"Copy the following snippet <strong>near the top</strong> of your wp-config."
|
890 |
"php and replace \"<strong>/path/to/key/file.json</strong>\"."
|
891 |
msgstr ""
|
892 |
|
893 |
+
#: view/provider-select.php:245
|
894 |
#, php-format
|
895 |
msgid "My server is on %s and I'd like to use IAM Roles"
|
896 |
msgstr ""
|
897 |
|
898 |
+
#: view/provider-select.php:252
|
899 |
#, php-format
|
900 |
msgid ""
|
901 |
"You've defined the '%1$s' constant in your wp-config.php. To select a "
|
903 |
"config.php."
|
904 |
msgstr ""
|
905 |
|
906 |
+
#: view/provider-select.php:255
|
907 |
#, php-format
|
908 |
msgid ""
|
909 |
"If you host your WordPress site on %s you should make use of IAM Roles. To "
|
911 |
"<strong>near the top</strong> of your wp-config.php."
|
912 |
msgstr ""
|
913 |
|
914 |
+
#: view/provider-select.php:281
|
915 |
msgid ""
|
916 |
"I understand the risks but I'd like to store access keys in the database "
|
917 |
"anyway (not recommended)"
|
918 |
msgstr ""
|
919 |
|
920 |
+
#: view/provider-select.php:288
|
921 |
msgid ""
|
922 |
"Storing your access keys in the database is less secure than the options "
|
923 |
"above, but if you're ok with that, go ahead and enter your keys in the form "
|
924 |
"below."
|
925 |
msgstr ""
|
926 |
|
927 |
+
#: view/provider-select.php:293
|
928 |
msgid "Access Key ID"
|
929 |
msgstr ""
|
930 |
|
931 |
+
#: view/provider-select.php:308
|
932 |
msgid "Secret Access Key"
|
933 |
msgstr ""
|
934 |
|
935 |
+
#: view/provider-select.php:335
|
936 |
msgid ""
|
937 |
"I understand the risks but I'd like to store the key file's contents in the "
|
938 |
"database anyway (not recommended)"
|
939 |
msgstr ""
|
940 |
|
941 |
+
#: view/provider-select.php:342
|
942 |
msgid ""
|
943 |
"Storing your key file's contents in the database is less secure than the "
|
944 |
"options above, but if you're ok with that, go ahead and enter your key "
|
945 |
"file's JSON data in the field below."
|
946 |
msgstr ""
|
947 |
|
948 |
+
#: view/provider-select.php:358
|
949 |
msgid "Next"
|
950 |
msgstr ""
|
951 |
|
952 |
+
#: view/provider-select.php:358
|
953 |
#: view/settings/media.php:261
|
954 |
msgid "Save Changes"
|
955 |
msgstr ""
|
readme.txt
CHANGED
@@ -1,10 +1,10 @@
|
|
1 |
-
=== WP Offload Media Lite for Amazon S3
|
2 |
Contributors: bradt, deliciousbrains, ianmjones
|
3 |
Tags: uploads, amazon, s3, amazon s3, digitalocean, digitalocean spaces, google cloud storage, gcs, mirror, admin, media, cdn, cloudfront
|
4 |
Requires at least: 4.7
|
5 |
-
Tested up to: 5.
|
6 |
Requires PHP: 5.5
|
7 |
-
Stable tag: 2.1
|
8 |
License: GPLv3
|
9 |
|
10 |
Copies files to Amazon S3, DigitalOcean Spaces or Google Cloud Storage as they are uploaded to the Media Library. Optionally configure Amazon CloudFront or another CDN for faster delivery.
|
@@ -78,6 +78,17 @@ This version requires PHP 5.3.3+ and the Amazon Web Services plugin
|
|
78 |
|
79 |
== Changelog ==
|
80 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
81 |
= WP Offload Media Lite 2.1 - 2019-03-05 =
|
82 |
* [Release Summary Blog Post](https://deliciousbrains.com/wp-offload-media-2-1-released/?utm_campaign=changelogs&utm_source=wordpress.org&utm_medium=free%2Bplugin%2Blisting)
|
83 |
* New: Google Cloud Storage is now supported
|
1 |
+
=== WP Offload Media Lite for Amazon S3, DigitalOcean Spaces, and Google Cloud Storage ===
|
2 |
Contributors: bradt, deliciousbrains, ianmjones
|
3 |
Tags: uploads, amazon, s3, amazon s3, digitalocean, digitalocean spaces, google cloud storage, gcs, mirror, admin, media, cdn, cloudfront
|
4 |
Requires at least: 4.7
|
5 |
+
Tested up to: 5.2
|
6 |
Requires PHP: 5.5
|
7 |
+
Stable tag: 2.1.1
|
8 |
License: GPLv3
|
9 |
|
10 |
Copies files to Amazon S3, DigitalOcean Spaces or Google Cloud Storage as they are uploaded to the Media Library. Optionally configure Amazon CloudFront or another CDN for faster delivery.
|
78 |
|
79 |
== Changelog ==
|
80 |
|
81 |
+
= WP Offload Media Lite 2.1.1 - 2019-04-29 =
|
82 |
+
* New: Multisite domain mapping via WordPress MU Domain Mapping plugin is now supported
|
83 |
+
* Improvement: Local to Provider content filtering performance improvements
|
84 |
+
* Improvement: Warning notice shown when changing storage provider and media already offloaded
|
85 |
+
* Bug fix: Media title not retaining characters stripped from filename
|
86 |
+
* Bug fix: Warning: is_readable(): open_basedir restriction in effect. File(~/.aws/config) is not within the allowed path(s)
|
87 |
+
* Bug fix: Fatal error when GCS Key File not accessible
|
88 |
+
* Bug fix: Non-image offloads on subsites with 4 digit IDs get duplicate subsite ID in bucket path
|
89 |
+
* Bug fix: No srcset added to img tag if filename includes non-ASCII characters
|
90 |
+
* Bug fix: Full size image URL saved to img tag src attribute when thumbnail picked if filename includes non-ASCII characters
|
91 |
+
|
92 |
= WP Offload Media Lite 2.1 - 2019-03-05 =
|
93 |
* [Release Summary Blog Post](https://deliciousbrains.com/wp-offload-media-2-1-released/?utm_campaign=changelogs&utm_source=wordpress.org&utm_medium=free%2Bplugin%2Blisting)
|
94 |
* New: Google Cloud Storage is now supported
|
view/notice.php
CHANGED
@@ -1,28 +1,28 @@
|
|
1 |
<?php
|
2 |
-
$type
|
3 |
-
$dismissible
|
4 |
-
$inline
|
5 |
-
$id
|
6 |
-
$style
|
7 |
-
$auto_p
|
8 |
-
$class
|
9 |
-
$show_callback
|
10 |
-
$callback_args
|
11 |
?>
|
12 |
-
<div <?php echo $id; ?> class="notice <?php echo $type; ?><?php echo ( $dismissible ) ? ' is-dismissible' : ''; ?> as3cf-notice <?php echo ( $inline ) ? ' inline' : ''; ?> <?php echo (
|
13 |
-
<?php if ( $auto_p ) : ?>
|
14 |
<p>
|
15 |
-
<?php endif; ?>
|
16 |
<?php echo $message; // xss ok ?>
|
17 |
<?php if ( false !== $show_callback && is_callable( $show_callback ) ) : ?>
|
18 |
<a href="#" class="as3cf-notice-toggle" data-hide="<?php _e( 'Hide', 'amazon-s3-and-cloudfront' ); ?>"><?php _e( 'Show', 'amazon-s3-and-cloudfront' ); ?></a>
|
19 |
<?php endif; ?>
|
20 |
-
<?php if ( $auto_p ) : ?>
|
21 |
</p>
|
22 |
<?php endif; ?>
|
23 |
-
<?php if ( false !== $show_callback && is_callable( $show_callback ) ) : ?>
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
<?php endif; ?>
|
28 |
</div>
|
1 |
<?php
|
2 |
+
$type = ( isset( $type ) ) ? $type : 'notice-info';
|
3 |
+
$dismissible = ( isset( $dismissible ) ) ? $dismissible : false;
|
4 |
+
$inline = ( isset( $inline ) ) ? $inline : false;
|
5 |
+
$id = ( isset( $id ) ) ? 'id="' . $id . '"' : '';
|
6 |
+
$style = ( isset( $style ) ) ? $style : '';
|
7 |
+
$auto_p = ( isset( $auto_p ) ) ? $auto_p : 'true';
|
8 |
+
$class = ( isset( $class ) ) ? $class : '';
|
9 |
+
$show_callback = ( isset( $show_callback ) && false !== $show_callback ) ? array( $GLOBALS[ $show_callback[0] ], $show_callback[1] ) : false;
|
10 |
+
$callback_args = ( isset( $callback_args ) ) ? $callback_args : array();
|
11 |
?>
|
12 |
+
<div <?php echo $id; ?> class="notice <?php echo $type; ?><?php echo ( $dismissible ) ? ' is-dismissible' : ''; ?> as3cf-notice <?php echo ( $inline ) ? ' inline' : ''; ?> <?php echo empty( $class ) ? '' : ' ' . $class; ?>" style="<?php echo $style; ?>">
|
13 |
+
<?php if ( $auto_p ) : ?>
|
14 |
<p>
|
15 |
+
<?php endif; ?>
|
16 |
<?php echo $message; // xss ok ?>
|
17 |
<?php if ( false !== $show_callback && is_callable( $show_callback ) ) : ?>
|
18 |
<a href="#" class="as3cf-notice-toggle" data-hide="<?php _e( 'Hide', 'amazon-s3-and-cloudfront' ); ?>"><?php _e( 'Show', 'amazon-s3-and-cloudfront' ); ?></a>
|
19 |
<?php endif; ?>
|
20 |
+
<?php if ( $auto_p ) : ?>
|
21 |
</p>
|
22 |
<?php endif; ?>
|
23 |
+
<?php if ( false !== $show_callback && is_callable( $show_callback ) ) : ?>
|
24 |
+
<div class="as3cf-notice-toggle-content" style="display: none;">
|
25 |
+
<?php call_user_func_array( $show_callback, $callback_args ); ?>
|
26 |
+
</div>
|
27 |
+
<?php endif; ?>
|
28 |
</div>
|
view/provider-select.php
CHANGED
@@ -9,11 +9,13 @@ $key_file_path_defined = $this->get_defined_setting( 'key-file-path',
|
|
9 |
$key_file_defined = $this->get_defined_setting( 'key-file', false );
|
10 |
$key_file_path_settings_constant = ( $key_file_path_defined || $key_file_defined ) ? $this->settings_constant() : false;
|
11 |
$providers = $this->get_provider_classes();
|
|
|
|
|
12 |
?>
|
13 |
|
14 |
<div class="as3cf-content as3cf-provider-select">
|
15 |
<?php
|
16 |
-
if ( ! empty( $_GET['action'] ) && 'change-provider' === $_GET['action'] && $this->get_setting( 'bucket' )
|
17 |
echo '<a href="' . $this->get_plugin_page_url() . '">' . __( '« Back', 'amazon-s3-and-cloudfront' ) . '</a>';
|
18 |
}
|
19 |
?>
|
@@ -116,7 +118,24 @@ $providers = $this->get_provider_classes();
|
|
116 |
<td></td>
|
117 |
<td>
|
118 |
<table>
|
119 |
-
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
120 |
if ( $provider_class::use_access_keys_allowed() ) {
|
121 |
?>
|
122 |
<!-- Defined Access Keys Begin -->
|
9 |
$key_file_defined = $this->get_defined_setting( 'key-file', false );
|
10 |
$key_file_path_settings_constant = ( $key_file_path_defined || $key_file_defined ) ? $this->settings_constant() : false;
|
11 |
$providers = $this->get_provider_classes();
|
12 |
+
$media_counts = $this->diagnostic_media_counts();
|
13 |
+
$media_offloaded_string = empty( $media_counts['s3'] ) ? '' : number_format( $media_counts['s3'] );
|
14 |
?>
|
15 |
|
16 |
<div class="as3cf-content as3cf-provider-select">
|
17 |
<?php
|
18 |
+
if ( ! empty( $_GET['action'] ) && 'change-provider' === $_GET['action'] && $this->get_setting( 'bucket' ) ) {
|
19 |
echo '<a href="' . $this->get_plugin_page_url() . '">' . __( '« Back', 'amazon-s3-and-cloudfront' ) . '</a>';
|
20 |
}
|
21 |
?>
|
118 |
<td></td>
|
119 |
<td>
|
120 |
<table>
|
121 |
+
<?php if ( ! $provider_selected && ! empty( $media_offloaded_string ) ) { ?>
|
122 |
+
<tr>
|
123 |
+
<td colspan="2">
|
124 |
+
<?php
|
125 |
+
$message_string = sprintf( __( '<strong>Warning:</strong> You have %s offloaded Media Library items, you should remove them from the bucket before changing storage provider.', 'amazon-s3-and-cloudfront' ), $media_offloaded_string );
|
126 |
+
$message_string .= ' ' . $this->more_info_link( '/wp-offload-media/doc/how-to-change-storage-provider/#mixed-provider' );
|
127 |
+
|
128 |
+
$media_offloaded_notice = array(
|
129 |
+
'message' => $message_string,
|
130 |
+
'id' => 'as3cf-media-offloaded-' . $provider_key,
|
131 |
+
'inline' => true,
|
132 |
+
'type' => 'notice-warning',
|
133 |
+
);
|
134 |
+
$this->render_view( 'notice', $media_offloaded_notice );
|
135 |
+
?>
|
136 |
+
</td>
|
137 |
+
</tr>
|
138 |
+
<?php }
|
139 |
if ( $provider_class::use_access_keys_allowed() ) {
|
140 |
?>
|
141 |
<!-- Defined Access Keys Begin -->
|
wordpress-s3.php
CHANGED
@@ -4,7 +4,7 @@ Plugin Name: WP Offload Media Lite
|
|
4 |
Plugin URI: http://wordpress.org/extend/plugins/amazon-s3-and-cloudfront/
|
5 |
Description: Automatically copies media uploads to Amazon S3, DigitalOcean Spaces or Google Cloud Storage for storage and delivery. Optionally configure Amazon CloudFront or another CDN for even faster delivery.
|
6 |
Author: Delicious Brains
|
7 |
-
Version: 2.1
|
8 |
Author URI: https://deliciousbrains.com/
|
9 |
Network: True
|
10 |
Text Domain: amazon-s3-and-cloudfront
|
@@ -26,7 +26,7 @@ Domain Path: /languages/
|
|
26 |
// Then completely rewritten.
|
27 |
*/
|
28 |
|
29 |
-
$GLOBALS['aws_meta']['amazon-s3-and-cloudfront']['version'] = '2.1';
|
30 |
|
31 |
require_once dirname( __FILE__ ) . '/classes/as3cf-compatibility-check.php';
|
32 |
|
4 |
Plugin URI: http://wordpress.org/extend/plugins/amazon-s3-and-cloudfront/
|
5 |
Description: Automatically copies media uploads to Amazon S3, DigitalOcean Spaces or Google Cloud Storage for storage and delivery. Optionally configure Amazon CloudFront or another CDN for even faster delivery.
|
6 |
Author: Delicious Brains
|
7 |
+
Version: 2.1.1
|
8 |
Author URI: https://deliciousbrains.com/
|
9 |
Network: True
|
10 |
Text Domain: amazon-s3-and-cloudfront
|
26 |
// Then completely rewritten.
|
27 |
*/
|
28 |
|
29 |
+
$GLOBALS['aws_meta']['amazon-s3-and-cloudfront']['version'] = '2.1.1';
|
30 |
|
31 |
require_once dirname( __FILE__ ) . '/classes/as3cf-compatibility-check.php';
|
32 |
|