<?php
class widgetTemplate extends cmsWidget {

    public $is_cacheable = false;

    public function run(){

        $logos = [];
        $messages = [];
        $template = cmsTemplate::getInstance();
        $config   = cmsConfig::getInstance();

        $type = $this->getOption('type');

        if($type === 'body'){
            if(!$template->isBody() || $template->isBodyDisplayed()){
                return false;
            }
        } elseif($type === 'breadcrumbs') {
            if(!cmsConfig::get('show_breadcrumbs') || !cmsCore::getInstance()->uri || !$template->isBreadcrumbs()){
                return false;
            }
        } elseif($type === 'smessages') {

            $messages = cmsUser::getSessionMessages();

            if($this->options['session_type'] === 'toastr'){

                $template->addTplCSSName(['toastr']);
                $template->addTplJSName(['vendors/toastr/toastr.min']);

                $position_class = 'toast-' . ($this->options['session_pos'] ?? 'top-right');

                ob_start(); ?>
                <script>
                    toastr.options = {progressBar: true, preventDuplicates: true, timeOut: 20000, newestOnTop: true, closeButton: true, hideDuration: 400, positionClass: "<?php echo $position_class; ?>"};
                    <?php if ($messages){ ?>
                        $(function(){
                        <?php foreach($messages as $message){ ?>
                            toastr.<?php echo $message['class']; ?>('<?php echo str_replace(["\n", "'"], ' ', $message['text']); ?>');
                         <?php } ?>
                        });
                     <?php } ?>
                </script>
                <?php $template->addBottom(ob_get_clean());

                // Чтобы не выводилась пустая позиция в виджете
                return false;
            }

        } elseif($type === 'site_closed') {
            if ($config->is_site_on){
                return false;
            }
        } elseif($type === 'logo') {

            $logo_wd = $this->getOption('logo', []);

            if(empty($logo_wd['file'])){

                $logos['logo'] = $template->getTemplateFilePath('images/logo.svg');
                $logos['small_logo'] = $template->getTemplateFilePath('images/small_logo.svg');

                // Растр
                $r_logo_file = $template->getOption('logo');
                if ($r_logo_file){
                    $logos['logo'] = $config->upload_root . $r_logo_file['original'];
                }
                $r_logo_small_file = $template->getOption('logo_small');
                if ($r_logo_small_file){
                    $logos['small_logo'] = $config->upload_root . $r_logo_small_file['original'];
                }
                // SVG
                $logo_svg_file = $template->getOption('logo_svg');
                if ($logo_svg_file){
                    $logos['logo'] = $config->upload_root . $logo_svg_file['path'];
                }
                $logo_small_svg_file = $template->getOption('logo_small_svg');
                if ($logo_small_svg_file){
                    $logos['small_logo'] = $config->upload_root . $logo_small_svg_file['path'];
                }
            } else {

                $logos['logo'] = $template->getTemplateFilePath('images/'.$logo_wd['file']);

                if(!empty($logo_wd['file_small'])){
                    $logos['small_logo'] = $template->getTemplateFilePath('images/'.$logo_wd['file_small']);
                }
            }

        } elseif($type === 'lang_select') {
            if(!$config->is_user_change_lang){
                return false;
            }
            $current_lang = cmsCore::getLanguageName();
            $langs = cmsCore::getLanguages();
        }

        return [
            'core'         => cmsCore::getInstance(),
            'config'       => $config,
            'logos'        => $logos,
            'current_lang' => isset($current_lang) ? $current_lang : '',
            'langs'        => isset($langs) ? $langs : [],
            'messages'     => $messages
        ];

    }

}
