<?php

class pluginGoogleAnalytics extends Plugin {

	public function init()
	{
		$this->dbFields = array(
			'EUGDPR'=>true,
			'trackingID'=>''
		);
	}

	public function form()
	{
		global $Language;

		$html  = '<div>';
		$html .= '<label for="jstrackingID">'.$Language->get('Google Analytics Tracking ID').'</label>';
		$html .= '<input id="jstrackingID" type="text" name="trackingID" value="'.$this->getValue('trackingID').'">';
		$html .= '<span class="tip">'.$Language->get('complete-this-field-with-the-tracking-id').'</span>';
		$html .= '</div>';

		$html .= '<div>';
		$html .= '<label>EU General Data Protection</label>';
		$html .= '<select name="EUGDPR">';
		$html .= '<option value="true" '.($this->getValue('EUGDPR')===true?'selected':'').'>'.$Language->get('Enabled').'</option>';
		$html .= '<option value="false" '.($this->getValue('EUGDPR')===false?'selected':'').'>'.$Language->get('Disabled').'</option>';
		$html .= '</select>';
		$html .= '<span class="tip">Show the consent to the user before loading the script of Google Analytics. The user can reject be tracked for Google Analytics.</span>';
		$html .= '</div>';

		return $html;
	}

	public function siteHead()
	{
		$html = '<style>
				#pluginGoogleAnalytics {
					display: block;
					position: fixed;
					top: 0;
					background: #eee;
					padding: 2px 10px;
					font-size: 1em;
					color: #555;
					z-index: 2000;
					width: 100%;
					padding: 30px;
					text-align: center;
					border-bottom: 1px solid #999;
				}

				#pluginGoogleAnalytics div.buttons {
					margin-top: 10px;
				}

				#pluginGoogleAnalytics button {
					margin-right: 10px;
				}
			}
			</style>';

		return $html;
	}

	public function siteBodyBegin()
	{
		$script = '
			<script>
			function executeGoogleAnalytics() {

				var s = document.createElement("script");
				s.src = "https://www.googletagmanager.com/gtag/js?id='.$this->getValue('trackingID').'";
				document.body.appendChild(s);

				var s = document.createElement("script");
				s.text = \'window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag("js", new Date()); gtag("config", "'.$this->getValue('trackingID').'");\';
				document.body.appendChild(s);

				hideGoogleAnalyticsDialog();
			}

			function hideGoogleAnalyticsDialog() {
				document.getElementById("pluginGoogleAnalytics").style.display = "none";
			}

			</script>
		';

		if ($this->getValue('EUGDPR')) {
			$html  = '<div id="pluginGoogleAnalytics">';
			$html .= '<div>Allow to Google Analytics tracking you?</div>';
			$html .= '<div class="buttons">';
			$html .= '<button id="pluginGoogleAnalytics_allowButton">Allow</button>';
			$html .= '<button id="pluginGoogleAnalytics_denyButton">Deny</button>';
			$html .= '</div>';
			$html .= '</div>';
		} else {
			$html = '<script> window.onload=function() { executeGoogleAnalytics(); }</script>';
		}

		$script .= '
			<script>
			window.onload=function() {
				document.getElementById("pluginGoogleAnalytics_allowButton").addEventListener("click", executeGoogleAnalytics);
				document.getElementById("pluginGoogleAnalytics_denyButton").addEventListener("click", hideGoogleAnalyticsDialog);
			}
			</script>
		';

		return $script.$html;
	}
}