Simon Welsh
fc5dd2994c
Add codesniffer that ensures indentation is with tabs.
2012-12-12 00:12:11 +13:00
Simon Welsh
bbc4443af7
NEW: Allows setting of has_many and many_many relations before writing
...
Adds a new wrapper list, UnsavedRelationList, that maintains the relations until
writing, where it is converted into the correct RelationList.
2012-11-28 09:37:08 +13:00
jean
fbfff8df28
FIX 7934 When lazy loading fields respect version of the record
2012-11-27 17:31:45 +01:00
Ingo Schommer
15a687f1e7
Merge remote-tracking branch 'origin/3.0'
2012-11-23 15:31:08 +01:00
Ingo Schommer
aa72425e84
Fixed PHPUnit assertions for incomplete tests in core
...
Avoid PHPUnit throwing "test didn't run any assertions"
notices in PHP. If nothing else, it keeps test output
looking less broken by default, making it more likely
that actual errors do get noticed.
2012-11-23 15:16:39 +01:00
Ingo Schommer
c55c7c33f8
Merge branch '3.0'
...
Conflicts:
admin/code/CMSProfileController.php
composer.json
tests/model/DataObjectTest.php
2012-11-22 23:51:28 +01:00
Sean Harvey
e1c5f084ad
Removing deprecated container class argument to DataObject::get()
2012-11-15 14:43:20 +13:00
Sean Harvey
3a198c32d5
Removing deprecated DataObject::databaseFields() and customDatabaseFields()
...
Use database_fields() and custom_database_fields() instead
2012-11-15 14:43:19 +13:00
Sean Harvey
e4088feb46
Removing deprecated instance_get_one() and instance_get()
...
Use DataList API instead
2012-11-15 14:43:19 +13:00
Sean Harvey
a8d779b4de
Removing deprecated DataObject::buildDataObjectSet()
...
Use DataList API instead
2012-11-15 14:43:19 +13:00
Sean Harvey
dde820d87d
Extend deprecation of DataObject::Aggregate() and RelationshipAggregate()
2012-11-15 14:43:19 +13:00
Sean Harvey
0db33f7f04
Removing DataObject::buildSQL() and extendedSQL(), use DataList instead
2012-11-15 14:43:19 +13:00
Sean Harvey
651d4b3d41
Removing DataObject::getAllFields(), use toMap() instead
2012-11-15 14:43:18 +13:00
Sean Harvey
5f852ae7bc
Removing deprecated DataObject::setComponent()
...
This is not used internally any longer
2012-11-15 14:43:18 +13:00
Sean Harvey
f69c2b0495
Improve performance of DataObject::db() with caching
...
In a usual CMS request, DataObject::db() is called potentially
thousands of times, calling Config::get() constantly for the same
uninherited statics, which is slow. This improves performance
by caching those into DataObject::$_cache_db
2012-11-08 10:38:16 +13:00
Sean Harvey
fdcd7a2e60
Fixing performance of DataObject::custom_database_fields()
...
On sites with lots of modules, and pages with plenty of database
queries, DataObject::custom_database_fields() can be called
thousands of times, and slow down page render times. This fixes
it so the fields are cached by class in a static variable, and
are cleared when reset() is called on the DataObject.
2012-11-07 17:23:36 +13:00
Simon Welsh
d8c920285c
Merge pull request #917 from TheFrozenFire/feature-DataObjectFromStdClass
...
API: DataObject::__construct() now accepts stdClass for $record
2012-11-03 02:16:07 -07:00
Justin Martin
f2a709d849
BUG: DataObject::write overwrites Created on first write
2012-11-02 20:37:17 -07:00
Justin Martin
a651d730f2
BUG: DataObject::__construct() now accepts stdClass for $record
2012-11-01 16:57:07 -07:00
Sean Harvey
f6a90467e4
Merge branch '3.0'
2012-10-15 10:10:01 +13:00
Sean Harvey
bc345803d5
BUG Fixing model not being set before populateDefaults()
...
In cases where a getter on a DataObject calls getComponent() or
other relational getter, $this->model won't have been set at
this point, and a fatal error is triggered.
This fixes it so $this->model is set *before* populateDefaults()
in DataObject::__construct() and the getters can operate normally.
2012-10-12 09:57:11 +13:00
Ingo Schommer
56f7ce1dcf
Merge remote-tracking branch 'origin/3.0'
...
Conflicts:
control/Cookie.php
control/Director.php
control/HTTPResponse.php
model/Database.php
model/MySQLDatabase.php
model/SQLQuery.php
view/Requirements.php
view/SSViewer.php
2012-10-03 16:16:19 +02:00
Sam Minnee
1f7fc1f76a
FIX Remove instances of lines longer than 120c
...
The entire framework repo (with the exception of system-generated files) has been amended to respect the 120c line-length limit. This is in preparation for the enforcement of this rule with PHP_CodeSniffer.
2012-09-30 17:18:13 +13:00
Simon Welsh
1e629f4585
Merge branch '3.0'
...
Conflicts:
control/Cookie.php
control/Director.php
dev/Profiler.php
view/Requirements.php
2012-09-21 14:56:56 +12:00
Ingo Schommer
e2f073f38a
Method visibility according to coding conventions
2012-09-20 10:46:59 +02:00
Sean Harvey
9c2be0f025
Merge branch '3.0'
2012-09-17 15:16:52 +12:00
stozze
499b7c9ff9
BUGFIX Fix to prevent unintended results from getComponentsQuery(...)
...
Wrapped $filter inside parentheses to prevent unintended results if $filter contains "OR".
2012-09-14 18:31:37 +03:00
Hamish Friedlander
df5a9e087d
FIX Cache ClassName enum so we dont query DB every call
2012-09-12 11:14:59 +12:00
Ingo Schommer
1088d044c5
Merge remote-tracking branch 'origin/3.0'
...
Conflicts:
.travis.yml
2012-09-07 17:21:41 +02:00
Sam Minnée
57ad36e11d
Merge pull request #750 from silverstripe-rebelalliance/open/5971
...
FIX If ClassName read from DB doesnt exist, dont break
2012-08-29 22:48:31 -07:00
Hamish Friedlander
2f00884e79
FIX If ClassName read from DB doesnt exist, dont break
...
We know the subclass of a record by its ClassName value, but code changes
might have meant that class no longer exists. We used to just break,
but this patch overrides the apparent value of ClassName to be
one that exists in that situation
2012-08-30 11:02:50 +12:00
Ingo Schommer
f070f971cf
BUG Allow custom getters in summaryFields() ( fixes #7788 )
...
Regression from ca1d38dffd
2012-08-29 13:42:29 +02:00
Ingo Schommer
4598cc02aa
Merge pull request #659 from ajshort/instance-search-filters
...
BUG: Allow using instances for search filters.
2012-08-16 13:07:35 -07:00
Ingo Schommer
ca1d38dffd
BUG Localize DataObject->summaryFields()
2012-08-10 00:14:02 +02:00
Hamish Friedlander
367c49d6b1
API DataObject#relField now checks for method on model before property
2012-07-27 14:44:38 +12:00
Hamish Friedlander
36c8fc2e93
Merge pull request #660 from silverstripe-rebelalliance/trac/7673
...
API Prep ArrayList, DataList, forForeignID for immutability in 3.1 per 7673
2012-07-22 21:30:53 -07:00
Hamish Friedlander
b7691077cf
API Prep forForeignID for immutability in 3.1 per 7673
2012-07-23 10:31:47 +12:00
Andrew Short
c058f97edd
BUG: Allow using instances for search filters.
...
Previously search filters could only be specified as strings, this
allows instances to be used so more complex filter configuration
can be used.
2012-07-23 02:11:35 +10:00
Hamish Friedlander
e8cd675c94
BUG trac 7482 couldnt publish composite fields to live
...
When publishing to live, DataObject#forceChange is called, which wasnt correctly loading
in fields that were lazy (unloaded) if those fields were from composite fields
like Money. The end result is that any Money values would be forced to null on
publish to live
Also changes the API of the (internal, protected) loadLazyFields method so that
not passing a class argument just unlazys all lazy fields regardless of source table
2012-07-18 16:28:24 +12:00
Hamish Friedlander
69928631fe
BUG trac 7482, we werent unlazying composite fields right
...
In getField we check if the field we are getting is currently lazy (unloaded), and
load it if it is. This was only working for simple fields though - composite
fields like Money werent working
2012-07-18 16:25:37 +12:00
Ingo Schommer
712f28bc78
Scoped deprecation messages ( fixes #7645 )
2012-07-13 11:37:35 +02:00
Hamish Friedlander
890f7e3919
BUG $db in extensions not inited early enough ( #7598 )
...
When querying DataObjects by a generic parent class (like SiteTree for instance), fields added via $db
set on child classes wouldnt appear.
This is because Object::__construct wasnt called early enough in DataObject::__construct, so
extensions werent initialised when $db was first accessed
2012-07-02 17:25:14 +12:00
Sean Harvey
0a2e877625
MINOR Remove PostgreSQLDatabase boolean workaround in
...
DataObject::__construct()
The database adapter uses smallint instead of the boolean datatype,
which works around the issue instead of converting the value.
2012-06-12 14:21:59 +12:00
Sean Harvey
59e68f16da
MINOR Remove MSSQLDatabase date/datetime workarounds from DataObject::__construct()
...
These are being handled by the MSSQLDatabase class in the mssql module
instead, which keeps the workarounds separated from the framework core.
2012-06-12 12:25:15 +12:00
Sam Minnee
f65a7c6b21
API CHANGE: Remove dodgy DataObject::destroy() behaviour, opting instead for using PHP5.3's garbage collector.
2012-06-11 22:41:12 +12:00
Sam Minnee
5499079c1c
BUGFIX: Fixed ORM bugs introduced in ec55468932
2012-06-05 11:07:19 +12:00
Sam Minnée
90378b0998
Merge pull request #504 from schmengler/namespace-fixes-rc1
...
BUGFIX: Handling of classes with namespaces in database
2012-06-04 15:31:26 -07:00
Fabian Schmengler
ec55468932
BUGFIX: Handling of classes with namespaces in database
...
MySQLDatabase::enumValuesForField() - Added stripslashes because backslashes are escaped in the type description
DataObject::requireTable() - Added double quotes to column names in automatically generated indexes for many_many relationships
DataObject::write() - Escaped class name for DB query
DataQuery::getFinalisedQuery() - Escaped class names for DB query
2012-06-04 20:22:37 +02:00
Marcus Nyeholt
82a1e7d282
MINOR Use injector for creating Member_GroupSet object
...
MINOR Use injector for creating many many list objects
MINOR Use injector for creating objects from within the DataList
MINOR Use Injector::inst() for creating objects; cannot rely on this->injector being present due to many classes being created with 'new', so use inst() directly
MINOR Remove injector autoset property for now; automatically setting it breaks a few test cases that don't know about it for now, and it's not needed just yet
2012-06-05 01:33:44 +10:00
Sean Harvey
792c89e103
ENHANCEMENT Adding List() in the GenericTemplateGlobalProvider so
...
templates can use <% cached List(Member).max(LastEdited) %> instead
of deprecated "Aggregate" syntax.
2012-05-29 20:04:51 +12:00
Sean Harvey
862d7f249b
MINOR If $containerClass passed in to DataObject::get() isn't DataList,
...
use Deprecation::notice() instead of throwing a notice
2012-05-28 21:12:06 +12:00
Sean Harvey
b1104dac25
BUGFIX Don't try lazy loading fields when the record ID is set to something non-numeric, otherwise you'll get a SQL error.
2012-05-15 17:18:50 +12:00
Sean Harvey
a53cca8932
MINOR Renaming getFieldSet with getFieldList in FormScaffolder
2012-05-14 15:03:22 +12:00
Sean Harvey
1859070fa9
MINOR Fixing use of deprecated getAllFields(), mark field as deprecated properly.
2012-05-11 11:23:24 +12:00
Sean Harvey
051d9de482
API CHANGE Deprecated internal access to SQLQuery properties, update core code to reflect these changes.
...
Using set/add instead in accessor methods, and use Database::sql*ToString() to allow easier per-database adapter SQL overloading.
2012-05-07 14:21:44 +12:00
Sean Harvey
0882741f54
API CHANGE Renamed setModel for DataModel instances to setDataModel for
...
semantics, and also to allow a field name called "Model"
2012-05-01 14:45:44 +12:00
Robert Curry
ff6909df97
ENHANCEMENT: Add lazy loading to DataQuery.
2012-04-30 16:12:15 +12:00
Mateusz Uzdowski
6469d83569
API CHANGE: add a remote relation class getter to DataObject
2012-04-23 15:01:55 +12:00
Sean Harvey
1683299d81
MINOR Ignore any values that come through as arrays in DataObject::cache_composite_fields()
2012-04-20 15:25:52 +12:00
Sam Minnee
8e48e6e231
API CHANGE: Allow <classname>::get(), eg, Member::get()->byID(5)
2012-04-20 14:58:24 +12:00
Sean Harvey
4c6be2931b
BUGFIX Removing use of deprecated Object static functions like
...
get_static(), set_static(), uninherited() etc. Replace with equivalent
Config system get(), update()
2012-04-18 23:10:57 +12:00
Sean Harvey
7d84aff01e
Merge pull request #339 from ajoneil/remove-pre-53-support
...
Remove pre 5.3 support
2012-04-17 16:19:23 -07:00
Andrew O'Neil
fb3b03f38b
MINOR: Remove support for PHP <5.3.2
2012-04-18 11:01:03 +12:00
Mateusz Uzdowski
42e6ae2cdf
APICHANGE: add validation extension hook to DataExtension
2012-04-18 09:25:48 +12:00
Ingo Schommer
d44f6b3e1f
MINOR Removed deprecated usage of $priority argument in _t() calls
2012-04-15 17:17:17 +02:00
Ingo Schommer
b81863cfd9
MINOR Caching DataObject->fieldLabels() in memory, to avoid _t() being called excessively through fieldLabel()
2012-04-15 17:17:17 +02:00
Simon Welsh
f07258f3cf
MINOR Update @package values to match renaming sapphire
2012-04-15 10:50:19 +12:00
Ingo Schommer
8ba9c3ca6b
API CHANGE Removed $params argument to DataObject->getCMSFields(), please use FormScaffolder directly ( fixes #7135 )
2012-04-13 15:46:47 +02:00
Ingo Schommer
c73b80049a
MINOR Removed usage of deprecated Object::uninherited_static() in core, improves CMS loading speed in live mode by ~3.5%
2012-04-12 18:26:56 +02:00
Mateusz Uzdowski
ae5bd7d65e
ENHANCEMENT: refer to cache statics explicitly via DataObject (os6175)
...
Unify the usage across the class. Since the intention is to have a
single site-wide cache, calling via DataObject seems to be a better
option - self could theoretically end up calling a redefined field from
a subclass.
2012-04-12 17:04:24 +12:00
Mateusz Uzdowski
aedadebae6
BUGFIX: adjust the cache flush and reset functions to cover all caches (os6175)
2012-04-12 17:04:22 +12:00
Mateusz Uzdowski
8ea2460e50
BUGFIX: make internal DataObject caches more consistent (os6175)
2012-04-12 17:03:18 +12:00
Mateusz Uzdowski
621b2e1888
APICHANGE: deprecate DataObject::setComponent, no longer does anything.
2012-04-12 17:02:09 +12:00
Mateusz Uzdowski
360e9df54e
MINOR: fix typo
2012-04-12 16:22:36 +12:00
Andrew O'Neil
bdb312c665
API CHANGE: DBField::hasValue() conflicts with ViewableData::hasValue(), use DBField::exists() instead.
2012-04-11 14:48:06 +12:00
Ingo Schommer
6517f4496b
Merge pull request #273 from ajoneil/sapphire
...
---
This allows DataList::create(SiteTree) as equivalent to Object::create(DataList, SiteTree), without
having to have a create() function on DataList.
Required for E_STRICT compliance, as child classes cant override create() if they change the arguments.
DBField::create() is also renamed to DBField::create_field(), as this does not just call the constructor, which all other cases of create() do.
Conflicts:
tests/model/DateTest.php
tests/model/DatetimeTest.php
2012-04-04 16:48:16 +02:00
Sam Minnee
58433d38ce
BUGFIX: Tidied up relObject() behaviour on DataLists to restore broken SearchContext functionality.
2012-03-30 15:59:57 +13:00
Sean Harvey
e097f6e1a8
MINOR Fixes to method arguments in core classes for E_STRICT support.
...
API CHANGE Remove abstract static function and just use static functions
in Authenticator (PHP 5.3+ doesn't support abstract static functions)
2012-03-28 22:41:42 +13:00
Normann Lou
9e60225064
MINOR : Update core docs to use DataList::create() rather than DataObject::get()/get_one()/get_by_id() where appropriate - Trac#6891
2012-03-27 17:02:18 +02:00
Andrew O'Neil
de2832e65f
ENHANCEMENT: Allow Object::create() to be called with late static binding.
...
This allows DataList::create('SiteTree') as equivalent to Object::create('DataList', 'SiteTree'), without
having to have a create() function on DataList. Required for E_STRICT compliance.
2012-03-27 17:57:42 +13:00
Sam Minnee
2576944a45
API CHANGE: Added DataObject::relField(), which pushes the "relation dot syntax" code of TableListField/GridField back to the model.
...
BUGFIX: Made DataObject::relObject() more flexible; allowable thanks to new ORM.
2012-03-24 14:04:08 +13:00
Ingo Schommer
687a1ca72b
BUGFIX Don't include has_many/many_many relationships in DataObject->scaffoldFormFields() when the record doesn't have an ID yet - as the scaffolded GridFieldAddExistingAutocompleter component assumes the component has an ID to query against ( fixes #5723 )
2012-03-14 22:44:07 +01:00
Hamish Friedlander
4315e51358
BUGFIX: Fix deprecated and removed static accessor calls
2012-03-09 18:16:44 +13:00
Stig Lindqvist
4f1da0a5e8
MINOR If the limit clause on DataObject::get() passes a SQL type of limit, modify it for SS_List::limit()
2012-03-09 17:07:42 +13:00
Stig Lindqvist
2cb67efe07
API CHANGE DataObject::getComponents() should use default value for limit as NULL
2012-03-09 17:07:41 +13:00
Ingo Schommer
bb6d4c506e
BUGFIX Fixed HasManyList and ManyManyList queries for relationships on new records (was returning all available records due to the SQL filtering ignoring ID=0)
2012-03-06 01:23:34 +01:00
Ingo Schommer
9451993d74
API CHANGE Moved DataObject->writeWithoutVersion() to Versioned extension
...
BUGFIX Don't create new version on related VirtualPage records in SiteTree->onAfterWrite() when the write was triggered through writeWithoutVersion(). Use a new $_nextWriteWithoutVersion flag replacing the -1 Version number for this purpose (AIR-97)
2012-01-14 13:07:12 +01:00
Sam Minnee
0d683dd8ef
MINOR: Removed use of deprecated join() in favour of innerJoin() and leftJoin().
2011-10-29 17:36:38 +13:00
Sam Minnee
42b8d3da04
MINOR: Use FieldList over deprecated FieldSet
2011-10-29 17:36:38 +13:00
Sam Minnee
e5afa25522
MINOR: Use Deprecation class to indicate deprecated methods in core.
2011-10-29 17:34:31 +13:00
Sean Harvey
3bf983200b
BUGFIX DataQuery: ensuring ORDER BY columns are set in SELECT clauses
2011-10-29 17:28:46 +13:00
Simon Welsh
ca074eb7ba
Changes default MySQL storage engine to InnoDB. File requires MyISAM for FulltextSearch.
2011-10-29 13:34:45 +13:00
Hamish Friedlander
0a3e0f15de
MINOR: Replace references to FieldSet (now deprecated) with references to FieldList
2011-10-28 15:58:55 +13:00
Hamish Friedlander
4c0105a3c4
MINOR: Fix deprecated notices - change old references to 2.5 from ORM work to 3.0.0, and use new deprecation notice system
2011-10-28 15:58:55 +13:00
Ingo Schommer
c630f83344
BUGFIX Setting level in DataObject->getChangedFields() to 'value change' rather than 'type change' for CompositeFields, so they save correctly ( fixes #6726 , thanks frankmullenger)
2011-10-07 22:57:23 +02:00
Ingo Schommer
99355c0089
ENHANCEMENT Added new onBeforeDuplicate() and onAfterDuplicate() hooks to DataObject
2011-10-07 14:12:49 +02:00
Sam Minnee
878b348a0f
Merge branch 'master' into new-orm
...
Conflicts:
docs/en/reference/built-in-page-controls.md
model/SQLQuery.php
2011-05-26 17:08:10 +12:00
ajshort
1f6f7f0862
API CHANGE: Deprecated CompositeField->FieldSet() in favour of CompositeField->FieldList().
...
MINOR: Replaced usage of FieldSet with FieldList.
MINOR: Renamed FieldSetTest to FieldListTest.
2011-05-11 17:51:54 +10:00
Sam Minnee
7fbb919ce8
API CHANGE: Introduce DataModel object, as a representation of the project's entire data model, and tie it to $this->model an all DataObjects, Controllers, and RequestHandlers for easy non-static access.
...
API CHANGE: Add DataList::newObject(), which creates a new object on that DataList.
API CHANGE: RequestHandler::handleRequest() now needs to handle a $model argument, if you override it.
2011-05-01 17:33:02 +12:00
ajshort
81c0caaddb
API CHANGE: Renamed DataList::filter() and DataQuery::filter() to ::where().
2011-05-01 15:26:30 +12:00
Sam Minnee
0ba86971e2
API CHANGE: Removed context object - it's a hack.
2011-05-01 15:25:58 +12:00
Sam Minnee
050e0675ce
ENHANCEMENT: Created HasManyList and ManyManyList objects that represent relations. API CHANGE: Relation methods no longer cache their results. API CHANGE: ComponentSet is deprecated. API CHANGE: DataObject::getManyManyComponentsQuery() no longer exists; just use the ManyManyList itself. API CHANGE: DataObject::getManyManyJoin() no longer exists; just use the ManyManyList itself. API CHANGE: DataObject::getManyManyFilter() no longer exists; just use the ManyManyList itself.
2011-05-01 15:25:45 +12:00
Sam Minnee
de1494e3a8
ENHANCEMENT: Implemented DataList as the successor of DataObjectSet. DataList doesn't execute the query until it's actually needed, allowing for a more flexible ORM.
...
API CHANGE: augmentSQL is now passed a DataQuery object from which query parameters can be extracted.
API CHANGE: DataObjectDecorators that manipulate the query can now define augmentDataQueryCreation().
API CHANGE: The container class argument for DataObject::get() is deprecated.
API CHANGE: DataObject::buildSQL() and DataObject::extendedSQL() are deprecated; just use DataObject::get() now.
API CHANGE: DataObject::instance_get() and DataObject::instance_get_one() are deprecated, and can no longer be overloaded.
API CHANGE: DataObject::buildDataObjectSet() is deprecated.
API CHANGE: Cant't call manual manipulation methods on DataList such as insertFirst()
2011-05-01 15:25:45 +12:00
ajshort
3a1c2df4e7
API CHANGE: Renamed DataObjectDecorator to DataExtension.
...
API CHANGE: Renamed LeftAndMainDecorator to LeftAndMainExtension.
MINOR: Replaced all references to decorators with extension.
2011-04-26 11:01:38 +10:00
ajshort
e8dd38eac3
API CHANGE: Removed DataObjectLog class, the same functionality should be implemented using extensions.
2011-04-26 11:01:38 +10:00
Ingo Schommer
9b29616710
API CHANGE Rearranged files in sapphire to reflect core dependencies more accurately, and have the tests/ folder mirror its folder structure
2011-03-31 09:56:21 +13:00