1: <?php
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31: if (!defined('XOOPS_ROOT_PATH')) {
32: exit();
33: }
34: include_once XOOPS_ROOT_PATH."/class/xoopstopic.php";
35: include_once XOOPS_ROOT_PATH."/class/xoopsuser.php";
36:
37: class XoopsStory
38: {
39: var $table;
40: var $storyid;
41: var $topicid;
42: var $uid;
43: var $title;
44: var $hometext;
45: var $bodytext="";
46: var $counter;
47: var $created;
48: var $published;
49: var $expired;
50: var $hostname;
51: var $nohtml=0;
52: var $nosmiley=0;
53: var $ihome=0;
54: var $notifypub=0;
55: var $type;
56: var $approved;
57: var $topicdisplay;
58: var $topicalign;
59: var $db;
60: var $topicstable;
61: var $comments;
62:
63: function Story($storyid=-1)
64: {
65: $this->db =& Database::getInstance();
66: $this->table = "";
67: $this->topicstable = "";
68: if ( is_array($storyid) ) {
69: $this->makeStory($storyid);
70: } elseif ( $storyid != -1 ) {
71: $this->getStory(intval($storyid));
72: }
73: }
74:
75: function setStoryId($value)
76: {
77: $this->storyid = intval($value);
78: }
79:
80: function setTopicId($value)
81: {
82: $this->topicid = intval($value);
83: }
84:
85: function setUid($value)
86: {
87: $this->uid = intval($value);
88: }
89:
90: function setTitle($value)
91: {
92: $this->title = $value;
93: }
94:
95: function setHometext($value)
96: {
97: $this->hometext = $value;
98: }
99:
100: function setBodytext($value)
101: {
102: $this->bodytext = $value;
103: }
104:
105: function setPublished($value)
106: {
107: $this->published = intval($value);
108: }
109:
110: function setExpired($value)
111: {
112: $this->expired = intval($value);
113: }
114:
115: function setHostname($value)
116: {
117: $this->hostname = $value;
118: }
119:
120: function setNohtml($value=0)
121: {
122: $this->nohtml = $value;
123: }
124:
125: function setNosmiley($value=0)
126: {
127: $this->nosmiley = $value;
128: }
129:
130: function setIhome($value)
131: {
132: $this->ihome = $value;
133: }
134:
135: function setNotifyPub($value)
136: {
137: $this->notifypub = $value;
138: }
139:
140: function setType($value)
141: {
142: $this->type = $value;
143: }
144:
145: function setApproved($value)
146: {
147: $this->approved = intval($value);
148: }
149:
150: function setTopicdisplay($value)
151: {
152: $this->topicdisplay = $value;
153: }
154:
155: function setTopicalign($value)
156: {
157: $this->topicalign = $value;
158: }
159:
160: function setComments($value)
161: {
162: $this->comments = intval($value);
163: }
164:
165: function store($approved=false)
166: {
167:
168: $myts =& MyTextSanitizer::getInstance();
169: $title =$myts->censorString($this->title);
170: $hometext =$myts->censorString($this->hometext);
171: $bodytext =$myts->censorString($this->bodytext);
172: $title = $myts->makeTboxData4Save($title);
173: $hometext = $myts->makeTareaData4Save($hometext);
174: $bodytext = $myts->makeTareaData4Save($bodytext);
175: if ( !isset($this->nohtml) || $this->nohtml != 1 ) {
176: $this->nohtml = 0;
177: }
178: if ( !isset($this->nosmiley) || $this->nosmiley != 1 ) {
179: $this->nosmiley = 0;
180: }
181: if ( !isset($this->notifypub) || $this->notifypub != 1 ) {
182: $this->notifypub = 0;
183: }
184: if( !isset($this->topicdisplay) || $this->topicdisplay != 0 ) {
185: $this->topicdisplay = 1;
186: }
187: $expired = !empty($this->expired) ? $this->expired : 0;
188: if ( !isset($this->storyid) ) {
189:
190: $newstoryid = $this->db->genId($this->table."_storyid_seq");
191: $created = time();
192: $published = ( $this->approved ) ? $this->published : 0;
193:
194: $sql = sprintf("INSERT INTO %s (storyid, uid, title, created, published, expired, hostname, nohtml, nosmiley, hometext, bodytext, counter, topicid, ihome, notifypub, story_type, topicdisplay, topicalign, comments) VALUES (%u, %u, '%s', %u, %u, %u, '%s', %u, %u, '%s', '%s', %u, %u, %u, %u, '%s', %u, '%s', %u)", $this->table, $newstoryid, $this->uid, $title, $created, $published, $expired, $this->hostname, $this->nohtml, $this->nosmiley, $hometext, $bodytext, 0, $this->topicid, $this->ihome, $this->notifypub, $this->type, $this->topicdisplay, $this->topicalign, $this->comments);
195: } else {
196: if ( $this->approved ) {
197: $sql = sprintf("UPDATE %s SET title = '%s', published = %u, expired = %u, nohtml = %u, nosmiley = %u, hometext = '%s', bodytext = '%s', topicid = %u, ihome = %u, topicdisplay = %u, topicalign = '%s', comments = %u WHERE storyid = %u", $this->table, $title, $this->published, $expired, $this->nohtml, $this->nosmiley, $hometext, $bodytext, $this->topicid, $this->ihome, $this->topicdisplay, $this->topicalign, $this->comments, $this->storyid);
198: } else {
199: $sql = sprintf("UPDATE %s SET title = '%s', expired = %u, nohtml = %u, nosmiley = %u, hometext = '%s', bodytext = '%s', topicid = %u, ihome = %u, topicdisplay = %u, topicalign = '%s', comments = %u WHERE storyid = %u", $this->table, $title, $expired, $this->nohtml, $this->nosmiley, $hometext, $bodytext, $this->topicid, $this->ihome, $this->topicdisplay, $this->topicalign, $this->comments, $this->storyid);
200: }
201: $newstoryid = $this->storyid;
202: }
203: if (!$result = $this->db->query($sql)) {
204: return false;
205: }
206: if ( empty($newstoryid) ) {
207: $newstoryid = $this->db->getInsertId();
208: $this->storyid = $newstoryid;
209: }
210: return $newstoryid;
211: }
212:
213: function getStory($storyid)
214: {
215: $sql = "SELECT * FROM ".$this->table." WHERE storyid=".$storyid."";
216: $array = $this->db->fetchArray($this->db->query($sql));
217: $this->makeStory($array);
218: }
219:
220: function makeStory($array)
221: {
222: foreach ( $array as $key=>$value ){
223: $this->$key = $value;
224: }
225: }
226:
227: function delete()
228: {
229: $sql = sprintf("DELETE FROM %s WHERE storyid = %u", $this->table, $this->storyid);
230: if( !$result = $this->db->query($sql) ) {
231: return false;
232: }
233: return true;
234: }
235:
236: function updateCounter()
237: {
238: $sql = sprintf("UPDATE %s SET counter = counter+1 WHERE storyid = %u", $this->table, $this->storyid);
239: if ( !$result = $this->db->queryF($sql) ) {
240: return false;
241: }
242: return true;
243: }
244:
245: function updateComments($total)
246: {
247: $sql = sprintf("UPDATE %s SET comments = %u WHERE storyid = %u", $this->table, $total, $this->storyid);
248: if ( !$result = $this->db->queryF($sql) ) {
249: return false;
250: }
251: return true;
252: }
253:
254: function topicid()
255: {
256: return $this->topicid;
257: }
258:
259: function topic()
260: {
261: return new XoopsTopic($this->topicstable, $this->topicid);
262: }
263:
264: function uid()
265: {
266: return $this->uid;
267: }
268:
269: function uname()
270: {
271: return XoopsUser::getUnameFromId($this->uid);
272: }
273:
274: function title($format="Show")
275: {
276: $myts =& MyTextSanitizer::getInstance();
277: $smiley = 1;
278: if ( $this->nosmiley() ) {
279: $smiley = 0;
280: }
281: switch ( $format ) {
282: case "Show":
283: $title = $myts->makeTboxData4Show($this->title,$smiley);
284: break;
285: case "Edit":
286: $title = $myts->makeTboxData4Edit($this->title);
287: break;
288: case "Preview":
289: $title = $myts->makeTboxData4Preview($this->title,$smiley);
290: break;
291: case "InForm":
292: $title = $myts->makeTboxData4PreviewInForm($this->title);
293: break;
294: }
295: return $title;
296: }
297:
298: function hometext($format="Show")
299: {
300: $myts =& MyTextSanitizer::getInstance();
301: $html = 1;
302: $smiley = 1;
303: $xcodes = 1;
304: if ( $this->nohtml() ) {
305: $html = 0;
306: }
307: if ( $this->nosmiley() ) {
308: $smiley = 0;
309: }
310: switch ( $format ) {
311: case "Show":
312: $hometext = $myts->makeTareaData4Show($this->hometext,$html,$smiley,$xcodes);
313: break;
314: case "Edit":
315: $hometext = $myts->makeTareaData4Edit($this->hometext);
316: break;
317: case "Preview":
318: $hometext = $myts->makeTareaData4Preview($this->hometext,$html,$smiley,$xcodes);
319: break;
320: case "InForm":
321: $hometext = $myts->makeTareaData4PreviewInForm($this->hometext);
322: break;
323: }
324: return $hometext;
325: }
326:
327: function bodytext($format="Show")
328: {
329: $myts =& MyTextSanitizer::getInstance();
330: $html = 1;
331: $smiley = 1;
332: $xcodes = 1;
333: if ( $this->nohtml() ) {
334: $html = 0;
335: }
336: if ( $this->nosmiley() ) {
337: $smiley = 0;
338: }
339: switch ( $format ) {
340: case "Show":
341: $bodytext = $myts->makeTareaData4Show($this->bodytext,$html,$smiley,$xcodes);
342: break;
343: case "Edit":
344: $bodytext = $myts->makeTareaData4Edit($this->bodytext);
345: break;
346: case "Preview":
347: $bodytext = $myts->makeTareaData4Preview($this->bodytext,$html,$smiley, $xcodes);
348: break;
349: case "InForm":
350: $bodytext = $myts->makeTareaData4PreviewInForm($this->bodytext);
351: break;
352: }
353: return $bodytext;
354: }
355:
356: function counter()
357: {
358: return $this->counter;
359: }
360:
361: function created()
362: {
363: return $this->created;
364: }
365:
366: function published()
367: {
368: return $this->published;
369: }
370:
371: function expired()
372: {
373: return $this->expired;
374: }
375:
376: function hostname()
377: {
378: return $this->hostname;
379: }
380:
381: function storyid()
382: {
383: return $this->storyid;
384: }
385:
386: function nohtml()
387: {
388: return $this->nohtml;
389: }
390:
391: function nosmiley()
392: {
393: return $this->nosmiley;
394: }
395:
396: function notifypub()
397: {
398: return $this->notifypub;
399: }
400:
401: function type()
402: {
403: return $this->type;
404: }
405:
406: function ihome()
407: {
408: return $this->ihome;
409: }
410:
411: function topicdisplay()
412: {
413: return $this->topicdisplay;
414: }
415:
416: function topicalign($astext=true)
417: {
418: if ( $astext ) {
419: if ( $this->topicalign == "R" ) {
420: $ret = "right";
421: } else {
422: $ret = "left";
423: }
424: return $ret;
425: }
426: return $this->topicalign;
427: }
428:
429: function comments()
430: {
431: return $this->comments;
432: }
433: }
434: ?>
435: