1
0
Fork 0
mirror of https://github.com/DanielnetoDotCom/YouPHPTube synced 2025-10-03 17:59:55 +02:00
Oinktube/plugin/AI/Objects/Ai_scheduler.php
2024-03-12 10:50:21 -03:00

146 lines
4.2 KiB
PHP

<?php
require_once dirname(__FILE__) . '/../../../videos/configuration.php';
class Ai_scheduler extends ObjectYPT {
static $statusActive = 'a';
static $statusProcessingTranscription = 't';
static $statusProcessingTranslation = 'r';
static $statusProcessingShort = 's';
static $statusProcessingBasic = 'b';
static $statusInactive = 'i';
static $statusExecuted = 'e';
static $statusError = 'x';
static $typeCutVideo = 'cutVideo';
static $typeProcessAll = 'processAll';
protected $id,$json,$status,$ai_scheduler_type,$created_php_time,$modified_php_time;
static function getSearchFieldsNames() {
return array('ai_scheduler_type');
}
static function getTableName() {
return 'ai_scheduler';
}
function setId($id) {
$this->id = intval($id);
}
function setJson($json) {
if(!is_string($json)){
$json = _json_encode($json);
}
$this->json = $json;
}
function setStatus($status) {
_error_log('AI::setStatus '._json_encode(debug_backtrace()));
$this->status = $status;
}
function setAi_scheduler_type($ai_scheduler_type) {
$this->ai_scheduler_type = $ai_scheduler_type;
}
function setCreated_php_time($created_php_time) {
$this->created_php_time = $created_php_time;
}
function setModified_php_time($modified_php_time) {
$this->modified_php_time = $modified_php_time;
}
function getId() {
return intval($this->id);
}
function getJson() {
return $this->json;
}
function getStatus() {
return $this->status;
}
function getAi_scheduler_type() {
return $this->ai_scheduler_type;
}
function getCreated_php_time() {
return $this->created_php_time;
}
function getModified_php_time() {
return $this->modified_php_time;
}
public static function getAllToExecute()
{
global $global;
$sql = "SELECT * FROM ai_scheduler WHERE status NOT IN ('".Ai_scheduler::$statusInactive."','".Ai_scheduler::$statusExecuted."','".Ai_scheduler::$statusError."') ";
$sql .= self::getSqlFromPost();
$res = sqlDAL::readSql($sql);
$fullData = sqlDAL::fetchAllAssoc($res);
sqlDAL::close($res);
return $fullData;
}
public static function isAlreadyScheduled($videos_id, $type, $status)
{
$row = self::getFromVideoAndStatus($videos_id, $type, $status);
return !empty($row);
}
public static function getFromVideoAndStatus($videos_id, $type, $status)
{
global $global;
$sql = "SELECT * FROM ai_scheduler WHERE ai_scheduler_type = '$type' AND status = '{$status}' ";
$sql .= self::getSqlFromPost();
$res = sqlDAL::readSql($sql);
$fullData = sqlDAL::fetchAllAssoc($res);
sqlDAL::close($res);
foreach ($fullData as $key => $value) {
$obj = _json_decode($value['json']);
if($obj->videos_id == $videos_id){
return $value;
}
}
return false;
}
public static function saveToProcessAll($videos_id, $users_id)
{
$obj2 = new stdClass();
$obj2->videos_id = $videos_id;
$obj2->users_id = $users_id;
$obj2->error = true;
$obj2->msg = '';
if(!Ai_scheduler::isAlreadyScheduled($videos_id, Ai_scheduler::$typeProcessAll, Ai_scheduler::$statusActive)){
$ai = new Ai_scheduler(0);
$ai->setAi_scheduler_type(Ai_scheduler::$typeProcessAll);
$ai->setJson($obj2);
$ai->setStatus(Ai_scheduler::$statusActive);
$obj2->schedulerSaved = $ai->save();
$obj2->error = empty($obj2->schedulerSaved);
if($obj2->error){
$obj2->msg = _('Error');
}else{
$obj2->msg = _('Your video has been successfully scheduled for AI processing! You will receive notifications regarding the progress and completion.');
}
}else{
$obj2->msg = _('This video is already scheduled to process');
}
return $obj2;
}
}