ACC SHELL

Path : /srv/www/vhosts/centrumlb/administrace/libs/
File Upload :
Current File : /srv/www/vhosts/centrumlb/administrace/libs/komentare.class.php

<?php

/**
 *
 *
 * @version $Id$
 * @copyright 2010
 * @name Zpracování kateogorií
 */
class Komentare extends Tools {

    public $currentpage = "";
    public $totalpages = "";
    public $pagesize = "10";

    /**
     * Constructor
     */
    function __construct() {

    }

    function insertKomentar($arr = array()) {
	$arr['ip_id'] = Query::insertIP($arr['ip'], $arr['ban']);
	//Sloupec ip a ban v tabulce knihy navstev nemam, tak ho vyjmu z pole
	unset($arr['ip']);
	unset($arr['ban']);

	$arr['lft'] = dibi::query('SELECT IFNULL(MAX(rgt), 0) + 1 FROM komentare');
	$arr['rgt'] = dibi::query('SELECT IFNULL(MAX(rgt), 0) + 2 FROM komentare');
	$arr['parent_id'] = '0';
	if (dibi::query('INSERT INTO komentare ', $arr)) {
	    $_SESSION['message_ok'][] = 'Uložení příspěvku proběhlo v pořádku';
	    return dibi::insertId();
	} else {
	    return false;
	}
    }
    function deleteKomentar($id) {
	if (dibi::delete('komentare')->where('id=%i', $id)->execute()) {
	    //$_SESSION['message_ok'][] = 'Vymazání příspěvku proběhlo v pořádku';
	    return true;
	}
	else {
	    //$_SESSION['message_ok'][] = 'Smazání příspěvku neproběhlo v pořádku';
	    return false;
	}
    }

    function updateKomentar($arr = array()) {
	Query::updateIP($arr['ip'], $arr['ban']);
	//ip
	unset($arr['ip']);
	unset($arr['ban']);
	if (dibi::query('UPDATE komentare SET ', $arr, 'WHERE id=%i', $arr['id'])) {
	    $_SESSION['message_ok'][] = 'Úprava komentáře ' . $whatToUpdate . ' proběhla v pořádku';
	    return true;
	}
	else
	    return false;
    }

    function fetchSingle($id = null) {
	if ($id == null) {
	    return false;
	}
	else
	    return dibi::query('SELECT a.id, a.jmeno, a.nadpis, a.email, a.text, a.datum, b.ip, b.ban, a.typ_kategorie, a.id_sablony
			FROM komentare a
			LEFT JOIN ip b
			    ON a.ip_id = b.id
			WHERE a.id=%i', $id, ' LIMIT 1')->fetch();
    }

    /**
     *
     * @param int $typ_kategorie 1 - kategorie, 2 - galerie, 3 - clanky, 4 - novinky
     * @param type $id_sablony id konkretni sablony
     * @return type
     */
    function fetchAll($typ_kategorie = null, $id_sablony = null) {

	if (isset($_SESSION['listuj']))
	    $this->pagesize = $_SESSION['listuj'];

	$recordstart = (isset($_GET['recordstart'])) ? (int) $_GET['recordstart'] : 0;

	$query = "
	    SELECT a.id, a.typ_kategorie, a.id_sablony, a.jmeno, a.email, a.nadpis,
	    a.text, a.datum, a.hloubka, a.typ_kategorie, a.id_sablony, a.id_produktu, a.hodnoceni,
	    b.nazev kategorie
	    FROM komentare a
	    LEFT JOIN kategorie_popis b
		ON a.id_sablony = b.main_id
	    ";

	if (isset($typ_kategorie) AND $typ_kategorie != 0) {
	    $query .= " WHERE typ_kategorie = $typ_kategorie";
	}
	if (isset($id_sablony) AND $id_sablony != 0) {
	    $query .= " AND id_sablony = $id_sablony";
	}

	$query .= " ORDER BY a.datum DESC";

	$rows = dibi::query($query);

	$pocetZaznamu = count($rows);

	if ($pocetZaznamu > $this->pagesize) {

	    $this->totalpages = ceil($pocetZaznamu / $this->pagesize);

	    $this->currentpage = ($recordstart / $this->pagesize) + 1;

	    return $rows->fetchAll($recordstart, $this->pagesize);
	} else {
	    return $rows->fetchAll();
	}
    }
    function fetchPocet($typ_kategorie = null, $id_sablony = null) {

	$query = "SELECT count(id) FROM komentare";

	if (isset($typ_kategorie) AND $typ_kategorie != 0) {
	    $query .= " WHERE typ_kategorie = $typ_kategorie";
	}
	if (isset($id_sablony) AND $id_sablony != 0) {
	    $query .= " AND id_sablony = $id_sablony";
	}

	return dibi::query($query)->fetchSingle();
    }
}

//$Kategorie = new Kategorie();
$Komentare = new Komentare();

if (isset($_GET['smazat'])) {
    if ($Komentare->deleteKomentar($_GET['smazat'])) {
	$_SESSION['message_ok'][] = 'Vymazání příspěvku číslo ' . $_GET['smazat'] . ' proběhlo v pořádku';
	Tools::redirect('komentare.php');
    } else {
	$_SESSION['message_ko'][] = 'Vymazání příspěvku číslo ' . $_GET['smazat'] . ' neproběhlo v pořádku';
	Tools::redirect('komentare.php');
    }
}

if (isset($_POST['aplikovat'])) {

    if (isset($_POST['dropdown'])) {
	if (!isset($_POST['checkbox'])) {
	    $_SESSION['message_info'][] = "Není co zpracovat.";
	} else {
	    switch ($_POST['dropdown']) {
		case 'smazat':
		    $uspesnost = true;
		    foreach ($_POST['checkbox'] as $akce) {
			if (!$Komentare->deleteKomentar($akce)) {
			    $uspesnost = false;
			}
		    }
		    if ($uspesnost == true) {
			$_SESSION['message_ok'][] = 'Vymazání všech příspěvků proběhlo v pořádku';
		    } else {
			$_SESSION['message_ko'][] = "Vymazání příspěvku číslo $akce neproběhlo v pořádku";
		    }
		    Tools::redirect('komentare.php');
		    break;
		case 'ban':
		    $uspesnost = true;
		    foreach ($_POST['checkbox'] as $akce) {
			if (!$Komentare->banIP($akce)) {
			    $uspesnost = false;
			    $_SESSION['message_ko'][] = 'Zablokování IP adresy neproběhlo v pořádku';
			}
		    }
		    if ($uspesnost == true) {
			$_SESSION['message_ok'][] = 'Zablokování IP adres proběhlo v pořádku';
		    }
		    Tools::redirect('komentare.php');
		    break;
		case 'unban':
		    $uspesnost = true;
		    foreach ($_POST['checkbox'] as $akce) {
			if (!$Komentare->UnBanIP($akce)) {
			    $uspesnost = false;
			    $_SESSION['message_ko'][] = 'Povolení IP adresy neproběhlo v pořádku';
			}
		    }
		    if ($uspesnost == true) {
			$_SESSION['message_ok'][] = 'Povolení IP adres proběhlo v pořádku';
		    }
		    Tools::redirect('komentare.php');
		    break;
		default :
		    $_SESSION['message_info'][] = "Není co zpracovat.";
	    }
	}
    }
}
?>

ACC SHELL 2018