/** * Verifica se l'username $username non sia già in possesso * da un altro utente (cliente o admin) * @param string $username * @param User $user * @return true if already used otherwise false */ public function checkIfUsernameIsAlreadyUsed($username, User $user) { $mysqli = Db::getInstance()->connectDb(); if (!isset($mysqli)) { error_log("[checkIfUsernameIsAlreadyUsed] impossibile inizializzare il database"); $mysqli->close(); return null; } switch ($user->getRuolo()) { case User::Cliente: $query = "select count(*) from (\n (select username from clienti \n where id <> ?) \n UNION ALL \n (select username from admins) \n ) dt \n where username = ?"; break; case User::Admin: $query = "select count(*) from (\n (select username from clienti) \n UNION ALL \n (select username from admins \n where id <> ?) \n ) dt \n where username = ?"; break; default: return null; } $stmt = $mysqli->stmt_init(); $stmt->prepare($query); if (!$stmt) { error_log("[checkIfUsernameIsAlreadyUsed] impossibile" . " inizializzare il prepared statement"); $mysqli->close(); return null; } if (!$stmt->bind_param('is', $user->getId(), $username)) { error_log("[checkIfUsernameIsAlreadyUsed] impossibile" . " effettuare il binding in input"); $mysqli->close(); return null; } if (!$stmt->execute()) { error_log("[checkIfUsernameIsAlreadyUsed] impossibile" . " eseguire lo statement"); return null; } $count = 0; $bind = $stmt->bind_result($count); if (!$bind) { error_log("[checkIfUsernameIsAlreadyUsed] impossibile" . " effettuare il binding in output"); return null; } if (!$stmt->fetch()) { return null; } $stmt->close(); // echo "numero: " . $count . '<br>'; return $count < 1 ? false : true; }
/** * Salva i dati relativi ad un utente sul db * @param User $user * @return il numero di righe modificate */ public function salva(User $user) { $mysqli = Db::getInstance()->connectDb(); if (!isset($mysqli)) { error_log("[salva] impossibile inizializzare il database"); $mysqli->close(); return 0; } $stmt = $mysqli->stmt_init(); $count = 0; switch ($user->getRuolo()) { case User::Cliente: $count = $this->salvaCliente($user, $stmt); break; case User::Admin: $count = $this->salvaAdmin($user, $stmt); } $stmt->close(); $mysqli->close(); return $count; }