/**
 * Reformats a phone number
 *
 * @param v_phone The phone to format
 * @return The formated phone or %NULL if bad sintax
 **/
DROP FUNCTION IF EXISTS pbx.phone_format;
DELIMITER $$
CREATE FUNCTION pbx.phone_format (phone VARCHAR(255))
RETURNS VARCHAR(255)
DETERMINISTIC
BEGIN
	DECLARE i INT DEFAULT 0;
	DECLARE chr VARCHAR(1);
	DECLARE len INT DEFAULT LENGTH(phone);
	DECLARE newPhone VARCHAR(255) DEFAULT '';

	WHILE i < len
    DO
		SET chr = SUBSTR(phone, i+1, 1);
    
		IF chr REGEXP '^[0-9]$'
        THEN
			SET newPhone = CONCAT(newPhone, chr);
		ELSEIF chr = '+' AND i = 0
        THEN
			SET newPhone = CONCAT(newPhone, '00');
		END IF;
        
        SET i = i + 1;
    END WHILE;

	IF newPhone REGEXP '^0+$' OR newPhone = '' THEN
		RETURN NULL;
	END IF;

	IF newPhone REGEXP '^0034' THEN
		SET newPhone = SUBSTR(newPhone, 5);
	END IF;

	RETURN newPhone;
END$$
DELIMITER ;