ACC SHELL
<?php
/**
*
*
* @version $Id$
* @copyright 2010
* @name Zpracování kateogorií
*/
class Clanky extends Tools {
public $idClanku = array();
public $idPopisu = array();
public $nazev = array();
public $seoNazev = array();
public $seoUrl = array();
public $title = array();
public $keywords = array();
public $description = array();
public $stav = array();
public $anotace = array();
public $obsah = array();
public $lang = array();
public $typ = array();
public $exturl = array();
public $datum = array();
public $currentpage = "";
public $totalpages = "";
public $pagesize = "20";
/**
* Constructor
*/
function __construct() {
}
public function pridatClankyPopis($arr) {
$result = dibi::query('INSERT INTO [clanky_popis]', $arr);
if ($result) {
$_SESSION['message_ok'][] = "Uložení článku proběhlo v pořádku.";
return dibi::insertId();
} else {
$_SESSION['message_ko'][] = "Úprava článku neproběhla.";
return false;
}
}
public function updateClankyPopis($arr) {
$result = dibi::query('UPDATE `clanky_popis` SET ', $arr, 'WHERE `id`=%i', $arr['id'], ' AND lang=%i', $arr['lang']);
if ($result) {
$_SESSION['message_ok'][] = "Úprava článku proběhla v pořádku.";
return true;
} else {
$_SESSION['message_ko'][] = "Úprava článku neproběhla.";
return false;
}
}
public function getClankyOption($kategorie='clanky') {
$query = "SELECT k.id, k.hloubka, kp.nazev AS nazev
FROM {$kategorie} k
LEFT JOIN {$kategorie}_popis kp ON k.id = kp.main_id
WHERE kp.lang = '" . $_SESSION['jazyk'] . "'
AND k.hloubka>0
ORDER BY k.lft ASC";
//$result = dibi::query($query)->fetchAll();
//NDebugger::barDump($query, 'Clanky Option');
printf("<option value=\"default\">---</option>\n");
$result = mysql_query($query);
if (mysql_numrows($result) != '0') {
while ($row = mysql_fetch_assoc($result)) {
printf("<option name=\"%d\" id=\"%d\" value=\"%d\">%s</option>\n", $row['id'], $row['id'], $row['id'], str_repeat(" ", $row['hloubka'] * 3) . $row['nazev']);
}
}
}
public function getAdminTable($id=0, $table='clanky') {
if (isset($_SESSION['listuj']))
$this->pagesize = $_SESSION['listuj'];
$recordstart = (isset($_GET['recordstart'])) ? (int) $_GET['recordstart'] : 0;
$query = "SELECT a.id, a.hloubka, b.nazev AS nazev, a.parent_id, a.lft, a.rgt, b.stav AS stav, b.datum, b.seo_url, j.kod
FROM clanky a
LEFT JOIN clanky_popis b ON a.id = b.main_id
LEFT JOIN jazyk j ON b.lang = j.id
WHERE b.lang = '" . $_SESSION['jazyk'] . "'
ORDER BY b.datum DESC";
$result = mysql_query($query);
$num_rows = mysql_num_rows($result);
if ($num_rows > $this->pagesize) {
$query .= " LIMIT $recordstart, $this->pagesize";
}
$result = mysql_query($query);
//$this->debug($query);
$this->totalpages = ceil($num_rows / $this->pagesize);
$this->currentpage = ($recordstart / $this->pagesize) + 1;
if ($num_rows == 0) {
echo "<tr><td colspan='9'>Nejsou založeny žádné články.</td></tr>";
} else {
//Zjisteni minimalni a maximalni hodnoty pro kazdou kategorii
$query = "SELECT parent_id, min(lft) lft, max(rgt) rgt FROM {$table} group by parent_id";
$test = mysql_query($query);
while ($test1 = mysql_fetch_assoc($test)) {
$showMove[$test1['parent_id']]['lft'] = $test1['lft'];
$showMove[$test1['parent_id']]['rgt'] = $test1['rgt'];
}
$adresa = mysql_query("SELECT * FROM kategorie_popis WHERE typ=3 LIMIT 1");
$adresa_pocet = mysql_num_rows($adresa);
if ($adresa_pocet == '0') {
$seo_adresa_clanku = "/clanky";
} else {
$adresa_clanku = mysql_fetch_array($adresa);
$seo_adresa_clanku = $adresa_clanku['url'];
}
while ($row = mysql_fetch_assoc($result)) {
echo "<tr>";
echo '<td><input type="checkbox" name="checkbox[]" value="' . $row['id'] . '" id="" ></td>';
switch ($row['hloubka']):
case '2':
echo "<td><a class=\"vypis_subkat\" href=\"{$table}_edit.php?id={$row['id']}\">-" . $row['nazev'] . "</a><br />";
break;
case '3':
echo "<td><a class=\"vypis_subkat2\" href=\"{$table}_edit.php?id={$row['id']}\">-" . $row['nazev'] . "</a><br />";
break;
default:
echo "<td><a href=\"{$table}_edit.php?id={$row['id']}\">" . $row['nazev'] . "</a><br />";
;
endswitch;
if (!isset($adresa_clanku)) {
$odkaz = 'Není definovaná kategorie články.';
}
else {
$odkaz = Tools::createUrl(SERVER_NAME, PROJEKT, $row['kod'], $adresa_clanku['url'], $row['seo_url'] . '.html');
}
echo '<span class="url">' . $odkaz . '</span></td>';
/*
* Prirazeni fotogalerie jednotlivym kateogriiim
*/
echo '<td>';
$query = "SELECT cp.nazev cp_nazev, kp.nazev kp_nazev, cpr.id cpr_id, cpr.id_popisu as id_clanku, cpr.id_kategorie
FROM {$table}_prirazeni cpr
LEFT JOIN {$table}_popis cp ON cp.main_id = cpr.id_popisu
LEFT JOIN kategorie_popis kp ON kp.id = cpr.id_kategorie
WHERE cpr.id_popisu = '" . intval($row['id']) . "'
ORDER BY cpr.id";
$result_prirazeni = mysql_query($query);
while ($prirazeni = mysql_fetch_array($result_prirazeni)) {
echo "<a href=\"kategorie_edit.php?id={$prirazeni['id_kategorie']}\">" . $prirazeni['kp_nazev'] . "</a> ";
}
echo '</td>';
if ($table == 'clanky') {
$stav = $row['stav'] == '1' ? "Ano" : "Ne";
echo "<td><a href=\"?id={$row['id']}&stav=$stav\">$stav</a></td>";
}
// jazykove mutace
$flags = Query::getLanguageFlags($row['id'], 'clanky');
echo "<td>";
foreach ($flags as $f) {
echo "<img class=\"vypis_jazyky\" src=\"images/flags/$f->obrazek\" alt=\"$f->nazev\" title=\"$f->nazev\" />";
}
echo "</td>";
// end of jazykove mutace
echo "<td>" . datum($row['datum']) . "</td>";
if ($showMove[$row['parent_id']]['lft'] != $row['lft']) {
echo "<td><a href=\"?up=" . $row['id'] . "\" title=\"Posun nahoru\"><img src=\"images/iko/up.png\" alt=\"Posun nahoru\" /></a>";
} else {
echo "<td>";
}
if ($showMove[$row['parent_id']]['rgt'] != $row['rgt']) {
echo '<a href="?down=' . $row['id'] . '" title="Posun dolů"><img src="images/iko/down.png" alt="Posun dolů" /></a>';
} else {
echo "</td>";
}
echo "<td><a href=\"{$table}_edit.php?id=" . $row['id'] . "\" title=\"Editovat\"><img src=\"images/iko/note_edit.png\" alt=\"Editovat\" /></a>";
echo '<a href="' . $odkaz . '" target="_blank" title="Prohlédnout"><img src="images/iko/computer.png" alt="Prohlédnout" /></a>';
echo '<a href="?smazat=' . $row['id'] . '" class="potvrzujiciLink" title="Smazat"><img src="images/iko/remove.png" alt="Smazat" /></a></td>';
echo '</tr>';
}
}
}
public function getPrirazeni($id=0, $table='clanky') {
if (isset($_SESSION['listuj']))
$this->pagesize = $_SESSION['listuj'];
if ($table == 'clanky') {
$recordstart = (isset($_GET['recordstart'])) ? (int) $_GET['recordstart'] : 0;
$query = "SELECT cp.nazev cp_nazev, kp.nazev kp_nazev, cpr.id cpr_id, cpr.id_popisu as id_clanku, cpr.id_kategorie
FROM clanky_prirazeni cpr
LEFT JOIN clanky_popis cp ON cp.main_id = cpr.id_popisu
LEFT JOIN kategorie_popis kp ON kp.id = cpr.id_kategorie
WHERE cpr.id_popisu = '" . intval($id) . "'
AND cpr.jazyk = cp.lang
ORDER BY cpr.id";
$result = mysql_query($query);
$num_rows = mysql_num_rows($result);
if ($num_rows > $this->pagesize) {
$query .= " LIMIT $recordstart, $this->pagesize";
}
}
$result = mysql_query($query);
//echo "<br />celkem zaznamu: " . $num_rows . "<br />\n";
$this->totalpages = ceil($num_rows / $this->pagesize);
//echo "celkem stranek: " . $totalpages . "<br />\n";
$this->currentpage = ($recordstart / $this->pagesize) + 1;
if ($num_rows == 0) {
echo "<tr><td colspan='9'>Článek není přiřazen.</td></tr>";
} else {
while ($row = mysql_fetch_assoc($result)) {
echo '<tr>';
echo '<td><input type="checkbox" name="checkbox[]" value="' . $row['cpr_id'] . '" id="" ></td>';
echo "<td><a href=\"{$table}_edit.php?id={$row['id_clanku']}\">" . $row['cp_nazev'] . '</a></td>';
echo "<td><a href=\"kategorie_edit.php?id={$row['id_kategorie']}\">" . $row['kp_nazev'] . '</a></td>';
echo '<td><a href="?zrusit=' . $row['cpr_id'] . '" class="potvrzujiciLinkPrirazeni" title="Zrušit přiřazení"><img src="images/iko/remove.png" alt="Zrušit přiřazení" /></a></td>';
echo '</tr>';
}
}
}
public function getDetail($id, $lang = 1, $table='clanky', $admin = false) {
if (!$id) {
return false;
} else {
if ($admin) {
$search = ' WHERE a.id=' . $id . ' AND b.lang=' . $lang . ' ';
} else {
$search = ' WHERE b.seo_url = "' . $id . '" AND b.lang = ' . $lang . ' ';
}
$query = "
SELECT
a.id AS main_id, b.id AS id_popisu, a.hloubka,
b.nazev AS nazev, b.seo_nazev, b.seo_url, b.komentare, b.fblike,b.obrazek obrazek_clanku,
b.title, c.nazev AS jazyk, c.obrazek, c.kod,
b.keywords, b.description, b.stav, b.anotace, b.obsah, b.typ, b.exturl, b.datum
FROM {$table} AS a
LEFT JOIN {$table}_popis AS b
ON a.id = b.main_id
LEFT JOIN jazyk c
ON c.id = b.lang
$search
LIMIT 1
";
return dibi::query($query)->fetch();
}
}
public function fetchAll($arr) {
if (isset($arr['pagesize'])){
$this->pagesize = $arr['pagesize'];
}
$lang = isset($arr['lang'])? $arr['lang']: '1';
$recordstart = (isset($_GET['recordstart'])) ? (int) $_GET['recordstart'] : 0;
$query = "
SELECT b.id, b.nazev, b.seo_nazev, b.seo_url, b.title, c.kod, b.anotace, b.obsah,b.datum, b.obrazek
FROM clanky AS a
LEFT JOIN clanky_popis AS b
ON a.id = b.main_id
LEFT JOIN jazyk c
ON c.id = b.lang
WHERE b.lang = '" . $lang . "'
AND b.stav='1'
";
$rows = dibi::query($query);
$pocetZaznamu = count($rows);
NDebugger::barDump($pocetZaznamu, 'PocetClanku');
NDebugger::barDump($this->pagesize, 'Pagesize');
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();
}
}
public function getInfo($id='', $lang=-1, $table='clanky') {
//$id = intval($id);
if ($lang == -1) {
$lang = $_SESSION['jazyk'];
}
if ($lang == '-1')
$lang = $_SESSION['jazyk'];
if ($id == 'index') {
$find = "a.id='3'";
}
if ($id == '') {
$find = "b.stav = '1'";
} elseif (is_numeric($id)) {
$find = "b.main_id = '$id'";
} else {
$find = "b.seo_url = '$id'";
}
$query = "SELECT a.id AS idClanku, b.id AS idPopisu, a.hloubka, b.nazev AS nazev, b.seo_nazev, b.seo_url,b.obrazek as obrazek_clanku,
b.title, c.nazev AS jazyk, c.obrazek, c.kod,
b.keywords, b.description, b.stav, b.anotace, b.obsah, b.typ, b.exturl, b.datum
FROM {$table} AS a
LEFT JOIN {$table}_popis AS b ON a.id = b.main_id
LEFT JOIN jazyk c ON c.id = b.lang
WHERE $find
AND b.lang = '" . $lang . "'
AND c.status = '1'
";
$result = mysql_query($query);
//echo '<pre>'.$query.'</pre>';
if (!$result)
die("Nějaký problém s databází");
if (mysql_num_rows($result) != 0) {
while ($row = mysql_fetch_assoc($result)) {
array_push($this->idClanku, $row['idClanku']);
array_push($this->idPopisu, $row['idPopisu']);
array_push($this->nazev, $row['nazev']);
array_push($this->seoNazev, $row['seo_nazev']);
array_push($this->seoUrl, $row['seo_url']);
array_push($this->anotace, $row['anotace']);
array_push($this->obsah, $row['obsah']);
array_push($this->stav, $row['stav']);
array_push($this->exturl, $row['exturl']);
array_push($this->datum, $row['datum']);
}
} else {
$this->idClanku = '';
$this->idPopisu = '';
$this->nazev = '';
$this->seoNazev = '';
$this->seoUrl = '';
$this->title = '';
$this->keywords = '';
$this->description = '';
$this->anotace = '';
$this->obsah = '';
$this->stav = '';
$this->typ = '';
$this->exturl = '';
}
}
public function priraditClanek($idclanku, $idkategorie, $lang) {
$q = dibi::query('SELECT id_popisu FROM clanky_prirazeni WHERE id_popisu = %i',$idclanku,' AND id_kategorie = ',$idkategorie, ' LIMIT 1');
if (count($q) > 0) {
$_SESSION['message_info'][] = "Článek už je této kategorii přiřazen.";
return false;
}
else {
$query = "INSERT INTO clanky_prirazeni (id_popisu, id_kategorie, jazyk) VALUES($idclanku, $idkategorie, $lang)";
$res = dibi::query($query);
if ($res) {
return dibi::insertId();
}
else {
$_SESSION['message_ko'][] = "Článek se nepodařilo přiřadit.";
return false;
}
}
}
/*
public function getPrirazeniClanek($idclanku) {
$idclanku = intval($idclanku);
$query = "SELECT cp.id_popisu as id_clanku , cp.id_kategorie, cpo.lang, cpo.nazev
FROM clanky_prirazeni cp
LEFT JOIN clanky_popis cpo ON cpo.main_id = cp.id_popisu
WHERE cp.id_popisu = '" . $idclanku . "'";
//$this->debug($query);
if ($this->getNumRows($query) == '0') {
return "Nepřiřazen.";
} else {
$result = mysql_query($query);
while ($row = mysql_fetch_array($result)) {
$prirazeni = array($row['nazev'] => $row['lang']);
//$prirazeni['jazyk'] = $row['jazyk'];
}
return $prirazeni;
}
}
*/
public function zrusitPrirazeni($id) {
$query = "DELETE FROM clanky_prirazeni WHERE id = '" . intval($id) . "'";
$result = mysql_query($query);
if ($result) {
return true;
} else {
Tools::message('Zrušení přiřazení se nepovedlo.', 'ERR');
Tools::redirect($_SERVER['HTTP_REFERER']);
}
}
public function smazatFotku($id) {
$obrazek = dibi::query('SELECT obrazek FROM clanky_popis WHERE main_id=%i', $id, ' AND lang=1')->fetchSingle();
$res = dibi::query('UPDATE clanky_popis SET obrazek=null WHERE main_id=%i', $id);
if ($res) {
unlink(ROOT . CLANKY_F_M_PATH . $obrazek);
unlink(ROOT . CLANKY_F_L_PATH . $obrazek);
return true;
} else {
return false;
}
}
}
$Clanky = new Clanky();
ACC SHELL 2018