Test Failed
Branch master (19f93b)
by Michael
10:44
created

XoopsStory::counter()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 3
rs 10
c 0
b 0
f 0
cc 1
eloc 1
nc 1
nop 0
1
<?php
0 ignored issues
show
Coding Style Compatibility introduced by
For compatibility and reusability of your code, PSR1 recommends that a file should introduce either new symbols (like classes, functions, etc.) or have side-effects (like outputting something, or including other files), but not both at the same time. The first symbol is defined on line 29 and the first side effect is on line 20.

The PSR-1: Basic Coding Standard recommends that a file should either introduce new symbols, that is classes, functions, constants or similar, or have side effects. Side effects are anything that executes logic, like for example printing output, changing ini settings or writing to a file.

The idea behind this recommendation is that merely auto-loading a class should not change the state of an application. It also promotes a cleaner style of programming and makes your code less prone to errors, because the logic is not spread out all over the place.

To learn more about the PSR-1, please see the PHP-FIG site on the PSR-1.

Loading history...
2
/**
3
 * XOOPS news story
4
 *
5
 * You may not change or alter any portion of this comment or credits
6
 * of supporting developers from this source code or any supporting source code
7
 * which is considered copyrighted (c) material of the original comment or credit authors.
8
 * This program is distributed in the hope that it will be useful,
9
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
11
 *
12
 * @copyright       (c) 2000-2016 XOOPS Project (www.xoops.org)
13
 * @license             GNU GPL 2 (http://www.gnu.org/licenses/gpl-2.0.html)
14
 * @package             kernel
15
 * @since               2.0.0
16
 * @author              Kazumi Ono (AKA onokazu) http://www.myweb.ne.jp/, http://jp.xoops.org/
17
 * @deprecated
18
 */
19
20
defined('XOOPS_ROOT_PATH') || exit('XOOPS root path not defined');
21
22
$GLOBALS['xoopsLogger']->addDeprecated("'/class/xoopstory.php' is deprecated since XOOPS 2.5.4, please create your own class instead.");
23
include_once XOOPS_ROOT_PATH . '/class/xoopstopic.php';
24
include_once XOOPS_ROOT_PATH . '/kernel/user.php';
25
26
/**
27
 * Class XoopsStory
28
 */
29
class XoopsStory
30
{
31
    public $table;
32
    public $storyid;
33
    public $topicid;
34
    public $uid;
35
    public $title;
36
    public $hometext;
37
    public $bodytext  = '';
38
    public $counter;
39
    public $created;
40
    public $published;
41
    public $expired;
42
    public $hostname;
43
    public $nohtml    = 0;
44
    public $nosmiley  = 0;
45
    public $ihome     = 0;
46
    public $notifypub = 0;
47
    public $type;
48
    public $approved;
49
    public $topicdisplay;
50
    public $topicalign;
51
    public $db;
52
    public $topicstable;
53
    public $comments;
54
55
    /**
56
     * @param int|array $storyid
57
     */
58
    public function Story($storyid = -1)
59
    {
60
        $this->db = XoopsDatabaseFactory::getDatabaseConnection();
61
        $this->table       = '';
62
        $this->topicstable = '';
63
        if (is_array($storyid)) {
64
            $this->makeStory($storyid);
65
        } elseif ($storyid != -1) {
66
            $this->getStory((int)$storyid);
67
        }
68
    }
69
70
    /**
71
     * @param $value
72
     */
73
    public function setStoryId($value)
74
    {
75
        $this->storyid = (int)$value;
76
    }
77
78
    /**
79
     * @param $value
80
     */
81
    public function setTopicId($value)
82
    {
83
        $this->topicid = (int)$value;
84
    }
85
86
    /**
87
     * @param $value
88
     */
89
    public function setUid($value)
90
    {
91
        $this->uid = (int)$value;
92
    }
93
94
    /**
95
     * @param $value
96
     */
97
    public function setTitle($value)
98
    {
99
        $this->title = $value;
100
    }
101
102
    /**
103
     * @param $value
104
     */
105
    public function setHometext($value)
106
    {
107
        $this->hometext = $value;
108
    }
109
110
    /**
111
     * @param $value
112
     */
113
    public function setBodytext($value)
114
    {
115
        $this->bodytext = $value;
116
    }
117
118
    /**
119
     * @param $value
120
     */
121
    public function setPublished($value)
122
    {
123
        $this->published = (int)$value;
124
    }
125
126
    /**
127
     * @param $value
128
     */
129
    public function setExpired($value)
130
    {
131
        $this->expired = (int)$value;
132
    }
133
134
    /**
135
     * @param $value
136
     */
137
    public function setHostname($value)
138
    {
139
        $this->hostname = $value;
140
    }
141
142
    /**
143
     * @param int $value
144
     */
145
    public function setNohtml($value = 0)
146
    {
147
        $this->nohtml = $value;
148
    }
149
150
    /**
151
     * @param int $value
152
     */
153
    public function setNosmiley($value = 0)
154
    {
155
        $this->nosmiley = $value;
156
    }
157
158
    /**
159
     * @param $value
160
     */
161
    public function setIhome($value)
162
    {
163
        $this->ihome = $value;
164
    }
165
166
    /**
167
     * @param $value
168
     */
169
    public function setNotifyPub($value)
170
    {
171
        $this->notifypub = $value;
172
    }
173
174
    /**
175
     * @param $value
176
     */
177
    public function setType($value)
178
    {
179
        $this->type = $value;
180
    }
181
182
    /**
183
     * @param $value
184
     */
185
    public function setApproved($value)
186
    {
187
        $this->approved = (int)$value;
188
    }
189
190
    /**
191
     * @param $value
192
     */
193
    public function setTopicdisplay($value)
194
    {
195
        $this->topicdisplay = $value;
196
    }
197
198
    /**
199
     * @param $value
200
     */
201
    public function setTopicalign($value)
202
    {
203
        $this->topicalign = $value;
204
    }
205
206
    /**
207
     * @param $value
208
     */
209
    public function setComments($value)
210
    {
211
        $this->comments = (int)$value;
212
    }
213
214
    /**
215
     * @param bool $approved
216
     *
217
     * @return bool
218
     */
219
    public function store($approved = false)
0 ignored issues
show
Unused Code introduced by
The parameter $approved is not used and could be removed. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-unused  annotation

219
    public function store(/** @scrutinizer ignore-unused */ $approved = false)

This check looks for parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
220
    {
221
        //$newpost = 0;
222
        $myts     = MyTextSanitizer::getInstance();
223
        $title    = $myts->censorString($this->title);
224
        $hometext = $myts->censorString($this->hometext);
225
        $bodytext = $myts->censorString($this->bodytext);
226
        $title    = $myts->addSlashes($title);
227
        $hometext = $myts->addSlashes($hometext);
228
        $bodytext = $myts->addSlashes($bodytext);
229
        if (!isset($this->nohtml) || $this->nohtml != 1) {
230
            $this->nohtml = 0;
231
        }
232
        if (!isset($this->nosmiley) || $this->nosmiley != 1) {
233
            $this->nosmiley = 0;
234
        }
235
        if (!isset($this->notifypub) || $this->notifypub != 1) {
236
            $this->notifypub = 0;
237
        }
238
        if (!isset($this->topicdisplay) || $this->topicdisplay != 0) {
239
            $this->topicdisplay = 1;
240
        }
241
        $expired = !empty($this->expired) ? $this->expired : 0;
242
        if (!isset($this->storyid)) {
243
            //$newpost = 1;
244
            $newstoryid = $this->db->genId($this->table . '_storyid_seq');
245
            $created    = time();
246
            $published  = $this->approved ? $this->published : 0;
247
248
            $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);
249
        } else {
250
            if ($this->approved) {
251
                $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);
252
            } else {
253
                $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);
254
            }
255
            $newstoryid = $this->storyid;
256
        }
257
        if (!$result = $this->db->query($sql)) {
0 ignored issues
show
Unused Code introduced by
The assignment to $result is dead and can be removed.
Loading history...
258
            return false;
259
        }
260
        if (empty($newstoryid)) {
261
            $newstoryid    = $this->db->getInsertId();
262
            $this->storyid = $newstoryid;
263
        }
264
265
        return $newstoryid;
266
    }
267
268
    /**
269
     * @param $storyid
270
     */
271
    public function getStory($storyid)
272
    {
273
        $storyid = (int)$storyid;
274
        $sql     = 'SELECT * FROM ' . $this->table . ' WHERE storyid=' . $storyid . '';
275
        $array   = $this->db->fetchArray($this->db->query($sql));
276
        $this->makeStory($array);
277
    }
278
279
    /**
280
     * @param $array
281
     */
282
    public function makeStory($array)
283
    {
284
        foreach ($array as $key => $value) {
285
            $this->$key = $value;
286
        }
287
    }
288
289
    /**
290
     * @return bool
291
     */
292
    public function delete()
293
    {
294
        $sql = sprintf('DELETE FROM %s WHERE storyid = %u', $this->table, $this->storyid);
295
        if (!$result = $this->db->query($sql)) {
0 ignored issues
show
Unused Code introduced by
The assignment to $result is dead and can be removed.
Loading history...
296
            return false;
297
        }
298
299
        return true;
300
    }
301
302
    /**
303
     * @return bool
304
     */
305
    public function updateCounter()
306
    {
307
        $sql = sprintf('UPDATE %s SET counter = counter+1 WHERE storyid = %u', $this->table, $this->storyid);
308
        if (!$result = $this->db->queryF($sql)) {
0 ignored issues
show
Unused Code introduced by
The assignment to $result is dead and can be removed.
Loading history...
309
            return false;
310
        }
311
312
        return true;
313
    }
314
315
    /**
316
     * @param $total
317
     *
318
     * @return bool
319
     */
320
    public function updateComments($total)
321
    {
322
        $sql = sprintf('UPDATE %s SET comments = %u WHERE storyid = %u', $this->table, $total, $this->storyid);
323
        if (!$result = $this->db->queryF($sql)) {
0 ignored issues
show
Unused Code introduced by
The assignment to $result is dead and can be removed.
Loading history...
324
            return false;
325
        }
326
327
        return true;
328
    }
329
330
    public function topicid()
331
    {
332
        return $this->topicid;
333
    }
334
335
    /**
336
     * @return XoopsTopic
337
     */
338
    public function topic()
339
    {
340
        return new XoopsTopic($this->topicstable, $this->topicid);
341
    }
342
343
    public function uid()
344
    {
345
        return $this->uid;
346
    }
347
348
    /**
349
     * @return string
350
     */
351
    public function uname()
352
    {
353
        return XoopsUser::getUnameFromId($this->uid);
354
    }
355
356
    /**
357
     * @param string $format
358
     *
359
     * @return mixed
360
     */
361
    public function title($format = 'Show')
362
    {
363
        $myts   = MyTextSanitizer::getInstance();
364
        $smiley = 1;
0 ignored issues
show
Unused Code introduced by
The assignment to $smiley is dead and can be removed.
Loading history...
365
        if ($this->nosmiley()) {
366
            $smiley = 0;
367
        }
368
        switch ($format) {
369
            case 'Show':
370
            case 'Edit':
371
                $title = $myts->htmlSpecialChars($this->title);
372
                break;
373
            case 'Preview':
374
            case 'InForm':
375
                $title = $myts->htmlSpecialChars($myts->stripSlashesGPC($this->title));
376
                break;
377
        }
378
379
        return $title;
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable $title does not seem to be defined for all execution paths leading up to this point.
Loading history...
380
    }
381
382
    /**
383
     * @param string $format
384
     *
385
     * @return string
386
     */
387
    public function hometext($format = 'Show')
388
    {
389
        $myts   = MyTextSanitizer::getInstance();
390
        $html   = 1;
391
        $smiley = 1;
392
        $xcodes = 1;
393
        if ($this->nohtml()) {
394
            $html = 0;
395
        }
396
        if ($this->nosmiley()) {
397
            $smiley = 0;
398
        }
399
        switch ($format) {
400
            case 'Show':
401
                $hometext = $myts->displayTarea($this->hometext, $html, $smiley, $xcodes);
402
                break;
403
            case 'Edit':
404
                $hometext = htmlspecialchars($this->hometext, ENT_QUOTES);
405
                break;
406
            case 'Preview':
407
                $hometext = $myts->previewTarea($this->hometext, $html, $smiley, $xcodes);
408
                break;
409
            case 'InForm':
410
                $hometext = htmlspecialchars($myts->stripSlashesGPC($this->hometext), ENT_QUOTES);
411
                break;
412
        }
413
414
        return $hometext;
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable $hometext does not seem to be defined for all execution paths leading up to this point.
Loading history...
415
    }
416
417
    /**
418
     * @param string $format
419
     *
420
     * @return string
421
     */
422
    public function bodytext($format = 'Show')
423
    {
424
        $myts   = MyTextSanitizer::getInstance();
425
        $html   = 1;
426
        $smiley = 1;
427
        $xcodes = 1;
428
        if ($this->nohtml()) {
429
            $html = 0;
430
        }
431
        if ($this->nosmiley()) {
432
            $smiley = 0;
433
        }
434
        switch ($format) {
435
            case 'Show':
436
                $bodytext = $myts->displayTarea($this->bodytext, $html, $smiley, $xcodes);
437
                break;
438
            case 'Edit':
439
                $bodytext = htmlspecialchars($this->bodytext, ENT_QUOTES);
440
                break;
441
            case 'Preview':
442
                $bodytext = $myts->previewTarea($this->bodytext, $html, $smiley, $xcodes);
443
                break;
444
            case 'InForm':
445
                $bodytext = htmlspecialchars($myts->stripSlashesGPC($this->bodytext), ENT_QUOTES);
446
                break;
447
        }
448
449
        return $bodytext;
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable $bodytext does not seem to be defined for all execution paths leading up to this point.
Loading history...
450
    }
451
452
    public function counter()
453
    {
454
        return $this->counter;
455
    }
456
457
    public function created()
458
    {
459
        return $this->created;
460
    }
461
462
    public function published()
463
    {
464
        return $this->published;
465
    }
466
467
    public function expired()
468
    {
469
        return $this->expired;
470
    }
471
472
    public function hostname()
473
    {
474
        return $this->hostname;
475
    }
476
477
    public function storyid()
478
    {
479
        return $this->storyid;
480
    }
481
482
    /**
483
     * @return int
484
     */
485
    public function nohtml()
486
    {
487
        return $this->nohtml;
488
    }
489
490
    /**
491
     * @return int
492
     */
493
    public function nosmiley()
494
    {
495
        return $this->nosmiley;
496
    }
497
498
    /**
499
     * @return int
500
     */
501
    public function notifypub()
502
    {
503
        return $this->notifypub;
504
    }
505
506
    public function type()
507
    {
508
        return $this->type;
509
    }
510
511
    /**
512
     * @return int
513
     */
514
    public function ihome()
515
    {
516
        return $this->ihome;
517
    }
518
519
    public function topicdisplay()
520
    {
521
        return $this->topicdisplay;
522
    }
523
524
    /**
525
     * @param bool $astext
526
     *
527
     * @return string
528
     */
529
    public function topicalign($astext = true)
530
    {
531
        $ret = 'left';
532
        if ($astext) {
533
            if ($this->topicalign === 'R') {
534
                $ret = 'right';
535
            }
536
537
            return $ret;
538
        }
539
540
        return $this->topicalign;
541
    }
542
543
    public function comments()
544
    {
545
        return $this->comments;
546
    }
547
}
548