web-dev-qa-db-ja.com

プログラムで新しいユーザーをOGに割り当てる

私のサイトは、有機的なグループに細分されています。

グループ管理者は新しいユーザーの作成を許可されていますが、作成するグループ管理者が属する同じオーガニックグループに新しいユーザーを自動的に割り当てる方法が必要です。

プログラムまたはモジュールを使用して、この自動割り当てをどのように達成できるかを誰かに教えてもらえますか?

2
sisko

hook_form_alter()を実装するカスタムモジュールを記述する必要があります。

  • 変更する「新しいユーザーの作成」フォームの_$form_id_を取得します。

    drupal_set_message($form_id);はこれを行う簡単な方法です。)

  • それぞれの詳細と追加するog_group()関数を使用する「ユーザーの作成」フォームにカスタム送信ハンドラを追加しますグループへの新しいユーザー。

    _function MODULENAME_form_alter(&$form, &$form_state, $form_id) {
    
        if (isset($form_id) && $form_id == 'YOUROG_USERCREATION_FORMID') {
            $form['#submit'][] = 'MODULENAME_submit_handler';
        }
    
    }
    
    
    function MODULENAME_submit_handler($form, &$form_state) {
    
        $gid = $form_state['values']['groupID'];
        $uid = $form_state['values']['userID'];
    
        $account = user_load($uid);
        $values = array(
            'entity_type' => 'user',
            'entity' => $account,
            'state' => OG_STATE_ACTIVE,
           );
    
        og_group('node', $gid, $values);
    
        return $form;
    }
    _

情報の要点として、このコードサンプルはOG 7.2.xを対象としています。

OG 7.1.xを使用している場合は、og_groupの最初の引数を削除するため、og_group($gid, $values);

また、使用できる_$values_とデフォルトは次のとおりです。

_# taken directly from og.module

$values += array(
     'entity type' => 'user',
     'entity' => FALSE,
     'state' => OG_STATE_ACTIVE,
     'save' => TRUE,
     'force reload' => TRUE,
     'membership type' => OG_MEMBERSHIP_TYPE_DEFAULT,
     'membership fields' => array(),
     'created' => time(),
    );
_
4
Jeffrey M Stout

ルールモジュールを試してください: http://drupal.org/project/rules

「ユーザー作成」に反応して、作成者である現在ログインしているユーザーのグループを新しいユーザーに割り当てることができます。

0
Brian