[Fixed] machineDefault/init & machineDefault/sync ok

This commit is contained in:
xdrm-brackets 2017-02-19 15:46:52 +01:00
parent 7267900a39
commit 5a8fdf0dd1
4 changed files with 36 additions and 10 deletions

View File

@ -498,7 +498,7 @@
$checkToken = new Repo('machine/checkToken', [ $_SESSION['WAREHOUSE']['id'], $token, $renew ]); $checkToken = new Repo('machine/checkToken', [ $_SESSION['WAREHOUSE']['id'], $token, $renew ]);
// Si token incorrect, on envoie une erreur // Si token incorrect, on envoie une erreur
if( $checkToken->answer() !== true ) if( !$checkToken->answer() )
return [ 'error' => new Error(Err::TokenError) ]; return [ 'error' => new Error(Err::TokenError) ];

View File

@ -27,8 +27,8 @@
'id_machine' => Rows::INSERT_DEFAULT, 'id_machine' => Rows::INSERT_DEFAULT,
'id_warehouse' => $id_warehouse, 'id_warehouse' => $id_warehouse,
'name' => $name, 'name' => $name,
'token' => Rows::INSERT_DEFAULT, 'token' => Rows::NULL,
'unlock_code' => Rows::INSERT_DEFAULT 'unlock_code' => Rows::NULL
]); ]);
// Si erreur (car name doit être unique) // Si erreur (car name doit être unique)
@ -296,13 +296,15 @@
=========================================================*/ =========================================================*/
/* (1) On effectue la requête */ /* (1) On effectue la requête */
$machine = Table::get('machine') $machine = Table::get('machine')
->select('id_machine')
->select('name')
->whereId($id_machine) ->whereId($id_machine)
->whereIdWarehouse($id_warehouse) ->whereIdWarehouse($id_warehouse)
->whereUnlockCode($unlock_code) ->whereUnlockCode($unlock_code)
->fetch(); ->fetch();
/* (2) On vérifie si on a bien le bon code */ /* (2) On vérifie si on a bien le bon code */
if( $machine === false ) if( count($machine) < 1 )
return false; return false;
@ -336,7 +338,7 @@
public static function checkToken($id_warehouse, $token, $newToken=null){ public static function checkToken($id_warehouse, $token, $newToken=null){
/* [1] On vérifie le token /* [1] On vérifie le token
=========================================================*/ =========================================================*/
$hash = secure_hash($token, ''); $hash = hash('sha512', $token);
$byToken = self::getByToken($id_warehouse, $hash); $byToken = self::getByToken($id_warehouse, $hash);
@ -348,10 +350,10 @@
/* [2] On met à jour le token /* [2] On met à jour le token
=========================================================*/ =========================================================*/
$updated = Table::get('machine') $updated = Table::get('machine')
->whereId($id_machine) ->whereId($byToken['id_machine'])
->edit([ ->edit([
'token' => Checker::run('hash', $newToken) ? $newToken : $token, 'token' => Checker::run('hash', $newToken) ? $newToken : $token,
'id_machine' => $byToken[0]['id_machine'] 'id_machine' => $byToken['id_machine']
]); ]);

View File

@ -37,6 +37,7 @@
// {3} Constantes d'insertion // // {3} Constantes d'insertion //
const INSERT_DEFAULT = '__DEFAULT__'; // Valeur DEFAULT (pour insertion) const INSERT_DEFAULT = '__DEFAULT__'; // Valeur DEFAULT (pour insertion)
const NULL = '__NULL__'; // Valeur DEFAULT (pour insertion)
/* Attributs */ /* Attributs */
private $driver; // Database driver label private $driver; // Database driver label
@ -266,9 +267,13 @@
/* (2) On vérifie le type de chaque valeur */ /* (2) On vérifie le type de chaque valeur */
$type = $this->schema['columns'][$field]['type']; $type = $this->schema['columns'][$field]['type'];
if( $type == 'int' && !is_numeric($args[0][0]) ) return $this; if( !is_null($args[0][0]) ){
if( $type == 'float' && !is_numeric($args[0][0]) ) return $this;
if( in_array($type, ['text', 'varchar']) && !is_string($args[0][0]) ) return $this; if( $type == 'int' && !is_numeric($args[0][0]) ) return $this;
if( $type == 'float' && !is_numeric($args[0][0]) ) return $this;
if( in_array($type, ['text', 'varchar']) && !is_string($args[0][0]) ) return $this;
}
} }
@ -511,6 +516,10 @@
/* (3) On vérifie les types des champs */ /* (3) On vérifie les types des champs */
foreach($cleared as $field=>$value){ foreach($cleared as $field=>$value){
// let null values
if( is_null($value) )
continue;
$type = $this->schema['columns'][$field]['type']; $type = $this->schema['columns'][$field]['type'];
// {1} Si de type INT/FLOAT et pas numérique, on retire le champ // // {1} Si de type INT/FLOAT et pas numérique, on retire le champ //

View File

@ -138,6 +138,13 @@
$sql .= substr($value[1], 2, -2).' '; $sql .= substr($value[1], 2, -2).' ';
/* (3) Variable */ /* (3) Variable */
// {1} Si NULL //
if( is_null($value[0]) ){
$sql .= 'NULL';
return $sql;
}
// {2} Si not NULL //
$sql .= ':'.$field[0].'_x_'.$field[1].'_'.$offset; $sql .= ':'.$field[0].'_x_'.$field[1].'_'.$offset;
$bound[':'.$field[0].'_x_'.$field[1].'_'.$offset] = $value[0]; $bound[':'.$field[0].'_x_'.$field[1].'_'.$offset] = $value[0];
@ -166,6 +173,14 @@
$sql[$c] = $field.' = '; $sql[$c] = $field.' = ';
/* (2) Variable */ /* (2) Variable */
// {1} Si NULL //
if( is_null($value) ){
$sql[$c] .= 'NULL';
$c++;
continue;
}
// {2} Si not NULL //
$sql[$c] .= ':update_'.$field; $sql[$c] .= ':update_'.$field;
$bound[':update_'.$field] = $value; $bound[':update_'.$field] = $value;