mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-11-21 15:33:23 +01:00
resurect emailadmin/setup directory, it is needed for updating from versions before latest 14.3
This commit is contained in:
parent
f3d61b4a48
commit
1090a32242
1
emailadmin/README
Normal file
1
emailadmin/README
Normal file
@ -0,0 +1 @@
|
||||
EMailAdmin directory only exists in 16.1+ to allow updating from previous versions, without loosing email configuration.
|
107
emailadmin/setup/setup.inc.php
Normal file
107
emailadmin/setup/setup.inc.php
Normal file
@ -0,0 +1,107 @@
|
||||
<?php
|
||||
/**
|
||||
* EGroupware EMailAdmin - Setup
|
||||
*
|
||||
* @link http://www.egroupware.org
|
||||
* @author Klaus Leithoff <kl@stylite.de>
|
||||
* @author Ralf Becker <rb@stylite.de>
|
||||
* @package emailadmin
|
||||
* @subpackage setup
|
||||
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
// do NOT offer emailadmin for installation
|
||||
$setup_info['emailadmin']['only_db'] = array('update');
|
||||
|
||||
$setup_info['emailadmin']['name'] = 'emailadmin';
|
||||
$setup_info['emailadmin']['title'] = 'EMailAdmin';
|
||||
$setup_info['emailadmin']['version'] = '14.3.001';
|
||||
$setup_info['emailadmin']['app_order'] = 10;
|
||||
$setup_info['emailadmin']['enable'] = 2;
|
||||
|
||||
$setup_info['emailadmin']['author'] =
|
||||
$setup_info['emailadmin']['maintainer'] = array(
|
||||
'name' => 'Ralf Becker',
|
||||
'email' => 'rb@stylite.de',
|
||||
);
|
||||
$setup_info['emailadmin']['license'] = 'GPL';
|
||||
$setup_info['emailadmin']['description'] =
|
||||
'A central Mailserver management application for EGroupWare. Completely rewritten by Ralf Becker in 2013/14';
|
||||
|
||||
$setup_info['emailadmin']['tables'][] = 'egw_emailadmin';
|
||||
$setup_info['emailadmin']['tables'][] = 'egw_mailaccounts';
|
||||
$setup_info['emailadmin']['tables'][] = 'egw_ea_accounts';
|
||||
$setup_info['emailadmin']['tables'][] = 'egw_ea_credentials';
|
||||
$setup_info['emailadmin']['tables'][] = 'egw_ea_identities';
|
||||
$setup_info['emailadmin']['tables'][] = 'egw_ea_valid';
|
||||
$setup_info['emailadmin']['tables'][] = 'egw_ea_notifications';
|
||||
|
||||
/* The hooks this app includes, needed for hooks registration */
|
||||
$setup_info['emailadmin']['hooks']['deleteaccount'] = 'emailadmin_hooks::deleteaccount';
|
||||
$setup_info['emailadmin']['hooks']['addaccount'] = 'emailadmin_hooks::addaccount';
|
||||
$setup_info['emailadmin']['hooks']['editaccount'] = 'emailadmin_hooks::addaccount';
|
||||
$setup_info['emailadmin']['hooks']['deletegroup'] = 'emailadmin_hooks::deletegroup';
|
||||
$setup_info['emailadmin']['hooks']['changepassword'] = 'emailadmin_hooks::changepassword';
|
||||
|
||||
/* Dependencies for this app to work */
|
||||
$setup_info['emailadmin']['depends'][] = array(
|
||||
'appname' => 'phpgwapi',
|
||||
'versions' => Array('14.1')
|
||||
);
|
||||
$setup_info['emailadmin']['depends'][] = array(
|
||||
'appname' => 'etemplate',
|
||||
'versions' => Array('14.1')
|
||||
);
|
||||
// installation checks
|
||||
$setup_info['emailadmin']['check_install'] = array(
|
||||
'' => array(
|
||||
'func' => 'pear_check',
|
||||
'from' => 'EMailAdmin',
|
||||
),
|
||||
'pear.horde.org/Horde_Imap_Client' => array(
|
||||
'func' => 'pear_check',
|
||||
'from' => 'EMailAdmin',
|
||||
'version' => '2.24.2',
|
||||
),
|
||||
'pear.horde.org/Horde_Nls' => array(
|
||||
'func' => 'pear_check',
|
||||
'from' => 'EMailAdmin',
|
||||
'version' => '2.0.3',
|
||||
),
|
||||
'pear.horde.org/Horde_Mail' => array(
|
||||
'func' => 'pear_check',
|
||||
'from' => 'EMailAdmin',
|
||||
'version' => '2.1.2',
|
||||
),
|
||||
'pear.horde.org/Horde_Smtp' => array(
|
||||
'func' => 'pear_check',
|
||||
'from' => 'EMailAdmin',
|
||||
'version' => '1.3.0',
|
||||
),
|
||||
'pear.horde.org/Horde_ManageSieve' => array(
|
||||
'func' => 'pear_check',
|
||||
'from' => 'EMailAdmin',
|
||||
'version' => '1.0.1',
|
||||
),
|
||||
// next 4 are required for TNEF support
|
||||
'pear.horde.org/Horde_Compress' => array(
|
||||
'func' => 'pear_check',
|
||||
'from' => 'EMailAdmin',
|
||||
'version' => '2.0.8',
|
||||
),
|
||||
'pear.horde.org/Horde_Icalendar' => array(
|
||||
'func' => 'pear_check',
|
||||
'from' => 'EMailAdmin',
|
||||
'version' => '2.0.0',
|
||||
),
|
||||
'pear.horde.org/Horde_Mapi' => array(
|
||||
'func' => 'pear_check',
|
||||
'from' => 'EMailAdmin',
|
||||
'version' => '1.0.0',
|
||||
),
|
||||
'bcmath' => array(
|
||||
'func' => 'extension_check',
|
||||
'from' => 'EMailAdmin',
|
||||
),
|
||||
);
|
969
emailadmin/setup/tables_update.inc.php
Normal file
969
emailadmin/setup/tables_update.inc.php
Normal file
@ -0,0 +1,969 @@
|
||||
<?php
|
||||
/**
|
||||
* EGroupware EMailAdmin - DB schema
|
||||
*
|
||||
* @link http://www.egroupware.org
|
||||
* @author Lars Kneschke
|
||||
* @author Klaus Leithoff <kl@stylite.de>
|
||||
* @author Ralf Becker <rb@stylite.de>
|
||||
* @package emailadmin
|
||||
* @subpackage setup
|
||||
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
use EGroupware\Api\Mail\Credentials as emailadmin_credentials;
|
||||
use EGroupware\Api\Mail\Account as emailadmin_account;
|
||||
use EGroupware\Api\Preferences as preferences;
|
||||
use EGroupware\Api\Accounts as accounts;
|
||||
|
||||
function emailadmin_upgrade0_0_3()
|
||||
{
|
||||
$GLOBALS['egw_setup']->oProc->AddColumn('phpgw_emailadmin','smtpType', array('type' => 'int', 'precision' => 4));
|
||||
|
||||
return $setup_info['emailadmin']['currentver'] = '0.0.4';
|
||||
}
|
||||
|
||||
|
||||
function emailadmin_upgrade0_0_4()
|
||||
{
|
||||
$GLOBALS['egw_setup']->oProc->AddColumn('phpgw_emailadmin','defaultDomain', array('type' => 'varchar', 'precision' => 100));
|
||||
|
||||
return $setup_info['emailadmin']['currentver'] = '0.0.5';
|
||||
}
|
||||
|
||||
|
||||
function emailadmin_upgrade0_0_5()
|
||||
{
|
||||
$GLOBALS['egw_setup']->oProc->AddColumn('phpgw_emailadmin','organisationName', array('type' => 'varchar', 'precision' => 100));
|
||||
$GLOBALS['egw_setup']->oProc->AddColumn('phpgw_emailadmin','userDefinedAccounts', array('type' => 'varchar', 'precision' => 3));
|
||||
|
||||
return $setup_info['emailadmin']['currentver'] = '0.0.6';
|
||||
}
|
||||
|
||||
|
||||
function emailadmin_upgrade0_0_6()
|
||||
{
|
||||
$GLOBALS['egw_setup']->oProc->AddColumn('phpgw_emailadmin','oldimapcclient',array(
|
||||
'type' => 'varchar',
|
||||
'precision' => '3'
|
||||
));
|
||||
|
||||
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '0.0.007';
|
||||
}
|
||||
|
||||
|
||||
function emailadmin_upgrade0_0_007()
|
||||
{
|
||||
$GLOBALS['egw_setup']->oProc->RenameColumn('phpgw_emailadmin','oldimapcclient','imapoldcclient');
|
||||
|
||||
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '0.0.008';
|
||||
}
|
||||
|
||||
|
||||
function emailadmin_upgrade0_0_008()
|
||||
{
|
||||
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.0.0';
|
||||
}
|
||||
|
||||
|
||||
function emailadmin_upgrade1_0_0()
|
||||
{
|
||||
$GLOBALS['egw_setup']->oProc->AddColumn('phpgw_emailadmin','editforwardingaddress',array(
|
||||
'type' => 'varchar',
|
||||
'precision' => '3'
|
||||
));
|
||||
|
||||
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.0.1';
|
||||
}
|
||||
|
||||
|
||||
function emailadmin_upgrade1_0_1()
|
||||
{
|
||||
$GLOBALS['egw_setup']->oProc->AddColumn('phpgw_emailadmin','ea_order', array('type' => 'int', 'precision' => 4));
|
||||
|
||||
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.0.2';
|
||||
}
|
||||
|
||||
|
||||
function emailadmin_upgrade1_0_2()
|
||||
{
|
||||
$GLOBALS['egw_setup']->oProc->AddColumn('phpgw_emailadmin','ea_appname', array('type' => 'varchar','precision' => '80'));
|
||||
$GLOBALS['egw_setup']->oProc->AddColumn('phpgw_emailadmin','ea_group', array('type' => 'varchar','precision' => '80'));
|
||||
|
||||
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.0.3';
|
||||
}
|
||||
|
||||
|
||||
function emailadmin_upgrade1_0_3()
|
||||
{
|
||||
$GLOBALS['egw_setup']->oProc->RenameTable('phpgw_emailadmin','egw_emailadmin');
|
||||
|
||||
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.2';
|
||||
}
|
||||
|
||||
|
||||
function emailadmin_upgrade1_2()
|
||||
{
|
||||
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','profileID','ea_profile_id');
|
||||
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','smtpServer','ea_smtp_server');
|
||||
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','smtpType','ea_smtp_type');
|
||||
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','smtpPort','ea_smtp_port');
|
||||
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','smtpAuth','ea_smtp_auth');
|
||||
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','editforwardingaddress','ea_editforwardingaddress');
|
||||
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','smtpLDAPServer','ea_smtp_ldap_server');
|
||||
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','smtpLDAPBaseDN','ea_smtp_ldap_basedn');
|
||||
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','smtpLDAPAdminDN','ea_smtp_ldap_admindn');
|
||||
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','smtpLDAPAdminPW','ea_smtp_ldap_adminpw');
|
||||
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','smtpLDAPUseDefault','ea_smtp_ldap_use_default');
|
||||
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','imapServer','ea_imap_server');
|
||||
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','imapType','ea_imap_type');
|
||||
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','imapPort','ea_imap_port');
|
||||
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','imapLoginType','ea_imap_login_type');
|
||||
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','imapTLSAuthentication','ea_imap_tsl_auth');
|
||||
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','imapTLSEncryption','ea_imap_tsl_encryption');
|
||||
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','imapEnableCyrusAdmin','ea_imap_enable_cyrus');
|
||||
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','imapAdminUsername','ea_imap_admin_user');
|
||||
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','imapAdminPW','ea_imap_admin_pw');
|
||||
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','imapEnableSieve','ea_imap_enable_sieve');
|
||||
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','imapSieveServer','ea_imap_sieve_server');
|
||||
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','imapSievePort','ea_imap_sieve_port');
|
||||
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','description','ea_description');
|
||||
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','defaultDomain','ea_default_domain');
|
||||
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','organisationName','ea_organisation_name');
|
||||
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','userDefinedAccounts','ea_user_defined_accounts');
|
||||
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','imapoldcclient','ea_imapoldcclient');
|
||||
|
||||
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.2.001';
|
||||
}
|
||||
|
||||
|
||||
function emailadmin_upgrade1_2_001()
|
||||
{
|
||||
/* done by RefreshTable() anyway
|
||||
$GLOBALS['egw_setup']->oProc->AddColumn('egw_emailadmin','ea_smtp_auth_username',array(
|
||||
'type' => 'varchar',
|
||||
'precision' => '80'
|
||||
));*/
|
||||
/* done by RefreshTable() anyway
|
||||
$GLOBALS['egw_setup']->oProc->AddColumn('egw_emailadmin','ea_smtp_auth_password',array(
|
||||
'type' => 'varchar',
|
||||
'precision' => '80'
|
||||
));*/
|
||||
$GLOBALS['egw_setup']->oProc->RefreshTable('egw_emailadmin',array(
|
||||
'fd' => array(
|
||||
'ea_profile_id' => array('type' => 'auto','nullable' => False),
|
||||
'ea_smtp_server' => array('type' => 'varchar','precision' => '80'),
|
||||
'ea_smtp_type' => array('type' => 'int','precision' => '4'),
|
||||
'ea_smtp_port' => array('type' => 'int','precision' => '4'),
|
||||
'ea_smtp_auth' => array('type' => 'varchar','precision' => '3'),
|
||||
'ea_editforwardingaddress' => array('type' => 'varchar','precision' => '3'),
|
||||
'ea_smtp_ldap_server' => array('type' => 'varchar','precision' => '80'),
|
||||
'ea_smtp_ldap_basedn' => array('type' => 'varchar','precision' => '200'),
|
||||
'ea_smtp_ldap_admindn' => array('type' => 'varchar','precision' => '200'),
|
||||
'ea_smtp_ldap_adminpw' => array('type' => 'varchar','precision' => '30'),
|
||||
'ea_smtp_ldap_use_default' => array('type' => 'varchar','precision' => '3'),
|
||||
'ea_imap_server' => array('type' => 'varchar','precision' => '80'),
|
||||
'ea_imap_type' => array('type' => 'int','precision' => '4'),
|
||||
'ea_imap_port' => array('type' => 'int','precision' => '4'),
|
||||
'ea_imap_login_type' => array('type' => 'varchar','precision' => '20'),
|
||||
'ea_imap_tsl_auth' => array('type' => 'varchar','precision' => '3'),
|
||||
'ea_imap_tsl_encryption' => array('type' => 'varchar','precision' => '3'),
|
||||
'ea_imap_enable_cyrus' => array('type' => 'varchar','precision' => '3'),
|
||||
'ea_imap_admin_user' => array('type' => 'varchar','precision' => '40'),
|
||||
'ea_imap_admin_pw' => array('type' => 'varchar','precision' => '40'),
|
||||
'ea_imap_enable_sieve' => array('type' => 'varchar','precision' => '3'),
|
||||
'ea_imap_sieve_server' => array('type' => 'varchar','precision' => '80'),
|
||||
'ea_imap_sieve_port' => array('type' => 'int','precision' => '4'),
|
||||
'ea_description' => array('type' => 'varchar','precision' => '200'),
|
||||
'ea_default_domain' => array('type' => 'varchar','precision' => '100'),
|
||||
'ea_organisation_name' => array('type' => 'varchar','precision' => '100'),
|
||||
'ea_user_defined_accounts' => array('type' => 'varchar','precision' => '3'),
|
||||
'ea_imapoldcclient' => array('type' => 'varchar','precision' => '3'),
|
||||
'ea_order' => array('type' => 'int','precision' => '4'),
|
||||
'ea_appname' => array('type' => 'varchar','precision' => '80'),
|
||||
'ea_group' => array('type' => 'varchar','precision' => '80'),
|
||||
'ea_smtp_auth_username' => array('type' => 'varchar','precision' => '80'),
|
||||
'ea_smtp_auth_password' => array('type' => 'varchar','precision' => '80')
|
||||
),
|
||||
'pk' => array('ea_profile_id'),
|
||||
'fk' => array(),
|
||||
'ix' => array('ea_appname','ea_group'),
|
||||
'uc' => array()
|
||||
));
|
||||
|
||||
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.2.002';
|
||||
}
|
||||
|
||||
|
||||
function emailadmin_upgrade1_2_002()
|
||||
{
|
||||
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.4';
|
||||
}
|
||||
|
||||
|
||||
function emailadmin_upgrade1_4()
|
||||
{
|
||||
$GLOBALS['egw_setup']->oProc->AddColumn('egw_emailadmin','ea_user_defined_signatures',array(
|
||||
'type' => 'varchar',
|
||||
'precision' => '3'
|
||||
));
|
||||
$GLOBALS['egw_setup']->oProc->AddColumn('egw_emailadmin','ea_default_signature',array(
|
||||
'type' => 'varchar',
|
||||
'precision' => '255'
|
||||
));
|
||||
|
||||
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.4.001';
|
||||
}
|
||||
|
||||
|
||||
function emailadmin_upgrade1_4_001()
|
||||
{
|
||||
$GLOBALS['egw_setup']->oProc->AddColumn('egw_emailadmin','ea_user_defined_identities',array(
|
||||
'type' => 'varchar',
|
||||
'precision' => '3'
|
||||
));
|
||||
|
||||
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.5.001';
|
||||
}
|
||||
|
||||
|
||||
function emailadmin_upgrade1_5_001()
|
||||
{
|
||||
$GLOBALS['egw_setup']->oProc->AddColumn('egw_emailadmin','ea_user',array(
|
||||
'type' => 'varchar',
|
||||
'precision' => '80'
|
||||
));
|
||||
$GLOBALS['egw_setup']->oProc->AddColumn('egw_emailadmin','ea_active',array(
|
||||
'type' => 'int',
|
||||
'precision' => '4'
|
||||
));
|
||||
$GLOBALS['phpgw_setup']->oProc->query("UPDATE egw_emailadmin set ea_user='0', ea_active=1",__LINE__,__FILE__);
|
||||
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.5.002';
|
||||
}
|
||||
|
||||
|
||||
function emailadmin_upgrade1_5_002()
|
||||
{
|
||||
$GLOBALS['egw_setup']->oProc->AddColumn('egw_emailadmin','ea_imap_auth_username',array(
|
||||
'type' => 'varchar',
|
||||
'precision' => '80'
|
||||
));
|
||||
$GLOBALS['egw_setup']->oProc->AddColumn('egw_emailadmin','ea_imap_auth_password',array(
|
||||
'type' => 'varchar',
|
||||
'precision' => '80'
|
||||
));
|
||||
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.5.003';
|
||||
}
|
||||
|
||||
|
||||
function emailadmin_upgrade1_5_003()
|
||||
{
|
||||
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.5.004';
|
||||
}
|
||||
|
||||
|
||||
function emailadmin_upgrade1_5_004()
|
||||
{
|
||||
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.6';
|
||||
}
|
||||
|
||||
|
||||
function emailadmin_upgrade1_6()
|
||||
{
|
||||
$GLOBALS['egw_setup']->oProc->AlterColumn('egw_emailadmin','ea_default_signature',array(
|
||||
'type' => 'text'
|
||||
));
|
||||
|
||||
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.6.001';
|
||||
}
|
||||
|
||||
function emailadmin_upgrade1_6_001()
|
||||
{
|
||||
$GLOBALS['egw_setup']->oProc->AddColumn('egw_emailadmin','ea_stationery_active_templates',array(
|
||||
'type' => 'text'
|
||||
));
|
||||
|
||||
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.8'; // was '1.7.003';
|
||||
}
|
||||
|
||||
function emailadmin_upgrade1_7_003()
|
||||
{
|
||||
$GLOBALS['egw_setup']->oProc->AlterColumn('egw_emailadmin','ea_imap_type',array(
|
||||
'type' => 'varchar',
|
||||
'precision' => 56,
|
||||
));
|
||||
$GLOBALS['egw_setup']->oProc->AlterColumn('egw_emailadmin','ea_smtp_type',array(
|
||||
'type' => 'varchar',
|
||||
'precision' => 56,
|
||||
));
|
||||
foreach (array('1'=>'defaultsmtp', '2'=>'postfixldap', '3'=>'postfixinetorgperson', '4'=>'smtpplesk', '5' =>'postfixdbmailuser') as $id => $newtype)
|
||||
{
|
||||
$GLOBALS['egw_setup']->oProc->query('update egw_emailadmin set ea_smtp_type=\''.$newtype.'\' where ea_smtp_type=\''.$id.'\'',__LINE__,__FILE__);
|
||||
}
|
||||
foreach (array('2'=>'defaultimap', '3'=>'cyrusimap', '4'=>'dbmailqmailuser', '5'=>'pleskimap', '6' =>'dbmaildbmailuser') as $id => $newtype)
|
||||
{
|
||||
$GLOBALS['egw_setup']->oProc->query('update egw_emailadmin set ea_imap_type=\''.$newtype.'\' where ea_imap_type=\''.$id.'\'',__LINE__,__FILE__);
|
||||
}
|
||||
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.9.001'; // was '1.7.004';
|
||||
}
|
||||
|
||||
function emailadmin_upgrade1_8()
|
||||
{
|
||||
emailadmin_upgrade1_7_003();
|
||||
|
||||
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.9.001';
|
||||
}
|
||||
|
||||
function emailadmin_upgrade1_7_004()
|
||||
{
|
||||
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.9.001';
|
||||
}
|
||||
|
||||
function emailadmin_upgrade1_9_001()
|
||||
{
|
||||
$GLOBALS['egw_setup']->oProc->RefreshTable('egw_emailadmin',array(
|
||||
'fd' => array(
|
||||
'ea_profile_id' => array('type' => 'auto','nullable' => False),
|
||||
'ea_smtp_server' => array('type' => 'varchar','precision' => '80'),
|
||||
'ea_smtp_type' => array('type' => 'varchar','precision' => '56'),
|
||||
'ea_smtp_port' => array('type' => 'int','precision' => '4'),
|
||||
'ea_smtp_auth' => array('type' => 'varchar','precision' => '3'),
|
||||
'ea_editforwardingaddress' => array('type' => 'varchar','precision' => '3'),
|
||||
'ea_smtp_ldap_server' => array('type' => 'varchar','precision' => '80'),
|
||||
'ea_smtp_ldap_basedn' => array('type' => 'varchar','precision' => '200'),
|
||||
'ea_smtp_ldap_admindn' => array('type' => 'varchar','precision' => '200'),
|
||||
'ea_smtp_ldap_adminpw' => array('type' => 'varchar','precision' => '30'),
|
||||
'ea_smtp_ldap_use_default' => array('type' => 'varchar','precision' => '3'),
|
||||
'ea_imap_server' => array('type' => 'varchar','precision' => '80'),
|
||||
'ea_imap_type' => array('type' => 'varchar','precision' => '56'),
|
||||
'ea_imap_port' => array('type' => 'int','precision' => '4'),
|
||||
'ea_imap_login_type' => array('type' => 'varchar','precision' => '20'),
|
||||
'ea_imap_tsl_auth' => array('type' => 'varchar','precision' => '3'),
|
||||
'ea_imap_tsl_encryption' => array('type' => 'varchar','precision' => '3'),
|
||||
'ea_imap_enable_cyrus' => array('type' => 'varchar','precision' => '3'),
|
||||
'ea_imap_admin_user' => array('type' => 'varchar','precision' => '40'),
|
||||
'ea_imap_admin_pw' => array('type' => 'varchar','precision' => '40'),
|
||||
'ea_imap_enable_sieve' => array('type' => 'varchar','precision' => '3'),
|
||||
'ea_imap_sieve_server' => array('type' => 'varchar','precision' => '80'),
|
||||
'ea_imap_sieve_port' => array('type' => 'int','precision' => '4'),
|
||||
'ea_description' => array('type' => 'varchar','precision' => '200'),
|
||||
'ea_default_domain' => array('type' => 'varchar','precision' => '100'),
|
||||
'ea_organisation_name' => array('type' => 'varchar','precision' => '100'),
|
||||
'ea_user_defined_identities' => array('type' => 'varchar','precision' => '3'),
|
||||
'ea_user_defined_accounts' => array('type' => 'varchar','precision' => '3'),
|
||||
'ea_order' => array('type' => 'int','precision' => '4'),
|
||||
'ea_appname' => array('type' => 'varchar','precision' => '80'),
|
||||
'ea_group' => array('type' => 'varchar','precision' => '80'),
|
||||
'ea_user' => array('type' => 'varchar','precision' => '80'),
|
||||
'ea_active' => array('type' => 'int','precision' => '4'),
|
||||
'ea_smtp_auth_username' => array('type' => 'varchar','precision' => '80'),
|
||||
'ea_smtp_auth_password' => array('type' => 'varchar','precision' => '80'),
|
||||
'ea_user_defined_signatures' => array('type' => 'varchar','precision' => '3'),
|
||||
'ea_default_signature' => array('type' => 'text'),
|
||||
'ea_imap_auth_username' => array('type' => 'varchar','precision' => '80'),
|
||||
'ea_imap_auth_password' => array('type' => 'varchar','precision' => '80'),
|
||||
'ea_stationery_active_templates' => array('type' => 'text')
|
||||
),
|
||||
'pk' => array('ea_profile_id'),
|
||||
'fk' => array(),
|
||||
'ix' => array('ea_appname','ea_group'),
|
||||
'uc' => array()
|
||||
));
|
||||
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.9.002';
|
||||
}
|
||||
|
||||
function emailadmin_upgrade1_9_002()
|
||||
{
|
||||
// convert serialized stationery templates setting to eTemplate store style
|
||||
foreach($GLOBALS['egw_setup']->db->query('SELECT ea_profile_id,ea_stationery_active_templates FROM egw_emailadmin
|
||||
WHERE ea_stationery_active_templates IS NOT NULL',__LINE__,__FILE__) as $row)
|
||||
{
|
||||
if(is_array(($templates=unserialize($row['ea_stationery_active_templates']))))
|
||||
{
|
||||
$GLOBALS['egw_setup']->db->query('UPDATE egw_emailadmin SET ea_stationery_active_templates="'.implode(',',$templates).'"'
|
||||
.' WHERE ea_profile_id='.(int)$row['ea_profile_id'],__LINE__,__FILE__);
|
||||
}
|
||||
unset($templates);
|
||||
}
|
||||
|
||||
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.9.003';
|
||||
}
|
||||
|
||||
function emailadmin_upgrade1_9_003()
|
||||
{
|
||||
$GLOBALS['egw_setup']->oProc->AlterColumn('egw_emailadmin','ea_smtp_auth_username',array(
|
||||
'type' => 'varchar',
|
||||
'precision' => '128',
|
||||
));
|
||||
|
||||
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.9.004';
|
||||
}
|
||||
|
||||
function emailadmin_upgrade1_9_004()
|
||||
{
|
||||
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.9.005';
|
||||
}
|
||||
|
||||
function emailadmin_upgrade1_9_005()
|
||||
{
|
||||
$GLOBALS['egw_setup']->oProc->CreateTable('egw_mailaccounts',array(
|
||||
'fd' => array(
|
||||
'mail_id' => array('type' => 'auto','nullable' => False),
|
||||
'account_id' => array('type' => 'int','precision' => '4','nullable' => False),
|
||||
'mail_type' => array('type' => 'int','precision' => '1','nullable' => False,'comment' => '0=active, 1=alias, 2=forward, 3=forwardOnly, 4=quota'),
|
||||
'mail_value' => array('type' => 'varchar','precision' => '128','nullable' => False)
|
||||
),
|
||||
'pk' => array('mail_id'),
|
||||
'fk' => array(),
|
||||
'ix' => array('mail_value',array('account_id','mail_type')),
|
||||
'uc' => array()
|
||||
));
|
||||
|
||||
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.9.006';
|
||||
}
|
||||
|
||||
|
||||
function emailadmin_upgrade1_9_006()
|
||||
{
|
||||
$GLOBALS['egw_setup']->oProc->CreateTable('egw_ea_accounts',array(
|
||||
'fd' => array(
|
||||
'acc_id' => array('type' => 'auto','nullable' => False),
|
||||
'acc_name' => array('type' => 'varchar','precision' => '80','comment' => 'description'),
|
||||
'ident_id' => array('type' => 'int','precision' => '4','nullable' => False,'comment' => 'standard identity'),
|
||||
'acc_imap_host' => array('type' => 'varchar','precision' => '128','nullable' => False,'comment' => 'imap hostname'),
|
||||
'acc_imap_ssl' => array('type' => 'int','precision' => '1','nullable' => False,'default' => '0','comment' => '0=none, 1=starttls, 2=tls, 3=ssl, &8=validate certificate'),
|
||||
'acc_imap_port' => array('type' => 'int','precision' => '4','nullable' => False,'default' => '143','comment' => 'imap port'),
|
||||
'acc_sieve_enabled' => array('type' => 'bool','default' => '0','comment' => 'sieve enabled'),
|
||||
'acc_sieve_host' => array('type' => 'varchar','precision' => '128','comment' => 'sieve host, default imap_host'),
|
||||
'acc_sieve_port' => array('type' => 'int','precision' => '4','default' => '4190'),
|
||||
'acc_folder_sent' => array('type' => 'varchar','precision' => '128','comment' => 'sent folder'),
|
||||
'acc_folder_trash' => array('type' => 'varchar','precision' => '128','comment' => 'trash folder'),
|
||||
'acc_folder_draft' => array('type' => 'varchar','precision' => '128','comment' => 'draft folder'),
|
||||
'acc_folder_template' => array('type' => 'varchar','precision' => '128','comment' => 'template folder'),
|
||||
'acc_smtp_host' => array('type' => 'varchar','precision' => '128','comment' => 'smtp hostname'),
|
||||
'acc_smtp_ssl' => array('type' => 'int','precision' => '1','nullable' => False,'default' => '0','comment' => '0=none, 1=starttls, 2=tls, 3=ssl, &8=validate certificate'),
|
||||
'acc_smtp_port' => array('type' => 'int','precision' => '4','nullable' => False,'default' => '25','comment' => 'smtp port'),
|
||||
'acc_smtp_type' => array('type' => 'varchar','precision' => '32','default' => 'emailadmin_smtp','comment' => 'smtp class to use'),
|
||||
'acc_imap_type' => array('type' => 'varchar','precision' => '32','default' => 'emailadmin_imap','comment' => 'imap class to use'),
|
||||
'acc_imap_logintype' => array('type' => 'varchar','precision' => '20','comment' => 'standard, vmailmgr, admin, uidNumber'),
|
||||
'acc_domain' => array('type' => 'varchar','precision' => '100','comment' => 'domain name'),
|
||||
'acc_further_identities' => array('type' => 'bool','nullable' => False,'default' => '1','comment' => '0=no, 1=yes'),
|
||||
'acc_user_editable' => array('type' => 'bool','nullable' => False,'default' => '1','comment' => '0=no, 1=yes'),
|
||||
'acc_sieve_ssl' => array('type' => 'int','precision' => '1','default' => '1','comment' => '0=none, 1=starttls, 2=tls, 3=ssl, &8=validate certificate'),
|
||||
'acc_modified' => array('type' => 'timestamp','nullable' => False,'default' => 'current_timestamp'),
|
||||
'acc_modifier' => array('type' => 'int','meta' => 'user','precision' => '4'),
|
||||
'acc_smtp_auth_session' => array('type' => 'bool','comment' => '0=no, 1=yes, use username/pw from current user')
|
||||
),
|
||||
'pk' => array('acc_id'),
|
||||
'fk' => array(),
|
||||
'ix' => array(),
|
||||
'uc' => array()
|
||||
));
|
||||
|
||||
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.9.007';
|
||||
}
|
||||
|
||||
|
||||
function emailadmin_upgrade1_9_007()
|
||||
{
|
||||
$GLOBALS['egw_setup']->oProc->CreateTable('egw_ea_credentials',array(
|
||||
'fd' => array(
|
||||
'cred_id' => array('type' => 'auto','nullable' => False),
|
||||
'acc_id' => array('type' => 'int','precision' => '4','nullable' => False,'comment' => 'into egw_ea_accounts'),
|
||||
'cred_type' => array('type' => 'int','precision' => '1','nullable' => False,'comment' => '&1=imap, &2=smtp, &4=admin'),
|
||||
'account_id' => array('type' => 'int','meta' => 'user','precision' => '4','nullable' => False,'comment' => 'account_id or 0=all'),
|
||||
'cred_username' => array('type' => 'varchar','precision' => '80','nullable' => False,'comment' => 'username'),
|
||||
'cred_password' => array('type' => 'varchar','precision' => '80','comment' => 'password encrypted'),
|
||||
'cred_pw_enc' => array('type' => 'int','precision' => '1','default' => '0','comment' => '0=not, 1=user pw, 2=system')
|
||||
),
|
||||
'pk' => array('cred_id'),
|
||||
'fk' => array(),
|
||||
'ix' => array(),
|
||||
'uc' => array(array('acc_id','account_id','cred_type'))
|
||||
));
|
||||
|
||||
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.9.008';
|
||||
}
|
||||
|
||||
|
||||
function emailadmin_upgrade1_9_008()
|
||||
{
|
||||
$GLOBALS['egw_setup']->oProc->CreateTable('egw_ea_identities',array(
|
||||
'fd' => array(
|
||||
'ident_id' => array('type' => 'auto','nullable' => False),
|
||||
'acc_id' => array('type' => 'int','precision' => '4','nullable' => False,'comment' => 'for which account'),
|
||||
'ident_realname' => array('type' => 'varchar','precision' => '128','nullable' => False,'comment' => 'real name'),
|
||||
'ident_email' => array('type' => 'varchar','precision' => '128','comment' => 'email address'),
|
||||
'ident_org' => array('type' => 'varchar','precision' => '128','comment' => 'organisation'),
|
||||
'ident_signature' => array('type' => 'text','comment' => 'signature text'),
|
||||
'account_id' => array('type' => 'int','meta' => 'account','precision' => '4','nullable' => False,'default' => '0','comment' => '0=all users of give mail account')
|
||||
),
|
||||
'pk' => array('ident_id'),
|
||||
'fk' => array(),
|
||||
'ix' => array(),
|
||||
'uc' => array()
|
||||
));
|
||||
|
||||
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.9.009';
|
||||
}
|
||||
|
||||
|
||||
function emailadmin_upgrade1_9_009()
|
||||
{
|
||||
$GLOBALS['egw_setup']->oProc->CreateTable('egw_ea_valid',array(
|
||||
'fd' => array(
|
||||
'acc_id' => array('type' => 'int','precision' => '4','nullable' => False),
|
||||
'account_id' => array('type' => 'int','meta' => 'account','precision' => '4','nullable' => False)
|
||||
),
|
||||
'pk' => array(),
|
||||
'fk' => array(),
|
||||
'ix' => array(array('account_id','acc_id')),
|
||||
'uc' => array(array('acc_id','account_id'))
|
||||
));
|
||||
|
||||
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.9.010';
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert utf7-imap encoded folder-names to utf-8
|
||||
*
|
||||
* @param string $folder
|
||||
* @return string
|
||||
*/
|
||||
function utf7imap2utf8($folder)
|
||||
{
|
||||
if (function_exists('mb_convert_encoding'))
|
||||
{
|
||||
$folder = mb_convert_encoding($folder, 'utf-8', 'utf7-imap');
|
||||
}
|
||||
return $folder;
|
||||
}
|
||||
|
||||
/**
|
||||
* Migrate eMailAdmin profiles to accounts
|
||||
*/
|
||||
function emailadmin_upgrade1_9_010()
|
||||
{
|
||||
static $prot2ssl = array('ssl' => 3, 'tls' => 2, 'starttls' => 1);
|
||||
$acc_ids = array();
|
||||
// migrate personal felamimail accounts, identities and signatures
|
||||
try {
|
||||
$db = $GLOBALS['egw_setup']->db;
|
||||
foreach($db->select('egw_emailadmin', '*', array('ea_active' => 1), __LINE__, __FILE__, false,
|
||||
// order general profiles first, then group profiles and user specific ones last
|
||||
'ORDER BY ea_group IS NULL AND ea_user IS NULL DESC,ea_group IS NULL,ea_user', 'emailadmin') as $row)
|
||||
{
|
||||
$owner = $row['ea_user'] > 0 ? (int)$row['ea_user'] : ($row['ea_group'] ? -abs($row['ea_group']) : 0);
|
||||
|
||||
// always store general profiles and group profiles
|
||||
// only store user profiles if they contain at least an imap_host
|
||||
// otherwise store just the credentials for that user and account of his primary group or first general account
|
||||
if ($owner <= 0 || $owner > 0 && !empty($row['ea_imap_host']) ||
|
||||
!($acc_id = ($primary_group = accounts::id2name($owner, 'account_primary_group')) &&
|
||||
isset($acc_ids[$primary_group]) ? $acc_ids[$primary_group] : $acc_ids['0']))
|
||||
{
|
||||
$prefs = new preferences($owner);
|
||||
$all_prefs = $prefs->read_repository();
|
||||
$pref_values = $all_prefs['felamimail'];
|
||||
|
||||
// create standard identity for account
|
||||
$identity = array(
|
||||
'acc_id' => 0,
|
||||
'ident_realname' => '',
|
||||
'ident_email' => '',
|
||||
'ident_org' => $row['ea_organisation_name'],
|
||||
'ident_signature' => $row['ea_default_signature'],
|
||||
);
|
||||
$db->insert('egw_ea_identities', $identity, false, __LINE__, __FILE__, 'emailadmin');
|
||||
$ident_id = $db->get_last_insert_id('egw_ea_identities', 'ident_id');
|
||||
|
||||
// create account
|
||||
$smtp_ssl = 0;
|
||||
if (strpos($row['ea_smtp_server'], '://') !== false)
|
||||
{
|
||||
list($prot, $row['ea_smtp_server']) = explode('://', $row['ea_smtp_server']);
|
||||
$smtp_ssl = (int)$prot2ssl[$prot];
|
||||
}
|
||||
$account = array(
|
||||
'acc_name' => $row['ea_description'],
|
||||
'ident_id' => $ident_id,
|
||||
'acc_imap_type' => emailadmin_account::getIcClass($row['ea_imap_type']),
|
||||
'acc_imap_logintype' => $row['ea_imap_login_type'],
|
||||
'acc_imap_host' => $row['ea_imap_server'],
|
||||
'acc_imap_ssl' => $row['ea_imap_tsl_encryption'] | ($row['ea_imap_tsl_auth'] === 'yes' ? 8 : 0),
|
||||
'acc_imap_port' => $row['ea_imap_port'],
|
||||
'acc_sieve_enabled' => $row['ea_imap_enable_sieve'] == 'yes',
|
||||
'acc_sieve_host' => $row['ea_imap_sieve_server'],
|
||||
'acc_sieve_ssl' => $row['fm_ic_sieve_port'] == 5190 ? 2 : 1,
|
||||
'acc_sieve_port' => $row['ea_imap_sieve_port'],
|
||||
'acc_folder_sent' => utf7imap2utf8($pref_values['sentFolder']),
|
||||
'acc_folder_trash' => utf7imap2utf8($pref_values['trashFolder']),
|
||||
'acc_folder_draft' => utf7imap2utf8($pref_values['draftFolder']),
|
||||
'acc_folder_template' => utf7imap2utf8($pref_values['templateFolder']),
|
||||
'acc_smtp_type' => $row['ea_smtp_type'],
|
||||
'acc_smtp_host' => $row['ea_smtp_server'],
|
||||
'acc_smtp_ssl' => $smtp_ssl,
|
||||
'acc_smtp_port' => $row['ea_smtp_port'],
|
||||
'acc_domain' => $row['ea_default_domain'],
|
||||
'acc_further_identities' => $row['ea_user_defined_identities'] == 'yes' ||
|
||||
$row['ea_user_defined_signatures'] == 'yes', // both together are now called identities
|
||||
'acc_user_editable' => false,
|
||||
'acc_smtp_auth_session' => $row['ea_smtp_auth'] == 'ann' ||
|
||||
$row['ea_smtp_auth'] == 'yes' && empty($row['ea_smtp_auth_username']),
|
||||
);
|
||||
$db->insert('egw_ea_accounts', $account, false, __LINE__, __FILE__, 'emailadmin');
|
||||
$acc_id = $db->get_last_insert_id('egw_ea_accounts', 'acc_id');
|
||||
|
||||
// remember acc_id by owner, to be able to base credential only profiles on them
|
||||
if ($owner <= 0 && !isset($acc_ids[$owner])) $acc_ids[(string)$owner] = $acc_id;
|
||||
|
||||
// update above created identity with account acc_id
|
||||
$db->update('egw_ea_identities', array('acc_id' => $acc_id), array('ident_id' => $ident_id), __LINE__, __FILE__, 'emailadmin');
|
||||
|
||||
// make account valid for given owner
|
||||
$db->insert('egw_ea_valid', array(
|
||||
'acc_id' => $acc_id,
|
||||
'account_id' => $owner,
|
||||
), false, __LINE__, __FILE__, 'emailadmin');
|
||||
}
|
||||
// credentials are either stored for specific user or all users (account_id=0), not group-specific
|
||||
if (!($owner > 0)) $owner = 0;
|
||||
// add imap credentials if necessary
|
||||
$cred_type = $row['ea_smpt_auth'] != 'no' && $row['ea_imap_auth_username'] && $row['ea_smtp_auth_username'] &&
|
||||
$row['ea_imap_auth_username'] == $row['ea_smtp_auth_username'] &&
|
||||
$row['ea_imap_auth_password'] == $row['ea_smtp_auth_password'] ? 3 : 1;
|
||||
if ($row['ea_imap_auth_username'])
|
||||
{
|
||||
emailadmin_credentials::write($acc_id, $row['ea_imap_auth_username'], $row['ea_imap_auth_password'], $cred_type, $owner);
|
||||
}
|
||||
// add smtp credentials if necessary and different from imap
|
||||
if ($row['ea_smpt_auth'] != 'no' && !empty($row['ea_smtp_auth_username']) && $cred_type != 3)
|
||||
{
|
||||
emailadmin_credentials::write($acc_id, $row['ea_smtp_auth_username'], $row['ea_smtp_auth_password'], 2, $owner);
|
||||
}
|
||||
// add admin credentials
|
||||
if ($row['ea_imap_enable_cyrus'] == 'yes' && !empty($row['ea_imap_admin_user']))
|
||||
{
|
||||
emailadmin_credentials::write($acc_id, $row['ea_imap_admin_user'], $row['ea_imap_admin_pw'], 8, $owner);
|
||||
}
|
||||
}
|
||||
// ToDo: migrate all not yet via personal fmail profiles migrated signatures
|
||||
}
|
||||
catch(Exception $e) {
|
||||
// ignore all errors, eg. because FMail is not installed
|
||||
echo "<p>".$e->getMessage()."</p>\n";
|
||||
}
|
||||
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.9.011';
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper function for 1.9.011 upgrade to query standard identity of a given user
|
||||
*
|
||||
* There's no defined standard identity, we simply pick first one we find
|
||||
* sorting results by:
|
||||
* - prefering identical email or same-domain
|
||||
* - prefering personal accounts over all-user ones
|
||||
* - for all-user ones we prefer a personal identitiy (account_id!=0)
|
||||
*
|
||||
* @param int $account_id
|
||||
* @param string $email optional email to be used to find matching account/identity with identical email or same domain
|
||||
* @return array with ident_* and acc_id
|
||||
*/
|
||||
function emailadmin_std_identity($account_id, $email=null)
|
||||
{
|
||||
if ($email) list(, $domain) = explode('@', $email);
|
||||
return $GLOBALS['egw_setup']->db->select('egw_ea_accounts', 'egw_ea_identities.*',
|
||||
'egw_ea_valid.account_id IN (0,'.(int)$account_id.') AND egw_ea_identities.account_id IN (0,'.(int)$account_id.')',
|
||||
__LINE__, __FILE__, 0,
|
||||
'ORDER BY '.($email ?
|
||||
'ident_email='.$GLOBALS['egw_setup']->db->quote($email).' DESC,'.
|
||||
'ident_email LIKE '.$GLOBALS['egw_setup']->db->quote('%@'.$domain).' DESC,' : '').
|
||||
'egw_ea_identities.account_id DESC,egw_ea_valid.account_id DESC', 'emailadmin', 1,
|
||||
'JOIN egw_ea_valid ON egw_ea_accounts.acc_id=egw_ea_valid.acc_id '.
|
||||
'JOIN egw_ea_identities ON egw_ea_accounts.acc_id=egw_ea_identities.acc_id')->fetch();
|
||||
}
|
||||
|
||||
/**
|
||||
* Migrate (personal) FMail accounts to eMailAdmin accounts
|
||||
*/
|
||||
function emailadmin_upgrade1_9_011()
|
||||
{
|
||||
static $prot2ssl = array('ssl' => 3, 'tls' => 2, 'starttls' => 1);
|
||||
$std_identity = null;
|
||||
// migrate personal felamimail accounts, identities and signatures
|
||||
$db = $GLOBALS['egw_setup']->db;
|
||||
if (in_array('egw_felamimail_accounts', $db->table_names(true)))
|
||||
{
|
||||
try {
|
||||
// migrate real fmail accounts, but not yet identities (fm_ic_hostname is NULL)
|
||||
foreach($db->select('egw_felamimail_accounts', '*', 'fm_ic_hostname IS NOT NULL', __LINE__, __FILE__, false, '', 'felamimail') as $row)
|
||||
{
|
||||
$prefs = new preferences($row['fm_owner']);
|
||||
$all_prefs = $prefs->read_repository();
|
||||
$pref_values = $all_prefs['felamimail'];
|
||||
|
||||
// create standard identity for account
|
||||
$identity = array(
|
||||
'acc_id' => 0,
|
||||
'ident_realname' => $row['fm_realname'],
|
||||
'ident_email' => $row['fm_emailaddress'],
|
||||
'ident_org' => $row['fm_organisation'],
|
||||
'ident_signature' => $db->select('egw_felamimail_signatures', 'fm_signature', array(
|
||||
'fm_signatureid' => $row['fm_signatureid'],
|
||||
), __LINE__, __FILE__, false, '', 'felamimail')->fetchColumn(),
|
||||
);
|
||||
$db->insert('egw_ea_identities', $identity, false, __LINE__, __FILE__, 'emailadmin');
|
||||
$ident_id = $db->get_last_insert_id('egw_ea_identities', 'ident_id');
|
||||
|
||||
// create account
|
||||
$og_ssl = 0;
|
||||
if (strpos($row['fm_og_hostname'], '://') !== false)
|
||||
{
|
||||
list($prot, $row['fm_og_hostname']) = explode('://', $row['fm_og_hostname']);
|
||||
$og_ssl = (int)$prot2ssl[$prot];
|
||||
}
|
||||
$account = array(
|
||||
'acc_name' => $row['fm_emailaddress'],
|
||||
'ident_id' => $ident_id,
|
||||
'acc_imap_host' => $row['fm_ic_hostname'],
|
||||
'acc_imap_ssl' => $row['fm_ic_encryption'] | ($row['fm_ic_validatecertificate'] ? 8 : 0),
|
||||
'acc_imap_port' => $row['fm_ic_port'],
|
||||
'acc_sieve_enabled' => $row['fm_ic_enable_sieve'],
|
||||
'acc_sieve_host' => $row['fm_ic_sieve_server'],
|
||||
'acc_sieve_ssl' => $row['fm_ic_sieve_port'] == 5190 ? 2 : 1,
|
||||
'acc_sieve_port' => $row['fm_ic_sieve_port'],
|
||||
'acc_folder_sent' => utf7imap2utf8($row['fm_ic_sentfolder'] ? $row['fm_ic_sentfolder'] : $pref_values['sentFolder']),
|
||||
'acc_folder_trash' => utf7imap2utf8($row['fm_ic_trashfolder'] ? $row['fm_ic_trashfolder'] : $pref_values['trashFolder']),
|
||||
'acc_folder_draft' => utf7imap2utf8($row['fm_ic_draftfolder'] ? $row['fm_ic_draftfolder'] : $pref_values['draftFolder']),
|
||||
'acc_folder_template' => utf7imap2utf8($row['fm_ic_templatefolder'] ? $row['fm_ic_templatefolder'] : $pref_values['templateFolder']),
|
||||
'acc_smtp_host' => $row['fm_og_hostname'],
|
||||
'acc_smtp_ssl' => $og_ssl,
|
||||
'acc_smtp_port' => $row['fm_og_port'],
|
||||
);
|
||||
$db->insert('egw_ea_accounts', $account, false, __LINE__, __FILE__, 'emailadmin');
|
||||
$acc_id = $db->get_last_insert_id('egw_ea_accounts', 'acc_id');
|
||||
$identity['acc_id'] = $acc_id;
|
||||
if (!isset($std_identity[$row['fm_owner']])) $std_identity[$row['fm_owner']] = $identity;
|
||||
// update above created identity with account acc_id
|
||||
$db->update('egw_ea_identities', array('acc_id' => $acc_id), array('ident_id' => $ident_id), __LINE__, __FILE__, 'emailadmin');
|
||||
|
||||
// make account valid for given owner
|
||||
$db->insert('egw_ea_valid', array(
|
||||
'acc_id' => $acc_id,
|
||||
'account_id' => $row['fm_owner'],
|
||||
), false, __LINE__, __FILE__, 'emailadmin');
|
||||
|
||||
// add imap credentials
|
||||
$cred_type = $row['fm_og_smtpauth'] && $row['fm_ic_username'] == $row['fm_og_username'] &&
|
||||
$row['fm_ic_password'] == $row['fm_og_password'] ? 3 : 1;
|
||||
emailadmin_credentials::write($acc_id, $row['fm_ic_username'], $row['fm_ic_password'], $cred_type, $row['fm_owner']);
|
||||
// add smtp credentials if necessary and different from imap
|
||||
if ($row['fm_og_smtpauth'] && $cred_type != 3)
|
||||
{
|
||||
emailadmin_credentials::write($acc_id, $row['fm_og_username'], $row['fm_og_password'], 2, $row['fm_owner']);
|
||||
}
|
||||
}
|
||||
|
||||
// migrate fmail identities (fm_ic_hostname is NULL), not real fmail account done above
|
||||
foreach($db->select('egw_felamimail_accounts', '*', 'fm_ic_hostname IS NULL', __LINE__, __FILE__, false, '', 'felamimail') as $row)
|
||||
{
|
||||
if (!($std_identity = emailadmin_std_identity($row['fm_owner'])))
|
||||
{
|
||||
continue; // no account found to add identity to
|
||||
}
|
||||
// create standard identity for account
|
||||
$identity = array(
|
||||
'acc_id' => $std_identity['acc_id'],
|
||||
'ident_realname' => $row['fm_realname'],
|
||||
'ident_email' => $row['fm_emailaddress'],
|
||||
'ident_org' => $row['fm_organisation'],
|
||||
'ident_signature' => $db->select('egw_felamimail_signatures', 'fm_signature', array(
|
||||
'fm_signatureid' => $row['fm_signatureid'],
|
||||
), __LINE__, __FILE__, false, '', 'felamimail')->fetchColumn(),
|
||||
'account_id' => $row['fm_owner'],
|
||||
);
|
||||
$db->insert('egw_ea_identities', $identity, false, __LINE__, __FILE__, 'emailadmin');
|
||||
}
|
||||
|
||||
// migrate all not yet as standard-signatures migrated signatures to identities of first migrated fmail profile
|
||||
// completing them with realname, email and org from standard-signature of given account
|
||||
foreach($db->select('egw_felamimail_signatures', '*',
|
||||
"fm_signatureid NOT IN (SELECT fm_signatureid FROM egw_felamimail_accounts)",
|
||||
__LINE__, __FILE__, false, '', 'felamimail') as $row)
|
||||
{
|
||||
if (!($std_identity = emailadmin_std_identity($row['fm_accountid'])))
|
||||
{
|
||||
continue; // ignore signatures for whos owner (fm_accountid!) we have no personal profile
|
||||
}
|
||||
$identity = $std_identity; unset($identity['ident_id']);
|
||||
$identity['ident_realname'] = $std_identity['ident_realname'].' ('.$row['fm_description'].')';
|
||||
$identity['ident_signature'] = $row['fm_signature'];
|
||||
$identity['account_id'] = $row['fm_accountid'];
|
||||
$db->insert('egw_ea_identities', $identity, false, __LINE__, __FILE__, 'emailadmin');
|
||||
}
|
||||
}
|
||||
catch(Exception $e) {
|
||||
// ignore all errors, eg. because FMail is not installed
|
||||
echo "<p>".$e->getMessage()."</p>\n";
|
||||
}
|
||||
}
|
||||
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.9.015';
|
||||
}
|
||||
|
||||
function emailadmin_upgrade1_9_015()
|
||||
{
|
||||
$GLOBALS['egw_setup']->oProc->AddColumn('egw_ea_accounts','acc_folder_junk',array(
|
||||
'type' => 'varchar',
|
||||
'precision' => '128',
|
||||
'comment' => 'junk folder'
|
||||
));
|
||||
$GLOBALS['egw_setup']->oProc->AddColumn('egw_ea_accounts','acc_imap_default_quota',array(
|
||||
'type' => 'int',
|
||||
'precision' => '4',
|
||||
'comment' => 'default quota, if no user specific one set'
|
||||
));
|
||||
$GLOBALS['egw_setup']->oProc->AddColumn('egw_ea_accounts','acc_imap_timeout',array(
|
||||
'type' => 'int',
|
||||
'precision' => '2',
|
||||
'comment' => 'timeout for imap connection'
|
||||
));
|
||||
|
||||
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.9.016';
|
||||
}
|
||||
|
||||
|
||||
function emailadmin_upgrade1_9_016()
|
||||
{
|
||||
$GLOBALS['egw_setup']->oProc->AddColumn('egw_ea_identities','ident_name',array(
|
||||
'type' => 'varchar',
|
||||
'precision' => '128',
|
||||
'comment' => 'name of identity to display'
|
||||
));
|
||||
|
||||
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.9.017';
|
||||
}
|
||||
|
||||
|
||||
function emailadmin_upgrade1_9_017()
|
||||
{
|
||||
$GLOBALS['egw_setup']->oProc->CreateTable('egw_ea_notifications',array(
|
||||
'fd' => array(
|
||||
'notif_id' => array('type' => 'auto','nullable' => False),
|
||||
'acc_id' => array('type' => 'int','precision' => '4','nullable' => False,'comment' => 'mail account'),
|
||||
'account_id' => array('type' => 'int','meta' => 'user','precision' => '4','nullable' => False,'comment' => 'user account'),
|
||||
'notif_folder' => array('type' => 'varchar','precision' => '255','nullable' => False,'comment' => 'folder name')
|
||||
),
|
||||
'pk' => array('notif_id'),
|
||||
'fk' => array(),
|
||||
'ix' => array(array('account_id','acc_id')),
|
||||
'uc' => array()
|
||||
));
|
||||
|
||||
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.9.018';
|
||||
}
|
||||
|
||||
|
||||
function emailadmin_upgrade1_9_018()
|
||||
{
|
||||
$GLOBALS['egw_setup']->oProc->AlterColumn('egw_ea_accounts','acc_smtp_type',array(
|
||||
'type' => 'varchar',
|
||||
'precision' => '32',
|
||||
'default' => 'emailadmin_smtp',
|
||||
'comment' => 'smtp class to use'
|
||||
));
|
||||
$GLOBALS['egw_setup']->oProc->AlterColumn('egw_ea_accounts','acc_imap_type',array(
|
||||
'type' => 'varchar',
|
||||
'precision' => '32',
|
||||
'default' => 'emailadmin_imap',
|
||||
'comment' => 'imap class to use'
|
||||
));
|
||||
|
||||
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.9.019';
|
||||
}
|
||||
|
||||
|
||||
function emailadmin_upgrade1_9_019()
|
||||
{
|
||||
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '14.1';
|
||||
}
|
||||
|
||||
|
||||
function emailadmin_upgrade14_1()
|
||||
{
|
||||
$GLOBALS['egw_setup']->oProc->RefreshTable('egw_ea_valid',array(
|
||||
'fd' => array(
|
||||
'acc_id' => array('type' => 'int','precision' => '4','nullable' => False),
|
||||
'account_id' => array('type' => 'int','meta' => 'account','precision' => '4','nullable' => False)
|
||||
),
|
||||
'pk' => array(),
|
||||
'fk' => array(),
|
||||
'ix' => array(array('account_id','acc_id')),
|
||||
'uc' => array(array('acc_id','account_id'))
|
||||
));
|
||||
|
||||
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '14.2';
|
||||
}
|
||||
|
||||
function emailadmin_upgrade14_2()
|
||||
{
|
||||
$GLOBALS['egw_setup']->oProc->AlterColumn('egw_mailaccounts','mail_value',array(
|
||||
'type' => 'ascii',
|
||||
'precision' => '128',
|
||||
'nullable' => False,
|
||||
'comment' => 'the value (that should be) corresponding to the mail_type'
|
||||
));
|
||||
|
||||
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '14.2.001';
|
||||
}
|
||||
|
||||
|
||||
function emailadmin_upgrade14_2_001()
|
||||
{
|
||||
$GLOBALS['egw_setup']->oProc->AlterColumn('egw_ea_accounts','acc_imap_host',array(
|
||||
'type' => 'ascii',
|
||||
'precision' => '128',
|
||||
'nullable' => False,
|
||||
'comment' => 'imap hostname'
|
||||
));
|
||||
$GLOBALS['egw_setup']->oProc->AlterColumn('egw_ea_accounts','acc_sieve_host',array(
|
||||
'type' => 'ascii',
|
||||
'precision' => '128',
|
||||
'comment' => 'sieve host, default imap_host'
|
||||
));
|
||||
$GLOBALS['egw_setup']->oProc->AlterColumn('egw_ea_accounts','acc_smtp_type',array(
|
||||
'type' => 'ascii',
|
||||
'precision' => '32',
|
||||
'default' => 'emailadmin_smtp',
|
||||
'comment' => 'smtp class to use'
|
||||
));
|
||||
$GLOBALS['egw_setup']->oProc->AlterColumn('egw_ea_accounts','acc_imap_type',array(
|
||||
'type' => 'ascii',
|
||||
'precision' => '32',
|
||||
'default' => 'emailadmin_imap',
|
||||
'comment' => 'imap class to use'
|
||||
));
|
||||
$GLOBALS['egw_setup']->oProc->AlterColumn('egw_ea_accounts','acc_imap_logintype',array(
|
||||
'type' => 'ascii',
|
||||
'precision' => '20',
|
||||
'comment' => 'standard, vmailmgr, admin, uidNumber'
|
||||
));
|
||||
|
||||
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '14.3';
|
||||
}
|
||||
|
||||
/**
|
||||
* New flag to allow non-emailadmins (users) to define (add, edit or remove) forwards
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function emailadmin_upgrade14_3()
|
||||
{
|
||||
$GLOBALS['egw_setup']->oProc->AddColumn('egw_ea_accounts','acc_user_forward',array(
|
||||
'type' => 'bool',
|
||||
'default' => '0',
|
||||
'comment' => 'allow user to define forwards'
|
||||
));
|
||||
|
||||
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '14.3.001';
|
||||
}
|
@ -116,6 +116,11 @@ class setup_detection
|
||||
unset($e);
|
||||
// ignore db errors
|
||||
}
|
||||
// remove emailadmin, if it is not already installed, it exists only to allow to update to from versions before 16.1
|
||||
if (isset($setup_info['emailadmin']) && empty($setup_info['emailadmin']['currentver']))
|
||||
{
|
||||
unset($setup_info['emailadmin']);
|
||||
}
|
||||
// _debug_array($setup_info);
|
||||
return $setup_info;
|
||||
}
|
||||
|
@ -91,6 +91,8 @@ class setup_process
|
||||
{
|
||||
$pass['phpgwapi'] = $setup_info['phpgwapi'];
|
||||
}
|
||||
// ignore emailadmin, it's only there for updates
|
||||
unset($setup_info['emailadmin']);
|
||||
}
|
||||
$pass['admin'] = $setup_info['admin'];
|
||||
$pass['preferences'] = $setup_info['preferences'];
|
||||
|
Loading…
Reference in New Issue
Block a user