Skip to content

Instantly share code, notes, and snippets.

@hissy
Created August 2, 2016 07:56
Show Gist options
  • Save hissy/4d50ba5b982617bd1ddd40b569d5530c to your computer and use it in GitHub Desktop.
Save hissy/4d50ba5b982617bd1ddd40b569d5530c to your computer and use it in GitHub Desktop.
Remove Old Page Versions Job for old version of concrete5
<?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