Groups

Groups internal procedures
DROP   PROCEDURE Base_Groups_Create;
DELIMITER //
CREATE PROCEDURE Base_Groups_Create
(
    $Sid               TEXT,
    $group_name        TEXT,
    $group_code        TEXT
)
SQL SECURITY INVOKER
COMMENT 'EXPORTABLE'
BEGIN

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

    IF @@read_only THEN

        CALL Error( 'READ_ONLY' );

    ELSEIF NOT @USER THEN

        CALL Notice( 'Base_Groups_Create: INVALID_AUTHORISATION' );

    ELSE BEGIN

        DECLARE $GROUP_ID  INT  DEFAULT 0;

        CALL spgen_base_groups_replace
        (
            @USER,
            $GROUP_ID,
            $group_name,
            $group_code
        );

    END; END IF;

END
//
DELIMITER ;
Groups members internal
DROP   PROCEDURE Base_Groups_Members_Add;
DELIMITER //
CREATE PROCEDURE Base_Groups_Members_Add
(
    $Sid               CHAR(64),
    $GROUP_ID          INT,
    $USER              INT,
    $group_admin       BOOL
)
SQL SECURITY INVOKER
BEGIN

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

    IF @@read_only THEN

        CALL Error( 'READ_ONLY' );

    ELSEIF NOT @USER THEN

        CALL Notice( 'Base_Groups_Members_Add: INVALID_AUTHORISATION' );

    ELSEIF "ADMIN" != @idtype AND NOT EXISTS
    (
        SELECT *
        FROM   base_groups
        WHERE  GROUP_ID    = $GROUP_ID
        AND    GROUP_OWNER = @USER
    )
    THEN

        CALL Notice( 'Base_Groups_Members_Add: INVALID_PARAMETERS' );

    ELSE BEGIN

        DECLARE $GROUP_MEMBER_ID  INT  DEFAULT 0;

        CALL spgen_base_groups_members_replace
        (
            $USER,
            $GROUP_ID,
            $GROUP_MEMBER_ID,
            $group_admin
        );

    END; END IF;

END
//
DELIMITER ;