PageRenderTime 68ms CodeModel.GetById 20ms RepoModel.GetById 1ms app.codeStats 0ms

/system/application/models/xare_model.php

https://github.com/xupisco/Xare-a-Link
PHP | 314 lines | 280 code | 30 blank | 4 comment | 33 complexity | 92213c534603b0b5dd65e7470868b1d1 MD5 | raw file
  1. <?php
  2. class xaRe_model extends Model {
  3. function xaRe_model() {
  4. parent::Model();
  5. }
  6. function getContent($content = "", $parents = "") {
  7. $this->db->select("c.id, c.user_id, parent, name, name_url, short_desc, link, views, clicks, comments, related, pagerank, score, users, c.date_added");
  8. if(is_numeric($content)) {
  9. $this->db->where("c.id = $content");
  10. } else {
  11. $this->db->where("name_url = '$content'");
  12. $this->db->where("parent = '$parents'");
  13. }
  14. $uid = $this->session->userdata("uid");
  15. if($uid !== false) {
  16. $this->db->select("ul.id AS ul_id");
  17. $this->db->join("users_links as ul", "ul.content_id = c.id and ul.user_id = $uid", "left");
  18. }
  19. $q = $this->db->get("contents as c");
  20. return ($q->num_rows() > 0) ? $q->row() : false;
  21. }
  22. function getParentIDsFromPath($path = "") {
  23. if(!strlen($path)) return "0";
  24. $apath = split("/", $path);
  25. $step = "";
  26. $parents = "";
  27. foreach($apath as $dir) {
  28. if($dir != "xare" || $dir != "s") {
  29. $xtra = (!strlen($step)) ? " AND parent = '0'" : " AND parent = '$step'";
  30. $q = $this->db->query("SELECT id from contents WHERE name_url = '$dir' $xtra");
  31. $parents .= $q->row()->id.",";
  32. if(!$step) {
  33. $step .= $q->row()->id;
  34. } else {
  35. $step = $q->row()->id.",".$step;
  36. }
  37. }
  38. }
  39. return implode(",", array_reverse(explode(",", substr($parents, 0, -1))));
  40. }
  41. // Related:
  42. // 0 - Qualquer um
  43. // 1 - Sem sub-itens
  44. // 2 - Com sub-itens (diretório)
  45. function getContentByParent($parent = false, $related = 0, $sort = "related, name", $st = "ASC", $sr = 0, $qs = false) {
  46. $this->db->select("c.id, name, parent_name, name_url, short_desc, link, views, clicks, comments, related, pagerank, score, users, c.date_added, if(related, concat('0_', name), concat('1_', name)) as tmpsorter");
  47. if($related) {
  48. $rel = ($related == 1) ? "related = 0" : "related <> 0";
  49. $this->db->where($rel);
  50. }
  51. if($parent !== false) {
  52. if(is_numeric($parent)) {
  53. $this->db->where("parent = $parent");
  54. } else {
  55. $this->db->where("name_url = '$parent'");
  56. }
  57. }
  58. if($qs) {
  59. if(substr($qs, 0, 2) != "u:") {
  60. $qs = str_replace("s:", "", $qs);
  61. $this->db->where("(name like '%$qs%' or short_desc like '%$qs%')");
  62. } else {
  63. $qs = str_replace("u:", "", $qs);
  64. $this->db->where("c.id IN (SELECT content_id from users_links WHERE user_id = $qs)");
  65. }
  66. }
  67. $uid = $this->session->userdata("uid");
  68. if($uid !== false) {
  69. $this->db->select("ul.id AS ul_id");
  70. $this->db->join("users_links as ul", "ul.content_id = c.id and ul.user_id = $uid", "left");
  71. }
  72. $sort = ($sort == "date") ? "c.date_added" : $sort;
  73. $sort = ($sort == "related") ? "tmpsorter" : $sort;
  74. $st = ($sort == "tmpsorter") ? "ASC" : $st;
  75. $this->db->orderby($sort, $st);
  76. $this->db->limit(25, $sr);
  77. $q = $this->db->get("contents as c");
  78. return $q;
  79. }
  80. function getCommentsByContentID($id) {
  81. $this->db->select("*");
  82. $this->db->orderby("date_added DESC");
  83. $this->db->where("content_id", $id);
  84. $q = $this->db->get("comments");
  85. return ($q->num_rows() > 0) ? $q : false;
  86. }
  87. function getRelationFromContentID($id = 0) {
  88. $parents = $this->db->query("SELECT parent FROM contents WHERE id = $id")->row()->parent;
  89. $arr = array();
  90. foreach(array_reverse(explode(",", $parents)) as $parent) {
  91. $q = $this->db->query("SELECT name, name_url FROM contents WHERE id = $parent");
  92. if($q->result()) $arr[] = array($q->row()->name, $q->row()->name_url);
  93. }
  94. return $arr;
  95. }
  96. function updateContentViews($id = 0) {
  97. $this->db->query("UPDATE contents SET views = views + 1 WHERE id = $id");
  98. return true;
  99. }
  100. function updateContentClicks($id = 0) {
  101. $this->db->query("UPDATE contents SET clicks = clicks + 1 WHERE id = $id");
  102. return true;
  103. }
  104. function updateContentComments($id = 0) {
  105. $this->db->query("UPDATE contents SET comments = comments + 1 WHERE id = $id");
  106. return true;
  107. }
  108. function addDir($name, $parent) {
  109. $post = array(
  110. 'user_id' => $this->session->userdata('uid'),
  111. 'parent' => $parent,
  112. 'name' => $name,
  113. 'name_url' => url_title($name),
  114. 'short_desc' => "",
  115. 'link' => 0,
  116. 'views' => 0,
  117. 'clicks' => 0,
  118. 'comments' => 0,
  119. 'pagerank' => 0,
  120. 'score' => 0,
  121. 'related' => 0,
  122. 'date_added' => time()
  123. );
  124. $this->db->insert('contents', $post);
  125. return $this->db->insert_id();
  126. }
  127. function addLink($data) {
  128. $post = array(
  129. 'user_id' => $this->session->userdata('uid'),
  130. 'parent' => $data['parent'],
  131. 'parent_name' => $data['parent_name'],
  132. 'name' => $data['name'],
  133. 'name_url' => url_title($data['name']),
  134. 'short_desc' => $data['desc'],
  135. 'link' => $data['link'],
  136. 'views' => 0,
  137. 'clicks' => 0,
  138. 'comments' => 0,
  139. 'pagerank' => $data['pagerank'],
  140. 'score' => 0,
  141. 'related' => 0,
  142. 'date_added' => time()
  143. );
  144. $this->db->insert('contents', $post);
  145. return $this->db->insert_id();
  146. }
  147. function editLink($data, $id) {
  148. $post = array(
  149. 'parent' => $data['parent'],
  150. 'parent_name' => $data['parent_name'],
  151. 'name' => $data['name'],
  152. 'name_url' => url_title($data['name']),
  153. 'short_desc' => $data['desc'],
  154. 'link' => $data['link'],
  155. 'pagerank' => $data['pagerank']
  156. );
  157. $this->db->where("id", $id);
  158. $this->db->update('contents', $post);
  159. $rel_parents = $id.",".$data['parent'];
  160. $rel_cparents = $id.",".$data['c_parents'];
  161. if($rel_parents != $rel_cparents) {
  162. $this->db->query("UPDATE contents set parent = replace(CONCAT(',',parent,','), ',$rel_cparents,', '$rel_parents') where CONCAT(',',parent,',') like '%,$rel_cparents,%'");
  163. }
  164. return $id;
  165. }
  166. function addComment($data) {
  167. $post = array(
  168. 'user_id' => $this->session->userdata('uid'),
  169. 'content_id' => $data['cid'],
  170. 'foo_user' => $data['name'].":".$data['email'],
  171. 'comment' => $data['cmm'],
  172. 'date_added' => time()
  173. );
  174. $this->db->insert('comments', $post);
  175. $this->updateContentComments($data['cid']);
  176. return $this->db->insert_id();
  177. }
  178. function addRelation($ids) {
  179. $this->db->query("UPDATE contents SET related = related + 1 WHERE ID IN ($ids)");
  180. return true;
  181. }
  182. function updateRelation($is, $was) {
  183. $this->db->query("UPDATE contents SET related = related - 1 WHERE ID IN ($was)");
  184. $this->db->query("UPDATE contents SET related = related + 1 WHERE ID IN ($is)");
  185. return true;
  186. }
  187. function CR_Comment($data) {
  188. $this->db->select("id");
  189. $this->db->where("content_id", $data['cid']);
  190. $this->db->where("comment", $data['cmm']);
  191. $q = $this->db->get("comments");
  192. return ($q->num_rows() > 0) ? false : true;
  193. }
  194. function validateURL($url) {
  195. $url = (strpos($url, "http://") === false) ? "http://".$url : $url;
  196. $this->db->select("id");
  197. $this->db->where("link", $url);
  198. $q = $this->db->get("contents");
  199. return ($q->num_rows() > 0) ? false : true;
  200. }
  201. function verifyFav($id) {
  202. $this->db->select("id");
  203. $this->db->where("user_id", $this->session->userdata('uid'));
  204. $this->db->where("content_id", $id);
  205. $q = $this->db->get("users_links");
  206. return ($q->num_rows() > 0) ? true : false;
  207. }
  208. function userSaveLink($id) {
  209. if(!$this->verifyFav($id)) {
  210. $post = array(
  211. 'user_id' => $this->session->userdata('uid'),
  212. 'content_id' => $id,
  213. 'date_added' => time()
  214. );
  215. $this->db->insert('users_links', $post);
  216. $ret = $this->db->insert_id();
  217. $this->db->query("UPDATE contents SET users = users + 1 WHERE id = $id");
  218. return $ret;
  219. } else {
  220. return "1";
  221. }
  222. }
  223. function userRemoveLink($id) {
  224. $uid = $this->session->userdata("uid");
  225. $this->db->query("UPDATE contents SET users = users - 1 WHERE id = $id");
  226. $this->db->query("DELETE FROM users_links where content_id = $id AND user_id = $uid");
  227. return true;
  228. }
  229. function getUIDByLogin($login) {
  230. $q = $this->db->query("SELECT id FROM users WHERE login = '$login'");
  231. return ($q->num_rows() > 0) ? $q->row()->id : false;
  232. }
  233. function getContentTags($cid) {
  234. $this->db->select("count(t.tag) as rel, t.tag, t.tag_url");
  235. $this->db->where("tm.tag_id = t.id AND tm.content_id = $cid");
  236. $this->db->groupby("t.tag");
  237. $this->db->orderby("RAND()");
  238. return $this->db->get("tags AS t, tagmap AS tm")->result();
  239. }
  240. function getUserTags($uid, $str = 0) {
  241. $this->db->select("count(t.tag) as rel, t.tag, t.tag_url");
  242. $this->db->where("tm.tag_id = t.id");
  243. $this->db->where("tm.user_id = $uid");
  244. $this->db->groupby("t.tag");
  245. if($str) $this->db->where("t.tag LIKE '$str%'");
  246. return $this->db->get("tags AS t, tagmap AS tm")->result();
  247. }
  248. function getTagsByContentAndUser($cid = 0, $uid) {
  249. $this->db->select("t.tag, t.tag_url");
  250. $this->db->join("tagmap AS tm", "tm.tag_id = t.id", "LEFT");
  251. $this->db->where("tm.content_id = $cid AND tm.user_id = $uid");
  252. return $this->db->get("tags AS t")->result();
  253. }
  254. function checkBaseTags($tags) {
  255. $tags_id = array();
  256. foreach($tags as &$val) {
  257. $val = utf8_decode($val);
  258. if(strlen($val)) {
  259. $q = $this->db->query("SELECT id from tags where tag = '$val'");
  260. if(!$q->num_rows()) {
  261. $post = array("tag" => $val, "tag_url" => url_title($val));
  262. $add = $this->db->insert("tags", $post);
  263. $tags_id[] = $this->db->insert_id();
  264. } else {
  265. $tags_id[] = $q->row()->id;
  266. }
  267. }
  268. }
  269. return $tags_id;
  270. }
  271. function clearContentTags($cid, $uid) {
  272. $this->db->where("content_id = $cid AND user_id = $uid");
  273. $this->db->delete("tagmap");
  274. return true;
  275. }
  276. function updateContentTags($cid, $uid, $tags) {
  277. foreach($tags as $id) {
  278. $post = array("tag_id" => $id, "content_id" => $cid, "user_id" => $uid);
  279. $this->db->insert("tagmap", $post);
  280. }
  281. return true;
  282. }
  283. }
  284. ?>