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

AutopromoBannerScriptGenerator::generate()   B

Complexity

Conditions 3
Paths 3

Size

Total Lines 24
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 12

Importance

Changes 0
Metric Value
dl 0
loc 24
c 0
b 0
f 0
ccs 0
cts 20
cp 0
rs 8.9713
cc 3
eloc 13
nc 3
nop 1
crap 12
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