video_optmetadata.module in Video 6
Same filename and directory in other branches
Enable addition of optional metadata on video nodes created by video module.
@author Fabio Varesano <fvaresano at yahoo dot it> porting to Drupal 6 @author Heshan Wanigasooriya <heshan at heidisoft.com><heshanmw@gmail.com> @todo
File
plugins/video_optmetadata/video_optmetadata.moduleView source
<?php
/**
* @file
* Enable addition of optional metadata on video nodes created by video module.
*
* @author Fabio Varesano <fvaresano at yahoo dot it>
* porting to Drupal 6
* @author Heshan Wanigasooriya <heshan at heidisoft.com><heshanmw@gmail.com>
* @todo
*/
/**
* Implementation of hook_help().
*/
function video_optmetadata_help($path, $arg) {
switch ($path) {
case 'admin/modules#description':
return t('Enable addition of optional metadata on video nodes created by video module. Optional metadata are Video Bitrate, Audio Bitrate, Audio Sampling Rate and Audio Channels.');
}
}
/**
* Implementation of hook_perm().
*/
function video_optmetadata_perm() {
return array(
'insert optional metadata',
);
}
/**
* Implementation of hook_form_alter()
* We use this to add some fields to the video creation form.
* In those fields users will be able to insert some video metadatas.
*/
function video_optmetadata_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'video_node_form' && isset($form['video']) && user_access('insert optional metadata')) {
// get node object
$node = $form['#node'];
// Optional Video Metadata. We display this group expanded only if displaying of optional metadata is enabled.
$form['metadata'] = array(
'#type' => 'fieldset',
'#title' => t('Optional Metadata'),
'#collapsible' => TRUE,
'#collapsed' => TRUE,
'#weight' => -16,
'#description' => t('Insert here the metadata informations.'),
);
$form['metadata']['video_bitrate'] = array(
'#type' => 'textfield',
'#title' => t('Video Bitrate'),
'#length' => 11,
'#maxlength' => 11,
'#default_value' => $node->video_bitrate,
'#description' => t('Video bitrate in kbits/sec.'),
);
$form['metadata']['audio_bitrate'] = array(
'#type' => 'textfield',
'#title' => t('Audio Bitrate'),
'#length' => 11,
'#maxlength' => 11,
'#default_value' => $node->audio_bitrate,
'#description' => t('Audio bitrate in kbits/sec.'),
);
$form['metadata']['audio_sampling_rate'] = array(
'#type' => 'select',
'#title' => t('Audio Sampling Rate'),
'#options' => array(
0 => 'none',
8000 => '8 kHz',
11025 => '11 kHz',
16000 => '16 kHz',
22050 => '22 kHz',
32000 => '32 kHz',
44100 => '44.1 kHz',
48000 => '48 kHz',
96000 => '96 kHz',
192400 => '192 kHz',
),
'#default_value' => $node->audio_sampling_rate,
'#description' => t('Integer value of audio sampling rate in Hz.'),
);
$form['metadata']['audio_channels'] = array(
'#type' => 'select',
'#title' => t('Audio Channels'),
'#options' => array(
'' => 'none',
'5.1' => t('5.1'),
'stereo' => t('Stereo'),
'mono' => t('Mono'),
),
'#default_value' => $node->audio_channels,
);
// Ends Video Optional Metadata
}
}
/**
* Implementation of hook_nodeapi()
*/
function video_optmetadata_nodeapi(&$node, $op, $teaser) {
if ($node->type == 'video') {
switch ($op) {
case 'view':
//Add the HTML formatted output of the optional video metadata to the bottom.
$node->body .= theme('video_metadata', $node);
break;
}
}
}
/**
* Display optional metadata (Video and Audio bitrate,..) on the view page.
*
* @param $node
* object with node information
*
* @return
* string of content to display
$node->video_bitrate, $node->audio_bitrate, $node->audio_sampling_rate, $node->audio_channels,
*/
function theme_video_metadata($node) {
//Make sure atleast one fields had data.
if ($node->video_bitrate != 0 or $node->audio_bitrate != 0 or $node->audio_sampling_rate != 0 or $node->audio_channels != 0) {
$output = "\n\n<div class=\"video_metadata\">\n";
$output .= ' <div class="title"><h2>' . t('Video Metadata') . "</h2></div>\n";
if ($node->video_bitrate != 0) {
$fields[] = array(
'title' => t('Video Bitrate') . ':',
'body' => $node->video_bitrate . ' ' . t('kbits/sec'),
);
}
if ($node->audio_bitrate != 0) {
$fields[] = array(
'title' => t('Audio Bitrate') . ':',
'body' => $node->audio_bitrate . ' ' . t('kbits/sec'),
);
}
if ($node->audio_sampling_rate != 0) {
$fields[] = array(
'title' => t('Audio Sampling Rate') . ':',
'body' => $node->audio_sampling_rate . ' ' . t('Hz'),
);
}
if ($node->audio_channels != '') {
$fields[] = array(
'title' => t('Audio Channels') . ':',
'body' => $node->audio_channels,
);
}
$output .= theme('video_fields', $fields);
//Generate the fields HTML.
$output .= '</div>';
//Closing div video_metadata
}
else {
//If all the fields are blank then display nothing.
$output = '';
}
return $output;
}
/**
* Implementation of hook_theme().
*/
function video_optmetadata_theme() {
return array(
'video_metadata' => array(
'arguments' => array(
'node' => NULL,
),
),
);
}
Functions
Name | Description |
---|---|
theme_video_metadata | Display optional metadata (Video and Audio bitrate,..) on the view page. |
video_optmetadata_form_alter | Implementation of hook_form_alter() We use this to add some fields to the video creation form. In those fields users will be able to insert some video metadatas. |
video_optmetadata_help | Implementation of hook_help(). |
video_optmetadata_nodeapi | Implementation of hook_nodeapi() |
video_optmetadata_perm | Implementation of hook_perm(). |
video_optmetadata_theme | Implementation of hook_theme(). |