* eMail: introduce config option to define the display of your chosen identity, the list of identities in send and derived from this, the information actively sent within the mailheader regarding the identity used

This commit is contained in:
Klaus Leithoff 2013-02-01 09:04:08 +00:00
parent 9be692d00f
commit f4eca63984
7 changed files with 77 additions and 119 deletions

View File

@ -50,6 +50,7 @@
} else {
$this->preferencesArray['message_forwarding'] = 'asmail';
}
if (is_null(felamimail_bo::$felamimailConfig)) felamimail_bo::$felamimailConfig = config::read('felamimail');
// check if there is a composeid set, and restore the session, if so
if (!empty($_composeID))
{
@ -683,13 +684,6 @@
return $this->sessionData;
}
// get the user name, will will use for the FROM field
function getUserName()
{
$retData = sprintf("%s <%s>",$this->preferences['realname'],$this->preferences['emailAddress']);
return $retData;
}
function removeAttachment($_attachmentID) {
if (parse_url($this->sessionData['attachments'][$_attachmentID]['file'],PHP_URL_SCHEME) != 'vfs') {
unlink($this->sessionData['attachments'][$_attachmentID]['file']);
@ -720,7 +714,7 @@
if ($_identity->id != $activeMailProfile->id && strtolower($activeMailProfile->emailAddress) != strtolower($_identity->emailAddress)) error_log(__METHOD__.__LINE__.' Faking From/SenderInfo for '.$activeMailProfile->emailAddress.' with ID:'.$activeMailProfile->id.'. Identitiy to use for sending:'.array2string($_identity));
$_mailObject->Sender = ($_identity->id<0 && $activeMailProfile->id < 0 ? $_identity->emailAddress : $activeMailProfile->emailAddress);
$_mailObject->From = $_identity->emailAddress;
$_mailObject->FromName = $_mailObject->EncodeHeader($_identity->realName);
$_mailObject->FromName = $_mailObject->EncodeHeader(felamimail_bo::generateIdentityString($_identity,false));
$_mailObject->Priority = $_formData['priority'];
$_mailObject->Encoding = 'quoted-printable';
$_mailObject->AddCustomHeader('X-Mailer: FeLaMiMail');
@ -730,7 +724,7 @@
if($_formData['disposition']) {
$_mailObject->AddCustomHeader('Disposition-Notification-To: '. $_identity->emailAddress);
}
if(!empty($_identity->organization)) {
if(!empty($_identity->organization) && (felamimail_bo::$felamimailConfig['how2displayIdentities'] == '' || felamimail_bo::$felamimailConfig['how2displayIdentities'] == 'orgNemail')) {
#$_mailObject->AddCustomHeader('Organization: '. $bofelamimail->encodeHeader($_identity->organization, 'q'));
$_mailObject->AddCustomHeader('Organization: '. $_identity->organization);
}
@ -1043,8 +1037,8 @@
#error_log(print_r($this->preferences,true));
$identity = $this->preferences->getIdentity((int)$this->sessionData['identity']);
$signature = $this->bosignatures->getSignature((int)$this->sessionData['signatureID']);
#error_log($this->sessionData['identity']);
#error_log(print_r($identity,true));
//error_log($this->sessionData['identity']);
//error_log(print_r($identity,true));
// create the messages
$this->createMessage($mail, $_formData, $identity, $signature, true);
// remember the identity

View File

@ -94,6 +94,13 @@ class felamimail_bo
* @var array
*/
var $mailPreferences;
/**
* static used to hold the felamimail Config values
* @array
*/
static $felamimailConfig;
// set to true, if php is compiled with multi byte string support
var $mbAvailable = FALSE;
@ -244,6 +251,7 @@ class felamimail_bo
self::$instances[$_profileID]->profileID = $_profileID;
if (!isset(self::$instances[$_profileID]->idna2)) self::$instances[$_profileID]->idna2 = new egw_idna;
//if ($_profileID==0); error_log(__METHOD__.__LINE__.' RestoreSession:'.$_restoreSession.' ProfileId:'.$_profileID);
if (is_null(self::$felamimailConfig)) self::$felamimailConfig = config::read('felamimail');
return self::$instances[$_profileID];
}
@ -433,6 +441,7 @@ class felamimail_bo
if (function_exists('mb_convert_encoding')) {
$this->mbAvailable = TRUE;
}
if (is_null(self::$felamimailConfig)) self::$felamimailConfig = config::read('felamimail');
if (!isset(self::$idna2)) self::$idna2 = new egw_idna;
}
@ -1652,21 +1661,6 @@ class felamimail_bo
return $selectedID;
}
function getEMailProfile()
{
$config = CreateObject('phpgwapi.config','felamimail');
$config->read_repository();
$felamimailConfig = $config->config_data;
#_debug_array($felamimailConfig);
if(!isset($felamimailConfig['profileID'])){
return -1;
} else {
return intval($felamimailConfig['profileID']);
}
}
function getErrorMessage()
{
$rv =$this->icServer->_connectionErrorObject->message;
@ -4069,14 +4063,6 @@ class felamimail_bo
$this->saveSessionData();
}
function setEMailProfile($_profileID)
{
$config = CreateObject('phpgwapi.config','felamimail');
$config->read_repository();
$config->value('profileID',$_profileID);
$config->save_repository();
}
function subscribe($_folderName, $_status)
{
if (self::$debug) error_log("felamimail_bo::".($_status?"":"un")."subscribe:".$_folderName);
@ -4328,6 +4314,35 @@ class felamimail_bo
return $rv;
}
/**
* generateIdentityString
* construct the string representing an Identity passed by $identity
* @var array/object $identity, identity object that holds realname, organization, emailaddress and signatureid
* @var boolean $fullString full or false=NamePart only is returned
* @return string - constructed of identity object data as defined in felamimailConfig
*/
static function generateIdentityString($identity, $fullString=true)
{
if (is_null(self::$felamimailConfig)) self::$felamimailConfig = config::read('felamimail');
// not set? -> use default, means full display of all available data
if (!isset(self::$felamimailConfig['how2displayIdentities'])) self::$felamimailConfig['how2displayIdentities']='';
switch (self::$felamimailConfig['how2displayIdentities'])
{
case 'email';
$retData = str_replace('@',' ',$identity->emailAddress).($fullString===true?' <'.$identity->emailAddress.'>':'');
break;
case 'nameNemail';
$retData = (!empty($identity->realName)?$identity->realName:substr_replace($identity->emailAddress,'',strpos($identity->emailAddress,'@'))).($fullString===true?' <'.$identity->emailAddress.'>':'');
break;
case 'orgNemail';
$retData = (!empty($identity->organization)?$identity->organization:substr_replace($identity->emailAddress,'',0,strpos($identity->emailAddress,'@')+1)).($fullString===true?' <'.$identity->emailAddress.'>':'');
break;
default:
$retData = $identity->realName.(!empty($identity->organization)?' '.$identity->organization:'').($fullString===true?' <'.$identity->emailAddress.'>':'');
}
return $retData;
}
/**
* Merges a given content with contact data
*
@ -5140,7 +5155,7 @@ class felamimail_bo
//error_log(__METHOD__.__LINE__.array2string($activeMailProfile));
$mailObject->From = $activeMailProfile->emailAddress;
//$mailObject->From = $_identity->emailAddress;
$mailObject->FromName = $mailObject->EncodeHeader($activeMailProfile->realName);
$mailObject->FromName = $mailObject->EncodeHeader(self::generateIdentityString($activeMailProfile,false));
$mailObject->MessageID = '';
$mailObject->ClearAllRecipients();

View File

@ -521,20 +521,24 @@
// header
$allIdentities = $this->mailPreferences->getIdentity();
unset($allIdentities[0]);
//_debug_array($allIdentities);
$defaultIdentity = 0;
$identities = array();
foreach($allIdentities as $key => $singleIdentity) {
#$identities[$singleIdentity->id] = $singleIdentity->realName.' <'.$singleIdentity->emailAddress.'>';
if (array_search($singleIdentity->realName.' <'.$singleIdentity->emailAddress.'>',$identities)==false) $identities[$key] = $singleIdentity->realName.' <'.$singleIdentity->emailAddress.'>';
if(!empty($singleIdentity->default))
//$identities[$singleIdentity->id] = $singleIdentity->realName.' <'.$singleIdentity->emailAddress.'>';
$iS = felamimail_bo::generateIdentityString($singleIdentity);
//error_log(__METHOD__.__LINE__.':'.$presetId.'->'.$key.'('.$singleIdentity->id.')'.'#'.$iS.'#');
if (array_search('('.$singleIdentity->id.') '.$iS,$identities)===false) $identities[$singleIdentity->id] = '('.$singleIdentity->id.') '.$iS;
if(!empty($singleIdentity->default) && $singleIdentity->default==1 && $defaultIdentity==0)
{
#$defaultIdentity = $singleIdentity->id;
$defaultIdentity = $key;
//_debug_array($singleIdentity);
$defaultIdentity = $singleIdentity->id;
//$defaultIdentity = $key;
$sessionData['signatureID'] = (!empty($singleIdentity->signature) ? $singleIdentity->signature : $sessionData['signatureID']);
}
}
$selectFrom = html::select('identity', ($presetId ? $presetId : $defaultIdentity), $identities, true, "style='width:100%;' onchange='changeIdentity(this);'");
$selectFrom = html::select('identity', (!empty($presetId) ? $presetId : $defaultIdentity), $identities, true, "style='width:100%;' onchange='changeIdentity(this);'");
$this->t->set_var('select_from', $selectFrom);
//error_log(__METHOD__.__LINE__.' DefaultIdentity:'.array2string($identities[($presetId ? $presetId : $defaultIdentity)]));
// navbar(, kind of)

View File

@ -26,7 +26,6 @@ class uifelamimail
'importMessage' => True,
'importMessageFromVFS2DraftAndDisplay' => True,
'importMessageFromVFS2DraftAndEdit' => True,
'hookAdmin' => True,
'toggleFilter' => True,
'viewMainScreen' => True,
'redirectToConfig' => True,
@ -136,8 +135,7 @@ class uifelamimail
// this need to fixed
// this does not belong to here
if($_GET['menuaction'] != 'felamimail.uifelamimail.hookAdmin' &&
$_GET['menuaction'] != 'felamimail.uifelamimail.changeFolder') {
if($_GET['menuaction'] != 'felamimail.uifelamimail.changeFolder') {
$this->connectionStatus = $this->bofelamimail->openConnection(self::$icServerID);
}
@ -779,79 +777,6 @@ class uifelamimail
echo $GLOBALS['egw']->framework->navbar();
}
function hookAdmin()
{
if(!$GLOBALS['egw']->acl->check('run',1,'admin'))
{
$GLOBALS['egw']->common->egw_header();
echo $GLOBALS['egw']->framework->navbar();
echo lang('access not permitted');
$GLOBALS['egw']->log->message('F-Abort, Unauthorized access to felamimail.uifelamimail.hookAdmin');
$GLOBALS['egw']->log->commit();
$GLOBALS['egw']->common->egw_exit();
}
if(!empty($_POST['profileID']) && is_int(intval($_POST['profileID'])))
{
$profileID = intval($_POST['profileID']);
$this->bofelamimail->setEMailProfile($profileID);
}
$boemailadmin = new emailadmin_bo();
$profileList = $boemailadmin->getProfileList();
$profileID = $this->bofelamimail->getEMailProfile();
$this->display_app_header();
$this->t->set_file(array("body" => "selectprofile.tpl"));
$this->t->set_block('body','main');
$this->t->set_block('body','select_option');
$this->t->set_var('lang_select_email_profile',lang('select emailprofile'));
$this->t->set_var('lang_site_configuration',lang('site configuration'));
$this->t->set_var('lang_save',lang('save'));
$this->t->set_var('lang_back',lang('back'));
$linkData = array
(
'menuaction' => 'felamimail.uifelamimail.hookAdmin'
);
$this->t->set_var('action_url',$GLOBALS['egw']->link('/index.php',$linkData));
$linkData = array
(
'menuaction' => 'emailadmin.emailadmin_ui.listProfiles'
);
$this->t->set_var('lang_go_emailadmin', lang('use <a href="%1">EmailAdmin</a> to create profiles', $GLOBALS['egw']->link('/index.php',$linkData)));
$this->t->set_var('back_url',$GLOBALS['egw']->link('/admin/index.php'));
if(isset($profileList) && is_array($profileList))
{
foreach($profileList as $key => $value)
{
#print "$key => $value<br>";
#_debug_array($value);
$this->t->set_var('profileID',$value['profileID']);
$this->t->set_var('description',$value['description']);
if(is_int($profileID) && $profileID == $value['profileID'])
{
$this->t->set_var('selected','selected');
}
else
{
$this->t->set_var('selected','');
}
$this->t->parse('select_options','select_option',True);
}
}
$this->t->parse("out","main");
print $this->t->get('out','main');
}
function viewMainScreen()
{
if (!$GLOBALS['egw']->hooks->hook_exists('session_creation','felamimail')) $GLOBALS['egw']->hooks->register_single_app_hook('felamimail','session_creation');

View File

@ -27,6 +27,7 @@ address book search felamimail de Adressbuch durchsuchen
administer the mailbox (change the mailbox's acl). felamimail de Administrieren der Mailbox (Berechtigung bzw. ACL der Mailbox)
after message body felamimail de nach dem Editorfenster
all address books felamimail de Alle Adressbücher
all available info felamimail de Alle verfügbaren Informationen
all folders felamimail de Alle Ordner
all messages in folder felamimail de Alle Nachrichten im Ordner
all of felamimail de mit allen
@ -130,6 +131,7 @@ display mail subject in notification felamimail de Anzeigen des Betreffs der E-M
display message in new window felamimail de Nachricht in neuem Fenster anzeigen
display messages in multiple windows felamimail de Nachrichten in mehreren Fenstern anzeigen
display of html emails felamimail de HTML-E-Mails anzeigen
display of identities felamimail de Anzeigeformat der verfügbaren Identitätsinformationen
display only when no plain text is available felamimail de nur anzeigen wenn kein Plain Text vorhanden ist
display preferences felamimail de Anzeige Einstellungen
displaying html messages is disabled felamimail de Die Anzeige von HTML-E-Mails ist deaktiviert.
@ -174,7 +176,7 @@ edit rule felamimail de Regel bearbeiten
edit selected felamimail de Ausgewählte bearbeiten
edit vacation settings felamimail de Abwesenheitsnotiz bearbeiten
editor type felamimail de Editortyp
effective only if server supports acl at all admin de Wird nur angewendet, wenn Ihr Server diese Methode unterstützt
effective only if server supports acl at all felamimail de Wird nur angewendet, wenn Ihr Server diese Methode unterstützt
email address felamimail de E-Mail-Adresse
email forwarding address felamimail de Zieladresse
email notification felamimail de E-Mail Benachrichtigung
@ -256,6 +258,7 @@ have a look at <a href="http://www.felamimail.org" target="_new">www.felamimail.
header lines felamimail de Kopfzeilen
hide header felamimail de Kopfzeilen verbergen
hostname / address felamimail de Servername / Adresse
how should the available information on identities be displayed felamimail de Hier legen Sie fest wie die verfügbaren Informationen Ihrer Identitäten in ausgehenden Mails angezeigt wird
how to forward messages felamimail de Wie wollen Sie Nachrichten weiterleiten?
html felamimail de HTML
icons and text felamimail de Icons und Text

View File

@ -27,6 +27,7 @@ address book search felamimail en Address Book search
administer the mailbox (change the mailbox's acl). felamimail en Administer the mailbox (change the mailbox's ACL).
after message body felamimail en After message body
all address books felamimail en All address books
all available info felamimail en All available info
all folders felamimail en All folders
all messages in folder felamimail en All messages in folder
all of felamimail en All of
@ -130,6 +131,7 @@ display mail subject in notification felamimail en Display mail subject in notif
display message in new window felamimail en Display message in new window
display messages in multiple windows felamimail en Display messages in multiple windows
display of html emails felamimail en Display HTML emails
display of identities felamimail en Display of Identities
display only when no plain text is available felamimail en Display only when no plain text is available
display preferences felamimail en Display preferences
displaying html messages is disabled felamimail en Displaying HTML messages is disabled.
@ -174,7 +176,7 @@ edit rule felamimail en Edit rule
edit selected felamimail en Edit selected
edit vacation settings felamimail en Edit vacation settings
editor type felamimail en Editor type
effective only if server supports acl at all admin en effective only if server supports ACL at all
effective only if server supports acl at all felamimail en effective only if server supports ACL at all
email address felamimail en Email address
email forwarding address felamimail en Email forwarding address
email notification felamimail en email notification
@ -256,6 +258,7 @@ have a look at <a href="http://www.felamimail.org" target="_new">www.felamimail.
header lines felamimail en Header lines
hide header felamimail en Hide header
hostname / address felamimail en Hostname / address
how should the available information on identities be displayed felamimail en How should the available information on identities be displayed
how to forward messages felamimail en How to forward messages
html felamimail en HTML
icons and text felamimail en Icons and text

View File

@ -13,6 +13,20 @@
<tr class="th">
<td colspan="2">&nbsp;<b>{lang_felamimail}</b> - {lang_acl}</td>
</tr>
<tr class="row_on">
<td>&nbsp;{lang_display_of_identities}:</td>
<td>
<select name="newsettings[how2displayIdentities]">
<option value=""{selected_how2displayIdentities_full}>{lang_all_available_info}</option>
<option value="email"{selected_how2displayIdentities_email}>{lang_emailaddress}</option>
<option value="nameNemail"{selected_how2displayIdentities_nameNemail}>{lang_name} &amp; {lang_emailaddress}</option>
<option value="orgNemail"{selected_how2displayIdentities_orgNemail}>{lang_organisation} &amp; {lang_emailaddress}</option>
</select>
</td>
</tr>
<tr class="row_off">
<td colspan="2">&nbsp;{lang_how_should_the_available_information_on_identities_be_displayed}</td>
</tr>
<tr class="row_on">
<td>&nbsp;{lang_restrict_acl_management}:</td>
<td>