<?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;
use Neag\MainBundle\Entity\MenuItem;

class BlockController extends ControllerAbstract
{
    /**
     * @Route("/menu")
     */
    public function menuAction()
    {
        $items = Array();
        $repository = $this->getDoctrine()
        ->getRepository('NeagMainBundle:MenuItem');
        $query = $repository->createQueryBuilder('i')
        ->where('i.active = :active')
        ->setParameter('active', true)
        ->orderBy('i.weight', 'ASC')
        ->getQuery();
        $rows = $query->getResult();
        $data = Array();        
        foreach ($rows as $row) {
            $data[] = Array(
                'title' => $row->getTitle(),
                'link' => $row->getLink(),
            );
        }
        //$this->trace($data);              
        $view = $this->renderView(
            'NeagMainBundle:Block:menu.html.php',
            array('items' => $data)
        );            
        return new Response($view);
        //return new Response('');
    }
    
    /**
     * @Route("/admin_menu")
     */
    public function adminMenuAction()
    {
        $globals = $this->get('globals');        
                                                         
        $comments_unpublished = $this->getDoctrine()->getManager()->createQueryBuilder()
        ->select(Array('COUNT(c.id)'))
        ->from('NeagMainBundle:Comment', 'c')
        ->where('c.waiting = :waiting')       
        ->setParameter('waiting', true)
        ->getQuery()
        ->getSingleScalarResult();
        
        $articles_unpublished = $this->getDoctrine()->getManager()->createQueryBuilder()
        ->select(Array('COUNT(a.id)'))
        ->from('NeagMainBundle:SimplePagePage', 'p')
        ->leftJoin('p.articles', 'a')
        ->where('a.waiting = :waiting')       
        ->setParameter('waiting', true)
        ->andWhere('a.rejected = :rejected')       
        ->setParameter('rejected', false)
        ->getQuery()
        ->getSingleScalarResult();
        
        // Заявки на ведение блога
        $user_blogger_demands = $this->getDoctrine()->getManager()->createQueryBuilder()
        ->select(Array('COUNT(u.id)'))
        ->from('NeagMainBundle:User', 'u')
        ->where('u.bloggerDemand = :bloggerDemand')       
        ->setParameter('bloggerDemand', true)
        ->getQuery()
        ->getSingleScalarResult();
        

        if ($this->get('security.context')->isGranted('ROLE_ADMIN')) {
            $data = Array();
            $data[] = Array(
                'title' => 'Меню',
                'link' => $this->generateURL('admin_menu_item_list'),
            );
            $data[] = Array(
                'title' => 'Пользователи',
                'link' => $this->generateURL('admin_user_list'),
            );
            if (!empty($user_blogger_demands)) {
                $data[] = Array(
                    'title' => 'Заявки на создание блога('.$user_blogger_demands.')',
                    'link' => $this->generateURL('admin_user_blogger_demand_list'),
                );
            }
            $data[] = Array(
                'title' => 'Структура',
                'link' => '#',
                'sub' => Array(
                    Array(
                        'title' => 'Разделы статей',
                        'link' => $this->generateURL('admin_category_list'),
                    ),
                    Array(
                        'title' => 'Разделы форума',
                        'link' => $this->generateURL('admin_forum_category_list'),
                    ),
                    Array(
                        'title' => 'Персоналии',
                        'link' => $this->generateURL('admin_person_list'),
                    ),
                    Array(
                        'title' => 'Теги',
                        'link' => $this->generateURL('admin_tag_list'),
                    ),
                )
            );
            $data[] = Array(
                'title' => 'Контент',
                'link' => '#',
                'sub' => Array(
                    Array(
                        'title' => 'Статьи',
                        'link' => $this->generateURL('admin_article_list'),
                    ),
                    Array(
                        'title' => 'Добавить статью',
                        'link' => $this->generateURL('admin_article_edit'),
                    ),
                    Array(
                        'title' => 'Добавить рекламную статью',
                        'link' => $this->generateURL('admin_article_edit', Array('mode' => 'ad')),
                    ),
                    Array(
                        'title' => 'Сообщения на главной',
                        'link' => $this->generateURL('admin_teaser_list'),
                    ),                        
                    Array(
                        'title' => 'Опросы',
                        'link' => $this->generateURL('admin_poll_list'),
                    ),
                    Array(
                        'title' => 'Изображения',
                        'link' => $this->generateURL('admin_image_list'),
                    ),
                    Array(
                        'title' => 'Файлы',
                        'link' => $this->generateURL('admin_file_list'),
                    ), 
                    /*                   
                    Array(
                        'title' => 'Опросы',
                        'link' => $this->generateURL('admin_poll_list'),
                    ),
                    */
                )
            );
            if (!empty($articles_unpublished)) {
                $data[] = Array(
                    'title' => 'Ожидающие статьи'.(!empty($articles_unpublished) ? '('.$articles_unpublished.')' : ''),
                    'link' => $this->generateURL('admin_article_list', Array('waiting' => 'yes')),
                );
            }
            $data[] = Array(
                'title' => 'Комментарии'.(!empty($comments_unpublished) ? '('.$comments_unpublished.')' : ''),
                'link' => $this->generateURL('comments'),
            );
            $data[] = Array(
                'title' => 'Расширенный поиск',
                'link' => $this->generateURL('search', Array('type' => 'advanced')),
            );
            $data[] = Array(
                'title' => 'Обратная связь'.(!empty($messages_unread) ? '('.$messages_unread.')' : ''),
                'link' => $this->generateURL('admin_feedback'),
            );
            $data[] = Array(
                'title' => 'Лог',
                'link' => $this->generateURL('admin_log'),
            );
            $data[] = Array(
                'title' => 'Инструменты',
                'link' => '#',
                'sub' => Array(
                    Array(
                        'title' => 'Языковые настройки',
                        'link' => $this->generateURL('admin_lang_var_list'),
                    ), 
                    Array(
                        'title' => 'Файловый менеджер',
                        'link' => $this->generateURL('admin_fileadmin'),
                    ),
                    Array(
                        'title' => 'Поисковая индексация',
                        'link' => $this->generateURL('admin_search_index'),
                    ),
                    Array(
                        'title' => 'Блокировка сообщений',
                        'link' => $this->generateURL('admin_block_rule_list'),
                    ),                         
                    Array(
                        'title' => 'Настройки сайта',
                        'link' => $this->generateURL('admin_config'),
                    ), 
                    Array(
                        'title' => 'Кеш',
                        'link' => $this->generateURL('admin_cache'),
                    ),
                    Array(
                        'title' => 'Помощь по BB-коду',
                        'link' => $this->generateURL('admin_bbcode_help'),
                    ),  
                )
            );
            /*
            $data = Array(
                Array(
                    'title' => 'Меню',
                    'link' => $this->generateURL('admin_menu_item_list'),
                ),
                Array(
                    'title' => 'Пользователи',
                    'link' => $this->generateURL('admin_user_list'),
                ),
                Array(
                    'title' => 'Структура',
                    'link' => '#',
                    'sub' => Array(
                        Array(
                            'title' => 'Разделы статей',
                            'link' => $this->generateURL('admin_category_list'),
                        ),
                        Array(
                            'title' => 'Разделы форума',
                            'link' => $this->generateURL('admin_forum_category_list'),
                        ),
                        Array(
                            'title' => 'Персоналии',
                            'link' => $this->generateURL('admin_person_list'),
                        ),
                        Array(
                            'title' => 'Теги',
                            'link' => $this->generateURL('admin_tag_list'),
                        ),
                    )
                ),              
                
                Array(
                    'title' => 'Контент',
                    'link' => '#',
                    'sub' => Array(
                        Array(
                            'title' => 'Статьи',
                            'link' => $this->generateURL('admin_article_list'),
                        ),
                        Array(
                            'title' => 'Добавить статью',
                            'link' => $this->generateURL('admin_article_edit'),
                        ),
                        Array(
                            'title' => 'Сообщения на главной',
                            'link' => $this->generateURL('admin_teaser_list'),
                        ),                        
                        Array(
                            'title' => 'Опросы',
                            'link' => $this->generateURL('admin_poll_list'),
                        ),
                        Array(
                            'title' => 'Изображения',
                            'link' => $this->generateURL('admin_image_list'),
                        ),
                        Array(
                            'title' => 'Файлы',
                            'link' => $this->generateURL('admin_file_list'),
                        ), 
                    )
                ),               
                
                Array(
                    'title' => 'Комментарии'.(!empty($comments_unpublished) ? '('.$comments_unpublished.')' : ''),
                    'link' => $this->generateURL('comments'),
                ),
                
                Array(
                    'title' => 'Расширенный поиск',
                    'link' => $this->generateURL('search', Array('type' => 'advanced')),
                ),
                
                Array(
                    'title' => 'Обратная связь'.(!empty($messages_unread) ? '('.$messages_unread.')' : ''),
                    'link' => $this->generateURL('admin_feedback'),
                ),
                
                Array(
                    'title' => 'Инструменты',
                    'link' => '#',
                    'sub' => Array(
                        Array(
                            'title' => 'Языковые настройки',
                            'link' => $this->generateURL('admin_lang_var_list'),
                        ), 
                        Array(
                            'title' => 'Файловый менеджер',
                            'link' => $this->generateURL('admin_fileadmin'),
                        ),
                        Array(
                            'title' => 'Поисковая индексация',
                            'link' => $this->generateURL('admin_search_index'),
                        ),                        
                        Array(
                            'title' => 'Настройки сайта',
                            'link' => $this->generateURL('admin_config'),
                        ), 
                        Array(
                            'title' => 'Кеш',
                            'link' => $this->generateURL('admin_cache'),
                        ),
                        Array(
                            'title' => 'Помощь по BB-коду',
                            'link' => $this->generateURL('admin_bbcode_help'),
                        ),  
                    )
                ),             
            );
            */
        } else {
            $data = Array();
        }
        $params = Array('items' => $data);
        $view = $this->renderView(
            'NeagMainBundle:Block:admin_menu.html.php',
            $params
        );                         
          
        return new Response($view);          
    }    
    
    /**
     * @Route("/social_user")
     */
    public function socialUserAction()
    {
        $globals = $this->get('globals');
        $reguest = $this->get('request');
        $session = $globals->getSession(); 
        $params = Array();
        // vk
        $vk = $session->get('vk');                 
        $redirect = $globals->generateCurrentUrl(Array(), Array('code'));
        $params['vk_login_link'] = 'https://oauth.vk.com/authorize?client_id='.$globals->vkClientId.'&scope=status,wall&redirect_uri='.rawurlencode($redirect).'&response_type=code&v=5.0';
        if (!empty($vk['user_id'])) {
            $params = $vk;
            $params['vk_user_id'] = $vk['user_id'];
            $params['vk_is_logged_in'] = true;
            $params['vk_logout_link'] = $this->generateURL('vk_logout', Array('redirect' => $redirect));
        } else {
            $params['vk_is_logged_in'] = false;            
        }
        // fb
        $fb = $session->get('fb'); 
        $params['fb_login_link'] = $this->generateURL('fb_login', Array('redirect' => $redirect));
        if (!empty($fb['id'])) {
            //$this->trace($fb);
            $params = $fb;
            $params['fb_user_id'] = $fb['id'];
            $params['fb_is_logged_in'] = true;
            $params['fb_logout_link'] = $this->generateURL('fb_logout', Array('redirect' => $redirect));
        } else {
            $params['fb_is_logged_in'] = false;            
        }        
        return new Response($this->renderView(
            'NeagMainBundle:Block:social_user.html.php',
            $params
        ));  
    }         
}

