mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 12:05:37 +00:00
Made has_one, has_many, and many_many methods more reliable
git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/branches/2.2.2@53068 467b73ca-7a2a-4603-9d3b-597d59a354a9
This commit is contained in:
parent
1ccaefaf16
commit
4005bc6fc5
@ -935,16 +935,10 @@ class DataObject extends ViewableData implements DataObjectInterface {
|
|||||||
*/
|
*/
|
||||||
public function has_one($component = null) {
|
public function has_one($component = null) {
|
||||||
$classes = ClassInfo::ancestry($this);
|
$classes = ClassInfo::ancestry($this);
|
||||||
$good = false;
|
|
||||||
|
|
||||||
foreach($classes as $class) {
|
foreach($classes as $class) {
|
||||||
// Wait until after we reach DataObject
|
// Wait until after we reach DataObject
|
||||||
if(!$good) {
|
if(in_array($class, array('Object', 'ViewableData', 'DataObject'))) continue;
|
||||||
if($class == 'DataObject') {
|
|
||||||
$good = true;
|
|
||||||
}
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if($component) {
|
if($component) {
|
||||||
$candidate = eval("return isset({$class}::\$has_one[\$component]) ? {$class}::\$has_one[\$component] : null;");
|
$candidate = eval("return isset({$class}::\$has_one[\$component]) ? {$class}::\$has_one[\$component] : null;");
|
||||||
@ -993,16 +987,9 @@ class DataObject extends ViewableData implements DataObjectInterface {
|
|||||||
*/
|
*/
|
||||||
public function has_many($component = null) {
|
public function has_many($component = null) {
|
||||||
$classes = ClassInfo::ancestry($this);
|
$classes = ClassInfo::ancestry($this);
|
||||||
$good = false;
|
|
||||||
|
|
||||||
foreach($classes as $class) {
|
foreach($classes as $class) {
|
||||||
// Wait until after we reach DataObject
|
if(in_array($class, array('ViewableData', 'Object', 'DataObject'))) continue;
|
||||||
if(!$good) {
|
|
||||||
if($class == 'DataObject') {
|
|
||||||
$good = true;
|
|
||||||
}
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if($component) {
|
if($component) {
|
||||||
$candidate = eval("return isset({$class}::\$has_many[\$component]) ? {$class}::\$has_many[\$component] : null;");
|
$candidate = eval("return isset({$class}::\$has_many[\$component]) ? {$class}::\$has_many[\$component] : null;");
|
||||||
@ -1029,20 +1016,10 @@ class DataObject extends ViewableData implements DataObjectInterface {
|
|||||||
*/
|
*/
|
||||||
public function many_many($component = null) {
|
public function many_many($component = null) {
|
||||||
$classes = ClassInfo::ancestry($this);
|
$classes = ClassInfo::ancestry($this);
|
||||||
$good = false;
|
|
||||||
|
|
||||||
foreach($classes as $class) {
|
foreach($classes as $class) {
|
||||||
// Wait until after we reach DataObject
|
// Wait until after we reach DataObject
|
||||||
if(!$good) {
|
if(in_array($class, array('ViewableData', 'Object', 'DataObject'))) continue;
|
||||||
if($class == 'DataObject') {
|
|
||||||
$good = true;
|
|
||||||
}
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if($class == 'DataObject' || $class == 'ViewableData') {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if($component) {
|
if($component) {
|
||||||
// Try many_many
|
// Try many_many
|
||||||
|
Loading…
x
Reference in New Issue
Block a user