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
+331 -339
View File
@@ -1,14 +1,21 @@
<?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='index.php'){
if($message instanceof SQLProcessingException){
echo $message->getMessage();
$_SESSION ['current_error'] = $message->getHtmlMessage();
}else if($message instanceof Exception){
echo $message->getMessage();
$_SESSION ['current_error'] = htmlSpecialChars($message->getMessage());
}else{
$_SESSION ['current_error'] = $message;
}
header ( 'Location:' . $location );
$_SESSION ['current_error'] = $message;
exit;
}
@@ -18,406 +25,391 @@ if (! isset ( $_GET ['action'] ))
switch ($_GET ['action']) {
case 'disconnect' :
unset($_SESSION['session_id']);
unset($_SESSION['session_mdp']);
header('Location:index.php');//TODO lastpageredirection
$_SESSION['current_error'] = 'La d&eacute;connexion se sera correctement pass&eacutee!';
exit;
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;"#\'{}()[]|^@+=$*!:/;.,?');
$pseudo = $_POST ['pseudo'] ?? NULL;
$mdp = $_POST ['mdp'] ?? NULL;
$mdp2 = $_POST ['mdp2'] ?? NULL;
$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');
try{
assert($pseudo,new MissingDataException('pseudo','POST'));
assert($mdp,new MissingDataException('mdp','POST'));
assert($mdp2,new MissingDataException('mdp2','POST'));
assert($mdp===$mdp2,new DataException('mdp and mdp2 should be equal'));
Membre::registerPerson ($pseudo,$mdp);
}catch(Exception $e){
exiting($e);
}
exiting(Utility::SUCESSFULLY_REGISTERED,'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)!');
$pseudo = $_POST ['pseudo'] ?? NULL;
$mdp = $_POST ['mdp'] ?? NULL;
try{
assert($pseudo,new MissingDataException('pseudo','POST'));
assert($mdp,new MissingDataException('mdp','POST'));
$_SESSION['session_id'] = Membre::checkLogin ($pseudo,$mdp);
$_SESSION['session_mdp'] = $mdp;
}catch(Exception $e){
exiting($e);
}
exiting(Utility::SUCESSFULLY_LOGGED_IN,'index.php');//TODO Do a "previousContentPageRedirection"
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');
$sid = $_SESSION ['session_id'] ?? NULL;
$rmdp = $_POST ['rmdp'] ?? NULL;
$mdp = $_POST ['nmdp'] ?? NULL;
$mdp2 = $_POST ['nmdp2'] ?? NULL;
var_dump($_POST);
try{
assert($rmdp,new MissingDataException('rmdp','POST'));
assert($mdp,new MissingDataException('mdp','POST'));
assert($mdp2,new MissingDataException('mdp2','POST'));
assert($mdp===$mdp2,new DataException('mdp and mdp2 should be equal'));
Membre::changePassword ($sid,$rmdp,$mdp);
}catch(Exception $e){
exiting($e);
}
exiting(Utility::SUCESSFULLY_CHANGED_PASSWORD,'login.php');
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)');
$sid = $_SESSION ['session_id'] ?? NULL;
$mdp = $_SESSION ['session_mdp'] ?? NULL;
$name = $_POST ['name'] ?? NULL;
try{
assert($sid,new LoginNeededException());
assert($rmdp,new MissingDataException('rmdp','POST'));
assert($mdp,new MissingDataException('mdp','POST'));
assert($mdp2,new MissingDataException('mdp2','POST'));
$did = Discussion::createDiscussion ($sid,$mdp,$name);
}catch(Exception $e){
exiting($e);
}
exiting(Utility::SUCESSFULLY_CREATED_DISCUSSION,'discut.php?d='.$did);
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());
$sid = $_SESSION ['session_id'] ?? NULL;
$mdp = $_SESSION ['session_mdp'] ?? NULL;
$did = $_GET ['d'] ?? NULL;
$text = $_POST ['msg'] ?? NULL;
var_dump($text);
try{
assert($sid,new LoginNeddedException());
assert($did,new MissingDataException('d','GET'));
assert($text,new MissingDataException('text','POST'));
Message::postMessage ($sid,$mdp,$did,$text);
}catch(Exception $e){
exiting($e);
}
exiting(NULL,'discut.php?d='.$did);
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());
$sid = $_SESSION ['session_id'] ?? NULL;
$mdp = $_SESSION ['session_mdp'] ?? NULL;
$mid = $_GET ['m'] ?? NULL;
try{
assert($sid,new LoginNeddedException());
assert($mid,new MissingDataException('m','GET'));
$did = Message::deleteMessage ($sid,$mdp,$mid);
}catch(Exception $e){
exiting($e);
}
exiting(NULL,'discut.php?d='.$did);
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;
// Data : name langage tags insertIndex -> facultatifs
$sid = $_SESSION ['session_id'] ?? NULL;
$mdp = $_SESSION ['session_mdp'] ?? NULL;
$v = $_GET['v'] ?? NULL;
$name = $_POST['name'] ?? NULL;
$langage = $_POST['langage'] ?? NULL;
$tags = $_POST['tags'] ?? NULL;
$insertIndex = $_POST['insertIndex'] ?? NULL;
try{
assert($sid,new LoginNeededException());
assert($v,new MissingDataException('v','GET'));
Version::editVersion ($sid,$mdp,$v,$name,$langage,$tags,$insertIndex);
}catch(Exception $e){
exiting($e);
}
exiting(Utility::SUCESSFULLY_CHANGED_PASSWORD,'login.php');
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 ();
$sid = $_SESSION ['session_id'] ?? NULL;
$mdp = $_SESSION ['session_mdp'] ?? NULL;
$did = $_GET ['did'] ?? NULL;
try{
assert($sid,new LoginNeededException());
assert($did,new MissingDataException('did','GET'));
$jmsgs = Discussion::getMessages ($sid,$mdp,$did);
echo json_encode ( $jmsgs );
flush ();
exit;
}catch(Exception $e){
exiting($e);
}
exit;
case 'getPeopleList' :
//Action : get projest's secondary owners
//Action : get project's secondary owners
//TODO precise output type (via $_GET)
$data = array ();
if(!isset($_GET ['p'])){
echo 'ERROR : NO PROJECT PROVIDED';
exit;
}
if($me?!$me->connect($_SESSION['session_mdp']):FALSE){
echo 'Votre empreinte r&eacute;tinale, digitale et g&eacute;netique ne correspond pas &agrave; celles stoqu&eacute;es dans notre base de donn&eacute;es (Technologie &agrave; venir)';
exit;
}
$projet = new Projet($_GET ['p']);
if(!$projet->exists()){
echo 'Quand on demande des donn&eacute;es, on donne des donn&eacute;es !!!';
exit;
}
$owners = $projet->getSecondaryOwners();
$jmsgs = array();
foreach($owners as $owner){
$jmsg = array();
$jmsg['ID'] = $owner->getID();
$jmsg['pseudo'] = $owner->getPseudo();
array_push($jmsgs,$jmsg);
}
echo json_encode ( $jmsgs );
flush ();
$sid = $_SESSION ['session_id'] ?? NULL;
$mdp = $_SESSION ['session_mdp'] ?? NULL;
$pid = $_GET ['p'] ?? NULL;
try{
assert($sid,new LoginNeededException());
assert($pid,new MissingDataException('pid','GET'));
$secondaryOwners = Projet::getSecondaryOwners ($sid,$mdp,$pid);
$jsowns = array();
foreach($secondaryOwners as $sOwner){
$jsown = array();
$jsown['ID'] = $sOwner['ID'];
$jsown['pseudo'] = $sOwner['pseudo'];
array_push($jsowns,$jsown);
}
echo json_encode ( $jsowns );
flush ();
exit;
}catch(Exception $e){
exiting($e);
}
exit;
case 'removePeople' :
case 'removePeople' :
//Action : remove secodary owner
if(!isset($_GET ['p']))
exiting('c');
if(!isset($_POST ['peopleIDs']))
exiting('o');
if(!$me)
exiting('Veuillez vous identifier pour supprimer un secondary owner !!!');
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)');
$projet = new Projet($_GET['p']);
if(!$projet->exists())
exiting('Je vais avoir du mal &agrave; supprimer un des propri&eacute;taires du projet n&eacute;ant ...');
if(!($me->getID() == $projet->getOwner()->getID() OR $me->isAdminLevelGreaterThan(13)))
exiting('Vous n\'&ecirc;tes pas assez PUISSANT !!!!!!!!!! (Faut un adminLevel de 13 ou plus OU etre propritaire du projet');
$todIDs = explode(',',$_POST ['peopleIDs']);
$sowners = $projet->getSecondaryOwners();
$nsowners = array();;
foreach($sowners as $sowner)if(!in_array($sowner->getID(),$todIDs))$nsowners[] = $sowner;
$projet->setSecondaryOwners($nsowners);
$sid = $_SESSION ['session_id'] ?? NULL;
$mdp = $_SESSION ['session_mdp'] ?? NULL;
$pid = $_GET ['pid'] ?? NULL;
$peopleIDs = $_POST['peopleIDs'] ?? NULL;
try{
assert($sid,new LoginNeddedException());
assert($pid,new MissingDataException('pid','GET'));
$did = Projet::removeSecondaryOwner ($sid,$mdp,$pid,explode(',',$peopleIDs));
}catch(Exception $e){
exiting($e);
}
exiting(NULL,'projet.php?p='.$pid);
exit;
case 'addPeople' :
//Action : add secodary owner
if(!isset($_GET ['p']))
exiting('c');
if(!isset($_POST ['peopleName']))
exiting('o');
if(!$me)
exiting('Veuillez vous identifier pour ajouter un secondary owner !!!');
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)');
$projet = new Projet($_GET['p']);
if(!$projet->exists())
exiting('Je vais avoir du mal &agrave; ajouter un propri&eacute;taires au projet n&eacute;ant ...');
if(!($me->getID() == $projet->getOwner()->getID() OR $me->isAdminLevelGreaterThan(13)))
exiting('Vous n\'&ecirc;tes pas assez PUISSANT !!!!!!!!!! (Faut un adminLevel de 13 ou plus OU etre propritaire du projet');
$membre = Membre::getFromPseudo($_POST ['peopleName']);
if(count($membre) != 1)
exiting('Vous voulez ajouter QUI ?!!');
$projet->addSecondaryOwner($membre);
exit;
case 'setPublicy' :
//Action : set project publicy
if(!isset($_GET ['p']))
exiting('c');
if(!isset($_POST ['publicy']))
exiting('o');
if(!$me)
exiting('Veuillez vous connecter pour changer la "publicit&eacute;"d\'un projet !!!');
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)');
$projet = new Projet($_GET['p']);
//Action : add secondary owner
if(!$projet->exists())
exiting('Je vais avoir du mal &agrave; ajouter un propri&eacute;taires au projet n&eacute;ant ...');
if(!($me->getID() == $projet->getOwner()->getID() OR $me->isAdminLevelGreaterThan(13)))
exiting('Vous n\'&ecirc;tes pas assez PUISSANT !!!!!!!!!! (Faut un adminLevel de 13 ou plus OU etre propritaire du projet');
$projet->setPublicy($_POST ['publicy'] == 'true');
echo 'ok';
exit;
$sid = $_SESSION ['session_id'] ?? NULL;
$mdp = $_SESSION ['session_mdp'] ?? NULL;
$pid = $_GET ['pid'] ?? NULL;
$personName = $_POST['personName'] ?? NULL;
try{
assert($sid,new LoginNeddedException());
assert($pid,new MissingDataException('pid','GET'));
assert($pid,new MissingDataException('personName','POST'));
$did = Projet::addSecondaryOwner ($sid,$mdp,$pid,explode(',',$personName));
}catch(Exception $e){
exiting($e);
}
exiting(NULL,'projet.php?p='.$pid);
case 'nameOwner' :
//Action : name a new Owner
if(!isset($_GET ['p']))
exiting('c');
if(!isset($_POST ['nOwnerID']))
exiting('o');
if(!$me)
exiting('Veuillez vous connecter pour changer le propri&eacute;taire d\'un projet !!!');
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)');
$projet = new Projet($_GET['p']);
if(!$projet->exists())
exiting('Je vais avoir du mal &agrave; changer le propri&eacute;taires au projet n&eacute;ant ...');
if(!($me->getID() == $projet->getOwner()->getID() OR $me->isAdminLevelGreaterThan(13)))
exiting('Vous n\'&ecirc;tes pas assez PUISSANT !!!!!!!!!! (Faut un adminLevel de 13 ou plus OU etre propritaire du projet');
$membre = new Membre($_POST ['nOwnerID']);
if(!$membre->exists())
exiting('Nous sommes hereux d\'acceuillir n&eacute;ant , le touveau propri&eacute;taire !!! Euh ...');
$projet->setOwner($membre);
$todIDs = $membre->getID();
$sowners = $projet->getSecondaryOwners();
$nsowners = array();
foreach($sowners as $sowner)if($sowner->getID() != $todIDs)$nsowners[] = $sowner;
$projet->setSecondaryOwners($nsowners);
$projet->addSecondaryOwner($me);
echo 'ok';
exit;
$sid = $_SESSION ['session_id'] ?? NULL;
$mdp = $_SESSION ['session_mdp'] ?? NULL;
$pid = $_GET ['pid'] ?? NULL;
$personId = $_POST['personId'] ?? NULL;
try{
assert($sid,new LoginNeddedException());
assert($pid,new MissingDataException('pid','GET'));
assert($personId,new MissingDataException('personId','POST'));
Projet::nameOwner ($sid,$mdp,$pid,explode(',',$personId));
}catch(Exception $e){
exiting($e);
}
exiting(NULL,'projet.php?p='.$pid);
case 'delProject' :
//Action : delete this project
if(!isset($_GET ['p']))
exiting('c');
if(!$me)
exiting('Veuillez vous identifier pour supprimer un projet !!!');
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)');
$projet = new Projet($_GET['p']);
if(!$projet->exists())
exiting('Je vais avoir du mal &agrave; supprimer le projet n&eacute;ant ...');
if(!($me->getID() == $projet->getOwner()->getID() OR $me->isAdminLevelGreaterThan(13)))
exiting('Vous n\'&ecirc;tes pas assez PUISSANT !!!!!!!!!! (Faut un adminLevel de 13 ou plus OU etre propritaire du projet');
$projet->delete();
echo 'ok';
exit;
$sid = $_SESSION ['session_id'] ?? NULL;
$mdp = $_SESSION ['session_mdp'] ?? NULL;
$pid = $_GET ['pid'] ?? NULL;
try{
assert($sid,new LoginNeddedException());
assert($pid,new MissingDataException('pid','GET'));
Projet::removeProject ($sid,$mdp,$pid);
}catch(Exception $e){
exiting($e);
}
exiting(NULL,'projets.php');
case 'getVersionList' :
//Action : get project's versions
//TODO precise output type (via $_GET)
$data = array ();
if(!isset($_GET ['p'])){
echo 'ERROR : NO PROJECT PROVIDED';
exit;
}
if($me?!$me->connect($_SESSION['session_mdp']):FALSE){
echo 'Votre empreinte r&eacute;tinale, digitale et g&eacute;netique ne correspond pas &agrave; celles stoqu&eacute;es dans notre base de donn&eacute;es (Technologie &agrave; venir)';
exit;
}
$projet = new Projet($_GET ['p']);
if(!$projet->exists()){
echo 'Quand on demande des donn&eacute;es, on donne des donn&eacute;es !!!';
exit;
}
$versions = Version::getFromProject($projet);
$jmsgs = array();
foreach($versions as $version){
$jmsg = array();
$jmsg['id'] = $version->getID();
$jmsg['name'] = $version->getName();
$jmsg['versionAbs'] = $version->getVersionAbs();
array_push($jmsgs,$jmsg);
}
echo json_encode ( $jmsgs );
flush ();
$sid = $_SESSION ['session_id'] ?? NULL;
$mdp = $_SESSION ['session_mdp'] ?? NULL;
$pid = $_GET ['p'] ?? NULL;
try{
assert($sid,new LoginNeededException());
assert($pid,new MissingDataException('pid','GET'));
$versions = Version::getFromProject ($sid,$mdp,$pid);
$jvs = array();
foreach($versions as $version){
$jv = array();
$jv['ID'] = $version['ID'];
$jv['name'] = $version['pseudo'];
$jv['versionAbs'] = $version['versionAbs'];
array_push($jvs,$jv);
}
echo json_encode ( $jvs );
flush ();
exit;
}catch(Exception $e){
exiting($e);
}
exit;
case 'createVersion' :
//Action : add secodary owner
if(!isset($_GET ['p']))
exiting('c');
if(!isset($_POST ['name']))
exiting('o');
if(!isset($_POST ['langage']))
exiting('q');
if(!isset($_POST ['tags']))
exiting('m');
if(!$me)
exiting('Veuillez vous identifier pour ajouter 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)');
$projet = new Projet($_GET['p']);
if(!$projet->exists())
exiting('Je vais avoir du mal &agrave; ajouter une version au projet n&eacute;ant ...');
if(!($me->getID() == $projet->getOwner()->getID() OR $me->isAdminLevelGreaterThan(13)))
exiting('Vous n\'&ecirc;tes pas assez PUISSANT !!!!!!!!!! (Faut un adminLevel de 13 ou plus OU etre propri&eacute;taire du projet');
//Action : add new version
//TODO make auto version_abs sorting according to $_POST ['insertIndex']
//TODO verify tags and langage
$sid = $_SESSION ['session_id'] ?? NULL;
$mdp = $_SESSION ['session_mdp'] ?? NULL;
$pid = $_GET ['pid'] ?? NULL;
$name = $_POST ['name'] ?? NULL;
$tags = $_POST ['tags'] ?? NULL;
$language = $_POST ['language'] ?? NULL;
$insertIndex = $_POST ['insertIndex'] ?? NULL;
$projet->newVersion($_POST ['name'],Langage::getFromName($_POST ['langage']),$_POST ['tags'],Version::getHighestFromProject($projet)->getVersionAbs()+1);
try{
assert($sid,new LoginNeddedException());
assert($pid,new MissingDataException('pid','GET'));
assert($text,new MissingDataException('name','POST'));
assert($text,new MissingDataException('tags','POST'));
assert($text,new MissingDataException('language','POST'));
//TODO do a REAL redirection (not to the highest)
echo 'www.bernard.890m.com/version.php?v=' . Version::getHighestFromProject($projet)->getID();
exit;
$vid = Version::createVerion ($sid,$mdp,$pid,$name,$tags,$language,$insertIndex);
}catch(Exception $e){
exiting($e);
}
exiting(NULL,'version.php?v='.$vid);
case 'editVersion' :
//Action : add secodary owner
if(!isset($_GET ['v']))
exiting('c');
if(!isset($_POST ['name']))
exiting('o');
if(!isset($_POST ['langage']))
exiting('q');
if(!isset($_POST ['tags']))
exiting('m');
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&eacute;ant ...');
if(!($me->getID() == $version->getProject()->getOwner()->getID() OR $me->isAdminLevelGreaterThan(13)))
exiting('Vous n\'&ecirc;tes pas assez PUISSANT !!!!!!!!!! (Faut un adminLevel de 13 ou plus OU etre propri&eacute;taire du projet');
$sid = $_SESSION ['session_id'] ?? NULL;
$mdp = $_SESSION ['session_mdp'] ?? NULL;
$vid = $_GET ['vid'] ?? NULL;
$name = $_POST ['name'] ?? NULL;
$tags = $_POST ['tags'] ?? NULL;
$language = $_POST ['language'] ?? NULL;
$insertIndex = $_POST ['insertIndex'] ?? NULL;
try{
assert($sid,new LoginNeddedException());
assert($pid,new MissingDataException('vid','GET'));
assert($text,new MissingDataException('name','POST'));
assert($text,new MissingDataException('tags','POST'));
assert($text,new MissingDataException('language','POST'));
$vid = Version::editVerion ($sid,$mdp,$vid,$name,$tags,$language,$insertIndex);
}catch(Exception $e){
exiting($e);
}
//TODO make auto version_abs sorting according to $_POST ['insertIndex']
//TODO verify tags and langage
$projet->editVersion($version,$_POST ['name'],Langage::getFromName($_POST ['langage']),$_POST ['tags'],Version::getHighestFromProject($projet)->getVersionAbs()+1);
exiting(NULL,'version.php?v='.$vid);
//TODO do a REAL redirection (not to the highest)
echo 'www.bernard.890m.com/version.php?v=' . Version::getHighestFromProject($projet)->getID();
exit;
case 'delVersion' :
//Action : delete this version
if(!isset($_GET ['p']))
exiting('c');
if(!$me)
exiting('Veuillez vous identifier pour supprimer 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['p']);
if(!$version->exists())
exiting('Je vais avoir du mal &agrave; supprimer la version n&eacute;ant ...');
if(!($me->getID() == $version->getProject()->getOwner()->getID() OR $me->isAdminLevelGreaterThan(13)))
exiting('Vous n\'&ecirc;tes pas assez PUISSANT !!!!!!!!!! (Faut un adminLevel de 13 ou plus OU etre propri&eacute;taire du projet');
$version->delete();
echo 'ok';
exit;
$sid = $_SESSION ['session_id'] ?? NULL;
$mdp = $_SESSION ['session_mdp'] ?? NULL;
$vid = $_GET ['vid'] ?? NULL;
try{
assert($sid,new LoginNeddedException());
assert($pid,new MissingDataException('vid','GET'));
$pid = Version::removeVersion ($sid,$mdp,$vid);
}catch(Exception $e){
exiting($e);
}
exiting(NULL,'projet.php?p=' . $pid);
}