Author Topic: Quick Hack RC0.2 stable: New Identity / Edit Identity / Check if email already exists  (Read 6140 times)

Offline lacri

  • Full Member
  • ***
  • Posts: 179
    • http://www.php-lexikon.de
Hier eine kleine schnell einzubauende Erweiterung für die Identitäten.

Wenn eine Identität neu angelegt oder editiert wird, ist es möglich das E-Mail Adressen bei den Identitäten doppelt vergeben werden.

Hier ein kleiner Fix oder auch Quick Hack um das doppelt anlegen von E-Mail Adressen bei den Identitäten zu vermeiden:

in Datei program/steps/settings/save_identity.inc
zwischen
define('IDENTITIES_LEVEL'intval($RCMAIL->config->get('identities_level'0)));

und

$a_save_cols 
= array('name''email''organization''reply-to''bcc''standard''signature''html_signature');


in Zeile 24 folgendes einfügen

if ($_POST['_iid'])
	
{
	
$ORIGIN_IDENTITY_RECORD $USER->get_identity(get_input_value('_iid'RCUBE_INPUT_GPC));
	
//check if edit identity in RC identitys already exits
	
$sql_result $USER->list_identities();
 
	
while(
$row $DB->fetch_assoc($sql_result))
   
	
{
   
	
$origin_idents[] = $row;
   
	
}

  foreach(
$origin_idents as $key => $val)
  
	
{
  
	
if(
strtolower($val['email']) == strtolower($_POST['_email']) and strtolower($ORIGIN_IDENTITY_RECORD['email']) != strtolower($val['email']))
  
	
	
{
      
// show error message
  
	
	
$OUTPUT->show_message('identityalreadyexists''error');
  
	
	
rcmail_overwrite_action('edit-identity');
  
	
	
return;
  
	
	
}
  
	
}
  }
elseif(!
$_POST['_iid'])
	
{
//check if new identity in RC identitys already exits
	
$sql_result $USER->list_identities();
 
	
while(
$row $DB->fetch_assoc($sql_result))
   
	
{
   
	
$origin_idents[] = $row;
   
	
}

  foreach(
$origin_idents as $key => $val)
  
	
{
  
	
if(
strtolower($val['email']) == strtolower($_POST['_email']))
  
	
	
{
      
// show error message
  
	
	
$OUTPUT->show_message('identityalreadyexists''error');
  
	
	
rcmail_overwrite_action('edit-identity');
  
	
	
return;
  
	
	
}
  
	
}
	
}



und in der Datei program/localization/de_DE/messages.inc folgende Zeile hinzufügen.


$messages
['identityalreadyexists'] = 'Diese E-Mail Adresse ist Ihnen bereits zugeordnet.';


evtl. dies dann für die jeweiligen anderen Sprachen auch noch hinzufügen.

ein diff bzw patch kann ich nicht mehr liefern da ich schon zuviel geändert habe um die sync funktionalität zwischen LDAP und RC Identitäten zu implementieren und bei mir einige sonderfälle vorhanden sind wie zb. Standardidentität darf nicht editiert werden somit soll auch im RC die Srtandardidentität nicht geändert werden können usw.