ACC SHELL

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

<?php
/* 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

//trida starajici se o manipulaci s tiskopisama
class tiskopisy{
//begin privatni vlastnosti tridy
private $id=NULL;//pole id vybranych tiskopisu
private $name=NULL;//pole nazvu vybranych tiskopisu
private $pos=NULL;//pole pozic vybranych tiskopisu
private $categoryId=NULL;//pole id kategorii vybranych tiskopisu
private $fileName=NULL;//pole nazvu souboru vybranych tiskopisu
private $visible=NULL;//pole indikujici viditelnost jednotlivych tiskopisu
private $msg=NULL;//potvrzeni uspesnosti akce s tiskopisama
//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 getCategoryId($i){
    return $this->categoryId[$i];
}

public function getFileName($i){
    return $this->fileName[$i];
}

public function getVisible($i){
    return $this->visible[$i];
}

public function getMsg(){
    return $this->msg;
}

//end pristup k privatnim vlastnostem

//vraci pocet prvku pole id(pocet tiskopisu nactenych v teto vlastnosti tridy)
public function getNumForms(){
    return count($this->id);
}

//odstrani vlastnosti tiskopisu
public function unsetForms(){

    unset($this->id);
    unset($this->name);
    unset($this->pos);
    unset($this->categoryId);
    unset($this->fileName);
    unset($this->visible);

}

//zobrazi vsechny tiskopisy ve strukture jejich kategorii
public function show(){

    $category = new tiskopisy_kategorie();

    $category->selectCategory();//nalezne vsechny kategorie tiskopisu
                                //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=tiskopisy/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=tiskopisy/tiskopisy&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=tiskopisy/tiskopisy&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=tiskopisy/tiskopisy&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=tiskopisy/tiskopisy&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->selectForms($category->getId($i));//nalezne vsechny tiskopisy aktualni kategorie a
                                                           //naplni jimi prislusne vlastnosi tridy
        //pro kazdy tiskopis vytvori radek s nazvem a editacnimi tlacitky
        for($j=0;$j<count($this->id);$j++){
                    //nazev tiskopisu a odkaz na jeho editaci
            echo    '<div class="submenu_list_page">'.
                        '<span class="s_m_name">'.
                            '<a href="default.php?page=tiskopisy/edit&amp;id_t='.$this->id[$j].'">'.stripslashes($this->name[$j]).'</a>'.
                        '</span>';

                        //tlacitko pro posun tiskopisu o jednu pozici nahoru
            echo        '<span>'.
                            '<a href="default.php?page=tiskopisy/tiskopisy&amp;b=up&amp;id_t='.$this->id[$j].'">'.
                                '<img src="img/up.gif" alt="up" border="0" />'.
                            '</a>'.
			'</span>'.

                        //tlacitko pro posun tiskopisu o jednu pozici dolu
			'<span>'.
                            '<a href="default.php?page=tiskopisy/tiskopisy&amp;b=down&amp;id_t='.$this->id[$j].'">'.
				'<img src="img/down.gif" alt="down" border="0"/>'.
                            '</a>'.
			'</span>'.

                        //obrazek s odkazem na zmenu viditelnosti tiskopisu
                        '<span>'.
				'<a class="view" href="default.php?page=tiskopisy/tiskopisy&amp;b=view&amp;id_t='.$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 tiskopisu
                            '<span>'.
                                '<a class="delete" href="default.php?page=tiskopisy/tiskopisy&amp;b=delete&amp;id_t='.$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 tiskopisy patridci kategorii s danym id a
//naplni prislusne vlastnosi tridy
public function selectForms($id_category){

    $this->unsetForms();//odstrani privatni vlastnosti

    $query = "SELECT * FROM ".DBPREFIX."tiskopisy WHERE category_id = '".$id_category."' ORDER BY pos ASC";

    $sent = mysql_query($query);

    $this->setForms($sent);//naplni privatni vlastnosti tridy

}

//naplni privatni vlastnosti tridy
public function setForms($sent){

    $this->unsetForms();

    while($data = mysql_fetch_object($sent)){

	$this->id[] = $data->id;
	$this->name[] = stripslashes($data->name);
        $this->pos[] = $data->pos;
        $this->categoryId[]=$data->category_id;
        $this->fileName[]=$data->file;
        $this->visible[]=$data->visible;
    }
}

//prida novy tiskopis s nazvem $name do databaze a dokument do slozky tiskopisy/dokuments
//naplni privatni vlastnost msg o uspesnosti akce
//$file je typu $_FILES
//vraci true nebo false podle, toho zda byl tiskopis pridan do databaze
public function add($name, $id_category,$file,$viditelnost){


    if(!empty($name)){//je-li vyplneny nazev tiskopisu

	$name = addslashes($name);

        if(!$viditelnost=='TRUE'){
            $viditelnost='FALSE';
        }

	if(!$this->existName($name)){//neexistuje-li tiskopis s timto nazvem
            $pos = $this->getMaxPos($id_category)+1;//naplni promenou pos nejvyssi pozici tiskopisu v dane kategorii zvecenou o 1

            //begin osetreni diakritiky pro nazev souboru
            $nameFile="";
            $helpField=explode(".",$file['name']);
            $numberField = count ($helpField);
            
            $novinky = new novinky();
                        
            for ($i=0;$i<$numberField-1;$i++){
                $nameFile.=$novinky->getSeoUrl($helpField[$i]);
            }
            
            $nameFile.='.';
            $nameFile.=$helpField[$numberField-1];
            //end osetreni diakritiky pro nazev souboru

            //vklada tiskopis do databaze
            $query = "INSERT INTO ".DBPREFIX."tiskopisy (name,category_id,pos,file,visible) VALUES('$name','$id_category','$pos','".$nameFile."',$viditelnost)";

            if(mysql_query($query)){//byl-li tiskopis uspesne vlozen
                copy($file['tmp_name'],"./tiskopisy/dokuments/".$nameFile);//kopirovani 
		$this->msg = FORM_CREATED;
                return TRUE;
            }

            else{//nebyl-li tiskopis uspesne vlozen
		$this->msg = SQL_ERROR.mysql_error();
                return FALSE;
            }
	}
	else{//existuje-li jiz tento nazev tiskopisu
            $this->msg = FORM_NAME_EXIST;
            return FALSE;
	}


    }
    else{//neni vyplneno jmeno tiskopisu
	$this->msg = FORM_FORMS_EMPTY;
        return FALSE;
    }

}

//vraci true, pokud jiz tiskopis s timto jmenem existuje
//jinak vraci false
//je-li zadan i druhy parametr, tak do prohledavani neni zahrnut tiskopis s danym id
public function existName($name,$id=-1){

    if ($id!=-1){
        $query = "SELECT COUNT(*) AS pocet FROM ".DBPREFIX."tiskopisy WHERE name = '$name' AND id != '$id'";
    }
    else{
        $query = "SELECT COUNT(*) AS pocet FROM ".DBPREFIX."tiskopisy 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 tiskopisu v dane kategorii $id_category
public function getMaxPos($id_category){

    $query = "SELECT MAX(pos) AS max_pos FROM ".DBPREFIX."tiskopisy WHERE category_id = '$id_category'";

    $sent = mysql_query($query);

    $data = mysql_fetch_object($sent);

    return $data->max_pos;

}

//vymaze tiskopisi nactene v privatnich vlastnostech
//pokud na obrazek smazaneho tiskopisu neukazuje jiny tiskopis, tak ho smaze z ./tiskopisy/dokuments
//naplni privatni vlastnost msg o uspesnosti akce

public function deleteAll(){

    for($i=0;$i<count($this->id);$i++){

        //vymaze dany tiskopis
        $query = "DELETE FROM ".DBPREFIX."tiskopisy WHERE id = '".$this->id[$i]."'";

        if(mysql_query($query)){//vymazani probehlo uspesne

            $this->deleteDokumentFromFolder($this->fileName[$i]);//smaze dokument tiskopisu ze slozky ./tiskopisy/dokuments, pokud na nej neukazuje zadny tiskopis
            $this->msg = FORM_DELETED;

            //posune vsechny tiskopisy ze stejne kategorie a vyssi pozici o jednu pozici niz
            $query2 = "UPDATE ".DBPREFIX."tiskopisy SET pos = pos - 1 WHERE pos > '".$this->pos[$i]."' AND category_id = '".$this->categoryId[$i]."'";
            mysql_query($query2);
        }

        else{//vymazani neprobehlo

            $this->msg = SQL_ERROR.mysql_error();
            return;
        }
    }
}


//vymaze tiskopis s danym id
//pokud na dokument smazaneho tiskopisu neukazuje jiny tiskopis, tak ho smaze z ./tiskopisy/dokuments
//naplni privatni vlastnost msg o uspesnosti akce
public function delete($id){

    $this->selectForm($id);//nalezne info o tiskopisu s danym id a ulozi je do vlastnosti tridy

    //vymaze dany tiskopis
    $query = "DELETE FROM ".DBPREFIX."tiskopisy WHERE id = '$id'";

    if(mysql_query($query)){//vymazani probehlo uspesne

        $this->deleteDokumentFromFolder($this->fileName[0]);//smaze dokument tiskopisu ze slozky ./tiskopisy/dokuments, pokud na nej neukazuje zadny tiskopis
        $this->msg = FORM_DELETED;

        //posune vsechny tiskopisy ze stejne kategorie a vyssi pozici o jednu pozici niz
        $query2 = "UPDATE ".DBPREFIX."tiskopisy 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 tiskopisu s danym id
public function selectForm($id){

    $query = "SELECT * FROM ".DBPREFIX."tiskopisy WHERE id = '$id'";

    $sent = mysql_query($query);

    $this->setForms($sent);

}

//vymaze dokument z databaze daneho tiskopisu
//pokud na tento dokument neukazuje jeste jiný tiskopis, tak ho smaze i ze slozky /tiskopisy/dokuments
//vraci true(false) byla-li akce uspesna
//naplni privatni vlastnost msg o uspesnosti akce
public function deleteDokument($id){

    $fileName = $this->getNameDokuments($id);//vraci jmeno dokumentu pro tiskopis s danym id

    $query = "UPDATE ".DBPREFIX."tiskopisy SET file='' WHERE id='$id'";//smaze dokument z databaze

    if(mysql_query($query)){//dokument byl uspesne smazan z databaze

        $this->msg = FORM_EDITED;

        $this->deleteDokumentFromFolder($fileName);

        return true;

    }

    //doslo k chybe, obrazek nebyl smazan
    $this->msg = SQL_ERR0R;
    return false;
}

//smaze soubor s nazvem $fileName ze slozky ./tiskopisy/dokuments/, pokud na nej neukazuje zadny tiskopis
public function deleteDokumentFromFolder($fileName){

    $pocet = $this->numDokuments($fileName);//vrati pocet vyskytu daneho souboru v tabulce tiskopisu
    $fileName = "./tiskopisy/dokuments/".mb_convert_encoding($fileName, 'ISO-8859-2','UTF-8');//pridana cesta k souboru a zmena kodovani

    if(($pocet==0)&&(file_exists($fileName))){//pokud na tento dokument neukazuje zadny tiskopis, tak ho smaze i ze slozky /tiskolpisy/dokuments
        unlink($fileName);
    }
}



//vraci počet souboru s nazvem $fieName v tabulce tiskopisu ve sloupci file
public function numDokuments($fileName){

    $query = "SELECT COUNT(file) AS pocet FROM ".DBPREFIX."tiskopisy WHERE file='$fileName'";
    $sent = mysql_query($query);
    $data = mysql_fetch_array($sent);

    return $data['pocet'];
}

//vraci jmeno souboru pro tiskopis s danym id
public function  getNameDokuments($id){

    $query = "SELECT file FROM ".DBPREFIX."tiskopisy WHERE id='$id'";//nalezne nazev souboru  v databazi pro daný tiskopis

    $sent = mysql_query($query);
    $data = mysql_fetch_array($sent);

    return $data['file'];//nazev souboru daneho tiskopisu
}

//presune tiskopis o danem id o jednu pozici vys nebo niz podle parametru $par
function upDown($id,$par){

    //nalezne aktualni pozici a kategorii pro tiskopis o danem id
    $query = "SELECT pos, category_id FROM ".DBPREFIX."tiskopisy 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."tiskopisy 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 tiskopis
        //prehozeni pozic v databazi
        $query3 = "UPDATE ".DBPREFIX."tiskopisy SET pos = '$actual_pos' WHERE pos = '$new_pos' AND category_id = '$data->category_id'";

	mysql_query($query3);

	$query4 = "UPDATE ".DBPREFIX."tiskopisy SET pos = '$new_pos' WHERE id = '$id'";

	mysql_query($query4);

    }

}

//zmeni viditelnost pro tiskopis o danem id
function view_change($id){

    //zjisti zda dany tiskopis je viditelny
    $query = "SELECT visible FROM ".DBPREFIX."tiskopisy 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."tiskopisy SET visible = '$change' WHERE id = '$id'";
    mysql_query($query);
    //end zmena viditelnosti
}

//edituje vybrany tiskopis o id=$id v databazi,
//vraci true(false)-byl tiskopis zmenen?
//naplni privatni vlastnost msg o uspesnosti akce
//$file je typu $_FILES
public function edit($id, $name,$file,$idCategory){

    $staryTiskopis = new tiskopisy();
    $staryTiskopis->selectForm($id);//naplneni instance starymi informacemi o tiskopisu

    if(!empty($name)){//je-li nazev vyplnen

        $name = addslashes($name);

	if(!$this->existName($name,$id)){//neexistuje-li jiz tiskopis s takovym nazvem, tak ho edituje

                if ($idCategory!=$staryTiskopis->getCategoryId(0)){//je-li pozadavek na zmenu kategorie

                        $newpos = $this->getMaxPos($idCategory)+1;//naplni promenou newpos nejvyssi pozici tiskopisu v dane kategorii zvecenou o 1

                        //posune vsechny tiskopisy ze stejne kategorie a vyssi pozici o jednu pozici niz
                        $query2 = "UPDATE ".DBPREFIX."tiskopisy SET pos = pos - 1 WHERE pos > '".$staryTiskopis->getPos(0)."' AND category_id = '".$staryTiskopis->getCategoryId(0)."'";
                        mysql_query($query2);
                    }
                    else {
                        $newpos=$staryTiskopis->getPos(0);
                    }

                if($file['name']!=FALSE){//je-li predan pozadavek i na zmenu souboru

                    //begin osetreni diakritiky pro nazev souboru
                    $nameFile="";
                    $helpField=explode(".",$file['name']);
                    $numberField = count ($helpField);

                    $novinky = new novinky();

                    for ($i=0;$i<$numberField-1;$i++){
                        $nameFile.=$novinky->getSeoUrl($helpField[$i]);
                    }

                    $nameFile.='.';
                    $nameFile.=$helpField[$numberField-1];
                    //end osetreni diakritiky pro nazev souboru

                    copy($file['tmp_name'],"./tiskopisy/dokuments/".$nameFile);//zkopiruje novy dokument do polozky /tiskopisy/dokuments
                    $this->deleteDokument($staryTiskopis->getId(0));//odstrani stary dokument ze slozky /tiskopisy/dokuments, pokud jiz na nej neukazuje jiny tiskopis

                    $query = "UPDATE ".DBPREFIX."tiskopisy SET name = '$name' , file='".$nameFile."' , category_id=$idCategory, pos=$newpos WHERE id = '$id'";
                }
                else{//neni-li pozadovana zmena souboru
                    $query = "UPDATE ".DBPREFIX."tiskopisy SET name = '$name', category_id=$idCategory, pos=$newpos WHERE id = '$id'";
                }

		if(mysql_query($query)){//editace probehla uspesne

			$this->msg = FORM_EDITED;

		}
		else{//chyba nepodarilo se editovat

			$this->msg = SQL_ERROR.mysql_error();

		}

	}
	else{//tiskopis s timto nazvem uz existuje

		$this->msg = FORM_NAME_EXIST;

	}

    }
    else{//neni-li nazev vyplnen

	$this->msg = FORM_FORMS_EMPTY;

    }

}

}
?>

ACC SHELL 2018