प्रोग्राम को Drupal 7 में उपयोगकर्ता को समूह में कैसे जोड़ा जाए


10

मैं प्रोग्राम ग्रुप बनाने की कोशिश कर रहा हूं और Drupal 7 में उस ग्रुप में एक यूजर को जोड़ना है। ग्रुप नोड को ठीक बनाया जा रहा है, लेकिन यूजर को ग्रुप में नहीं जोड़ा जा रहा है और मुझे कोई त्रुटि नहीं मिल रही है। मुझे लगता है कि मैं गलत तरीके से og_group फ़ंक्शन का उपयोग कर रहा हूं, लेकिन मुझे यकीन नहीं है। मैं क्या गलत कर रहा हूं?

function MYMODULE_form_submit($form_id, $form_values) {
    global $user;

    $node = new stdClass();

    $node->type     = "group";
    $node->uid      = $user->uid;
    $node->title        = t("Group Node Title");
    $node->body     = t("Group Node Body");
    $node->status       = 1;
    $node->promote      = 0;
    $node->comment      = 1;

    $node->og_description   = t("OG Description");
    $node->og_register  = 0;
    $node->og_directory = 0;
    $node->og_private   = 1;
    $node->og_selective = 3;

    $node = node_submit($node);
    node_save($node);

    $account = user_load(2);

    og_group($node->nid, array(
                "entity type"       => "user",
                "entity"        => $account,
                "membership type"   => "OG_MEMBERSHIP_TYPE_DEFAULT",
            ));

    drupal_set_message(t("Finished"));
}

हाय मैक्स - आपने एक अच्छा सवाल उठाया। thx अलॉट
शून्य

जवाबों:


13

मैं यह समझ गया। यह काम नहीं कर रहा है क्योंकि समूह आईडी उस जैविक समूह के लिए नोड आईडी के समान नहीं है। यहाँ काम कर रहे संस्करण है:

function MYMODULE_page_form_submit($form_id, $form_values) {
    global $user;

    $node = new stdClass();

    $node->type     = "group";
    $node->uid      = $user->uid;
    $node->title        = t("Group Node Title");
    $node->body     = t("Group Node Body");
    $node->status       = 1; //(1 or 0): published or not
    $node->promote      = 0; //(1 or 0): promoted to front page
    $node->comment      = 1; //2 = comments on, 1 = comments off

    $node->og_description   = t("OD Description");
    $node->og_register  = 0;
    $node->og_directory = 0;
    $node->og_private   = 1;
    $node->og_selective = 3;

    $node = node_submit($node);
    node_save($node);

    // Get the group ID from the node ID
    $group = og_get_group("node", $node->nid);

    // Load the user we want to add to the group (ID #2 was my test user)
    $account = user_load(2);

    // Add the user to the group
    og_group($group->gid, array(
                "entity type"       => "user",
                "entity"        => $account,
                "membership type"   => OG_MEMBERSHIP_TYPE_DEFAULT,
            ));

    // Changes the users role in the group (1 = non-member, 2 = member, 3 = administrator member)
    og_role_grant($group->gid, $account->uid, 3);

    drupal_set_message(t("Finished"));
}

13

चूंकि OG7-2.x नोड आईडी == समूह आईडी है, इसलिए og_get_group () का उपयोग करने की कोई आवश्यकता नहीं है। और og_group () और og_role_grant () में आपका समूह प्रकार पहला तर्क है। तो यहाँ OG 7.x-2.x के लिए समान कोड है

function MYMODULE_page_form_submit($form_id, $form_values) {
global $user;

$node = new stdClass();

$node->type     = "group";
$node->uid      = $user->uid;
$node->title        = t("Group Node Title");
$node->body     = t("Group Node Body");
$node->status       = 1; //(1 or 0): published or not
$node->promote      = 0; //(1 or 0): promoted to front page
$node->comment      = 1; //2 = comments on, 1 = comments off

$node->og_description   = t("OD Description");
$node->og_register  = 0;
$node->og_directory = 0;
$node->og_private   = 1;
$node->og_selective = 3;

$node = node_submit($node);
node_save($node);

// Load the user we want to add to the group (ID #2 was my test user)
$account = user_load(2);

// Add the user to the group
og_group('node', $node->nid, array(
            "entity type"       => "user",
            "entity"        => $account,
            "membership type"   => OG_MEMBERSHIP_TYPE_DEFAULT,
        ));

// Changes the users role in the group (1 = non-member, 2 = member, 3 = administrator member)
og_role_grant('node', $node->nid, $account->uid, 3);

drupal_set_message(t("Finished"));

}


यह प्रश्न का उत्तर नहीं देता है। किसी लेखक से स्पष्टीकरण मांगने या उसका अनुरोध करने के लिए, उनके पोस्ट के नीचे एक टिप्पणी छोड़ दें - आप हमेशा अपने स्वयं के पोस्ट पर टिप्पणी कर सकते हैं, और एक बार आपके पास पर्याप्त प्रतिष्ठा होने पर आप किसी भी पोस्ट पर टिप्पणी करने में सक्षम होंगे ।
चपबाबू

2
क्षमा करें अगर मैंने कुछ गलत किया। मेरा मानना ​​है कि मैं उन लोगों के लिए एक उत्तर प्रदान करता हूं जो एक खोज इंजन के माध्यम से यहां आते हैं और 7.x-2.x का उपयोग कर रहे हैं। अगर यह यहाँ पर नहीं बनाता है तो आप पूरी पोस्ट को हटा सकते हैं।
कैपोनो

आपके उत्तर एक अच्छी शुरुआत है, लेकिन यह इंगित करना कि प्रश्न में क्या गलत है, इसके लिए पर्याप्त नहीं है कि इसे उत्तर माना जाए। कृपया लोगों को यह बताकर पाठ को और अधिक उपयोगी बनाने के लिए संशोधित करें कि og_get_group का उपयोग करने के बजाय क्या करें, और downvotes संभवतः अप-वोट में बदले जाएंगे। :)
सुस्ती

ठीक है, मैंने अपनी पोस्ट संपादित की। मुझे लगता है कि इसका मतलब क्या है?
Capono

1
यह 7.2.x के साथ अच्छी तरह से काम करता है। जैसा कि उल्लेख 7.1.x में यह og_get_group फ़ंक्शन था लेकिन वह 7.2.x में निकाल दिया गया है। इसलिए बाद की तलाश करने वालों के लिए, कृपया इसका उपयोग करें।
ग्लैडिएटर

1
Adding programmatically Group  content:
$node->type     = "group_post";
$node->uid      = $user->uid;
$node->title        = t("Group postNode Title");
$node->body     = t("Group Node Body");
$node->status       = 1; //(1 or 0): published or not
$node->promote      = 0; //(1 or 0): promoted to front page
$node->comment      = 1; //2 = comments on, 1 = comments off

$node->og_group_ref['und'][] = array('target_id' => $gid);

$node = node_submit($node);
node_save($node);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.