Перейти к контенту
  • 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
Ссылка на комментарий
Поделиться на других сайтах

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

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

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

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

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

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

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

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

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

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

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