222 lines
6.2 KiB
PHP
222 lines
6.2 KiB
PHP
<?php
|
|
|
|
class Song {
|
|
private $id = 0;
|
|
private $path = "";
|
|
private $song = "";
|
|
private $timesplayed = 0;
|
|
private $genre = "";
|
|
private $title = "";
|
|
private $artist = "";
|
|
private $album = "";
|
|
private $year = "";
|
|
private $length = 0;
|
|
private $artfile = "";
|
|
private $parsed = false;
|
|
|
|
public function getID() {
|
|
return intval($this->id);
|
|
}
|
|
|
|
public function getPath($flag = 0) {
|
|
switch ($flag) {
|
|
case HTMLSAFE:
|
|
return htmlspecialchars($this->path);
|
|
break;
|
|
case HTMLFORMSAFE:
|
|
return htmlspecialchars($this->path, ENT_QUOTES);
|
|
break;
|
|
default:
|
|
return $this->path;
|
|
break;
|
|
}
|
|
}
|
|
|
|
public function getSong($flag = 0) {
|
|
switch ($flag) {
|
|
case HTMLSAFE:
|
|
return htmlspecialchars($this->song);
|
|
break;
|
|
case HTMLFORMSAFE:
|
|
return htmlspecialchars($this->song, ENT_QUOTES);
|
|
break;
|
|
case NOEXT:
|
|
return htmlspecialchars(substr($this->song, 0, -4));
|
|
break;
|
|
default:
|
|
return $this->song;
|
|
break;
|
|
}
|
|
}
|
|
|
|
public function getTimesPlayed() {
|
|
return intval($this->timesplayed);
|
|
}
|
|
|
|
public function getGenre($flag = 0) {
|
|
switch ($flag) {
|
|
case HTMLSAFE:
|
|
return htmlspecialchars($this->genre);
|
|
break;
|
|
case HTMLFORMSAFE:
|
|
return htmlspecialchars($this->genre, ENT_QUOTES);
|
|
break;
|
|
default:
|
|
return $this->genre;
|
|
break;
|
|
}
|
|
}
|
|
|
|
public function getTitle($flag = 0) {
|
|
switch ($flag) {
|
|
case HTMLSAFE:
|
|
return htmlspecialchars($this->title);
|
|
break;
|
|
case HTMLFORMSAFE:
|
|
return htmlspecialchars($this->title, ENT_QUOTES);
|
|
break;
|
|
default:
|
|
return $this->title;
|
|
break;
|
|
}
|
|
}
|
|
|
|
public function getArtist($flag = 0) {
|
|
switch ($flag) {
|
|
case HTMLSAFE:
|
|
return htmlspecialchars($this->artist);
|
|
break;
|
|
case HTMLFORMSAFE:
|
|
return htmlspecialchars($this->artist, ENT_QUOTES);
|
|
break;
|
|
default:
|
|
return $this->artist;
|
|
break;
|
|
}
|
|
}
|
|
|
|
public function getAlbum($flag = 0) {
|
|
switch ($flag) {
|
|
case HTMLSAFE:
|
|
return htmlspecialchars($this->album);
|
|
break;
|
|
case HTMLFORMSAFE:
|
|
return htmlspecialchars($this->album, ENT_QUOTES);
|
|
break;
|
|
default:
|
|
return $this->album;
|
|
break;
|
|
}
|
|
}
|
|
|
|
public function getYear($flag = 0) {
|
|
switch ($flag) {
|
|
case HTMLSAFE:
|
|
return htmlspecialchars($this->year);
|
|
break;
|
|
case HTMLFORMSAFE:
|
|
return htmlspecialchars($this->year, ENT_QUOTES);
|
|
break;
|
|
default:
|
|
return $this->year;
|
|
break;
|
|
}
|
|
}
|
|
|
|
public function getLength() {
|
|
return intval($this->length);
|
|
}
|
|
|
|
public function getArtFile($flag = 0) {
|
|
global $artbygenre;
|
|
switch ($flag) {
|
|
case ARTURL:
|
|
if ( $this->artfile == "" ) {
|
|
if ( array_key_exists($this->getGenre(), $artbygenre) ) {
|
|
$ret = "img/" . $artbygenre[$this->getGenre()];
|
|
} else {
|
|
$ret = "img/no_art.jpg";
|
|
}
|
|
} else {
|
|
$ret = "art/" . $this->artfile;
|
|
}
|
|
return $ret;
|
|
break;
|
|
case HTMLSAFE:
|
|
return htmlspecialchars($this->artfile);
|
|
break;
|
|
case HTMLFORMSAFE:
|
|
return htmlspecialchars($this->artfile, ENT_QUOTES);
|
|
break;
|
|
default:
|
|
return $this->artfile;
|
|
break;
|
|
}
|
|
}
|
|
|
|
public function getParsed($flag = 0) {
|
|
switch ($flag) {
|
|
case BOOLEANDB:
|
|
return ($this->parsed) ? "true" : "false";
|
|
break;
|
|
default:
|
|
return $this->parsed;
|
|
break;
|
|
}
|
|
}
|
|
|
|
public static function getSearchList($searchfor = "" ) {
|
|
global $globaldbh;
|
|
$thelist = array();
|
|
$searchfor = trim($searchfor);
|
|
$searchfor = str_replace('%', "", $searchfor);
|
|
$terms = explode(" ", $searchfor);
|
|
$likematch = "%";
|
|
foreach ( $terms as $term ) {
|
|
$likematch .= $term . "%";
|
|
}
|
|
//$likematch = "%" . $searchfor . "%";
|
|
$searchfor = str_replace(array("'", "+", "-"), "", $searchfor);
|
|
$searchfor = "+" . preg_replace("/\s+/", " +", $searchfor);
|
|
if ( $searchfor == "" ) return $thelist;
|
|
$query = "SELECT id FROM " . SONGSTABLE . " WHERE CONCAT(path, song, artist) LIKE :likematch ORDER BY path, song LIMIT " . intval(SEARCHLIMIT);
|
|
//$query = "SELECT id FROM " . SONGSTABLE . " WHERE MATCH (song, path, artist, album, title) AGAINST (:searchfor IN BOOLEAN MODE) OR CONCAT(path, song) LIKE :likematch ORDER BY path, song LIMIT " . intval(SEARCHLIMIT);
|
|
$sth = $globaldbh->prepare($query);
|
|
$fields = array();
|
|
//$fields[':searchfor'] = $searchfor;
|
|
$fields[':likematch'] = $likematch;
|
|
$sth->execute($fields);
|
|
while ( $row = $sth->fetch() ) {
|
|
$thelist[] = new Song($row['id']);
|
|
}
|
|
return $thelist;
|
|
}
|
|
|
|
public function __construct($reqid = 0) {
|
|
global $globaldbh;
|
|
$reqid = intval($reqid);
|
|
$query = "SELECT id, path, song, timesplayed, genre, title, artist, album, year, length, artfile, parsed FROM " . SONGSTABLE . " WHERE id=:id";
|
|
$sth = $globaldbh->prepare($query);
|
|
$fields = array();
|
|
$fields[':id'] = $reqid;
|
|
$sth->execute($fields);
|
|
if ( $row = $sth->fetch() ) {
|
|
$this->id = $row['id'];
|
|
$this->path = $row['path'];
|
|
$this->song = $row['song'];
|
|
$this->timesplayed = $row['timesplayed'];
|
|
$this->genre = $row['genre'];
|
|
$this->title = $row['title'];
|
|
$this->artist = $row['artist'];
|
|
$this->album = $row['album'];
|
|
$this->year = $row['year'];
|
|
$this->length = $row['length'];
|
|
$this->artfile = $row['artfile'];
|
|
$this->parsed = ($row['path'] == 'true') ? true : false;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
?>
|