BaseIndexExtension   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 27
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 2
eloc 12
c 1
b 0
f 0
dl 0
loc 27
ccs 12
cts 12
cp 1
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
A onBeforeSearch() 0 19 2
1
<?php
2
/**
3
 * Class BaseIndexExtension|Firesphere\SolrPermissions\Extensions\BaseIndexExtension Add Member specific filtering to a
4
 * query
5
 *
6
 * @package Firesphere\Solr\Permissions
7
 * @author Simon `Firesphere` Erkelens; Marco `Sheepy` Hermo
8
 * @copyright Copyright (c) 2018 - now() Firesphere & Sheepy
9
 */
10
11
12
namespace Firesphere\SolrPermissions\Extensions;
13
14
use Firesphere\SolrSearch\Indexes\BaseIndex;
15
use Firesphere\SolrSearch\Queries\BaseQuery;
16
use Minimalcode\Search\Criteria;
17
use SilverStripe\Core\Extension;
18
use SilverStripe\Security\Security;
19
use Solarium\QueryType\Select\Query\Query;
20
21
/**
22
 * Class \Firesphere\SolrPermissions\Extensions\BaseIndexExtension
23
 *
24
 * Add Member specific view capabilities to the Index
25
 *
26
 * @package Firesphere\Solr\Permissions
27
 * @property BaseIndex|BaseIndexExtension $owner
28
 */
29
class BaseIndexExtension extends Extension
30
{
31
    /**
32
     * Before search, add the member view filtering
33
     *
34
     * @param BaseQuery $query
35
     * @param Query $clientQuery
36
     */
37 1
    public function onBeforeSearch($query, $clientQuery)
38
    {
39 1
        $member = Security::getCurrentUser();
40
41 1
        $filter = ['null'];
42
43 1
        if ($member) {
0 ignored issues
show
introduced by
$member is of type SilverStripe\Security\Member, thus it always evaluated to true.
Loading history...
44 1
            $filter[] = sprintf('1-%s', $member->ID);
45
        }
46
47 1
        $query->addFilter('MemberView', $filter);
48
49 1
        $criteria = Criteria::where('MemberView')->in($filter);
50
51 1
        $clientQuery->createFilterQuery('MemberView')
52 1
            ->setQuery($criteria->getQuery());
53 1
        $filterQueries = $clientQuery->getFilterQueries();
54 1
        unset($filterQueries['ViewStatus']);
55 1
        $clientQuery->setFilterQueries($filterQueries);
56 1
    }
57
}
58