ACC SHELL
<?php
/**
*
* @version 1.0
* @copyright 6.11.2011
*/
class Query {
public static $REFERENCE_TROUBLE = array('Záznam není možné smazat, je navázán na jiné záznamy', 'ERR');
public static $NOT_EXISTS = array('Takový záznam neexistuje', 'INFO');
/**
*
* @name getUrlSablony
* @var id id typu kategorie z tabulky kategorie_typ
* @uses 1 kategorie, 2 galerie, 3 clanky, 4 novinky, 5 kniha hostu
* @copyright 6.5.2011
* @return array
*/
public static function getUrlSablony($id, $lang = 1) {
return dibi::query('SELECT url FROM kategorie_popis WHERE typ=%i', $id, ' AND lang=%i', $lang, 'LIMIT 1')->fetch();
}
/**
*
* @name getUrlSablony
* @var id id typu kategorie z tabulky kategorie_typ
* @uses 1 kategorie, 2 galerie, 3 clanky, 4 novinky, 5 kniha hostu
* @copyright 6.5.2011
* @return array
*/
public static function getUrlDetailu($id, $lang = 1) {
return dibi::query('SELECT url FROM kategorie_popis WHERE main_id=%i', $id, ' AND lang=%i', $lang, ' LIMIT 1')->fetch();
}
/**
*
* @name setNavstevnost
* @var id id kategorie
* @var table tabulka (automaticky se doplni _navsteva)
* @copyright 6.5.2011
* @return bool
*/
public static function setNavstevnost($id, $table) {
return dibi::query("
INSERT INTO {$table}_navsteva
VALUES($id, 1, now())
ON DUPLICATE KEY UPDATE pocet=pocet+1, last=now()");
}
/**
*
* @name getNavstevnost
* @var id id kategorie
* @var table tabulka (vraci navstevnost dane sablony)
* @copyright 6.5.2011
* @return bool
*/
public static function getNavstevnost($id, $table) {
return dibi::query("
SELECT b.pocet FROM {$table}_popis a , {$table}_navsteva b
WHERE a.id=%i", $id, ' AND a.id=b.id LIMIT 1');
}
public static function zalozitHlavniVetev($table = false) {
if (!$table) {
Tools::message('Interní chyba systému', 'ERR');
return false;
}
$insert = dibi::query('INSERT INTO ', $table, ' (lft, rgt, hloubka) SELECT IFNULL(MAX(rgt), 0) + 1, IFNULL(MAX(rgt), 0) + 2, 0 FROM ', $table);
if ($insert) {
return dibi::insertId();
} else {
return false;
}
}
public static function vlozitDoHlavniVetve($id, $table = false) {
if (!$table) {
Tools::message('Interní chyba systému', 'ERR');
return false;
}
dibi::begin();
$row = dibi::query('SELECT * FROM ', $table, ' WHERE id=%i', $id, ' FOR UPDATE')->fetch();
dibi::query("UPDATE {$table} SET lft = lft + 2 WHERE lft > $row->rgt");
dibi::query("UPDATE {$table} SET rgt = rgt + 2 WHERE rgt >= $row->rgt");
$navigace = dibi::query("SELECT navigace FROM {$table} kategorie WHERE lft <= $row[lft] AND rgt >= $row[rgt] AND hloubka=0")->fetchSingle();
dibi::query("INSERT INTO {$table} (lft, rgt, hloubka, parent_id, navigace) VALUES ($row[rgt], $row[rgt]+1, $row[hloubka]+1, $row[id], $navigace)");
$id = dibi::insertId();
dibi::commit();
return $id;
}
/**
*
* @param type $ip ip adresa
* @param type $ban 1 adresa je banovana, 0 neni
* @return int id ip adresy v databazi
*/
public static function insertIP($ip, $ban = 0) {
//NDebugger::barDump($ip, 'ip adresa');
//NDebugger::barDump($ban, 'ban');
$id_ip = dibi::query('SELECT id FROM ip WHERE ip=%s', $ip, ' LIMIT 1')->fetchSingle();
if (!$id_ip) {
dibi::query('INSERT INTO ip (ip, ban, modifikovano) VALUES ("' . $ip . '", "' . $ban . '",now())');
//echo dibi::insertId();exit;
return dibi::insertId();
} else {
//echo 'true';exit;
return $id_ip;
}
}
public static function updateIP($ip, $ban) {
dibi::query('UPDATE ip SET ban=%i', $ban, ', modifikovano=now() WHERE ip=%s', $ip);
}
public static function banIP($ip, $ban) {
dibi::query('UPDATE ip SET ban=%i', $ban, ', modifikovano=now() WHERE ip=%s', $ip);
}
/*
*
*/
public static function delAllTree($id, $table = false) {
if (!$table) {
return false;
} else {
dibi::begin();
$row = dibi::query('SELECT * FROM ' . $table . ' WHERE id=%i', $id)->fetch();
dibi::query('DELETE FROM ', $table, ' WHERE lft >=%i', $row->lft, ' AND rgt <=%i', $row->rgt);
$rozdil = ($row->rgt - $row->lft) + 1;
dibi::query('UPDATE ' . $table . ' SET lft = lft - %i', $rozdil, ' WHERE lft>%i', $row->rgt);
dibi::query('UPDATE ' . $table . ' SET rgt = rgt - %i', $rozdil, ' WHERE rgt>%i', $row->rgt);
dibi::query('DELETE FROM ' . $table . '_popis WHERE main_id=%i', $row->id);
//dibi::query('DELETE FROM ' . $table . '_navsteva WHERE id=%i', $row->id);
dibi::commit();
return true;
}
}
public static function delete($id, $table = false) {
if (!$table) {
return false;
} else {
try {
dibi::delete($table)->where('id = %i', $id)->execute();
if (dibi::affectedRows() == 0) {
Tools::message(Query::$NOT_EXISTS);
return false;
}
else {
return true;
}
} catch (Exception $e) {
switch ($e->getCode()) {
case 1451:
Tools::message(Query::$REFERENCE_TROUBLE);
//NDebugger::dump($e);
break;
default:
Tools::message($e, 'ERR');
break;
}
return false;
}
}
}
public static function povolit($id, $table = false) {
if (!$table) {
return false;
} else {
$victim = dibi::query('SELECT lft, rgt FROM ' . $table . ' WHERE id = %i', $id, ' LIMIT 1')->fetch();
if ($victim['lft'] == $victim['rgt'] - 1) {
$result = dibi::query('UPDATE ' . $table . '_popis SET stav=1 WHERE main_id=%i', $id);
} else {
$q = dibi::query('SELECT id FROM ' . $table . ' WHERE lft >= %i', $victim['lft'], ' AND rgt <=%i', $victim['rgt'])->fetchAll();
foreach ($q as $id) {
$result = dibi::query('UPDATE ' . $table . '_popis SET stav=1 WHERE main_id=%i', $id);
}
}
if (isset($result)) {
return true;
}
else
return false;
}
}
public static function povolitSingle($id, $table = false) {
if (!$table) {
return false;
} else {
$result = dibi::query('UPDATE ' . $table . ' SET stav=1 WHERE id=%i', $id);
if (isset($result)) {
return true;
}
else
return false;
}
}
public static function zakazatSingle($id, $table = false) {
if (!$table) {
return false;
} else {
$result = dibi::query('UPDATE ' . $table . ' SET stav=0 WHERE id=%i', $id);
if (isset($result)) {
return true;
}
else
return false;
}
}
public static function zmenaStavu($id = false, $column = false, $table = false) {
if (!$id || !$column || !$table) {
return false;
} else {
$result = dibi::query('UPDATE ' . $table . ' SET ' . $column . ' = NOT ' . $column . ' WHERE id=%i', $id);
if (isset($result)) {
return true;
}
else
return false;
}
}
public static function zakazat($id, $table = false) {
if (!$table) {
return false;
} else {
$victim = dibi::query('SELECT lft, rgt FROM ' . $table . ' WHERE id = %i', $id, ' LIMIT 1')->fetch();
if ($victim['lft'] == $victim['rgt'] - 1) {
$result = dibi::query('UPDATE ' . $table . '_popis SET stav=0 WHERE main_id=%i', $id);
} else {
$q = dibi::query('SELECT id FROM ' . $table . ' WHERE lft >= %i', $victim['lft'], ' AND rgt <=%i', $victim['rgt'])->fetchAll();
foreach ($q as $id) {
$result = dibi::query('UPDATE ' . $table . '_popis SET stav=0 WHERE main_id=%i', $id);
}
}
if (isset($result)) {
return true;
}
else
return false;
}
}
public static function moveUp($id = 0, $kategorie = false) {
if (!$kategorie) {
return false;
}
$id = intval($id);
$query = "SELECT * FROM {$kategorie} WHERE id = $id";
$row = mysql_fetch_assoc(mysql_query($query));
$query = "SELECT * FROM {$kategorie} WHERE lft < $row[lft] AND hloubka = $row[hloubka] AND parent_id = $row[parent_id] ORDER BY lft DESC LIMIT 1";
$result = mysql_query($query);
//echo $query . "<br />";
if (mysql_numrows($result) > 0) {
$pribuzny = mysql_fetch_assoc($result);
$lft = $pribuzny["lft"];
$hloubka = $pribuzny["hloubka"];
$rozdil = $row["rgt"] - $row["lft"] + 1;
if ($lft > $row["lft"]) {
$lft -= $rozdil;
}
if ($lft != $row["lft"]) {
$min_lft = min($lft, $row["lft"]);
$max_rgt = max($lft + $rozdil - 1, $row["rgt"]);
$posun = $lft - $row["lft"];
if ($lft > $row["lft"]) {
$rozdil = -$rozdil;
}
mysql_query("UPDATE {$kategorie}
SET hloubka = hloubka + IF(@podkategorie := lft >= $row[lft] AND rgt <= $row[rgt], " . ($hloubka - $row["hloubka"]) . ", 0),
lft = lft + IF(@podkategorie, $posun, IF(lft >= $min_lft, $rozdil, 0)),
rgt = rgt + IF(@podkategorie, $posun, IF(rgt <= $max_rgt, $rozdil, 0))
WHERE rgt >= $min_lft AND lft <= $max_rgt");
return true;
}
} else {
return false;
}
}
public static function moveDown($id = 0, $kategorie = false) {
if (!$kategorie) {
return false;
}
$id = intval($id);
$query = "SELECT * FROM {$kategorie} WHERE id = $id";
$row = mysql_fetch_assoc(mysql_query($query));
$query = "SELECT * FROM {$kategorie} WHERE lft > $row[lft] AND hloubka = $row[hloubka] AND parent_id = $row[parent_id] ORDER BY lft ASC LIMIT 1";
$result = mysql_query($query);
//echo $query . "<br />";
if (mysql_numrows($result) > 0) {
$pribuzny = mysql_fetch_assoc($result);
$lft = $pribuzny["lft"];
$hloubka = $pribuzny["hloubka"];
$rozdil = $row["rgt"] - $row["lft"] + 1;
if ($pribuzny["lft"] != $row["lft"]) {
$min_lft = min($pribuzny["lft"], $row["lft"]);
//echo "min lft->" . $min_lft . "<br />";
$min_lft = min($pribuzny["lft"], $row["lft"]);
$max_rgt = max($pribuzny['rgt'], $row["rgt"]);
//$max_rgt = max($pribuzny['rgt'],$row["rgt"]);
// echo "max rgt->" . $max_rgt . "<br />";
$posun = $pribuzny["rgt"] - $row["rgt"];
// echo "posun->" . $posun . "<br />";
if ($pribuzny["lft"] > $row["lft"]) {
$rozdil = -$rozdil;
//echo "rozdil->" . $rozdil . "<br />";
}
mysql_query("UPDATE {$kategorie}
SET hloubka = hloubka + IF(@podkategorie := lft >= $row[lft] AND rgt <= $row[rgt], " . ($hloubka - $row["hloubka"]) . ", 0),
lft = lft + IF(@podkategorie, $posun, IF(lft >= $min_lft, $rozdil, 0)),
rgt = rgt + IF(@podkategorie, $posun, IF(rgt <= $max_rgt, $rozdil, 0))
WHERE rgt >= $min_lft AND lft <= $max_rgt"
);
return true;
}
} else {
return false;
}
}
public static function pridatPopis($arr, $table = false) {
if (!$table) {
return false;
}
$result = dibi::query('INSERT INTO ', $table, ' ', $arr);
if ($result) {
$_SESSION['message_ok'][] = "Uložení proběhlo v pořádku.";
return dibi::insertId();
} else {
$_SESSION['message_ko'][] = "Úprava neproběhla.";
return false;
}
}
public static function insert($arr, $table = false) {
if (!$table) {
return false;
}
$result = dibi::query('INSERT INTO ', $table, ' ', $arr);
if ($result) {
//NDebugger::dump($result);NDebugger::dump(dibi::insertId());exit;
return dibi::insertId();
} else {
//$_SESSION['message_ko'][] = "Úprava neproběhla.";
return false;
}
}
public static function insertRating($arr, $table = false) {
if (!$table) {
return false;
}
//$result = dibi::query('INSERT INTO ', $table, ' ', $arr, ' ON DUPLICATE KEY UPDATE');
/*
dibi::test("
INSERT INTO $table
VALUES($arr[id_produktu], 1, $arr[hodnoceni], $arr[hodnoceni])
ON DUPLICATE KEY UPDATE
pocet_hodnoceni=pocet_hodnoceni+1,
celkem_znamka=celkem_znamka+$arr[hodnoceni],
hodnoceni=celkem_znamka/pocet_hodnoceni");
*
*/
return dibi::query("
INSERT INTO $table
VALUES($arr[id_produktu], 1, $arr[hodnoceni], $arr[hodnoceni])
ON DUPLICATE KEY UPDATE
pocet_hodnoceni=pocet_hodnoceni+1,
celkem_znamka=celkem_znamka+$arr[hodnoceni],
hodnoceni=celkem_znamka/pocet_hodnoceni");
}
public static function updatePopis($arr, $table = false) {
if (!$table) {
return false;
}
$result = dibi::query('UPDATE ', $table, ' SET ', $arr, 'WHERE `id`=%i', $arr['id'], ' AND lang=%i', $arr['lang']);
//exit;
if ($result) {
Tools::message('Úprava proběhla v pořádku', 'OK');
return true;
} else {
Tools::message('Úprava neproběhla', 'ERR');
return false;
}
}
public static function buildHtmlElementParams($id = false, $table = false, $id_of_victim = false) {
if (!$id) {
return false;
}
$params = dibi::query('SELECT * FROM parametry a LEFT JOIN parametry_prirazeni b
ON a.id = b.id
WHERE b.id_kategorie = %i', $id, ' AND a.varianty=0 ORDER BY a.id ')->fetchAll();
if ($table && $id_of_victim) {
$params_of_victim = dibi::query('SELECT id_parametru, id_hodnoty_parametru FROM ', $table, ' WHERE id_katalog=%i', $id_of_victim)->fetchAll();
} else {
foreach ($_GET as $name => $value) {
//element name - "parametr-"+id parametru
if (preg_match('/^par/', $name)) {
$id_parametru = explode('par-', $name);
$p['id_parametru'] = $id_parametru[1];
if (is_array($value)) {
foreach ($value as $v) {
if (!empty($v)) {
$p['id_hodnoty_parametru'] = $v;
}
}
} else {
if (!empty($value)) {
$p['id_hodnoty_parametru'] = $value;
}
}
}
}
}
foreach ($params as $n):
$values = dibi::query('SELECT * FROM parametry_hodnoty WHERE id_parametru = %i', $n->id)->fetchAll();
?>
<p>
<label><?php echo $n->nazev; ?></label><br />
<?php
switch ($n->typ_admin) {
case 1:
echo '<select class="small-input" name="par-' . $n->id . '">';
//echo '<option>-- Default --</option>';
foreach ($values as $v):
$selected = '';
if (isset($params_of_victim)) {
foreach ($params_of_victim as $p) {
if ($n->id == $p['id_parametru'] && $v->id == $p['id_hodnoty_parametru']) {
$selected = 'selected="selected"';
}
}
}
echo '<option value="' . $v->id . '" ' . $selected . ' >' . $v->nazev . '</option>';
endforeach;
echo '</select>';
break;
case 2:
foreach ($values as $v):
$selected = '';
if (isset($params_of_victim)) {
foreach ($params_of_victim as $p) {
if ($n->id == $p['id_parametru'] && $v->id == $p['id_hodnoty_parametru']) {
$selected = 'checked';
}
}
}
echo '<label>' . $v->nazev . '</label>';
echo '<input type="checkbox" name="par-' . $n->id . '[]" value="' . $v->id . '" ' . $selected . ' />';
endforeach;
break;
case 3:
foreach ($values as $v):
echo '<label>' . $v->nazev . '</label>';
echo '<input type="text" name="par-' . $n->id . '[]" value="" />';
endforeach;
break;
case 4:
foreach ($values as $v):
$selected = '';
if (isset($params_of_victim)) {
foreach ($params_of_victim as $p) {
if ($n->id == $p['id_parametru'] && $v->id == $p['id_hodnoty_parametru']) {
$selected = 'checked';
}
}
}
echo '<label>' . $v->nazev . '</label>';
echo '<input type="radio" name="par-' . $n->id . '" value="' . $v->id . '" ' . $selected . ' />';
endforeach;
break;
}
?>
</p>
<br /><br />
<?php
endforeach;
}
/**
*
* @param type $arr
* @return array of id_parametru->id_hodnoty_parametru
*/
public static function searchForParamsFromUrl($arr = array()) {
foreach ($arr as $name => $value) {
//NDebugger::dump($name);exit;
//element name - "parametr-"+id parametru
if (preg_match('/^par/', $name)) {
$id_parametru = explode('par-', $name);
$p[$id_parametru[1]]['id_parametru'] = $id_parametru[1];
$p[$id_parametru[1]]['id_hodnoty_parametru'] = $value;
}
}
//NDebugger::dump($p);exit;
//echo '<pre>';print_r($p);echo '</pre>';
if (isset($p)) {
return $p;
}
return false;
}
public static function buildHtmlElementFiltersSablona($id = false, $parametryVUrl = false) {
if (!$id) {
return false;
}
if ($parametryVUrl) {
$parametryVUrl = Query::searchForParamsFromUrl($parametryVUrl);
}
// Najdu povolene filtry a prirazene konkretni galerii
$params = dibi::query('SELECT * FROM parametry a LEFT JOIN parametry_prirazeni b
ON a.id = b.id
WHERE b.id_kategorie = %i', $id, ' AND a.filtrovat = 1 ORDER BY a.id ');
if (count($params) < 1) {
return false;
} else {
echo '<form method="get" action="" >';
}
foreach ($params as $n):
// Najdu prirazene hodnoty konkretnimu parametru a vytvorim box
$values = dibi::query('SELECT * FROM parametry_hodnoty WHERE id_parametru = %i', $n->id)->fetchAll();
//print_r(count($values));
if (count($values) > 0):
switch ($n->typ) {
case 1:
echo '<select name="par-' . $n->id . '" id="select' . $n->id . '" onChange="this.form.submit();" >';
echo '<option value="" name="">-- ' . $n->nazev . ' --</option>';
foreach ($values as $v):
$selected = '';
if (isset($parametryVUrl) && !empty($parametryVUrl)) {
foreach ($parametryVUrl as $p) {
if ($n->id == $p['id_parametru'] && $v->id == $p['id_hodnoty_parametru']) {
$selected = 'selected="selected"';
}
}
}
echo '<option value="' . $v->id . '" ' . $selected . ' >' . $v->nazev . '</option>';
endforeach;
echo '</select>';
break;
case 2:
foreach ($values as $v):
$selected = '';
if (isset($parametryVUrl)) {
foreach ($parametryVUrl as $p) {
if ($n->id == $p['id_parametru'] && $v->id == $p['id_hodnoty_parametru']) {
$selected = 'checked';
}
}
}
echo '<label>' . $v->nazev . '</label>';
echo '<input type="checkbox" name="par-' . $n->id . '[]" value="' . $v->id . '" ' . $selected . ' />';
endforeach;
break;
case 3:
foreach ($values as $v):
echo '<label>' . $v->nazev . '</label>';
echo '<input type="text" name="par-' . $n->id . '[]" value="" />';
endforeach;
break;
case 4:
foreach ($values as $v):
$selected = '';
if (isset($parametryVUrl)) {
foreach ($parametryVUrl as $p) {
if ($n->id == $p['id_parametru'] && $v->id == $p['id_hodnoty_parametru']) {
$selected = 'checked';
}
}
}
echo '<label>' . $v->nazev . '</label>';
echo '<input type="radio" name="par-' . $n->id . '" value="' . $v->id . '" ' . $selected . ' />';
endforeach;
break;
}
endif;
?>
<?php
endforeach;
//echo '<input type="hidden" id="filtruj" />';
//echo '<input class="button" type="submit" id="filtruj" />';
echo '</form>';
}
public static function buildHtmlElementFilters($id = false, $table = false, $parametryVUrl = false) {
if (!$id) {
return false;
}
if ($parametryVUrl) {
$parametryVUrl = Query::searchForParamsFromUrl($parametryVUrl);
}
// Najdu povolene filtry a prirazene konkretni galerii
$params = dibi::query('SELECT * FROM parametry a LEFT JOIN parametry_prirazeni b
ON a.id = b.id
WHERE b.id_kategorie = %i', $id, ' AND a.filtrovat = 1 ORDER BY a.id ');
if (count($params) < 1) {
return false;
} else {
echo '<form method="get" action="" >';
}
foreach ($params as $n):
// Najdu prirazene hodnoty konkretnimu parametru a vytvorim box
$values = dibi::query('SELECT * FROM parametry_hodnoty WHERE id_parametru = %i', $n->id)->fetchAll();
//print_r(count($values));
?>
<p>
<?php if (count($values) > 0): ?>
<label><?php echo $n->nazev; ?></label><br />
<?php
switch ($n->typ) {
case 1:
echo '<select class="small-input" name="parametr-' . $n->id . '">';
//echo '<option value="">-- Default --</option>';
foreach ($values as $v):
$selected = '';
if (isset($parametryVUrl)) {
foreach ($parametryVUrl as $p) {
if ($n->id == $p['id_parametru'] && $v->id == $p['id_hodnoty_parametru']) {
$selected = 'selected="selected"';
}
}
}
echo '<option value="' . $v->id . '" ' . $selected . ' >' . $v->nazev . '</option>';
endforeach;
echo '</select>';
break;
case 2:
foreach ($values as $v):
$selected = '';
if (isset($parametryVUrl)) {
foreach ($parametryVUrl as $p) {
if ($n->id == $p['id_parametru'] && $v->id == $p['id_hodnoty_parametru']) {
$selected = 'checked';
}
}
}
echo '<label>' . $v->nazev . '</label>';
echo '<input type="checkbox" name="parametr-' . $n->id . '[]" value="' . $v->id . '" ' . $selected . ' />';
endforeach;
break;
case 3:
foreach ($values as $v):
echo '<label>' . $v->nazev . '</label>';
echo '<input type="text" name="parametr-' . $n->id . '[]" value="" />';
endforeach;
break;
case 4:
foreach ($values as $v):
$selected = '';
if (isset($parametryVUrl)) {
foreach ($parametryVUrl as $p) {
if ($n->id == $p['id_parametru'] && $v->id == $p['id_hodnoty_parametru']) {
$selected = 'checked';
}
}
}
echo '<label>' . $v->nazev . '</label>';
echo '<input type="radio" name="parametr-' . $n->id . '" value="' . $v->id . '" ' . $selected . ' />';
endforeach;
break;
}
endif;
?>
</p>
<br /><br />
<?php
endforeach;
echo '<input type="hidden" id="filtruj" />';
echo '<input class="button" type="submit" id="filtruj" />';
echo '</form>';
echo '<br /><br />';
}
public static function getLast($lang = 1, $count = '1', $table = false) {
if (!$table) {
return false;
}
$query = "
SELECT a.id AS id_kategorie, b.id AS id, a.hloubka, b.nazev AS nazev, b.seo_nazev, b.seo_url,
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, b.obrazek AS hlavni_fotka, IFNULL(d.pocet, 0) navstevnost
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
LEFT JOIN " . $table . "_navsteva d
ON d.id = b.id
WHERE b.lang = '" . $lang . "'
ORDER BY b.datum DESC
LIMIT $count
";
return dibi::query($query)->fetchAll();
}
/**
*
*/
public static function getPremium($lang = 1, $count = '1', $table = false) {
if (!$table) {
return false;
}
$query = "
SELECT a.id AS id_kategorie, b.id AS id, a.hloubka, b.nazev AS nazev, b.seo_nazev, b.seo_url,
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, b.obrazek AS hlavni_fotka, IFNULL(d.pocet, 0) navstevnost
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
LEFT JOIN " . $table . "_navsteva d
ON d.id = b.id
WHERE b.lang = '" . $lang . "'
AND b.premium = 1
ORDER BY b.datum DESC
LIMIT $count
";
return dibi::query($query)->fetchAll();
}
public static function getLastNovinky($lang = 1, $count = '1') {
$query = "
SELECT a.id AS id_kategorie, b.id AS id, a.hloubka, b.nazev AS nazev, b.seo_nazev, b.seo_url,
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, b.obrazek AS hlavni_fotka, IFNULL(d.pocet, 0) navstevnost
FROM novinky AS a
LEFT JOIN novinky_popis AS b
ON a.id = b.main_id
LEFT JOIN jazyk c
ON c.id = b.lang
LEFT JOIN novinky_navsteva d
ON d.id = b.id
WHERE
b.lang = '" . $lang . "'
ORDER BY b.datum DESC
LIMIT $count
";
return dibi::query($query)->fetchAll();
}
/**
* @var id
*/
public static function getCountOfPremium($table = false) {
if (!$table) {
return false;
}
return dibi::query('SELECT COUNT(id) FROM ', $table, ' WHERE premium = 1')->fetchSingle();
}
/**
* Vraci existujici jazykove mutace pro danou tabulku
* @var id - id kategorie
* @var table
*/
public static function getLanguageFlags($id, $table) {
$flags = dibi::query("SELECT kp.lang, j.nazev, j.obrazek FROM {$table}_popis kp LEFT JOIN jazyk j ON j.id = kp.lang WHERE kp.main_id = %i", $id, ' ORDER BY j.id')->fetchAll();
if ($flags) {
return $flags;
} else {
return false;
}
}
public static function youtube($string) {
return preg_replace(
'#(http://(www.)?youtube.com)?/(v/|watch\?v\=)([-|~_0-9A-Za-z]+)&?.*?#i', '<iframe title="YouTube video player" width="480" height="390" src="http://www.youtube.com/embed/$4" frameborder="0" allowfullscreen></iframe>', $string
);
/*
echo Query::youtube('http://www.youtube.com/watch?v=VWsjWCt1PsQ');
echo Query::youtube('http://youtube.com/watch?v=VWsjWCt1PsQ');
echo Query::youtube('http://youtube.com/v/VWsjWCt1PsQ');
echo Query::youtube('http://www.youtube.com/v/VWsjWCt1PsQ');
*/
}
}
ACC SHELL 2018