Back to top

Autore Topic: unire tabelle user profile e cb [joomla 2.5.8]  (Letto 1713 volte)

Offline claudiovis

  • Esploratore
  • **
  • Post: 91
    • Mostra profilo
unire tabelle user profile e cb [joomla 2.5.8]
« il: 18 Gen 2013, 12:31:57 »
Ciao a tutti
...provo a spiegare il mio problema.

la registrazione sul mio sito avviene tramite joomla + userprofile per avere dei campi aggiuntivi(indirizzo,citta,sesso,datadinascita) e la spunta sull'accettazione dei termini.   perfetto. e si registrano in automatico nel gruppo "vedere"

ho installato cb per visualizzare delle pagine particolari per un'altro gruppo di utenti "cambiare"...
importo in cb tramite cbjuice diversi utenti che sono di entrambe i gruppi  ....quindi avrei bisogni di portare i dati importati in cb(indirizzo,citta,sesso,datadinascita) anche nella tabella joomla userprofile in modo che l'utente veda i suoi dati in quell'area li.

cb con il tool sincronizza utenti aggiorna i dati base dell'utente joomla(name,username,email)  ...ma gli altri campi?  come posso fare?

è possibile farlo senza intervenire direttamente sul db?

grazie milel!!

Offline claudiovis

  • Esploratore
  • **
  • Post: 91
    • Mostra profilo
Re: unire tabelle user profile e cb [joomla 2.5.8]
« Risposta #1 il: 18 Gen 2013, 14:38:23 »
son convinto che le modifiche sarebbero da fare quì ... ma non so esattamente come!!   :o

Codice: [Seleziona]
function syncUsers() {
    global $_CB_database, $ueConfig, $_PLUGINS;

    // Try extending time, as unziping/ftping took already quite some... :
    @set_time_limit( 240 );

       $_PLUGINS->loadPluginGroup('user');
    $messages    =    $_PLUGINS->trigger( 'onBeforeSyncUser', true );
    foreach ( $messages as $msg ) {
        if ( $msg ) {
            echo "<p>" . $msg . "</p>";
        }
    }
    // 0a. delete user table for bad rows
    $sql = "DELETE FROM #__users WHERE id = 0";
    $_CB_database->setQuery($sql);
    if (!$_CB_database->query()) {
        print("<font color=red>" . sprintf(CBTxt::T('SQL error %s'), $_CB_database->stderr(true)) . "</font><br />");
        return;
    }
    $affected        =    $_CB_database->getAffectedRows();
    if ($affected) {
        print "<p><font color='orange'>" . sprintf(CBTxt::T('Deleted %s not allowed user id 0 entry.'), $affected) . "</font></p>";
    }

    // 0b. delete comprofiler table for bad rows
    $sql = "DELETE FROM #__comprofiler WHERE id = 0";
    $_CB_database->setQuery($sql);
    if (!$_CB_database->query()) {
        print("<font color=red>" . sprintf(CBTxt::T('SQL error %s'), $_CB_database->stderr(true)) . "</font><br />");
        return;
    }
    $affected        =    $_CB_database->getAffectedRows();
    if ($affected) {
        print "<p><font color='orange'>" . sprintf(CBTxt::T('Deleted %s not allowed user id 0 entry.'), $affected) . "</font></p>";
    }


    // 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>" . sprintf(CBTxt::T('SQL error %s'), $_CB_database->stderr(true)) . "</font><br />");
        return;
    }
    $affected        =    $_CB_database->getAffectedRows();
    if ($affected) {
        print "<p><font color='orange'>" . sprintf(CBTxt::T('Added %s new entries to Community Builder from users Table.'), $affected) . "</font></p>";
    }

    $sql = "UPDATE #__comprofiler SET `user_id`=`id`";
    $_CB_database->setQuery($sql);
    if (!$_CB_database->query()) {
        print("<font color=red>" . sprintf(CBTxt::T('SQL error %s'), $_CB_database->stderr(true)) . "</font><br />");
        return;
    }
    $affected        =    $_CB_database->getAffectedRows();
    if ($affected) {
        print "<p><font color='orange'>" . sprintf(CBTxt::T('Fixed %s existing entries in Community Builder: fixed wrong user_id.'), $affected) . "</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 ($_CB_database->getErrorNum()) {
        print("<font color=red>" . sprintf(CBTxt::T('SQL error %s'), $_CB_database->stderr(true)) . "</font><br />");
        return;
    }
    if (count($users)) {
        print "<p><font color='orange'>" . sprintf(CBTxt::T('Removing %s entries from Community Builder missing in users Table.'), count($users)) . "</font></p>";
        $msg = deleteUsers($users, true);
        print "<p>".$msg."</p>";
    }
    print "<font color=green>" . CBTxt::T('Joomla/Mambo User Table and Joomla/Mambo Community Builder User Table now in sync!') . "</font>";

    $messages    =    $_PLUGINS->trigger( 'onAfterSyncUser', true );
    foreach ( $messages as $msg ) {
        if ( $msg ) {
            echo "<p>" . $msg . "</p>";
        }
    }
}

 



Web Design Bolzano Kreatif