Commit Graph

31295 Commits

Author SHA1 Message Date
Weston Ruter 93bcd86b2a Customize: Reduce peak memory usage by JSON-encoding settings and controls individually.
When there are hundreds of settings and controls (e.g. nav menu items and widget instances) the resulting object that is JSON-encoded can become very large, and `wp_json_encode()` can consume a lot of memory to serialize it. By breaking down the serialization into multiple calls the peak memory usage can be kept in line.

Moves logic out of `wp-admin/customize.php` into the `WP_Customize_Manager` class with new methods:

 * `is_ios()`
 * `get_document_title_template()`
 * `get_preview_url()`/`set_preview_url()`
 * `get_return_url()`/`set_return_url()`
 * `get_autofocus()`/`set_autofocus()`
 * `customize_pane_settings()`

Includes unit tests for these methods, for which the logic was formerly untestable in `customize.php`.

Fixes #33898.

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


git-svn-id: http://core.svn.wordpress.org/trunk@34233 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-17 19:42:26 +00:00
Boone Gorges bb43f72692 Prime comment meta caches in `WP_Comment_Query`.
The new 'update_comment_meta_cache' parameter, which defaults to `true`, can
be used to disable this behavior.

`update_comment_cache()` has been updated to support an `$update_meta_cache`
parameter, which also updates to true; this matches the pattern we use for
priming post caches.

See #16894.
Built from https://develop.svn.wordpress.org/trunk@34268


git-svn-id: http://core.svn.wordpress.org/trunk@34232 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-17 19:30:27 +00:00
Boone Gorges cdc6bc8ad5 Tell the `insert_user_meta` filter whether user is being updated.
`insert_user_meta` was introduced in [33708]. This changeset passes the
`$update` parameter to it.

Props tharsheblows, geminorum.
Fixes #31549.
Built from https://develop.svn.wordpress.org/trunk@34266


git-svn-id: http://core.svn.wordpress.org/trunk@34230 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-17 14:35:26 +00:00
Helen Hou-Sandí 48befcf361 Superglobals: Revert [34059] until further notice.
see #33837.

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


git-svn-id: http://core.svn.wordpress.org/trunk@34229 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-17 12:33:26 +00:00
Drew Jaynes e13d18969f Docs: Add a reminder to the DocBlock description for `add_query_arg()` mentioning that the output is not escaped by default.
Props brentvr for the initial patch. (first props!)
See #33912. See #32246.

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


git-svn-id: http://core.svn.wordpress.org/trunk@34228 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-17 09:39:24 +00:00
Sergey Biryukov 514eb11cf4 Revert unintended change from [34262].
See #33910.
Built from https://develop.svn.wordpress.org/trunk@34263


git-svn-id: http://core.svn.wordpress.org/trunk@34227 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-17 09:09:28 +00:00
Sergey Biryukov d91fe61405 Docs: Expand the DocBlock for `get_default_post_to_edit()`.
Props rabmalin.
Fixes #33910.
Built from https://develop.svn.wordpress.org/trunk@34262


git-svn-id: http://core.svn.wordpress.org/trunk@34226 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-17 09:06:34 +00:00
Scott Taylor 1f3dce8c75 Media: Ensure that HTML5 captions apply the `'img_caption_shortcode_width'`.
Props joemcgill.
Fixes #31053.

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


git-svn-id: http://core.svn.wordpress.org/trunk@34225 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-17 06:04:24 +00:00
Scott Taylor f3dd19c6e2 Media: In `wp_ajax_send_attachment_to_editor()`, the fallback logic for `$html` should be tucked into an `else` statement so it isn't run needlessly and overwritten.
Props tychay.
Fixes #32072.

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


git-svn-id: http://core.svn.wordpress.org/trunk@34224 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-17 05:55:25 +00:00
Scott Taylor 63efd92b11 Media: In `get_image_send_to_editor()`, allow a custom value for `$rel`.
Props tychay.
Fixes #32074.

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


git-svn-id: http://core.svn.wordpress.org/trunk@34223 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-17 05:46:24 +00:00
Scott Taylor ad0eb9c442 Media: In `wp_prepare_attachment_for_js()`, don't call `file_exists()` and `filesize()` to retrieve `$bytes` if the data is already present in `$meta`. This is how the same code in `attachment_submitbox_metadata()` already works.
Props polevaultweb.
Fixes #33214.

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


git-svn-id: http://core.svn.wordpress.org/trunk@34222 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-17 05:03:24 +00:00
Scott Taylor c871986819 Uploader: Fire 'wp_handle_upload' in `wp_upload_bits()`. Thusly, the filter in `wp_xmlrpc_server::mw_newMediaObject()` is redundant.
Props dllh.
Fixes #33539.

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


git-svn-id: http://core.svn.wordpress.org/trunk@34221 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-17 04:46:25 +00:00
Scott Taylor 58ac764859 Media List Table: remove the counts from the "views" portion of the toolbar, which are inconsistent with grid view. Also reduces complexity and removes potentially expensive count query.
Related to the toolbar view, remove the `wp_admin_canonical_url()` action in grid mode. Grid views that result from links from the list table view are lenses into the library and need to be indicated as such vs being a full attachment query.

Fixes #29744.

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


git-svn-id: http://core.svn.wordpress.org/trunk@34220 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-17 02:30:26 +00:00
Scott Taylor a87ef29978 In `wp_mime_type_icon()`, the length of the `$wilds` array varies depending on what is passed as `$mime`. Loop over `$wilds` instead of arbitrarily checking `$wilds[0]`.
Adds unit tests.

Fixes #33012.


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


git-svn-id: http://core.svn.wordpress.org/trunk@34219 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-17 00:37:25 +00:00
Scott Taylor 6759f04a24 Media JS: ensure that `wp.media.frame` (a static reference to the "current" `Frame`) is reset when a cached frame is opened.
Fixes #33458.

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


git-svn-id: http://core.svn.wordpress.org/trunk@34218 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-17 00:10:26 +00:00
Sergey Biryukov 444509e246 Docs: Expand the `$comment_approved` argument description for `'comment_post'` action.
Props cfinke.
Fixes #33903.
Built from https://develop.svn.wordpress.org/trunk@34253


git-svn-id: http://core.svn.wordpress.org/trunk@34217 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-16 22:30:23 +00:00
Boone Gorges 48b7547a52 Improve consistency of comment notification callback signatures.
Both `wp_new_comment_notify_moderator()` and `wp_new_comment_notify_postauthor()`
now accept a single argument: `$comment_ID`.

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


git-svn-id: http://core.svn.wordpress.org/trunk@34216 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-16 22:26:24 +00:00
Boone Gorges 85c00bd943 Move new user notification emails to `add_action()` callbacks.
When a new user is created in various places throughout the interface,
notifications are sent to the site admin and the new user. Previously, these
notifications were fired through direct calls to `wp_new_user_notification()`,
making it difficult to stop or modify the messages.

This changeset introduces a number of new action hooks in place of direct calls
to `wp_new_user_notification()`, and hooks the new wrapper function
`wp_send_new_user_notifications()` to these hooks.

Props dshanske, thomaswm, boonebgorges.
Fixes #33587.
Built from https://develop.svn.wordpress.org/trunk@34251


git-svn-id: http://core.svn.wordpress.org/trunk@34215 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-16 22:19:24 +00:00
Boone Gorges f6fb4653eb Don't notify post authors about spam comments.
[34106] moved post author notification to a hook, and in the process, missed
the 'spam' check. This changeset restores that check.

To make unit testing easier, the notification callbacks have been refactored
to return values: false when various conditions aren't met (eg, approved
comments should not trigger moderation emails), and the return value of the
`wp_notify_*()` function otherwise.

Props cfinke, kraftbj.
See #33587.
Built from https://develop.svn.wordpress.org/trunk@34250


git-svn-id: http://core.svn.wordpress.org/trunk@34214 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-16 22:00:25 +00:00
Sergey Biryukov a1050a58dc Add a missing Oxford comma on Export screen.
Props juhise.
Fixes #33906.
Built from https://develop.svn.wordpress.org/trunk@34249


git-svn-id: http://core.svn.wordpress.org/trunk@34213 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-16 21:34:39 +00:00
Boone Gorges 5eae305403 Throw a notice when an invalid tax is passed to `wp_insert_post()`.
Props jdgrimes.
Fixes #25477.
Built from https://develop.svn.wordpress.org/trunk@34248


git-svn-id: http://core.svn.wordpress.org/trunk@34212 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-16 19:25:26 +00:00
Boone Gorges 471fc6d9a5 Allow taxonomies to be non-public.
[13216] introduced the 'public' argument for `register_taxonomy()`. This param
was used to set defaults for 'show_ui' and a number of other params, but it
never did anything itself.

With this changeset, taxonomies registered with `public=false` will no longer
be queryable on the front end, ie via taxonomy archive queries.

Props wpsmith, ocean90, nacin, ericlewis, boonebgorges.
Fixes #21949.
Built from https://develop.svn.wordpress.org/trunk@34247


git-svn-id: http://core.svn.wordpress.org/trunk@34211 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-16 19:05:23 +00:00
Boone Gorges 6153a72796 Failed `get_term_by()` lookups should always return `false`.
Previously, we sometimes returned `null`.

Props charlestonsw, tyxla.
Fixes #33281.
Built from https://develop.svn.wordpress.org/trunk@34246


git-svn-id: http://core.svn.wordpress.org/trunk@34210 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-16 18:50:26 +00:00
Scott Taylor af593128a7 Revert [33925], by-reference array manipulation is breaking comments in some themes.
This implementation is losing its shine.

See #16894.

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


git-svn-id: http://core.svn.wordpress.org/trunk@34209 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-16 18:14:25 +00:00
Scott Taylor 956f076095 After [34160], also upgrade objects passed to `get_avatar()`.
See #32619.


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


git-svn-id: http://core.svn.wordpress.org/trunk@34208 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-16 17:34:24 +00:00
Sergey Biryukov bf36b458bb Docs: Update the DocBlock for `wp_page_menu()` to include `'before'`, `'after'`, and `'walker'` arguments added in [34200].
Align the `$defaults` array and include the default value for `'show_home'`.

Props stevegrunwell.
Fixes #11095.
Built from https://develop.svn.wordpress.org/trunk@34243


git-svn-id: http://core.svn.wordpress.org/trunk@34207 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-16 16:47:25 +00:00
Sergey Biryukov dd11460efa Add `register_post_type_args` filter for changing `register_post_type()` arguments before further processing.
Does not apply to built-in post types.

Props MikeSchinkel, nickciske, engelen, swissspidy.
Fixes #17447.
Built from https://develop.svn.wordpress.org/trunk@34242


git-svn-id: http://core.svn.wordpress.org/trunk@34206 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-16 15:47:25 +00:00
Scott Taylor 1e3807c10d `wp-admin/includes/template.php` is now a loader for 3 files made via `svn cp`:
* `Walker_Category_Checklist` class
* `WP_Internal_Pointers` class
* `template-functions.php`

This is BC for plugins that are loading `wp-admin/includes/template.php` for fun.

See #33413.

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


git-svn-id: http://core.svn.wordpress.org/trunk@34205 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-16 15:35:23 +00:00
Sergey Biryukov aee733684b Docs: Synchronize the `$timezone` parameter description between `get_lastpostdate()`, `get_lastpostmodified()`, and `_get_last_post_time()`.
See #17455.
Built from https://develop.svn.wordpress.org/trunk@34240


git-svn-id: http://core.svn.wordpress.org/trunk@34204 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-16 15:29:39 +00:00
Sergey Biryukov 15b69a0862 Docs: Fix some syntactical issues with the DocBlock for `wp_mail_failed` action, introduced in [34221].
Fixes #18926.
Built from https://develop.svn.wordpress.org/trunk@34239


git-svn-id: http://core.svn.wordpress.org/trunk@34203 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-16 15:13:26 +00:00
Sergey Biryukov d06f5817f8 Docs: Expand the DocBlock for the `WP_Theme::get_edit_link()` method, introduced in [34084].
Fixes #32376.
Built from https://develop.svn.wordpress.org/trunk@34238


git-svn-id: http://core.svn.wordpress.org/trunk@34202 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-16 15:01:27 +00:00
Drew Jaynes b1f176582c Docs: Add changelog entries for parameters where `WP_Comment` object support was added in [33961].
See #33638. See #32246.

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


git-svn-id: http://core.svn.wordpress.org/trunk@34201 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-16 13:52:25 +00:00
Drew Jaynes 4a69b4d275 Docs: Fix some syntactical issues with the DocBlock for the `WP_Theme->update` property, introduced in [33957].
Adds an `@since`.

See #33491. See #32246.

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


git-svn-id: http://core.svn.wordpress.org/trunk@34200 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-16 13:29:25 +00:00
Drew Jaynes fd60f500c3 Docs: Add a changelog entry for the addition of 'wp-admin', 'wp-content', and 'wp-includes' as reserved names for the `subdirectory_reserved_names` filter docs.
The new names were introduced in [33952].

See #33615. See #32246.

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


git-svn-id: http://core.svn.wordpress.org/trunk@34199 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-16 13:26:26 +00:00
Drew Jaynes 13c25f5f49 Docs: Put "it's" in its place (again).
Props kitchin.
Fixes #33894.

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


git-svn-id: http://core.svn.wordpress.org/trunk@34198 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-16 12:46:28 +00:00
Sergey Biryukov 53ac914bd5 Add a comment to strings where the ellipsis cannot be used due to `json_encode()`, placeholders, or external dependencies.
Fixes #32875.
Built from https://develop.svn.wordpress.org/trunk@34233


git-svn-id: http://core.svn.wordpress.org/trunk@34197 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-16 11:59:26 +00:00
Sergey Biryukov 19bcadf2a6 Reset Password: Move `<div>` out of `<p>` in `wp-login.php`.
Props ldinclaux.
Fixes #33892.
Built from https://develop.svn.wordpress.org/trunk@34232


git-svn-id: http://core.svn.wordpress.org/trunk@34196 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-16 11:46:25 +00:00
Sergey Biryukov 4c019c6aee Comments: Fix a fatal error in Comments meta box after [34223].
Props tyxla.
Fixes #33893. See #33413.
Built from https://develop.svn.wordpress.org/trunk@34231


git-svn-id: http://core.svn.wordpress.org/trunk@34195 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-16 11:37:25 +00:00
Drew Jaynes faa54e4dc2 Docs: Make a minor adjustment to the description syntax for the optional `$comment` argument in the DocBlock for `comment_link()`, introduced in [34071].
See #33638. See #32246.

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


git-svn-id: http://core.svn.wordpress.org/trunk@34194 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-16 11:02:24 +00:00
Drew Jaynes 3c73b53f66 Docs: Remove markdown from the DocBlock summary for `WP_List_Table::get_primary_column()`, introduced in [34166].
The PHP inline documentation standards for [https://make.wordpress.org/core/handbook/best-practices/inline-documentation-standards/php/#summary-formerly-short-description summaries] call for not using an markup or markdown. Also, using the full Class::method() in this context allows for better clarity in what is being referenced.

See #33854. See #32246.

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


git-svn-id: http://core.svn.wordpress.org/trunk@34193 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-16 10:51:25 +00:00
Drew Jaynes c52a7d863e Docs: Add a changelog entry for the switch to using `wp_get_attachment_url()` instead of the guid for determining the header image URL in `Custom_Image_Header::step_3()`.
The change was introduced in [34188].

See #33319.

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


git-svn-id: http://core.svn.wordpress.org/trunk@34192 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-16 10:43:25 +00:00
Drew Jaynes 4279a9c39e Docs: Improve documentation for the `WP_Object_Cache` class.
Spaces out parameter documentation for readability, fixes some minor syntactical issues, and adds some missing `@access` tags or reorders tags according to the PHP docs standards.

Also, documents `&$found`, the fourth parameter for the `get()` method, and adds missing parameter and return descriptions for the `_exists()` utility method.

See #32246.

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


git-svn-id: http://core.svn.wordpress.org/trunk@34191 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-16 10:03:26 +00:00
Drew Jaynes 5172621c1d Docs: Remove an errant change made to a `_deprecated_function()` call in `wp_cache_reset()` introduced in [34225].
See #32246.

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


git-svn-id: http://core.svn.wordpress.org/trunk@34190 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-16 09:42:24 +00:00
Drew Jaynes 4e4737685e Docs: Add more complete documentation for top-level object cache functionality.
Adds some `@see` tags for corresponding `WP_Object_Cache` methods to DocBlocks for top-level functions. Also adds a standard description for the `@global` tags, spacing for parameter docs readability, and finally, properly marks optional parameters as such.

See #32246.

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


git-svn-id: http://core.svn.wordpress.org/trunk@34189 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-16 09:40:25 +00:00
Drew Jaynes a7ea95f53a Docs: Add documentation for `$object_id`, the optional second parameter in `current_user_can()` and `WP_User::has_cap()`, and the optional third parameter in `map_meta_cap()`.
This change introduces the vernacular of "meta" vs "primitive" capabilities to core docs, and providing examples for each inline and attempts to make it clear that `$object_id` is really only useful if the passed `$capability` is of the meta cap variety.

Props jliman for the initial patch.
Fixes #32694.

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


git-svn-id: http://core.svn.wordpress.org/trunk@34188 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-16 07:36:32 +00:00
Scott Taylor 5920e8eb13 Move `WP_Post_Comments_List_Table` to its own file.
See #33413.

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


git-svn-id: http://core.svn.wordpress.org/trunk@34187 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-16 06:53:24 +00:00
Sergey Biryukov 61bef72b95 Fix a typo in `wptexturize()` and `wp_replace_in_html_tags()` comments.
Props bobbingwide.
See #15694.
Built from https://develop.svn.wordpress.org/trunk@34222


git-svn-id: http://core.svn.wordpress.org/trunk@34186 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-16 05:54:26 +00:00
Aaron Jorbin 1bd52ae1aa Fire Action when mail exception is thrown.
new action is wp_mail_failed which contains a WP_Error object with the phpmailerException code, message and an array with the mail information. Plugins can hook in and log when mails fail to send due to a phpmailer issue.

Props soulseekah
Fixes #18926


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


git-svn-id: http://core.svn.wordpress.org/trunk@34185 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-15 23:51:23 +00:00
Weston Ruter 628caeb487 Customizer: Smooth animation for closing accordions in the available nav menu items pane.
Props tyxla.
Fixes #33360 for trunk.

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


git-svn-id: http://core.svn.wordpress.org/trunk@34183 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-15 23:40:24 +00:00
Boone Gorges a7e229637e Improve validation of `user_login` and `user_nicename` length.
The `user_login` field only allows 60 characters, and `user_nicename` allows
50. However, there are no protections in the interface, and few in the code,
that prevent the creation of users with values in excess of these limits. Prior
to recent changes in `$wpdb`, users were generally created anyway, MySQL
having performed the necessary truncation. More recently, the `INSERT`s and
`UPDATE`s simply fail, with no real feedback on the nature of the failure.

This changeset addresses the issue in a number of ways:
* On the user-new.php and network/user-new.php panels, don't allow input in excess of the maximum field length.
* In `wp_insert_user()`, throw an error if the value provided for `'user_login'` or `'user_nicename'` exceeds the maximum field length.
* In `wp_insert_user()`, when using `'user_login'` to generate a default value for `'user_nicename'`, ensure that the nicename is properly truncated, even when suffixed for uniqueness (username-2, etc).

Props dipesh.kakadiya, utkarshpatel, tommarshall, boonebgorges.
Fixes #33793.
Built from https://develop.svn.wordpress.org/trunk@34218


git-svn-id: http://core.svn.wordpress.org/trunk@34182 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-15 22:14:26 +00:00