diff --git a/code/Reports/AbstractCMSReport.php b/code/Reports/AbstractCMSReport.php new file mode 100644 index 0000000000..dcd4ebe5fb --- /dev/null +++ b/code/Reports/AbstractCMSReport.php @@ -0,0 +1,68 @@ +Link('show'); + + return [ + 'Title' => [ + 'title' => _t(__CLASS__ . '.PageName', 'Page name'), + 'formatting' => function ($value, $item) use ($linkBase) { + return sprintf( + '%s', + Controller::join_links($linkBase, $item->ID), + _t(__CLASS__ . '.HoverTitleEditPage', 'Edit page'), + $value + ); + }, + ], + 'LastEdited' => [ + 'title' => $dateTitle, + 'casting' => 'DBDatetime->Full', + ], + 'AuthorID' => [ + 'title' => _t(__CLASS__ . '.LastEditor', 'Last Editor'), + 'formatting' => function ($value, SiteTree $item) { + $latestVersion = Versioned::get_latest_version(SiteTree::class, $item->ID); + if (!$latestVersion) { + return ''; + } + + /** @var Member $member */ + $member = Member::get()->byID($latestVersion->AuthorID); + if ($member) { + return sprintf('%s %s', $member->FirstName, $member->Surname); + } + return ''; + }, + ], + ]; + } +} diff --git a/code/Reports/BrokenFilesReport.php b/code/Reports/BrokenFilesReport.php index 9aa036495b..d21e68c14b 100644 --- a/code/Reports/BrokenFilesReport.php +++ b/code/Reports/BrokenFilesReport.php @@ -8,13 +8,11 @@ use SilverStripe\Core\ClassInfo; use SilverStripe\Forms\CheckboxField; use SilverStripe\Forms\FieldList; -use SilverStripe\Reports\Report; use SilverStripe\ORM\DB; use SilverStripe\Versioned\Versioned; -class BrokenFilesReport extends Report +class BrokenFilesReport extends AbstractCMSReport { - public function title() { return _t(__CLASS__.'.BROKENFILES', "Pages with broken files"); @@ -42,16 +40,6 @@ public function sourceRecords($params = null) return Versioned::get_by_stage(SiteTree::class, $stage, $classFilter); } - public function columns() - { - return array( - "Title" => array( - "title" => "Title", // todo: use NestedTitle(2) - "link" => true, - ), - ); - } - public function getParameterFields() { return new FieldList( diff --git a/code/Reports/BrokenLinksReport.php b/code/Reports/BrokenLinksReport.php index c9ca159bb7..78d7e66445 100644 --- a/code/Reports/BrokenLinksReport.php +++ b/code/Reports/BrokenLinksReport.php @@ -2,25 +2,21 @@ namespace SilverStripe\CMS\Reports; -use SilverStripe\CMS\Controllers\CMSPageEditController; use SilverStripe\CMS\Model\RedirectorPage; use SilverStripe\CMS\Model\SiteTree; use SilverStripe\CMS\Model\VirtualPage; use SilverStripe\Control\Controller; -use SilverStripe\Core\ClassInfo; use SilverStripe\Forms\DropdownField; use SilverStripe\Forms\FieldList; -use SilverStripe\Versioned\Versioned; -use SilverStripe\ORM\DataObject; use SilverStripe\ORM\ArrayList; -use SilverStripe\Reports\Report; +use SilverStripe\ORM\DataObject; +use SilverStripe\Versioned\Versioned; /** * Content side-report listing pages with broken links */ -class BrokenLinksReport extends Report +class BrokenLinksReport extends AbstractCMSReport { - public function title() { return _t(__CLASS__ . '.BROKENLINKS', "Broken links report"); @@ -49,7 +45,7 @@ public function sourceRecords($params, $sort, $limit) ); $isLive = !isset($params['CheckSite']) || $params['CheckSite'] == 'Published'; if ($isLive) { - $ret = Versioned::get_by_stage(SiteTree::class, 'Live', $brokenFilter, $sort, $join, $limit); + $ret = Versioned::get_by_stage(SiteTree::class, Versioned::LIVE, $brokenFilter, $sort, $join, $limit); } else { $ret = DataObject::get(SiteTree::class, $brokenFilter, $sort, $join, $limit); } @@ -102,29 +98,9 @@ public function sourceRecords($params, $sort, $limit) } public function columns() { - if (isset($_REQUEST['filters']['CheckSite']) && $_REQUEST['filters']['CheckSite'] == 'Draft') { - $dateTitle = _t(__CLASS__ . '.ColumnDateLastModified', 'Date last modified'); - } else { - $dateTitle = _t(__CLASS__ . '.ColumnDateLastPublished', 'Date last published'); - } + $columns = parent::columns(); - $linkBase = CMSPageEditController::singleton()->Link('show'); - $fields = array( - "Title" => array( - "title" => _t(__CLASS__ . '.PageName', 'Page name'), - 'formatting' => function ($value, $item) use ($linkBase) { - return sprintf( - '%s', - Controller::join_links($linkBase, $item->ID), - _t(__CLASS__ . '.HoverTitleEditPage', 'Edit page'), - $value - ); - } - ), - "LastEdited" => array( - "title" => $dateTitle, - 'casting' => 'DBDatetime->Full' - ), + $columns += [ "BrokenReason" => array( "title" => _t(__CLASS__ . '.ColumnProblemType', "Problem type") ), @@ -142,9 +118,9 @@ public function columns() ); } ) - ); + ]; - return $fields; + return $columns; } public function parameterFields() { diff --git a/code/Reports/BrokenRedirectorPagesReport.php b/code/Reports/BrokenRedirectorPagesReport.php index 42ff976664..922e6d7c1d 100644 --- a/code/Reports/BrokenRedirectorPagesReport.php +++ b/code/Reports/BrokenRedirectorPagesReport.php @@ -9,11 +9,9 @@ use SilverStripe\Forms\FieldList; use SilverStripe\ORM\DB; use SilverStripe\Versioned\Versioned; -use SilverStripe\Reports\Report; -class BrokenRedirectorPagesReport extends Report +class BrokenRedirectorPagesReport extends AbstractCMSReport { - public function title() { return _t(__CLASS__.'.BROKENREDIRECTORPAGES', 'RedirectorPages pointing to deleted pages'); @@ -31,20 +29,10 @@ public function sourceRecords($params = null) $classFilter = array( "\"ClassName\" IN ($classParams) AND \"HasBrokenLink\" = 1" => $classes ); - $stage = isset($params['OnLive']) ? 'Live' : 'Stage'; + $stage = isset($params['OnLive']) ? Versioned::LIVE : Versioned::DRAFT; return Versioned::get_by_stage(SiteTree::class, $stage, $classFilter); } - public function columns() - { - return array( - "Title" => array( - "title" => "Title", // todo: use NestedTitle(2) - "link" => true, - ), - ); - } - public function getParameterFields() { return new FieldList( diff --git a/code/Reports/BrokenVirtualPagesReport.php b/code/Reports/BrokenVirtualPagesReport.php index 9863b4e464..ac3ceb5f48 100644 --- a/code/Reports/BrokenVirtualPagesReport.php +++ b/code/Reports/BrokenVirtualPagesReport.php @@ -9,11 +9,9 @@ use SilverStripe\Forms\FieldList; use SilverStripe\ORM\DB; use SilverStripe\Versioned\Versioned; -use SilverStripe\Reports\Report; -class BrokenVirtualPagesReport extends Report +class BrokenVirtualPagesReport extends AbstractCMSReport { - public function title() { return _t(__CLASS__.'.BROKENVIRTUALPAGES', 'VirtualPages pointing to deleted pages'); @@ -35,16 +33,6 @@ public function sourceRecords($params = null) return Versioned::get_by_stage(SiteTree::class, $stage, $classFilter); } - public function columns() - { - return array( - "Title" => array( - "title" => "Title", // todo: use NestedTitle(2) - "link" => true, - ), - ); - } - public function getParameterFields() { return new FieldList( diff --git a/code/Reports/EmptyPagesReport.php b/code/Reports/EmptyPagesReport.php index 2d76faf462..2000324682 100644 --- a/code/Reports/EmptyPagesReport.php +++ b/code/Reports/EmptyPagesReport.php @@ -5,11 +5,9 @@ use SilverStripe\CMS\Model\RedirectorPage; use SilverStripe\CMS\Model\SiteTree; use SilverStripe\ORM\DataList; -use SilverStripe\Reports\Report; -class EmptyPagesReport extends Report +class EmptyPagesReport extends AbstractCMSReport { - public function title() { return _t(__CLASS__.'.EMPTYPAGES', "Pages with no content"); @@ -38,14 +36,4 @@ public function sourceRecords($params = null) ->filter('Content', [null, '', '
', '']) ->sort('Title'); } - - public function columns() - { - return array( - "Title" => array( - "title" => "Title", // todo: use NestedTitle(2) - "link" => true, - ), - ); - } } diff --git a/code/Reports/RecentlyEditedReport.php b/code/Reports/RecentlyEditedReport.php index 2ac8f4e00b..23aaa3b3a3 100644 --- a/code/Reports/RecentlyEditedReport.php +++ b/code/Reports/RecentlyEditedReport.php @@ -4,12 +4,9 @@ use SilverStripe\CMS\Model\SiteTree; use SilverStripe\ORM\FieldType\DBDatetime; -use SilverStripe\ORM\DataObject; -use SilverStripe\Reports\Report; -class RecentlyEditedReport extends Report +class RecentlyEditedReport extends AbstractCMSReport { - public function title() { return _t(__CLASS__.'.LAST2WEEKS', "Pages edited in the last 2 weeks"); @@ -32,14 +29,4 @@ public function sourceRecords($params = null) ->filter('LastEdited:GreaterThan', date("Y-m-d H:i:s", $threshold)) ->sort("\"SiteTree\".\"LastEdited\" DESC"); } - - public function columns() - { - return array( - "Title" => array( - "title" => "Title", // todo: use NestedTitle(2) - "link" => true, - ), - ); - } }