Новости Joomla

Совет по Joomla: $db->getQuery(true) стал устаревшим

Совет по Joomla: $db->getQuery(true) стал устаревшим

👩‍💻 Совет по Joomla: $db->getQuery(true) стал устаревшим.Раньше при создании запросов в базу данных мы всегда получали объект запроса с помощью метода

getQuery(). Если передавался параметр
$new =
true, то получали новый запрос. Если без - последний.

use Joomla\CMS\Factory;$db = Factory::getContainer()->get('DatabaseDriver');$query = $db->getQuery(new: true);// и строим запрос
Под капот Joomla 4 вошёл Joomla Framework (PHP фреймворк а-ля Laravel, Yii и т.д.), а для Joomla 5 он обновился - версия 3.4.1 вышла 6 октября 2023г. В методе фреймворка есть примечание о том, что параметр
$new, который передавался в метод
getQuery() помечен как устаревший и будет удалён в версии фреймворка 4.0.
The parameter $new is deprecated and will be removed in 4.0, use %s::createQuery() instead.В Joomla 4 версия Joomla Framework была 2.x., в Joomla 5 - 3.x. Поэтому есть предположение, что с выходом Joomla 6 обновится и версия фреймворка - станет 4.0. Поэтому для получения объекта для новых запросов следует использовать метод
createQuery(). Он уже представлен в ядре и широко используется. При этом метод
getQuery() останется, но, скорее всего, будет выполнять функцию только геттера - получения текущего запроса.
@joomlafeed#joomla #php #разработка

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

Eol

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Здравствуйте. Подскажите, пожалуйста, как должен выглядеть код, выводящий название группы пользователей (Author, Administrator, Editor и т. д.) к которой принадлежит автор комментария?

К примеру, вывод группы к которой принадлежит пользовать, просматривающий сайт, выглядит так:
Цитировать
<?php
$user =& JFactory::getUser();
?>
<?php
echo $user->usertype
?>

А как вывести группу, к которой принадлежит автор комментария? То есть, что вот "этот" комментатор - Author, а "этот" - Editor и т. д.
Как, например, сделано в DWho's Online:к названию класса (стиля) добавляется название группы (mod_dwhosonline-super-administrator), к которой принадлежит пользователь. За счёт этого, можно задавать разные стили отображения ников, разным группам пользователей.

Пожалуйста, подскажите, как реализовать подобное в JComments.
« Последнее редактирование: 27.11.2009, 01:21:05 от smart »
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Ну технически это добавить можно, но в настоящий момент данная модификация потребует лишний запрос к БД для каждого из пользователей, и это существенно увеличит нагрузку на сервер. Подумайте, нужно ли оно вам? В будущем, я подумаю, может быть я добавлю выборку этих данных вместе со списком комментариев.
« Последнее редактирование: 27.11.2009, 01:21:16 от smart »
*

Eol

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Подумайте, нужно ли оно вам? В будущем, я подумаю, может быть я добавлю выборку этих данных вместе со списком комментариев.

Большое спасибо за ответ.

На счёт запросов к БД, я предпологал, что это может создать неоправданную нагрузку на сервер. Думаю над альтернативным способом, как-то выделить, например, администратора из всех пользователей. Самое простое, что пришло в голову - добавить к логину запрещённый символ, который другие пользователи себе поставить не могут.

Если разберусь, попробую всё-таки добавить выборку usertype и протестировать. Если сделаю, то отпишусь.

Ещё раз, спасибо за ответ. =)
« Последнее редактирование: 23.11.2009, 16:53:33 от Eol »
*

Eol

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Пока что, сделал проверку по имени пользователя, и если имя автора коммента равно имени админа, то стиль "такой", а если не равно, то стандартный. Туповато, конечно, но, хотябы, админа выделить можно. =)

Как сделать выборку названия группы, к которой принадлежит автор комментария, пока что, не смог разобраться. Есть кое-какие идеи, сейчас буду пробовать.
Если кто-нибудь знает, как это сделать, то не откажусь от помощи. =)


Update. Сделал. Заменил в файле tpl_comment.php строчку:
Цитировать
<span class="comment-author_<?php echo $myrow["usertype"];?>"><?php echo $comment->author?></span><br>

на

Цитировать
<?php
$db = & JCommentsFactory::getDBO();
$result = mysql_query("SELECT * FROM jos_users WHERE username='$comment->author'");
$myrow = mysql_fetch_array($result);
$myrow["usertype"] = JString::str_ireplace(' ', '-', JString::strtolower($myrow["usertype"]));
?>
<span class="comment-author_<?php echo $myrow["usertype"];?>"><?php echo $comment->author?></span><br>

Вот бы ещё сделать, чтобы префикс для таблицы (по умолчанию "jos_") автоматически распозновался или вроде того. Кто-нибудь знает, как это реализовать, подскажите, пожалуйста. Сам я технически безграмотный, сделал на сколько позволили полученные за пару дней знания.
« Последнее редактирование: 26.11.2009, 02:08:09 от Eol »
*

SmokerMan

  • Гуру
  • 5291
  • 720 / 26
Вот бы ещё сделать, чтобы префикс для таблицы (по умолчанию "jos_") автоматически распозновался или вроде того. Кто-нибудь знает, как это реализовать, подскажите, пожалуйста. Сам я технически безграмотный, сделал на сколько позволили полученные за пару дней знания.
Ну стандартно ставиться #__таблица, а там Joomla уже сама определяется с префиксом.
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Открой файл /components/com_jcomments/jcomments.php и найди и замени в нем код (встречается дважды):

Код: php
$query = "SELECT c.id, c.object_id, c.object_group, c.userid, c.name, c.username, c.title, c.comment"
."\n, c.email, c.homepage, c.date as datetime, c.ip, c.published, c.checked_out, c.checked_out_time"
."\n, c.isgood, c.ispoor"
."\n, v.value as voted"
."\nFROM #__jcomments AS c"
."\nLEFT JOIN #__jcomments_votes AS v ON c.id = v.commentid " . ( $my->id ? " AND  v.userid = ".$my->id : " AND  v.ip = '".$acl->getUserIP(). "'" )
на
Код: php
$query = "SELECT c.id, c.object_id, c.object_group, c.userid, c.name, c.username, c.title, c.comment"
."\n, c.email, c.homepage, c.date as datetime, c.ip, c.published, c.checked_out, c.checked_out_time"
."\n, c.isgood, c.ispoor"
."\n, v.value as voted"
."\n, u.usertype"
."\nFROM #__jcomments AS c"
."\nLEFT JOIN #__jcomments_votes AS v ON c.id = v.commentid " . ( $my->id ? " AND  v.userid = ".$my->id : " AND  v.ip = '".$acl->getUserIP(). "'" )
."\nLEFT JOIN #__users AS u ON u.id = c.userid"

И все... а дальше в шаблоне выводишь вот так:
<span class="comment-author_<?php echo str_replace(' ', '-', $comment->usertype);?>"><?php echo $comment->author; ?></span><br>

И в принципе все... Ни одного лишнего запроса и все что требуется есть.
« Последнее редактирование: 28.11.2009, 02:56:04 от smart »
*

Eol

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Ну стандартно ставиться #__таблица, а там Joomla уже сама определяется с префиксом.

Спасибо буду знать. =)

Открой файл...

И все... а дальше в шаблоне выводишь вот так:
<span class="comment-author_<?php echo str_replace(' ', '-', $comment->usertype;);?>"><?php echo $comment->author; ?></span><br>

И в принципе все... Ни одного лишнего запроса и все что требуется есть.

Спасибо большое, что так подробно рассказали. =)

Только вот тут:

Код
<?php echo str_replace(' ', '-', $comment->usertype;);?>

- наверное, ";" перед ")" - лишняя. По крайней мере, из-за неё "syntax error" была. =)
« Последнее редактирование: 02.12.2009, 02:55:25 от Eol »
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
- двоеточие перед ")", наверное, лишнее. По крайней мере, из-за него "syntax error" была. =)
угу, поторопился, не заметил
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как вместо "Недостаточно прав для написания комментария" вывести модуль?

Автор VAlex1983

Ответов: 5
Просмотров: 3921
Последний ответ 14.09.2022, 11:43:14
от Vlad1
Уведомления на почту до публикации комментария?

Автор romagromov

Ответов: 8
Просмотров: 1164
Последний ответ 02.08.2019, 18:19:47
от ProtectYourSite
Как изменить ширину поля для ввода комментария и логина?

Автор serzh-serega

Ответов: 10
Просмотров: 1283
Последний ответ 20.09.2018, 11:45:58
от serzh-serega
Вывод всех комментариев на отдельной странице

Автор Rom008

Ответов: 3
Просмотров: 1731
Последний ответ 11.05.2018, 04:41:19
от Cedars
Вывод JComments в модуль html-код

Автор myrka

Ответов: 1
Просмотров: 1542
Последний ответ 01.10.2017, 15:21:52
от korkka44