You are here

function fb_stream_node_settings_form in Drupal for Facebook 6.3

Same name and namespace in other branches
  1. 7.3 fb_stream.module \fb_stream_node_settings_form()

Helper function for hook_form_alter() renders the settings per node-type.

1 call to fb_stream_node_settings_form()
fb_stream_form_alter in ./fb_stream.module
Implements hook_form_alter().

File

./fb_stream.module, line 257
Support for Facebook's Stream API.

Code

function fb_stream_node_settings_form(&$form) {
  $node_type = $form['#node_type']->type;
  $token = variable_get(FB_STREAM_VAR_TOKEN, '');
  $to_options = array();
  $from_options = array();
  $from_tokens = array();
  try {

    // Get the possible author/wall combinations from facebook.
    fb_stream_post_options($token, $to_options, $from_options, $from_tokens);

    // TODO: consolodate graph api, use batch. And cache.
    $me = fb_graph('me', array(
      'access_token' => $token,
    ));
    $via = fb_graph('app', array(
      'access_token' => $token,
    ));
    $t_args = array(
      '%from' => _fb_get_name($me),
      '%via' => _fb_get_name($via),
    );

    // Include options in the form.
    $form['fb_stream'] = array(
      '#type' => 'fieldset',
      '#title' => t('Facebook Posts'),
      '#weight' => 0,
      '#collapsible' => TRUE,
      '#collapsed' => TRUE,
    );
    $var_prefix = 'fb_stream_enabled_';
    $var = $var_prefix . '_' . $node_type;
    $form['fb_stream'][$var_prefix] = array(
      '#type' => 'checkbox',
      '#title' => t('Enable Post to Facebook for this content type.'),
      '#default_value' => variable_get($var, FALSE),
    );
    $var_prefix = 'fb_stream_to_';
    $var = $var_prefix . '_' . $node_type;
    $form['fb_stream'][$var_prefix] = array(
      '#type' => 'select',
      '#title' => t("Post to wall"),
      '#options' => $to_options,
      '#description' => t('Post to which Facebook Wall?  If you don\'t see the options you expect, you may need a new <a href=!url target=_blank>access token</a>.', array(
        '!url' => url(FB_PATH_ADMIN . '/fb_stream'),
      )),
      '#default_value' => variable_get($var, NULL),
    );

    // We'll need the token that corresponds to our "from" option.  We don't want to include tokens directly in the form, for security.
    $form['#fb_stream_from_tokens'] = $from_tokens;
    $form['#validate'][] = 'fb_stream_node_settings_form_validate';
    $form['fb_stream']['fb_stream_from_token_'] = array(
      // placeholder.  See fb_stream_node_settings_form_validate().
      '#type' => 'value',
      '#value' => NULL,
    );
  } catch (Exception $e) {

    // TODO: link to token admin page.
    fb_log_exception($e, t('Failed to access facebook using the fb_stream token (node settings form).'));
  }
}