?
Path : /home/admin/public_html/old/board/administrator/components/com_installer/models/ |
Current File : /home/admin/public_html/old/board/administrator/components/com_installer/models/install.php |
<?php /** * @version $Id: install.php 14401 2010-01-26 14:10:00Z louis $ * @package Joomla * @subpackage Menus * @copyright Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved. * @license GNU/GPL, see LICENSE.php * Joomla! 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. See COPYRIGHT.php for copyright notices and * details. */ // Check to ensure this file is included in Joomla! defined('_JEXEC') or die( 'Restricted access' ); jimport( 'joomla.application.component.model' ); jimport( 'joomla.installer.installer' ); jimport('joomla.installer.helper'); /** * Extension Manager Install Model * * @package Joomla * @subpackage Installer * @since 1.5 */ class InstallerModelInstall extends JModel { /** @var object JTable object */ var $_table = null; /** @var object JTable object */ var $_url = null; /** * Overridden constructor * @access protected */ function __construct() { parent::__construct(); } function install() { global $mainframe; $this->setState('action', 'install'); switch(JRequest::getWord('installtype')) { case 'folder': $package = $this->_getPackageFromFolder(); break; case 'upload': $package = $this->_getPackageFromUpload(); break; case 'url': $package = $this->_getPackageFromUrl(); break; default: $this->setState('message', 'No Install Type Found'); return false; break; } // Was the package unpacked? if (!$package) { $this->setState('message', 'Unable to find install package'); return false; } // Get a database connector //$db = & JFactory::getDBO(); // Get an installer instance $installer =& JInstaller::getInstance(); // Install the package if (!$installer->install($package['dir'])) { // There was an error installing the package $msg = JText::sprintf('INSTALLEXT', JText::_($package['type']), JText::_('Error')); $result = false; } else { // Package installed sucessfully $msg = JText::sprintf('INSTALLEXT', JText::_($package['type']), JText::_('Success')); $result = true; } // Set some model state values $mainframe->enqueueMessage($msg); $this->setState('name', $installer->get('name')); $this->setState('result', $result); $this->setState('message', $installer->message); $this->setState('extension.message', $installer->get('extension.message')); // Cleanup the install files if (!is_file($package['packagefile'])) { $config =& JFactory::getConfig(); $package['packagefile'] = $config->getValue('config.tmp_path').DS.$package['packagefile']; } JInstallerHelper::cleanupInstall($package['packagefile'], $package['extractdir']); return $result; } /** * @param string The class name for the installer */ function _getPackageFromUpload() { // Get the uploaded file information $userfile = JRequest::getVar('install_package', null, 'files', 'array' ); // Make sure that file uploads are enabled in php if (!(bool) ini_get('file_uploads')) { JError::raiseWarning('SOME_ERROR_CODE', JText::_('WARNINSTALLFILE')); return false; } // Make sure that zlib is loaded so that the package can be unpacked if (!extension_loaded('zlib')) { JError::raiseWarning('SOME_ERROR_CODE', JText::_('WARNINSTALLZLIB')); return false; } // If there is no uploaded file, we have a problem... if (!is_array($userfile) ) { JError::raiseWarning('SOME_ERROR_CODE', JText::_('No file selected')); return false; } // Check if there was a problem uploading the file. if ( $userfile['error'] || $userfile['size'] < 1 ) { JError::raiseWarning('SOME_ERROR_CODE', JText::_('WARNINSTALLUPLOADERROR')); return false; } // Build the appropriate paths $config =& JFactory::getConfig(); $tmp_dest = $config->getValue('config.tmp_path').DS.$userfile['name']; $tmp_src = $userfile['tmp_name']; // Move uploaded file jimport('joomla.filesystem.file'); $uploaded = JFile::upload($tmp_src, $tmp_dest); // Unpack the downloaded package file $package = JInstallerHelper::unpack($tmp_dest); return $package; } /** * Install an extension from a directory * * @static * @return boolean True on success * @since 1.0 */ function _getPackageFromFolder() { // Get the path to the package to install $p_dir = JRequest::getString('install_directory'); $p_dir = JPath::clean( $p_dir ); // Did you give us a valid directory? if (!is_dir($p_dir)) { JError::raiseWarning('SOME_ERROR_CODE', JText::_('Please enter a package directory')); return false; } // Detect the package type $type = JInstallerHelper::detectType($p_dir); // Did you give us a valid package? if (!$type) { JError::raiseWarning('SOME_ERROR_CODE', JText::_('Path does not have a valid package')); return false; } $package['packagefile'] = null; $package['extractdir'] = null; $package['dir'] = $p_dir; $package['type'] = $type; return $package; } /** * Install an extension from a URL * * @static * @return boolean True on success * @since 1.5 */ function _getPackageFromUrl() { // Get a database connector $db = & JFactory::getDBO(); // Get the URL of the package to install $url = JRequest::getString('install_url'); // Did you give us a URL? if (!$url) { JError::raiseWarning('SOME_ERROR_CODE', JText::_('Please enter a URL')); return false; } // Download the package at the URL given $p_file = JInstallerHelper::downloadPackage($url); // Was the package downloaded? if (!$p_file) { JError::raiseWarning('SOME_ERROR_CODE', JText::_('Invalid URL')); return false; } $config =& JFactory::getConfig(); $tmp_dest = $config->getValue('config.tmp_path'); // Unpack the downloaded package file $package = JInstallerHelper::unpack($tmp_dest.DS.$p_file); return $package; } }