ForumSpamPostExtension   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 33
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Importance

Changes 0
Metric Value
wmc 7
lcom 1
cbo 5
dl 0
loc 33
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
C augmentSQL() 0 29 7
1
<?php
2
class ForumSpamPostExtension extends DataExtension
3
{
4
5
    public function augmentSQL(SQLQuery &$query)
6
    {
7
        if (Config::inst()->forClass('Post')->allow_reading_spam) {
8
            return;
9
        }
10
11
        $member = Member::currentUser();
12
        $forum = $this->owner->Forum();
13
14
        // Do Status filtering
15
16
        if ($member && is_numeric($forum->ID) && $member->ID == $forum->Moderator()->ID) {
17
            $filter = "\"Post\".\"Status\" IN ('Moderated', 'Awaiting')";
18
        } else {
19
            $filter = "\"Post\".\"Status\" = 'Moderated'";
20
        }
21
22
        $query->addWhere($filter);
23
24
        // Exclude Ghost member posts, but show Ghost members their own posts
25
        $authorStatusFilter = '"AuthorID" IN (SELECT "ID" FROM "Member" WHERE "ForumStatus" = \'Normal\')';
26
        if ($member && $member->ForumStatus == 'Ghost') {
27
            $authorStatusFilter .= ' OR "AuthorID" = ' . $member->ID;
28
        }
29
30
        $query->addWhere($authorStatusFilter);
31
32
        $query->setDistinct(false);
33
    }
34
}
35