first take on migrating mail accounts from LDAP to SQL (only qmailUser schema)

This commit is contained in:
Ralf Becker 2012-11-19 09:59:00 +00:00
parent 12fa75f978
commit 67f71992ee
2 changed files with 28 additions and 3 deletions

View File

@ -37,7 +37,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'", "config_name LIKE 'ldap%' OR config_name LIKE 'account_%' OR config_name LIKE '%encryption%' OR config_name='auth_type' OR config_name='mail_suffix'",
__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

@ -195,6 +195,31 @@ class setup_cmd_ldap extends setup_cmd
$msg[] = lang('%1 created in %2.',$what,$target); $msg[] = lang('%1 created in %2.',$what,$target);
$accounts_created++; $accounts_created++;
// check if we need to migrate mail-account
// todo sql --> ldap and other schemas
if (!$to_ldap && in_array('qmailUser', $account['objectclass']))
{
if (!isset($emailadmin_ldap))
{
include_once(EGW_INCLUDE_ROOT.'/emailadmin/inc/class.postfixldap.inc.php');
$emailadmin_ldap = new postfixldap();
}
if (($mailaccount = $emailadmin_ldap->getUserData($account_id)))
{
echo "<p>".array2string($mailaccount).': ';
if (!isset($emailadmin_sql))
{
$emailadmin_sql = new emailadmin_smtp_sql();
}
$emailadmin_sql->setUserData($account_id, (array)$mailaccount['mailAlternateAddress'],
(array)$mailaccount['mailForwardingAddress'], $mailaccount['deliveryMode'],
$mailaccount['accountStatus'], $mailaccount['mailLocalAddress'],
$mailaccount['quotaLimit']);
echo "mail account migraged<br/>\n";
}
else echo "<p>No mail account data found for #$account_id $account[account_lid]!</p>\n";
}
// should we run any or some addAccount hooks // should we run any or some addAccount hooks
if ($this->add_account_hook) if ($this->add_account_hook)
{ {
@ -334,7 +359,7 @@ class setup_cmd_ldap extends setup_cmd
$accounts_obj = $this->accounts_obj($from_ldap); $accounts_obj = $this->accounts_obj($from_ldap);
//error_log(__METHOD__."(from_ldap=".array2string($from_ldap).') get_class(accounts_obj->backend)='.get_class($accounts_obj->backend)); //error_log(__METHOD__."(from_ldap=".array2string($from_ldap).') get_class(accounts_obj->backend)='.get_class($accounts_obj->backend));
$accounts = $accounts_obj->search(array('type' => 'both')); $accounts = $accounts_obj->search(array('type' => 'both', 'objectclass' => true));
foreach($accounts as $account_id => &$account) foreach($accounts as $account_id => &$account)
{ {
@ -343,7 +368,7 @@ class setup_cmd_ldap extends setup_cmd
unset($account); unset($account);
$account_id = $account['account_id']; $account_id = $account['account_id'];
} }
$account = $accounts_obj->read($account_id); $account += $accounts_obj->read($account_id);
if ($account['account_type'] == 'g') if ($account['account_type'] == 'g')
{ {