You are here

taxonomy_csv.import.result.inc in Taxonomy CSV import/export 6.3

Show export result messages.

File

import/taxonomy_csv.import.result.inc
View source
<?php

/**
 * @file
 * Show export result messages.
 */

/**
 * Invoke associated include file.
 */
$module_dir = drupal_get_path('module', 'taxonomy_csv');
require_once "{$module_dir}/taxonomy_csv.result.inc";

/**
 * Display result messages of import process.
 *
 * @param $options
 *   Array. Same as taxonomy_csv_import.
 * @param $worst_level
 *   Integer. Worst watchdog level of the process.
 * @param $summary
 *   Translated string. Short summary of informations on process.
 * @param $results
 *   Array. Batch process results.
 *
 * @return
 *   Nothing.
 */
function _taxonomy_csv_import_result($options, $worst_level, $summary, $results) {

  // Prepare info and warning messages.
  $messages = array();

  // Summary message.
  $messages[] = array(
    $worst_level => $summary,
  );

  // Prepare batch result message.
  if ($options['total_lines'] == 0) {
    $message = t('Notice: Input has no term to import.');
    $messages[] = array(
      WATCHDOG_NOTICE => $message,
    );
  }
  elseif ($worst_level >= WATCHDOG_WARNING) {

    // General infos.
    $messages[] = array(
      WATCHDOG_INFO => _taxonomy_csv_info_chosen_options($options),
    );

    // Check and info on used or created vocabularies.
    $messages[] = array(
      WATCHDOG_INFO => _taxonomy_csv_info_vocabulary($options),
    );
    if (!$options['check_line']) {
      $messages[] = array(
        WATCHDOG_NOTICE => t('Line checks have been disabled. Some warnings and notices may have not been reported.'),
      );
    }

    // Display stats and eventually lists about imported terms.
    if ($options['result_stats'] || $options['result_terms']) {
      $messages[] = array(
        WATCHDOG_INFO => _taxonomy_csv_info_terms($options),
      );
    }

    // Display messages about line process.
    if ($options['result_level'] == 'first') {
      $messages[] = array(
        WATCHDOG_NOTICE => t('No more information: choice is to report only first warning or notice if any.'),
      );
    }
    else {

      // Display detailled result of import. First info was already displayed.
      $messages = array_merge($messages, _taxonomy_csv_info_lines($options, $results));
    }
  }
  _taxonomy_csv_message_result($messages);
}

/**
 * Return formatted list of chosen options.
 */
function _taxonomy_csv_info_chosen_options($options) {
  if (!isset($options['source_choice'])) {
    $options['source_choice'] = 'file';
  }

  // Local file, distant file or text.
  switch ($options['source_choice']) {
    case 'file':
      $message = t('Import from Api (use %file).', array(
        '%file' => $options['file']->filename,
      ));
      break;
    case 'text':
      $message = t('Import terms from text.');
      break;
    case 'url':
      $message = t('File "<a href="!url">%file</a>" uploaded from an url.', array(
        '!url' => $options['url'],
        '%file' => basename($options['url']),
      ));
      break;
    case 'path':
      $message = t('File "%file" uploaded.', array(
        '%file' => $options['file']->filename,
      ));
      break;
  }

  // Content.
  $list = _taxonomy_csv_values('import_format');
  $message .= '<br />' . t('Source content: "!import_format".', array(
    '!import_format' => $list[$options['import_format']],
  )) . '<br />';

  // Existing items.
  $list = _taxonomy_csv_values('import_option');
  $message .= t('Existing terms choice: "!import_items".', array(
    '!import_items' => $list[$options['existing_items']],
  )) . '<br />';

  // Custom locale.
  if ($options['locale_custom']) {
    $message .= t('Custom locale "!locale" has been used.', array(
      '!locale' => $options['locale_custom'],
    ));
  }
  return $message;
}

/**
 * Check created vocabularies and return formatted info on them.
 */
function _taxonomy_csv_info_vocabulary($options) {
  $messages = array();

  // General info on used or created vocabularies.
  // With some formats, multiple vocabularies can be created.
  $vocabularies = in_array($options['import_format'], array(
    TAXONOMY_CSV_FORMAT_DEFINITION_LINKS,
  )) ? $options['vocabularies'] : array(
    $options['vocabulary_id'],
  );
  $messages[] = t('%count used or created.', array(
    '%count' => format_plural(count($vocabularies), 'A vocabulary has been', '@count vocabularies have been', array()),
  ));
  foreach ($vocabularies as $vocabulary_id) {
    $message = '';

    // Check or update hierarchy of vocabularies.
    $vocabulary = taxonomy_vocabulary_load($vocabulary_id);
    if ($options['check_hierarchy']) {
      $result = _taxonomy_csv_check_vocabulary_hierarchy((array) $vocabulary, array(
        'tid' => 0,
      ));
    }
    else {
      if ($options['set_hierarchy'] != $vocabulary->hierarchy) {
        $vocabulary->hierarchy = $options['set_hierarchy'];
        $result = taxonomy_save_vocabulary($vocabulary);
      }
      $result = $options['set_hierarchy'];
    }
    $new_hierarchy[$vocabulary_id] = $result;

    // Display general info about vocabulary.
    $message .= in_array($options['import_format'], array(
      TAXONOMY_CSV_FORMAT_DEFINITION_LINKS,
    )) ? t('Vocabulary "%vocabulary_name" has been used or created.', array(
      '%vocabulary_name' => $vocabulary->name,
    )) : _taxonomy_csv_info_vocabulary_destination($vocabulary, $options['vocabulary_target']);
    $message .= '<br />';
    if (!$options['check_hierarchy']) {
      $message .= t('Hierarchy level has been manually set.') . ' ';
    }
    $message .= _taxonomy_csv_info_vocabulary_result($vocabulary, $options['vocabulary_target'], $new_hierarchy[$vocabulary_id]) . '<br />';
    $messages[] = $message;
  }
  return implode('<br />', $messages);
}

/**
 * Return informations about destination vocabulary.
 */
function _taxonomy_csv_info_vocabulary_destination($vocabulary, $vocabulary_target) {

  // Destination vocabulary.
  $list_messages = array(
    'autocreate' => t('New vocabulary "%vocabulary_name" has been created.', array(
      '%vocabulary_name' => $vocabulary->name,
    )),
    'duplicate' => t('Duplicate vocabulary "%vocabulary_name" has been created.', array(
      '%vocabulary_name' => $vocabulary->name,
    )),
    'existing' => t('Terms are imported into existing vocabulary "%vocabulary_name".', array(
      '%vocabulary_name' => $vocabulary->name,
    )),
  );
  return $list_messages[$vocabulary_target];
}

/**
 * Return informations about result vocabulary.
 */
function _taxonomy_csv_info_vocabulary_result($vocabulary, $vocabulary_target, $new_hierarchy) {
  $message = '';

  // Level of vocabulary.
  $hierarchy_text = array(
    0 => t('no parent (flat)'),
    1 => t('single parent (tree)'),
    2 => t('multiple parents (polyhierarchy)'),
  );
  if ($vocabulary_target != 'autocreate') {
    $message .= t('Old hierarchy level was !level (!level_text).', array(
      '!level' => $vocabulary->hierarchy,
      '!level_text' => $hierarchy_text[$vocabulary->hierarchy],
    )) . '<br />';
  }
  $message .= t('Hierarchy level is !level (!level_text).', array(
    '!level' => $new_hierarchy,
    '!level_text' => $hierarchy_text[$new_hierarchy],
  )) . '<br />';

  // Direct links to edit vocabulary and view terms.
  $message .= t('Properties can be edited at <a href="!vocabulary_edit_link">Administer > Content management > Taxonomy > edit vocabulary</a>.', array(
    '!vocabulary_edit_link' => url("admin/content/taxonomy/edit/vocabulary/{$vocabulary->vid}"),
  )) . '<br />';
  $message .= t('You can view terms at <a href="!vocabulary_list">Administer > Content management > Taxonomy > list terms</a>.', array(
    '!vocabulary_list' => url("admin/content/taxonomy/{$vocabulary->vid}"),
  )) . '<br />';
  if (module_exists('taxonomy_manager')) {
    $message .= t('It is recommended to use <a href="!link" title="Taxonomy manager module">Administer > Taxonomy manager > Vocabularies</a> with big taxonomies because a memory error can occur with default Drupal "List terms" menu.', array(
      '!link' => url("admin/content/taxonomy_manager/voc/{$vocabulary->vid}"),
    ));
  }
  else {
    $message .= t('Warning: with default Drupal "List terms" function, a memory error can occur with big taxonomies, so use another manager as <a href="!link" title="Taxonomy manager module">Taxonomy manager</a>.', array(
      '!link' => url('http://drupal.org/project/taxonomy_manager'),
    ));
  }
  return $message;
}

/**
 * Display stats and eventually lists of terms about imported terms.
 *
 * Currently, display only total and list of imported terms.
 */
function _taxonomy_csv_info_terms($options) {
  if (isset($options['imported_terms'])) {
    $tids = array();
    foreach ($options['imported_terms'] as $imported_tids) {
      $tids = array_unique(array_merge($tids, $imported_tids));
    }
    $message = '';

    // Display basic stats.
    if ($options['result_stats']) {

      // Display total of imported terms.
      $message .= t('Total created or updated terms : !count.', array(
        '!count' => count($tids),
      )) . '<br />';
    }

    // Display list of terms.
    if ($options['result_terms']) {
      $terms = taxonomy_csv_term_load_multiple($tids);
      $message .= '"';
      foreach ($terms as $term) {
        $message .= $term->name . '", "';
      }
      $message = substr($message, 0, strlen($message) - 3) . '.';
    }
  }
  else {
    $message = t('No term was imported.');
  }
  return $message;
}

/**
 * Display detailled result of import.
 */
function _taxonomy_csv_info_lines($options, $results) {
  $messages = array();
  if (count($results)) {
    $messages[] = array(
      WATCHDOG_INFO => t('Available informations about lines import.'),
    );
    switch ($options['result_type']) {
      case 'by_line':
        $messages = array_merge($messages, _taxonomy_csv_message_result_by_line($results));
        break;
      case 'by_message':
        $messages = array_merge($messages, _taxonomy_csv_message_result_by_message($results));
        break;
    }
  }
  else {
    $messages[] = array(
      WATCHDOG_INFO => t('No more information reported about lines import.'),
    );
  }
  return $messages;
}

Functions

Namesort descending Description
_taxonomy_csv_import_result Display result messages of import process.
_taxonomy_csv_info_chosen_options Return formatted list of chosen options.
_taxonomy_csv_info_lines Display detailled result of import.
_taxonomy_csv_info_terms Display stats and eventually lists of terms about imported terms.
_taxonomy_csv_info_vocabulary Check created vocabularies and return formatted info on them.
_taxonomy_csv_info_vocabulary_destination Return informations about destination vocabulary.
_taxonomy_csv_info_vocabulary_result Return informations about result vocabulary.