Advertisement
Husam1093

Untitled

May 24th, 2018
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.78 KB | None | 0 0
  1. <?php
  2. session_start();
  3. include_once('connection.php');
  4. ini_set("display_errors", 1);
  5. error_reporting(E_ALL);
  6. class User{
  7.  
  8.  
  9. /* const ERROR_USERNAME_TAKEN= 1;
  10. const ERROR_GENERAL= 2;
  11. const ERROR_OK= 0;*/
  12.  
  13. private $db;
  14. public $username;
  15. public $password;
  16. private $book_id;
  17.  
  18. private $isAuthenticated;
  19. private $signUp;
  20. private $deleteBooks;
  21. // private $validationError;
  22.  
  23. public function __construct()
  24. {
  25. $this->db = (new connection())->dbConnect();
  26.  
  27. }
  28.  
  29. public function setUserName($username)
  30. {
  31. $this->username= $username;
  32. }
  33.  
  34. public function setPassword($password)
  35. {
  36. $this->password= $password;
  37. }
  38.  
  39. public function setBookId($book_id)
  40. {
  41. $this->book_id= $book_id;
  42. }
  43.  
  44. public function getUserName()
  45. {
  46. return $this->username;
  47. }
  48. public function getPassword()
  49. {
  50. return $this->password;
  51. }
  52.  
  53. public function getBookId()
  54. {
  55. return $this->book_id;
  56. }
  57. /* public function getErrorInfo()
  58. {
  59.  
  60. $errorDescription= "";
  61.  
  62. switch($this->validationError){
  63. case self::ERROR_USERNAME_TAKEN:
  64. $errorDescription= "YOur username is already taken";
  65.  
  66. break;
  67.  
  68. default:
  69. $errorDescription= "UNKNOWN ERROR";
  70. break;
  71. }
  72.  
  73. return $info= array("code" => $this->validationError, "message" => $errorDescription );
  74. }*/
  75. //-------------------------------------------------------------------
  76. public function isAuthenticated()
  77. {
  78. $query = "SELECT 1 FROM loginUser WHERE username = :username AND password = :password";
  79.  
  80. $statment = $this->db->prepare($query);
  81.  
  82. $statment->execute(
  83. array(
  84. ':username' => $this->username,
  85. ':password' => $this->password
  86. ));
  87.  
  88. $result = $statment->fetchColumn();
  89.  
  90. $this->isAuthenticated= ($result == "1");
  91. return $this->isAuthenticated;
  92.  
  93. }
  94.  
  95. //-------------------------------------------------------------------
  96.  
  97. public function getBooks($start = 0, $limit = 2, $order = "ASC")
  98. {
  99. $sql_start = $start * $limit;
  100. $sql_limit = $limit;
  101. $sql_order_by = $order;
  102.  
  103. $query = "SELECT Library.nameOfBook, userBook.book_id, userBook.user_id FROM loginUser JOIN userBook JOIN Library ON userBook.user_id = loginUser.id AND userBook.book_id = Library.id WHERE loginUser.username=:username ORDER BY Library.nameOfBook $sql_order_by LIMIT $sql_start, $sql_limit";
  104. $statment = $this->db->prepare($query);
  105. $statment->execute([
  106. ':username' => $this->username
  107. ]);
  108. $result = $statment->fetchAll();
  109.  
  110. echo "<table id='myTable' border='1'>
  111.  
  112. <tr>
  113. <th><a id='sorter' href='#'>Books</a></th>
  114. <th>Action</th>
  115. </tr>";
  116. foreach($result as $row){
  117. echo "<tr>";
  118. echo "<td>" . $row['nameOfBook'] . "</td>";
  119. echo "<td>" ."<input type='submit' id='delete".$row['book_id']."-".$row['user_id']."' onclick='deleteBook(this)' name='delete' value='Delete'>" . "</td>";
  120. echo "</tr>";
  121. }
  122.  
  123. echo "</table>";
  124. echo "";
  125. return count($result);
  126.  
  127. }
  128.  
  129. //-------------------------------------------------------------------
  130. public function getBooksCount($start = 0, $limit = 2, $order = "ASC")
  131. {
  132. $sql_start = $start * $limit;
  133. $sql_limit = $limit;
  134. $sql_order_by = $order;
  135.  
  136. $query = "SELECT Library.nameOfBook, userBook.book_id, userBook.user_id FROM loginUser JOIN userBook JOIN Library ON userBook.user_id = loginUser.id AND userBook.book_id = Library.id WHERE loginUser.username=:username ORDER BY Library.nameOfBook $sql_order_by LIMIT $sql_start, $sql_limit";
  137. $statment = $this->db->prepare($query);
  138. $statment->execute([
  139. ':username' => $this->username
  140. ]);
  141. $result = $statment->fetchAll();
  142. return count($result);
  143.  
  144. }
  145. //-------------------------------------------------------------------
  146. public function getIdByUsername($username){
  147. $stmt = $this->db->prepare("SELECT loginUser.id FROM loginUser WHERE loginUser.username=:username");
  148. $stmt->bindValue(":username", $username);
  149.  
  150. if($stmt->execute()){
  151. $row = $stmt->fetch(PDO::FETCH_ASSOC);
  152. }
  153.  
  154. return (isset($row['id'])?$row['id']:0);
  155. }
  156. //-------------------------------------------------------------------
  157.  
  158. function get_books_count($user_id){
  159. $stmt = $this->db->prepare("SELECT COUNT(ub.book_id) as total FROM userBooks ub
  160. INNER JOIN Library l ON l.id = ub.book_id
  161. WHERE ub.user_id = :user_id");
  162. $stmt->bindValue(":user_id", $user_id);
  163. $stmt->execute();
  164. $row = $stmt->fetch(PDO::FETCH_ASSOC);
  165. return isset($row['total']) ? $row['total'] : 0;
  166. }
  167.  
  168.  
  169.  
  170. //-------------------------------------------------------------------
  171. public function deleteBook($book_id, $user_id)
  172. {
  173. //echo "book_id is " . $book_id . ", user_id is " . $user_id;
  174. $stmt = $this->db->prepare("DELETE FROM userBook WHERE book_id = :book_id AND user_id = :user_id");
  175. if(!$stmt) echo $this->db->errorInfo();
  176. $stmt->bindValue(":book_id", $book_id);
  177. $stmt->bindValue(":user_id", $user_id);
  178. return $stmt->execute();
  179. }
  180.  
  181.  
  182.  
  183. //-------------------------------------------------------------------
  184.  
  185.  
  186. public function signUp(&$errorInfo)
  187. {
  188.  
  189. $statment = $this->db->prepare("SELECT COUNT(*) AS count FROM `loginUser` WHERE username=:username");
  190. $statment->execute(array(':username' => $this->username));
  191.  
  192. if ($row = $statment->fetch(PDO::FETCH_ASSOC)) {
  193. $username_count = $row["count"];
  194. }
  195.  
  196. if ($username_count > 0) {
  197. /* $this->validationError= self::ERROR_USERNAME_TAKEN;
  198. return false;*/
  199.  
  200. echo "This user already taken";
  201. }
  202. else{ $statment = $this->db->prepare("INSERT INTO loginUser (username, password) VALUES(:username, :password)");
  203.  
  204. $statment->bindParam(':username',$this->username);
  205. $statment->bindParam(':password',$this->password);
  206.  
  207.  
  208. $statment->execute();
  209. $result = $statment->rowCount();
  210. $this->signUp= ($result == "1");
  211. return $this->signUp;
  212. }
  213. }
  214.  
  215. }
  216.  
  217.  
  218.  
  219. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement