domain_source_form_alter

Definition

domain_source_form_alter($form_id, &$form)
domain_source/domain_source.module, line 20

Description

Implements hook_form_alter()

Code

function domain_source_form_alter($form_id, &$form) {
  // Apply to all node editing forms, but make sure we are not on the CCK field configuration form.
  // See http://drupal.org/node/186624.
  if ($form['#id'] == 'node-form' && !$form['#node']->cck_dummy_node_form) {
    global $_domain;
    $options = array();
    $domains = domain_domains();
    $show = FALSE;
    if (user_access('set domain access')) {
      $show = TRUE;
      foreach ($domains as $domain) {
        $options[$domain['domain_id']] = $domain['sitename'];
      }
    }
    // In the case of users with limited permissions, option 3 is the "show options" value.
    else if (user_access('view domain publishing') && variable_get('domain_options', 0) == 3) {
      global $user;
      // Get the user's allowed domains.
      foreach ($domains as $domain) {
        if ($user->domain_user[$domain['domain_id']] != 0 && $domain['domain_id'] == $user->domain_user[$domain['domain_id']]) {
          $options[$domain['domain_id']] = $domain['sitename'];
        }
      }
      // Is this node assigned to a source that the user can control?
      $source = $form['#node']->domain_source;
      if (isset($source)) {
        if ($user->domain_user[$domain['domain_id']] == $source) {
          $show = TRUE;
        }
        else {
          $form['domain']['domain_source_notes'] = array(
            '#value' => '<label><b>'. t('Source domain:') .'</b></label><div class="description">'.
              t('This content is assigned to %domain and cannot be reassigned.', array('%domain' => $domains[$source]['sitename'])) .'</div>',
          );
        }
      }
    }
    // Determine how to show the form element.
    if ($show) {
      $form['domain']['domain_source'] = array(
        '#type' => 'select',
        '#title' => t('Source domain'),
        '#options' => $options,
        '#default_value' => ($form['#node']->domain_source) ? $form['#node']->domain_source : $_domain['domain_id'],
        '#description' => t('This affiliate will be used to write links to this content from other affiliates, as needed.')
      );
    }
    // Non-privileged users just have the current domain assigned.
    else {
      $form['domain']['domain_source'] = array(
        '#type' => 'value',
        '#value' => (isset($form['#node']->domain_source)) ? $form['#node']->domain_source : $_domain['domain_id'],
      );
    }
  }
  // Integration with Domain Content
  else if ($form_id == 'domain_content_form') {
    global $_domain;
    $options = array();
    $domains = domain_domains();
    $show = FALSE;
    if (user_access('set domain access')) {
      foreach ($domains as $domain) {
        $options[$domain['domain_id']] = $domain['sitename'];
      }
      $form['domain']['domain_source'] = array(
        '#type' => 'select',
        '#title' => t('Source domain'),
        '#options' => $options,
        '#default_value' => $_domain['domain_id'],
        '#description' => t('This affiliate will be linked to from other affiliates, as needed.')
      );
      $form['#validate']['domain_source_validate'] = array();
      $form['#submit']['domain_source_update_nodes'] = array();
    }
  }
}