<?php

namespace Neag\MainBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\HttpFoundation\Response;

class AdminConfigController extends ControllerAbstract
{
    /**
     * @Route("/admin/config")
     * @Template("NeagMainBundle:AdminConfig:index.html.twig")
     */
    public function indexAction()
    {
        $this->sessionStart();
        
        $request = $this->getRequest();               
        
        $DB = $this->get('database_connection');       
        
        $globals = $this->get('globals');

        $form = $this->createFormBuilder()
        ->add(
            'sitename', 'text', Array(
                'label' => 'Название сайта',
                'data' => $globals->getConfigVar('sitename'),
            )
        )
        ->add(
            'domain', 'text', Array(
                'label' => 'Доменное имя',
                'data' => $globals->getConfigVar('domain'),
            )
        )
        ->add(
            'description', 'text', Array(
                'label' => 'Описание',
                'data' => $globals->getConfigVar('description'),
            )
        )
        ->add(
            'generator', 'text', Array(
                'label' => 'Генератор',
                'data' => $globals->getConfigVar('generator'),
            )
        )
        ->add(
            'shorts_on_main', 'text', Array(
                'label' => 'Коротких новостей на главной',
                'data' => $globals->getConfigVar('shorts_on_main', 10),
            )
        )
        ->add(
            'bloggers_on_main', 'text', Array(
                'label' => 'Публикаций из блогов на главной',
                'data' => $globals->getConfigVar('bloggers_on_main', 10),
            )
        )
        ->add(
            'announces_on_main', 'text', Array(
                'label' => 'Анонсов на главной',
                'data' => $globals->getConfigVar('announces_on_main', 3),
            )
        )
        ->add(
            'tag_min_rang', 'text', Array(
                'label' => 'Мин. ранг тега',
                'help' => 'Минимальный ранг тега для отображения в облаке тегов',
                'data' => $globals->getConfigVar('tag_min_rang', 5),
            )
        )
        ->add(
            'tag_max_font', 'text', Array(
                'label' => 'Макс. шрифт тега',
                'help' => 'Максимальный размер шрифта тега для отображения в облаке тегов',
                'data' => $globals->getConfigVar('tag_max_font', 26),
            )
        )
        ->add(
            'tag_delimiter', 'text', Array(
                'label' => 'Делитель формулы тега',
                'help' => 'Делитель формулы расчёта размера шрифта тега для отображения в облаке тегов',
                'data' => $globals->getConfigVar('tag_delimiter', 30),
            )
        )
        ->add(
            'banner_src', 'text', Array(
                'label' => 'URL баннера',
                'data' => $globals->getConfigVar('banner_src', ''),
                'required' => false,
            )
        )
        ->add(
            'banner_title', 'text', Array(
                'label' => 'Заголовок',
                'data' => $globals->getConfigVar('banner_title', ''),
                'required' => false,
            )
        )
        ->add(
            'banner_link', 'text', Array(
                'label' => 'Ссылка',
                'data' => $globals->getConfigVar('banner_link', 'http://'),
                'required' => false,
            )
        )
        ->add(
            'banner_width', 'text', Array(
                'label' => 'Ширина',
                'data' => $globals->getConfigVar('banner_width', 88),
                'required' => false,
            )
        )
        ->add(
            'banner_height', 'text', Array(
                'label' => 'Высота',
                'data' => $globals->getConfigVar('banner_height', 31),
                'required' => false,
            )
        )
        ->add(
            'footer', 'textarea', Array(
                'label' => 'Текст внизу страницы',
                'data' => $globals->getConfigVar('footer'),
                'required' => false,
            )
        )
        ->add(
            'counters', 'textarea', Array(
                'label' => 'Счётчики',
                'data' => $globals->getConfigVar('counters'),
                'required' => false,
            )
        )
        ->add(
            'banners', 'textarea', Array(
                'label' => 'Баннеры',
                'data' => $globals->getConfigVar('banners'),
                'required' => false,
            )
        )
        ->add(
            'post_text', 'textarea', Array(
                'label' => 'Текст над формой отправки комментария',
                'data' => $globals->getConfigVar('post_text'),
                'required' => false,
            )
        )
        ->add(
            'allow_post_comments', 'choice', Array(
                'label' => 'Разрешить отправку комментариев',
                'data' => $globals->getConfigVar('allow_post_comments'),
                'choices' => array(1 => 'Да', 0 => 'Нет'),
                'required' => true,
            )
        )
        ->add(
            'allow_show_comments', 'choice', Array(
                'label' => 'Разрешить просмотр комментариев',
                'data' => $globals->getConfigVar('allow_show_comments'),
                'choices' => array(1 => 'Да', 0 => 'Нет'),
                'required' => true,
            )
        )
        ->add(
            'premoderation_comments', 'choice', Array(
                'label' => 'Премодерация комментариев',
                'data' => $globals->getConfigVar('premoderation_comments'),
                'choices' => array(1 => 'Да', 0 => 'Нет'),
                'required' => true,
            )
        )
        ->add(
            'admin_comment_cookieid_warning', 'textarea', Array(
                'label' => 'Список cookie-id для особого внимания',
                'data' => $globals->getConfigVar('admin_comment_cookieid_warning'),
                'help' => 'Список cookie-id пользователей, которые систематически нарушают правила сайта. Каждый идентификатор указывайте на новой строке.',
                'required' => false,
            )
        )
        ->add(
            'image_large_copyright', 'text', Array(
                'label' => 'Текст копирайта',
                'help' => 'Копирайт выводится на полноформатном изображении, если указана опция.',
                'data' => $globals->getConfigVar('image_large_copyright'),
                'required' => false,
            )
        )
        ->add(
            'article_image_thumb_width', 'text', Array(
                'label' => 'Ширина эскиза изображения статьи',
                'data' => $globals->getConfigVar('article_image_thumb_width', 50),
                'required' => false,
            )
        )
        ->add(
            'article_image_thumb_height', 'text', Array(
                'label' => 'Высота эскиза изображения статьи',
                'data' => $globals->getConfigVar('article_image_thumb_height', 50),
                'required' => false,
            )
        )
        ->add(
            'mailrobot_from', 'text', Array(
                'label' => 'Почтовый робот (от кого)',
                'data' => $globals->getConfigVar('mailrobot_from'),
                'required' => false,
            )
        )
        ->add(
            'mailrobot_from_email', 'text', Array(
                'label' => 'Обратный e-mail почтового робота',
                'data' => $globals->getConfigVar('mailrobot_from_email'),
                'required' => false,
            )
        )
        ->add(
            'feedback_email', 'text', Array(
                'label' => 'E-mail обратной связи',
                'data' => $globals->getConfigVar('feedback_email'),
                'required' => false,
            )
        )
        ->add(
            'feedback_text', 'textarea', Array(
                'label' => 'Текст над формой обратной связи',
                'data' => $globals->getConfigVar('feedback_text'),
                'required' => false,
            )
        )
        ->add(
            'vk_bot_login', 'text', Array(
                'label' => 'Логин',
                'data' => $globals->getConfigVar('vk_bot_login'),
                'required' => false,
            )
        )
        ->add(
            'vk_bot_pass', 'text', Array(
                'label' => 'Пароль',
                'data' => $globals->getConfigVar('vk_bot_pass'),
                'required' => false,
            )
        )
        ->add(
            'vk_bot_secure', 'text', Array(
                'label' => 'Проверочный код',
                'help' => 'Недостающие цифры телефона',
                'data' => $globals->getConfigVar('vk_bot_secure'),
                'required' => false,
            )
        )
        ->add(
            'vk_bot_page_domain', 'text', Array(
                'label' => 'Домен публикуемых страниц',
                'data' => $globals->getConfigVar('vk_bot_page_domain'),
                'required' => false,
            )
        )
        ->add(
            'ok_bot_login', 'text', Array(
                'label' => 'Логин',
                'data' => $globals->getConfigVar('ok_bot_login'),
                'required' => false,
            )
        )
        ->add(
            'ok_bot_pass', 'text', Array(
                'label' => 'Пароль',
                'data' => $globals->getConfigVar('ok_bot_pass'),
                'required' => false,
            )
        )
        ->add(
            'ok_bot_page_domain', 'text', Array(
                'label' => 'Домен публикуемых страниц',
                'data' => $globals->getConfigVar('ok_bot_page_domain'),
                'required' => false,
            )
        )
        ->add(
            'error404_title', 'text', Array(
                'label' => 'Заголовок',
                'data' => $globals->getConfigVar('error404_title'),
                'required' => false,
            )
        )
        ->add(
            'error404_text', 'textarea', Array(
                'label' => 'Текст',
                'data' => $globals->getConfigVar('error404_text'),
                'required' => false,
            )
        )
        ->getForm();
            
        if ($request->isMethod('POST')) {
            $form->bind($request);
            if ($form->isValid()) {
                $submitted_values = $_POST[$form->getName()];
                if (isset($submitted_values['sitename'])) {
                    $globals->saveConfigVar('sitename', $submitted_values['sitename']);
                }
                if (isset($submitted_values['domain'])) {
                    $globals->saveConfigVar('domain', $submitted_values['domain']);
                }
                if (isset($submitted_values['description'])) {
                    $globals->saveConfigVar('description', $submitted_values['description']);
                }
                if (isset($submitted_values['generator'])) {
                    $globals->saveConfigVar('generator', $submitted_values['generator']);
                }
                if (isset($submitted_values['shorts_on_main'])) {
                    $globals->saveConfigVar('shorts_on_main', (int)$submitted_values['shorts_on_main']);
                }
                if (isset($submitted_values['bloggers_on_main'])) {
                    $globals->saveConfigVar('bloggers_on_main', (int)$submitted_values['bloggers_on_main']);
                }
                if (isset($submitted_values['announces_on_main'])) {
                    $globals->saveConfigVar('announces_on_main', (int)$submitted_values['announces_on_main']);
                }
                if (isset($submitted_values['tag_min_rang'])) {
                    $globals->saveConfigVar('tag_min_rang', (int)$submitted_values['tag_min_rang']);
                }
                if (isset($submitted_values['tag_max_font'])) {
                    $globals->saveConfigVar('tag_max_font', (int)$submitted_values['tag_max_font']);
                }
                if (isset($submitted_values['tag_delimiter'])) {
                    $globals->saveConfigVar('tag_delimiter', (int)$submitted_values['tag_delimiter']);
                }
                if (isset($submitted_values['banner_src'])) {
                    $globals->saveConfigVar('banner_src', $submitted_values['banner_src']);
                }
                if (isset($submitted_values['banner_title'])) {
                    $globals->saveConfigVar('banner_title', $submitted_values['banner_title']);
                }
                if (isset($submitted_values['banner_link'])) {
                    $globals->saveConfigVar('banner_link', $submitted_values['banner_link']);
                }
                if (isset($submitted_values['banner_width'])) {
                    $globals->saveConfigVar('banner_width', $submitted_values['banner_width']);
                }
                if (isset($submitted_values['banner_height'])) {
                    $globals->saveConfigVar('banner_height', $submitted_values['banner_height']);
                }
                if (isset($submitted_values['footer'])) {
                    $globals->saveConfigVar('footer', $submitted_values['footer']);
                }
                if (isset($submitted_values['counters'])) {
                    $globals->saveConfigVar('counters', $submitted_values['counters']);
                }
                if (isset($submitted_values['banners'])) {
                    $globals->saveConfigVar('banners', $submitted_values['banners']);
                }
                if (isset($submitted_values['post_text'])) {
                    $globals->saveConfigVar('post_text', $submitted_values['post_text']);
                }
                if (isset($submitted_values['allow_post_comments'])) {
                    $globals->saveConfigVar('allow_post_comments', $submitted_values['allow_post_comments']);
                }
                if (isset($submitted_values['allow_show_comments'])) {
                    $globals->saveConfigVar('allow_show_comments', $submitted_values['allow_show_comments']);
                }
                if (isset($submitted_values['premoderation_comments'])) {
                    $globals->saveConfigVar('premoderation_comments', $submitted_values['premoderation_comments']);
                }
                if (isset($submitted_values['admin_comment_cookieid_warning'])) {
                    $globals->saveConfigVar('admin_comment_cookieid_warning', $submitted_values['admin_comment_cookieid_warning']);
                }
                if (isset($submitted_values['image_large_copyright'])) {
                    $globals->saveConfigVar('image_large_copyright', $submitted_values['image_large_copyright']);
                }
                if (isset($submitted_values['article_image_thumb_width'])) {
                    $globals->saveConfigVar('article_image_thumb_width', $submitted_values['article_image_thumb_width']);
                }
                if (isset($submitted_values['article_image_thumb_height'])) {
                    $globals->saveConfigVar('article_image_thumb_height', $submitted_values['article_image_thumb_height']);
                }
                if (isset($submitted_values['mailrobot_from'])) {
                    $globals->saveConfigVar('mailrobot_from', $submitted_values['mailrobot_from']);
                }
                if (isset($submitted_values['mailrobot_from_email'])) {
                    $globals->saveConfigVar('mailrobot_from_email', $submitted_values['mailrobot_from_email']);
                }
                if (isset($submitted_values['feedback_email'])) {
                    $globals->saveConfigVar('feedback_email', $submitted_values['feedback_email']);
                }
                if (isset($submitted_values['feedback_text'])) {
                    $globals->saveConfigVar('feedback_text', $submitted_values['feedback_text']);
                }
                if (isset($submitted_values['vk_bot_login'])) {
                    $globals->saveConfigVar('vk_bot_login', $submitted_values['vk_bot_login']);
                }
                if (isset($submitted_values['vk_bot_pass'])) {
                    $globals->saveConfigVar('vk_bot_pass', $submitted_values['vk_bot_pass']);
                }
                if (isset($submitted_values['vk_bot_secure'])) {
                    $globals->saveConfigVar('vk_bot_secure', $submitted_values['vk_bot_secure']);
                }
                if (isset($submitted_values['vk_bot_page_domain'])) {
                    $globals->saveConfigVar('vk_bot_page_domain', $submitted_values['vk_bot_page_domain']);
                }
                if (isset($submitted_values['ok_bot_login'])) {
                    $globals->saveConfigVar('ok_bot_login', $submitted_values['ok_bot_login']);
                }
                if (isset($submitted_values['ok_bot_pass'])) {
                    $globals->saveConfigVar('ok_bot_pass', $submitted_values['ok_bot_pass']);
                }
                if (isset($submitted_values['ok_bot_page_domain'])) {
                    $globals->saveConfigVar('ok_bot_page_domain', $submitted_values['ok_bot_page_domain']);
                }
                if (isset($submitted_values['error404_title'])) {
                    $globals->saveConfigVar('error404_title', $submitted_values['error404_title']);
                }
                if (isset($submitted_values['error404_text'])) {
                    $globals->saveConfigVar('error404_text', $submitted_values['error404_text']);
                } 
                $this->message('Изменения внесены', 'ok');
                $this->clearCache();
                return $this->redirect($this->generateUrl('admin_config', Array()));
            }
        }    

        return array(
            'form' => $form->createView(),
        );
    }
    
    /**
     * Очищает кеш
     */
    public function clearCache()
    {
        $cm = $this->cacheManager();
        $cm->clear('main_short_news');
        $cm->clear('main_bloggers');
        $cm->clear('main_announces');
        $cm->clear('main_tag_cloud');
        $cm->clear('block_tags');
        $cm->clear('block_tags_m');
    }    

}
