Drupal 7'de bir gruba programlı olarak kullanıcı ekleme


10

Programlı olarak bir grup düğümü oluşturmak ve Drupal 7 bu gruba bir kullanıcı eklemek çalışıyorum. Grup düğümü gayet iyi oluşturuluyor ama kullanıcı gruba eklenmiyor ve herhangi bir hata almıyorum. Ben og_group işlevini yanlış kullanıyorum tahmin ediyorum ama emin değilim. Neyi yanlış yapıyorum?

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"));
}

merhaba max - iyi bir soru sordun. thx çok
sıfır

Yanıtlar:


13

Bunu anladım. Grup kimliği o organik grubun düğüm kimliğiyle aynı DEĞİLDİ çünkü çalışmaz. İşte çalışma sürümü:

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 düğüm kimliği == grup kimliği olduğundan, og_get_group () kullanılmasına gerek yoktur. Ve og_group () ve og_role_grant () 'da grup türünüz ilk bağımsız değişkendir. İşte OG 7.x-2.x için aynı kod

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"));

}


Bu soruya bir cevap sağlamaz. Bir yazardan eleştiri almak veya açıklama istemek için yazılarının altına bir yorum bırakın - her zaman kendi yayınlarınıza yorum yapabilirsiniz ve yeterli bir üne sahip olduğunuzda herhangi bir yazı hakkında yorum yapabilirsiniz .
Chapabu

2
Yanlış bir şey yaparsam özür dilerim. Buraya bir arama motorundan gelen ve 7.x-2.x kullanan kişilere bir cevap verdiğime inanıyorum. Burada bir sorun yaratmazsa yayının tamamını silebilirsiniz.
Kasım'da Capono

Yanıtlarınız iyi bir başlangıç, ancak soruda neyin yanlış olduğunu belirtmek, bunun bir cevap olarak kabul edilmesi için yeterli değildir. Lütfen metni og_get_group kullanmak yerine ne yapmaları gerektiğini söyleyerek daha yararlı olacak şekilde gözden geçirin. Aşağı oylar büyük olasılıkla yukarı oylara dönüştürülecektir. :)
Letharion

Tamam, gönderimi düzenledim. Sanırım demek istediğin bu mu?
Capono

1
7.2.x ile iyi çalışır. Daha önce belirtildiği gibi 7.1.x bu og_get_group fonksiyonuna sahipti fakat 7.2.x'de kaldırıldı. Daha sonra arayanlar için lütfen bunu kullanın.
Gladyatör

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);
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.