og.inc in Node import 6
Support file for the og (Organic Groups) module.
File
supported/og/og.incView source
<?php
/**
* @file
* Support file for the og (Organic Groups) module.
*/
/**
* Implementation of hook_node_import_fields().
*/
function og_node_import_fields($type) {
$fields = array();
if (($node_type = node_import_type_is_node($type)) !== FALSE) {
if (og_is_group_type($node_type)) {
$fields['og_description'] = array(
'title' => t('Description'),
'group' => t('Organic group'),
'map_required' => TRUE,
);
$fields['og_selective'] = array(
'title' => t('Membership requests'),
'group' => t('Organic group'),
'allowed_values' => og_selective_map(),
'default_value' => OG_OPEN,
);
$fields['og_register'] = array(
'title' => t('Registration form'),
'group' => t('Organic group'),
'input_format' => 'boolean',
);
$visibility = variable_get('og_visibility_registration', OG_REGISTRATION_CHOOSE_FALSE);
if (user_access('administer nodes')) {
$visibility = in_array($visibility, array(
OG_REGISTRATION_NEVER,
OG_REGISTRATION_CHOOSE_FALSE,
)) ? OG_REGISTRATION_CHOOSE_FALSE : OG_REGISTRATION_CHOOSE_TRUE;
}
$default = FALSE;
switch ($visibility) {
case OG_REGISTRATION_ALWAYS:
$default = TRUE;
// fall through
case OG_REGISTRATION_NEVER:
$fields['og_register']['is_mappable'] = FALSE;
break;
case OG_REGISTRATION_CHOOSE_TRUE:
$default = TRUE;
// fall through
case OG_REGISTRATION_CHOOSE_FALSE:
break;
}
$fields['og_register']['default_value'] = $default;
$fields['og_directory'] = array(
'title' => t('List in groups directory'),
'group' => t('Organic group'),
'input_format' => 'boolean',
);
$visibility = variable_get('og_visibility_directory', OG_DIRECTORY_CHOOSE_TRUE);
if (user_access('administer nodes')) {
$visibility = in_array($visibility, array(
OG_DIRECTORY_NEVER,
OG_DIRECTORY_CHOOSE_FALSE,
)) ? OG_DIRECTORY_CHOOSE_FALSE : OG_DIRECTORY_CHOOSE_TRUE;
}
$default = FALSE;
switch ($visibility) {
case OG_DIRECTORY_ALWAYS:
$default = TRUE;
// fall through
case OG_DIRECTORY_NEVER:
$fields['og_directory']['is_mappable'] = FALSE;
break;
case OG_DIRECTORY_CHOOSE_TRUE:
$default = TRUE;
// fall through
case OG_DIRECTORY_CHOOSE_FALSE:
break;
}
$fields['og_directory']['default_value'] = $default;
if (module_exists('locale') && ($languages = locale_language_list())) {
$fields['og_language'] = array(
'title' => t('Group language'),
'group' => t('Organic group'),
);
}
}
if (og_is_group_post_type($node_type)) {
$fields['og_groups'] = array(
'title' => t('Audience'),
'group' => t('Organic group'),
'input_format' => 'nodereference',
'has_multiple' => TRUE,
'is_checkboxes' => TRUE,
'allowed_values' => _node_import_og_groups(),
);
}
}
return $fields;
}
/**
* Returns a list of available og_groups for current user.
*/
function _node_import_og_groups() {
global $user;
$og_groups = array();
if (user_access('administer nodes')) {
$og_groups = og_all_groups_options();
}
else {
foreach (og_get_subscriptions($user->uid) as $key => $value) {
$og_groups[$key] = $value['title'];
}
}
return $og_groups;
}
/**
* Implementation of hook_node_import_fields_alter().
*/
function og_node_import_fields_alter(&$fields, $type) {
if (($node_type = node_import_type_is_node($type)) !== FALSE && og_is_group_type($node_type)) {
if (isset($fields['body']) && $fields['body']['title'] == t('Body')) {
$fields['body']['title'] = t('Mission statement');
}
}
}
/**
* Implementation of hook_node_import_defaults().
*/
function og_node_import_defaults($type, $defaults, $fields, $map) {
$form = array();
if (($node_type = node_import_type_is_node($type)) !== FALSE) {
if (og_is_group_type($node_type)) {
$form['og_selective'] = array(
'#type' => 'radios',
'#title' => t('Membership requests'),
'#options' => og_selective_map(),
'#default_value' => isset($defaults['og_selective']) ? $defaults['og_selective'] : OG_OPEN,
);
$form['og_register'] = array(
'#type' => 'radios',
'#title' => t('Registration form'),
'#options' => array(
0 => t('No'),
1 => t('Yes'),
),
);
$visibility = variable_get('og_visibility_registration', OG_REGISTRATION_CHOOSE_FALSE);
if (user_access('administer nodes')) {
$visibility = in_array($visibility, array(
OG_REGISTRATION_NEVER,
OG_REGISTRATION_CHOOSE_FALSE,
)) ? OG_REGISTRATION_CHOOSE_FALSE : OG_REGISTRATION_CHOOSE_TRUE;
}
$default = 0;
switch ($visibility) {
case OG_REGISTRATION_ALWAYS:
$default = 1;
// fall through
case OG_REGISTRATION_NEVER:
$form['og_register']['#access'] = FALSE;
break;
case OG_REGISTRATION_CHOOSE_TRUE:
$default = 1;
// fall through
case OG_REGISTRATION_CHOOSE_FALSE:
break;
}
$form['og_register']['#default_value'] = isset($defaults['og_register']) ? $defaults['og_register'] : $default;
$form['og_directory'] = array(
'#type' => 'radios',
'#title' => t('List in groups directory'),
'#options' => array(
0 => t('No'),
1 => t('Yes'),
),
);
$visibility = variable_get('og_visibility_directory', OG_DIRECTORY_CHOOSE_TRUE);
if (user_access('administer nodes')) {
$visibility = in_array($visibility, array(
OG_DIRECTORY_NEVER,
OG_DIRECTORY_CHOOSE_FALSE,
)) ? OG_DIRECTORY_CHOOSE_FALSE : OG_DIRECTORY_CHOOSE_TRUE;
}
$default = 0;
switch ($visibility) {
case OG_DIRECTORY_ALWAYS:
$default = 1;
// fall through
case OG_DIRECTORY_NEVER:
$form['og_directory']['#access'] = FALSE;
break;
case OG_DIRECTORY_CHOOSE_TRUE:
$default = 1;
// fall through
case OG_DIRECTORY_CHOOSE_FALSE:
break;
}
$form['og_directory']['#default_value'] = isset($defaults['og_directory']) ? $defaults['og_directory'] : $default;
}
if (og_is_group_post_type($node_type)) {
$groups = _node_import_og_groups();
if (!empty($groups)) {
$form['og_groups'] = array(
'#title' => t('Audience'),
'#type' => count($groups, COUNT_RECURSIVE) > 20 ? 'select' : 'checkboxes',
'#options' => $groups,
'#multiple' => TRUE,
'#default_value' => isset($defaults['og_groups']) ? $defaults['og_groups'] : array(),
);
}
}
}
return $form;
}
Functions
Name | Description |
---|---|
og_node_import_defaults | Implementation of hook_node_import_defaults(). |
og_node_import_fields | Implementation of hook_node_import_fields(). |
og_node_import_fields_alter | Implementation of hook_node_import_fields_alter(). |
_node_import_og_groups | Returns a list of available og_groups for current user. |