mediamosa_migration.admin.inc
<?php
module_load_include('inc', 'mediamosa_migration', 'mediamosa_migration');
function mediamosa_migration_page_form() {
$build = array();
$build['restcall'] = drupal_get_form('mediamosa_migration_form');
return $build;
}
function mediamosa_migration_form() {
$form = array();
$form['migration'] = array(
'#type' => 'fieldset',
'#title' => t('MediaMosa 1.7.x migration'),
);
$status = variable_get('mediamosa_migration_status');
if (!is_array($status) && $status == 'done') {
$form['migration']['text'] = array(
'#markup' => '<p>' . t('Migration has been completed, you can turn off this module.') . '</p>',
);
}
else {
$reasons = _mediamosa_requirements_test();
$form['migration']['text_passed_intro'] = array(
'#markup' => '<p>' . t('To use your MediaMosa 1.7.x database, you need to migrate your 1.7.x database to MediaMosa. Your origninal 1.7.x database is not changed. Warning: Your old database must be installed on the same mysql server as the new MediaMosa 2.x database. If for some reason migration fails, please report on !mediamosaorg. Make sure you are migrating with version MediaMosa 1.7.3. to MediaMosa.1.x.', array('!mediamosaorg' => l('mediamosa.org', 'http://mediamosa.org'))) . '</p>'
);
if (count($reasons)) {
$form['migration']['text'] = array(
'#markup' => '<p>' . t('Solve these problems before you can migrate;') . '</p><p>' . implode('</p><p>', $reasons) . '</p>',
);
}
else {
$form['migration']['text_passed_status'] = array(
'#markup' => '<p>' . t('All prechecks passed.') . '</p>'
);
$form['migration']['text_push_button'] = array(
'#markup' => '<p>' . t('Press migration button to start migration.') . '</p>'
);
$form['migration']['submit'] = array(
'#type' => 'submit',
'#value' => t('Start migration'),
);
}
}
return $form;
}
function mediamosa_migration_form_submit($form, &$form_state) {
switch ($form_state['values']['op']) {
case t('Start migration'):
$batch = array(
'operations' => array(
array('_mediamosa_migration_process', array('_mediamosa_migration_vpx_ftp', t('FTP tables (optional)'))),
array('_mediamosa_migration_process', array('_mediamosa_migration_error', t('error code table(s)'))),
array('_mediamosa_migration_process', array('_mediamosa_migration_client_applications', t('client applications table(s)'))),
array('_mediamosa_migration_process', array('_mediamosa_migration_sannas', t('san nas settings'))),
array('_mediamosa_migration_process', array('_mediamosa_migration_asset', t('asset table(s)'))),
array('_mediamosa_migration_process', array('_mediamosa_migration_asset_supplement', t('asset supplement table(s)'))),
array('_mediamosa_migration_process', array('_mediamosa_migration_mediafile', t('mediafile table(s)'))),
array('_mediamosa_migration_process', array('_mediamosa_migration_kill_child_assets', t('move child assets from possible parents, parent_id in asset table is no longer used in MediaMosa'))),
array('_mediamosa_migration_process', array('_mediamosa_migration_mediafile_metadata', t('mediafile metadata table(s)'))),
array('_mediamosa_migration_process', array('_mediamosa_migration_asset_metadata_property_group', t('asset metadata property group table(s)'))),
array('_mediamosa_migration_process', array('_mediamosa_migration_asset_metadata_property', t('asset metadata property table(s)'))),
array('_mediamosa_migration_process', array('_mediamosa_migration_asset_metadata', t('asset metadata property table(s)'))),
array('_mediamosa_migration_process', array('_mediamosa_migration_collection', t('collection table(s)'))),
array('_mediamosa_migration_process', array('_mediamosa_migration_aut', t('acl/aut table(s)'))),
array('_mediamosa_migration_process', array('_mediamosa_migration_asset_delete', t('asset delete table(s)'))),
array('_mediamosa_migration_process', array('_mediamosa_migration_ticket', t('ticket table(s)'))),
array('_mediamosa_migration_process', array('_mediamosa_migration_user', t('(mediamosa) user/group table(s)'))),
array('_mediamosa_migration_process', array('_mediamosa_migration_ftp_batch', t('ftp batch table(s)'))),
array('_mediamosa_migration_process', array('_mediamosa_migration_webservice', t('webservice table(s)'))),
array('_mediamosa_migration_process', array('_mediamosa_migration_create_server_nodes', t('server table(s)'))),
array('_mediamosa_migration_process', array('_mediamosa_migration_transcode', t('transcode table(s)'))),
array('_mediamosa_migration_process', array('_mediamosa_migration_statistics', t('statistic table(s)'))),
array('_mediamosa_migration_process', array('_mediamosa_migration_settings', t('settings table(s)'))),
),
'finished' => '_mediamosa_migration_batch_finished',
'title' => t('Migrating database'),
'init_message' => t('Migration is starting.'),
'progress_message' => t('Processed @current out of @total.'),
'error_message' => t('The migration has encounted an error, please check logs.'),
);
batch_set($batch);
break;
}
}
function _mediamosa_migration_process($callback, $part, &$context) {
$status = variable_get('mediamosa_migration_status', array());
if ((!is_array($status) && $status == 'done') || (is_array($status) && isset($status[$callback]))) {
$context['sandbox']['progress'] = 1;
return;
}
$context['sandbox']['progress'] = 0;
$context['sandbox']['current_node'] = 0;
$context['sandbox']['max'] = 1;
$context['message'] = t('Migrating: @part', array('@part' => $part));
$callback();
$context['results'][] = t('Succesfully migrated: @part', array('@part' => $part));
$context['sandbox']['progress'] = 1;
$status[$callback] = $callback;
variable_set('mediamosa_migration_status', $status);
}
function _mediamosa_migration_batch_finished($success, $results, $operations) {
if ($success) {
$message = count($results) . ' processed.';
$message .= theme('item_list', $results);
variable_set('mediamosa_migration_status', 'done');
}
else {
$error_operation = reset($operations);
$message = t('An error occurred while processing %error_operation with arguments: @arguments', array('%error_operation' => $error_operation[0], '@arguments' => print_r($error_operation[1], TRUE)));
}
drupal_set_message($message);
}