Skip to content

Commit

Permalink
Merge pull request #4 from dekalee/autopromo-generator
Browse files Browse the repository at this point in the history
Autopromo banner generator
  • Loading branch information
sempixel committed Mar 23, 2017
2 parents 7e8bc7a + 3c8069d commit 1031f06
Show file tree
Hide file tree
Showing 5 changed files with 132 additions and 1 deletion.
48 changes: 48 additions & 0 deletions src/AdbackAnalytics/Driver/RedisScriptCache.php
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,14 @@ public function isMessageConfigured()
return $this->redis->exists('adback_message_url');
}

/**
* @return bool
*/
public function isAutopromoBannerConfigured()
{
return $this->redis->exists('adback_autopromo_banner_url');
}

/**
* @param string $domain
*/
Expand Down Expand Up @@ -97,6 +105,38 @@ public function getMessageScript()
return $this->redis->get('adback_message_script');
}

/**
* @param string $domain
*/
public function setAutopromoBannerUrl($domain)
{
$this->redis->set('adback_autopromo_banner_url', $domain);
}

/**
* @return string
*/
public function getAutopromoBannerUrl()
{
return $this->redis->get('adback_autopromo_banner_url');
}

/**
* @param string $script
*/
public function setAutopromoBannerScript($script)
{
$this->redis->set('adback_autopromo_banner_script', $script);
}

/**
* @return string
*/
public function getAutopromoBannerScript()
{
return $this->redis->get('adback_autopromo_banner_script');
}

/**
* Clear analytics data
*/
Expand All @@ -113,4 +153,12 @@ public function clearMessageData()
$this->redis->del('adback_message_url', 'adback_message_script');
}

/**
* Clear autopromo banner data
*/
public function clearAutopromoBannerData()
{
$this->redis->del('adback_autopromo_banner_url', 'adback_autopromo_banner_script');
}

}
30 changes: 30 additions & 0 deletions src/AdbackAnalytics/Driver/ScriptCacheInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,11 @@ public function getAnalyticsScript();
*/
public function isMessageConfigured();

/**
* @return bool
*/
public function isAutopromoBannerConfigured();

/**
* @param string $domain
*/
Expand All @@ -57,6 +62,26 @@ public function setMessageScript($script);
*/
public function getMessageScript();

/**
* @param string $domain
*/
public function setAutopromoBannerUrl($domain);

/**
* @return string
*/
public function getAutopromoBannerUrl();

/**
* @param string $script
*/
public function setAutopromoBannerScript($script);

/**
* @return string
*/
public function getAutopromoBannerScript();

/**
* Clear analytics data
*/
Expand All @@ -66,4 +91,9 @@ public function clearAnalyticsData();
* Clear message data
*/
public function clearMessageData();

/**
* Clear autopromo banner data
*/
public function clearAutopromoBannerData();
}
10 changes: 10 additions & 0 deletions src/AdbackAnalytics/Exception/AutopromoBannerIdMissing.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?php

namespace Dekalee\AdbackAnalytics\Exception;

/**
* Class AutopromoBannerIdMissing
*/
class AutopromoBannerIdMissing extends \Exception
{
}
43 changes: 43 additions & 0 deletions src/AdbackAnalytics/Generator/AutopromoBannerScriptGenerator.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
<?php

namespace Dekalee\AdbackAnalytics\Generator;

use Dekalee\AdbackAnalytics\Exception\AutopromoBannerIdMissing;

/**
* Class AutopromoBannerScriptGenerator
*/
class AutopromoBannerScriptGenerator extends AbstractScriptGenerator implements ScriptGeneratorInterface
{
/**
* @param int $id
*
* @return string
*
* @throws AutopromoBannerIdMissing
*/
public function generate($id = null)
{
if(is_null($id)) {
throw new AutopromoBannerIdMissing();
}

if (!$this->cache->isAutopromoBannerConfigured()) {
return '';
}

$url = $this->cache->getAutopromoBannerUrl();
$script = $this->cache->getAutopromoBannerScript();

$script = <<<EOS
(function (a,d){var s,t,cs,ds,dd;s=d.createElement('script');cs=d.currentScript;
ds=d.createElement('span');ds.id=Math.random().toString(36).substring(7);
dd=cs.parentNode.insertBefore(ds,cs);
s.src=a;s.async=1;s.setAttribute('data-dd',ds.id);s.setAttribute('data-id',$id);
t=d.getElementsByTagName('script')[0];t.parentNode.insertBefore(s,t);})
("https://$url/$script.js", document);
EOS;

return $script;
}
}
2 changes: 1 addition & 1 deletion src/AdbackAnalytics/Generator/MessageScriptGenerator.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public function generate()
$script = $this->cache->getMessageScript();

$script = <<<EOS
(function (a,d){var s,t,u;s=d.createElement('script');
(function (a,d){var s,t;s=d.createElement('script');
s.src=a;s.async=1;
t=d.getElementsByTagName('script')[0];
t.parentNode.insertBefore(s,t);
Expand Down

0 comments on commit 1031f06

Please sign in to comment.