Joomla es un buenisimo CMS, y para muchos de los que programamos, nos gustaria integrar nuestro código propio con los beneficios que Joomla ofrece. Fué asi como me puse a investigar formas de autenticar mis usuarios contra la base de datos de joomla, hacer uso de los datos de usuario como
nombre de usuario
nombre completo
correo
Hay módulos para usar php propio dentro de Joomla, uno de los mejores que probé es
COM JUMI pero esto implica tener el código dentro de la estructura de folders de joomla (components/com_jumi/files)
una ventaja es que al ser tu código ejecutado por este componente, se tienen disponibles las variables de usuario de joomla, $user; para usar por ejemplo:
$user->username
$user->name
$user->email
que tal si se tiene un programa que se desea este fuera de la estructura de folders de Joomla? y solo se quiere usar el sistema de autenticacion de Joomla?
pues usando el siguiente código en tus paginas PHP puedes tener a tu disposicion las variables de usuario para asi poder validar de la manera que mejor sea conveniente para ti.
// la variable $ruta_a_joomla es la ruta relativa desde donde esta tu
//programa hasta el folder de instalacion de joomla
// en mi caso tengo mi codigo propio en
// http://misitioweb/programa/config/
// y mi instalacion de joomla esta en
// http://misitioweb/joomla/
// si se fijan subo 2 folders y luego me meto en el folder de joomla ("joomla") como
// se ve en la asignacion de variable a continuacion
$ruta_a_joomla = "/../../joomla/";
define( '_JEXEC', 1 );
define( 'JPATH_BASE', realpath(dirname(__FILE__).$ruta_a_joomla ));
define( 'DS', DIRECTORY_SEPARATOR );
// incluyo esos 3 archivos
// si tienen problemas incluyendo los archivos hagan un echo de esas rutas
//pej:
// echo JPATH_BASE .DS.'includes'.DS.'defines.php';
//les deberia de dar la ruta absoluta a este archivo, si esta mal, entonces corrijan la variable $ruta_a_joomla para tener la ruta correcta
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
require_once ( JPATH_BASE .DS.'configuration.php' );
$mainframe =& JFactory::getApplication('site');
$mainframe->initialise();
$userx = &JFactory::getUser();
// ahora probamos si tenemos las variables disponibles
if($userx->guest){
// el usuario no esta logeado
echo "Por favor autenticarse en Joomla para hacer uso de este recurso";
} else {
// el usuario esta logeado en joomla
echo "Hola ".$userx->name;
echo "<br>";
echo "Tu ID de joomla es: ".$userx->id;
echo "<br>";
echo "Tu correo es: ".$userx->email;
echo "<br>";
echo "Tu nombre de usuario es: ".$userx->username;
echo "<br>";
echo "Tu password encriptado es: ".$userx->password;
echo "<br>";
echo "1 si estas bloqueado, 0 si no: ".$userx->block;
echo "<br>";
echo "fecha de tu registro: ".$userx->registerDate;
echo "<br>";
echo "Tu ultima visita fue: ".$userx->lastvisitDate;
}
si todo lo anterior sale bien. veran impresa la informacion del usuario logeado en joomla en esa sesion.
teniendo esto ya podran hacer uso de las distintas funciones que joomla tiene disponible para el manejo de su CMS, mas info sobre esto:
http://docs.joomla.org/