This is the only way to see if the ViewableData has been customised,
and is useful in situations when you want to further customise an
already-customised object.
For instance, this happens when these criteria are met:
1) No casting has been specified for a method in $casting.
2) A template accesses the field without any casting
3) Any casts by the template will now yield an empty object.
After a brief look at the commit history, it can seem like this bug is several years old, unless it is a side-effect of other changes in the code.
== Steps to reproduce ==
Add two methods to be accessed by a template. Make sure you do not define an entry in $casting for them:
public function Testus() {
return "Te<x>t1";
}
public function Testus2() {
return "Te<x>t2";
}
Add this to a template:
<p>
First access:<br />
"$Testus" : "$Testus.XML"<br />
"$Testus2.XML" : "$Testus2"<br />
</p>
<p>
Second access:<br />
"$Testus" : "$Testus.XML"<br />
"$Testus2.XML" : "$Testus2"<br />
</p>
Open the page in a browser, and you will get:
First access:
"Tet1" : ""
"Te<x>t2" : "Tet2"
Second access:
"Tet1" : ""
"" : "Tet2"
We see that any cast can yield an empty string.
API: CompositeDBField::setValue() may be passed an object as its second argument, in addition to array.
These changes provide a 15% - 20% performance improvement, and as such justify an small API change in the 3.0 branch. It will likely affect anyone who has created their own composite fields, which is fortunately not all that common.
Since we can't influence the setting of configuration values,
we also can't set/unset the 'custom_theme' value based on which
theme is set. This means the 'custom_theme' value goes stale,
and we can't rely on it e.g. in FilesystemPublisher.
The 'theme_enabled' toggle is a cleaner solution to the same problem,
since the 'custom_theme' was really just a way to remember the original
theme, while still disabling it. The toggle makes this more explicit,
but also requires users of the 'theme' setting to check for it.
This means that you dont have to worry about casting it
as HTMLText again when using the result in a template or other context
However in some situations code might be assuming it can
check with is_string, in which case you now need to use instanceof HTMLText
Use third party tools like XHProf instead.
Removed defunct or unnecessary debug GET parameters:
debug_profile, debug_memory, profile_trace, debug_javascript, debug_behaviour