Новости Joomla

Вышли релизы безопасности Joomla 6.1.3 и Joomla 5.4.8

Релиз безопасности Joomla 6.1.3 и Joomla 5.4.8

Проект Joomla! рад сообщить о выходе Joomla 6.1.3 и Joomla 5.4.8. Это релизы безопасности и исправления ошибок для серий 5.x и 6.x.

👩‍💻 WT Otpravkapochtaru - библиотека сервиса Отправка Почты России для Joomla-разработчиков.

👩‍💻 WT Otpravkapochtaru - библиотека сервиса Отправка Почты России для Joomla-разработчиков.

Joomla 5+ пакет для интеграции с API Почты России: нормализация данных, расчёт доставки, создание отправлений, партии, документы, возвраты, поиск отделений, справочники и SOAP-отслеживание.

v.3.0.0. Что нового?
Это дальнейшее развитие ранее закрытой Joomla-библиотеки для работы с API сервиса Отправка (для бизнеса) Почты России. Поэтому версия не 1.0.0, а 3.0.0.

Сейчас эта библиотека ушла от собственных реализаций и стала Joomla-обёрткой известного PHP SDK от Lapay Group.

Возможности библиотеки.
- получение настроек аккаунта, точек сдачи и текущего остатка запросов к API;
- нормализация адресов, ФИО и телефонов перед созданием отправления;
- расчёт тарифа и срока доставки;
- создание, поиск, изменение, удаление и возврат заказов в состояние «Новые»;
- проверка надёжности получателя;
- создание партий, просмотр партий и заказов внутри партии;
- генерация пакета печатных документов и формы Ф103;
- создание, изменение и удаление возвратных отправлений;
- поиск отделений по индексу, адресу и координатам, получение сервисов отделения;
- локальный список стран;
- SOAP-отслеживание операций по РПО и работа с билетами пакетного трекинга.

👩‍💻 Joomla-возможности.
В пакете библиотеки WT Otpravkapochtaru есть поля Joomla Form для расширений. Они позволяют работать в интерфейсе Joomla с некоторыми типами данных, получаемых по API из вашего личного кабинета в ЛК Почты России для бизнеса.
На данный момент в библиотеке доступны 3 поля списков, которые отображают доступные в аккаунте ОПС, типы и категории отправлений.
Поддерживаются зависимые списки: значение одного поля обновляется при изменении другого.

Системные требования.
Системные требования в основном связаны с системными требованиями апстрима библиотеки - LapayGroup PHP SDK.
- Joomla 5+
- PHP 8.3+
- Расширения PHP:
-- ext-mbstring
-- ext-simplexml
-- ext-soap (опционально, для трекинга)
-- ext-zip

Ссылки:
- Страница расширения
- GitHub библиотеки и документация

@joomlafeed

0 Пользователей и 1 Гость просматривают эту тему.
  • 0 Ответов
  • 1066 Просмотров
*

nvyush

  • Осваиваюсь на форуме
  • 17
  • 1 / 0
Сообщение напрашивается в раздел "Баги Joomla", но создавать там темы у меня прав нет.
Недавно понадобилось импортировать большой объём данных (категорий и материалов) из другой системы в Joomla! 3.4.5.
Сгенерировать нужные значения для полей `parent_id` и `level` таблиц `#__assets` и `#__categories` труда не составило, а для полей `lft` и `rgt` установил -1 в надежде после импорта перестроить штатными средствами Joomla.
Для таблицы категорий такой инструмент имеется (кнопка "Перестроить" в менеджере категорий), а вот для таблицы `#__assets` пришлось написать свой модуль (бесплатного в сети не нашёл, да и платного тоже). В ходе написания обнаружил, что класс JTableAsset наследуется от класса JTableNested, в котором есть "магический" метод rebuild, который собственно и делает то, что мне нужно. Но в этом методе также перестраиваются пути (поле `path`) используя значения поля `alias`. Ни поля `alias`, ни поля `path` в таблице `#__assets` нет, соответственно, вызов метода rebuild для объекта класса JTableAsset вызывает ошибку.
Для решения данной проблемы написал класс JTableAssetRebuild, наследующий от JTableAsset и переопределяющий метод rebuild. Правильней конечно было бы либо переопределить указанный метод непосредственно в классе JTableAsset, либо переписать всю иерархию классов в части JTableNested и JTableAsset, например, добавить в иерархию класс перед JTableNested с "правильным" rebuild (и другими полями/методами) и наследовать JTableAsset уже от него. [upd] Либо в классе JTableNested имеющийся rebuild переименовать, например, в _rebuildWithAlias и сделать его protected, добавить protected метод _rebuildWithoutAlias с аналогичным кодом, но без обновления путей (код ниже), а также добавить вызывающий их public метод rebuild (код ниже)  [/upd]. Однако влезать в код ядра Joomla не хотел, чтобы не потерять изменения при обновлении. Если у кого-нибудь есть возможность сообщить о данной ошибке разработчикам Joomla!, прошу сделать это.

Вот собственно код метода ([upd]если добавлять его как protected в класс JTableNested, то переименовать в _rebuildWithoutAlias и не забыть про рекурсивный вызов [/upd]):
Код
	/**
* Method to recursively rebuild the whole nested set tree.
*
* @param   integer  $parentId  The root of the tree to rebuild.
* @param   integer  $leftId    The left id to start with in building the tree.
* @param   integer  $level     The level to assign to the current nodes.
*
* @return  integer  1 + value of root rgt on success, false on failure
*
* @throws  RuntimeException on database error.
*/
public function rebuild($parentId = null, $leftId = 0, $level = 0)
{
// If no parent is provided, try to find it.
if ($parentId === null)
{
// Get the root item.
$parentId = $this->getRootId();

if ($parentId === false)
{
return false;
}
}

$query = $this->_db->getQuery(true);

// Build the structure of the recursive query.
if (!isset($this->_cache['rebuild.sql']))
{
$query->clear()
->select($this->_tbl_key)
->from($this->_tbl)
->where('parent_id = %d')
->order('parent_id, lft');

$this->_cache['rebuild.sql'] = (string) $query;
}

// Make a shortcut to database object.

// Assemble the query to find all children of this node.
$this->_db->setQuery(sprintf($this->_cache['rebuild.sql'], (int) $parentId));

$children = $this->_db->loadObjectList();

// The right value of this node is the left value + 1
$rightId = $leftId + 1;

// Execute this function recursively over all children
foreach ($children as $node)
{
/*
* $rightId is the current right value, which is incremented on recursion return.
* Increment the level for the children.
*/
$rightId = $this->rebuild($node->{$this->_tbl_key}, $rightId, $level + 1); //в классе JTableNested заменить на _rebuildWithoutAlias !

// If there is an update failure, return false to break out of the recursion.
if ($rightId === false)
{
return false;
}
}

// We've got the left value, and now that we've processed
// the children of this node we also know the right value.
$query->clear()
->update($this->_tbl)
->set('lft = ' . (int) $leftId)
->set('rgt = ' . (int) $rightId)
->set('level = ' . (int) $level)
->where($this->_tbl_key . ' = ' . (int) $parentId);
$this->_db->setQuery($query)->execute();

// Return the right value of this node + 1.
return $rightId + 1;
}

/**
* код метода rebuild для класса JTableNested
*/
public function rebuild($parentId = null, $leftId = 0, $level = 0, $path = '') {
$fields = $this->getFields();

if (isset($fields['alias'])) {
return $this->_rebuildWithAlias($parentId, $leftId, $level, $path);
} else {
return $this->_rebuildWithoutAlias($parentId, $leftId, $level);
}
}




« Последнее редактирование: 17.11.2015, 16:03:31 от nvyush »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Ошибка Missing field in database: Joomla\CMS\Table\Extension   extension_id

Автор Ragivort

Ответов: 1
Просмотров: 6917
Последний ответ 25.12.2025, 21:10:01
от fbr
Не работает менеджер материалов, ошибка 500 SSL certificate problem

Автор Екатерина М

Ответов: 5
Просмотров: 8518
Последний ответ 06.04.2025, 09:27:20
от wishlight
Ошибка 0 Call to undefined function GuzzleHttp\choose_handler()

Автор Alllex

Ответов: 0
Просмотров: 2312
Последний ответ 15.03.2024, 21:03:09
от Alllex
Ошибка version_compare(): Argument #3 ($operator)

Автор Шмайсер

Ответов: 1
Просмотров: 2471
Последний ответ 07.11.2023, 20:44:21
от fsv
reCapcha во всплывающем окне - "Ошибка защиты от спама"

Автор Dannik

Ответов: 12
Просмотров: 3813
Последний ответ 14.09.2023, 18:59:24
от all_zer