blob: 91305b5228904a02c891ebfe1da627b87382d18a [file] [log] [blame]
<?php
/**
* Copyright (c) 2010, 2014, 2015, 2018 Eclipse Foundation and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* Contributors:
* Nathan Gervais (Eclipse Foundation) - Initial API + Implementation
* Christopher Guindon (Eclipse Foundation) - initial API and implementation
*
* SPDX-License-Identifier: EPL-2.0
*/
require_once(realpath(dirname(__FILE__) . "/../../system/app.class.php"));
/**
* CampaignImpression
*
* @package eclipse.org-common
* @subpackage ads
* @author: Christopher Guindon <chris.guindon@eclipse.org>
*/
class CampaignImpression {
/**
* The Eclipse campaign key
* @var unknown
*/
private $campaign_key = '';
/**
* Constructor
*
* @param string $_campaign_key
* @param string $_source (deprecated)
*/
function __construct($_campaign_key, $_source = NULL) {
$this->campaign_key = $_campaign_key;
}
/**
* Record an impression in the Eclipse database
*/
function recordImpression() {
$App = new App();
// We dont register ad impressions in devmode
if ($App->devmode == TRUE) {
return FALSE;
}
if (rand(0, 1000) < 1) {
// 1 of every 1,000 hits (0.1%) will clean up
$deleteSql = "DELETE LOW_PRIORITY FROM CampaignImpressions WHERE TimeImpressed < DATE_SUB(NOW(), INTERVAL 1 YEAR)";
$App->eclipse_sql($deleteSql);
}
$url = parse_url($_SERVER['SCRIPT_URI']);
$host = (!empty($url['host'])) ? $App->returnQuotedString($App->sqlSanitize(preg_replace('#^www\.(.+\.)#i', '$1', $url['host']))) : 'NULL';
$source = (!empty($url['path'])) ? $App->returnQuotedString($App->sqlSanitize($url['path'])) : 'NULL';
$ImpressionClickID = $App->getAlphaCode(rand(32, 64));
$ip = $App->anonymizeIP($App->getRemoteIPAddress());
$ip = (!empty($ip)) ? $App->returnQuotedString($App->sqlSanitize($ip)) : 'NULL';
$sql = "INSERT DELAYED INTO CampaignImpressions
(ImpressionClickID, CampaignKey, Source, HostName, TimeImpressed, Host)
VALUES (
" . $App->returnQuotedString($App->sqlSanitize($ImpressionClickID)) . ",
" . $App->returnQuotedString($App->sqlSanitize($this->campaign_key)) . ",
" . $source . ",
" . $ip . ",
now(),
" . $host . ")";
$result = $App->eclipse_sql($sql);
return $ImpressionClickID;
}
}