mediamosa_server_form

Versions
mediamosa-21
mediamosa_server_form($node, &$form_state)

Implements hook_form().

Code

sites/all/modules/mediamosa/core/node/mediamosa_node_mediamosa_server.inc, line 252

<?php
function mediamosa_server_form($node, &$form_state) {
  // Take type from node if available.
  if (isset($node->{mediamosa_server_db::SERVER_TYPE})) {
    $server_type = $node->{mediamosa_server_db::SERVER_TYPE};
  }

  $breadcrumb = array();
  $breadcrumb[] = l(t('Home'), NULL);
  $breadcrumb[] = l(t('Administer'), 'admin');
  $breadcrumb[] = l(t('MediaMosa'), 'admin/mediamosa');
  $breadcrumb[] = l(t('Configuration'), 'admin/mediamosa/config');
  $breadcrumb[] = l(t('Server listing'), 'admin/mediamosa/config/server');
  drupal_set_breadcrumb($breadcrumb);

  // Else take it from the uri.
  if (!isset($server_type)) {
    $server_type = arg(5);
  }

  $is_insert = empty($node->nid);

  // Default server status options.
  $server_status_options =  array(
    mediamosa_server_db::SERVER_STATUS_ON => t('On'),
    mediamosa_server_db::SERVER_STATUS_OFF => t('Off')
  );

  switch ($server_type) {
    default:
      drupal_goto('admin/mediamosa/config/server/add/download');

    case mediamosa_server_db::SERVER_TYPE_DOWNLOAD:
      $title = $is_insert ? t('New download server') : t("Editing download server '@server_name'.", array('@server_name' => $node->title));
      $description = t('A download server handles download requests of mediafiles.');
      break;

    case mediamosa_server_db::SERVER_TYPE_STILL:
      $title = $is_insert ? t('New still server') : t("Editing still server '@server_name'.", array('@server_name' => $node->title));
      $description = t('A still server serves and generates stills from mediafiles.');
      break;

    case mediamosa_server_db::SERVER_TYPE_STREAMING:
      $title = $is_insert ? t('New streaming server') : t("Editing streaming server '@server_name'.", array('@server_name' => $node->title));
      $description = t('A streaming server will stream mediafiles for you.');
      break;

    case mediamosa_server_db::SERVER_TYPE_JOB_PROCESSOR:
      // If its already OFF then the value is allowed as option, else its either On or Close.
      if (isset($node->{mediamosa_server_db::SERVER_STATUS}) && $node->{mediamosa_server_db::SERVER_STATUS} != mediamosa_server_db::SERVER_STATUS_OFF) {
        $server_status_options =  array(
          mediamosa_server_db::SERVER_STATUS_ON => t('On'),
          mediamosa_server_db::SERVER_STATUS_CLOSE => t('Close'), // Job servers are set to off by cron.
        );
      }

      $title = $is_insert ? t('New processor server') : t("Editing processor server '@server_name'.", array('@server_name' => $node->title));
      $description = t('A processor server processes jobs like still generation, transcoding of mediafiles.');
      break;

    case mediamosa_server_db::SERVER_TYPE_UPLOAD:
      $title = $is_insert ? t('New upload server') : t("Editing upload server '@server_name'.", array('@server_name' => $node->title));
      $description = t('A upload server allows users to upload files to MediaMosa.');
      break;
  }

  $form = array();

  $form[mediamosa_server_db::SERVER_TYPE] = array(
    '#type' => 'hidden',
    '#value' => mediamosa_node::default_value(mediamosa_server_db::SERVER_TYPE, $node, $server_type),
  );

  $form['mediamosa_server'] = array(
    '#type' => 'fieldset',
    '#collapsible' => TRUE,
    '#collapsed' => FALSE,
    '#title' => $title,
    '#description' => $description,
  );

  $form['mediamosa_server']['title'] = array(
    '#type' => 'textfield',
    '#title' => t('Server name'),
    '#description' => t('The name for the server.'),
    '#required' => TRUE,
    '#default_value' => mediamosa_node::default_value('title', $node),
    '#maxlength' => mediamosa_server_db::SERVER_NAME_LENGTH,
  );

  $form['mediamosa_server'][mediamosa_server_db::DESCRIPTION] = array(
    '#type' => 'textarea',
    '#required' => TRUE,
    '#title' => t('Description'),
    '#description' => t('Description of the server.'),
    '#default_value' => mediamosa_node::default_value(mediamosa_server_db::DESCRIPTION, $node),
    '#maxlength' => mediamosa_server_db::DESCRIPTION_LENGTH,
  );

  if (in_array($server_type, array(mediamosa_server_db::SERVER_TYPE_DOWNLOAD, mediamosa_server_db::SERVER_TYPE_UPLOAD, mediamosa_server_db::SERVER_TYPE_STILL, mediamosa_server_db::SERVER_TYPE_STREAMING))) {
    $form['mediamosa_server'][mediamosa_server_db::URI] = array(
      '#type' => 'textfield',
      '#required' => TRUE,
      '#title' => t('URI'),
      '#description' => t('{TICKET} is available for use in the URI.'),
      '#default_value' => mediamosa_node::default_value(mediamosa_server_db::URI, $node),
      '#maxlength' => mediamosa_server_db::URI_LENGTH,
    );
  }

  if (in_array($server_type, array(mediamosa_server_db::SERVER_TYPE_JOB_PROCESSOR))) {
    $form['mediamosa_server'][mediamosa_server_db::URI] = array(
      '#type' => 'textfield',
      '#title' => t('URI'),
      '#description' => t('URI or URL server.'),
      '#required' => TRUE,
      '#default_value' => mediamosa_node::default_value(mediamosa_server_db::URI, $node),
      '#maxlength' => mediamosa_server_db::URI_LENGTH,
    );

    $form['mediamosa_server'][mediamosa_server_db::SLOTS] = array(
      '#type' => 'textfield',
      '#title' => t('Slots'),
      '#required' => TRUE,
      '#default_value' => mediamosa_node::default_value(mediamosa_server_db::SLOTS, $node),
    );

    $form['mediamosa_server'][mediamosa_server_db::TOOLS] = array(
      '#type' => 'textfield',
      '#title' => t('Tools'),
      '#description' => t('Set tools for this server in the following format: ffmpeg|STILL|lin2win.'),
      '#default_value' => mediamosa_node::default_value(mediamosa_server_db::TOOLS, $node),
    );
  }

  if (in_array($server_type, array(mediamosa_server_db::SERVER_TYPE_UPLOAD))) {
    $form['mediamosa_server'][mediamosa_server_db::URI_UPLOAD_PROGRESS] = array(
      '#type' => 'textfield',
      '#title' => t('URI upload progress'),
      '#required' => TRUE,
      '#description' => t('Optional URI for client side upload progress information.'),
      '#default_value' => mediamosa_node::default_value(mediamosa_server_db::URI_UPLOAD_PROGRESS, $node),
      '#maxlength' => mediamosa_server_db::URI_UPLOAD_PROGRESS_LENGTH,
    );
  }

  if (in_array($server_type, array(mediamosa_server_db::SERVER_TYPE_STREAMING))) {
    $form['mediamosa_server'][mediamosa_server_db::CONTAINERS] = array(
      '#type' => 'textfield',
      '#title' => t('Containers'),
      '#required' => TRUE,
      '#description' => t('Set containers for this server in the following format: asf|flv|mpeg|avi|ogg|mov;mp4;m4a;3gp;3g2;mj2|mp3.'),
      '#default_value' => mediamosa_node::default_value(mediamosa_server_db::CONTAINERS, $node),
      '#maxlength' => mediamosa_server_db::CONTAINERS_LENGTH,
    );

    $form['mediamosa_server'][mediamosa_server_db::OBJECT_CODE] = array(
      '#type' => 'textarea',
      '#title' => t('Object code'),
      '#description' => t('{WIDTH}, {HEIGHT}, {HEIGHT_PLUS_20}, {MEDIAFILE_ID}, {TICKET_URI}, {AUTOPLAY} (true or false), {AUTOPLAY_NUM} (1 or 0), {IF_START}, {/IF_START}, {IF_DURATION}, {/IF_DURATION} are available for use in this field.'),
      '#default_value' => mediamosa_node::default_value(mediamosa_server_db::OBJECT_CODE, $node),
    );
  }

  $form['mediamosa_server'][mediamosa_server_db::SERVER_STATUS] = array(
    '#type' => 'select',
    '#required' => TRUE,
    '#options' => $server_status_options,
    '#title' => t('Status'),
    '#description' => t('Availability of server.'),
    '#default_value' => mediamosa_node::default_value(mediamosa_server_db::SERVER_STATUS, $node),
  );

  $form['#redirect'] = 'admin/mediamosa/config/server';

  return $form;
}
?>