Уважаемые пользователи!
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 | Как задавать вопросы | Как устанавливать расширения

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

Re: Расширения - это просто!

Сообщение LavIgor »

moonrise, если в своём расширении для нового права доступа не задать отображение на странице настроек прав доступа, оно и не будет показано.
Примеры есть в других расширениях.

Я же предлагал поискать в БД: сначала в таблице phpbb_acl_options находите, какой же номер присвоен новому праву доступа.
И ищете этот номер в таблице phpbb_acl_groups для группы, которую хотите проверить.
Аватара пользователя
moonrise
phpBB 1.4.2
Сообщения: 57
Стаж: 5 лет 9 месяцев
Благодарил (а): 13 раз
Поблагодарили: 1 раз

Re: Расширения - это просто!

Сообщение moonrise »

LavIgor писал(а): 06.06.2018 16:31 если в своём расширении для нового права доступа не задать отображение на странице настроек прав доступа, оно и не будет показано.
Примеры есть в других расширениях.
так как раз там и не отображается.. хотя должно (в правах ролей). Пример брал в этом уроке. Там создаю 4 разрешения: смотреть/добавлять/править/удалять. админам и модерам присваиваю все 4.

У пользователя в настройках админки отображается "смотреть" (но криво обозвано из старой переменной, которую потом удалил), у админа и модера отображается править/добавлять/удалять...

вот и пытаюсь "починить".
LavIgor писал(а): 06.06.2018 16:31 Я же предлагал поискать в БД: сначала в таблице phpbb_acl_options находите, какой же номер присвоен новому праву доступа.
И ищете этот номер в таблице phpbb_acl_groups для группы, которую хотите проверить.
Вот.. то, что надо. сейчас гляну
Просто хороший человек
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 9 лет 11 месяцев
Благодарил (а): 41 раз
Поблагодарили: 932 раза

Re: Расширения - это просто!

Сообщение LavIgor »

moonrise писал(а): 06.06.2018 16:44 Там создаю 4 разрешения: смотреть/добавлять/править/удалять.
Чего-чего?
Там - это где?
Право доступа нужно отобразить на странице, пример: здесь.
moonrise писал(а): 06.06.2018 16:44 У пользователя в настройках админки отображается "смотреть"
К правам доступа это не имеет никакого отношения.
Аватара пользователя
moonrise
phpBB 1.4.2
Сообщения: 57
Стаж: 5 лет 9 месяцев
Благодарил (а): 13 раз
Поблагодарили: 1 раз

Re: Расширения - это просто!

Сообщение moonrise »

LavIgor писал(а): 06.06.2018 16:31 в таблице phpbb_acl_options находите, какой же номер присвоен новому праву доступа
поиском по view не находит такого права. по add/del/edit тоже.
При этом в самой админке эти право отображаются/ кривенько (на 1 пост выше писал), но отображаются.
test2.jpg
test1.jpg
Отправлено спустя 4 минуты 4 секунды:
LavIgor писал(а): 06.06.2018 16:47 Там - это где?
в migrations/version_0_0_*.php

Отправлено спустя 8 минут 15 секунд:
LavIgor писал(а): 06.06.2018 16:47 Право доступа нужно отобразить на странице, пример: здесь.
не понимаю... листенер же выполняется каждый раз. это перехватчик.. Каждый раз при отображении предлагается добавлять права???? :shock:
В этом уроке права добавляются в блоке migrations. Идеологически оно правильнее, мне кажется.
Просто хороший человек
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 9 лет 11 месяцев
Благодарил (а): 41 раз
Поблагодарили: 932 раза

Re: Расширения - это просто!

Сообщение LavIgor »

moonrise писал(а): 06.06.2018 17:05 Каждый раз при отображении предлагается добавлять права????
Каждый раз при отображении прав доступа, да.
Чтобы право отобразилось, нужно добавить функцию для отображения, да.
И это не отменяет добавление права доступа в миграции.

Судя по скриншотам, права у Вас добавились и назначились корректно.

Отправлено спустя 2 минуты 18 секунд:
moonrise писал(а): 06.06.2018 17:05 поиском по view не находит такого права. по add/del/edit тоже.
А как Вы ищете?
Аватара пользователя
moonrise
phpBB 1.4.2
Сообщения: 57
Стаж: 5 лет 9 месяцев
Благодарил (а): 13 раз
Поблагодарили: 1 раз

Re: Расширения - это просто!

Сообщение moonrise »

LavIgor писал(а): 06.06.2018 17:24 Судя по скриншотам, права у Вас добавились и назначились корректно.
только 3 из 4-х (add/edit/dell).
view почему-то не добавилось. Ни пользователю, ни админу с модератором. Вместо нее добавилась промежуточная штука с кривым названием, которое пока не получается удалить :(
LavIgor писал(а): 06.06.2018 17:24 А как Вы ищете?
phpMyAdmin - phpbb_acl_options - фильтровать строки - "view" (add/dell/edit) (без кавычек). Занятно.. пока не выгрузил базу и не нашел в ней текстом, phpMyAdmin не показывал эти поля. теперь хоть могу ковыряться в них

после добавления описания в листенере.. ничего не изменилось.

Отправлено спустя 32 минуты 33 секунды:
все-таки не отрабатывает описание и присвоение в миграторе. понимаю, что теперь могу в БД руками исправить, но хочу понять почему.
вот какой сейчас вид мигратора.
flatslist_0_0_3.php 

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

<?php
/**
*
* @package phpBB Extension - Flats list
* @copyright (c) 2013 phpBB Group
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
*
*/

namespace krab24\flatslist\migrations;

class flatslist_0_0_3 extends \phpbb\db\migration\migration
{
	public function effectively_installed()
	{
        return isset($this->config['flatslist_version']) && version_compare($this->config['flatslist_version'], '0.0.3', '>=');
	}

	static public function depends_on()
	{
        return array('\krab24\flatslist\migrations\flatslist_0_0_2');
	}

	public function update_data()
	{
		return array(
			// Update configs
			array('config.update', array('flatslist_version', '0.0.3')),
            // Add permissions
            array('permission.add', array('u_viewflatslistpage', true)), //View
            array('permission.add', array('u_editflatslistpage', true)), //Edit
            array('permission.add', array('u_dellflatslistpage', true)), //Dellete
            array('permission.add', array('u_addflatslistpage', true)),  //Add
             // Add permissions sets
			// group's permission	
            array('permission.permission_set', array('REGISTERED', 'u_viewflatslistpage', 'group', true)), 
            array('permission.permission_set', array('GLOBAL_MODERATORS', 'u_viewflatslistpage', 'group', true)),
            array('permission.permission_set', array('GLOBAL_MODERATORS', 'u_editflatslistpage', 'group', true)),
            array('permission.permission_set', array('GLOBAL_MODERATORS', 'u_dellflatslistpage', 'group', true)),
            array('permission.permission_set', array('GLOBAL_MODERATORS', 'u_addflatslistpage', 'group', true)),
            array('permission.permission_set', array('ADMINISTRATORS', 'u_viewflatslistpage', 'group', true)),
            array('permission.permission_set', array('ADMINISTRATORS', 'u_editflatslistpage', 'group', true)),
            array('permission.permission_set', array('ADMINISTRATORS', 'u_dellflatslistpage', 'group', true)),
            array('permission.permission_set', array('ADMINISTRATORS', 'u_addflatslistpage', 'group', true)),
			// role's permission
//			array('permission.permission_set', array('GUESTS', 'u_editflatslistpage', 'role', false)),
			array('permission.permission_set', array('ROLE_USER_STANDARD', 'u_viewflatslistpage', 'role', true)),
			array('permission.permission_set', array('ROLE_MOD_FULL', 'u_viewflatslistpage', 'role', true)),
			array('permission.permission_set', array('ROLE_MOD_FULL', 'u_editflatslistpage', 'role', true)),
			array('permission.permission_set', array('ROLE_MOD_FULL', 'u_dellflatslistpage', 'role', true)),
			array('permission.permission_set', array('ROLE_MOD_FULL', 'u_addflatslistpage', 'role', true)),
			array('permission.permission_set', array('ROLE_ADMIN_STANDARD', 'u_viewflatslistpage', 'role', true)),
			array('permission.permission_set', array('ROLE_ADMIN_STANDARD', 'u_editflatslistpage', 'role', true)),
			array('permission.permission_set', array('ROLE_ADMIN_STANDARD', 'u_dellflatslistpage', 'role', true)),
			array('permission.permission_set', array('ROLE_ADMIN_STANDARD', 'u_addflatslistpage', 'role', true)),
		);
	}
  public function revert_schema()
    {
        return array(
             // Dellete permissions sets
			// group's permission	
            array('permission.permission_unset', array('REGISTERED', 'u_viewflatslistpage')),
			array('permission.permission_unset', array('GLOBAL_MODERATORS', 'u_viewflatslistpage')),
			array('permission.permission_unset', array('GLOBAL_MODERATORS', 'u_editflatslistpage')),
			array('permission.permission_unset', array('GLOBAL_MODERATORS', 'u_dellflatslistpage')),
			array('permission.permission_unset', array('GLOBAL_MODERATORS', 'u_addflatslistpage')),
			array('permission.permission_unset', array('ADMINISTRATORS', 'u_viewflatslistpage')),
			array('permission.permission_unset', array('ADMINISTRATORS', 'u_editflatslistpage')),
			array('permission.permission_unset', array('ADMINISTRATORS', 'u_dellflatslistpage')),
			array('permission.permission_unset', array('ADMINISTRATORS', 'u_addflatslistpage')),			
			// roles's permission
//			array('permission.permission_unset', array('GUESTS', 'u_editflatslistpage')),
			array('permission.permission_unset', array('ROLE_USER_STANDARD', 'u_viewflatslistpage')),
			array('permission.permission_unset', array('ROLE_MOD_FULL', 'u_viewflatslistpage')),
			array('permission.permission_unset', array('ROLE_MOD_FULL', 'u_editflatslistpage')),
			array('permission.permission_unset', array('ROLE_MOD_FULL', 'u_dellflatslistpage')),
			array('permission.permission_unset', array('ROLE_MOD_FULL', 'u_addflatslistpage')),
			array('permission.permission_unset', array('ROLE_ADMIN_STANDARD', 'u_viewflatslistpage')),
			array('permission.permission_unset', array('ROLE_ADMIN_STANDARD', 'u_editflatslistpage')),
			array('permission.permission_unset', array('ROLE_ADMIN_STANDARD', 'u_dellflatslistpage')),
			array('permission.permission_unset', array('ROLE_ADMIN_STANDARD', 'u_addflatslistpage')),
            // Dellete permissions
			array('permission.remove', array('u_viewflatslistpage')),
			array('permission.remove', array('u_editflatslistpage')),
			array('permission.remove', array('u_dellflatslistpage')),
			array('permission.remove', array('u_addflatslistpage')),
       );
    }	
}
присвоение\удаление не отрабатывает :(

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

Re: Расширения - это просто!

Сообщение LavIgor »

moonrise писал(а): 07.06.2018 11:20 удаление не отрабатывает
Удаление и не будет отрабатывать, вы же сделали его через revert_schema, а не revert_data.
К тому же phpBB достаточно умён, чтобы откатывать эти изменения автоматически.
Аватара пользователя
moonrise
phpBB 1.4.2
Сообщения: 57
Стаж: 5 лет 9 месяцев
Благодарил (а): 13 раз
Поблагодарили: 1 раз

Re: Расширения - это просто!

Сообщение moonrise »

поясните пожалуйста. особенно про автоматически.. как я понимаю, когда отключается приложение - должна выполняться процедура revert_schema. А при удалении - revert_data

Но это в любом случае не объясняет почему не отрабатывает добавление.
В какой-то из веток писали, что на 3.2.2. есть какие-то "новшества" с мигратором и он как-то не так работает. Пошагово, что ли... У ряда авторов с этим были проблемы. Может и тут из-за этого-же?
Есть какие-то рекомендации, как решить?
Просто хороший человек
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16313
Стаж: 17 лет 10 месяцев
Откуда: Красноярск
Благодарил (а): 533 раза
Поблагодарили: 2119 раз
Контактная информация:

Re: Расширения - это просто!

Сообщение rxu »

moonrise писал(а): 08.06.2018 10:51 как я понимаю, когда отключается приложение - должна выполняться процедура revert_schema. А при удалении - revert_data
Нет. При отключении миграции не отрабатываются. Только при удалении данных.
Изображение
Аватара пользователя
moonrise
phpBB 1.4.2
Сообщения: 57
Стаж: 5 лет 9 месяцев
Благодарил (а): 13 раз
Поблагодарили: 1 раз

Re: Расширения - это просто!

Сообщение moonrise »

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

Re: Расширения - это просто!

Сообщение LavIgor »

moonrise, во-первых, укажите, что именно делали. Невозможно помочь только по словам "не работает".

Во-вторых,
moonrise писал(а): 08.06.2018 10:51 как я понимаю, когда отключается приложение - должна выполняться процедура revert_schema. А при удалении - revert_data
Неправильно понимаете.
Схема - это структура данных. После удаления таблиц нет никакого смысла удалять данные в них, они уже перестанут существовать.
moonrise писал(а): 08.06.2018 10:51 поясните пожалуйста. особенно про автоматически..
Команды, за исключением if и custom, phpBB способен откатывать автоматически.
moonrise писал(а): 08.06.2018 10:51 почему не отрабатывает добавление.
Если миграция уже установлена, никакие изменения в соответствующем файле применяться не будут, если только она не будет удалена, что происходит при удалении данных расширения.

При отключении расширения код в миграциях не применяется, данные не добавляются и не удаляются, аналогия - если видео поставить на паузу, загруженные минуты продолжения не сотрутся.
Однако при дальнейшем включении новые данные могут быть добавлены, если появились новые миграции (дозагружены новые минуты видео).
Аватара пользователя
moonrise
phpBB 1.4.2
Сообщения: 57
Стаж: 5 лет 9 месяцев
Благодарил (а): 13 раз
Поблагодарили: 1 раз

Re: Расширения - это просто!

Сообщение moonrise »

LavIgor писал(а): 09.06.2018 9:28 Если миграция уже установлена, никакие изменения в соответствующем файле применяться не будут
да.. что-то я тупанул :oops:
В некоторых расширенияъ видел, что помимо файлика с version*_*_* присутствуют другие (к примеру add_permission). Правильно ли я понимаю, что выполняются все файлики в этой папке и их нигде не надо "объявлять" (просто в version обычно проверку на версию делают) ?
Просто хороший человек
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 9 лет 11 месяцев
Благодарил (а): 41 раз
Поблагодарили: 932 раза

Re: Расширения - это просто!

Сообщение LavIgor »

moonrise, все файлы миграций в папке миграций будут считаться таковыми до тех пор, пока они являются наследниками базового класса миграций.
Названия и действия, производимые ими, могут быть произвольными.
Аватара пользователя
moonrise
phpBB 1.4.2
Сообщения: 57
Стаж: 5 лет 9 месяцев
Благодарил (а): 13 раз
Поблагодарили: 1 раз

Re: Расширения - это просто!

Сообщение moonrise »

LavIgor писал(а): 09.06.2018 10:17 все файлы миграций в папке миграций будут считаться таковыми до тех пор, пока они являются наследниками базового класса миграций.
то есть там может быть любой свой класс в котором должно быть extends \phpbb\db\migration\migration ? других ограничений нет?
Просто хороший человек
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 9 лет 11 месяцев
Благодарил (а): 41 раз
Поблагодарили: 932 раза

Re: Расширения - это просто!

Сообщение LavIgor »

moonrise, не обязательно именно migration, есть ещё container_aware_migration, например, но в общем - да.
Название может быть любым, допустимым в PHP.
И оно должно совпадать с названием файла.
Ответить

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