Created
August 2, 2016 07:56
-
-
Save hissy/4d50ba5b982617bd1ddd40b569d5530c to your computer and use it in GitHub Desktop.
Remove Old Page Versions Job for old version of concrete5
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
defined('C5_EXECUTE') or die("Access Denied."); | |
Loader::model('page_list'); | |
class RemoveOldPageVersions extends Job { | |
public function getJobName() { | |
return t("Remove Old Page Versions"); | |
} | |
public function getJobDescription() { | |
return t("Removes all except the 10 most recent page versions for each page."); | |
} | |
public function run() { | |
$cfg = new Config; | |
$pNum = (int) $cfg->get('OLD_VERSION_JOB_PAGE_NUM'); | |
$pNum = $pNum < 0 ? 1 : $pNum + 1; | |
$pl = new PageList; | |
$pl->setItemsPerPage(3); | |
/* probably want to keep a record of pages that have been gone through | |
* so you don't start from the beginning each time.. | |
*/ | |
$pages = $pl->getPage($pNum); | |
if(!count($pages)) { | |
$cfg->save('OLD_VERSION_JOB_PAGE_NUM',0); | |
return t("All pages have been processed, starting from beginning on next run."); | |
} | |
$versionCount = 0; | |
$pagesAffected = array(); | |
foreach($pages as $page) { | |
if($page instanceof Page) { | |
$pvl = new VersionList($page); | |
$pagesAffected[] = $page->getCollectionID(); | |
foreach(array_slice($pvl->getVersionListArray(), 10) as $v) { | |
if($v instanceof CollectionVersion && !$v->isApproved() && !$v->isMostRecent() ) { | |
@$v->delete(); | |
$versionCount++; | |
} | |
} | |
} | |
} | |
$pageCount = count($pagesAffected); | |
$cfg->save('OLD_VERSION_JOB_PAGE_NUM', $pNum); | |
return t('%1$d versions deleted from %2$d pages (%3$s)', $versionCount, $pageCount, implode(',', $pagesAffected)); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment