/halogy/application/modules/events/models/events_model.php

https://bitbucket.org/haloweb/halogy-1.0/ · PHP · 473 lines · 343 code · 85 blank · 45 comment · 27 complexity · 4d41869f0de57ac2d30e816d3a2cca09 MD5 · raw file

  1. <?php
  2. /**
  3. * Halogy
  4. *
  5. * A user friendly, modular content management system for PHP 5.0
  6. * Built on CodeIgniter - http://codeigniter.com
  7. *
  8. * @package Halogy
  9. * @author Haloweb Ltd.
  10. * @copyright Copyright (c) 2008-2011, Haloweb Ltd.
  11. * @license http://halogy.com/license
  12. * @link http://halogy.com/
  13. * @since Version 1.0
  14. * @filesource
  15. */
  16. // ------------------------------------------------------------------------
  17. class Events_Model extends Model {
  18. function Events_Model()
  19. {
  20. parent::Model();
  21. // get siteID, if available
  22. if (defined('SITEID'))
  23. {
  24. $this->siteID = SITEID;
  25. }
  26. }
  27. function get_all_events()
  28. {
  29. $this->db->where('deleted', 0);
  30. $this->db->where('published', 1);
  31. $this->db->where('siteID', $this->siteID);
  32. $query = $this->db->get('events');
  33. if ($query->num_rows() > 0)
  34. {
  35. $result = $query->result_array();
  36. return $result;
  37. }
  38. else
  39. {
  40. return FALSE;
  41. }
  42. }
  43. function get_event($eventID)
  44. {
  45. $this->db->where('eventID', $eventID);
  46. $this->db->where('deleted', 0);
  47. $this->db->where('published', 1);
  48. $this->db->where('siteID', $this->siteID);
  49. $query = $this->db->get('events', 1);
  50. if ( $query->num_rows() == 1 )
  51. {
  52. $event = $query->row_array();
  53. return $event;
  54. }
  55. else
  56. {
  57. return FALSE;
  58. }
  59. }
  60. function get_post_by_id($eventID)
  61. {
  62. $this->db->where('eventID', $eventID);
  63. $query = $this->db->get('event_post', 1);
  64. if ($query->num_rows())
  65. {
  66. $post = $query->row_array();
  67. return $post;
  68. }
  69. else
  70. {
  71. return FALSE;
  72. }
  73. }
  74. function get_tags()
  75. {
  76. $this->db->join('tags_ref', 'tags_ref.tag_id = tags.id');
  77. $this->db->where('tags_ref.siteID', $this->siteID);
  78. $query = $this->db->get('tags');
  79. if ($query->num_rows())
  80. {
  81. return $query->result_array();
  82. }
  83. else
  84. {
  85. return FALSE;
  86. }
  87. }
  88. function update_tags($eventID = '', $tags = '')
  89. {
  90. // add tags
  91. if ($tags)
  92. {
  93. $this->tags->delete_tag_ref(
  94. array(
  95. 'table' => 'events',
  96. 'row_id' => $eventID,
  97. 'siteID' => $this->siteID)
  98. );
  99. $tags = str_replace(',', ' ', trim($tags));
  100. $tagsArray = explode(' ', $tags);
  101. foreach($tagsArray as $key => $tag)
  102. {
  103. $tag = trim($tag);
  104. if (isset($tag) && $tags != '' && strlen($tag) > 0)
  105. {
  106. $tidyTagsArray[] = $tag;
  107. }
  108. }
  109. $tags = array(
  110. 'table' => 'events',
  111. 'tags' => $tidyTagsArray,
  112. 'row_id' => $eventID,
  113. 'siteID' => $this->siteID
  114. );
  115. $this->tags->add_tags($tags);
  116. return true;
  117. }
  118. else
  119. {
  120. return FALSE;
  121. }
  122. }
  123. function get_events($num = '')
  124. {
  125. // default where
  126. $where = array(
  127. 'deleted' => 0,
  128. 'published' => 1,
  129. 'siteID' => $this->siteID
  130. );
  131. // where event is not old
  132. $where['eventDate >'] = date("Y-m-d H:i:s", time());
  133. // wheres
  134. $this->db->where($where);
  135. // order by event date
  136. $this->db->order_by('eventDate', 'asc');
  137. // get rows with paging
  138. $query = $this->db->get('events', $num);
  139. if ($query->num_rows())
  140. {
  141. return $query->result_array();
  142. }
  143. else
  144. {
  145. return FALSE;
  146. }
  147. }
  148. function get_featured_events($num = '')
  149. {
  150. // default where
  151. $where = array(
  152. 'deleted' => 0,
  153. 'published' => 1,
  154. 'featured' => 1,
  155. 'siteID' => $this->siteID
  156. );
  157. // wheres
  158. $this->db->where($where);
  159. // order by event date
  160. $this->db->order_by('eventDate', 'desc');
  161. // get rows with paging
  162. $query = $this->db->get('events');
  163. if ($query->num_rows())
  164. {
  165. return $query->result_array();
  166. }
  167. else
  168. {
  169. return FALSE;
  170. }
  171. }
  172. function get_month($month = '', $year = '')
  173. {
  174. // default where
  175. $where = array(
  176. 'deleted' => 0,
  177. 'published' => 1,
  178. 'siteID' => $this->siteID
  179. );
  180. // where event is not old and is in this month
  181. $month = ($month) ? $month : date("m", time());
  182. $next_month = $month + 1;
  183. $year = ($year) ? $year : date("Y", time());
  184. $from = date("Y-m-d H:i:s", mktime(0, 0, 0, $month, 1, $year));
  185. $to = date("Y-m-d H:i:s", mktime(23, 59, 59, $next_month, 0, $year));
  186. $where['eventDate >'] = $from;
  187. $where['eventDate <'] = $to;
  188. // wheres
  189. $this->db->where($where);
  190. // order by event date
  191. $this->db->order_by('eventDate', 'asc');
  192. // get rows with paging
  193. $query = $this->db->get('events');
  194. if ($query->num_rows())
  195. {
  196. return $query->result_array();
  197. }
  198. else
  199. {
  200. return FALSE;
  201. }
  202. }
  203. function get_events_by_tag($tag, $limit = 20)
  204. {
  205. // get rows based on this tag
  206. $result = $this->tags->fetch_rows(array(
  207. 'table' => 'events',
  208. 'tags' => array(1, $tag),
  209. 'limit' => $limit,
  210. 'siteID' => $this->siteID
  211. ));
  212. $tags = $result->result_array();
  213. foreach ($tags as $tag)
  214. {
  215. $tagsArray[] = $tag['row_id'];
  216. }
  217. // default where
  218. $this->db->where(array(
  219. 'deleted' => 0,
  220. 'published' => 1,
  221. 'siteID' => $this->siteID
  222. ));
  223. // where event is not old
  224. $where['eventDate >'] = date("Y-m-d H:i:s", time());
  225. // where tags
  226. $this->db->where_in('eventID', $tagsArray);
  227. $this->db->order_by('eventDate', 'asc');
  228. $query = $this->db->get('events', $limit);
  229. if ($query->num_rows() > 0)
  230. {
  231. return $query->result_array();
  232. }
  233. else
  234. {
  235. return FALSE;
  236. }
  237. }
  238. function get_events_by_date($year, $month = '', $day = 0)
  239. {
  240. if ($month)
  241. {
  242. $from = date("Y-m-d H:i:s", mktime(0, 0, 0, $month, ((!$day) ? 1 : $day), $year));
  243. $to = ($day < 1) ? date("Y-m-d H:i:s", mktime(23, 59, 59, ($month+1), $day, $year)) : date("Y-m-d H:i:s", mktime(23, 59, 59, $month, $day, $year));
  244. }
  245. else
  246. {
  247. $from = date("Y-m-d H:i:s", mktime(0, 0, 0, 1, ((!$day) ? 1 : $day), $year));
  248. $to = date("Y-m-d H:i:s", mktime(0, 0, 0, 1, 1, ($year+1)));
  249. }
  250. $this->db->where('eventDate >', $from);
  251. $this->db->where('eventDate <', $to);
  252. $this->db->where('deleted', 0);
  253. $this->db->where('published', 1);
  254. $this->db->where('siteID', $this->siteID);
  255. $this->db->order_by('eventDate');
  256. $query = $this->db->get('events');
  257. if ($query->num_rows() > 0)
  258. {
  259. return $query->result_array();
  260. }
  261. else
  262. {
  263. return FALSE;
  264. }
  265. }
  266. function get_post_by_title($title = '')
  267. {
  268. $this->db->where('eventTitle', $title);
  269. $this->db->where('deleted', 0);
  270. $this->db->where('published', 1);
  271. $this->db->where('siteID', $this->siteID);
  272. $query = $this->db->get('events');
  273. if ($query->num_rows() > 0)
  274. {
  275. return $query->row_array();
  276. }
  277. else
  278. {
  279. return FALSE;
  280. }
  281. }
  282. function get_archive()
  283. {
  284. // selects
  285. $this->db->select('COUNT(eventID) as numEvents, DATE_FORMAT(eventDate, "%M %Y") as dateStr, DATE_FORMAT(eventDate, "%m") as month, DATE_FORMAT(eventDate, "%Y") as year', FALSE);
  286. $this->db->where('deleted', 0);
  287. $this->db->where('published', 1);
  288. $this->db->where('siteID', $this->siteID);
  289. // where event is old
  290. $this->db->where('eventDate <', date("Y-m-d H:i:s", time()));
  291. // group by month
  292. $this->db->group_by('dateStr');
  293. $query = $this->db->get('events');
  294. if ($query->num_rows() > 0)
  295. {
  296. return $query->result_array();
  297. }
  298. else
  299. {
  300. return FALSE;
  301. }
  302. }
  303. function get_headlines($num = 10)
  304. {
  305. $this->db->select('eventID, eventTitle, eventDate, description');
  306. return $this->get_events($num);
  307. }
  308. function search_events($query = '', $ids = '')
  309. {
  310. if (!$query && !$ids)
  311. {
  312. return FALSE;
  313. }
  314. // default wheres
  315. $this->db->where('deleted', 0);
  316. $this->db->where('published', 1);
  317. $this->db->where('siteID', $this->siteID);
  318. // search
  319. if ($query)
  320. {
  321. // tidy query
  322. $q = $this->db->escape_like_str($query);
  323. $sql = '(eventTitle LIKE "%'.$q.'%" OR description LIKE "%'.$q.'%")';
  324. }
  325. if ($ids)
  326. {
  327. $sql .= ' OR eventID IN ('.implode(',', $ids).')';
  328. }
  329. $this->db->where($sql);
  330. // where event is not old
  331. $this->db->where('eventDate >', date("Y-m-d H:i:s", time()));
  332. $this->db->order_by('eventDate', 'asc');
  333. $query = $this->db->get('events');
  334. if ($query->num_rows() > 0)
  335. {
  336. return $query->result_array();
  337. }
  338. else
  339. {
  340. return FALSE;
  341. }
  342. }
  343. function lookup_user($userID, $display = FALSE)
  344. {
  345. // default wheres
  346. $this->db->where('userID', $userID);
  347. // grab
  348. $query = $this->db->get('users', 1);
  349. if ($query->num_rows())
  350. {
  351. $row = $query->row_array();
  352. if ($display !== FALSE)
  353. {
  354. return ($row['displayName']) ? $row['displayName'] : $row['firstName'].' '.$row['lastName'];
  355. }
  356. else
  357. {
  358. return $row;
  359. }
  360. }
  361. else
  362. {
  363. return FALSE;
  364. }
  365. }
  366. /// OLD!!! ///
  367. function tag_cloud($num)
  368. {
  369. $this->db->select('t.tag, COUNT(pt.tagID) as qty', FALSE);
  370. $this->db->join('tags pt', 'pt.tag_id = t.id', 'inner');
  371. $this->db->groupby('t.id');
  372. $query = $this->db->get('tags t');
  373. $built = array();
  374. if ($query->num_rows > 0)
  375. {
  376. $result = $query->result_array();
  377. foreach ($result as $row)
  378. {
  379. $built[$row['tag']] = $row['qty'];
  380. }
  381. return $built;
  382. }
  383. else
  384. {
  385. return array();
  386. }
  387. }
  388. }