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

Счётчик сообщений пользователя


theIggs

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

winnie

В том то и загвоздка, что я создал поле inc_postcount. При попытке создать его снова, он пишет, что-то про то, что данное поле дублирует существующее. А как созданное исправить, мне кажется, там есть ошибка?

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

у вас есть пхп_май_админ?

идите туда и сделайте запрос

SHOW CREATE TABLE SQL_PREFIX_topics

где SQL_PREFIX как раз ваш так называемый пароль :D.. то что выдаст- сюда запстите

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

winnie

 

Не работает у меня он..Сделал все как ты писал ..даже перепроврил нефига не хочет он работать :D

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

Все разобрался...

 

 

PS: Администарция удалите плиз это сообщение

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

  • 2 недели спустя...
Хм, если допустим в теме есть сообщения, и я удаляю её, то у пользователей счётчик неуменьшается... Делал всё в точности так как написано... 3 раза переделывал...
Ссылка на комментарий
Поделиться на других сайтах

  • 4 недели спустя...

А вот еще один вариант от меня :D. В этот раз асинхронный. Действует следующим образом - при удалении счетчики не обновляются, а только собирается инфа о том, у кого они изменились. А затем, в установленное время, рекомендуется раз в день, спец задание пересчитывает счетчики по указанным пользователям. Собственно вот что нужно добавить:

modunctions.php

FIND:

        function post_delete($id)
        {
                global $std, $ibforums, $DB;

                $posts      = array();
                $attach_tid = array();
                $topics     = array();

ADD BELOW:

                $author_id  = array();

FIND:

                //---------------------------------------
                // Get Stuff
                //---------------------------------------

                $DB->simple_construct( array( 'select' => 'pid, topic_id', 'from' => 'posts', 'where' => 'pid'.$pid ) );
                $DB->simple_exec();

                while ( $r = $DB->fetch_row() )
                {
                        $posts[ $r['pid'] ]       = $r['topic_id'];
                        $topics[ $r['topic_id'] ] = 1;
                }

REPLACE:

                //---------------------------------------
                // Get Stuff
                //---------------------------------------

                $DB->simple_construct( array( 'select' => 'author_id, pid, topic_id', 'from' => 'posts', 'where' => 'pid'.$pid ) );
                $DB->simple_exec();

                while ( $r = $DB->fetch_row() )
                {
                        $posts[ $r['pid'] ]       = $r['topic_id'];
                        $topics[ $r['topic_id'] ] = 1;
                        $author_id[$r['author_id']] = 1;
                }

                //-----------------------------------------
                // Recount posts for this members
                //-----------------------------------------

                $DB->simple_construct( array( 'select' => '*', 'from' => 'cache_store', 'where' => "cs_key = 'rebuildpostcount' " ) );
                $DB->simple_exec();

                while ( $r = $DB->fetch_row() )
                {
                        if ( $r['cs_array'] )
                        {
                            $ibforums->cache[ $r['cs_key'] ] = unserialize(stripslashes($r['cs_value']));
                        }
                        else
                        {
                            $ibforums->cache[ $r['cs_key'] ] = $r['cs_value'];
                        }
                }

                foreach ( $author_id as $k => $v )
                {
                        $ibforums->cache['rebuildpostcount'][ $k ] = $v;
                }

                $std->update_cache( array( 'name' => 'rebuildpostcount', 'array' => 1, 'deletefirst' => 1 ) );


FIND:

        function topic_delete($id, $nostats=0)
        {
                global $std, $ibforums, $DB;

                $posts  = array();
                $attach = array();

ADD BELOW:

                $author_id  = array();

FIND:

                $DB->simple_construct( array( 'select' => 'pid', 'from' => 'posts', 'where' => "topic_id".$tid ) );
                $DB->simple_exec();

                while ( $r = $DB->fetch_row() )
                {
                        $posts[] = $r['pid'];
                }

                //-----------------------------------------
                // Remove the attachments
                //-----------------------------------------

                if ( count( $posts ) )
                {


REPLACE:

                $DB->simple_construct( array( 'select' => 'pid, author_id', 'from' => 'posts', 'where' => "topic_id".$tid ) );
                $DB->simple_exec();

                while ( $r = $DB->fetch_row() )
                {
                        $posts[] = $r['pid'];
                        $author_id[$r['author_id']] = 1;
                }

                //-----------------------------------------
                // Remove the attachments
                //-----------------------------------------

                if ( count( $posts ) )
                {
                        //-----------------------------------------
                        // Recount posts for this members
                        //-----------------------------------------

                        $DB->simple_construct( array( 'select' => '*', 'from' => 'cache_store', 'where' => "cs_key = 'rebuildpostcount' " ) );
                        $DB->simple_exec();

                        while ( $r = $DB->fetch_row() )
                        {
                            if ( $r['cs_array'] )
                            {
                                 $ibforums->cache[ $r['cs_key'] ] = unserialize(stripslashes($r['cs_value']));
                            }
                            else
                            {
                                 $ibforums->cache[ $r['cs_key'] ] = $r['cs_value'];
                            }
                        }

                        foreach ( $author_id as $k => $v )
                        {
                                     $ibforums->cache['rebuildpostcount'][ $k ] = $v;
                        }

                        $std->update_cache( array( 'name' => 'rebuildpostcount', 'array' => 1, 'deletefirst' => 1 ) );

                        //-----------------------------------------
                        // The rest
                        //-----------------------------------------

И еще нужно добавить задание из аттача на исполнение раз в день.

rebuildpcount.zip

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

  • 2 недели спустя...
Я прочитал всю тему, честное слово, но не нашел ответа на свой вопрос: можно ли в 1.3 зафиксировать счетчик посто для конкретного юзера?
Ссылка на комментарий
Поделиться на других сайтах

  • 3 недели спустя...

Снял счётчик с одного из форумов.

А как теперь сделать так, чтобы в профиле пользователя, в "наибольшая активность в" не учитывался тот самый форум?

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

Повторюсь:

можно ли в 1.3 зафиксировать счетчик для конкретного юзера?

 

Это возможно сделать стандартными средствами? Или нужен какой-нидь мод?

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

Я тут новенький, не видел.

 

Можно конечно в функциях руками прописать но это ИМХО не правильно.

Полноценный хак нужен.

 

А вобще зачем тебе это?

Сбрось счетчик через админку.

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

  • 1 месяц спустя...
обидно,но увы не работает 

спасибо за ответ

всё работат, просто там опечатка есть одна вроде как! я ей убрал и всё заработало1

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

d1pro

Насколько мод может загрузить сервер с форумом ну скажем в 50000 постов и около 3000 юзеров? Если честно - стремно запускать в таскменеджере задачу, которая может повалить форум.

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

seba

Не сильно. По личному опыту говорю (42000 постов, 600 юзеров) :D. Да, он не скажу, что легкий, но во-первых он операции проводит не над всей базой, а только над неким сегментом, а во-вторых запуск раз в сутки, так что это не так страшно...

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

d1pro

Вроде бы работает, и вроде бы нормально работает. Вопрос: насколько этот мод оптимальнее чем мод от Dean, который есть на invizionise?

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

seba

Вот он боюсь положит всю базу :D. Ну или на больших форумах тормоза будут на время выполнения. Ведь в админке нагрузка снимается редиректами, а у Дина этого нет. А если юзеров очень много и времени на пересчет > 30 сек выйдет, скрипт отвалится...

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

×
×
  • Создать...

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

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