ACC SHELL
<?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&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&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=tiskopisy/tiskopisy&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=tiskopisy/tiskopisy&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=tiskopisy/tiskopisy&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->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&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&b=up&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&b=down&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&b=view&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&b=delete&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