allow to migrate accounts from ADS to SQL

This commit is contained in:
Ralf Becker 2017-11-09 15:25:11 +01:00
parent 9f2abdd5df
commit e5ddf8d6b6
3 changed files with 18 additions and 9 deletions

View File

@ -1020,14 +1020,22 @@ class Storage
* - "accounts" accounts to ldap * - "accounts" accounts to ldap
* - "accounts-back" accounts back to sql (for sql-ldap!) * - "accounts-back" accounts back to sql (for sql-ldap!)
* - "sql" contacts and accounts to sql * - "sql" contacts and accounts to sql
* - "accounts-back-ads" accounts back from ads to sql
*/ */
function migrate2ldap($type) function migrate2ldap($type)
{ {
//error_log(__METHOD__."(".array2string($type).")"); //error_log(__METHOD__."(".array2string($type).")");
$sql_contacts = new Sql(); $sql_contacts = new Sql();
if ($type == 'accounts-back-ads')
{
$ldap_contacts = new Ads();
}
else
{
// we need an admin connection // we need an admin connection
$ds = $GLOBALS['egw']->ldap->ldapConnect(); $ds = $GLOBALS['egw']->ldap->ldapConnect();
$ldap_contacts = new Ldap(null, $ds); $ldap_contacts = new Ldap(null, $ds);
}
if (!is_array($type)) $type = explode(',', $type); if (!is_array($type)) $type = explode(',', $type);

View File

@ -46,7 +46,7 @@ if (!is_object($GLOBALS['egw_setup']->db))
} }
// Load configuration values account_repository and auth_type, as setup has not yet done so // Load configuration values account_repository and auth_type, as setup has not yet done so
foreach($GLOBALS['egw_setup']->db->select($GLOBALS['egw_setup']->config_table,'config_name,config_value', foreach($GLOBALS['egw_setup']->db->select($GLOBALS['egw_setup']->config_table,'config_name,config_value',
"config_name LIKE 'ldap%' OR config_name LIKE 'account_%' OR config_name LIKE '%encryption%' OR config_name='auth_type' OR config_name='mail_suffix'", "config_name LIKE 'ldap%' OR config_name LIKE 'account_%' OR config_name LIKE '%encryption%' OR config_name='auth_type' OR config_name='mail_suffix' OR config_name LIKE 'ads_%'",
__LINE__,__FILE__) as $row) __LINE__,__FILE__) as $row)
{ {
$GLOBALS['egw_info']['server'][$row['config_name']] = $row['config_value']; $GLOBALS['egw_info']['server'][$row['config_name']] = $row['config_value'];

View File

@ -442,12 +442,12 @@ class setup_cmd_ldap extends setup_cmd
{ {
$msg[] = $this->create(); $msg[] = $this->create();
} }
else elseif ($this->account_repository !== 'ads')
{ {
$msg[] = $this->connect(); $msg[] = $this->connect();
} }
// read accounts from old store // read accounts from old store
$accounts = $this->accounts($to == 'sql' ? 'ldap' : 'sql', $passwords2sql ? 'accounts' : 'both'); $accounts = $this->accounts($to == 'sql' ? $this->account_repository : 'sql', $passwords2sql ? 'accounts' : 'both');
// clean up SQL before migration // clean up SQL before migration
if ($to == 'sql' && $this->truncate_egw_accounts) if ($to == 'sql' && $this->truncate_egw_accounts)
@ -543,7 +543,7 @@ class setup_cmd_ldap extends setup_cmd
$accounts_created++; $accounts_created++;
// check if we need to migrate mail-account // check if we need to migrate mail-account
if (!isset($ldap_class)) if (!isset($ldap_class) && $this->account_repository !== 'ads')
{ {
$ldap_class = false; $ldap_class = false;
$ldap = Api\Ldap::factory(false); $ldap = Api\Ldap::factory(false);
@ -666,7 +666,8 @@ class setup_cmd_ldap extends setup_cmd
} }
} }
ob_start(); ob_start();
$addressbook->migrate2ldap($to != 'sql' ? 'accounts' : 'accounts-back'); $addressbook->migrate2ldap($to != 'sql' ? 'accounts' : 'accounts-back'.
($this->account_repository == 'ads' ? '-ads' : ''));
$msgs = array_merge($msg, explode("\n", strip_tags(ob_get_clean()))); $msgs = array_merge($msg, explode("\n", strip_tags(ob_get_clean())));
$this->restore_db(); $this->restore_db();
@ -775,7 +776,7 @@ class setup_cmd_ldap extends setup_cmd
parent::_setup_enviroment($this->domain); parent::_setup_enviroment($this->domain);
$enviroment_setup = true; $enviroment_setup = true;
} }
if ($type != 'sql') $this->connect(); // throws exception, if it can NOT connect if ($type != 'sql' && $type != 'ads') $this->connect(); // throws exception, if it can NOT connect
// otherwise search does NOT work, as accounts_sql uses addressbook_bo for it // otherwise search does NOT work, as accounts_sql uses addressbook_bo for it
$GLOBALS['egw_info']['server']['account_repository'] = $type; $GLOBALS['egw_info']['server']['account_repository'] = $type;