function OA_Dal_Delivery_getLinkedAds($search, $campaignid = '', $lastpart = true) { $conf = $GLOBALS['_MAX']['CONF']; $campaignid = (int) $campaignid; if ($campaignid > 0) { $precondition = " AND d.campaignid = '" . $campaignid . "' "; } else { $precondition = ''; } $aRows['xAds'] = array(); $aRows['ads'] = array(); $aRows['lAds'] = array(); $aRows['count_active'] = 0; $aRows['zone_companion'] = false; $aRows['count_active'] = 0; $totals = array('xAds' => 0, 'ads' => 0, 'lAds' => 0); $query = OA_Dal_Delivery_buildQuery($search, $lastpart, $precondition); $rAds = OA_Dal_Delivery_query($query); if (!is_resource($rAds)) { return defined('OA_DELIVERY_CACHE_FUNCTION_ERROR') ? OA_DELIVERY_CACHE_FUNCTION_ERROR : null; } $aConversionLinkedCreatives = MAX_cacheGetTrackerLinkedCreatives(); while ($aAd = OA_Dal_Delivery_fetchAssoc($rAds)) { $aAd['tracker_status'] = !empty($aConversionLinkedCreatives[$aAd['ad_id']]['status']) ? $aConversionLinkedCreatives[$aAd['ad_id']]['status'] : null; if ($aAd['campaign_priority'] == -1) { $aAd['priority'] = $aAd['campaign_weight'] * $aAd['weight']; $aRows['xAds'][$aAd['ad_id']] = $aAd; $aRows['count_active']++; $totals['xAds'] += $aAd['priority']; } elseif ($aAd['campaign_priority'] == 0) { $aAd['priority'] = $aAd['campaign_weight'] * $aAd['weight']; $aRows['lAds'][$aAd['ad_id']] = $aAd; $aRows['count_active']++; $totals['lAds'] += $aAd['priority']; } elseif ($aAd['campaign_priority'] == -2) { $aRows['eAds'][$aAd['campaign_priority']][$aAd['ad_id']] = $aAd; $aRows['count_active']++; } else { $aRows['ads'][$aAd['campaign_priority']][$aAd['ad_id']] = $aAd; $aRows['count_active']++; } } if (isset($aRows['xAds']) && is_array($aRows['xAds'])) { $totals['xAds'] = _setPriorityFromWeights($aRows['xAds']); } if (isset($aRows['ads']) && is_array($aRows['ads'])) { if (isset($aRows['lAds']) && is_array($aRows['lAds']) && count($aRows['lAds']) > 0) { $totals['ads'] = _getTotalPrioritiesByCP($aRows['ads'], true); } else { $totals['ads'] = _getTotalPrioritiesByCP($aRows['ads'], false); } } if (is_array($aRows['eAds'])) { $totals['eAds'] = _getTotalPrioritiesByCP($aRows['eAds']); } if (isset($aRows['lAds']) && is_array($aRows['lAds'])) { $totals['lAds'] = _setPriorityFromWeights($aRows['lAds']); } $aRows['priority'] = $totals; return $aRows; }
/** * The function to get and return the ads for direct selection * * @param string $search The search string for this banner selection * Usually 'bannerid:123' or 'campaignid:123' * @param string $campaignid The campaign ID to fecth banners from, added in 2.3.32 to allow BC with 2.0 * @param boolean $lastpart Are there any other search strings left * * @return array|false The array of ads matching the search criteria * or false on failure */ function OA_Dal_Delivery_getLinkedAds($search, $campaignid = '', $lastpart = true) { $conf = $GLOBALS['_MAX']['CONF']; // Sanitise parameteres $campaignid = (int) $campaignid; if ($campaignid > 0) { $precondition = " AND d.campaignid = '" . $campaignid . "' "; } else { $precondition = ''; } $aRows['xAds'] = array(); $aRows['ads'] = array(); $aRows['lAds'] = array(); $aRows['count_active'] = 0; $aRows['zone_companion'] = false; $aRows['count_active'] = 0; $totals = array('xAds' => 0, 'ads' => 0, 'lAds' => 0); $query = OA_Dal_Delivery_buildQuery($search, $lastpart, $precondition); $rAds = OA_Dal_Delivery_query($query); if (!is_resource($rAds)) { return defined('OA_DELIVERY_CACHE_FUNCTION_ERROR') ? OA_DELIVERY_CACHE_FUNCTION_ERROR : null; } // Get creatives with conversions enabled $aConversionLinkedCreatives = MAX_cacheGetTrackerLinkedCreatives(); while ($aAd = OA_Dal_Delivery_fetchAssoc($rAds)) { $aAd['tracker_status'] = !empty($aConversionLinkedCreatives[$aAd['ad_id']]['status']) ? $aConversionLinkedCreatives[$aAd['ad_id']]['status'] : null; // Is the creative from an override, contract or remnant campaign? if ($aAd['campaign_priority'] == -1) { // Creative is in an override campaign $aAd['priority'] = $aAd['campaign_weight'] * $aAd['weight']; $aRows['xAds'][$aAd['ad_id']] = $aAd; $aRows['count_active']++; $totals['xAds'] += $aAd['priority']; } elseif ($aAd['campaign_priority'] == 0) { // Creative is in a remnant campaign $aAd['priority'] = $aAd['campaign_weight'] * $aAd['weight']; $aRows['lAds'][$aAd['ad_id']] = $aAd; $aRows['count_active']++; $totals['lAds'] += $aAd['priority']; } elseif ($aAd['campaign_priority'] == -2) { // Creative is in an eCPM campaign $aRows['eAds'][$aAd['campaign_priority']][$aAd['ad_id']] = $aAd; $aRows['count_active']++; } else { // Creative is in a contract campaign $aRows['ads'][$aAd['campaign_priority']][$aAd['ad_id']] = $aAd; $aRows['count_active']++; } } // If there are override campaign creatives, sort by priority if (isset($aRows['xAds']) && is_array($aRows['xAds'])) { $totals['xAds'] = _setPriorityFromWeights($aRows['xAds']); } // If there are contract campaign creatives, prepare array of priority totals // to allow delivery to do the scaling work later if (isset($aRows['ads']) && is_array($aRows['ads'])) { // Are there any "lower" level creatives? if (isset($aRows['lAds']) && is_array($aRows['lAds']) && count($aRows['lAds']) > 0) { // "Lower" level creatives exist, INCLUDE the "blank" priority $totals['ads'] = _getTotalPrioritiesByCP($aRows['ads'], true); } else { // "Lower" level creatives do NOT exist, EXCLUDE the "blank" priority $totals['ads'] = _getTotalPrioritiesByCP($aRows['ads'], false); } } // eCPM remnant campaigns if (is_array($aRows['eAds'])) { $totals['eAds'] = _getTotalPrioritiesByCP($aRows['eAds']); } // If there are remnant campaign creatives, sort by priority if (isset($aRows['lAds']) && is_array($aRows['lAds'])) { $totals['lAds'] = _setPriorityFromWeights($aRows['lAds']); } $aRows['priority'] = $totals; return $aRows; }
function OA_Dal_Delivery_getLinkedAds($search, $campaignid = '', $lastpart = true) { $conf = $GLOBALS['_MAX']['CONF']; // Sanitise parameteres $campaignid = (int) $campaignid; if ($campaignid > 0) { $precondition = " AND d.campaignid = '" . $campaignid . "' "; } else { $precondition = ''; } $aRows['xAds'] = array(); $aRows['cAds'] = array(); $aRows['clAds'] = array(); $aRows['ads'] = array(); $aRows['lAds'] = array(); $aRows['count_active'] = 0; $aRows['zone_companion'] = false; $aRows['count_active'] = 0; $totals = array('xAds' => 0, 'cAds' => 0, 'clAds' => 0, 'ads' => 0, 'lAds' => 0); $query = OA_Dal_Delivery_buildQuery($search, $lastpart, $precondition); $rAds = OA_Dal_Delivery_query($query); if (!is_resource($rAds)) { if (defined('OA_DELIVERY_CACHE_FUNCTION_ERROR')) { return OA_DELIVERY_CACHE_FUNCTION_ERROR; } else { return null; } } // Get timezone data $aTimezones = MAX_cacheGetAccountTZs(); while ($aAd = OA_Dal_Delivery_fetchAssoc($rAds)) { // Add timezone if (isset($aAd['account_id']) && isset($aTimezones['aAccounts'][$aAd['account_id']])) { $aAd['timezone'] = $aTimezones['aAccounts'][$aAd['account_id']]; } else { $aAd['timezone'] = $aTimezones['default']; } // Is the ad Exclusive, Low, or Normal Priority? if ($aAd['campaign_priority'] == -1) { // Ad is in an exclusive placement $aAd['priority'] = $aAd['campaign_weight'] * $aAd['weight']; $aRows['xAds'][$aAd['ad_id']] = $aAd; $aRows['count_active']++; $totals['xAds'] += $aAd['priority']; } elseif ($aAd['campaign_priority'] == 0) { // Ad is in a low priority placement $aAd['priority'] = $aAd['campaign_weight'] * $aAd['weight']; $aRows['lAds'][$aAd['ad_id']] = $aAd; $aRows['count_active']++; $totals['lAds'] += $aAd['priority']; } elseif ($aAd['campaign_priority'] == -2) { // Ad is in a low priority eCPM placement $aRows['eAds'][$aAd['ad_id']] = $aAd; $aRows['count_active']++; } else { // Ad is in a paid placement $aRows['ads'][$aAd['campaign_priority']][$aAd['ad_id']] = $aAd; $aRows['count_active']++; } // Also store Companion ads in additional array if ($aAd['campaign_companion'] == 1) { if ($aAd['campaign_priority'] == 0) { // Store a low priority companion ad $aRows['zone_companion'][] = $aAd['placement_id']; $aRows['clAds'][$aAd['ad_id']] = $aAd; $totals['clAds'] += $aAd['priority']; } else { // Store a paid priority companion ad $aRows['zone_companion'][] = $aAd['placement_id']; $aRows['cAds'][$aAd['campaign_priority']][$aAd['ad_id']] = $aAd; } } } // If there are exclusive ads, sort by priority if (isset($aRows['xAds']) && is_array($aRows['xAds'])) { $totals['xAds'] = _setPriorityFromWeights($aRows['xAds']); } // If there are paid ads, prepare array of priority totals // to allow delivery to do the scaling work later if (isset($aRows['ads']) && is_array($aRows['ads'])) { $totals['ads'] = _getTotalPrioritiesByCP($aRows['ads']); } // If there are low priority ads, sort by priority if (isset($aRows['lAds']) && is_array($aRows['lAds'])) { $totals['lAds'] = _setPriorityFromWeights($aRows['lAds']); } // If there are paid companion ads, prepare array of priority totals // to allow delivery to do the scaling work later if (isset($aRows['cAds']) && is_array($aRows['cAds'])) { $totals['cAds'] = _getTotalPrioritiesByCP($aRows['cAds']); } // If there are low priority companion ads, sort by priority if (isset($aRows['clAds']) && is_array($aRows['clAds'])) { $totals['clAds'] = _setPriorityFromWeights($aRows['clAds']); } $aRows['priority'] = $totals; return $aRows; }