Здравствуйте,
Существует колонка (Дней посещений), которую мы видим по ссылке:
https://LINK/admin/users/2/USERNAME
Будет здорово, если бы мы могли добавить эту колонку в CSV-файл со списком пользователей, который генерируется через:
Панель администратора => Вкладка Пользователи => Кнопка “Экспорт”
3 лайка
Это не то, на что вы надеялись услышать, но…
Файл экспорта пользователей содержит поля из таблицы User.
Поле days_visited берётся из таблицы User_Stats.
Хранить одни и те же данные несколько раз было бы «анти-нормализацией» (например, если бы это поле присутствовало в обеих таблицах). Насколько я помню, то, что вы видите, — это результат выполнения JOIN-запроса, который использует таблицу User, а также другие таблицы, связанные с пользователем.
Тем не менее, с помощью плагина Data Explorer у вас не должно возникнуть проблем с запуском такого JOIN-запроса, который генерирует файл экспорта с включённым этим полем.
3 лайка
Не совсем точно: в CSV-файле есть колонки likes_given и likes_received, которые также присутствуют в той же таблице user_stats:
--
-- Name: user_stats; Type: TABLE; Schema: public; Owner: discourse
--
CREATE TABLE public.user_stats (
user_id integer NOT NULL,
topics_entered integer DEFAULT 0 NOT NULL,
time_read integer DEFAULT 0 NOT NULL,
days_visited integer DEFAULT 0 NOT NULL,
posts_read_count integer DEFAULT 0 NOT NULL,
likes_given integer DEFAULT 0 NOT NULL,
likes_received integer DEFAULT 0 NOT NULL,
topic_reply_count integer DEFAULT 0 NOT NULL,
new_since timestamp without time zone NOT NULL,
read_faq timestamp without time zone,
first_post_created_at timestamp without time zone,
post_count integer DEFAULT 0 NOT NULL,
topic_count integer DEFAULT 0 NOT NULL,
bounce_score double precision DEFAULT 0 NOT NULL,
reset_bounce_score_after timestamp without time zone
);
Из schema.sql
3 лайка
Спасибо, вы правы. Похоже, здесь больше того, с чем я раньше работал.
3 лайка
Спасибо, что указали на связанный файл 
Поскольку topics_entered существует в функции get_base_user_array, как и другие столбцы… не кажется ли это ошибкой?
1 лайк
Существуют поля, которые меня интересовали, но отсутствовали в экспорте (на момент примерно 1–2 лет назад). Я предполагал, что это сделано намеренно, а не является ошибкой, но так и не стал углубляться. Возможность экспорта стала доступна только администраторам, и без реальных данных для работы сложность возросла, интерес угас, а несколько серьёзных жизненных обстоятельств окончательно похоронили это направление.
Не вникая в детали, можно предположить, что если ядро не было изменено, то плагин мог бы легко извлекать значения из таблиц и добавлять их в CSV-экспорт. Однако я считаю, что плагин Data Explorer — отличный кандидат для создания кастомного экспорта.
В настоящее время мой интерес в основном сместился с взлома файлов ядра, доступных только администраторам, к разработке индивидуальных пользовательских скриптов.
Возможно, при достаточном консенсусе текущий экспорт можно будет изменить?
3 лайка
Я написал необходимый для этого запрос:
SELECT
u.username_lower AS "username",
stats.days_visited
FROM users u
LEFT JOIN user_stats stats ON stats.user_id = u.id
ORDER BY u.id
Хотя такие данные действительно полезны в отчёте о списке пользователей для получения некоторых сведений.
Спасибо @Mittineague 
5 лайков