NOUVELLE VERSION !!! Des nouvelles classes de partout, et des supers procédures SQL.
This commit is contained in:
@@ -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 ;
|
||||
@@ -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 ;
|
||||
@@ -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 ;
|
||||
|
||||
@@ -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 ;
|
||||
|
||||
@@ -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 ;
|
||||
|
||||
@@ -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 ;
|
||||
|
||||
@@ -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 ;
|
||||
|
||||
@@ -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 ;
|
||||
@@ -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 ;
|
||||
@@ -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 ;
|
||||
@@ -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 ;
|
||||
@@ -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 ;
|
||||
|
||||
@@ -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 ;
|
||||
@@ -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 ;
|
||||
@@ -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 ;
|
||||
|
||||
Reference in New Issue
Block a user