web-dev-qa-db-ja.com

ユーザープロファイルの更新

ユーザープロファイルを更新するコードは何ですか?

これはユーザープロファイルを取得します。

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

ここで、プロファイルフィールドの1つを更新するために何を入力しますか?それを書くのは私次第ですか、それともプロファイルを保存するコマンドがありますか?

おかげで、

マット

3
Mat Kay

達成しようとしていることに応じて、このコードを Joomla Docs から変更して、ニーズに合わせることができます。

$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

これは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();

参照は、onUserAfterSave関数のRoot => plugins => user => profile => profile.phpから取得できます。

6
Gaurav