Daudz nejeedzu, bet kas tad tur taads ir ?
Code
<?php
/**
* @version $Id: application.php 20478 2011-01-28 17:48:29Z infograf768 $
* @package Joomla.Installation
* @copyright Copyright (C) 2005 - 2011 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
/**
* Joomla Application class
*
* Provide many supporting API functions
*
* @package Joomla.Installation
*/
class JInstallation extends JApplication
{
/**
* The url of the site
*
* @var string
*/
protected $_siteURL = null;
/**
* Class constructor
*
* @access protected
* @param array An optional associative array of configuration settings.
* Recognized key values include 'clientId' (this list is not meant to be comprehensive).
*/
public function __construct(array $config = array())
{
$config['clientId'] = 2;
parent::__construct($config);
JError::setErrorHandling(E_ALL, 'Ignore');
$this->_createConfiguration();
// Set the root in the URI based on the application name.
JURI::root(null, str_replace('/'.$this->getName(), '', JURI::base(true)));
}
/**
* Render the application
*
* @return void
*/
public function render()
{
$document = JFactory::getDocument();
$config = JFactory::getConfig();
$user = JFactory::getUser();
switch($document->getType())
{
case 'html' :
// Set metadata
$document->setTitle(JText::_('INSTL_PAGE_TITLE'));
break;
default :
break;
}
// Define component path
define('JPATH_COMPONENT', JPATH_BASE);
define('JPATH_COMPONENT_SITE', JPATH_SITE);
define('JPATH_COMPONENT_ADMINISTRATOR', JPATH_ADMINISTRATOR);
// Start the output buffer.
ob_start();
// Import the controller.
require_once JPATH_COMPONENT.'/controller.php';
// Execute the task.
$controller = JController::getInstance('JInstallation');
$controller->execute(JRequest::getVar('task'));
$controller->redirect();
// Get output from the buffer and clean it.
$contents = ob_get_contents();
ob_end_clean();
$params = array(
'template' => 'template',
'file' => 'index.php',
'directory' => JPATH_THEMES,
'params' => '{}'
);
$document->setBuffer($contents, 'installation');
$document->setTitle(JText::_('INSTL_PAGE_TITLE'));
$data = $document->render(false, $params);
JResponse::setBody($data);
if (JFactory::getConfig()->get('debug_lang')) {
$this->debugLanguage();
}
}
/**
* Initialise the application.
*
* @param $options array
*/
public function initialise(array $options = array())
{
//Get the localisation information provided in the localise.xml file.
$forced = $this->getLocalise();
// Check the request data for the language.
if (empty($options['language']))
{
$requestLang = JRequest::getCmd('lang', null);
if (!is_null($requestLang))
{
$options['language'] = $requestLang;
}
}
// Check the session for the language.
if (empty($options['language']))
{
$sessionLang = JFactory::getSession()->get('setup.language');
if (!is_null($sessionLang))
{
$options['language'] = $sessionLang;
}
}
// This could be a first-time visit - try to determine what the client accepts.
if (empty($options['language']))
{
if (!empty($forced['language']))
{
$options['language'] = $forced['language'];
} else {
jimport('joomla.language.helper');
$options['language'] = JLanguageHelper::detectLanguage();
if (empty($options['language'])) {
$options['language'] = 'en-GB';
}
}
}
// Give the user English
if (empty($options['language']))
{
$options['language'] = 'en-GB';
}
// Set the language in the class
$conf = JFactory::getConfig();
$conf->set('language', $options['language']);
$conf->set('debug_lang', $forced['debug']);
$conf->set('sampledata', $forced['sampledata']);
}
public static function debugLanguage()
{
ob_start();
$lang = JFactory::getLanguage();
echo '<h4>Parsing errors in language files</h4>';
$errorfiles = $lang->getErrorFiles();
if (count($errorfiles)) {
echo '<ul>';
foreach ($errorfiles as $file => $error)
{
echo "<li>$error</li>";
}
echo '</ul>';
}
else {
echo '<pre>None</pre>';
}
echo '<h4>Untranslated Strings</h4>';
echo '<pre>';
$orphans = $lang->getOrphans();
if (count($orphans)) {
ksort($orphans, SORT_STRING);
foreach ($orphans as $key => $occurance)
{
$guess = str_replace('_', ' ', $key);
$parts = explode(' ', $guess);
if (count($parts) > 1) {
array_shift($parts);
$guess = implode(' ', $parts);
}
$guess = trim($guess);
$key = trim(strtoupper($key));
$key = preg_replace('#\s+#', '_', $key);
$key = preg_replace('#\W#', '', $key);
// Prepare the text
$guesses[] = $key.'="'.$guess.'"';
}
echo "\n\n# ".$file."\n\n";
echo implode("\n", $guesses);
}
else {
echo 'None';
}
echo '</pre>';
$debug = ob_get_clean();
JResponse::appendBody($debug);
}
/**
* Set configuration values
*
* @param array Array of configuration values
* @param string The namespace
*/
public function setCfg(array $vars = array(), $namespace = 'config')
{
$this->_registry->loadArray($vars, $namespace);
}
/**
* Create the configuration registry
*/
public function _createConfiguration()
{
jimport('joomla.registry.registry');
// Create the registry with a default namespace of config which is read only
$this->_registry = new JRegistry('config');
}
/**
* Get the template
*
* @return string The template name
*/
public function getTemplate($params = false)
{
if ((bool) $params)
{
$template = new stdClass();
$template->template = 'template';
$template->params = new JRegistry;
return $template;
}
return 'template';
}
/**
* Create the user session
*
* @param string The sessions name
* @return object JSession
*/
public function & _createSession($name)
{
$options = array();
$options['name'] = $name;
$session = JFactory::getSession($options);
if (!is_a($session->get('registry'), 'JRegistry'))
{
// Registry has been corrupted somehow
$session->set('registry', new JRegistry('session'));
}
return $session;
}
/**
* Returns the language code and help url set in the localise.xml file.
* Used for forcing a particular language in localised releases.
*
* @return bool|array False on failure, array on success.
*/
public function getLocalise()
{
$xml = JFactory::getXML(JPATH_SITE.DS.'installation'.DS.'localise.xml');
if( ! $xml)
{
return false;
}
// Check that it's a localise file
if ($xml->getName() != 'localise')
{
return false;
}
$ret = array();
$ret['language'] = (string)$xml->forceLang;
$ret['helpurl'] = (string)$xml->helpurl;
$ret['debug'] = (string)$xml->debug;
$ret['sampledata'] = (string)$xml->sampledata;
return $ret;
}
/**
* Returns the installed language files in the administrative and
* front-end area.
*
* @return array Array with installed language packs in admin and site area
*/
public function getLocaliseAdmin($db=false)
{
jimport('joomla.filesystem.folder');
// Read the files in the admin area
$path = JLanguage::getLanguagePath(JPATH_SITE.DS.'administrator');
$langfiles['admin'] = JFolder::folders($path);
// Read the files in the site area
$path = JLanguage::getLanguagePath(JPATH_SITE);
$langfiles['site'] = JFolder::folders($path);
if($db)
{
$langfiles_disk = $langfiles;
$langfiles = Array();
$langfiles['admin'] = Array();
$langfiles['site'] = Array();
$query = $db->getQuery(true);
$query->select('element,client_id');
$query->from('#__extensions');
$query->where('type = '.$db->quote('language'));
$db->setQuery($query);
$langs = $db->loadObjectList();
foreach($langs as $lang)
{
switch($lang->client_id)
{
case 0: // site
if(in_array($lang->element, $langfiles_disk['site']))
{
$langfiles['site'][] = $lang->element;
}
break;
case 1: // administrator
if(in_array($lang->element, $langfiles_disk['admin']))
{
$langfiles['admin'][] = $lang->element;
}
break;
}
}
}
return $langfiles;
}
}