Новости Joomla

Как тестировать Joomla PHP-разработчику? Компонент Patch tester.

👩‍💻 Как тестировать Joomla PHP-разработчику? Компонент Patch tester.Joomla - open source PHP-фреймворк с готовой админкой. Его основная разработка ведётся на GitHub. Для того, чтобы международному сообществу разработчиков было удобнее тестировать Pull Requests был создан компонент Patch Tester, который позволяет "накатить" на текущую установку Joomla именно те изменения, которые необходимо протестировать. На стороне инфраструктуры Joomla для каждого PR собираются готовые пакеты, в которых находится ядро + предложенные изменения. В каждом PR обычно находятся инструкции по тестированию: куда зайти, что нажать, ожидаемый результат. Тестировщики могут предположить дополнительные сценарии, исходя из своего опыта и найти баги, о которых сообщить разработчику. Или не найти, и тогда улучшение или исправление ошибки быстрее войдёт в ядро Joomla. Напомню, что для того, чтобы PR вошёл в ядро Joomla нужны минимум 2 положительных теста от 2 участников сообщества, кроме автора. Видео на YouTubeВидео на VK ВидеоВидео на RuTubeКомпонент на GitHub https://github.com/joomla-extensions/patchtester@joomlafeed#joomla #php #webdev #community

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

olejenya

  • Захожу иногда
  • 218
  • 3 / 0
Привет всем.Нужно решения, если оно есть конечно, что бы компонент обрабатывал код, если юзер зарегистрирован.А то так он работает только если захожу на страницу компоненте, когда создаю меню на компонент.
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Код: php
if (JFactory::getUser()->id) {
//тут всё, что доступно зарегистрированным
}
*

olejenya

  • Захожу иногда
  • 218
  • 3 / 0
Еще разок.
Теперь понятнее только.
Да у меня есть такая проблема))Напишу и сам не понимаю о чем.
В общем делаю вишлист для VirtueMart.Аякс работает через контролер и при клике на кнопку добавляю в БД, если зарегистрирован, а вот когда когда не зарегистрирован то в сесию, и проверка если регистрирован добавить в БД.Так вот в бд добавляет при клике и тогда когда захожу на саму страницу вишлист.А мне надо что если я на любой другой старнице зарегистрировался, то в бд из сесии добавить.И в идеале только 1 раз, а не что бы всегда срабатывал запрос на разных страницах.
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Добавляйте одновременно с записью в БД и в сессию запись. Потом на других страницах проверяйте, перед обращением к БД.
*

olejenya

  • Захожу иногда
  • 218
  • 3 / 0
Добавляйте одновременно с записью в БД и в сессию запись. Потом на других страницах проверяйте, перед обращением к БД.
Та в базу записывать сразу, если не зарегистрирован не вариант.Потом еще дополнительно проверять и удалять.А где в компоненте и как правильно запись сделать что бы он короче на всех страницах работал?
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Теперь опять ничего не понятно %)
*

olejenya

  • Захожу иногда
  • 218
  • 3 / 0
Теперь опять ничего не понятно %)
)))Да я не знаю теперь как правильно объяснить)
Короче у меня есть сесия с айдихами.И мне надо, когда юзер логинеться, то эта сесия записывалась в БД.
Сейчас у меня запись иде, только тогда коглда перехожу по ссылке на компонент.А хотелось бы, что бы при регистрации.И в идеале один раз, что бы этот запрос потом после перезагрузок не срабатывал.
*

olejenya

  • Захожу иногда
  • 218
  • 3 / 0
Привет.В общем я сделал все то что хотел кроме того момента что спрашивал здесь. Решил просто закончить, а потом по неясностям обращаться к вам.
Попробую еще раз объяснить. Компонент вишлист. Я добавляю продукты в сесию и вывожу в самом компоненте.Если юзер залогинился и зашел в компонент вишлиста, то продукты добавлються в БД. Как бы все хорошо.Но вот суть вопроса в том, как добавить в БД, если залогинился и не зашел в компонент?Пока что все как и работает, но вот с этим моментом не могу разобраться(((Чувак может залогиниться сделать покупку, но так и не зайти в компонент вишлиста, и продукты не попадут в БД.Помогите пожалуйстаз
*

olejenya

  • Захожу иногда
  • 218
  • 3 / 0
Вот еще наткнулся на такую проблему.Добавил товар, зарегистрировался и делаю запрос в БД пусто.Проверяю в БД есть товар.Обновляю страницу уже есть в БД товар.Хотя когда я залогинелся, то страница тоже перегрузилась, но в БД ниче не было.
вот код
Код
<?php 
$user =& JFactory::getUser();
if ($user->guest) { ?>
<a class="add_wishlist hasTooltip<?php if (in_array($product->virtuemart_product_id, $_SESSION['id'])) { echo 'go_to_whishlist active'; }?>" title="<?php echo JText::_('ADD_TO_WHISHLIST');?>"  onclick="addToWishlists('<?php echo $product->virtuemart_product_id; ?>');"><span></span><?php echo JText::_("ADD_TO_WHISHLIST"); ?></a>
<?php }else {
$db =& JFactory::getDBO();
   $q ="SELECT virtuemart_product_id FROM #__wishlists WHERE userid =".$user->id;
$db->setQuery($q);
$allproducts = $db->loadAssocList();
foreach($allproducts as $productbd){
$allprod['id'][] = $productbd['virtuemart_product_id'];
}
var_dump($allproducts);
?>
<a class="add_wishlist hasTooltip<?php if (in_array($product->virtuemart_product_id, $allprod['ids'])) { echo 'go_to_whishlist active'; }?>" title="<?php echo JText::_('ADD_TO_WHISHLIST');?>"  onclick="addToWishlists('<?php echo $product->virtuemart_product_id; ?>');"><span></span><?php echo JText::_("ADD_TO_WHISHLIST"); ?></a>

<?php } ?>


А вот код плагина кторый проверяет есть ли значения в сесии и запись делает.
Код
class plgSystemWishlists extends JPlugin
{
/**
* Class Constructor
* @param object $subject
* @param array $config
*/
public function __construct( & $subject, $config )
{
parent::__construct( $subject, $config );

}
function onBeforeRender() {
$app = JFactory::getApplication();
$doc = JFactory::getDocument();
$user =& JFactory::getUser();
if (!($app->isAdmin())){
if (!$user->guest) {
if (isset($_SESSION['id'])) {
$dbIds = $_SESSION['id'];
$db =& JFactory::getDBO();
$q ="SELECT virtuemart_product_id FROM #__wishlists WHERE userid =".$user->id;
$db->setQuery($q);
$allproducts = $db->loadAssocList();
foreach($allproducts as $productbd){
$allprod['ids'][] = $productbd['virtuemart_product_id'];
}
//var_dump ($allproducts);
//print_r($productbd['virtuemart_product_id']);
for($r=0; $r<count($dbIds); $r++) {
if(!in_array($dbIds[$r],$allprod['ids'])) {
   $q = "";
$q = "INSERT INTO `#__wishlists`
(virtuemart_product_id,userid )
VALUES
('".$dbIds[$r]."','".$user->id."') ";
//var_dump ($dbIds[$r]);
$db->setQuery($q);
$db->queryBatch();
   }
   }
unset($_SESSION['id']);
   }
   }
}

}


}  ?>
Я проверяю, после того как залогинился в БД значения появились.Но вот код, проверка кнопки выще, не работает после первой перезагрузки, надо еще раз обновить страницу.Помогите, подскажите куда дальщ рыть.Или я что не так делаю?Я думал что плагин первый отработал событие, но как оказалось одновременно с компонентом что ли.Есть идеи??Спасибо
« Последнее редактирование: 12.12.2013, 00:53:41 от olejenya »
*

b2z

  • Глобальный модератор
  • 7288
  • 778 / 0
  • Разраблю понемногу
Цитировать
Добавил товар, зарегистрировался и делаю запрос в БД пусто.
Кто добавил товар, кто зарегистрировался? Если Вы хотите помощи, то не заставляйте нас ломать себе мозг. Как Вы вообще код пишите, если не можете четко нам пояснить действия?
*

olejenya

  • Захожу иногда
  • 218
  • 3 / 0
Кто добавил товар, кто зарегистрировался? Если Вы хотите помощи, то не заставляйте нас ломать себе мозг. Как Вы вообще код пишите, если не можете четко нам пояснить действия?
Теперь я вас не понимаю.
На сайт заходит юзер.Он или зарегистрирован или нет.Если зарегистрирован он добавляет товар в вишлист и запись делаеться в БД.Если не зарегистрирован, то записиваю в сесию.
Код выше - это плагин который делает проверку и кнопка добавления в вишлист, где я тоже делаю проверку, что бы сделать кнопку активной, если есть запись в БД.
Что именно не ясно?Или какой то код надо еще написать, что бы было яснее?Я не понимаю пока что,  тоже в чем не ясность.
*

mohax

  • Давно я тут
  • 901
  • 66 / 3
Вам нужно сделать плагин, который будет отрабатывать при логине пользователя (onUserLogin). И в нем реализовывать проверку если есть запись в сессии, то писать в БД.

*

olejenya

  • Захожу иногда
  • 218
  • 3 / 0
Вам нужно сделать плагин, который будет отрабатывать при логине пользователя (onUserLogin). И в нем реализовывать проверку если есть запись в сессии, то писать в БД.
Спс.Попробую.Но вопрос все таки остается.Действие в плагине будет обрабатываться первым а в компоненте вторым?Или одновременно??Или как в компоненте на кнопки сделать проверку, что бы выполнялось, после того, как сработает плагин?Уже бьюсь больше недели))и много чего читать по Joomla начал, наверное надо было с этого начинать))
*

mohax

  • Давно я тут
  • 901
  • 66 / 3
Спс.Попробую.Но вопрос все таки остается.Действие в плагине будет обрабатываться первым а в компоненте вторым?Или одновременно??Или как в компоненте на кнопки сделать проверку, что бы выполнялось, после того, как сработает плагин?Уже бьюсь больше недели))и много чего читать по Joomla начал, наверное надо было с этого начинать))
Я не совсем понял проблему, но судя по всему, у вас проблема в том, что событие onBeforeRender() в вашем плагине отрабатывает уже после компонента. Почитайте внимательно про события, по которым отрабатывают плагины в Joomla и выбирите себе подходящий.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как сделать модуль на полный экран? Подробнее в в теме?

Автор 62411

Ответов: 3
Просмотров: 1803
Последний ответ 23.02.2022, 20:35:06
от marksetter
Сделать аналог

Автор pegas-k1

Ответов: 8
Просмотров: 1902
Последний ответ 02.02.2021, 13:56:21
от **vadim**
Как сделать рабочим {loadposition} или jdoc:include в com_content?

Автор Amigo9876

Ответов: 5
Просмотров: 2404
Последний ответ 31.07.2020, 16:49:37
от tigra-uki
Ошибка при регистрации

Автор lilian1982

Ответов: 9
Просмотров: 1878
Последний ответ 07.11.2019, 04:59:51
от Cedars
Как закрыть от посещения страницу регистрации Joomla?

Автор Csandr

Ответов: 27
Просмотров: 7171
Последний ответ 01.04.2019, 18:32:18
от ProtectYourSite