ACC SHELL

Path : /srv/www/vhosts/centrumlb/administrace/include/reklama/
File Upload :
Current File : /srv/www/vhosts/centrumlb/administrace/include/reklama/reklama_ulozit.inc

<?php

//NDebugger::dump($_POST);NDebugger::dump($_FILES);exit;
//Typ reklamniho modulu
$arr['typ'] = isset($_POST['typ']) ? $_POST['typ'] : 1;
$arr['modifikace'] = new DateTime;
$arr['id_zvolene_kat'] = isset($_POST['kategorie']) ? $_POST['kategorie'] : 0;

//Nazev reklamniho mista
$arr['nazev'] = NStrings::trim($_POST['nazev']);
if (empty($arr['nazev'])) {
    Tools::message('Reklamní místo musí mít název.', 'ERR');
    return false;
}
//Umisteni v sablone
$arr['umisteni'] = isset($_POST['umisteni']) ? $_POST['umisteni'] : 1;

// Pokud je typ stejny a jedna se o obrazky pak pridam obsah ke stavajicimu
// v jinem pripade prepisu stavajici obsah
if (isset($_POST['id_reklamy']) && !empty($_POST['id_reklamy'])) {
    $arr['id'] = $_POST['id_reklamy'];
    // test na stavajici typ, pokud souhlasi se zvolenym v editaci, pak nahrany obrazek "priplacnu" ke stavajicimu
    $t = dibi::select('typ*1 as typ, obsah')->from('reklama')->where('id=%i', $arr['id'])->fetch();
    if ($t->typ == $arr['typ']) {
	$arr['obsah'] = $_POST['obsah'];
    }
} else {
    $arr['obsah'] = '';
}
$arr['stav'] = isset($_POST['stav']) ? '1' : '0';

switch ($arr['typ']) {
    // samostatna fotka nebo vice fotek
    case 1:
	$allowed_im = array('image/jpg', 'image/jpeg', 'image/png', 'image/gif');
	$pocet_souboru = count($_FILES['file']['tmp_name']);
	for ($i = 0; $i < $pocet_souboru; $i++):
	    if (isset($_FILES['file']) && !empty($_FILES['file'])) {
		if ($_FILES['file']['error'][$i] !== 4) {
		    if (in_array($_FILES['file']['type'][$i], $allowed_im)) {
			$nazev = Tools::generujHeslo() . NStrings::webalize($_FILES['file']['name'][$i], '.');
			$image = NImage::fromFile($_FILES['file']['tmp_name'][$i]);
			//NDebugger::dump($_FILES);NDebugger::dump($pocet_souboru);exit;
			$image->resizeMedium(REKLAMA_F_M_WIDTH, REKLAMA_F_M_HEIGHT, NImage::STRETCH | NImage::ENLARGE);
			if (!is_dir(ROOT . REKLAMA_CESTA)) {
			    mkdir(ROOT . REKLAMA_CESTA, null, true);
			}
			$image->save(ROOT . REKLAMA_CESTA . $nazev);

			$file[$i]['nazev'] = $nazev;
			$file[$i]['url'] = htmlspecialchars($_POST['url_obrazku'][$i]);
			$file[$i]['title'] = htmlspecialchars($_POST['titulek_obrazku'][$i]);
			$file[$i]['obsah'] = htmlspecialchars($_POST['obsah_obrazku'][$i]);
			$file[$i]['priorita'] = $i;
		    } else {
			Tools::message('Obrázek ' . $_FILES['file']['name'][$i] . ' nemá povolený formát.', 'ERR');
		    }
		}
	    } else {
		Tools::message('Obrázek se nepovedlo zpracovat', 'ERR');
		return false;
	    }
	endfor;

	break;
    // slideshow z katalogu
    case 2:
	//$arr['obsah'] = $_POST['katalog'];
	break;
    // flashovy banner
    case 3:
	if ($_FILES['banner']['type'] != 'application/x-shockwave-flash') {
	    $_SESSION['message_ko'][] = 'Zvolený soubor není flash.';
	    return false;
	}

	if (isset($_FILES['banner']) && !empty($_FILES['banner'])) {
	    //$test = explode('.', $_FILES['banner']['tmp_name'];
	    if ($_FILES['banner']['error'] !== 4) {
		$nazev = Tools::generujHeslo() . NStrings::webalize($_FILES['banner']['name'], '.');
		$move = move_uploaded_file($_FILES['banner']['tmp_name'], ROOT . REKLAMA_CESTA . $nazev);
		//$arr['obsah'] .= $nazev . ';' . $_POST['url_obrazku'] . ';' . $_POST['titulek_obrazku'];

		$file[$i]['nazev'] = $nazev;
		$file[$i]['url'] = $_POST['url_obrazku'][$i];
		$file[$i]['title'] = $_POST['titulek_obrazku'][$i];

		if (!$move) {
		    Tools::message('Banner se nepovedlo zpracovat', 'ERR');
		    return false;
		}
		//exit;
	    }
	} else {
	    Tools::message('Banner se nepovedlo zpracovat', 'ERR');
	    return false;
	}
	break;
    // externi reklama (url z google)
    case 4:
	//$arr['obsah'] = $_POST['ext_reklama'];
	break;
}

// Zalozeni reklamy
// 1. jestlize je rodicovsky prvek index, updatuj vsechny zalozene
// 2. jestlize je rodicovsky prvek konkretni kategorie, updatuj vsechny vnorene
//
// Update reklamy
// 3. jestlize je rodicovsky prvek index, updatuj vsechny zalozene, ktere nemaji prirazenou reklamu
// 4. jestlize je rodicovsky prvek konkretni kategorie, updatuj vsechny vnorene, ktere nemaji prirazenou reklamu

$Reklama = new Reklama();

if (isset($arr['id'])) {
    //pro update kategorie potrebuju cislo umisteni a id reklamy
    $Reklama->update($arr, 'reklama');

    if ($_POST['kategorie'] != 'ignore') {
	$Reklama->insertPrirazeni($arr['id'], $arr['id_zvolene_kat'], isset($_POST['plati_pro_vnorene']) ? true : false);
    }
    $num = dibi::query('SELECT max(priorita) FROM reklama_obsah WHERE main_id=%i', $arr['id'])->fetchSingle();
    //NDebugger::dump($num);
    foreach ($file as $f) {
	$f['main_id'] = $arr['id'];
	$f['priorita'] = ++$num;
	//NDebugger::dump($f['priorita']);
	$id = Query::insert($f, 'reklama_obsah');
	dibi::query('UPDATE reklama_obsah SET banner_id=%i', $id, ' WHERE id=%i', $id);
    }
} else {

    $arr['id'] = Query::insert($arr, 'reklama');

    if ($arr['id'] && $_POST['kategorie'] != 'ignore') {
	$Reklama->insertPrirazeni($arr['id'], $arr['id_zvolene_kat'], isset($_POST['plati_pro_vnorene']) ? true : false);
    }

    foreach ($file as $f) {

	$f['main_id'] = $arr['id'];
	$id = Query::insert($f, 'reklama_obsah');
	dibi::query('UPDATE reklama_obsah SET banner_id=%i', $id, ' WHERE id=%i', $id);
	//exit;
    }
}

if (isset($_POST['odeslat_a_zavrit'])) {
    Tools::redirect("reklama.php");
} else {
    Tools::redirect("reklama_show.php?id=" . $arr['id']);
}

ACC SHELL 2018