Code Duplication    Length = 22-27 lines in 3 locations

code/Controllers/CMSMain.php 3 locations

@@ 1775-1800 (lines=26) @@
1772
     * @return HTTPResponse
1773
     * @throws HTTPResponse_Exception
1774
     */
1775
    public function delete($data, $form)
1776
    {
1777
        $id = $data['ID'];
1778
        $record = SiteTree::get()->byID($id);
1779
        if ($record && !$record->canDelete()) {
1780
            return Security::permissionFailure();
1781
        }
1782
        if (!$record || !$record->ID) {
1783
            throw new HTTPResponse_Exception("Bad record ID #$id", 404);
1784
        }
1785
1786
        // Delete record
1787
        $record->delete();
1788
1789
        $this->getResponse()->addHeader(
1790
            'X-Status',
1791
            rawurlencode(_t(
1792
                __CLASS__ . '.REMOVEDPAGEFROMDRAFT',
1793
                "Removed '{title}' from the draft site",
1794
                ['title' => $record->Title]
1795
            ))
1796
        );
1797
1798
        // Even if the record has been deleted from stage and live, it can be viewed in "archive mode"
1799
        return $this->getResponseNegotiator()->respond($this->getRequest());
1800
    }
1801
1802
    /**
1803
     * Delete this page from both live and stage
@@ 1810-1836 (lines=27) @@
1807
     * @return HTTPResponse
1808
     * @throws HTTPResponse_Exception
1809
     */
1810
    public function archive($data, $form)
1811
    {
1812
        $id = $data['ID'];
1813
        /** @var SiteTree $record */
1814
        $record = SiteTree::get()->byID($id);
1815
        if (!$record || !$record->exists()) {
1816
            throw new HTTPResponse_Exception("Bad record ID #$id", 404);
1817
        }
1818
        if (!$record->canArchive()) {
1819
            return Security::permissionFailure();
1820
        }
1821
1822
        // Archive record
1823
        $record->doArchive();
1824
1825
        $this->getResponse()->addHeader(
1826
            'X-Status',
1827
            rawurlencode(_t(
1828
                __CLASS__ . '.ARCHIVEDPAGE',
1829
                "Archived page '{title}'",
1830
                ['title' => $record->Title]
1831
            ))
1832
        );
1833
1834
        // Even if the record has been deleted from stage and live, it can be viewed in "archive mode"
1835
        return $this->getResponseNegotiator()->respond($this->getRequest());
1836
    }
1837
1838
    public function publish($data, $form)
1839
    {
@@ 1845-1866 (lines=22) @@
1842
        return $this->save($data, $form);
1843
    }
1844
1845
    public function unpublish($data, $form)
1846
    {
1847
        $className = $this->config()->get('tree_class');
1848
        /** @var SiteTree $record */
1849
        $record = DataObject::get_by_id($className, $data['ID']);
1850
1851
        if ($record && !$record->canUnpublish()) {
1852
            return Security::permissionFailure($this);
1853
        }
1854
        if (!$record || !$record->ID) {
1855
            throw new HTTPResponse_Exception("Bad record ID #" . (int)$data['ID'], 404);
1856
        }
1857
1858
        $record->doUnpublish();
1859
1860
        $this->getResponse()->addHeader(
1861
            'X-Status',
1862
            rawurlencode(_t('SilverStripe\\CMS\\Controllers\\CMSMain.REMOVEDPAGE', "Removed '{title}' from the published site", array('title' => $record->Title)))
1863
        );
1864
1865
        return $this->getResponseNegotiator()->respond($this->getRequest());
1866
    }
1867
1868
    /**
1869
     * @return HTTPResponse