Новости 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

Вышел релиз Revo PageBuilder Toolkit for YOOtheme Pro 1.6

Вышел релиз Revo PageBuilder Toolkit for YOOtheme Pro 1.6.2PageBuilder Toolkit - это специализированный плагин для конструктора страниц Yootheme Pro, содержит набор различных утилит для ускорения процесса работы и отладки макета, множественные улучшения в интерфейсе, включая поддержку dark mode, подсказки, быстрая смена разрешения в окне просмотра и много чего еще.v.1.6.2 Что нового?- Индикатор статусов: теперь не просто показывает состояние запросов, но и делает автоматические попытки их отправки при кратковременных сбоях в сети, а если это не помогло, то переводит конструктор в ручной режим, что позволяет сохранит макет и настройки темы прежде чем вы потеряете все, что было сделано с момента последнего сохранения- Подсветка ошибок в макете: плагин анализирует код страницы и может автоматически подсвечивать data атрибуты с кучей мусора, которые попадают в код страницы при копипасте из Figma в TinyMCE (пригодится для старых макетов, в текущей работе плагин сам очищает код мусора). Также есть подсветка семантических ошибок сборки - дубли h1 тега на странице и вложенных друг в друга заголовков.- Улучшена поддержка будущего релиза Yootheme Pro 5 и редактора CodeMirror 6Плагин для русскоязычных пользователей доступен в каталоге расширений SovMart и распространяется за символическую плату (100р). Разработчики Joomla расширений и партнеры автора могут получить плагин бесплатно.Для работы плагина необходим конструктор страниц Yootheme Pro.Разработчик плагина - участник нашего сообщества Александр Судьбинов (@alexrevo), член официальной группы поддержки Yootheme Pro. Страница расширенияОписание на сайте автора@joomlafeed#joomla #yootheme

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

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Правильность синтаксиса запроса
« Ответ #90 : 30.08.2017, 17:50:02 »
А с этим com_spsimpleportfolio/models/items.php?
Не будь паразитом, сделай что-нибудь самостоятельно!
*

PRammer

  • Захожу иногда
  • 119
  • 0 / 0
Re: Правильность синтаксиса запроса
« Ответ #91 : 30.08.2017, 17:55:54 »
А с этим com_spsimpleportfolio/models/items.php?
Неа...
Та же ошибка...
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Правильность синтаксиса запроса
« Ответ #92 : 30.08.2017, 18:02:39 »
Если этот вариант тоже не поможет, то не знаю, где еще искать.
« Последнее редактирование: 31.08.2017, 11:43:41 от robert »
Не будь паразитом, сделай что-нибудь самостоятельно!
*

PRammer

  • Захожу иногда
  • 119
  • 0 / 0
Re: Правильность синтаксиса запроса
« Ответ #93 : 30.08.2017, 18:11:45 »
Если этот вариант тоже не поможет, то не знаю, где еще искать.

Как-то странно. Может я что-то забыл...
#1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ') ORDER BY id ASC' at line 3 SQL=SELECT `id`,`title`,`alias` FROM `#__spsimpleportfolio_tags` WHERE `id` IN () ORDER BY id ASC

1. Файл items.php в components/com_spsimpleportfolio/models заменил на ваш
2. Файл helper.php в modules/mod_spsimpleportfolio заменил на ваш
3. Файл mod_spsimpleportfolio.php в modules/mod_spsimpleportfolio заменил на ваш
4. Правил mod_spsimpleportfolio.xml
на
Код
<field name="spsimpleportfolio_tags" type="spsimpleportfoliotags" label="MOD_SPSIMPLEPORTFOLIO_CATEGORY" multiple="multiple" class="input-xxlarge" description="MOD_SPSIMPLEPORTFOLIO_CATEGORY" />
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Правильность синтаксиса запроса
« Ответ #94 : 30.08.2017, 18:20:33 »
Черт, здесь еще: com_spsimpleportfolio/helpers/helper.php. Какое-то полное г..но, вы точно эти файлы не меняли?
« Последнее редактирование: 31.08.2017, 11:44:07 от robert »
Не будь паразитом, сделай что-нибудь самостоятельно!
*

capricorn

  • Завсегдатай
  • 1949
  • 118 / 3
Re: Правильность синтаксиса запроса
« Ответ #95 : 30.08.2017, 21:47:33 »
Более менее прошелся внимательнее по теме. Может быть такое, что MariaDB не любит пробелы или кавычки не те?

Код: sql
$query->select($db->quoteName(array('id', 'title', 'alias')));
$query->from($db->quoteName('#__spsimpleportfolio_tags'));
$query->where($db->quoteName('id')." IN (" . $ids . ")");

$query->order('id ASC');

$db->setQuery($query);

Интересно, MySQL сгенерит эту ошибку. Я бы первым делом на нем проверил.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Правильность синтаксиса запроса
« Ответ #96 : 31.08.2017, 08:08:11 »
Зачем гадать? В тексте ошибки прямо указано, что это синтаксическая ошибка в IN() - он не должен быть пустым.
Прекляняюсь перед разработчиком этого чуда: соорудил запрос с IN без проверки наличия аргументов, модель и хелпер дублируют друг друга.
Думаю, что ошибка теперь вызывается уже не в модуле, а где-то в компоненте.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Правильность синтаксиса запроса
« Ответ #97 : 31.08.2017, 08:11:51 »
о, @capricorn , это тот запрос, на котором ошибка вываливается?

Может быть такое, что MariaDB не любит пробелы или кавычки не те?
откровенно говоря не думаю. там все одинаково в этом плане у mariadb с mysql. там отличия в другом, в оптимизации, и прочем.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

capricorn

  • Завсегдатай
  • 1949
  • 118 / 3
Re: Правильность синтаксиса запроса
« Ответ #98 : 31.08.2017, 09:23:23 »
Цитировать
Зачем гадать? В тексте ошибки прямо указано, что это синтаксическая ошибка в IN() - он не должен быть пустым
.

Это понятно. Ну и че дальше? Смешно конечно, но интересно. С чего оно пустое?
« Последнее редактирование: 31.08.2017, 09:33:11 от capricorn »
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Правильность синтаксиса запроса
« Ответ #99 : 31.08.2017, 09:44:03 »
ну так надо смотреть с чего $ids пустое. mysql то че? ему что передали, он то и выполнил. ничего не передали - ничего не выполнил :)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

PRammer

  • Захожу иногда
  • 119
  • 0 / 0
Re: Правильность синтаксиса запроса
« Ответ #100 : 31.08.2017, 10:44:41 »
#1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ') ORDER BY id ASC' at line 3 SQL=SELECT `id`,`title`,`alias` FROM `#__spsimpleportfolio_tags` WHERE `id` IN () ORDER BY id ASC

Даже вот так, для полноты картины
Код
$query->where('id IN111('.implode(',', array_filter($params->get('spsimpleportfolio_tags'))).')');
#1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'IN111(10,6,7) AND `a`.`access` IN (1,1,5) ORDER BY `a`.`ordering` ASC LIMIT 6' at line 3 SQL=SELECT a.*, a.id AS spsimpleportfolio_item_id , a.tagids AS spsimpleportfolio_tag_id, a.created AS created_on FROM `#__spsimpleportfolio_items` AS `a` WHERE `a`.`published` = 1 AND id IN111(10,6,7) AND `a`.`access` IN (1,1,5) ORDER BY `a`.`ordering` ASC LIMIT 6

Ранее делали проверку и видно, что данные поступают... Это даже не затрагивали компонент. Кажется, мы не там копаем...
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Правильность синтаксиса запроса
« Ответ #101 : 31.08.2017, 10:53:19 »
это вы не там копаете. и никакую вы проверку данных не делаете. потому что вы опять показывает ту ошибку которая к запросу не имеет никакого отношения. сколько раз надо сказать, что в ошибке у вас
Цитировать
WHERE `id` IN ()
а затем вы показываете совсем другое
Цитировать
`a`.`published` = 1 AND id IN111(10,6,7)
что мне надо еще сказать, как вам это объяснить? :) вы показываете формирование запроса одно, а ошибку совсем по другому запросу.

и прекратите делать наконец то "Даже вот так, для полноты картины" :) вы ничего так не отлаживате, а только путаете и себя и нас.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Правильность синтаксиса запроса
« Ответ #102 : 31.08.2017, 10:59:00 »
@capricorn ранее показал код, который очень похож на тот, который нужен. где он находится? смотрите там, почему $ids пуст.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

capricorn

  • Завсегдатай
  • 1949
  • 118 / 3
Re: Правильность синтаксиса запроса
« Ответ #103 : 31.08.2017, 11:47:10 »
Белый песец. ТС - дамп выложите, раз до такого дошло. придется подошвы стирать для проверки.

dmitry_stas - надо проверить. не будьте самоуверенным. всякое бывает.
« Последнее редактирование: 31.08.2017, 11:53:09 от capricorn »
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Правильность синтаксиса запроса
« Ответ #104 : 31.08.2017, 11:51:59 »
В com_spsimpleportfolio/models/items.php
Спойлер
[свернуть]
В com_spsimpleportfolio/helpers/helper.php
Спойлер
[свернуть]
Но почему-то ошибка все равно вылезает, вот и подумал, что в других файлах компонента то же самое.
P.S. Последние вложения обновил.
« Последнее редактирование: 31.08.2017, 11:56:44 от robert »
Не будь паразитом, сделай что-нибудь самостоятельно!
*

capricorn

  • Завсегдатай
  • 1949
  • 118 / 3
Re: Правильность синтаксиса запроса
« Ответ #105 : 31.08.2017, 11:54:56 »
ТС- Дамп таблиц выложи

del.
« Последнее редактирование: 31.08.2017, 12:55:55 от capricorn »
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Правильность синтаксиса запроса
« Ответ #106 : 31.08.2017, 12:10:07 »
capricorn, соблюдайте приличие, мы с вами на брудершафт не пили. И засуньте себе в одно место ваши неумелые советы, а также неуместные нотации.
Никакого дампа у меня нет, понятно? И у меня никакой 1064 запрос никуда не идет.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

capricorn

  • Завсегдатай
  • 1949
  • 118 / 3
Re: Правильность синтаксиса запроса
« Ответ #107 : 31.08.2017, 12:53:52 »
Извините, не хотел вас обидеть. На ты обратился по привычке общения с коллегами. Где не важно вы-ты.

Мне вообще как-то, все равно. Я могу разобраться в этом вопросе при желании. Просто вы приводите код из нескольких строк, и сами не можете понять в чем дело. Зачем тогда советы даете.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Правильность синтаксиса запроса
« Ответ #108 : 31.08.2017, 13:05:43 »
capricorn, это вы не понимаете, в чем дело, горя при этом желанием давать советы.
Из того, что дал ТС, я исправил все, что могло вызвать приведенную ошибку. Чтобы ее устранить, нужно иметь доступ к остальным файлам, связанным с не, а вообще - к сайту целиком. У меня нет никакого желания этого делать, вот я и выложил старый и и исправленный варианты кода, чтобы ТС имел представление,что искать у себя.
Теперь вам все понятно? Если у вас есть желание и время помочь ТС, вперед, кто вам мешает?
Не будь паразитом, сделай что-нибудь самостоятельно!
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Правильность синтаксиса запроса
« Ответ #109 : 31.08.2017, 13:08:04 »
dmitry_stas - надо проверить. не будьте самоуверенным. всякое бывает.
так а что проверять то? вы ж сами показали код где формируется запрос. и он ну прям очень похож на тот, по которому ошибка. и если это и правда он, то 99% что в нем просто $ids пустой. не могу понять почему ТС его найти не может. там проблемы на пол секунды.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

PRammer

  • Захожу иногда
  • 119
  • 0 / 0
Re: Правильность синтаксиса запроса
« Ответ #110 : 03.09.2017, 16:51:36 »
так а что проверять то? вы ж сами показали код где формируется запрос. и он ну прям очень похож на тот, по которому ошибка. и если это и правда он, то 99% что в нем просто $ids пустой. не могу понять почему ТС его найти не может. там проблемы на пол секунды.
Дратуте))

Проверил и оказалось, что SQL выборка, которая находится в файле helper.php по адресу components/com_spsimpleportfolio/helpers вообще не участвует в работе. Где-то в другом месте все... Копаюсь!
*

PRammer

  • Захожу иногда
  • 119
  • 0 / 0
Re: Правильность синтаксиса запроса
« Ответ #111 : 03.09.2017, 17:08:41 »
Ага...
Тут задействования items.php по адресу components/com_spsimpleportfolio/models
Вот отрезок кода
Код
public function getItemTags($ids, $array = false) {
$db = JFactory::getDbo();
$query = $db->getQuery(true);

if(!is_array($ids)) {
$ids = (array) json_decode($ids, true);
}

$ids = implode(',', $ids);
$query->select($db->quoteName(array('id', 'title', 'alias')));
$query->from($db->quoteName('#__spsimpleportfolio_tags'));
$query->where($db->quoteName('id')." IN (" . $ids . ")");
$query->order('id ASC');
$db->setQuery($query);

$items = $db->loadObjectList();

if($array == true) {
$tags = array();
foreach ($items as $item) {
$tags[] = $item->title;
}
return $tags;
} else {
return $items;
}

return array();
}

Переменную берет
Вот ошибка на данном участке
Код
[i]#1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'IN_TEST (8) ORDER BY id ASC' at line 3 SQL=SELECT `id`,`title`,`alias` FROM `#__spsimpleportfolio_tags` WHERE `id` IN_TEST (8) ORDER BY id ASC[/i]
7-е пекло... Почему оно не работает тогда, если данные заходят?
« Последнее редактирование: 03.09.2017, 17:32:02 от PRammer »
*

PRammer

  • Захожу иногда
  • 119
  • 0 / 0
Re: Правильность синтаксиса запроса
« Ответ #112 : 03.09.2017, 17:31:25 »
Теряются данные, со стороны модуля, когда тот, передает в компонент в SQL запросов для соответствующей выборки...

Вероятнее всего, проблема связана с дописанным кодом от robert в файле mod_spsimpleportfolio.php по адресу modules/mod_spsimpleportfolio

Оригинал
Код
<?php
/**
 * @package     SP Simple Portfolio
 * @subpackage  mod_spsimpleportfolio
 *
 * [member=126442]copyright[/member]   Copyright (C) 2010 - 2017 JoomShaper. All rights reserved.
 * @license     GNU General Public License version 2 or later.
 */

defined('_JEXEC') or die;

require_once __DIR__ . '/helper.php';

JHtml::_('jquery.framework');
jimport('joomla.application.component.model');
JModelLegacy::addIncludePath(JPATH_SITE . '/components/com_spsimpleportfolio/models');
require_once JPATH_BASE . '/components/com_spsimpleportfolio/helpers/helper.php';

$doc = JFactory::getDocument();
$doc->addStylesheet( JURI::root(true). '/components/com_spsimpleportfolio/assets/css/featherlight.min.css' );
$doc->addStylesheet( JURI::root(true). '/components/com_spsimpleportfolio/assets/css/spsimpleportfolio.css' );
$doc->addScript( JURI::root(true). '/components/com_spsimpleportfolio/assets/js/jquery.shuffle.modernizr.min.js' );
$doc->addScript( JURI::root(true). '/components/com_spsimpleportfolio/assets/js/featherlight.min.js' );
$doc->addScript( JURI::root(true). '/components/com_spsimpleportfolio/assets/js/spsimpleportfolio.js' );

$items = ModSpsimpleportfolioHelper::getItems($params);
$model = JModelLegacy::getInstance('Items', 'SpsimpleportfolioModel');
$tagList = $model->getTagList($items);

$moduleclass_sfx = htmlspecialchars($params->get('moduleclass_sfx'));

require JModuleHelper::getLayoutPath('mod_spsimpleportfolio', $params->get('layout', 'default'));
Текущая версия
Код
<?php
/**
 * @package     SP Simple Portfolio
 * @subpackage  mod_spsimpleportfolio
 *
 * [member=126442]copyright[/member]   Copyright (C) 2010 - 2017 JoomShaper. All rights reserved.
 * @license     GNU General Public License version 2 or later.
 */

defined('_JEXEC') or die;

require_once __DIR__ . '/helper.php';

JHtml::_('jquery.framework');
jimport('joomla.application.component.model');
JModelLegacy::addIncludePath(JPATH_SITE . '/components/com_spsimpleportfolio/models');
require_once JPATH_BASE . '/components/com_spsimpleportfolio/helpers/helper.php';

$doc = JFactory::getDocument();
$doc->addStylesheet( JURI::root(true). '/components/com_spsimpleportfolio/assets/css/featherlight.min.css' );
$doc->addStylesheet( JURI::root(true). '/components/com_spsimpleportfolio/assets/css/spsimpleportfolio.css' );
$doc->addScript( JURI::root(true). '/components/com_spsimpleportfolio/assets/js/jquery.shuffle.modernizr.min.js' );
$doc->addScript( JURI::root(true). '/components/com_spsimpleportfolio/assets/js/featherlight.min.js' );
$doc->addScript( JURI::root(true). '/components/com_spsimpleportfolio/assets/js/spsimpleportfolio.js' );

$items = ModSpsimpleportfolioHelper::getItems($params);
$model = JModelLegacy::getInstance('Items', 'SpsimpleportfolioModel');

$tagged_items = array();

foreach ($items as $item) {
$item->tagids = json_decode($item->tagids);

if (!empty($item->tagids)) {
$tagged_items[] = $item;
}
}

if (!empty($tagged_items)) {
$tagList = $model->getTagList($tagged_items);
}

$moduleclass_sfx = htmlspecialchars($params->get('moduleclass_sfx'));

require JModuleHelper::getLayoutPath('mod_spsimpleportfolio', $params->get('layout', 'default'));

Смущает меня замена $tagList = $model->getTagList($items); ....

Как вы считаете?
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Правильность синтаксиса запроса
« Ответ #113 : 03.09.2017, 22:05:43 »
Да, мой косяк: забыл добавить строку $tagList = array();.
У вас есть 2 варианта решения:
1. В modules/mod_spsimpleportfolio/mod_spsimpleportfolio.php замените
Код
$tagList = $model->getTagList($items);
на
Код
$tagged_items = array();
$tagList = array();

foreach ($items as $item) {
$item->tagids = json_decode($item->tagids);

if (!empty($item->tagids)) {
$tagged_items[] = $item;
}
}

if (!empty($tagged_items)) {
$tagList = $model->getTagList($tagged_items);
}

2. Возьмите измененный код функции getItemTags() отсюда и используйте неправленные мной modules/mod_spsimpleportfolio/mod_spsimpleportfolio.php и modules/mod_spsimpleportfolio/helper.php.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

PRammer

  • Захожу иногда
  • 119
  • 0 / 0
Re: Правильность синтаксиса запроса
« Ответ #114 : 07.09.2017, 14:15:00 »
Да, мой косяк: забыл добавить строку $tagList = array();.
У вас есть 2 варианта решения:
1. В modules/mod_spsimpleportfolio/mod_spsimpleportfolio.php замените
Код
$tagList = $model->getTagList($items);
на
Код
$tagged_items = array();
$tagList = array();

foreach ($items as $item) {
$item->tagids = json_decode($item->tagids);

if (!empty($item->tagids)) {
$tagged_items[] = $item;
}
}

if (!empty($tagged_items)) {
$tagList = $model->getTagList($tagged_items);
}

2. Возьмите измененный код функции getItemTags() отсюда и используйте неправленные мной modules/mod_spsimpleportfolio/mod_spsimpleportfolio.php и modules/mod_spsimpleportfolio/helper.php.

))) Что самое интересное, я просто вернул оригинальный файл mod_spsimpleportfolio.php и все заработало

Работает!  ;D 8)
« Последнее редактирование: 07.09.2017, 14:31:47 от PRammer »
*

ghibon

  • Захожу иногда
  • 61
  • 4 / 0
Re: Правильность синтаксиса запроса
« Ответ #115 : 23.11.2018, 10:11:12 »
Только что столкнулся с этой ошибкой 1064 "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') ORDER BY id ASC' at line 3" при ссылке на категорию spsimpleportfolio, собственно потому и нашел эту тему в форуме. Победил ее сразу. Компонент не любит когда ссылаются на пустые данные, в моем случае это были пустые (еще не заполненные) категории. Как только одному из item присвоил нужную категорию, все заработало.
Может кому поможет в будущем
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться