PagePresenter   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 74
Duplicated Lines 0 %

Coupling/Cohesion

Components 2
Dependencies 3

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
wmc 6
lcom 2
cbo 3
dl 0
loc 74
rs 10
c 0
b 0
f 0
ccs 0
cts 29
cp 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
A getLocaleNameAttribute() 0 4 1
A getContentPreviewAttribute() 0 4 1
A renderContent() 0 10 1
A getContentReplacer() 0 6 1
A getReplacerPattern() 0 6 2
1
<?php namespace Arcanesoft\Seo\Models\Presenters;
2
3
use Arcanesoft\Seo\Entities\Locales;
4
use Arcanesoft\Seo\Helpers\TextReplacer;
5
6
/**
7
 * Class     PagePresenter
8
 *
9
 * @package  Arcanesoft\Seo\Models\Presenters
10
 * @author   ARCANEDEV <[email protected]>
11
 *
12
 * @property  string  locale
13
 * @property  string  locale_name
14
 * @property  string  content
15
 * @property  string  content_preview
16
 */
17
trait PagePresenter
18
{
19
    /* -----------------------------------------------------------------
20
     |  Accessors
21
     | -----------------------------------------------------------------
22
     */
23
24
    /**
25
     * Get the `locale_name` attribute.
26
     *
27
     * @return string|null
28
     */
29
    public function getLocaleNameAttribute()
30
    {
31
        return Locales::get($this->locale);
32
    }
33
34
    /**
35
     * Get the `content_preview` attribute.
36
     *
37
     * @return string
38
     */
39
    public function getContentPreviewAttribute()
40
    {
41
        return $this->getContentReplacer()->highlight($this->content);
42
    }
43
44
    /* -----------------------------------------------------------------
45
     |  Other Methods
46
     | -----------------------------------------------------------------
47
     */
48
49
    /**
50
     * Render the content.
51
     *
52
     * @param  array  $replacements
53
     *
54
     * @return string
55
     */
56
    protected function renderContent(array $replacements)
57
    {
58
        return $this->getContentReplacer()->replace($this->content, array_merge([
59
            'app_name' => config('app.name'),
60
            'app_url'  => link_to(config('app.url'), config('app.name')),
61
            'mobile'   => html()->tel(config('cms.company.mobile')),
62
            'phone'    => html()->tel(config('cms.company.phone')),
63
            'email'    => html()->mailto(config('cms.company.email')),
64
        ], $replacements));
65
    }
66
67
    /**
68
     * Get the content replacer.
69
     *
70
     * @return \Arcanesoft\Seo\Helpers\TextReplacer
71
     */
72
    protected static function getContentReplacer()
73
    {
74
        return TextReplacer::make(
75
            config('arcanesoft.seo.pages.replacer', [])
76
        );
77
    }
78
79
    /**
80
     * Get the content replacer pattern.
81
     *
82
     * @return string
83
     */
84
    protected function getReplacerPattern()
85
    {
86
        $replacer = config('arcanesoft.seo.pages.replacer', []);
87
88
        return empty($replacer) ? '' : '/\[('.implode('|', $replacer).')\]/';
89
    }
90
}
91