|
|
|
<?php
|
|
|
|
|
|
|
|
/**
|
|
|
|
* AVE.cms
|
|
|
|
*
|
|
|
|
* @package AVE.cms
|
|
|
|
* @version 3.x
|
|
|
|
* @filesource
|
|
|
|
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Класс для работы с группами и учетными записями пользователей
|
|
|
|
*/
|
|
|
|
class AVE_User
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* СВОЙСТВА
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Количество Пользователей отображаемых на одной странице списка
|
|
|
|
*
|
|
|
|
* @public int
|
|
|
|
*/
|
|
|
|
public $_limit = 25;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Допустимые права доступа в административной панели
|
|
|
|
*
|
|
|
|
* @public array
|
|
|
|
*/
|
|
|
|
public $_allowed_admin_permission = array(
|
|
|
|
'alles', // все права
|
|
|
|
'adminpanel', // доступ в админку
|
|
|
|
'group_view', 'group_edit', // группы пользователей
|
|
|
|
'user_view', 'user_edit', 'user_perms', // пользователи
|
|
|
|
'template_view', 'template_edit', 'template_php', // шаблоны
|
|
|
|
'rubric_view', 'rubric_edit', 'rubric_php', 'rubric_perms', 'rubric_code', // рубрики
|
|
|
|
'document_view', 'document_php', 'document_revisions', // документы
|
|
|
|
'remark_view', 'remark_edit', // заметки
|
|
|
|
'request_view', 'request_edit', 'request_php', // запросы
|
|
|
|
'navigation_view', 'navigation_edit', // навигация
|
|
|
|
'blocks_view', 'blocks_edit', // визуальные блоки
|
|
|
|
'sysblocks_view', 'sysblocks_edit', // системные блоки
|
|
|
|
'modules_view', 'modules_admin', 'modules_system', // модули
|
|
|
|
'mediapool_int', 'mediapool_add', 'mediapool_del', 'mediapool_finder', // файловый менеджер
|
|
|
|
'gen_settings', 'gen_settings_more', 'gen_settings_countries', 'gen_settings_languages', // общие настройки
|
|
|
|
'gen_settings_robots', 'gen_settings_fcustom',
|
|
|
|
'db_actions', // база данных
|
|
|
|
'logs_view', 'logs_clear', // логи
|
|
|
|
'cache_clear', 'cache_thumb' // сессии и кеш
|
|
|
|
);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Разделитель используемый при записи даты рождения
|
|
|
|
*
|
|
|
|
* @public string
|
|
|
|
*/
|
|
|
|
public $_birthday_delimetr = '.';
|
|
|
|
|
|
|
|
/**
|
|
|
|
* ВНУТРЕННИЕ МЕТОДЫ
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Проверка элементов учетной записи пользователя
|
|
|
|
*
|
|
|
|
* @param boolean $new признак проверки элементов новой учетной записи
|
|
|
|
* @return array
|
|
|
|
*/
|
|
|
|
function _userFieldValidate($new = false)
|
|
|
|
{
|
|
|
|
global $AVE_DB, $AVE_Template;
|
|
|
|
|
|
|
|
$errors = array();
|
|
|
|
|
|
|
|
$regex = '/[^\x20-\xFF]/';
|
|
|
|
$regex_username = '/[^\w-]/';
|
|
|
|
$regex_password = '/[^\x21-\xFF]/';
|
|
|
|
$regex_birthday = '#(0[1-9]|[12][0-9]|3[01])([[:punct:]| ])(0[1-9]|1[012])\2(19|20)\d\d#';
|
|
|
|
// $regex_email = "¬^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[a-z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)$¬i";
|
|
|
|
$regex_email = '/^[\w.-]+@[a-z0-9.-]+\.(?:[a-z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)$/i';
|
|
|
|
|
|
|
|
// Проверка логина
|
|
|
|
if (empty($_POST['user_name']))
|
|
|
|
{
|
|
|
|
$errors[] = @$AVE_Template->get_config_vars('USER_NO_USERNAME');
|
|
|
|
}
|
|
|
|
elseif (preg_match($regex_username, $_POST['user_name']))
|
|
|
|
{
|
|
|
|
$errors[] = @$AVE_Template->get_config_vars('USER_ERROR_USERNAME');
|
|
|
|
}
|
|
|
|
|
|
|
|
// Проверка имени
|
|
|
|
if (empty($_POST['firstname']))
|
|
|
|
{
|
|
|
|
$errors[] = @$AVE_Template->get_config_vars('USER_NO_FIRSTNAME');
|
|
|
|
}
|
|
|
|
elseif (preg_match($regex, stripslashes($_POST['firstname'])))
|
|
|
|
{
|
|
|
|
$errors[] = @$AVE_Template->get_config_vars('USER_ERROR_FIRSTNAME');
|
|
|
|
}
|
|
|
|
|
|
|
|
// Проверка фамилии
|
|
|
|
if (empty($_POST['lastname']))
|
|
|
|
{
|
|
|
|
$errors[] = @$AVE_Template->get_config_vars('USER_NO_LASTNAME');
|
|
|
|
}
|
|
|
|
elseif (preg_match($regex, stripslashes($_POST['lastname'])))
|
|
|
|
{
|
|
|
|
$errors[] = @$AVE_Template->get_config_vars('USER_ERROR_LASTNAME');
|
|
|
|
}
|
|
|
|
|
|
|
|
// Проверка e-Mail
|
|
|
|
if (empty($_POST['email']))
|
|
|
|
{
|
|
|
|
$errors[] = @$AVE_Template->get_config_vars('USER_NO_EMAIL');
|
|
|
|
}
|
|
|
|
elseif (!preg_match($regex_email, $_POST['email']))
|
|
|
|
{
|
|
|
|
$errors[] = @$AVE_Template->get_config_vars('USER_EMAIL_ERROR');
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
$email_exist = $AVE_DB->Query("
|
|
|
|
SELECT *
|
|
|
|
FROM " . PREFIX . "_users
|
|
|
|
WHERE email != '" . $_POST['Email_Old'] . "'
|
|
|
|
AND email = '" . $_POST['email'] . "'
|
|
|
|
" . ($new ? "AND email != '" . $_SESSION['user_email'] . "'" : '') . "
|
|
|
|
LIMIT 1
|
|
|
|
")->NumRows();
|
|
|
|
if ($email_exist==1)
|
|
|
|
{
|
|
|
|
$errors[] = @$AVE_Template->get_config_vars('USER_EMAIL_EXIST');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Проверка пароля
|
|
|
|
if (isset($_REQUEST['action']) && $_REQUEST['action'] != 'edit')
|
|
|
|
{
|
|
|
|
if (empty($_POST['password']))
|
|
|
|
{
|
|
|
|
$errors[] = @$AVE_Template->get_config_vars('USER_NO_PASSWORD');
|
|
|
|
}
|
|
|
|
elseif (strlen($_POST['password']) < 4)
|
|
|
|
{
|
|
|
|
$errors[] = @$AVE_Template->get_config_vars('USER_PASSWORD_SHORT');
|
|
|
|
}
|
|
|
|
elseif (preg_match($regex_password, $_POST['password']))
|
|
|
|
{
|
|
|
|
$errors[] = @$AVE_Template->get_config_vars('USER_PASSWORD_ERROR');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Проверка даты рождения
|
|
|
|
$match = '';
|
|
|
|
if (!empty($_POST['birthday']) && !preg_match($regex_birthday, $_POST['birthday'], $match))
|
|
|
|
{
|
|
|
|
$errors[] = @$AVE_Template->get_config_vars('USER_ERROR_DATEFORMAT');
|
|
|
|
}
|
|
|
|
elseif (!empty($match))
|
|
|
|
{
|
|
|
|
|
|
|
|
$_POST['birthday'] = $match[1]
|
|
|
|
. $this->_birthday_delimetr . $match[3]
|
|
|
|
. $this->_birthday_delimetr . $match[4];
|
|
|
|
}
|
|
|
|
|
|
|
|
return $errors;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* ВНЕШНИЕ МЕТОДЫ
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Группы пользователей
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Получение списка Групп пользователей
|
|
|
|
*
|
|
|
|
* @param string $exclude идентификатор исключаемой Группы пользователей (гостей)
|
|
|
|
* @return array
|
|
|
|
*/
|
|
|
|
function userGroupListGet($exclude = '')
|
|
|
|
{
|
|
|
|
global $AVE_DB;
|
|
|
|
|
|
|
|
$user_groups = array();
|
|
|
|
$sql = $AVE_DB->Query("
|
|
|
|
SELECT
|
|
|
|
grp.*,
|
|
|
|
COUNT(usr.Id) AS UserCount
|
|
|
|
FROM
|
|
|
|
" . PREFIX . "_user_groups AS grp
|
|
|
|
LEFT JOIN
|
|
|
|
" . PREFIX . "_users AS usr
|
|
|
|
ON usr.user_group = grp.user_group
|
|
|
|
" . (($exclude != '' && is_numeric($exclude)) ? "WHERE grp.user_group != '" . $exclude . "'" : '') . "
|
|
|
|
GROUP BY grp.user_group
|
|
|
|
");
|
|
|
|
|
|
|
|
while ($row = $sql->FetchRow())
|
|
|
|
{
|
|
|
|
array_push($user_groups, $row);
|
|
|
|
}
|
|
|
|
|
|
|
|
return $user_groups;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Отобразить список Групп пользователей
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
function userGroupListShow()
|
|
|
|
{
|
|
|
|
global $AVE_Template;
|
|
|
|
|
|
|
|
$AVE_Template->assign('ugroups', $this->userGroupListGet());
|
|
|
|
$AVE_Template->assign('content', $AVE_Template->fetch('groups/groups.tpl'));
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Создание новой Группы пользователей
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
function userGroupNew()
|
|
|
|
{
|
|
|
|
global $AVE_DB, $AVE_Template;
|
|
|
|
|
|
|
|
if (!empty($_POST['user_group_name']))
|
|
|
|
{
|
|
|
|
$AVE_DB->Query("
|
|
|
|
INSERT
|
|
|
|
INTO " . PREFIX . "_user_groups
|
|
|
|
SET
|
|
|
|
user_group = '',
|
|
|
|
user_group_name = '" . $_POST['user_group_name'] . "',
|
|
|
|
status = '1',
|
|
|
|
user_group_permission = ''
|
|
|
|
");
|
|
|
|
$iid = $AVE_DB->InsertId();
|
|
|
|
|
|
|
|
reportLog($AVE_Template->get_config_vars('UGROUP_REPORT_ADD') . ' - (' . groupName($iid) . ')');
|
|
|
|
|
|
|
|
header('Location:index.php?do=groups&action=grouprights&Id=' . $iid . '&cp=' . SESSION);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
header('Location:index.php?do=groups&cp=' . SESSION);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Удаление Группы пользователей
|
|
|
|
*
|
|
|
|
* @param int $user_group_id идентификатор Группы пользователей
|
|
|
|
*/
|
|
|
|
function userGroupDelete($user_group_id = '0')
|
|
|
|
{
|
|
|
|
global $AVE_DB, $AVE_Template;
|
|
|
|
|
|
|
|
if (is_numeric($user_group_id) && $user_group_id > 2)
|
|
|
|
{
|
|
|
|
$exist_user_in_group = $AVE_DB->Query("
|
|
|
|
SELECT user_group
|
|
|
|
FROM " . PREFIX . "_users
|
|
|
|
WHERE user_group = '" . $user_group_id . "'
|
|
|
|
LIMIT 1
|
|
|
|
")->NumRows();
|
|
|
|
|
|
|
|
if (!$exist_user_in_group)
|
|
|
|
{
|
|
|
|
$AVE_DB->Query("
|
|
|
|
DELETE
|
|
|
|
FROM " . PREFIX . "_user_groups
|
|
|
|
WHERE user_group = '" . $user_group_id . "'
|
|
|
|
");
|
|
|
|
|
|
|
|
reportLog($AVE_Template->get_config_vars('UGROUP_REPORT_DEL') . ' - (' . groupName($user_group_id) . ')');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
header('Location:index.php?do=groups&cp=' . SESSION);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Редактирование прав Группы пользователей
|
|
|
|
*
|
|
|
|
* @param int $user_group_id идентификатор Группы пользователей
|
|
|
|
*/
|
|
|
|
function userGroupPermissionEdit($user_group_id)
|
|
|
|
{
|
|
|
|
global $AVE_DB, $AVE_Template, $AVE_Module;
|
|
|
|
|
|
|
|
if ((UGROUP != 1 && UGROUP == $user_group_id) || (UGROUP != 1 && $user_group_id == 1) || (UGROUP != 1 && $user_group_id == 2))
|
|
|
|
{
|
|
|
|
|
|
|
|
$AVE_Template->assign('own_group', true);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if (is_numeric($user_group_id) && $user_group_id)
|
|
|
|
{
|
|
|
|
$row = $AVE_DB->Query("
|
|
|
|
SELECT
|
|
|
|
user_group_name,
|
|
|
|
user_group_permission
|
|
|
|
FROM
|
|
|
|
" . PREFIX . "_user_groups
|
|
|
|
WHERE
|
|
|
|
user_group = '" . $user_group_id . "'
|
|
|
|
")->FetchRow();
|
|
|
|
}
|
|
|
|
|
|
|
|
if (empty($row))
|
|
|
|
{
|
|
|
|
$AVE_Template->assign('no_group', true);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
$AVE_Template->assign('g_all_permissions', $this->_allowed_admin_permission);
|
|
|
|
$AVE_Template->assign('g_group_permissions', array_diff(explode('|', $row->user_group_permission), array('')));
|
|
|
|
$AVE_Template->assign('g_name', $row->user_group_name);
|
|
|
|
$AVE_Template->assign('modules', $AVE_Module->_modules);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
$AVE_Template->assign('content', $AVE_Template->fetch('groups/perms.tpl'));
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Запись прав Групп пользователей
|
|
|
|
*
|
|
|
|
* @param int $user_group_id идентификатор Группы пользователей
|
|
|
|
*/
|
|
|
|
function userGroupPermissionSave($user_group_id)
|
|
|
|
{
|
|
|
|
global $AVE_DB, $AVE_Template;
|
|
|
|
|
|
|
|
if (is_numeric($user_group_id))
|
|
|
|
{
|
|
|
|
$perms = (!empty($_REQUEST['perms']) && is_array($_REQUEST['perms'])) ? implode('|', $_REQUEST['perms']) : '';
|
|
|
|
$perms = ($user_group_id == '1' || in_array('alles', $_REQUEST['perms'])) ? 'alles' : $perms;
|
|
|
|
$perms = ($user_group_id == '2') ? '' : $perms;
|
|
|
|
|
|
|
|
$sql = $AVE_DB->Query("
|
|
|
|
UPDATE " . PREFIX . "_user_groups
|
|
|
|
SET user_group_permission = '" . $perms . "'
|
|
|
|
" . (!empty($_POST['user_group_name']) ? ", user_group_name = '" . $_POST['user_group_name'] . "'" : '') . "
|
|
|
|
WHERE user_group = '" . $user_group_id . "'
|
|
|
|
");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if ($sql->_result === false) {
|
|
|
|
$message = $AVE_Template->get_config_vars('UGROUP_SAVED_ERR');
|
|
|
|
$header = $AVE_Template->get_config_vars('UGROUP_ERROR');
|
|
|
|
$theme = 'error';
|
|
|
|
|
|
|
|
}else{
|
|
|
|
$message = $AVE_Template->get_config_vars('UGROUP_SAVED');
|
|
|
|
$header = $AVE_Template->get_config_vars('UGROUP_SUCCESS');
|
|
|
|
$theme = 'accept';
|
|
|
|
reportLog($AVE_Template->get_config_vars('UGROUP_SAVE_MAIN') . ' - (' . groupName($user_group_id) . ')');
|
|
|
|
}
|
|
|
|
|
|
|
|
if (isset($_REQUEST['ajax']) && $_REQUEST['ajax'] = '1') {
|
|
|
|
|
|
|
|
echo json_encode(array('message' => $message, 'header' => $header, 'theme' => $theme));
|
|
|
|
} else {
|
|
|
|
$AVE_Template->assign('message', $message);
|
|
|
|
header('Location:index.php?do=groups&cp=' . SESSION);
|
|
|
|
}
|
|
|
|
|
|
|
|
exit;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Учетные записи пользователей
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Формирование спискка учетных записей пользователей
|
|
|
|
*
|
|
|
|
* @param int $user_group_id идентификатор Группы пользователей
|
|
|
|
*/
|
|
|
|
function userListFetch($user_group_id = '')
|
|
|
|
{
|
|
|
|
global $AVE_DB, $AVE_Template;
|
|
|
|
|
|
|
|
$search_by_group = '';
|
|
|
|
$search_by_id_or_name = '';
|
|
|
|
$user_group_navi = '';
|
|
|
|
$query_navi = '';
|
|
|
|
$status_search = '';
|
|
|
|
$status_navi = '';
|
|
|
|
|
|
|
|
if (isset($_REQUEST['user_group']) && $_REQUEST['user_group'] != '0')
|
|
|
|
{
|
|
|
|
$user_group_id = ($user_group_id != '') ? $user_group_id : $_REQUEST['user_group'];
|
|
|
|
$user_group_navi = '&user_group=' . $user_group_id;
|
|
|
|
$search_by_group = " AND user_group = '" . $user_group_id . "' ";
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!empty($_REQUEST['query']))
|
|
|
|
{
|
|
|
|
$q = urldecode($_REQUEST['query']);
|
|
|
|
$search_by_id_or_name = "
|
|
|
|
AND (email LIKE '%" . $q . "%'
|
|
|
|
OR email = '" . $q . "'
|
|
|
|
OR Id = '" . $q . "'
|
|
|
|
OR firstname LIKE '" . $q . "%'
|
|
|
|
OR lastname LIKE '" . $q . "%')
|
|
|
|
";
|
|
|
|
$query_navi = '&query=' . urlencode($_REQUEST['query']);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (isset($_REQUEST['status']) && $_REQUEST['status'] != 'all')
|
|
|
|
{
|
|
|
|
$status_search = " AND status = '" . $_REQUEST['status'] . "' ";
|
|
|
|
$status_navi = '&status=' . $_REQUEST['status'];
|
|
|
|
}
|
|
|
|
|
|
|
|
$num = $AVE_DB->Query("
|
|
|
|
SELECT COUNT(*)
|
|
|
|
FROM " . PREFIX . "_users
|
|
|
|
WHERE 1"
|
|
|
|
. $search_by_group
|
|
|
|
. $search_by_id_or_name
|
|
|
|
. $status_search
|
|
|
|
)->GetCell();
|
|
|
|
|
|
|
|
$sql = $AVE_DB->Query("
|
|
|
|
SELECT *
|
|
|
|
FROM " . PREFIX . "_users
|
|
|
|
WHERE 1"
|
|
|
|
. $search_by_group
|
|
|
|
. $search_by_id_or_name
|
|
|
|
. $status_search
|
|
|
|
. " LIMIT " . (get_current_page()*$this->_limit-$this->_limit) . "," . $this->_limit
|
|
|
|
);
|
|
|
|
|
|
|
|
$isShop = $AVE_DB->Query("SHOW TABLES LIKE '" . PREFIX . "_modul_shop_bestellungen'")->GetCell();
|
|
|
|
$users = array();
|
|
|
|
|
|
|
|
while ($row = $sql->FetchRow())
|
|
|
|
{
|
|
|
|
// для комментариев
|
|
|
|
//$sqla = $AVE_DB->Query("SELECT * FROM " . PREFIX . "_modul_comment_info WHERE comment_author_id = '".(int)$row->Id."'");
|
|
|
|
//$row->comments = $sqla->numrows();
|
|
|
|
$row->avatar=getAvatar($row->Id,40);
|
|
|
|
array_push($users, $row);
|
|
|
|
}
|
|
|
|
|
|
|
|
if ($num > $this->_limit)
|
|
|
|
{
|
|
|
|
$page_nav = '<li><a href="index.php?do=user' . $status_navi . '&page={s}&cp=' . SESSION . $user_group_navi . $query_navi . '">{t}</a></li>';
|
|
|
|
$page_nav = get_pagination(ceil($num/$this->_limit), 'page', $page_nav);
|
|
|
|
$AVE_Template->assign('page_nav', $page_nav);
|
|
|
|
}
|
|
|
|
|
|
|
|
$AVE_Template->assign('ugroups', $this->userGroupListGet(2));
|
|
|
|
$AVE_Template->assign('users', $users);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Создание новой учетной записи
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
function userNew()
|
|
|
|
{
|
|
|
|
global $AVE_DB, $AVE_Template;
|
|
|
|
|
|
|
|
switch($_REQUEST['sub'])
|
|
|
|
{
|
|
|
|
case '':
|
|
|
|
$AVE_Template->assign('available_countries', get_country_list(1));
|
|
|
|
$AVE_Template->assign('ugroups', $this->userGroupListGet(2));
|
|
|
|
$AVE_Template->assign('formaction', 'index.php?do=user&action=new&sub=save&cp=' . SESSION);
|
|
|
|
$AVE_Template->assign('content', $AVE_Template->fetch('user/form.tpl'));
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 'save':
|
|
|
|
$errors = $this->_userFieldValidate(1);
|
|
|
|
if (!empty($errors))
|
|
|
|
{
|
|
|
|
$AVE_Template->assign('errors', $errors);
|
|
|
|
$AVE_Template->assign('available_countries', get_country_list(1));
|
|
|
|
$AVE_Template->assign('ugroups', $this->userGroupListGet(2));
|
|
|
|
$AVE_Template->assign('formaction', 'index.php?do=user&action=new&sub=save&cp=' . SESSION);
|
|
|
|
$AVE_Template->assign('content', $AVE_Template->fetch('user/form.tpl'));
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
$salt = make_random_string();
|
|
|
|
$password = md5(md5(trim($_POST['password']) . $salt));
|
|
|
|
$AVE_DB->Query("
|
|
|
|
INSERT INTO " . PREFIX . "_users
|
|
|
|
SET
|
|
|
|
Id = '',
|
|
|
|
password = '" . $password . "',
|
|
|
|
salt = '" . $salt . "',
|
|
|
|
email = '" . $_POST['email'] . "',
|
|
|
|
street = '" . $_POST['street'] . "',
|
|
|
|
street_nr = '" . $_POST['street_nr'] . "',
|
|
|
|
zipcode = '" . $_POST['zipcode'] . "',
|
|
|
|
city = '" . $_POST['city'] . "',
|
|
|
|
phone = '" . $_POST['phone'] . "',
|
|
|
|
telefax = '" . $_POST['telefax'] . "',
|
|
|
|
description = '" . $_POST['description'] . "',
|
|
|
|
firstname = '" . $_POST['firstname'] . "',
|
|
|
|
lastname = '" . $_POST['lastname'] . "',
|
|
|
|
user_name = '" . $_POST['user_name'] . "',
|
|
|
|
user_group = '" . $_POST['user_group'] . "',
|
|
|
|
reg_time = '" . time() . "',
|
|
|
|
status = '" . $_POST['status'] . "',
|
|
|
|
last_visit = '" . time() . "',
|
|
|
|
country = '" . $_POST['country'] . "',
|
|
|
|
birthday = '" . $_POST['birthday'] . "',
|
|
|
|
company = '" . $_POST['company'] . "',
|
|
|
|
taxpay = '" . $_POST['taxpay'] . "',
|
|
|
|
user_group_extra = '" . @implode(';', $_POST['user_group_extra']) . "'
|
|
|
|
");
|
|
|
|
$user_id=$AVE_DB->InsertId();
|
|
|
|
if(is_uploaded_file($_FILES["avatar"]["tmp_name"]))
|
|
|
|
{
|
|
|
|
// Если файл загружен успешно, перемещаем его
|
|
|
|
// из временной директории в конечную
|
|
|
|
$newf_n= BASE_DIR.'/'. UPLOAD_DIR.'/avatars/new/'.$_FILES["avatar"]["name"];
|
|
|
|
move_uploaded_file($_FILES["avatar"]["tmp_name"],$newf_n);
|
|
|
|
SetAvatar($user_id,$newf_n);
|
|
|
|
}
|
|
|
|
|
|
|
|
$message = get_settings('mail_new_user');
|
|
|
|
$message = str_replace('%NAME%', $_POST['user_name'], $message);
|
|
|
|
$message = str_replace('%HOST%', HOST . ABS_PATH, $message);
|
|
|
|
$message = str_replace('%PASSWORD%', $_POST['password'], $message);
|
|
|
|
$message = str_replace('%EMAIL%', $_POST['email'], $message);
|
|
|
|
$message = str_replace('%EMAILSIGNATURE%', get_settings('mail_signature'), $message);
|
|
|
|
/*
|
|
|
|
send_mail(
|
|
|
|
$_POST['email'],
|
|
|
|
$message,
|
|
|
|
$AVE_Template->get_config_vars('USER_MAIL_SUBJECT')
|
|
|
|
);
|
|
|
|
*/
|
|
|
|
reportLog($AVE_Template->get_config_vars('USER_REPORT_ADD') . ' - (' . stripslashes($_POST['user_name']) . ')');
|
|
|
|
|
|
|
|
header('Location:index.php?do=user&cp=' . SESSION);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Редактирование учетной записи пользователя
|
|
|
|
*
|
|
|
|
* @param int $user_id идентификатор учетной записи пользователя
|
|
|
|
*/
|
|
|
|
function userEdit($user_id)
|
|
|
|
{
|
|
|
|
global $AVE_DB, $AVE_Template;
|
|
|
|
|
|
|
|
$user_id = (int)$user_id;
|
|
|
|
|
|
|
|
switch($_REQUEST['sub'])
|
|
|
|
{
|
|
|
|
case '':
|
|
|
|
$row = $AVE_DB->Query("
|
|
|
|
SELECT *
|
|
|
|
FROM " . PREFIX . "_users
|
|
|
|
WHERE Id = '" . $user_id . "'
|
|
|
|
")->FetchRow();
|
|
|
|
|
|
|
|
if (!$row)
|
|
|
|
{
|
|
|
|
header('Location:index.php?do=user&cp=' . SESSION);
|
|
|
|
exit;
|
|
|
|
}
|
|
|
|
/*
|
|
|
|
if ($AVE_DB->Query("SHOW TABLES LIKE '" . PREFIX . "_modul_shop'")->GetCell())
|
|
|
|
{
|
|
|
|
$AVE_Template->assign('is_shop', 1);
|
|
|
|
}
|
|
|
|
|
|
|
|
if ($AVE_DB->Query("SHOW TABLES LIKE '" . PREFIX . "_modul_forum_userprofile'")->GetCell())
|
|
|
|
{
|
|
|
|
$row = $AVE_DB->Query("
|
|
|
|
SELECT *
|
|
|
|
FROM " . PREFIX . "_modul_forum_userprofile
|
|
|
|
WHERE BenutzerId = '" . $user_id . "'
|
|
|
|
")->FetchRow();
|
|
|
|
|
|
|
|
if (is_object($row))
|
|
|
|
{
|
|
|
|
$AVE_Template->assign('row_fp', $row);
|
|
|
|
$AVE_Template->assign('is_forum', 1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*/
|
|
|
|
if (($_SESSION['user_group'] != 1)){
|
|
|
|
|
|
|
|
if (($_SESSION['user_group'] == $row->user_group) && ($_SESSION['user_id'] != $row->Id)){
|
|
|
|
$AVE_Template->assign('no_edit', true);
|
|
|
|
}
|
|
|
|
|
|
|
|
if ($row->user_group == 1 && $row->Id == 1) {
|
|
|
|
$AVE_Template->assign('no_edit', true);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
$row->avatar = getAvatar($user_id, 70);
|
|
|
|
|
|
|
|
$AVE_Template->assign('row', $row);
|
|
|
|
|
|
|
|
$AVE_Template->assign('user_group_extra', explode(';', $row->user_group_extra));
|
|
|
|
$AVE_Template->assign('available_countries', get_country_list(1));
|
|
|
|
$AVE_Template->assign('ugroups', $this->userGroupListGet(2));
|
|
|
|
$AVE_Template->assign('us_groups', explode(';', $row->user_group_extra));
|
|
|
|
$AVE_Template->assign('formaction', 'index.php?do=user&action=edit&Id='. $user_id .'&sub=save&cp=' . SESSION);
|
|
|
|
$AVE_Template->assign('content', $AVE_Template->fetch('user/form.tpl'));
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 'save':
|
|
|
|
$errors = $this->_userFieldValidate();
|
|
|
|
if (!empty($errors))
|
|
|
|
{
|
|
|
|
|
|
|
|
$row = $AVE_DB->Query("
|
|
|
|
SELECT *
|
|
|
|
FROM " . PREFIX . "_users
|
|
|
|
WHERE Id = '" . $user_id . "'
|
|
|
|
")->FetchRow();
|
|
|
|
|
|
|
|
if (!$row)
|
|
|
|
{
|
|
|
|
header('Location:index.php?do=user&cp=' . SESSION);
|
|
|
|
exit;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (($_SESSION['user_group'] != 1)){
|
|
|
|
|
|
|
|
if (($_SESSION['user_group'] == $row->user_group) && ($_SESSION['user_id'] != $row->Id)){
|
|
|
|
$AVE_Template->assign('no_edit', true);
|
|
|
|
}
|
|
|
|
|
|
|
|
if ($row->user_group == 1 && $row->Id == 1) {
|
|
|
|
$AVE_Template->assign('no_edit', true);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
$row->avatar = getAvatar($user_id, 70);
|
|
|
|
|
|
|
|
$AVE_Template->assign('row', $row);
|
|
|
|
$AVE_Template->assign('errors', $errors);
|
|
|
|
$AVE_Template->assign('user_group_extra', explode(';', $row->user_group_extra));
|
|
|
|
$AVE_Template->assign('available_countries', get_country_list(1));
|
|
|
|
$AVE_Template->assign('ugroups', $this->userGroupListGet(2));
|
|
|
|
$AVE_Template->assign('us_groups', explode(';', $row->user_group_extra));
|
|
|
|
$AVE_Template->assign('formaction', 'index.php?do=user&action=edit&Id='. $user_id .'&sub=save&cp=' . SESSION);
|
|
|
|
$AVE_Template->assign('content', $AVE_Template->fetch('user/form.tpl'));
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if (!empty($_REQUEST['password']))
|
|
|
|
{
|
|
|
|
$salt = make_random_string();
|
|
|
|
$password = md5(md5(trim($_POST['password']) . $salt));
|
|
|
|
$password_set = "password = '" . $password . "', salt = '" . $salt . "',";
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
$password_set = '';
|
|
|
|
}
|
|
|
|
|
|
|
|
$user_group_set = ($_SESSION['user_id'] != $user_id) ? "user_group = '" . $_REQUEST['user_group'] . "'," : '';
|
|
|
|
|
|
|
|
$times = ($_REQUEST['deleted'] == "1") ? time() : '';
|
|
|
|
|
|
|
|
if(is_uploaded_file($_FILES["avatar"]["tmp_name"]))
|
|
|
|
{
|
|
|
|
// Если файл загружен успешно, перемещаем его
|
|
|
|
// из временной директории в конечную
|
|
|
|
$newf_n = BASE_DIR.'/'. UPLOAD_DIR.'/avatars/new/'.$_FILES["avatar"]["name"];
|
|
|
|
move_uploaded_file($_FILES["avatar"]["tmp_name"],$newf_n);
|
|
|
|
SetAvatar($user_id,$newf_n);
|
|
|
|
}
|
|
|
|
|
|
|
|
$AVE_DB->Query("
|
|
|
|
UPDATE " . PREFIX . "_users
|
|
|
|
SET
|
|
|
|
" . $password_set . "
|
|
|
|
" . $user_group_set . "
|
|
|
|
email = '" . $_REQUEST['email'] . "',
|
|
|
|
street = '" . $_REQUEST['street'] . "',
|
|
|
|
street_nr = '" . $_REQUEST['street_nr'] . "',
|
|
|
|
zipcode = '" . $_REQUEST['zipcode'] . "',
|
|
|
|
city = '" . $_REQUEST['city'] . "',
|
|
|
|
phone = '" . $_REQUEST['phone'] . "',
|
|
|
|
telefax = '" . $_REQUEST['telefax'] . "',
|
|
|
|
description = '" . $_REQUEST['description'] . "',
|
|
|
|
firstname = '" . $_REQUEST['firstname'] . "',
|
|
|
|
lastname = '" . $_REQUEST['lastname'] . "',
|
|
|
|
user_name = '" . $_REQUEST['user_name'] . "',
|
|
|
|
status = '" . $_REQUEST['status'] . "',
|
|
|
|
country = '" . $_REQUEST['country'] . "',
|
|
|
|
birthday = '" . $_REQUEST['birthday'] . "',
|
|
|
|
deleted = '" . $_REQUEST['deleted'] . "',
|
|
|
|
del_time = '" . $times . "',
|
|
|
|
taxpay = '" . $_REQUEST['taxpay'] . "',
|
|
|
|
company = '" . $_REQUEST['company'] . "',
|
|
|
|
user_group_extra = '" . @implode(';', $_REQUEST['user_group_extra']) . "'
|
|
|
|
WHERE
|
|
|
|
Id = '" . $user_id . "'
|
|
|
|
");
|
|
|
|
|
|
|
|
/*
|
|
|
|
if ($AVE_DB->Query("SHOW TABLES LIKE '" . PREFIX . "_module_forum_userprofile'")->GetCell())
|
|
|
|
{
|
|
|
|
$AVE_DB->Query("
|
|
|
|
UPDATE " . PREFIX . "_modul_forum_userprofile
|
|
|
|
SET
|
|
|
|
GroupIdMisc = '" . @implode(';', $_REQUEST['user_group_extra']) . "',
|
|
|
|
BenutzerName = '" . @$_REQUEST['BenutzerName_fp']. "',
|
|
|
|
Signatur = '" . @$_REQUEST['Signatur_fp'] . "' ,
|
|
|
|
Avatar = '" . @$_REQUEST['Avatar_fp'] . "'
|
|
|
|
WHERE
|
|
|
|
BenutzerId = '" . $user_id . "'
|
|
|
|
");
|
|
|
|
}
|
|
|
|
*/
|
|
|
|
|
|
|
|
if ($_REQUEST['status'] == 1 && @$_REQUEST['SendFreeMail'] == 1)
|
|
|
|
{
|
|
|
|
$host = HOST . ABS_PATH;
|
|
|
|
$body_start = $AVE_Template->get_config_vars('USER_MAIL_BODY1');
|
|
|
|
$body_start = str_replace('%USER%', $_REQUEST['user_name'], $body_start);
|
|
|
|
$body_start .= str_replace('%HOST%', $host, $AVE_Template->get_config_vars('USER_MAIL_BODY2'));
|
|
|
|
$body_start .= str_replace('%HOMEPAGENAME%', get_settings('site_name'), $AVE_Template->get_config_vars('USER_MAIL_FOOTER'));
|
|
|
|
$body_start = str_replace('%N%', "\n", $body_start);
|
|
|
|
$body_start = str_replace('%HOST%', $host, $body_start);
|
|
|
|
|
|
|
|
send_mail(
|
|
|
|
$_POST['email'],
|
|
|
|
$body_start,
|
|
|
|
$AVE_Template->get_config_vars('USER_MAIL_SUBJECT'),
|
|
|
|
get_settings('mail_from'),
|
|
|
|
get_settings('mail_from_name') . ' (' . get_settings('site_name') . ')',
|
|
|
|
'text'
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!empty($_REQUEST['password']) && $_REQUEST['PassChange'] == 1)
|
|
|
|
{
|
|
|
|
$host = HOST . ABS_PATH;
|
|
|
|
$body_start = $AVE_Template->get_config_vars('USER_MAIL_BODY1');
|
|
|
|
$body_start = str_replace('%USER%', $_REQUEST['user_name'], $body_start);
|
|
|
|
$body_start .= str_replace('%HOST%', $host, $AVE_Template->get_config_vars('USER_MAIL_PASSWORD2'));
|
|
|
|
$body_start = str_replace('%NEWPASS%', $_REQUEST['password'], $body_start);
|
|
|
|
$body_start .= str_replace('%HOMEPAGENAME%', get_settings('site_name'), $AVE_Template->get_config_vars('USER_MAIL_FOOTER'));
|
|
|
|
$body_start = str_replace('%N%', "\n", $body_start);
|
|
|
|
$body_start = str_replace('%HOST%', $host, $body_start);
|
|
|
|
|
|
|
|
send_mail(
|
|
|
|
$_POST['email'],
|
|
|
|
$body_start,
|
|
|
|
$AVE_Template->get_config_vars('USER_MAIL_PASSWORD'),
|
|
|
|
get_settings('mail_from'),
|
|
|
|
get_settings('mail_from_name') . ' (' . get_settings('site_name') . ')',
|
|
|
|
'text'
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
if ($_REQUEST['SimpleMessage'] != '')
|
|
|
|
{
|
|
|
|
send_mail(
|
|
|
|
$_POST['email'],
|
|
|
|
stripslashes($_POST['SimpleMessage']),
|
|
|
|
stripslashes($_POST['SubjectMessage']),
|
|
|
|
$_SESSION['user_email'],
|
|
|
|
$_SESSION['user_name'],
|
|
|
|
'text'
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!empty($_REQUEST['password']) && $_SESSION['user_id'] == $user_id)
|
|
|
|
{
|
|
|
|
$_SESSION['user_pass'] = $password;
|
|
|
|
$_SESSION['user_email'] = $_POST['email'];
|
|
|
|
}
|
|
|
|
|
|
|
|
reportLog($AVE_Template->get_config_vars('USER_REPORT_EDIT') . ' - (' . stripslashes($_POST['user_name']) . ')');
|
|
|
|
|
|
|
|
header('Location:index.php?do=user&cp=' . SESSION);
|
|
|
|
exit;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Удаление учетной записи пользователя
|
|
|
|
*
|
|
|
|
* @param int $user_id идентификатор учетной записи пользователя
|
|
|
|
*/
|
|
|
|
function userDelete($user_id)
|
|
|
|
{
|
|
|
|
global $AVE_DB, $AVE_Template;
|
|
|
|
|
|
|
|
if (is_numeric($user_id) && $user_id != 1)
|
|
|
|
{
|
|
|
|
$AVE_DB->Query("
|
|
|
|
DELETE
|
|
|
|
FROM " . PREFIX . "_users
|
|
|
|
WHERE Id = '" . $user_id . "'
|
|
|
|
");
|
|
|
|
|
|
|
|
if ($AVE_DB->Query("SHOW TABLES LIKE '" . PREFIX . "_modul_forum_userprofile'")->GetCell())
|
|
|
|
{
|
|
|
|
$AVE_DB->Query("
|
|
|
|
DELETE
|
|
|
|
FROM " . PREFIX . "_modul_forum_userprofile
|
|
|
|
WHERE BenutzerId = '" . $user_id . "'
|
|
|
|
");
|
|
|
|
}
|
|
|
|
|
|
|
|
reportLog($AVE_Template->get_config_vars('USER_REPORT_DEL') . ' - (' . get_username_by_id($user_id) . ')');
|
|
|
|
}
|
|
|
|
|
|
|
|
header('Location:index.php?do=user&cp=' . SESSION);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Запись изменений учетных записей пользователей в списке
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
function userListEdit()
|
|
|
|
{
|
|
|
|
global $AVE_DB, $AVE_Template;
|
|
|
|
|
|
|
|
foreach ($_POST['del'] as $user_id => $del)
|
|
|
|
{
|
|
|
|
if (is_numeric($user_id) && $user_id > 1)
|
|
|
|
{
|
|
|
|
$AVE_DB->Query("
|
|
|
|
DELETE
|
|
|
|
FROM " . PREFIX . "_users
|
|
|
|
WHERE Id = '" . $user_id . "'
|
|
|
|
");
|
|
|
|
|
|
|
|
reportLog($AVE_Template->get_config_vars('USER_REPORT_DEL') . ' - (' . get_username_by_id($user_id) . ')');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
foreach ($_POST['user_group'] as $user_id => $user_group_id)
|
|
|
|
{
|
|
|
|
if (is_numeric($user_id) && $user_id > 0 &&
|
|
|
|
is_numeric($user_group_id) && $user_group_id > 0)
|
|
|
|
{
|
|
|
|
$AVE_DB->Query("
|
|
|
|
UPDATE " . PREFIX . "_users
|
|
|
|
SET user_group = '" . $user_group_id . "'
|
|
|
|
WHERE Id = '" . $user_id . "'
|
|
|
|
");
|
|
|
|
reportLog($AVE_Template->get_config_vars('USER_REPORT_GROUP') . ' - (' . get_username_by_id($user_id) . ')');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
header('Location:index.php?do=user&cp=' . SESSION);
|
|
|
|
exit;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
?>
|