/model/NotificacaoDAO.class.php

https://gitlab.com/mucadoo/chatters · PHP · 206 lines · 199 code · 7 blank · 0 comment · 25 complexity · 51c1ed4efa1d41840455222290af5e58 MD5 · raw file

  1. <?php
  2. class NotificacaoDAO {
  3. private static $SEL_NOTIFYS = "SELECT
  4. p.id_sala_publicacao,
  5. p.id_publicacao,
  6. timediff(now(), p.data_hora_criacao_publicacao) as data_hora,
  7. np.visualizada_notificacao_publicacao,
  8. np.tipo_notificacao_publicacao,
  9. pu.nome_perfil_usuario,
  10. pu.sobrenome_perfil_usuario,
  11. pu.url_imagem_perfil_usuario,
  12. s.nome_sala,
  13. np.id_notificacao_publicacao
  14. FROM
  15. publicacao p
  16. JOIN
  17. perfil_usuario pu
  18. JOIN
  19. notificacao_publicacao np
  20. JOIN
  21. sala s
  22. WHERE
  23. s.id_sala = p.id_sala_publicacao
  24. AND
  25. p.id_publicacao = np.id_publicacao_notificacao_publicacao
  26. AND
  27. pu.id_usuario_perfil_usuario = p.id_usuario_publicacao
  28. AND
  29. np.id_usuario_notificacao_publicacao = :id_usuario
  30. UNION ALL
  31. SELECT
  32. p.id_sala_publicacao,
  33. c.id_publicacao_comentario,
  34. timediff(now(), c.data_hora_criacao_comentario) as data_hora,
  35. nc.visualizada_notificacao_comentario,
  36. p.id_usuario_publicacao,
  37. pu.nome_perfil_usuario,
  38. pu.sobrenome_perfil_usuario,
  39. pu.url_imagem_perfil_usuario,
  40. s.nome_sala,
  41. id_notificacao_comentario
  42. FROM
  43. publicacao p
  44. JOIN
  45. comentario c
  46. JOIN
  47. perfil_usuario pu
  48. JOIN
  49. notificacao_comentario nc
  50. JOIN
  51. sala s
  52. WHERE
  53. s.id_sala = p.id_sala_publicacao
  54. AND
  55. c.id_comentario = nc.id_comentario_notificacao_comentario
  56. AND
  57. pu.id_usuario_perfil_usuario = c.id_usuario_comentario
  58. AND
  59. nc.id_usuario_notificacao_comentario = :id_usuario
  60. AND
  61. c.id_publicacao_comentario = p.id_publicacao
  62. UNION ALL
  63. SELECT
  64. s.id_sala,
  65. ns.tipo_notificacao_sala,
  66. timediff(now(), ns.data_hora_notificacao_sala) as data_hora,
  67. ns.visualizada_notificacao_sala,
  68. ns.tipo_notificacao_sala,
  69. pu.nome_perfil_usuario,
  70. pu.sobrenome_perfil_usuario,
  71. pu.url_imagem_perfil_usuario,
  72. s.nome_sala,
  73. ns.id_notificacao_sala
  74. FROM
  75. notificacao_sala ns
  76. JOIN
  77. sala s
  78. JOIN
  79. perfil_usuario pu
  80. WHERE
  81. ns.id_usuario_remetente_notificacao_sala = pu.id_usuario_perfil_usuario
  82. AND
  83. ns.id_usuario_destinatario_notificacao_sala = :id_usuario
  84. AND
  85. ns.id_sala_notificacao_sala = s.id_sala
  86. ORDER BY data_hora";
  87. private static $UPD_NOT_COM = "UPDATE notificacao_comentario
  88. SET
  89. visualizada_notificacao_comentario = TRUE
  90. WHERE id_comentario_notificacao_comentario = :id_not";
  91. private static $UPD_NOT_PUB = "UPDATE notificacao_publicacao
  92. SET
  93. visualizada_notificacao_publicacao = TRUE
  94. WHERE id_publicacao_notificacao_publicacao = :id_not";
  95. private static $UPD_NOT_SALA = "UPDATE notificacao_sala ns
  96. SET
  97. visualizada_notificacao_sala = TRUE
  98. WHERE ns.id_notificacao_sala = :id_not";
  99. private static $UPD_NOTS = "UPDATE notificacao_publicacao
  100. SET
  101. visualizada_notificacao_publicacao = TRUE
  102. WHERE id_usuario_notificacao_publicacao = :id_usuario;
  103. UPDATE notificacao_comentario
  104. SET
  105. visualizada_notificacao_comentario = TRUE
  106. WHERE id_usuario_notificacao_comentario = :id_usuario;
  107. UPDATE notificacao_sala ns
  108. SET
  109. visualizada_notificacao_sala = TRUE
  110. WHERE ns.id_usuario_destinatario_notificacao_sala = :id_usuario";
  111. public function selNotifytoHTML(PDO $conexao, $id_usuario) {
  112. try {
  113. $stmtSelNotify = $conexao->prepare(NotificacaoDAO::$SEL_NOTIFYS);
  114. $stmtSelNotify->execute(array(
  115. ':id_usuario' => $id_usuario
  116. ));
  117. $linhas = $stmtSelNotify->fetchAll();
  118. $list = "";
  119. if (empty($linhas)) {
  120. return "<a class='media list-group-item no-notify'>
  121. <span class='media-body block m-b-none'>Você ainda não tem nenhuma notificação!</span>
  122. </a>";
  123. } else {
  124. foreach ($linhas as $colunas) {
  125. $classe3 = "";
  126. if ($colunas[4] == 'P') {
  127. $tipo_not = $colunas[4];
  128. $frase = "publicou na sala";
  129. } else if ($colunas[4] == 'A') {
  130. $tipo_not = $colunas[4];
  131. $frase = "adicionou você a sala";
  132. } else if ($colunas[4] == 'M') {
  133. $tipo_not = $colunas[4];
  134. $frase = "pediu para entrar na sala";
  135. $classe3 = " not-pedido";
  136. } else {
  137. $tipo_not = 'C';
  138. if ($colunas[4] == $id_usuario) {
  139. $frase = "comentou sua publicação na sala";
  140. } else {
  141. $frase = "também comentou uma publicação na sala";
  142. }
  143. }
  144. if ($colunas[3] == FALSE) {
  145. $classe = " not-no-vis";
  146. } else {
  147. $classe = "";
  148. }
  149. if ($colunas[2] <= '00:00:05') {
  150. $classe2 = " not-alert";
  151. } else {
  152. $classe2 = "";
  153. }
  154. $list .= "<a href='" . ($colunas[0] + 7) . "/" . ($colunas[1] + 7) . "/" . ($colunas[9] + 7) . "/$tipo_not' class='media list-group-item$classe$classe2$classe3'>
  155. <span class='pull-left thumb-small'>
  156. <img src='$colunas[7]' alt='John said' class='img-circle'>
  157. </span>
  158. <span class='media-body block m-b-none'>
  159. $colunas[5] $colunas[6] $frase $colunas[8]
  160. <br>
  161. <small class='text-muted'>$colunas[2]</small>
  162. </span>
  163. </a>";
  164. }
  165. return $list;
  166. }
  167. } catch (PDOException $ex) {
  168. print_r($ex);
  169. }
  170. }
  171. public function updStatusNot(PDO $conexao, $id_not, $tipo_not) {
  172. try {
  173. if ($tipo_not == 'P') {
  174. $stmt = NotificacaoDAO::$UPD_NOT_PUB;
  175. } else if ($tipo_not == 'A') {
  176. $stmt = NotificacaoDAO::$UPD_NOT_SALA;
  177. } else {
  178. $stmt = NotificacaoDAO::$UPD_NOT_COM;
  179. }
  180. $stmtUpdNot = $conexao->prepare($stmt);
  181. $stmtUpdNot->execute(array(
  182. ':id_not' => $id_not
  183. ));
  184. } catch (PDOException $ex) {
  185. print_r($ex);
  186. }
  187. }
  188. public function updStatusNots(PDO $conexao, $id_usuario) {
  189. try {
  190. $stmtUpdNot = $conexao->prepare(NotificacaoDAO::$UPD_NOTS);
  191. $stmtUpdNot->execute(array(
  192. ':id_usuario' => $id_usuario
  193. ));
  194. } catch (PDOException $ex) {
  195. print_r($ex);
  196. }
  197. }
  198. }
  199. ?>