Новости Joomla

👩‍💻 WT CDEK library v.1.3.0 - обновление PHP SDK для Joomla + CDEK.

👩‍💻 WT CDEK library v.1.3.0 - обновление PHP SDK для Joomla + CDEK.

Небольшая нативная PHP Joomla библиотека для работы с API v.2 службы доставки CDEK. Библиотека представляет собой клиент для авторизации в CDEK API по OAuth, работы с некоторыми методами API: получения ряда данных и расчета стоимости доставки. Поддерживается Joomla 4.2.7 и выше.

В пакет входят:
- библиотека Webtolk/Cdekapi
- системный плагин System - WT Cdek для хранения настроек и AJAX-интеграций
- task-плагин Task - Update WT Cdek data для обновления локальных копий справочников CDEK по расписанию
- web asset с официальным JavaScript-виджетом СДЭК

👉 v.1.3.0. Что нового?
- Полный рефакторинг библиотеки. Библиотека переработана в entity-based API с фасадом Cdek и отдельным слоем запросов. Обратная совместимость не нарушена, поэтому версия библиотеки - 1.3.0.
- Добавлена поддержка новых разделов API СДЭК. Добавлена поддержка новых разделов API СДЭК: webhooks, prealert, печатные формы, payment, passport, reverse, intakes и других сущностей.
- Улучшена интеграция с Joomla.
Улучшена интеграция с Joomla: installer script для layouts, новые поля Joomla Form для тарифов и обновлённые js виджета CDEK.
- документация библиотеки. Все методы библиотеки подробно описаны, а так же текст документации собран в отдельной папке в git репозитории и будет опубликован на сайте.

Библиотека эта нужна для разработчиков, создающих свои расширения для интеграции Joomla и курьерской службы CDEK.

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

@joomlafeed

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

Aeliot

  • Захожу иногда
  • 107
  • 2 / 0
Подскажите пожалуйста как можно программно авторизоваться на сайте так, чтобы в таблице #__users не обновилось значение последнего визита.
Авторизация собственно происходит таким образом.
Код
$instance = JUser::getInstance();
$instance->load($robotId);

// If _getUser returned an error, then pass it back.
if ($instance instanceof Exception) {
throw new Exception($instance->getMessage(), $instance->getCode());
return false;
}

// If the user is blocked, redirect with an error
if ($instance->get('block') == 1) {
throw new Exception(JText::_('JERROR_NOLOGIN_BLOCKED'), 500);
return false;
}

// Chek the user can login.
if (!$result = $instance->authorise('core.login.admin')){
throw new Exception(JText::_('JERROR_LOGIN_DENIED'), 500);
return false;
}

// Mark the user as logged in
$instance->set('guest', 0);

// Check to see the the session already exists.
JFactory::getApplication()->checkSession();

// Register the needed session variables
$session = JFactory::getSession();
$session->set('user', $instance);

// Create a Database object
$db = JFactory::getDBO();

// Update the user related fields for the Joomla sessions table.
$db->setQuery(
'UPDATE '.$db->quoteName('#__session').
'   SET '.$db->quoteName('guest') .'='.$db->quote($instance->get('guest')).',' .
'     '.$db->quoteName('username') .'='.$db->quote($instance->get('username')).',' .
'     '.$db->quoteName('userid') .'='.$db->quote((int) $instance->get('id')).
' WHERE '.$db->quoteName('session_id') .'='.$db->quote($session->getId())
);
$db->query();
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Скорее всего никак, лично я предлагаю перед авторизацией, запомнить время последнего визита, после сделать запрос что бы поставить это время обратно...
*

Aeliot

  • Захожу иногда
  • 107
  • 2 / 0
Гы-гы-гы... ;D
Все таки победил.
Правда нужно сделать лирическое отступление. Этот скрипт используется только для программной обработки данных кроном, иначе нужно делать то, что предложил Instaan*DRINK*

Так вот, что сделано. Для начала, выкидываем из приведенного кода обновление таблицы сессии (#__session). Зачем нам светить нашего робота в списке последних авторизованных пользователей? Нам это не надо.
Затем, после проведения необходимых операций вместо стандартной схемы выхода пользователя из системы аля...
Код: php
JFactory::getApplication()->logout($robotId);
делаем следующее:
Код: php-brief
		// kill user
$session->set('user', null);
// kill session
$session->destroy();

И конечно, если скрипт отдает какие-то данные, то в начале скрипта нужно добавить буфферизацию вывода,
Код: php
ob_start();
чтобы при убивании сессии не иметь проблем с заголовками.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться