1 filter.pages.inc filter_format_editor_link_form_submit($form, &$form_state)

Submit handler for filter_format_editor_link_form().

File

core/modules/filter/filter.pages.inc, line 403
User page callbacks for the Filter module.

Code

function filter_format_editor_link_form_submit($form, &$form_state) {
  // Look for file and get fid from uri.
  $fid = 0;
  $uri = '';
  if (isset($form_state['values']['attributes']['href']) && (strlen($form_state['values']['attributes']['href']) > 1)) {
    $uri = $form_state['values']['attributes']['href'];
    // Check for FID for this URI.
    $fid = _filter_get_file_id($uri);
  }
  // File upload will not have provided href but provides fid.
  elseif (isset($form_state['values']['fid'])) {
    $fid = $form_state['values']['fid'];
  }
  // If file is found get its URI.
  if ($fid > 0) {
    $file = file_load($fid);
    $uri = file_create_url($file->uri);
    // Try to make a local path if possible for better portability.
    // Absolute path is needed if Backdrop is installed in subdirectory.
    $absolute_path = parse_url($GLOBALS['base_url'], PHP_URL_PATH) . '/';

    $url = str_replace($GLOBALS['base_url'] . '/', $absolute_path, $uri);
    $form_state['values']['attributes']['data-file-id'] = $fid;
    $form_state['values']['attributes']['href'] = $url;
    unset($form_state['values']['fid']);

    // If no text was set, use the file name.
    if (strlen($form_state['values']['attributes']['text']) === 0) {
      $form_state['values']['attributes']['text'] = basename($url);
    }
  }
  else {
    // Modify references to other URIs if not an external link.
    $url = (substr($uri, 0, 4) == 'http') ? $uri : substr(base_path(), 0, -1) . $uri;
    $form_state['values']['attributes']['href'] = $url;
    // Remove any reference to a data file.
    unset($form_state['values']['fid']);
    $form_state['values']['attributes']['data-file-id'] = NULL;
  }

  // Clean up optional attributes, if not specified, remove.
  $more = array('class', 'target', 'id', 'title', 'rel', 'data-file-id');
  foreach ($more as $attribute) {
    if (isset($form_state['values']['attributes'][$attribute])) {
      $value = trim($form_state['values']['attributes'][$attribute]);
      if (strlen($value) === 0 || ($attribute === 'target' && empty($value))) {
        unset($form_state['values']['attributes'][$attribute]);
      }
      else {
        $form_state['values']['attributes'][$attribute] = $value;
      }
    }
  }
}