<?PHP

/**
 * Simpla CMS
 *
 * @copyright    2011 Denis Pikusov
 * @link        http://simp.la
 * @author        Denis Pikusov
 *
 * Этот класс использует шаблон index.tpl,
 * который содержит всю страницу кроме центрального блока
 * По get-параметру module мы определяем что сожержится в центральном блоке
 *
 */

require_once('View.php');

class IndexView extends View
{
    public $modules_dir = 'view/';

    public function __construct()
    {
        parent::__construct();
    }


    /**
     *
     * Отображение
     *
     */
    function fetch()
    {
        //callback
        if ($this->request->method('post') && $this->request->post('callback')) {
            $callback->phone = $this->request->post('phone');
            $callback->name = $this->request->post('name');
            //$callback->message      = $this->request->post('message');
            $callback->message = "___";
            //$callback->name         = "no_name";

            $this->design->assign('callname', $callback->name);
            $this->design->assign('callemail', $callback->phone);
            $this->design->assign('callmessage', $callback->message);
            $this->design->assign('call_sent', true);
            $callback_id = $this->callbacks->add_callback($callback);
            // Отправляем email
            $this->callbacks->email_callback_admin($callback_id);
        }

        // Содержимое корзины
        $this->design->assign('cart', $this->cart->get_cart());
        //print_r($this->categories->get_categories_tree()); die;
        // Категории товаров
        $this->design->assign('categories', $this->categories->get_categories_tree());
        // Категории статей
        $this->design->assign('articles_categories', $this->articles->get_categories_tree());
        // Страницы
        $this->design->assign('pages', $this->pages->get_pages(array('visible' => 1, 'parent' => 0)));
        // Услуги
        $this->design->assign('services_tree', $this->services->get_tree());
        $this->design->assign('services_root', $this->services->get_root_url());

        // Текущий модуль (для отображения центрального блока)
        $module = $this->request->get('module', 'string');
        $module = preg_replace("/[^A-Za-z0-9]+/", "", $module);

        // Если не задан - берем из настроек
        if (empty($module))
            return false;
        //$module = $this->settings->main_module;

        // Создаем соответствующий класс
        if (is_file($this->modules_dir . "$module.php")) {
            include_once($this->modules_dir . "$module.php");
            if (class_exists($module)) {
                $this->main = new $module($this);
            } else return false;
        } else return false;

        // Создаем основной блок страницы
        if (!$content = $this->main->fetch()) {
            return false;
        }

        // Передаем основной блок в шаблон
        $this->design->assign('content', $content);

        // Передаем название модуля в шаблон, это может пригодиться
        $this->design->assign('module', $module);

        // Создаем текущую обертку сайта (обычно index.tpl)
        $wrapper = $this->design->smarty->getTemplateVars('wrapper');
        if (is_null($wrapper))
            $wrapper = 'index.tpl';

        if (!empty($wrapper)) //{$this->body = $this->design->fetch($wrapper); var_dump($this->body); return $this->body;}
            return $this->body = $this->design->fetch($wrapper);
        else
            return $this->body = $content;

    }
}
