⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 model.php

📁 Joomla!除了具有新闻/文章管理
💻 PHP
📖 第 1 页 / 共 2 页
字号:
<?php/** * @version		$Id: model.php 10381 2008-06-01 03:35:53Z pasamio $ * @package		Joomla * @subpackage	Installation * @copyright	Copyright (C) 2005 - 2008 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. */// no direct accessdefined('_JEXEC') or die('Restricted access');/** * @package		Joomla * @subpackage	Installation */jimport('joomla.application.component.model');class JInstallationModel extends JModel{	/**	 * Array used to store data between model and view	 *	 * @var		Array	 * @access	protected	 * @since	1.5	 */	var	$data		= array();	/**	 * Array used to store user input created during the installation process	 *	 * @var		Array	 * @access	protected	 * @since	1.5	 */	var	$vars		= array();	/**	 * Constructor	 */	function __construct($config = array())	{		$this->_state = new JObject();		//set the view name		if (empty( $this->_name ))		{			if (isset($config['name']))  {				$this->_name = $config['name'];			}			else			{				$r = null;				if (!preg_match('/Model(.*)/i', get_class($this), $r)) {					JError::raiseError (500, "JModel::__construct() : Can't get or parse class name.");				}				$this->_name = strtolower( $r[1] );			}		}	}	/**	 * Generate a panel of language choices for the user to select their language	 *	 * @return	boolean True if successful	 * @access	public	 * @since	1.5	 */	function chooseLanguage()	{		global $mainframe;		$vars	=& $this->getVars();		jimport('joomla.language.helper');		$native = JLanguageHelper::detectLanguage();		$forced = $mainframe->getLocalise();		if ( !empty( $forced['lang'] ) ){			$native = $forced['lang'];		}		$lists = array ();		$lists['langs'] = JLanguageHelper::createLanguageList($native);		$this->setData('lists', $lists);		return true;	}	/**	 * Gets the parameters for database creation	 *	 * @return	boolean True if successful	 * @access	public	 * @since	1.5	 */	function dbConfig()	{		global $mainframe;		$vars	=& $this->getVars();		if (!isset ($vars['DBPrefix'])) {			$vars['DBPrefix'] = 'jos_';		}		$lists	= array ();		$files	= array ('mysql', 'mysqli',);		$db		= JInstallationHelper::detectDB();		foreach ($files as $file)		{			$option = array ();			$option['text'] = $file;			if (strcasecmp($option['text'], $db) == 0)			{				$option['selected'] = 'selected="true"';			}			$lists['dbTypes'][] = $option;		}		$doc =& JFactory::getDocument();		$this->setData('lists', $lists);		return true;	}	/**	 * Displays the finish screen	 *	 * @return	boolean True if successful	 * @access	public	 * @since	1.5	 */	function finish()	{		global $mainframe;		$vars	=& $this->getVars();		$vars['siteurl']	= JURI::root();		$vars['adminurl']	= $vars['siteurl'].'administrator/';		return true;	}	/**	 * Gets ftp configuration parameters	 *	 * @return	boolean True if successful	 * @access	public	 * @since	1.5	 */	function ftpConfig($DBcreated = '0')	{		global $mainframe;		$vars	=& $this->getVars();		// Require the xajax library		require_once( JPATH_BASE.DS.'includes'.DS.'xajax'.DS.'xajax.inc.php' );		// Instantiate the xajax object and register the function		$xajax = new xajax(JURI::base().'installer/jajax.php');		$xajax->registerFunction(array('getFtpRoot', 'JAJAXHandler', 'ftproot'));		$xajax->registerFunction(array('FTPVerify', 'JAJAXHandler', 'ftpverify'));		//$xajax->debugOn();		$vars['DBcreated'] = JArrayHelper::getValue($vars, 'DBcreated', $DBcreated);		$strip = get_magic_quotes_gpc();		if (!isset ($vars['ftpEnable'])) {			$vars['ftpEnable'] = '1';		}		if (!isset ($vars['ftpHost'])) {			$vars['ftpHost'] = '127.0.0.1';		}		if (!isset ($vars['ftpPort'])) {			$vars['ftpPort'] = '21';		}		if (!isset ($vars['ftpUser'])) {			$vars['ftpUser'] = '';		}		if (!isset ($vars['ftpPassword'])) {			$vars['ftpPassword'] = '';		}		$doc =& JFactory::getDocument();		$doc->addCustomTag($xajax->getJavascript('', 'includes/js/xajax.js', 'includes/js/xajax.js'));		return true;	}	/**	 * Get data for later use	 *	 * @return	string	 * @access	public	 * @since	1.5	 */	function & getData($key){		if ( ! array_key_exists($key, $this->data) )		{			$null = null;			return $null;		}		return $this->data[$key];	}	/**	 * Get the local PHP settings	 *	 * @param	$val Value to get	 * @return	Mixed	 * @access	protected	 * @since	1.5	 */	function getPhpSetting($val) {		$r =  (ini_get($val) == '1' ? 1 : 0);		return $r ? 'ON' : 'OFF';	}	/**	 * Get the configuration variables for the installation	 *	 * @return	Array Configuration variables	 * @access	public	 * @since	1.5	 */	function & getVars()	{		if ( ! $this->vars )		{			// get a recursively slash stripped version of post			$post		= (array) JRequest::get( 'post' );			$postVars	= JArrayHelper::getValue( $post, 'vars', array(), 'array' );			$session	=& JFactory::getSession();			$registry	=& $session->get('registry');			$registry->loadArray($postVars, 'application');			$this->vars	= $registry->toArray('application');		}		return $this->vars;	}	/**	 * Gets the parameters for database creation	 *	 *	 * @return	boolean True if successful	 * @access	public	 * @since	1.5	 */	function license()	{		return true;	}	/**	 * Gets the parameters for database creation	 *	 * @return	boolean True if successful	 * @access	public	 * @since	1.5	 */	function makeDB($vars = false)	{		global $mainframe;		// Initialize variables		if ($vars === false) {			$vars	= $this->getVars();		}		$errors 	= null;		$lang 		= JArrayHelper::getValue($vars, 'lang', 'en-GB');		$DBcreated	= JArrayHelper::getValue($vars, 'DBcreated', '0');		$DBtype 	= JArrayHelper::getValue($vars, 'DBtype', 'mysql');		$DBhostname = JArrayHelper::getValue($vars, 'DBhostname', '');		$DBuserName = JArrayHelper::getValue($vars, 'DBuserName', '');		$DBpassword = JArrayHelper::getValue($vars, 'DBpassword', '');		$DBname 	= JArrayHelper::getValue($vars, 'DBname', '');		$DBPrefix 	= JArrayHelper::getValue($vars, 'DBPrefix', 'jos_');		$DBOld 		= JArrayHelper::getValue($vars, 'DBOld', 'bu');		$DBversion 		= JArrayHelper::getValue($vars, 'DBversion', '');		// these 3 errors should be caught by the javascript in dbConfig		if ($DBtype == '')		{			$this->setError(JText::_('validType'));			$this->setData('back', 'dbconfig');			$this->setData('errors', $errors);			return false;			//return JInstallationView::error($vars, JText::_('validType'), 'dbconfig');		}		if (!$DBhostname || !$DBuserName || !$DBname)		{			$this->setError(JText::_('validDBDetails'));			$this->setData('back', 'dbconfig');			$this->setData('errors', $errors);			return false;			//return JInstallationView::error($vars, JText::_('validDBDetails'), 'dbconfig');		}		if ($DBname == '')		{			$this->setError(JText::_('emptyDBName'));			$this->setData('back', 'dbconfig');			$this->setData('errors', $errors);			return false;			//return JInstallationView::error($vars, JText::_('emptyDBName'), 'dbconfig');		}		if (!preg_match( '#^[a-zA-Z]+[a-zA-Z0-9_]*$#', $DBPrefix )) {			$this->setError(JText::_('MYSQLPREFIXINVALIDCHARS'));			$this->setData('back', 'dbconfig');			$this->setData('errors', $errors);			return false;		}		if (strlen($DBPrefix) > 15) {			$this->setError(JText::_('MYSQLPREFIXTOOLONG'));			$this->setData('back', 'dbconfig');			$this->setData('errors', $errors);			return false;		}		if (strlen($DBname) > 64) {			$this->setError(JText::_('MYSQLDBNAMETOOLONG'));			$this->setData('back', 'dbconfig');			$this->setData('errors', $errors);			return false;		}		if (!$DBcreated)		{			$DBselect	= false;			$db = & JInstallationHelper::getDBO($DBtype, $DBhostname, $DBuserName, $DBpassword, null, $DBPrefix, $DBselect);			if ( JError::isError($db) ) {				// connection failed				$this->setError(JText::sprintf('WARNNOTCONNECTDB', $db->toString()));				$this->setData('back', 'dbconfig');				$this->setData('errors', $db->toString());				return false;			}			if ($err = $db->getErrorNum()) {				// connection failed				$this->setError(JText::sprintf('WARNNOTCONNECTDB', $db->getErrorNum()));				$this->setData('back', 'dbconfig');				$this->setData('errors', $db->getErrorMsg());				return false;			}			//Check utf8 support of database			$DButfSupport = $db->hasUTF();			// Try to select the database			if ( ! $db->select($DBname) )			{				if (JInstallationHelper::createDatabase($db, $DBname, $DButfSupport))				{					$db->select($DBname);					/*					// make the new connection to the new database					$db = NULL;					$db = & JInstallationHelper::getDBO($DBtype, $DBhostname, $DBuserName, $DBpassword, $DBname, $DBPrefix);					*/				} else {					$this->setError(JText::sprintf('WARNCREATEDB', $DBname));					$this->setData('back', 'dbconfig');					$this->setData('errors', $db->getErrorMsg());					return false;					//return JInstallationView::error($vars, array (JText::sprintf('WARNCREATEDB', $DBname)), 'dbconfig', $error);				}			} else {				// pre-existing database - need to set character set to utf8				// will only affect MySQL 4.1.2 and up				JInstallationHelper::setDBCharset($db, $DBname);			}			$db = & JInstallationHelper::getDBO($DBtype, $DBhostname, $DBuserName, $DBpassword, $DBname, $DBPrefix);			if ($DBOld == 'rm') {				if (JInstallationHelper::deleteDatabase($db, $DBname, $DBPrefix, $errors)) {					$this->setError(JText::_('WARNDELETEDB'));					$this->setData('back', 'dbconfig');					$this->setData('errors', $errors);					return false;					//return JInstallationView::error($vars, , 'dbconfig', JInstallationHelper::errors2string($errors));				}			}			else			{				/*				 * We assume since we aren't deleting the database that we need				 * to back it up :)				 */				if (JInstallationHelper::backupDatabase($db, $DBname, $DBPrefix, $errors)) {					$this->setError(JText::_('WARNBACKINGUPDB'));					$this->setData('back', 'dbconfig');					$this->setData('errors', JInstallationHelper::errors2string($errors));					return false;					//return JInstallationView::error($vars, JText::_('WARNBACKINGUPDB'), 'dbconfig', JInstallationHelper::errors2string($errors));				}			}			$type = $DBtype;			if ($type == 'mysqli') {				$type = 'mysql';			}			// set collation and use utf-8 compatibile script if appropriate			if ($DButfSupport) {				$dbscheme = 'sql'.DS.$type.DS.'joomla.sql';			} else {				$dbscheme = 'sql'.DS.$type.DS.'joomla_backward.sql';			}			if (JInstallationHelper::populateDatabase($db, $dbscheme, $errors) > 0)			{				$this->setError(JText::_('WARNPOPULATINGDB'));				$this->setData('back', 'dbconfig');				$this->setData('errors', JInstallationHelper::errors2string($errors));				return false;				//return JInstallationView::error($vars, JText::_('WARNPOPULATINGDB'), 'dbconfig', JInstallationHelper::errors2string($errors));			}			// Load the localise.sql for translating the data in joomla.sql/joomla_backwards.sql			// This feature is available for localized version of Joomla! 1.5			jimport('joomla.filesystem.file');			$dblocalise = 'sql'.DS.$type.DS.'localise.sql';			if(JFile::exists($dblocalise)) {				if(JInstallationHelper::populateDatabase($db, $dblocalise, $errors) > 0) {					$this->setError(JText::_('WARNPOPULATINGDB'));					$this->setData('back', 'dbconfig');					$this->setData('errors', JInstallationHelper::errors2string($errors));					return false;				}			}			// Handle default backend language setting. This feature is available for			// localized versions of Joomla! 1.5.			$langfiles = $mainframe->getLocaliseAdmin();			if (in_array($lang, $langfiles['admin']) || in_array($lang, $langfiles['site'])) {				// Determine the language settings				$param[] = Array();				if (in_array($lang, $langfiles['admin'])) {					$langparam[] = "administrator=$lang";				}				if (in_array($lang, $langfiles['site'])) {					$langparam[] = "site=$lang";				}				$langparams = implode("\n", $langparam);				// Because database config has not yet been set we just				// do the trick by a plain update of the proper record.				$where[] = "`option`='com_languages'";				$where = (count($where) ? ' WHERE '.implode(' AND ', $where) : '');				$query = "UPDATE #__components " .						"SET params='$langparams'" .						$where;				$db->setQuery($query);				if (!$db->query()) {					return false;				}			}		}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -