You are here

function media_acquiadam_browser_choose_asset_form_fill_assets in Media: Acquia DAM 7

Helper function to adjust the asset chooser form values.

Parameters

array $form: A form render array.

array $form_state: The current form state.

array $options: An array of options as passed from the Media Browser plugin.

1 call to media_acquiadam_browser_choose_asset_form_fill_assets()
media_acquiadam_browser_choose_asset_form in modules/media_acquiadam_browser/includes/media_acquiadam_browser.forms.inc
Acquia DAM browser form.

File

modules/media_acquiadam_browser/includes/media_acquiadam_browser.forms.inc, line 274
Form related hooks and functions.

Code

function media_acquiadam_browser_choose_asset_form_fill_assets(array &$form, array &$form_state, array $options = []) {
  $qp = drupal_get_query_parameters(NULL, [
    'q',
    'page',
    'aa',
  ]);
  $folderId = empty($qp['folderId']) ? AcquiaDAM_Assets_Folder::ROOT_FOLDER_ID : $qp['folderId'];
  $per_page = variable_get('media_acquiadam_browser_per_page', 25);
  $is_root = empty($folderId) || AcquiaDAM_Assets_Folder::ROOT_FOLDER_ID == $folderId;
  $is_search = !empty($qp['search']);

  // We're not under the root folder so show the breadcrumb trail.
  // This allows users to navigate back up a level if they need to.
  if (!$is_root) {
    $trail_assets = media_acquiadam_browser_get_trail($folderId);
    $form['results']['trail']['#access'] = TRUE;
    $form['results']['trail']['#assets'] = $trail_assets;
  }
  $initial_assets = media_acquiadam_browser_get_initial_assets($folderId, $form_state, $per_page);

  // Fake paging the results of the API for the root folder by splitting up
  // its result and overwriting what we originally got.
  if ($is_root && !$is_search && is_array($initial_assets)) {
    $initial_assets = media_acquiadam_browser_fake_paged_root($initial_assets, $per_page);
  }
  if (!empty($initial_assets['assets'])) {
    $result_assets =& $form['results']['assets'];

    // Hide the 'no assets' message.
    $form['results']['empty_message']['#access'] = FALSE;
    foreach ($initial_assets['assets'] as $asset) {
      $result_assets['#options'][$asset['id']] = $asset['name'];
      $result_assets['#assets'][$asset['id']] = $asset;
    }

    // Store the fetched assets so we don't have to do another API lookup on
    // submission. Make sure they are keyed by their asset ID first so we can
    // easily look them up in the submit handler later.
    $keys = array_map(function ($item) {
      return $item['id'];
    }, $result_assets['#assets']);
    $form_state['storage']['assets'] = array_combine($keys, $result_assets['#assets']);
  }
  $form['actions']['back']['#access'] = !$is_root;
  pager_default_initialize($initial_assets['total_count'], $per_page);
}