Инструменты миграции phpBB 3.1 / Ascraeus

В данном подфоруме будут располагаться все статьи, помогающие освоиться в администрировании форума phpBB 3.1 / Ascraeus.

Модераторы: Vl@d1m1r, Lorem Ipsum, Atlas

Ответить
Аватара пользователя
DeaDRoMeO
Старожил Форума
Старожил Форума
Сообщения: 16763
Стаж: 13 лет 4 месяца
Откуда: Витебск
Контактная информация:

Инструменты миграции phpBB 3.1 / Ascraeus

Сообщение DeaDRoMeO »

Всем доброго времени суток, сегодня мы поговорим более подробно о инструментах миграции. :-00):
Инструменты могут быть использованы для создания модулей в Администраторском разделе (Модераторском и Пользовательском (настройки)), для заполнения первоначальными данными созданных полей и таблиц, для создания прав доступа. Поехали...
  • Инструменты для создания модулей в Администраторском разделе (Модераторском и Пользовательском (настройки))
    Инструменты предназначены для создания\обновления\удаления модулей в Администраторском разделе (Модераторском и Пользовательском (настройки))
    • Добавление модуля
      Запрос

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

      array('module.add', array( mixed $class [, mixed $parent [, array $data [, mixed $include_path ]]] ))
      Параметры запроса
      Параметр
      Обязательное\Значения по умолчанию
      Значения и применение
      class
      Обязательное
      Тип модуля: acp(администраторский раздел), mcp(модераторский раздел), ucp(пользовательский раздел)
      parent
      По умолчанию 0
      Родительский module_id или module_langname (языковая переменная родительского модуля) (0 если нет родителя)
      data
      По умолчанию array()
      Массив данных о новом модуле. Может быть прописан двумя различными способами. (см. ниже)
      include_path
      По умолчанию false
      При необходимости укажите надо ли включать путь (работает только при использовании автоматического метода Добавить модуль)
      • Массив $data
        • Добавление информации о модуле вручную
          Для установки в категорию или по одному. Будут объединены с основным массивом, показанным немного ниже, но по крайней мере требуется значение module_langname для отправки, и, если вы хотите создать модуль (вместо категории) необходимо значение module_basename и module_mode.
          Пример

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

          $data = array(
              'module_enabled'    => 1,
              'module_display'    => 1,
              'module_basename'   => '',
              'module_class'      => $class,
              'parent_id'         => (int) $parent,
              'module_langname'   => '',
              'module_mode'       => '',
              'module_auth'       => '',
          );
        • Добавление информации о модуле автоматически
          Автоматическое вытягивание информации из файла ext/имя автора/имя расширения/acp/main_info.php
          Пример

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

          $data = array(
              'module_basename'   => 'main_info',
              'modes'             => array('settings', 'log', 'flag'),
          );
          Если нужно вытянуть всю информацию, то можно убрать строку

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

            'modes'             => array('settings', 'log', 'flag'),
        Пример

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

        public function update_data()
        {
            return array(
                //Создание категории ACP_CAT_TEST_MOD в  ACP_CAT_DOT_MODS
                array('module.add', array(
                    'acp',
                    'ACP_CAT_DOT_MODS',
                    'ACP_CAT_TEST_MOD'
               )),
        
                // Добавление прав и настроек из модуля acp_board в  ACP_CAT_TEST_MOD автоматическим методом (с выборкой нужных параметров)
                array('module.add', array(
                    'acp',
                    'ACP_CAT_TEST_MOD',
                    array(
                        'module_basename'       => 'acp_board',
                        'modes'                 => array('settings', 'features'),
                    ),
                )),
        
                // Добавление настроек аватар из модуля acp_board в ACP_CAT_TEST_MOD методом "вручную".
                array('module.add', array(
                    'acp',
                    'ACP_CAT_TEST_MOD',
                    array(
                        'module_basename'   => 'acp_board',
                        'module_langname'   => 'ACP_AVATAR_SETTINGS',
                        'module_mode'       => 'avatar',
                        'module_auth'       => 'acl_a_board && ext_vendor/name',
                    ),
                )),
            ));
        }
    • Удаление модуля
      Запрос

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

      string umil::module_remove ( mixed $class [, mixed $parent [, array $module [, mixed $include_path ]]] )
      Параметры запроса
      Параметр
      Обязательное\Значения по умолчанию
      Значения и применение
      class
      Обязательное
      Тип модуля: acp(администраторский раздел), mcp(модераторский раздел), ucp(пользовательский раздел)
      parent
      По умолчанию 0
      Родительский module_id или module_langname (языковая переменная родительского модуля) (0 если нет родителя)
      data
      По умолчанию ''(две одинарные ковычки, между ними айди либо языковая переменная модуля)
      module_id или module_langname модуля для удаления (способы см. ниже)
      include_path
      По умолчанию false
      При необходимости укажите надо ли включать путь (работает только при использовании автоматического метода Добавить модуль)
      • Переменная $module
        • Режим удаления "вручную"
          При удалении модуля с помощью ручного метода можно указать строку (module_langname) или целое число (module_id)
        • Автоматический режим удаления
          При удалении модуля с помощью автоматического метода вы можете использовать ту же информацию, передаваемую через массив данных $data при использовании автоматического метода module_add функции. Так же, как в режиме автоматической надстройки, автоматически найти модули, перечисленные в соответствии с заданным module_basename и режимов из файла _info. (все тот же наш ext/имя автора/имя расширения/acp/main_info.php)
        Пример

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

        public function update_data()
        {
            return array(
                //Удаляем настройки аватар от модуля acp_board из категории ACP_CAT_TEST_MOD методом "вручную".
                array('module.remove', array(
                    'acp',
                    'ACP_CAT_TEST_MOD',
                    array(
                        'module_basename'   => 'acp_board',
                        'module_langname'   => 'ACP_AVATAR_SETTINGS',
                        'module_mode'       => 'avatar',
                        'module_auth'       => 'acl_a_board && ext_vendor/name',
                    ),
                )),
        
                // Удаляем настройки и права от модуля acp_board из категории ACP_CAT_TEST_MOD методом "вручную".
                array('module.remove', array(
                    'acp',
                    'ACP_CAT_TEST_MOD',
                    array(
                        'module_basename'       => 'acp_board',
                        'modes'                 => array('settings', 'features'),
                    ),
                )),
        
                // Удаляем новую категорию ACP_CAT_TEST_MOD из ACP_CAT_DOT_MODS
                array('module.remove', array(
                    'acp',
                    'ACP_CAT_DOT_MODS',
                    'ACP_CAT_TEST_MOD'
                )),
            ));
        }
  • Инструменты для заполнения первоначальными данными созданных полей и таблиц
    Инструменты предназначены для заполнения, обновления либо удаления данных настроек расширений.
    • Добавление нового поля настроек
      Запрос

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

      array('config.add', array(имя поля, значение поля, динамическое\не динамическое )),
      Пример

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

      public function update_data()
      {
          return array(
               array('config.add', array('foo', 'bar')), // $config['foo'] = 'bar'; по умолчанию false - не динамическое
               array('config.add', array('foo2', 1, true)), // $config['foo2'] = '1'; true - динамическое, false - не динамическое
          );
      }
    • Обновление поля настроек
      Запрос

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

      array('config.update', array(имя поля, новое значение)),
      Пример

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

      public function update_data()
      {
          return array(
               array('config.update', array('foo', 'bar')), // $config['foo'] = 'bar';
          );
      }
    • Обновление поля настроек если его значение на данный момент равно нужному значению
      Запрос

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

      array('config.update_if_equals', array(значение для сравнения, имя поля, новое значение поля)),
      Пример

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

      public function update_data()
      {
          return array(
               array('config.update_if_equals', array('bar', 'foo', 'bar2')), // if ($config['foo'] == 'bar') { $config['foo'] = 'bar2'; }
          );
      }
    • Удаление поля настроек
      Запрос

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

      array('config.remove', array(имя поля)),
      Пример

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

      public function update_data()
      {
          return array(
               array('config.remove', array('foo')), // unset($config['foo']);
          );
      }
    • Важное примечание: config используется для хранения числовых данных переменных, если нужно хранить текст - используйте config_text вместо config
  • Инструменты для создания прав доступа
    Инструменты предназначены для добавления\удаления\обновления новых прав доступа для расширений
    • Добавление новых прав доступа
      Запрос

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

      array('permission.add', array(имя права доступа, global (по умолчанию: true) , копировать с  (по умолчанию: false) )),
      Пример

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

      public function update_data()
      {
          return array(
               array('permission.add', array('a_new')), // Новое глобальное право для администраторов a_new
               array('permission.add', array('m_new')), // Новое глобальное право для модераторов m_new
               array('permission.add', array('m_new', false)), // Новое локальное право для m_new
               array('permission.add', array('u_new')), // Новое глобальное право для пользователей u_new
               array('permission.add', array('u_new', false)), // Новое локальное право для пользователей u_new
      
               array('permission.add', array('a_copy', true, 'a_existing')), // Новое глобальное право для администраторов a_copy, скопирует для себя настройки с права a_existing
          );
      }
    • Удаления прав доступа
      Запрос

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

      array('permission.remove', array(имя права, global (по умолчанию: true) )),
      Пример

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

      public function update_data()
      {
          return array(
               array('permission.remove', array('a_new')), // Удаление глобального администраторского права a_new
               array('permission.remove', array('m_new')), // Удаление глобального модераторского права m_new
               array('permission.remove', array('m_new', false)), // Удаление локального модераторского права m_new
               array('permission.remove', array('u_new')), // Удаление глобального пользовательского права u_new
               array('permission.remove', array('u_new', false)), // Удаление локального пользовательского права u_new
          );
      }
    • Добавление ролей
      Запрос

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

      array('permission.role_add', array(имя роли, тип роли (u_, m_, a_), описание роли )),
      Пример

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

      public function update_data()
      {
          return array(
               array('permission.role_add', array('new admin role', 'a_', 'a new role')), // Новая администраторская роль "new admin role"
               array('permission.role_add', array('new moderator role', 'm_', 'a new role')), // Новая модераторская роль "new moderator role"
               array('permission.role_add', array('new user role', 'u_', 'a new role')), // Новая пользовательская роль "new user role"
          );
      }
    • Обновление роли
      Запрос

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

      array('permission.role_update', array(старое имя роли, новое имя роли )),
      Пример

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

      public function update_data()
      {
          return array(
               array('permission.role_update', array('new admin role', 'new name for admin role')), // Переименование "new admin role" в "new name for admin role"
          );
      }
    • Удаление роли
      Запрос

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

      array('permission.role_remove', array(имя роли)),
      Пример

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

      public function update_data()
      {
          return array(
               array('permission.role_remove', array('new admin role')), // Удаление роли "new admin role"
               array('permission.role_remove', array('new moderator role')), // Удаление роли "new moderator role"
               array('permission.role_remove', array('new user role')), // Удаление роли "new user role"
          );
      }
    • Присваивание прав
      Запрос

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

      array('permission.permission_set', array(роль\имя группы, имена прав, тип ('role', 'group', по умолчанию: role), получат право? (По умолчанию: true) )),
      Пример

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

      public function update_data()
      {
          return array(
               array('permission.permission_set', array('ROLE_ADMIN_FULL', 'a_new')), // Присвоение для роли ROLE_ADMIN_FULL прав доступа a_new
               array('permission.permission_set', array('ROLE_ADMIN_FULL', 'a_new2', 'role', false)), // Права a_new2 не будут доступны для роли  ROLE_ADMIN_FULL
               array('permission.permission_set', array('REGISTERED', 'u_new', 'group')), // Присвоение для группы REGISTERED прав доступа u_new 
          );
      }
    • Удаление прав
      Запрос

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

      array('permission.permission_unset', array(роль\имя группы, имя права, тип ('role', 'group', по умолчанию: role) )),
      Пример

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

      public function update_data()
      {
          return array(
               array('permission.permission_unset', array('ROLE_ADMIN_FULL', 'a_new')), // Удаление права a_new у роли ROLE_ADMIN_FULL
               array('permission.permission_unset', array('REGISTERED', 'u_new', 'group')), // Удаление права u_new у группы REGISTERED
          );
      }
Собственно и все, ничего сложного, пользуемся на здоровье :hi_hi_hi:
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
#1
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение