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

Создание уведомлений в расширениях

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

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

Re: Создание уведомлений в расширениях

Сообщение Sheer »

rxu писал(а):Идентификатор не может повторяться
Он и не повторяется - дублируется уникальный ключ type для поля notification_type_name
rxu писал(а):установил ThanksForPosts, появились 2 типа уведомлений от него
Сразу после установки? В таблице или в списке в личке?
Попробовал повторить на локалке. Очистил таблицу, запустил скрипт отсылающий уведомление - в таблице появилась одна запись. Запустил другой скрипт, отсылающий уведомление второго типа - появилась вторя запись. Зашел в личку - в списке типы уведомлений
  • Уведомления о сообщениях
  • В теме, помещённой в закладки, появились новые сообщения
  • В теме, на которую вы подписаны, появились новые сообщения
  • Вас процитировали в сообщении
  • В форуме, на который вы подписаны, появились новые темы
    Уведомления о модерации
  • Сообщение или тема требуют одобрения
  • Жалобы на сообщения
  • Ожидает регистрации позывного
    Прочие уведомления
    Вам отправлено личное сообщение
  • Позывной был зарегистрирован
  • Позывной был отклонен

, при этом в таблице только два. Нажал кнопку "Отправить"

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

Duplicate entry 'sheer.callsign.notification.type.approve' for key 'type' [1062]

SQL

INSERT INTO phpbb_notification_types (notification_type_name, notification_type_enabled) VALUES ('sheer.callsign.notification.type.approve', 1)

BACKTRACE

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

FILE: [ROOT]/phpbb/db/driver/driver.php
LINE: 855
CALL: trigger_error()

FILE: [ROOT]/phpbb/db/driver/mysql.php
LINE: 181
CALL: phpbb\db\driver\driver->sql_error()

FILE: [ROOT]/phpbb/db/driver/factory.php
LINE: 329
CALL: phpbb\db\driver\mysql->sql_query()

FILE: [ROOT]/phpbb/notification/manager.php
LINE: 928
CALL: phpbb\db\driver\factory->sql_query()

FILE: [ROOT]/phpbb/notification/type/base.php
LINE: 133
CALL: phpbb\notification\manager->get_notification_type_id()

FILE: [ROOT]/phpbb/notification/manager.php
LINE: 884
CALL: phpbb\notification\type\base->set_notification_manager()

FILE: [ROOT]/phpbb/notification/manager.php
LINE: 860
CALL: phpbb\notification\manager->load_object()

FILE: [ROOT]/phpbb/notification/manager.php
LINE: 536
CALL: phpbb\notification\manager->get_item_type_class()

FILE: [ROOT]/phpbb/notification/manager.php
LINE: 630
CALL: phpbb\notification\manager->get_subscription_types()

FILE: [ROOT]/includes/ucp/ucp_notifications.php
LINE: 43
CALL: phpbb\notification\manager->get_global_subscriptions()

FILE: [ROOT]/includes/functions_module.php
LINE: 674
CALL: ucp_notifications->main()

FILE: [ROOT]/ucp.php
LINE: 353
CALL: p_master->load_active()
Очистил таблицу. Зашел в личку - Изменить настройки уведомлений - нажал отправить. В таблице ни одной записи. Скопировал таблицу из другой базы. Запустил скрипт, отправляющий уведомление. Не пришло. В таблице notifications записи появились, то есть уведомление было отправлено, а в таблице типов записи от типе этого уведомления нет! Снес расширение, установил заново, запустил скрипт - в таблице типов появилась новая запись о новом типе уведомлений. Зашел в личку - все на месте, нажал "Отправить" - без ошибок.

Положа руку на сердце, я не понимаю, зачем разработчики все так усложнили с этими уведомлениями - почему нельзя было заполнить таблицу во время установки? Почему для расширений не сделать было добавление типов аналогично добавлению значений конфигурации, ну или хотя бы кастомной функцией добавления типов? Зачем это комлание? Какой потаённый смысл во всем этом?
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16313
Стаж: 17 лет 10 месяцев
Откуда: Красноярск
Благодарил (а): 533 раза
Поблагодарили: 2119 раз
Контактная информация:

Re: Создание уведомлений в расширениях

Сообщение rxu »

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

Re: Создание уведомлений в расширениях

Сообщение Sheer »

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

Re: Создание уведомлений в расширениях

Сообщение rxu »

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

Re: Создание уведомлений в расширениях

Сообщение Sheer »

Да нет, проблема в том, что типы уведомлений создаются динамически. Посмотрел на одном форуме их 18 (отсутствует notification.type.admin_activate_user), на другом 19. При этом ни на одном, ни на другом никаких расширений нет вообще.
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16313
Стаж: 17 лет 10 месяцев
Откуда: Красноярск
Благодарил (а): 533 раза
Поблагодарили: 2119 раз
Контактная информация:

Re: Создание уведомлений в расширениях

Сообщение rxu »

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

Re: Создание уведомлений в расширениях

Сообщение Sheer »

rxu, допилю экст - скину тебе, посмотришь.
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
carik
phpBB 1.4.4
Сообщения: 124
Стаж: 10 лет 4 месяца
Благодарил (а): 27 раз
Контактная информация:

Re: Создание уведомлений в расширениях

Сообщение carik »

Доброго. Кто то подскажет как убрать лишние уведомления? чтоб они не работали и у пользователя в настройках не появлялись.
Спасибо.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16313
Стаж: 17 лет 10 месяцев
Откуда: Красноярск
Благодарил (а): 533 раза
Поблагодарили: 2119 раз
Контактная информация:

Re: Создание уведомлений в расширениях

Сообщение rxu »

Попробуйте стереть их из папки phpbb/notification/type и очистить кэш (возможно придется вручную).
Изображение
carik
phpBB 1.4.4
Сообщения: 124
Стаж: 10 лет 4 месяца
Благодарил (а): 27 раз
Контактная информация:

Re: Создание уведомлений в расширениях

Сообщение carik »

rxu, тогда появляется ошибка в личке когда входишь в настройки что уведомлять.

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

[phpBB Debug] PHP Warning: in file [ROOT]/phpbb/class_loader.php on line 160: require(./phpbb/notification/type/approve_post.php) [function.require]: failed to open stream: No such file or directory
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16313
Стаж: 17 лет 10 месяцев
Откуда: Красноярск
Благодарил (а): 533 раза
Поблагодарили: 2119 раз
Контактная информация:

Re: Создание уведомлений в расширениях

Сообщение rxu »

Видимо, предварительно надо их сначала отключить у всех пользователей в личном разделе.
Изображение
carik
phpBB 1.4.4
Сообщения: 124
Стаж: 10 лет 4 месяца
Благодарил (а): 27 раз
Контактная информация:

Re: Создание уведомлений в расширениях

Сообщение carik »

rxu, отключил только у себя, захожу в настройки после удаления, ошибка прежняя.
странная функция, не настраиваемая и многое в ней только сбивает с толку. глобальных настроек нет это плохо.
Аватара пользователя
Алг
Former team member
Сообщения: 933
Стаж: 11 лет 7 месяцев
Откуда: Израиль
Благодарил (а): 85 раз
Поблагодарили: 305 раз
Контактная информация:

Re: Создание уведомлений в расширениях

Сообщение Алг »

Есть расширение, которое создает свой тип уведомлений. Инсталлируется и нормально работает. Теперь это расширение я отключаю с полным удалением данных. У юзера остались уведомления данного данного типа. При попытке войти в форум дебаг ругается
Fatal error: Uncaught exception 'Symfony\Component\DependencyInjection\Exception\InvalidArgumentException' with message 'The service definition "alg.adminnotifications.notification.type.fromadmin" does not exist.' in I:\home\chugunok-endels.net\www\dream-trim\vendor\symfony\dependency-injection\Symfony\Component\DependencyInjection\ContainerBuilder.php:871 Stack trace: #0 I:\home\chugunok-endels.net\www\dream-trim\vendor\symfony\dependency-injection\Symfony\Component\DependencyInjection\ContainerBuilder.php(478): Symfony\Component\DependencyInjection\ContainerBuilder->getDefinition('alg.adminnotifi...') #1 I:\home\chugunok-endels.net\www\dream-trim\phpbb\notification\manager.php(905): Symfony\Component\DependencyInjection\ContainerBuilder->get('alg.adminnotifi...') #2 I:\home\chugunok-endels.net\www\dream-trim\phpbb\notification\manager.php(885): phpbb\notification\manager->load_object('alg.adminnotifi...') #3 I:\home\chugunok-endels.net\www\dream-trim\phpbb\notification\manager.php(228): phpbb\notification\manager->get_i in I:\home\chugunok-endels.net\www\dream-trim\vendor\symfony\dependency-injection\Symfony\Component\DependencyInjection\ContainerBuilder.php on line 871
что-то не учла я или система уведомлений? может при полной разинсталляции нжно удалять все увеломления данного типа из таблицы?
Там упёртость и инертность, могут, кстати, в морду дать.
А ты проявляй интеллигентность, постарайся убеждать...

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

Re: Создание уведомлений в расширениях

Сообщение Sheer »

Надо смотреть расширение. Я делал с уведомлениями - на ошибку не налетал, спасибки тоже не глючат при отключении.
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16313
Стаж: 17 лет 10 месяцев
Откуда: Красноярск
Благодарил (а): 533 раза
Поблагодарили: 2119 раз
Контактная информация:

Re: Создание уведомлений в расширениях

Сообщение rxu »

Алг писал(а): может при полной разинсталляции нжно удалять все увеломления данного типа из таблицы?
Само собой. А при отключении экста - отключать. См. спасибки или оф. расширения, например https://github.com/phpbb-extensions/boa ... er/ext.php
Изображение
Ответить

Вернуться в «Для разработчиков»