Перейти к контенту

Рекомендуемые сообщения

не... этот не ставь - замучаешься

 

 

/*
*--------------------------------------------
* "Who Was Online Mod" 
* for Invision Power Board v 1.1 (rewritten)
*
*--------------------------------------------
*/

/*
*--------------------------------------------
* 1. Откройте:
* sources/Admin/ad_settings.php
*--------------------------------------------
*/


// Найдите:

,'show_birthdays',

// ЗАМЕНИТЕ на:

,'show_birthdays','show_wwo',


// Найдите:

 $ADMIN->html .= $SKIN->add_td_row( array( "<b>Show Birthdays?</b>" ,
           $SKIN->form_yes_no( "show_birthdays", $INFO['show_birthdays'] )
        )      );

// Add above:

 $ADMIN->html .= $SKIN->add_td_row( array( "<b>Показывать, кто был на форуме сегодня?</b>" ,
           $SKIN->form_yes_no( "show_wwo", $INFO['show_wwo'] )
        )      );




/*
*--------------------------------------------
* 2. Откройте
* sources/Boards.php
*--------------------------------------------
*/

// Найдите:

$stats_html .= $this->html->ActiveUsers($active, $ibforums->vars['au_cutoff']);


// Ниже добавляем:

//-- wwo begin

if ($ibforums->vars['show_wwo'])
 {
	 // timestamp von heute null uhr ermitteln
$today = date("m,d,Y");
$todayStamp = mktime(0,0,0,$today);

// zwei variablen, usernamen und anzahl werden wir nutzen
$todayActive = "";
$todayActiveCounter = 0;

$DB->query("SELECT m.id, m.name, g.suffix, g.prefix
 FROM ibf_members m
 LEFT JOIN ibf_groups g ON (g.g_id=m.mgroup)
 WHERE last_activity >= '$todayStamp'
 ORDER BY m.name");	
	 while ($result = $DB->fetch_row() ){	
 $todayActive .= "<span class='highlight'>></span><a href='{$ibforums->vars['board_url']}/index.{$ibforums->vars['php_ext']}?s={$ibforums->session_id}&act=Profile&MID={$result['id']}'>{$result['prefix']}{$result['name']}{$result['suffix']}</a> ";
 $todayActiveCounter++;
 }
if($todayActiveCounter==0){
 $todayActiveText = "</i>За сегодня не было но идного зарегистрированного пользователя</i>";
 }
if($todayActiveCounter==1){
 $todayActiveText = "<i><b>1</b> пользователь был сегодня на форуме</i>";
 }
if($todayActiveCounter > 1){
 $todayActiveText = "</i><b>".$todayActiveCounter."</b> пользователей было сегодня на форуме</i>";
 } 	 

 
$stats_html .= $this->html->whoWasOnline($todayActiveText, $todayActive);

   }
//-- wwo end




/*
*--------------------------------------------
* 3. Откройте
* skin/s*/skin_boards.php
* (если у вас несколько скинов, то проведите такую же операцию с каждым из них)
*--------------------------------------------
*/



      
function whoWasOnline($todayActiveText, $todayActive) {
global $ibforums;
return <<<EOF
       <tr>
          <td class='category' colspan='2'>Посетители сегодня:</td>
  	 </tr>
  	 <tr>
         <td width="5%" class='forum1'><{F_ACTIVE}></td>
         <td class='forum2' width='95%'>$todayActiveText<br>$todayActive</td>
       </tr>

EOF;
}







/*
*--------------------------------------------
* 4. Зайдите в админцентр:
*  Skins & Templates >> Manage HTML Templates >> Template Tools >> выберете нужный скин и нажмите "Run tool"
* 
*--------------------------------------------
*/







/*
*--------------------------------------------
* 5. Настройка:
* Активируйте модификацию в админцентре
* Board Settings >> CPU Saving >> Показывать, кто был на форуме сегодня?.
*--------------------------------------------
*/


Готово

Ссылка на комментарий
Поделиться на других сайтах

Как сделать, чтобы он гостей показывал тоже?

 

А еще лучше, не за день, а за несколько и еще лучше, чтобы все это куда-нибудь записывалось. У меня что-то подобное есть, но это не так совершенно.

Ссылка на комментарий
Поделиться на других сайтах

B.X

А еще лучше, не за день, а за несколько и еще лучше, чтобы все это куда-нибудь записывалось.

Ты оригинал ставил или урезанную версию? Оригинал логи ведёт, вроде.

А гостей как, по IP что ль вылавливать? В любом случае, это будет несовершенно, т.к. могут ходить с одного IP или с одного прокси... и вообще, зачем это?..

Ссылка на комментарий
Поделиться на других сайтах

Просто хочу статистику смотреть. Но точную. Кто, откуда и куда. А вообще у меня не этот хак. Пойди по ссылке посмотри, что он делает. Он записывает все в лог, а я потом вывожу ее оттуда. Да по IP гостей. Гости голосовать могут по IP, значит и в статистике могут быть тоже по IP.

 

У меня IBF Logger, а код мне подсказали на этом сайте.

// IBF Logger 1.1 (from ibresource.ru)

// Open index.php
// Find:

//-----------------------------------------------
// NO USER EDITABLE SECTIONS BELOW
//-----------------------------------------------

error_reporting  (E_ERROR | E_WARNING | E_PARSE);
set_magic_quotes_runtime(0); 

// Add below:

$logfile = "/home/your path/html/log/log.txt"; // Change this to the full/reletive path of the text file you wish to log to

// Get the Variables
$user_date = date("j.m.Y - H:i");
$user_ip = $_SERVER['REMOTE_ADDR'];
$user_pg = $_SERVER['PHP_SELF'];
$user_ref = $_SERVER['HTTP_REFERER'];
$user_agent = $_SERVER['HTTP_USER_AGENT']; 
$maxwidth = "640";
$space_a = "<tr><td class=row1>";
$space = "</td><td class=row1>"; 
$space_div = "</td><td class=row1><DIV style='width: 301; overflow-x: auto; overflow-y: visible;'>"; 
$space_divend = "</div></td><td class=row1>";
$space_ip = "Guest [<a href={$ibforums->vars['board_url']}/forum/index.php?s=&act=modcp&CODE=ip&incoming=";  // if your board only www.you_site.com  delete forum
$space_href = ">";
$space_hren = "</a>] "; 
$space_signa = "<span class=signature>";
$space_ah = "[<a href="; 
$space_center = "<center>";
$space_d = "</td></tr>";

// Put them together
$access_log = $space_a.$space_ip.$user_ip.$space_href.$user_ip.$space_hren.$space_signa.$user_agent.$space_div.$space_ah.$user_ref.$space_href.$user_ref.$space_hren.$space_divend.$space_center.$user_date.$space.$user_pg.$space_d;

// Write to file
$fh = fopen($logfile, "a");
fwrite ($fh, "$access_log\n");
fclose ($fh);

// Upload...
// Open Skin/s*/skin_online.php
// Find:

function Page_end($links) {
global $ibforums;
return <<<EOF
           <!-- End content Table -->
           
// Add below (if on includes mod):
<% INCLUDE "{$ibforums->vars['board_url']}/html/log/log.txt" %>   


//
// Is necessary Includes mod  by WhiningHal 
///
/// Find file sources/functions.php
/// at the beginning after <?php and copyright insert these lines (between ///)
///
function include_hack_handler($buf)
{       
   global $include_temp_str;
   $include_temp_str.=$buf;
   return "";
}
///


/// In sources/functions.php find this line:
$text = preg_replace( "/(<|<)% (BOARD HEADER|CSS|JAVASCRIPT|TITLE|BOARD|STATS|GENERATOR|COPYRIGHT|NAVIGATION) %(>|>)/i", "<% \\2 %>", $text );
/// Replace it with
$text = preg_replace( "/(<|<)% (BOARD HEADER|CSS|JAVASCRIPT|TITLE|BOARD|STATS|GENERATOR|COPYRIGHT|NAVIGATION|INCLUDE \"\\S*?\") %(>|>)/i", "<% \\2 %>", $text );
///



///
///In file sources/functions.php find 
   function do_output($output_array) {
       global $DB, $Debug, $skin_universal, $ibforums;
/// replace with 
   function do_output($output_array) {
       global $DB, $Debug, $skin_universal, $ibforums, $include_temp_str;
///




///
///In file sources/functions.php after 
 $ibforums->skin['template'] = str_replace( "<% NAVIGATION %>"     , $nav                     , $ibforums->skin['template']);

/// insert this
               //
               //  Include tag hack
               //
               $incmatches=array();
               while (preg_match("\x3C\% INCLUDE \"(\S*?)\" \%\x3E",$ibforums->skin['template'],$incmatches)>0)
               {
                   $include_temp_str="";
                   ob_start('include_hack_handler');
                   include($incmatches[1]);
                   ob_end_flush();
                   $ibforums->skin['template'] = str_replace("<".$incmatches[0].">",$include_temp_str,$ibforums->skin['template']);
                   $incmatches=array();
               }
///

Now you can use this directive in board wrapper:

<% INCLUDE "http://www.yourdomain.com/test.html" %>

You can include any valid PHP or HTML file this way.

Ссылка на комментарий
Поделиться на других сайтах

  • 5 недель спустя...

Этот IBF Logger? Почему не подойдет? Должен.

Там же чистый пхп.

Единственное, что может не работать так это хак include.

Но логи можно смотреть и без него.

 

Так вот. А вопрос мой всё тот же. Я поставил себе

"CPU Saving --> Cut off for active user display in minutes -->784"

 

То есть 784 минуты. Но он гад всё равно не больше часа показывает.

Где это изменить, никто не подскажет?

Надо, чтобы показывал без ограничений

(сколько указал, столько и показывает).

 

Подозреваю, что где-то в Online.php

Но я там всё облазил ничего похожего нет.

Кто знает? Подскажите, пожалуйста, если не трудно...

Ссылка на комментарий
Поделиться на других сайтах

Насколько я понимаю, это в functions.php, там где DELETE FROM ibf_sessions WHERE running_time бла-бла-бла. Сессии вроде один час хранятся, а "Кто в онлайн" берёт данные именно из ibf_sessions.
Ссылка на комментарий
Поделиться на других сайтах

Да. Нашёл. Спасибо.

А что означает цифра 3600 там?

INFO['session_expiration'] = $INFO['session_expiration'] ? (time() - $INFO['session_expiration']) : (time() - 3600);
       
       $DB->query( "DELETE FROM ibf_sessions WHERE running_time < {$INFO['session_expiration']} or ip_address='".$this->ip_address."'".$extra);
       

И на что её поменять, чтобы было 1 неделя, скажем...

На 3600000? Или там какие-то правила написания этих цифр есть?

Ссылка на комментарий
Поделиться на других сайтах

Спасибо. Вот только там, в functions.php есть два отрезка,

где упоминается ibf-sessions. В двух и менять?

 //---------------------------------
           // Remove the defunct sessions
           //---------------------------------
           
           $INFO['session_expiration'] = $INFO['session_expiration'] ? (time() - $INFO['session_expiration']) : (time() - 3600);
           
           $DB->query( "DELETE FROM ibf_sessions WHERE running_time < {$INFO['session_expiration']} or member_id='".$this->member['id']."'");
           
           $this->session_id  = md5( uniqid(microtime()) );
           

И второй:

  // Remove the defunct sessions
       //---------------------------------
       
       if ( ($this->session_dead_id != 0) and ( ! empty($this->session_dead_id) ) )
       {
           $extra = " or id='".$this->session_dead_id."'";
       }
       else
       {
           $extra = "";
       }
       
       $INFO['session_expiration'] = $INFO['session_expiration'] ? (time() - $INFO['session_expiration']) : (time() - 3600);
       
       $DB->query( "DELETE FROM ibf_sessions WHERE running_time < {$INFO['session_expiration']} or ip_address='".$this->ip_address."'".$extra);
       
       $this->session_id  = md5( uniqid(microtime()) );
       

И вот подозрительный код какой-то:

         // Insert the new session
           //---------------------------------
           
           $DB->query("INSERT INTO ibf_sessions (id, member_name, member_id, ip_address, browser, running_time, location, login_type, member_group) ".
                      "VALUES ('".$this->session_id."', '".$this->member['name']."', '".$this->member['id']."', '".$this->ip_address."', '".$this->user_agent."', '".$this->time_now."', ".
                      "',,', '".$ibforums->input['Privacy']."', ".$this->member['mgroup'].")");
                      
           // If this is a member, update their last visit times, etc.
           
           if (time() - $this->member['last_activity'] > 300)

он случайно мешать не будет? Своими обновлениями?

 

Добавлено:

Поменял в обоих. Не работает. Прямо жаль. В базе ничего менять не надо?

Ссылка на комментарий
Поделиться на других сайтах

  • 1 год спустя...

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.