ACC SHELL

Path : /srv/www/vhosts/unitedsolution/admin/class/
File Upload :
Current File : /srv/www/vhosts/unitedsolution/admin/class/product.php

<?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&amp;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&amp;b=up&amp;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&amp;b=down&amp;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&amp;b=view&amp;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&amp;b=delete&amp;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&amp;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&amp;b=up&amp;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&amp;b=down&amp;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&amp;b=view&amp;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&amp;b=delete&amp;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