/**
  * Constructor explains our requirements to Smarty
  *
  * @param SJB_TemplateSupplier $templatesupplier instatance of SJB_TemplateSupplier class
  * @return SJB_TemplateProcessor
  */
 function __construct($templatesupplier)
 {
     $this->htmlTagConverter = SJB_ObjectMother::createHTMLTagConverterInArray();
     $this->compile_check = true;
     $this->module_name = $templatesupplier->getModuleName();
     parent::__construct();
     $this->error_reporting = E_ALL ^ E_NOTICE;
     $this->setCompileDir(SJB_System::getSystemSettings('COMPILED_TEMPLATES_DIR') . SJB_System::getSystemSettings('SYSTEM_ACCESS_TYPE') . '/' . $templatesupplier->getTheme());
     if (!@is_dir($this->getCompileDir())) {
         @mkdir($this->getCompileDir(), 0777, true);
     }
     $this->setCacheDir(SJB_System::getSystemSettings('COMPILED_TEMPLATES_DIR') . '/smarty_cache');
     if (!@is_dir($this->getCacheDir())) {
         @mkdir($this->getCacheDir(), 0777, true);
     }
     /**
      * Check for 'cache_control_file.cache' in compile dir. If exists - clear compile dir.
      * Then if 'highlight_templates' mode is ON, and user is 'admin' - create 'cache_control_file'.
      */
     $cacheControlFile = $this->compile_dir . '/cache_control_file.cache';
     if (file_exists($cacheControlFile)) {
         $this->clearAllCache();
         $this->clearCompiledTemplate();
     }
     if (SJB_Settings::getSettingByName('highlight_templates') == 1 && SJB_Request::getVar('admin_mode', false, 'COOKIE')) {
         $fp = fopen($cacheControlFile, 'w');
         fclose($fp);
     }
     /////////////////////////
     $this->registerPlugin('function', 'module', array(&$this, 'module'));
     $this->registerPlugin('function', 'hidden_form_fields', array(&$this, 'hidden_form_fields'));
     $this->registerPlugin('function', 'url', array(&$this, 'get_module_function_url'));
     $this->registerPlugin('function', 'event', array(&$this, 'dispatch_event'));
     $currencyFormatter = new SJB_CurrencyFormatter();
     $this->registerPlugin('function', 'currencyFormat', array($currencyFormatter, 'currencyFormat'));
     $this->registerPlugin('function', 'locationFormat', 'SJB_LocationManager::locationFormat');
     /////////////////////////
     $this->registerPlugin('block', 'title', array(&$this, '_tpl_title'));
     $this->registerPlugin('block', 'keywords', array(&$this, '_tpl_keywords'));
     $this->registerPlugin('block', 'description', array(&$this, '_tpl_description'));
     $this->registerPlugin('block', 'head', array(&$this, '_tpl_head'));
     $this->registerPlugin('block', 'breadcrumbs', array(&$this, '_tpl_breadcrumbs'));
     $this->registerFilter('pre', array(&$this, '_replace_translation_alias'));
     $this->registerPlugin('block', 'tr', array(&$this, 'translate'));
     $templatesupplier->registerResources($this);
     $this->templateSupplier = $templatesupplier;
     $this->registerPlugin('function', 'set_token_field', array(&$this, 'tpl_set_token_field'));
     $this->registerGlobalVariables();
 }