форум vBSupport.ru > vBulletin > Вопрос — Ответ
Register Меню vBsupport Изображения Files Manager О рекламе Today's Posts Search
  • Родная гавань
  • Блок РКН снят
  • Premoderation
  • For English speaking users
  • Каталог Фрилансеров
  • If you want to buy some product or script
  • Администраторам
VBsupport перешел с домена .ORG на родной .RU Ура! Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей

Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
for English speaking users:
You may be surprised with restriction of access to the attachments of the forum. The reason is the recent change in vbsupport.org strategy:

- users with reputation < 10 belong to "simple_users" users' group
- if your reputation > 10 then administrator (kerk, Luvilla) can decide to move you into an "improved" group, but only manually

Main idea is to increase motivation of community members to share their ideas and willingness to support to each other. You may write an article for the subject where you are good enough, you may answer questions, you may share vbulletin.com/org content with vbsupport.org users, receiving "thanks" equal your reputation points. We should not only consume, we should produce something.

- you may:
* increase your reputation (doing something useful for another members of community) and being improved
* purchase temporary access to the improved category:
10 $ for 3 months. - this group can download attachments, reputation/posts do not matter.
20 $ for 3 months. - this group can download attachments, reputation/posts do not matter + adds eliminated + Inbox capacity increased + files manager increased permissions.

Please contact kerk or Luvilla regarding payments.

Important!:
- if your reputation will become less then 0, you will be moved into "simple_users" users' group automatically.*
*for temporary groups (pre-paid for 3 months) reputation/posts do not matter.
Уважаемые пользователи!

На форуме открыт новый раздел "Каталог фрилансеров"

и отдельный раздел для платных заказов "Куплю/Закажу"

Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже:
Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота.
Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
 
 
 
 
GiveMeABreak
Эксперт
 
GiveMeABreak's Avatar
Question [PHP-шникам] Array
0

Здравствуйте, саппорт
Вобщем идея появилась, переписать хак LGSL.
Программер на PHP я не очень, но кое что умею.

Вобщем, переношу шаблоны LGSL из файлов PHP в шаблоны воблы.
Когда шаблоны хранятся в php то все нормально, но когда через вобловские то выводится так:
Игра: Array[name]
Карта : Array[map]

Причем в шаблоне указанно что $server[name] и $server[map]

Спасибо
Bot
Yandex Bot Yandex Bot is online now
 
Join Date: 05.05.2005
Реклама на форуме А что у нас тут интересного? =)
 
 
KapriZz
Знаток
 
KapriZz's Avatar
Default
0

Quote:
Originally Posted by GiveMeABreak View Post
переношу шаблоны LGSL из файлов PHP в шаблоны воблы.
Ну если файлы PHP удалил, то наверное стоит тогда в нужном месте в модулях для нужного шаблона описать эти переменные.. И зачем убирать ПХП файлы, с ними удобнее.
 
 
GiveMeABreak
Эксперт
 
GiveMeABreak's Avatar
Default
0

KapriZz, есть lgsl_list.php..он делает запрос в файл lgsl_class.php.. я перенес в шаблоны инфу..
стандартный lgsl_list.php:
PHP Code:
//------------------------------------------------------------------------------------------------------------+

  
require "lgsl_class.php";

  
$server_list lgsl_query_cached_all("s");
  
$server_list lgsl_sort_servers($server_list);

//------------------------------------------------------------------------------------------------------------+

  
$lgsl .= "
  <div style='text-align:center'>
    <table cellpadding='4' cellspacing='2' style='margin:auto'>"
;

    foreach (
$server_list as $server)
    {
      
$misc   lgsl_server_misc($server);
      
$server lgsl_server_html($server);

      
$lgsl .= "
      <tr style='"
.lgsl_bg()."'>

        <td>
          <img alt='' src='
{$misc['icon_status']}' title='{$misc['text_status']}' />
        </td>

        <td>
          <img alt='' src='
{$misc['icon_game']}' title='{$misc['text_type_game']}' />
        </td>

        <td title='
{$lgsl_config['text']['slk']}' style='text-align:right'>
          <a href='
{$misc['software_link']}' style='text-decoration:none'>
            
{$server['b']['ip']}:{$server['b']['c_port']}
          </a>
        </td>

        <td title='
{$server['s']['name']}' style='text-align:left'>
          <div style='white-space:nowrap; overflow:hidden; width:300px'>
            
{$misc['name_filtered']}
          </div>
        </td>

        <td style='white-space:nowrap; text-align:left'>
          
{$server['s']['map']}
        </td>

        <td style='white-space:nowrap; text-align:right'>
          
{$server['s']['players']} / {$server['s']['playersmax']}
        </td>

        <td>
          <a href='"
.lgsl_link($server['o']['id'])."'>
            <img alt='' src='
{$misc['icon_details']}' style='border:none' title='{$lgsl_config['text']['vsd']}' />
          </a>
        </td>

      </tr>"
;
    }

    
$lgsl .= "
    </table>
  </div>"
;

//------------------------------------------------------------------------------------------------------------+

  
if ($lgsl_config['list']['totals'])
  {
    
$total lgsl_cached_totals();

    
$lgsl .= "
    <div>
      <br />
    </div>
    <div style='text-align:center'>
      <table cellpadding='4' cellspacing='4' style='margin:auto'>
        <tr style='"
.lgsl_bg()."'>
          <td> 
{$lgsl_config['text']['tns']} {$total['servers']}    </td>
          <td> 
{$lgsl_config['text']['tnp']} {$total['players']}    </td>
          <td> 
{$lgsl_config['text']['tmp']} {$total['playersmax']} </td>
        </tr>
      </table>
    </div>"
;
  }

//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
//------  PLEASE MAKE A DONATION OR SIGN THE GUESTBOOK AT GREYCUBE.COM IF YOU REMOVE THIS CREDIT ---------------------------------------------------------------------------------------------------+
  
$lgsl .= "<div style='text-align:center; font-family:tahoma; font-size:9px'><br /><br /><br /><a href='http://cyber-worlds.cn/forum/forumdisplay.php?f=111' style='text-decoration:none'>".lgsl_version()."</a><br /></div>";
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 
в файл lgsl_list.php удален, но в главном lgsl.php добавлен код:
PHP Code:
require "includes/lgsl_class.php";

  
$server_list lgsl_query_cached_all("s");
  
$server_list lgsl_sort_servers($server_list);


eval(
'$lgsl .= "' fetch_template('lgsl_header') . '";');
 foreach (
$server_list as $server)
    {
      
$misc   lgsl_server_misc($server);
      
$server lgsl_server_html($server);

eval(
'$lgsl .= "' fetch_template('lgsl_listbits') . '";');
}
eval(
'$lgsl .= "' fetch_template('lgsl_footer') . '";'); 
 
 
KapriZz
Знаток
 
KapriZz's Avatar
Default
0

GiveMeABreak,
Я честно говоря даже не знаю как устроен этот хак, я так понял он отображает онлайн игр. серваков.. Я вообще про другое, как ты ПХП в шаблоны переносишь? Для этого же надо модули создать..
 
 
kerk
k0t
 
kerk's Avatar
Default
1

нафига 3 "эвала" с одинаковыми переменными и разными шаблонами?
PHP Code:
  $server_list lgsl_query_cached_all("s");
  
$server_list lgsl_sort_servers($server_list);


eval(
'$lgsl_header = "' fetch_template('lgsl_header') . '";');
 foreach (
$server_list as $server)
    {
      
$misc   lgsl_server_misc($server);
      
$server lgsl_server_html($server);

eval(
'$lgsl_bits .= "' fetch_template('lgsl_listbits') . '";');
}
eval(
'$lgsl_footer = "' fetch_template('lgsl_footer') . '";'); 
eval(
'print_output("' fetch_template('lgsl_maintemplate') . '");'); 
как то так...
 
 
GiveMeABreak
Эксперт
 
GiveMeABreak's Avatar
Default
0

kerk, сделал так, вcе равно такая же картина..

GiveMeABreak добавил 08.05.2009 в 14:39
может так поможите...вот lgsl_class.php
PHP Code:
<?php

//------------------------------------------------------------------------------------------------------------+

  
if (!function_exists('lgsl_bg')) {
  function 
lgsl_bg($rotation_overide "no")
  {
    global 
$lgsl_config;
    global 
$lgsl_bg_rotate;

    if (
$rotation_overide !== "no")
    {
      
$lgsl_bg_rotate $rotation_overide TRUE FALSE;
    }
    else
    {
      
$lgsl_bg_rotate $lgsl_bg_rotate FALSE TRUE;
    }

    
$background $lgsl_bg_rotate $lgsl_config['background'][1] : $lgsl_config['background'][2];

    return 
$background;
  }}

//------------------------------------------------------------------------------------------------------------+

  
if (!function_exists('lgsl_link')) {
  function 
lgsl_link($s)
  {
    global 
$lgsl_config$lgsl_url_path;

    if (
$lgsl_config['cms'] == "sa")
    {
      if (
is_numeric($s))
      {
        
$link $lgsl_url_path."../game_servers.php?s={$s}";
      }
      else
      {
        
$link $lgsl_url_path."../";
      }
    }
    elseif (
$lgsl_config['cms'] == "e107")
    {
      if (
is_numeric($s))
      {
        
$link e_PLUGIN."lgsl/?s={$s}";
      }
      else
      {
        
$link e_PLUGIN."lgsl/";
      }
    }
    elseif (
$lgsl_config['cms'] == "joomla")
    {
      if (
is_numeric($s))
      {
        
$link JRoute::_("index.php?option=com_lgsl&s={$s}");
      }
      else
      {
        
$link JRoute::_("index.php?option=com_lgsl");
      }
    }
    elseif (
$lgsl_config['cms'] == "phpnuke")
    {
      if (
is_numeric($s))
      {
        
$link "modules.php?name=LGSL&s={$s}";
      }
      else
      {
        
$link "modules.php?name=LGSL";
      }
    }

    return 
$link;
  }}

//------------------------------------------------------------------------------------------------------------+

  
if (!function_exists('lgsl_database')) {
  function 
lgsl_database()
  {
    global 
$lgsl_config$lgsl_database$lgsl_file_path;

    if (
$lgsl_config['cms'] == "sa" || $lgsl_config['db']['pass'])
    {
      if (
$lgsl_database) { return; }
      
$lgsl_config['db']['prefix'] = "";
      
$lgsl_database  mysql_connect($lgsl_config['db']['server'], $lgsl_config['db']['user'], $lgsl_config['db']['pass']) or die(mysql_error());
      
$lgsl_select_db mysql_select_db($lgsl_config['db']['db'], $lgsl_database) or die(mysql_error());
    }
    elseif (
$lgsl_config['cms'] == "e107")
    {
      global 
$lgsl_file_path;
      @include_once 
$lgsl_file_path."../../../class2.php";
      
$lgsl_config['db']['prefix'] = MPREFIX;
    }
    elseif (
$lgsl_config['cms'] == "joomla")
    {
      
$conf =& JFactory::getConfig();
      
$lgsl_config['db']['prefix'] = $conf->getValue('config.dbprefix');
    }
    elseif (
$lgsl_config['cms'] == "phpnuke")
    {
      global 
$dbhost$dbuname$dbpass$prefix;
      
$lgsl_config['db']['prefix'] = $prefix."_";
      if (
$dbhost && $dbuname && $dbpass) { mysql_connect($dbhost$dbuname$dbpass); }
    }
    else
    {
      echo 
"LGSL PROBLEM: INVALID CMS '{$lgsl_config['cms']}' IN CONFIG"; exit;
    }
  }}

//------------------------------------------------------------------------------------------------------------+

  
if (!function_exists('lgsl_query_cached')) {
  function 
lgsl_query_cached($ip$q_port$c_port$s_port$type$request)
  {
    global 
$lgsl_config;

    
lgsl_database();

    
// ESCAPE FOR SQL QUERY

    
$ip      mysql_real_escape_string($ip);
    
$q_port  mysql_real_escape_string(intval($q_port));
    
$c_port  mysql_real_escape_string(intval($c_port));
    
$s_port  mysql_real_escape_string(intval($s_port));
    
$type    mysql_real_escape_string($type);

    
// GET EXISTING CACHE

    
$mysql_query  "SELECT * FROM `{$lgsl_config['db']['prefix']}{$lgsl_config['db']['table']}` WHERE `ip` = '$ip' AND `q_port` = '$q_port' AND `type` = '$type' LIMIT 1";
    
$mysql_result mysql_query($mysql_query) or die(mysql_error());
    
$mysql_row    mysql_fetch_array($mysql_resultMYSQL_ASSOC);

    
// CHECK IF SERVER IS IN THE DATABASE AND ADD IF REQUESTED

    
if (!$mysql_row)
    {
      if (
strpos($request"a") !== FALSE)
      {
        
$mysql_query     "INSERT INTO `{$lgsl_config['db']['prefix']}{$lgsl_config['db']['table']}` (`ip`, `q_port`, `c_port`, `s_port`, `type`, `cache`, `cache_time`) VALUES ('$ip', '$q_port', '$c_port', '$s_port', '$type', '', '')";
        
$mysql_result    mysql_query($mysql_query) or die(mysql_error());
        
$mysql_row['id'] = mysql_insert_id();
      }
      else
      {
        echo 
"LGSL PROBLEM: REQUESTED SERVER NOT IN DATABASE: '$ip:$q_port:$c_port:$s_port:$type:$request'"; exit;
      }
    }

    
// UNPACK CACHE

    
$cache         unserialize($mysql_row['cache']);
    
$cache_time    explode("_"$mysql_row['cache_time']);
    
$cache_time[0] = intval($cache_time[0]);
    
$cache_time[1] = intval($cache_time[1]);
    
$cache_time[2] = intval($cache_time[2]);

    
// CHECK WHAT IS NEEDED

    
$needed "";

    if (
strpos($request"s") !== FALSE && gmdate("U") > ($lgsl_config['cache_time'] + $cache_time[0])) { $needed .= "s"; }
    if (
strpos($request"e") !== FALSE && gmdate("U") > ($lgsl_config['cache_time'] + $cache_time[1])) { $needed .= "e"; }
    if (
strpos($request"p") !== FALSE && gmdate("U") > ($lgsl_config['cache_time'] + $cache_time[2])) { $needed .= "p"; }

    if (!
$needed) { return $cache; }

    
// HANDLE EMPTY AND INCOMPLETE CACHE

    
if (!isset($cache['b']))
    {
      
$cache['b']['ip']      = $ip;
      
$cache['b']['q_port']  = $q_port;
      
$cache['b']['c_port']  = $c_port;
      
$cache['b']['s_port']  = $s_port;
      
$cache['b']['type']    = $type;
      
$cache['b']['request'] = $request;
      
$cache['b']['status']  = 0;
      
$cache['b']['pending'] = 1;
      
$cache['o']['id']      = $mysql_row['id'];
    }

    if (!isset(
$cache['s']))
    {
      
$cache['s']['game']       = $type;
      
$cache['s']['name']       = $lgsl_config['text']['nnm'];
      
$cache['s']['map']        = $lgsl_config['text']['nmp'];
      
$cache['s']['players']    = 0;
      
$cache['s']['playersmax'] = 0;
      
$cache['s']['password']   = 0;
    }

    if (!isset(
$cache['e']))
    {
      
$cache['e'] = array();
    }

    if (!isset(
$cache['e']))
    {
      
$cache['p'] = array();
    }

    
// CHECK FOR CACHE ONLY REQUEST

    
if (strpos($request"c") !== FALSE) { return $cache; }

    
// GET LIVE DATA

    
$live lgsl_query_live($ip$q_port$c_port$s_port$type$needed);

    
// USE CACHED VALUES IF SERVER OFFLINE

    
if (!$live['b']['status'])
    {
      
$live['s']['game']       = $cache['s']['game'];
      
$live['s']['name']       = $cache['s']['name'];
      
$live['s']['map']        = $cache['s']['map'];
      
$live['s']['playersmax'] = $cache['s']['playersmax'];
      
$live['s']['password']   = $cache['s']['password'];
    }

    
// MERGE LIVE INTO CACHE

    
if (isset($live['b'])) { $cache['b'] = $live['b']; }
    if (isset(
$live['s'])) { $cache['s'] = $live['s']; $cache_time[0] = gmdate("U"); }
    if (isset(
$live['e'])) { $cache['e'] = $live['e']; $cache_time[1] = gmdate("U"); }
    if (isset(
$live['p'])) { $cache['p'] = $live['p']; $cache_time[2] = gmdate("U"); }

    
// PACK FOR STORAGE

    
$packed_cache      mysql_real_escape_string(serialize($cache));
    
$packed_cache_time mysql_real_escape_string(implode("_"$cache_time));

    
// SAVE TO DATABASE

    
$mysql_query  "UPDATE `{$lgsl_config['db']['prefix']}{$lgsl_config['db']['table']}` SET `status` = '{$cache['b']['status']}', `cache` = '$packed_cache', `cache_time` = '$packed_cache_time' WHERE `id` = '$mysql_row[id]' LIMIT 1";
    
$mysql_result mysql_query($mysql_query) or die(mysql_error());

    
// RETURN THE REQUESTED

    
if (strpos($request"s") === FALSE) { unset($cache['s']); }
    if (
strpos($request"e") === FALSE) { unset($cache['e']); }
    if (
strpos($request"p") === FALSE) { unset($cache['p']); }

    return 
$cache;
  }}

//------------------------------------------------------------------------------------------------------------+

  
if (!function_exists('lgsl_query_cached_all')) {
  function 
lgsl_query_cached_all($request)
  {
    global 
$lgsl_config;

    
lgsl_database();

    
$mysql_query  "SELECT `ip`,`q_port`,`c_port`,`s_port`,`type` FROM `{$lgsl_config['db']['prefix']}{$lgsl_config['db']['table']}` WHERE `disabled` = 0 ORDER BY `cache_time` ASC";
    
$mysql_result mysql_query($mysql_query) or die(mysql_error());

    
$server_list  = array();

    while (
$mysql_row mysql_fetch_array($mysql_resultMYSQL_ASSOC))
    {
      if (
strpos($request"c") === FALSE && lgsl_timer("check")) { $request .= "c"; }

      
$server lgsl_query_cached($mysql_row['ip'], $mysql_row['q_port'], $mysql_row['c_port'], $mysql_row['s_port'], $mysql_row['type'], $request);

      if (
$lgsl_config['hide_offline'][0] && !$server['b']['status']) { continue; }

      
$server_list[] = $server;
    }

    return 
$server_list;
  }}

//------------------------------------------------------------------------------------------------------------+

  
if (!function_exists('lgsl_query_cached_zone')) {
  function 
lgsl_query_cached_zone($request$zone_number)
  {
    global 
$lgsl_config;

    
lgsl_database();

    
$zone_number mysql_real_escape_string(intval($zone_number));
    
$zone_random mysql_real_escape_string(intval($lgsl_config['random'][$zone_number]));

    if (
$zone_random)
    {
      
$mysql_query "SELECT `ip`,`q_port`,`c_port`,`s_port`,`type` FROM `{$lgsl_config['db']['prefix']}{$lgsl_config['db']['table']}` WHERE `zone` = '$zone_number' AND `disabled` = 0 ORDER BY rand() LIMIT $zone_random";
    }
    else
    {
      
$mysql_query "SELECT `ip`,`q_port`,`c_port`,`s_port`,`type` FROM `{$lgsl_config['db']['prefix']}{$lgsl_config['db']['table']}` WHERE `zone` = '$zone_number' AND `disabled` = 0 ORDER BY `cache_time` ASC";
    }

    
$mysql_result mysql_query($mysql_query) or die(mysql_error());

    
$server_list  = array();

    while (
$mysql_row mysql_fetch_array($mysql_resultMYSQL_ASSOC))
    {
      if (
strpos($request"c") === FALSE && lgsl_timer("check")) { $request .= "c"; }

      
$server lgsl_query_cached($mysql_row['ip'], $mysql_row['q_port'], $mysql_row['c_port'], $mysql_row['s_port'], $mysql_row['type'], $request);

      if (
$lgsl_config['hide_offline'][$zone_number] && !$server['b']['status']) { continue; }

      
$server_list[] = $server;
    }

    return 
$server_list;
  }}

//------------------------------------------------------------------------------------------------------------+

  
if (!function_exists('lgsl_cached_totals')) {
  function 
lgsl_cached_totals()
  {
    global 
$lgsl_config;

    
lgsl_database();

    
$mysql_query  "SELECT `cache` FROM `{$lgsl_config['db']['prefix']}{$lgsl_config['db']['table']}` WHERE `disabled` = 0";
    
$mysql_result mysql_query($mysql_query) or die(mysql_error());

    
$total['players']         = 0;
    
$total['playersmax']      = 0;
    
$total['servers']         = 0;
    
$total['servers_online']  = 0;
    
$total['servers_offline'] = 0;

    while (
$mysql_row mysql_fetch_array($mysql_resultMYSQL_ASSOC))
    {
      
$server unserialize($mysql_row['cache']);

      
$total['players']    += $server['s']['players'];
      
$total['playersmax'] += $server['s']['playersmax'];

                                    
$total['servers']         ++;
      if (
$server['b']['status']) { $total['servers_online']  ++; }
      else                        { 
$total['servers_offline'] ++; }
    }

    return 
$total;
  }}

//------------------------------------------------------------------------------------------------------------+

  
if (!function_exists('lgsl_lookup_id')) {
  function 
lgsl_lookup_id($id)
  {
    global 
$lgsl_config;

    
lgsl_database();

    
$id           mysql_real_escape_string(intval($id));
    
$mysql_query  "SELECT `ip`,`q_port`,`c_port`,`s_port`,`type` FROM `{$lgsl_config['db']['prefix']}{$lgsl_config['db']['table']}` WHERE `id` = '$id' LIMIT 1";
    
$mysql_result mysql_query($mysql_query) or die(mysql_error());
    
$mysql_row    mysql_fetch_array($mysql_resultMYSQL_ASSOC);

    return 
$mysql_row;
  }}

//------------------------------------------------------------------------------------------------------------+

  
if (!function_exists('lgsl_timer')) {
  function 
lgsl_timer($action)
  {
    global 
$lgsl_config;
    global 
$lgsl_timer;

    if (!
$lgsl_timer)
    {
      
$microtime  microtime();
      
$microtime  explode(' '$microtime);
      
$microtime  $microtime[1] + $microtime[0];
      
$lgsl_timer $microtime 0.01;
    }

    
$time_limit intval($lgsl_config['live_time']);
    
$time_php   ini_get("max_execution_time");

    if (
$time_limit $time_php)
    {
      @
set_time_limit($time_limit 5);

      
$time_php ini_get("max_execution_time");

      if (
$time_limit $time_php)
      {
        
$time_limit $time_php 5;
      }
    }

    if (
$action == "limit")
    {
      return 
$time_limit;
    }

    
$microtime  microtime();
    
$microtime  explode(' '$microtime);
    
$microtime  $microtime[1] + $microtime[0];
    
$time_taken $microtime $lgsl_timer;

    if (
$action == "check")
    {
      return (
$time_taken $time_limit) ? TRUE FALSE;
    }
    else
    {
      return 
round($time_taken2);
    }
  }}

//------------------------------------------------------------------------------------------------------------+

  
if (!function_exists('lgsl_server_misc')) {
  function 
lgsl_server_misc($server)
  {
    global 
$lgsl_config$lgsl_url_path;

    
$misc['icon_details']       = $lgsl_url_path."other/icon_details.gif";
    
$misc['icon_game']          = lgsl_icon_game($server['b']['type'], $server['s']['game']);
    
$misc['icon_status']        = lgsl_icon_status($server['b']['status'], $server['s']['password'], $server['b']['pending']);

    
$misc['image_map']          = lgsl_image_map($server['b']['status'], $server['b']['type'], $server['s']['game'], $server['s']['map']);
    
$misc['image_map_password'] = lgsl_image_map_password($server['b']['status'], $server['s']['password']);

    
$misc['text_status']        = lgsl_text_status($server['b']['status'], $server['s']['password'], $server['b']['pending']);
    
$misc['text_type_game']     = lgsl_text_type_game($server['b']['type'], $server['s']['game']);

    
$misc['name_filtered']      = lgsl_name_filtered($server['s']['name']);

    
$misc['software_link']      = lgsl_software_link($server['b']['ip'], $server['b']['q_port'], $server['b']['c_port'], $server['b']['s_port'], $server['b']['type']);

    return 
$misc;
  }}

//------------------------------------------------------------------------------------------------------------+

  
if (!function_exists('lgsl_icon_game')) {
  function 
lgsl_icon_game($type$game)
  {
    global 
$lgsl_file_path$lgsl_url_path;

    
$type preg_replace("/[^A-Za-z0-9_]/""_"strtolower($type));
    
$game preg_replace("/[^A-Za-z0-9_]/""_"strtolower($game));

    if (
file_exists("{$lgsl_file_path}icons/{$type}/{$game}.gif"))
    {
      return 
"{$lgsl_url_path}icons/{$type}/{$game}.gif";
    }

    if (
file_exists("{$lgsl_file_path}icons/{$type}/{$type}.gif"))
    {
      return 
"{$lgsl_url_path}icons/{$type}/{$type}.gif";
    }

    return 
"{$lgsl_url_path}other/icon_unknown.gif";
  }}

//------------------------------------------------------------------------------------------------------------+

  
if (!function_exists('lgsl_icon_status')) {
  function 
lgsl_icon_status($status$password$pending 0)
  {
    global 
$lgsl_url_path;

    if (
$pending)
    {
      return 
"{$lgsl_url_path}other/icon_unknown.gif";
    }

    if (!
$status)
    {
      return 
"{$lgsl_url_path}other/icon_no_response.gif";
    }

    if (
$password)
    {
      return 
"{$lgsl_url_path}other/icon_online_password.gif";
    }

    return 
"{$lgsl_url_path}other/icon_online.gif";
  }}

//------------------------------------------------------------------------------------------------------------+

  
if (!function_exists('lgsl_image_map')) {
  function 
lgsl_image_map($status$type$game$map$check_exists TRUE)
  {
    global 
$lgsl_file_path$lgsl_url_path;

    if (!
$status)
    {
      return 
"{$lgsl_url_path}other/map_no_response.jpg";
    }

    
$type preg_replace("/[^A-Za-z0-9_]/""_"strtolower($type));
    
$game preg_replace("/[^A-Za-z0-9_]/""_"strtolower($game));
    
$map  preg_replace("/[^A-Za-z0-9_]/""_"strtolower($map));

    if (
file_exists("{$lgsl_file_path}maps/{$type}/{$game}/{$map}.jpg") || $check_exists == FALSE)
    {
      return 
"{$lgsl_url_path}maps/{$type}/{$game}/{$map}.jpg";
    }

    if (
file_exists("{$lgsl_file_path}maps/{$type}/{$game}/{$map}.gif"))
    {
      return 
"{$lgsl_url_path}maps/{$type}/{$game}/{$map}.gif";
    }

    if (
file_exists("{$lgsl_file_path}maps/{$type}/{$map}.jpg"))
    {
      return 
"{$lgsl_url_path}maps/{$type}/{$map}.jpg";
    }

    if (
file_exists("{$lgsl_file_path}maps/{$type}/{$map}.gif"))
    {
      return 
"{$lgsl_url_path}maps/{$type}/{$map}.gif";
    }

    return 
"{$lgsl_url_path}other/map_no_image.jpg";
  }}

//------------------------------------------------------------------------------------------------------------+

  
if (!function_exists('lgsl_image_map_password')) {
  function 
lgsl_image_map_password($status$password)
  {
    global 
$lgsl_url_path;

    if (!
$password || !$status)
    {
      return 
"{$lgsl_url_path}other/map_overlay.gif";
    }

    return 
"{$lgsl_url_path}other/map_overlay_password.gif";
  }}

//------------------------------------------------------------------------------------------------------------+

  
if (!function_exists('lgsl_text_status')) {
  function 
lgsl_text_status($status$password$pending 0)
  {
    global 
$lgsl_config;

    if (
$pending)
    {
      return 
$lgsl_config['text']['pen'];
    }

    if (!
$status)
    {
      return 
$lgsl_config['text']['nrs'];
    }

    if (
$password)
    {
      return 
$lgsl_config['text']['onp'];
    }

    return 
$lgsl_config['text']['onl'];
  }}

//------------------------------------------------------------------------------------------------------------+

  
if (!function_exists('lgsl_text_type_game')) {
  function 
lgsl_text_type_game($type$game)
  {
    global 
$lgsl_config;

    return 
"[ {$lgsl_config['text']['typ']} {$type} ] [ {$lgsl_config['text']['gme']} {$game} ]";
  }}

//------------------------------------------------------------------------------------------------------------+

  
if (!function_exists('lgsl_name_filtered')) {
  function 
lgsl_name_filtered($name)
  {
    
$name preg_replace("/[^\x20-\x7E]/"""$name); // x20-x7E IS HEX FOR ASCII RANGE
    
$name lgsl_string_html($name);

    return 
$name;
  }}

//------------------------------------------------------------------------------------------------------------+

  
if (!function_exists('lgsl_sort_servers')) {
  function 
lgsl_sort_servers($server_list)
  {
    global 
$lgsl_config;

    if (!
is_array($server_list)) { return $server_list; }

    if (
$lgsl_config['sort']['servers'] == "players")
    {
      
usort($server_list"lgsl_sort_servers_by_players");
    }
    else
    {
      
usort($server_list"lgsl_sort_servers_by_id");
    }

    return 
$server_list;
  }}

//------------------------------------------------------------------------------------------------------------+

  
if (!function_exists('lgsl_sort_servers_by_players')) {
  function 
lgsl_sort_servers_by_players($server_a$server_b)
  {
    if (
$server_a['s']['players'] == $server_b['s']['players']) { return 0; }

    return (
$server_a['s']['players'] < $server_b['s']['players']) ? : -1;
  }}

//------------------------------------------------------------------------------------------------------------+

  
if (!function_exists('lgsl_sort_servers_by_id')) {
  function 
lgsl_sort_servers_by_id($server_a$server_b)
  {
    if (
$server_a['o']['id'] == $server_b['o']['id']) { return 0; }

    return (
$server_a['o']['id'] > $server_b['o']['id']) ? : -1;
  }}

//------------------------------------------------------------------------------------------------------------+

  
if (!function_exists('lgsl_sort_extras')) {
  function 
lgsl_sort_extras($server)
  {
    if (!
is_array($server['e'])) { return $server; }

    
ksort($server['e']);

    return 
$server;
  }}

//------------------------------------------------------------------------------------------------------------+

  
if (!function_exists('lgsl_sort_players')) {
  function 
lgsl_sort_players($server)
  {
    global 
$lgsl_config;

    if (!
is_array($server['p'])) { return $server; }

    if (
$lgsl_config['sort']['players'] == "score")
    {
      
usort($server['p'], "lgsl_sort_players_by_score");
    }
    else
    {
      
usort($server['p'], "lgsl_sort_players_by_name");
    }

    return 
$server;
  }}

//------------------------------------------------------------------------------------------------------------+

  
if (!function_exists('lgsl_sort_players_by_score')) {
  function 
lgsl_sort_players_by_score($player_a$player_b)
  {
    if (
$player_a['score'] == $player_b['score']) { return 0; }

    return (
$player_a['score'] < $player_b['score']) ? : -1;
  }}

//------------------------------------------------------------------------------------------------------------+

  
if (!function_exists('lgsl_sort_players_by_name')) {
  function 
lgsl_sort_players_by_name($player_a$player_b)
  {
    
// FILTER NON ALPHA NUMERIC CHARACTERS FROM NAME

    
$string_a preg_replace("/[^a-z\d]/i"""$player_a['name']);
    
$string_b preg_replace("/[^a-z\d]/i"""$player_b['name']);

    
// IF ONE OF THE NAMES IS COMPLETELY NON ALPHA NUMERIC THEN PUT IT LAST

    
if (!$string_a) { return  1; }
    if (!
$string_b) { return -1; }

    
// IF BOTH NAMES ARE COMPLETELY NON ALPHA NUMERIC THEN FALLBACK TO UNFILTERED

    
if (!$string_a && !$string_b)
    {
      
$string_a $player_a['name'];
      
$string_b $player_b['name'];
    }

    
// OTHERWISE MAKE THEM LOWERCASE

    
else
    {
      
$string_a strtolower($string_a);
      
$string_b strtolower($string_b);
    }

    
// COMPARE EACH CHARACTER SO ITS SORTED ASCENDING ( A TO Z )

    
$string_length strlen($string_a);

    for (
$i=0$i<$string_length$i++)
    {
      
$char_a ord($string_a[$i]);
      
$char_b ord($string_b[$i]);

      if (
$char_a $char_b) { return -1; }
      if (
$char_a $char_b) { return  1; }
    }

    
// AT THIS POINT THE TWO NAMES ARE EQUAL IN ORDER

    
return 0;
  }}

//------------------------------------------------------------------------------------------------------------+

  
if (!function_exists('lgsl_server_html')) {
  function 
lgsl_server_html($server)
  {
    if (
is_array($server['s']))
    {
      foreach (
$server['s'] as $key => $value)
      {
        
$server['s'][$key] = lgsl_string_html($value);
      }
    }

    if (
is_array($server['e']))
    {
      foreach (
$server['e'] as $key => $value)
      {
        
$value wordwrap($value90"\x00\x01"TRUE);    // \x00\x01 PLACEHOLDER FOR <BR /> TO PREVENT IT BEING ENTITIED
        
$value lgsl_string_html($value);
        
$value str_replace("\x00\x01""<br />"$value); // CHANGE PLACEHOLDER INTO ACTUALY <BR />

        
$server['e'][$key] = $value;
      }
    }

    if (
is_array($server['p']))
    {
      foreach (
$server['p'] as $key => $player)
      {
        
$server['p'][$key]['name'] = lgsl_string_html($player['name']);
      }
    }

    return 
$server;
  }}

//------------------------------------------------------------------------------------------------------------+

  
if (!function_exists('lgsl_string_html')) {
  function 
lgsl_string_html($string)
  {
    if (
function_exists("mb_convert_encoding")) // REQUIRES http://php.net/mbstring
    
{
      
$string htmlspecialchars($stringENT_QUOTES);
      
$string = @mb_convert_encoding($string"HTML-ENTITIES""UTF-8");
    }
    else
    {
      
$string htmlentities($stringENT_QUOTES);
    }

    return 
$string;
  }}

//------------------------------------------------------------------------------------------------------------+

  
if (!function_exists('lgsl_file_path')) {
  function 
lgsl_file_path()
  {
    
// GET FILE PATHS

        
if ($_SERVER['ORIG_PATH_TRANSLATED']) { $load_path $_SERVER['ORIG_PATH_TRANSLATED']; }
    elseif (
$_SERVER['PATH_TRANSLATED'])      { $load_path $_SERVER['PATH_TRANSLATED'];      }
    else                                      { 
$load_path $_SERVER['SCRIPT_FILENAME'];      }

    
$lgsl_path __FILE__;

    
// TRANSLATE SYMBOLIC LINKS INTO ABSOLUTE FILE PATHS

    
$load_path realpath($load_path);
    
$lgsl_path realpath($lgsl_path);

    
// SHORTEN TO JUST THE FOLDERS AND ADD TRAILING SLASH

    
$load_path dirname($load_path)."/";
    
$lgsl_path dirname($lgsl_path)."/";

    
// CONVERT WINDOWS BACKSLASHES TO FORWARDSLASHES

    
$load_path str_replace("\\""/"$load_path);
    
$lgsl_path str_replace("\\""/"$lgsl_path);

    
// SPLIT PATHS INTO BITS

    
$load_bits explode("/"$load_path);
    
$lgsl_bits explode("/"$lgsl_path);

    
// COMPARE BITS TO FIND THE COMMON BASE DIRECTORY

    
$base_count 0;

    while (isset(
$load_bits[$base_count]) && isset($lgsl_bits[$base_count]) && $load_bits[$base_count] == $lgsl_bits[$base_count])
    {
      
$base_count++;
    }

    
// TOTAL BITS

    
$load_count count($load_bits) - 1;
    
$lgsl_count count($lgsl_bits) - 1;

    
// CHANGE THE COUNTS INTO RELATIVE PATHS

    
$path_down "";

    for (
$i=$base_count$i<$load_count$i++)
    {
      
$path_down .= "../";
    }

    
$path_up "";

    for (
$i=$base_count$i<$lgsl_count$i++)
    {
      
$path_up .= $lgsl_bits[$i]."/";
    }

    
// RETURN THE PATHS JOINED

    
return $path_down.$path_up;
  }}

//------------------------------------------------------------------------------------------------------------+

  
if (!function_exists('lgsl_url_path')) {
  function 
lgsl_url_path()
  {
    
// CHECK IF PATH HAS BEEN SET IN CONFIG

    
global $lgsl_config;

    if (
$lgsl_config['url_path'])
    {
      return 
$lgsl_config['url_path'];
    }

    
// USE FULL DOMAIN PATH TO AVOID ALIAS PROBLEMS

    
$host_path "http://".($_SERVER['WEBC_USER_DOMAIN_NAME'] ? $_SERVER['WEBC_USER_DOMAIN_NAME'] : $_SERVER['SERVER_NAME']);

    
// GET ABSOLUTE FILE PATHS

    
$base_path realpath($_SERVER['DOCUMENT_ROOT']);
    
$lgsl_path dirname(realpath(__FILE__));

    
// CONVERT WINDOWS BACKSLASHES TO FORWARDSLASHES

    
$base_path str_replace("\\""/"$base_path);
    
$lgsl_path str_replace("\\""/"$lgsl_path);

    
// USE THE DIFFERENCE BETWEEN PATHS

    
if (substr($lgsl_path0strlen($base_path)) == $base_path)
    {
      
$url_path substr($lgsl_pathstrlen($base_path));

      return 
$host_path.$url_path."/";
    }

    return 
"//UNKNOWN_URL_PATH/{$lgsl_path}/";
  }}

//------------------------------------------------------------------------------------------------------------+

  
global $lgsl_file_path$lgsl_url_path;

  
$lgsl_file_path lgsl_file_path();

  require 
$lgsl_file_path."lgsl_config.php";
  require 
$lgsl_file_path."lgsl_protocol.php";

  
$lgsl_url_path lgsl_url_path();

  if (
$_GET['lgsl_debug'])
  {
    echo 
"LGSL DEBUG:
    <hr /><pre>"
.print_r($_SERVERTRUE)."</pre>
    <hr />"
.__FILE__."
    <hr />"
.realpath(__FILE__)."
    <hr />"
.realpath($_SERVER['DOCUMENT_ROOT'])."
    <hr />
{$lgsl_file_path}
    <hr />
{$lgsl_url_path}
    <hr />"
;
  }

  if (!isset(
$lgsl_config['live_time']))
  {
    echo 
"LGSL PROBLEM: CONFIG FILE BROKEN"; exit;
  }

//------------------------------------------------------------------------------------------------------------+

?>
GiveMeABreak добавил 08.05.2009 в 23:18
help help help

Last edited by kerk : 05-10-2009 at 01:15 AM. Reason: еще один ап, я закрою тему
 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off




All times are GMT +4. The time now is 07:20 AM.


Powered by vBulletin® Version 3.0.11
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.