Reputation: 51
I'm looking for a way to create an organic group in code. On the web i find manny resources on how to add a node to a group etc, but not how to create a group itself.
I have done it using the drupal interface, but this isn't very portable. I have tried using the features module, although i found that had to many issues. Missing fields etc.
Through the interface you create a group by making a new contenttype, and then under the tab 'organic groups' you select 'group'
I know how to create a content type in code
$type = array(
'type' => 'Termbase2type',
'name' => t('Termbase2name'),
'base' => 'node_content',
'custom' => 1,
'modified' => 1,
'locked' => 0,
'title_label' => 'Termbase2',
'description' => 's a database consisting of concept-oriented terminological entries (or ‘concepts’) and related information, usually in multilingual format. Entries may include any of the following additional information: a definition; source or context of the term; subject area, domain, or industry; grammatical information (verb, noun, etc.); notes; usage label (figurative, American English, formal, etc.); author (‘created by’), creation/modification date (‘created/modified at’); verification status (‘verified’ or ‘approved’ terms), and an ID. A termbase allows for the systematic management of approved or verified terms and is a powerful tool for promoting consistency in terminology. *wiki',
'og_group_type' => 1,
'og_private' => 0,
'og_register' => 0,
'og_directory' => 0,
'og_selective' => 3,
);
$type = node_type_set_defaults($type);
node_type_save($type);
node_add_body_field($type);
but i can't find any clue as to how to set the content type as a group, so it can have group members.
Upvotes: 4
Views: 732
Reputation: 11
This worked:
// get existing content types
$content_types = node_type_get_types();
$t = get_t();
// create the currency CT
$type_name = 'cc';
if (!array_key_exists($type_name, $content_types)) {
// Create the type definition array.
$type = array(
'type' => $type_name,
'name' => $t('Community Currency'),
'base' => 'node_content',
'description' => $t('A community that trades in a virtual currency.'),
'custom' => 1,
'modified' => 1,
'locked' => 0,
);
$type = node_type_set_defaults($type);
node_type_save($type);
// Add a body field.
node_add_body_field($type);
variable_set('og_group_type_' . $type_name, TRUE);
og_ui_node_type_save($type_name);
}
Upvotes: 1
Reputation: 9809
One option would be to use Drupal's drupal_form_submit() function to programmatically submit the necessary forms. It may be a bit tedious and not be as straightforward as using an API, but it should work.
Upvotes: 0