Уважаемые пользователи!
Напоминаем, что с 7 ноября 2020 года phpBB Group прекратила выпуск обновлений для phpBB версии 3.2.
С учетом этого, рекомендуется обновить конференции до версии 3.3.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до отдельного объявления.

[3.2][3.3] Нумерация гостей

Здесь авторы могут постить бета-версии своих расширений для phpBB. Внимание! Не устанавливайте бета-версии расширений на работающие форумы!
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.2.x | FAQ | Внимание! Прежде чем создать тему - прочти! | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).

Внимание! Не устанавливайте бета-версии расширений на работающие форумы!
Аватара пользователя
Джим
phpBB 1.4.4
Сообщения: 179
Стаж: 12 лет 7 месяцев
Благодарил (а): 125 раз
Поблагодарили: 41 раз

[3.2][3.3] Нумерация гостей

Сообщение Джим »

Всем привет! Тоже решил попробовать сделать расширение. Не судите строго, первый опыт. :dontknow
Если на форуме открыта возможность создавать сообщения без регистрации, то зачастую возникает ситуация, когда "гость" общается с "гостем" (гостевые никнеймы не все указывают).
В таких диалогах читателю сложно понять кто с кем беседует и что говорит.
Я решил добавлять к "гостю" некий трёхзначный номер. Он у меня берется из IP-адреса - со второй по четвёртую цифру. Ведь начало IP-адреса у одного провайдера меняется редко, а значит гостям надолго привяжутся их номера.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 15 лет 3 месяца
Откуда: Калининград не Кенигсберг
Благодарил (а): 41 раз
Поблагодарили: 1706 раз

Re: [3.2][3.3] Нумерация гостей

Сообщение Sheer »

Зачем

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

		global $phpbb_container;
?
$phpbb_container нигде в коде не используется.
Зачем

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

		$this->ext_root_path = 'ext/afrorus/guestnumbers';
$this->ext_root_path нигде в коде не используется.
Зачем

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

			$data = $event['data'];
Массив $data нигде в коде не используется.
В общем по идее так:

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

<?php
/**
 * 
 * Guest numbers
 * 
 * @copyright (c) 2020 Jim ( 3admina.ru )
 * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
 * @author Jim (3admina)
 */

namespace afrorus\guestnumbers\event;

use Symfony\Component\EventDispatcher\EventSubscriberInterface;

/**
 * Event listener
 */
class listener implements EventSubscriberInterface
{

	/** @var \phpbb\user */
	protected $user;

	/**
	 * Constructor of event listener
	 *
	 * @param \phpbb\user							$user			User object
	 */
	public function __construct(\phpbb\user $user)
	{
		$this->user = $user;
	}

	/**
	 * Assign functions defined in this class to event listeners in the core
	 */
	static public function getSubscribedEvents()
	{
		return array(
			'core.modify_submit_post_data'		=> 'change_username_when_sending',
		);
	}

	public function change_username_when_sending($event)
	{

		if (!$event['username'])
		{
			$event['username'] = $this->user->lang['GUEST'] . '_' . substr(str_replace('.', '', $this->user->ip), 1, 3);
		}
	}
}


Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 4963
Стаж: 17 лет 4 месяца
Откуда: Питер
Благодарил (а): 153 раза
Поблагодарили: 658 раз

Re: [3.2][3.3] Нумерация гостей

Сообщение Siava »

Джим, а если IP автора начинается не на цифру? Например на 2a05:3580?
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x, 3.1.x 3.5.x)
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 15714
Стаж: 16 лет
Откуда: Красноярск
Благодарил (а): 431 раз
Поблагодарили: 1500 раз

Re: [3.2][3.3] Нумерация гостей

Сообщение rxu »

А также вместо $this->user->lang['GUEST'] лучше использовать объект language и функцию lang(), т.е.

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

$this->language->lang('GUEST')
Изображение
Аватара пользователя
Джим
phpBB 1.4.4
Сообщения: 179
Стаж: 12 лет 7 месяцев
Благодарил (а): 125 раз
Поблагодарили: 41 раз

Re: [3.2][3.3] Нумерация гостей

Сообщение Джим »

Siava писал(а): 26.07.2020 3:18 Например на 2a05:3580?
Тогда будет "Гость_a05" :-)

Большое спасибо за замечания! :hat Вроде как всё учёл. К сожалению, первый пост уже недоступен для редактирования, поэтому прикреплю к этому посту версию 0.0.2
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Джим
phpBB 1.4.4
Сообщения: 179
Стаж: 12 лет 7 месяцев
Благодарил (а): 125 раз
Поблагодарили: 41 раз

Re: [3.2][3.3] Нумерация гостей

Сообщение Джим »

Сделал версию 0.0.3, когда не цифры прибавляются, а берётся слово из словаря (файл guests.txt в папке с расширением, его можно свой сделать, главное про кодировку UTF не забывать).
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Вернуться в «Бета-версии расширений для phpBB»