function CurrentUserInfo($fldname) { global $UserTableConn; $info = NULL; if (defined("EW_USER_TABLE") && !$this->IsSysAdmin()) { $user = $this->CurrentUserName(); if (strval($user) != "") { return ew_ExecuteScalar("SELECT " . ew_QuotedName($fldname, EW_USER_TABLE_DBID) . " FROM " . EW_USER_TABLE . " WHERE " . str_replace("%u", ew_AdjustSql($user, EW_USER_TABLE_DBID), EW_USER_NAME_FILTER), $UserTableConn); } } return $info; }
$output_array = unserialize($output_string); //var_dump($output_array); $completed = $rs->fields('idProcessStatus') == "7" ? 'Y' : 'N'; if (isset($request->params['level']) && $request->params['level'] != "" && isset($output_array[$request->params['level']])) { $output_array = $output_array[$request->params['level']]; $completed = 'Y'; } //subprocess $rs_subprocess = $conn->execute("SELECT * FROM `process` LEFT JOIN processstatus ON (process.idProcessStatus = processstatus.idProcessStatus) WHERE ((( (idProcessNum <> '' ) AND (idProcessNumMaster = '" . $rs->fields('idProcessNum') . "' ) ))) ORDER BY idProcessNum DESC LIMIT 0, 20"); $subprocess_array = array(); while (!$rs_subprocess->EOF) { // esiste un processo da eseguire $subprocess_array[] = array("completed" => $completed, "status" => $rs_subprocess->fields('name'), "processId" => $rs_subprocess->fields('idProcessNum'), 'name' => ew_ExecuteScalar("SELECT `name` FROM `setprocess` WHERE `idSetProcess` = '" . $rs_subprocess->fields('idSetProcess') . "'"), 'start' => $rs_subprocess->fields('start'), 'end' => $rs_subprocess->fields('end'), 'OSProcessId' => $rs_subprocess->fields('OSProcessId')); $rs_subprocess->MoveNext(); } $result = array("completed" => $completed, "status" => $rs->fields('name'), "processId" => $idProcessNum, "output" => $output_array, 'name' => ew_ExecuteScalar("SELECT `name` FROM `setprocess` WHERE `idSetProcess` = '" . $rs->fields('idSetProcess') . "'"), 'start' => $rs->fields('start'), 'end' => $rs->fields('end'), 'subprocess' => $subprocess_array); return $request->result($result); }); Tivoka::createServer($methods); //--------------- UTILS FUNCTION ----------------------- function getresults() { global $conn; $idProcessNum = varRequest('processId', ''); if ($idProcessNum == "") { sendOutput(getError('No processId sent')); } $rs = $conn->execute("SELECT * from process LEFT JOIN processstatus ON (process.idProcessStatus = processstatus.idProcessStatus) WHERE idProcessNum = '{$idProcessNum}'"); if ($rs->RecordCount() == 0) { sendOutput(getError("No process found with processId {$idProcessNum}")); }
function executeProcess($input) { global $conn; //inizializzo il parametro che viene utilizzato per passare ai processi il processId del processo precedente $previousIdProcessNum = ""; $idSetProcess = $input['idSetProcess']; $command = ""; $x_processId = isset($input['x_processId']) ? $input['x_processId'] : rand_int(12); $sSqlWrk = "INSERT INTO `process` ( `processId`, `idSetProcess`, `idProcessStatus`, `start`, `end`, `OSProcessId`, `command`) VALUES" . "('" . $x_processId . "', " . $idSetProcess . ", 1, NULL, NULL, NULL, '');"; $rswrk = $conn->Execute($sSqlWrk); $idProcessNum = $conn->Insert_ID(); $sSqlWrk = "SELECT * from setprocess WHERE idSetProcess = " . $idSetProcess . ""; $rswrk_setprocess = $conn->Execute($sSqlWrk); $priority = $rswrk_setprocess->fields('priority'); $separator = ""; $equal_symbol = ""; $log_suff = ""; if ($rswrk_setprocess->fields('idProcessType') == "1") { //caso di un eseguibile $command .= $rswrk_setprocess->fields('exe') . " "; $send_pid = $rswrk_setprocess->fields('sendPid') == "1" ? " --pid=" . $x_processId : ""; $separator = " "; $equal_symbol = ""; $log_suff = " >> " . EW_EXE_FILE_LOG; } elseif ($rswrk_setprocess->fields('idProcessType') == "2") { //caso di un web service http $command .= $rswrk_setprocess->fields('service') . "?"; $send_pid = $rswrk_setprocess->fields('sendPid') == "1" ? "&pid=" . $x_processId : ""; $separator = "&"; $equal_symbol = "="; $log_suff = ""; } //caricamento parametri processo $sSqlWrk = "SELECT * from processparams WHERE idSetProcess = " . $idSetProcess . " AND type = 0 ORDER BY `order`,idProcessParams"; $rswrk = $conn->Execute($sSqlWrk); $arwrk = $rswrk ? $rswrk->GetRows() : array(); $rowswrk = count($arwrk); for ($rowcntwrk = 0; $rowcntwrk < $rowswrk; $rowcntwrk++) { //controllo se il valore è passato con l'id del paramentro if ($arwrk[$rowcntwrk]['mode'] == "0" && @$input["params_" . $arwrk[$rowcntwrk]['idProcessParams']] == "1") { $command .= $arwrk[$rowcntwrk]['code'] . $separator; } //controllo se il valore è passato con il code del paramentro if ($arwrk[$rowcntwrk]['mode'] == "0" && @$input[$arwrk[$rowcntwrk]['code']] == "1") { $command .= $arwrk[$rowcntwrk]['code'] . $separator; } if ($arwrk[$rowcntwrk]['mode'] == "1" && @$input["params_" . $arwrk[$rowcntwrk]['idProcessParams']] != "") { $command .= $arwrk[$rowcntwrk]['code'] . $equal_symbol . @$input["params_" . $arwrk[$rowcntwrk]['idProcessParams']] . $separator; } if ($arwrk[$rowcntwrk]['mode'] == "1" && @$input[$arwrk[$rowcntwrk]['code']] != "") { $command .= $arwrk[$rowcntwrk]['code'] . $equal_symbol . @$input["params_" . $arwrk[$rowcntwrk]['idProcessParams']] . $separator; } $sSqlWrk = "INSERT INTO `processparamsvalue` ( `idProcessParams`, idProcessNum,value) VALUES" . "(" . $arwrk[$rowcntwrk]['idProcessParams'] . ", " . $idProcessNum . ", '" . $_GET["params_" . $arwrk[$rowcntwrk]['idProcessParams']] . $input[$arwrk[$rowcntwrk]['code']] . "');"; $conn->Execute($sSqlWrk); } $command .= $send_pid; $command .= $log_suff; if ($rswrk_setprocess->fields('isMultiProcess') == "0") { $sSqlWrk = "UPDATE `process` set `command` = '" . addslashes($command) . "', priority='" . $priority . "' WHERE idProcessNum= {$idProcessNum}"; $conn->Execute($sSqlWrk); } //caso di un multiprocesso if ($rswrk_setprocess->fields('isMultiProcess') == "1") { //imposto il valore di idProcessNumMaster uguale al numero stesso $sSqlWrk = "UPDATE `process` SET idProcessNumMaster = {$idProcessNum}, priority='" . $priority . "' WHERE idProcessNum = {$idProcessNum} "; $rswrk = $conn->Execute($sSqlWrk); $idProcessNumMaster = $idProcessNum; $sSqlWrk = "SELECT *,multiprocesssteps.priority as priority_queue from multiprocesssteps JOIN setprocess ON(setprocess.idSetProcess = multiprocesssteps.idSetProcessDetail) WHERE idSetProcessMaster = " . $idSetProcess . " AND `order` > 0 ORDER BY `order`"; $rswrk_subproc = $conn->Execute($sSqlWrk); $arwrk_subproc = $rswrk_subproc ? $rswrk_subproc->GetRows() : array(); $rowswrk_subproc = count($arwrk_subproc); for ($i = 0; $i < $rowswrk_subproc; $i++) { //inserimento step $sotto_processo = $arwrk_subproc[$i]; //if($arwrk_subproc[$i]['mode']=="0" && @$_GET["params_".$arwrk[$rowcntwrk]['idProcessParams']]=="1") $idSetProcess = $sotto_processo['idSetProcessDetail']; $command = ""; $x_processId = rand_int(12); $status = $i == 0 ? "1" : "8"; $priority = $sotto_processo['priority_queue']; $sSqlWrk = "INSERT INTO `process` ( `processId`, `idSetProcess`, `idProcessStatus`, `start`, `end`, `OSProcessId`, `command`,idProcessNumMaster,idMultiProcessSteps,priority) VALUES" . "('" . $x_processId . "', " . $idSetProcess . ", {$status}, NULL, NULL, NULL, ''," . $idProcessNumMaster . "," . $sotto_processo['idMultiProcessSteps'] . ",'{$priority}');"; $rswrk = $conn->Execute($sSqlWrk); $idProcessNum = $conn->Insert_ID(); $sSqlWrk = "SELECT * from setprocess WHERE idSetProcess = " . $idSetProcess . ""; $rswrk = $conn->Execute($sSqlWrk); $separator = ""; $equal_symbol = ""; $log_suff = ""; if ($rswrk->fields('idProcessType') == "1") { //caso di un eseguibile $command .= $rswrk->fields('exe') . " "; $send_pid = $rswrk->fields('sendPid') == "1" ? " --pid=" . $x_processId : ""; $separator = " "; $equal_symbol = ""; $log_suff = " >> " . EW_EXE_FILE_LOG; } elseif ($rswrk->fields('idProcessType') == "2") { //caso di un web service http $command .= $rswrk->fields('service') . "?"; $send_pid = $rswrk->fields('sendPid') == "1" ? "&pid=" . $x_processId : ""; //aggiungo se esiste il previous processId $send_pid .= $previousIdProcessNum != "" ? "&previousIdProcessNum=" . $previousIdProcessNum : ""; $separator = "&"; $equal_symbol = "="; $log_suff = ""; } //salvo il valore per utilizzarlo al processo successivo $previousIdProcessNum = $idProcessNum; $sSqlWrk = "SELECT * from processparams JOIN paramsconnection ON (processparams.idProcessParams = paramsconnection.idProcessParamsOutput) WHERE idMultiProcessSteps = " . $sotto_processo['idMultiProcessSteps']; $rswrk = $conn->Execute($sSqlWrk); $arwrk = $rswrk ? $rswrk->GetRows() : array(); $rowswrk = count($arwrk); for ($rowcntwrk = 0; $rowcntwrk < $rowswrk; $rowcntwrk++) { $input_value = ""; if ($arwrk[$rowcntwrk]['mode'] == "0" && $arwrk[$rowcntwrk]['fixedInput'] == "1") { $command .= $arwrk[$rowcntwrk]['code'] . $separator; $input_value = "1"; } else { //caso del valore da recuperare da un'altro ingresso $sSqlWrk = "SELECT value from `processparamsvalue` JOIN process ON(processparamsvalue.idProcessNum = process.idProcessNum) WHERE idProcessNumMaster = {$idProcessNumMaster} AND idProcessParams = " . $arwrk[$rowcntwrk]['idProcessParamsInput']; $rswrk_1 = $conn->Execute($sSqlWrk); if ($rswrk_1) { if (!$rswrk_1->EOF) { $command .= $arwrk[$rowcntwrk]['code'] . $equal_symbol . $rswrk_1->fields('value') . $arwrk[$rowcntwrk]['fixedInput'] . $separator; $input_value = $rswrk_1->fields('value'); } $rswrk_1->Close(); } elseif ($arwrk[$rowcntwrk]['mode'] == "1" && $arwrk[$rowcntwrk]['fixedInput'] != "") { // caso del solo valore fisso $command .= $arwrk[$rowcntwrk]['code'] . $equal_symbol . $arwrk[$rowcntwrk]['fixedInput'] . $separator; $input_value = $arwrk[$rowcntwrk]['fixedInput']; } } if ($input_value != "") { echo "<br> assegnato valore " . $arwrk[$rowcntwrk]['idProcessParams'] . ", " . $idProcessNum . ", '" . $input_value; $sSqlWrk = "INSERT INTO `processparamsvalue` ( `idProcessParams`, idProcessNum,value) VALUES" . "(" . $arwrk[$rowcntwrk]['idProcessParams'] . ", " . $idProcessNum . ", '" . $input_value . "');"; $rswrk = $conn->Execute($sSqlWrk); } else { echo "<br> non è stato assegnato il valore al parametro " . $arwrk[$rowcntwrk]['code']; } } $command .= $send_pid; //se è un processo di analisi videodrono con idSetProcess == if ($idSetProcess == "5") { echo "analisi parametri opzionali videodrome_set " . @$input['videodrome_set']; if (@$input['videodrome_set'] != "") { $query_ts = "SELECT id_training_concepts FROM videodromeparams WHERE name = '" . $_GET['videodrome_set'] . "' "; $training_sets = ew_ExecuteScalar($query_ts); //add_log("starting analysis:get training sets","query:".$query_ts." id trovati: ".$training_sets); echo "starting analysis:get training sets", "query:" . $query_ts . " id trovati: " . $training_sets; $query_op = "SELECT GROUP_CONCAT( '--bow-concept=', name\n\t\t\t\t\t\t\t\t\t\t\tSEPARATOR ' ' )\n\t\t\t\t\t\t\t\t\t\t\tFROM training_concepts AS tc\n\t\t\t\t\t\t\t\t\t\t\tWHERE id_training_concepts_status =5\n\t\t\t\t\t\t\t\t\t\t\tAND tc.id_training_sets\n\t\t\t\t\t\t\t\t\t\t\tIN ({$training_sets})"; $optional_params = ew_ExecuteScalar($query_op); //add_log("starting analysis:get optional params","query:".$query_op." stringa trovata: ".$optional_params); echo "starting analysis:get optional params", "query:" . $query_op . " stringa trovata: " . $optional_params; //aggiungo i parametri opzionali alla linea di comando if ($optional_params != "") { $command .= " " . $optional_params; } } } $command .= $log_suff; echo "<br> inserito command " . $command; $sSqlWrk = "UPDATE `process` set `command` = '" . $command . "' WHERE idProcessNum= {$idProcessNum}"; echo "<br> con query " . $sSqlWrk; echo "<br><br><br>"; $rswrk = $conn->Execute($sSqlWrk); } //inserimento step - fine } //caso di un multiprocesso - fine }
function insert_annotation($annotation) { global $conn, $ontology_default; //value in milliseconds $sourceId = $annotation['sourceId']; $timePoint = @is_numeric($annotation['timePoint']) ? $annotation['timePoint'] : $annotation['start']; $id = @is_numeric($annotation['id']) ? $annotation['id'] : null; $duration = $annotation['duration']; add_log('setAnnotations:adding', "input annotation: " . json_encode($annotation)); $keyword = $annotation['keyword']; $owner = $annotation['owner']; $id_users = ew_ExecuteScalar("select id_users from " . EW_CONN_DB_MEDIA . ".users WHERE (id_users = '{$owner}' OR username = '******')"); if ($id_users == "" || $id_users == "?") { $id_users = "1"; } //duration default value if ($duration == "" || $duration == null) { $duration = 5000; } $endPoint = $timePoint + $duration; //$id_media = Ew_ExecuteScalar("SELECT id_media FROM ".EW_CONN_DB_MEDIA.".media WHERE uri = '$sourceId'"); $id_media = $sourceId; //correzione bug selezione video sul titolo $cond = " media.id_media ='" . $id_media . "' "; //check if media already exists in the database $exists = ew_ExecuteScalar("select count(*) from " . EW_CONN_DB_MEDIA . ".media WHERE {$cond} "); if (!$exists) { return false; } //check if concept already exists in concept table $id_concepts = ew_ExecuteScalar("SELECT id_concepts FROM " . EW_CONN_DB_MEDIA . ".concepts WHERE concepts.name='" . $keyword . "'"); if (!$id_concepts) { //inserting new concept $insQuery = "INSERT INTO " . EW_CONN_DB_MEDIA . ".concepts (name , id_ontologies) VALUES ( '" . $conceptname . "', '" . $ontology_default . "')"; $conn->Execute($insQuery); $id_concepts = $conn->Insert_ID(); } $thumbnail_insert = "null"; /*$starttime_point = round($starttime*1000/$fps); $endtime_point = round($endtime*1000/$fps); $start_time_second = (int)round($starttime/$fps); fwrite($fh, "selezionato secondo esportazione : ".$start_time_second."\n"); //estrazione della thumbnail $starttime_point_extraction = sec2hms($start_time_second); fwrite($fh, "selezionato timecode esportazione : ".$starttime_point_extraction."\n"); $thumbnail_insert = "'$filename-$starttime.png'"; $command = "ffmpeg -i ".EW_VIDEO_PATH."$filename -r 1 -t $starttime_point_extraction -f image2 ".EW_IMAGE_PATH."$thumbnail_name"; fwrite($fh, "\neseguito: ".$command."\n"); $result = exec($command); */ $table = EW_CONN_DB_MEDIA . ".annotations"; $insert_array = array('id_media' => $id_media, 'title' => addslashes($keyword), 'timepoint' => $timePoint, 'endpoint' => $endPoint, 'id_users' => $id_users, 'id_annotations_types' => '2', 'thumbnail' => $thumbnail_insert); if ($id_concepts != "") { $insert_array['id_concepts'] = $id_concepts; } if ($id != "") { $insert_array['id_annotations'] = $id; } if ($annotation['box_x'] && $annotation['box_x'] != "?") { $insert_array['box_x'] = $annotation['box_x']; } if ($annotation['box_y'] && $annotation['box_y'] != "?") { $insert_array['box_y'] = $annotation['box_y']; } if ($annotation['box_width'] && $annotation['box_width'] != "?") { $insert_array['box_width'] = $annotation['box_width']; } if ($annotation['box_height'] && $annotation['box_height'] != "?") { $insert_array['box_height'] = $annotation['box_height']; } if ($annotation['page'] && $annotation['page'] != "?") { $insert_array['page'] = $annotation['page']; } $task = ""; if (isset($annotation['id']) && $annotation['id'] != "" && $annotation['id'] != "?") { //caso di update $task = "update"; $id_annotations = $annotation['id']; $querys = mysql_update_query($table, $insert_array, 'id_annotations'); $conn->Execute($querys); } else { //caso di inserimento $task = "insert"; $querys = mysql_insert_query($table, $insert_array); $conn->Execute($querys); $id_annotations = $conn->Insert_ID(); } //aggiorno il campo last_modified del media per consentirne l'indicizzazione $now = date('Y-m-d H:i:s'); $querys = "UPDATE " . EW_CONN_DB_MEDIA . ".media SET last_modified = '" . $now . "' WHERE id_media = '" . $id_media . "'"; $conn->Execute($querys); $annotation_insert = array('agent' => "AnnotationToolV1.2", 'comment' => "", 'confidence' => 1, 'created' => 0, 'duration' => $duration, 'id' => $id_annotations, 'keyword' => "" . $keyword, 'modified' => 0, 'owner' => $owner, 'sourceId' => $sourceId, 'start' => $timePoint, 'type' => '', 'context_pre' => "", 'context_post' => ""); if ($annotation['box_x'] && $annotation['box_x'] != "?") { $annotation_insert['box_x'] = $annotation['box_x']; } if ($annotation['box_y'] && $annotation['box_y'] != "?") { $annotation_insert['box_y'] = $annotation['box_y']; } if ($annotation['box_width'] && $annotation['box_width'] != "?") { $annotation_insert['box_width'] = $annotation['box_width']; } if ($annotation['box_height'] && $annotation['box_height'] != "?") { $annotation_insert['box_height'] = $annotation['box_height']; } if ($annotation['page'] && $annotation['page'] != "?") { $annotation_insert['page'] = $annotation['page']; } add_log('setAnnotations:annotation ' . $task, "ID: {$id_annotations} Query: {$querys} annotation: " . json_encode($annotation_insert)); return $annotation_insert; }
function CurrentUserInfo($fldname) { global $Security; if (isset($Security)) { return $Security->CurrentUserInfo($fldname); } elseif (defined("EW_USER_TABLE") && !IsSysAdmin()) { $user = CurrentUserName(); if (strval($user) != "") { return ew_ExecuteScalar("SELECT " . ew_QuotedName($fldname) . " FROM " . EW_USER_TABLE . " WHERE " . str_replace("%u", ew_AdjustSql($user), EW_USER_NAME_FILTER)); } } return NULL; }