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

Вернуть количество пользователей


Smirnov.R

Вопрос

(поиск пользовал)

Итак, реальное количество пользователей на форуме, к примеру, 100 000

В своё время были вычищены мёртвые души и в статистике значится 90 000

Как вернуть отображаемую статистику, чтобы она соответствовала реальному количеству 100 000?

 

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

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

  • 0

пересчетом статистики? в админке вроде было, в разделе кешей (либо просто обновить кеш статистики, либо пересчитать утилитой, не помню как точно)

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

  • 0

В разделе Настройки есть Пересчет и обновление: http://c2n.me/7fpSQF.png Только БД забекапьте перед этим, а то вдруг результат не понравится.

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

  • 0

Всё это не спасает

Люди удалены..

 

Вопрос поставим иначе..

Можно ли подправить скрипт, чтобы "Зарегистрировано пользователей:" показывалось не количество пользователей,
а ID последнего зарегистрированного.

Второй вариант -там же в скрипте тупо суммировать нужное число типа "N+10000".

И если так можно, то где именно всё это находится?

 

Или что-то ещё предложите?

Изменено пользователем Smirnov.R
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Можно ли подправить скрипт, чтобы "Зарегистрировано пользователей:" показывалось не количество пользователей,

а ID последнего зарегистрированного.

 

Можно, но зачем?

 

ТС желает получить не корректное число пользователей, а наоборот, неправильную старую, не понимаю, зачем нужно идти на такой обман юзеров

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

  • 0

Сама функция пересчета находится в файле sources/action_admin/rebuild.php. Найдите там строку: 

if ($this->ipsclass->input['members'])

И все что внутри этого условного оператора и есть процедура обработки опции "Пересчитать пользователей?". Если вам нужно просто прибавить произвольное число в статистике количества пользователей, то можно вставить такую строку (посредине): 
 

$r = $this->ipsclass->DB->fetch_row(); 
$r['members'] += 10000;
$stats['mem_count'] = intval($r['members']);
Ссылка на комментарий
Поделиться на других сайтах

  • 0

@MrLite, сколько ж мы этот вопрос брались решить и НАКОНЕЦ-ТО теперь всё чётко

Просто-таки напросто-таки мега-глобальные и обширнейшие благодарности)

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

  • 0

я бы предложил менее варварский способ - селектить наибольший ид из таблицы мемберов и его без подсчетов пихать в статистику

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

  • 0

Действительно, описанный мной способ не очень удачный: мы меняем параметр, который кладется в кеш, причем его значение могут менять и другие функции. Менее инвазивно было бы корректировать эту цифру при выводе. В 3.х я бы корректировку сделал в шаблоне, как грамотнее сделать в 2.3.6 лучше спросить у @Arhar.

 

Я нашел такой способ: сама строка статистики - языковая переменная total_word_string, которая определяется в файлах /cache/lang_cache/ru/lang_boards.php или /cache/lang_cache/en/lang_boards.php в зависимости от локализации. Вот определение для русской версии:

'total_word_string'         =>  "На форуме сообщений: <b><#posts#></b><br />Зарегистрировано пользователей: <b><#reg#></b><br />Приветствуем последнего зарегистрированного по имени <b><a href='<#link#>'><#mem#></a></b>",

в файле /sources/lib/func_boardstats.php эта переменная разбирается и вместо меток вставляются значения переменных. Нас интересует строка:

$this->ipsclass->lang['total_word_string'] = str_replace( "<#reg#>"   , $stats['mem_count']     , $this->ipsclass->lang['total_word_string'] );

Здесь заменяется значением $stats['mem_count']. Вот тут и вносим нужные изменения: 

$this->ipsclass->lang['total_word_string'] = str_replace( "<#reg#>"   , $stats['mem_count']+10000     , $this->ipsclass->lang['total_word_string'] );
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Здесь <#reg#> заменяется значением $stats['mem_count']. Вот тут и вносим нужные изменения

Зачем же тут?

$stats содержит результаты запроса к БД. Нужно менять сам запрос, чтобы вместо

COINT(id) AS mem_count

стало

MAX(id) AS mem_count
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Ну да, парой строк выше строк из моего первого примера найдется такая: 

$this->ipsclass->DB->simple_construct( array( 'select' => 'count(id) as members', 'from' => 'members', 'where' => "mgroup <> '".$this->ipsclass->vars['auth_group']."'" ) );

Вот в этом SQL запросе и меняем count(id) на max(id).

 

Стоит учесть, что значение в $stats['mem_count']  зачем-то кладется в нескольких местах, я вот нашел в:

/sources/action_admin/member_tools.php

/sources/action_admin/rebuild.php

/sources/tasks/rebuildstats.php

 

Так что если менять именно эту переменную, то во всех местах, иначе какой-нибудь планировщик, например, будет возвращать реальную статистику.

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

  • 0

Подкрутили по выше-указанным принципам

 

Пока работает, вроде)

Наблюдаем больше суток

Изменено пользователем Smirnov.R
Ссылка на комментарий
Поделиться на других сайтах

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

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

Гость
Ответить на вопрос...

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

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

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

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

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

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

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

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