ACC SHELL

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

<?php

/**
 *
 * @version 1.0
 * @copyright 4.3.2012
 */
class Reklama {

    function __construct() {

    }

    public function update($arr, $table=false) {
	if (!$table) {
	    return false;
	}
	$result = dibi::query('UPDATE ', $table, ' SET ', $arr, 'WHERE `id`=%i', $arr['id']);

	if ($result) {
	    $_SESSION['message_ok'][] = "Úprava proběhla v pořádku.";
	    return true;
	} else {
	    $_SESSION['message_ko'][] = "Úprava neproběhla.";
	    return false;
	}
    }

    public function fetchSingle($id) {
	if (intval($id) == 0) {
	    return false;
	}
	//return dibi::query('SELECT * FROM reklama a LEFT JOIN reklama_obsah b ON a.id=b.main_id WHERE a.id=%i', $id, ' ORDER BY priorita ASC')->fetchAll();
	return dibi::select('id, nazev, umisteni, typ, typ*1 AS typ_id, obsah, stav, id_zvolene_kat')->from('reklama')->where('id=%i', $id)->fetch();
    }

    public function fetchDetail($id, $lang = 1) {
	if (intval($id) == 0) {
	    return false;
	}
	return dibi::query('SELECT * FROM reklama a LEFT JOIN reklama_obsah b ON a.id=b.main_id WHERE a.id=%i', $id, ' AND b.lang=%i', $lang, ' ORDER BY b.priorita ASC')->fetchAll();
	//return dibi::select('id, nazev, umisteni, typ, typ*1 AS typ_id, obsah, stav, id_zvolene_kat')->from('reklama')->where('id=%i', $id)->fetch();
    }

    /**
     *
     * @param type $id id banneru ulozeneho v DB
     * @param type $lang
     * @return type
     */
    public function fetchSingleBanner($id, $lang = 1) {
	if (intval($id) == 0) {
	    return false;
	}
	return dibi::query('SELECT * FROM reklama_obsah WHERE banner_id=%i', $id, ' AND lang=%i', $lang, ' LIMIT 1')->fetch();
    }

    public function fetchAll() {

	return dibi::select('*')->from('reklama')->fetchAll();
    }

    public function delete($id) {

	dibi::query('DELETE FROM reklama WHERE id=%i', $id);
	dibi::query('DELETE FROM reklama_obsah WHERE main_id=%i', $id);
	dibi::query('DELETE FROM reklama_prirazeni WHERE id_reklamy=%i', $id);

	return true;
    }

    /**
     *
     * @param type $id id reklamy
     * @param type $kategorie id kategorie, ktere prirazuju reklamu
     * @param type $subkategorie - true pokud prirazuju i podkategoriim
     */
    public function insertPrirazeni($id, $kategorie, $subkategorie = false) {
	$prirazeni['id_reklamy'] = $id;

	$Kategorie = new Kategorie();
	// default == priradit vsem
	if ($kategorie == 'default') {

	    $parents = dibi::query('SELECT main_id FROM kategorie_popis WHERE id>9')->fetchAll();
	    foreach ($parents as $id_kategorie):
		if ($id_kategorie == ID_KATEGORIE_UVOD) {
		    $prirazeni['id_kategorie'] = '1';
		} else {
		    $prirazeni['id_kategorie'] = $id_kategorie;
		}
		dibi::query('INSERT IGNORE INTO reklama_prirazeni ', $prirazeni);
	    endforeach;
	} else {
	    // Zvolena reklama bud platit i pro vnorene kategorie
	    if ($subkategorie) {
		$parents = $Kategorie->getNodes($kategorie);
		foreach ($parents as $id_kategorie):
		    if ($id_kategorie == ID_KATEGORIE_UVOD) {
			$prirazeni['id_kategorie'] = '1';
		    } else {
			$prirazeni['id_kategorie'] = $id_kategorie;
		    }

		    dibi::query('INSERT IGNORE INTO reklama_prirazeni ', $prirazeni);
		endforeach;
	    }
	    // Reklama bude platna jen pro zvolenou kategorii
	    else {

		if (kategorie == ID_KATEGORIE_UVOD) {
		    $prirazeni['id_kategorie'] = '1';
		} else {
		    $prirazeni['id_kategorie'] = $kategorie;
		}
		dibi::query('INSERT IGNORE INTO reklama_prirazeni ', $prirazeni);
	    }
	}
    }

    public function deletePrirazeni($id, $id_prirazeni) {
	if (intval($id) == 0 && isset($id_prirazeni)) {
	    if (dibi::query('DELETE FROM reklama_prirazeni WHERE id=%i', $id_prirazeni)) {
		return true;
	    }
	} else {
	    if (dibi::query('DELETE FROM reklama_prirazeni WHERE id_reklamy=%i', $id)) {
		return true;
	    }
	}

	return false;
    }

    public function deleteObsah($id) {
	$file = dibi::query('SELECT nazev FROM reklama_obsah WHERE id=%i', $id)->fetchSingle();
	if (dibi::query('DELETE FROM reklama_obsah WHERE banner_id=%i', $id)) {
	    unlink(ROOT . REKLAMA_CESTA . $file);
	    //NDebugger::dump(ROOT.REKLAMA_CESTA.$file);exit;
	    return true;
	} else {
	    return false;
	}
    }

    public function fetchPrirazeni($id) {
	if (intval($id) == 0) {
	    return false;
	}
	return dibi::query('
            SELECT b.main_id id_kategorie, b.nazev, a.id, c.nazev as typ
            FROM reklama_prirazeni a
            LEFT JOIN kategorie_popis b ON a.id_kategorie=b.main_id
            LEFT JOIN kategorie_typ c ON b.typ=c.id
            WHERE b.lang=1 AND a.id_reklamy=%i', $id)->fetchAll();
    }

    public function moveUp($id, $table) {
	if (intval($id) == 0) {
	    return false;
	}
	$my = dibi::query('SELECT main_id, priorita FROM reklama_obsah WHERE id=%i', $id, ' LIMIT 1')->fetch();
	//NDebugger::dump($my);
	if ($my) {
	    $switch = dibi::query('SELECT id, priorita FROM reklama_obsah WHERE priorita<%i', $my->priorita, ' AND main_id=%i', $my->main_id, ' ORDER BY priorita DESC LIMIT 1')->fetch();
	    //NDebugger::dump($switch);
	    if ($switch) {
		dibi::query('UPDATE reklama_obsah SET priorita=%i', $switch->priorita, ' WHERE banner_id=%i', $id);
		dibi::query('UPDATE reklama_obsah SET priorita=%i', $my->priorita, ' WHERE banner_id=%i', $switch->id);
		return true;
	    } else {
		return false;
	    }
	} else {
	    return false;
	}
    }

    public function moveDown($id, $table) {
	if (intval($id) == 0) {
	    return false;
	}
	$my = dibi::query('SELECT main_id, priorita FROM reklama_obsah WHERE id=%i', $id, ' LIMIT 1')->fetch();
	//NDebugger::dump($my);
	if ($my) {
	    $switch = dibi::query('SELECT id, priorita FROM reklama_obsah WHERE priorita>%i', $my->priorita, ' AND main_id=%i', $my->main_id, ' ORDER BY priorita ASC LIMIT 1')->fetch();
	    //NDebugger::dump($switch);
	    if ($switch) {
		dibi::query('UPDATE reklama_obsah SET priorita=%i', $switch->priorita, ' WHERE banner_id=%i', $id);
		dibi::query('UPDATE reklama_obsah SET priorita=%i', $my->priorita, ' WHERE banner_id=%i', $switch->id);
		return true;
	    } else {
		return false;
	    }
	} else {
	    return false;
	}
    }

}

ACC SHELL 2018