Ingo Schommer
74b655d3fc
Fix tests on unset session data
...
Thanks Robbie!
2018-07-23 14:09:42 +01:00
Ingo Schommer
76ac8465de
BUG Lazy session state ( fixes #8267 )
...
Fixes regression from 3.x, where sessions where lazy started as required:
Either because an existing session identifier was sent through with the request,
or because new session data needed to be persisted as part of the request execution.
Without this lazy starting, *every* request will get a session,
which makes all those responses uncacheable by HTTP layers.
Note that 4.x also changed the $data vs. $changedData payloads:
In 3.x, they both contained key/value pairs.
In 4.x, $data contains key/value, while $changedData contains key/boolean to declare isChanged.
While this reduces duplication in the class, it also surfaced a bug which was latent in 3.x:
When an existing session is lazily resumed via start(), $data is set back to an empty array.
In 3.x, any changed data before this point was *also* retained in $changedData,
ensuring it gets merged into existing $_SESSION data.
In 4.x, this clears out data - hence the need for a more complex merge logic.
Since isset($this->data) is no longer an accurate indicator of a started session,
we introduce a separate $this->started flag.
Note that I've chosen not to make lazy an opt-in (e.g. via start($request, $lazy=false)).
We already have a distinction between lazy starting via init(), and force starting via start().
2018-07-23 14:09:42 +01:00
Daniel Hensby
e37b3b95f4
FIX updateValidatePassword calls need to be masked from backtraces
2018-07-23 14:08:26 +01:00
Daniel Hensby
a3687147fe
State default should be state enabled (no-cache is an enabled state)
2018-07-23 14:07:10 +01:00
Daniel Hensby
9f1471332d
Make augmentState method more efficient
2018-07-23 14:07:10 +01:00
Daniel Hensby
cebed776ab
FIX If theres a max-age set remove no-cache and no-store
2018-07-23 14:07:09 +01:00
Daniel Hensby
2b1c55bc4e
FIX Allow setNoCache(false) to remove no-cache directive
2018-07-23 14:07:09 +01:00
Daniel Hensby
842b39e988
FIX Add must-revalidate to default state so its common on all our core states
2018-07-23 14:07:09 +01:00
Daniel Hensby
997730aa7f
FIX Allow cache control changes to affect default state
2018-07-23 14:07:08 +01:00
Daniel Hensby
c52be7fe09
Consolidate disabling cache logic
2018-07-23 14:05:12 +01:00
Daniel Hensby
f7f567a12e
Make config private (notation isnt working)
2018-07-23 14:05:12 +01:00
Daniel Hensby
b78a89a76c
FIX Default cache state should be no-cache
2018-07-23 14:05:12 +01:00
Daniel Hensby
793aafae91
FIX Transaction depth should error if not implemented by child classes
2018-07-23 14:03:20 +01:00
Robbie Averill
1048520fbe
Restore check for zero or negative transaction nesting
2018-07-23 14:01:22 +01:00
Daniel Hensby
cbdf547c1b
Address feedback
2018-07-23 14:01:22 +01:00
Damian Mooyman
8ea3bb36a0
Maybe fix it?
2018-07-23 14:01:21 +01:00
Damian Mooyman
225e61dc67
BUG FIx manual resetDBSchema() calls breaking the database
2018-07-23 14:01:21 +01:00
Damian Mooyman
11e0a3de43
BUG Ensure that build includes extra classes
2018-07-23 14:01:21 +01:00
Damian Mooyman
95bcac796a
ENHANCEMENT Ensure test DB is flushed on either DDL or transaction-disabled tests
...
Fixes #8182
2018-07-23 14:01:20 +01:00
Daniel Hensby
b984959170
Merge branch '4.1' into 4.2
2018-07-23 13:30:49 +01:00
Ingo Schommer
e415bcb44a
Fix tests on unset session data
...
Thanks Robbie!
2018-07-19 13:32:08 +12:00
Ingo Schommer
93b0884e19
BUG Lazy session state ( fixes #8267 )
...
Fixes regression from 3.x, where sessions where lazy started as required:
Either because an existing session identifier was sent through with the request,
or because new session data needed to be persisted as part of the request execution.
Without this lazy starting, *every* request will get a session,
which makes all those responses uncacheable by HTTP layers.
Note that 4.x also changed the $data vs. $changedData payloads:
In 3.x, they both contained key/value pairs.
In 4.x, $data contains key/value, while $changedData contains key/boolean to declare isChanged.
While this reduces duplication in the class, it also surfaced a bug which was latent in 3.x:
When an existing session is lazily resumed via start(), $data is set back to an empty array.
In 3.x, any changed data before this point was *also* retained in $changedData,
ensuring it gets merged into existing $_SESSION data.
In 4.x, this clears out data - hence the need for a more complex merge logic.
Since isset($this->data) is no longer an accurate indicator of a started session,
we introduce a separate $this->started flag.
Note that I've chosen not to make lazy an opt-in (e.g. via start($request, $lazy=false)).
We already have a distinction between lazy starting via init(), and force starting via start().
2018-07-19 13:32:04 +12:00
Gerald Baumeister
df5395b101
Added check for php-intl requirement
2018-07-16 18:08:25 +02:00
Loz Calver
b317bf163c
Merge pull request #8213 from creative-commoners/pulls/4.2/falsy-forms
...
FIX FormField::Link works when no form is currently set
2018-07-16 13:53:58 +01:00
Robbie Averill
b93e94c0c3
FIX FormField::Link now throws a LogicException if no form is set yet
2018-07-16 13:02:58 +01:00
Loz Calver
106ca6643a
Merge pull request #8263 from dhensby/pulls/4.1/mask-backtrace
...
FIX updateValidatePassword calls need to be masked from backtraces
2018-07-16 10:30:22 +01:00
Damian Mooyman
c6952b46c4
Merge pull request #8245 from dhensby/pulls/4.2/http-cache-fixes
...
HTTPCacheControlMiddleware fixes
2018-07-16 13:13:12 +12:00
Robbie Averill
d122995652
FIX Duplicate config values for cascade_duplicates no longer duplicate their duplicates
...
Previously you could define identical values for this config prop via a DataExtension and on the base
class, resulting in double duplication
2018-07-16 12:04:56 +12:00
Daniel Hensby
8703839eb1
FIX updateValidatePassword calls need to be masked from backtraces
2018-07-15 01:06:45 +01:00
Daniel Hensby
bd2abc7a12
Merge branch '4.1' into 4.2
2018-07-13 16:44:23 +01:00
Daniel Hensby
ec9281ee02
Merge branch '4.0' into 4.1
2018-07-13 16:42:00 +01:00
Daniel Hensby
4acec33562
FIX Fixed bug in config merging priorities so that config values set by extensions are now least important instead of most important
2018-07-12 00:55:39 +01:00
Daniel Hensby
fd8448889c
State default should be state enabled (no-cache is an enabled state)
2018-07-10 16:58:08 +01:00
Daniel Hensby
601bb4d768
Make augmentState method more efficient
2018-07-10 16:58:07 +01:00
Daniel Hensby
399ebd0031
FIX If theres a max-age set remove no-cache and no-store
2018-07-10 16:58:07 +01:00
Ingo Schommer
2e6f29fea0
Merge pull request #8223 from dhensby/pulls/4.0/remove-email-from-pswdrecovery
...
FIX remove personal information from password reset confirmation screen
2018-07-06 11:27:03 +12:00
Daniel Hensby
92f5ef31d8
FIX Allow setNoCache(false) to remove no-cache directive
2018-07-05 22:51:39 +01:00
Daniel Hensby
18b7dc235a
FIX Add must-revalidate to default state so its common on all our core states
2018-07-05 22:51:03 +01:00
Daniel Hensby
9e829c1607
FIX Allow cache control changes to affect default state
2018-07-05 22:50:35 +01:00
Daniel Hensby
560fe9820a
FIX remove personal information from password reset confirmation screen
2018-07-05 14:19:15 +12:00
Daniel Hensby
3116b1f97c
Consolidate disabling cache logic
2018-07-02 15:13:46 +01:00
Daniel Hensby
b9b1a74b92
Make config private (notation isnt working)
2018-07-02 13:54:11 +01:00
Daniel Hensby
e4ef83bd2a
FIX Default cache state should be no-cache
2018-07-02 13:33:36 +01:00
Daniel Hensby
27b60ae989
FIX Transaction depth should error if not implemented by child classes
2018-06-21 14:26:21 +01:00
Robbie Averill
df257686c1
Restore check for zero or negative transaction nesting
2018-06-20 14:46:50 +12:00
Daniel Hensby
d8430f549d
Address feedback
2018-06-20 14:46:50 +12:00
Damian Mooyman
6da72d686f
Maybe fix it?
2018-06-20 14:46:50 +12:00
Damian Mooyman
a116b5dad8
BUG FIx manual resetDBSchema() calls breaking the database
2018-06-20 14:46:50 +12:00
Damian Mooyman
f2c2ded27f
BUG Ensure that build includes extra classes
2018-06-20 14:46:50 +12:00
Damian Mooyman
fbfd454d65
ENHANCEMENT Ensure test DB is flushed on either DDL or transaction-disabled tests
...
Fixes #8182
2018-06-20 14:46:50 +12:00
Robbie Averill
7d90a14f37
NEW Shift Embeddable and EmbedResource from asset-admin, lazy load Embed to allow injected dependencies ( #8194 )
2018-06-20 11:40:28 +12:00
Robbie Averill
725212a707
FIX Allow dispatcher in Embed to be configured with injector ( #8192 )
2018-06-20 11:37:35 +12:00
Damian Mooyman
cfc3b851e7
Merge remote-tracking branch 'origin/4.1' into 4.2
...
# Conflicts:
# lang/sv.yml
2018-06-19 17:20:25 +12:00
Maxime Rainville
3f80e2dc67
FIX Don't reload form session data using FormField::setSubmittedValue… ( #8184 )
2018-06-19 11:27:09 +12:00
Damian Mooyman
8181dc4fd2
ENHANCEMENT Ensure extensions are told the internal item request class for gridfield detail form ( #8164 )
...
Fixes https://github.com/silverstripe/silverstripe-framework/issues/8136
2018-06-15 17:58:53 +12:00
Damian Mooyman
53dded8cff
API Remove @internal from new 4.2 methods
2018-06-15 13:14:42 +12:00
Robbie Averill
5fa5abf295
Merge branch '4.1' into 4
...
# Conflicts:
# src/Forms/DateField.php
2018-06-15 11:52:07 +12:00
Damian Mooyman
b636587945
Respect semver and add tests
2018-06-15 11:04:12 +12:00
Damian Mooyman
310a259c5f
Add locale to Format
...
Fix up some regressions
2018-06-14 17:28:16 +12:00
Ingo Schommer
1c5876acf0
Merge pull request #8179 from open-sausages/pulls/4/safer-test-clear
...
BUG Make regression in #7839 safer
2018-06-14 17:28:13 +12:00
Ingo Schommer
bd84944c0d
Merge pull request #8166 from open-sausages/pulls/4/http-cache-middleware
...
NEW Add better HTTP cache-control manipulation (4.x branch)
2018-06-14 17:19:54 +12:00
Damian Mooyman
d52c4dd602
BUG Make regression in #7839 safer
2018-06-14 16:45:09 +12:00
Damian Mooyman
b686b86c34
Session now prevents cache headers being sent unintentionally
2018-06-14 15:59:51 +12:00
Ingo Schommer
513e0891d3
Clarify function of registerModificationDate()
2018-06-14 14:13:28 +12:00
Damian Mooyman
6b8f63c4d5
Refactor redirect cache busting into middleware
2018-06-14 14:11:31 +12:00
Robbie Averill
acc8d48b11
FIX SapphireTest can load relative fixtures in subfolders, switch "needs db" priority check order
...
A minute performance gain by checking instance properties for "uses database" before loading and parsing PHPDoc
annotations for the same thing, rather than doing it afterwards.
2018-06-14 13:59:44 +12:00
Damian Mooyman
3ce8ab3adc
Improve handling of deprecated apis
2018-06-14 13:01:27 +12:00
Damian Mooyman
163f1523e9
Add upgrade rule for HTTPCacheControl
2018-06-14 11:55:05 +12:00
Damian Mooyman
9274692415
Fix core tests
2018-06-14 11:46:47 +12:00
Damian Mooyman
59ba208df0
Fix HTTPTest
2018-06-14 11:46:28 +12:00
Damian Mooyman
e93289326e
Add Form::canBeCached() method
2018-06-14 11:17:21 +12:00
Damian Mooyman
6b68495c0d
Rename ETagMiddleware to ChangeDetectionMiddleware
2018-06-14 11:16:52 +12:00
Damian Mooyman
b7e54bad24
Adjust HTTPResponse::getVersion() to match PSR-7 Method signature
2018-06-14 11:04:07 +12:00
Daniel Hensby
a88257efac
NEW Add version to HTTPRequest and create raw string representation
2018-06-13 15:29:04 +01:00
Daniel Hensby
1b425570cf
Remove IE edge case handling
2018-06-13 15:29:04 +01:00
Daniel Hensby
17ad985925
Cleanup ETag middleware
2018-06-13 15:29:03 +01:00
Daniel Hensby
0b308c871d
DOCS Update doc errors
2018-06-13 15:29:03 +01:00
Damian Mooyman
687d0a6af1
Refactor everything out of HTTP and into separate middlewares
2018-06-13 17:56:47 +12:00
Damian Mooyman
6f32762268
Fix unit tests
2018-06-13 14:09:31 +12:00
Damian Mooyman
aa1ba0ef90
Fix inverted condition
...
Remove unnecessary yml block
Deprecate HTTP::set_cache_age()
2018-06-13 13:56:47 +12:00
Damian Mooyman
02ae2e7ed0
BUG Fix internal date formatting inheriting default locale
...
Fixes #8097
2018-06-13 13:32:11 +12:00
Daniel Hensby
befd81d0c2
FIX Bug with forms being cached
2018-06-13 11:33:46 +12:00
Daniel Hensby
7c875918c7
FIX make sure we create ETags from the body, not the request
2018-06-13 11:33:46 +12:00
Daniel Hensby
6bb69d1ae5
Throw caught exceptions in HTTPCacheControlMiddleware::process
2018-06-13 11:33:46 +12:00
Daniel Hensby
37343cf0e2
Use veradic argument for HTTP::combineVary
2018-06-13 11:33:45 +12:00
Daniel Hensby
bf90af4845
Linting fixes
2018-06-13 11:33:45 +12:00
Damian Mooyman
442db3050c
Manual merge up of 3.x changes to HTTP class
2018-06-13 11:33:45 +12:00
Damian Mooyman
76bf2ab21a
WIP of cache middlware
2018-06-13 11:33:45 +12:00
Damian Mooyman
6c985c4e5f
Merge remote-tracking branch 'origin/4.1' into 4
2018-06-13 11:25:20 +12:00
Damian Mooyman
c2123f772f
Merge remote-tracking branch 'origin/4.0' into 4.1
2018-06-13 11:24:12 +12:00
Daniel Hensby
ec956a682d
API Moving tests to use transactions
2018-06-13 09:35:45 +12:00
Robbie Averill
f256045020
Merge pull request #8158 from open-sausages/pulls/4.0/fix-cli-canonical-middleware
...
BUG Prevent canonical URL causing a redirect on CLI unless explicitly enabled
2018-06-12 10:53:37 +12:00
Daniel Hensby
ce58890baf
Merge branch '4.0' into 4.1
2018-06-11 09:27:42 +01:00
Robbie Averill
27e24a4728
Merge pull request #8142 from open-sausages/pulls/4.0/fix-injector-empty
...
BUG Safely handle empty injector factory responses
2018-06-11 15:20:24 +12:00
Damian Mooyman
2a51f34c3e
BUG Prevent canonical URL causing a redirect on CLI unless explicitly enabled
...
Replaces #8157
2018-06-11 13:54:27 +12:00
Damian Mooyman
77a45c0dbc
Merge remote-tracking branch 'origin/4.1' into 4
...
# Conflicts:
# src/Forms/HTMLEditor/HTMLEditorSanitiser.php
# src/ORM/DataObjectSchema.php
# src/ORM/Queries/SQLSelect.php
# src/View/Parsers/ShortcodeParser.php
2018-06-11 10:19:04 +12:00
Robbie Averill
d842225df6
FIX Codesniffer style violations with comments
2018-06-11 09:55:18 +12:00
Damian Mooyman
546c6c3e22
Merge pull request #8125 from open-sausages/pulls/4/date-field-tweaks
...
Remove legacy logic from DateField_Disabled
2018-06-11 09:23:33 +12:00
Daniel Hensby
e260319823
Merge branch '4.0' into 4.1
2018-06-08 23:05:24 +01:00
Maxime Rainville
582c69d32f
BUG Fix issue with Disabled DateField always display (not set).
2018-06-08 13:51:22 +01:00