From 5a1ef1a0a657e2bd4e94425f861b26593663ac9f Mon Sep 17 00:00:00 2001 From: Juan Ferrer Toribio <juan.ferrer.toribio@gmail.com> Date: Sun, 24 Apr 2016 13:23:34 +0200 Subject: [PATCH] Errores solucionados --- agi-bin/incoming.php | 4 +--- debian/changelog | 2 +- sql/customer_from_phone.sql | 21 +++++++++++---------- sql/extension_is_valid.sql | 24 ++++++++++++++++++++++++ sql/phone_format.sql | 19 ++++++++++--------- sql/phone_is_valid.sql | 11 ++++++----- sql/queue_is_valid.sql | 23 +++++++++++++++++++++++ sql/upgrade.sql | 26 ++++++++++++++------------ 8 files changed, 90 insertions(+), 40 deletions(-) create mode 100644 sql/extension_is_valid.sql create mode 100644 sql/queue_is_valid.sql diff --git a/agi-bin/incoming.php b/agi-bin/incoming.php index a67b0bf..641cab5 100755 --- a/agi-bin/incoming.php +++ b/agi-bin/incoming.php @@ -32,7 +32,7 @@ if ($db->getValue ('SELECT COUNT(*) > 0 FROM blacklist WHERE phone = #', [$calle $sundayFestive = $db->getValue ('SELECT sunday_festive FROM config'); -if (date ('N') == 6 && $sundayFestive) +if (date ('N') == 7 && $sundayFestive) { Agi::exec ('SET VARIABLE MACRO playback'); Agi::exec ('SET VARIABLE ARG1 out-of-ours'); @@ -65,8 +65,6 @@ if ($customer) Agi::exec ('SET VARIABLE MACRO playback'); Agi::exec ('SET VARIABLE ARG1 busy'); } - - exit (); } ?> diff --git a/debian/changelog b/debian/changelog index 6a9b835..68e3003 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -vn-asterisk (1.004-deb7) stable; urgency=low +vn-asterisk (1.005-deb7) stable; urgency=low * Initial Release. diff --git a/sql/customer_from_phone.sql b/sql/customer_from_phone.sql index 1f66a22..813e7bb 100644 --- a/sql/customer_from_phone.sql +++ b/sql/customer_from_phone.sql @@ -4,17 +4,18 @@ * @param v_phone The caller phone number * @return The customer id or %NULL if customer not exists or is inactive **/ -DROP FUNCTION IF EXISTS pbx.customer_from_phone; +USE pbx; +DROP FUNCTION IF EXISTS customer_from_phone; DELIMITER $$ -CREATE FUNCTION pbx.customer_from_phone (v_phone VARCHAR(255)) +CREATE FUNCTION customer_from_phone (v_phone VARCHAR(255)) RETURNS INT DETERMINISTIC BEGIN - DECLARE v_customer INT DEFAULT NULL; - - SET @phone = v_phone COLLATE 'utf8_unicode_ci'; - - -- Searchs a customer associated to the phone number + DECLARE v_customer INT DEFAULT NULL; + + SET @phone = v_phone COLLATE 'utf8_unicode_ci'; + + -- Searchs a customer associated to the phone number DROP TEMPORARY TABLE IF EXISTS tmp.customer; CREATE TEMPORARY TABLE tmp.customer @@ -34,12 +35,12 @@ BEGIN JOIN vn2008.Contactos c ON r.Id_Contacto = c.Id_Contacto WHERE telefono = @phone OR movil = @phone; - + SELECT t.customer INTO v_customer FROM tmp.customer t - JOIN vn2008.Clientes c + JOIN vn2008.Clientes c ON c.id_cliente = t.customer WHERE c.activo - LIMIT 1; + LIMIT 1; DROP TEMPORARY TABLE tmp.customer; diff --git a/sql/extension_is_valid.sql b/sql/extension_is_valid.sql new file mode 100644 index 0000000..1f922ff --- /dev/null +++ b/sql/extension_is_valid.sql @@ -0,0 +1,24 @@ +/** + * Checks whether a passed extension number has valid sintax + * + * @param v_extension The extension to check format + * @return %TRUE if it's well formated + **/ +USE pbx; +DROP PROCEDURE IF EXISTS extension_is_valid; +DELIMITER $$ +CREATE PROCEDURE extension_is_valid (v_extension VARCHAR(255)) +BEGIN + DECLARE v_is_valid BOOLEAN; + + SET v_is_valid = v_extension IS NULL + OR (v_extension REGEXP '^[0-9]{4}$' + AND MOD(v_extension, 100) != 0); + + IF NOT v_is_valid + THEN + SIGNAL SQLSTATE '45000' + SET MESSAGE_TEXT = 'EXTENSION_INVALID_FORMAT'; + END IF; +END$$ +DELIMITER ; diff --git a/sql/phone_format.sql b/sql/phone_format.sql index 5a54a61..d03ff63 100644 --- a/sql/phone_format.sql +++ b/sql/phone_format.sql @@ -4,9 +4,10 @@ * @param v_phone The phone to format * @return The formated phone or %NULL if bad sintax **/ -DROP FUNCTION IF EXISTS pbx.phone_format; +USE pbx; +DROP FUNCTION IF EXISTS phone_format; DELIMITER $$ -CREATE FUNCTION pbx.phone_format (phone VARCHAR(255)) +CREATE FUNCTION phone_format (phone VARCHAR(255)) RETURNS VARCHAR(255) DETERMINISTIC BEGIN @@ -16,19 +17,19 @@ BEGIN DECLARE newPhone VARCHAR(255) DEFAULT ''; WHILE i < len - DO + DO SET chr = SUBSTR(phone, i+1, 1); - + IF chr REGEXP '^[0-9]$' - THEN + THEN SET newPhone = CONCAT(newPhone, chr); ELSEIF chr = '+' AND i = 0 - THEN + THEN SET newPhone = CONCAT(newPhone, '00'); END IF; - - SET i = i + 1; - END WHILE; + + SET i = i + 1; + END WHILE; IF newPhone REGEXP '^0+$' OR newPhone = '' THEN RETURN NULL; diff --git a/sql/phone_is_valid.sql b/sql/phone_is_valid.sql index 1e41cef..e2ade1e 100644 --- a/sql/phone_is_valid.sql +++ b/sql/phone_is_valid.sql @@ -4,21 +4,22 @@ * @param v_phone The phone to check format * @return %TRUE if it's well formated **/ -DROP PROCEDURE IF EXISTS pbx.phone_is_valid; +USE pbx; +DROP PROCEDURE IF EXISTS phone_is_valid; DELIMITER $$ -CREATE PROCEDURE pbx.phone_is_valid (v_phone VARCHAR(255)) +CREATE PROCEDURE phone_is_valid (v_phone VARCHAR(255)) BEGIN DECLARE v_is_valid BOOLEAN; - SET v_is_valid = v_phone IS NULL + SET v_is_valid = v_phone IS NULL OR (v_phone REGEXP '^[0-9]+$' AND v_phone NOT REGEXP '^0+$' AND v_phone NOT REGEXP '^0034'); IF NOT v_is_valid - THEN + THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'PHONE_INVALID_FORMAT'; - END IF; + END IF; END$$ DELIMITER ; diff --git a/sql/queue_is_valid.sql b/sql/queue_is_valid.sql new file mode 100644 index 0000000..d3d7cf3 --- /dev/null +++ b/sql/queue_is_valid.sql @@ -0,0 +1,23 @@ +/** + * Checks whether a passed queue number has valid sintax + * + * @param v_queue The queue to check format + * @return %TRUE if it's well formated + **/ +USE pbx; +DROP PROCEDURE IF EXISTS queue_is_valid; +DELIMITER $$ +CREATE PROCEDURE queue_is_valid (v_queue VARCHAR(255)) +BEGIN + DECLARE v_is_valid BOOLEAN; + + SET v_is_valid = v_queue IS NULL + OR v_queue REGEXP '^[1-9][0-9]00$'; + + IF NOT v_is_valid + THEN + SIGNAL SQLSTATE '45000' + SET MESSAGE_TEXT = 'QUEUE_INVALID_FORMAT'; + END IF; +END$$ +DELIMITER ; diff --git a/sql/upgrade.sql b/sql/upgrade.sql index ed836c9..438e355 100644 --- a/sql/upgrade.sql +++ b/sql/upgrade.sql @@ -1,42 +1,44 @@ +USE vn2008; + -- Updates the bad formated phones -UPDATE vn2008.Clientes +UPDATE Clientes SET telefono = pbx.phone_format (telefono), fax = pbx.phone_format (fax), movil = pbx.phone_format (movil); -UPDATE vn2008.Consignatarios +UPDATE Consignatarios SET telefono = pbx.phone_format (telefono), movil = pbx.phone_format (movil); -UPDATE vn2008.Contactos +UPDATE Contactos SET telefono = pbx.phone_format (telefono), fax = pbx.phone_format (fax), movil = pbx.phone_format (movil); -- Indexes the phone columns -ALTER TABLE vn2008.`Clientes` ADD INDEX(`Telefono`); -ALTER TABLE vn2008.`Clientes` ADD INDEX(`movil`); +ALTER TABLE Clientes ADD INDEX(Telefono); +ALTER TABLE Clientes ADD INDEX(movil); -ALTER TABLE vn2008.`Consignatarios` ADD INDEX(`telefono`); -ALTER TABLE vn2008.`Consignatarios` ADD INDEX(`movil`); +ALTER TABLE Consignatarios ADD INDEX(telefono); +ALTER TABLE Consignatarios ADD INDEX(movil); -ALTER TABLE vn2008.`Contactos` ADD INDEX(`Telefono`); -ALTER TABLE vn2008.`Contactos` ADD INDEX(`Movil`); +ALTER TABLE Contactos ADD INDEX(Telefono); +ALTER TABLE Contactos ADD INDEX(Movil); -- Returns all bad formated phones -SELECT telefono, movil c FROM vn2008.Clientes +SELECT telefono, movil c FROM Clientes WHERE telefono NOT REGEXP '^[0-9]+$' OR movil NOT REGEXP '^[0-9]+$' UNION -SELECT telefono, movil FROM vn2008.Consignatarios +SELECT telefono, movil FROM Consignatarios WHERE telefono NOT REGEXP '^[0-9]+$' OR movil NOT REGEXP '^[0-9]+$' UNION -SELECT telefono, movil FROM vn2008.Contactos +SELECT telefono, movil FROM Contactos WHERE telefono NOT REGEXP '^[0-9]+$' OR movil NOT REGEXP '^[0-9]+$';