source: temp/test-xoops.ec-cube.net/html/class/xoopsstory.php @ 405

Revision 405, 10.7 KB checked in by root, 20 years ago (diff)
Line 
1<?php
2// $Id: xoopsstory.php,v 1.2 2005/03/18 12:51:55 onokazu Exp $
3//  ------------------------------------------------------------------------ //
4//                XOOPS - PHP Content Management System                      //
5//                    Copyright (c) 2000 XOOPS.org                           //
6//                       <http://www.xoops.org/>                             //
7//  ------------------------------------------------------------------------ //
8//  This program is free software; you can redistribute it and/or modify     //
9//  it under the terms of the GNU General Public License as published by     //
10//  the Free Software Foundation; either version 2 of the License, or        //
11//  (at your option) any later version.                                      //
12//                                                                           //
13//  You may not change or alter any portion of this comment or credits       //
14//  of supporting developers from this source code or any supporting         //
15//  source code which is considered copyrighted (c) material of the          //
16//  original comment or credit authors.                                      //
17//                                                                           //
18//  This program is distributed in the hope that it will be useful,          //
19//  but WITHOUT ANY WARRANTY; without even the implied warranty of           //
20//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            //
21//  GNU General Public License for more details.                             //
22//                                                                           //
23//  You should have received a copy of the GNU General Public License        //
24//  along with this program; if not, write to the Free Software              //
25//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA //
26//  ------------------------------------------------------------------------ //
27// Author: Kazumi Ono (AKA onokazu)                                          //
28// URL: http://www.myweb.ne.jp/, http://www.xoops.org/, http://jp.xoops.org/ //
29// Project: The XOOPS Project                                                //
30// ------------------------------------------------------------------------- //
31if (!defined('XOOPS_ROOT_PATH')) {
32    exit();
33}
34include_once XOOPS_ROOT_PATH."/class/xoopstopic.php";
35include_once XOOPS_ROOT_PATH."/class/xoopsuser.php";
36
37class 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        //$newpost = 0;
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            //$newpost = 1;
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?>
Note: See TracBrowser for help on using the repository browser.