Вход Регистрация
Файл: concrete5.7.5.6/concrete/src/Job/Set.php
Строк: 151
<?php
namespace ConcreteCoreJob;
use 
GettextTranslations;
use 
Loader;
use 
JobSet;
use 
ConcreteCoreFoundationObject;
class 
Set extends Object {

    const 
DEFAULT_JOB_SET_ID = 1;

    public 
$jDateLastRun;
    public 
$isScheduled = 0;
    public 
$scheduledInterval = 'days'; // hours|days|weeks|months
    
public $scheduledValue = 0;

    
/**
     * @return JobSet[]
     */
    
public static function getList() {
        
$db = Loader::db();
        
$r = $db->Execute('select jsID, pkgID, jsName, jDateLastRun, isScheduled, scheduledInterval, scheduledValue from JobSets order by jsName asc');
        
$list = array();
        while (
$row = $r->FetchRow()) {
            
$js = new JobSet();
            
$js->setPropertiesFromArray($row);
            
$list[] = $js;
        }
        return 
$list;
    }

    public static function 
getByID($jsID) {
        
$db = Loader::db();
        
$row = $db->GetRow('SELECT jsID, pkgID, jsName, jDateLastRun, isScheduled, scheduledInterval, scheduledValue FROM JobSets WHERE jsID = ?', array($jsID));
        if (isset(
$row['jsID'])) {
            
$js = new JobSet();
            
$js->setPropertiesFromArray($row);
            return 
$js;
        }
    }

    public static function 
getByName($jsName) {
        
$db = Loader::db();
        
$row = $db->GetRow('SELECT jsID, pkgID, jsName, jDateLastRun, isScheduled, scheduledInterval, scheduledValue FROM JobSets WHERE jsName = ?', array($jsName));
        if (isset(
$row['jsID'])) {
            
$js = new JobSet();
            
$js->setPropertiesFromArray($row);
            return 
$js;
        }
    }


    public static function 
getListByPackage($pkg) {
        
$db = Loader::db();
        
$list = array();
        
$r = $db->Execute('select jsID from JobSets where pkgID = ? order by jsID asc', array($pkg->getPackageID()));
        while (
$row = $r->FetchRow()) {
            
$list[] = JobSet::getByID($row['jsID']);
        }
        
$r->Close();
        return 
$list;
    }

    public static function 
getDefault() {
        
$js = JobSet::getByID(self::DEFAULT_JOB_SET_ID);
        if (
is_object($js)) {
            return 
$js;
        }
    }

    public function 
getJobSetID() {return $this->jsID;}
    public function 
getJobSetName() {return $this->jsName;}
    public function 
getPackageID() {return $this->pkgID;}

    
/** Returns the display name for this job set (localized and escaped accordingly to $format)
    * @param string $format = 'html'
    *    Escape the result in html format (if $format is 'html').
    *    If $format is 'text' or any other value, the display name won't be escaped.
    * @return string
    */
    
public function getJobSetDisplayName($format = 'html') {
        
$value = tc('JobSetName', $this->getJobSetName());
        switch(
$format) {
            case 
'html':
                return 
h($value);
            case 
'text':
            default:
                return 
$value;
        }
    }

    public function 
updateJobSetName($jsName) {
        
$this->jsName = Loader::helper('security')->sanitizeString($jsName);
        
$db = Loader::db();
        
$db->Execute("update JobSets set jsName = ? where jsID = ?", array($this->jsName, $this->jsID));
    }

    public function 
addJob(Job $j) {
        
$db = Loader::db();
        
$no = $db->GetOne("select count(jID) from JobSetJobs where jID = ? and jsID = ?", array($j->getJobID(), $this->getJobSetID()));
        if (
$no < 1) {
            
$db->Execute('insert into JobSetJobs (jsID, jID) values (?, ?)', array($this->getJobSetID(), $j->getJobID()));
        }
    }

    public static function 
add($jsName, $pkg = false) {
        
$db = Loader::db();
        
$jsName = Loader::helper('security')->sanitizeString($jsName);
        
$pkgID = 0;
        if (
is_object($pkg)) {
            
$pkgID = $pkg->getPackageID();
        }
        
$db->Execute('insert into JobSets (jsName, pkgID) values (?,?)', array($jsName, $pkgID));
        
$id = $db->Insert_ID();
        
$js = JobSet::getByID($id);
        return 
$js;
    }

    public function 
clearJobs() {
        
$db = Loader::db();
        
$db->Execute('delete from JobSetJobs where jsID = ?', array($this->jsID));
    }

    
/**
     * @return Job[]
     */
    
public function getJobs() {
        
$db = Loader::db();
        
$r = $db->Execute('select jID from JobSetJobs where jsID = ? order by jID asc', $this->getJobSetId());
        
$jobs = array();
        while (
$row = $r->FetchRow()) {
            
$j = Job::getByID($row['jID']);
            if (
is_object($j)) {
                
$jobs[] = $j;
            }
        }
        return 
$jobs;
    }

    public function 
markStarted(){
        
$db = Loader::db();
        
$timestamp=date('Y-m-d H:i:s');
        
$this->jDateLastRun = $timestamp;
        
$db->query( "UPDATE JobSets SET jDateLastRun=? WHERE jsID=?", array( $timestamp, $this->getJobSetID() ) );
    }


    public function 
contains(Job $j) {
        
$db = Loader::db();
        
$r = $db->GetOne('select count(jID) from JobSetJobs where jsID = ? and jID = ?', array($this->getJobSetID(), $j->getJobID()));
        return 
$r > 0;
    }

    public function 
delete() {
        
$db = Loader::db();
        
$db->Execute('delete from JobSets where jsID = ?', array($this->getJobSetID()));
        
$db->Execute('delete from JobSetJobs where jsID = ?', array($this->getJobSetID()));
    }

    public function 
canDelete() {
        return 
$this->jsID != self::DEFAULT_JOB_SET_ID;
    }

    public function 
removeJob(Job $j) {
        
$db = Loader::db();
        
$db->Execute('delete from JobSetJobs where jsID = ? and jID = ?', array($this->getJobSetID(), $j->getJobID()));
    }

    public function 
isScheduledForNow() {
        if(!
$this->isScheduled) {
            return 
false;
        }

        if(
$this->scheduledValue <= 0) {
            return 
false;
        }

        
$last_run = strtotime($this->jDateLastRun);
        
$seconds = 1;
        switch(
$this->scheduledInterval) {
            case 
"hours":
                
$seconds = 60*60;
                break;
            case 
"days":
                
$seconds = 60*60*24;
                break;
            case 
"weeks":
                
$seconds = 60*60*24*7;
                break;
            case 
"months":
                
$seconds = 60*60*24*7*30;
                break;
        }
        
$gap = $this->scheduledValue * $seconds;
        if(
$last_run < (time() - $gap) ) {
            return 
true;
        } else {
            return 
false;
        }
    }

    public function 
setSchedule($scheduled, $interval, $value) {
        
$this->isScheduled = ($scheduled?true:false);
        
$this->scheduledInterval = $interval;
        
$this->scheduledValue = $value;
        if(
$this->getJobSetID()) {
            
$db = Loader::db();
            
$db->query("UPDATE JobSets SET isScheduled = ?, scheduledInterval = ?, scheduledValue = ? WHERE jsID = ?",
            array(
$this->isScheduled, $this->scheduledInterval, $this->scheduledValue, $this->getJobSetID()));
            return 
true;
        } else {
            return 
false;
        }
    }

    public static function 
exportTranslations()
    {
        
$translations = new Translations();
        
$attribs = static::getList();
        foreach(
$attribs as $set) {
            
$translations->insert('JobSetName', $set->getJobSetName());
        }
        return 
$translations;
    }

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