123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- <?php
- function _term_merge_batch_process($term_branch, $term_trunk, $merge_settings, &$context) {
-
- if (!isset($context['sandbox']['current'])) {
- $context['sandbox']['current'] = 0;
- }
-
- $merge_settings += array(
- 'term_branch_keep' => FALSE,
- 'merge_fields' => array(),
- 'keep_only_unique' => TRUE,
- 'redirect' => TERM_MERGE_NO_REDIRECT,
- 'synonyms' => array(),
- 'step' => 40,
- );
- $total = count($term_branch);
-
-
- $till = min($total, $context['sandbox']['current'] + $merge_settings['step']);
- $length = $till - $context['sandbox']['current'];
- $term_branch = array_slice($term_branch, $context['sandbox']['current'], $length);
- $term_branch = array_values(taxonomy_term_load_multiple($term_branch));
- for ($i = 0; $i < $merge_settings['step'] && $context['sandbox']['current'] < $total; $i++) {
- actions_do('term_merge_action', $term_branch[$i], array(
- 'term_trunk' => $term_trunk,
- 'term_branch_keep' => $merge_settings['term_branch_keep'],
- 'merge_fields' => $merge_settings['merge_fields'],
- 'keep_only_unique' => $merge_settings['keep_only_unique'],
- 'redirect' => $merge_settings['redirect'],
- 'synonyms' => $merge_settings['synonyms'],
- ));
- $context['sandbox']['current']++;
- }
- if ($context['sandbox']['current'] != $total) {
- $context['finished'] = $context['sandbox']['current'] / $total;
- $term = $term_branch[$i - 1];
- $context['message'] = t('Merged up to @term', array('@term' => $term->name));
- }
- }
- function term_merge_batch_finished($success, $results, $operations) {
- if ($success) {
- drupal_set_message(t('The terms have been successfully merged.'));
- }
- else {
-
- drupal_set_message(t('An error occurred. We are sorry, please, report this error to the maintainers of Term Merge module.'), 'error');
- }
- }
|