mysql/FORWARDERS_OUT.sql
2017-02-21 02:31:30 +01:00

56 lines
2.0 KiB
SQL

DROP FUNCTION IF EXISTS FORWARDERS_OUT ;
DELIMITER |
CREATE FUNCTION FORWARDERS_OUT (email_str TEXT, vacation_domain TEXT , list_seperator CHAR)
RETURNS TEXT
DETERMINISTIC
BEGIN
DECLARE forward_str TEXT;
DECLARE local_email_part TEXT;
DECLARE domain_email_part TEXT;
DECLARE first_char CHAR;
DECLARE last_char CHAR;
-- get list of forwarders
--
SELECT goto INTO forward_str FROM alias WHERE address=email_str;
-- entferne mailbox emailadresse
--
SET forward_str = REPLACE(forward_str, email_str, '' );
-- SELECT REPLACE(forward_str, email_str, '' ) INTO forward_str;
-- entferne vacation adresse
--
SET local_email_part = SUBSTRING(email_str,1, LOCATE('@',email_str) - 1);
SET domain_email_part = SUBSTRING(email_str, LOCATE('@',email_str) + 1, LENGTH(email_str));
SET forward_str = REPLACE(forward_str, CONCAT(local_email_part, "#" ,domain_email_part,"@", vacation_domain), '');
-- SELECT REPLACE(forward_str, CONCAT(list_seperator,list_seperator), list_seperator) INTO forward_str;
-- enferne doppelte seperatorzeichen
--
WHILE LOCATE(CONCAT(list_seperator,list_seperator) , forward_str) DO
SET forward_str = REPLACE(forward_str, CONCAT(list_seperator,list_seperator), list_seperator);
-- SELECT REPLACE(forward_str, CONCAT(list_seperator,list_seperator), list_seperator) INTO forward_str;
END WHILE ;
-- entferne erstes zeichen wenn es das seperatorzeichen ist
--
IF LEFT(forward_str,1) = list_seperator THEN
SET forward_str = SUBSTRING(forward_str FROM 2);
-- SELECT SUBSTRING(forward_str FROM 2) INTO forward_str;
END IF;
-- entferne letztes zeichen wenn es das seperatorzeichen ist
--
IF RIGHT(forward_str,1) = list_seperator THEN
SET forward_str = SUBSTRING(forward_str , 1, LENGTH(forward_str) - 1);
-- SELECT SUBSTRING(forward_str , 1, LENGTH(forward_str) - 1) INTO forward_str;
END IF;
RETURN forward_str;
END |
DELIMITER ;