113 lines
4.2 KiB
PHP
113 lines
4.2 KiB
PHP
<?php
|
||
|
||
if (! defined('BASE_DIR'))
|
||
exit;
|
||
|
||
// Фикс для ядра: инициализируем константы заранее, чтобы PHP 8.4 не ругался на null в htmlspecialchars
|
||
if (!defined('MODULE_TITLE')) define('MODULE_TITLE', '');
|
||
if (!defined('MODULE_DESCRIPTION')) define('MODULE_DESCRIPTION', '');
|
||
if (!defined('MODULE_KEYWORDS')) define('MODULE_KEYWORDS', '');
|
||
|
||
function mod_login ()
|
||
{
|
||
global $AVE_Template;
|
||
|
||
require_once(BASE_DIR . '/modules/login/class/login.php');
|
||
|
||
// Создаем экземпляр класса
|
||
$login_obj = new Login;
|
||
|
||
// Если прошли по ссылке для показа формы, убираем вывод тега [mod_login]
|
||
if (isset($_REQUEST['module']) && $_REQUEST['module'] == 'login' && ($_REQUEST['action'] ?? '') == 'form')
|
||
return false;
|
||
|
||
$tpl_dir = BASE_DIR . '/modules/login/public/';
|
||
// PHP 8.4 фикс: используем оператор ?? на случай, если сессия пуста
|
||
$lang_file = BASE_DIR . '/modules/login/lang/' . ($_SESSION['user_language'] ?? 'ru') . '.txt';
|
||
|
||
if (isset($_SESSION['user_id']) && isset($_SESSION['user_pass']))
|
||
{
|
||
$avatar = getAvatar((int)$_SESSION['user_id'], 180);
|
||
$abs_path = (defined('ABS_PATH')) ? ABS_PATH : '/';
|
||
|
||
// Если аватар пустой или это заглушка (иконка), подставляем default.png
|
||
if (empty($avatar) || strpos($avatar, 'user.png') !== false) {
|
||
$avatar = $abs_path . 'uploads/avatars/default.png';
|
||
}
|
||
|
||
$AVE_Template->assign('avatar', $avatar);
|
||
|
||
$AVE_Template->config_load($lang_file, 'displaypanel');
|
||
$AVE_Template->display($tpl_dir . 'panel.tpl');
|
||
}
|
||
else
|
||
{
|
||
// Используем объект для вызова настроек, если метод не статичный
|
||
$active = Login::settings('login_status');
|
||
|
||
$AVE_Template->config_load($lang_file, 'loginform');
|
||
$AVE_Template->assign('active', $active);
|
||
$AVE_Template->display($tpl_dir . 'form.tpl');
|
||
}
|
||
|
||
return true;
|
||
}
|
||
|
||
|
||
//=======================================================
|
||
// Public functions (Когда заходим по прямой ссылке на модуль)
|
||
//=======================================================
|
||
if (! defined('ACP') && isset($_REQUEST['module']) && $_REQUEST['module'] == 'login' && ! empty($_REQUEST['action']))
|
||
{
|
||
require_once(BASE_DIR . '/modules/login/class/login.php');
|
||
|
||
$login_obj = new Login;
|
||
|
||
Login::$_tpl_dir = BASE_DIR . '/modules/login/public/';
|
||
Login::$_lang_file = BASE_DIR . '/modules/login/lang/' . ($_SESSION['user_language'] ?? 'ru') . '.txt';
|
||
|
||
// В PHP 8+ вызов Login::method() может выдать ошибку, если методы в классе не static.
|
||
// Поэтому мы используем созданный $login_obj->method()
|
||
switch ($_REQUEST['action'])
|
||
{
|
||
case 'form': $login_obj->form(); break;
|
||
case 'authorize': $login_obj->authorize(); break;
|
||
case 'logout': $login_obj->logout(); break;
|
||
case 'register': $login_obj->register(); break;
|
||
case 'reminder': $login_obj->reminder(); break;
|
||
case 'change': $login_obj->change(); break;
|
||
case 'delete': $login_obj->delete(); break;
|
||
case 'profile': $login_obj->profile(); break;
|
||
case 'info': $login_obj->info(); break;
|
||
case 'checkusername': $login_obj->checkusername(); break;
|
||
case 'checkemail': $login_obj->checkemail(); break;
|
||
}
|
||
}
|
||
|
||
//=======================================================
|
||
// The control module in the admin panel
|
||
//=======================================================
|
||
if (
|
||
defined('ACP')
|
||
&& (isset($_REQUEST['moduleaction']) && !empty($_REQUEST['moduleaction']))
|
||
&& (isset($_REQUEST['mod']) && $_REQUEST['mod'] == 'login')
|
||
)
|
||
{
|
||
require_once(BASE_DIR . '/modules/login/class/login.php');
|
||
|
||
$login_obj = new Login;
|
||
|
||
Login::$_tpl_dir = BASE_DIR . '/modules/login/admin/';
|
||
$lang_file = BASE_DIR . '/modules/login/lang/' . ($_SESSION['admin_language'] ?? 'ru') . '.txt';
|
||
|
||
$AVE_Template->config_load($lang_file, 'showconfig');
|
||
$AVE_Template->assign('config_vars', $AVE_Template->get_config_vars());
|
||
|
||
switch($_REQUEST['moduleaction'])
|
||
{
|
||
case '1':
|
||
$login_obj->admin();
|
||
break;
|
||
}
|
||
}
|
||
?>
|