You are here

views_bonus_audio_playlist.module in Views Bonus Pack 5

File

views_bonus_audio_playlist.module
View source
<?php

function views_bonus_audio_playlist_views_style_plugins() {
  if (file_exists('./' . drupal_get_path('module', 'audio') . '/flash_mp3_player/')) {
    $items['audio_playlist'] = array(
      'name' => t('Audio: Playlist'),
      'theme' => 'views_bonus_audio_playlist',
      'summary_theme' => 'views_summary',
    );
  }
  return $items;
}
function theme_views_bonus_audio_playlist($view, $nodes, $type) {
  if (isset($_GET['playlist'])) {
    return views_bonus_audio_playlist($view, $nodes, $type);
  }
  else {
    return views_bonus_audio_view($view, $nodes, $type);
  }
}
function views_bonus_audio_view($view, $nodes, $type) {
  global $base_url;
  $flash_mp3_player = $base_url . '/' . drupal_get_path('module', 'audio') . '/flash_mp3_player/';
  $options = array_merge((array) $options, array(
    'file' => url($view->real_url, 'playlist', NULL, true),
  ));
  $url = url($flash_mp3_player . 'mp3player.swf');
  if ($options) {
    $flashvars = drupal_query_string_encode($options);
  }
  $output = <<<EOF
<object
  classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
  width="300"
  height="200"
  id="mp3player"
  codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0"
>
  <param
    name="movie"
    value="{<span class="php-variable">$url</span>}"
  />
  <param
    name="flashvars"
    value="{<span class="php-variable">$flashvars</span>}"
  />
  <embed
    src="{<span class="php-variable">$url</span>}" width="300" height="200" name="mp3player"
    flashvars="{<span class="php-variable">$flashvars</span>}"
    type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"
  />
</object>
EOF;
  return $output;
}
function views_bonus_audio_playlist($view, $nodes, $type) {
  $output = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n";
  $output .= "<playlist version=\"1\" xmlns=\"http://xspf.org/ns/0/\">\n";
  $output .= "  <title>" . views_get_title($view, $type) . "</title>\n";
  $output .= "  <trackList>\n";
  foreach ($nodes as $n) {
    $node = node_load($n->nid);
    $output .= theme('views_bonus_audio_track_xml', $node);
  }
  $output .= "  </trackList>\n";
  $output .= "</playlist>\n";
  drupal_set_header('Content-Type: text/xml; charset=utf-8');
  print $output;
  exit;
}
function theme_views_bonus_audio_track_xml($node) {
  $output .= "    <track>\n";
  $output .= "      <annotation>" . check_plain($node->title) . "</annotation>\n";
  $output .= "      <title>" . check_plain($node->audio_tags['title']) . "</title>\n";
  $output .= "      <track>" . check_plain($node->audio_tags['track']) . "</track>\n";
  $output .= "      <location>" . check_url($node->url_play) . "?" . $node->audio_fileinfo['fileformat'] . "</location>\n";
  $output .= "      <info>" . url("node/{$node->nid}", NULL, NULL, TRUE) . "</info>\n";
  $output .= "      <identifier>" . $node->nid . "</identifier>\n";
  $output .= "    </track>\n";
  return $output;
}