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