Projects
Projects exported procedures
DROP PROCEDURE Base_Projects;
DELIMITER //
CREATE PROCEDURE Base_Projects
(
$Sid TEXT,
$PROJECT_ID INT,
$project_guid TEXT,
$order TEXT,
$limit INT,
$offset INT
)
SQL SECURITY DEFINER
COMMENT 'EXPORT'
BEGIN
IF NOT $PROJECT_ID AND NOT "" = TRIM( $project_guid ) THEN
SELECT PROJECT_ID
INTO $PROJECT_ID
FROM base_projects
WHERE project_guid = $project_guid;
END IF;
CALL Base_Users_Authorise_Sessionid( $Sid, @email, @USER, @idtype );
IF NOT @USER THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'INVALID_AUTHORISATION IN Base_Projects';
ELSE
SELECT *
FROM base_projects
LEFT JOIN base_organisations USING (ORG_ID)
WHERE PROJECT_ID IN
(
SELECT PROJECT_ID FROM base_projects_users
WHERE USER = @USER
AND (0 = $PROJECT_ID OR PROJECT_ID=$PROJECT_ID)
AND project_roles LIKE '%QUERY%'
);
END IF;
END
//
DELIMITER ;
DROP PROCEDURE Base_Projects_Replace;
DELIMITER //
CREATE PROCEDURE Base_Projects_Replace
(
$Sid TEXT,
$ORG_ID INT,
$GROUP_ID INT,
$PROJECT_ID INT,
$project_guid TEXT,
$project_name TEXT,
$project_code TEXT
)
SQL SECURITY DEFINER
COMMENT 'EXPORT'
BEGIN
CALL Base_Users_Authorise_Sessionid( $Sid, @email, @USER, @idtype );
IF NOT $PROJECT_ID AND NOT "" = $project_guid THEN
SELECT PROJECT_ID INTO $PROJECT_ID
FROM base_projects
WHERE project_guid = $project_guid;
END IF;
IF @@read_only THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'READ_ONLY';
ELSEIF NOT ( @idtype LIKE '%USER%' OR @idtype LIKE '%ADMIN%' ) THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'INVALID_AUTHORISATION IN Base_Projects_Replace';
ELSEIF $ORG_ID AND NOT EXISTS
(
SELECT *
FROM base_organisations_users
LEFT JOIN base_organisations USING (ORG_ID)
WHERE org_user_deleted = 0
AND org_deleted = 0
AND ORG_ID = $ORG_ID
AND USER = @USER
AND org_user_role LIKE '%REPLACE%'
)
THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'INVALID_PARAMETERS IN Base_Projects_Replace';
ELSEIF $GROUP_ID AND NOT EXISTS
(
SELECT *
FROM base_groups
LEFT JOIN base_groups_members USING (GROUP_ID)
WHERE
(
USER = @USER OR GROUP_OWNER = @USER
)
)
THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'INVALID_PARAMETERS IN Base_Projects_Replace';
ELSE
IF NOT $PROJECT_ID THEN
REPLACE INTO base_projects
( ORG_ID, GROUP_ID, PROJECT_ID )
VALUES
( $ORG_ID, $GROUP_ID, $PROJECT_ID );
SET $PROJECT_ID = LAST_INSERT_ID();
REPLACE INTO base_projects_users
( USER, ORG_ID, GROUP_ID, PROJECT_ID, project_roles )
VALUES
( @USER, $ORG_ID, $GROUP_ID, $PROJECT_ID, 'DELETE.INSERT.REPLACE.SAVE.SELECT.UPDATE.OWNER' );
END IF;
UPDATE base_projects
SET
project_name = $project_name,
project_code = $project_code
WHERE PROJECT_ID = $PROJECT_ID
AND @USER IN
(
SELECT USER FROM base_projects_users WHERE PROJECT_ID = $PROJECT_ID AND project_roles LIKE '%SAVE%'
);
DO LAST_INSERT_ID( $PROJECT_ID );
END IF;
END
//
DELIMITER ;
DROP PROCEDURE Selects_Base_Organisations;
DELIMITER //
CREATE PROCEDURE Selects_Base_Organisations
(
$Sid TEXT,
$id TEXT,
$value TEXT,
$filter TEXT
)
SQL SECURITY DEFINER
COMMENT 'EXPORT'
BEGIN
CALL Base_Users_Authorise_Sessionid( $Sid, @email, @USER, @idtype );
IF NOT @USER THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'INVALID_AUTHORISATION IN Selects_Base_Organisations';
ELSE
SELECT
ORG_ID AS name,
org_name AS text,
$id AS id,
$value AS value
FROM base_organisations
LEFT JOIN base_organisations_users USING (ORG_ID)
WHERE USER = @USER
AND org_user_role LIKE '%query%';
END IF;
END
//
DELIMITER ;
Projects internal procedures