mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
Merge pull request #4258 from tractorcow/pulls/4.0/fix-extra-args
API Formalise new additional arguments
This commit is contained in:
commit
4e9f37c516
@ -332,11 +332,15 @@ class File extends DataObject {
|
|||||||
/**
|
/**
|
||||||
* @return boolean
|
* @return boolean
|
||||||
*/
|
*/
|
||||||
public function canCreate($member = null) {
|
public function canCreate($member = null, $context = array()) {
|
||||||
if(!$member) $member = Member::currentUser();
|
if(!$member) {
|
||||||
|
$member = Member::currentUser();
|
||||||
|
}
|
||||||
|
|
||||||
$result = $this->extendedCan('canCreate', $member);
|
$result = $this->extendedCan('canCreate', $member, $context);
|
||||||
if($result !== null) return $result;
|
if($result !== null) {
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
return $this->canEdit($member);
|
return $this->canEdit($member);
|
||||||
}
|
}
|
||||||
|
@ -24,8 +24,9 @@ abstract class DataExtension extends Extension {
|
|||||||
* Edit the given query object to support queries for this extension
|
* Edit the given query object to support queries for this extension
|
||||||
*
|
*
|
||||||
* @param SQLSelect $query Query to augment.
|
* @param SQLSelect $query Query to augment.
|
||||||
|
* @param DataQuery $dataQuery Container DataQuery for this SQLQuery
|
||||||
*/
|
*/
|
||||||
public function augmentSQL(SQLSelect $query) {
|
public function augmentSQL(SQLSelect $query, DataQuery $dataQuery = null) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -2823,12 +2823,13 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity
|
|||||||
* else return $normalValue;
|
* else return $normalValue;
|
||||||
* </code>
|
* </code>
|
||||||
*
|
*
|
||||||
* @param String $methodName Method on the same object, e.g. {@link canEdit()}
|
* @param string $methodName Method on the same object, e.g. {@link canEdit()}
|
||||||
* @param Member|int $member
|
* @param Member|int $member
|
||||||
|
* @param array $context Optional context
|
||||||
* @return boolean|null
|
* @return boolean|null
|
||||||
*/
|
*/
|
||||||
public function extendedCan($methodName, $member) {
|
public function extendedCan($methodName, $member, $context = array()) {
|
||||||
$results = $this->extend($methodName, $member);
|
$results = $this->extend($methodName, $member, $context);
|
||||||
if($results && is_array($results)) {
|
if($results && is_array($results)) {
|
||||||
// Remove NULLs
|
// Remove NULLs
|
||||||
$results = array_filter($results, function($v) {return !is_null($v);});
|
$results = array_filter($results, function($v) {return !is_null($v);});
|
||||||
@ -2876,13 +2877,13 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @todo Should canCreate be a static method?
|
|
||||||
*
|
|
||||||
* @param Member $member
|
* @param Member $member
|
||||||
|
* @param array $context Additional context-specific data which might
|
||||||
|
* affect whether (or where) this object could be created.
|
||||||
* @return boolean
|
* @return boolean
|
||||||
*/
|
*/
|
||||||
public function canCreate($member = null) {
|
public function canCreate($member = null, $context = array()) {
|
||||||
$extended = $this->extendedCan(__FUNCTION__, $member);
|
$extended = $this->extendedCan(__FUNCTION__, $member, $context);
|
||||||
if($extended !== null) {
|
if($extended !== null) {
|
||||||
return $extended;
|
return $extended;
|
||||||
}
|
}
|
||||||
|
@ -183,7 +183,10 @@ class Versioned extends DataExtension implements TemplateGlobalProvider {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Augment the the SQLSelect that is created by the DataQuery
|
* Augment the the SQLSelect that is created by the DataQuery
|
||||||
* @todo Should this all go into VersionedDataQuery?
|
*
|
||||||
|
* @param SQLSelect $query
|
||||||
|
* @param DataQuery $dataQuery
|
||||||
|
* @throws InvalidArgumentException
|
||||||
*/
|
*/
|
||||||
public function augmentSQL(SQLSelect $query, DataQuery $dataQuery = null) {
|
public function augmentSQL(SQLSelect $query, DataQuery $dataQuery = null) {
|
||||||
if(!$dataQuery || !$dataQuery->getQueryParam('Versioned.mode')) {
|
if(!$dataQuery || !$dataQuery->getQueryParam('Versioned.mode')) {
|
||||||
|
@ -87,7 +87,7 @@ class PermissionRole extends DataObject {
|
|||||||
return Permission::check('APPLY_ROLES', 'any', $member);
|
return Permission::check('APPLY_ROLES', 'any', $member);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function canCreate($member = null) {
|
public function canCreate($member = null, $context = array()) {
|
||||||
return Permission::check('APPLY_ROLES', 'any', $member);
|
return Permission::check('APPLY_ROLES', 'any', $member);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42,7 +42,7 @@ class PermissionRoleCode extends DataObject {
|
|||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function canCreate($member = null) {
|
public function canCreate($member = null, $context = array()) {
|
||||||
return Permission::check('APPLY_ROLES', 'any', $member);
|
return Permission::check('APPLY_ROLES', 'any', $member);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user