PageRenderTime 79ms CodeModel.GetById 24ms RepoModel.GetById 0ms app.codeStats 0ms

/application/modules/multimedia/models/dao/mysql/Set.php

https://bitbucket.org/siwawong/tomatocms
PHP | 227 lines | 191 code | 18 blank | 18 comment | 19 complexity | 2031b62f98d25f12819ae2ac5224e4a1 MD5 | raw file
Possible License(s): LGPL-2.1, GPL-2.0, AGPL-1.0
  1. <?php
  2. /**
  3. * TomatoCMS
  4. *
  5. * LICENSE
  6. *
  7. * This source file is subject to the GNU GENERAL PUBLIC LICENSE Version 2
  8. * that is bundled with this package in the file LICENSE.txt.
  9. * It is also available through the world-wide-web at this URL:
  10. * http://www.gnu.org/licenses/gpl-2.0.txt
  11. * If you did not receive a copy of the license and are unable to
  12. * obtain it through the world-wide-web, please send an email
  13. * to license@tomatocms.com so we can send you a copy immediately.
  14. *
  15. * @copyright Copyright (c) 2009-2010 TIG Corporation (http://www.tig.vn)
  16. * @license http://www.gnu.org/licenses/gpl-2.0.txt GNU GENERAL PUBLIC LICENSE Version 2
  17. * @version $Id: Set.php 5152 2010-08-30 07:25:57Z huuphuoc $
  18. * @since 2.0.5
  19. */
  20. class Multimedia_Models_Dao_Mysql_Set extends Tomato_Model_Dao
  21. implements Multimedia_Models_Interface_Set
  22. {
  23. public function convert($entity)
  24. {
  25. return new Multimedia_Models_Set($entity);
  26. }
  27. public function getById($id)
  28. {
  29. $sql = sprintf("SELECT * FROM " . $this->_prefix . "multimedia_set
  30. WHERE set_id = '%s'
  31. LIMIT 1",
  32. mysql_real_escape_string($id));
  33. $rs = mysql_query($sql);
  34. $return = (0 == mysql_num_rows($rs)) ? null : new Multimedia_Models_Set(mysql_fetch_object($rs));
  35. mysql_free_result($rs);
  36. return $return;
  37. }
  38. public function add($set)
  39. {
  40. $sql = sprintf("INSERT INTO " . $this->_prefix . "multimedia_set (title, slug, description, created_date, created_user_id,
  41. created_user_name,
  42. image_square, image_thumbnail, image_small, image_crop, image_medium, image_large, is_active)
  43. VALUES ('%s', '%s', '%s', '%s', '%s',
  44. '%s', '%s', '%s', '%s', '%s',
  45. '%s', '%s', '%s')",
  46. mysql_real_escape_string($set->title),
  47. mysql_real_escape_string($set->slug),
  48. mysql_real_escape_string($set->description),
  49. mysql_real_escape_string($set->created_date),
  50. mysql_real_escape_string($set->created_user_id),
  51. mysql_real_escape_string($set->created_user_name),
  52. mysql_real_escape_string($set->image_square),
  53. mysql_real_escape_string($set->image_thumbnail),
  54. mysql_real_escape_string($set->image_small),
  55. mysql_real_escape_string($set->image_crop),
  56. mysql_real_escape_string($set->image_medium),
  57. mysql_real_escape_string($set->image_large),
  58. mysql_real_escape_string($set->is_active));
  59. mysql_query($sql);
  60. return mysql_insert_id();
  61. }
  62. public function update($set)
  63. {
  64. $sql = sprintf("UPDATE " . $this->_prefix . "multimedia_set
  65. SET title = '%s', slug = '%s', description = '%s',
  66. image_square = '%s', image_thumbnail = '%s', image_small = '%s', image_crop = '%s', image_medium = '%s', image_large = '%s'
  67. WHERE set_id = '%s'",
  68. mysql_real_escape_string($set->title),
  69. mysql_real_escape_string($set->slug),
  70. mysql_real_escape_string($set->description),
  71. mysql_real_escape_string($set->image_square),
  72. mysql_real_escape_string($set->image_thumbnail),
  73. mysql_real_escape_string($set->image_small),
  74. mysql_real_escape_string($set->image_crop),
  75. mysql_real_escape_string($set->image_medium),
  76. mysql_real_escape_string($set->image_large),
  77. mysql_real_escape_string($set->set_id));
  78. mysql_query($sql);
  79. return mysql_affected_rows();
  80. }
  81. public function find($offset = null, $count = null, $exp = null)
  82. {
  83. $sql = "SELECT * FROM " . $this->_prefix . "multimedia_set AS s";
  84. if ($exp) {
  85. $where = array();
  86. if (isset($exp['created_user_id'])) {
  87. $where[] = sprintf("s.created_user_id = '%s'", mysql_real_escape_string($exp['created_user_id']));
  88. }
  89. if (isset($exp['keyword'])) {
  90. $where[] = "s.title LIKE '%" . addslashes($exp['keyword']) . "%'";
  91. }
  92. if (isset($exp['is_active'])) {
  93. $where[] = sprintf("s.is_active = '%s'", (int)$exp['is_active']);
  94. }
  95. if (count($where) > 0) {
  96. $sql .= " WHERE " . implode(" AND ", $where);
  97. }
  98. }
  99. $sql .= " ORDER BY s.set_id DESC";
  100. if (is_int($offset) && is_int($count)) {
  101. $sql .= sprintf(" LIMIT %s, %s", $offset, $count);
  102. }
  103. $rs = mysql_query($sql);
  104. $rows = array();
  105. while ($row = mysql_fetch_object($rs)) {
  106. $rows[] = $row;
  107. }
  108. mysql_free_result($rs);
  109. return new Tomato_Model_RecordSet($rows, $this);
  110. }
  111. public function count($exp = null)
  112. {
  113. $sql = "SELECT COUNT(*) AS num_sets FROM " . $this->_prefix . "multimedia_set AS s";
  114. if ($exp) {
  115. $where = array();
  116. if (isset($exp['created_user_id'])) {
  117. $where[] = sprintf("s.created_user_id = '%s'", mysql_real_escape_string($exp['created_user_id']));
  118. }
  119. if (isset($exp['keyword'])) {
  120. $where[] = "s.title LIKE '%" . addslashes($exp['keyword']) . "%'";
  121. }
  122. if (isset($exp['is_active'])) {
  123. $where[] = sprintf("s.is_active = '%s'", (int)$exp['is_active']);
  124. }
  125. if (count($where) > 0) {
  126. $sql .= " WHERE ".implode(" AND ", $where);
  127. }
  128. }
  129. $sql .= " LIMIT 1";
  130. $rs = mysql_query($sql);
  131. $row = mysql_fetch_object($rs);
  132. mysql_free_result($rs);
  133. return $row->num_sets;
  134. }
  135. public function delete($id)
  136. {
  137. $sql = sprintf("DELETE FROM " . $this->_prefix . "multimedia_file_set_assoc WHERE set_id = '%s'",
  138. mysql_real_escape_string($id));
  139. mysql_query($sql);
  140. $sql = sprintf("DELETE FROM " . $this->_prefix . "multimedia_set WHERE set_id = '%s'",
  141. mysql_real_escape_string($id));
  142. mysql_query($sql);
  143. return mysql_affected_rows();
  144. }
  145. public function updateDescription($setId, $title, $description = null)
  146. {
  147. $sql = "UPDATE " . $this->_prefix . "multimedia_set SET ";
  148. $updates = array();
  149. if (null != $title) {
  150. $updates[] = sprintf("title = '%s'", mysql_real_escape_string($title));
  151. $updates[] = sprintf("slug = '%s'",
  152. mysql_real_escape_string(Tomato_Utility_String::removeSign($title, '-', true)));
  153. }
  154. if (null != $description) {
  155. $updates[] = sprintf("description = '%s'", mysql_real_escape_string($description));
  156. }
  157. $sql .= implode(',', $updates);
  158. $sql .= sprintf(" WHERE set_id = '%s'", mysql_real_escape_string($setId));
  159. mysql_query($sql);
  160. return mysql_affected_rows();
  161. }
  162. public function toggleStatus($id)
  163. {
  164. $sql = sprintf("UPDATE " . $this->_prefix . "multimedia_set
  165. SET is_active = 1 - is_active
  166. WHERE set_id = '%s'",
  167. mysql_real_escape_string($id));
  168. mysql_query($sql);
  169. return mysql_affected_rows();
  170. }
  171. public function getByTag($tagId, $offset, $count)
  172. {
  173. $sql = sprintf("SELECT s.*
  174. FROM " . $this->_prefix . "multimedia_set AS s
  175. INNER JOIN " . $this->_prefix . "tag_item_assoc AS ti
  176. ON s.set_id = ti.item_id
  177. WHERE ti.tag_id = '%s'
  178. AND ti.item_name = 'set_id'
  179. AND s.is_active = 1
  180. ORDER BY s.set_id DESC
  181. LIMIT %s, %s",
  182. mysql_real_escape_string($tagId),
  183. mysql_real_escape_string($offset),
  184. mysql_real_escape_string($count));
  185. $rs = mysql_query($sql);
  186. $rows = array();
  187. while ($row = mysql_fetch_object($rs)) {
  188. $rows[] = $row;
  189. }
  190. mysql_free_result($rs);
  191. return new Tomato_Model_RecordSet($rows, $this);
  192. }
  193. public function countByTag($tagId)
  194. {
  195. $sql = sprintf("SELECT COUNT(set_id) AS num_sets
  196. FROM " . $this->_prefix . "multimedia_set AS s
  197. INNER JOIN " . $this->_prefix . "tag_item_assoc AS ti
  198. ON s.set_id = ti.item_id
  199. WHERE ti.tag_id = '%s'
  200. AND ti.item_name = 'set_id'
  201. AND s.is_active = 1
  202. LIMIT 1",
  203. mysql_real_escape_string($tagId));
  204. $rs = mysql_query($sql);
  205. $row = mysql_fetch_object($rs);
  206. mysql_free_result($rs);
  207. return $row->num_sets;
  208. }
  209. }