aboutsummaryrefslogtreecommitdiff
path: root/plugins/video_zencoder/video_zencoder.module
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/video_zencoder/video_zencoder.module')
-rw-r--r--plugins/video_zencoder/video_zencoder.module152
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']));
+}
+