it-swarm.dev

Aggiornamento del profilo utente

Qual è il codice per aggiornare un profilo utente?

Questo ottiene il profilo utente:

   $user = JFactory::getUser();
   $userid = $user->id;
   $profile = JUserHelper::getProfile($user->id);
   echo print_r($profile);

Ora cosa devo digitare per aggiornare uno dei campi del profilo, per favore? Spetta a me scriverlo o c'è un comando per salvare il profilo?

Grazie,

Stuoia

3
Mat Kay

Puoi modificare questo codice da Joomla Docs per adattarlo alle tue esigenze, a seconda di ciò che stai cercando di ottenere:

$db = JFactory::getDbo();
$query = $db->getQuery(true);
// Fields to update.
$fields = array(
    $db->quoteName('profile_value') . ' = ' . $db->quote('Updating custom message for user 1001.'),
    $db->quoteName('ordering') . ' = 2'
);
// Conditions for which records should be updated.
$conditions = array(
    $db->quoteName('user_id') . ' = 42', 
    $db->quoteName('profile_key') . ' = ' . $db->quote('custom.message')
);
$query->update($db->quoteName('#__user_profiles'))->set($fields)->where($conditions);
$db->setQuery($query);
$result = $db->query();
6
Bogowoe

Ecco come funzionano i plugin del profilo utente di Joomla

// Sanitize the date
$data['profile']['dob'] = $this->_date;

$db = JFactory::getDbo();
$query = $db->getQuery(true)
                ->delete($db->quoteName('#__user_profiles'))
                ->where($db->quoteName('user_id') . ' = ' . (int) $userId)
                ->where($db->quoteName('profile_key') . ' LIKE ' . $db->quote('profile.%'));
$db->setQuery($query);
$db->execute();

$tuples = array();
$order = 1;
foreach ($data['profile'] as $k => $v)
{
    $tuples[] = '(' . $userId . ', ' . $db->quote('profile.' . $k) . ', ' . $db->quote(json_encode($v)) . ', ' . $order++ . ')';
}

$db->setQuery('INSERT INTO #__user_profiles VALUES ' . implode(', ', $tuples));
$db->execute();

Puoi ottenere riferimenti da Root => plugins => user => profile => profile.php nella funzione onUserAfterSave.

6
Gaurav