Encore plus de nouvelles classes
Tests sur les nombres univers
This commit is contained in:
+89
-33
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user