예제 #1
0
 * @copyright Copyright (C) 2008 - 2011 JoomlaShine.com. All rights reserved.
 * @license   GNU/GPL v2 http://www.gnu.org/licenses/gpl-2.0.html
 * @version   $Id: jsn_autoupdater.php 11613 2012-03-08 09:31:14Z hieudm $
 */
// No direct access
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_readxmlfile.php';
require_once 'includes' . DS . 'lib' . DS . 'jsn_auto_updater_helper.php';
$session = JFactory::getSession();
$obj_read_xml_file = new JSNReadXMLFile();
$obj_utils = new JSNUtils();
$obj_updater_helper = new JSNAutoUpdaterHelper();
$template_manifest = $obj_read_xml_file->getTemplateManifestFileInformation();
$manifest_cache = $obj_utils->getTemplateManifestCache();
$manifest_cache = json_decode($manifest_cache);
/* Determine front-end index path, including lang sef if available */
$frontIndexPath = JURI::root() . $obj_utils->determineFrontendIndex();
/* Form template identified_name */
$explodedName = explode('_', $template_manifest['name']);
$templateIdName = 'tpl_' . $explodedName[1];
/* Get template latest version from session if possible */
$templateVersionSesId = md5('template_version_' . strtolower($template_manifest['full_name']));
$versionFromSes = $session->get($templateVersionSesId, null, 'jsntemplatesession');
if (!is_null($versionFromSes)) {
    $latest_version = $versionFromSes;
} else {
    $latest_version = $obj_utils->getLatestProductVersion($templateIdName, 'template');
}
if ($template_manifest['edition'] != '' && $template_manifest['edition'] != 'free') {
예제 #2
0
 function installSampleDataManually()
 {
     $filename = $this->getPackageFromUpload();
     if (!$filename) {
         return false;
     }
     $obj_read_xml_file = new JSNReadXMLFile();
     $obj_utils = new JSNUtils();
     $unpack_package = $this->unpackPackage($filename);
     $template_manifest = json_decode($obj_utils->getTemplateManifestCache(), true);
     $array_non_basic_module = $this->getNonBasicModule();
     $array_non_basic_admin_module = $this->getNonBasicAdminModule();
     $array_3rd_extension_menu = $this->getThirdExtensionMenus();
     $domain = $this->getDomain();
     $errors = array();
     $isNotExsited = array();
     $folderbackup = $this->_template_folder_path . DS . 'backups';
     if ($unpack_package) {
         $sample_data_xml = $obj_read_xml_file->getSampleDataFileContent($unpack_package, $this->_template_folder_name);
         $installed_data = $sample_data_xml['installed_data'];
         if ($installed_data && is_array($installed_data)) {
             if (trim($sample_data_xml['version']) != trim($template_manifest['version'])) {
                 $this->deleteSampleDataFile($filename);
                 $this->deleteSampleDataFolder($unpack_package);
                 $msg = JText::_('JSN_SAMPLE_DATA_OUTDATED_PRODUCT') . ' <a class="link-action" href="http://www.joomlashine.com/docs/general/how-to-update-product.html" target="_blank">' . JText::_('JSN_SAMPLE_DATA_HOW_TO_UPDATE') . '</a>';
                 JError::raiseWarning('SOME_ERROR_CODE', JText::_($msg));
                 return false;
             } else {
                 $result_check_existing_extension = $this->checkExistingExtensions($installed_data);
                 foreach ($result_check_existing_extension as $key => $value) {
                     if ($value['hasData'] === false) {
                         unset($installed_data[$key]);
                     } else {
                         if ($value['exist']) {
                             $extenstion_manifest = $obj_read_xml_file->getExtensionManifestFileInformation($key, $value['manifestPath']);
                             if (count($extenstion_manifest)) {
                                 if (@$extenstion_manifest['version'] != $installed_data[$key]->version) {
                                     $errors[] = '<strong>' . $installed_data[$key]->description . '</strong> - ' . 'Version <strong>' . $installed_data[$key]->version . '</strong> is required. <a class="link-action" href="http://www.joomlashine.com/docs/general/how-to-update-product.html" target="_blank">How to update?</a>';
                                     unset($installed_data[$key]);
                                 }
                             } else {
                                 $errors[] = '<strong>' . $installed_data[$key]->description . '</strong> - ' . 'the version information not found in sample data package.';
                                 unset($installed_data[$key]);
                             }
                         } else {
                             $errors[] = '<strong>' . $installed_data[$key]->description . '</strong> - ' . 'Extension is not installed. <a class="link-action" href="http://www.joomlashine.com/joomla-extensions/jsn-' . $key . '.html" target="_blank">Get it now.</a>';
                             $isNotExsited[] = $key;
                             unset($installed_data[$key]);
                         }
                     }
                 }
                 $this->returnError('false', $errors);
                 $obj_backup = JSNBackup::getInstance();
                 if (is_writable($folderbackup)) {
                     $backup_file_name = $obj_backup->executeBackup($this->_template_folder_path . DS . 'backups', $domain, $installed_data);
                 }
                 $this->deleteNonBasicAdminModule();
                 $this->installSampleData($installed_data);
                 if (count($isNotExsited)) {
                     $asset = JTable::getInstance('Asset');
                     foreach ($isNotExisted as $element) {
                         $element = 'com_' . $element;
                         if ($asset->loadByName($element)) {
                             $asset->delete();
                         }
                     }
                 }
                 $this->runQueryNonBasicModule($array_non_basic_module);
                 $this->runQueryNonBasicModule($array_non_basic_admin_module, true);
                 $this->restoreThirdExtensionMenus($array_3rd_extension_menu);
                 $this->rebuildMenu();
                 $this->copyContentFromFilesFolder($unpack_package);
                 $this->deleteSampleDataFolder($unpack_package);
                 $this->setDefaultTemplate(strtolower($template_manifest['name']));
                 $this->deleteSampleDataFile($filename);
                 return true;
             }
         } else {
             $this->deleteSampleDataFile($filename);
             $msg = JText::_('JSN_SAMPLE_DATA_INVALID');
             JError::raiseWarning('SOME_ERROR_CODE', $msg);
         }
         return false;
     } else {
         $msg = JText::_('JSN_SAMPLE_DATA_UNABLE_EXTRACT_PACKAGE');
         JError::raiseWarning('SOME_ERROR_CODE', $msg);
     }
     return false;
 }