Passed
Push — master ( 7e8bc7...1031f0 )
by Guillaume
38s
created

AutopromoBannerScriptGenerator   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 34
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
wmc 3
lcom 1
cbo 3
dl 0
loc 34
c 0
b 0
f 0
ccs 0
cts 20
cp 0
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
B generate() 0 24 3
1
<?php
2
3
namespace Dekalee\AdbackAnalytics\Generator;
4
5
use Dekalee\AdbackAnalytics\Exception\AutopromoBannerIdMissing;
6
7
/**
8
 * Class AutopromoBannerScriptGenerator
9
 */
10
class AutopromoBannerScriptGenerator extends AbstractScriptGenerator implements ScriptGeneratorInterface
11
{
12
    /**
13
     * @param int $id
14
     *
15
     * @return string
16
     *
17
     * @throws AutopromoBannerIdMissing
18
     */
19
    public function generate($id = null)
20
    {
21
        if(is_null($id)) {
22
            throw new AutopromoBannerIdMissing();
23
        }
24
25
        if (!$this->cache->isAutopromoBannerConfigured()) {
26
            return '';
27
        }
28
29
        $url = $this->cache->getAutopromoBannerUrl();
30
        $script = $this->cache->getAutopromoBannerScript();
31
32
        $script = <<<EOS
33
(function (a,d){var s,t,cs,ds,dd;s=d.createElement('script');cs=d.currentScript;
34
    ds=d.createElement('span');ds.id=Math.random().toString(36).substring(7);
35
    dd=cs.parentNode.insertBefore(ds,cs);
36
    s.src=a;s.async=1;s.setAttribute('data-dd',ds.id);s.setAttribute('data-id',$id);
37
    t=d.getElementsByTagName('script')[0];t.parentNode.insertBefore(s,t);})
38
("https://$url/$script.js", document);
39
EOS;
40
41
        return $script;
42
    }
43
}
44