Encore plus de nouvelles classes

Tests sur les nombres univers
This commit is contained in:
Mysaa
2021-06-06 12:24:05 +02:00
parent c9589d2cf6
commit fba5123944
12 changed files with 692 additions and 332 deletions
+89 -33
View File
@@ -126,62 +126,118 @@ class Membre {
return Membre::PASSWORD_CHANGED;
}
//Membre getters
private static function memberGetterOutput($req){
/**
*
* @return Objects which matchs the specified restrictions
*/
public static function getFromAttributes($restrictions){
$whereCommands = array();
$restrictionValues = array();
foreach ($restrictions as $restriction){
$whereCommand = NULL;
$attribute = $restriction[0];
$json = FALSE;
$operator = NULL;
$value = NULL;
try {
switch ($attribute){
case 'ID':
$value = intval($restriction[2]);
$operator = Utility::getIntegerSqlOperator($restriction[1]);
break;
case 'pseudo':
$value = '"'.strval($restriction[2]).'"';//FIXME escaped chars (',",\n,\t ...)
$operator = Utility::getStringSqlOperator($restriction[1]);
break;
case 'hashedPseudo':
$value = '"'.strval($restriction[2]).'"';
$operator = Utility::getStringSqlOperator($restriction[1]);
break;
case 'adminLevel':
$value = intval($restriction[2]);
$operator = Utility::getIntegerSqlOperator($restriction[1]);
break;
case 'dateCreation':
//FIXME y ä pâs là vàlüè
$value=""
$operator = 'convert(datetime, "'.Utility::getDateSqlOperator($restriction[1]).'")';
break;
case 'requiredBanner':
$json=TRUE;
$value = "'".strval($restriction[2])."'";
$operator = Utility::getStringSqlOperator($restriction[1]);
break;
case 'personnalMessage':
$json=TRUE;
$value = "'".strval($restriction[2])."'";
$operator = Utility::getStringSqlOperator($restriction[1]);
break;
default:
echo 'Unknown attribute "'.$attribute.'" for the class Membre';
exit;
}
}catch(InvalidOperatorException $e){
echo $e->getMessage().' when reading attribute "'.$attribute.'"';
exit;
}
$restrictionValues[] = $value;
if($json){
$whereCommand = '((data->"$.'.$attribute.'" IS NOT NULL) AND (data->"$.'.$attribute.'" '.$operator.' ? ))';
}else{
$whereCommand = $attribute . ' ' . $operator . ' ' . $value;
}
$whereCommands[] = $whereCommand;
}
$wherePart = 'WHERE '.implode(' AND ',$whereCommands);
$req = $GLOBALS['bdd']->prepare('SELECT * FROM membres '.$wherePart);
$req->execute($restrictionValues);
if($req->errorInfo()[0] == 0)
echo 'A SQL exception occured ...';
$out = array();
while($rep = $req->fetch())
$out[] = new Membre($rep['ID']);
switch(count($out)){
case 0:
return NULL;
case 1:
return $out[0];
default:
return $out;
}
//Choose return value
switch(count($out)){
case 0:
return NULL;
case 1:
return $out[0];
default:
return $out;
}
}
public static function getFromPseudo($pseudo){
$req = $GLOBALS['bdd']->prepare('SELECT * FROM membres WHERE pseudo=?');
$req->execute(array($pseudo));
return membreGetterOutput($req);
return getFromAttributes(array(['pseudo','=',$pseudo]));
}
public static function getFromAdminLevel($level){
$req = $GLOBALS['bdd']->prepare('SELECT * FROM membres WHERE adminLevel=?');
$req->execute(array($level));
return membreGetterOutput($req);
return getFromAttributes(array(['adminLevel','=',$level]));
}
public static function getFromDateCreation($date){
$req = $GLOBALS['bdd']->prepare('SELECT * FROM membres WHERE dateCreation=?');
$req->execute(array($date));
return membreGetterOutput($req);
return getFromAttributes(array(['dateCreation','=',$date]));
}
public static function getCreatedLaterThan($date){
$req = $GLOBALS['bdd']->prepare('SELECT * FROM membres WHERE dateCreation>?');
$req->execute(array($date));
return membreGetterOutput($req);
return getFromAttributes(array(['dateCreation','>',$date]));
}
public static function getCreatedEarlierThan($date){
$req = $GLOBALS['bdd']->prepare('SELECT * FROM membres WHERE dateCreation<?');
$req->execute(array($date));
return membreGetterOutput($req);
return getFromAttributes(array(['dateCreation','<',$date]));
}
public static function getAdminGreaterThan($min){
$req = $GLOBALS['bdd']->prepare('SELECT * FROM membres WHERE adminLevel>?');
$req->execute(array($min));
return membreGetterOutput($req);
return getFromAttributes(array(['adminLevel','>',$min]));
}
public static function getAdminLowerThan($max){
$req = $GLOBALS['bdd']->prepare('SELECT * FROM membres WHERE adminLevel<?');
$req->execute(array($max));
return membreGetterOutput($req);
return getFromAttributes(array(['adminLevel','<',$max]));
}
@@ -191,7 +247,7 @@ class Membre {
return Membre::USED_USERNAME;
$req = $GLOBALS ['bdd']->prepare ('INSERT INTO membres(pseudo,mdp,date_creation) VALUES (?,?,NOW())');
$req->execute (array($pseudo,password_hash( $mdp, PASSWORD_DEFAULT)));
return Membre::USERNAME_CHANGED;
return Membre::PERSON_REGISTERED;
}