You are here

function brightcove_playlist_form in Brightcove Video Connect 7.7

Same name and namespace in other branches
  1. 7.6 brightcove.playlist.inc \brightcove_playlist_form()

Playlist edit form.

_state

Parameters

$form:

Entity $playlist_entity: The playlist entity to edit or create. In case of creation the only property it should have is 'type'.

File

./brightcove.playlist.inc, line 373
Brightcove playlist related functions.

Code

function brightcove_playlist_form($form, &$form_state, $playlist_entity) {
  brightcove_load_lib();

  // On AJAX the playlist_entity->playlist might not be properly populated.
  if (isset($playlist_entity->playlist) && !$playlist_entity->playlist instanceof \Brightcove\Object\Playlist && !empty($playlist_entity->client) && isset($playlist_entity->playlist_id)) {
    $playlist_entity->playlist = brightcove_load_playlist($playlist_entity->playlist_id, $playlist_entity->client->bcid);
  }
  $form['#entity'] = $playlist_entity;
  $form['#entity_type'] = 'brightcove_playlist';
  $entity_info = entity_get_info('brightcove_playlist');
  $form['#bundle'] = $playlist_entity->{$entity_info['entity keys']['bundle']};
  $form['#tree'] = TRUE;

  // Adding a playlist.
  $playlist = NULL;
  if (!empty($playlist_entity->bpid)) {
    $playlist = $playlist_entity->playlist;
    $form['bcid'] = [
      '#type' => 'hidden',
      '#value' => $playlist_entity->client->bcid,
    ];
  }
  else {
    module_load_include('inc', 'brightcove', 'brightcove.client');
    $form['bcid'] = brightcove_client_select_element();
  }
  $wrapper_id = 'bc-playlist-data-wrapper';
  $bcid = isset($form['bcid']['#default_value']) ? $form['bcid']['#default_value'] : $form['bcid']['#value'];
  switch ($form['bcid']['#type']) {
    case 'select':
      $form['bcid']['#ajax'] = [
        'wrapper' => $wrapper_id,
        'callback' => 'brightcove_playlist_client_ajax',
      ];
      if (!empty($form_state['values']['bcid'])) {
        $bcid = $form_state['values']['bcid'];
      }
      else {
        if (!empty($form_state['input']['bcid'])) {
          $bcid = $form_state['input']['bcid'];
        }
      }
      break;
    case 'value':
    case 'hidden':
      $bcid = $form['bcid']['#value'];
      break;
  }
  $client = brightcove_client_load($bcid);
  $playlist_entity->client = $client;

  // If we have just changed the client select from '_none' to something, the
  // $playlist_entity->playlist is not a Playlist.
  if (empty($playlist_entity->playlist) || !$playlist_entity->playlist instanceof \Brightcove\Object\Playlist) {
    $playlist_entity->playlist = new \Brightcove\Object\Playlist();
  }
  $form['playlist_data'] = [
    '#type' => 'container',
    '#id' => $wrapper_id,
  ];
  if ($bcid != BRIGHTCOVE_BCID_NONE) {
    $form['playlist_data']['name'] = [
      '#type' => 'textfield',
      '#title' => 'Name',
      '#default_value' => empty($playlist) ? '' : $playlist
        ->getName(),
      '#required' => TRUE,
      '#weight' => -10,
    ];
    $form['playlist_data']['description'] = [
      '#type' => 'textarea',
      '#title' => 'Short description',
      '#default_value' => empty($playlist) ? '' : $playlist
        ->getDescription(),
      '#weight' => -9,
    ];
    $form['playlist_data']['settings'] = [
      '#type' => 'container',
      '#id' => 'brightcove-playlist-settings',
    ];
    field_attach_form('brightcove_playlist', $playlist_entity, $form['playlist_data'], $form_state);
    if ($playlist_entity->type == BRIGHTCOVE_PLAYLIST_TYPE_MANUAL) {
      $playlist_entity->playlist
        ->setType('EXPLICIT');
    }
    elseif ($playlist_entity->type == BRIGHTCOVE_PLAYLIST_TYPE_SMART) {
      $form['playlist_data']['settings']['search'] = [
        '#type' => 'textfield',
        '#title' => t('Search string'),
        '#default_value' => $playlist_entity->playlist
          ->getSearch(),
        '#description' => t('The playlist will contain the videos resulting from the search. Currently only tags are supported. E.g. "+tags:bird". For further information click <a href="https://docs.brightcove.com/en/video-cloud/cms-api/guides/search-videos.html#search">here</a>.'),
      ];
      $form['playlist_data']['settings']['playlistType'] = [
        '#type' => 'select',
        '#title' => t('Playlist ordering'),
        '#options' => [
          'ACTIVATED_OLDEST_TO_NEWEST' => t('Oldest to newest (by activation date)'),
          'ACTIVATED_NEWEST_TO_OLDEST' => t('Newest to oldest (by activation date)'),
          'START_DATE_OLDEST_TO_NEWEST' => t('Oldest to newest'),
          'START_DATE_NEWEST_TO_OLDEST' => t('Newest to Oldest'),
          'ALPHABETICAL' => t('Alphabetical (by video name)'),
          'PLAYS_TOTAL' => t('Total plays'),
          'PLAYS_TRAILING_WEEK' => t('Plays trailing week'),
        ],
        '#default_value' => isset($playlist->playlistType) ? $playlist->playlistType : '',
      ];
    }
    $form['playlist_data']['actions'] = [
      '#type' => 'actions',
    ];
    $form['playlist_data']['actions']['submit'] = [
      '#type' => 'submit',
      '#value' => t('Save'),
      '#submit' => [
        'brightcove_playlist_form_submit',
      ],
    ];
    if (!empty($playlist_entity->bpid)) {
      $form['playlist_data']['actions']['delete'] = [
        '#type' => 'submit',
        '#value' => t('Delete'),
        '#submit' => [
          'brightcove_playlist_form_delete',
        ],
      ];
    }
  }
  return $form;
}