blob: da35b52e493a2f89c2fbab63d5a9549cb224743b [file] [log] [blame]
<?php
/**
* Copyright (c) 2018 Eclipse Foundation.
*
* 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:
* Christopher Guindon (Eclipse Foundation) - Initial implementation
*
* SPDX-License-Identifier: EPL-2.0
*/
require_once (dirname(__FILE__) . "/../membership/membershipImage.class.php");
require_once ("campaignImpression.class.php");
/**
*
* Display paid promotions on Eclipse web properties
*
* @author chrisguindon
*/
class Promotions {
/**
* Eclipse Advertisements
*
* 1. Paid ads should split 40% of the total impressions
* 2. EclipseCon should take 10% of the total impressions
* 3. Members ads should split the remaning 50%.
*
* @return array $retVal
*/
static public function getPromos($filter = array()) {
$promos = array();
/**
* PAID ads (30%)
*/
$promos[] = array(
'url' => 'PAID_FROGLOGIC_BANNER_1',
'imageurl' => '/membership/promo/images/banner_1_froglogic.png',
'memberName' => 'FrogLogic',
'type' => 'paid',
'weight' => 4
);
$promos[] = array(
'url' => 'PAID_FROGLOGIC_BANNER_2',
'imageurl' => '/membership/promo/images/banner_2_froglogic_proven_java_learn_more.png',
'memberName' => 'FrogLogic',
'type' => 'paid',
'weight' => 4
);
$promos[] = array(
'url' => 'PROMO_KONDUIT',
'imageurl' => '/membership/promo/images/konduit.jpg',
'memberName' => 'Konduit',
'type' => 'strat_ad',
'weight' => 5
);
// Strategic Member Ads
$promos[] = array(
'url' => 'PROMO_ORACLE',
'imageurl' => '/membership/promo/images/oepe_ad_200x200.jpg',
'memberName' => 'Oracle',
'type' => 'strat_ad',
'weight' => 6
);
$promos[] = array(
'url' => 'IBM_JAZZ',
'imageurl' => '/membership/promo/images/ibm200x200-ibm_cloud.jpg',
'memberName' => 'IBM',
'type' => 'strat_ad',
'weight' => 6
);
$promos[] = array(
'url' => 'PROMO_SAP',
'imageurl' => '/membership/promo/images/sap200x200.jpg',
'memberName' => 'SAP',
'type' => 'strat_ad',
'weight' => 6
);
$promos[] = array(
'url' => 'PROMO_OBEO',
'imageurl' => '/membership/promo/images/Sirius_ad_200.png',
'memberName' => 'Obeo',
'type' => 'strat_ad',
'weight' => 6
);
$promos[] = array(
'url' => 'PROMO_CEA',
'imageurl' => '/membership/promo/images/PapyrusCEA.gif',
'memberName' => 'CEA',
'type' => 'strat_ad',
'weight' => 6
);
$promos[] = array(
'url' => 'PROMO_FUJITSU',
'imageurl' => '/membership/promo/images/fujitsu_200px.jpg',
'memberName' => 'Fujitsu',
'type' => 'strat_ad',
'weight' => 6
);
$promos[] = array(
'url' => 'PROMO_RED_HAT',
'imageurl' => '/membership/promo/images/redhat-ad.jpg',
'memberName' => 'EclipseFoundation',
'type' => 'strat_ad',
'weight' => 6
);
$promos[] = array(
'url' => 'PROMO_FOKUS',
'imageurl' => '/membership/promo/images/fokus_promo.jpg',
'memberName' => 'EclipseFoundation',
'type' => 'strat_ad',
'weight' => 6
);
$promos[] = array(
'url' => 'PROMO_HUAWEI',
'imageurl' => '/membership/promo/images/huawei-ad-eclipse-hdc.jpg',
'memberName' => 'EclipseFoundation',
'type' => 'strat_ad',
'weight' => 5
);
$promos[] = array(
'url' => 'PROMO_EUROPEAN_RESEARCH_CASE_STUDY_2020',
'imageurl' => '/membership/promo/images/european-research-innovation-case-studies.png',
'memberName' => 'EclipseFoundation',
'type' => 'strat_ad',
'weight' => 4
);
$promos[] = array(
'url' => 'PROMO_CEDALO_CASE_STUDY',
'imageurl' => '/membership/promo/images/promo_cedalo_case_study.png',
'memberName' => 'EclipseFoundation',
'type' => 'strat_ad',
'weight' => 4
);
$promos[] = array(
'url' => 'PROMO_ENABLING_TRANSFORMATION',
'imageurl' => '/membership/promo/images/enabling_digital_transformation.png',
'memberName' => 'EclipseFoundation',
'type' => 'strat_ad',
'weight' => 4
);
$promos[] = array(
'url' => 'PROMO_JAKARTA_EE_DEV_SURVEY_2020',
'imageurl' => '/membership/promo/images/jakarta_ee_developer_survey_2020.png',
'memberName' => 'EclipseFoundation',
'type' => 'strat_ad',
'weight' => 4
);
$promos[] = array(
'url' => 'PROMO_JAKARTAONE_REGISTER_TODAY',
'imageurl' => '/membership/promo/images/jakartaone-register-today.png',
'memberName' => 'EclipseFoundation',
'type' => 'strat_ad',
'weight' => 6
);
$promos[] = array(
'url' => 'PROMO_IOT_DEV_SURVEY_2020',
'imageurl' => '/membership/promo/images/iot_dev_survey_2020.png',
'memberName' => 'EclipseFoundation',
'type' => 'strat_ad',
'weight' => 6
);
$promos[] = array(
'url' => 'PROMO_JAKARTA_EE_YOUTUBE',
'imageurl' => '/membership/promo/images/jakarta_ee_youtube_ad.png',
'memberName' => 'EclipseFoundation',
'type' => 'strat_ad',
'weight' => 6
);
if (!empty($filter)) {
$filter_promo = array();
foreach ($promos as $ad) {
if (in_array($ad['type'], $filter)) {
$filter_promo[] = $ad;
}
}
return $filter_promo;
}
return $promos;
}
/**
* Return promo HTML
*
* @return string
*/
static public function output($filter = array()) {
$promos = self::getPromos($filter);
$ad = (isset($_GET['ad_id']) && is_numeric($_GET['ad_id']) && !empty($promos[$_GET['ad_id']])) ? $promos[$_GET['ad_id']] : self::_array_rand_weighted($promos);
if (empty($ad['type'])) {
return "";
}
if ($ad['type'] == 'strategic') {
return self::_buildStrategicMemberAd($ad);
}
return self::_buildAd($ad);
}
/**
* Build Strategic Member ad
*
* @param unknown $array
* @return string
*/
static private function _buildStrategicMemberAd($array) {
$mimg = new MemberImage();
list($width, $height) = $mimg->getsmall_image($array['memberID']);
// check for errors ( -1 in both means something bad happened getting the
// image details)
if ($width >= 1 && $height >= 1) {
$heightText = 'height="' . $height . '" ';
return '<div class="eclipsefnd-ad ad-strategic ad-strategic-frontpage"><a href="/membership/showMember.php?member_id=' . $array['memberID'] . '" rel="nofollow" style="background-image: url(\'/membership/scripts/get_image.php?size=small&id=' . $array['memberID'] . '\')">' . $array['memberName'] . '</a></div>';
}
return "";
}
/**
* Build stadard promo ad
* @param unknown $array
* @return string
*/
static private function _buildAd($array) {
if (empty($array) || empty($array['url']) || empty($array['imageurl']) || empty($array['memberName'])) {
return "";
}
$CampaignImpression = new CampaignImpression($array['url']);
$impression_id = $CampaignImpression->recordImpression();
return '<div class="eclipsefnd-ad ad-strategic ad-strategic-default"><a href="/go/' . $array['url'] . '?impression_id=' . $impression_id . '" rel="nofollow" style="background-image: url(\'' . $array['imageurl'] . '\')">' . $array['memberName'] . '</a></div>';
}
/**
* Select an add based of #weight value
*
* @param unknown $values
*
* @return unknown
*/
static private function _array_rand_weighted($values) {
if (empty($values)) {
return array();
}
$totalWeight = 0;
foreach ($values as $rr) {
$totalWeight += $rr['weight'];
}
$r = mt_rand(1, $totalWeight);
foreach ($values as $item) {
if ($r <= $item['weight'])
return $item;
$r -= $item['weight'];
}
}
}