Location: PHPKode > scripts > MP3 Jukebox > mp3-jukebox/class.mp3_filelist.php
Copyright (C) 2005 Ondrej Maly <hide@address.com>

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.

You can found more information about GPL licence at:

contact me: hide@address.com

/* POD Documentation


=for html
<p>This class provides some methods for handling playlists when setting up online radio. 
It's a helper class for <a href='mp3_radio.html'>mp3_radio</a>.</p>



class mp3_filelist {

/* POD Documentation

DOGMA (Constants and Variables)

(string) mp3_filelist::MP3_DIR

The name of the directory, where the music in mp3 format resides.

(string) mp3_filelist::LB

The format of the line-break. Could be "\r\n" for win32, "\n" for Unix/Linux or "\r" (Mac).

(string) mp3_filelist::MP3_LIST

The name of the playlist file.

(string) mp3_filelist::MP3_LAST

The name of the file storing last served filename.

(array) mp3_filelist::raw_filelist

List of all the files residing in the mp3_filelist::MP3_DIR directory when the request came.

(array) mp3_filelist::old_filelist

Old filelist

(array) mp3_filelist::filelist

New filelist. See the description of the mp3_filelist::create_new_filelist method



    // Nazev adresare s muzikou
    $MP3_DIR  = "mp3",
    // Format ukonceni radku
    $LB       = "\r\n",
    //$LB       = "\n",
    //$LB       = "\r",
    // Playlist
    $MP3_LIST = "mp3_list.dat",
    // Naposledy poslany soubor
    $MP3_LAST = "last.dat",

    // Seznam souboru aktualne se nachazejicich v adresari s muzikou
    // Stary seznam
    // Prave platny seznam
/* POD Documentation

RITUAL (Methods)


/* POD Documentation

(void) mp3_filelist::create_raw_filelist()

Creates a list of all music files currently in the mp3_filelist::MP3_DIR directory. Now working
only with the mp3 files.


function create_raw_filelist() {
    if ( ! $dir = @dir ( "./".$this->MP3_DIR))
        return false;
    while ( $fname = $dir->read()) {

        preg_match ("/^(.+)\.(\w+)$/", $fname, $matches);
        list ( $fname, $name, $ext) = $matches;
        if ( in_array ( strtolower ( $ext), array ( "mp3"))) {
            $a_files[] = $fname;

    $this->raw_filelist = (array)$a_files;
    if ( is_array ( $a_files))
        return true;

/* POD Documentation

(void) mp3_filelist::create_new_filelist()

Opens old filelist from the mp3_filelist::MP3_LIST file, then compares it to the 
mp3_filelist::raw_filelist. Places the intersection at the beginning and appends 
to its end a list of files added since previous call. This creates FIFO-like
queue of mp3's. Then saves it.


function create_new_filelist() {
    if ( $fd = @fopen ( $this->MP3_LIST, "r")) {
        while ( $row = fgets ( $fd)) {
            $this->old_filelist[] = rtrim ( $row);
        fclose ( $fd);
    $_a = array_intersect ( (array)$this->old_filelist, (array)$this->raw_filelist);
    $_b = array_diff ( (array)$this->raw_filelist, $_a);
    $this->filelist = array_merge ( $_a, $_b);
    if ( $fd = @fopen ( $this->MP3_LIST, "w")) {
        fwrite ( $fd, implode ( $this->LB, $this->filelist));
        fclose ( $fd);
    if ( ! empty ( $this->filelist))
        return true;
} // class mp3_filelist
Return current item: MP3 Jukebox