You are here

function ocupload_change_files_status in One Click Upload 7.2

Same name and namespace in other branches
  1. 7 ocupload.module \ocupload_change_files_status()

Custom form submit. Change status uploaded files to "permanent".

1 string reference to 'ocupload_change_files_status'
ocupload_form_alter in ./ocupload.module
Implements hook_form_alter().

File

./ocupload.module, line 219

Code

function ocupload_change_files_status($form, &$form_state) {
  $form_id = $form['#form_id'];
  if (isset($_SESSION['ocupload'][$form_id])) {
    module_load_include('inc', 'ocupload');
    $fields_map = array(
      'user_profile_form' => array(
        'signature[value]' => 'signature',
      ),
    );
    drupal_alter('ocupload_fields_map', $fields_map, $form, $form_state);
    $permanent_files = array();
    foreach ($_SESSION['ocupload'][$form_id] as $field_name => $files) {
      $form_state_field_name = isset($fields_map[$form_id][$field_name]) ? $fields_map[$form_id][$field_name] : $field_name;
      $field_value = _ocupload_field_value_by_html_name($form_state, $form_state_field_name);
      if (!$field_value) {
        continue;
      }
      foreach ($files as $fid => $file_info) {

        // Check file in text
        if (strpos($field_value, $file_info['url']) !== FALSE) {

          // Change file status to permanent
          $file = file_load($fid);
          $file->status = FILE_STATUS_PERMANENT;
          file_save($file);

          // Attach file to field
          $file_extension = _ocupload_get_file_extension($file_info['uri']);
          $template = _ocupload_get_appropriate_template($file_extension);
          if ($template->field && isset($form['#entity_type']) && isset($form['#bundle']) && isset($form_state['values'][$template->field])) {
            $form_state['values'][$template->field][LANGUAGE_NONE][] = array(
              'fid' => $file->fid,
              'display' => 0,
              '_weight' => 100,
            );
          }
          unset($_SESSION['ocupload'][$form_id][$field_name][$fid]);
          $permanent_files[] = $file;
        }
      }
    }
    if ($permanent_files) {
      drupal_alter('ocupload_saved_data', $permanent_files, $form, $form_state);
    }

    // Write unused files in log and status message
    if ($_SESSION['ocupload'][$form_id]) {
      $temp_files = array();
      foreach ($_SESSION['ocupload'][$form_id] as $field_name => $files) {
        foreach ($files as $fid => $file_info) {
          if (!$file_info['noticed']) {
            $temp_files[] = l($file_info['url'], $file_info['url']);
            $_SESSION['ocupload'][$form_id][$field_name][$fid]['noticed'] = TRUE;
          }
        }
      }
      if ($temp_files) {
        $temp_files_list = theme('item_list', array(
          'items' => $temp_files,
        ));
        drupal_set_message(t('The following files are not used in text and will be deleted: !files', array(
          '!files' => $temp_files_list,
        )), 'warning');
        watchdog('ocupload', 'The following files are not used in text and will be deleted: !files', array(
          '!files' => $temp_files_list,
        ), WATCHDOG_NOTICE);
      }
    }
    _ocupload_clean_session();
  }
}