diff options
Diffstat (limited to 'plugins/video_zencoder/video_zencoder.module')
-rw-r--r-- | plugins/video_zencoder/video_zencoder.module | 152 |
1 files changed, 152 insertions, 0 deletions
diff --git a/plugins/video_zencoder/video_zencoder.module b/plugins/video_zencoder/video_zencoder.module new file mode 100644 index 0000000..f8a779b --- /dev/null +++ b/plugins/video_zencoder/video_zencoder.module @@ -0,0 +1,152 @@ +<?php + +// $Id$ +/** + * @file + * Provides wrapper functions for the s3 amazon webservices. + * @todo + * - cleand up the _video_zencoder_postback_jobs() function + * - Add to select random thumbnails to the download image. + */ +/* + * Implementation of hook_cron(). + */ +defined('VIDEO_RENDERING_PENDING') || + define('VIDEO_RENDERING_PENDING', 1); +defined('VIDEO_RENDERING_ACTIVE') || + define('VIDEO_RENDERING_ACTIVE', 5); +defined('VIDEO_RENDERING_COMPLETE') || + define('VIDEO_RENDERING_COMPLETE', 10); +defined('VIDEO_RENDERING_FAILED') || + define('VIDEO_RENDERING_FAILED', 20); + +/** + * Implementation of hook_menu(). + */ +function video_zencoder_menu() { + $items = array(); + $items['postback/jobs'] = array( +// 'title' => 'Video', +// 'description' => 'Configure different aspects of the video module and its plugins', + 'page callback' => '_video_zencoder_postback_jobs', + 'access arguments' => array('access content'), + 'type' => MENU_CALLBACK, + ); + return $items; +} + +/** + * This will handle Zencoder postback once video conversion is completed + * + */ +function _video_zencoder_postback_jobs() { +// get JSON post data + $data = file_get_contents("php://input"); + watchdog('zencoder', t('Postback received from the Zencoder Transcoding servers.' . serialize($data))); +// print_r($data); +// exit; +// get the file object by zenocder job id + $video = json_decode($data); +// print_r($zc); +// $zc_job_id = $video->job->id; + $zc_job_state = trim($video->job->state); +// $zc_output_id = $video->output->id; + $zc_output_state = trim($video->output->state); +// $zc_output_url = $video->output->url; + if ($zc_output_state == 'finished' && $zc_job_state == 'finished') + $video->output->state = VIDEO_RENDERING_COMPLETE; + if ($zc_output_state == 'failed' || $zc_job_state == 'failed') + $video->output->state = VIDEO_RENDERING_FAILED; + if ($zc_job_state == 'processing') { + watchdog('zencoder', t('Job !jobid is processing.', array('!jobid' => $video->job->id))); + return; + } + +// update the Zencoder Job + module_load_include('inc', 'video_zencoder', '/includes/zencoder'); + $zc = new video_zencoder_api; +// Lets run delete. + $videodb = $zc->load_job($video->job->id); +// print_r($video); +// echo $nid = $videodb->nid; +// echo $vid = $videodb->vid; +// echo $fid = $videodb->fid; + + if ($video->output->state == VIDEO_RENDERING_COMPLETE) { +// echo 'completed'; + $nid = $videodb->nid; + $vid = $videodb->vid; + $fid = $videodb->fid; +// print_r($videodb); +// echo 'working completed'; + if (!db_query('UPDATE {video_zencoder} SET status = %d WHERE vid = %d ', VIDEO_RENDERING_COMPLETE, $vid)) + watchdog('zencoder', t('Error updating zencoder status.', array()), NULL, WATCHDOG_ERROR); + + if (!db_query("UPDATE {node} SET status=%d WHERE nid=%d", 1, $nid)) + watchdog('zencoder', t('Error pulishing node.', array()), NULL, WATCHDOG_ERROR); + +// print_r($video); +// update the thumbanils +// this will update the default thumbnails, if user want to select another one then they wil need to edit the node +// Setup our thmbnail path. + $video_thumb_path = variable_get('video_thumb_path', 'video_thumbs'); + $final_thumb_path = file_directory_path() . '/' . $video_thumb_path . '/' . $fid; +// $i = rand(0, (variable_get('no_of_video_thumbs', 5) - 1)); + $filename = $fid . '_' . sprintf("%04d", 1) . '.png'; + $thumbfile = $final_thumb_path . '/' . $filename; + + if (video_s3_get_object_info($thumbfile)) { + $default = $final_thumb_path . '/no-thumb.png'; + file_delete($default); + if (video_s3_get_object($thumbfile, $default)) + watchdog('zencoder', t('Successfully downloaded the thumbnails file and replaced the default image.')); + else + watchdog('zencoder', t('Download thumbanils files is failed.'), array(), WATCHDOG_ERROR); + } +// file_copy($default, $thumbfile, FILE_EXISTS_REPLACE); + watchdog('zencoder', t('Updated the Zencoder Job !id to states !states.', array('!id' => $video->job->id, '!states' => $zc_output_state))); + } + else if ($video->output->state == VIDEO_RENDERING_FAILED) { + echo 'working failed'; + $this->change_status($vid, VIDEO_RENDERING_FAILED); + watchdog('zencoder', t('Zencoder job failed converting videos, please login to zencoder web and check the erros.', array()), NULL, WATCHDOG_ERROR); + } else { + echo 'working something else'; + } +} + +/** + * Implementation of hook_mail(). + */ +function video_zencoder_mail($key, &$message, $params) { + $language = $message['language']; + $message['subject'] .= 'Zencoder Registration Details for Drupal Video'; + $message['body'][] = video_zencoder_mail_default($params); +} + +function video_zencoder_mail_default($params) { + return t( + 'Welcome to Zencoder for Drupal +------------------------------- + +Your account has been created and is ready to start processing. + +Your account details are as below. + +API Key : %api_key +Password : %password + +* Login URL: https://app.zencoder.com/login + +You can get help at the following places: + +* Our chat room at http://zencoder.com/chat +* Customer forums at https://help.zencoder.com/forums +* The help desk at https://help.zencoder.com/tickets/new + +We\'d love to hear from you. Let us know how we can help. Thanks! + +Thanks, +-Zencoder for Drupal Team', array('%api_key' => $params['api_key'], '%password' => $params['password'])); +} + |