189 lines
5.3 KiB
PHP
189 lines
5.3 KiB
PHP
<?php
|
|
|
|
class Queue {
|
|
private $id = 0;
|
|
private $type = "";
|
|
private $name = "";
|
|
private $active = false;
|
|
private $length = 0;
|
|
private $songcount = 0;
|
|
|
|
public function setID($id = 0) {
|
|
if ( $id != intval($id) ) return false;
|
|
$this->id = intval($id);
|
|
return true;
|
|
}
|
|
|
|
public function getID() {
|
|
return $this->id;
|
|
}
|
|
|
|
public function setType($type = "") {
|
|
if ( !in_array($type, VALID_QUEUE_TYPES) ) return false;
|
|
$this->type = $type;
|
|
return true;
|
|
}
|
|
|
|
public function getType() {
|
|
return $this->type;
|
|
}
|
|
|
|
public function isAutomatic() {
|
|
return (($this->type == QUEUETYPE_AUTO ) ? true : false);
|
|
}
|
|
|
|
public function setName($name = "") {
|
|
$name = "" . $name;
|
|
if ( $name == "" ) return false;
|
|
$this->name = $name;
|
|
return true;
|
|
}
|
|
|
|
public function getName($flag = 0) {
|
|
switch ($flag) {
|
|
case HTMLSAFE:
|
|
return htmlspecialchars($this->name);
|
|
break;
|
|
case HTMLFORMSAFE:
|
|
return htmlspecialchars($this->name, ENT_QUOTES);
|
|
break;
|
|
default:
|
|
return $this->name;
|
|
break;
|
|
}
|
|
}
|
|
|
|
public function setActive($active = null) {
|
|
if ( is_null($active) ) return false;
|
|
if ( !is_bool($active) ) $active = ($active == "true") ? true : false;
|
|
switch ($active) {
|
|
case true:
|
|
$this->active = true;
|
|
break;
|
|
case false:
|
|
$this->active = false;
|
|
break;
|
|
default:
|
|
return false;
|
|
break;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
public function getActive($flag = 0) {
|
|
switch ($flag) {
|
|
case BOOLEANDB:
|
|
return ($this->active) ? "true" : "false";
|
|
break;
|
|
default:
|
|
return $this->active;
|
|
break;
|
|
}
|
|
}
|
|
|
|
public function getLength($format = 0, $flag = 0) {
|
|
global $globaldbh;
|
|
if ( $this->getID() == 0 ) return 0;
|
|
if ( ($this->length == 0) or ($flag == FORCE) ) {
|
|
$query = "SELECT SUM(length) AS total FROM " . QUEUECONTENTSTABLE . " AS qc LEFT JOIN " . SONGSTABLE . " AS s ON qc.songid=s.id WHERE qid=:qid";
|
|
$sth = $globaldbh->prepare($query);
|
|
$fields = array();
|
|
$fields[':qid'] = $this->getID();
|
|
$sth->execute($fields);
|
|
$length = 0;
|
|
if ( $row = $sth->fetch() ) {
|
|
$length = $row['total'];
|
|
}
|
|
$this->length = $length;
|
|
}
|
|
if ( $format == PRETTYLENGTH ) {
|
|
$hours = floor($this->length / 3600);
|
|
$minutes = floor(($this->length - ($hours * 3600)) / 60);
|
|
if ( $hours > 0 ) {
|
|
return $hours . "h:" . $minutes . "m";
|
|
} else {
|
|
return $minutes . "m";
|
|
}
|
|
} else {
|
|
return $this->length;
|
|
}
|
|
}
|
|
|
|
public function getSongCount($flag = 0) {
|
|
global $globaldbh;
|
|
if ( $this->getID() == 0 ) return 0;
|
|
if ( ($this->songcount == 0) or ($flag == FORCE) ) {
|
|
$query = "SELECT COUNT(songid) AS songcount FROM " . QUEUECONTENTSTABLE . " WHERE qid=:qid";
|
|
$sth = $globaldbh->prepare($query);
|
|
$fields = array();
|
|
$fields[':qid'] = $this->getID();
|
|
$sth->execute($fields);
|
|
$row = $sth->fetch();
|
|
$this->songcount = $row['songcount'];
|
|
}
|
|
return $this->songcount;
|
|
}
|
|
|
|
public static function changeActiveQueue($qid = 0) {
|
|
global $globaldbh;
|
|
$qid = intval($qid);
|
|
if ( $qid <= 0 ) return false;
|
|
$query = "SELECT id FROM " . QUEUESTABLE . " WHERE id=:id";
|
|
$sth = $globaldbh->prepare($query);
|
|
$fields = array();
|
|
$fields[':id'] = $qid;
|
|
$sth->execute($fields);
|
|
if ( $row = $sth->fetch() ) {
|
|
$query = "UPDATE " . QUEUESTABLE . " SET active='false'";
|
|
$sth = $globaldbh->prepare($query);
|
|
$sth->execute();
|
|
$query = "UPDATE " . QUEUESTABLE . " SET active='true' WHERE id=:id";
|
|
$sth = $globaldbh->prepare($query);
|
|
$sth->execute($fields);
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public static function getList($flag = 0) {
|
|
global $globaldbh;
|
|
$query = "SELECT id FROM " . QUEUESTABLE;
|
|
if ( $flag == AUTOQUEUES ) $query .= " WHERE type='" . QUEUETYPE_AUTO . "'";
|
|
$query .= " ORDER BY name";
|
|
$sth = $globaldbh->prepare($query);
|
|
$thelist = array();
|
|
$sth->execute();
|
|
while ( $row = $sth->fetch() ) {
|
|
$thelist[] = new Queue($row['id']);
|
|
}
|
|
return $thelist;
|
|
}
|
|
|
|
public function save() {
|
|
global $globaldbh;
|
|
$query = "INSERT INTO " . QUEUESTABLE . " (name) VALUES(:name) ON DUPLICATE KEY UPDATE name=:name";
|
|
$fields = array();
|
|
$fields[':name'] = $this->getName();
|
|
$sth = $globaldbh->prepare($query);
|
|
$sth->execute($fields);
|
|
}
|
|
|
|
public function __construct($id = 0) {
|
|
global $globaldbh;
|
|
$query = "SELECT id, type, name, active FROM " . QUEUESTABLE . " WHERE id=:id";
|
|
$fields = array();
|
|
$fields[':id'] = intval($id);
|
|
$sth = $globaldbh->prepare($query);
|
|
$sth->execute($fields);
|
|
if ( $row = $sth->fetch() ) {
|
|
$this->setID($row['id']);
|
|
$this->setType($row['type']);
|
|
$this->setName($row['name']);
|
|
$this->setActive($row['active']);
|
|
}
|
|
}
|
|
}
|
|
|
|
?>
|