1
0
Fork 0
mirror of https://github.com/DanielnetoDotCom/YouPHPTube synced 2025-10-03 01:39:24 +02:00
This commit is contained in:
DanieL 2023-01-31 15:33:06 -03:00
parent f9b92661e6
commit 296dc7df94
5 changed files with 138 additions and 27 deletions

View file

@ -71,6 +71,7 @@ if (!class_exists('Video')) {
'a' => 'Active',
'k' => 'Active and Encoding',
'i' => 'Inactive',
'h' => 'Scheduled Release Date',
'e' => 'Encoding',
'x' => 'Encoding Error',
'd' => 'Downloading',
@ -85,6 +86,7 @@ if (!class_exists('Video')) {
'a' => '<i class=\'fas fa-eye\'></i>',
'k' => '<i class=\'fas fa-cog\'></i>',
'i' => '<i class=\'fas fa-eye-slash\'></i>',
'h' => '<i class=\'fas fa-clock\'></i>',
'e' => '<i class=\'fas fa-cog\'></i>',
'x' => '<i class=\'fas fa-exclamation-triangle\'></i>',
'd' => '<i class=\'fas fa-download\'></i>',
@ -98,6 +100,7 @@ if (!class_exists('Video')) {
public static $statusActive = 'a';
public static $statusActiveAndEncoding = 'k';
public static $statusInactive = 'i';
public static $statusScheduledReleaseDate = 'h';
public static $statusEncoding = 'e';
public static $statusEncodingError = 'x';
public static $statusDownloading = 'd';
@ -701,17 +704,24 @@ if (!class_exists('Video')) {
if (!empty($_REQUEST['overrideStatus'])) {
return $this->setStatus($_REQUEST['overrideStatus']);
} else { // encoder did not provide a status
if (!empty($_REQUEST['keepEncoding'])) {
return $this->setStatus(Video::$statusActiveAndEncoding);
} else {
if ($this->getTitle() !== "Video automatically booked") {
return $this->setStatus($advancedCustom->defaultVideoStatus);
AVideoPlugin::loadPlugin('Scheduler');
$row = Scheduler::isActiveFromVideosId($this->id);
if(!empty($row)){ // there is a schedule to activate the video
return $this->setStatus(Video::$statusScheduledReleaseDate);
}else{
if (!empty($_REQUEST['keepEncoding'])) {
return $this->setStatus(Video::$statusActiveAndEncoding);
} else {
return $this->setStatus(Video::$statusInactive);
if ($this->getTitle() !== "Video automatically booked") {
return $this->setStatus($advancedCustom->defaultVideoStatus);
} else {
return $this->setStatus(Video::$statusInactive);
}
}
}
}
}
return $this->setStatus($default);
}
@ -5798,6 +5808,7 @@ $statusThatShowTheCompleteMenu = array(
$statusSearchFilter = array(
Video::$statusActive,
Video::$statusInactive,
Video::$statusScheduledReleaseDate,
Video::$statusEncoding,
Video::$statusTranfering,
Video::$statusUnlisted,

View file

@ -12,7 +12,7 @@ class Scheduler_commands extends ObjectYPT {
protected $id, $callbackURL, $parameters, $date_to_execute, $executed_in,
$status, $callbackResponse, $timezone,
$repeat_minute, $repeat_hour, $repeat_day_of_month, $repeat_month,
$repeat_day_of_week, $type;
$repeat_day_of_week, $type, $videos;
static function getSearchFieldsNames() {
return array('callbackURL', 'parameters');
@ -22,6 +22,34 @@ class Scheduler_commands extends ObjectYPT {
return 'scheduler_commands';
}
static function isActiveFromVideosId($videos_id){
$row = self::getFromVideosId($videos_id);
if(!empty($row) && $row['status'] == self::$statusActive ){
return true;
}
return false;
}
static function getFromVideosId($videos_id){
global $global;
$videos_id = intval($videos_id);
if(empty($videos_id)){
return false;
}
$sql = "SELECT * FROM " . static::getTableName() . " WHERE videos_id = ? LIMIT 1";
// I had to add this because the about from customize plugin was not loading on the about page http://127.0.0.1/AVideo/about
$res = sqlDAL::readSql($sql, "i", [$videos_id], true);
$data = sqlDAL::fetchAssoc($res);
sqlDAL::close($res);
if ($res) {
$row = $data;
} else {
$row = false;
}
return $row;
}
public static function getTimesNow() {
$minute = intval(date('i'));
$hour = intval(date('H'));
@ -176,7 +204,15 @@ class Scheduler_commands extends ObjectYPT {
private function _setTimezone($timezone) {
$this->timezone = $timezone;
}
public function getVideos() {
return $this->videos;
}
public function setVideos($videos): void {
$this->videos = $videos;
}
public function save() {
if (empty($this->date_to_execute)) {
$this->date_to_execute = 'NULL';
@ -208,6 +244,9 @@ class Scheduler_commands extends ObjectYPT {
if (empty($this->callbackURL)) {
$this->callbackURL = '';
}
if (empty($this->videos_id)) {
$this->videos_id = 'NULL';
}
$this->_setTimeZone(date_default_timezone_get());

View file

@ -30,7 +30,7 @@ class Scheduler extends PluginAbstract {
}
public function getPluginVersion() {
return "3.0";
return "4.0";
}
public function updateScript() {
@ -84,7 +84,16 @@ class Scheduler extends PluginAbstract {
if (!isset($_executeSchelude)) {
$_executeSchelude = array();
}
$e = new Scheduler_commands($scheduler_commands_id);
$e = new Scheduler_commands($scheduler_commands_id);
$videos_id = $e->getCallbackURL();
if(!empty($videos_id)){ // make it active
$video = new Video('', '', $videos_id);
$status = $video->setStatus(Video::$statusActive);
AVideoPlugin::onNewVideo($videos_id);
return $e->setExecuted($videos_id);
}
$callBackURL = $e->getCallbackURL();
$callBackURL = str_replace('{webSiteRootURL}', $global['webSiteRootURL'], $callBackURL);
if (!isValidURL($callBackURL)) {
@ -108,6 +117,42 @@ class Scheduler extends PluginAbstract {
return false;
}
static function isActiveFromVideosId($videos_id){
return Scheduler_commands::isActiveFromVideosId($videos_id);;
}
static public function addVideoToRelease($date_to_execute, $videos_id) {
_error_log("Scheduler::addVideoToRelease [$date_to_execute] [$videos_id]");
if (empty($date_to_execute)) {
_error_log("Scheduler::addVideoToRelease ERROR date_to_execute is empty");
return false;
}
$date_to_execute_time = _strtotime($date_to_execute);
if ($date_to_execute_time <= time()) {
_error_log("Scheduler::addVideoToRelease ERROR date_to_execute must be greater than now [{$date_to_execute}] " . date('Y/m/d H:i:s', $date_to_execute_time) . ' ' . date('Y/m/d H:i:s'));
return false;
}
if (empty($videos_id)) {
_error_log("Scheduler::addVideoToRelease ERROR videos_id is empty");
return false;
}
$id = 0;
$row = Scheduler_commands::getFromVideosId($videos_id);
if(!empty($row)){
$id = $row['id'];
}
$e = new Scheduler_commands($id);
$e->setDate_to_execute($date_to_execute);
$e->setVideos_id($videos_id);
return $e->save();
}
static public function add($date_to_execute, $callbackURL, $parameters = '', $type = '') {
_error_log("Scheduler::add [$date_to_execute] [$callbackURL]");
if (empty($date_to_execute)) {

View file

@ -1,19 +1,25 @@
CREATE TABLE IF NOT EXISTS `scheduler_commands` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`callbackURL` VARCHAR(255) NOT NULL,
`parameters` TEXT NULL DEFAULT NULL,
`created` DATETIME NULL DEFAULT NULL,
`modified` DATETIME NULL DEFAULT NULL,
`date_to_execute` DATETIME NULL,
`executed_in` DATETIME NULL DEFAULT NULL,
`status` CHAR(1) NOT NULL DEFAULT 'a',
`callbackResponse` TEXT NULL DEFAULT NULL,
`timezone` VARCHAR(255) NULL,
`repeat_minute` INT NULL,
`repeat_hour` INT NULL,
`repeat_day_of_month` INT NULL,
`repeat_month` INT NULL,
`repeat_day_of_week` INT NULL,
`type` VARCHAR(45) NULL,
PRIMARY KEY (`id`))
CREATE TABLE IF NOT EXISTS `scheduler_commands` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`callbackURL` VARCHAR(255) NOT NULL,
`parameters` TEXT NULL DEFAULT NULL,
`created` DATETIME NULL DEFAULT NULL,
`modified` DATETIME NULL DEFAULT NULL,
`date_to_execute` DATETIME NULL,
`executed_in` DATETIME NULL DEFAULT NULL,
`status` CHAR(1) NOT NULL DEFAULT 'a',
`callbackResponse` TEXT NULL DEFAULT NULL,
`timezone` VARCHAR(255) NULL,
`repeat_minute` INT NULL,
`repeat_hour` INT NULL,
`repeat_day_of_month` INT NULL,
`repeat_month` INT NULL,
`day_of_week` INT NULL,
`videos_id` INT(11) NULL,
PRIMARY KEY (`id`),
INDEX `fk_scheduler_commands_videos1_idx` (`videos_id` ASC) VISIBLE,
CONSTRAINT `fk_scheduler_commands_videos1`
FOREIGN KEY (`videos_id`)
REFERENCES `videos` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB;

View file

@ -0,0 +1,10 @@
ALTER TABLE `scheduler_commands`
ADD COLUMN `videos_id` INT(11) NULL DEFAULT NULL,
ADD INDEX `fk_scheduler_commands_videos1_idx` (`videos_id` ASC);
ALTER TABLE `scheduler_commands`
ADD CONSTRAINT `fk_scheduler_commands_videos1`
FOREIGN KEY (`videos_id`)
REFERENCES `videos` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE