Exemple #1
0
 /**
  *
  */
 public function install()
 {
     $tmp = JPATH_ROOT . '/tmp/';
     $tmp_kunena = JPATH_ROOT . '/tmp/kinstall/';
     $dest = KPATH_SITE . '/template/';
     $file = $this->app->input->files->get('install_package', null, 'raw');
     if (!JSession::checkToken('post')) {
         $this->app->enqueueMessage(JText::_('COM_KUNENA_ERROR_TOKEN'), 'error');
         $this->setRedirect(KunenaRoute::_($this->baseurl, false));
         return;
     }
     if (empty($file['tmp_name']) || !is_uploaded_file($file['tmp_name']) || !empty($file['error'])) {
         $this->app->enqueueMessage(JText::sprintf('COM_KUNENA_A_TEMPLATE_MANAGER_INSTALL_EXTRACT_MISSING', $this->escape($file['name'])), 'notice');
     } else {
         $success = KunenaFile::upload($file['tmp_name'], $tmp . $file['name'], false, true);
         if ($success) {
             try {
                 JArchive::extract($tmp . $file['name'], $tmp_kunena);
             } catch (Exception $e) {
                 $this->app->enqueueMessage(JText::sprintf('COM_KUNENA_A_TEMPLATE_MANAGER_INSTALL_EXTRACT_FAILED', $this->escape($file['name'])), 'notice');
             }
         }
         if (is_dir($tmp_kunena)) {
             $templates = KunenaTemplateHelper::parseXmlFiles($tmp_kunena);
             if (!empty($templates)) {
                 foreach ($templates as $template) {
                     // Never overwrite locked templates
                     if (in_array($template->directory, $this->locked)) {
                         continue;
                     }
                     if (is_dir($dest . $template->directory)) {
                         if (is_file($dest . $template->directory . '/params.ini')) {
                             if (is_file($tmp_kunena . $template->sourcedir . '/params.ini')) {
                                 KunenaFile::delete($tmp_kunena . $template->sourcedir . '/params.ini');
                             }
                             KunenaFile::move($dest . $template->directory . '/params.ini', $tmp_kunena . $template->sourcedir . '/params.ini');
                         }
                         KunenaFolder::delete($dest . $template->directory);
                     }
                     $success = KunenaFolder::move($tmp_kunena . $template->sourcedir, $dest . $template->directory);
                     if ($success !== true) {
                         $this->app->enqueueMessage(JText::sprintf('COM_KUNENA_A_TEMPLATE_MANAGER_INSTALL_FAILED', $template->directory), 'notice');
                     } else {
                         $this->app->enqueueMessage(JText::sprintf('COM_KUNENA_A_TEMPLATE_MANAGER_INSTALL_SUCCESS', $template->directory));
                     }
                 }
                 // Delete the tmp install directory
                 if (is_dir($tmp_kunena)) {
                     KunenaFolder::delete($tmp_kunena);
                 }
                 // Clear all cache, just in case.
                 KunenaCacheHelper::clearAll();
             } else {
                 $this->app->enqueueMessage(JText::_('COM_KUNENA_A_TEMPLATE_MANAGER_TEMPLATE_MISSING_FILE'), 'error');
             }
         } else {
             $this->app->enqueueMessage(JText::_('COM_KUNENA_A_TEMPLATE_MANAGER_TEMPLATE') . ' ' . JText::_('COM_KUNENA_A_TEMPLATE_MANAGER_UNINSTALL') . ': ' . JText::_('COM_KUNENA_A_TEMPLATE_MANAGER_DIR_NOT_EXIST'), 'error');
         }
     }
     $this->setRedirect(KunenaRoute::_($this->baseurl, false));
 }