Eu sei que posso obter informações do usuário de qualquer usuário com o objeto getUser( $id )
:
$user = JFactory::getUser();
if (!$user->guest) {
echo 'You are logged in as:<br />';
echo 'User name: ' . $user->username . '<br />';
echo 'Real name: ' . $user->name . '<br />';
echo 'User ID : ' . $user->id . '<br />';
}
Mas é possível obter o ID de qualquer usuário com base no nome de usuário (ou, melhor ainda, no nome real)? Observe que não estou procurando o usuário conectado atual, mas qualquer usuário.
Dado apenas o nome do usuário, quero ecoar algo como isto:
Jon Doe has user ID: 43
Jane Doe has user ID: 82
Isso pode ser feito?
Simples, você pode usar JUserHelper
para conseguir isso:
$username = 'jophanpw';
$userId = JUserHelper::getUserId($username);
echo $userId;
Todo o código acima faz é executar a seguinte consulta ao banco de dados:
public static function getUserId($username)
{
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select($db->quoteName('id'))
->from($db->quoteName('#__users'))
->where($db->quoteName('username') . ' = ' . $db->quote($username));
$db->setQuery($query, 0, 1);
return $db->loadResult();
}