2017-06-24 00:58:56 +03:00
< ? php
2018-09-20 11:04:28 +03:00
/**
* 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 = array ();
if ( $id === null )
$id = $_SESSION [ 'user_id' ];
if ( ! isset ( $result [ $id ]))
{
$user = get_user_rec_by_id ( $id );
2019-09-09 08:21:23 +03:00
$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' )
? $ava . '.gif'
: '' )));
$result [ $id ] = $avatar ;
2018-09-20 11:04:28 +03:00
}
2019-09-09 08:21:23 +03:00
$avatar = $result [ $id ];
2018-09-20 11:04:28 +03:00
2019-09-09 08:21:23 +03:00
$src = ( file_exists ( BASE_DIR . $avatar )
2018-09-20 11:04:28 +03:00
? make_thumbnail ( array ( 'link' => $ava , '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 ;
2017-06-24 00:58:56 +03:00
}
2018-09-20 11:04:28 +03:00
/**
* Устанавливаем аватар пользователю
*
* @ param int $id Ид пользователя
* @ param string $avatar путь до картинки которая будет аватаром
* @ return bool установился аватар или нет
*/
function SetAvatar ( $id , $avatar )
{
2019-09-09 08:21:23 +03:00
if ( ! $avatar )
return false ;
if ( $id === null )
$id = $_SESSION [ 'user_id' ];
2017-06-24 00:58:56 +03:00
2018-09-20 11:04:28 +03:00
$user = get_user_rec_by_id ( $id );
2017-06-24 00:58:56 +03:00
2018-09-20 11:04:28 +03:00
$file_ext = pathinfo ( $avatar , PATHINFO_EXTENSION );
2017-06-24 00:58:56 +03:00
2019-09-09 08:21:23 +03:00
if ( ! $file_ext )
$file_ext = 'jpg' ;
2018-09-20 11:04:28 +03:00
if ( ! file_exists ( $avatar ))
return false ;
2017-06-24 00:58:56 +03:00
2019-09-09 08:21:23 +03:00
$new_avatar = BASE_DIR . '/' . UPLOAD_DIR . '/avatars/' . md5 ( $user -> user_name ) . '.' . strtolower ( $file_ext );
2017-06-24 00:58:56 +03:00
2018-09-20 11:04:28 +03:00
foreach ( glob ( BASE_DIR . '/' . UPLOAD_DIR . '/avatars/' . md5 ( $user -> user_name ) . '.*' ) AS $filename )
@ unlink ( $filename );
2017-06-24 00:58:56 +03:00
2018-09-20 11:04:28 +03:00
//Чистим превьюшки
foreach ( glob ( BASE_DIR . '/' . UPLOAD_DIR . '/avatars/' . THUMBNAIL_DIR . '/' . md5 ( $user -> user_name ) . '*.*' ) AS $filename )
@ unlink ( $filename );
2017-06-24 00:58:56 +03:00
2019-09-09 08:21:23 +03:00
@ file_put_contents ( $new_avatar , file_get_contents ( $avatar ));
2018-09-20 11:04:28 +03:00
@ unlink ( $avatar );
2017-06-24 00:58:56 +03:00
2018-09-20 11:04:28 +03:00
return true ;
2017-06-24 00:58:56 +03:00
}
2018-09-20 11:04:28 +03:00
/**
* Формирование строки имени пользователя
* При наличии всех параметров пытается сформировать строку < 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
*/
2019-09-09 08:21:23 +03:00
function get_username ( $login = '' , $first_name = '' , $last_name = '' , $short = 1 )
2017-06-24 00:58:56 +03:00
{
2018-09-20 11:04:28 +03:00
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 != '' )
{
2019-09-09 08:21:23 +03:00
return $login ;
2018-09-20 11:04:28 +03:00
}
return 'Anonymous' ;
2017-06-24 00:58:56 +03:00
}
2018-09-20 11:04:28 +03:00
/**
* Возвращает запись для пользователя по идентификатору
* не делает лишних запросов
*
* @ param int $id - идентификатор пользователя
* @ return object
*/
function get_user_rec_by_id ( $id )
2017-06-24 00:58:56 +03:00
{
2018-09-20 11:04:28 +03:00
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 ];
2017-06-24 00:58:56 +03:00
}
2018-09-20 11:04:28 +03:00
/**
* Возвращает параметры группы пользователей по идентификатору
* не делает лишних запросов
*
* @ param int $id - идентификатор группы
* @ return object
*/
function get_usergroup_rec_by_id ( $id )
2017-06-24 00:58:56 +03:00
{
2018-09-20 11:04:28 +03:00
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 ];
2017-06-24 00:58:56 +03:00
}
2018-09-20 11:04:28 +03:00
/**
* Возвращает login пользователя по е г о идентификатору
*
* @ param int $id - идентификатор пользователя
* @ return string
*/
function get_userlogin_by_id ( $id )
{
$rec = get_user_rec_by_id ( $id );
2017-06-24 00:58:56 +03:00
2018-09-20 11:04:28 +03:00
return $rec -> user_name ;
}
2017-06-24 00:58:56 +03:00
2018-09-20 11:04:28 +03:00
/**
* Возвращает имя группы пользователя по е г о идентификатору
*
* @ param int $id - идентификатор группы пользователя
* @ return string
*/
function get_usergroup_by_id ( $id )
2017-06-24 00:58:56 +03:00
{
2018-09-20 11:04:28 +03:00
$rec = get_usergroup_rec_by_id ( $id );
return $rec -> user_group_name ;
2017-06-24 00:58:56 +03:00
}
2018-09-20 11:04:28 +03:00
/**
* Возвращает email пользователя по е г о идентификатору
*
* @ param int $id - идентификатор пользователя
* @ return string
*/
function get_useremail_by_id ( $id )
{
$rec = get_user_rec_by_id ( $id );
2017-06-24 00:58:56 +03:00
2018-09-20 11:04:28 +03:00
return $rec -> email ;
}
2017-06-24 00:58:56 +03:00
2018-09-20 11:04:28 +03:00
/**
* Возвращает имя пользователя по е г о идентификатору
*
* @ param int $id - идентификатор пользователя
* @ param int $param - Сокрашать имя ( 1 - да , 0 - нет )
*
* @ return string
*/
function get_username_by_id ( $id , $param = 1 )
2017-06-24 00:58:56 +03:00
{
2018-09-20 11:04:28 +03:00
$row = get_user_rec_by_id ( $id );
$row = ( ! empty ( $row ))
? get_username ( $row -> user_name , $row -> firstname , $row -> lastname , $param )
: get_username ();
return $row ;
2017-06-24 00:58:56 +03:00
}
?>