/**
  * 
  * @param type $template
  * @return boolean 
  * @throws Exception
  */
 public function setTemplate(Template $template, $installDemodata = FALSE, $installDemoArchive = FALSE)
 {
     if ($this->currentTemplate->name == $template->name) {
         throw new \Exception(lang('Current installed template can not be installed again', 'template_manager'));
     }
     // processing all dependicies
     if (isset($template->xml->dependencies)) {
         if (isset($template->xml->dependencies->dependence)) {
             $dependenceDirector = new \template_manager\installer\DependenceDirector($template->xml->dependencies->dependence);
             $res = $dependenceDirector->verify($installDemodata);
             $this->massages = $dependenceDirector->getMessages();
             if (FALSE == $res) {
                 throw new \Exception(lang('One or more dependency error', 'template_manager'));
             }
         }
     }
     //Install template demodata
     //        if ($installDemodata) {
     if (isset($template->xml->demodata)) {
         $demodataDirector = new \template_manager\installer\DemodataDirector($template->xml->demodata);
         $res = $demodataDirector->install();
         $this->massages = $demodataDirector->getMessages();
         if (FALSE == $res) {
             throw new \Exception(lang('One or more dependency error', 'template_manager'));
         }
     }
     $this->copyUploads($template->name);
     //        }
     // Truncate table template_settings
     \CI::$APP->db->truncate('template_settings');
     foreach ($template->xml->components->component as $component) {
         $attributes = $component->attributes();
         $handler = (string) $attributes['handler'];
         $instance = $template->getComponent($handler);
         $instance->setParamsXml($component);
     }
     \CI::$APP->db->where('name', 'systemTemplatePath')->update('shop_settings', array('value' => './templates/' . $template->name . '/shop/'));
     \CI::$APP->db->update('settings', array('site_template' => $template->name));
     $this->currentTemplate = $template;
 }