Skip to content

Commit 07851ca

Browse files
committed
API Deprecate Versioned::canArchive()
1 parent 1c13b43 commit 07851ca

3 files changed

+19
-5
lines changed

src/GridFieldArchiveAction.php

+8-2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace SilverStripe\Versioned;
44

55
use SilverStripe\Control\Controller;
6+
use SilverStripe\Dev\Deprecation;
67
use SilverStripe\Forms\GridField\GridField;
78
use SilverStripe\Forms\GridField\GridField_ActionMenuItem;
89
use SilverStripe\Forms\GridField\GridField_ActionProvider;
@@ -176,7 +177,8 @@ public function handleAction(GridField $gridField, $actionName, $arguments, $dat
176177
return;
177178
}
178179

179-
if (!$item->canArchive()) {
180+
$canArchive = Deprecation::withNoReplacement(fn() => $item->canArchive());
181+
if (!$canArchive) {
180182
throw new ValidationException(
181183
_t(__CLASS__ . '.ArchivePermissionsFailure', "No archive permissions")
182184
);
@@ -196,7 +198,11 @@ public function handleAction(GridField $gridField, $actionName, $arguments, $dat
196198
public function getArchiveAction($gridField, $record)
197199
{
198200
/* @var DataObject|Versioned $record */
199-
if (!$record->hasMethod('canArchive') || !$record->canArchive()) {
201+
if (!$record->hasMethod('canArchive')) {
202+
return null;
203+
}
204+
$canArchive = Deprecation::withNoReplacement(fn() => $record->canArchive());
205+
if (!$canArchive) {
200206
return null;
201207
}
202208

src/Versioned.php

+7-1
Original file line numberDiff line numberDiff line change
@@ -1498,16 +1498,18 @@ protected function extendCanUnpublish()
14981498
*
14991499
* @param Member $member
15001500
* @return bool
1501+
* @deprecated 5.3.0 Use canDelete() instead.
15011502
*/
15021503
public function canArchive($member = null)
15031504
{
1505+
Deprecation::notice('5.3.0', 'Use canDelete() instead.');
15041506
if (!$member) {
15051507
$member = Security::getCurrentUser();
15061508
}
15071509

15081510
// Standard mechanism for accepting permission changes from extensions
15091511
$owner = $this->owner;
1510-
$extended = $owner->extendedCan('canArchive', $member);
1512+
$extended = Deprecation::withNoReplacement(fn() => $owner->extendedCan('canArchive', $member));
15111513
if ($extended !== null) {
15121514
return $extended;
15131515
}
@@ -1530,8 +1532,12 @@ public function canArchive($member = null)
15301532
return true;
15311533
}
15321534

1535+
/**
1536+
* @deprecated 5.3.0 Will be removed without equivalent functionality.
1537+
*/
15331538
protected function extendCanArchive()
15341539
{
1540+
Deprecation::notice('5.3.0', 'Will be removed without equivalent functionality.');
15351541
// Prevent canArchive() extending itself
15361542
return null;
15371543
}

src/VersionedGridFieldItemRequest.php

+4-2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use SilverStripe\CMS\Controllers\CMSMain;
66
use SilverStripe\Control\HTTPResponse;
77
use SilverStripe\Core\Convert;
8+
use SilverStripe\Dev\Deprecation;
89
use SilverStripe\Forms\FieldList;
910
use SilverStripe\Forms\Form;
1011
use SilverStripe\Forms\FormAction;
@@ -118,7 +119,8 @@ public function doArchive($data, $form)
118119
{
119120
/** @var Versioned|DataObject $record */
120121
$record = $this->getRecord();
121-
if (!$record->canArchive()) {
122+
$canArchive = Deprecation::withNoReplacement(fn() => $record->canArchive());
123+
if (!$canArchive) {
122124
return $this->httpError(403);
123125
}
124126

@@ -293,7 +295,7 @@ protected function addVersionedButtons(DataObject $record, FieldList $actions)
293295
$canPublish = $record->canPublish();
294296
$canUnpublish = $record->canUnpublish();
295297
$canEdit = $record->canEdit();
296-
$canArchive = $record->canArchive();
298+
$canArchive = Deprecation::withNoReplacement(fn() => $record->canArchive());
297299

298300
// "save", supports an alternate state that is still clickable, but notifies the user that the action is not needed.
299301
$noChangesClasses = 'btn-outline-primary font-icon-tick';

0 commit comments

Comments
 (0)