Skip to content
Snippets Groups Projects
Commit 7c279563 authored by Tim Steiner's avatar Tim Steiner
Browse files

[gh-80] Merging from testing into staging

git-svn-id: file:///tmp/wdn_thm_drupal/branches/drupal-7.x/staging@480 20a16fea-79d4-4915-8869-1ea9d5ebf173
parent 17c9081b
Branches
Tags
No related merge requests found
......@@ -227,6 +227,7 @@ EOF;
$new_prefix = $GLOBALS['databases']['default']['default']['prefix'];
$shared_prefix = $parent_site_database_settings['default']['default']['prefix'];
$short_prefix = substr($new_prefix, 0, 0 - (strlen($shared_prefix) + 1));
$new_prefixes = array(
// Localized tables, prefixed with site name
'default' => $new_prefix,
......@@ -303,6 +304,48 @@ EOF;
unset($all_permissions[$permission]);
}
user_role_grant_permissions($site_admin_role->rid, array_keys($all_permissions));
// If a site admin has been specified, add that user and add them to the Site Admin role.
$data = db_query(
"SELECT * "
. "FROM {$shared_prefix}variable "
. "WHERE name IN ('unl_frontier_username', 'unl_frontier_password')"
);
$frontier_config = array();
foreach ($data as $row) {
$frontier_config[$row->name] = unserialize($row->value);
}
$data = db_query(
"SELECT * "
. "FROM {$shared_prefix}unl_sites "
. "WHERE db_prefix = :prefix ",
array(':prefix' => $short_prefix)
);
foreach ($data as $row) {
if ($row->site_admin) {
$userData = array(
'name' => $row->site_admin,
'status' => 1,
'timezone' => variable_get('date_default_timezone', @date_default_timezone_get()),
'roles' => array($site_admin_role->rid => $site_admin_role->name),
);
user_save(NULL, $userData);
}
if ($row->migration_url) {
require_once DRUPAL_ROOT . '/sites/all/modules/unl/unl_migration.php';
$migration = new Unl_Migration_Tool(
$row->migration_url,
$row->migration_path,
$frontier_config['unl_frontier_username'],
$frontier_config['unl_frontier_password'],
FALSE
);
DrupalQueue::get('unl_migration', TRUE)
->createItem(Unl_Migration_Tool::save_to_disk($migration));
}
}
}
......
......@@ -37,7 +37,26 @@ function unl_schema() {
'length' => 255,
'not null' => TRUE,
'default' => '',
)
),
'site_admin' => array(
'type' => 'varchar',
'length' => 255,
'not null' => TRUE,
'default' => '',
),
'migration_url' => array(
'type' => 'varchar',
'length' => 255,
'not null' => TRUE,
'default' => '',
),
'migration_path' => array(
'type' => 'varchar',
'length' => 255,
'not null' => TRUE,
'default' => '',
),
),
'primary key' => array('site_id'),
'unique keys' => array(
......@@ -188,3 +207,27 @@ function unl_update_7103() {
db_create_table('unl_sites_aliases', $table);
}
function unl_update_7104() {
db_add_field('unl_sites', 'site_admin', array(
'type' => 'varchar',
'length' => 255,
'not null' => TRUE,
'default' => '',
));
}
function unl_update_7105() {
db_add_field('unl_sites', 'migration_url', array(
'type' => 'varchar',
'length' => 255,
'not null' => TRUE,
'default' => '',
));
db_add_field('unl_sites', 'migration_path', array(
'type' => 'varchar',
'length' => 255,
'not null' => TRUE,
'default' => '',
));
}
......@@ -143,6 +143,16 @@ function unl_menu() {
'type' => MENU_LOCAL_TASK,
'file' => 'unl_site_creation.php',
);
$items['admin/sites/unl/wdn_registry'] = array(
'title' => 'WDN Registry',
'description' => 'Settings for the connection to the WDN Registry.',
'access arguments' => array('unl site creation'),
'page callback' => 'drupal_get_form',
'page arguments' => array('unl_wdn_registry'),
'type' => MENU_LOCAL_TASK,
'file' => 'unl_site_creation.php',
);
}
return $items;
......@@ -359,3 +369,93 @@ function unl_user_access($permissions, $account = NULL) {
return TRUE;
}
function unl_cron()
{
if (PHP_SAPI == 'cli') {
return;
}
$queue = DrupalQueue::get('unl_migration');
if ($queue->numberOfItems() > 0) {
require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'unl_migration.php';
$item = $queue->claimItem(120);
$queue->deleteItem($item);
unl_migration_queue_step($item->data);
}
if (conf_path() == 'sites/default') {
$wdn_registry_info = array(
'database' => variable_get('unl_wdn_registry_database'),
'username' => variable_get('unl_wdn_registry_username'),
'password' => variable_get('unl_wdn_registry_password'),
'host' => variable_get('unl_wdn_registry_host'),
'driver' => 'mysql',
);
if (!$wdn_registry_info['database']) {
return;
}
Database::addConnectionInfo('wdn_registry', 'default', $wdn_registry_info);
db_set_active('wdn_registry');
try {
$data = db_select('site_request', 'r')
->fields('r')
->where('`url` IS NULL')
->execute()
->fetchAll();
}
catch (Exception $e) {
db_set_active();
return;
}
$sites_to_create = array();
foreach ($data as $site) {
$path = $site->department . '/' . $site->site_name;
$path = strtolower($path);
$path = strtr($path, array(' ' => ''));
$db_prefix = $site->site_name;
$db_prefix = strtolower($db_prefix);
$db_prefix = strtr($db_prefix, array(' ' => ''));
$path = 'incubator/' . $path;
$sites_to_create[] = array(
'site_path' => $path,
'uri' => url($path),
'clean_url' => TRUE,
'db_prefix' => $db_prefix,
'site_admin' => $site->site_admin,
'migration_url' => $site->migration_url,
'migration_path' => $site->migration_path,
);
if (variable_get('unl_wdn_registry_production')) {
db_update('site_request')
->fields(array('url' => url($path)))
->condition('id', $site->id)
->execute();
}
}
db_set_active();
foreach ($sites_to_create as $site_to_create) {
try {
db_insert('unl_sites')->fields($site_to_create)->execute();
}
catch (PDOException $e) {
// Ignore duplicate records.
if ($e->getCode() != 23000) {
throw $e;
}
}
}
}
}
......@@ -59,21 +59,27 @@ function unl_migration($form, &$form_state)
function unl_migration_submit($form, &$form_state) {
$operations = array();
$migration = new Unl_Migration_Tool(
$form_state['values']['site_url'],
$form_state['values']['frontier_path'],
$form_state['values']['frontier_user'],
$form_state['values']['frontier_pass'],
$form_state['values']['ignore_duplicates']
);
$operations = array(
array(
'unl_migration_step',
array(
$form_state['values']['site_url'],
$form_state['values']['frontier_path'],
$form_state['values']['frontier_user'],
$form_state['values']['frontier_pass'],
$form_state['values']['ignore_duplicates'],
$migration,
)
)
);
DrupalQueue::get('unl_migration', TRUE)
->createItem(Unl_Migration_Tool::save_to_disk($migration));
return;
$batch = array(
'operations' => $operations,
'file' => substr(__FILE__, strlen(DRUPAL_ROOT) + 1),
......@@ -81,23 +87,13 @@ function unl_migration_submit($form, &$form_state) {
batch_set($batch);
}
function unl_migration_step($site_url, $frontier_path, $frontier_user, $frontier_pass, $ignore_duplicates, &$context)
function unl_migration_step($migration, &$context)
{
$finished = 0;
if (isset($context['sandbox']['file']) && file_exists($context['sandbox']['file'])) {
$migration = unserialize(file_get_contents($context['sandbox']['file']));
unlink($form_state['storage']['file']);
$migration = Unl_Migration_Tool::load_from_disk($context['sandbox']['file']);
$finished = $context['sandbox']['finished'];
}
else {
$migration = new Unl_Migration_Tool(
$site_url,
$frontier_path,
$frontier_user,
$frontier_pass,
$ignore_duplicates
);
}
if ($migration->migrate()) {
$context['finished'] = 1;
......@@ -110,9 +106,16 @@ function unl_migration_step($site_url, $frontier_path, $frontier_user, $frontier
}
$context['finished'] = $finished;
$context['sandbox']['finished'] = $finished;
$migration_storage_file = drupal_tempnam(file_directory_temp(), 'unl_migration_');
$context['sandbox']['file'] = $migration_storage_file;
file_put_contents($migration_storage_file, serialize($migration));
$context['sandbox']['file'] = Unl_Migration_Tool::save_to_disk($migration);
}
function unl_migration_queue_step($migration_storage_file) {
$migration = Unl_Migration_Tool::load_from_disk($migration_storage_file);
if ($migration->migrate(30)) {
return;
}
DrupalQueue::get('unl_migration', TRUE)
->createItem(Unl_Migration_Tool::save_to_disk($migration));
}
......@@ -751,7 +754,7 @@ class Unl_Migration_Tool
'und' => array(
array(
'value' => $content,
'format' => filter_default_format()
'format' => array_shift(array_keys(filter_formats()))
)
)
);
......@@ -1016,5 +1019,21 @@ class Unl_Migration_Tool
return FALSE;
}
static public function save_to_disk(Unl_Migration_Tool $instance)
{
$migration_storage_file = drupal_tempnam(file_directory_temp(), 'unl_migration_');
file_put_contents($migration_storage_file, serialize($instance));
if (PHP_SAPI == 'cli') {
chmod($migration_storage_file, 0666);
}
return $migration_storage_file;
}
static public function load_from_disk($migration_storage_file) {
$instance = unserialize(file_get_contents($migration_storage_file));
unlink($migration_storage_file);
return $instance;
}
}
......@@ -390,6 +390,85 @@ function unl_alias_list_submit($form, &$form_state) {
}
function unl_wdn_registry($form, &$form_state) {
$form['root'] = array(
'#type' => 'fieldset',
'#title' => 'WDN Registry Database',
);
$form['root']['production'] = array(
'#type' => 'checkbox',
'#title' => 'This is production.',
'#description' => 'If this box checked, sites imported will be marked as imported.',
'#default_value' => variable_get('unl_wdn_registry_production'),
);
$form['root']['host'] = array(
'#type' => 'textfield',
'#title' => 'Host',
'#description' => 'Hostname of the WDN Registry database.',
'#default_value' => variable_get('unl_wdn_registry_host'),
'#required' => TRUE,
);
$form['root']['username'] = array(
'#type' => 'textfield',
'#title' => 'Username',
'#description' => 'Username for the WDN Registry database.',
'#default_value' => variable_get('unl_wdn_registry_username'),
'#required' => TRUE,
);
$form['root']['password'] = array(
'#type' => 'password',
'#title' => 'Password',
'#description' => 'Password for the WDN Registry database.',
'#required' => TRUE,
);
$form['root']['database'] = array(
'#type' => 'textfield',
'#title' => 'Database',
'#description' => 'Database for the WDN Registry database.',
'#default_value' => variable_get('unl_wdn_registry_database'),
'#required' => TRUE,
);
$form['root']['frontier_username'] = array(
'#type' => 'textfield',
'#title' => 'Frontier Username',
'#description' => 'Username to connect to frontier FTP.',
'#default_value' => variable_get('unl_frontier_username'),
'#required' => TRUE,
);
$form['root']['frontier_password'] = array(
'#type' => 'password',
'#title' => 'Frontier Password',
'#description' => 'Password to connect to frontier FTP.',
'#required' => TRUE,
);
$form['root']['submit'] = array(
'#type' => 'submit',
'#value' => 'Update',
);
return $form;
}
function unl_wdn_registry_submit($form, &$form_state) {
variable_set('unl_wdn_registry_production', $form_state['values']['production']);
variable_set('unl_wdn_registry_host', $form_state['values']['host']);
variable_set('unl_wdn_registry_username', $form_state['values']['username']);
variable_set('unl_wdn_registry_password', $form_state['values']['password']);
variable_set('unl_wdn_registry_database', $form_state['values']['database']);
variable_set('unl_frontier_username', $form_state['values']['frontier_username']);
variable_set('unl_frontier_password', $form_state['values']['frontier_password']);
}
function _unl_get_install_status_text($id) {
switch ($id) {
case 0:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment