Esempio n. 1
0
 function installSampleData()
 {
     $defaultTimeout = ini_get('max_execution_time');
     @set_time_limit(360);
     $file_name = JRequest::getVar('file_name');
     $foldertmp = JPATH_ROOT . DS . 'tmp';
     $folderbackup = $this->_template_folder_path . DS . 'backups';
     $link = '';
     $errors = array();
     $isNotExisted = array();
     $obj_read_xml_file = new JSNReadXMLFile();
     $session = JFactory::getSession();
     $login_identifier = md5('state_login_' . strtolower($this->_template_name));
     $sessionExtFailedId = md5('exts_failed_install_' . strtolower($this->_template_name));
     //$identifier 		= md5('state_installation_'.strtolower($this->_template_name));
     $state_login = $session->get($login_identifier, false, 'jsntemplatesession');
     $failedExts = $session->get($sessionExtFailedId, array(), 'jsntemplatesession');
     if (!$state_login) {
         jexit('Invalid Token');
     }
     $obj_sample_data_helper = new JSNSampleDataHelper();
     $array_non_basic_module = $obj_sample_data_helper->getNonBasicModule();
     $array_non_basic_admin_module = $obj_sample_data_helper->getNonBasicAdminModule();
     $array_3rd_extension_menu = $obj_sample_data_helper->getThirdExtensionMenus();
     $domain = $obj_sample_data_helper->getDomain();
     if (!is_writable($foldertmp)) {
         $obj_sample_data_helper->deleteSampleDataFile($file_name);
         echo json_encode(array('download' => false, 'message' => JText::_('JSN_SAMPLE_DATA_TEMP_FOLDER_UNWRITABLE'), 'redirect_link' => $link));
         return;
     }
     $path = $foldertmp . DS . $file_name;
     if (!JFile::exists($path)) {
         echo json_encode(array('install' => false, 'message' => JText::_('JSN_SAMPLE_DATA_PACKAGE_FILE_NOT_FOUND'), 'redirect_link' => $link, 'manual' => true));
         return;
     }
     $unpackage = $obj_sample_data_helper->unpackPackage($file_name);
     if ($unpackage) {
         $sample_xml_data = $obj_read_xml_file->getSampleDataFileContent($unpackage, $this->_template_name);
         $installed_data = $sample_xml_data['installed_data'];
         if ($installed_data && is_array($installed_data)) {
             if (trim($sample_xml_data['version']) != trim($this->_template_version)) {
                 $obj_sample_data_helper->deleteSampleDataFile($file_name);
                 $obj_sample_data_helper->deleteSampleDataFolder($unpackage);
                 echo json_encode(array('install' => false, 'message' => JText::_('JSN_SAMPLE_DATA_OUTDATED_PRODUCT'), 'redirect_link' => $link));
                 return;
             } else {
                 foreach ($failedExts as $key => $value) {
                     unset($installed_data[$key]);
                     if (isset($value['message']) && $value['message'] != '') {
                         $errors[] = $value['message'];
                     }
                     /* Only for an extension that doesn't exist, not can-not-be upgraded one */
                     if (isset($value['exist']) && $value['exist'] === false) {
                         $isNotExisted[] = $key;
                     }
                 }
                 $obj_backup = JSNBackup::getInstance();
                 if (is_writable($folderbackup)) {
                     $backup_file_name = $obj_backup->executeBackup($this->_template_folder_path . DS . 'backups', $domain, $installed_data);
                 } else {
                     $backup_file_name = '';
                 }
                 $obj_sample_data_helper->deleteNonBasicAdminModule();
                 $obj_sample_data_helper->installSampleData($installed_data);
                 /* Clean up records of non-installed extensions */
                 if (count($isNotExisted)) {
                     $asset = JTable::getInstance('Asset');
                     foreach ($isNotExisted as $element) {
                         $element = 'com_' . $element;
                         /* Delete assets record */
                         if ($asset->loadByName($element)) {
                             $asset->delete();
                         }
                         /* Disable menu items (if available) */
                         $obj_sample_data_helper->disableMenuItems($element);
                     }
                 }
                 $obj_sample_data_helper->runQueryNonBasicModule($array_non_basic_module);
                 $obj_sample_data_helper->runQueryNonBasicModule($array_non_basic_admin_module, true);
                 $obj_sample_data_helper->restoreThirdExtensionMenus($array_3rd_extension_menu);
                 $obj_sample_data_helper->rebuildMenu();
                 $obj_sample_data_helper->copyContentFromFilesFolder($unpackage);
                 $obj_sample_data_helper->deleteSampleDataFolder($unpackage);
                 $obj_sample_data_helper->setDefaultTemplate(strtolower($this->_template_name));
                 $obj_sample_data_helper->deleteSampleDataFile($file_name);
                 //$session->set($identifier, true, 'jsntemplatesession');
                 $session->set($login_identifier, false, 'jsntemplatesession');
                 echo json_encode(array('install' => true, 'message' => '', 'redirect_link' => $link, 'warnings' => $errors, 'backup_file_name' => $backup_file_name));
                 $session->clear($sessionExtFailedId, 'jsntemplatesession');
                 return;
             }
         } else {
             $obj_sample_data_helper->deleteSampleDataFile($file_name);
             echo json_encode(array('install' => false, 'message' => JText::_('JSN_SAMPLE_DATA_INVALID'), 'redirect_link' => $link, 'manual' => true));
             return;
         }
     } else {
         $obj_sample_data_helper->deleteSampleDataFile($file_name);
         echo json_encode(array('install' => false, 'message' => JText::_('JSN_SAMPLE_DATA_UNABLE_EXTRACT_PACKAGE'), 'redirect_link' => $link));
         exit;
     }
     return;
 }
Esempio n. 2
0
# copyright Copyright (C) 2012 JoomlaShine.com. All Rights Reserved.
# Websites: http://www.joomlashine.com
# Technical Support:  Feedback - http://www.joomlashine.com/contact-us/get-support.html
# @license - GNU/GPL v2 or later http://www.gnu.org/licenses/gpl-2.0.html
# @version $Id: jsn_installsampledata.php 14966 2012-08-11 04:19:46Z tuyetvt $
-------------------------------------------------------------------------*/
defined('_JEXEC') or die('Restricted access');
require_once 'includes' . DS . 'jsn_defines.php';
require_once 'includes' . DS . 'lib' . DS . 'jsn_utils.php';
require_once 'includes' . DS . 'lib' . DS . 'jsn_backup.php';
require_once 'includes' . DS . 'lib' . DS . 'jsn_readxmlfile.php';
require_once 'includes' . DS . 'lib' . DS . 'jsn_sampledata_helper.php';
global $error;
$obj_read_xml_file = new JSNReadXMLFile();
$obj_utils = new JSNUtils();
$obj_sampledata_helper = new JSNSampleDataHelper();
$obj_sampledata_helper->setSampleDataURL();
$backup_obj = JSNBackup::getInstance();
$template_manifest = $obj_read_xml_file->getTemplateManifestFileInformation();
$joomla_version = $obj_utils->getJoomlaVersion();
$folderWritable = $obj_sampledata_helper->checkFolderPermission();
//////////////////////////////////////MAIN//////////////////////////////////////
$folderFailList = '';
if (count($folderWritable) > 0) {
    $folderFailList = '<div id="jsn-li-folder-perm-failed">' . JText::_('JSN_SAMPLE_DATA_FOLDER_PERMISSION_MES') . '<ul>';
    foreach ($folderWritable as $failed) {
        $folderFailList .= '<li>' . $failed . '</li>';
    }
    $folderFailList .= '</ul>' . JText::_('JSN_SAMPLE_DATA_FOLDER_PERMISSION_MES2') . '<div class="jsn-install-admin-navigation"><hr class="jsn-horizontal-line" />' . '<button class="action-submit" type="button" id="jsn-perm-try-again" onclick="JSNSampleData.checkFolderPermission(\'' . strtolower($template_manifest['full_name']) . '\',\'' . JURI::root() . '\');">' . JText::_('JSN_SAMPLE_DATA_FOLDER_PERMISSION_TRY_AGAIN_BUTTON') . '</button></div></div>';
}
$frontIndexPath = JURI::root() . $obj_utils->determineFrontendIndex();