git-svn-id: https://192.168.0.254/svn/Proyectos.FundacionLQDVI_WebCongresos/trunk@2 94ccb1af-fd9d-d947-8d90-7f70ea60afc8
230 lines
9.6 KiB
PHP
230 lines
9.6 KiB
PHP
<?php
|
|
/**
|
|
* @version $Id: install.php 115 2009-06-23 11:31:41Z happynoodleboy $
|
|
* @package JCE Admin Component
|
|
* @copyright Copyright (C) 2006 - 2009 Ryan Demmmer. All rights reserved.
|
|
* @license GNU/GPL
|
|
* JCE is free software. This version may have been modified pursuant
|
|
* to the GNU General Public License, and as distributed it includes or
|
|
* is derivative of works licensed under the GNU General Public License or
|
|
* other free or open source software licenses.
|
|
*/
|
|
defined('_JEXEC') or die ('Restricted access');
|
|
/**
|
|
* Installer function
|
|
* @return
|
|
*/
|
|
function com_install()
|
|
{
|
|
global $mainframe;
|
|
$db = & JFactory::getDBO();
|
|
|
|
jimport('joomla.filesystem.folder');
|
|
jimport('joomla.filesystem.file');
|
|
|
|
$path = JPATH_ADMINISTRATOR.DS.'components'.DS.'com_jce';
|
|
|
|
// Remove legacy file
|
|
if (file_exists($path.DS.'admin.jce.php')) {
|
|
@JFile::delete($path.DS.'admin.jce.php');
|
|
}
|
|
// Load updater class
|
|
require_once ($path.DS.'updater.php');
|
|
|
|
$updater = & JCEUpdater::getInstance();
|
|
// Install Plugins data
|
|
$updater->installPlugins(true);
|
|
// Install Groups data
|
|
$updater->installGroups(true);
|
|
// Install editor plugin
|
|
|
|
jimport('joomla.installer.installer');
|
|
$installer = & JInstaller::getInstance();
|
|
|
|
$source = $installer->getPath('source');
|
|
|
|
$packages = $source.DS.'packages';
|
|
// Get editor and plugin packages
|
|
if(is_dir($packages)) {
|
|
$editor = JFolder::files($packages, 'plg_jce_15\d+?\.zip', false, true);
|
|
$plugins = JFolder::files($packages, 'jce_\w+_15\d+?\.zip', false, true);
|
|
}
|
|
|
|
$language = & JFactory::getLanguage();
|
|
$language->load('com_jce', JPATH_ADMINISTRATOR);
|
|
|
|
$img_path = JURI::root().'/administrator/components/com_jce/img/';
|
|
$out = '<table class="adminlist" style="width:50%;">';
|
|
$out .= '<tr><th class="title" style="width:65%">'.JText::_('Extension').'</th><th class="title" style="width:30%">'.JText::_('Version').'</th><th class="title" style="width:5%"> </th></tr>';
|
|
|
|
$editor_img = 'delete.png';
|
|
$editor_result = JText::_('Error');
|
|
$plugin_out = '';
|
|
|
|
if (! empty($editor)) {
|
|
if (is_file($editor[0])) {
|
|
$config = & JFactory::getConfig();
|
|
$tmp = $config->getValue('config.tmp_path').DS.uniqid('install_').DS.basename($editor[0], '.zip');
|
|
|
|
if (!JArchive::extract($editor[0], $tmp)) {
|
|
$mainframe->enqueueMessage(JText::_('EDITOR EXTRACT ERROR'), 'error');
|
|
} else {
|
|
$query = 'SELECT id, params'
|
|
.' FROM #__components'
|
|
.' WHERE link = '.$db->Quote('option=com_jce')
|
|
;
|
|
|
|
$db->setQuery($query);
|
|
$component = $db->loadObject();
|
|
|
|
$params = explode("\n", $component->params);
|
|
|
|
$installer = & JInstaller::getInstance();
|
|
|
|
$c_manifest = & $installer->getManifest();
|
|
$c_root = & $c_manifest->document;
|
|
$version = & $c_root->getElementByPath('version');
|
|
|
|
$component_version = $version->data();
|
|
|
|
// Store Component values
|
|
$component_paths = array (
|
|
'source'=>$installer->getPath('source'),
|
|
'manifest'=>$installer->getPath('manifest'),
|
|
'extension_site'=>$installer->getPath('extension_site'),
|
|
'extension_administrator'=>$installer->getPath('extension_administrator')
|
|
);
|
|
|
|
$component_vars = array (
|
|
'name'=>$installer->get('name'),
|
|
'result'=>$installer->get('result'),
|
|
'message'=>$installer->message
|
|
);
|
|
$editor_version = preg_replace('/\D+/', '', basename($editor[0]));
|
|
|
|
// Add JTable include path
|
|
JTable::addIncludePath(JPATH_LIBRARIES.DS.'joomla'.DS.'database'.DS.'table');
|
|
// Editor Plugin installed proceed with plugins
|
|
if ($installer->install($tmp)) {
|
|
$manifest = & $installer->getManifest();
|
|
$root = & $manifest->document;
|
|
$name = & $root->getElementByPath('name');
|
|
$version = & $root->getElementByPath('version');
|
|
$editor_version = $version->data();
|
|
|
|
$language->load('plg_editors_jce', JPATH_ADMINISTRATOR);
|
|
|
|
$editor_img = 'tick.png';
|
|
$editor_result = JText::_('Success');
|
|
|
|
$query = 'UPDATE #__plugins'
|
|
. ' SET name = '.$db->Quote($name->data())
|
|
. ' WHERE folder = '.$db->Quote('editors')
|
|
. ' AND element = '.$db->Quote('jce')
|
|
;
|
|
$db->setQuery($query);
|
|
$db->query();
|
|
|
|
$params[] = 'package=1';
|
|
|
|
// Include installer class
|
|
if (! empty($plugins)) {
|
|
require_once ($path.DS.'installer'.DS.'installer.php');
|
|
$jce_installer = & JCEInstaller::getInstance();
|
|
|
|
$plugin_out = '<tr><th class="title" style="width:65%">'.JText::_('Plugin').'</th><th class="title" style="width:30%">'.JText::_('Version').'</th><th class="title" style="width:5%"> </th></tr>';
|
|
|
|
foreach ($plugins as $plugin) {
|
|
// Create unique tmp dir name
|
|
$tmp = $config->getValue('config.tmp_path').DS.uniqid('install_').DS.basename($plugin, '.zip');
|
|
// Extract to tmp dir
|
|
if (JArchive::extract($plugin, $tmp)) {
|
|
// Install plugin
|
|
if (!$jce_installer->install($tmp)) {
|
|
$plugin_img = 'delete.png';
|
|
$plugin_result = JText::_('Error');
|
|
$plugin_name = basename($plugin);
|
|
} else {
|
|
$manifest = & $jce_installer->getManifest();
|
|
$root = & $manifest->document;
|
|
$name = & $root->getElementByPath('name');
|
|
|
|
$language->load('com_jce_'.trim($root->attributes('plugin')));
|
|
|
|
$plugin_img = 'tick.png';
|
|
$plugin_result = JText::_('Success');
|
|
$plugin_name = $name->data();
|
|
}
|
|
$plugin_out .= '<tr><td>'.$plugin_name.'</td><td>'.preg_replace('/\D+/', '', basename($plugin)).'</td><td style="text-align:center;">'.JHTML::image($img_path.$plugin_img, $plugin_result).'</td></tr>';
|
|
if ($jce_installer->get('extension.message')) {
|
|
$plugin_out .= '<tr><td colspan="3">'.JText::_($jce_installer->get('extension.message')).'</td></tr>';
|
|
}
|
|
// Cleanup
|
|
if (is_dir($tmp)) {
|
|
@JFolder::delete($tmp);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
$editor_img = 'delete.png';
|
|
$editor_result = JText::_('Error');
|
|
$params[] = 'package=0';
|
|
}
|
|
$editor_message = JText::_($installer->message);
|
|
// Return Component Paths
|
|
foreach ($component_paths as $k=>$v) {
|
|
$installer->setPath($k, $v);
|
|
}
|
|
// Return Component Vars
|
|
foreach ($component_vars as $k=>$v) {
|
|
$installer->set($k, $v);
|
|
}
|
|
if (is_dir($tmp)) {
|
|
@JFolder::delete($tmp);
|
|
}
|
|
|
|
$manifest = & $installer->getManifest();
|
|
$root = & $manifest->document;
|
|
$version = & $root->getElementByPath('version');
|
|
|
|
$out .= '<tr><td>'.JText::_('JCE ADMIN TITLE').'</td><td>'.$component_version.'</td><td class="title" style="text-align:center;">'.JHTML::image($img_path.'tick.png', JText::_('Success')).'</td></tr>';
|
|
$out .= '<tr><td colspan="3">'.JText::_($installer->message).'</td></tr>';
|
|
$out .= '<tr><td>'.JText::_('JCE EDITOR TITLE').'</td><td>'.$editor_version.'</td><td class="title" style="text-align:center;">'.JHTML::image($img_path.$editor_img, $editor_result).'</td></tr>';
|
|
$out .= '<tr><td colspan="3">'.$editor_message.'</td></tr>';
|
|
$out .= $plugin_out;
|
|
$out .= '</table>';
|
|
|
|
$installer->set('message', JText::_('JCE INSTALL SUMMARY'));
|
|
$installer->set('extension.message', $out);
|
|
|
|
$row = & JTable::getInstance('component');
|
|
$row->load($component->id);
|
|
$row->params = implode("\n", $params);
|
|
$row->store();
|
|
}
|
|
}
|
|
}
|
|
if (is_dir($packages)) {
|
|
// Delete packages folder
|
|
@JFolder::delete($packages);
|
|
}
|
|
}
|
|
/**
|
|
* Uninstall function
|
|
* @return
|
|
*/
|
|
function com_uninstall()
|
|
{
|
|
require_once (JPATH_ADMINISTRATOR.DS.'components'.DS.'com_jce'.DS.'updater.php');
|
|
|
|
$updater = & JCEUpdater::getInstance();
|
|
$updater->cleanupDB();
|
|
|
|
$params = & JComponentHelper::getParams('com_jce');
|
|
if ($params->get('package')) {
|
|
$updater->removeEditor();
|
|
}
|
|
}
|
|
?>
|