Joomla 2.5 サイトで、登録済みユーザーがフォームに入力した後、そのユーザーを別のグループに割り当てたいと考えています。ユーザーは、保存時に実行する PHP スクリプトを追加できるように、Fabrik で作成されるフォームに入力するとログインします。私のphpスキルは初歩的です。現在のユーザーをグループに追加する php の行はどのようになりますか?
5 に答える
JUserHelper::setUserGroupsを使用して、ユーザーのグループを設定できます。
現在のユーザーを取得するには、JFactory::getUserを使用できます。
ユーザーがいる場合は、おそらくすぐにIDを取得できます(これは確認していません)。うまくいけば途中であなたを得るいくつかのテストされていないコード:
$user = JFactory::getUser();
$userId = $user->id;
JUserHelper::setUserGroups($userId, 3);
または要するに:
JUserHelper::setUserGroups(JFactory::getUser()->id, 3); // 3 Is the group number
table-prefix_usergroups
テーブルにアクセスして主キーを取得することで、グループ ID を見つけることができます。データベースにアクセスせずにグループのリストを取得する方法は見つかりませんでしたが、これが役立つ場合があります。
ユーザーグループを含む私の(編集されていない)データベースのスクリーンショット:
JUserHelper::setUserGroups メソッドは Joomla 3.3.1 のインストールで常に失敗するため、ここでは別のアプローチを使用しました。
$user = JFactory::getUser();//get current user
$g = array('2'=>2,'3'=>3);//2 for registered user, 3 for author
$user->groups = $g;
$user->save();
addUserToGroupメソッドも参照することをお勧めします(Joomla Platform 11.1 以降)。
JUserHelper::addUserToGroup (JFactory::getUser()->id, 3); // 3 Is the group number
たとえば、ユーザーが以前に「登録済み」グループ (id=2) に属していた場合、この後、ユーザーはグループ 3 にも割り当てられます。
同様に、逆のremoveUserFromGroupメソッドもあります。
ドキュメントによると、setUserGroupsメソッドはグループの配列をサポートしているのに対し、ここで言及する他の 2 つのメソッドは整数をサポートしていることに注意してください。
setUserGroups(integer $userId, array $groups) : boolean
addUserToGroup(integer $userId, integer $groupId) : ブール値
removeUserFromGroup(integer $userId, integer $groupId) : ブール値
joomla 3 でこれを行う便利な方法を見つけることができなかったので、これを機能させる必要がある人のための簡単な方法を次に示します。
$db = JFactory::getDbo();
$db->setQuery("replace into xo6uf_user_usergroup_map values ($user_id, $group_id)");
$db->query();