When site has no GMT offset saved, the expiry datetime causes problems
benlk opened this issue · 3 comments
benlk commented
When the 'gmt_offset'
value is a number (which is pretty much everywhen), the DateTimeZone constructor complains that the number is not a valid timezone.
nprapi-wordpress/push_story.php
Lines 676 to 679 in 853a301
PHP Fatal Error: Uncaught exception 'Exception' with message 'DateTimeZone::__construct(): Unknown or bad timezone (-4)' in /plugins/npr-story-api/psuh_story.php:676'
- make plugin draw from
'timezone_string'
when'gmt_offset'
is unset, in functionnprstory_get_post_expiry_datetime()
and in functionnprstory_save_datetime()
- provide fallback behavior for when those meta are not set
- add test case that runs
nprstory_get_post_expiry_datetime( $post )
with every valid GMT offset and with every time zone and with nothing set for either.- when running against every time zone, the list at https://secure.php.net/manual/en/datetimezone.listabbreviations.php will need to be wp_list_pluck'd to get the timezone_id value, and then will need to be sort/uniq'd.
benlk commented
Timezones are not a specific GMT offset; we need a GMT offset for this. A better approach is described in #53 that makes use of WordPress's tools for converting timezones to GMT offsets.
benlk commented
Automated tests for #53 pass.
Human-run tests for #53 should perform the following tasks:
- Activate the plugin
- Configure the plugin with test API credentials
- Create a new post.
- Does the NPR Story API meta box appear on the page?
- Are there no errors in the server console?
- Change the time zone in Dashboard > Settings > General to a new time zone. Repeat step 3 until satisfied.
- Push a post to the API.
- Pull a post from the API.