This repository has been archived on 2025-02-01. You can view files and clone it, but cannot push or open issues or pull requests.
accm-website/includes/tournaments/Category.inc.php
2010-08-14 22:32:09 +02:00

99 lines
2.3 KiB
PHP

<?php
include_once './includes/database/MySQLDatabase.inc.php';
/**
* This class represents a category.
*
* @author Thomas Schwery <thomas.schwery@epfl.ch>
*/
class Category {
private $identifier;
private $name;
private $needSaving;
public static function Get($identifier) {
$newCategory = new Category($identifier);
$sql = "SELECT * FROM categories WHERE identifier = $identifier LIMIT 1;";
$result = MySQLDatabase::getInstance()->runRequest($sql);
$result = $result[0];
if (!$result) {
return false;
}
$newCategory->name = $result['name'];
$newCategory->needSaving = false;
return $newCategory;
}
public static function Create($name) {
$name = InputSanitizer::Sanitize($name);
$sql = "INSERT INTO `categories` (`identifier`, `name`)
VALUES (NULL, '$name');";
$result = MySQLDatabase::getInstance()->runOperation($sql);
$sql = "SELECT identifier FROM categories WHERE name = $name LIMIT 1;";
$result = $database->runRequest($sql);
$identifier = $result[0]['identifier'];
$newCategory = Category::Get($identifier);
return $newCategory;
}
public static function Remove($identifier) {
$sql = "DELETE FROM `categories` WHERE `identifier` = $identifier;";
$result = MySQLDatabase::getInstance()->runOperation($sql);
$sql = "DELETE FROM `tournamentsEntries` WHERE `categoryId` = $identifier;";
$result += MySQLDatabase::getInstance()->runOperation($sql);
return $result;
}
private function __construct($identifier) {
$this->identifier = $identifier;
}
public function __destruct() {
if ($this->needSaving) {
$this->save();
}
}
private function save() {
$sql = "UPDATE `categories` SET
`name` = '$this->name'
WHERE `identifier` = $this->identifier;";
$result = MySQLDatabase::getInstance()->runOperation($sql);
}
public function getIdentifier() {
return $this->identifier;
}
public function getName() {
return $this->name;
}
public function setContent($name) {
$this->name = $name;
$this->needSaving = true;
}
}
?>