You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

155 lines
4.7 KiB

<?php
/**
* @file
* Contains sample_migration.module.
*/
use Drupal\Core\Routing\RouteMatchInterface;
/**
* Implements hook_help().
*/
function sample_migration_help($route_name, RouteMatchInterface $route_match) {
switch ($route_name) {
// Main module help for the sample_migration module.
case 'help.page.sample_migration':
$output = '';
$output .= '<h3>' . t('About') . '</h3>';
$output .= '<p>' . t('Sample Migrations') . '</p>';
return $output;
default:
}
}
function sample_migration_title_body_paragraphs(&$context) {
$entity_type_manager = \Drupal::service('entity_type.manager');
/* @var NodeStorage $node_storage */
$node_storage = $entity_type_manager->getStorage('node');
$media_storage = $entity_type_manager->getStorage('media');
$file_storage = $entity_type_manager->getStorage('file');
if (empty($context['sandbox'])) {
$context['sandbox'] = [];
}
if (!isset($context['sandbox']['progress'])) {
$context['sandbox']['progress'] = 0;
$context['sandbox']['current_index'] = 0;
$all_arm_pages = $node_storage->loadByProperties([
'type' => 'arm_page'
]);
$context['sandbox']['arm_content'] = array_values($all_arm_pages);
$context['sandbox']['arm_map'] = _get_arm_map();
$context['sandbox']['file_map'] = _get_file_map();
$context['sandbox']['d7_files'] = _get_d7_arm_files();
$context['sandbox']['index'] = array_values($context['sandbox']['arm_content']);
$context['sandbox']['max'] = count($context['sandbox']['arm_content']);
}
$limit = 10;
$indexes = range($context['sandbox']['current_index'], $context['sandbox']['current_index'] + $limit);
foreach ($indexes as $index) {
$node = $context['sandbox']['arm_content'][$index];
if (!is_null($node)) {
$context['results'][] = $node->title->value;
$d7nid = $context['sandbox']['arm_map'][$node->id()];
$d7file = $context['sandbox']['d7_files'][$d7nid->sourceid1];
if ($d7file) {
$d8file = $context['sandbox']['file_map'][$d7file->field_armpage_pdf_fid];
$current_file = $file_storage->load($d8file->destid1);
if ($d8file) {
$node->set('field_armpage_pdf', $current_file->id());
$node->save();
}
}
}
$context['sandbox']['progress']++;
$context['sandbox']['current_index'] = $index;
$context['message'] = t('Now processing Reviews');
}
// Update batch on our progress.
if ($context['sandbox']['progress'] != $context['sandbox']['max']) {
$context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max'];
}
else {
$context['sandbox']['finished'] = 1;
}
}
function sample_migration_title_body_paragraphs_finished() {
$messenger = \Drupal::messenger();
if ($success) {
$message = t('@count Reviews were added to Groups', ['@count' => count($results)]);
$messenger->addMessage($message);
}
else {
// Something went wrong
$error_operation = reset($operations);
$messenger->addMessage(
t('An error occurred while processing @operation with arguments : @args',
[
'@operation' => $error_operation[0],
'@args' => print_r($error_operation[0], TRUE)
]
)
);
}
}
function sample_migration_get_title_body_field_collections() {
Database::setActiveConnection('drupal7');
$drupal7db = Database::getConnection();
$query = $drupal7db->select('field_collection_item', 'fci')
->fields('fci', [
'item_id',
'field_name',
'revision_id'
]);
$query->innerJoin('field_data_' . $field_name, 'fd', 'fd.' . $field_name . '_value = fci.item_id');
$query->fields('fd', [
'entity_type',
'bundle',
'entity_id',
$field_name . '_revision_id'
]);
$query->condition('fci.field_name', $field_name);
$query->leftJoin('field_data_field_usingpage_block_image', 'fdfubi', 'fdfubi.entity_id = fci.item_id');
$query->fields('fdfubi', [
'entity_id',
'revision_id',
'field_usingpage_block_image_fid'
]);
$results = $query->execute()->fetchAll();
Database::setActiveConnection('default');
if (count($results)) {
$drupal8db = Database::getConnection();
$query = $drupal8db->select('migrate_map_upgrade_d7_node_using_library_page', 'mm');
$query->fields('mm', [
'sourceid1',
'destid1'
]);
$map_results = $query->execute()->fetchAllAssoc('sourceid1');
}
}
function sample_migration_get_test_paragraph_content_map() {
$drupal8db = Database::getConnection();
$query = $drupal8db->select('migrate_map_upgrade_d7_node_using_library_page', 'mm');
$query->fields('mm', [
'sourceid1',
'destid1'
]);
$map_results = $query->execute()->fetchAllAssoc('sourceid1');
}