several stuff regarding IMAP/SMTPServerType Handling

This commit is contained in:
Klaus Leithoff 2012-11-20 13:46:32 +00:00
parent 9d350b0f7d
commit 346dd803e4
3 changed files with 57 additions and 13 deletions

View File

@ -233,7 +233,9 @@ class emailadmin_bo extends so_sql
$GLOBALS['emailadmin_bo'] = $this;
}
$this->soemailadmin = new emailadmin_so();
//translate the standard entry description
//init with all servertypes and translate the standard entry description
self::$SMTPServerType = self::getSMTPServerTypes();
self::$IMAPServerType = self::getIMAPServerTypes();
self::$SMTPServerType['emailadmin_smtp']['description'] = lang('standard SMTP-Server');
self::$IMAPServerType['defaultimap']['description'] = lang('standard IMAP Server');
if ($_restoreSesssion) // && !(is_array(self::$sessionData) && (count(self::$sessionData)>0)) )
@ -399,11 +401,11 @@ class emailadmin_bo extends so_sql
switch($_class)
{
case 'imap':
return self::$IMAPServerType[$_serverTypeID]['fieldNames'];
return (isset(self::$IMAPServerType[$_serverTypeID]['fieldNames'])?self::$IMAPServerType[$_serverTypeID]['fieldNames']:array());
break;
case 'smtp':
if ($_serverTypeID=='defaultsmtp') $_serverTypeID='emailadmin_smtp';
return self::$SMTPServerType[$_serverTypeID]['fieldNames'];
return (isset(self::$SMTPServerType[$_serverTypeID]['fieldNames'])?self::$SMTPServerType[$_serverTypeID]['fieldNames']:array());
break;
}
}
@ -479,8 +481,11 @@ class emailadmin_bo extends so_sql
if (isset($profileData[$found]))
{
if ($profileData[$found]['smtpType']=='defaultsmtp') $profileData[$found]['smtpType'] = 'emailadmin_smtp';
$fieldNames = array_merge(self::$SMTPServerType[$profileData[$found]['smtpType']]['fieldNames'],
self::$IMAPServerType[$profileData[$found]['imapType']]['fieldNames']);
$smtpFields = array();
$imapFields = array();
if (isset(self::$SMTPServerType[$profileData[$found]['smtpType']]['fieldNames'])) $smtpFields = self::$SMTPServerType[$profileData[$found]['smtpType']]['fieldNames'];
if (isset(self::$IMAPServerType[$profileData[$found]['imapType']]['fieldNames'])) $imapFields = self::$IMAPServerType[$profileData[$found]['imapType']]['fieldNames'];
$fieldNames = array_merge($smtpFields,$imapFields);
}
$fieldNames[] = 'description';
$fieldNames[] = 'defaultDomain';
@ -523,14 +528,22 @@ class emailadmin_bo extends so_sql
*
* @return array classname => label pairs
*/
static public function getSMTPServerTypes()
static public function getSMTPServerTypes($extended=true)
{
$retData = array();
foreach(self::$SMTPServerType as $key => $value)
{
$retData[$key] = $value['description'];
if ($extended)
{
$retData[$key]['fieldNames'] = isset($value['fieldNames'])?$value['fieldNames']:array();
$retData[$key]['description'] = isset($value['description'])?$value['description']:$key;
$retData[$key]['classname'] = isset($value['classname'])?$value['classname']:$key;
}
}
foreach($GLOBALS['egw']->hooks->process('smtp_server_types',array(),true) as $app => $data)
foreach($GLOBALS['egw']->hooks->process(array(
'location' => 'smtp_server_types',
'extended' => $extended,
),array(),true) as $app => $data)
{
if ($data) $retData += $data;
}
@ -552,8 +565,10 @@ class emailadmin_bo extends so_sql
{
if ($extended)
{
$retData[$key]['description'] = $value['description'];
$retData[$key]['protocol'] = $value['protocol'];
$retData[$key]['fieldNames'] = isset($value['fieldNames'])?$value['fieldNames']:array();
$retData[$key]['description'] = isset($value['description'])?$value['description']:$key;
$retData[$key]['protocol'] = isset($value['protocol'])?$value['protocol']:'imap';
$retData[$key]['classname'] = isset($value['classname'])?$value['classname']:$key;
}
else
{
@ -1028,4 +1043,29 @@ class emailadmin_bo extends so_sql
return -$default_profile['profileID'];
}
}
/**
* Get ID of User specific default profile
*
* ID is negative for FMail, which used positive ID's for user profiles!
*
* @return int
*/
static function getUserDefaultProfileID()
{
$groups = array(0);
// set the second entry to the users primary group
$groups[] = $GLOBALS['egw_info']['user']['account_primary_group'];
$userGroups = $GLOBALS['egw']->accounts->membership($GLOBALS['egw_info']['user']['account_id']);
foreach((array)$userGroups as $groupInfo) {
$groups[] = $groupInfo['account_id'];
}
$soemailadmin = new emailadmin_so();
if (($profile = $soemailadmin->getUserProfile('felamimail',$groups,$GLOBALS['egw_info']['user']['account_id'])))
{
$default_profile = $profile['profileID']*-1;;
return $default_profile;
}
}
}

View File

@ -135,12 +135,16 @@ class emailadmin_hooks
return array(
'emailadmin_dovecot' => $extended ? array(
'description' => 'Dovecot',
'classname' => 'emailadmin_dovecot',
'protocol' => 'imap',
) : 'Dovecot',
);
case 'smtp_server_types': // nothing yet
return array('emailadmin_smtp_sql' => 'Postfix (SQL)');
return array('emailadmin_smtp_sql' => $extended ? array(
'description' => 'Postfix (SQL)',
'classname' => 'emailadmin_smtp_sql',
) : 'Postfix (SQL)');
break;
}
}

View File

@ -180,7 +180,7 @@ class emailadmin_ui extends emailadmin_bo
break;
}
}
$sel_options['ea_smtp_type']=parent::getSMTPServerTypes();
$sel_options['ea_smtp_type']=parent::getSMTPServerTypes(false);
$sel_options['ea_imap_type']=parent::getIMAPServerTypes(false);
$sel_options['ea_appname'] =self::getAllowedApps();
// setting for the top of the app, etc.
@ -390,7 +390,7 @@ class emailadmin_ui extends emailadmin_bo
list($content['ea_smtp_auth_username'],$content['smtp_senders_email']) = explode(';',$content['ea_smtp_auth_username']);
$preserv['ea_profile_id'] = $content['ea_profile_id'];
//$preserv['ea_stationery_active_templates'] = $content['ea_stationery_active_templates'];
$sel_options['ea_smtp_type']=parent::getSMTPServerTypes();
$sel_options['ea_smtp_type']=parent::getSMTPServerTypes(false);
$sel_options['ea_imap_type']=parent::getIMAPServerTypes(false);
$sel_options['ea_appname'] =self::getAllowedApps();
$sel_options['ea_imap_login_type'] = self::getIMAPLoginTypes($content['ea_imap_type']);