Damian Mooyman
e76f01ebfa
Merge pull request #7496 from open-sausages/pulls/4/inspect-upgrade-warnings
...
Upgrading rules for new inspect/warning capabilities
2017-10-24 15:25:34 +13:00
Damian Mooyman
b9cb1e69e6
BUG Replace phpdotenv with thread-safe replacement
2017-10-20 18:43:11 +13:00
Ingo Schommer
297253170c
Upgrading rules for new inspect/warning capabilities
2017-10-19 08:51:18 +11:00
Daniel Hensby
6a8540d6d6
Merge pull request #7488 from open-sausages/pulls/4.0/you-have-my-permission-to-htaccess
...
BUG Fix documentation for permissions
2017-10-18 15:33:30 +01:00
Jake B
97dfd9ac47
DOC Add example for using resource location for pages / modeladmin
2017-10-18 15:55:50 +11:00
Christopher Joe
0b3363d0a0
BUG Fix documentation for permissions
2017-10-18 13:21:55 +13:00
Reece Alexander
8a1e466c75
get_environment_type() still exists in SS4
2017-10-17 13:00:24 +01:00
Ingo Schommer
feadca875c
Clearer .htaccess upgrading instructions
2017-10-10 10:28:02 +02:00
Ingo Schommer
823bc3b9ce
Simplified upgrading docs around index.php
...
No need to paste the file there if we're auto upgrading it.
The guide is long enough already :)
2017-10-10 10:26:11 +02:00
Damian Mooyman
11b2c74533
ENHANCEMENT Improve upgrade experience for beta3 -> beta4 upgrade
2017-10-10 15:27:41 +13:00
Ingo Schommer
1e913bb938
Remove rewrite-less routing through index.php
...
It's currently broken (doesn't rewrite subsequent links),
and is of questionable use. It was introduced during a time
when PHP didn't have a built-in webserver (I think).
Virtually ever webserver will have rewriting capabilities these days (even IIS!),
and if you struggle with the setup as a new user, you can just fall back to PHP's built-in webserver.
This doesn't affect installation capabilities, since these are triggered via install.php.
2017-10-09 17:21:43 +13:00
Ingo Schommer
4a94dfe55b
Remove "url" query param reliance, use index.php
...
See https://github.com/silverstripe/silverstripe-framework/issues/7430
2017-10-09 17:21:43 +13:00
Christopher Joe
3560a0418d
rename TEMP_FOLDER to TEMP_PATH
2017-10-09 12:41:34 +13:00
Chris Joe
566d7baa48
Merge pull request #7437 from open-sausages/pulls/4.0/stateless-extensions
...
API Extensions are now stateless
2017-10-09 11:45:33 +13:00
Christopher Joe
89db5870bc
Fix typo in docs
2017-10-09 10:56:02 +13:00
Damian Mooyman
b996e2c22c
API Extensions are now stateless
...
ENHANCEMENT Injector now lazy-loads services more intelligently
2017-10-06 14:53:44 +13:00
Robbie Averill
413034f684
Remove psuedo-property SetPassword from Member
2017-10-05 16:55:24 +13:00
Ingo Schommer
7d63acb221
Better .htaccess upgrading instructions
2017-10-04 09:51:29 +01:00
Ingo Schommer
85a951584e
Update main.php path to support framework in vendor
2017-10-03 09:03:37 +13:00
Damian Mooyman
c8925c93a0
Update documentation for file migration
2017-10-02 15:30:37 +13:00
Damian Mooyman
fa57deeba4
ENHANCEMENT Allow vendor modules with url rewriting
...
API Introduce ModuleResource feature
2017-09-29 10:28:38 +13:00
Damian Mooyman
f1a12e15be
BUG Fix sub-template lookup for includes
2017-09-20 18:04:01 +12:00
Damian Mooyman
09b3a24f30
BUG Detect, warn, and fix invalid SS_BASE_URL
...
Fixes #7362
2017-09-20 10:42:13 +12:00
Damian Mooyman
c2bd9e2216
DOCS Update documentation / upgrading for file permissions
...
Fixes #7350
2017-09-08 11:54:36 +12:00
Damian Mooyman
b270eee1b0
Merge pull request #7102 from Firesphere/pulls/auth-docs
...
DOCS Authentication
2017-09-06 13:08:49 +12:00
Damian Mooyman
45998444d7
Remove redundant gc_collect_cycles()
...
Cleanup dead references to DataObject::$destroyed
Fixes #7326
2017-09-04 09:23:07 +12:00
Damian Mooyman
fdc5ad7337
DOCS Upgrading file docs
2017-09-01 13:14:43 +12:00
Matt Peel
acc58c2b68
Fix incorrect $has_one documentation
...
The first mention of `$has_one` and `$db` in this file is incorrect, which is misleading. It's explained properly later on in the document, but it's easy to get it wrong based on this first code snippet.
2017-09-01 00:48:07 +12:00
Ingo Schommer
64af679c35
DOCS Corrected env type docs ( fixes #7290 )
2017-08-30 08:35:41 +12:00
Simon Erkelens
774d44a574
Authentication documentation rewrite
2017-08-28 16:28:30 +12:00
Damian Mooyman
9b4d689bb2
Lazy-load custom methods and extensions on CustomMethods and Extensible traits
...
No longer need constructExtensions()
2017-08-22 15:47:24 +12:00
Saophalkun Ponlu
29cb4f2f07
Provide information related to recipe
2017-08-14 10:24:48 +12:00
Robbie Averill
5d5fac7450
FIX Throw exception when "value" is used to define indexes. Update docs.
2017-08-09 09:17:28 +12:00
Damian Mooyman
364a14da1d
Merge pull request #7248 from open-sausages/pulls/4.0/remove-3.0-api-docs
...
MINOR: Clean up code references in docs
2017-08-08 09:41:29 +12:00
Christopher Joe
c164fcfe54
Fix reference to IE10 when it should be IE11
2017-08-07 15:39:08 +12:00
Aaron Carlino
50c8a02bff
remove tabs
2017-08-07 15:11:17 +12:00
Aaron Carlino
e4fba5a7b1
add use statements
2017-08-07 14:01:38 +12:00
Aaron Carlino
84feab5a68
Yeah psr2 functions
2017-08-07 14:01:38 +12:00
Aaron Carlino
4c7a068b28
classes psr2
2017-08-07 14:01:38 +12:00
Aaron Carlino
2414eaeafd
Yay, clean arrays
2017-08-07 14:01:38 +12:00
Damian Mooyman
0681567102
BUG Fix flushing on live mode ( #7241 )
...
* BUG Fix flushing on live mode
Fixes #7217
* Clarify injector service documentation
2017-08-07 13:53:23 +12:00
Daniel Hensby
2bd24e0f98
Merge pull request #7169 from open-sausages/pulls/4.0/upgrade-docs-need-an-upgrade
...
Upgrade the upgrading docs
2017-07-19 18:31:21 +01:00
Daniel Hensby
9b3cfdca87
DOCS typo
2017-07-19 14:25:46 +01:00
Aaron Carlino
73652df3c5
Revisions per Robbie, Ingo
2017-07-19 12:17:58 +01:00
Damian Mooyman
844462108e
Fix diff reference
2017-07-19 12:17:51 +01:00
Damian Mooyman
75a6a188e4
Create guide for namespacing user-code
...
Rewrite of outdated api references
Improve documentation for logging
2017-07-19 12:17:44 +01:00
Aaron Carlino
4f3d090020
revisions per damian, robbie
2017-07-19 12:17:34 +01:00
Aaron Carlino
dcb2424b05
Docs for ownership API
2017-07-19 12:17:27 +01:00
Aaron Carlino
2b9369895d
First pass at upgrade docs
2017-07-19 12:17:22 +01:00
Damian Mooyman
7032c4a478
Update sapphiretest docs
2017-07-07 10:45:39 +12:00
Saophalkun Ponlu
63ba092765
FIX Add namespaces in markdown docs ( #7088 )
...
* FIX Add namespaces in markdown docs
* FIX Convert doc [link] to [link-text](link-uri)
2017-07-03 13:22:12 +12:00
Ingo Schommer
3ffc6ebcd7
Consistent 4.0 changelog docs formatting
...
Added diff styling, requires merge of https://github.com/silverstripe/silverstripe-docsviewer/pull/134 .
2017-06-30 13:13:26 +12:00
Damian Mooyman
ac4a6c06a7
Merge pull request #7076 from open-sausages/pulls/4.0/resource-loading-upgrade-docs
...
Docs for resource loading upgrade path
2017-06-30 09:27:29 +12:00
Ingo Schommer
24957418ed
Docs for resource loading upgrade path
...
See https://github.com/silverstripe/silverstripe-framework/pull/7065
2017-06-30 08:51:56 +12:00
Aaron Carlino
ad9d4e6820
Pulls/4.0/shortcode namespacing ( #7085 )
...
* New shortcode providers, update config, docs
* Use new ImageShortcodeProvider
* Move tests
* New shortcodes namespace
* Move file and image shortcode registrations from framework to assets
2017-06-29 18:45:17 +12:00
Ingo Schommer
52841533ed
Better ErrorPage upgrading guide ( #7066 )
...
See https://github.com/silverstripe/silverstripe-framework/issues/4149
2017-06-26 21:31:31 -07:00
Damian Mooyman
cf758ddd4f
Merge pull request #7052 from sminnee/director-middleware
...
Allow application of HTTPMiddleware to Director.
2017-06-27 14:21:23 +12:00
Sam Minnee
ccc86306b6
NEW: Add TrustedProxyMiddleware
...
API: SS_TRUSTED_PROXY_HOST_HEADER replace with middleware config
API: SS_TRUSTED_PROXY_PROTOCOL_HEADER replace with middleware config
API: SS_TRUSTED_PROXY_IP_HEADER replace with middleware config
API: Front-End-Https = “on” header no longer supported
This middleware replaces the TRUSTED_PROXY setting and shifts its
configuration out of the env vars and bootstrap and into the Director
flow.
2017-06-27 13:32:39 +12:00
Sam Minnee
c482cd673e
DOC: Documentation and upgrade notes for director middleware
2017-06-27 13:32:39 +12:00
Jonathon Menz
d0da319004
Removed ErrorPage
...
Removed references to ErrorPage so it can be split off in to a separate module. (#4149 )
2017-06-26 10:03:03 -07:00
Daniel Hensby
fea36f2d7b
DOCS Update Image docs to reflect intervention/image changes
2017-06-23 11:18:21 +01:00
Damian Mooyman
3873e4ba00
API Refactor bootstrap, request handling
...
See https://github.com/silverstripe/silverstripe-framework/pull/7037
and https://github.com/silverstripe/silverstripe-framework/issues/6681
Squashed commit of the following:
commit 8f65e56532
Author: Ingo Schommer <me@chillu.com>
Date: Thu Jun 22 22:25:50 2017 +1200
Fixed upgrade guide spelling
commit 76f95944fa
Author: Damian Mooyman <damian@silverstripe.com>
Date: Thu Jun 22 16:38:34 2017 +1200
BUG Fix non-test class manifest including sapphiretest / functionaltest
commit 9379834cb4
Author: Damian Mooyman <damian@silverstripe.com>
Date: Thu Jun 22 15:50:47 2017 +1200
BUG Fix nesting bug in Kernel
commit 188ce35d82
Author: Damian Mooyman <damian@silverstripe.com>
Date: Thu Jun 22 15:14:51 2017 +1200
BUG fix db bootstrapping issues
commit 7ed4660e7a
Author: Damian Mooyman <damian@silverstripe.com>
Date: Thu Jun 22 14:49:07 2017 +1200
BUG Fix issue in DetailedErrorFormatter
commit 738f50c497
Author: Damian Mooyman <damian@silverstripe.com>
Date: Thu Jun 22 11:49:19 2017 +1200
Upgrading notes on mysite/_config.php
commit 6279d28e5e
Author: Damian Mooyman <damian@silverstripe.com>
Date: Thu Jun 22 11:43:28 2017 +1200
Update developer documentation
commit 5c90d53a84
Author: Damian Mooyman <damian@silverstripe.com>
Date: Thu Jun 22 10:48:44 2017 +1200
Update installer to not use global databaseConfig
commit f9b2ba4755
Author: Damian Mooyman <damian@silverstripe.com>
Date: Wed Jun 21 21:04:39 2017 +1200
Fix behat issues
commit 5b59a912b6
Author: Damian Mooyman <damian@silverstripe.com>
Date: Wed Jun 21 17:07:11 2017 +1200
Move HTTPApplication to SilverStripe\Control namespace
commit e2c4a18f63
Author: Damian Mooyman <damian@silverstripe.com>
Date: Wed Jun 21 16:29:03 2017 +1200
More documentation
Fix up remaining tests
Refactor temp DB into TempDatabase class so it’s available outside of unit tests.
commit 5d235e64f3
Author: Damian Mooyman <damian@silverstripe.com>
Date: Wed Jun 21 12:13:15 2017 +1200
API HTTPRequestBuilder::createFromEnvironment() now cleans up live globals
BUG Fix issue with SSViewer
Fix Security / View tests
commit d88d4ed4e4
Author: Damian Mooyman <damian@silverstripe.com>
Date: Tue Jun 20 16:39:43 2017 +1200
API Refactor AppKernel into CoreKernel
commit f7946aec33
Author: Damian Mooyman <damian@silverstripe.com>
Date: Tue Jun 20 16:00:40 2017 +1200
Docs and minor cleanup
commit 12bd31f936
Author: Damian Mooyman <damian@silverstripe.com>
Date: Tue Jun 20 15:34:34 2017 +1200
API Remove OutputMiddleware
API Move environment / global / ini management into Environment class
API Move getTempFolder into TempFolder class
API Implement HTTPRequestBuilder / CLIRequestBuilder
BUG Restore SS_ALLOWED_HOSTS check in original location
API CoreKernel now requires $basePath to be passed in
API Refactor installer.php to use application to bootstrap
API move memstring conversion globals to Convert
BUG Fix error in CoreKernel nesting not un-nesting itself properly.
commit bba9791146
Author: Damian Mooyman <damian@silverstripe.com>
Date: Mon Jun 19 18:07:53 2017 +1200
API Create HTTPMiddleware and standardise middleware for request handling
commit 2a10c2397b
Author: Damian Mooyman <damian@silverstripe.com>
Date: Mon Jun 19 17:42:42 2017 +1200
Fixed ORM tests
commit d75a8d1d93
Author: Damian Mooyman <damian@silverstripe.com>
Date: Mon Jun 19 17:15:07 2017 +1200
FIx i18n tests
commit 06364af3c3
Author: Damian Mooyman <damian@silverstripe.com>
Date: Mon Jun 19 16:59:34 2017 +1200
Fix controller namespace
Move states to sub namespace
commit 2a278e2953
Author: Damian Mooyman <damian@silverstripe.com>
Date: Mon Jun 19 12:49:45 2017 +1200
Fix forms namespace
commit b65c21241b
Author: Damian Mooyman <damian@silverstripe.com>
Date: Thu Jun 15 18:56:48 2017 +1200
Update API usages
commit d1d4375c95
Author: Damian Mooyman <damian@silverstripe.com>
Date: Thu Jun 15 18:41:44 2017 +1200
API Refactor $flush into HTPPApplication
API Enforce health check in Controller::pushCurrent()
API Better global backup / restore
Updated Director::test() to use new API
commit b220534f06
Author: Damian Mooyman <damian@silverstripe.com>
Date: Tue Jun 13 22:05:57 2017 +1200
Move app nesting to a test state helper
commit 603704165c
Author: Damian Mooyman <damian@silverstripe.com>
Date: Tue Jun 13 21:46:04 2017 +1200
Restore kernel stack to fix multi-level nesting
commit 2f6336a15b
Author: Damian Mooyman <damian@silverstripe.com>
Date: Tue Jun 13 17:23:21 2017 +1200
API Implement kernel nesting
commit fc7188da7d
Author: Damian Mooyman <damian@silverstripe.com>
Date: Tue Jun 13 15:43:13 2017 +1200
Fix core tests
commit a0ae723514
Author: Damian Mooyman <damian@silverstripe.com>
Date: Tue Jun 13 15:23:52 2017 +1200
Fix manifest tests
commit ca03395251
Author: Damian Mooyman <damian@silverstripe.com>
Date: Tue Jun 13 15:00:00 2017 +1200
API Move extension management into test state
commit c66d433977
Author: Damian Mooyman <damian@silverstripe.com>
Date: Tue Jun 13 14:10:59 2017 +1200
API Refactor SapphireTest state management into SapphireTestState
API Remove Injector::unregisterAllObjects()
API Remove FakeController
commit f26ae75c6e
Author: Damian Mooyman <damian@silverstripe.com>
Date: Mon Jun 12 18:04:34 2017 +1200
Implement basic CLI application object
commit 001d559662
Author: Damian Mooyman <damian@silverstripe.com>
Date: Mon Jun 12 17:39:38 2017 +1200
Remove references to SapphireTest::is_running_test()
Upgrade various code
commit de079c041d
Author: Damian Mooyman <damian@silverstripe.com>
Date: Wed Jun 7 18:07:33 2017 +1200
API Implement APP object
API Refactor of Session
2017-06-22 22:50:45 +12:00
Damian Mooyman
64e802f795
API Move createTag to HTML class
...
ENHANCEMENT Better HTML generation behaviour for Requirements_Backend
2017-06-16 12:22:05 +12:00
Damian Mooyman
62d095305b
API Update DefaultAdmin services
...
API Improve validation of authentication process
2017-06-15 15:53:57 +12:00
Damian Mooyman
e7d87add9f
API Remove legacy HTMLEditor classes
2017-05-30 11:01:28 +12:00
Damian Mooyman
fba8e2c245
API Remove Object class
...
API DataObjectSchema::manyManyComponent() return array is now associative array
2017-05-23 13:50:35 +12:00
Damian Mooyman
2aa3b5d5fa
Merge pull request #6934 from robbieaverill/pulls/4.0/consistent-instance-method
...
API Consistent use of inst() naming across framework
2017-05-22 11:57:20 +12:00
Robbie Averill
f2cbe86f03
Remove CustomMethods::createMethod and create_function implementations, replace with closures
2017-05-19 15:56:44 +12:00
Robbie Averill
ad43a82923
API Consistent use of inst() naming across framework
2017-05-19 14:38:06 +12:00
Ingo Schommer
100048da33
API PSR-11 compliance ( fixes #6594 ) ( #6931 )
...
Note that our usage of `$asSingleton` in `get()` is fine. Quote from the PSR:
> Two successive calls to get with the same identifier SHOULD return the same value. However, depending on the implementor design and/or user configuration, different values might be returned, so user SHOULD NOT rely on getting the same value on 2 successive calls.
2017-05-19 13:45:07 +12:00
Damian Mooyman
f5f6fdce12
API Duplication of many_many relationships now defaults to many_many only
...
Fixes https://github.com/silverstripe/silverstripe-cms/issues/1453
2017-05-16 23:26:39 +12:00
Damian Mooyman
0b70b008b3
API Implement InheritedPermission calculator ( #6877 )
...
* API Implement InheritedPermission calculator
* API Rename RootPermissions to DefaultPermissionChecker
API Refactor inherited permission fields into InheritedPermissionExtension
API Introduce PermissionChecker interface
2017-05-11 21:07:27 +12:00
Sam Minnée
33119a1f36
Merge branch 'master' into pulls/4.0/remove-deprecated-methods
2017-05-09 15:31:53 +12:00
Ingo Schommer
7c2f49d443
API Removed RootURLController:set_default_homepage_link()
2017-05-09 11:38:35 +12:00
Ingo Schommer
cec983b628
API Removed deprecated ModelAsController::find_old_page()
2017-05-09 11:38:35 +12:00
Ingo Schommer
5784a7d2d7
API Removed deprecated Security::set_login_recording()
2017-05-09 11:38:35 +12:00
Ingo Schommer
2a7c76e9e9
API Removed deprecated DatabaseAdmin#clearAllData()
2017-05-09 11:38:35 +12:00
Ingo Schommer
81e5c7ac40
API Removed deprecated Session::set_config()
2017-05-09 11:38:35 +12:00
Ingo Schommer
1d438d3fb5
API Remove deprecated FormAction::createTag()
2017-05-09 11:38:35 +12:00
Ingo Schommer
0d9b383631
API Removed legacy form fields ( fixes #6099 )
2017-05-09 11:16:41 +12:00
Damian Mooyman
942c0257b7
API Upgrade to behat 3
2017-05-05 14:32:07 +12:00
Ingo Schommer
a73abbfcb8
unit test cleanup
2017-04-27 09:18:38 +12:00
Ingo Schommer
1ec2abe75f
Fixed timezone and normalised ISO handling
...
A few observations:
- ISO says “T” is optional (https://en.wikipedia.org/wiki/ISO_8601#cite_note-21 ),
- WHATWG says in the HTML5 spec that it’s optional (https://html.spec.whatwg.org/multipage/infrastructure.html#local-dates-and-times )
- W3C says it’s reqiured in 1997 (https://www.w3.org/TR/NOTE-datetime ), but then later says it’s optional in its HTML5 spec (https://www.w3.org/TR/html5/infrastructure.html#floating-dates-and-times ).
- Chrome doesn’t parse values with whitespace separators (requires "T")
- DataObject DBDatetime values and database columns use whitespace separators (and will have many devs relying on this format)
- MySQL only supports whitespace separators (https://dev.mysql.com/doc/refman/5.7/en/datetime.html )
- SQLite can parse both ways (https://sqlite.org/lang_datefunc.html )
So the goal here is to retain ORM/database compatibility with 3.x (whitespace separator),
while exposing "T" separators to the browser in HTML5 mode.
Regarding timezones, this fixes a regression where setValue() would not actually
apply the timezone (last $value assignment is ineffective now that sub fields are removed).
2017-04-26 22:55:29 +12:00
Saophalkun Ponlu
507add8566
Update changelogs
2017-04-26 22:45:07 +12:00
Simon Erkelens
ff3ad6eb6b
Use Config
for authenticator settings
2017-04-22 14:48:56 +12:00
Damian Mooyman
c21f71405f
Merge pull request #6823 from open-sausages/pulls/4.0/remove-TeamCityListener
...
Removed TeamCityListener
2017-04-21 15:56:20 +12:00
Ingo Schommer
0a55ff9f8c
API Remove SapphireTestReporter and CliTestReporter
...
Was missed from the removal of PHPUnitWrapper:
a16588aac3
Original reason for this: Don't fail dev/build without phpunit
When you install a SilverStripe project with "composer install --no-dev",
the PHPUnit dependency gets skipped. Which means the PHPUnit_Framework_TestListener
interface doesn't exist. The SilverStripe Classloader might still include
SapphireTestReporter which relies on this interface, which then breaks execution.
SS3 fixed this by NOT defining the class in the first place.
This has been removed in 2fdc96a0de (diff-82b3f89e8e5ae090c93e9c3a2ba8aa36L3)
,
as part of a PHPUnit version upgrade - but without an apparent fix to replace this.
2017-04-21 15:11:59 +12:00
Ingo Schommer
60e4c011de
Removed TeamCityListener
2017-04-21 12:13:13 +12:00
Damian Mooyman
2548bfba1e
API Replace SS_HOST with SS_BASE_URL
...
API Remove Director::$test_servers / $dev_servers
API Remove MODULES_PATH / MODULES_DIR constants
ENHANCEMENT Injector backtick syntax now supports environment variables as well as constants
Fixes #6588
2017-04-20 22:28:57 +12:00
Sam Minnee
9b1baa9503
DOCS: API changes from f862ce71d5
2017-04-18 17:04:40 +12:00
Damian Mooyman
136b67f597
API Major refactor of Hierarchy into MarkedSet
2017-04-13 16:27:13 +12:00
Damian Mooyman
22b6835537
Move cache upgrade instructions into Upgrading Guide section
2017-04-13 16:23:05 +12:00
Damian Mooyman
92a5e4a057
API Refactor CMS-specific code out of LeftAndMain
2017-04-06 13:26:32 +12:00
Ingo Schommer
3b94d14e42
MERGE
2017-04-03 12:11:21 +12:00
Ingo Schommer
326aa37ea4
API HTML5 date/time fields, remove member prefs ( fixes #6626 )
2017-03-31 15:21:47 +13:00
Ingo Schommer
4b79940368
API Drop IE10 support ( fixes #6321 )
2017-03-31 10:50:42 +13:00
Daniel Hensby
ac075eaf0b
Remove TestListener and rely on PHPUnits APIs
2017-03-30 11:46:58 +13:00
Sam Minnée
cfa6a36697
Merge pull request #6706 from open-sausages/pulls/4.0/manifest-cache
...
API Build new ManifestCache based on PSR-16 SimpleCache
2017-03-21 10:29:03 +13:00
Damian Mooyman
480597e5ff
Add missing docs to upgrading guide for cache config
2017-03-21 09:43:49 +13:00
Damian Mooyman
3a0099161b
API Remove Log class
2017-03-21 09:43:49 +13:00