File "helper.php"
Full Path: /home/asmplong/www/ancien-site-2019/site/libraries/joomla/client/helper.php
File size: 6.31 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* @package Joomla.Platform
* @subpackage Client
*
* @copyright Copyright (C) 2005 - 2011 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE
*/
defined('JPATH_PLATFORM') or die;
/**
* Client helper class
*
* @package Joomla.Platform
* @subpackage Client
* @since 11.1
*/
class JClientHelper
{
/**
* Method to return the array of client layer configuration options
*
* @param string $client Client name, currently only 'ftp' is supported
* @param boolean $force Forces re-creation of the login credentials. Set this to
* true if login credentials in the session storage have changed
*
* @return array Client layer configuration options, consisting of at least
* these fields: enabled, host, port, user, pass, root
* @since 11.1
*/
public static function getCredentials($client, $force=false)
{
static $credentials = array();
$client = strtolower($client);
if (!isset($credentials[$client]) || $force) {
// Initialise variables.
$config = JFactory::getConfig();
// Fetch the client layer configuration options for the specific client
switch ($client) {
case 'ftp':
$options = array(
'enabled' => $config->get('ftp_enable'),
'host' => $config->get('ftp_host'),
'port' => $config->get('ftp_port'),
'user' => $config->get('ftp_user'),
'pass' => $config->get('ftp_pass'),
'root' => $config->get('ftp_root')
);
break;
default:
$options = array(
'enabled' => false,
'host' => '',
'port' => '',
'user' => '',
'pass' => '',
'root' => ''
);
break;
}
// If user and pass are not set in global config lets see if they are in the session
if ($options['enabled'] == true && ($options['user'] == '' || $options['pass'] == '')) {
$session = JFactory::getSession();
$options['user'] = $session->get($client.'.user', null, 'JClientHelper');
$options['pass'] = $session->get($client.'.pass', null, 'JClientHelper');
}
// If user or pass are missing, disable this client
if ($options['user'] == '' || $options['pass'] == '') {
$options['enabled'] = false;
}
// Save the credentials for later use
$credentials[$client] = $options;
}
return $credentials[$client];
}
/**
* Method to set client login credentials
*
* @param string $client Client name, currently only 'ftp' is supported
* @param string $user Username
* @param string $pass Password
*
* @return boolean True if the given login credentials have been set and are valid
* @since 11.1
*/
public static function setCredentials($client, $user, $pass)
{
$return = false;
$client = strtolower($client);
// Test if the given credentials are valid
switch ($client) {
case 'ftp':
$config = JFactory::getConfig();
$options = array(
'enabled' => $config->get('ftp_enable'),
'host' => $config->get('ftp_host'),
'port' => $config->get('ftp_port'),
);
if ($options['enabled']) {
jimport('joomla.client.ftp');
$ftp = JFTP::getInstance($options['host'], $options['port']);
// Test the conection and try to log in
if ($ftp->isConnected()) {
if ($ftp->login($user, $pass)) {
$return = true;
}
$ftp->quit();
}
}
break;
default:
break;
}
if ($return) {
// Save valid credentials to the session
$session = JFactory::getSession();
$session->set($client.'.user', $user, 'JClientHelper');
$session->set($client.'.pass', $pass, 'JClientHelper');
// Force re-creation of the data saved within JClientHelper::getCredentials()
JClientHelper::getCredentials($client, true);
}
return $return;
}
/**
* Method to determine if client login credentials are present
*
* @param string Client name, currently only 'ftp' is supported
*
* @return boolean True if login credentials are available
* @since 11.1
*/
public static function hasCredentials($client)
{
$return = false;
$client = strtolower($client);
// Get (unmodified) credentials for this client
switch ($client) {
case 'ftp':
$config = JFactory::getConfig();
$options = array(
'enabled' => $config->get('ftp_enable'),
'user' => $config->get('ftp_user'),
'pass' => $config->get('ftp_pass')
);
break;
default:
$options = array(
'enabled' => false,
'user' => '',
'pass' => ''
);
break;
}
if ($options['enabled'] == false) {
// The client is disabled in global config, so let's pretend we are OK
$return = true;
} else if ($options['user'] != '' && $options['pass'] != '') {
// Login credentials are available in global config
$return = true;
} else {
// Check if login credentials are available in the session
$session = JFactory::getSession();
$user = $session->get($client.'.user', null, 'JClientHelper');
$pass = $session->get($client.'.pass', null, 'JClientHelper');
if ($user != '' && $pass != '') {
$return = true;
}
}
return $return;
}
/**
* Determine whether input fields for client settings need to be shown
*
* If valid credentials were passed along with the request, they are saved to the session.
* This functions returns an exception if invalid credentials have been given or if the
* connection to the server failed for some other reason.
*
* @param string $client
*
* @return mixed True, if FTP settings should be shown or an exception
* @since 11.1
*/
public static function setCredentialsFromRequest($client)
{
// Determine wether FTP credentials have been passed along with the current request
$user = JRequest::getString('username', null, 'POST', JREQUEST_ALLOWRAW);
$pass = JRequest::getString('password', null, 'POST', JREQUEST_ALLOWRAW);
if ($user != '' && $pass != '')
{
// Add credentials to the session
if (JClientHelper::setCredentials($client, $user, $pass)) {
$return = false;
} else {
$return = JError::raiseWarning('SOME_ERROR_CODE', JText::_('JLIB_CLIENT_ERROR_HELPER_SETCREDENTIALSFROMREQUEST_FAILED'));
}
}
else
{
// Just determine if the FTP input fields need to be shown
$return = !JClientHelper::hasCredentials('ftp');
}
return $return;
}
}