<?php
include("./includes/errors.inc.php");
include("./classes/baseclass/php");
/**
* Klasa błędów konstruktora klasy Forum
*
*/
class ForumException extends Exception {};
/**
* Klasa obsługi forum
**/
class Forum extends BaseClass {
/**
* @var integer
* @access private
* Identyfikator forum
*/
private $forum_id = -1;
/**
* @var array
* @access private
* Lista moderatorów forum
*/
private $moderators = array(); /**
* @var integer
* @access private
* Założyciel forum
*/
private $owner_id = -1; // założyciel forum
/**#@+
* @var string
* @access private
*/
/**
* Tytuł (nazwa) forum
*/
private $title = "";
/**
* Opis forum
*/
private $description = "";
/**
* Ilość postów umieszczonych na forum
*/
private $forum_posts = "";
/**
* Ilość tematów umieszczona na forum
*/
private $forum_topics = "";
/**
* Słowa kluczowe potrzebne do kategoryzowania forów
*/
private $key_words = "";
/**#@-*/
/**
* Konstruktor
*
* Ustawienie obiektu połączenia z bazą danych, inicjalizuje wartości początkowe
prywatnych pól wartościami domyślnymi
*
* @param int $forum_id Identyfikuje forum
* @param string $title Zawiera tytuł forum
* @param int $owner_id Identyfikuje właściciela forum
* @access public
* @throws ForumException
**/
public function __construct(int $forum_id, string $title, int $owner_id) {
if (empty($forum_id)) throw
new ForumException
(CFE_EMPTY_FORUM_ID
); elseif (empty($title)) throw
new ForumException
(CFE_EMPTY_TITLE
); elseif (empty($owner_id)) throw
new Forum
(CFE_EMPTY_OWNER_ID
); else {
$this->description = "";
$this->forum_id = $forum_id;
$this->forum_posts = -1;
$this->forum_topics = -1;
$this->key_words = "";
$this->moderators = array(); $this->owner_id = $owner_id;
$this->title = $title;
}
}
/**
* Przypisuje identyfikator forum
*
* @access public
* @param id Wartość przypisywana identyfikatora
* @return true
* @throws IllegalDataException
**/
public function setForumId($id){
#sprawdz czy wartość zmiennej nie jest pusta oraz czy jest typu integer
if (empty($id)) throw
new IllegalDataException
(SVE_EMPTY_FORUM_ID
); elseif (!is_int($id)) throw
new IllegalDataException
(ITE_INTEGER
); else {
#gdy spełnione warunki zapisz zmienna
$this->forum_id = $id;
return true;
}
}
/**
* Przypisuje właściela do forum
*
* @access public
* @param id id właścieciela forum
* @return true
* @throws IllegalDataException
**/
public function setOwnerId($id){
#sprawdz czy wartość zmiennej nie jest pusta oraz czy jest typu integer
if (empty($id)) throw
new IllegalDataException
(SVE_EMPTY_OWNER_ID
); elseif (!is_int($id)) throw
new IllegalDataException
(ITE_INTEGER
); else {
#gdy spełnione warunki zapisz zmienna
$this->owner_id = $id;
return true;
}
}
/**
* Ustawia tytuł (nazwę) forum
*
* @access public
* @param value Nowo nadawany tytuł forum
* @return true
* @throws IllegalDataException
**/
public function setTitle($value){
#sprawdz czy wartość zmiennej nie jest pusta oraz czy jest typu integer
if (empty($value)) throw
new IllegalDataException
(SVE_EMPTY_OWNER_ID
); elseif (!is_int($value)) throw
new IllegalDataException
(ITE_INTEGER
); else {
#gdy spełnione warunki zapisz zmienna
$this->title = $value;
return true;
}
}
/**
* Ustawia opis forum
*
* @access public
* @param value Nowo nadawany opis forum
**/
public function setDescription($value=""){
$this->description = $value;
}
/**
* Ustawia aktualną ilość postów znajdujących się na forum
*
* @access public
* @param value Ilość aktualnych postów na forum
**/
public function setForumPostNum($value=""){
$this->forum_posts = $value;
}
/**
* Zwiększa o jeden aktualna ilość postów
*
* @access public
**/
public function incForumPostNum(){
$this->forum_posts++;
}
/**
* Zmniejsza o jeden aktualna ilość postów
*
* @access public
**/
public function decForumPostNum(){
#zabezpieczenie przed tym by nie zmieniać liczy postów na ujemną
if ($this->forum_posts != 0) $this->forum_posts--;
}
/**
* Ustawia aktualną ilość wątków znajdujących się na forum
*
* @access public
* @param value Ilość aktualnych wątków na forum
**/
public function setForumTopicNum($value=""){
$this->forum_topics = $value;
}
/**
* Zwiększa o jeden aktualna ilość wątków (tematów)
*
* @access public
**/
public function incForumTopicNum(){
$this->forum_topics++;
}
/**
* Zmniejsza o jeden aktualna ilość wątków (tematów)
*
* @access public
**/
public function decForumTopicNum(){
#zabezpieczenie przed tym by nie zmieniać liczy postów na ujemną
if ($this->forum_topics != 0) $this->forum_topics--;
}
/**
* Tworzy forum
*
* @access public
* @param id Identyfikator forum
* @param owner_id iIdentyfikator moderatora forum (
* @throws IllegalDataException
**/
public function createForumSQL($id, $owner_id){
if (empty($id)) throw
new IllegalDataException
(CFE_EMPTY_FORUM_ID
); elseif (empty($owner_id)) throw
new IllegalDataException
(CFE_EMPTY_OWNER_ID
); elseif (!is_int($id)) throw
new IllegalDataException
(ITE_INTEGER
); elseif (!is_int($owner_id)) throw
new IllegalDataException
(ITE_INTEGER
); else {
$this->setSql("INSERT INTO rbx_forums"
." (id_forums, title, description, owner_id, forum_posts, forum_topics, key_wor
ds)"
." VALUES (".$id.", ".$this->title.", ".$this->description.","
." ".$this->owner_id.", ".$this->forum_posts.", ".$this->forum_topics.", ".$this->key_words.")");
$this->doSQL();
}
}
/**
* Uaktualnia dane o forum
*
* @access public
* @param $id Identyfikator forum
* @throws IllegalDataException
**/
public function updateForumSQL($id) {
#sprawdz czy ustawiony jest id forum który będzie aktualizowany
if (empty($this->forum_id) && empty($id)) throw
new IllegalDataException
(CFE_EMPTY_FORUM_ID
); else {
if (empty($this->forum_id)) $newid=$id; else $newid=$this->forum_id; $this->setSql("UPDATE rbx_forums"
." SET"
." title = ".$this->title.","
." description = ".$this->description.","
." owner_id = ".$this->owner_id.","
." forum_posts = ".$this->forum_posts.","
." forum_topics = ".$this->forum_topics.","
." key_words = ".$this->key_words.","
." WHERE id_forums = ".$newid
." LIMIT 1");
$this->doSQL();
}
}
/**
* Usuwa forum na którym aktualnie operujemy
*
* @access public
* @throws SQLException
* @throws IllegalDataException
**/
public function deleteCurrentForumSQL(){
if (empty($this->forum_id)) throw
new IllegalDataException
(CFE_EMPTY_FORUM_ID
); else {
$this->setSql("delete from rbx_forums"
."WHERE id_forums=".$this->forum_id);
$this->doSQL();
}
}
/**
* Usuwa forum
*
* @access public
* @param id Identyfikator forum do usunięcia
* @throws SQLException
* @throws IllegalDataException
**/
public function deleteForumSQL($id){
if (empty($id)) throw
new IllegalDataException
(CFE_EMPTY_FORUM_ID
); else {
$this->setSql("delete from rbx_forums"
."WHERE id_forums=".$id);
$this->doSQL();
}
}
/**
* Zwraca identyfikator forum
*
* @return forum_id identyfikator forum
*/
public function getForumId(){
return $this->forum_id;
}
/**
* Zwraca identyfikator właściciela forum
*
* @return owner_id
*/
/**
* Zwraca identyfialtor właściciela forum
*
* @return owner_id
*/
public function getOwnerId(){
return $this->owner_id;
}
/**
* Zwraca tyttuł forum
*
* @return title
*/
public function getTitle(){
return $this->title;
}
/**
* Zwraca opis forum
*
* @return description
*/
public function getDescription(){
return $this->description;
}
/**
* Zwraca ilość postów na forum
*
* @return forum_posts
*/
public function getForumPostNum(){
return $this->forum_posts;
}
/**
* Zwraca ilość tematów na forum
*
* @return forum_topics
*/
public function getForumTopicNum(){
return $this->forum_topics;
}
/**
* @todo public function addModerator($id); //dodawanie moderetora
* @todo public function deleteModerator($id); //usuwanie moderatora
* @todo public function getModeratorList(); //zwracanie listy moderatorów
* @todo public function getKeyWords(); //zwraca listę słów kluczowych
* @todo public function setKeyWords($array); //dodawanie słów kluczowych
* @todo public function deleteKeyWords($key); //usuwanie jednego ze słów kluczowych
* @todo public function clearKeyWords(); //usuwa wszystkie słowa kluczowe
* @todo public function clearModeratorList(); //usuwa wszystkich moderatorów
* @todo wymyślić sposób na imlementację usuwania subforum, gdy usuwane jest for
um główne
*/
}
?>