| <?php | |
| /******************************************************************************* | |
| * Copyright (c) 2010, 2014, 2015 Eclipse Foundation and others. | |
| * All rights reserved. This program and the accompanying materials | |
| * are made available under the terms of the Eclipse Public License v1.0 | |
| * which accompanies this distribution, and is available at | |
| * http://www.eclipse.org/legal/epl-v10.html | |
| * | |
| * Contributors: | |
| * Nathan Gervais (Eclipse Foundation) - Initial API + Implementation | |
| * Christopher Guindon (Eclipse Foundation) | |
| *******************************************************************************/ | |
| 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 = 0; | |
| /** | |
| * The description of the page that will display the ad | |
| * @var string | |
| */ | |
| private $source = ''; | |
| /** | |
| * The remote address of the user that will view the ad | |
| * @var string | |
| */ | |
| private $remote_addr = ''; | |
| /** | |
| * The current UNIX timestamp | |
| * @var string | |
| */ | |
| private $timestamp = ''; | |
| /** | |
| * Constructor | |
| * | |
| * @param string $_campaign_key | |
| * @param string $_source | |
| * @param string $_remote_addr | |
| */ | |
| function __construct($_campaign_key, $_source, $_remote_addr) { | |
| $this->campaign_key = $_campaign_key; | |
| $this->source = $_source; | |
| $this->remote_addr = $_remote_addr; | |
| $this->timestamp = date('Y-m-d H:i:s'); | |
| } | |
| /** | |
| * Record an impression in the Eclipse database | |
| */ | |
| function recordImpression() { | |
| $App = new App(); | |
| // We dont register ad impressions in devmode | |
| if ($App->devmode == TRUE) return; | |
| 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); | |
| } | |
| $sql = "INSERT DELAYED INTO CampaignImpressions | |
| (CampaignKey, Source, HostName, TimeImpressed) | |
| VALUES ( | |
| " . $App->returnQuotedString($App->sqlSanitize($this->campaign_key)) . ", | |
| " . $App->returnQuotedString($App->sqlSanitize($this->source)) . ", | |
| " . $App->returnQuotedString($App->sqlSanitize($this->remote_addr)) . ", | |
| " . $App->returnQuotedString($App->sqlSanitize($this->timestamp)) . ")"; | |
| $result = $App->eclipse_sql($sql); | |
| return TRUE; | |
| } | |
| } |