NOUVELLE VERSION !!! Des nouvelles classes de partout, et des supers procédures SQL.

This commit is contained in:
Mysaa
2021-06-06 13:03:33 +02:00
parent e59898b0bb
commit 3488323439
59 changed files with 2906 additions and 1403 deletions
+24
View File
@@ -0,0 +1,24 @@
DROP PROCEDURE IF EXISTS GetDiscutInfo;
DELIMITER //
CREATE PROCEDURE GetDiscutInfo
(
IN p_sid TEXT,
IN p_password TEXT,
IN p_did INT,
OUT outputCode INT(11),
OUT o_connected INT(1)
)
MODIFIES SQL DATA
BEGIN
CALL `CheckIdLogin`(p_sid,p_password, outputCode);
IF outputCode = 42 OR outputCode=2005 THEN
SET o_connected = 1;
ELSE
SET o_connected = 0;
END IF;
SET outputCode :=( SELECT CASE WHEN (SELECT CheckInGroup(p_sid,authorizedGroupID)=42 OR p_sid=creatorID FROM discussions WHERE ID=p_did) THEN 42 ELSE 2019 END );
END//
DELIMITER ;
+22
View File
@@ -0,0 +1,22 @@
DROP PROCEDURE IF EXISTS GetDiscutMessages;
DELIMITER //
CREATE PROCEDURE GetDiscutMessages
(
IN p_sid INT,
IN p_password TEXT,
IN p_did INT,
OUT outputCode INT(11)
)
MODIFIES SQL DATA
BEGIN
CALL `CheckIdLogin`(p_sid,p_password, outputCode);
IF outputCode = 42 OR outputCode = 2005 THEN
SET outputCode :=( SELECT CASE WHEN (SELECT CheckInGroup(p_sid,authorizedGroupID)=42 OR p_sid=creatorID FROM discussions WHERE ID=p_did) THEN 42 ELSE 2019 END );
IF outputCode = 42 THEN
INSERT INTO smz SELECT m.ID AS ID,u.ID AS senderID,u.pseudo AS senderPseudo,m.texte AS texte,m.sendTime AS sendTime, p_sid = senderID AS rights FROM messages AS m INNER JOIN membres AS u ON u.ID = m.senderID WHERE m.discussionID = p_did;
END IF;
END IF;
END//
DELIMITER ;
+20
View File
@@ -0,0 +1,20 @@
DROP PROCEDURE IF EXISTS ChangePassword;
DELIMITER //
CREATE PROCEDURE ChangePassword
(
IN p_sid INT,
IN p_password TEXT,
IN p_npassword TEXT,
OUT outputCode INT
)
MODIFIES SQL DATA
BEGIN
CALL `CheckIdLogin`(p_sid,p_password, outputCode);
IF outputCode = 42 THEN
UPDATE membres SET hashedPassword = MD5(p_npassword) WHERE ID = p_sid;
END IF;
END//
DELIMITER ;
+39
View File
@@ -0,0 +1,39 @@
DROP PROCEDURE IF EXISTS CheckIdLogin;
DELIMITER //
CREATE PROCEDURE CheckIdLogin
(
IN p_sid INT,
IN p_password TEXT,
OUT outputCode INT
)
READS SQL DATA
BEGIN
SET outputCode :=(
SELECT
(
CASE
WHEN (
SELECT
COUNT(*)
FROM
membres
WHERE
ID = p_sid
) != 1 THEN 2005
WHEN(
SELECT
COUNT(*)
FROM
membres
WHERE
ID = p_sid AND
hashedPassword = MD5(p_password)
) != 1 THEN 2006
ELSE 42
END
)
);
END//
DELIMITER ;
+66
View File
@@ -0,0 +1,66 @@
DROP FUNCTION IF EXISTS CheckInGroup;
DELIMITER //
CREATE FUNCTION CheckInGroup
(
p_sid INT,
p_gid INT
)
RETURNS INT
READS SQL DATA
BEGIN
SET @outputCode :=(
SELECT
(
CASE
WHEN p_gid = 0 THEN 0
WHEN p_gid = 1 THEN 42
ELSE 100
END
)
);
IF @outputCode = 100 THEN
SET @outputCode :=(
SELECT
(
CASE
WHEN(
SELECT
COUNT(*)
FROM
groupes
WHERE
ID = p_gid
) = 1 THEN 42
ELSE 2012
END
)
);
IF @outputCode = 42 THEN
SET @outputCode :=(
SELECT
(
CASE
WHEN(
SELECT
COUNT(*)
FROM
appartenanceAUnGroupe
INNER JOIN groupes
ON groupes.ID = appartenanceAUnGroupe.groupID
WHERE
groupes.ID = p_gid AND appartenanceAUnGroupe.membreID = p_sid
) >= 1 THEN 42
ELSE 0
END
)
);
END IF;
END IF;
RETURN @outputCode;
END//
DELIMITER ;
+49
View File
@@ -0,0 +1,49 @@
DROP PROCEDURE IF EXISTS CheckLogin;
DELIMITER //
CREATE PROCEDURE CheckLogin
(
IN p_pseudo TEXT,
IN p_password TEXT,
OUT outputCode INT,
OUT accountID INT
)
READS SQL DATA
BEGIN
SET outputCode :=(
SELECT
(
CASE
WHEN (
SELECT
COUNT(*)
FROM
membres
WHERE
pseudo = p_pseudo
) != 1 THEN 2005
WHEN (
SELECT
COUNT(*)
FROM
membres
WHERE
pseudo = p_pseudo AND
hashedPassword = MD5(p_password)
) != 1 THEN 2006
ELSE 42
END
)
);
SET accountID :=(
SELECT
ID
FROM
membres
WHERE
pseudo = p_pseudo AND
hashedPassword = MD5(p_password)
);
END//
DELIMITER ;
+43
View File
@@ -0,0 +1,43 @@
DROP PROCEDURE IF EXISTS CreateDiscusson;
DELIMITER //
CREATE PROCEDURE CreateDiscusson
(
IN p_sid INT,
IN p_password TEXT,
IN p_name TEXT,
OUT outputCode INT
)
MODIFIES SQL DATA
BEGIN
CALL `CheckIdLogin`(p_sid,p_password,outputCode);
IF outputCode = 42 THEN
IF (SELECT COUNT(*) FROM membres WHERE ID = p_sid AND adminLevel >= 2) = 1 THEN
SET outputCode :=(
SELECT
(
CASE
WHEN LENGTH(p_name) > 255 THEN 2014
WHEN CAST(p_name AS BINARY) NOT REGEXP BINARY '^[-a-zA-Z0-9\_ ]+$' THEN 2015
WHEN(
SELECT
COUNT(*)
FROM
discussions
WHERE
name = p_name
) > 0 THEN 2016
ELSE 42
END
)
);
END IF;
ELSE
SET outputCode = 2013;
END IF;
IF outputCode = 42 THEN INSERT INTO discussions(name,creatorID,dateCreation,authorizedGroupId) VALUES (CAST(p_name AS CHAR(255)),p_sid,NOW(),0); END IF;
END//
DELIMITER ;
+46
View File
@@ -0,0 +1,46 @@
DROP PROCEDURE IF EXISTS DeleteMessage;
DELIMITER //
CREATE PROCEDURE DeleteMessage
(
IN p_sid INT,
IN p_password TEXT,
IN p_mid INT,
OUT outputCode INT,
OUT did INT
)
MODIFIES SQL DATA
BEGIN
CALL `CheckIdLogin`(p_sid,p_password, outputCode);
IF outputCode = 42 THEN
SET outputCode :=(
SELECT
(
CASE
WHEN(
SELECT
COUNT(*)
FROM
messages
WHERE
ID = p_mid
) = 1 THEN 2010
ELSE 42
END
)
);
IF outputCode = 42 THEN
SET did :=(SELECT discussionID FROM messages WHERE ID = p_mid);
SET @authorizedGroupID :=(SELECT authorizedGroupID FROM discussions WHERE ID=did);
CALL `CheckInGroup`(p_sid, @authorizedGroupID, outputCode);
IF outputCode = 42 THEN
DELETE FROM messages WHERE ID = p_mid;
END IF;
END IF;
END IF;
END//
DELIMITER ;
@@ -0,0 +1,18 @@
DROP PROCEDURE IF EXISTS GetAuthorizedProjectsForPresentation;
DELIMITER //
CREATE PROCEDURE GetAuthorizedProjectsForPresentation
(
IN p_sid TEXT,
IN p_password TEXT,
OUT outputCode INT(11)
)
MODIFIES SQL DATA
BEGIN
CALL `CheckIdLogin`(p_sid,p_password, outputCode);
IF outputCode = 42 THEN
INSERT INTO projects SELECT p.ID AS projectID, p.name AS projectName, v.ID AS versionID , v.name AS versionName FROM projets AS p LEFT JOIN versions AS v ON p.ID = v.projectID WHERE (p.ownerID = p_sid OR CheckInGroup(p_sid,p.secondaryOwnersGroupID) = 42) AND (v.ID IS NULL OR v.versionAbs = (SELECT MAX(versionAbs) FROM versions WHERE projectID = p.ID));
END IF;
END//
DELIMITER ;
+19
View File
@@ -0,0 +1,19 @@
DROP PROCEDURE IF EXISTS GetPublicProjectsForPresentation;
DELIMITER //
CREATE PROCEDURE GetPublicProjectsForPresentation
(
IN p_sid TEXT,
IN p_password TEXT,
OUT outputCode INT(11)
)
MODIFIES SQL DATA
BEGIN
CALL `CheckIdLogin`(p_sid,p_password, outputCode);
IF outputCode = 42 OR outputCode = 2005 THEN
SET outputCode = 42;
INSERT INTO projects SELECT p.ID AS projectID, p.name AS projectName, v.ID AS versionID , v.name AS versionName FROM projets AS p LEFT JOIN versions AS v ON p.ID = v.projectID WHERE (p.ownerID = 1 OR CheckInGroup(1,p.secondaryOwnersGroupID) = 42 OR CheckInGroup(1,p.authorizedGroupID) = 42) AND (v.ID IS NULL OR v.versionAbs = (SELECT MAX(versionAbs) FROM versions WHERE projectID = p.ID));
END IF;
END//
DELIMITER ;
+21
View File
@@ -0,0 +1,21 @@
DROP PROCEDURE IF EXISTS GetVisibleDiscuts;
DELIMITER //
CREATE PROCEDURE GetVisibleDiscuts
(
IN p_sid TEXT,
IN p_password TEXT,
OUT outputCode INT(11),
OUT canCreate INT(1)
)
MODIFIES SQL DATA
BEGIN
CALL `CheckIdLogin`(p_sid,p_password, outputCode);
IF outputCode = 42 OR outputCode = 2005 THEN
SET outputCode = 42;
SELECT adminLevel > 8 INTO canCreate FROM membres WHERE ID=p_sid;
INSERT INTO discuts SELECT d.ID AS ID, d.name AS Name, m.pseudo AS creatorPseudo FROM discussions AS d LEFT JOIN membres AS m ON d.creatorID = m.ID WHERE CheckInGroup(p_sid,authorizedGroupId) = 42;
END IF;
END//
DELIMITER ;
+24
View File
@@ -0,0 +1,24 @@
DROP PROCEDURE IF EXISTS HeaderInfos;
DELIMITER //
CREATE PROCEDURE HeaderInfos
(
IN p_sid TEXT,
IN p_password TEXT,
OUT outputCode INT(11),
OUT o_connected INT(1),
OUT o_pseudo VARCHAR(255)
)
MODIFIES SQL DATA
BEGIN
CALL `CheckIdLogin`(p_sid,p_password, outputCode);
IF outputCode = 42 THEN
SELECT pseudo INTO o_pseudo FROM membres WHERE ID = p_sid;
SET o_connected = 1;
ELSE
SET outputCode = 42;
SET o_connected = 0;
END IF;
END//
DELIMITER ;
+46
View File
@@ -0,0 +1,46 @@
DROP PROCEDURE IF EXISTS PostMessage;
DELIMITER //
CREATE PROCEDURE PostMessage
(
IN p_sid INT,
IN p_password TEXT,
IN p_did INT,
IN p_text TEXT,
OUT outputCode INT,
OUT mid INT
)
MODIFIES SQL DATA
BEGIN
CALL `CheckIdLogin`(p_sid,p_password, outputCode);
IF outputCode = 42 THEN
SET outputCode :=(
SELECT
(
CASE
WHEN(
SELECT
COUNT(*)
FROM
discussions
WHERE
ID = p_did
) = 1 THEN 2010
ELSE 42
END
)
);
IF outputCode = 42 THEN
SET @authorizedGroupID :=(SELECT authorizedGroupID FROM discussions WHERE ID=p_did);
CALL `CheckInGroup`(p_sid, @authorizedGroupID, outputCode);
IF outputCode = 42 THEN
INSERT INTO messages(texte,senderID,sendTime,discussionID) VALUES (p_text,p_sid,NOW(),p_did);
SET mid :=(SELECT LAST_INSERT_ID());
END IF;
END IF;
END IF;
END//
DELIMITER ;
+30
View File
@@ -0,0 +1,30 @@
DROP PROCEDURE IF EXISTS PresentProject;
DELIMITER //
CREATE PROCEDURE PresentProject
(
IN p_sid INT,
IN p_password TEXT,
IN p_pid INT,
OUT outputCode INT(11),
OUT o_public INT(1),
OUT o_name VARCHAR(255),
OUT o_ownerID INT,
OUT o_ownerPseudo VARCHAR(255)
)
MODIFIES SQL DATA
BEGIN
CALL `CheckIdLogin`(p_sid,p_password, outputCode);
IF outputCode = 42 OR outputCode = 2005 THEN
SET outputCode := (SELECT (CASE WHEN (SELECT CheckInGroup(p_sid,authorizedGroupId) = 42 OR CheckInGroup(p_sid,secondaryOwnersGroupId) = 42 OR p_sid = ownerID FROM projets WHERE ID = p_pid) THEN 42 ELSE 2017 END));
IF outputCode = 42 THEN
SELECT authorizedGroupId = 1 AS public, name INTO o_public, o_name FROM projets WHERE projets.ID = p_pid;
SELECT membres.pseudo, membres.ID INTO o_ownerPseudo, o_ownerID FROM membres INNER JOIN projets ON projets.ownerID = membres.ID WHERE projets.ID = p_pid;
INSERT INTO verzions SELECT languageID AS language, ID, name FROM versions WHERE projectID = p_pid;
INSERT INTO sowners SELECT pseudo FROM membres INNER JOIN projets ON projets.ownerID != membres.ID AND CheckInGroup(membres.ID,projets.secondaryOwnersGroupID) = 42 WHERE projets.ID = p_pid;
END IF;
END IF;
END//
DELIMITER ;
+34
View File
@@ -0,0 +1,34 @@
DROP PROCEDURE IF EXISTS PresentVersion;
DELIMITER //
CREATE PROCEDURE PresentVersion
(
IN p_sid INT,
IN p_password TEXT,
IN p_vid INT,
OUT outputCode INT(11),
OUT o_su INT(1),
OUT o_ssu INT(1),
OUT o_langageID INT,
OUT o_projectName VARCHAR(255),
OUT o_name VARCHAR(255),
OUT o_fileAccessibility INT,
OUT o_projectID INT,
OUT o_tags INT
)
MODIFIES SQL DATA
BEGIN
CALL `CheckIdLogin`(p_sid,p_password, outputCode);
IF outputCode = 42 OR outputCode = 2005 THEN
SET outputCode := (SELECT (CASE WHEN (SELECT CheckInGroup(p_sid,authorizedGroupId) = 42 OR CheckInGroup(p_sid,secondaryOwnersGroupId) = 42 OR p_sid = ownerID FROM projets INNER JOIN versions ON versions.projectID = projets.ID WHERE versions.ID = p_vid) THEN 42 ELSE 2018 END));
IF outputCode = 42 THEN
SELECT CheckInGroup(p_sid,projets.secondaryOwnersGroupId) = 42 OR projets.ownerID = p_sid, projets.ownerID = p_sid, versions.languageID, projets.name,versions.name,versions.fileAccessibility,projets.ID,versions.tags INTO o_su,o_ssu,o_langageID,o_projectName,o_name,o_fileAccessibility,o_projectID,o_tags FROM projets INNER JOIN versions ON versions.projectID = projets.ID WHERE versions.ID = p_vid;
INSERT INTO verzions SELECT languageID AS language, ID, name FROM versions WHERE projectID = o_projectID;
END IF;
END IF;
END//
DELIMITER ;
+33
View File
@@ -0,0 +1,33 @@
DROP PROCEDURE IF EXISTS RegisterPerson;
DELIMITER //
CREATE PROCEDURE RegisterPerson
(
IN p_pseudo TEXT,
IN p_password TEXT,
OUT outputCode INT
)
MODIFIES SQL DATA
BEGIN
SET outputCode :=(
SELECT
(
CASE
WHEN LENGTH(p_pseudo) > 255 THEN 2002
WHEN CAST(p_pseudo AS BINARY) NOT REGEXP BINARY '^[-a-zA-Z0-9\_]+$' THEN 2003
WHEN(
SELECT
COUNT(*)
FROM
membres
WHERE
pseudo = p_pseudo
) > 0 THEN 2004
ELSE 42
END
)
);
IF outputCode = 42 THEN INSERT INTO membres(pseudo,hashedPassword,dateCreation) VALUES (CAST(p_pseudo AS CHAR(255)),MD5(p_password),NOW()); END IF;
END//
DELIMITER ;