Support for Drupal 7 is ending on 5 January 2025—it’s time to migrate to Drupal 10! Learn about the many benefits of Drupal 10 and find migration tools in our resource center.
I removed the requirement to include the Zend library separately. I added it to the module directory. This is what I ended up with. Considering adding this as a module.. but still dont like the included Zend library files.
ini_set('include_path', ini_get('include_path').':'.drupal_get_path("module", "youtubebadge"));
/**
* Zend gdata libraries had to be added to the php page. I did this inside settings.php
* by adding ' ini_set('include_path', ini_get('include_path').':path-to-zend-libraries'); '
* Got help from http://code.google.com/apis/youtube/developers_guide_php.html#YouTubeService
* Also, if you get a blank page, check the http error log, you might not be able to find DomDocument
* class if PHP was not complied with Dom support, installing the php-xml rpm fixed that issue. You
* could also recompile PHP without the --deisable-dom switch.
*/
/**
* Implementation of hook_requirements
* Check for the zend gdata library
*/
function youtubebadge_requirements($phase) {
$requirements = array();
$t = get_t();
// check init settings
// check lib installed
$gdata_path = drupal_get_path("module", "youtubebadge") . "/Zend/Loader.php";
$gdata_installed = file_exists($gdata_path);
switch ($phase) {
case "install":
if(!$gdata_installed) {
$requirements['youtubebadge'] = array(
'title' => $t('YouTube Badge'),
'value' => $t('Download and extract gdata library.'),
'severity' => REQUIREMENT_ERROR,
);
}
case "runtime":
$requirements['jquery'] = array(
'title' => $t('YouTube Badge'),
'severity' => REQUIREMENT_OK,
'value' => $t('Zend gdata library installed correctly for YouTube Badge.'),
);
}
return $requirements;
}
/**
* Implementation of hook_block()
*
*/
function youtubebadge_block($op = 'list', $delta = 0, $edit = array()) {
switch($op) {
case 'list' :
$blocks[0]['info'] = t("YouTube Video Badge");
return $blocks;
case 'configure':
$form = array();
$form['youtube_feed_url_text'] = array(
'#type' => 'textfield',
'#title' => t('YouTube Feed URL'),
'#size' => 90,
'#default_value' => variable_get('youtube_feed_url_text',
"http://gdata.youtube.com/feeds/api/standardfeeds/top_rated?max-results=9"),
'#description' => t('See the <a target="_blank"
);
$form['youtube_feed_rss_url'] = array(
'#type' => 'textfield',
'#size' => 90,
'#default_value' => variable_get('youtube_feed_rss_url', ""),
'#description' => t('The URL for the rss link on the block title bar.'),
);
$form['youtube_block_title_url'] = array(
'#type' => 'textfield',
'#size' => 90,
'#default_value' => variable_get('youtube_block_title_url', ""),
'#description' => t('The URL for the block title link.'),
);
$form['youtube_row_width'] = array(
'#type' => 'textfield',
'#title' => 'Row Width',
'#default_value' => variable_get('youtube_row_width', 200),
'#description' => t('An approximate width in pixels that the badge has to display '.
'one row of thumbnails.<br/>This value helps determine the thumbnail size.'),
);
$form['youtube_images_wide'] = array(
'#type' => 'textfield',
'#title' => 'Entries Across',
'#default_value' => variable_get('youtube_images_wide', 1),
'#description' => t('How many thumbnails across the top of the badge.'),
);
// add URL test button
return $form;
case 'save':
// only one block so we don't need delta switch
variable_set('youtube_feed_url_text', $edit['youtube_feed_url_text']);
variable_set('youtube_feed_rss_url', $edit['youtube_feed_rss_url']);
variable_set('youtube_block_title_url', $edit['youtube_block_title_url']);
variable_set('youtube_row_width', $edit['youtube_row_width']);
variable_set('youtube_images_wide', $edit['youtube_images_wide']);
return;
case 'view': default:
$block['subject'] = t('YouTube Video Badge');
$block['content'] = youtubebadge_block_contents();
//$block['content'] ="test";
return $block;
}
}
// contents of the block
function youtubebadge_block_contents() {
$output = "";
include_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata_YouTube');
if(class_exists("Zend_Gdata_YouTube")) {
$yt = new Zend_Gdata_YouTube();
$feed_url = variable_get('youtube_feed_url_text', FALSE);
$video_feed = $yt->getVideoFeed($feed_url);
$block_args = array(
'available-width' => variable_get('youtube_row_width', 0),
'images-wide' => variable_get('youtube_images_wide', 1),
'rss-url' => variable_get('youtube_feed_rss_url', ""),
'title-url' => variable_get('youtube_block_title_url', ""),
);
$output .= theme("badge_block", $video_feed, $block_args);
//$output .= theme("badge_block", null , $block_args);
} else
$output .= theme("badge_block", NULL);
return $output;
}
/**
* Themeing function for youtube thumbnail badge
*
*/
function theme_badge_block($video_feed, $block_args = array('images-wide'=>1)) {
drupal_add_css(drupal_get_path('module', "youtubebadge") . "/youtubebadge.css", "module");
$images = array();
if($video_feed) {
foreach ($video_feed as $videoEntry) {
$images[] = theme("video_entry", $videoEntry, $block_args );
}
} else {
$images[] = "<div>Feed not available.</div>";
}
$rows = array_chunk($images, $block_args['images-wide']);
$output = "<div id='youtube-badge-block'>";
foreach($rows as $row) {
$output .= "<div class='youtube-entry-row'>".implode("", $row)."</div>\n";
}
$output .= "</div>";
return $output;
}
/**
* Themeing function for video thumbnail entreis
*
*/
function theme_video_entry($videoEntry, $block_args = array()) {
$thumb = $videoEntry->mediaGroup->thumbnail[0];
$sugg_width = floor($block_args['available-width'] / $block_args['images-wide']);
if($sugg_width > 0){
$output .= "<a href='". $videoEntry->mediaGroup->player[0]->url .
"' target='_blank'><img class='youtube-thumb' src='$thumb->url' width='$sugg_width'></a>";
}
else
$output .= "<div class='youtube-video-entry'><img class='youtube-thumb' src='$thumb->url'></div>";
return $output;
}