youtubechannel.module in YoutubeChannel 7
Same filename and directory in other branches
module file for youtubechannel.
File
youtubechannel.moduleView source
<?php
/**
* @file
* module file for youtubechannel.
*/
/**
* Implements hook_help().
*/
function youtubechannel_help($section) {
switch ($section) {
case 'admin/help#youtubechannel':
return t("Youtube Channel let's you have a complete video list from an specific user inside your site,\n you only have to configure the dimensions and the username that you'll use to feed the page.");
}
}
/**
* Implements hook_permission().
*/
function youtubechannel_permission() {
return array(
'administer youtubechannel' => array(
'title' => t('Administer Youtube Channel'),
),
);
}
/**
* Implements hook_menu().
*/
function youtubechannel_menu() {
$items = array();
$items['admin/config/services/youtubechannel'] = array(
'title' => 'Youtube Channel',
'description' => 'Configure the settings to be used for Youtube Channel.',
'page callback' => 'drupal_get_form',
'page arguments' => array(
'youtubechannel_settings_form',
),
'access arguments' => array(
'administer youtubechannel',
),
'file' => 'youtubechannel.admin.inc',
'type' => MENU_NORMAL_ITEM,
);
return $items;
}
/**
* Implements hook_block_info().
*/
function youtubechannel_block_info() {
$blocks = array();
$blocks[0] = array(
'info' => t('Youtube Channel'),
);
return $blocks;
}
/**
* Implements hook_block_view().
*/
function youtubechannel_block_view($delta = '') {
$block = array();
if ($delta == 0) {
$block['subject'] = t('Youtube Channel');
$block['content'] = youtubechannel_getview();
return $block;
}
}
/**
* Implements hook_theme().
*/
function youtubechannel_theme() {
return array(
'youtubechannel_videos' => array(
'variables' => array(
'vars' => NULL,
),
'template' => 'youtubechannel_videos',
),
);
}
/**
* Function that build the Youtube videos as a Channel.
*/
function youtubechannel_getview() {
$youtube_channel_id = variable_get('youtubechannel_id', NULL);
$youtube_id = variable_get('youtubechannel_id', NULL);
$max_results = variable_get('youtubechannel_video_limit', 5);
$api_key = variable_get('youtubechannel_api_key', NULL);
drupal_add_css(drupal_get_path('module', 'youtubechannel') . '/css/youtubechannel.css');
drupal_add_js(drupal_get_path('module', 'youtubechannel') . '/js/youtubechannel.js');
/**
* NEW API v3 feed
*/
// First, let's fetch the channel feed to get the upload playlist.
$path = "https://www.googleapis.com/youtube/v3/channels?part=contentDetails&id={$youtube_id}&maxResults=1&fields=pageInfo/totalResults,items/contentDetails/relatedPlaylists/uploads&key={$api_key}";
$channeljson = drupal_http_request($path);
// Check we got a proper response.
if ($channeljson->code == 200) {
$channel_data = drupal_json_decode($channeljson->data);
$uploads_id = $channel_data['items'][0]['contentDetails']['relatedPlaylists']['uploads'];
if (!empty($channel_data['items'])) {
// Now we have the uploads feed ID, let's grab the the actual video feed.
$path = "https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&}&maxResults={$max_results}&fields=pageInfo/totalResults,items/snippet(resourceId/videoId,title,thumbnails/default/url)&playlistId={$uploads_id}&key={$api_key}";
$playlistjson = drupal_http_request($path);
// Now, let's check that this also gives us a valid response.
if ($playlistjson->code == 200) {
$feed_array = drupal_json_decode($playlistjson->data);
// First, let's look in the feed and check there are some videos.
if ($feed_array['pageInfo']['totalResults'] == 0) {
return t("Sorry, there are no videos available on this channel.");
}
// Now let's iterate through our items.
$videos = array();
foreach ($feed_array['items'] as $key => $value) {
$youtube_id = $value['snippet']['resourceId']['videoId'];
$title = $value['snippet']['title'];
$image_variables = array(
'path' => $value['snippet']['thumbnails']['default']['url'],
'alt' => $title,
'title' => $title,
);
$thumb = theme('image', $image_variables);
$videos[$youtube_id] = $thumb;
}
$vars['width'] = check_plain(variable_get('youtubechannel_video_width', 200));
$vars['height'] = check_plain(variable_get('youtubechannel_video_height', 150));
$vars['content'] = $videos;
$vars['youtube_channel_id'] = l(t('See All Video'), 'https://www.youtube.com/channel/' . $youtube_channel_id, array(
'attributes' => array(
'class' => array(
'channel-link',
),
),
'attributes' => array(
'target' => '_blank',
),
));
return theme('youtubechannel_videos', array(
'vars' => $vars,
));
}
}
}
return t("Please configure this section in the !link", array(
'!link' => l(t('admin page', array()), 'admin/config/services/youtubechannel'),
));
}
Functions
Name | Description |
---|---|
youtubechannel_block_info | Implements hook_block_info(). |
youtubechannel_block_view | Implements hook_block_view(). |
youtubechannel_getview | Function that build the Youtube videos as a Channel. |
youtubechannel_help | Implements hook_help(). |
youtubechannel_menu | Implements hook_menu(). |
youtubechannel_permission | Implements hook_permission(). |
youtubechannel_theme | Implements hook_theme(). |