aboutsummaryrefslogtreecommitdiff
path: root/types/uploadfield/uploadfield.module
diff options
context:
space:
mode:
Diffstat (limited to 'types/uploadfield/uploadfield.module')
-rw-r--r--types/uploadfield/uploadfield.module540
1 files changed, 0 insertions, 540 deletions
diff --git a/types/uploadfield/uploadfield.module b/types/uploadfield/uploadfield.module
deleted file mode 100644
index a76f112..0000000
--- a/types/uploadfield/uploadfield.module
+++ /dev/null
@@ -1,540 +0,0 @@
-<?php
-// $Id$
-
-/**
- * @file
- * uploadfield core hooks and menu callbacks.
- */
-
-include_once dirname(__FILE__) . '/uploadfield_file.inc';
-include_once dirname(__FILE__) . '/uploadfield_widget.inc';
-
-/**
- * Implementation of hook_init().
- *
- * Load required includes.
- */
-function uploadfield_init() {
-// add CSS file
- drupal_add_css(drupal_get_path('module', 'video') .'/types/uploadfield/uploadfield.css');
- // If FileField is not available, immediately disable uploadfield.
- if (!module_exists('filefield')) {
- module_disable(array('uploadfield'));
- drupal_set_message(t('The uploadfield module has been disabled. The <a href="http://drupal.org/project/filefield">FileField module</a> needs to be installed for it to work properly.'));
- return;
- }
-}
-
-/**
- * Implementation of hook_theme().
- */
-function uploadfield_theme() {
- $theme = array();
- $theme = array(
- // Theme an image uploaded to uploadfield with alt and title.
- // TODO: Switch to core theme image if possible.
- 'uploadfield_image' => array(
- 'arguments' => array('file' => NULL,
- 'alt' => '',
- 'title' => '',
- 'attributes' => NULL,
- 'getsize' => TRUE),
- ),
- // Theme an uploadfield field item. It calls imagefied_image with the proper
- // item properties as arguments.
- 'uploadfield_item' => array(
- 'arguments' => array('item' => NULL),
- ),
- // uploadfield_widget form element type theme function.
- 'uploadfield_widget' => array(
- 'arguments' => array('element' => NULL),
- 'file' => 'uploadfield_widget.inc',
- ),
- // Use to generate a preview (admin view) of an uploadfield item for use in
- // field item forms and filefield widgets. Invoked by filefield_widget_process.
- 'uploadfield_widget_preview' => array(
- 'arguments' => array('item' => NULL),
- ),
- // Theme function for the field item elements. allows you to place children
- // within the context of the parent.
- 'uploadfield_widget_item' => array(
- 'arguments' => array('element' => NULL),
- ),
- // Generates and img tag to the admin thumbnail of an uploadfield upload.
- 'uploadfield_admin_thumbnail' => array(
- 'arguments' => array('item' => NULL),
- ),
- // Generates and img tag to the video thumbnails.
- 'uploadfield_widget_video_thumb' => array(
- 'arguments' => array('item' => NULL),
- ),
-
- // uploadfield formatter theme functions.
- 'uploadfield_formatter_video_plain' => array(
- 'arguments' => array('element' => NULL),
- 'file' => 'uploadfield_formatter.inc',
- ),
- 'uploadfield_formatter_video_nodelink' => array(
- 'arguments' => array('element' => NULL),
- 'file' => 'uploadfield_formatter.inc',
- ),
- 'uploadfield_formatter_video_imagelink' => array(
- 'arguments' => array('element' => NULL),
- 'file' => 'uploadfield_formatter.inc',
- ),
-
- //from includes/common.inc
- 'video_format_play' => array(
- 'arguments' => array( 'output' => NULL,
- 'url' => NULL,
- 'title' => NULL,
- 'link_text' => NULL
- ),
- ),
- 'video_play_dcr' => array(
- 'arguments' => array('node' => NULL),
- ),
- 'video_play_divx' => array(
- 'arguments' => array('node' => NULL),
- ),
- 'video_play_flash' => array(
- 'arguments' => array('node' => NULL),
- ),
- 'video_play_ogg_theora' => array(
- 'arguments' => array('node' => NULL),
- ),
- 'video_play_quicktime' => array(
- 'arguments' => array('node' => NULL),
- ),
- 'video_play_realmedia' => array(
- 'arguments' => array('node' => NULL),
- ),
- 'video_play_swf' => array(
- 'arguments' => array('node' => NULL),
- ),
- 'video_play_windowsmedia' => array(
- 'arguments' => array('node' => NULL),
- ),
- 'video_encoding_failed' => array(
- 'arguments' => array(),
- ),
- 'video_inprogress' => array(
- 'arguments' => array(),
- ),
- );
- if(module_exists('imagecache')) {
- // imagecache presets
- foreach (imagecache_presets() as $preset) {
- $theme['uploadfield_formatter_'. $preset['presetname'] .'_videolinked'] = array(
- 'arguments' => array('element' => NULL),
- 'function' => 'theme_uploadfield_formatter_videolinked',
- 'file' => 'uploadfield_formatter.inc'
- );
- }
- }
-
- return $theme;
-}
-
-/**
- * Implementation of hook_elements().
- */
-function uploadfield_elements() {
- $elements = array();
-
- // An uploadfield is really just a FileField with extra processing.
- $filefield_elements = module_invoke('filefield', 'elements');
- $elements['uploadfield_widget'] = $filefield_elements['filefield_widget'];
- $elements['uploadfield_widget']['#process'][] = 'uploadfield_widget_process';
- $elements['uploadfield_widget']['#element_validate'][] = 'uploadfield_widget_validate';
-
- // uploadfield needs a separate value callback to save its alt and title texts.
- $elements['uploadfield_widget']['#value_callback'] = 'uploadfield_widget_value';
-
- return $elements;
-}
-
-/**
- * Implementation of hook_file_download.
- */
-function uploadfield_file_download($filepath) {
-// watchdog('video', 'file path is ' . $filepath);
-// echo $filepath;
-// Return headers for admin thumbnails if private files are enabled.
-// if (strpos($filepath, 'video_thumbs') !== FALSE) {
-// $original_path = str_replace('video_thumbs/', '', $filepath);
-// $original_full_path = file_create_path($original_path);
-// $thumb_full_path = file_create_path($filepath);
-//
-// // Allow access to temporary thumbnails, since they're not yet associated
-// // with a node. If not temporary, check access on the original file.
-// $status = db_result(db_query("SELECT status FROM {files} WHERE filepath = '%s'", $original_full_path));
-// $access = ($status == 0 || module_invoke_all('file_download', $original_path));
-// if ($access && $info = getimagesize($thumb_full_path)) {
-// return array(
-// 'Content-Type: ' . $info['mime'],
-// 'Content-Length: ' . filesize($thumb_full_path)
-// );
-// }
-// }
-
- // Return headers for default images.
-// if (strpos($filepath, 'uploadfield_default_images') !== FALSE) {
- if (strpos($filepath, 'video_thumbs') !== FALSE) {
- $full_path = file_create_path($filepath);
- if ($info = getimagesize($full_path)) {
- return array(
- 'Content-Type: ' . $info['mime'],
- 'Content-Length: ' . filesize($full_path)
- );
- }
- }
-}
-
-/**
- * Implementation of CCK's hook_widget_info().
- */
-function uploadfield_widget_info() {
- $module_path = drupal_get_path('module', 'uploadfield');
- return array(
- 'uploadfield_widget' => array(
- 'label' => t('Video'),
- 'field types' => array('filefield'),
- 'multiple values' => CONTENT_HANDLE_CORE,
- 'callbacks' => array('default value' => CONTENT_CALLBACK_CUSTOM),
- 'description' => t('An edit widget for video files, including video thumbnails and transcoding to flash.'),
- ),
- );
-}
-
-/**
- * Implementation of CCK's hook_widget_settings().
- */
-function uploadfield_widget_settings($op, $widget) {
- switch ($op) {
- case 'form':
- return uploadfield_widget_settings_form($widget);
- case 'validate':
- return uploadfield_widget_settings_validate($widget);
- case 'save':
- return uploadfield_widget_settings_save($widget);
- }
-}
-
-/**
- * Implementation of CCK's hook_widget().
- *
- * Assign default properties to item and delegate to FileField.
- */
-function uploadfield_widget(&$form, &$form_state, $field, $items, $delta = 0) {
-// Add default values to items.
-// TODO: use CCK's default value callback.
- if (empty($items[$delta])) {
- $items[$delta] = array('alt' => '', 'title' => '');
- }
-
- // Start with the FileField widget as a basic start.
- // Note that FileField needs to modify $form by reference.
- $element = filefield_widget($form, $form_state, $field, $items, $delta);
-
- // Add uploadfield specific validators.
- // $element['#upload_validators'] = array_merge($element['#upload_validators'], uploadfield_widget_upload_validators($field));
-
- return $element;
-}
-
-/**
- * Get the additional upload validators for an image field.
- *
- * @param $field
- * The CCK field array.
- * @return
- * An array suitable for passing to file_save_upload() or the file field
- * element's '#upload_validators' property.
- */
-function uploadfield_widget_upload_validators($field) {
- $validators = array();
-
- // Ensure that only web images are supported.
- $web_extensions = array(
- 'mov', 'mp4', '3gp', '3g2', 'mpg', 'mpeg', // quicktime
- 'divx', //divx
- 'rm', // realplayer
- 'flv', 'f4v', //flash player
- 'swf', // swf player
- 'dir', 'dcr', // dcr player
- 'asf', 'wmv', 'avi', 'mpg', 'mpeg', // windows media
- 'ogg' // ogg theora
- );
- $extensions = array_filter(explode(' ', $field['widget']['file_extensions']));
- if (empty($extensions)) {
- $extensions = $web_extensions;
- }
- $validators['filefield_validate_extensions'][0] = implode(' ', array_intersect($extensions, $web_extensions));
-
- // Add the image validator as a basic safety check.
- // $validators['filefield_validate_is_image'] = array();
-
- // Add validators for resolutions.
- // if (!empty($field['widget']['max_resolution']) || !empty($field['widget']['min_resolution'])) {
- // $validators['filefield_validate_image_resolution'] = array(
- // $field['widget']['max_resolution'],
- // $field['widget']['min_resolution'],
- // );
- // }
-
- return $validators;
-}
-
-/**
- * Implementation of CCK's hook_field_formatter_info().
- */
-function uploadfield_field_formatter_info() {
- $module_path = drupal_get_path('module', 'uploadfield');
- $formatters = array(
- 'video_plain' => array(
- 'label' => t('video'),
- 'field types' => array('filefield'),
- 'description' => t('Displays video files with player embedded.'),
- ),
- 'video_nodelink' => array(
- 'label' => t('video thumbnail linked to video'),
- 'field types' => array('filefield'),
- 'description' => t('Displays video thumb files then the video.'),
- ),
- // 'video_imagelink' => array(
- // 'label' => t('Video Thumbnail linked to video file download'),
- // 'field types' => array('filefield'),
- // 'description' => t('Displays video files in their original size.'),
- // ),
- );
-
-if(module_exists('imagecache')) {
- foreach (imagecache_presets() as $preset) {
- $formatters[$preset['presetname'] .'_videolinked'] = array(
- 'label' => t('Preset @preset of video thumbnail linked to video', array('@preset' => $preset['presetname'])),
- 'field types' => array('filefield'),
- );
- }
-}
- return $formatters;
-}
-
-/**
- * Implementation of CCK's hook_default_value().
- */
-function uploadfield_default_value(&$form, &$form_state, $field, $delta) {
- return filefield_default_value($form, $form_state, $field, $delta);
-}
-
-/**
- * Implementation of hook_form_[form_id]_alter().
- *
- * Modify the add new field form to make "Image" the default formatter.
- */
-function uploadfield_form_content_field_overview_form_alter(&$form, &$form_state) {
- $form['#submit'][] = 'uploadfield_form_content_field_overview_submit';
-}
-
-/**
- * Submit handler to set a new field's formatter to "video_plain".
- */
-function uploadfield_form_content_field_overview_submit(&$form, &$form_state) {
- if (isset($form_state['fields_added']['_add_new_field']) && isset($form['#type_name'])) {
- $new_field = $form_state['fields_added']['_add_new_field'];
- $node_type = $form['#type_name'];
- $field = content_fields($new_field, $node_type);
- if ($field['widget']['module'] == 'uploadfield') {
- foreach ($field['display_settings'] as $display_type => $display_settings) {
- if ($field['display_settings'][$display_type]['format'] == 'default') {
- $field['display_settings'][$display_type]['format'] = 'video_plain';
- }
- }
- content_field_instance_update($field);
- }
- }
-}
-
-/**
- * @defgroup "Theme Callbacks"
- * @{
- * @see uploadfield_theme().
- */
-function theme_uploadfield_image($file, $alt = '', $title = '', $attributes = NULL, $getsize = TRUE) {
- $file = (array)$file;
- // return $file['filepath'];
- if (!is_file($file['filepath'])) {
- return '<!-- File not found: '. $file['filepath'] .' -->';
- }
-
- if ($getsize) {
- // Use cached width and height if available.
- if (!empty($file['data']['width']) && !empty($file['data']['height'])) {
- $attributes['width'] = $file['data']['width'];
- $attributes['height'] = $file['data']['height'];
- }
- // Otherwise pull the width and height from the file.
- elseif (list($width, $height, $type, $image_attributes) = @getimagesize($file['filepath'])) {
- $attributes['width'] = $width;
- $attributes['height'] = $height;
- }
- }
-
- if (!empty($title)) {
- $attributes['title'] = $title;
- }
-
- // Alt text should be added even if it is an empty string.
- $attributes['alt'] = $alt;
-
- // Add a timestamp to the URL to ensure it is immediately updated after editing.
- $query_string = '';
- if (isset($file['timestamp'])) {
- $query_character = (variable_get('file_downloads', FILE_DOWNLOADS_PUBLIC) == FILE_DOWNLOADS_PRIVATE && variable_get('clean_url', '0') == '0') ? '&' : '?';
- $query_string = $query_character . $file['timestamp'];
- }
-
- $url = file_create_url($file['filepath']) . $query_string;
- $attributes['src'] = $url;
- $attributes = drupal_attributes($attributes);
- return '<span></span><img '. $attributes .' />';
-}
-
-function theme_uploadfield_item($item) {
- return theme('uploadfield_image', $item, $item['alt'], $item['title']);
-}
-
-function theme_uploadfield_widget_preview($item = NULL) {
- return '<div class="uploadfield-preview">' . theme('uploadfield_admin_thumbnail', $item) . '</div>';
-}
-
-function theme_uploadfield_widget_item($element) {
- return theme('filefield_widget_item', $element);
-}
-
-function theme_uploadfield_admin_thumbnail($item = NULL) {
- if (is_null($item) || empty($item['filepath'])) {
- return '<!-- link to default admin thumb -->';
- }
- $thumb_path = uploadfield_file_admin_thumb_path($item);
- return '<img src="'. file_create_url($thumb_path) .'" title="' . check_plain($item['filename']) . '" />';
-}
-
-function theme_uploadfield_widget_video_thumb($item = NULL) {
- return '<div class="uploadfield-video-thumb">' . theme('uploadfield_image', $item, '', '', '', FALSE) . '</div>';
-}
-/**
- * @} End defgroup "Theme Callbacks".
- */
-
-/**
- * Implementing video module API
- * hook_v_perm()
- */
-
-function uploadfield_v_perm() {
- return array('use default thumbnail', 'bypass conversion video');
-}
-
-/**
- * Implementation of hook_v_help
- */
-function video_upload_v_help() {
-
- $help = array();
- $help['upload']['data'] = '<b>' . t('Upload support') . '</b>';
- $help['upload']['children'] = array(t('You can upload a video file from your computer to this website.'));
-
- return $help;
-}
-
-
-/**
- * Implements the hook_v_auto_resolution
- */
-function uploadfield_v_auto_resolution($vidfile) {
-//TODO : add dynamic converter selector
- module_load_include('inc', 'video', '/plugins/ffmpeg');
- if(module_hook('ffmpeg', 'auto_playtime')) {
- return ffmpeg_auto_playtime($vidfile);
- }
- return false;
-}
-
-
-/**
- * Implements the hook_v_auto_resolution
- */
-function uploadfield_v_auto_playtime($vidfile) {
-//TODO : add dynamic converter selector
- module_load_include('inc', 'video', '/plugins/ffmpeg');
- if(module_hook('ffmpeg', 'auto_playtime')) {
- return ffmpeg_auto_playtime($vidfile);
- }
- return false;
-}
-
-/**
- * Implementation of hook_v_video()
- */
-function uploadfield_v_video($op, &$element) {
- global $user;
- switch ($op) {
- case 'insert':
- case 'update':
- // TODO : need to add validation on just submit scenario
- $field = content_fields($element['#field_name'], $element['#type_name']);
- // auto thumbnailing
- if($field['widget']['autothumbnail']) {
- $update = NULL;
- $vidfile = $element['#value'];
- $vid = $vidfile['fid'];
- $vid_path = $vidfile['data']['video_thumb'];
- $vid_dir = explode('/', $vid_path);
- $vid_name = $vid_dir[count($vid_dir) - 1];
-
- $file = new stdClass();
- $file->uid = $user->uid;
- $file->status = FILE_STATUS_PERMANENT;
- $file->filename = $vid_name;
- $file->filepath = $vid_path;
- $file->filemime = file_get_mimetype($vid_name);
- $file->filesize = filesize($vid_path);
- $file->timestamp = REQUEST_TIME;
-
- if($op == 'update') {
- $old_fid = $element['#default_value']['data']['video_thumb_fid'];
- $update = 'fid';
- $file->fid = $old_fid;
- }
- drupal_write_record ('files', $file, $update);
- // get fid if and only if insert
- if($op == 'insert')
- $file->fid = db_last_insert_id('files', 'fid');
- // add file id to the data
- $element['data']['video_thumb_fid'] = array (
- '#type'=> 'value',
- '#value' => $file->fid
- );
- }
-
- // auto covnersion
- if($field['widget']['autoconversion']) {
- video_auto_transcode_add_to_queue($element, $op);
- }
- break;
- case 'delete':
- //delete thumbnails
- break;
- case 'thumbs':
- include_once dirname(__FILE__) . '/uploadfield_thumb.inc';
- //create thumbs and display
- video_auto_thumb_process($element);
- break;
- case 'convert':
- include_once dirname(__FILE__) . '/uploadfield_convert.inc';
- //create FLV file
-// video_auto_transcode_process($element);
- break;
- }
-} \ No newline at end of file