ACC SHELL
<?php
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
//trida starajici se o manipulaci s kategoriema
abstract class categories{
//public abstract $table;//tabulka prislusne kategorie
abstract function delete($id);//metoda pro vymazani kategorie a jejiho obsahu
//begin privatni vlastnosti tridy
protected $id=NULL;//pole id vybranych kategorii
protected $name=NULL;//pole nazvu vybranych kategorii
protected $pos=NULL;//pole pozic vybranych kategorii
protected $visible=NULL;//pole indikujici viditelnost jednotlivych kategorii
protected $msg=NULL;//potvrzeni uspesnosti akce s kategoriemi
//end privatni vlastnosti tridy
//start pristup k privatnim vlastnostem
public function getId($i){
return $this->id[$i];
}
public function getName($i){
return $this->name[$i];
}
public function getPos($i){
return $this->pos[$i];
}
public function getVisible($i){
return $this->visible[$i];
}
public function getMsg(){
return $this->msg;
}
//end pristup k privatnim vlastnostem
//zmeni viditelnost pro kategorii o danem id v dane tabulce
public function view_change($id){
//zjisti zda dana kategorie je viditelna
$query = "SELECT visible FROM ".DBPREFIX.$this->table." WHERE id = '$id'";
$sent = mysql_query($query);
$data = mysql_fetch_object($sent);
//begin zmena viditelnosti
if($data->visible == 1){
$change = 0;
}
else{
$change = 1;
}
$query = "UPDATE ".DBPREFIX.$this->table." SET visible = '$change' WHERE id = '$id'";
mysql_query($query);
//end zmena viditelnosti
}
//prida novou kategorii s nazvem $name do databaze
//naplni privatni vlastnost msg o uspesnosti akce
//vraci true nebo false podle, toho zda byla kategorie pridana do databaze
public function add($name, $viditelnost){
if(!empty($name)){//je-li vyplneny nazev kategorie
$name = addslashes($name);
if(!$viditelnost=='TRUE'){
$viditelnost='FALSE';
}
if(!$this->existName($name)){//neexistuje-li kategorie s timto nazvem
$pos = $this->getMaxPos()+1;//naplni promenou pos nejvyssi pozici kategorie zvecenou o 1
//vklada kategorii do databaze
$query = "INSERT INTO ".DBPREFIX.$this->table." (name,pos,visible) VALUES('$name','$pos',$viditelnost)";
if(mysql_query($query)){//byla-li kategorie uspesne vlozena
$this->msg = CATEGORY_CERATED;
return TRUE;
}
else{//nebyla-li kategorie uspesne vlozena
$this->msg = SQL_ERROR.mysql_error();
return FALSE;
}
}
else{//existuje-li jiz tento nazev kategorie
$this->msg = CATEGORY_NAME_EXIST;
return FALSE;
}
}
else{//neni vyplneno jmeno kategorie
$this->msg = FORM_CATEGORY_EMPTY;
return FALSE;
}
}
//vraci pocet prvku pole id(pocet kategorii nactenych v teto vlastnosti tridy)
public function getNumCategory(){
return count($this->id);
}
//odstrani vlastnosi kategorii
private function unsetCategory(){
unset($this->id);
unset($this->name);
unset($this->pos);
unset($this->visible);
}
//naplni vlastnosti tridy informacemi o dane kategorii s danym id
public function selectOneCategory($id, $table){
$query = "SELECT * FROM ".DBPREFIX.$this->table." WHERE id = '$id'";
$sent = mysql_query($query);
$this->setCategory($sent);
}
//nalezne vsechny kategorie a
//naplni vsechny prislusne vlastnosti tridy
public function selectCategory(){
$this->unsetCategory();//odstrani vlastnosti kategorii
$query = "SELECT * FROM ".DBPREFIX.$this->table." ORDER BY pos ASC";
$sent = mysql_query($query);
$this->setCategory($sent);//naplni vlastnosti tridy pro nalezene kategorie
}
//naplni vlastnosti tridy pro kategorii
private function setCategory($sent){
$this->unsetCategory();
while($data = mysql_fetch_object($sent)){
$this->id[] = $data->id;
$this->name[] = stripslashes($data->name);
$this->pos[] = $data->pos;
$this->visible[]=$data->visible;
}
}
//vraci true, pokud jiz kategorie s timto jmenem existuje
//jinak vraci false
//je-li zadan i druhy parametr, tak do prohledavani neni zahrnuta kategorie s danym id
public function existName($name,$id=-1){
if ($id!=-1){
$query = "SELECT COUNT(*) AS pocet FROM ".DBPREFIX.$this->table." WHERE name = '$name' AND id != '$id'";
}
else{
$query = "SELECT COUNT(*) AS pocet FROM ".DBPREFIX.$this->table." WHERE name = '$name'";
}
$sent = mysql_query($query);
$data = mysql_fetch_object($sent);
if ($data->pocet > 0){
return TRUE;
}
return FALSE;
}
//vraci maximalni hodnotu pos v tabulce kategorii
public function getMaxPos(){
$query = "SELECT MAX(pos) AS max_pos FROM ".DBPREFIX.$this->table;
$sent = mysql_query($query);
$data = mysql_fetch_object($sent);
return $data->max_pos;
}
//presune kategorii o danem id o jednu pozici vys nebo niz podle parametru $par
function upDown($id,$par){
//nalezne aktualni pozici pro kategorii o danem id
$query = "SELECT pos FROM ".DBPREFIX.$this->table." WHERE id = '$id'";
$sent = mysql_query($query);
$data = mysql_fetch_object($sent);
$actual_pos = $data->pos;
if($par == 'up'){//presun vys
$new_pos = $actual_pos - 1;
}
else{//presun niz
$new_pos = $actual_pos + 1;
}
//udava pocet kategorii na nove pozici
$query2 = "SELECT COUNT(*) AS pocet FROM ".DBPREFIX.$this->table." WHERE pos = '$new_pos'";
$sent2 = mysql_query($query2);
$data2 = mysql_fetch_object($sent2);
if($data2->pocet != 0){//existuje na nove pozici nejaka kategorie
//prehozeni pozic v databazi
$query3 = "UPDATE ".DBPREFIX.$this->table." SET pos = '$actual_pos' WHERE pos = '$new_pos'";
mysql_query($query3);
$query4 = "UPDATE ".DBPREFIX.$this->table." SET pos = '$new_pos' WHERE id = '$id'";
mysql_query($query4);
}
}
//edituje vybranou kategorii o id=$id v databazi,
//vraci true(false)-byla kategorie zmenena?
//naplni privatni vlastnost msg o uspesnosti akce
public function edit($id, $name){
if(!empty($name)){//je-li nazev vyplnen
$name = addslashes($name);
if(!$this->existName($name,$id)){//neexistuje-li jiz kategorie s takovym nazvem, tak ho edituje
$query = "UPDATE ".DBPREFIX.$this->table." SET name = '$name' WHERE id = '$id'";
if(mysql_query($query)){//editace probehla uspesne
$this->msg = CATEGORY_EDITED;
}
else{//chyba nepodarilo se zmenit nazev
$this->msg = SQL_ERROR.mysql_error();
}
}
else{//kategorie s timto nazvem uz existuje
$this->msg = CATEGORY_NAME_EXIST;
}
}
else{//neni-li nazev vyplnen
$this->msg = FORM_CATEGORY_EMPTY;
}
}
}
?>
ACC SHELL 2018