You are here

function og_menu_form_menu_edit_menu_alter in Organic Groups Menu (OG Menu) 7.3

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

Implements hook_form_FORMID_alter().

File

./og_menu.module, line 485
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(
      '' => '--',
    );

    // Populate gids.
    if (user_access('administer group')) {
      $query = db_select('node', 'n');
      $query
        ->distinct();
      $query
        ->join('og_membership', 'og', 'n.nid = og.gid');
      $query
        ->fields('og', array(
        'gid',
      ));
      $query
        ->fields('n', array(
        'title',
      ));
      $result = $query
        ->execute();
      foreach ($result as $group) {
        $options[$group->gid] = $group->title;
      }
    }
    else {
      global $user;
      $gids = og_menu_get_node_groups('user', $user);
      $groups = node_load_multiple($gids);
      if (!empty($groups)) {
        foreach ($groups as $gid => $group) {
          $options[$gid] = $group->title;
        }
      }
    }
    $ogm = db_select('og_menu', 'gid')
      ->fields('gid')
      ->condition('menu_name', $form['menu_name']['#default_value'], '=')
      ->execute()
      ->fetchAssoc();
    $gid = $ogm['gid'];
    $og = $gid ? entity_load_single('node', $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->title . ' [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;
    }
    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';
  }
}