@@ -14,7 +14,9 @@ class OwnerPermissionedDataObject extends DataObject {
1414 * @return DataObject
1515 */
1616 protected function RelationOwner () {
17- if ($ this ->hasMethod (static ::$ relationOwnerMethod )) {
17+ if (is_null (static ::$ relationOwnerMethod )) {
18+ return false ;
19+ } elseif ($ this ->hasMethod (static ::$ relationOwnerMethod )) {
1820 return $ this ->{static ::$ relationOwnerMethod }();
1921 } else {
2022 throw new BadMethodCallException (
@@ -24,18 +26,22 @@ protected function RelationOwner() {
2426 }
2527
2628 public function canView ($ member = null ) {
27- return $ this ->RelationOwner ()-> canView ( $ member );
29+ return $ this ->askOwnerForPermission ( __FUNCTION__ , $ member );
2830 }
2931
3032 public function canEdit ($ member = null ) {
31- return $ this ->RelationOwner ()-> canEdit ( $ member );
33+ return $ this ->askOwnerForPermission ( __FUNCTION__ , $ member );
3234 }
3335
3436 public function canDelete ($ member = null ) {
35- return $ this ->RelationOwner ()-> canDelete ( $ member );
37+ return $ this ->askOwnerForPermission ( __FUNCTION__ , $ member );
3638 }
3739
3840 public function canCreate ($ member = null ) {
39- return $ this ->RelationOwner ()->canCreate ($ member );
41+ return $ this ->askOwnerForPermission (__FUNCTION__ , $ member );
42+ }
43+
44+ protected function askOwnerForPermission ($ method , $ member ){
45+ return $ this ->RelationOwner () ? $ this ->RelationOwner ()->{$ method }($ member ) : singleton ('Page ' )->{$ method }($ member );
4046 }
4147}
0 commit comments