Commit Graph

34677 Commits

Author SHA1 Message Date
Dominik Schilling aa561e67a1 Bootstrap: Enhance core's memory limit handling.
* Don't lower memory limit if the current limit is greater than `WP_MAX_MEMORY_LIMIT`.
* Set `WP_MEMORY_LIMIT` and `WP_MAX_MEMORY_LIMIT` to current limit if the `memory_limit` setting can't be changed at runtime.
* Use `wp_convert_hr_to_bytes()` when parsing the value of the `memory_limit` setting because it can be a shorthand or an integer value.
* Introduce `wp_raise_memory_limit( $context )` to raise the PHP memory limit for memory intensive processes. This DRYs up some logic and includes the existing `admin_memory_limit` and `image_memory_limit` filters. The function can also be used for custom contexts, the `{$context}_memory_limit` filter allows to customize the limit.
* Introduce `wp_is_ini_value_changeable( $setting )` to determine whether a PHP ini value is changeable at runtime.
* Remove a `function_exists( 'memory_get_usage' )` check. Since PHP 5.2.1 support for memory limit is always enabled.

Related commits: [38011-38013]

Props jrf, A5hleyRich, swissspidy, ocean90.
Fixes #32075.
Built from https://develop.svn.wordpress.org/trunk@38015


git-svn-id: http://core.svn.wordpress.org/trunk@37956 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-08 14:37:30 +00:00
Sergey Biryukov d1cd600733 Docs: Fix typo in a comment in `Core_Upgrader::upgrade()`.
Props Zuige.
Fixes #37314.
Built from https://develop.svn.wordpress.org/trunk@38014


git-svn-id: http://core.svn.wordpress.org/trunk@37955 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-08 13:19:30 +00:00
Dominik Schilling 682e028a5a Bootstrap: Clean up `wp_convert_hr_to_bytes()`.
* Don't return a value higher than `PHP_INT_MAX`.
* Add unit tests.

Props jrf.
See #32075.
Built from https://develop.svn.wordpress.org/trunk@38013


git-svn-id: http://core.svn.wordpress.org/trunk@37954 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-08 12:54:28 +00:00
Dominik Schilling 5eae48b414 Boostrap: Move `wp_convert_hr_to_bytes()` to wp-includes/load.php.
`wp_convert_hr_to_bytes()` was previously defined in wp-includes/media.php because it's only used by `wp_max_upload_size()` in the same file.
Moving this function to load.php allows us to improve core's memory limit handling.

See #32075.
Built from https://develop.svn.wordpress.org/trunk@38012


git-svn-id: http://core.svn.wordpress.org/trunk@37953 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-08 11:27:27 +00:00
Dominik Schilling 561018677f Constants: Move constants for data sizes before constants for memory limits.
This allows us to improve core's memory limit handling.

See #32075.
Built from https://develop.svn.wordpress.org/trunk@38011


git-svn-id: http://core.svn.wordpress.org/trunk@37952 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-08 11:19:29 +00:00
Peter Wilson b9b69676d8 Embeds: Include locale stylesheets after default styles.
Fire `locale_stylesheet` action after the `wp_print_styles` action in the embeds header to match the order in `wp_head`.

Props swissspidy.
Fixes #36839.

Built from https://develop.svn.wordpress.org/trunk@38010


git-svn-id: http://core.svn.wordpress.org/trunk@37951 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-08 06:07:33 +00:00
Rachel Baker c283b3c0c6 Revisions: Allow autosaves to be restored when revisions are disabled.
Fixes bug introduced in [23639] where autosaves are not restored if revisions are disabled.

Props adamsilverstein.
Fixes #36262.



Built from https://develop.svn.wordpress.org/trunk@38009


git-svn-id: http://core.svn.wordpress.org/trunk@37950 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-08 01:16:31 +00:00
Jeremy Felt 602f231a26 Docs: Correct the description of the `$network_id` in `WP_Site_Query`.
Passing 0 for `network_id` results in a query across all networks.

See #35791.

Built from https://develop.svn.wordpress.org/trunk@38008


git-svn-id: http://core.svn.wordpress.org/trunk@37949 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-07 20:36:30 +00:00
Jeremy Felt 771212f20a Multisite: Correct logic used to display an Edit User link after adding a user.
Previously, if a user was added with the checkbox for no confirmation selected and an error was then encountered in `wpmu_activate_signup()`, a fatal error would trigger because `$new_user` was a `WP_Error` object rather than a user.

Fixes #37223.

Built from https://develop.svn.wordpress.org/trunk@38007


git-svn-id: http://core.svn.wordpress.org/trunk@37948 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-07 17:48:29 +00:00
Jeremy Felt 24804144de Multisite: Add a nonce to the "Cancel" URL when changing a site's admin email.
Props scottbasgaard.
Fixes #36954.

Built from https://develop.svn.wordpress.org/trunk@38006


git-svn-id: http://core.svn.wordpress.org/trunk@37947 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-07 17:13:27 +00:00
Boone Gorges 397f08e7d3 Tests: Ensure that test for invalid user ID actually uses an invalid user ID.
This prevents false positives when the ID column's incrementor has exceeded the
hardcoded invalid ID.

Fixes #37308.
Built from https://develop.svn.wordpress.org/trunk@38005


git-svn-id: http://core.svn.wordpress.org/trunk@37946 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-07 16:48:28 +00:00
Dominik Schilling 30420b7d19 Screen API: After [37972], ensure that `$box['args']` is an array before trying to access `__widget_basename`.
This prevents a PHP fatal error on the Nav Menus screen where `$args` is an object.

Props elrae.
Fixes #35021.
Built from https://develop.svn.wordpress.org/trunk@38004


git-svn-id: http://core.svn.wordpress.org/trunk@37945 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-07 16:39:29 +00:00
Jeremy Felt 7b5cd0c021 Multisite: Don't store `max_num_pages` in `WP_Network_Query` query cache.
This value can be easily calculated with available data.

Props spacedmonkey.
Fixes #32504.

Built from https://develop.svn.wordpress.org/trunk@38003


git-svn-id: http://core.svn.wordpress.org/trunk@37944 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-07 15:52:28 +00:00
Jeremy Felt d11c9de613 Multisite: Don't store `max_num_pages` in `WP_Site_Query` query cache.
This value can be easily calculated with available data.

Props spacedmonkey.
Fixes #35791.

Built from https://develop.svn.wordpress.org/trunk@38002


git-svn-id: http://core.svn.wordpress.org/trunk@37943 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-07 15:32:29 +00:00
Boone Gorges c6d5f78241 Comments: Cache results of `SELECT FOUND_ROWS()` query.
When comment IDs are fetched from the cache rather than the database,
the subsequent `SELECT FOUND_ROWS()` query will not return the correct value.
To avoid unnecessary queries, we cache the results of the `found_comments`
query alongside the comment IDs.

Props spacedmonkey.
Fixes #37184.
Built from https://develop.svn.wordpress.org/trunk@38001


git-svn-id: http://core.svn.wordpress.org/trunk@37942 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-07 14:27:38 +00:00
Dominik Schilling 1630c97795 Text Changes: Unify a few more permission error messages which were missed in [37914].
Props ramiy.
Fixes #34521.
Built from https://develop.svn.wordpress.org/trunk@37999


git-svn-id: http://core.svn.wordpress.org/trunk@37940 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-07 11:33:33 +00:00
Dominik Schilling 65eb29ad46 Import: Merge two similar strings.
Props ramiy.
See #34521.
Built from https://develop.svn.wordpress.org/trunk@37998


git-svn-id: http://core.svn.wordpress.org/trunk@37939 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-07 10:53:28 +00:00
Sergey Biryukov 6953feb795 Unit Tests: Add description for `data_get_comments_number_text_declension()`.
See #13651.
Built from https://develop.svn.wordpress.org/trunk@37997


git-svn-id: http://core.svn.wordpress.org/trunk@37938 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-07 10:45:43 +00:00
Jeremy Felt b69192f9ec Meta: Don't pass an empty `$meta_key` to `get_metadata()`.
This doesn't break anything, but also isn't necessary.

Props sc0ttkclark.
See #35658.

Built from https://develop.svn.wordpress.org/trunk@37996


git-svn-id: http://core.svn.wordpress.org/trunk@37937 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-07 00:18:27 +00:00
Jeremy Felt c243edf41a Meta: Introduce an initial set of tests for `register_meta()`.
Props sc0ttkclark, ericlewis.
See #35658.

Built from https://develop.svn.wordpress.org/trunk@37995


git-svn-id: http://core.svn.wordpress.org/trunk@37936 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-07 00:15:30 +00:00
Gary Pendergast a37d3051f4 Docs: Fix an incorrect `@since` comment.
See #36495.

Built from https://develop.svn.wordpress.org/trunk@37994


git-svn-id: http://core.svn.wordpress.org/trunk@37935 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-06 23:49:30 +00:00
Dominik Schilling 53bd2cd015 Post WordPress 4.6 Beta 2 version bump.
Built from https://develop.svn.wordpress.org/trunk@37993


git-svn-id: http://core.svn.wordpress.org/trunk@37934 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-06 18:39:29 +00:00
Dominik Schilling 3e12e32829 WordPress 4.6 Beta 2.
Built from https://develop.svn.wordpress.org/trunk@37992


git-svn-id: http://core.svn.wordpress.org/trunk@37933 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-06 18:25:37 +00:00
Helen Hou-Sandí 5a2ffe61f6 Meta: Make registration error conditions return consistently.
In doing this, non-core object types are no longer forcibly blocked and are instead checked against `wp_object_type_exists()` which has a filterable return value. Still, filter that at your own risk.

props Faison for the initial patch.
see 35658.

Built from https://develop.svn.wordpress.org/trunk@37991


git-svn-id: http://core.svn.wordpress.org/trunk@37932 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-06 18:09:32 +00:00
Jeremy Felt dc57f35048 Meta: Ensure `$object_subtype` is available before use in `register_meta()`.
Props sc0ttkclark.
See #35658.

Built from https://develop.svn.wordpress.org/trunk@37990


git-svn-id: http://core.svn.wordpress.org/trunk@37931 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-06 18:01:30 +00:00
Ryan McCue ff6a4875a8 HTTP API: Switch back to returning an array.
The array-compatibility object we started returning in r37428 unfortunately isn't enough like an array. In particular, `is_array()` checks fail, despite the object implementing ArrayAccess. Mea culpa.

This moves the WP_HTTP_Response object to a new http_response key in the array, and changes the value back to an actual array.

Fixes #37097.
See #33055.

Built from https://develop.svn.wordpress.org/trunk@37989


git-svn-id: http://core.svn.wordpress.org/trunk@37930 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-06 17:51:30 +00:00
Dominik Schilling b9d99d3288 Embeds: Don't print the HTML for a featured image if a post has no featured image.
See [36693].
Fixes #37288.
Built from https://develop.svn.wordpress.org/trunk@37988


git-svn-id: http://core.svn.wordpress.org/trunk@37929 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-06 17:08:31 +00:00
Sergey Biryukov d9b4f1e50b I18N: Introduce an on/off switch for locales where comment number needs to be declined.
When enabled, the switch would override the theme's pseudo-plural `'% Comments'` string with a correct form of `_n( '%s Comment', '%s Comments', $number )`.

Historically, `comments_popup_link()` and `get_comments_number_text()` did not support plural forms and used a pseudo-plural style instead, so some locales were forced to come up with workarounds to display the number of comments in their language correctly.

This change should make those functions more i18n-friendly.

Fixes #13651.
Built from https://develop.svn.wordpress.org/trunk@37987


git-svn-id: http://core.svn.wordpress.org/trunk@37928 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-06 14:46:32 +00:00
Joe McGill 7e5885b874 Media: Don't use 'full' as array key in `wp_calculate_image_srcset()`.
In `wp_calculate_image_srcset()` we get an array of image sizes
associated with an attachment and then add the original image's
information to the array before processing the `srcset`. In doing
so, we set the original data to a `$image_sizes['full']` key, which
could stomp on any custom image sizes using `full` as a size name.

This avoid the issues by adding the original data without a named
key, which is never referenced anyway.

Props jaspermdegroot.
Fixes #36345.
Built from https://develop.svn.wordpress.org/trunk@37986


git-svn-id: http://core.svn.wordpress.org/trunk@37927 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-06 14:05:29 +00:00
Sergey Biryukov 139387b7e5 Docs: Use 3-digit, x.x.x-style semantic versioning for `_doing_it_wrong()`, `_deprecated_function()`, `_deprecated_argument()`, and `_deprecated_file()` throughout core.
Props metodiew.
Fixes #36495.
Built from https://develop.svn.wordpress.org/trunk@37985


git-svn-id: http://core.svn.wordpress.org/trunk@37926 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-06 12:40:29 +00:00
Dominik Schilling 3c8c6fee4d Customize: Fix panel indentation in Firefox.
In Firefox on Windows the menus and widgets panel weren't fully visible due to a miscalculation of the width of a panel, caused by a visible scrollbar.

Props wpfo.
Fixes #34622.
Built from https://develop.svn.wordpress.org/trunk@37984


git-svn-id: http://core.svn.wordpress.org/trunk@37925 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-06 11:32:27 +00:00
Dominik Schilling dc994f5db5 Plugins: In `plugin_basename()` sort plugin paths before resolving symlinks.
`arsort()` sorts the paths reverse-alphabetically while preserving the keys. It results in a longer path being listed before a shorter one with the same base directory(ies).

Props jdgrimes, ocean90.
Fixes #28441.
Built from https://develop.svn.wordpress.org/trunk@37983


git-svn-id: http://core.svn.wordpress.org/trunk@37924 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-06 09:45:27 +00:00
Weston Ruter f1b7a9c77d Customize: Ensure that `WP_Customize_Setting::value()` can return a previewed value for aggregated multidimensionals.
Fixes #37294.

Built from https://develop.svn.wordpress.org/trunk@37982


git-svn-id: http://core.svn.wordpress.org/trunk@37923 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-06 05:59:28 +00:00
Weston Ruter 64a2d70a90 Customize: Ensure that `WP_Customize_Nav_Menu_Section` is able to represent a placeholder nav menu.
Placeholder nav menus (ones that have yet to be saved into the DB) have negative integer IDs.

Fixes #37293.
Props valendesigns, stubgo, westonruter.

Built from https://develop.svn.wordpress.org/trunk@37981


git-svn-id: http://core.svn.wordpress.org/trunk@37922 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-06 05:33:30 +00:00
Dominik Schilling e88dda587d XML-RPC: Add unit test to verify IXR changes in [37244].
Props aaires.
Fixes #36586.
Built from https://develop.svn.wordpress.org/trunk@37980


git-svn-id: http://core.svn.wordpress.org/trunk@37921 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-05 21:59:27 +00:00
Sergey Biryukov de1fab0b66 I18N: Adjust the regex in `wp_maybe_decline_date()` to avoid `\w` and `\b`, as they don't work with Unicode characters correctly in PHP 5.3.3 and earlier versions.
See [37975] for unit tests.

See #36790.
Built from https://develop.svn.wordpress.org/trunk@37979


git-svn-id: http://core.svn.wordpress.org/trunk@37920 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-05 21:43:30 +00:00
Dominik Schilling bfe46464c5 Upgrade/Install: Change priority for theme/update update rows.
`wp_plugin_update_rows()` and `wp_theme_update_rows()` are using the site transients `update_plugins` and `update_themes` which are set by `wp_update_plugins()` and `wp_update_themes()`. Both functions are hooked into `load-plugins.php` and `load-themes.php`. Therefore the update rows need to be registered after the transients were populated.

See #13071.
Built from https://develop.svn.wordpress.org/trunk@37978


git-svn-id: http://core.svn.wordpress.org/trunk@37919 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-05 16:46:29 +00:00
Dominik Schilling 51579c49a8 Embeds: After [37745], check if a featured image exists before attaching an event listener.
Props swissspidy.
Fixes #35657.
Built from https://develop.svn.wordpress.org/trunk@37977


git-svn-id: http://core.svn.wordpress.org/trunk@37918 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-05 16:16:57 +00:00
Pascal Birchler 685cce51d2 Update/Install: Reject invalid messages in the Shiny Updates `postMessage` handler.
This prevents conflicts with third-party messages (e.g. sent by browser extensions). The updates script expects a specific JSON-encoded message and now bails early if it's not valid JSON.

Fixes #37125.
Built from https://develop.svn.wordpress.org/trunk@37976


git-svn-id: http://core.svn.wordpress.org/trunk@37917 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-05 16:16:28 +00:00
Dominik Schilling a728528542 I18N: Add tests for `wp_maybe_decline_date()`.
Reverts [37718], `$wp_locale` needs to be cloned.

Props SergeyBiryukov.
Fixes #36790.
Built from https://develop.svn.wordpress.org/trunk@37975


git-svn-id: http://core.svn.wordpress.org/trunk@37916 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-05 16:09:28 +00:00
Pascal Birchler f2c4003dde Update/Install: Fix plugin updates from the details modal on the Dashboard.
The plugin details modal has been greatly improved in [37714]. However, Shiny Updates aren't yet implemented on the Dashboard. Therefore, we need to fall back to The Bleak Screen of Sadness. Otherwise nothing happens when trying to install an update from inside the modal.

Fixes #37131. See #37126.
Built from https://develop.svn.wordpress.org/trunk@37974


git-svn-id: http://core.svn.wordpress.org/trunk@37915 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-05 15:37:28 +00:00
Pascal Birchler 600e511533 Update/Install: Fix plugin updates from the details modal on `update-core.php`.
The plugin details modal has been greatly improved in [37714]. However, Shiny Updates aren't yet implemented on the WordPress Updates screen. Therefore, we need to fall back to The Bleak Screen of Sadness. Otherwise nothing happens when trying to install an update from inside the modal.

Props Nikschavan.
Fixes #37126.
Built from https://develop.svn.wordpress.org/trunk@37973


git-svn-id: http://core.svn.wordpress.org/trunk@37914 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-05 15:32:28 +00:00
Dominik Schilling 3d6fc45834 Dashboard: Don't add a "Configure" link to the toggle button.
The HTML for the toggle gets appended to the widget name which is later used for the widget title and the screen reader text of the toggle button. Storing the original widget name in the arguments allows us to use the name without the HTML for the screen reader text and doesn't require further changes by plugin developers.

Props nicholas_io, swissspidy.
Fixes #35021.
Built from https://develop.svn.wordpress.org/trunk@37972


git-svn-id: http://core.svn.wordpress.org/trunk@37913 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-05 15:22:29 +00:00
Pascal Birchler b55493e3e6 Update/Install: Correctly decrement the update count after translation updates.
After [37714], an error was unnecessarily being displayed in the JavaScript console when updating translations on `wp-admin/update-core.php`. Let's not throw an error in these cases.

Props afercia.
Fixes #37127.
Built from https://develop.svn.wordpress.org/trunk@37971


git-svn-id: http://core.svn.wordpress.org/trunk@37912 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-05 15:18:27 +00:00
Pascal Birchler 848318aeb1 Update/Install: Trigger a JS event when updating a theme.
For plugins a `'wp-plugin-updating'` event is triggered, for themes there's now the `'wp-theme-updating'` equivalent.

Props DavidAnderson.
Fixes #37216.
Built from https://develop.svn.wordpress.org/trunk@37970


git-svn-id: http://core.svn.wordpress.org/trunk@37911 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-05 15:09:28 +00:00
Pascal Birchler 066360f569 Update/Install: Trigger the correct event after installing an importer plugin.
This fixes a typo inside `wp.updates.installImporterSuccess()` as it's about installing an importer, not an installer.

Fixes #37273.
Built from https://develop.svn.wordpress.org/trunk@37969


git-svn-id: http://core.svn.wordpress.org/trunk@37910 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-05 15:05:28 +00:00
Dominik Schilling c50abe823f Themes: After [37742], fix the color of the "Upload Theme" button to match other page title actions.
Props afercia.
Fixes #35457.
Built from https://develop.svn.wordpress.org/trunk@37968


git-svn-id: http://core.svn.wordpress.org/trunk@37909 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-05 14:42:29 +00:00
Dominik Schilling bcf027eda1 Themes: Avoid announcing the theme search results too many times.
Props afercia.
Fixes #36848.
Built from https://develop.svn.wordpress.org/trunk@37967


git-svn-id: http://core.svn.wordpress.org/trunk@37908 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-05 14:38:29 +00:00
Dominik Schilling de3b2db1e2 Media: Improve form validation errors handling when editing images.
* Use the same check for a numeric value used on the crop fields on all the other fields: don't display "NaN", just empty the field.
* Remove the inline script that runs the initialization of the image editor and call it after the editor UI is fully ready.

Props afercia.
Fixes #36316.
Built from https://develop.svn.wordpress.org/trunk@37966


git-svn-id: http://core.svn.wordpress.org/trunk@37907 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-05 13:37:29 +00:00
Dominik Schilling 4594006ca6 Plugins: Clean up `uninstall_plugins` option during database upgrade.
`register_uninstall_hook()` is designed to be given a function callback (or a static class variable), not an array/object instance. This got blocked in [16339] but the option itself was never cleaned up.

Props polevaultweb.
Fixes #31625.
Built from https://develop.svn.wordpress.org/trunk@37965


git-svn-id: http://core.svn.wordpress.org/trunk@37906 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-07-05 13:28:29 +00:00