diff options
Diffstat (limited to 'video_scheduler.php')
-rw-r--r-- | video_scheduler.php | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/video_scheduler.php b/video_scheduler.php new file mode 100644 index 0000000..4872b0b --- /dev/null +++ b/video_scheduler.php @@ -0,0 +1,137 @@ +#!/usr/bin/env php +<?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> + * + */ + +/** + * Drupal shell execution script + */ + +$script = basename(array_shift($_SERVER['argv'])); +$script_name = realpath($script); +$php_exec = realpath($_SERVER['PHP_SELF']); + +$shortopts = 'hr:s:v'; +$longopts = array('help', 'root:', 'site:', 'verbose'); + +$args = @getopt($shortopts, $longopts); + +if (isset($args['h']) || isset($args['help'])) { + echo <<<EOF + +Video Scheduler. + +Usage: {$script} [OPTIONS] +Example: {$script} + +All arguments are long options. + + -h, --help This page. + + -r, --root Set the working directory for the script to the specified path. + To execute Drupal this has to be the root directory of your + Drupal installation, f.e. /home/www/foo/drupal (assuming Drupal + running on Unix). Current directory is not required. + Use surrounding quotation marks on Windows. + + -s, --site Used to specify with site will be used for the upgrade. If no + site is selected then default will be used. + + -v, --verbose This option displays the options as they are set, but will + produce errors from setting the session. + +To run this script without --root argument invoke it from the root directory +of your Drupal installation with + + ./{$script} + +\n +EOF; + if (version_compare(phpversion(), '5.3.0', 'le')) { + echo "Warning: This version of PHP doesn't support long options\n"; + } + exit; +} + +// define default settings +$_SERVER['HTTP_HOST'] = 'default'; +$_SERVER['PHP_SELF'] = '/index.php'; +$_SERVER['REMOTE_ADDR'] = '127.0.0.1'; +$_SERVER['SERVER_SOFTWARE'] = 'PHP CLI'; +$_SERVER['REQUEST_METHOD'] = 'GET'; +$_SERVER['QUERY_STRING'] = ''; +$_SERVER['PHP_SELF'] = $_SERVER['REQUEST_URI'] = '/index.php'; +$_SERVER['SCRIPT_NAME'] = '/' . basename($_SERVER['SCRIPT_NAME']); +$_SERVER['HTTP_USER_AGENT'] = 'console'; + +// Starting directory +$cwd = realpath(getcwd()); + +// toggle verbose mode +$_verbose_mode = isset($args['v']) || isset($args['verbose']) ? TRUE : FALSE; + +// parse invocation arguments +if (isset($args['r']) || isset($args['root'])) { + // change working directory + $path = isset($args['r']) ? $args['r'] : $args['root']; + if (is_dir($path)) { + chdir($path); + } + else { + echo "\nERROR: {$path} not found.\n\n"; + exit(1); + } +} +else { + $path = $cwd; + while ($path && !(file_exists($path . '/index.php') && file_exists($path . '/includes/bootstrap.inc'))) { + $path = dirname($path); + } + + if (!(file_exists($path . '/index.php') && file_exists($path . '/includes/bootstrap.inc'))) { + echo "Unable to locate Drupal root, user -r option to specify path to Drupal root\n"; + exit(1); + } + chdir($path); +} + +if (isset($args['s']) || isset($args['site'])) { + $site = isset($args['s']) ? $args['s'] : $args['site']; + if (file_exists('./sites/' . $site)) { + $_SERVER['HTTP_HOST'] = $site; + } + else { + echo "ERROR: Unable to locate site {$site}\n"; + exit(1); + } +} +else if (preg_match('/' . preg_quote($path . '/sites/', '/') . '(.*?)\//i', $cwd, $matches)) { + if ($matches[1] != 'all' && file_exists('./sites/' . $matches[1])) { + $_SERVER['HTTP_HOST'] = $matches[1]; + } +} + +define('DRUPAL_ROOT', realpath(getcwd())); + +ini_set('display_errors', 0); +include_once DRUPAL_ROOT . '/includes/bootstrap.inc'; +drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); +ini_set('display_errors', 1); + +// turn off the output buffering that drupal is doing by default. +ob_end_flush(); + +//include our conversion class (also contains our defines) +module_load_include('inc', 'video', 'includes/conversion'); +$video_conversion = new video_conversion; +$video_conversion->run_queue(); |