API-module

Критически важные изменения

  • [Auth] В таблицу auth_codes добавить новое поле ip:
    ALTER TABLE
        `auth_codes`
    ADD
        COLUMN `ip` VARCHAR(255) NOT NULL DEFAULT ''
    AFTER
        `code`;
    
  • [Checker] Проверка на права доступа теперь бросает исключение ResponseException при ошибке, его можно отловить если вам необходимо при ошибке выполнить что-то своё, если исключение не поймать оно уйдёт в ядро и там превратится в обычный json-ответ с ошибкой в виде сообщения исключения:
    // Самостоятельно ловим исключение
    try {
        $this->checker->run([
            'role' => [
                'page'   => 'example',
                'access' => 'read',
            ],
        ]);
    
        return true;
    } catch (ResponseException $e) {
        LogException::write($this->log, $e);
    
        return false;
    }
    
    // Пропускаем исключение
    $this->checker->run([
        'auth' => '',
        'role' => [
            'page'   => 'example',
            'access' => 'delete',
        ],
    ]);
    
    $this->response->setData((new ActionRemove($this->dic))->run(
        $this->request->attributes->get('id')
    ));
    
    return $this->response;
    
    // Исключение поймано ядром
    catch (ResponseException $e)
        $this->response->setData(Response::exception($e));
        $this->response->send();
    
  • [Configs] Переопределение настроек выполняется в каталоге /app/Overrides/Configs при помощи yaml-файлов, подробности смотрите здесь.
  • [Console] В метод getDIC необходимо передать параметр string $path_root.
  • [Console] БД не инициализируется в конструкторе, необходимо отдельно стартовать при необходимости: (new Database())->addConnection($dic['config']['database']['mysql'])->connect();.
  • [Controller] В классах расширяющихся от класса Lemurro\Api\Core\Abstracts\Controller метод start вместо вызова $this->response->send(); должен возвращать return $this->response;.
  • [Core] Необходимо в файле /public/index.php передать параметр string $path_root в ядро new Core(__DIR__ . '/../').
  • [Database] Библиотека j4mie/idiorm заменена на illuminate/database, необходимо пройти по коду и заменить ORM:: на DB:: (фасад для класса Capsule), основной список методов “было\стало”:
    • for_table() >>> table()
    • select_many() >>> select()
    • where_null() >>> whereNull()
    • order_by_asc() >>> orderBy()
    • find_one() >>> first(), если ничего не найдено вернёт null
    • find_many() >>> get(), для проверки на данные можно вызвать метод count()
    • find_array() >>> используйте get() и преобразуйте каждый элемент в цикле с использованием type cast (array) $item, но посмотрите может вам это и не нужно вовсе, можно и в таком виде отдать в ответ
    • as_array() >>> (array) $record, используем магию type cast
    • create() >>> insert() или insertGetId()
    • save() >>> необходимо отдельно строить запрос с методом update()
    • ORM::get_db()->beginTransaction() >>> DB::beginTransaction()
    • ORM::get_db()->commit() >>> DB::commit()
    • ORM::get_db()->rollBack() >>> DB::rollBack()
  • [DIC] В связи с удалением DIC-элемента $this->dic['checker'] необходимо в классах расширяющихся от классов Lemurro\Api\Core\Abstracts\Controller и Lemurro\Api\Core\Helpers\File\FileChecker использовать вместо него свойство $this->checker.
  • [EmailTemplates] Переопределение шаблонов для писем выполняется в каталоге /app/Overrides/Configs/templates при помощи html-файлов, подробности смотрите здесь.
  • [Jobby] В конструкторе указать параметр string $path_root.
  • [LoggerFactory] LoggerFactory::create() заменить на:
    use Lemurro\Api\Core\Helpers\LoggerFactory;
    
    /** @var LoggerFactory $logfactory */
    $logfactory = $this->dic['logfactory'];
    $log = $logfactory->create('LogName');
    
    либо упрощённый вариант
    use Monolog\Logger;
    
    /** @var Logger $log */
    $log = $this->dic['logfactory']->create('LogName');
    
  • [Mailer] Конструктор вместо переменных string $header и string $footer теперь принимает переменную string $template в которой находится полный шаблон письма: шапка, подвал и переменная __BODY__, если вы использовали переопределение шапки и подвала, пожалуйста посмотрите новый формат шаблона.

Необязательные изменения

  • [] .

WEB-module

Критически важные изменения

  • [Style] Цвета серии -brand удалены, необходимо заменить на что-то другое.
  • [Style] Классы серии m-badge удалены, необходимо заменить их на label.
  • [Style] Классы серии m-- удалены, необходимо заменить их на соответствующие классы.
  • [Style] Классы серии m-checkbox удалены, необходимо убрать из классов префикс m-.
  • [Style] Классы серии m-radio удалены, необходимо убрать из классов префикс m-.
  • [Style] У элементов button с классом m-btn--icon можно убрать этот класс и изменить вёрстку внутри:
<!-- Было -->
<button type="button" class="btn btn-primary m-btn--icon" onclick="myfunc()">
    <span>
        <i class="fas fa-plus"></i>
        <span>Добавить</span>
    </span>
</button>

<!-- Стало -->
<button type="button" class="btn btn-primary" onclick="myfunc()">
    <i class="fas fa-plus"></i>
    Добавить
</button>
  • [SweetAlert2] Вместо вызова swal() необходимо использовать вызов Swal.fire().
  • [Users] На вкладке Ключи доступа изменена вёрстка и добавлено сообщение об отсутствии ключей, новую вёрстку можно взять в файле auth_keys.html.
  • [Users] Добавлено новое системное поле email
    • Добавить поле в схему таблицы info_users:
      ALTER TABLE `info_users` ADD `email` VARCHAR(255) NULL AFTER `roles`;
      
    • В файле /src/html/pages/users/form.html необходимо добавить поле:
      <div class="form-group">
          <label>Email</label>
          <input type="text" name="email" title="Email" class="form-control js-user-id-1" />
      </div>
      

Необязательные изменения

  • [Style] Теперь кнопки с классом btn-secondary слишком тёмные и имеет смысл поменять их на btn-light.
  • [Style] Для кнопок с выпадающим меню и классом btn-secondary можно поменять этот класс на btn-outline-light.
  • [Style] В выпадающих меню, где есть элементы с иконками можно увеличить отступ справа от иконки добавив новый класс mr-3 в элемент иконки <i>.