ACC SHELL
<?php
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
//trida manipulujici se skolenimi
class product{
private $table='product';//nazev tabulky s informacemi pro produkty
//begin privatni vlastnosti tridy
private $id=NULL;//pole id vybranych produktu
private $name=NULL;//pole nazvu vybranych produktu
private $url=NULL;//pole url vybranych produktu
private $categoryId=NULL;//pole id kategorii vybranych produktu
private $visible=NULL;//pole indikujici viditelnost jednotlivych produktu
private $pos=NULL;//pole pozic vybranych produktu
private $msg=NULL;//potvrzeni uspesnosti akce s produktama
//end privatni vlastnosti tridy
//begin pristup k privatnim vlastnostem
public function getId($i){
return $this->id[$i];
}
public function getName($i){
return $this->name[$i];
}
public function getUrl($i){
return $this->url[$i];
}
public function getCategoryId($i){
return $this->categoryId[$i];
}
public function getVisible($i){
return $this->visible[$i];
}
public function getMsg(){
return $this->msg;
}
public function getPos($i){
return $this->pos[$i];
}
//end pristup k privatnim vlastnostem
//odstrani vlastnosti tiskopisu
public function unsetProduct(){
unset ($this->id);
unset ($this->name);
unset ($this->url);
unset ($this->categoryId);
unset ($this->visible);
}
//zobrazi vsechny produkty ve strukture jejich kategorii
public function show(){
$category = new productCategory();
$category->selectCategory();//nalezne vsechny kategorie produktu
//naplni prislusne vlastnosi instance $category informacemi o nalezenych kategoriich
echo '<div>'."\n";
//pro kazdou kategorii vytvori radek s nazvem a editacnimi tlacitky
for ($i=0;$i<$category->getNumCategory();$i++){
//nazev kategorie a odkaz na zmenu nazvu teto kategorie
echo '<div class="menu_list_page">'.
'<span class="m_name">'.
'<a href="default.php?page=product/editCategory&id_c='.$category->getId($i).'">'.stripslashes($category->getName($i)).'</a>'.
'</span>';
echo //tlacitko pro posun kategorie o jednu pozici nahoru
'<span>'.
'<a href="default.php?page=product/product&b=up&id_c='.$category->getId($i).'">'.
'<img src="img/up.gif" alt="up" border="0" />'.
'</a>'.
'</span>'.
//tlacitko pro posun kategorie o jednu pozici dolu
'<span>'.
'<a href="default.php?page=product/product&b=down&id_c='.$category->getId($i).'">'.
'<img src="img/down.gif" alt="down" border="0"/>'.
'</a>'.
'</span>'.
//obrazek s odkazem na zmenu viditelnosti kategorie
'<span>'.
'<a class="view" href="default.php?page=product/product&b=view&id_c='.$category->getId($i).'">'.
($category->getVisible($i) == 1 ? //volba obrzku(skryt x zobrazit)
'<img src="img/show.png" alt="skryt" border="0" title="Skryt" />'
:
'<img src="img/hidden.png" title="Zobrazit" alt="zobrazit" border="0" />'
).
'</a>'.
'</span>'.
//tlacitko pro smazani kategorie
'<span>'.
'<a class="delete" href="default.php?page=product/product&b=delete&id_c='.$category->getId($i).'">'.
'<img src="img/delete.jpg" alt="Smazat" border="0" title="Smazat" />'.
'</a>'.
'</span>';
echo '<div class="clear"></div>'.
'</div>'."\n";
$this->selectProducts($category->getId($i));//nalezne vsechny produkty aktualni kategorie a
//naplni jimi prislusne vlastnosi tridy
//pro kazdy produkt vytvori radek s nazvem a editacnimi tlacitky
for($j=0;$j<count($this->id);$j++){
//nazev produktu a odkaz na jeho editaci
echo '<div class="submenu_list_page">'.
'<span class="s_m_name">'.
'<a href="default.php?page=product/edit&id_p='.$this->id[$j].'">'.stripslashes($this->name[$j]).'</a>'.
'</span>'.
//tlacitko pro posun produktu o jednu pozici nahoru
'<span>'.
'<a href="default.php?page=product/product&b=up&id_p='.$this->id[$j].'">'.
'<img src="img/up.gif" alt="up" border="0" />'.
'</a>'.
'</span>'.
//tlacitko pro posun produktu o jednu pozici dolu
'<span>'.
'<a href="default.php?page=product/product&b=down&id_p='.$this->id[$j].'">'.
'<img src="img/down.gif" alt="down" border="0"/>'.
'</a>'.
'</span>'.
//obrazek s odkazem na zmenu viditelnosti produktu
'<span>'.
'<a class="view" href="default.php?page=product/product&b=view&id_p='.$this->id[$j].'">'.
($this->visible[$j] == 1 ? //volba obrzku(skryt x zobrazit)
'<img src="img/show.png" alt="skryt" border="0" title="Skryt" />'
:
'<img src="img/hidden.png" title="Zobrazit" alt="zobrazit" border="0" />'
).
'</a>'.
'</span>'.
//tlacitko pro smazani produktu
'<span>'.
'<a class="delete" href="default.php?page=product/product&b=delete&id_p='.$this->id[$j].'">'.
'<img src="img/delete.jpg" alt="Smazat" border="0" title="Smazat" />'.
'</a>'.
'</span>';
echo '<div class="clear"></div>'.
'</div>'."\n";
}
}
echo '</div>'."\n";
}
//nalezne vsechny produkty patrici kategorii s danym id a
//naplni prislusne vlastnosi tridy
public function selectProducts($id_category){
$this->unsetProduct();//odstrani privatni vlastnosti
$query = "SELECT * FROM ".DBPREFIX.$this->table." WHERE category_id = '".$id_category."' ORDER BY pos";
$sent = mysql_query($query);
$this->setProduct($sent);//naplni privatni vlastnosti tridy
}
//presune produkt o danem id o jednu pozici vys nebo niz podle parametru $par
function upDown($id,$par){
//nalezne aktualni pozici a kategorii pro produkt o danem id
$query = "SELECT pos, category_id 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' AND category_id = '$data->category_id'";
$sent2 = mysql_query($query2);
$data2 = mysql_fetch_object($sent2);
if($data2->pocet != 0){//existuje na nove pozici nejaky produkt
//prehozeni pozic v databazi
$query3 = "UPDATE ".DBPREFIX.$this->table." SET pos = '$actual_pos' WHERE pos = '$new_pos' AND category_id = '$data->category_id'";
mysql_query($query3);
$query4 = "UPDATE ".DBPREFIX.$this->table." SET pos = '$new_pos' WHERE id = '$id'";
mysql_query($query4);
}
}
//naplni privatni vlastnosti tridy
public function setProduct($sent){
$this->unsetProduct();
while($data = mysql_fetch_object($sent)){
$this->id[] = $data->id;
$this->name[] = stripslashes($data->name);
$this->url[] = $data->url;
$this->pos[] = $data->pos;
$this->categoryId[]=$data->category_id;
$this->visible[]=$data->visible;
}
}
//prida novy produkt s nazvem $name do databaze
//naplni privatni vlastnost msg o uspesnosti akce
//vraci true nebo false podle, toho zda bylo skoleni uspesne pridano do databaze
public function add($name, $url, $id_category, $visible){
if(!empty($name)){//je-li vyplneny nazev produktu
$name = addslashes($name);
if(!$visible=='TRUE'){
$visible='FALSE';
}
if(!$this->existName($name)){//neexistuje-li produkt s timto nazvem
$pos = $this->getMaxPos($id_category)+1;//naplni promenou pos nejvyssi pozici produktu v dane kategorii zvecenou o 1
//vklada produkt do databaze
$query = "INSERT INTO ".DBPREFIX.$this->table." (name, url, pos, category_id, visible) VALUES('$name', '$url', '$pos', '$id_category',$visible)";
if(mysql_query($query)){//byl-li produkt uspesne vlozen
$this->msg = PRODUCT_ADDED;
return TRUE;
}
else{//nebyl-li produkt uspesne vlozen
$this->msg = SQL_ERROR.mysql_error();
return FALSE;
}
}
else{//existuje-li jiz tento nazev produktu
$this->msg = PRODUCT_NAME_EXIST;
return FALSE;
}
}
else{//neni vyplnen nazev produktu
$this->msg = FORM_PRODUCT_EMPTY;
return FALSE;
}
}
//vraci true, pokud jiz produkt s timto jmenem existuje
//jinak vraci false
//je-li zadan i druhy parametr, tak do prohledavani neni zahrnut produkt 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;
}
//vymaze produkty nactene v privatnich vlastnostech
//naplni privatni vlastnost msg o uspesnosti akce
public function deleteAll(){
for($i=0;$i<count($this->id);$i++){
//vymaze dany produkt
$query = "DELETE FROM ".DBPREFIX.$this->table." WHERE id = '".$this->id[$i]."'";
if(mysql_query($query)){//vymazani probehlo uspesne
$this->msg = PRODUCT_DELETED;
}
else{//vymazani neprobehlo
$this->msg = SQL_ERROR.mysql_error();
return;
}
}
}
//vymaze produkt s danym id
//naplni privatni vlastnost msg o uspesnosti akce
public function delete($id){
$this->selectProduct($id);//nalezne info o produktu s danym id a ulozi je do vlastnosti tridy
//vymaze dany produkt
$query = "DELETE FROM ".DBPREFIX.$this->table." WHERE id = '$id'";
if(mysql_query($query)){//vymazani probehlo uspesne
$this->msg = PRODUCT_DELETED;
//posune vsechny produkty ze stejne kategorie a vyssi pozici o jednu pozici niz
$query2 = "UPDATE ".DBPREFIX.$this->table." SET pos = pos - 1 WHERE pos > '".$this->pos[0]."' AND category_id = '".$this->categoryId[0]."'";
mysql_query($query2);
}
else{//vymazani neprobehlo
$this->msg = SQL_ERROR.mysql_error();
}
}
//naplni vlastnosti tridy informacemi o danem skoleni s danym id
public function selectProduct($id){
$query = "SELECT * FROM ".DBPREFIX.$this->table." WHERE id = '$id'";
$sent = mysql_query($query);
$this->setProduct($sent);
}
//zmeni viditelnost pro produktu o danem id
function view_change($id){
//zjisti zda dany produkt je viditelny
$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
}
//edituje vybrany produkt o id=$id v databazi,
//vraci true(false)-byl produkt zmenen?
//naplni privatni vlastnost msg o uspesnosti akce
public function edit($id, $name,$url,$idCategory){
$oldProduct = new product();
$oldProduct->selectProduct($id);//naplneni instance starymi informacemi o produktu
if(!empty($name)){//je-li nazev vyplnen
$name = addslashes($name);
if(!$this->existName($name,$id)){//neexistuje-li jiz produkt s takovym nazvem, tak ho edituje
if ($idCategory!=$oldProduct->getCategoryId(0)){//je-li pozadavek na zmenu kategorie
$newpos = $this->getMaxPos($idCategory)+1;//naplni promenou newpos nejvyssi pozici produktu v dane kategorii zvecenou o 1
//posune vsechny produkty ze stejne kategorie a vyssi pozici o jednu pozici niz
$query2 = "UPDATE ".DBPREFIX.$this->table." SET pos = pos - 1 WHERE pos > '".$oldProduct->getPos(0)."' AND category_id = '".$oldProduct->getCategoryId(0)."'";
mysql_query($query2);
}
else {
$newpos=$oldProduct->getPos(0);
}
$query = "UPDATE ".DBPREFIX.$this->table." SET name = '$name', url = '$url', category_id='$idCategory', pos='$newpos' WHERE id = '$id'";
if(mysql_query($query)){//editace probehla uspesne
$this->msg = PRODUCT_EDITED;
}
else{//chyba nepodarilo se editovat
$this->msg = SQL_ERROR.mysql_error();
}
}
else{//produkt s timto nazvem uz existuje
$this->msg = PRODUCT_NAME_EXIST;
}
}
else{//neni-li nazev vyplnen
$this->msg = FORM_PRODUCT_EMPTY;
}
}
//vraci maximalni hodnotu pos produktu v dane kategorii $id_category
public function getMaxPos($id_category){
$query = "SELECT MAX(pos) AS max_pos FROM ".DBPREFIX.$this->table." WHERE category_id = '$id_category'";
$sent = mysql_query($query);
$data = mysql_fetch_object($sent);
return $data->max_pos;
}
}
?>
ACC SHELL 2018