en | fr  | Contact  | Print  | Share

FrameBeurk File

Fmbk/Module/Rhum/_sql/moduleRhum.sql

# FrameBeurk V0.61 Copyright ToolOscope 2015. Licence CeCILL-C.
# initialisation du module Rhum
#

#
# Structure de la table `Rhum_Section`
# Section : Etat V(actif)  F(fermée) C(achée) 

CREATE TABLE IF NOT EXISTS Rhum_Section (
  IdSection INT unsigned NOT NULL,
  Section varchar(32) collate utf8_unicode_ci NOT NULL default '',
  NoOrdre smallint(5) unsigned NOT NULL,
  IdGroupe INT unsigned NOT NULL default '0',
  NbrSujets INT unsigned NOT NULL default '0',
  NbrSujetsArchives INT unsigned NOT NULL default '0',
  TsMajElements bigint(20) unsigned NOT NULL default '0',        -- dernière contribution
  Donnees text collate utf8_unicode_ci NOT NULL,
  Import varchar(128) COLLATE utf8_unicode_ci NOT NULL,
  IdEtat INT unsigned NOT NULL,
  NoVersion INT unsigned NOT NULL,
  PRIMARY KEY (IdSection),
  UNIQUE KEY (Section),
  KEY NoOrdre (NoOrdre, IdEtat, IdSection),
  FULLTEXT KEY Donnees (Section,Donnees)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
# --------------------------------------------------------

#
# Structure de la table `Rhum_Sujet`
# Etat V(ouvert) C(censuré) F(fermé) R(archivé)

CREATE TABLE IF NOT EXISTS Rhum_Sujet (
  IdSujet INT unsigned NOT NULL,
  Sujet varchar(32) collate utf8_unicode_ci NOT NULL default '',
  IdSection INT unsigned NOT NULL default '0',
  IdSujetRef INT unsigned NOT NULL default '0',                    -- si le sujet est une partie d'un sujet multi-part, IdSujetRef est le point d'entrée (= la 1ère partie)
  NoOrdre smallint(5) unsigned NOT NULL default '0',            -- position du sujet si partie d'un multi-part
  NbrCommentaires INT unsigned NOT NULL default '0',
  TsMajElements bigint(20) unsigned NOT NULL default '0',        -- dernière contribution
  Alerte  char(1) collate utf8_unicode_ci NOT NULL default '',
  NbrVisites INT unsigned NOT NULL default '0',
  Donnees text collate utf8_unicode_ci NOT NULL,
  Import varchar(128) COLLATE utf8_unicode_ci NOT NULL,
  IdEtat INT unsigned NOT NULL,
  NoVersion INT unsigned NOT NULL,
  PRIMARY KEY (IdSujet),
  UNIQUE KEY (IdSection, TsMajElements, IdSujetRef, IdEtat, IdSujet),
  UNIQUE KEY (IdSection, IdSujet),
  UNIQUE KEY (IdSujetRef, NoOrdre, IdSujet),
  FULLTEXT KEY (Sujet,Donnees)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
# --------------------------------------------------------

#
# Structure de la table `Rhum_Commentaire`
# Etat T(à approuver) V(visible) C(censuré) 

CREATE TABLE IF NOT EXISTS Rhum_Commentaire (
  IdCommentaire INT unsigned NOT NULL,
  Commentaire varchar(80) collate utf8_unicode_ci NOT NULL default '',
  IdElementDe INT unsigned NOT NULL default '0',
  IdCommentaireRef INT unsigned NOT NULL default '0',    -- si le commentaire est une réponse à un autre commentaire, IdCommentaireRef est la référence de ce commentaire
  Alerte  char(1) collate utf8_unicode_ci NOT NULL default '',
  NbrVotes INT unsigned NOT NULL default '0',
  Note int(11) NOT NULL default '0',
  Donnees text collate utf8_unicode_ci NOT NULL,
  Import varchar(128) COLLATE utf8_unicode_ci NOT NULL,
  IdEtat INT unsigned NOT NULL,
  NoVersion INT unsigned NOT NULL,
  PRIMARY KEY (IdCommentaire),
  UNIQUE KEY (IdElementDe, IdCommentaire),
  UNIQUE KEY (IdCommentaireRef, IdCommentaire),
  FULLTEXT KEY (Commentaire, Donnees)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

# --------------------------------------------------------
#

# déclaration du module 'Rhum'
CALL Beurk_creeTerminalEtLien ('Rhum', 'estDeType', 'Module', @idTermModuleRhum);


# Création des types d objets

CALL Beurk_creeTerminalEtLien ('Forum', 'estDeType', 'Entite', @idTermEntiteForum);
CALL Beurk_creeTerminalEtLien ('Section', 'estDeType', 'Entite', @idTermEntiteSection);
CALL Beurk_creeTerminalEtLien ('Sujet', 'estDeType', 'Entite', @idTermEntiteSujet);
CALL Beurk_creeTerminalEtLien ('Commentaire', 'estDeType', 'Entite', @idTermEntiteCommentaire);
CALL Beurk_creeTerminalEtLien ('News', 'estDeType', 'Entite', @idTermEntiteNews);

CALL Beurk_creeLienTerminal (@idTermEntiteForum, 'estDefiniPar', 'Rhum');
CALL Beurk_creeLienTerminal (@idTermEntiteSection, 'estDefiniPar', 'Rhum');
CALL Beurk_creeLienTerminal (@idTermEntiteSujet, 'estDefiniPar', 'Rhum');
CALL Beurk_creeLienTerminal (@idTermEntiteCommentaire, 'estDefiniPar', 'Rhum');
CALL Beurk_creeLienTerminal (@idTermEntiteNews, 'estDefiniPar', 'Rhum');

# Création (si besoin) des états

CALL Beurk_creeTerminalEtLien ('V', 'estDeType', 'Etat', @idTermEtatV);
CALL Beurk_creeTerminalEtLien ('R', 'estDeType', 'Etat', @idTermEtatR);
CALL Beurk_creeTerminalEtLien ('C', 'estDeType', 'Etat', @idTermEtatC);
CALL Beurk_creeTerminalEtLien ('F', 'estDeType', 'Etat', @idTermEtatF);
CALL Beurk_creeTerminalEtLien ('T', 'estDeType', 'Etat', @idTermEtatT);

# Création des codes Action / Vue
# des erreurs à l insert peuvent intervenir quand les codes sont déjà déclarés par un autre module

CALL Beurk_creeTerminalEtLien ('installe', 'estDeType', 'Action', @idTermActionInstalle);
CALL Beurk_creeTerminalEtLien ('detail', 'estDeType', 'Action', @idTermActionDetail);
CALL Beurk_creeTerminalEtLien ('alerte', 'estDeType', 'Action', @idTermActionAlerte);
CALL Beurk_creeTerminalEtLien ('censure', 'estDeType', 'Action', @idTermActionCensure);
CALL Beurk_creeTerminalEtLien ('recherche', 'estDeType', 'Action', @idTermActionRecherche);
CALL Beurk_creeTerminalEtLien ('ferme', 'estDeType', 'Action', @idTermActionFerme);
CALL Beurk_creeTerminalEtLien ('modifie', 'estDeType', 'Action', @idTermActionModifie);
CALL Beurk_creeTerminalEtLien ('descend', 'estDeType', 'Action', @idTermActionDescend);
CALL Beurk_creeTerminalEtLien ('monte', 'estDeType', 'Action', @idTermActionMonte);
CALL Beurk_creeTerminalEtLien ('menu', 'estDeType', 'Action', @idTermActionMenu);
CALL Beurk_creeTerminalEtLien ('reactive', 'estDeType', 'Action', @idTermActionReactive);
CALL Beurk_creeTerminalEtLien ('rehabilite', 'estDeType', 'Action', @idTermActionRehabilite);
CALL Beurk_creeTerminalEtLien ('active', 'estDeType', 'Action', @idTermActionActive);
CALL Beurk_creeTerminalEtLien ('vote', 'estDeType', 'Action', @idTermActionVote);
CALL Beurk_creeTerminalEtLien ('continue', 'estDeType', 'Action', @idTermActionContinue);
CALL Beurk_creeTerminalEtLien ('cree', 'estDeType', 'Action', @idTermActionCree);
CALL Beurk_creeTerminalEtLien ('avis', 'estDeType', 'Action', @idTermActionAvis);
CALL Beurk_creeTerminalEtLien ('suis', 'estDeType', 'Action', @idTermActionSuis);
CALL Beurk_creeTerminalEtLien ('previsualise', 'estDeType', 'Action', @idTermActionPrevisualise);
CALL Beurk_creeTerminalEtLien ('archive', 'estDeType', 'Action', @idTermActionArchive);
CALL Beurk_creeTerminalEtLien ('repondre', 'estDeType', 'Action', @idTermActionRepondre);
CALL Beurk_creeTerminalEtLien ('deplace', 'estDeType', 'Action', @idTermActionDeplace);
CALL Beurk_creeTerminalEtLien ('cite', 'estDeType', 'Action', @idTermActionCite);


# TimeStamp au Format Beurk pour les insertions
SET @TS = NOW();
SET @BeurkTS = CONCAT(substr(@TS, 1, 4), substr(@TS,6,2), substr(@TS,9,2), substr(@TS, 12, 2), substr(@TS,15,2), substr(@TS,18,2), '000');

SET @IdNoeudUserAdmin = (SELECT IdUser FROM Uzers_User WHERE User = 'admin');
SET @IdNoeudGroupeALL = (SELECT IdGroupe FROM Uzers_Groupe WHERE Groupe = 'ALL');

#
# rattachement du Forum au Site
CALL Beurk_creeLienTerminal (@idTermEntiteForum, 'estElementDe', 'Site');

#
# Insertion discussion fictive pour les news
INSERT IGNORE INTO `Rhum_Sujet` (`IdSujet`, `Sujet`, `IdSection`, `NbrCommentaires`, `Alerte`, `NbrVisites`, `Donnees`, `Import`, `IdEtat`, `NoVersion`) 
    VALUES (@idTermEntiteNews, 'News', '0', '0', '', '0', 'Ce sujet contient les commentaires de l''entité News', '', @idTermEtatV, 1);
CALL Beurk_creeHistorique (@idTermEntiteNews, 1, @idTermEtatV, @IdNoeudUserAdmin, '', @idTermActionInstalle, @idTermModuleRhum, @BeurkTS);


# Création de la permission par défaut pour le forum
CALL Beurk_creeIdSiPasTrouve (1, @IdNoeudPermissionForum, "SELECT IdPermission FROM Uzers_Permission WHERE `Permission` = 'Forum pour tous'");
INSERT IGNORE INTO `Uzers_Permission` (`IdPermission`, `Permission`, `NbrGroupes`, `Donnees`, `IdEtat`, `NoVersion`)
    VALUES (@IdNoeudPermissionForum, 'Forum pour tous', 1, 'Toutes les sections.', @idTermEtatV, 1);
CALL Beurk_creeLienTerminal (@IdNoeudPermissionForum, 'estDeType', 'Permission');
CALL Beurk_creeLienTerminal (@IdNoeudPermissionForum, 'estElementDe', 'Site');
CALL Beurk_creeHistorique (@IdNoeudPermissionForum, 1, @idTermEtatV, @IdNoeudUserAdmin, '', @idTermActionInstalle, @idTermModuleRhum, @BeurkTS);

# Association de la permission au groupe 'ALL'
CALL Beurk_creeIdSiPasTrouve (1, @IdNoeudForumALL, "SELECT IdGroupePermission FROM Uzers_GroupePermission WHERE `IdPermission` = @IdNoeudPermissionForum AND `IdGroupe` = @IdNoeudGroupeALL");
INSERT IGNORE INTO `Uzers_GroupePermission` (`IdGroupePermission`, `IdGroupe`, `IdPermission`, `IdEtat`, `NoVersion`)
    VALUES (@IdNoeudForumALL, @IdNoeudGroupeALL, @IdNoeudPermissionForum, @idTermEtatV, 1);
CALL Beurk_creeLienTerminal (@IdNoeudForumALL, 'estDeType', 'GroupePermission');
INSERT IGNORE INTO Beurk_Lien (IdNoeud, IdRelation, IdLie) VALUES (@IdNoeudGroupeALL, @IdNoeudForumALL, @IdNoeudPermissionForum);
CALL Beurk_creeLienTerminal (@IdNoeudGroupeALL, @IdNoeudForumALL, @IdNoeudPermissionForum);
CALL Beurk_creeHistorique (@IdNoeudForumALL, 1, @idTermEtatV, @IdNoeudUserAdmin, '', @idTermActionInstalle, @idTermModuleRhum, @BeurkTS);

# Actions de la permission
CALL Beurk_creeIdSiPasTrouve (1, @IdNoeudPermission1, "SELECT `IdPermissionAction` FROM Uzers_PermissionAction WHERE `IdPermission` = @IdNoeudPermissionForum AND `IdAction` = @idTermActionDetail AND `IdEntite` = @idTermEntiteForum");
CALL Beurk_creeIdSiPasTrouve (1, @IdNoeudPermission2, "SELECT `IdPermissionAction` FROM Uzers_PermissionAction WHERE `IdPermission` = @IdNoeudPermissionForum AND `IdAction` = @idTermActionDetail AND `IdEntite` = @idTermEntiteSection");
CALL Beurk_creeIdSiPasTrouve (1, @IdNoeudPermission3, "SELECT `IdPermissionAction` FROM Uzers_PermissionAction WHERE `IdPermission` = @IdNoeudPermissionForum AND `IdAction` = @idTermActionDetail AND `IdEntite` = @idTermEntiteSujet");
CALL Beurk_creeIdSiPasTrouve (1, @IdNoeudPermission4, "SELECT `IdPermissionAction` FROM Uzers_PermissionAction WHERE `IdPermission` = @IdNoeudPermissionForum AND `IdAction` = @idTermActionDetail AND `IdEntite` = @idTermEntiteCommentaire");
CALL Beurk_creeIdSiPasTrouve (1, @IdNoeudPermission5, "SELECT `IdPermissionAction` FROM Uzers_PermissionAction WHERE `IdPermission` = @IdNoeudPermissionForum AND `IdAction` = @idTermActionDetail AND `IdEntite` = @idTermEntiteNews");
CALL Beurk_creeIdSiPasTrouve (1, @IdNoeudPermission6, "SELECT `IdPermissionAction` FROM Uzers_PermissionAction WHERE `IdPermission` = @IdNoeudPermissionForum AND `IdAction` = @idTermActionMenu AND `IdEntite` = @idTermEntiteForum");
CALL Beurk_creeIdSiPasTrouve (1, @IdNoeudPermission7, "SELECT `IdPermissionAction` FROM Uzers_PermissionAction WHERE `IdPermission` = @IdNoeudPermissionForum AND `IdAction` = @idTermActionMenu AND `IdEntite` = @idTermEntiteSection");
CALL Beurk_creeIdSiPasTrouve (1, @IdNoeudPermission8, "SELECT `IdPermissionAction` FROM Uzers_PermissionAction WHERE `IdPermission` = @IdNoeudPermissionForum AND `IdAction` = @idTermActionRecherche AND `IdEntite` = @idTermEntiteSection");
CALL Beurk_creeIdSiPasTrouve (1, @IdNoeudPermission9, "SELECT `IdPermissionAction` FROM Uzers_PermissionAction WHERE `IdPermission` = @IdNoeudPermissionForum AND `IdAction` = @idTermActionRecherche AND `IdEntite` = @idTermEntiteSujet");
CALL Beurk_creeIdSiPasTrouve (1, @IdNoeudPermission10, "SELECT `IdPermissionAction` FROM Uzers_PermissionAction WHERE `IdPermission` = @IdNoeudPermissionForum AND `IdAction` = @idTermActionRecherche AND `IdEntite` = @idTermEntiteCommentaire");

INSERT IGNORE INTO `Uzers_PermissionAction` (`IdPermissionAction`, `IdPermission`, `IdAction`, `IdEntite`)
    VALUES
        (@IdNoeudPermission1, @IdNoeudPermissionForum, @idTermActionDetail, @idTermEntiteForum),
        (@IdNoeudPermission2, @IdNoeudPermissionForum, @idTermActionDetail, @idTermEntiteSection),
        (@IdNoeudPermission3, @IdNoeudPermissionForum, @idTermActionDetail, @idTermEntiteSujet),
        (@IdNoeudPermission4, @IdNoeudPermissionForum, @idTermActionDetail, @idTermEntiteCommentaire),
        (@IdNoeudPermission5, @IdNoeudPermissionForum, @idTermActionDetail, @idTermEntiteNews),
        (@IdNoeudPermission6, @IdNoeudPermissionForum, @idTermActionMenu, @idTermEntiteForum),
        (@IdNoeudPermission7, @IdNoeudPermissionForum, @idTermActionMenu, @idTermEntiteSection),
        (@IdNoeudPermission8, @IdNoeudPermissionForum, @idTermActionRecherche, @idTermEntiteSection),
        (@IdNoeudPermission9, @IdNoeudPermissionForum, @idTermActionRecherche, @idTermEntiteSujet),
        (@IdNoeudPermission10, @IdNoeudPermissionForum, @idTermActionRecherche, @idTermEntiteCommentaire);

CALL Beurk_creeLienTerminal (@IdNoeudPermission1, 'estDeType', 'PermissionAction');
CALL Beurk_creeLienTerminal (@IdNoeudPermission2, 'estDeType', 'PermissionAction');
CALL Beurk_creeLienTerminal (@IdNoeudPermission3, 'estDeType', 'PermissionAction');
CALL Beurk_creeLienTerminal (@IdNoeudPermission4, 'estDeType', 'PermissionAction');
CALL Beurk_creeLienTerminal (@IdNoeudPermission5, 'estDeType', 'PermissionAction');
CALL Beurk_creeLienTerminal (@IdNoeudPermission6, 'estDeType', 'PermissionAction');
CALL Beurk_creeLienTerminal (@IdNoeudPermission7, 'estDeType', 'PermissionAction');
CALL Beurk_creeLienTerminal (@IdNoeudPermission8, 'estDeType', 'PermissionAction');
CALL Beurk_creeLienTerminal (@IdNoeudPermission9, 'estDeType', 'PermissionAction');
CALL Beurk_creeLienTerminal (@IdNoeudPermission10, 'estDeType', 'PermissionAction');

CALL Beurk_creeLienNoeud (@IdNoeudPermission1, 'estElementDe', @IdNoeudPermissionForum);
CALL Beurk_creeLienNoeud (@IdNoeudPermission2, 'estElementDe', @IdNoeudPermissionForum);
CALL Beurk_creeLienNoeud (@IdNoeudPermission3, 'estElementDe', @IdNoeudPermissionForum);
CALL Beurk_creeLienNoeud (@IdNoeudPermission4, 'estElementDe', @IdNoeudPermissionForum);
CALL Beurk_creeLienNoeud (@IdNoeudPermission5, 'estElementDe', @IdNoeudPermissionForum);
CALL Beurk_creeLienNoeud (@IdNoeudPermission6, 'estElementDe', @IdNoeudPermissionForum);
CALL Beurk_creeLienNoeud (@IdNoeudPermission7, 'estElementDe', @IdNoeudPermissionForum);
CALL Beurk_creeLienNoeud (@IdNoeudPermission8, 'estElementDe', @IdNoeudPermissionForum);
CALL Beurk_creeLienNoeud (@IdNoeudPermission9, 'estElementDe', @IdNoeudPermissionForum);
CALL Beurk_creeLienNoeud (@IdNoeudPermission10, 'estElementDe', @IdNoeudPermissionForum);

CALL Beurk_creeHistorique (@IdNoeudPermission1, 1, @idTermEtatV, @IdNoeudUserAdmin, '', @idTermActionInstalle, @idTermModuleRhum, @BeurkTS);
CALL Beurk_creeHistorique (@IdNoeudPermission2, 1, @idTermEtatV, @IdNoeudUserAdmin, '', @idTermActionInstalle, @idTermModuleRhum, @BeurkTS);
CALL Beurk_creeHistorique (@IdNoeudPermission3, 1, @idTermEtatV, @IdNoeudUserAdmin, '', @idTermActionInstalle, @idTermModuleRhum, @BeurkTS);
CALL Beurk_creeHistorique (@IdNoeudPermission4, 1, @idTermEtatV, @IdNoeudUserAdmin, '', @idTermActionInstalle, @idTermModuleRhum, @BeurkTS);
CALL Beurk_creeHistorique (@IdNoeudPermission5, 1, @idTermEtatV, @IdNoeudUserAdmin, '', @idTermActionInstalle, @idTermModuleRhum, @BeurkTS);
CALL Beurk_creeHistorique (@IdNoeudPermission6, 1, @idTermEtatV, @IdNoeudUserAdmin, '', @idTermActionInstalle, @idTermModuleRhum, @BeurkTS);
CALL Beurk_creeHistorique (@IdNoeudPermission7, 1, @idTermEtatV, @IdNoeudUserAdmin, '', @idTermActionInstalle, @idTermModuleRhum, @BeurkTS);
CALL Beurk_creeHistorique (@IdNoeudPermission8, 1, @idTermEtatV, @IdNoeudUserAdmin, '', @idTermActionInstalle, @idTermModuleRhum, @BeurkTS);
CALL Beurk_creeHistorique (@IdNoeudPermission9, 1, @idTermEtatV, @IdNoeudUserAdmin, '', @idTermActionInstalle, @idTermModuleRhum, @BeurkTS);
CALL Beurk_creeHistorique (@IdNoeudPermission10, 1, @idTermEtatV, @IdNoeudUserAdmin, '', @idTermActionInstalle, @idTermModuleRhum, @BeurkTS);


# Périmètre de la permission

CALL Beurk_creeIdSiPasTrouve (1, @IdNoeudPermission11, "SELECT `IdPermissionPerimetre` FROM Uzers_PermissionPerimetre WHERE `IdPermission` = @IdNoeudPermissionForum AND `IdEntite` = @idTermEntiteForum");
CALL Beurk_creeIdSiPasTrouve (1, @IdNoeudPermission12, "SELECT `IdPermissionPerimetre` FROM Uzers_PermissionPerimetre WHERE `IdPermission` = @IdNoeudPermissionForum AND `IdEntite` = @idTermEntiteSection");
CALL Beurk_creeIdSiPasTrouve (1, @IdNoeudPermission13, "SELECT `IdPermissionPerimetre` FROM Uzers_PermissionPerimetre WHERE `IdPermission` = @IdNoeudPermissionForum AND `IdEntite` = @idTermEntiteSujet");

INSERT IGNORE INTO `Uzers_PermissionPerimetre` (`IdPermissionPerimetre`, `IdPermission`, `IdEntite`, `PermisOuInterdit`)
    VALUES
        (@IdNoeudPermission11, @IdNoeudPermissionForum, @idTermEntiteForum, 0),
        (@IdNoeudPermission12, @IdNoeudPermissionForum, @idTermEntiteSection, 0),
        (@IdNoeudPermission13, @IdNoeudPermissionForum, @idTermEntiteSujet, 0);

CALL Beurk_creeLienTerminal (@IdNoeudPermission11, 'estDeType', 'PermissionPerimetre');
CALL Beurk_creeLienTerminal (@IdNoeudPermission12, 'estDeType', 'PermissionPerimetre');
CALL Beurk_creeLienTerminal (@IdNoeudPermission13, 'estDeType', 'PermissionPerimetre');

CALL Beurk_creeLienNoeud (@IdNoeudPermission11, 'estElementDe', @IdNoeudPermissionForum);
CALL Beurk_creeLienNoeud (@IdNoeudPermission12, 'estElementDe', @IdNoeudPermissionForum);
CALL Beurk_creeLienNoeud (@IdNoeudPermission13, 'estElementDe', @IdNoeudPermissionForum);

CALL Beurk_creeHistorique (@IdNoeudPermission11, 1, @idTermEtatV, @IdNoeudUserAdmin, '', @idTermActionInstalle, @idTermModuleRhum, @BeurkTS);
CALL Beurk_creeHistorique (@IdNoeudPermission12, 1, @idTermEtatV, @IdNoeudUserAdmin, '', @idTermActionInstalle, @idTermModuleRhum, @BeurkTS);
CALL Beurk_creeHistorique (@IdNoeudPermission13, 1, @idTermEtatV, @IdNoeudUserAdmin, '', @idTermActionInstalle, @idTermModuleRhum, @BeurkTS);


© 2010-2015 by ToolOscope SASU. © 2016-2018 by Arnaud De Rette. All rights reserved