You are here

public static function Terms::export in Hook Update Deploy Tools 7

Exports a single term based on its tid. (Typically called from Drush).

Parameters

string $tid: The tid of the Term to export.

Return value

string The URI of the item exported, or a failure message.

Overrides ExportInterface::export

File

src/Terms.php, line 507

Class

Terms
Public methods for dealing with Vocabularies.

Namespace

HookUpdateDeployTools

Code

public static function export($tid) {
  $t = get_t();
  try {
    Check::notEmpty('tid', $tid);
    Check::isNumeric('tid', $tid);
    self::canExport();
    $msg_return = '';

    // Load the term if it exists.
    $term = taxonomy_term_load($tid);
    Check::notEmpty('term', $term);
    Check::notEmpty('term name', $term->name);
    Check::notEmpty('vocabulary_machine_name', $term->vocabulary_machine_name);

    // Get the vocabulary name.
    $vocabulary = Vocabularies::loadByMachineName($term->vocabulary_machine_name, TRUE);
    Check::notEmpty('vocabulary_name', $vocabulary->name);
    $voc_term_name = self::normalizeVocTermName($vocabulary->name, $term->name);
    $file_name = self::normalizeFileName($voc_term_name);
    $storage_path = HudtInternal::getStoragePath('term');
    $file_uri = DRUPAL_ROOT . '/' . $storage_path . $file_name;

    // Add parents. These will be unpacked at import.
    $term->parents = taxonomy_get_parents($tid);

    // Get pathauto path.
    if (!empty($term->path) && isset($term->path['pathauto']) && $term->path['pathauto'] === '0') {

      // Lookup the alias and store it.
      $alias = drupal_get_path_alias("taxonomy/term/{$tid}");
      $term->path['alias'] = $alias;
    }

    // Made it this far, it exists, so export it.
    $export_contents = drupal_var_export($term);

    // Save the file.
    $msg_return = HudtInternal::writeFile($file_uri, $export_contents);
  } catch (\Exception $e) {

    // Any errors from this command do not need to be watchdog logged.
    $e->logIt = FALSE;
    $vars = array(
      '!error' => method_exists($e, 'logMessage') ? $e
        ->logMessage() : $e
        ->getMessage(),
    );
    $msg_error = $t("Caught exception:  !error", $vars);
  }
  if (!empty($msg_error)) {
    drush_log($msg_error, 'error');
  }
  return !empty($msg_return) ? $msg_return : $msg_error;
}