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

Остановка счётчика постов определённой группе


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

остановите землю я сойду ©

 

нужно тормознуть счетчик постов группе или модераторов или админов, а то в рейтинге выпирают :D или просто зафиксировать на определенной цифре.

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

Dekker

Попробуй через макросы уменьшить размер pip.gif, то есть пропиши ему видс и хэйт ... Помогает, знаете ли ...

ЗЫ Оска :D

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

Остап

Попробуй через макросы уменьшить размер pip.gif, то есть пропиши ему видс и хэйт ... Помогает, знаете ли ...
Сообщений: 184

я вот это имел в виду, а не пипсы :D

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

Остап

есть рейтинг по пользователям, кто больше всего нафлудил, так вот в этом списке зачастую занимает место модератор или админ (работа такая - флудить), периодически срезаю кол-во постов (в том числе и у себя), вот, что бы не резать постоянно кол-во постов, нужно зафиксировать счетчик постов на одной цифире, скажем 1000 определенной группе.

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

1.

ALTER TABLE `ibf_groups` ADD `g_counter` TINYINT( 1 ) DEFAULT '0' NOT NULL

 

2. Файл sorces/Admin/ad_groups.php

 

Найти :

$db_string = array(
       'g_view_board'         => $IN['g_view_board'],

 

Добавить ПОСЛЕ :

 

'g_counter'           =>  $IN['g_counter'],

 

Найти :

$ADMIN->html .= $SKIN->add_td_row( array( "<b>Скрыть эту группу из списка участников?</b>" ,
             $SKIN->form_yes_no("g_hide_from_list", $group['g_hide_from_list'] )
             )      );

Добавить ПОСЛЕ :

///// OSTAP
 $ADMIN->html .= $SKIN->add_td_row( array( "<b>Остановить счётчик сообщений группы?</b>" ,
             $SKIN->form_yes_no("g_counter", $group['g_counter'] )
             )      );
 ///// OSTAP

 

3. Файлы

post_new_post.php

post_poll.php

post_q_reply_post.php

post_reply_post.php

 

Найти :

if ($class->forum['inc_postcount'])
	 {
   // Increment the users post count
   
   $pcount = "posts=posts+1, ";
   
	 }

ЗАМЕНИТЬ на :

if ($class->forum['inc_postcount'] AND !$ibforums->member['g_counter'] )
	 {
   // Increment the users post count
   
   $pcount = "posts=posts+1, ";
   
	 }

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

Остап раз ты ссылаешься на $ibforums->member['g_counter'] тогда ты должен в этот самый $ibforums->member поле g_counter прочитать. Делается это в functions.php

У тебя условие никогда не будет выполняться т.к. $ibforums->member['g_counter'] будет всегда "".

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

Song

я не буду спорить, тк эта часть - слабое звено и я просил Оску глянуть, прав ли я ... Но с другой стороны, я просто так не пишу - у меня почему то всё работает, я это себе сначала приделал ... :D

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

Parse error: parse error in /usr/clients/board/www/sources/lib/post_reply_post.php on line 283

Fatal error: Cannot instantiate non-existent class: post_functions in /usr/lalala/www/sources/Post.php on line 277

 

при ответе в тему.

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

вот что содержиться в строках Post.php где возникает ошибка

// Require and run our associated library file for this action.
        // this imports an extended class for this Post class.
        
        require "./sources/lib/post_" . $this->obj['action_codes'][ $ibforums->input['CODE'] ][1] . ".php";
        
        $post_functions = new post_functions(&$this);

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

у меня почему то всё работает

Потому как неправильное условие.

Надо:

 

if ($class->forum['inc_postcount'] AND $ibforums->member['g_counter'] )

если для форума включён счётчик И счётчик включён для пользователя

 

а у тебя наоборот (!)

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

Song

Во- первых, не может НАОБОРОТ и работать. Во вторых двумя постами ранее ты сказал, что всё не правильно и оно ВОЩЕ не будет работать. Определись

Добавлено в [mergetime]1086376707[/mergetime]

В третьих, вопрос я ставил, а не ты и у меня 0 в таблице означает что счётчик НЕ выключен. а 1, соответственно, что выключен

Добавлено в [mergetime]1086376806[/mergetime]

"<b>Остановить счётчик сообщений группы?</b>"
TINYINT( 1 ) DEFAULT '0'
Ссылка на комментарий
Поделиться на других сайтах

а т.е. g_counter = 1 счётчик выключен?

Ну сам по суди как оно может работать если ты в $ibforums->member это поле не прочитал? Или думаешь, что он будет читать все поля сколько бы ты их туда не напихал и не сказав ему при этом? :D

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

Ну ладно-ладно. Работает и хорошо.

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

а т.е. g_counter = 1 счётчик выключен?

Именно

Добавлено в [mergetime]1086377447[/mergetime]

Ну сам по суди как оно может работать если ты в $ibforums->member это поле не прочитал? Или думаешь, что он будет читать все поля сколько бы ты их туда не напихал и не сказав ему при этом?

Я повторяю, факт налице - работает. Пусть Vanish нас рассудит :D

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

устроили тут ромашка, помню, не помню ©

 

давайте оперировать фактами, т.е. своими форумами на работоспоспособность той или иной модификации, а не парсить PHP по ходу действия в голове.

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

е знаю, мне самому интересно. Я повторяю, факт налице - работает. А вот ПОЧЕМУ, я сам не знаю.

Сейчас объясню почему.

$ibforums->member['g_counter'] - не существует. Т.е. вместо этой проперти будет подставляться пустое место.

Далее смотрим проверку:

if ($class->forum['inc_postcount'] AND !$ibforums->member['g_counter'] )

 

Пустое место в числовом выражении - это 0.

!0 = 1

Поэтому наша проверка проходит так:

if ( 1 and 1) { ... }

Вот и всё. А ты попробуй включить остановку счётчика. Вот увидишь, что он дальше у тебя будет считать.

Добавлено в [mergetime]1086421229[/mergetime]

А может ты ставил чтение это поля, но просто не привёл в описании модификации?

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

Song

if ($class->forum['inc_postcount'] AND !$ibforums->member['g_counter'] )

 

Пустое место в числовом выражении - это 0.

!0 = 1

ё-моё, ты мне логику то не объясняй :D Я прекрасно понимаю, что ты имеешь ввиду. НО Я ПОВТОРЯЮ ЧТО ОТКЛЮЧЕНИЕ СЧЁТЧИКА РАБОТАЕТ, блин Если я говорю, проверял, значит проверял все варианты. Если в таблице 'g_counter' = 1 то у группы НЕ СЧИТАЮСТСЯ сообщения, ни при ответах, ни при создании тем и голосований, ёклмн ...

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

Song

Короче, $ibforums глобальная переменная, читается и ВБИРАЕТ В СЕБЯ значения из таблицы в ДРУГОМ МЕСТЕ, а в файлы

post_new_post.php

post_poll.php

post_q_reply_post.php

post_reply_post.php

Предаётся ЗАПОЛНЕННОЙ.

 

ЗЫ Спорщик

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

читаем запрос

SELECT moderator.mid as is_mod, moderator.allow_warn, m.id, m.name, m.mgroup, m.password, m.email, m.restrict_post, m.view_sigs, m.view_avs, m.view_pop, m.view_img, m.auto_track,m.mod_posts, m.language, m.skin, m.new_msg, m.show_popup, m.msg_total, m.time_offset, m.posts, m.joined, m.last_post,m.last_visit, m.last_activity, m.dst_in_use, m.view_prefs, m.org_perm_id, m.temp_ban, m.sub_end, m.forums_read, m.board_read, m.mark_after, g.*
FROM ibf_members m
LEFT JOIN ibf_groups g ON (g.g_id=m.mgroup)
LEFT JOIN ibf_moderators moderator ON (moderator.member_id=m.id OR moderator.group_id=m.mgroup )
WHERE m.id=$member_id

ключ g_counter массива member будет всегда иметь значение установленное для группы в которой находится пользователь.

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

Сонг,

function load_member($member_id=0)
   {
   	global $DB, $std, $ibforums;

   	$member_id = intval($member_id);

    	if ($member_id != 0)
       {

           $DB->query("SELECT moderator.mid as is_mod, moderator.allow_warn, m.id, m.name, m.mgroup, m.password, m.email, m.restrict_post, m.view_sigs, m.view_avs, m.view_pop, m.view_img, m.auto_track,
                             m.mod_posts, m.language, m.skin, m.new_msg, m.show_popup, m.msg_total, m.time_offset, m.posts, m.joined, m.last_post,
           				  m.last_visit, m.last_activity, m.dst_in_use, m.view_prefs, m.org_perm_id, m.temp_ban, g.*
           				  FROM ibf_members m
           				    LEFT JOIN ibf_groups g ON (g.g_id=m.mgroup)
           				    LEFT JOIN ibf_moderators moderator ON (moderator.member_id=m.id OR moderator.group_id=m.mgroup )
           				  WHERE m.id=$member_id");

           if ( $DB->get_num_rows() )
           {
           	$this->member = $DB->fetch_row();
           }

А $this->member в свою очередь и есть $ibforums->member который глобально передаётся по классам

Добавлено в [mergetime]1086436857[/mergetime]

Dekker

кто нибудь заставит работать это под 1.1.1 ? моих скромных способностей для этого не хватает.

К сожалению, я не знаю, где в 1.1.1 апдэйтится счётчик сообщений ...

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

Гость
Эта тема закрыта для публикации сообщений.
×
×
  • Создать...

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

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