653 Commits

Author SHA1 Message Date
Guy Sartorelli
a76fa32a39
API Remove unnecessary getGenerator() method.
`getIterator()` now returns a generator by default.
2022-09-15 13:29:29 +12:00
Guy Sartorelli
bf331072df
FIX Don't try to call count() on an iterator 2022-09-15 13:29:29 +12:00
Sam Minnee
81beddc161
Add deprecated method to make CMS tests work 2022-09-15 13:29:29 +12:00
Sam Minnee
9eb9e13071
FIX: Re-set finalisedQuery to allow recreation of iterator. 2022-09-15 13:29:29 +12:00
Sam Minnee
9c7ecb1f79
Further work on Loz’ solution 2022-09-15 13:29:29 +12:00
Loz Calver
850482138b
Proposed solution for caching template generator counts 2022-09-15 13:29:29 +12:00
Loz Calver
8e0e797b40
Fix code style 2022-09-15 13:29:27 +12:00
Loz Calver
1b8f601023
NEW: Make DataList::getIterator a generator 2022-09-15 13:29:00 +12:00
Sam Minnee
77c7552c3f
NEW: ORM’ Query is a generator-based IteratorAggregate
API: Query no longer has iterator methods current(), first(), rewind(), next()

Using generators reduces the amount of boilerplate needed for this
code.

Turning it into an IteratorAggregate means that the iterator can be
re-created for each subsequent foreach call. This means that the
rewind() and seek() functionality can be discarded.
2022-09-15 13:28:56 +12:00
Sam Minnee
d8735633a7
FIX: Don’t call PaginatedList::getIterator() directly.
It’s best for foreach() to call this for us.
2022-09-15 13:28:20 +12:00
Sam Minnee
1efe2b46ff
FIX: Fix PaginatedList::toArray()
It wasn’t respecting pagination.
2022-09-15 13:28:20 +12:00
Sam Minnee
6c136c9cf2
NEW: Iterate ArrayList via a generator
Using a generator here means that we don’t need to prepare a duplicate
array in-memory before iterating.
2022-09-15 13:28:20 +12:00
Sam Minnee
2ead3746d6
Replace Map_Iterator with a generator.
Generators (PHP 5.5+) make this kind of code structure much easier to
build.
2022-09-15 13:28:20 +12:00
Guy Sartorelli
03b929dd33
API Remove support for PDO (#10499) 2022-09-15 13:13:48 +12:00
Guy Sartorelli
06b13e0fa6
Revert "Merge pull request #10450 from creative-commoners/pulls/5/rescue-master-generators" (#10483)
This reverts commit 9edf3a5ca635f9687179143373fe25bddf10c5e3, reversing
changes made to 934fafd29d07a248e00b3055a2ae6d2edab243f6.
2022-09-02 10:58:37 +12:00
Guy Sartorelli
1bf86cf39f
API Revert shorten auto-generated table names (#10482)
* Revert "BUG Fix table name test"

This reverts commit b36a01a8fd7d83aa5abaa09dd76778c8b6c1db7d.

* Revert "ENH shorten auto-generated table names"

This reverts commit 156f63bce38a6b95d0f117eedbeb8819eb51d1b7.
2022-09-02 10:55:45 +12:00
Steve Boyd
37ff4ee46a
Merge pull request #10454 from creative-commoners/pulls/5/rescue-master-table-name
API rescue master-branch PR: Shorten auto-generated table names #7621
2022-09-01 09:12:11 +12:00
Guy Sartorelli
715415d5c8
Merge branch '4' into 5 2022-08-31 13:37:25 +12:00
Steve Boyd
9edf3a5ca6
Merge pull request #10450 from creative-commoners/pulls/5/rescue-master-generators
API rescue master-branch PR: Use Generators for ORM
2022-08-29 19:03:47 +12:00
Steve Boyd
b37921d0b1
Merge pull request #10462 from creative-commoners/pulls/5/rescue-master-join-aliases
Rescue Master Branch PR: Fix SQLConditionalExpression::getJoins so it always adds explicit aliases
2022-08-24 15:33:41 +12:00
Viktor Szépe
94d1ac8d99
ENH Various changes via static analysis tooling 2022-08-24 12:14:32 +12:00
Serge Latyntcev
e07671a890
Fix SQLConditionalExpression::getJoins so it always adds explicit aliases
This is a revert of https://github.com/silverstripe/silverstripe-framework/pull/8956
2022-08-24 11:27:02 +12:00
Andrew Aitken-Fincham
f2de39162d
API Allow dataobject get_one without passing a class
add class validation early in get_one()
2022-08-23 16:25:23 +12:00
Guy Sartorelli
a4521a7348
API Undeprecate table warning message
I think it's worth keeping this message around to encourage best
practices.
2022-08-22 17:45:00 +12:00
Christopher Joe
156f63bce3
ENH shorten auto-generated table names
Fix add check for legacy long table name and rename to short version
2022-08-22 17:44:51 +12:00
Guy Sartorelli
10ef46a5ec
ENH Make DataObject::exists() an alias of DataObject::isInDB() (#10407) 2022-08-16 09:43:54 +12:00
Guy Sartorelli
1153bacc11
API Remove unnecessary getGenerator() method.
`getIterator()` now returns a generator by default.
2022-08-11 16:29:39 +12:00
Guy Sartorelli
5bdfaea78a
FIX Don't try to call count() on an iterator 2022-08-11 16:29:39 +12:00
Daniel Hensby
595835bb15
Merge pull request #6518 from sminnee/generators
Use Generators for ORM Query, Map, ArrayList
2022-08-11 16:29:32 +12:00
Guy Sartorelli
11595952f4
NEW Search across multiple searchable fields by default (#10382)
* NEW Search across multiple searchable fields by default

* ENH Split search query and search each term separately.
2022-08-01 12:19:02 +12:00
Guy Sartorelli
af3c50c9da NEW Set many_many_extraFields data via the ORM 2022-07-28 09:29:36 +12:00
Nicola Fontana
d65ba0d718 DOCS Fix DataObject examples 2022-07-15 06:48:59 +02:00
Guy Sartorelli
29fae72211 API TableBuilder class reduces inconsistency between temp & prod db 2022-07-07 09:49:19 +12:00
Maxime Rainville
33600c3b73 BUG Manually create singleton when building table 2022-07-06 11:29:19 +12:00
Steve Boyd
b101b8bdb8 Merge branch '4.11' into 4 2022-07-04 13:20:12 +12:00
Brandon Iffert
ad83b78a10
FIX Handle null values passed to PDO::quote() (#10383) 2022-07-04 13:17:51 +12:00
Guy Sartorelli
cfb347dc9b Merge branch '4.11' into 4 2022-06-30 16:33:12 +12:00
Guy Sartorelli
6c01661512 FIX Support search filters with match_any searchable_fields 2022-06-30 15:55:53 +12:00
Guy Sartorelli
4e53c35b53 MNT Deprecate unusable property
This property must always have the value 'AND' or an exception will be
thrown - it should be deprecated. Also, no need to process the query
before throwing.
2022-06-30 15:53:17 +12:00
Steve Boyd
3a0fff25de FIX PDO in PHP 8 2022-06-30 12:34:05 +12:00
Steve Boyd
a77ca74a7e FIX Ensure not passing null to mysql methods for PHP 8.1 compatibility 2022-06-29 09:34:30 +12:00
Steve Boyd
c80e10f892
FIX PDO transaction in PHP 8, add GitHub Actions CI (#10360) 2022-06-27 15:30:03 +12:00
Guy Sartorelli
8ae7f30c41 Merge branch '4.11' into 4 2022-05-27 15:19:51 +12:00
Guy Sartorelli
dec85819bd Merge branch '4.10' into 4.11 2022-05-27 15:19:39 +12:00
Guy Sartorelli
0bc3ed4d2c Merge branch '4.9' into 4.10 2022-05-27 15:19:17 +12:00
Sabina Talipova
cb37869bac
Merge pull request #10297 from creative-commoners/pulls/4/gridfield-set-polymorphic-class
Issue was fixed
2022-05-13 14:01:17 +12:00
Mojmir Fendek
26d59944e0 ENH: RemoveAll() memory performance enhancement. 2022-05-13 11:19:04 +12:00
Guy Sartorelli
19bb72e7c7 FIX Correctly remove relations with ManyManyThroughList::removeall
Instead of just setting one side of the relation to null in the through
list, remove the rows entirely.
Remove only the relations which match the filters that have already been
set on the list.
This is consistent with the way ManyManyList works.

Also some small tidy-up (removing an unnecessary line break and an
unused "use" statement)
2022-05-05 11:21:51 +12:00
Guy Sartorelli
2836478c72 API Add method to get foreign class key on polymorphic has_many 2022-05-02 18:29:01 +12:00
Steve Boyd
337c6e583c ENH Various fixes for PHP 8.1 compatibility 2022-04-27 09:29:40 +12:00