Who's downloaded attachment - Кто скачал файл?

Мод позволяет видеть списки скачавших тот или ной файл, а также статистику скачиваний по месяцам

Здесь вы можете скачать и получить поддержку по модам, созданным командой нашего сайта. Пожалуйста, не пишите и не задавайте вопросов, связанных с чужими разработками, используйте для этого форум ниже.
Shredder
Администратор
Сообщения: 1067
Зарегистрирован: 22.08.13 09:05
Благодарил (а): 132 раза
Поблагодарили: 264 раза
Контактная информация:

Who's downloaded attachment - Кто скачал файл?

Сообщение Shredder »

Изначально этот мод не мой, я нашёл его где-то на просторах иностранного интернета. Как часто водится в среде phpBB, разработка мода давно была заброшена, а сайт автора накрылся. Поскольку я дорабатывал мод под свои нужды и добавил туда кое-какие функции, то считаю своим долгом выложить его в публичный доступ. В моде были произведены следующие доработки:
  • Была добавлена запись IP-адресов пользователей, скачавших файл, а также информация whois для всех IP.
  • Вырезана запись о картинках-вложениях. Запись скачиваний картинок не имеет смысла, поскольку "скачиванием" картинки в phpBB считается ситуация, когда пользователь просто посетил страницу, где эта картинка находится - неважно, просмотрел он саму картинку или нет. Таким образом, записи о картинках только создают лишнюю нагрузку на базу данных, и более - ничего, никакой ценной информации они не несут.
  • Добавлена запись гостей, скачавших файл. Они будут отображаться в списке под именем "Гость". Изначально в моде не велись записи для гостей, да и смысла это почти не имело, но так как в списки скачавших мною был добавлен IP, то будет интересно посмотреть, с каких IP-адресов был скачан файл. Для гостей будет показано количество скачиваний с каждого IP, а для зарегистрированных - с каждой учётной записи.
  • В информацию о скачиваниях для каждого файла добавлен рефёрер. Это позволит видеть, с каких сайтов скачивали ваш файл, если на него где-то была размещена прямая ссылка.
Ники скачавших группируются по IP для гостей и по нику для зарегистрированных участников, а сортируются - по дате скачивания в порядке убывания. Другими словами, наверху списка всегда будут самые новые скачивания.

После установки мода вам нужно установить глобальное право доступа "Может видеть, кто скачивал файл" на вкладке "Разное", чтобы разрешить пользователю или группе видеть списки скачавших тот или иной файл.
who's_downloaded_attachment_2_0_0.zip
(43.11 КБ) 1225 скачиваний
who's_downloaded_attachment_2_0_0.zip
(43.11 КБ) 1225 скачиваний
Мои моды и расширения для phpBB
Выполняю работы по phpBB3 на заказ. Пишите в личку или на почту.
Бесплатная поддержка - только в темах.
Shredder
Администратор
Сообщения: 1067
Зарегистрирован: 22.08.13 09:05
Благодарил (а): 132 раза
Поблагодарили: 264 раза
Контактная информация:

Who's downloaded attachment - Кто скачал файл?

Сообщение Shredder »

Оказалось, что тип varchar не подходит для поля user_referer, т.к. бывают значения, превышающие максимальную длину в 255 символов и вызывающие ошибки. Кто уже установил мод, зайдите в phpmyadmin, найдите там таблицу phpbb_attachviews и смените тип поля c varchar на text. Или выполните SQL-запрос:

Код: Выделить всё

ALTER TABLE phpbb_attachviews MODIFY user_referer TEXT COLLATE utf8_bin NOT NULL
Вместо phpbb_ подставьте свой префикс таблиц БД, если он отличается у вас.
Мои моды и расширения для phpBB
Выполняю работы по phpBB3 на заказ. Пишите в личку или на почту.
Бесплатная поддержка - только в темах.
Xisp
Сообщения: 196
Зарегистрирован: 05.04.14 18:00
Благодарил (а): 15 раз
Поблагодарили: 30 раз

Who's downloaded attachment - Кто скачал файл?

Сообщение Xisp »

Shredder писал(а):т.к. бывают значения, превышающие максимальную длину в 255 символов
Ничто не мешает повысить это ограничение до любого разумного числа.
Shredder
Администратор
Сообщения: 1067
Зарегистрирован: 22.08.13 09:05
Благодарил (а): 132 раза
Поблагодарили: 264 раза
Контактная информация:

Who's downloaded attachment - Кто скачал файл?

Сообщение Shredder »

Xisp
Это понятно, но, согласно справке, в MySQL ниже 5.0.3 максимальная длина поля типа varchar составляет 255. Поэтому многие поля оригинального phpBB тоже используют text.

Добавлено спустя 2 дня 4 часа 7 минут 3 секунды:
При проверке на форуме с большим числом записей в таблице скачиваний оказалось, что сложный SQL-запрос вешает сервер. Переписал его для нормальной работы. Для обновления достаточно заменить файл download/attachview.php из архива.
Мои моды и расширения для phpBB
Выполняю работы по phpBB3 на заказ. Пишите в личку или на почту.
Бесплатная поддержка - только в темах.
Xisp
Сообщения: 196
Зарегистрирован: 05.04.14 18:00
Благодарил (а): 15 раз
Поблагодарили: 30 раз

Who's downloaded attachment - Кто скачал файл?

Сообщение Xisp »

Shredder писал(а): в MySQL ниже 5.0.3
Таким старьём из прошлого века (почти) лучше не пользоваться. Уже 5.6 давно актуальная.
Midway
Сообщения: 4
Зарегистрирован: 15.01.15 16:10

Who's downloaded attachment - Кто скачал файл?

Сообщение Midway »

Hello I come from France and I have a small problem, when I click for see who having download the archive
I have this error.

Erreur générale
SQL ERROR [ mysql4 ]

Unknown column 'user_ip' in 'field list' [1054]

SQL

INSERT INTO phpbb_attachviews (attach_id, date, user_id, user_ip, user_referer) VALUES (996, 1421350912, 2, '85.104.219.000', 'http://mods-services.fr/viewtopic.php?f=23&t=1543')

BACKTRACE

FILE: (not given by php)
LINE: (not given by php)
CALL: msg_handler()

FILE: [ROOT]/includes/db/dbal.php
LINE: 757
CALL: trigger_error()

FILE: [ROOT]/includes/db/mysql.php
LINE: 193
CALL: dbal->sql_error()

FILE: [ROOT]/download/file.php
LINE: 280
CALL: dbal_mysql->sql_query()
in my acp in the permissions I have this one u_can_dl_wiew and not the translation

Код: Выделить всё

// Admin Permissions
	'acl_u_can_dl_wiew'	=> array('lang' => 'Can view a downloads list', 'cat' => 'misc'),
Shredder
Администратор
Сообщения: 1067
Зарегистрирован: 22.08.13 09:05
Благодарил (а): 132 раза
Поблагодарили: 264 раза
Контактная информация:

Who's downloaded attachment - Кто скачал файл?

Сообщение Shredder »

Midway
Do you have version 2.0? Try following SQL (enter it in myadmin or STK):

Код: Выделить всё

ALTER TABLE `phpbb_attachviews` ADD `user_ip` VARCHAR( 40 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL AFTER `user_id` ;
Мои моды и расширения для phpBB
Выполняю работы по phpBB3 на заказ. Пишите в личку или на почту.
Бесплатная поддержка - только в темах.
Midway
Сообщения: 4
Зарегистрирован: 15.01.15 16:10

Who's downloaded attachment - Кто скачал файл?

Сообщение Midway »

Thank you for your reply, yes I have your 2.0.0 and tomorrow I try doing the query using stk
Midway
Сообщения: 4
Зарегистрирован: 15.01.15 16:10

Who's downloaded attachment - Кто скачал файл?

Сообщение Midway »

Hello

Now all is ok thank you ;)
PAW
Сообщения: 8
Зарегистрирован: 21.03.15 01:14
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Who's downloaded attachment - Кто скачал файл?

Сообщение PAW »

Здравствуйте. После установки мода на 3.0.13-PL1 и скачивания разных файлов, на странице статистики вложения выводится следующее:
"Пользователей, скачавших этот файл: 0
Этот файл пока что никто не скачивал"
С чем это может быть связано?
Shredder
Администратор
Сообщения: 1067
Зарегистрирован: 22.08.13 09:05
Благодарил (а): 132 раза
Поблагодарили: 264 раза
Контактная информация:

Who's downloaded attachment - Кто скачал файл?

Сообщение Shredder »

С неправильной установкой.
Мои моды и расширения для phpBB
Выполняю работы по phpBB3 на заказ. Пишите в личку или на почту.
Бесплатная поддержка - только в темах.
PAW
Сообщения: 8
Зарегистрирован: 21.03.15 01:14
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Who's downloaded attachment - Кто скачал файл?

Сообщение PAW »

SQL запросы я сделал после закачки новых и изменённых файлов на сервер. В этом моя ошибка?
Xisp
Сообщения: 196
Зарегистрирован: 05.04.14 18:00
Благодарил (а): 15 раз
Поблагодарили: 30 раз

Who's downloaded attachment - Кто скачал файл?

Сообщение Xisp »

Нет. Перепроверьте правки, очистите кеш.
Shredder
Администратор
Сообщения: 1067
Зарегистрирован: 22.08.13 09:05
Благодарил (а): 132 раза
Поблагодарили: 264 раза
Контактная информация:

Who's downloaded attachment - Кто скачал файл?

Сообщение Shredder »

PAW писал(а):SQL запросы я сделал после
Это никак не должно влиять.
Возможно, конфликт с другими модами. У меня на 3.0.13-PL1 всё работает, как положено.
Мои моды и расширения для phpBB
Выполняю работы по phpBB3 на заказ. Пишите в личку или на почту.
Бесплатная поддержка - только в темах.
PAW
Сообщения: 8
Зарегистрирован: 21.03.15 01:14
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Who's downloaded attachment - Кто скачал файл?

Сообщение PAW »

Все правки проверил, кэш везде очистил. Изменений не последовало. Модов на форуме установлено предостаточно, всех уже и не вспомнишь.
Может конфликт: Attachments in subfolders [Вложения в подпапках] или highslide
Ещё есть нюанс в выводе самой ссылки "Кто скачивал файл", если вставлять четко по инструкции в файле styles/.../template/attachment.html:
Find
Tip: This may be a partial find and not the whole line.

CODE:SELECT ALL
<dd>({_file.FILESIZE} {_file.SIZE_LANG}) {_file.L_DOWNLOAD_COUNT}
In-line Find
Tip: This is a partial match of a line for in-line operations.

CODE:SELECT ALL
{_file.L_DOWNLOAD_COUNT}
In-line Add after

CODE:SELECT ALL
<!-- IF _file.S_CAN_DOWNLOAD_VIEW --><br /><a href="{_file.U_DOWNLOAD_VIEW}">{L_DOWNLOAD_VIEW}</a><!-- ENDIF -->
то ссылка под вложением не появляется (права назначены). Вставляю в другое место файла: ссылка появляется, но результат: "Пользователей, скачавших этот файл: 0 Этот файл пока что никто не скачивал".
Отрывок кода в файле attachment.html , при котором ссылка ("кто скачивал файл") появляется под каждым вложением.
<!-- IF _file.S_IMAGE -->
<a href="{_file.U_DOWNLOAD_LINK}"<!-- IF not S_IS_BOT --> class="highslide" onclick="return hs.expand(this)" style="float:right; margin: 0 0 10px 15px" title="<!-- IF _file.COMMENT -->{_file.COMMENT}<!-- ELSE -->{_file.DOWNLOAD_NAME}<!-- ENDIF -->"<!-- ENDIF -->><img src="{_file.U_INLINE_LINK}" alt="{_file.DOWNLOAD_NAME}" title="<!-- IF _file.COMMENT -->{_file.COMMENT}<!-- ELSE -->{_file.DOWNLOAD_NAME}<!-- ENDIF -->" /></a> 
<!-- ENDIF -->
<!-- IF _file.S_CAN_DOWNLOAD_VIEW --><a href="{_file.U_DOWNLOAD_VIEW}">{L_DOWNLOAD_VIEW}</a><!-- ENDIF -->
Ответить