Files

Files exported Procedures

Base_Files_Retrieve_By_Token

DROP   PROCEDURE Base_Files_Retrieve_By_Token;
DELIMITER //
CREATE PROCEDURE Base_Files_Retrieve_By_Token
(
    $Sid                             TEXT,
    $token                           TEXT
)
SQL SECURITY INVOKER
COMMENT 'EXPORTABLE'
BEGIN

    IF "" = TRIM( $token ) THEN

        CALL Warning( 'Base_Files_Retrieve_By_Token: INVALID_TOKEN' );

    ELSE

        SELECT   *
        FROM     base_files
        WHERE    token = $token
        ORDER BY version DESC
        LIMIT    1;

    END IF;

END
//
DELIMITER ;
Files internal procedures

Base_Files_Replace

DROP   PROCEDURE Base_Files_Replace;
DELIMITER //
CREATE PROCEDURE Base_Files_Replace
(
  $Sid                             CHAR(64),
  $FILE                             INT(11),
  $USER                             INT(11),
  $kind                            CHAR(30),
  $original_filename               CHAR(255),
  $filename                        CHAR(255),
  $filetype                        CHAR(99),
  $filesize                        CHAR(45),
  $fileextension                   CHAR(10),
  $base64                      LONGBLOB
)
SQL SECURITY INVOKER
BEGIN

    DECLARE $FILE  INT   DEFAULT  0;
    DECLARE $salt  TEXT  DEFAULT '';
    DECLARE $token TEXT  DEFAULT '';

    CALL _Base_Users_Authorise_Sessionid( $Sid, @email, @USER, @idtype );

    IF @@read_only THEN

        CALL Error( 'READ_ONLY' );

    ELSEIF NOT( $USER = @USER OR "ADMIN" = @idtype OR IsLocalCaller() ) THEN

        CALL Notice( 'Base_Files_Replace: INVALID_AUTHORISATION' );

    ELSE

        SET $token = GenerateSalt();

        #
        #   Ensure unique token
        #

        WHILE EXISTS( SELECT * FROM base_files WHERE token=$token ) DO
            SET $token = GenerateSalt();
        END WHILE;

        SET $base64 = REPLACE( $base64, ' ', '+' );

        REPLACE INTO base_files
        (  FILE,  USER,  version,  kind,  original_filename,  filename,  filetype,  filesize,  fileextension,  salt,  token,  base64 )
        VALUES
        ( $FILE, $USER,    NOW(), $kind, $original_filename, $filename, $filetype, $filesize, $fileextension,     0, $token, $base64 );

        IF NOT $FILE THEN
            SELECT LAST_INSERT_ID() INTO $FILE;
        END IF;

        SELECT $FILE AS FILE;

    END IF;

END
//
DELIMITER ;

Files_Retrieve_Info_By_Kind

DROP   PROCEDURE Base_Files_Retrieve_Info_By_Kind;
DELIMITER //
CREATE PROCEDURE Base_Files_Retrieve_Info_By_Kind
(
  $Sid                             CHAR(64),
  $USER                             INT(11),
  $kind                            CHAR(30)
)
SQL SECURITY INVOKER
BEGIN

    CALL _Base_Users_Authorise_Sessionid( $Sid, @email, @USER, @idtype );

    IF NOT( $USER = @USER OR "ADMIN" = @idtype ) THEN

        CALL Notice( 'Base_Files_Retrieve_Info_By_Kind; INVALID_AUTHORISATION' );

    ELSE

        SELECT   *
        FROM     view_files
        WHERE    USER = $USER
        AND      kind = $kind
        ORDER BY version DESC;

    END IF;

END
//
DELIMITER ;

Base_Files_Retrieve

DROP   PROCEDURE Base_Files_Retrieve;
DELIMITER //
CREATE PROCEDURE Base_Files_Retrieve
(
  $Sid                             CHAR(64),
  $FILE                             INT(11)
)
SQL SECURITY INVOKER
BEGIN

    CALL _Base_Users_Authorise_Sessionid( $Sid, @email, @USER, @idtype );

    IF NOT( $USER = @USER OR "ADMIN" = @idtype ) THEN

        CALL Notice( 'Base_Files_Retrieve; INVALID_AUTHORISATION' );

    ELSE

        SELECT   *
        FROM     base_files
        WHERE    USER = @USER
        AND      FILE = $FILE
        ORDER BY version DESC
        LIMIT    1;

    END IF;

END
//
DELIMITER ;