PageRenderTime 59ms CodeModel.GetById 31ms RepoModel.GetById 1ms app.codeStats 0ms

/webapp/model/class.LinkMySQLDAO.php

https://github.com/akalsey/ThinkUp
PHP | 194 lines | 167 code | 21 blank | 6 comment | 7 complexity | 0953a23266281945e36e19692349d2ca MD5 | raw file
Possible License(s): LGPL-2.1
  1. <?php
  2. require_once 'model/class.PDODAO.php';
  3. require_once 'model/interface.LinkDAO.php';
  4. /**
  5. * Link MySQL Data Access Object
  6. *
  7. * @author Christoffer Viken <christoffer[at]viken[dot]me>
  8. * @author Gina Trapani <ginatrapani[at]gmail[dot]com>
  9. */
  10. class LinkMySQLDAO extends PDODAO implements LinkDAO {
  11. public function insert($url, $expanded, $title, $post_id, $network, $is_image = false ){
  12. $is_image = $this->convertBoolToDB($is_image);
  13. $q = " INSERT INTO #prefix#links ";
  14. $q .= " (url, expanded_url, title, post_id, network, is_image) ";
  15. $q .= " VALUES ( :url, :expanded, :title, :post_id, :network, :is_image ) ";
  16. $vars = array(
  17. ':url'=>$url,
  18. ':expanded'=>$expanded,
  19. ':title'=>$title,
  20. ':post_id'=>$post_id,
  21. ':network'=>$network,
  22. ':is_image'=>(int)$is_image
  23. );
  24. $ps = $this->execute($q, $vars);
  25. return $this->getInsertId($ps);
  26. }
  27. public function saveExpandedURL($url, $expanded, $title = '', $is_image = false ){
  28. $is_image = $this->convertBoolToDB($is_image);
  29. $q = " UPDATE #prefix#links ";
  30. $q .= " SET expanded_url=:expanded, title=:title, is_image=:isimage ";
  31. $q .= " WHERE url=:url ";
  32. $vars = array(
  33. ':url'=>$url,
  34. ':expanded'=>$expanded,
  35. ':title'=>$title,
  36. ':isimage'=>$is_image
  37. );
  38. $ps = $this->execute($q, $vars);
  39. $ret = $this->getUpdateCount($ps);
  40. if ($ret > 0) {
  41. $this->logger->logStatus("Expanded URL $expanded for $url saved", get_class($this));
  42. } else {
  43. $this->logger->logStatus("Expanded URL NOT saved", get_class($this));
  44. }
  45. return $ret;
  46. }
  47. public function saveExpansionError($url, $error_text){
  48. $q = " UPDATE #prefix#links ";
  49. $q .= " SET error=:error ";
  50. $q .= " WHERE url=:url ";
  51. $vars = array(
  52. ':url'=>$url,
  53. ':error'=>$error_text
  54. );
  55. $ps = $this->execute($q, $vars);
  56. $ret = $this->getUpdateCount($ps);
  57. if ($ret > 0) {
  58. $this->logger->logStatus("Error '$error_text' saved for link ID $url saved", get_class($this));
  59. } else {
  60. $this->logger->logStatus("Error '$error_text' for URL NOT saved", get_class($this));
  61. }
  62. return $ret;
  63. }
  64. public function update( $url, $expanded, $title, $post_id, $network, $is_image = false ){
  65. $q = " UPDATE #prefix#links ";
  66. $q .= " SET expanded_url=:expanded, title=:title, ";
  67. $q .= " post_id=:post_id, is_image=:is_image, network=:network ";
  68. $q .= " WHERE url=:url; ";
  69. $vars = array(
  70. ':url'=>$url,
  71. ':expanded'=>$expanded,
  72. ':title'=>$title,
  73. ':post_id'=>$post_id,
  74. ':is_image'=>$is_image,
  75. ':network'=>$network
  76. );
  77. $ps = $this->execute($q, $vars);
  78. return $this->getUpdateCount($ps);
  79. }
  80. public function getLinksByFriends($user_id, $network) {
  81. $q = "SELECT l.*, p.*, pub_date - interval 8 hour AS adj_pub_date ";
  82. $q .= "FROM #prefix#posts AS p ";
  83. $q .= "INNER JOIN #prefix#links AS l ";
  84. $q .= "ON p.post_id = l.post_id AND p.network = l.network ";
  85. $q .= "WHERE l.network = :network AND p.author_user_id IN ( ";
  86. $q .= " SELECT user_id FROM #prefix#follows AS f ";
  87. $q .= " WHERE f.follower_id=:user_id AND f.active=1 AND f.network=:network ";
  88. $q .= ")";
  89. $q .= "ORDER BY l.post_id DESC ";
  90. $q .= "LIMIT 15 ";
  91. $vars = array(
  92. ':user_id'=>$user_id,
  93. ':network'=>$network
  94. );
  95. $ps = $this->execute($q, $vars);
  96. return $this->getDataRowsAsObjects($ps, "Link");
  97. }
  98. public function getPhotosByFriends($user_id, $network) {
  99. $q = " SELECT l.*, p.*, pub_date - interval 8 hour as adj_pub_date ";
  100. $q .= " FROM #prefix#links AS l ";
  101. $q .= " INNER JOIN #prefix#posts p ";
  102. $q .= " ON p.post_id = l.post_id AND p.network = l.network ";
  103. $q .= " WHERE is_image = 1 AND l.network=:network AND p.author_user_id in ( ";
  104. $q .= " SELECT user_id FROM #prefix#follows AS f ";
  105. $q .= " WHERE f.follower_id=:user_id AND f.active=1 AND f.network = :network ";
  106. $q .= " ) ";
  107. $q .= " ORDER BY l.post_id DESC ";
  108. $q .= " LIMIT 15 ";
  109. $vars = array(
  110. ':user_id'=>$user_id,
  111. ':network'=>$network
  112. );
  113. $ps = $this->execute($q, $vars);
  114. return $this->getDataRowsAsObjects($ps, "Link");
  115. }
  116. public function getLinksToExpand($limit = 1500) {
  117. $q = " SELECT l1.url AS url ";
  118. $q .= " FROM ( ";
  119. $q .= " SELECT l.url, l.post_id ";
  120. $q .= " FROM #prefix#links AS l ";
  121. $q .= " WHERE l.expanded_url = '' and l.error = '' ";
  122. $q .= " ORDER BY post_id DESC LIMIT :limit ";
  123. $q .= " ) AS l1 ";
  124. $q .= " GROUP BY l1.url ";
  125. $vars = array(
  126. ':limit'=>$limit
  127. );
  128. $ps = $this->execute($q, $vars);
  129. $rows = $this->getDataRowsAsArrays($ps);
  130. $urls = array();
  131. foreach($rows as $row){
  132. $urls[] = $row['url'];
  133. }
  134. return $urls;
  135. }
  136. public function getLinksToExpandByURL($url) {
  137. $q = " SELECT l.url ";
  138. $q .= " FROM #prefix#links AS l ";
  139. $q .= " WHERE l.expanded_url = '' ";
  140. $q .= " AND l.url LIKE :url AND l.error = '' ";
  141. $q .= " GROUP BY l.url";
  142. $vars = array(
  143. ':url'=>$url."%"
  144. );
  145. $ps = $this->execute($q, $vars);
  146. $rows = $this->getDataRowsAsArrays($ps);
  147. $urls = array();
  148. foreach($rows as $row){
  149. $urls[] = $row['url'];
  150. }
  151. return $urls;
  152. }
  153. public function getLinkById($id) {
  154. $q = " SELECT l.* ";
  155. $q .= " FROM #prefix#links AS l ";
  156. $q .= " WHERE l.id=:id ";
  157. $vars = array(
  158. ':id'=>$id
  159. );
  160. $ps = $this->execute($q, $vars);
  161. return $this->getDataRowAsObject($ps, "Link");
  162. }
  163. public function getLinkByUrl($url) {
  164. $q = " SELECT l.* ";
  165. $q .= " FROM #prefix#links AS l ";
  166. $q .= " WHERE l.url=:url ";
  167. $vars = array(
  168. ':url'=>$url
  169. );
  170. $ps = $this->execute($q, $vars);
  171. return $this->getDataRowAsObject($ps, "Link");
  172. }
  173. }