You are here

function media_browser_plus_folder_save_folder in Media Browser Plus 7

Same name and namespace in other branches
  1. 7.2 includes/media_browser_plus.folders.inc \media_browser_plus_folder_save_folder()

@todo Document what this function is does.

_state

Parameters

$form:

3 calls to media_browser_plus_folder_save_folder()
media_browser_plus_folder_add_submit in includes/media_browser_plus.folders.inc
@todo Document what this function is does.
media_browser_plus_folder_add_submit_continue in includes/media_browser_plus.folders.inc
@todo Document what this function is does.
media_browser_plus_folder_edit_submit in includes/media_browser_plus.folders.inc
@todo Document what this function is does.

File

includes/media_browser_plus.folders.inc, line 382
Folder manipulation functions

Code

function media_browser_plus_folder_save_folder($form_state) {
  $vocabulary = taxonomy_vocabulary_machine_name_load('media_folders');
  $term = new stdClass();
  if (isset($form_state['values']['folder_id'])) {
    $term->tid = (int) $form_state['values']['folder_id'];
    $source = media_browser_plus_construct_dir_path($term);
  }
  $term->name = check_plain($form_state['values']['name']);
  $term->description = check_plain($form_state['values']['description']);
  $term->parent = (int) $form_state['values']['pid'];
  $term->vid = $vocabulary->vid;

  // Save (folder) term.
  switch (taxonomy_term_save($term)) {
    case SAVED_NEW:

      // Create physical folder.
      $dir = media_browser_plus_construct_dir_path($term);
      if (file_prepare_directory($dir, FILE_CREATE_DIRECTORY)) {
        drupal_set_message(t('Folder %term_name created successfully', array(
          '%term_name' => $term->name,
        )));
      }
      else {
        drupal_set_message(t('Folder %term_name created successfully as term but failed to create as physical folder.Please do it manually', array(
          '%term_name' => $term->name,
        )), 'warning');
      }
      break;
    case SAVED_UPDATED:

      // Update physical folder.
      $destination = media_browser_plus_construct_dir_path($term);
      if ($source != $destination) {
        media_browser_plus_move_physical_folder($source, $destination);

        // Update files in folder and subfolders get folders.
        $folders = array(
          $term->tid,
        );
        $sub_folders = taxonomy_get_children($term->tid);

        // Add subfolders if found
        foreach ($sub_folders as $sf) {
          $folders[] = $sf->tid;
        }
        $path = drupal_get_path('module', 'media_browser_plus');

        // Set batch.
        $batch = array(
          'title' => t('Updating Media'),
          'operations' => array(
            array(
              'media_browser_plus_folder_update_file_locations_batch',
              array(
                $folders,
              ),
            ),
          ),
          'finished' => 'media_browser_plus_folder_update_file_locations_batch_complete',
          'file' => $path . '/includes/media_browser_plus.folders.inc',
        );
        batch_set($batch);
      }
      drupal_set_message(t('Folder %term_name updated successfully', array(
        '%term_name' => $term->name,
      )));
      break;
    case FALSE:
      drupal_set_message(t('Error saving folder %term_name', array(
        '%term_name' => $term->name,
      )), 'error');
      break;
  }
}