View source
<?php
namespace Drupal\backup_migrate\Plugin\BackupMigrateSource;
use BackupMigrate\Core\Config\Config;
use BackupMigrate\Core\Filter\DBExcludeFilter;
use BackupMigrate\Core\Main\BackupMigrateInterface;
use BackupMigrate\Drupal\Source\DrupalMySQLiSource;
use BackupMigrate\Drupal\EntityPlugins\SourcePluginBase;
class DefaultDBSourcePlugin extends SourcePluginBase {
public function getObject() {
$info = \Drupal\Core\Database\Database::getConnectionInfo('default', 'default');
$info = $info['default'];
$info['port'] = empty($info['port']) ? 3306 : $info['port'];
if ($info['driver'] == 'mysql') {
$conf = $this
->getConfig();
foreach ($info as $key => $value) {
$conf
->set($key, $value);
}
return new DrupalMySQLiSource($conf);
}
return NULL;
}
public function alterBackupMigrate(BackupMigrateInterface $bam, $key, $options = []) {
if ($source = $this
->getObject()) {
$bam
->sources()
->add($key, $source);
$config = [
'exclude_tables' => [],
'nodata_tables' => [
'cache_advagg_minify',
'cache_bootstrap',
'cache_config',
'cache_container',
'cache_data',
'cache_default',
'cache_discovery',
'cache_discovery_migration',
'cache_dynamic_page_cache',
'cache_entity',
'cache_menu',
'cache_migrate',
'cache_page',
'cache_render',
'cache_rest',
'cache_toolbar',
'sessions',
'watchdog',
'webprofiler',
],
];
$bam
->plugins()
->add('db_exclude', new DBExcludeFilter(new Config($config)));
}
}
}