From a317c46e7d417ab02962fddc6e3c65e575af69fe Mon Sep 17 00:00:00 2001 From: Nic Date: Fri, 22 Nov 2024 20:27:07 -0600 Subject: [PATCH 1/5] UPDATE cms 6 requirements --- composer.json | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/composer.json b/composer.json index cf9bba2..12c2a91 100644 --- a/composer.json +++ b/composer.json @@ -18,13 +18,18 @@ ], "require": { "dnadesign/silverstripe-elemental": "^5", - "silvershop/silverstripe-hasonefield": "^4", - "silverstripe/linkfield": "^4.0", - "unclecheese/display-logic": "^3" + "silvershop/silverstripe-hasonefield": "dev-silverstripe6", + "silverstripe/linkfield": "^5.0", + "unclecheese/display-logic": "dev-silverstripe6" }, "require-dev": { - "silverstripe/recipe-testing": "^3", - "silverstripe/frameworktest": "^1" + "dnadesign/silverstripe-elemental": "6.x-dev", + "phpunit/phpunit": "^11.3", + "squizlabs/php_codesniffer": "^3.7", + "silverstripe/versioned": "^3", + "silverstripe/standards": "^1", + "phpstan/extension-installer": "^1.3", + "silverstripe/frameworktest": "^2" }, "minimum-stability": "dev", "prefer-stable": true, From 214d240f707c0763b194222ca172c53bee9eeef5 Mon Sep 17 00:00:00 2001 From: Nic Date: Fri, 22 Nov 2024 20:30:03 -0600 Subject: [PATCH 2/5] UPDATE elemental version --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 12c2a91..50ce60d 100644 --- a/composer.json +++ b/composer.json @@ -17,7 +17,7 @@ } ], "require": { - "dnadesign/silverstripe-elemental": "^5", + "dnadesign/silverstripe-elemental": "^6", "silvershop/silverstripe-hasonefield": "dev-silverstripe6", "silverstripe/linkfield": "^5.0", "unclecheese/display-logic": "dev-silverstripe6" From ac183f943d0a851a7e97fc6591ed0e74aab82f8d Mon Sep 17 00:00:00 2001 From: Nic Horstmeier Date: Fri, 22 Nov 2024 21:08:37 -0600 Subject: [PATCH 3/5] UPDATE reference canDelete as canArchive is deprecated via silverstripe/silverstripe-versioned#461 --- src/Model/BaseElementObject.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Model/BaseElementObject.php b/src/Model/BaseElementObject.php index d16678a..bb0aaf3 100644 --- a/src/Model/BaseElementObject.php +++ b/src/Model/BaseElementObject.php @@ -228,7 +228,7 @@ public function canDelete($member = null) } if ($page = $this->getPage()) { - return $page->canArchive($member); + return $page->canDelete($member); } return Permission::check('CMS_ACCESS', 'any', $member); From e7705b556f3bb31f0e9ed1355d8abb53ad1b1b1a Mon Sep 17 00:00:00 2001 From: Nic Horstmeier Date: Fri, 22 Nov 2024 21:30:15 -0600 Subject: [PATCH 4/5] UPDATE include vcs --- composer.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/composer.json b/composer.json index 50ce60d..f66d842 100644 --- a/composer.json +++ b/composer.json @@ -31,6 +31,16 @@ "phpstan/extension-installer": "^1.3", "silverstripe/frameworktest": "^2" }, + "repositories": [ + { + "type": "vcs", + "url": "git@github.com:muskie9/silverstripe-hasonefield.git" + }, + { + "type": "vcs", + "url": "git@github.com:dynamic/silverstripe-display-logic.git" + } + ], "minimum-stability": "dev", "prefer-stable": true, "autoload": { From 3cb5b43633f156257ab1238d002304cc12b375d0 Mon Sep 17 00:00:00 2001 From: Nic Horstmeier Date: Fri, 22 Nov 2024 21:48:32 -0600 Subject: [PATCH 5/5] UPDATE type hinting --- src/Model/BaseElementObject.php | 74 ++++++++++++++++----------------- 1 file changed, 36 insertions(+), 38 deletions(-) diff --git a/src/Model/BaseElementObject.php b/src/Model/BaseElementObject.php index bb0aaf3..25129b7 100644 --- a/src/Model/BaseElementObject.php +++ b/src/Model/BaseElementObject.php @@ -2,19 +2,17 @@ namespace Dynamic\BaseObject\Model; +use Exception; use SilverStripe\Assets\Image; use SilverStripe\ORM\DataObject; use SilverStripe\Forms\FieldList; -use SilverStripe\Forms\TextField; use SilverStripe\Control\Director; use SilverStripe\CMS\Model\SiteTree; -use SilverStripe\Forms\CheckboxField; +use SilverStripe\Security\Member; use SilverStripe\Security\Permission; use SilverStripe\Versioned\Versioned; -use SilverStripe\ORM\ValidationResult; use SilverStripe\LinkField\Models\Link; use SilverStripe\LinkField\Form\LinkField; -use DNADesign\Elemental\Models\BaseElement; use DNADesign\Elemental\Forms\TextCheckboxGroupField; /** @@ -37,53 +35,53 @@ class BaseElementObject extends DataObject /** * @var array */ - private static $db = array( + private static array $db = [ 'Title' => 'Varchar(255)', 'ShowTitle' => 'Boolean', 'Content' => 'HTMLText', - ); + ]; /** * @var array */ - private static $has_one = array( + private static array $has_one = [ 'Image' => Image::class, 'ElementLink' => Link::class, - ); + ]; /** * @var array */ - private static $owns = array( + private static array $owns = [ 'Image', 'ElementLink', - ); + ]; /** * @var string */ - private static $default_sort = 'Title ASC'; + private static string $default_sort = 'Title ASC'; /** * @var array */ - private static $summary_fields = array( + private static array $summary_fields = [ 'Image.CMSThumbnail', 'Title', - ); + ]; /** * @var array */ - private static $searchable_fields = array( + private static array $searchable_fields = [ 'Title', 'Content', - ); + ]; /** * @var array */ - private static $extensions = [ + private static array $extensions = [ Versioned::class, ]; @@ -92,18 +90,18 @@ class BaseElementObject extends DataObject * * @var bool */ - private static $versioned_gridfield_extensions = true; + private static bool $versioned_gridfield_extensions = true; /** * @var string */ - private static $table_name = 'BaseElementObject'; + private static string $table_name = 'BaseElementObject'; /** * @param bool $includerelations * @return array */ - public function fieldLabels($includerelations = true) + public function fieldLabels($includerelations = true): array { $labels = parent::fieldLabels($includerelations); @@ -111,7 +109,7 @@ public function fieldLabels($includerelations = true) $labels['ElementLink'] = _t(__CLASS__ . '.LinkLabel', 'Link'); $labels['Image'] = _t(__CLASS__ . '.ImageLabel', 'Image'); $labels['Image.CMSThumbnail'] = _t(__CLASS__ . '.ImageLabel', 'Image'); - $labels['Content'] = _t(__CLASS__. '.ContentLabel', 'Content'); + $labels['Content'] = _t(__CLASS__ . '.ContentLabel', 'Content'); return $labels; } @@ -119,16 +117,16 @@ public function fieldLabels($includerelations = true) /** * @return FieldList * - * @throws \Exception + * @throws Exception */ - public function getCMSFields() + public function getCMSFields(): FieldList { $this->beforeUpdateCMSFields(function ($fields) { /** @var FieldList $fields */ - $fields->removeByName(array( + $fields->removeByName([ 'ElementFeaturesID', 'Sort', - )); + ]); // Add a combined field for "Title" and "Displayed" checkbox in a Bootstrap input group $fields->removeByName('ShowTitle'); @@ -147,7 +145,7 @@ public function getCMSFields() $fields->insertBefore('Content', $fields->dataFieldByName('ElementLink')); $image = $fields->dataFieldByName('Image') - ->setDescription(_t(__CLASS__.'.ImageDescription', 'optional. Display an image.')) + ->setDescription(_t(__CLASS__ . '.ImageDescription', 'optional. Display an image.')) ->setFolderName('Uploads/Elements/Objects'); $fields->insertBefore('Content', $image); @@ -161,7 +159,7 @@ public function getCMSFields() /** * @return SiteTree|null */ - public function getPage() + public function getPage(): SiteTree|null { $page = Director::get_current_page(); // because $page can be a SiteTree or Controller @@ -171,10 +169,10 @@ public function getPage() /** * Basic permissions, defaults to page perms where possible. * - * @param \SilverStripe\Security\Member|null $member - * @return boolean + * @param Member|null $member + * @return bool */ - public function canView($member = null) + public function canView($member = null): bool { $extended = $this->extendedCan(__FUNCTION__, $member); if ($extended !== null) { @@ -191,11 +189,11 @@ public function canView($member = null) /** * Basic permissions, defaults to page perms where possible. * - * @param \SilverStripe\Security\Member|null $member + * @param Member|null $member * - * @return boolean + * @return bool */ - public function canEdit($member = null) + public function canEdit($member = null): bool { $extended = $this->extendedCan(__FUNCTION__, $member); if ($extended !== null) { @@ -216,11 +214,11 @@ public function canEdit($member = null) * element is not published, then it can be deleted by someone who doesn't * have publishing permissions. * - * @param \SilverStripe\Security\Member|null $member + * @param Member|null $member * - * @return boolean + * @return bool */ - public function canDelete($member = null) + public function canDelete($member = null): bool { $extended = $this->extendedCan(__FUNCTION__, $member); if ($extended !== null) { @@ -237,12 +235,12 @@ public function canDelete($member = null) /** * Basic permissions, defaults to page perms where possible. * - * @param \SilverStripe\Security\Member|null $member + * @param Member|null $member * @param array $context * - * @return boolean + * @return bool */ - public function canCreate($member = null, $context = array()) + public function canCreate($member = null, $context = []): bool { $extended = $this->extendedCan(__FUNCTION__, $member); if ($extended !== null) {