bcom/executor.php
Mysaa 38ec48c9fc Maintenant, tout dans le executor.php. Fin de tempPreMega.
Ajout d'un super simulateur de tours de Monoï dans la page 404.
2021-06-06 12:48:11 +02:00

183 lines
9.1 KiB
PHP

<?php
session_start ();
include_once 'clazz/Zincluder.php';
$me = Membre::me();
/*
TODO add $_GET['p'] => should return on $_SESSION ['current_error'] (0) or via echo (1)
*/
function exiting($message,$location='register.php'){
header ( 'Location:' . $location );
$_SESSION ['current_error'] = $message;
exit;
}
if (! isset ( $_GET ['action'] ))
exiting(NULL,'40A.php');
switch ($_GET ['action']) {
case 'register' :
//Action : register
if (!(isset ( $_POST ['pseudo'] ) && isset ( $_POST ['mdp'] ) && isset ( $_POST ['mdp2'] )))
exiting('Quand on demande des donn&eacute;es, on donne des donn&eacute;es !!!');
if ($_POST ['mdp'] === $_POST ['mdp2'])
exiting('Tu auras du rentrer deux fois le m&ecirc;me mot de passe (tu permet aussi de rendre le champs "Recopier le mot de passe" utile)');
if (preg_match ( "#^[a-zA-Z0-9\\-_]+$#", $_POST ['pseudo'] ))
exiting('Le pseudo sera incorrect : Les seuls caract&egrave;res autoris&eacute;s sont :<br/>abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_');
if (preg_match ( "#^[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\\-_&éèàùçµ\"\\#'{}()[\\]|\\^@°+=\$¤£*!§:/;.,?²]+$#", $_POST ['mdp'] ))
exiting('Le mot de passe fut incorrect : Les seuls caract&egrave;res autoris&eacute;s sont :<br/>abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_&&eacute;&egrave;&agrave;&ugrave;&ccedil;&mu;"#\'{}()[]|^@°+=$¤£*!§:/;.,?²');
$out = Membre::registerPerson ($_POST ['pseudo'],$_POST ['mdp']);
if($out ===Membre::USED_USERNAME)
exiting('Le pseudonyme est d&eacute;j&agrave; utilis&eacute; (par une entit&eacute; differente de vous)');
exiting('Vous avez d&eacute;j&agrave; &eacute;t&eacute; correctement inscrit sur bernard.com','login.php');
case 'login' :
//Action : login
if (!( isset ( $_POST ['pseudo'] ) && isset ( $_POST ['mdp'] ) ))
exiting('Quand on demande des donn&eacute;es, on donne des donn&eacute;es !!!');
$me = Membre::getFromPseudo($_POST['pseudo']);
if(!$me)
exiting('Kik&egrave;tvou ? Pseudo inconnu ...');
if(!$me->connect($_POST ['mdp']))
exiting('Votre empreinte r&eacute;tinale, digital et g&eacute;netique ne correspond pas &agrave; celles stoqu&eacute;es dans notre base de donn&eacute;es (Technologie &agrave; venir)');
$_SESSION['session_id'] = $me->getID();
$_SESSION['session_mdp'] = $_POST['mdp'];
exiting('Vous &ecirc;tes bien connect&eacute; (vous l\'avez &eacute;t&eacute; et le serez &eacute;galement)!');
case 'changePassword' :
//Action : change password
if(!(isset($_POST['rmdp']) && isset($_POST['nmdp']) && isset($_POST['nmdp2'])))
exiting('Quand on demande des donn&eacute;es, on donne des donn&eacute;es !!!');
if(!$me)
exiting('Si tu ne te connectes pas, comment veut tu que je sache quel mot de passe changer !');
if(!$me->connect($_POST['rmdp']))
exiting('Votre empreinte r&eacute;tinale, digital et g&eacute;netique ne correspond pas &agrave; celles stoqu&eacute;es dans notre base de donn&eacute;es (Technologie &agrave; venir)');
if($_POST['nmdp'] !== $_POST['nmdp2'])
exiting('Tu auras du rentrer deux fois le m&ecirc;me mot de passe (tu permet aussi de rendre le champs "Recopier le mot de passe" utile)');
$out = $me->changePassword($_POST['nmdp']);
if($out == Membre::PASSWORD_TOO_LONG)
exiting('Mot de passe &ne; roman (255 caract&egrave;res maximum)');
exiting('Vos dispositifs d\'identification ont &eacute;t&eacute; correctement chang&eacute;s');
case 'createDiscussion' :
//Action : create discussion
if(!isset($_POST['name']))
exiting('Quand on demande des donn&eacute;es, on donne des donn&eacute;es !!!');
if(!$me)
exiting('Veuillez vous identifier pour acceder &agrave; cette section !!!');
if(!$me->connect($_SESSION['session_mdp']))
exiting('Votre empreinte r&eacute;tinale, digital et g&eacute;netique ne correspond pas &agrave; celles stoqu&eacute;es dans notre base de donn&eacute;es (Technologie &agrave; venir)');
if($me->isAdminLevelLowerThan(2))
exiting('Vous n\'&ecirc;tes pas assez PUISSANT !!!!!!!!!! (Faut un adminLevel de 2 ou plus)');
$out = Discussion::createDiscussion($_POST ['name'],$_SESSION ['session_id']);
if($out === Discussion::NAME_ALREADY_USED)
exiting('Mince j\'ai d&eacute;j&agrave; utilis&eacute; l\'&eacute;criteau avec ce nom ... t\'en as pas un autre ?');
if($out === Discussion::ILLEGAL_NAME)
exiting('Y a des trucs qui ne me plaisent pas dans le nom que tu as donn&eacute; &agrave; ta discussion ...<br/>Je n\'accepte que les caract&egrave;res abcdefghijklmnopqrstuvwxyz<wbr/>ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789<wbr/>&eacute;&egrave;&agrave;&mu;_-\'()[\\]\\\\/<wbr/>,;:.&sect;!&ugrave;%&pound;$&curren;=+-*\\#~"|&ccedil;@');
if($out === Discussion::TOO_LONG_NAME)
exiting('Nom de discussion &ne; roman (255 caract&egrave;res maximum)');
exiting('C\'est fait !!! (la cr&eacute;ation de ta discussion bien s&ucirc;r)');
case 'postMessage' :
//Action : post message
if(!$me)
exiting('Veuillez vous identifier pour acceder &agrave; cette section !!!');
if(!$me->connect($_SESSION['session_mdp']))
exiting($me.'Votre empreinte r&eacute;tinale, digital et g&eacute;netique ne correspond pas &agrave; celles stoqu&eacute;es dans notre base de donn&eacute;es (Technologie &agrave; venir)');
$discussion = new Discussion($_GET ['d']);
if(!$discussion->exists())
exiting('Pour des raisons d\'int&eacute;grit&eacute; du site, nous avons d&eacute;cid&eacute; de ne pas autoriser les messages dans les discussions inexistantes (pour les superadmins, c\'est possible en forcant la bdd &128516; )');
if(!$discussion->canAccess($me))
exiting('Tu pensais que tu pouvais &eacute;crire des messages dans une discussion &agrave; laquelle tu n\'as pas acc&egrave;s !!! Tu te crois o&ugrave; ?');
Message::sendMessage($me,$discussion,$_POST ['msg']);
exiting(NULL,'discut.php?d='.$discussion->getID());
case 'deleteMessage' :
//Action : delete message
if(!isset($_GET ['m']))
exiting('c');
if(!$me)
exiting('Veuillez vous identifier pour supprimer un message !!!');
if(!$me->connect($_SESSION['session_mdp']))
exiting('Votre empreinte r&eacute;tinale, digital et g&eacute;netique ne correspond pas &agrave; celles stoqu&eacute;es dans notre base de donn&eacute;es (Technologie &agrave; venir)');
$message = new Message($_GET['m']);
if(!$message->exists())
exiting('Je vais avoir du mal &agrave; supprimer le message n&ecute;ant ...');
if($me->isAdminLevelLowerThan(6) && $me->getID() !== $message->getSender()->getID())
exiting('Vous n\'&ecirc;tes pas assez PUISSANT !!!!!!!!!! (Faut un adminLevel de 6 ou plus OU etre l\'auteur de ce message');
$message->removeMessage();
exiting(NULL,'discut.php?d='.$message->getDiscussion()->getID());
case 'editVersion' :
//Action : edit version
if(!isset($_GET ['v']))
exiting('Quand on demande des donn&eacute;es, on donne des donn&eacute;es !!!');
if(!$me)
exiting('Veuillez vous identifier pour &eacute;diter une version !!!');
if(!$me->connect($_SESSION['session_mdp']))
exiting('Votre empreinte r&eacute;tinale, digital et g&eacute;netique ne correspond pas &agrave; celles stoqu&eacute;es dans notre base de donn&eacute;es (Technologie &agrave; venir)');
$version = new Version($_GET['v']);
if(!$version->exists())
exiting('Je vais avoir du mal &agrave; &eacute;diter la version n&ecute;ant ...');
if($me->isAdminLevelLowerThan(13) && $version->getProject()->haveRights($me))
exiting('Vous n\'&ecirc;tes pas assez PUISSANT !!!!!!!!!! (Faut un adminLevel de 6 ou plus OU etre un des pocesseurs du projet');
//TODO concretly modify the version, with all the options (remove included)
exit;
case 'getDiscutsMessages' :
//Action : get discut's messages
//TODO precise output type (via $_GET)
$query = 'SELECT m.ID AS messageID,u.ID AS senderID, u.pseudo AS pseudo, m.texte AS texte, m.sendTime AS sendTime, UNIX_TIMESTAMP(m.sendTime) AS sendTimestamp FROM users AS u INNER JOIN messages AS m ON u.ID = m.senderID WHERE m.discussion_id=?';
$data = array ();
if(!isset($_GET ['d'])){
echo 'ERROR : NO DISCUSSION PROVIDED';
exit;
}
if($me?!$me->connect($_SESSION['session_mdp']):FALSE){
echo 'Votre empreinte r&eacute;tinale, digital et g&eacute;netique ne correspond pas &agrave; celles stoqu&eacute;es dans notre base de donn&eacute;es (Technologie &agrave; venir)';
exit;
}
$discut = new Discussion($_GET ['d']);
if(!$discut->exists()){
echo 'Quand on demande des donn&eacute;es, on donne des donn&eacute;es !!!';
exit;
}
$messages = Utility::arrayIfNot(Message::getFromDiscussion($discut));
$jmsgs = array();
foreach($messages as $message){
$jmsg = array();
$jmsg['messageID'] = $message->getID();
$jmsg['senderID'] = $message->getSender()->getID();
$jmsg['pseudo'] = $message->getSender()->getPseudo();
$jmsg['texte'] = $message->getText();
$jmsg['sendTime'] = $message->getSendDate();
$jmsg['sendTimestamp'] = strToTime($message->getSendDate());
$jmsg['rights'] = ($me)? $message->getSender()->getID() == $me->getID() || $me->isAdminLevelGreaterThan(5):FALSE;
array_push($jmsgs,$jmsg);
}
echo json_encode ( $jmsgs );
flush ();
exit;
}