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

[RC] Уведомление об изменении подписей

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

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

Внимание! Не устанавливайте бета-версии расширений на работающие форумы!
Аватара пользователя
Sumanai
phpBB 3.0.0 RC5
Сообщения: 1668
Стаж: 9 лет 4 месяца
Благодарил (а): 267 раз
Поблагодарили: 216 раз
Контактная информация:

[RC] Уведомление об изменении подписей

Сообщение Sumanai »

Уведомление об изменении подписей

Версия расширения: 1.0.0 (скачать с Bitbucket, скачать с GitHub)

Локализация: Русская, English.

Требования: phpBB 3.1.x

Описание:
Уведомляет выбранных пользователей об изменении подписей пользователей.
Выбрать пользователей, получающих уведомление, можно в админке, в настройках подписей.
Уведомление идут в уведомления, возможно включение email в настройках уведомлений в личном разделе.

Спонсор разработки- romeo_piter.

Установка:
  1. Скачайте текущий репозиторий по ссылке ниже
  2. Распакуйте текущий релиз, дайте каталогу имя NotifyChangeSig.
  3. Пройдите в директорию ext вашего форума, создайте новую директорию с именем Sumanai (если его не существует).
  4. Копируйте каталог NotifyChangeSig в phpBB/ext/Sumanai/ (если всё сделано правильно, вы должны иметь файл с описанием расширения в (корень форума)/ext/Sumanai/NotifyChangeSig/composer.json).
  5. Пройдите в Админку, в Персонализация -> Управление расширениями.
  6. Найдите NotifyChangeSig в списке отключенных расширений, и нажмите на Включить
  7. Важный шаг! В админке на вкладке "Система" в "Управлении модулями- Личный раздел" выбрать "Профиль", и там на шестерёнке в "Подпись". После чего в строке "Выбор модуля" выбрать модуль Профиль [\Sumanai\NotifyChangeSig\ucp\user_signature_module]
Bitbucket репозиторий: https://bitbucket.org/Sumanai/notifychangesig
GitHub репозиторий: https://github.com/Sumanai/NotifyChangeSig
romeo_piter
phpBB 2.0.21
Сообщения: 1301
Стаж: 14 лет 11 месяцев
Благодарил (а): 245 раз
Поблагодарили: 31 раз

Re: [RC] Уведомление об изменении подписей

Сообщение romeo_piter »

Рекомендую. Отличное расширение. У меня стоит и прекрасно работает :D

Очевидные варианты применения:
1. Недопущение спама и скрытой рекламы в подписях
2. Недопущение гадостей со стороны пользователей-старичков, например, вышедших из бана.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 1 месяц
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2752 раза
Контактная информация:

Re: [RC] Уведомление об изменении подписей

Сообщение Sheer »

Sumanai писал(а): имя NotifyChangeSig
Ой! Хочу предостеречь от использования в дальнейшем имен с использованием символов в верхнем регистре.
Sumanai писал(а): Важный шаг!
Второй ой! А что, в миграторе нельзя было сразу модуль создать?
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
Sumanai
phpBB 3.0.0 RC5
Сообщения: 1668
Стаж: 9 лет 4 месяца
Благодарил (а): 267 раз
Поблагодарили: 216 раз
Контактная информация:

Re: [RC] Уведомление об изменении подписей

Сообщение Sumanai »

Sheer писал(а): Ой! Хочу предостеречь от использования в дальнейшем имен с использованием символов в верхнем регистре.
Нормально всё с ними. У меня и вендор с большой, и в прошлом моём расширении тоже большие, пока никто не жаловался.
Главное- быть последовательным.
Sheer писал(а): Второй ой! А что, в миграторе нельзя было сразу модуль создать?
Создать можно, заменить нельзя. Можно удалить/создать, но тогда он сползёт вниз, а как его поднять- ХЗ.
Впрочем, в идеале там нужно затребовать событие и не извращаться с заменой, но нужно было здесь и сейчас, а не к выходу 3.1.10 или там 3.2.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 1 месяц
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2752 раза
Контактная информация:

Re: [RC] Уведомление об изменении подписей

Сообщение Sheer »

Матка боска ченстоховска!!! А зачем родной стандартный модуль менять?!? Нет слов...
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
Sumanai
phpBB 3.0.0 RC5
Сообщения: 1668
Стаж: 9 лет 4 месяца
Благодарил (а): 267 раз
Поблагодарили: 216 раз
Контактная информация:

Re: [RC] Уведомление об изменении подписей

Сообщение Sumanai »

Sheer писал(а): А зачем родной стандартный модуль менять?!?
Sumanai писал(а): Впрочем, в идеале там нужно затребовать событие
Это я намекаю на то, что в стандартном событий нет. Вообще нет. А замена работает прекрасно, даже лучше оригинала.
Но я не против использовать событие, когда оно там появится. Вы же мне поможете?

Отправлено спустя 1 минуту :
И если у вас есть предложения, как сделать лучше иначе, я весь внимание.
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 9 лет 11 месяцев
Благодарил (а): 41 раз
Поблагодарили: 932 раза

Re: [RC] Уведомление об изменении подписей

Сообщение LavIgor »

Sumanai писал(а): И если у вас есть предложения, как сделать лучше иначе, я весь внимание.
SQL-запрос?
Аватара пользователя
Sumanai
phpBB 3.0.0 RC5
Сообщения: 1668
Стаж: 9 лет 4 месяца
Благодарил (а): 267 раз
Поблагодарили: 216 раз
Контактная информация:

Re: [RC] Уведомление об изменении подписей

Сообщение Sumanai »

Откуда и куда? Подробнее, пожалуйста, я не понимаю вашего хода мыслей,
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 9 лет 11 месяцев
Благодарил (а): 41 раз
Поблагодарили: 932 раза

Re: [RC] Уведомление об изменении подписей

Сообщение LavIgor »

Sumanai, с телефона мне проверить это будет затруднительно (завтра вечером уже смогу, если будет нужно).
Посмотрите запросы, которые мы с Русланом делали в миграциях Advanced Warnings.
Думаю, по аналогии уже имеющиеся модули можно менять на свои, но нужно быть аккуратным (при отключении расширения обычный модуль нужно возвращать).

Поэтому такой подход, возможно, стоит применять в ext.php, поскольку в миграциях случай отключения без удаления данных не обрабатывается.

Хотя по логике все сортировочные данные опять-таки можно достать через запрос и использовать для добавления модуля вручную.

Не комильфо, но иногда ручной метод помогает. Всё же лучше, чем направлять пользователей в редактор модулей.
Аватара пользователя
Sumanai
phpBB 3.0.0 RC5
Сообщения: 1668
Стаж: 9 лет 4 месяца
Благодарил (а): 267 раз
Поблагодарили: 216 раз
Контактная информация:

Re: [RC] Уведомление об изменении подписей

Сообщение Sumanai »

LavIgor писал(а): Посмотрите запросы, которые мы с Русланом делали в миграциях Advanced Warnings.
Думаю, по аналогии уже имеющиеся модули можно менять на свои, но нужно быть аккуратным (при отключении расширения обычный модуль нужно возвращать).
А, так вы про модуль. Это да, я просто не сильно прорабатывал этот вопрос.
Окей, посмотрю, будет начать, с чего копать.
Я уж думал, у вас есть информация о внедрении без замены модуля своим.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 1 месяц
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2752 раза
Контактная информация:

Re: [RC] Уведомление об изменении подписей

Сообщение Sheer »

Как я понимаю, вся затея состоит в том, чтобы определить, менял пользователь подпись или нет. Вернее уведомить администратора о том, что пользователь изменил подпись.
В модуле includes\ucp\ucp_profile.php для этого события действительно нет, но если раскинуть мозгом по клавиатуре, то выясняется чудесным образом, что все гораздо проще и событие там не нужно, ибо существует событие в ucp.php

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

/**
* Use this event to enable and disable additional UCP modules
*
* @event core.ucp_display_module_before
* @var    p_master    module    Object holding all modules and their status
* @var    mixed        id        Active module category (can be the int or string)
* @var    string        mode    Active module
* @since 3.1.0-a1
*/
$vars = array('module', 'id', 'mode');
extract($phpbb_dispatcher->trigger_event('core.ucp_display_module_before', compact($vars))); 
откуда мы можем определить как сам модуль, так и метод его использования, а также получить данные, введенные пользователем.
Создадим в перехватчике класс

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

/**
* Event listener
*/
class listener implements EventSubscriberInterface
{
/**
* Assign functions defined in this class to event listeners in the core
*
* @return array
* @static
* @access public
*/
    static public function getSubscribedEvents()
    {
        return array(
            'core.ucp_display_module_before'        => 'display_module_before',
        );
    }

    protected $db;
    protected $request;
    protected $user;

    /**
    * Constructor
    */
    public function __construct(\phpbb\db\driver\driver_interface $db, \phpbb\request\request_interface $request, \phpbb\user $user)
    {
        $this->request = $request;
        $this->db = $db;
        $this->user = $user;
    }

    public function display_module_before($event)
    {
        $modul = $event['id'];
        $mode = $event['mode'];

        if ($modul == 'ucp_profile' && $mode == 'signature')
        {
            $submit = $this->request->variable('submit', false);
            if ($submit)
            {
                $sql = 'SELECT user_sig
                    FROM ' . USERS_TABLE . '
                    WHERE user_id = ' . $this->user->data['user_id'];
                $result = $this->db->sql_query($sql);
                $signature = (string) $this->db->sql_fetchfield('user_sig');
                $this->db->sql_freeresult($result);
                $sig = $this->request->variable('signature', $signature, true);
                if ($sig != $signature)
                {
                    // вызываем функцию отправки уведомления или запись в лог;
                }
            }
        }
    }
} 
Вот и все!



О сколько нам открытий чудных
Готовит просвещенья дух
И опыт, сын ошибок трудных,
... ну и так далее
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
Sumanai
phpBB 3.0.0 RC5
Сообщения: 1668
Стаж: 9 лет 4 месяца
Благодарил (а): 267 раз
Поблагодарили: 216 раз
Контактная информация:

Re: [RC] Уведомление об изменении подписей

Сообщение Sumanai »

Просто так сравнить подписи нельзя, в бд они распарсены с ббкодами, но затея ещё более здравая.
Так и сделаю.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 1 месяц
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2752 раза
Контактная информация:

Re: [RC] Уведомление об изменении подписей

Сообщение Sheer »

Sumanai писал(а): Просто так сравнить подписи нельзя
Я знаю, однако я не собирался тут городить полноценный перехватчик, просто указал общее направление действий. Более того, сравнивать действующую и вновь введенную подпись не обязательно, достаточно определить нажимал ли кнопку Отправить пользователь или нет, то есть редактировал ли он (пусть даже формально, не меняя ничего в действительности) подпись или нет. Так даже лучше, это упростит код и избавит от дополнительных SQL-запросов.

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

if ($submit)
{
   // вызываем функцию отправки уведомления или запись в лог;
}
Надеюсь ты доведешь расширение до ума, удалив подмену модуля.
ЗЫ. Гордая приставка RC появилась рановато, DEV и еще очень глубокий.
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
Sumanai
phpBB 3.0.0 RC5
Сообщения: 1668
Стаж: 9 лет 4 месяца
Благодарил (а): 267 раз
Поблагодарили: 216 раз
Контактная информация:

Re: [RC] Уведомление об изменении подписей

Сообщение Sumanai »

Sheer писал(а): достаточно определить нажимал ли кнопку Отправить пользователь или нет, то есть редактировал ли он
Так и есть.
Sheer писал(а): ЗЫ. Гордая приставка RC появилась рановато, DEV и ещё очень глубокий.
Модуль работает без ошибок, а что ещё от него нужно?
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 1 месяц
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2752 раза
Контактная информация:

Re: [RC] Уведомление об изменении подписей

Сообщение Sheer »

Sumanai писал(а): а что ещё от него нужно?
Чтобы он прошел хотя бы предварительную валидацию. RC - это кандидат релиз, прошедший валидацию и тестирование.
Насчет без ошибок. При отключении модуля, если администратор не вернет первоначальные настройки модуля СИСТЕМА-УПРАВЛЕНИЕ МОДУЛЯМИ-Личный раздел-Профиль-Подпись (а он может об этом не знать, поскольку в инструкции по установке об этом ничего не написано, или забыть, или не знать как его настроить), то модуль будет отсутствовать, и пользователь не сможет создать или отредактировать подпись.
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Ответить

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