Files
bm/public_html/public/cms/modules/ticketroom.class.php
2025-09-24 13:26:28 +02:00

181 lines
4.7 KiB
PHP

<?php
/** Ticket Room
* Seat arrangement
*
* @version 1.9.0
* @since 2007-02-16
* @author martin lenzelbauer
*
*/
class TicketRoom extends TicketObject{
var $type;
var $xml; //xml encoded seat arrangement
/** C'tor
*/
//------------------------------------------------
function TicketRoom($id, $parent){
//------------------------------------------------
parent::TicketObject($id, $parent);
$this->name = "[unbenannter Sitzplan]";
$this->type = 'seat';
$this->xml = "";
$this->buttonDelete = true;
}
/** @see CmsObject::load()
*/
//-----------------------------------------------
function load($path=array()){
//-----------------------------------------------
parent::load($path);
if(!$this->classId){
return;
}
$query = sprintf("SELECT * FROM bruckm_ticketroom WHERE id = %d", $this->classId);
$result = dbQuery($query);
$line = mysqli_fetch_array($result, MYSQLI_ASSOC);
$this->xml = $line['xml'];
$this->type = $line['type'];
}
/** @see TicketObject::doSave()
*/
//----------------------------------------------
function doSave(){
//----------------------------------------------
$query = sprintf("UPDATE bruckm_ticketroom SET xml = %s, type = %s WHERE id = %d",
sqlstring($this->xml),
sqlstring($this->type),
sqlnum($this->classId));
dbQuery($query);
parent::doSave();
}
/** @see TicketObject::doCreate()
*/
//----------------------------------------------
function doCreate(){
//----------------------------------------------
$query = sprintf("INSERT INTO bruckm_ticketroom (xml) VALUES (%s)",
sqlstring($this->xml));
dbQuery($query);
$this->classId = mysql_insert_id();
parent::doCreate();
}
/** @see TicketObject::doDelete()
*/
//-----------------------------------------------
function doDelete(){
//-----------------------------------------------
parent::doDelete();
$query = sprintf("DELETE FROM bruckm_ticketroom WHERE id = %d LIMIT 1", $this->classId);
dbQuery($query);
}
/** @see TicketObject::canBeDeleted()
*/
//-----------------------------------------------
function canBeDeleted(){
//-----------------------------------------------
if($this->isUsed()){
$this->addError("Der Sitzplan kann nicht gelöscht werden, da er in einer oder mehreren aktuellen Veranstaltungen verwendet wird!");
return false;
}
return true;
}
/** @see TicketObject::install()
*/
//-----------------------------------------------
function install(){
//-----------------------------------------------
$query = sprintf("CREATE TABLE IF NOT EXISTS bruckm_ticketroom (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
xml TEXT NOT NULL DEFAULT '',
PRIMARY KEY (id)
)");
dbQuery($query);
}
/** @see CmsObject::update()
*/
//-----------------------------------------------
function update(){
//-----------------------------------------------
parent::update();
if($this->xml != $_POST['xml']){
if($this->isUsed()){
$this->addError("Der Sitzplan kann nicht geändert werden, da er in einer oder mehreren aktuellen Veranstaltungen verwendet wird!");
}
else{
$this->xml = urldecode($_POST['xml']);
//$this->type = urldecode($_POST['type']);
}
}
}
/** @see CmsObject::doPrintClassContent()
*/
//-----------------------------------------------
function doPrintClassContent(){
//-----------------------------------------------
$t = new Template(CMS_TEMPLATE_DIR."ticketroom.html");
$t->setVar("NAME", htmlspecialchars($this->name));
//$t->setVar("TYPE", htmlspecialchars($this->type));
$t->setVar("XML", urlencode($this->xml));
return $t->toString();
}
/** @see Element::getCssClass()
*/
//------------------------------------------------
function getCssClass(){
//------------------------------------------------
return "itemTicketRoom";
}
// === ADDITIONAL METHODS ============================================================= //
/** checks if the seat arrangement is used for a current event
* @return true if the seat arrangement is used
*/
//-----------------------------------------------
function isUsed(){
//-----------------------------------------------
$query = sprintf("SELECT id FROM bruckm_ticketdate WHERE `date` > NOW() AND room = %s LIMIT 1",
sqlstring($this->id));
$result = dbQuery($query);
if(mysql_num_rows($result) > 0){
return true;
}
return false;
}
/** returns the xml room description
*/
//----------------------------------------
function toXml(){
//----------------------------------------
return $this->xml;
}
};
?>