1: <?php
2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
18: defined('XOOPS_ROOT_PATH') || exit('Restricted access');
19:
20: 21: 22: 23: 24: 25: 26:
27: class XoopsImage extends XoopsObject
28: {
29: 30: 31:
32: public function __construct()
33: {
34: parent::__construct();
35: $this->initVar('image_id', XOBJ_DTYPE_INT, null, false);
36: $this->initVar('image_name', XOBJ_DTYPE_OTHER, null, false, 30);
37: $this->initVar('image_nicename', XOBJ_DTYPE_TXTBOX, null, true, 100);
38: $this->initVar('image_mimetype', XOBJ_DTYPE_OTHER, null, false);
39: $this->initVar('image_created', XOBJ_DTYPE_INT, null, false);
40: $this->initVar('image_display', XOBJ_DTYPE_INT, 1, false);
41: $this->initVar('image_weight', XOBJ_DTYPE_INT, 0, false);
42: $this->initVar('image_body', XOBJ_DTYPE_SOURCE, null, true);
43: $this->initVar('imgcat_id', XOBJ_DTYPE_INT, 0, false);
44: }
45:
46: 47: 48: 49: 50:
51: public function id($format = 'N')
52: {
53: return $this->getVar('image_id', $format);
54: }
55:
56: 57: 58: 59: 60:
61: public function image_id($format = '')
62: {
63: return $this->getVar('image_id', $format);
64: }
65:
66: 67: 68: 69: 70:
71: public function image_name($format = '')
72: {
73: return $this->getVar('image_name', $format);
74: }
75:
76: 77: 78: 79: 80:
81: public function image_nicename($format = '')
82: {
83: return $this->getVar('image_nicename', $format);
84: }
85:
86: 87: 88: 89: 90:
91: public function image_mimetype($format = '')
92: {
93: return $this->getVar('image_mimetype', $format);
94: }
95:
96: 97: 98: 99: 100:
101: public function image_created($format = '')
102: {
103: return $this->getVar('image_created', $format);
104: }
105:
106: 107: 108: 109: 110:
111: public function image_display($format = '')
112: {
113: return $this->getVar('image_display', $format);
114: }
115:
116: 117: 118: 119: 120:
121: public function image_weight($format = '')
122: {
123: return $this->getVar('image_weight', $format);
124: }
125:
126: 127: 128: 129: 130:
131: public function image_body($format = '')
132: {
133: return $this->getVar('image_body', $format);
134: }
135:
136: 137: 138: 139: 140:
141: public function imgcat_id($format = '')
142: {
143: return $this->getVar('imgcat_id', $format);
144: }
145: }
146:
147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157:
158: class XoopsImageHandler extends XoopsObjectHandler
159: {
160: 161: 162: 163: 164: 165:
166: public function create($isNew = true)
167: {
168: $image = new XoopsImage();
169: if ($isNew) {
170: $image->setNew();
171: }
172:
173: return $image;
174: }
175:
176: 177: 178: 179: 180: 181: 182:
183: public function get($id, $getbinary = true)
184: {
185: $image = false;
186: $id = (int)$id;
187: if ($id > 0) {
188: $sql = 'SELECT i.*, b.image_body FROM ' . $this->db->prefix('image') . ' i LEFT JOIN ' . $this->db->prefix('imagebody') . ' b ON b.image_id=i.image_id WHERE i.image_id=' . $id;
189: if (!$result = $this->db->query($sql)) {
190: return $image;
191: }
192: $numrows = $this->db->getRowsNum($result);
193: if ($numrows == 1) {
194: $image = new XoopsImage();
195: $image->assignVars($this->db->fetchArray($result));
196: }
197: }
198:
199: return $image;
200: }
201:
202: 203: 204: 205: 206: 207: 208:
209: public function insert(XoopsObject $image)
210: {
211: $className = 'XoopsImage';
212: if (!($image instanceof $className)) {
213: return false;
214: }
215:
216: if (!$image->isDirty()) {
217: return true;
218: }
219: if (!$image->cleanVars()) {
220: return false;
221: }
222: foreach ($image->cleanVars as $k => $v) {
223: ${$k} = $v;
224: }
225: if ($image->isNew()) {
226: $image_id = $this->db->genId('image_image_id_seq');
227: $sql = sprintf('INSERT INTO %s (image_id, image_name, image_nicename, image_mimetype, image_created, image_display, image_weight, imgcat_id) VALUES (%u, %s, %s, %s, %u, %u, %u, %u)', $this->db->prefix('image'), $image_id, $this->db->quoteString($image_name), $this->db->quoteString($image_nicename), $this->db->quoteString($image_mimetype), time(), $image_display, $image_weight, $imgcat_id);
228: if (!$result = $this->db->query($sql)) {
229: return false;
230: }
231: if (empty($image_id)) {
232: $image_id = $this->db->getInsertId();
233: }
234: if (isset($image_body) && $image_body != '') {
235: $sql = sprintf('INSERT INTO %s (image_id, image_body) VALUES (%u, %s)', $this->db->prefix('imagebody'), $image_id, $this->db->quoteString($image_body));
236: if (!$result = $this->db->query($sql)) {
237: $sql = sprintf('DELETE FROM %s WHERE image_id = %u', $this->db->prefix('image'), $image_id);
238: $this->db->query($sql);
239:
240: return false;
241: }
242: }
243: $image->assignVar('image_id', $image_id);
244: } else {
245: $sql = sprintf('UPDATE %s SET image_name = %s, image_nicename = %s, image_display = %u, image_weight = %u, imgcat_id = %u WHERE image_id = %u', $this->db->prefix('image'), $this->db->quoteString($image_name), $this->db->quoteString($image_nicename), $image_display, $image_weight, $imgcat_id, $image_id);
246: if (!$result = $this->db->query($sql)) {
247: return false;
248: }
249: if (isset($image_body) && $image_body != '') {
250: $sql = sprintf('UPDATE %s SET image_body = %s WHERE image_id = %u', $this->db->prefix('imagebody'), $this->db->quoteString($image_body), $image_id);
251: if (!$result = $this->db->query($sql)) {
252: $this->db->query(sprintf('DELETE FROM %s WHERE image_id = %u', $this->db->prefix('image'), $image_id));
253:
254: return false;
255: }
256: }
257: }
258:
259: return true;
260: }
261:
262: 263: 264: 265: 266: 267: 268:
269: public function delete(XoopsObject $image)
270: {
271: $className = 'XoopsImage';
272: if (!($image instanceof $className)) {
273: return false;
274: }
275:
276: $id = $image->getVar('image_id');
277: $sql = sprintf('DELETE FROM %s WHERE image_id = %u', $this->db->prefix('image'), $id);
278: if (!$result = $this->db->query($sql)) {
279: return false;
280: }
281: $sql = sprintf('DELETE FROM %s WHERE image_id = %u', $this->db->prefix('imagebody'), $id);
282: $this->db->query($sql);
283:
284: return true;
285: }
286:
287: 288: 289: 290: 291: 292: 293: 294:
295: public function getObjects(CriteriaElement $criteria = null, $id_as_key = false, $getbinary = false)
296: {
297: $ret = array();
298: $limit = $start = 0;
299: if ($getbinary) {
300: $sql = 'SELECT i.*, b.image_body FROM ' . $this->db->prefix('image') . ' i LEFT JOIN ' . $this->db->prefix('imagebody') . ' b ON b.image_id=i.image_id';
301: } else {
302: $sql = 'SELECT * FROM ' . $this->db->prefix('image');
303: }
304: if (isset($criteria) && is_subclass_of($criteria, 'criteriaelement')) {
305: $sql .= ' ' . $criteria->renderWhere();
306: $sort = $criteria->getSort() == '' ? 'image_weight' : $criteria->getSort();
307: $sql .= ' ORDER BY ' . $sort . ' ' . $criteria->getOrder();
308: $limit = $criteria->getLimit();
309: $start = $criteria->getStart();
310: }
311: $result = $this->db->query($sql, $limit, $start);
312: if (!$result) {
313: return $ret;
314: }
315: while ($myrow = $this->db->fetchArray($result)) {
316: $image = new XoopsImage();
317: $image->assignVars($myrow);
318: if (!$id_as_key) {
319: $ret[] =& $image;
320: } else {
321: $ret[$myrow['image_id']] =& $image;
322: }
323: unset($image);
324: }
325:
326: return $ret;
327: }
328:
329: 330: 331: 332: 333: 334:
335: public function getCount(CriteriaElement $criteria = null)
336: {
337: $sql = 'SELECT COUNT(*) FROM ' . $this->db->prefix('image');
338: if (isset($criteria) && is_subclass_of($criteria, 'criteriaelement')) {
339: $sql .= ' ' . $criteria->renderWhere();
340: }
341: if (!$result = $this->db->query($sql)) {
342: return 0;
343: }
344: list($count) = $this->db->fetchRow($result);
345:
346: return $count;
347: }
348:
349: 350: 351: 352: 353: 354: 355:
356: public function getList($imgcat_id, $image_display = null)
357: {
358: $criteria = new CriteriaCompo(new Criteria('imgcat_id', (int)$imgcat_id));
359: if (isset($image_display)) {
360: $criteria->add(new Criteria('image_display', (int)$image_display));
361: }
362: $images = $this->getObjects($criteria, false, true);
363: $ret = array();
364: foreach (array_keys($images) as $i) {
365: $ret[$images[$i]->getVar('image_name')] = $images[$i]->getVar('image_nicename');
366: }
367:
368: return $ret;
369: }
370: }
371: