aboutsummaryrefslogtreecommitdiff
path: root/video_scheduler.php
diff options
context:
space:
mode:
authorHeshan Wanigasooriya <heshanmw@gmail.com>2010-12-05 12:52:20 +0000
committerHeshan Wanigasooriya <heshanmw@gmail.com>2010-12-05 12:52:20 +0000
commit973537f36c8f33473a00190aa64fc30b82d94c04 (patch)
tree2c2f99a3bd254b145453fab186fdc824d34a260f /video_scheduler.php
parent07e453e2ff2f66017eb49cc0374aa1531805a043 (diff)
downloadvideo-973537f36c8f33473a00190aa64fc30b82d94c04.tar.gz
video-973537f36c8f33473a00190aa64fc30b82d94c04.tar.bz2
Removing all files
Diffstat (limited to 'video_scheduler.php')
-rw-r--r--video_scheduler.php225
1 files changed, 0 insertions, 225 deletions
diff --git a/video_scheduler.php b/video_scheduler.php
deleted file mode 100644
index a0cbc9c..0000000
--- a/video_scheduler.php
+++ /dev/null
@@ -1,225 +0,0 @@
-<?php
-//$Id$
-/**
- * @file
- * Implement video rendering scheduling.
- * If you are not using sites/default/settings.php as your settings file,
- * add an optional parameter for the drupal site url:
- * "php video_scheduler.php http://example.com/" or
- * "php video_scheduler.php http://example.org/drupal/"
- *
- * @author Heshan Wanigasooriya <heshan at heidisoft dot com, heshanmw at gmail dot com>
- *
- */
-
-/**
- * video_scheduler.php configuration
- */
-
-// number of conversion jobs active at the same time
-defined('VIDEO_RENDERING_FFMPEG_INSTANCES')
- or define('VIDEO_RENDERING_FFMPEG_INSTANCES', 5);
-
-/**
- * video_scheduler.php configuration ends.
- * DO NOT EDIT BELOW THIS LINE
- */
-
-/**
- * Define some constants
- */
-defined('VIDEO_RENDERING_PENDING')
- or define('VIDEO_RENDERING_PENDING', 1);
-defined('VIDEO_RENDERING_ACTIVE')
- or define('VIDEO_RENDERING_ACTIVE', 5);
-defined('VIDEO_RENDERING_COMPLETE')
- or define('VIDEO_RENDERING_COMPLETE', 10);
-defined('VIDEO_RENDERING_FAILED')
- or define('VIDEO_RENDERING_FAILED', 20);
-
-
-if (isset($_SERVER['argv'][1])) {
- $url = parse_url($_SERVER['argv'][1]);
- $_SERVER['SCRIPT_NAME'] = $url['path'];
- $_SERVER['HTTP_HOST'] = $url['host'];
-}
-
-include_once('./includes/bootstrap.inc');
-//module_load_include('/includes/bootstrap.inc', 'video_scheduler', 'includes/bootstrap');
-// disable error reporting for bootstrap process
-error_reporting(E_ERROR);
-// let's bootstrap: we will be able to use drupal apis
-drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
-// enable full error reporting again
-error_reporting(E_ALL);
-
-//watchdog('video_scheduler', 'starting video conversion jobs.', array(), WATCHDOG_DEBUG);
-// allow execution only from the command line!
-if(empty($_SERVER['REQUEST_METHOD'])) {
- video_scheduler_main();
-}
-else {
- print ('This script is only executable from the command line.');
- die();
-}
-
-
-
-/**
- * Main for video_scheduler.php
- */
-function video_scheduler_main() {
-// echo 'ok';
- if($jobs = video_scheduler_select()) {
- foreach ($jobs as $job) {
- video_scheduler_start($job);
- }
- }
- else {
- watchdog('video_scheduler', 'no video conversion jobs to schedule.', array(), WATCHDOG_DEBUG);
- }
-}
-
-
-/**
- * Starts rendering for a job
- */
-function video_scheduler_start($job) {
-// $url = (isset($_SERVER['argv'][1])) ? escapeshellarg($_SERVER['argv'][1]) : '';
-// watchdog('video_scheduler', 'Execute video_render.php %url and %job', array('%url'=>$url, '%job'=>$job->fid), WATCHDOG_DEBUG);
-// exec("/usr/local/bin/php /home/freja/public_html/v5-dev/video_render.php $job->fid $url > /dev/null &");
- video_render_main($job->fid);
-}
-
-
-/**
- * Select VIDEO_RENDERING_FFMPEG_INSTANCES jobs from the queue
- *
- * @return an array containing jobs
- */
-function video_scheduler_select() {
-// load node and its file object
- module_load_include('inc', 'uploadfield', '/uploadfield_convert');
- $jobs = array();
- $i = 0;
- $result = db_query_range('SELECT f.fid, f.filepath, f.filesize, f.filename, f.filemime, f.status FROM {video_rendering} vr INNER JOIN {files}
- f ON vr.fid = f.fid WHERE vr.fid = f.fid AND vr.status = %d AND f.status = %d ORDER BY f.timestamp',
- VIDEO_RENDERING_PENDING, FILE_STATUS_PERMANENT, 0, VIDEO_RENDERING_FFMPEG_INSTANCES);
- while($job = db_fetch_object($result)) {
- $jobs[] = $job;
- }
- // print_r($jobs);
- // exit;
- return $jobs;
-}
-
-/**
- * Video Rendering Process
- *
- */
-function video_render_main($job_fid) {
-
-// get parameters passed from command line
- $fid = $job_fid;
- $job = NULL;
- // set the status to active
- _video_render_job_change_status($fid, VIDEO_RENDERING_ACTIVE);
- // load the job object
- $job = _video_render_load_job($fid);
-
- if(empty($job)) {
- watchdog('video_render', 'video_render.php has been called with an invalid job resource. exiting.', array(), WATCHDOG_ERROR);
- die;
- }
-
- // get file object
- _video_render_get_converted_file(&$job);
- $file = $job->converted;
-
- if(empty($file)) {
- watchdog('video_render', 'converted file is an empty file.', array(), WATCHDOG_ERROR);
- _video_render_job_change_status($fid, VIDEO_RENDERING_FAILED);
- die;
- }
-
-
- $tmpfile = $file->filepath;
-
- // the above no more works as token supports - use dirname
- $dest_dir = dirname($job->filepath) . '/';
-
- if (file_copy($file, $dest_dir)) {
- //update the file table entry and copy file content to new one
- $file->fid = $fid;
- //update file with new
- drupal_write_record ('files', $file, 'fid');
- //add new file entry
- drupal_write_record ('files', $job);
- // TODO : add data of rendering
- _video_render_job_change_status($fid, VIDEO_RENDERING_COMPLETE);
- // clear all cacahe data
- // cache_clear_all();
- // drupal_flush_all_caches();
- cache_clear_all("*", 'cache_content', true);
- watchdog('video_render', 'successfully converted %orig to %dest', array('%orig' => $job->filepath, '%dest' => $file->filepath), WATCHDOG_INFO);
- // delete the temp file
-// unlink($tmpfile);
- }
- else {
- _video_render_job_change_status($fid, VIDEO_RENDERING_FAILED);
- // get the username of the process owner
- $ownerarray = posix_getpwuid(posix_getuid());
- $owner=$ownerarray['name'];
- // get the username of the destination folder owner
- $fownerarray = posix_getpwuid(fileowner($dest_dir));
- $fowner=$fownerarray['name'];
- // get destination folder permissions
- $perms = substr(sprintf('%o', fileperms($dest_dir)), -4);
- watchdog('video_render', 'error moving video %vid_file with nid = %nid to %dir the final directory. Check folder permissions.<br />The script was run by %uname .<br />The folder owner is %fowner .<br />The folder permissions are %perms .', array('%vid_file' => $job->origfile, '%nid' => $job->nid, '%dir' => $dest_dir, '%uname' => $owner, '%fowner' => $fowner, '%perms' => $perms), WATCHDOG_ERROR);
- }
-}
-
-
-/**
- * Get a string cointaining the command to be executed including options
- */
-function _video_render_get_converted_file(&$job) {
- $transcoder = variable_get('vid_convertor', 'ffmpeg');
- module_load_include('inc', 'video', '/plugins/' . $transcoder);
- $function = variable_get('vid_convertor', 'ffmpeg') . '_auto_convert';
- if (function_exists($function)) {
- // $thumbs = ffmpeg_auto_thumbnail($file);
- // watchdog('video_render', 'calling to converter API %conv', array('%conv' => $transcoder));
- $function(&$job);
-// if(! $success) {
-// watchdog('video_render', 'error transcoding vide. existing.', array(), WATCHDOG_ERROR);
-// }
- }
- else {
- // drupal_set_message(t('Transcoder not configured properly'), 'error');
- print ('Transcoder not configured properly');
- }
-}
-
-
-/**
- * Load a job
- */
-function _video_render_load_job($fid) {
-// watchdog('video_render', 'Loading contents for file id %fid', array('%fid' => $fid));
- $result = db_query('SELECT f.filepath, f.filesize, f.filename, f.filemime, f.filesize, f.status, f.uid
- FROM {video_rendering} vr INNER JOIN {files} f
- ON vr.fid = f.fid WHERE vr.fid = f.fid AND f.status = %d AND f.fid = %d',
- FILE_STATUS_PERMANENT, $fid);
- return db_fetch_object($result);
-}
-
-
-/**
- * Change the status to $status of the job having nid=$nid and vid=$vid
- */
-function _video_render_job_change_status($fid, $status) {
- $result = db_query('UPDATE {video_rendering} SET status = %d WHERE fid = %d ', $status, $fid);
-}
-
-?>