forked from extern/egroupware
allow to migrate accounts from ADS to SQL
This commit is contained in:
parent
9f2abdd5df
commit
e5ddf8d6b6
@ -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);
|
||||||
|
|
||||||
|
@ -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'];
|
||||||
|
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user