Новости Joomla

Обновление пакета плагинов JL Like 5.0

Обновление пакета плагинов  JL Like 5.0

Обновление пакета плагинов JL Like 5.0.0Команда JoomLine рада представить долгожданное обновление плагина социальных кнопок JL Like — версию 5.0.0! В этом релизе мы сделали акцент на совместимости с последними версиями Joomla, улучшении производительности и расширении функционала.👩‍💻 Что нового в JL Like 5.0.0?- Полная совместимость с Joomla 5 — теперь плагин работает на всех актуальных версиях Joomla, включая Joomla 5.- Рефакторинг и оптимизация кода — проведена масштабная чистка и обновление внутренних классов для повышения стабильности и скорости работы.- Удаление устаревших зависимостей — полностью отказались от использования jQuery, что ускорило загрузку страниц и повысило безопасность.- Обновление CSS и удаление неиспользуемых стилей — интерфейс стал еще легче и современнее.- Удалена поддержка устаревших виджетов — например, функциональность твиттер-виджета вынесена из плагина.- Поддержка twitter:card — улучшена интеграция с социальными сетями для красивого отображения ссылок.- Гибкая настройка счетчиков лайков — теперь можно включать и отключать рандомизацию количества лайков.- Улучшено подключение скриптов — переход на WebAssetManager для более корректной работы с ресурсами.- Обновлены языковые переменныеРасширения всё ещё наследуют старую архитектуру плагинов Joomla 3, но были протестированы на Joomla 5.3.Новость на сайте JoomlineСтраница расширенияGitHub расширения@joomlafeed#расширения

Совет по 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 Гость просматривают эту тему.
  • 6 Ответов
  • 4778 Просмотров
*

Vasabi

  • Осваиваюсь на форуме
  • 25
  • 3 / 0
У меня интеграция Joomla и vBulletin

Проблема заключается в том, что при регистрации данные пользователя записываются в таблицы (Joomla и vBulletin), а мне нужно, чтобы и в таблицу comprofiler от Community Builder.

Все начинает правильно работать, если воспользоваться синхронизацией в админке Joomla Components -> Community Builder->Tools Manager.

Коротко о том, что мне нужно:
Подскажите, пожалуйста, как очеловечить запрос, чтобы он работал не в joomla, а скажем если его поместить в в vb/register.php

$sql ="INSERT IGNORE INTO j_pp_comprofiler(id,user_id,lastname,firstname) "
." SELECT id,id, SUBSTRING_INDEX(name,' ',-1), "
."SUBSTRING( name, 1, length( name ) - length( SUBSTRING_INDEX( name, ' ', -1 ) ) -1 ) "
." FROM j_pp_users";

Подробнее:

Я из компонента достал полностью функцию, которая занимается синхронизацией
////////////////////////////////////////////////////////////////////////////////////////////////
Код
function syncUsers() {
    global $_CB_database, $my, $ueConfig;

    // 1. add missing comprofiler entries, guessing naming depending on CB's name style:
switch ( $ueConfig['name_style'] ) {
case 2:
// firstname + lastname:
  $sql = "INSERT IGNORE INTO #__comprofiler(id,user_id,lastname,firstname) "
    ." SELECT id,id, SUBSTRING_INDEX(name,' ',-1), "
  ."SUBSTRING( name, 1, length( name ) - length( SUBSTRING_INDEX( name, ' ', -1 ) ) -1 ) "
    ." FROM #__users";   
break;
case 3:
// firstname + middlename + lastname:
$sql = "INSERT IGNORE INTO #__comprofiler(id,user_id,middlename,lastname,firstname) "
. " SELECT id,id,SUBSTRING( name, INSTR( name, ' ' ) +1,"
  ." length( name ) - INSTR( name, ' ' ) - length( SUBSTRING_INDEX( name, ' ', -1 ) ) -1 ),"
." SUBSTRING_INDEX(name,' ',-1),"
." IF(INSTR(name,' '),SUBSTRING_INDEX( name, ' ', 1 ),'') "
. " FROM #__users";
    break;
    default:
  // name only:
$sql = "INSERT IGNORE INTO #__comprofiler(id,user_id) SELECT id,id FROM #__users";
    break;
    }
$_CB_database->setQuery($sql);
if (!$_CB_database->query()) {
print("<font color=red>SQL error" . $_CB_database->stderr(true)."</font><br />");
return;
}
$affected = mysql_affected_rows();
if ($affected) {
print "<p><font color='orange'>Added ".$affected." new entries to Community Builder from users Table.</font></p>";
}

$sql = "UPDATE #__comprofiler SET `user_id`=`id`";
$_CB_database->setQuery($sql);
if (!$_CB_database->query()) {
print("<font color=red>SQL error" . $_CB_database->stderr(true)."</font><br />");
return;
}
$affected = mysql_affected_rows();
if ($affected) {
print "<p><font color='orange'>Fixed ".$affected." existing entries in Community Builder: fixed wrong user_id.</font></p>";
}

// 2. remove excessive comprofiler entries (e.g. if admin used mambo/joomla delete user function:
$sql = "SELECT c.id FROM #__comprofiler c LEFT JOIN #__users u ON u.id = c.id WHERE u.id IS NULL";
$_CB_database->setQuery($sql);
$users = $_CB_database->loadResultArray();
if (count($users)) {
print "<p><font color='orange'>Removing ".count($users)." entries from Community Builder missing in users Table.</font></p>";
}
if ($_CB_database->getErrorNum()) {
print("<font color=red>SQL error" . $_CB_database->stderr(true)."</font><br />");
return;
}
$msg = deleteUsers($users, true);
print "<p>".$msg."</p>";
print "<font color=green>Joomla/Mambo User Table and Joomla/Mambo Community Builder User Table now in sync!</font>";
}
function _cb_prov_loadAssoc() {
global $_CB_database;
if (!($cur = $_CB_database->query())) {
return null;
}
$ret = null;
if ($array = mysql_fetch_array( $cur, MYSQL_ASSOC )) {
$ret = $array;
}
mysql_free_result( $cur );
return $ret;
}

/**
* Fetch a result row as an associative array
*
* return array
*/

С того, что я понял, мне нужно, чтобы при регистрации  выполнялся вот такой запрос :
Код
$sql ="INSERT IGNORE INTO j_pp_comprofiler(id,user_id,lastname,firstname) "
." SELECT id,id, SUBSTRING_INDEX(name,' ',-1), "
."SUBSTRING( name, 1, length( name ) - length( SUBSTRING_INDEX( name, ' ', -1 ) ) -1 ) "
." FROM j_pp_users";

По моих соображениях, если вставить
Код
$sql ="INSERT IGNORE INTO j_comprofiler ….."
$db->setQuery($sql);
в vb/register.php
в строку 1020 до команды
// activate account
$userdata->save();

Должно заработать

Заранее спасибо!
« Последнее редактирование: 28.08.2007, 19:37:33 от Vasabi »
*

Vasabi

  • Осваиваюсь на форуме
  • 25
  • 3 / 0
сразу говорю, что далек от программирования

но я так понимаю, что запрос в таком виде не есть рабочим, если, например, через phpmyadmin запустить

INSERT IGNORE INTO j_pp_comprofiler(id,user_id,lastname,firstname) "
." SELECT id,id, SUBSTRING_INDEX(name,' ',-1), "
."SUBSTRING( name, 1, length( name ) - length( SUBSTRING_INDEX( name, ' ', -1 ) ) -1 ) "
." FROM j_pp_users"


Как его нужно подправить?
*

Yurets

  • Захожу иногда
  • 405
  • 92 / 0
  • Губернатор острова Борнео
А если поудалять двойные кавычки и точки между ними?
В комнате с белым потолком
*

Vasabi

  • Осваиваюсь на форуме
  • 25
  • 3 / 0
Да, спасибо помогло

Запрос выполнен:
Добавлены ряды: 1 (Запрос занял 0.0042 сек)

как и должно было.

Но теперь не заходит в личный профиль CB.

Хочу заново переустановить Joomla, vBulletin, CB и мост.
Есть вариант, что до этого запроса я уже что-то там запорол.

Я еще в эту тему вернусь)
*

Vasabi

  • Осваиваюсь на форуме
  • 25
  • 3 / 0
Задача, чтобы с помощью моста ббПиксель при регистрации данные профиля еще и записывались в таблицу jos_comprofiler компонента Community Builder для Joomla.

На будущее тем, кто захочет, чтобы при сборке joomla, vBulletin, bbpixel и Community Builder для Joomla проходила полная регистрация, в смысле, чтобы и работал профиль Community Builder нужно:

В админке VB => продукты и модули => управлиние модулями => выбераем jvbRegister => в конце ‘Код PHP модуля’ добавляем строку

$db->query_write ("INSERT IGNORE INTO jos_comprofiler(id,user_id) SELECT id,id FROM jos_users");

И все работает!

Предупреждение:
vBulletin, bbpixel являются платными продуктами и использование без лицензии их может привести к тому, что однажды ваш сайт закроют!
*

Yurets

  • Захожу иногда
  • 405
  • 92 / 0
  • Губернатор острова Борнео
Vasabi, а можно в личку скинуть ссылку на "http://посмотреть.что.получилось/"?
В комнате с белым потолком
*

Vasabi

  • Осваиваюсь на форуме
  • 25
  • 3 / 0
Ок, скину.

Как только закончится реконструкция!.
Потому что сейчас там большая надпись – «Реконструкція! Скоро повернемося».

На выходных планирую все сделать.

Я сразу скину.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

CommunityBuilder 2.1.2 не приходит email уведомление Администраm

Автор bicka

Ответов: 2
Просмотров: 3718
Последний ответ 14.07.2017, 13:34:11
от bicka
Поля, невидимые пользователям - только адм

Автор stepan39

Ответов: 0
Просмотров: 1271
Последний ответ 30.09.2015, 13:50:00
от stepan39
Про скрытие вкладок в профиле

Автор Kalipso

Ответов: 6
Просмотров: 1442
Последний ответ 15.12.2013, 15:34:49
от Kalipso
Как сделать имя автора, ссылкой на странич

Автор spanchermen

Ответов: 3
Просмотров: 2662
Последний ответ 20.10.2012, 04:07:14
от asv1001
Глюки с вкладкой "статистика" в профиле

Автор 20strannik08

Ответов: 2
Просмотров: 1645
Последний ответ 10.10.2012, 20:21:54
от 20strannik08