| <?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; | |
| } | |
| } |