Обновить
54.15

PHP *

Скриптовый язык общего назначения

Сначала показывать
Порог рейтинга

Скрипт для отключения расширений, не входящих в ядро Joomla 3 (для обновления на Joomla 5+)

Перед обновлением сайта с Joomla 3 на Joomla 4 и выше нужно обновить все старые расширения до последних (для Joomla 3) версий. Затем отключить их, особенно системные плагины. Это делается для того, чтобы ничто не мешало процессу обновления. Для того, чтобы сделать это быстро - накидал скрипт, который отключает нестандартные расширения в Joomla 3.

➡️ Получить код скрипта (GitHub gist)

Файл disable_non_joomla3_extensions.php нужно положить в папку administrator вашего сайта и перейти по нему в браузере - yoursite.ru/administrator/disable_non_joomla3_extensions.php. Если всё успешно отключилось - выйдет сообщение.

XXX extensions that are not included in the Joomla 3 core have been detected and disabled. Make sure that they are disabled in the Site Admin Panel: Extensions - Extension Manager - Management.

Проверяем работу в менеджере расширений и после этого обновляем Joomla до Joomla 4 с помощью пакета обновлений Joomla 4.0.0. Обновляем Joomla 4 находясь на PHP 7.4 до конца. Меняем базу данных на MySQL 8+ (импорт-экспорт базы), поднимаем PHP до 8.1.

⚠️ Всё это делаем находясь ещё на Joomla 4. Обновиться нужно минимум до Joomla 4.4.0. Только после этого можно обновляться на Joomla 5 пакетом обновления 5.0.0. Затем обновляем все расширения и постепенно включаем их.

Теги:
Всего голосов 4: ↑4 и ↓0+6
Комментарии3

Совет по Joomla: как получать данные из суперглобальных массивов $_POST, $_GET и других?

На основе данных из $_GET, $_POST порой строится логика работы кода начиная от шаблона Joomla и кончая модулями и плагинами. Для работы с этими данными используется объект Input, который мы получаем из Приложения Joomla.

Приведу пример, часто использующийся при разработке шаблонов Joomla

<?php
/** @var \Joomla\CMS\Application\CMSApplication $app */
$app   = Factory::getApplication();
/** @var \Joomla\Input\Input $input */
$input = $app->getInput();

// Имя параметра и его значение по умолчанию
$option   = $input->get('option','');
$view     = $input->get('view', 'category');
$layout   = $input->getCmd('layout', 'edit');
$task     = $input->getString('task', '');
$itemid   = $input->getInt('Itemid', '');

В методе $input->get() 2-й аргумент - это значение по умолчанию на случай, если данных не обнаружено. 3-й аргумент - параметры фильтрации данных - будьте с ним внимательны. Например, вы хотите получить данные, отправленные на ендпоинт в виде JSON.stringify.

<?php
/** @var \Joomla\Input\Input $input */
$input->json->get('title', '', 'RAW')
// ИЛИ
$data = $input->json->getArray();

Если вы уверены, что данные должны быть именно в $_POST и нигде более, то получайте их именно оттуда.

<?php
/** @var \Joomla\Input\Input $input */
$title = $input->post->get('title', '', 'RAW');

Подробнее в файле libraries/vendor/joomla/input/src/Input.php.

Теги:
Всего голосов 1: ↑1 и ↓0+3
Комментарии0

Список устаревших классов ядра Joomla 1.6-3.10 и их современные аналоги в ядре Joomla 5.x

Разработчикам при обновлении расширений на архитектуру Joomla 4 / Joomla 5 нередко не сразу удаётся найти аналоги устаревших методов ядра. Особенно, если под рукой нет современной среды разработки (IDE), например PHP Storm, который подсказывает нужные методы ядра Joomla. Без него, конечно, разработка для Joomla становится непростым делом. В этой статье вы найдете табличку соответствия старых и новых названий PHP классов ядра Joomla и её расширений для того, чтобы быстрее и легче было обновить свои расширения. Эти классы пока что можно использовать в случае, если включён плагин обратной совместимости Joomla 4 / Joomla 5. Но в Joomla 6 или последующих версиях он может быть удалён.

Подробнее: Список устаревших классов ядра Joomla 1.6-3.10 и их современные аналоги в ядре Joomla 5.x.

Теги:
Всего голосов 4: ↑2 и ↓2+2
Комментарии0

Совет по Joomla: метод HTMLHelper::image() для рендера изображений

В API Joomla есть довольно богатый инструмент - класс HTMLHelper. С его помощью можно выводить различные HTML-элементы с нужными параметрами: модальные окна, аккордеоны, табы, изображения и т.д.

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

Самый простой способ рендера изображений - с 2-мя аргументами:

  • $img - путь к изображению

  • $alt - текст для атрибута alt изображения 3-й необязательный параметр - массив или строка с атрибутами изображения: class, title, различные data-атрибуты, onclick, loading и т.д. Я предпочитаю удобно и наглядно собрать атрибуты в массив, использовать условия в PHP, а не HTML коде.

<?php
use Joomla\CMS\HTML\HTMLHelper;

$img_src = 'images/banner.webp';
$img_attribs = [
    'loading' => 'lazy',
    'class'=>'img-fluid',
    'data-custom-attr'=>'your-custom-data-attr-value',
    'title'=> 'Title attribute for image'
];

echo HTMLHelper::image($img_src,'Alt text for image', $img_attribs);

Если изображение найдено - получим HTML-разметку <img src="..."/> с нашими данными. Если не найдено - null.

Ещё 2 параметра, которые используются реже и связаны с одной из главных фишек Joomla - функционалом переопределений. Но их описание не укладывается в размер поста на Хабре 😢

Теги:
Всего голосов 3: ↑3 и ↓0+5
Комментарии0

Работа с Joomla в PHPStorm. Шаблоны (boilerplate) для быстрого создания модулей, плагинов Joomla в IDE.
PHPStorm - среда разработки для PHP-программистов, работающих с кодом как на чистом PHP, так и с такими PHP-фреймворками как Symfony, Laravel, Yii и другими. PHPStorm с 2016 года имеет отличную поддержку Joomla, подсказывает методы ядра, аргументы функций, навигация по коду и всё-всё, что нужно для комфортного кодинга разработчика.

Бойлерплейты Joomla расширений для PHPStorm

Участник нашего сообщества, разработчик Игорь Бердичевский (@septdir) поделился на GitHub своими "плюшками" для работы с Joomla:

  • codeStyle - Code formating style

  • colors - цветовая схема для PHPStorm

  • fileTemplates - шаблоны для расширений Joomla

  • options - файл с названиями для шаблонов

  • project - шаблон для пустого Joomla-проекта включая задания для сборщика проекта Phing

  • templates - Live Templates for files

  • watchers - Configuration for File Watcher Этот инструментарий позволяет разработчику в PHPStorm быстро создать каркас нового модуля, плагина, компонента и не тратить время на ручное создание структуры файлов и папок.

Репозиторий JetBrains-PhpStorm на GitHub

Также полезные ссылки:

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии2

Всех приветствую! Вышел релиз MoonShine 2.18.0 (админ-панелm для Laravel) с кодовым названием “Mango Tango”. 🌙

Подробности в статье.

Давайте кратко расскажу что нового:

  • @dissnik добавил режим sticky для таблиц ресурса.

class PostResource extends ModelResource { 
  // ...
  protected bool $stickyTable = true; 
  // ...
}
  • Появилась возможность заменить шаблонную заглушку аватара профиля на свою

Profile::make()->defaultAvatar("https://ui-avatars.com/api/?name=$name")
  • Большие улучшения для импорта и экспорта Просто взгляните на пример трансформации enum в строку при экспорте и обратно при импорте

Enum::make('Enum') 
    ->attach(ColorEnum::class) 
    ->useOnImport(fromRaw: static fn(string $raw, Enum $ctx) => ColorEnum::tryFrom($raw))
    ->showOnExport(modifyRawValue: static fn(ColorEnum $raw, Enum $ctx) => $raw->value)
  • @djnew добавил режим поиска для компонента Dropdown

Dropdown::make()->searchable()->searchPlaceholder('Search...')
  • asyncSearch с флагом для замены query builder

Чтобы asyncSearchQuery полностью заменял билдер

asyncSearch(asyncSearchQuery: fn($q) => $q->where(..., ...), replaceQuery: true)

Рубрика BugBusters 🐛

  • Метрики на небольших экранах

  • Скролл в сайдбаре

  • Метод onBoot

Новости MoonShine 3.0

  • Ядро уже почти готово

  • Прошли тесты на реальном проекте с пакетом tenancy (с выходом 3 версии нас ждет новая демка)

  • Сейчас идут тесты интеграции MoonShine в Symfony

  • После Symfony переходим на фичи 3.0, документацию и всякое вкусное к релизу

Теги:
Всего голосов 5: ↑4 и ↓1+5
Комментарии3

Вышла новая версия Quantum Manager - популярного медиа и файлового менеджера под Joomla 4/5. Отличительной особенностью данного релиза является включение в ядро дистрибутива библиотеки lib_fields (ранее тянулась из внешнего источника при установке), а также интеграция с AcyMailing (компонент для e-mail рассылок). Также исправлены некоторые ошибки.

Что нового?

  • [добавлено] - Интеграция с AcyMailing. Это компонент для e-mail рассылок. Теперь можно при формировании писем вызывать медиа поле с Quantum.

  • [изменение] - Библиотека lib_fields, теперь часть пакета. Это позволит поставить компонент локально, без Интернет, а также решает проблему блокировки Github в
    некоторых регионах.

  • [исправлено] - Создание пустых папок при открытии менеджера, когда добавлялась область "Директория поля».

  • [исправлено] - Отображение название областей в конфигурации.

  • [добавлено] - Показывается id наименование области в конфигурации.

Quantum Manager работает на Joomla 4 и Joomla 5 (без плагина обратной совместимости), проверен на PHP 8.2+ и полностью бесплатен.

Работа с Quantum Manager
Работа с Quantum Manager

Ссылки:

Также добро пожаловать в Телеграм чат Joomla для профессионалов.

Теги:
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

WT CDEK library для Joomla

Скриншот настроек в плагине. Joomla 5.1.
Скриншот настроек в плагине. Joomla 5.1.

Небольшая нативная PHP Joomla библиотека для работы с API службы доставки CDEK. Пакет состоит из плагина для хранения настроек, PHP-библиотеки и виджета карты для выбора пунктов выдачи заказа. Поддерживается Joomla 4.2.7 и выше.

Библиотека представляет собой клиент для подключения и авторизации в API CDEK и несколько методов для работы с ним с предварительной проверкой структуры данных, а также обработку ошибок при запросе. Для работы с библиотекой под рукой необходимо иметь официальную документацию CDEK API.

Данное расширение предназначено для Joomla-разработчиков. Они могут использовать его в качестве зависимости при разработке своих расширений для Joomla. Pull Requests welcome со стороны Joomla разработчиков!

В составе библиотеки методы для получения списка ПВЗ, регионов, городов, 2 метода для расчета стоимости доставки и другие.

Виджет выбора типа доставки от CDEK (карта с выбором ПВЗ)

В состав библиотеки включен виджет карты ПВЗ последней на данный момент версии: 3.10.2. Javascript виджета оформлен как Joomla Web Asset. В своём коде подключаем его с помощью WebAssetManager.

По умолчанию в комплекте с виджетом идёт файл service.php, который является точкой входа для ajax-запроса. В данной библиотеке функционал этого файла (получение списка ПВЗ и калькуляции тарифов) перенесён в системный плагин Joomla.

Страница расширения и примеры кода.

GitHub репозиторий WT CDEK Library

Теги:
Всего голосов 2: ↑2 и ↓0+4
Комментарии2

Релиз админ-панели для Laravel MoonShine v.2.16

Вышел новый с кодовым именем "Mystical Wildfire"! Давайте взглянем на самое интересное в этом обновлении!

Фокус скрытых элементов формы

Благодаря @DissNik проблема скрытых элементов формы с атрибутами валидации required,min,max,email,pattern канула в лету.

Подробности в PR

Слайдер изображений

Благодря @djnew был добавлен новый компонент Carousel:

Carousel::make() ->items(['/images/image_2.jpg','/images/image_1.jpg']);

Также добавлена поддержка слайдера изображений для компонентов Card, CardsBuilder.

Подробности в PR

Команда publish с аргументом типа

Возможность указать сразу тип публикации через команду:

php artisan moonshine:publish assets

Доступные типы:

  • assets - ассеты MoonShine

  • assets-template - шаблон для генерации собственной темы

  • layout - основной layout MoonShine

  • favicons - blade view с favicons

  • resources - системные ресурсы (MoonShineUserResource, MoonShineUserRoleResource)

Подробности в PR

Режим onlyLink для BelongsToMany

Подробности в PR

Рубрика BugBusters 🐛

  • MoonShineNotFoundException с report false по умолчанию от @lee-to in PR

  • Внешний вид кнопок в режиме inDropdown от @DissNik in PR

  • Событие submit FormBuilder от @DissNik in PR

  • Проблемы с bulk от @lee-to in PR

https://github.com/moonshine-software/moonshine/compare/2.15.0...2.16.0

Теги:
Всего голосов 5: ↑5 и ↓0+9
Комментарии0

WT Telegram bot - отправка данных из Joomla в Telegram-бота

Вышел комплект плагинов WT Telegram bot, состоящий из 2-х плагинов:

  • WT Telegram bot - основной плагин

  • WT Telegram bot - Content - плагин для материалов Joomla

Плагин WT Telegram bot. Служит для отправки данных в Telegram. В его параметрах указываются токен Telegram API и основной chat id / channel id, куда бот будет отправлять сообщения. Данный плагин сам по себе бесполезен, если вы не Joomla-разработчик. Разработчики могут создавать плагины-провайдеры, которые будут отправлять сообщения с нужными данными. Также разработчики могут отправлять другие chat id в коде, кроме основного. В базе данных хранится таблица связей отправленных сущностей Joomla и id сообщений для каждого чата, что может оказаться полезно при разработке собственных расширений.

Документация и скачать

WT Telegram bot - Content. Плагин позволяет отправлять в Telegram чат или канал материалы из интерфейса Joomla. На данный момент вручную с помощью кнопки на тулбаре в списке статей или при редактировании статьи. Для его работы необходим первый плагин

Документация и скачать

Оба плагина бесплатные. Системные требования: Joomla 4.3+ PHP 8+.

Теги:
Всего голосов 3: ↑2 и ↓1+3
Комментарии0

Приветствую вас, муншайнеры!?

Сегодня мы зарелизили важный патч. Давайте поговорим о том что изменилось

  1. HasMany оптимизирован и теперь страницы где он присутствуют будут работать на 200% быстрее (к сожалению был не очень приятный артефакт из-за которого мы хранили в памяти все формы элементов)

  2. Важно мы добавили экранирование для поля Text и всех его дочерних полей, поэтому теперь все значения при сохранении и выводе будут экранироваться, но логику можно отключить методом unescaped

  3. Важно Number больше не наследует Text но его поведение не поменялось, тоже самое касается Date и Range

Важно Сегодня в 19-00 по мск будет стрим по нашему любимому MoonShine! Всех жду: https://youtube.com/live/ssxmIDdFv8Y?feature=share

По традиции поговорим про 3 версию MoonShine и я покажу новую структуру проекта, а также взглянем и обсудим последние релизы и патчи.

Также расскажу про курс API который давно ждут, объясню с чем связана задержка и будет ли он.

Теги:
Всего голосов 4: ↑3 и ↓1+5
Комментарии0

Генератор плагина для Joomla 4 и Joomla 5

Данный генератор для Joomla-разработчиков помогает создать болванку плагина по структуре файлов и классов Joomla 4 и Joomla 5. Создаётся сервис-провайдер, основной класс плагина, языковые файлы для русского языка.

Созданный плагин будет не совместим с Joomla 3. Также автор генератора предупреждает, что версия Joomla 4 должна быть не ниже 4.4.4, хотя судя по генерируемому коду всё должно быть ОК. В любом случае разработчик разберется что с этим делать и может сэкономить время.

Генератор болванки плагина для Joomla 4 / Joomla 5

Также добро пожаловать в Telegram-чат русскоязычного Joomla сообщества

Теги:
Всего голосов 3: ↑2 и ↓1+1
Комментарии0

Привет всем! ?

Сегодня в 19:00 (мск) у нас запланирован стрим по Moonshine. Обсудим обновления и изменения за последний месяц, а также покажу как проходит работа по MoonShine v3.

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

Заходите - https://www.youtube.com/watch?v=bM-rgGFnO88 . Будет интересно!

Теги:
Всего голосов 2: ↑1 и ↓10
Комментарии0

Ближайшие события

Профессиональный плагин формы обратной связи Radical Form совместим с Joomla 5

Профессиональный плагин-обработчик форм обратной связи Radical Form получил совместимость с Joomla 5 с релизом 3.1.5. Особенность плагина в том, что он позволяет отправлять абсолютно любые формы: стандартные callback формы, квизы, опросы и т.д., но не предоставляет готового фронтенда.

Такой подход предоставляет разработчикам практически неограниченную гибкость в разработке, но при этом требует от них определенного уровня знаний и умений. Radical Form даёт возможность сторонним разработчикам обрабатывать данные форм в момент отправки с помощью плагинов, что позволяет очень удобно и быстро интегрировать его со сторонними сервисами. Для плагина существуют сторонние плагины для интеграции Radical Form с Битрикс 24 и AmoCRM.

Разработчик Radical Form - @progreccor

Страница расширения GitHub расширения

Также добро пожаловать в Telegram-чат русскоязычного Joomla-сообщества

Теги:
Всего голосов 3: ↑3 и ↓0+4
Комментарии0

? Вышел релиз MoonShine v.2.13.0 с кодовым именем "Red Velvet"!?

Напомню, что MoonShine это open-source админ-панель для проектов на Laravel.

Давайте взглянем на самое интересное в этом обновлении!

Возможноcть изменить query builder у HasMany

HasMany::make()->modifyBuilder(fn(Builder $q) => $q->where('active', 1));

Улучшения для BelongsTo/BelongsToMany полей

Получение значений для BelongsTo/BelongsToMany полей приведено к единому виду и теперь для них всегда доступен valuesQuery и при большом запросе вы сможете самостоятельно его оптимизировать

BelongsTo::make(
    __('moonshine::ui.resource.role'),
    'moonshineUserRole',
    formatted: static fn (MoonshineUserRole $model) => $model->name,
    resource: MoonShineUserRoleResource::class,
)
    ->valuesQuery(fn(Builder $q) => $q->select(['id', 'name']))

Обновилось поле MoonShine Layouts

  • Исправлена проблема ререндера предыдущих шаблонов

  • Исправлена проблема исключения декораций

Еще ряд изменений:

  • Логотип на 404 странице теперь выводится из конфига и если есть желание вывести на 404 логотип отличающийся от дефолтного, то воспользуйтесь ключом logo404

  • Исправили реактивность внутри HasOne/HasMany

  • Исправили morphMap для морф полей

  • Исправили удаление файла при замене и удалении

Сайт MoonShine - https://moonshine-laravel.com

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии2

Почему FilamentPHP — это хорошее решение для создания CMS

FilamentPHP — набор Fullstack-компонентов для Laravel. Последнее время мы в AGIMA часто используем его для построения админок. И вот почему:

1. Он красивый

Особенно в сравнении с Bootstrap. Filament же использует компоненты, стилизованные с помощью Tailwind CSS: 

Кстати, живую демку можно посмотреть и потрогать по этой ссылке.

Живую демку можно посмотреть и потрогать по этой ссылке.

2. Он доступный

Документация местами бывает так себе, но при наличии живой демки и её исходников можно быстро найти подходящий фрагмент и адаптировать его под себя.

А здесь найдете пример кода для создания формы авторизации.

3. Использует стек TALL (TailwindCSS, AlpineJS, Laravel, Livewire)

Livewire позволяет создавать приложение динамическим. Не нужно писать тонны кода на JQuery, как этого требует тот же Voyager. И, коли уж это Laravel, нам всегда доступны все его возможности.

4. Есть библиотека плагинов

И они закрыли уже почти все насущные проблемы.

Но и минусы у этого решения тоже есть:

  • Стек TALL можно отнести и к минусам тоже, потому что Livewire иногда кажется достаточно сомнительной затеей.

  • Filament достаточно прожорливый и требует OPCache и кеширования всего, что можно. И с включенным laravel-debugbar всё начинает тормозить.

  • Часть плагинов платные.

  • Код форм порой бывает достаточно… монструозным. Но это решается грамотным переиспользованием кода и разнесением его по разным местам.

Это краткий пересказ статьи Егора Черненка, PHP-разработчика AGIMA — полную версию читайте тут.

Теги:
Всего голосов 9: ↑8 и ↓1+7
Комментарии1

В стандартной C-библиотеке Glibc выявлена уязвимость (CVE-2024-2961), приводящая к переполнению буфера при преобразовании специально оформленных строк в кодировке ISO-2022-CN-EXT функцией iconv().

Выявивший проблему исследователь 10 мая выступит на конференции OffensiveCon с докладом, в анонсе которого упоминается возможность эксплуатации уязвимости через приложения на языке PHP. Проблема затрагивает всю экосистему PHP и некоторые приложения.

При преобразовании строк в кодировке UCS4, в соответствии с требованиями RFC 1922, библиотека Glibc добавляет некоторые escape-символы, выделяющие части строки, в которых кодировка была изменена.

Уязвимость в вызвана некорректной проверкой границ внутренних буферов функцией iconv(), что может привести к переполнению буфера максимум на 4 байта. При переполнении за границу буфера могут быть записаны определённые фиксированные значения, такие как '$+I', '$+J', '$+K', '$+L', '$+M' и '$*H'. Несмотря на то, что эксплуатация подобной уязвимости для выполнения кода кажется маловероятной, этого оказалось достаточно для подготовки нескольких прототипов эксплоитов для удалённой атаки на PHP-приложения, приводящей к выполнению кода.

Уязвимость проявляется с 2000 года и устранена в находящейся в разработке ветке Glibc 2.40. Исправление также доступно в виде патчей для выпусков Glibc с 2.32 по 2.39. В дистрибутивах проследить за исправлением уязвимости можно на страницах: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Arch.

Источник: OpenNET.

Теги:
Всего голосов 4: ↑4 и ↓0+6
Комментарии1

Привет, поклонники Laravel!

Недавно состоялось обновление админ-панели для Laravel MoonShine v2.11.0 с кодовым названием “Minimal Twist”.

Основа релиза - минималистичный дизайн админки. Часто просили сделать альтернативный вариант дизайна, и как только появилась возможность - реализовали. Выглядит стильно, сам попробовал и, видимо, буду использовать эту тему.

Инструкции по использованию - в PR.

Также в плейлист с гайдами по применению MoonShine добавлено несколько видео из серии tips&tricks.

Сейчас работаем над переводом документации и видеоуроков на английский язык.

В последнее время в MoonShine появилось много нововведений. 11 апреля в 19:00(мск) проведу прямой эфир по MoonShine на канале CutCode. Программа:

  • установка компактной темы,

  • обзор новых пакетов для MoonShine,

  • планы на MoonShine 3,

  • демонстрация нового концепта организации шаблонов,

  • еще пара интересных новостей, о которых узнаете на стриме .

Ссылка на эфир - https://www.youtube.com/watch?v=QK_79ct1m1w

Если есть вопросы - можете задать здесь.

Теги:
Всего голосов 4: ↑3 и ↓1+2
Комментарии0

Вышла библиотека WT JMoodle library v.1.1.0

LMS Moodle является, пожалуй, самой известной и популярной бесплатной Learning Management System — движком для создания онлайн‑курсов. Для того, чтобы было удобно работать с данными Moodle внутри Joomla через встроенное REST API Moodle создана нативная библиотека для Joomla 4 / Joomla 5

v.1.1.0 Что нового?

  • Helper\Course. В REST API более 700 методов. Библиотека поддерживает хелперы для методов, которые позволяют проверять структуру отправляемых данных до отправки собственно запроса и тем самым не нагружать лишний раз API Moodle. Добавлены правила проверки структуры данных для методов core_course_

  • Поле списка курсов Courselist Joomla Form. Добавлено Joomla Form поле, отображающее в Joomla список курсов Moodle. Для работы поля требуется разрешённый метод core_course_get_courses и настроенные в Moodle права доступа. Поля Joomla Form позволяют легко использовать в интерфейсе своих расширений (в модулях, плагинах и т. д.) данные, получаемые из Moodle по API.

Страница расширения

Помощь в развитии библиотеки приветствуется на GitHub расширения

Расширение в Joomla Extensions Directory

Теги:
Всего голосов 4: ↑3 и ↓1+2
Комментарии0

Доброго времени суток, господа PHP-шнички. Вчера вышла Laravel 11, и я собрал её в докер вместе с Octane, PostgreSQL и Redis вместо вас. Пользуйтесь, если вдруг кому понадобится.

Github.

Мой телеграм канал. Не подписывайтесь.

Теги:
Всего голосов 7: ↑4 и ↓3+1
Комментарии0