LinHES Forums http://forum.linhes.org/ |
|
Mythweb music page - new sort functions http://forum.linhes.org/viewtopic.php?f=3&t=15259 |
Page 1 of 1 |
Author: | lhassell [ Thu May 17, 2007 5:07 pm ] |
Post subject: | Mythweb music page - new sort functions |
Ok... I've kludged together some new functions on the music section of mythweb. My version is R5E50. It's primitive (I am learning php as I go), but it works... sort of. I still have a few problems. 1. How do I make my menu selections persistent? I can only look at the first page of whatever selection I make. 2. Anything with quotation marks in the data messes up the query string (ex.- value=""Weird Al" Yankovic"). Is there a way to make the script handle this? Anyway, here is the code as I've modified it... sorry, I don't know how to do a diff, but hopefully this will do. Leif Code: <?php
/** * MythMusic browser. * * @url $URL: http://svn.mythtv.org/svn/branches/release-0-20-fixes/mythplugins/mythweb/modules/music/tmpl/default/music.php $ * @date $Date: 2006-06-24 12:03:10 -0700 (Sat, 24 Jun 2006) $ * @version $Revision: 10290 $ * @author $Author: xris $ * @license GPL * * @package MythWeb * @subpackage Music * /**/ class Theme_music { var $maxPerPage; var $totalCount; var $offset; var $result; var $statusMessage; var $filterPlaylist; var $filterArtist; var $filterAlbum; var $filterGenre; var $alphacount; function getMaxPerPage() { return($this->maxPerPage); } function setTotalCount($newTotal) { $this->totalCount=$newTotal; } function setOffset($newOffset) { $this->offset=$newOffset; } function playListSelector() { $query="SELECT playlist_id, playlist_name from music_playlists order by playlist_name"; $queryResults=mysql_query($query); if($queryResults) { printf("<td align=\"center\">"); printf("Playlists"); $row=mysql_fetch_row($queryResults); printf("<select name=\"filterPlaylist\">\n"); printf("\t<option value=\"_All_\" "); if($this->filterPlaylist != "_All_") printf("selected >"); else printf(">"); printf("All Music</option>\n"); do { printf("\t<option value=\"%d\" ",$row[0]); if($this->filterPlaylist == ($row[0]) ) printf("selected >"); else printf(">"); printf("%s</option>\n",$row[1]); } while ($row=mysql_fetch_row($queryResults)); printf("</select>"); } } function artistSelector() { $query="SELECT artist_id, artist_name from music_artists order by artist_name"; $queryResults=mysql_query($query); if($queryResults) { printf("<td align=\"center\">"); printf("Artists"); $row=mysql_fetch_row($queryResults); printf("<select name=\"filterArtist\">\n"); printf("\t<option value=\"_All_\" "); if($this->filterArtist != "_All_") printf("selected >"); else printf(">"); printf("All Music</option>\n"); do { printf("\t<option value=\"%s\" ",$row[1]); if($this->filterArtist == ($row[0]) ) printf("selected >"); else printf(">"); printf("%s</option>\n",$row[1]); } while ($row=mysql_fetch_row($queryResults)); printf("</select>"); } } function albumSelector() { $query="SELECT album_id, album_name from music_albums order by album_name"; $queryResults=mysql_query($query); if($queryResults) { printf("<td align=\"center\">"); printf("Albums"); $row=mysql_fetch_row($queryResults); printf("<select name=\"filterAlbum\">\n"); printf("\t<option value=\"_All_\" "); if($this->filterAlbum != "_All_") printf("selected >"); else printf(">"); printf("All Music</option>\n"); do { printf("\t<option value=\"%s\" ",$row[1]); if($this->filterAlbum == ($row[0]) ) printf("selected >"); else printf(">"); printf("%s</option>\n",$row[1]); } while ($row=mysql_fetch_row($queryResults)); printf("</select>"); } } function genreSelector() { $query="SELECT genre_id, genre from music_genres order by genre"; $queryResults=mysql_query($query); if($queryResults) { printf("<td align=\"center\">"); printf("Genres"); $row=mysql_fetch_row($queryResults); printf("<select name=\"filterGenre\">\n"); printf("\t<option value=\"_All_\" "); if($this->filterGenre != "_All_") printf("selected >"); else printf(">"); printf("All Music</option>\n"); do { printf("\t<option value=\"%s\" ",$row[1]); if($this->filterGenre == ($row[0]) ) printf("selected >"); else printf(">"); printf("%s</option>\n",$row[1]); } while ($row=mysql_fetch_row($queryResults)); printf("</select>"); } } function actionSelector() { printf("<select name=\"action\" >\n"); printf("<option value=\"0\" selected >View Play List or Summary</option>"); printf("<option value=\"1\" >View by Artist</option>"); printf("<option value=\"2\" >View by Album</option>"); printf("<option value=\"3\" >View by Genre</option>"); printf("</select>"); } function Theme_music() { $this->maxPerPage=100; } function printNavBar() { $pageCount=($this->totalCount / $this->maxPerPage) +1; /*** printf("<table class=\"musicTable\" width=\"100%%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n"); ***/ printf("<tr class=\"menu\">\n"); if($this->offset > 0) { printf("<td align=\"left\"><a href=\"".root."music\" >%s</a>",t('All Music')); printf("%s<a href=\"".root."music?offset=%d%s\" >%s</a>"," | ",0,$this->keepFilters,t('Top')); if( ($this->offset - ($this->maxPerPage * 5)) > 0) printf("%s<a href=\"".root."music?offset=%d%s\" >%s</a>"," | ", $this->offset - (5 * $this->maxPerPage),$this->keepFilters,"-" . (5 * $this->maxPerPage)); else printf("%s"," | -" . (5 * $this->maxPerPage)); printf("%s<a href=\"".root."music?offset=%d%s\" >%s</a>"," | ", $this->offset - $this->maxPerPage,$this->keepFilters, t('Previous')); } else { printf("<td align=\"left\"><a href=\"".root."music\" >%s</a>",t('All Music')); printf("%s"," | " . t('Top')); printf("%s"," | -" . (5 * $this->maxPerPage)); printf("%s"," | " . t('Previous')); } /**** Print out alphabet links ****/ printf("</td><td align=\"center\">\n"); for ($alphacount = 65; $alphacount <= 90; $alphacount++) printf('<a href="'.root."music?alphalink=%s\" >%s</a> \n", chr($alphacount), chr($alphacount)); printf("</td>"); if($this->totalCount > ($this->maxPerPage + $this->offset)) { printf("<td align=\"right\"><a href=\"".root."music?offset=%d%s\" >%s</a>", $this->offset + $this->maxPerPage,$this->keepFilters,t('Next')); if( (($this->maxPerPage * 5) + $this->offset) < $this->totalCount ) printf("%s<a href=\"".root."music?offset=%d%s\" >%s</a>"," | ", $this->offset + (5 * $this->maxPerPage),$this->keepFilters,"+" . (5 * $this->maxPerPage)); else printf("%s"," | +" . 5 * $this->maxPerPage); printf("%s<a href=\"".root."music?offset=%d%s\" >%s</a>"," | ", $this->totalCount - $this->maxPerPage,$this->keepFilters,t('End')); printf("</td>"); } else { printf("<td align=\"right\">%s",t('Next')); printf("%s"," | +" .(5 * $this->maxPerPage)); printf("%s"," | ".t('End')); printf("</td>"); } printf("</tr>\n"); printf("</table>\n"); } function printDetail($trackName,$trackTime,$trackArtist,$trackAlbum,$trackGenre,$urlfilename) { printf("<tr class=\"musicRow\">\n"); printf("<td class=\"musicTrack\"> <a href=\"%s\">%s</a></td>\n",$urlfilename,htmlspecialchars($trackName)); $calcLength=$trackTime/1000; $calcMin=$calcLength/60; $calcSec=$calcLength%60; printf("<td class=\"musicTime\">%d:%02d</td>\n",$calcMin,$calcSec); printf("<td class=\"musicArtist\"> <a href=\"".root."music?filterArtist=%s\" >%s</a></td>\n",urlencode($trackArtist),htmlspecialchars($trackArtist)); printf("<td class=\"musicAlbum\"> <a href=\"".root."music?&filterAlbum=%s\" >%s</a></td>\n",urlencode($trackAlbum),htmlspecialchars($trackAlbum)); printf("<td class=\"musicGenre\"> <a href=\"".root."music?filterGenre=%s\" > %s</a></td>\n",urlencode($trackGenre),htmlspecialchars($trackGenre)); printf("</tr>\n"); } function printNoDetail() { printf("<tr><td>".t('No Tracks Available')."</p>\n"); } function print_menu_content() { echo "MythMusic"; } function print_header($filterPlaylist,$filterArtist,$filterAlbum,$filterGenre) { $this->filterPlaylist=$filterPlaylist; // Set the desired page title global $page_title, $Modules, $headers; $page_title = 'MythWeb - '.t('Music'); // Print the page header require 'modules/_shared/tmpl/'.tmpl.'/header.php'; printf("<form action=\"".root."music\" method=\"GET\" >\n"); printf("<input type=\"hidden\" name=\"mode\" value=\"music\" />\n"); printf("<table width=\"100%%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\""); printf("<tr class=\"menu\" >"); if($filterArtist != "_All_" || $filterAlbum != "_All_" || $filterGenre != "_All_" || $filterPlaylist != "_All_") printf("%s\n","<td align=\"left\" >" . $this->totalCount . " ".t('Filtered')."</td>"); else printf("%s\n","<td align=\"left\" >" . $this->totalCount . " ".t('Unfiltered')."</td>"); printf("</td>"); printf("<table width=\"100%%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\""); printf("<tr class=\"menu\" >"); $this->playListSelector(); printf("</td>"); printf("<form action=\"".root."music\" method=\"GET\" >\n"); printf("<table width=\"100%%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\""); printf("<tr class=\"menu\" >"); $this->artistSelector(); printf("</td>"); printf("<form action=\"".root."music\" method=\"GET\" >\n"); printf("<table width=\"100%%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\""); printf("<tr class=\"menu\" >"); $this->albumSelector(); printf("</td>"); printf("<form action=\"".root."music\" method=\"GET\" >\n"); printf("<table width=\"100%%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\""); printf("<tr class=\"menu\" >"); $this->genreSelector(); printf("</td>"); printf("<form action=\"".root."music\" method=\"GET\" >\n"); printf("<table width=\"100%%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\""); printf("<tr class=\"menu\" >"); // $this->actionSelector(); printf("<input TYPE=\"SUBMIT\" NAME=\"updateButton\" VALUE=\"Update\">"); printf("</td>"); if($filterArtist != "_All_" || $filterAlbum != "_All_" || $filterGenre != "_All_" ) { if( ($this->offset + $this->maxPerPage) > $this->totalCount) printf("%s\n","<td align=\"right\" >" . t('Displaying') . ": " . (0 + $this->offset) . "-" . $this->totalCount . "</td>"); else printf("%s\n","<td align=\"right\" >" . t('Displaying') . ": " . ( 0 + $this->offset) . "-" . ( $this->offset + $this->maxPerPage) . "</td>"); } else { if( ($this->offset + $this->maxPerPage) > $this->totalCount) printf("%s\n","<td align=\"right\" >" . t('Displaying') . ": " . ( 0 + $this->offset) . "-" . $this->totalCount . "</td>"); else printf("%s\n","<td align=\"right\" >" . t('Displaying') . ": " . ( 0 + $this->offset) . "-" . ( $this->offset + $this->maxPerPage) . "</td>"); } printf("</tr>"); $this->printNavBar(); printf("<table class=\"list small\" width=\"100%%\" border=\"0\" cellpadding=\"4\" cellspacing=\"2\">\n"); printf("<tr class=\"menu\">"); printf("<td>" . t('Track Name') . "</td>\n"); printf("<td>" . t('Duration') . "</td>\n"); if($filterArtist=="_All_") printf("<td>" . t('Artist') . "</td>\n"); else printf("<td>" . t('Artist (filtered)') . "</br>%s</td>",htmlspecialchars($filterArtist)); if($filterAlbum=="_All_") printf("<td>" . t('Album') . "</td>\n"); else printf("<td>" . t('Album (filtered)') . "</br>%s</td>",htmlspecialchars($filterAlbum)); if($filterGenre=="_All_") printf("<td>" . t('Genre') . "</td>\n"); else printf("<td>" . t('Genre (filtered)') . "</br>%s</td>",htmlspecialchars($filterGenre)); printf("</tr>"); } function print_footer() { printf("</table>\n"); printf("<table class=\"musicTable\" width=\"100%%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n"); $this->printNavBar(); printf("</form>"); require 'modules/_shared/tmpl/'.tmpl.'/footer.php'; } } |
Page 1 of 1 | All times are UTC - 6 hours |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |