vpx_jobscheduler_create_new_job($a_args)Aanmaken van een nieuwe job
vpx_jobscheduler/vpx_jobscheduler.module, line 215
<?php
function vpx_jobscheduler_create_new_job($a_args) {
// Haal de parameters op ..
//print_r($a_args);
$parameters = array(
'user_id' => array(
'value' => vpx_get_parameter_2($a_args['get'], 'user_id'),
'type' => TYPE_USER_ID,
'required' => TRUE,
),
'app_id' => array(
'value' => vpx_get_parameter_2($a_args['get'], 'app_id'),
'type' => 'int',
'required' => TRUE,
),
'group_id' => array(
'value' => vpx_get_parameter_2($a_args['get'], 'group_id', FALSE),
'type' => TYPE_GROUP_ID,
),
'mediafile_id' => array(
'value' => vpx_get_parameter_2($a_args['get'], 'mediafile_id'),
'type' => 'alphanum',
'required' => TRUE,
),
'job_type' => array(
'value' => vpx_get_parameter_2($a_args['post'], 'job_type'),
'type' => 'job_type',
'required' => TRUE,
'custom_error' => ERRORCODE_UNKNOWN_JOB_TYPE
),
'testtag' => array(
'value' => vpx_get_parameter_2($a_args['get'], 'testtag', 'FALSE'),
'type' => 'alphanum'
),
// Stills
'create_still' => array(
'value' => vpx_get_parameter_2($a_args['post'], 'create_still', 'FALSE'),
'type' => VPX_TYPE_BOOL
),
'still_type' => array(
'value' => vpx_get_parameter_2($a_args['post'], 'still_type', NULL),
'type' => VPX_TYPE_ALPHA,
),
'still_per_mediafile' => array(
'value' => vpx_get_parameter_2($a_args['post'], 'still_per_mediafile', NULL),
'type' => VPX_TYPE_INT,
),
'still_every_second' => array(
'value' => vpx_get_parameter_2($a_args['post'], 'still_every_second', NULL),
'type' => VPX_TYPE_INT,
),
'start_frame' => array(
'value' => vpx_get_parameter_2($a_args['post'], 'start_frame', NULL),
'type' => VPX_TYPE_INT,
),
'end_frame' => array(
'value' => vpx_get_parameter_2($a_args['post'], 'end_frame', NULL),
'type' => VPX_TYPE_INT,
),
'size' => array(
'value' => vpx_get_parameter_2($a_args['post'], 'size', NULL),
'type' => VPX_TYPE_IGNORE,
),
'h_padding' => array(
'value' => vpx_get_parameter_2($a_args['post'], 'h_padding', NULL),
'type' => VPX_TYPE_INT,
),
'v_padding' => array(
'value' => vpx_get_parameter_2($a_args['post'], 'v_padding', NULL),
'type' => VPX_TYPE_INT,
),
'tag' => array(
'value' => vpx_get_parameter_2($a_args['post'], 'tag', NULL),
'type' => VPX_TYPE_STRING,
),
// Still parameters for backward compatibility
'frametime' => array(
'value' => vpx_get_parameter_2($a_args['post'], 'frametime', NULL),
'type' => VPX_TYPE_INT,
),
'width' => array(
'value' => vpx_get_parameter_2($a_args['post'], 'width', NULL),
'type' => VPX_TYPE_INT,
),
'height' => array(
'value' => vpx_get_parameter_2($a_args['post'], 'height', NULL),
'type' => VPX_TYPE_INT,
),
// End stills
'completed_transcoding_url' => array(
'value' => vpx_get_parameter_2($a_args['post'], 'completed_transcoding_url'),
'type' => VPX_TYPE_URL,
),
);
// valideer alle parameters op aanwezigheid en type
$result = vpx_validate($parameters);
if (vpx_check_result_for_error($result)) {
return new rest_response($result);
}
// controleer of de ega een job mag starten
if (!vpx_shared_webservice_is_active('jobs', $parameters['app_id']['value'])) {
return new rest_response(vpx_return_error(ERRORCODE_WEBSERVICE_DISABLED));
}
/*
* FIX ME
* Authorisatie
*/
// controleer of de mediafile bestaat
if (!vpx_count_rows("mediafile", array("mediafile_id", $parameters['mediafile_id']['value']))) {
return new rest_response(vpx_return_error(ERRORCODE_JOB_MEDIAFILE_NOT_FOUND, array("@mediafile_id" => $parameters['mediafile_id']['value'])));
}
// controleer of de user niet boven quota zit indien het een transcode of upload is
if (($parameters['job_type']['value'] === JOBTYPE_UPLOAD) || ($parameters['job_type']['value'] === JOBTYPE_TRANSCODE)) {
$result = _user_management_check_user_quota($parameters['app_id']['value'], $parameters['user_id']['value'], $parameters['group_id']['value']);
if (vpx_check_result_for_error($result)) {
return new rest_response(vpx_return_error(ERRORCODE_QUOTA_REACHED));
}
}
// controleer of het een upload job betreft en er een URI is ingevuld
// de mediafile_id
db_set_active("data");
$has_uri = db_result(db_query("
SELECT uri IS NULL FROM mediafile WHERE mediafile_id = '%s'",
$parameters['mediafile_id']['value']
));
db_set_active();
if ($has_uri != 1) {
return new rest_response(vpx_return_error(ERRORCODE_CHANGE_URI_AND_FILE, array("@mediafile_id" => $parameters['mediafile_id']['value'])));
}
if ($parameters['job_type']['value'] === JOBTYPE_TRANSCODE) {
$reason = media_management_is_transcodable($parameters['mediafile_id']['value']);
if (!is_null($reason)) {
return new rest_response(vpx_return_error(ERRORCODE_CANT_TRANSCODE_MEDIAFILE, array("@mediafile_id" => $parameters['mediafile_id']['value'], "@reason" => $reason)));
}
}
return _vpx_jobs_create_new_job($a_args, $parameters);
}
?>