Messaging
DROP PROCEDURE _Base_Messaging;
DELIMITER //
CREATE PROCEDURE _Base_Messaging
(
$MESSAGE_ID INT,
$order TEXT,
$limit INT,
$offset INT
)
SQL SECURITY INVOKER
BEGIN
CALL CheckLimitOffset( $limit, $offset );
SELECT *
FROM base_messaging
WHERE message_deleted = 0
AND (MESSAGE_ID = $MESSAGE_ID OR $MESSAGE_ID = 0)
ORDER BY message_created
LIMIT $limit
OFFSET $offset;
END
//
DELIMITER ;
DROP PROCEDURE Base_Messaging_Replace;
DELIMITER //
CREATE PROCEDURE Base_Messaging_Replace
(
$USER INT,
$MESSAGE_ID INT,
$message_guid TEXT,
$message_type TEXT,
$message_from TEXT,
$message_to TEXT,
$message_cc TEXT,
$message_bcc TEXT,
$message_reply_to TEXT,
$message_subject TEXT,
$message_tags TEXT,
$message_content_txt64 LONGTEXT,
$message_content_htm64 LONGTEXT,
$message_send_at DATETIME,
$message_sent_at DATETIME,
$message_response_code TEXT,
$message_last_send_at DATETIME,
$message_last_sent_at DATETIME,
$message_last_response_code TEXT
)
SQL SECURITY INVOKER
BEGIN
IF @@read_only THEN
CALL Error( 'READ_ONLY' );
ELSE
IF NOT $MESSAGE_ID THEN
REPLACE INTO base_messaging
( USER, MESSAGE_ID)
VALUES
($USER, $MESSAGE_ID);
SET $MESSAGE_ID = LAST_INSERT_ID();
END IF;
UPDATE base_messaging
SET
message_guid = $message_guid,
message_type = $message_type,
message_from = $message_from,
message_to = $message_to,
message_cc = $message_cc,
message_bcc = $message_bcc,
message_reply_to = $message_reply_to,
message_subject = $message_subject,
message_tags = $message_tags,
message_content_txt64 = $message_content_txt64,
message_content_htm64 = $message_content_htm64,
message_send_at = $message_send_at,
message_sent_at = $message_sent_at,
message_response_code = $message_response_code,
message_last_send_at = $message_last_send_at,
message_last_sent_at = $message_last_sent_at,
message_last_response_code = $message_last_response_code
WHERE message_deleted = 0
AND MESSAGE_ID = $MESSAGE_ID;
END IF;
END
//
DELIMITER ;
DROP PROCEDURE _Base_Messaging_Save;
DELIMITER //
CREATE PROCEDURE _Base_Messaging_Save
(
$MESSAGE_ID INT,
$name TEXT,
$value TEXT
)
SQL SECURITY INVOKER
BEGIN
IF @@read_only THEN
CALL Error( 'READ_ONLY' );
ELSE
CASE $name
WHEN 'message_send_at' THEN UPDATE base_messaging SET message_send_at = $value WHERE MESSAGE_ID = MESSAGE_ID AND message_deleted = 0;
WHEN 'message_sent_at' THEN UPDATE base_messaging SET message_sent_at = $value WHERE MESSAGE_ID = MESSAGE_ID AND message_deleted = 0;
WHEN 'message_response_code' THEN UPDATE base_messaging SET message_response_code = $value WHERE MESSAGE_ID = MESSAGE_ID AND message_deleted = 0;
WHEN 'message_last_send_at' THEN UPDATE base_messaging SET message_last_send_at = $value WHERE MESSAGE_ID = MESSAGE_ID AND message_deleted = 0;
WHEN 'message_last_sent_at' THEN UPDATE base_messaging SET message_last_sent_at = $value WHERE MESSAGE_ID = MESSAGE_ID AND message_deleted = 0;
WHEN 'message_last_response_code' THEN UPDATE base_messaging SET message_last_response_code = $value WHERE MESSAGE_ID = MESSAGE_ID AND message_deleted = 0;
ELSE
CALL Error( 'Base_messaging_Save: INVALID_CASE_OPTION' );
END CASE;
END IF;
END
//
DELIMITER ;
DROP PROCEDURE _Base_Messaging_Delete;
DELIMITER //
CREATE PROCEDURE _Base_Messaging_Delete
(
$MESSAGE_ID INT
)
SQL SECURITY INVOKER
BEGIN
IF @@read_only THEN
CALL Error( 'READ_ONLY' );
ELSE
UPDATE base_messaging
SET
message_deleted = NOW()
WHERE message_deleted = 0
AND MESSAGE_ID = $MESSAGE_ID;
END IF;
END
//
DELIMITER ;
Messaging Create
DROP PROCEDURE _Base_Messaging_Create;
DELIMITER //
CREATE PROCEDURE _Base_Messaging_Create
(
$USER INT,
$message_type TEXT,
$message_from TEXT,
$message_to TEXT,
$message_cc TEXT,
$message_bcc TEXT,
$message_reply_to TEXT,
$message_subject TEXT,
$message_tags TEXT,
$message_content_txt64 LONGTEXT,
$message_content_htm64 LONGTEXT,
$message_send_at TEXT
)
SQL SECURITY INVOKER
BEGIN
DECLARE $MESSAGE_ID INT DEFAULT 0;
DECLARE $message_guid TEXT DEFAULT '';
IF 'NOW' = $message_send_at THEN
SET $message_send_at = NOW();
END IF;
IF @@read_only THEN
CALL Error( 'READ_ONLY' );
ELSE
REPLACE INTO base_messaging
( USER, MESSAGE_ID)
VALUES
($USER, $MESSAGE_ID);
SET $MESSAGE_ID = LAST_INSERT_ID();
CALL Base_Guids_Create( 'message', $MESSAGE_ID, $message_guid );
UPDATE base_messaging
SET
message_guid = $message_guid,
message_type = $message_type,
message_from = $message_from,
message_to = $message_to,
message_cc = $message_cc,
message_bcc = $message_bcc,
message_reply_to = $message_reply_to,
message_subject = $message_subject,
message_tags = $message_tags,
message_content_txt64 = $message_content_txt64,
message_content_htm64 = $message_content_htm64,
message_send_at = $message_send_at
WHERE message_deleted = 0
AND MESSAGE_ID = $MESSAGE_ID;
DO LAST_INSERT_ID( $MESSAGE_ID );
END IF;
END
//
DELIMITER ;
Messaging Sent
DROP PROCEDURE Base_Messaging_Sent;
DELIMITER //
CREATE PROCEDURE Base_Messaging_Sent
(
$apikey TEXT,
$MESSAGE_ID INT,
$response_code TEXT
)
SQL SECURITY INVOKER
COMMENT 'EXPORTABLE'
BEGIN
CALL _Base_Users_Authorise_APIKey_Type( 'MAILBOT', $apikey, @email, @idtype, @apikey_type, @USER, @ORG_ID, @PROJECT_ID );
IF @@read_only THEN
CALL Error( 'READ_ONLY' );
ELSEIF NOT( "ADMIN" = @idtype ) THEN
CALL Notice( 'Base_Messaging_Sent: INVALID_AUTHORISATION' );
ELSEIF EXISTS( SELECT * FROM base_messaging WHERE MESSAGE_ID=$MESSAGE_ID AND message_sent_at = 0 ) THEN
UPDATE base_messaging
SET
message_sent_at = NOW(),
message_response_code = $response_code
WHERE MESSAGE_ID = $MESSAGE_ID;
ELSEIF EXISTS( SELECT * FROM base_messaging WHERE MESSAGE_ID=$MESSAGE_ID AND message_last_sent_at = 0 ) THEN
UPDATE base_messaging
SET
message_last_sent_at = NOW(),
message_last_response_code = $response_code
WHERE MESSAGE_ID = $MESSAGE_ID;
END IF;
END
//
DELIMITER ;
Messaging Unsent
DROP PROCEDURE Base_Messaging_Unsent;
DELIMITER //
CREATE PROCEDURE Base_Messaging_Unsent
(
$apikey TEXT,
$message_type TEXT
)
SQL SECURITY INVOKER
COMMENT 'EXPORTABLE'
BEGIN
DECLARE $MESSAGE_ID INT DEFAULT 0;
DECLARE $message_guid TEXT DEFAULT '';
CALL Base_Users_Authorise_APIKey_Type( 'MAILBOT', $apikey, @email, @idtype, @apikey_type, @USER, @ORG_ID, @PROJECT_ID );
IF NOT "ADMIN" = @idtype THEN
CALL Notice( 'Base_Messaging_Unsent: INVALID_AUTHORISATION' );
ELSE
SELECT *
FROM base_messaging
WHERE message_deleted = 0
AND message_type = $message_type
AND
(
(NOT 0 = message_send_at AND message_send_at < NOW() AND 0 = message_sent_at)
OR
(NOT 0 = message_last_send_at AND message_last_send_at < NOW() AND 0 = message_last_sent_at)
);
END IF;
END
//
DELIMITER ;