Ehrmantraut
Administrador
Bom amigos venho aqui trazer uma classe em php para ajudar a fazer interações com o xenforo, por exemplo obter a url do avatar do usuário, fazer login usando as credenciais do site, obter o id do grupo do usuário e entre outras informações.
XenForo_Class.php:
Como usar? É simples, crie um outro PHP com o nome escolhido, por exemplo: xf_Login.php e nele insira o código:
Para enviar os dados pela URL, no seu loader coloque assim:
Ou seja irá ficar assim:
https://website.net/forum/xf_Login.php?user=Rick&pass=123
Créditos:
Rick
XenForo_Class.php:
PHP:
<?php
define('FORUM_ROOT', 'https://website.net/forum/'); // Seu site
define('XF_ROOT', '../.');
class CXenforo
{
function __construct(){
require_once(XF_ROOT . '/library/XenForo/Autoloader.php');
XenForo_Autoloader::getInstance()->setupAutoloader(XF_ROOT . '/library');
XenForo_Application::initialize(XF_ROOT . '/library', XF_ROOT);
XenForo_Application::set('page_start_time', TIMENOW);
}
public function sessionUsername(){
$dependencies = new XenForo_Dependencies_Public();
$dependencies->preLoadData();
XenForo_Session::startPublicSession();
$visitor = XenForo_Visitor::getInstance();
return ($visitor->username);
}
public function xf_userinfo(){
$userModel = XenForo_Model::create('XenForo_Model_User');
$criteria = array(
'user_group_id' => array (1,2,3,4,5)
);
$options = array(
'join' => XenForo_Model_User::FETCH_USER_FULL,
'order' => 'user_id'
);
return $userModel->getModelFromCache('XenForo_Model_User')->getUsers($criteria, $options);
}
public function xf_login($user, $pass){
$db = XenForo_Application::getDb();
$data = $db->fetchOne('SELECT auth.data FROM xf_user_authenticate AS auth INNER
JOIN xf_user AS user ON (user.user_id = auth.user_id) WHERE user.username = ?', $user);
$auth = XenForo_Authentication_Abstract::createDefault();
$auth->setData($data);
$check = $auth->authenticate($user, $pass);
return $check;
}
public function userGroupID($usuario){
$userModel = XenForo_Model::create('XenForo_Model_User');
$user = $userModel->getUserByName($usuario);
return $user['user_group_id'];
}
public function getUser_Info($username,$param)
{
$userModel = XenForo_Model::create('XenForo_Model_User');
$user = $userModel->getUserByName($username);
return $user[$param];
}
public function getUser_Avatar($username, $size){
$userModel = XenForo_Model::create('XenForo_Model_User');
$user = $userModel->getUserByName($username);
$group = floor($user['user_id'] / 1000);
if($user[avatar_date] == 0)
return FORUM_ROOT . "styles/default/xenforo/avatars/avatar_s.png";
else
return FORUM_ROOT . XenForo_Application::$externalDataUrl . "/avatars/$size/$group/$user[user_id].jpg?$user[avatar_date]";
}
}
?>
PHP:
<?php
include "XenForo_Class.php";
$user_name = addslashes($_GET['user']);
$user_pass = addslashes($_GET['pass']);
$Xenforo = new CXenforo();
if ($Xenforo->xf_login($user_name, $user_pass))
echo "LOGIN_OK";
else
echo "LOGIN_ERROR";
?>
Código:
string ResponseString = new WebClient().DownloadString("https://website.net/forum/xf_Login.php?user=" + Username + "&pass=" + Password);
if (ResponseString == "LOGIN_OK") {
// Sucesso
}
else if (ResponseString == "LOGIN_ERROR") {
// Usuário ou senha incorretos
}
https://website.net/forum/xf_Login.php?user=Rick&pass=123
Créditos:
Rick