Вход Регистрация
Файл: concrete5.7.5.6/concrete/jobs/remove_old_page_versions.php
Строк: 107
<?php
namespace ConcreteJob;

use 
ConcreteCorePageCollectionVersionVersionList;
use 
Job as AbstractJob;
use 
Config;
use 
PageList;
use 
ConcreteCorePageCollectionVersionVersion;

class 
RemoveOldPageVersions extends AbstractJob
{

    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()
    {

        
$pNum = (int)Config::get('concrete.maintenance.version_job_page_num');
        
$pNum $pNum $pNum 1;

        
$pl = new PageList;
        
$pl->ignorePermissions();
        
$pl->setItemsPerPage(3);
        
$pl->filter('p.cID'$pNum'>=');
        
$pl->sortByCollectionIDAscending();
        
$pagination $pl->getPagination();
        
$pages $pagination->getCurrentPageResults();

        
/* probably want to keep a record of pages that have been gone through
         * so you don't start from the beginning each time..
         */

        
if (!count($pages)) {
            
Config::save('concrete.maintenance.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) {
            
$pvl = new VersionList($page);
            
$pagesAffected[] = $page->getCollectionID();
            foreach (
array_slice($pvl->get(), 10) as $v) {
                if (
$v instanceof Version && !$v->isApproved() && !$v->isMostRecent()) {
                    @
$v->delete();
                    
$versionCount++;
                }
            }
            
$pNum $page->getCollectionID();
        }
        
$pageCount count($pagesAffected);
        
Config::save('concrete.maintenance.version_job_page_num'$pNum);

        
//i18n: %1$d is the number of versions deleted, %2$d is the number of affected pages, %3$d is the number of times that the Remove Old Page Versions job has been executed.
        
return t2(
            
'%1$d versions deleted from %2$d page (%3$s)',
            
'%1$d versions deleted from %2$d pages (%3$s)',
            
$pageCount,
            
$versionCount,
            
$pageCount,
            
implode(','$pagesAffected)
        );

    }
}
Онлайн: 0
Реклама