RewriteUrlRuleLoop   A
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 61
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 0

Importance

Changes 0
Metric Value
wmc 8
lcom 0
cbo 0
dl 0
loc 61
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A getArgDefinitions() 0 10 1
A buildModelCriteria() 0 22 5
A parseResults() 0 18 2
1
<?php
2
/**
3
 * Created by PhpStorm.
4
 * User: nicolasbarbey
5
 * Date: 20/07/2020
6
 * Time: 11:49
7
 */
8
9
namespace RewriteUrl\Loop;
10
11
12
use Propel\Runtime\ActiveQuery\ModelCriteria;
13
use RewriteUrl\Model\RewriteurlRule;
14
use RewriteUrl\Model\RewriteurlRuleQuery;
15
use Thelia\Core\Template\Element\BaseLoop;
16
use Thelia\Core\Template\Element\LoopResult;
17
use Thelia\Core\Template\Element\LoopResultRow;
18
use Thelia\Core\Template\Element\PropelSearchLoopInterface;
19
use Thelia\Core\Template\Loop\Argument\Argument;
20
use Thelia\Core\Template\Loop\Argument\ArgumentCollection;
21
22
23
class RewriteUrlRuleLoop extends BaseLoop implements PropelSearchLoopInterface
24
{
25
    /**
26
     * @return ArgumentCollection
27
     */
28
    protected function getArgDefinitions()
29
    {
30
        return new ArgumentCollection(
31
            Argument::createIntTypeArgument('id'),
32
            Argument::createAnyTypeArgument('rule_type'),
33
            Argument::createAnyTypeArgument('value'),
34
            Argument::createAnyTypeArgument('redirect_url')
35
36
        );
37
    }
38
39
    /**
40
     * @return ModelCriteria|RewriteurlRuleQuery
41
     */
42
    public function buildModelCriteria()
43
    {
44
        $search = RewriteurlRuleQuery::create();
45
46
        if (null !== $id = $this->getId()){
47
            $search->filterById($id);
48
        }
49
50
        if (null !== $ruleType = $this->getRuleType()){
51
            $search->filterByRuleType($ruleType);
52
        }
53
54
        if (null !== $value = $this->getValue()){
55
            $search->filterByValue($value);
56
        }
57
58
        if (null !== $redirectUrl = $this->getRedirectUrl()){
59
            $search->filterByRedirectUrl($redirectUrl);
60
        }
61
62
        return $search->orderByPosition();
63
    }
64
65
    public function parseResults(LoopResult $loopResult)
66
    {
67
        /** @var RewriteurlRule $rewriteUrlRule */
68
        foreach ($loopResult->getResultDataCollection() as $rewriteUrlRule){
69
            $loopResultRow = (new LoopResultRow($rewriteUrlRule))
70
                ->set('ID', $rewriteUrlRule->getId())
71
                ->set('RULE_TYPE', $rewriteUrlRule->getRuleType())
72
                ->set('VALUE', $rewriteUrlRule->getValue())
73
                ->set('ONLY404', $rewriteUrlRule->getOnly404())
74
                ->set('REDIRECT_URL', $rewriteUrlRule->getRedirectUrl())
75
                ->set('POSITION', $rewriteUrlRule->getPosition())
76
                ->set('REWRITE_URL_PARAMS', $rewriteUrlRule->getRewriteUrlParamCollection());
77
78
            $loopResult->addRow($loopResultRow);
79
        }
80
81
        return $loopResult;
82
    }
83
}