diff options
author | Heshan Wanigasooriya <heshanmw@gmail.com> | 2010-12-05 12:56:20 +0000 |
---|---|---|
committer | Heshan Wanigasooriya <heshanmw@gmail.com> | 2010-12-05 12:56:20 +0000 |
commit | b6e86040dd3faa3a70ec16e77220d852bdb09a04 (patch) | |
tree | cdb4282446dfb0efd750b87a7aaedd30229f0ff9 /plugins/video_s3/video_s3.module | |
parent | 973537f36c8f33473a00190aa64fc30b82d94c04 (diff) | |
download | video-b6e86040dd3faa3a70ec16e77220d852bdb09a04.tar.gz video-b6e86040dd3faa3a70ec16e77220d852bdb09a04.tar.bz2 |
Adding latest files.
Diffstat (limited to 'plugins/video_s3/video_s3.module')
-rw-r--r-- | plugins/video_s3/video_s3.module | 168 |
1 files changed, 168 insertions, 0 deletions
diff --git a/plugins/video_s3/video_s3.module b/plugins/video_s3/video_s3.module new file mode 100644 index 0000000..274da26 --- /dev/null +++ b/plugins/video_s3/video_s3.module @@ -0,0 +1,168 @@ +<?php + +// $Id$ +/** + * @file + * Provides wrapper functions for the s3 amazon webservices. + */ +/* + * Implementation of hook_perm(). + */ +function video_s3_perm() { + return array('administer amazon s3'); +} + +/* + * Implmentation of hook_help(). + */ + +function video_s3_help($path, $arg) { + switch ($path) { + case 'admin/settings/video/amazon_s3': + $output = t('Use Amazon Simple Storage Service (Amazon S3) to store your video files. This free\'s up bandwidth from your site, providing a faster experience for your users. Simply enable this module and enter your authentication details and your done!'); + return $output; + } +} + +/* + * Implementation of hook_menu(). + */ + +function video_s3_menu() { + $items = array(); + $items['admin/settings/video/amazon_s3/bucket/%/delete'] = array( + 'title' => 'Delete Bucket', + 'page callback' => 'video_s3_bucket_delete', + 'page arguments' => array(5), + 'access arguments' => array('administer amazon s3'), + 'file' => 'video_s3.admin.inc', + 'type' => MENU_CALLBACK, + ); + return $items; +} + +/* + * Implementation of hook_cron(). + */ + +function video_s3_cron() { + $filesystem = variable_get('vid_filesystem', 'drupal'); + if ($filesystem == 'video_s3') { + module_load_include('inc', 'video_s3', '/includes/amazon_s3'); + $s3 = new video_amazon_s3; + $s3->connect(); + // Lets run our queue. + $s3->queue(); + } +} + +/** + * Implementation of hook_video_delete. + * we can use hook_file_delete() + */ +function video_s3_video_delete($file) { + module_load_include('inc', 'video_s3', '/includes/amazon_s3'); + $s3 = new video_amazon_s3; + $s3->connect(); + // Lets run our queue. + $s3->delete($file->fid); +} + +/* + * Implementation of hook_video_update. + * Submit hanlder to update our s3 table to include the node id. + */ + +function video_s3_video_update($form, &$form_state) { + //lets update our video rending table to include the node id created + if (isset($form_state['nid']) && isset($form_state['values']['video_id']) && is_array($form_state['values']['video_id'])) { + foreach ($form_state['values']['video_id'] as $fid) { + //lets update our table to include the nid + db_query("UPDATE {video_s3} SET nid=%d WHERE fid=%d", $form_state['nid'], $fid); + } + } +} + +/** + * Implementing hook_video_insert + * @param <type> $element + * @param <type> $form_state + */ +function video_s3_video_insert(&$element, &$form_state) { + $file = $element['#value']; + //we need to check if this fid has already been added to the database AND that there is in fact a fid + if (is_array($file) && isset($file['fid']) && !empty($file['fid'])) { + module_load_include('inc', 'video_s3', '/includes/amazon_s3'); + $s3 = new video_amazon_s3; + $s3->connect(); + // Lets verify that we haven't added this video already. Multiple validation fails will cause this to be ran more than once + if (!$video = $s3->verify($file['fid'])) { + // Video has not been added to the queue yet so lets add it. + $s3->insert($file['fid']); + drupal_set_message(t('Video submission queued for transfer to your Amazon S3 server. Will be there shortly.')); + } + } +} + +/** + * Implementing hook_video_load + * @param <type> $element + * @param <type> $form_state + */ +function video_s3_video_load(&$video) { + module_load_include('inc', 'video_s3', '/includes/amazon_s3'); + $s3 = new video_amazon_s3; + if ($amazon = $s3->get($video->fid)) { + // Fix our filepath + $video->filepath = $amazon->filepath; +// $video->url = $amazon->filepath; + if (variable_get('amazon_s3_private', FALSE)) + $video->files->{$video->player}->url = video_s3_get_authenticated_url($amazon->filename); + else + $video->files->{$video->player}->url = $amazon->filepath; + + $video->extension = pathinfo($amazon->filepath, PATHINFO_EXTENSION); + } +} + +function video_s3_get_object_info($object) { + module_load_include('inc', 'video_s3', '/includes/amazon_s3'); + $s3 = new video_amazon_s3; + $s3->connect(); + return $s3->get_object_info($object); +} + +function video_s3_get_authenticated_url($object) { + module_load_include('inc', 'video_s3', '/includes/amazon_s3'); + $s3 = new video_amazon_s3; + $s3->connect(); + return $s3->get_authenticated_url($object); +} + +function video_s3_get_object($object, $save_to = false) { + module_load_include('inc', 'video_s3', '/includes/amazon_s3'); + $s3 = new video_amazon_s3; + $s3->connect(); + return $s3->get_object($object, $save_to); +} + +/* + * Deletes a bucket from your Amazon S3 server. + */ + +function video_s3_bucket_delete($bucket) { + module_load_include('inc', 'video_s3', '/includes/amazon_s3'); + $s3 = new video_amazon_s3; + $s3->connect(); + $buckets = $s3->s3->listBuckets(); + if (is_array($buckets) && in_array($bucket, $buckets)) { + if ($s3->s3->deleteBucket($bucket)) { + drupal_set_message(t('Successfully deleted the bucket %bucket', array('%bucket' => $bucket))); + } else { + drupal_set_message(t('Could not delete the bucket %bucket', array('%bucket' => $bucket)), 'error'); + } + } else { + drupal_set_message(t('The bucket %bucket does not exist for deletion.', array('%bucket' => $bucket)), 'error'); + } + drupal_goto('admin/settings/video/amazon_s3'); +}
\ No newline at end of file |