Вход Регистрация
Файл: 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;
    }

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