Skip to content

Commit

Permalink
BUGFIX Versioned_Version->relField() so fields can be used in GridFie…
Browse files Browse the repository at this point in the history
…ld etc

Copied from DataObject, since we can't use the $fallback opion in this case
(will try to retrieve from wrong class)
  • Loading branch information
chillu committed Jan 14, 2013
1 parent 703c10a commit f7cd316
Showing 1 changed file with 28 additions and 0 deletions.
28 changes: 28 additions & 0 deletions model/Versioned.php
Expand Up @@ -1210,4 +1210,32 @@ public function Publisher() {
public function Published() {
return !empty( $this->record['WasPublished'] );
}

/**
* Copied from DataObject to allow access via dot notation.
*/
public function relField($fieldName) {
$component = $this;

if(strpos($fieldName, '.') !== false) {
$parts = explode('.', $fieldName);
$fieldName = array_pop($parts);

// Traverse dot syntax
foreach($parts as $relation) {
if($component instanceof SS_List) {
if(method_exists($component,$relation)) $component = $component->$relation();
else $component = $component->relation($relation);
} else {
$component = $component->$relation();
}
}
}

// Unlike has-one's, these "relations" can return false
if($component) {
if ($component->hasMethod($fieldName)) return $component->$fieldName();
return $component->$fieldName;
}
}
}

0 comments on commit f7cd316

Please sign in to comment.