ACC SHELL

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

<?php

class Newsletter extends Messages {

    public $id = "";
    public $nazev = "";
    public $predmet = "";
    public $text = "";
    public $odeslano = "";
    public $datum_odeslani = "";
    public $totalpages = 0;
    public $pagesize = 30;
    public $recordstart = 0;

    function __construct() {
	
    }

    public function getAdminTable($id = NULL, $table = 'newsletter', $navigace = '1') {
	if (isset($_SESSION['listuj']))
	    $this->pagesize = $_SESSION['listuj'];

	if (isset($_GET['recordstart']) && $navigace == '1') {
	    $this->recordstart = (isset($_GET['recordstart'])) ? (int) $_GET['recordstart'] : 0;
	}
	else
	    $this->recordstart = 0;

	$query = 'SELECT * FROM newsletter ORDER BY datum_vytvoreni ASC';


	$num_rows = dibi::query($query)->count();

	if ($num_rows > $this->pagesize) {
	    $query .= " LIMIT $this->recordstart, $this->pagesize";
	}


	$pole = dibi::query($query)->fetchAll();
	//NDebugger::dump($pole);
	$this->totalpages = ceil($num_rows / $this->pagesize);
	$this->currentpage = ($this->recordstart / $this->pagesize) + 1;


	if ($num_rows == 0) {
	    echo '<tr><td colspan="8">Nejsou založeny žádné newslettery.</td></tr>';
	} else {
	    foreach ($pole as $row) {

		echo "<tr>";
		echo '<td><input type="checkbox" name="checkbox[]" value="' . $row['id'] . '" id="" ></td>';

		/* SLOUPEC - Nazev newsletteru */
		echo "<td>";
		echo "<a href=\"{$table}_edit.php?id={$row['id']}\">" . $row['nazev'] . "</a>";
		echo '<br /><span class="url">' . addHttpToUrl(SERVER_NAME . '/newsletter/' . $row['id']) . '</span>';
		echo "</td>";

		/* KONEC Sloupce - Nazev newsletteru */

		/* Sloupec DATUM vytvoreni */
		echo '<td>' . datum($row['datum_vytvoreni']) . "</td>";
		/* KONEC Sloupec DATUM vytvoreni */

		/* Sloupec DATUM odeslani */
		echo '<td>';
		echo isset($row['datum_odeslani']) ? datum($row['datum_odeslani']) : '';
		echo '</td>';
		/* KONEC Sloupec DATUM odeslani */

		/* Sloupec AKCE */
		echo "<td>";
		// AKCE - editace kategorie
		echo "<a href=\"{$table}_edit.php?id=" . $row['id'] . "\" title=\"Editovat\"><img src=\"images/iko/note_edit.png\" alt=\"Editovat\" /></a>";
		// AKCE - prohlednout kategorii
		echo "<a href=\"{$table}_show.php?id=" . $row['id'] . "\" title=\"Zobrazit\"><img src=\"images/iko/computer.png\" alt=\"Zobrazit\" /></a>";
		// AKCE - smazat kategorii
		echo '<a href="?smazat=' . $row['id'] . '" class="potvrzujiciLink" title="Smazat"><img src="images/iko/remove.png" alt="Smazat" /></a>';

		/* KONEC Sloupec AKCE */
		echo "</td></tr>";
	    }
	}
    }

    /*
     * @var nazev
     * @var predmet
     * @var obsah
     * @datum_vytvoreni
     */

    public function pridatNewsletter($arr) {

	$valid = true;
	if (trim($arr['nazev']) == NULL) {
	    $_SESSION['message_ko'][] = "Newsletter musí mít název";
	    $valid = false;
	}
	if (trim($arr['predmet']) == NULL) {
	    $_SESSION['message_ko'][] = "Newsletter musí mít předmět";
	    $valid = false;
	}
	if (trim($arr['text']) == NULL) {
	    $_SESSION['message_ko'][] = "Newsletter musí mít obsah";
	    $valid = false;
	}

	if ($valid == true) {
	    $result = dibi::query('INSERT INTO newsletter', $arr);
	    $id = dibi::getInsertId();

	    if ($result) {
		$_SESSION['message_ok'][] = "Uložení newsletteru proběhlo v pořádku.";
		//$this->logEvent("Založení newsletteru - Uložení newsletteru \"$nazev\" proběhlo v pořádku.", $_SESSION['user']['username']);
	    } else {
		//$this->logEvent("Založení newsletteru - Problém se založením newsletteru $nazev.", $_SESSION['user']['username'], $query);
		$_SESSION['message_ko'][] = "Uložení newsletteru neproběhlo.";
	    }

	    return $id;
	} else {
	    return false;
	}
    }

    /*
     * @var nazev
     * @var predmet
     * @var obsah
     * @datum_vytvoreni
     * @id
     */

    public function updateNewsletteru($arr, $id) {
	$valid = true;
	if (trim($arr['nazev']) == NULL) {
	    $_SESSION['message_ko'][] = "Newsletter musí mít název";
	    $valid = false;
	}
	if (trim($arr['predmet']) == NULL) {
	    $_SESSION['message_ko'][] = "Newsletter musí mít předmět";
	    $valid = false;
	}
	if (trim($arr['text']) == NULL) {
	    $_SESSION['message_ko'][] = "Newsletter musí mít obsah";
	    $valid = false;
	}
	if ($valid == true) {
	    $result = dibi::query('UPDATE newsletter SET ', $arr, 'WHERE `id`=%i', $id);

	    if ($result) {
		$_SESSION['message_ok'][] = "Úprava newsletteru proběhla v pořádku.";
		//$this->logEvent("Úprava newsletteru - Uložení newsletteru ".$arr['nazev']." proběhlo v pořádku.", $_SESSION['user']['username']);
	    } else {
		//$this->logEvent("Úprava newsletteru - Problém s úpravou newsletteru ".$arr['nazev'].".", $_SESSION['user']['username'], $query);
		$_SESSION['message_ko'][] = "Úprava newsletteru neproběhla.";
	    }
	}
    }

    public function deleteNewsletter($id = array(), $table = 'newsletter') {
	$pocet = count($id);

	NDebugger::barDump($id, 'pocet prvku v poli');

	if ($pocet != 0) {
	    for ($i = 0; $i < $pocet; $i++) {
		//var_dump($id[$i]);
		$result = dibi::query('DELETE FROM newsletter WHERE [id] = %i', $id[$i]);
		if ($result) {
		    $_SESSION['message_ok'][] = "Vymazání newsletteru č.$id[$i] proběhlo v pořádku.";
		} else {
		    //NDebugger::barDump($result);
		    $_SESSION['message_ko'][] = "Vymazání newsletteru č.$id[$i] neproběhlo.";
		}
	    }
	    Tools::redirect($_SERVER['HTTP_REFERER']);
	} else {
	    $_SESSION['message_ko'][] = "Není co vymazat.";
	}
    }

    public function getInfo($id = false) {
	if (!$id || intval($id) == 0) {
	    return false;
	}
	return dibi::query('SELECT * FROM newsletter WHERE [id] = %i', $id)->fetch();
    }

    public function getNewsletterUsers() {

	$result = dibi::query('SELECT id, email, hash, datum_zalozeni, stav FROM users_newsletter');

	return $result->fetchAll();
    }

    /**
     *
     * @param type $newsletter id odesilaneho newsletteru
     * @param type $prirazeneSkupiny id skupiny ktere je newsletter prirazen
     * @return boolean
     * @throws Exception id newsletteru MUSI byt zadano
     */
    public function odeslatEmail($newsletter, $prirazeneSkupiny = false) {

	//NDebugger::dump($_MSG);
	if (!$newsletter) {
	    throw new Exception(self::NOT_EXIST);
	    return false;
	}
	//$Nusers[] = $this->getNewsletterUsers();

	if ($prirazeneSkupiny) {
	    $Nusers = dibi::query('SELECT * FROM users WHERE group_id IN (%i)', $prirazeneSkupiny)->fetchAll();
	}
	/* 	
	  NDebugger::dump($newsletter);
	  NDebugger::dump($prirazeneSkupiny);
	  NDebugger::Dump($Nusers);
	  exit;

	 */
	/*
	  -- 1. potrebuju skupiny, kterym je nwlst prirazen
	  -- select id_skupiny from newsletter_prirazeni where id_newsletteru=1;

	  -- 2. potrebuju uzivatele, kteri patri do teto skupiny
	  -- select * from users where group_id in (predchozi select);

	  -- 3. mail by mel odejit i vsem z newsletteru ?
	  -- select * from users_newsletter;
	 */

	if (!empty($Nusers)) {
	    $obsah_odeslat = '';
	    $obsah_odeslat .= $newsletter->text;
	    //$obsah_odeslat .= "\n\n";
	    //$obsah_odeslat .= 'Pokud se Vám tento newsletter nezobrazuje správně, klikněte <a href="http://' . SERVER_NAME . '/newsletter/' . $newsletter->id . '" title="Zobrazení newsletteru">zde</a>';
	    //$obsah_odeslat .= "<br /><br />";

	    //$obsah_odeslat .= 'Zasílání newsletterů můžete zrušit <a href="http://' . SERVER_NAME . '/?zrusitnewsletter=' . $v->hash . '" title="Zrušení odběru newsletteru">zde</a>';
	    $obsah_odeslat .= '<center><p style="font-family: Arial; font-size: 11px;">Pokud se Vám email nezobrazuje korektně, můžete si jej prohlédnout ';
	    $obsah_odeslat .= '<a href="http://' . SERVER_NAME . '/newsletter/' . $newsletter->id . '" title="">zde</a>.</p></center>';
	    $obsah_odeslat .= '</body></html>';
	    
//NDebugger::dump($n);
	    $mail = new NMail;
	    $mail->setFrom(EMAIL_FROM);
	    foreach ($Nusers as $n => $v) {
		if (!empty($v->email)) {
		    $mail->addBcc($v->email);    
		}		
	    }
	    if (MARTIN) {
		$mail->addBcc(MARTIN);
	    }
	    $mail->setSubject(html_entity_decode($newsletter->predmet));
	    $mail->setHTMLBody(html_entity_decode($obsah_odeslat));
	    $mail->send();

	    Tools::message('Odeslání newsletteru proběhlo v pořádku.', 'OK');
	}
    }

    /**
     * @var [id] => id parametru
     * @var [id_skupiny] => id skupiny ke ktere bude newsletter prirazen
     */
    public function pridatPrirazeni($id, $id_skupiny = false) {

	$arr = array(
	    'id_newsletteru' => $id,
	    'id_skupiny' => $id_skupiny
	);
	if (!$id_skupiny) {
	    return false;
	}
	try {
	    $result = dibi::query('INSERT INTO newsletter_prirazeni ', $arr);
	} catch (Exception $e) {
	    return false;
	}
	return true;
    }

    /**
     * @var [id] => id newsletteru
     */
    //public function zrusitPrirazeni($id, $id_skupiny = false) {
    public function zrusitPrirazeni($id) {

	$arr['id_newsletteru'] = $id;
	//$arr['id_skupiny'] = $id_skupiny;

	if (!$id) {
	    return false;
	}
	try {
	    $result = dibi::query('DELETE FROM newsletter_prirazeni WHERE id_newsletteru=%i', $arr['id_newsletteru']);
	} catch (Exception $e) {
	    return false;
	}
	return true;
    }

    /**
     * @var [id] => id newsletteru
     * @var [id_skupiny] => id katalogu ke kteremu bude newsletter prirazen
     */
    public function pridatPrirazeniVyrobku($id, $id_skupiny = false) {

	$arr = array(
	    'id_newsletteru' => $id,
	    'id_kategorie' => $id_skupiny
	);
	if (!$id_skupiny) {
	    return false;
	}
	try {
	    $result = dibi::query('INSERT INTO newsletter_prirazeni_kat ', $arr);
	} catch (Exception $e) {
	    return false;
	}
	return true;
    }

    /**
     * @var [id] => id newsletteru
     */
    //public function zrusitPrirazeni($id, $id_skupiny = false) {
    public function zrusitPrirazeniVyrobku($id) {

	$arr['id_newsletteru'] = $id;
	//$arr['id_skupiny'] = $id_skupiny;

	if (!$id) {
	    return false;
	}
	try {
	    $result = dibi::query('DELETE FROM newsletter_prirazeni_kat WHERE id_newsletteru=%i', $arr['id_newsletteru']);
	} catch (Exception $e) {
	    return false;
	}
	return true;
    }

    public function getPrirazeniVyrobku($id = false) {
	if (!$id || intval($id) == 0) {
	    return false;
	}
	return dibi::query('SELECT id_kategorie FROM newsletter_prirazeni_kat WHERE [id_newsletteru] = %i', $id)->fetch();
    }

    public function zrusitRegistraci($hash) {

	$result = dibi::query('DELETE FROM users_newsletter WHERE hash=%s', $hash);

	if ($result) {
	    return true;
	} else {
	    return false;
	}
    }

}


ACC SHELL 2018