Completed
Pull Request — master (#12)
by
unknown
02:11
created

NotRewritenUrlCategoryLoop::getArgDefinitions()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 6
rs 9.4285
cc 1
eloc 3
nc 1
nop 0
1
<?php
2
/*************************************************************************************/
3
/*      This file is part of the RewriteUrl module for Thelia.                       */
4
/*                                                                                   */
5
/*      Copyright (c) OpenStudio                                                     */
6
/*      email : [email protected]                                                       */
7
/*      web : http://www.thelia.net                                                  */
8
/*                                                                                   */
9
/*      For the full copyright and license information, please view the LICENSE.txt  */
10
/*      file that was distributed with this source code.                             */
11
/*************************************************************************************/
12
13
namespace RewriteUrl\Loop;
14
15
use Propel\Runtime\ActiveQuery\Criteria;
16
use Propel\Runtime\ActiveQuery\Join;
17
use Thelia\Core\Template\Element\BaseI18nLoop;
18
use Thelia\Core\Template\Element\LoopResult;
19
use Thelia\Core\Template\Element\LoopResultRow;
20
use Thelia\Core\Template\Element\PropelSearchLoopInterface;
21
use Thelia\Core\Template\Loop\Argument\Argument;
22
use Thelia\Core\Template\Loop\Argument\ArgumentCollection;
23
use Thelia\Model\Base\BrandQuery;
24
use Thelia\Model\CategoryQuery;
25
use Thelia\Model\ContentQuery;
26
use Thelia\Model\FolderQuery;
27
use Thelia\Model\LangQuery;
28
use Thelia\Model\Map\BrandTableMap;
29
use Thelia\Model\Map\CategoryTableMap;
30
use Thelia\Model\Map\ContentTableMap;
31
use Thelia\Model\Map\FolderTableMap;
32
use Thelia\Model\Map\ProductTableMap;
33
use Thelia\Model\Map\RewritingUrlTableMap;
34
use Thelia\Model\ProductQuery;
35
36
/**
37
 * Class NotRewritenUrlCategoryLoop
38
 * @package RewriteUrl\Loop
39
 * @author Tom Pradat <[email protected]>
40
 */
41
class NotRewritenUrlCategoryLoop extends BaseI18nLoop implements PropelSearchLoopInterface
42
{
43
    protected function getArgDefinitions()
44
    {
45
        return new ArgumentCollection(
46
            Argument::createAnyTypeArgument('categorie')
47
        );
48
    }
49
50
    public function buildModelCriteria()
51
    {
52
        $localequery = LangQuery::create()->findOneById($this->getLang());
53
        $locale = $localequery->getLocale();
54
        $cat = ucfirst($this->getCategorie());
55
        $objectQuery = null;
56
        $urlJoin = null;
57
58
        switch ($cat) {
59
            case 'Product':
60
                $objectQuery = ProductQuery::create();
61
                $urlJoin = new Join(ProductTableMap::ID, RewritingUrlTableMap::VIEW_ID, Criteria::LEFT_JOIN);
62
                break;
63
            case 'Brand':
64
                $objectQuery = BrandQuery::create();
65
                $urlJoin = new Join(BrandTableMap::ID, RewritingUrlTableMap::VIEW_ID, Criteria::LEFT_JOIN);
66
                break;
67
            case 'Category':
68
                $objectQuery = CategoryQuery::create();
69
                $urlJoin = new Join(CategoryTableMap::ID, RewritingUrlTableMap::VIEW_ID, Criteria::LEFT_JOIN);
70
                break;
71
            case 'Folder':
72
                $objectQuery = FolderQuery::create();
73
                $urlJoin = new Join(FolderTableMap::ID, RewritingUrlTableMap::VIEW_ID, Criteria::LEFT_JOIN);
74
                break;
75
            case 'Content':
76
                $objectQuery = ContentQuery::create();
77
                $urlJoin = new Join(ContentTableMap::ID, RewritingUrlTableMap::VIEW_ID, Criteria::LEFT_JOIN);
78
                break;
79
        }
80
81
        $query = $objectQuery
82
            ->joinWithI18n($locale)
83
            ->addJoinObject($urlJoin, 'url_rewriting_join')
84
            ->addJoinCondition(
85
                'url_rewriting_join',
86
                RewritingUrlTableMap::VIEW . ' = ?',
87
                strtolower($cat),
88
                null,
89
                \PDO::PARAM_STR
90
            )
91
            ->addJoinCondition(
92
                'url_rewriting_join',
93
                RewritingUrlTableMap::VIEW_LOCALE . ' = ?',
94
                $locale,
95
                null,
96
                \PDO::PARAM_STR
97
            )
98
            ->where('ISNULL(rewriting_url.id)')
99
        ;
100
        return $query;
101
    }
102
103
    public function parseResults(LoopResult $loopResult)
104
    {
105
        foreach ($loopResult->getResultDataCollection() as $category) {
106
            $loopResultRow = (new LoopResultRow($category))
107
                ->set('ID', $category->getId())
108
                ->set('NAME', $category->getTitle());
109
110
            if (property_exists($category, 'ref')) {
111
                $loopResultRow->set('REF', $category->getRef());
112
            }
113
            $loopResult->addRow($loopResultRow);
114
        }
115
116
        return $loopResult;
117
    }
118
}