Вход Регистрация
Файл: incfiles/functions.php
Строк: 314
<?php
/****
* @package LiveCMS
* @link livecms.org
* @author MyZik
* @version See attached file VERSION.txt
* @license See attached file LICENSE.txt
* @copyright Copyright (C) LiveCMS Development Team
****/

/**********
Функция вывода успешной информации
**********/
    
function display_message($var '') {
      global 
$set_user;
      return 
'<div class="sohr"><img src="/design/themes/' $set_user['theme'] . '/images/ok.png" alt="OK!" />&nbsp;' $var '</div>';
        }

/**********
Функция постраничной навигации, изначально взятая с форума SMF, и доработанная авторами JohnCMS
**********/
function display_pagination($url$start$total$countMess)
    {
        global 
$countMess;
        
$neighbors 2;
        if (
$start >= $total)
            
$start max(0$total - (($total $countMess) == $countMess : ($total $countMess)));
        else
            
$start max(0, (int)$start - ((int)$start % (int)$countMess));
        
$base_link '<a class="pagenav" href="' strtr($url, array('%' => '%%')) . 'page=%d' '">%s</a>';
        
$out[] = $start == '' sprintf($base_link$start $countMess'&lt;&lt;');
        if (
$start $countMess $neighbors)
            
$out[] = sprintf($base_link1'1');
        if (
$start $countMess * ($neighbors 1))
            
$out[] = '<span style="font-weight: bold;">...</span>';
        for (
$nCont $neighbors$nCont >= 1$nCont--)
            if (
$start >= $countMess $nCont) {
                
$tmpStart $start $countMess $nCont;
                
$out[] = sprintf($base_link$tmpStart $countMess 1$tmpStart $countMess 1);
            }
        
$out[] = '<span class="currentpage"><b>' . ($start $countMess 1) . '</b></span>';
        
$tmpMaxPages = (int)(($total 1) / $countMess) * $countMess;
        for (
$nCont 1$nCont <= $neighbors$nCont++)
            if (
$start $countMess $nCont <= $tmpMaxPages) {
                
$tmpStart $start $countMess $nCont;
                
$out[] = sprintf($base_link$tmpStart $countMess 1$tmpStart $countMess 1);
            }
        if (
$start $countMess * ($neighbors 1) < $tmpMaxPages)
            
$out[] = '<span style="font-weight: bold;">...</span>';
        if (
$start $countMess $neighbors $tmpMaxPages)
            
$out[] = sprintf($base_link$tmpMaxPages $countMess 1$tmpMaxPages $countMess 1);
        if (
$start $countMess $total) {
            
$display_page = ($start $countMess) > $total $total : ($start $countMess 2);
            
$out[] = sprintf($base_link$display_page'&gt;&gt;');
        }

        return 
implode(' '$out);
    }


/**********
Фильтрация числовых данных перед записью в БД
**********/
  
function num($var) {
    return 
abs(intval($var));
     }

/**********
Безопасный вывод текстовой информации из БД. Т.е., защита от XSS
**********/
  
function txt($var)
{
    return 
htmlspecialchars(trim($var));
     }

/**********
Фильтрация текстовых данных перед записью в БД. Т.е., защита от SQL Injection
**********/
  
function input($var)
{
    return 
mysql_real_escape_string(trim($var));
     }

/**********
Данная функция используется для вывода текста с BB-тегами и смайликами.
**********/
  
function output($var) {
    return 
smileys(bb_codes(nl2br($var)));
     }

/**********
Функция смайликов
**********/
  
function smileys($text) {
    
$smileys_dir '/design/smileys/'// папка со смайликами
      
$smileys_array = array(
                       
':-)' => '<img src="' $smileys_dir 'smile.png" alt="Smile" />',
                       
':)' => '<img src="' $smileys_dir 'smile.png" alt="Smile" />',
                       
'=)' => '<img src="' $smileys_dir 'smile.png" alt="Smile" />',
                       
':-(' => '<img src="' $smileys_dir 'sad.png" alt="Smile" />',
                       
':(' => '<img src="' $smileys_dir 'sad.png" alt="Smile" />',
                       
'=(' => '<img src="' $smileys_dir 'sad.png" alt="Smile" />',
                       
':-D' => '<img src="' $smileys_dir 'biggrin.png" alt="Smile" />',
                       
':D' => '<img src="' $smileys_dir 'biggrin.png" alt="Smile" />',
                       
'=D' => '<img src="' $smileys_dir 'biggrin.png" alt="Smile" />',
                       
':-P' => '<img src="' $smileys_dir 'togue.png" alt="Smile" />',
                       
':P' => '<img src="' $smileys_dir 'togue.png" alt="Smile" />',
                       
'=P' => '<img src="' $smileys_dir 'togue.png" alt="Smile" />',
                       
':-O' => '<img src="' $smileys_dir 'shock.png" alt="Smile" />',
                       
'=O' => '<img src="' $smileys_dir 'shock.png" alt="Smile" />',
                       
'o_O' => '<img src="' $smileys_dir 'shock.png" alt="Smile" />',
                       
';-(' => '<img src="' $smileys_dir 'cry.png" alt="Smile" />',
                       
';(' => '<img src="' $smileys_dir 'cry.png" alt="Smile" />',
                       
';-)' => '<img src="' $smileys_dir 'wink.png" alt="Smile" />',
                       
';)' => '<img src="' $smileys_dir 'wink.png" alt="Smile" />',
                       
':-[' => '<img src="' $smileys_dir 'hesitate.png" alt="Smile" />',
                       
':[' => '<img src="' $smileys_dir 'hesitate.png" alt="Smile" />',
                       
'=[' => '<img src="' $smileys_dir 'hesitate.png" alt="Smile" />',
                       
':-*' => '<img src="' $smileys_dir 'kiss.png" alt="Smile" />',
                       
'=*' => '<img src="' $smileys_dir 'kiss.png" alt="Smile" />',
                       
':kiss:' => '<img src="' $smileys_dir 'kiss.png" alt="Smile" />',
                       
'B-)' => '<img src="' $smileys_dir 'cool.png" alt="Smile" />',
                       
'B)' => '<img src="' $smileys_dir 'cool.png" alt="Smile" />',
                       
':cool:' => '<img src="' $smileys_dir 'cool.png" alt="Smile" />',
                       
':@' => '<img src="' $smileys_dir 'fu.png" alt="Smile" />',
                       
':fu:' => '<img src="' $smileys_dir 'fu.png" alt="Smile" />',
                       
'|:>' => '<img src="' $smileys_dir 'angry.png" alt="Smile" />',
                       
':angry:' => '<img src="' $smileys_dir 'angry.png" alt="Smile" />',
                       
':-Z' => '<img src="' $smileys_dir 'sleep.png" alt="Smile" />',
                       
':sleep:' => '<img src="' $smileys_dir 'sleep.png" alt="Smile" />',
                       
':bravo:' => '<img src="' $smileys_dir 'bravo.png" alt="Smile" />',
                       
':angel:' => '<img src="' $smileys_dir 'angel.png" alt="Smile" />',
                       
':crazy:' => '<img src="' $smileys_dir 'crazy.png" alt="Smile" />',
                       
':lol:' => '<img src="' $smileys_dir 'lol.png" alt="Smile" />');
          return 
strtr($text$smileys_array);
     }

/**********
Функция обработки BB-тегов
**********/
  
function bb_codes($text) {
    
$text preg_replace('#[b](.*?)[/b]#si''<span style="font-weight: bold;">1</span>'$text);
// жирный текст
    
$text preg_replace('#[u](.*?)[/u]#si''<span style="text-decoration: underline;">1</span>'$text); // подчеркивание
    
$text preg_replace('#[i](.*?)[/i]#si''<span style="font-style: italic;">1</span>'$text); // курсив
   
$text preg_replace('#[s](.*?)[/s]#si''<strike>1</strike>'$text); // перечеркивание
    
$text preg_replace('#[q](.*?)[/q]#si''<div class="cit">1</div>'$text); // цитата
    
$text preg_replace('#[red](.*?)[/red]#si''<span style="color:red">1</span>'$text);
    
$text preg_replace('#[green](.*?)[/green]#si''<span style="color: green">1</span>'$text);
    
$text preg_replace('#[blue](.*?)[/blue]#si''<span style="color:blue">1</span>'$text);
    
$text preg_replace('![color=(#[0-9a-f]{3}|#[0-9a-f]{6}|[a-z-]+)](.+?)[/color]!is''<span style="color:1">2</span>'$text); // Цвет шрифта
    
$text preg_replace('![bg=(#[0-9a-f]{3}|#[0-9a-f]{6}|[a-z-]+)](.+?)[/bg]!is''<span style="background-color:1">2</span>'$text); // Цвет фона
    
$text preg_replace("/(https?|ftps?)://([a-z0-9./-?_=&;]*)b/i""<a href="$1://$2" target="_blank">$1://$2</a>", $text);
    
$text preg_replace("/[url=(.+)](.+)[/url]/isU""<a href='$1'>$2</a>"$text);
    return 
$text;
      }

/**********
Функция шифрования пароля MD5 + BASE64
**********/
  
function encrypt($var)
{
    return 
md5(base64_encode($var) . '_LiveCMS');
     }

  
/**
    * Расширенный вывод данных пользователя
  **/
  
function display_user($user_id 0$info ''$body ''$end '') {
    global 
$set_user$lang$user;
    
$profile mysql_fetch_assoc(mysql_query("SELECT * FROM `users` WHERE `id` = '" $user_id "'"));
    
// Показываем аватары
    
if ($set_user['show_avatars'] == 'yes') {
      echo 
'<table cellpadding="0" cellspacing="0"><tr><td>';
      if (
file_exists(HOME '/files/avatar/' $profile['id'] . '.png'))
        echo 
'<img src="/files/avatar/' $profile['id'] . '.png" width="32" height="32" alt="' $profile['login'] . '" />&#160;';
      else
        echo 
'<img src="/design/avatar_default.png" width="32" height="32" alt="' $profile['login'] . '" />&#160;';
      echo 
'</td><td>';
    }
    
// В зависимости от настроек юзера показываем его пол иконкой / текстом
    
if ($set_user['sex_view'] == 'icons')
      
$sex_view '<img src="/design/themes/' $set_user['theme'] . '/images/user_' . ($profile['sex'] == 'm' 'm.png' 'w.png') . '" alt="" />';
    elseif (
$set_user['sex_view'] == 'text')
      
$sex_view = ($profile['sex'] == 'm' $lang['sex_m_text'] : $lang['sex_w_text']);
    else 
      
$sex_view '<img src="/design/themes/' $set_user['theme'] . '/images/delete_user.png" alt="" />';
      
$rights = array (
        
=> '',
        
=> '(CMod)',
        
=> '(FMod)',
        
=> '(Smd)',
        
=> '(Adm)',
      
10 => '(SV!)'
          
);
        
$uRights =  ' <span style="color:blue">' $rights[$profile['rights']] . '</span>';

      echo 
$sex_view '&nbsp;' . (isset($user) ? '<a href="/user/profile.php?id=' $profile['id'] . '"><b>' htmlspecialchars($profile['login']) . '</b></a>' '<b>' $profile['login'] . '</b>') . (time() > $profile['date_last_entry'] + 600 ' <span class="red">[Off]</span>' ' <span class="green">[On]</span>') . $uRights;

      if (
$info)
        echo 
$info;

      if (!empty(
$profile['status']))
        echo 
'<br /><span class="status"><img src="/design/themes/' $set_user['theme'] . '/images/status.png" alt="Status" align="middle" /> ' $profile['status'] . '</span>';

      if (
$set_user['show_avatars'] == 'yes')
        echo 
'</td></tr></table>';
      else
        echo 
'<br />';

      if (
$body)
        echo 
$body;
      if (
$end)
        echo 
$end;
     }

  
/**
    * Основной вывод данных пользователя
  **/
  
function _display_user($user_id 0$info '') {
    global 
$set_user$lang$user;
    
$profile mysql_fetch_assoc(mysql_query("SELECT * FROM `users` WHERE `id` = '" $user_id "'"));
    
// В зависимости от настроек юзера показываем его пол иконкой / текстом
    
if ($set_user['sex_view'] == 'icons')
      
$sex_view '<img src="/design/themes/' $set_user['theme'] . '/images/user_' . ($profile['sex'] == 'm' 'm.png' 'w.png') . '" alt="" />';
    elseif (
$set_user['sex_view'] == 'text')
      
$sex_view = ($profile['sex'] == 'm' $lang['sex_m_text'] : $lang['sex_w_text']);
    else 
      
$sex_view '<img src="/design/themes/' $set_user['theme'] . '/images/delete_user.png" alt="" />';
      
$rights = array (
        
=> '',
        
=> '(CMod)',
        
=> '(FMod)',
        
=> '(Smd)',
        
=> '(Adm)',
      
10 => '(SV!)'
          
);
        
$uRights =  ' <span style="color:blue">' $rights[$profile['rights']] . '</span>';

      echo 
$sex_view '&nbsp;' . (isset($user) ? '<a href="/user/profile.php?id=' $profile['id'] . '"><b>' htmlspecialchars($profile['login']) . '</b></a>' '<b>' $profile['login'] . '</b>') . (time() > $profile['date_last_entry'] + 600 ' <span class="red">[Off]</span>' ' <span class="green">[On]</span>') . $uRights;

      if (
$info)
        echo 
$info;
     }

/**********
Проверка длины символов. Включая русские
**********/
  
function strlen_rus($var)
{
    
$rus_symbols = array('а''б''в''г''д''е''ё''ж''з''и''й''к''л''м''н''о''п''р''с''т''у''ф''х''ц''ч''ш''щ''ъ''ы''ь''э''ю''я''А''Б''В''Г''Д''Е''Ё''Ж''З''И''Й''К''Л''М''Н''О''П''Р''С''Т''У''Ф''Х''Ц''Ч''Ш''Щ''Ъ''Ы''Ь''Э''Ю''Я');
    return 
strlen(str_replace($rus_symbols'0'$var));
     }

/**********
Функция обработки времени.
Если выбрано $type = 1, выведет "Сегодня в 10:25"
Если выбрано $type = 2, выведет "4 часа назад"
**********/
  
function display_time($var$type 1)
{
    global 
$lang;
    if (
$type 1) {
    
# Если время не задано берем текущее
    
if ($var == NULL$var time();

    
# Время + Дата
    
$full_time date('d.m.Y в H:i'$var);

    
# Дата
    
$date date('d.m.Y'$var);

    
# Время
    
$time date('H:i'$var);

    
# Если текущаяя дата совпадает с заданной
    
if ($date == date('d.m.Y')) $full_time $lang['today'] . ' ' date('H:i'$var);

    
# Вчерашняя дата
    
if ($date == date('d.m.Y'time()-60*60*24)) $full_time $lang['yesterday'] . ' ' date('H:i'$var);

    return 
$full_time;
     }
      }

/**********
Функция подключения языкового пакета
Аналогичная функция взята с CMS JohnCMS 4.x.x (http://johncms.com)
**********/
  
function load_lng($module '_core') {
    global 
$cms_set$set_user;
    if (!
is_dir(HOME '/incfiles/languages/' $lang_iso)) $lang_iso $cms_set['language'];
        
$lang_file HOME '/incfiles/languages/' $set_user['language'] . '/' $module '.lng';
        if (
file_exists($lang_file)) {
            
$out parse_ini_file($lang_file) or die('ОШИБКА! Файл языкового пакета не найден');
            return 
$out;
        }
        echo 
'<div class="error">Language file <b>' HOME $module '.lng</b> is missing</div>';
        return 
FALSE;
    }

/**********
Функция вывода ошибок
**********/
    
function error($var ''$link '')
    {
        global 
$lang;
        if (!empty(
$var)) {
            return 
'<div class="error"><b>' $lang['error'] . '!</b><br /> ' .
                (
is_array($var) ? implode('<br />'$var) : $var) . '' .
                (!empty(
$link) ? '<p>' $link '</p>' '') . '</div>';
        } else {
            return 
FALSE;
        }
    }

?>
Онлайн: 0
Реклама