mirror of https://github.com/avecms/AVE.cms.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
262 lines
6.9 KiB
262 lines
6.9 KiB
<?php |
|
|
|
/** |
|
* AVE.cms |
|
* |
|
* @package AVE.cms |
|
* @version 3.x |
|
* @filesource |
|
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru |
|
* |
|
* @license GPL v.2 |
|
*/ |
|
|
|
|
|
/** |
|
* Возвращаем аватар по пользователю |
|
* |
|
* @param int $id Ид пользователя- если не придет то текущий пользователь |
|
* @param int $size размер картинки по краю |
|
* @param string $prefix |
|
* @return string путь до файла с превью |
|
*/ |
|
function getAvatar($id = null, $size = 58, $prefix = '') |
|
{ |
|
global $AVE_DB; |
|
|
|
static $result = []; |
|
|
|
if ($id === null) |
|
$id = $_SESSION['user_id']; |
|
|
|
if (! isset($result[$id])) |
|
{ |
|
$user = get_user_rec_by_id($id); |
|
|
|
$avatar = ABS_PATH . UPLOAD_DIR . '/avatars/' . (($prefix === '') ? '' : $prefix) . md5($user->user_name); |
|
|
|
$avatar = (file_exists(BASE_DIR . $avatar . '.jpg') |
|
? $avatar . '.jpg' |
|
: (file_exists(BASE_DIR . $avatar . '.png') |
|
? $avatar . '.png' |
|
: (file_exists(BASE_DIR . $avatar .'.gif') |
|
? $avatar . '.gif' |
|
: ''))); |
|
|
|
$result[$id] = $avatar; |
|
} |
|
|
|
$avatar = $result[$id]; |
|
|
|
$src = (file_exists(BASE_DIR . $avatar) |
|
? make_thumbnail(array('link' => $avatar,'size' => 'c' . $size . 'x' . $size)) |
|
: make_thumbnail(array('link' => $AVE_DB->Query("SELECT default_avatar FROM " . PREFIX . "_user_groups WHERE user_group=" . (int)$user->user_group)->GetCell(), 'size' => 'c' . $size . 'x' . $size)) |
|
); |
|
|
|
return $src; |
|
} |
|
|
|
|
|
/** |
|
* Устанавливаем аватар пользователю |
|
* |
|
* @param int $id Ид пользователя |
|
* @param string $avatar путь до картинки которая будет аватаром |
|
* @return bool установился аватар или нет |
|
*/ |
|
function SetAvatar($id, $avatar) |
|
{ |
|
if (! $avatar) |
|
return false; |
|
|
|
if ($id === null) |
|
$id = $_SESSION['user_id']; |
|
|
|
$user = get_user_rec_by_id($id); |
|
|
|
$file_ext = pathinfo($avatar, PATHINFO_EXTENSION); |
|
|
|
if (! $file_ext) |
|
$file_ext = 'jpg'; |
|
|
|
if (! file_exists($avatar)) |
|
return false; |
|
|
|
$new_avatar = BASE_DIR . '/' . UPLOAD_DIR . '/avatars/' . md5($user->user_name) . '.' . strtolower($file_ext); |
|
|
|
foreach (glob(BASE_DIR . '/' . UPLOAD_DIR . '/avatars/' . md5($user->user_name) . '.*') AS $filename) |
|
@unlink($filename); |
|
|
|
//Чистим превьюшки |
|
foreach (glob(BASE_DIR . '/' . UPLOAD_DIR . '/avatars/' . THUMBNAIL_DIR . '/' . md5($user->user_name) . '*.*') AS $filename) |
|
@unlink($filename); |
|
|
|
@file_put_contents($new_avatar, file_get_contents($avatar)); |
|
@unlink($avatar); |
|
|
|
return true; |
|
} |
|
|
|
|
|
/** |
|
* Формирование строки имени пользователя |
|
* При наличии всех параметров пытается сформировать строку <b>Имя Фамилия</b> |
|
* Если задать $short=1 - формирует короткую форму <b>И. Фамилия</b> |
|
* Когда отсутствует информация о Имени или Фамилии пытается сформировать |
|
* строку на основе имеющихся данных, а если данных нет вообще - выводит |
|
* имя анонимного пользователя которое задается в основных настройках системы. |
|
* |
|
* @todo добавить параметр 'anonymous' в настройки |
|
* |
|
* @param string $login логин пользователя |
|
* @param string $first_name имя пользователя |
|
* @param string $last_name фамилия пользователя |
|
* @param int $short {0|1} признак формирования короткой формы |
|
* @return string |
|
*/ |
|
function get_username ($login = '', $first_name = '', $last_name = '', $short = 1) |
|
{ |
|
if ($first_name != '' && $last_name != '') |
|
{ |
|
if ($short == 1) |
|
$first_name = mb_substr($first_name, 0, 1, 'utf-8') . '.'; |
|
|
|
return ucfirst_utf8(mb_strtolower($first_name)) . ' ' . ucfirst_utf8(mb_strtolower($last_name)); |
|
} |
|
elseif ($first_name != '' && $last_name == '') |
|
{ |
|
return ucfirst_utf8(mb_strtolower($first_name)); |
|
} |
|
elseif ($first_name == '' && $last_name != '') |
|
{ |
|
return ucfirst_utf8(mb_strtolower($last_name)); |
|
} |
|
elseif ($login != '') |
|
{ |
|
return $login; |
|
} |
|
|
|
return 'Anonymous'; |
|
} |
|
|
|
|
|
/** |
|
* Возвращает запись для пользователя по идентификатору |
|
* не делает лишних запросов |
|
* |
|
* @param int $id - идентификатор пользователя |
|
* @return object |
|
*/ |
|
function get_user_rec_by_id($id) |
|
{ |
|
global $AVE_DB; |
|
|
|
static $users = array(); |
|
|
|
if (! isset($users[$id])) |
|
{ |
|
$row = $AVE_DB->Query(" |
|
SELECT |
|
* |
|
FROM " . PREFIX . "_users |
|
WHERE Id = '" . (int)$id . "' |
|
")->FetchRow(); |
|
|
|
$users[$id] = $row; |
|
} |
|
|
|
return $users[$id]; |
|
} |
|
|
|
|
|
/** |
|
* Возвращает параметры группы пользователей по идентификатору |
|
* не делает лишних запросов |
|
* |
|
* @param int $id - идентификатор группы |
|
* @return object |
|
*/ |
|
function get_usergroup_rec_by_id($id) |
|
{ |
|
global $AVE_DB; |
|
|
|
static $usergroups = array(); |
|
|
|
if (! isset($usergroups[$id])) |
|
{ |
|
$row = $AVE_DB->Query(" |
|
SELECT |
|
* |
|
FROM " . PREFIX . "_user_groups |
|
WHERE user_group = '" . (int)$id . "' |
|
")->FetchRow(); |
|
|
|
$usergroups[$id] = $row; |
|
} |
|
|
|
return $usergroups[$id]; |
|
|
|
} |
|
|
|
|
|
/** |
|
* Возвращает login пользователя по его идентификатору |
|
* |
|
* @param int $id - идентификатор пользователя |
|
* @return string |
|
*/ |
|
function get_userlogin_by_id($id) |
|
{ |
|
$rec = get_user_rec_by_id($id); |
|
|
|
return $rec->user_name; |
|
} |
|
|
|
|
|
/** |
|
* Возвращает имя группы пользователя по его идентификатору |
|
* |
|
* @param int $id - идентификатор группы пользователя |
|
* @return string |
|
*/ |
|
function get_usergroup_by_id($id) |
|
{ |
|
$rec = get_usergroup_rec_by_id($id); |
|
|
|
return $rec->user_group_name; |
|
} |
|
|
|
|
|
/** |
|
* Возвращает email пользователя по его идентификатору |
|
* |
|
* @param int $id - идентификатор пользователя |
|
* @return string |
|
*/ |
|
function get_useremail_by_id($id) |
|
{ |
|
$rec = get_user_rec_by_id($id); |
|
|
|
return $rec->email; |
|
} |
|
|
|
|
|
/** |
|
* Возвращает имя пользователя по его идентификатору |
|
* |
|
* @param int $id - идентификатор пользователя |
|
* @param int $param - Сокрашать имя (1 - да, 0 - нет) |
|
* |
|
* @return string |
|
*/ |
|
function get_username_by_id($id, $param = 1) |
|
{ |
|
$row = get_user_rec_by_id($id); |
|
$row = (! empty($row)) |
|
? get_username($row->user_name, $row->firstname, $row->lastname, $param) |
|
: get_username(); |
|
|
|
return $row; |
|
} |
|
|
|
?>
|