You are here

function og_menu_form_menu_edit_menu_alter in Organic Groups Menu (OG Menu) 7.2

Same name and namespace in other branches
  1. 7.3 og_menu.module \og_menu_form_menu_edit_menu_alter()

Implements hook_form_FORMID_alter().

File

./og_menu.module, line 401
Integrates Menu with Organic Groups. Lots of menu forms duplication in OG context.

Code

function og_menu_form_menu_edit_menu_alter(&$form, &$form_state) {
  $types = node_type_get_types();
  $gtypes = array();
  foreach ($types as $type) {
    if (og_is_group_type('node', $type->type)) {
      $gtypes[] = $type->type;
    }
  }
  $types = $gtypes;
  if (count($types) > 0) {
    $options = array(
      '' => '--',
    );
    $values = array();

    // Populate gids
    if (user_access('administer organic groups')) {
      $result = db_query("SELECT gid, label FROM {og} WHERE entity_type='node'");
      foreach ($result as $group) {
        $options[$group->gid] = $group->label;
      }
    }
    else {
      global $user;
      $groups = og_load_multiple(og_get_entity_groups('user', $user));
      foreach ($groups as $group) {
        $options[$group->gid] = $group->label;
      }
    }
    $ogm = db_select('og_menu', 'gid')
      ->fields('gid')
      ->condition('menu_name', $form['menu_name']['#default_value'], '=')
      ->execute()
      ->fetchAssoc();
    $gid = $ogm['gid'];
    $og = $gid ? og_load($gid) : NULL;

    // Add menu og assignment to the form
    switch (variable_get('og_menu_assignment', 'autocomplete')) {
      case 'autocomplete':
        $form['og_menu_gid'] = array(
          '#title' => t('Enable this menu for the following group'),
          '#type' => 'textfield',
          '#default_value' => !is_null($gid) ? $og->label . ' [gid:' . $gid . ']' : '',
          '#autocomplete_path' => 'og_menu/autocomplete',
        );
        break;
      case 'select':
        $form['og_menu_gid'] = array(
          '#title' => t('Enable this menu for the following group'),
          '#type' => 'select',
          '#options' => $options,
          '#default_value' => !is_null($gid) ? $gid : '',
          '#weight' => 1,
        );
        break;
      default:
    }
    if (!user_access('administer menu')) {
      $form['og_menu_gid']['#required'] = TRUE;
    }
    if (!isset($form['submit']['#weight'])) {
      $form['submit']['#weight'] = 2;
    }
    $form['#submit'][] = 'og_menu_edit_menu_form_submit';
  }
}