ACC SHELL
<?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