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

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
Просмотров: 1062
Последний ответ 14.07.2017, 13:34:11
от bicka
Поля, невидимые пользователям - только адм

Автор stepan39

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

Автор Kalipso

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

Автор spanchermen

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

Автор 20strannik08

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