ACC SHELL
<?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