ACC SHELL
<?php
/**
*
* ALTER TABLE `texty_popis` CHANGE `id_textu` `main_id` MEDIUMINT( 8 ) UNSIGNED NOT NULL
* @version $Id$
* @copyright 2010
* @name Zpracování kateogorií
*/
class Texty extends Tools
{
public $id = array();
public $idPopisu = array();
public $nazev = array();
public $seo = 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 $datum = array();
public $currentpage = array();
public $totalpages = array();
public $pagesize = 100;
public $dontDelete = array(1, 2, 3, 4, 5, 6);
/**
* Constructor
*/
function __construct()
{
}
public function pridatText($table = 'texty')
{
$query = "INSERT INTO $table (lft, rgt, hloubka) SELECT IFNULL(MAX(rgt), 0) + 1, IFNULL(MAX(rgt), 0) + 2, 0 FROM $table";
//echo "$query";
mysql_query($query);
}
public function pridatTextPopis($kategorie = 'texty', $id, $nazev, $seo, $title, $keywords, $description, $lang, $stav, $anotace = "", $obsah = "", $typ = '1')
{
$idTexty = intval($id);
$nazev = mysql_real_escape_string($nazev);
$seo = mysql_real_escape_string($seo);
$title = mysql_real_escape_string($title);
$keywords = mysql_real_escape_string($keywords);
$description = mysql_real_escape_string($description);
$lang = intval($lang);
$stav = intval($stav);
//$anotace = trim(htmlspecialchars($anotace), '<br />');
$anotace = $anotace;
$obsah = $obsah;
$typ = intval($typ);
$valid = true;
if ($nazev == "")
{
$_SESSION['message_ko'][] = "Text musí mít název";
$valid = false;
return false;
} elseif ($seo == "")
{
//$seo = SEO_URL;
$seo = $nazev;
} elseif ($title == "")
{
//$seo = TITLE;
$seo = $nazev;
} elseif ($keywords == "")
{
$keywords = KEYWORDS;
} elseif ($description == "")
{
$description = DESCRIPTION;
}
if ($valid == true)
{
$query = "INSERT INTO {$kategorie}_popis (main_id, nazev, seo_url, title, keywords, description, lang, stav, anotace, obsah, typ, datum)
VALUES('$idTexty','$nazev','$seo','$title','$keywords','$description','$lang','$stav','$anotace', '$obsah', '$typ', now() )";
}
//$this->debug($query);
$result = mysql_query($query);
if ($result)
{
//mysql_free_result($result);
$_SESSION['message_ok'][] = "Uložení textu proběhlo v pořádku.";
if (isset($_POST['odeslat_a_zavrit']))
{
$this->redirect('texty.php');
} else
{
$this->redirect('texty_edit.php?id=' . $idTexty);
}
} else
{
$_SESSION['message_ko'][] = "Úprava textu neproběhla.";
}
}
public function updateTextPopis($id, $nazev, $seo, $title, $keywords, $description, $lang, $stav = '0', $anotace = "", $obsah = "", $typ = '1', $kategorie = 'text')
{
$idTexty = intval($id);
$arr['id'] = intval($id);
$arr['nazev'] = $nazev;
$arr['title'] = $title;
$arr['lang'] = $lang;
$arr['stav'] = $stav;
$arr['typ'] = $typ;
$arr['anotace'] = $anotace;
$arr['obsah'] = $obsah;
if ($nazev == "")
{
Tools::message("Text musí mít název", 'ERR');
return false;
}
//dibi::update('texty_popis', $arr)->where('id=%i', $arr['id'], ' AND lang=%i', $arr['lang'])->execute();exit;
$result = dibi::update('texty_popis', $arr)->where('id=%i', $arr['id'], ' AND lang=%i', $arr['lang'])->execute();
if ($result)
{
Tools::message("Úprava textu proběhla v pořádku.", 'OK');
if (isset($_POST['odeslat_a_zavrit']))
{
Tools::redirect('texty.php');
} else
{
Tools::redirect($_SERVER['HTTP_REFERER']);
}
} else
{
Tools::message("Úprava textu neproběhla", 'ERR');
}
}
public function getNumRows($query)
{
$result = dibi::query($query);
return count($result);
}
public function getAdminTable($id = 0, $table = 'texty')
{
if (isset($_SESSION['listuj']))
$this->pagesize = $_SESSION['listuj'];
if (isset($_GET['recordstart']))
{
$recordstart = (isset($_GET['recordstart'])) ? (int) $_GET['recordstart'] : 0;
} else
$recordstart = 0;
$query = "SELECT a.id, a.hloubka, b.nazev AS nazev, a.parent_id, a.lft, a.rgt, b.stav AS stav, b.anotace, b.obsah, b.datum
FROM {$table} a
LEFT JOIN {$table}_popis b ON a.id = b.main_id
WHERE b.lang = '" . $_SESSION['jazyk'] . "'
ORDER BY a.lft ASC";
//$this->debug($query);
$result = mysql_query($query);
$num_rows = 0;
if ($result)
{
$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="8">Nejsou založeny žádné texty</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";
//$this->debug($query);
$test = mysql_query($query);
while ($test1 = mysql_fetch_assoc($test))
{
$showMove[$test1['parent_id']]['lft'] = $test1['lft'];
$showMove[$test1['parent_id']]['rgt'] = $test1['rgt'];
}
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>" . str_repeat(" ", $row['hloubka'] * 3) . "<a href=\"{$table}_edit.php?id={$row['id']}\">" . $row['nazev'] . "</a></td>";
echo "<td><a class=\"vypis_subkat\" href=\"{$table}_edit.php?id={$row['id']}\">-" . $row['nazev'] . "</a></td>";
break;
case '3':
echo "<td><a class=\"vypis_subkat2\" href=\"{$table}_edit.php?id={$row['id']}\">-" . $row['nazev'] . "</a></td>";
break;
default:
echo "<td><a href=\"{$table}_edit.php?id={$row['id']}\">" . $row['nazev'] . "</a></td>";
;
} // switch
// jazykove mutace
$flags = Query::getLanguageFlags($row['id'], 'texty');
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>';
echo "<td><a href=\"{$table}_edit.php?id=" . $row['id'] . "\" title=\"Editovat\"><img src=\"images/iko/note_edit.png\" alt=\"Editovat\" /></a>";
if (!in_array($row['id'], $this->dontDelete))
{
//echo '<a href="?smazat=' . $row['id'] . '" class="potvrzujiciLink" title="Smazat"><img src="images/iko/remove.png" alt="Smazat" /></a></td>';
}
echo '</tr>';
}
}
}
public function delTree($id, $kategorie = 'texty')
{
mysql_query("START TRANSACTION");
$row = mysql_fetch_assoc(mysql_query("SELECT * FROM {$kategorie} WHERE id = " . intval($id) . " FOR UPDATE"));
mysql_query("DELETE FROM {$kategorie} WHERE lft >= $row[lft] AND rgt <= $row[rgt]");
$rozdil = $row["rgt"] - $row["lft"] + 1;
mysql_query("UPDATE {$kategorie} SET lft = lft - $rozdil WHERE lft > $row[rgt]");
mysql_query("UPDATE {$kategorie} SET rgt = rgt - $rozdil WHERE rgt > $row[rgt]");
mysql_query("DELETE FROM {$kategorie}_popis WHERE main_id = '" . intval($id) . "'");
mysql_query("COMMIT");
$_SESSION['message_ok'][] = "Vymazání proběhlo úspěšně.";
header("Location: " . $_SERVER['SCRIPT_NAME']);
exit();
}
public function delAllTree($id, $table = 'texty')
{
mysql_query("START TRANSACTION");
$row = mysql_fetch_assoc(mysql_query("SELECT * FROM {$table} WHERE id = " . intval($id) . " FOR UPDATE"));
mysql_query("DELETE FROM {$table} WHERE lft >= $row[lft] AND rgt <= $row[rgt]");
$rozdil = $row["rgt"] - $row["lft"] + 1;
mysql_query("UPDATE {$table} SET lft = lft - $rozdil WHERE lft > $row[rgt]");
mysql_query("UPDATE {$table} SET rgt = rgt - $rozdil WHERE rgt > $row[rgt]");
//$query = "DELETE {$table}_popis WHERE id_kategorie='" . intval($id) . "'";
//$this->debug($query);
mysql_query("DELETE FROM {$table}_popis WHERE main_id='" . intval($id) . "'");
//mysql_query("DELETE FROM {$table}_prirazeni WHERE id_clanku='" . intval($id) . "'");
mysql_query("COMMIT");
//$_SESSION['message_ok'][] = "Vymazání textu číslo $id proběhlo v pořádku.";
}
public function zakazatCelouKategorii($id = '-1', $table = 'texty')
{
$query = "UPDATE {$table}_popis SET stav = '0' WHERE main_id = '" . intval($id) . "'";
$result = mysql_query($query);
//$this->debug($query);
if ($result)
{
return true;
} else
{
return false;
}
}
public function povolitCelouKategorii($id = '-1', $table = 'texty')
{
$query = "UPDATE {$table}_popis SET stav = '1' WHERE main_id = '" . intval($id) . "'";
$result = mysql_query($query);
//$this->debug($query);
if ($result)
{
return true;
} else
{
return false;
}
}
public function getDetail($id = false, $lang = 1)
{
return dibi::query('SELECT * FROM texty_popis WHERE main_id=%i', $id, ' AND lang=%i', $lang, ' LIMIT 1')->fetch();
}
public function getInfo($id = 0, $lang = -1, $kategorie = 'texty')
{
$id = intval($id);
if ($lang == -1)
{
$lang = $_SESSION['jazyk'];
}
$query = "SELECT a.id AS idTextu, b.id AS idPopisu, a.hloubka, b.nazev AS nazev, b.seo_url AS seo,
b.title AS title, c.nazev AS jazyk, c.obrazek, c.kod,
b.keywords AS keywords, b.description AS description, b.stav AS stav, b.anotace AS anotace, b.obsah AS obsah, b.typ AS typ
FROM {$kategorie} AS a
LEFT JOIN {$kategorie}_popis AS b ON a.id = b.main_id
LEFT JOIN jazyk c ON c.id = b.lang
WHERE a.id = '$id'
AND b.lang = '" . $lang . "'
AND c.status = '1'
LIMIT 1";
//$this->debug($query);
$result = mysql_query($query);
if (mysql_num_rows($result) != 0)
{
while ($row = mysql_fetch_assoc($result))
{
$this->id = $row['idTextu'];
$this->idPopisu = $row['idPopisu'];
$this->nazev = $row['nazev'];
$this->seo = $row['seo'];
$this->title = $row['title'];
$this->keywords = $row['keywords'];
$this->description = $row['description'];
$this->anotace = $row['anotace'];
$this->obsah = $row['obsah'];
$this->stav = $row['stav'];
$this->typ = $row['typ'];
}
} else
{
$this->id = '';
$this->idPopisu = '';
$this->nazev = '';
$this->seo = '';
$this->title = '';
$this->keywords = '';
$this->description = '';
$this->anotace = '';
$this->obsah = '';
$this->stav = '';
$this->typ = '';
}
}
public function fetchAll($lang = false)
{
if (!$lang)
{
$lang = $_SESSION['jazyk'];
}
$query = "SELECT a.id AS idTextu, b.id AS idPopisu, a.hloubka, b.nazev AS nazev, b.seo_url AS seo,
b.title AS title, c.nazev AS jazyk, c.obrazek, c.kod, b.datum,
b.keywords AS keywords, b.description AS description, b.stav AS stav, b.anotace AS anotace, b.obsah AS obsah, b.typ AS typ
FROM texty AS a
LEFT JOIN texty_popis AS b ON a.id = b.main_id
LEFT JOIN jazyk c ON c.id = b.lang
WHERE b.lang = '" . $lang . "'
AND c.status = '1'";
return dibi::query($query)->fetchAssoc('idTextu');
}
public function getTexty($id = false, $lang = false)
{
$id = intval($id);
if (!$lang)
{
$lang = $_SESSION['jazyk'];
}
$query = "SELECT a.id AS idTextu, b.id AS idPopisu, a.hloubka, b.nazev AS nazev, b.seo_url AS seo,
b.title AS title, c.nazev AS jazyk, c.obrazek, c.kod, b.datum,
b.keywords AS keywords, b.description AS description, b.stav AS stav, b.anotace AS anotace, b.obsah AS obsah, b.typ AS typ
FROM texty AS a
LEFT JOIN texty_popis AS b ON a.id = b.main_id
LEFT JOIN jazyk c ON c.id = b.lang
WHERE b.lang = '" . $lang . "'
AND c.status = '1'";
return dibi::query($query)->fetchAll();
}
}
$Texty = new Texty();
if (basename($_SERVER['PHP_SELF']) == 'texty.php')
{
if (isset($_GET['up']))
{
$Texty->moveUp($_GET['up']);
}
if (isset($_GET['down']))
{
$Texty->moveDown($_GET['down']);
}
if (isset($_GET['smazat']))
{
$Texty->delTree($_GET['smazat']);
}
if (isset($_GET['zrusit']))
{
$Texty->zrusitPrirazeni($_GET['zrusit']);
}
if (isset($_GET['stav']))
{
if ($_GET['stav'] == 'Ano')
{
$Texty->zakazatCelouKategorii(intval($_GET['id']));
$_SESSION['message_ok'][] = "Text se nebude zobrazovat.";
header("Location: " . $_SERVER['HTTP_REFERER']);
exit();
}
if ($_GET['stav'] == 'Ne')
{
$Texty->povolitCelouKategorii(intval($_GET['id']));
$_SESSION['message_ok'][] = "Text se bude zobrazovat.";
header("Location: " . $_SERVER['HTTP_REFERER']);
exit();
}
}
if (isset($_POST['aplikovat']))
{
if (isset($_POST['dropdown']))
{
if (!isset($_POST['checkbox']))
{
$_SESSION['message_info'][] = "Není co zpracovat.";
} else
{
switch ($_POST['dropdown'])
{
case 'zakazat':
foreach ($_POST['checkbox'] as $akce)
{
$Texty->zakazatCelouKategorii($akce);
}
$_SESSION['message_ok'][] = "Text se nebude zobrazovat.";
header("Location: " . $_SERVER['HTTP_REFERER']);
exit();
break;
case 'povolit':
foreach ($_POST['checkbox'] as $akce)
{
$Texty->povolitCelouKategorii($akce);
}
$_SESSION['message_ok'][] = "Text se bude zobrazovat.";
header("Location: " . $_SERVER['HTTP_REFERER']);
exit();
break;
case 'smazat':
foreach ($_POST['checkbox'] as $akce)
{
$Texty->delAllTree($akce);
}
break;
case 'zrusit':
foreach ($_POST['checkbox'] as $akce)
{
$Texty->zrusitPrirazeni($akce);
}
break;
default :
$_SESSION['message_info'][] = "Není co zpracovat.";
}
}
}
}
}
?>
ACC SHELL 2018