/** * A method that can be inherited and used by children classes to get the * required date span of a statistics page. * * @param object $oCaller The calling object. Expected to have the * the following class variables: * $oCaller->aPlugins - An array of statistics fields plugins * $oCaller->oStartDate - Will be set by method * $oCaller->spanDays - Will be set by method * $oCaller->spanWeeks - Will be set by method * $oCaller->spanMonths - Will be set by method * @param array $aParams An array of query parameters for * {@link Admin_DA::fromCache()}. */ function getSpan(&$oCaller, $aParams) { $oStartDate = new Date(date('Y-m-d')); $oStartDate->setHour(0); $oStartDate->setMinute(0); $oStartDate->setSecond(0); // Check span using all plugins foreach ($oCaller->aPlugins as $oPlugin) { $aPluginParams = call_user_func(array($oPlugin, 'getHistorySpanParams')); $aSpan = Admin_DA::fromCache('getHistorySpan', $aParams + $aPluginParams); if (!empty($aSpan['start_date'])) { $oDate = new Date($aSpan['start_date']); $oDate->setTZbyID('UTC'); if ($oDate->before($oStartDate)) { $oDate->convertTZ($oStartDate->tz); $oStartDate = new Date($oDate); } } } $oStartDate->setHour(0); $oStartDate->setMinute(0); $oStartDate->setSecond(0); $oNow = new Date(); $oSpan = new Date_Span(new Date($oStartDate), new Date($oNow->format('%Y-%m-%d'))); // Store the span data required for stats display $oCaller->oStartDate = $oStartDate; $oCaller->spanDays = (int) ceil($oSpan->toDays()); $oCaller->spanWeeks = (int) ceil($oCaller->spanDays / 7) + ($oCaller->spanDays % 7 ? 1 : 0); $oCaller->spanMonths = ($oNow->getYear() - $oStartDate->getYear()) * 12 + ($oNow->getMonth() - $oStartDate->getMonth()) + 1; // Set the caller's aDates span in the event that it's empty if (empty($oCaller->aDates)) { $oCaller->aDates['day_begin'] = $oStartDate->format('%Y-%m-%d'); $oCaller->aDates['day_end'] = $oNow->format('%Y-%m-%d'); } }
public function beforePageHeader(OX_Admin_UI_Event_EventContext $oEventContext) { $pageId = $oEventContext->data['pageId']; $pageData = $oEventContext->data['pageData']; $oHeaderModel = $oEventContext->data['headerModel']; $agencyId = $pageData['agencyid']; $campaignId = $pageData['campaignid']; $advertiserId = $pageData['clientid']; $oEntityHelper = $this->oMarkedTextAdvertiserComponent->getEntityHelper(); if (OA_Permission::isAccount(OA_ACCOUNT_ADVERTISER)) { switch ($pageId) { case 'campaign-banners': $oDalZones = OA_Dal::factoryDAL('zones'); $linkedWebsites = $oDalZones->getWebsitesAndZonesListByCategory($agencyId, null, $campaignId, true); $arraylinkedWebsitesKeys = array_keys($linkedWebsites); $linkedWebsitesKey = $arraylinkedWebsitesKeys[0]; $arraylinkedZonesKeys = array_keys($linkedWebsites[$linkedWebsitesKey]['zones']); $zoneId = $arraylinkedZonesKeys[0]; $aZone = Admin_DA::getZone($zoneId); if ($aZone['type'] == 3) { if (OA_Permission::hasAccessToObject('clients', $clientid) && OA_Permission::hasAccessToObject('campaigns', $campaignid)) { OX_Admin_Redirect::redirect('plugins/' . $this->oMarkedTextAdvertiserComponent->group . "/oxMarkedTextAdvertiser-index.php?campaignid={$campaignId}&clientid={$advertiserId}"); } } break; } } }
function getZones() { global $list_filters; if (OA_Permission::isAccount(OA_ACCOUNT_ADMIN)) { $aParams = array(); $aPublishers = Admin_DA::getPublishers($aParams); // set publisher id if list is to be filtered by publisher if (isset($list_filters['publisher'])) { $aParams = array('publisher_id' => $list_filters['publisher']); } else { // else use all publishers $aParams = array('publisher_id' => implode(',', array_keys($aPublishers))); } if (isset($this->_filter)) { $aParams['zone_inventory_forecast_type'] = $this->getForecastType(); } $aZones = Admin_DA::getZones($aParams); } elseif (OA_Permission::isAccount(OA_ACCOUNT_MANAGER)) { $aParams = array('agency_id' => OA_Permission::getEntityId()); $aPublishers = Admin_DA::getPublishers($aParams); // set publisher id if list is to be filtered by publisher if (isset($list_filters['publisher'])) { $aParams = array('publisher_id' => $list_filters['publisher']); } else { // else use all of this agency's publishers $aParams = array('publisher_id' => implode(',', array_keys($aPublishers))); } if (isset($this->_filter)) { $aParams['zone_inventory_forecast_type'] = $this->getForecastType(); } $aZones = Admin_DA::getZones($aParams); } elseif (OA_Permission::isAccount(OA_ACCOUNT_TRAFFICKER)) { $aParams = array('publisher_id' => OA_Permission::getEntityId()); $aPublishers = Admin_DA::getPublishers($aParams); $aParams = array('publisher_id' => implode(',', array_keys($aPublishers))); if (isset($this->_filter)) { $aParams['zone_inventory_forecast_type'] = $this->getForecastType(); } $aZones = Admin_DA::getZones($aParams); } else { $aPublishers = array(); $aZones = array(); } $aZoneArray = array(); foreach ($aPublishers as $publisherId => $aPublisher) { foreach ($aZones as $zoneId => $aZone) { if ($aZone['publisher_id'] == $publisherId) { $aZoneArray[$zoneId] = phpads_buildName($publisherId, MAX_getPublisherName($aPublisher['name'])) . " - " . phpAds_buildName($zoneId, MAX_getZoneName($aZone['name'])); } } } return $aZoneArray; }
function display() { $aParams = array(); if (OA_Permission::isAccount(OA_ACCOUNT_MANAGER)) { $aParams['agency_id'] = OA_Permission::getEntityId(); } elseif (OA_Permission::isAccount(OA_ACCOUNT_ADVERTISER)) { $aParams['advertiser_id'] = OA_Permission::getEntityId(); } elseif (OA_Permission::isAccount(OA_ACCOUNT_TRAFFICKER)) { $aParams['publisher_id'] = OA_Permission::getEntityId(); } $aPlacements = Admin_DA::getPlacements($aParams, true); $aPlacements = $this->multiSort($aPlacements, "name", true); echo "\n <select name='{$this->_name}' tabindex='" . $this->_tabIndex++ . "'>"; foreach ($aPlacements as $aPlacement) { $selected = $aPlacement['placement_id'] == $this->getValue() ? " selected='selected'" : ''; $name = MAX_getPlacementName($aPlacement); echo "\n <option value='{$aPlacement['placement_id']}'{$selected}>" . htmlspecialchars($name) . "</option>"; } echo "\n </select>"; }
function testFromCacheGetAdsStats() { $this->_generateStats(); $res = Admin_DA::fromCache('getAdsStats', array('placement_id' => $this->campaignId)); $this->assertTrue(is_array($res)); $this->assertTrue(count($res)); }
function getCampaignMap($advertiserId) { $aCampaigns = Admin_DA::getPlacements(array('advertiser_id' => $advertiserId)); $aCampaignMap = array(); foreach ($aCampaigns as $campaignId => $aCampaign) { $campaignName = $aCampaign['name']; // mask campaign name if anonymous campaign $campaign_details = Admin_DA::getPlacement($campaignId); $campaignName = MAX_getPlacementName($campaign_details); $aCampaignMap[$campaignId] = array('name' => $campaignName); } return $aCampaignMap; }
/** * Add the fields needed for conversions stats * * @param array Row of stats * @param array Empty row * @param string Invocated method * @param array Parameter array */ function mergeConversions(&$aRows, $emptyRow, $method, $aParams) { $conf = $GLOBALS['_MAX']['CONF']; $aParams['include'] = isset($aParams['include']) ? array_flip($aParams['include']) : array(); $aParams['exclude'] = isset($aParams['exclude']) ? array_flip($aParams['exclude']) : array(); // Primary key if ($method == 'getEntitiesStats') { if (!isset($aParams['exclude']['ad_id']) && !isset($aParams['exclude']['zone_id'])) { $aFields[] = "CONCAT(diac.ad_id, '_', diac.zone_id) AS pkey"; } elseif (!isset($aParams['exclude']['ad_id'])) { $aFields[] = "diac.ad_id AS pkey"; } else { $aFields[] = "diac.zone_id AS pkey"; } } else { $aParams['exclude']['ad_id'] = true; $aParams['exclude']['zone_id'] = true; if ($method == 'getDayHistory') { $tzMethod = 'format'; $tzArgs = array('%Y-%m-%d'); } elseif ($method == 'getMonthHistory') { $tzMethod = 'format'; $tzArgs = array('%Y-%m'); } elseif ($method == 'getDayOfWeekHistory') { $tzMethod = 'getDayOfWeek'; $tzArgs = array(); } elseif ($method == 'getHourHistory') { $tzMethod = 'getHour'; $tzArgs = array(); } $aFields[] = "DATE_FORMAT(diac.tracker_date_time, '%Y-%m-%d %H:00:00') AS day_and_hour"; $aGroupBy = array('day_and_hour'); } $aFrom = array("{$conf['table']['prefix']}{$conf['table']['data_intermediate_ad_connection']} diac"); $aWhere = array("diac.inside_window = 1"); $aFields[] = "SUM(IF(diac.connection_status = " . MAX_CONNECTION_STATUS_APPROVED . " AND diac.connection_action = " . MAX_CONNECTION_AD_IMPRESSION . ",1,0)) AS sum_conversions_" . MAX_CONNECTION_AD_IMPRESSION; $aFields[] = "SUM(IF(diac.connection_status = " . MAX_CONNECTION_STATUS_APPROVED . " AND diac.connection_action = " . MAX_CONNECTION_AD_CLICK . ",1,0)) AS sum_conversions_" . MAX_CONNECTION_AD_CLICK; $aFields[] = "SUM(IF(diac.connection_status = " . MAX_CONNECTION_STATUS_APPROVED . " AND diac.connection_action = " . MAX_CONNECTION_AD_ARRIVAL . ",1,0)) AS sum_conversions_" . MAX_CONNECTION_AD_ARRIVAL; $aFields[] = "SUM(IF(diac.connection_status = " . MAX_CONNECTION_STATUS_APPROVED . " AND diac.connection_action = " . MAX_CONNECTION_MANUAL . ",1,0)) AS sum_conversions_" . MAX_CONNECTION_MANUAL; $aFields[] = "SUM(IF(diac.connection_status = " . MAX_CONNECTION_STATUS_APPROVED . ",1,0)) AS sum_conversions"; $aFields[] = "SUM(IF(diac.connection_status = " . MAX_CONNECTION_STATUS_PENDING . ",1,0)) AS sum_conversions_pending"; if (!empty($aParams['day_begin']) && !empty($aParams['day_end'])) { $oStartDate =& new Date("{$aParams['day_begin']} 00:00:00"); $oEndDate =& new Date("{$aParams['day_end']} 23:59:59"); $oStartDate->toUTC(); $oEndDate->toUTC(); $aWhere[] = "diac.tracker_date_time BETWEEN '" . $oStartDate->format('%Y-%m-%d %H:%M:%S') . "'" . " AND '" . $oEndDate->format('%Y-%m-%d %H:%M:%S') . "'"; } if (!empty($aParams['agency_id'])) { $aFrom['b'] = "JOIN {$conf['table']['prefix']}{$conf['table']['banners']} b ON (b.bannerid = diac.ad_id)"; $aFrom['m'] = "JOIN {$conf['table']['prefix']}{$conf['table']['campaigns']} m ON (m.campaignid = b.campaignid)"; $aFrom['c'] = "JOIN {$conf['table']['prefix']}{$conf['table']['clients']} c ON (c.clientid = m.clientid)"; $aFrom['z'] = "LEFT JOIN {$conf['table']['prefix']}{$conf['table']['zones']} z ON (z.zoneid = diac.zone_id)"; $aFrom['p'] = "LEFT JOIN {$conf['table']['prefix']}{$conf['table']['affiliates']} p ON (p.affiliateid = z.affiliateid AND p.agencyid = '{$aParams['agency_id']}')"; $aWhere[] = "c.agencyid = '{$aParams['agency_id']}'"; } if (!empty($aParams['advertiser_id']) || isset($aParams['include']['advertiser_id'])) { $aFrom['b'] = "JOIN {$conf['table']['prefix']}{$conf['table']['banners']} b ON (b.bannerid = diac.ad_id)"; $aFrom['m'] = "JOIN {$conf['table']['prefix']}{$conf['table']['campaigns']} m ON (m.campaignid = b.campaignid)"; if (!empty($aParams['advertiser_id'])) { $aWhere[] = "m.clientid = '{$aParams['advertiser_id']}'"; } if (isset($aParams['include']['advertiser_id']) && !isset($aParams['exclude']['advertiser_id'])) { $aFields[] = "m.clientid AS advertiser_id"; $aGroupBy[] = "advertiser_id"; } } if (!empty($aParams['placement_id']) || isset($aParams['include']['placement_id'])) { $aFrom['b'] = "JOIN {$conf['table']['prefix']}{$conf['table']['banners']} b ON (b.bannerid = diac.ad_id)"; if (!empty($aParams['placement_id'])) { $aWhere[] = "b.campaignid = '{$aParams['placement_id']}'"; } if (isset($aParams['include']['placement_id']) && !isset($aParams['exclude']['placement_id'])) { $aFields[] = "b.campaignid AS placement_id"; $aGroupBy[] = "placement_id"; } } if (!empty($aParams['publisher_id']) || isset($aParams['include']['publisher_id'])) { $aFrom['z'] = "JOIN {$conf['table']['prefix']}{$conf['table']['zones']} z ON (z.zoneid = diac.zone_id)"; if (!empty($aParams['publisher_id'])) { $aWhere[] = "z.affiliateid = '{$aParams['publisher_id']}'"; } if (isset($aParams['include']['publisher_id']) && !isset($aParams['exclude']['publisher_id'])) { $aFields[] = "z.affiliateid AS publisher_id"; $aGroupBy[] = "publisher_id"; } } if (!empty($aParams['ad_id'])) { $aWhere[] = "diac.ad_id = '{$aParams['ad_id']}'"; } if (!isset($aParams['exclude']['ad_id'])) { $aFields[] = "diac.ad_id AS ad_id"; $aGroupBy[] = "ad_id"; } // Using isset: zone_id could be 0 in case of direct selection if (isset($aParams['zone_id'])) { $aWhere[] = "diac.zone_id = '{$aParams['zone_id']}'"; } if (!isset($aParams['exclude']['zone_id'])) { $aFields[] = "diac.zone_id AS zone_id"; $aGroupBy[] = "zone_id"; } $sFields = count($aFields) ? join(', ', $aFields) : ''; $sFrom = count($aFrom) ? join(' ', $aFrom) : ''; $sWhere = count($aWhere) ? 'WHERE ' . join(' AND ', $aWhere) : ''; $sGroupBy = count($aGroupBy) ? 'GROUP BY ' . join(', ', $aGroupBy) : ''; $query = "SELECT " . $sFields . " FROM " . $sFrom . " " . $sWhere . " " . $sGroupBy; $oDbh = OA_DB::singleton(); $key = $method == 'getEntitiesStats' ? 'pkey' : 'day_and_hour'; $oRes = $oDbh->query($query); $aResult = array(); if (!PEAR::isError($oRes)) { while ($row = $oRes->fetchRow()) { $aResult[$row[$key]] = $row; unset($aResult[$row[$key]][$key]); } } if ($method != 'getEntitiesStats') { $aResult = Admin_DA::_convertStatsArrayToTz($aResult, $aParams, null, $tzMethod, $tzArgs); } foreach ($aResult as $k => $row) { if (!isset($aRows[$k])) { $aRows[$k] = $emptyRow; } foreach ($row as $field => $value) { if (!isset($aRows[$k][$field])) { $aRows[$k][$field] = $value; } } } }
} } /*-------------------------------------------------------*/ /* Main code */ /*-------------------------------------------------------*/ require_once MAX_PATH . '/lib/OA/Admin/Template.php'; $oTpl = new OA_Admin_Template('campaign-index.html'); // Get clients & campaign and build the tree $doCampaigns = OA_Dal::factoryDO('campaigns'); $doCampaigns->clientid = $clientid; $doCampaigns->addListOrderBy($listorder, $orderdirection); $doCampaigns->find(); while ($doCampaigns->fetch() && ($row_campaigns = $doCampaigns->toArray())) { $campaigns[$row_campaigns['campaignid']]['campaignid'] = $row_campaigns['campaignid']; // mask campaign name if anonymous campaign $campaign_details = Admin_DA::getPlacement($row_campaigns['campaignid']); $row_campaigns['campaignname'] = MAX_getPlacementName($campaign_details); $campaigns[$row_campaigns['campaignid']]['campaignname'] = $row_campaigns['campaignname']; $campaigns[$row_campaigns['campaignid']]['impressions'] = phpAds_formatNumber($row_campaigns['views']); $campaigns[$row_campaigns['campaignid']]['clicks'] = phpAds_formatNumber($row_campaigns['clicks']); $campaigns[$row_campaigns['campaignid']]['conversions'] = phpAds_formatNumber($row_campaigns['conversions']); if ($row_campaigns['activate'] && $row_campaigns['activate'] != '0000-00-00') { $oActivateDate =& new Date($row_campaigns['activate']); $campaigns[$row_campaigns['campaignid']]['activate'] = $oActivateDate->format($date_format); } else { $campaigns[$row_campaigns['campaignid']]['activate'] = '-'; } if ($row_campaigns['activate'] && $row_campaigns['expire'] != '0000-00-00') { $oExpireDate =& new Date($row_campaigns['expire']); $campaigns[$row_campaigns['campaignid']]['expire'] = $oExpireDate->format($date_format); } else {
$translated_message = $translation->translate($GLOBALS['strChannelAclHasBeenUpdated'], array(MAX::constructURL(MAX_URL_ADMIN, "channel-edit.php?" . (!empty($affiliateid) ? "affiliateid={$affiliateid}&" : "") . "channelid={$channelid}"), htmlspecialchars($doChannel->name))); OA_Admin_UI::queueMessage($translated_message, 'local', 'confirm', 0); // Redirect if (!empty($affiliateid)) { header("Location: channel-acl.php?affiliateid={$affiliateid}&channelid={$channelid}"); } else { header("Location: channel-acl.php?channelid={$channelid}"); } exit; } } } /*-------------------------------------------------------*/ /* HTML framework */ /*-------------------------------------------------------*/ MAX_displayNavigationChannel($pageName, $aOtherChannels, $aEntities); $aChannel = Admin_DA::getChannel($channelid); if (!isset($acl)) { $acl = Admin_DA::getChannelLimitations(array('channel_id' => $channelid)); // This array needs to be sorted by executionorder, this should ideally be done in SQL // When we move to DataObject this should be addressed ksort($acl); } if (!empty($affiliateid)) { $aParams = array('affiliateid' => $affiliateid, 'channelid' => $channelid); } else { $aParams = array('agencyid' => $agencyId, 'channelid' => $channelid); } MAX_displayAcls($acl, $aParams); echo "<br /><input type='submit' name='submit' value='{$GLOBALS['strSaveChanges']}' tabindex='" . $tabindex++ . "'></form>"; phpAds_PageFooter();
/** * Function check if advertiser or placement exists * if not: display proper error message * Error message contains link to: * - advertiser summary statistics if campaign does not exists * - stats.php if advertiser does not exists * * @param int $advertiserId Advertiser Id * @param int $placementId Placement Id (Campaign Id) */ function _checkObjectsExist($advertiserId, $placementId) { // Check if placement (campaign) exist if (0 == count(Admin_DA::getPlacements($this->coreParams + array('advertiser_id' => $advertiserId, 'placement_id' => $placementId)))) { phpAds_PageHeader('2'); // Check if advertiser (clientid) exist if (0 == count(Admin_DA::getPlacements($this->coreParams + array('advertiser_id' => $advertiserId)))) { phpAds_Die($GLOBALS['strDeadLink'], str_replace('{link}', 'stats.php', $GLOBALS['strNoAdvertiser'])); } else { $link = "stats.php?" . htmlspecialchars(preg_replace('#campaignid=[0-9]*&?#', '', $_SERVER['QUERY_STRING']), ENT_QUOTES); phpAds_Die($GLOBALS['strDeadLink'], str_replace('{link}', $link, $GLOBALS['strNoPlacement'])); } } }
function displayPage($channel, $form) { $pageName = basename($_SERVER['PHP_SELF']); $agencyId = OA_Permission::getAgencyId(); // Obtain the needed data if (!empty($channel['affiliateid'])) { $aEntities = array('agencyid' => $agencyId, 'affiliateid' => $channel['affiliateid'], 'channelid' => $channel['channelid']); // Editing a channel at the publisher level; Only use the // channels at this publisher level for the navigation bar $aOtherChannels = Admin_DA::getChannels(array('publisher_id' => $channel['affiliateid'])); } else { $aEntities = array('agencyid' => $agencyId, 'channelid' => $channel['channelid']); // Editing a channel at the agency level; Only use the // channels at this agency level for the navigation bar $aOtherChannels = Admin_DA::getChannels(array('agency_id' => $agencyId, 'channel_type' => 'agency')); } //show header and breadcrumbs MAX_displayNavigationChannel($pageName, $aOtherChannels, $aEntities); //get template and display form $oTpl = new OA_Admin_Template('channel-edit.html'); $oTpl->assign('form', $form->serialize()); $oTpl->assign('formId', $form->getId()); $oTpl->display(); //show footer phpAds_PageFooter(); }
function displayPage($aZone, $form) { $pageName = basename($_SERVER['SCRIPT_NAME']); $agencyId = OA_Permission::getAgencyId(); $aEntities = array('affiliateid' => $aZone['affiliateid'], 'zoneid' => $aZone['zoneid']); $aOtherPublishers = Admin_DA::getPublishers(array('agency_id' => $agencyId)); $aOtherZones = Admin_DA::getZones(array('publisher_id' => $aZone['affiliateid'])); MAX_displayNavigationZone($pageName, $aOtherPublishers, $aOtherZones, $aEntities); //get template and display form $oTpl = new OA_Admin_Template('zone-advanced.html'); $oTpl->assign('form', $form->serialize()); $oTpl->display(); _echoDeliveryCappingJs(); //footer phpAds_PageFooter(); }
/** * A method to unlink a campaign from a zone * * @param int $zoneId * @param int $campaignId * @return bool */ function unlinkCampaign($zoneId, $campaignId) { if ($this->checkIdExistence('zones', $zoneId) && $this->checkIdExistence('campaigns', $campaignId)) { $doZones = OA_Dal::staticGetDO('zones', $zoneId); if (!$this->checkPermissions(null, 'affiliates', $doZones->affiliateid, OA_PERM_ZONE_LINK)) { return false; } $result = Admin_DA::deletePlacementZones(array('zone_id' => $zoneId, 'placement_id' => $campaignId)); if ($result === 0) { $this->raiseError('Unknown link for zoneId and campaignId Error'); return false; } else { return $result; } } return false; }
/** * Fetch the history stats using the specified parameters * * @param array $aParams Query parameters * @param string $link Optional link for the leftmost column content */ function getHistory($aParams, $link = '') { $oNow = new Date(); $aParams['tz'] = $oNow->tz->getID(); $method = $this->oHistory->setBreakdownInfo($this); // Add plugin aParams $pluginParams = array(); foreach ($this->aPlugins as $oPlugin) { $oPlugin->addQueryParams($pluginParams); } $aStats = Admin_DA::fromCache($method, $aParams + $this->aDates + $pluginParams); // Merge plugin additional $oPlugin foreach ($this->aPlugins as $oPlugin) { $oPlugin->mergeData($aStats, $method, $aParams + $this->aDates, $this->aEmptyRow); } if (count($aStats) == 0) { $this->noStatsAvailable = true; return $aStats; } // Fill unused plugins columns foreach (array_keys($aStats) as $k) { $aStats[$k] += $this->aEmptyRow; } // Set some of the variables that used to be set by getSpan if (!empty($aStats)) { $dates = array_keys($aStats); // assumes first row has earliest date $firstDate = new Date($dates[0]); // Convert to current TZ $firstDate->setTZbyID('UTC'); $firstDate->convertTZ($oNow->tz); $firstDate->setHour(0); $firstDate->setMinute(0); $firstDate->setSecond(0); if (empty($this->aDates)) { $this->aDates['day_begin'] = $firstDate->format('%Y-%m-%d'); $this->aDates['day_end'] = $oNow->format('%Y-%m-%d'); } $this->oStartDate = new Date($firstDate); } $aDates = $this->oHistory->getDatesArray($this->aDates, $this->statsBreakdown, $this->oStartDate); $this->oHistory->fillGapsAndLink($aStats, $aDates, $this, $link); if (!in_array($this->listOrderField, array_merge(array($this->statsBreakdown), array_keys($this->aColumns)))) { $this->listOrderField = $this->statsBreakdown; $this->listOrderDirection = $this->statsBreakdown == 'hour' || $this->statsBreakdown == 'dow' ? 'up' : 'down'; } // If required, re-format the data in the weekly breakdown format if ($this->statsBreakdown == 'week') { $this->oHistory->prepareWeekBreakdown($aStats, $this); } MAX_sortArray($aStats, $this->listOrderField, $this->listOrderDirection == 'up'); // Summarise the values into a the totals array, & format $this->_summariseTotalsAndFormat($aStats, true); return $aStats; }
/** * Batch linking list of zones to campaign's banners or a specific banner * This is a sub-function of linkZonesToCampaigns and linkZonesToBanner. * * Banners are linked when: * - text text banner and text zone (ignore width/height) * - link non text banners when matching width/height to non text zone * Don't link banners to zone if that link already exists * Don't link Email zones * * @param array $aZonesIds array of zones IDs * @param int $campaignId the campaign ID. * @param int $bannerId the banner ID. * @return int number of linked banners */ function _linkZonesToCampaignsBannersOrSingleBanner($aZonesIds, $campaignId, $bannerId = null) { $prefix = $this->getTablePrefix(); $rsEmailZones = DBC::NewRecordSet("SELECT zoneid FROM {$prefix}zones WHERE delivery = " . MAX_ZoneEmail . " AND zoneid IN (" . implode(',', array_map('intval', $aZonesIds)) . ")"); $aEmailZoneIds = $rsEmailZones->getAll(); $fastLinking = !$GLOBALS['_MAX']['CONF']['audit']['enabledForZoneLinking']; $fromWhereClause = " FROM\n {$prefix}banners AS b\n CROSS JOIN\n {$prefix}zones AS z\n LEFT JOIN {$prefix}ad_zone_assoc AS aza ON (aza.ad_id = b.bannerid AND aza.zone_id = z.zoneid)\n WHERE"; if (!empty($campaignId)) { $fromWhereClause .= "\n b.campaignid = " . DBC::makeLiteral($campaignId) . "\n AND"; foreach ($aEmailZoneIds as $zoneId) { $okToLink = Admin_DA::_checkEmailZoneAdAssoc($zoneId, $campaignId); if (PEAR::isError($okToLink)) { $aZonesIds = array_diff($aZonesIds, array($zoneId)); } } } if (!empty($bannerId)) { $fromWhereClause .= "\n b.bannerid = " . DBC::makeLiteral($bannerId) . "\n AND"; // Remove any zoneids which this banner cannot be linked to due to email zone restrictions foreach ($aEmailZoneIds as $zoneId) { $aAd = Admin_DA::getAd($bannerId); $okToLink = Admin_DA::_checkEmailZoneAdAssoc($zoneId, $aAd['placement_id']); if (PEAR::isError($okToLink)) { $aZonesIds = array_diff($aZonesIds, array($zoneId)); } } } $fromWhereClause .= "\n z.zoneid IN (" . implode(",", array_map('intval', $aZonesIds)) . ")\n AND\n (\n (\n b.storagetype = 'txt'\n AND\n z.delivery = " . phpAds_ZoneText . "\n )\n OR\n (\n z.delivery <> " . phpAds_ZoneText . "\n AND\n b.storagetype <> 'txt'\n AND\n (\n (\n ( z.width = -1\n OR\n z.width = b.width\n )\n AND\n ( z.height = -1\n OR\n z.height = b. height\n )\n )\n OR\n (\n b.height = -1 AND b.width = -1\n )\n )\n )\n )\n AND\n aza.ad_zone_assoc_id IS NULL\n "; // if only one zone is selected and this zone is an email zone // we only link it if it was not previously linked to any banner (email zones can be linked to one banner only) if ($fastLinking) { $query = "INSERT INTO {$prefix}ad_zone_assoc (zone_id, ad_id, priority_factor)\n SELECT z.zoneid, b.bannerid, 1\n {$fromWhereClause}\n "; return $this->oDbh->exec($query); } else { $query = "\n SELECT z.zoneid AS zoneid,\n b.bannerid AS bannerid\n {$fromWhereClause}\n "; $rsAdZones = DBC::NewRecordSet($query); if (PEAR::isError($rsAdZones)) { return $rsAdZones; } $aAdZones = $rsAdZones->getAll(); $doAdZoneAssoc = OA_Dal::factoryDO('ad_zone_assoc'); foreach ($aAdZones as $aAdZone) { $doAdZoneAssoc->zone_id = $aAdZone['zoneid']; $doAdZoneAssoc->ad_id = $aAdZone['bannerid']; $doAdZoneAssoc->priority_factor = 1; $doAdZoneAssoc->insert(); } return count($aAdZones); } }
} if (!isset($orderdirection)) { if (isset($session['prefs']['campaign-trackers.php']['orderdirection'])) { $orderdirection = $session['prefs']['campaign-trackers.php']['orderdirection']; } else { $orderdirection = ''; } } // Initialise some parameters $pageName = basename($_SERVER['PHP_SELF']); $tabindex = 1; $agencyId = OA_Permission::getAgencyId(); $aEntities = array('clientid' => $clientid, 'campaignid' => $campaignid); // Display navigation $aOtherAdvertisers = Admin_DA::getAdvertisers(array('agency_id' => $agencyId)); $aOtherCampaigns = Admin_DA::getPlacements(array('advertiser_id' => $clientid)); MAX_displayNavigationCampaign($campaignid, $aOtherAdvertisers, $aOtherCampaigns, $aEntities); if (!empty($campaignid)) { $doCampaigns = OA_Dal::factoryDO('campaigns'); if ($doCampaigns->get($campaignid)) { $campaign = $doCampaigns->toArray(); } } $tabindex = 1; echo "\t\t\t\t<form name='availabletrackers' method='post' action='campaign-trackers.php'>\n"; echo "\t\t\t\t<input type='hidden' name='campaignid' value='" . $GLOBALS['campaignid'] . "'>\n"; echo "\t\t\t\t<input type='hidden' name='clientid' value='" . $GLOBALS['clientid'] . "'>\n"; echo "\t\t\t\t<input type='hidden' name='action' value='set'>\n"; echo "<table border='0' width='100%' cellpadding='0' cellspacing='0'>" . "\n"; echo "<tr><td height='25' width='100%' colspan='3'><b>{$GLOBALS['strConversionWindow']}</b></td></tr>" . "\n"; echo "<tr height='1'><td colspan='3' bgcolor='#888888'><img src='" . OX::assetPath() . "/images/break.gif' height='1' width='100%'></td></tr>" . "\n";
| Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | +---------------------------------------------------------------------------+ $Id: channel-index.php 37157 2009-05-28 12:31:10Z andrew.hill $ */ // Require the initialisation file require_once '../../init.php'; // Required files require_once MAX_PATH . '/www/admin/config.php'; require_once MAX_PATH . '/www/admin/lib-statistics.inc.php'; require_once MAX_PATH . '/lib/max/other/html.php'; // Register input variables phpAds_registerGlobal('acl', 'action', 'submit'); // Security check OA_Permission::enforceAccount(OA_ACCOUNT_MANAGER); // Initialise some parameters $pageName = basename($_SERVER['PHP_SELF']); $agencyId = OA_Permission::getEntityId(); $tabindex = 1; /*-------------------------------------------------------*/ /* HTML framework */ /*-------------------------------------------------------*/ phpAds_PageHeader("5.7"); /*-------------------------------------------------------*/ /* Main code */ /*-------------------------------------------------------*/ echo "<img src='" . OX::assetPath() . "/images/icon-channel-add.gif' border='0' align='absmiddle'> "; echo "<a href='channel-edit.php?agencyid={$agencyId}' accesskey='" . $keyAddNew . "'>{$GLOBALS['strAddNewChannel_Key']}</a> "; phpAds_ShowBreak(); $channels = Admin_DA::getChannels(array('agency_id' => $agencyId), true); MAX_displayChannels($channels, array('agencyid' => $agencyId)); phpAds_PageFooter();
function displayPage($campaign, $campaignForm, $statusForm, $campaignErrors = null) { global $conf; //header and breadcrumbs if ($campaign['campaignid'] != "") { //edit campaign // Initialise some parameters $tabindex = 1; $agencyId = OA_Permission::getAgencyId(); $aEntities = array('clientid' => $campaign['clientid'], 'campaignid' => $campaign['campaignid']); // Display navigation $aOtherAdvertisers = Admin_DA::getAdvertisers(array('agency_id' => $agencyId)); $aOtherCampaigns = Admin_DA::getPlacements(array('advertiser_id' => $campaign['clientid'])); MAX_displayNavigationCampaign($campaign['campaignid'], $aOtherAdvertisers, $aOtherCampaigns, $aEntities); } else { //new campaign $advertiser = phpAds_getClientDetails($campaign['clientid']); $advertiserName = $advertiser['clientname']; $advertiserEditUrl = "advertiser-edit.php?clientid=" . $campaign['clientid']; // New campaign $builder = new OA_Admin_UI_Model_InventoryPageHeaderModelBuilder(); $oHeaderModel = $builder->buildEntityHeader(array(array("name" => $advertiserName, "url" => $advertiserEditUrl), array("name" => "")), "campaign", "edit-new"); phpAds_PageHeader("campaign-edit_new", $oHeaderModel); } //get template and display form $oTpl = new OA_Admin_Template('campaign-edit.html'); $oTpl->assign('clientid', $campaign['clientid']); $oTpl->assign('campaignid', $campaign['campaignid']); $oTpl->assign('calendarBeginOfWeek', $GLOBALS['pref']['begin_of_week'] ? 1 : 0); $oTpl->assign('language', $GLOBALS['_MAX']['PREF']['language']); $oTpl->assign('conversionsEnabled', $conf['logging']['trackerImpressions']); $oTpl->assign('adDirectEnabled', defined('OA_AD_DIRECT_ENABLED') && OA_AD_DIRECT_ENABLED === true); $oTpl->assign('impressionsDelivered', isset($campaign['impressions_delivered']) ? $campaign['impressions_delivered'] : 0); $oTpl->assign('clicksDelivered', isset($campaign['clicks_delivered']) ? $campaign['clicks_delivered'] : 0); $oTpl->assign('conversionsDelivered', isset($campaign['conversions_delivered']) ? $campaign['conversions_delivered'] : 0); $oTpl->assign('strCampaignWarningNoTargetMessage', str_replace("\n", '\\n', addslashes($GLOBALS['strCampaignWarningNoTarget']))); $oTpl->assign('strCampaignWarningRemnantNoWeight', str_replace("\n", '\\n', addslashes($GLOBALS['strCampaignWarningRemnantNoWeight']))); $oTpl->assign('strCampaignWarningEcpmNoRevenue', str_replace("\n", '\\n', addslashes($GLOBALS['strCampaignWarningEcpmNoRevenue']))); $oTpl->assign('strCampaignWarningExclusiveNoWeight', str_replace("\n", '\\n', addslashes($GLOBALS['strCampaignWarningExclusiveNoWeight']))); $oTpl->assign('campaignErrors', $campaignErrors); $oTpl->assign('CAMPAIGN_TYPE_REMNANT', OX_CAMPAIGN_TYPE_REMNANT); $oTpl->assign('CAMPAIGN_TYPE_CONTRACT_NORMAL', OX_CAMPAIGN_TYPE_CONTRACT_NORMAL); $oTpl->assign('CAMPAIGN_TYPE_CONTRACT_EXCLUSIVE', OX_CAMPAIGN_TYPE_CONTRACT_EXCLUSIVE); $oTpl->assign('CAMPAIGN_TYPE_ECPM', OX_CAMPAIGN_TYPE_ECPM); $oTpl->assign('CAMPAIGN_TYPE_CONTRACT_ECPM', OX_CAMPAIGN_TYPE_CONTRACT_ECPM); $oTpl->assign('PRIORITY_ECPM_FROM', DataObjects_Campaigns::PRIORITY_ECPM_FROM); $oTpl->assign('PRIORITY_ECPM_TO', DataObjects_Campaigns::PRIORITY_ECPM_TO); $oTpl->assign('MODEL_CPM', MAX_FINANCE_CPM); $oTpl->assign('MODEL_CPC', MAX_FINANCE_CPC); $oTpl->assign('MODEL_CPA', MAX_FINANCE_CPA); if ($conf['logging']['trackerImpressions']) { $oTpl->assign('MODEL_MT', MAX_FINANCE_MT); } $oTpl->assign('campaignFormId', $campaignForm->getId()); $oTpl->assign('campaignForm', $campaignForm->serialize()); if (!empty($campaign['campaignid']) && defined('OA_AD_DIRECT_ENABLED') && OA_AD_DIRECT_ENABLED === true) { $oTpl->assign('statusForm', $statusForm->serialize()); } $oTpl->display(); _echoDeliveryCappingJs(); //footer phpAds_PageFooter(); }
function MAX_duplicatePlacementZones($fromPlacementId, $toPlacementId) { $pAdZones = Admin_DA::getPlacementZones(array('placement_id' => $fromPlacementId), true, 'zone_id'); if (!empty($pAdZones)) { foreach ($pAdZones as $zoneId => $placementId) { Admin_DA::addPlacementZone(array('placement_id' => $toPlacementId, 'zone_id' => $zoneId), false); } } }
/** * A method to insert the default data into the database. * * The default data are: * * - Test Advertiser 1 * - Placement 11 * - High Priority * - Daily target of 120 impressions (5 per * hour assuming even delivery each hour) * - Advertisement 111 * - Banner Weight 1 * - Placement 12 * - High Priority * - Runs from 2005-01-01 to 2005-12-31 * - Total target of 87,600 (10 per hour * assuming even delivery each hour) * - Advertisement 121 * - Banner Weight 2 * - Advertisement 122 * - Banner Weight 1 * * - Test Advertiser 2 * - Placement 21 * - Placement 22 * * - Test Publisher 1 * - Zone 11 * - Zone 12 * * - Test Publisher 2 * - Zone 21 * - Zone 22 * * - Advertisement 111 is linked to Zone 11 * - Advertisement 121 is linked to Zone 21 * - Advertisement 122 is linked to Zone 21 AND Zone 22 * * @static * @access public * @TODO Complete the specification of the default data and the implementation * of the creation thereof. */ function insertDefaultData() { $oDbh =& OA_DB::singleton(); // Set now $oServiceLocator =& OA_ServiceLocator::instance(); $oldNow = $oServiceLocator->get('now'); $oServiceLocator->register('now', new Date('2005-03-01')); // Add a default agency $agencyID = Admin_DA::addAgency(array('name' => 'Test Agency', 'contact' => 'Contact Name', 'username' => 'agency', 'email' => '*****@*****.**', 'active' => 1)); // Add two advertisers for the agency $advertiserOneID = Admin_DA::addAdvertiser(array('agencyid' => $agencyID, 'clientname' => 'Test Advertiser 1', 'contact' => 'Contact Name 1', 'clientusername' => 'advertiser1', 'email' => '*****@*****.**')); $advertiserTwoID = Admin_DA::addAdvertiser(array('agencyid' => $agencyID, 'clientname' => 'Test Advertiser 2', 'contact' => 'Contact Name 2', 'clientusername' => 'advertiser2', 'email' => '*****@*****.**')); // Add the advertiser's placements (campaigns) & advertisements $campaignOneOneID = Admin_DA::addPlacement(array('campaignname' => 'Campaign 11 - Manual Daily Target of 120', 'clientid' => $advertiserOneID, 'views' => -1, 'clicks' => -1, 'conversions' => -1, 'status' => OA_ENTITY_STATUS_RUNNING, 'priority' => 2, 'target_impression' => 120, 'target_click' => -1, 'target_conversion' => -1)); $adOneOneOneID = Admin_DA::addAd(array('campaignid' => $campaignOneOneID, 'description' => 'Advertisement 111', 'active' => 't', 'weight' => 1, 'htmltemplate' => '', 'url' => '', 'bannertext' => '', 'compiledlimitation' => '', 'append' => '')); $campaignOneTwoID = Admin_DA::addPlacement(array('campaignname' => 'Campaign 22 - Auto Distribution of 87,600 Impressions', 'clientid' => $advertiserOneID, 'views' => 87600, 'clicks' => -1, 'conversions' => -1, 'status' => OA_ENTITY_STATUS_RUNNING, 'priority' => 2, 'target_impression' => -1, 'target_click' => -1, 'target_conversion' => -1, 'activate_time' => '2005-01-01 00:00:00', 'expire_time' => '2005-12-31 23:59:59')); $adOneTwoOneID = Admin_DA::addAd(array('campaignid' => $campaignOneTwoID, 'description' => 'Advertisement 121', 'active' => 't', 'weight' => 2, 'htmltemplate' => '', 'url' => '', 'bannertext' => '', 'compiledlimitation' => '', 'append' => '')); $adOneTwoTwoID = Admin_DA::addAd(array('campaignid' => $campaignOneTwoID, 'description' => 'Advertisement 122', 'active' => 't', 'weight' => 1, 'htmltemplate' => '', 'url' => '', 'bannertext' => '', 'compiledlimitation' => '', 'append' => '')); // Add two publishers for the agency $publisherOneID = Admin_DA::addPublisher(array('agencyid' => $agencyID, 'name' => 'Test Publisher 1', 'contact' => 'Contact Name 1', 'username' => 'publisher1', 'email' => '*****@*****.**')); $publisherTwoID = Admin_DA::addPublisher(array('agencyid' => $agencyID, 'name' => 'Test Publisher 1', 'contact' => 'Contact Name 1', 'username' => 'publisher1', 'email' => '*****@*****.**')); // Add the publisher's zones $zoneOneOneID = Admin_DA::addZone(array('affiliateid' => $publisherOneID, 'zonename' => 'Zone 11', 'type' => 0, 'category' => '', 'ad_selection' => '', 'chain' => '', 'prepend' => '', 'append' => '', 'what' => '')); $zoneOneTwoID = Admin_DA::addZone(array('affiliateid' => $publisherOneID, 'zonename' => 'Zone 12', 'type' => 0, 'category' => '', 'ad_selection' => '', 'chain' => '', 'prepend' => '', 'append' => '', 'what' => '')); $zoneTwoOneID = Admin_DA::addZone(array('affiliateid' => $publisherOneID, 'zonename' => 'Zone 21', 'type' => 0, 'category' => '', 'ad_selection' => '', 'chain' => '', 'prepend' => '', 'append' => '', 'what' => '')); $zoneTwoTwoID = Admin_DA::addZone(array('affiliateid' => $publisherOneID, 'zonename' => 'Zone 22', 'type' => 0, 'category' => '', 'ad_selection' => '', 'chain' => '', 'prepend' => '', 'append' => '', 'what' => '')); // Link the ads to the zones Admin_DA::addAdZone(array('ad_id' => $adOneOneOneID, 'zone_id' => $zoneOneOneID, 'link_type' => 1)); Admin_DA::addAdZone(array('ad_id' => $adOneTwoOneID, 'zone_id' => $zoneTwoOneID, 'link_type' => 1)); Admin_DA::addAdZone(array('ad_id' => $adOneTwoTwoID, 'zone_id' => $zoneTwoOneID, 'link_type' => 1)); Admin_DA::addAdZone(array('ad_id' => $adOneTwoTwoID, 'zone_id' => $zoneTwoTwoID, 'link_type' => 1)); // Restore "now" if ($oldNow) { $oServiceLocator->register('now', $oldNow); } else { $oServiceLocator->remove('now'); } }
} } // Get publishers if we show them if ($showPublishers) { if (OA_Permission::isAccount(OA_ACCOUNT_TRAFFICKER)) { $tempPublisherId = OA_Permission::getEntityId(); $aPublisherList = Admin_DA::getPublishers(array('publisher_id' => $tempPublisherId)); } else { $aPublisherList = Admin_DA::getPublishers(array('agency_id' => $agencyId)); } $aPublisher[0] = $GLOBALS['strSelectPublisher']; foreach ($aPublisherList as $key => $aValue) { $aPublisher[$aValue['publisher_id']] = $aValue['name']; } if (!empty($publisherId)) { $zone = Admin_DA::getZones(array('publisher_id' => $publisherId)); $aZone[0] = $GLOBALS['strSelectZone']; foreach ($zone as $key => $aValue) { $aZone[$aValue['zone_id']] = $aValue['name']; } } } $oTrans = new OX_Translation(); $aParams = array('order' => $orderdirection, 'listorder' => $listorder, 'start_date' => $startDate, 'end_date' => $endDate, 'prevImg' => '<< ' . $oTrans->translate('Back'), 'nextImg' => $oTrans->translate('Next') . ' >>'); // Only pass advertiser or website props if we show related checkboxes if ($showAdvertisers) { $aParams['advertiser_id'] = $advertiserId; $aParams['campaign_id'] = $campaignId; } if ($showPublishers) { $aParams['publisher_id'] = $publisherId;
/** * Add "blanks" stats to an entity array * * @param array Query parameters * @param array Entities array */ function addBlanks($aParams, &$aEntitiesData) { $aParams['exclude'] = array('zone_id'); $aParams['ad_id'] = 0; // Get plugin aParams $pluginParams = array(); foreach ($this->aPlugins as $oPlugin) { $oPlugin->addQueryParams($pluginParams); } $aBlanks = Admin_DA::fromCache('getEntitiesStats', $aParams + $this->aDates, 1); // Merge plugin additional data foreach ($this->aPlugins as $oPlugin) { $oPlugin->mergeData($aBlanks, 'getEntitiesStats', $aParams + $this->aDates, $this->aEmptyRow); } if (count($aBlanks)) { $zone = current($aBlanks) + $this->aEmptyRow; $zone['active'] = $this->_hasActiveStats($zone); if ($zone['active']) { $this->_summarizeStats($zone); $zone['name'] = 'Blank impressions'; $zone['prefix'] = 'x'; $zone['id'] = '-'; $zone['icon'] = OX::assetPath() . '/images/icon-banner-disabled.png'; $zone['htmlclass'] = 'last'; if ($this->listOrderField != 'name' && $this->listOrderField != 'id') { $aEntitiesData[] = $zone; MAX_sortArray($aEntitiesData, $this->listOrderField, $this->listOrderDirection == 'up'); } elseif ($this->listOrderDirection == 'up') { array_push($aEntitiesData, $zone); } else { array_unshift($aEntitiesData, $zone); } } } }
| but WITHOUT ANY WARRANTY; without even the implied warranty of | | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | | GNU General Public License for more details. | | | | You should have received a copy of the GNU General Public License | | along with this program; if not, write to the Free Software | | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | +---------------------------------------------------------------------------+ $Id: banner-htmlpreview.php 37157 2009-05-28 12:31:10Z andrew.hill $ */ // Require the initialisation file require_once '../../init.php'; // Required files require_once MAX_PATH . '/www/admin/config.php'; require_once MAX_PATH . '/www/admin/lib-statistics.inc.php'; require_once MAX_PATH . '/lib/max/Delivery/adRender.php'; require_once MAX_PATH . '/lib/max/Admin_DA.php'; /*-------------------------------------------------------*/ /* Main code */ /*-------------------------------------------------------*/ $aBanner = Admin_DA::getAd($bannerid); $aBanner['bannerid'] = $aBanner['ad_id']; if (!empty($aBanner)) { $conf = $GLOBALS['_MAX']['CONF']; $bannerName = strip_tags(phpAds_buildBannerName($bannerid, $aBanner['name'], $aBanner['alt'])); $sizeDescription = $aBanner['type'] == 'txt' ? ' ' : " width: {$aBanner['width']} height: {$aBanner['height']}"; $bannerCode = MAX_adRender($aBanner, 0, '', '', '', true, '', false, false); $protocol = $_SERVER['SERVER_PORT'] == $conf['openads']['sslPort'] ? "https" : "http"; $deliveryUrl = $protocol . ':' . MAX_commonConstructPartialDeliveryUrl($conf['file']['flash']); echo "\n<html>\n<head>\n<title>{$bannerName}</title>\n<link rel='stylesheet' href='" . OX::assetPath() . "/css/interface-{$phpAds_TextDirection}.css'>\n<script type='text/javascript' src='{$deliveryUrl}'></script>\n</head>\n<body marginheight='0' marginwidth='0' leftmargin='0' topmargin='0' bgcolor='#EFEFEF'>\n<table cellpadding='0' cellspacing='0' border='0'>\n<tr height='32'>\n <td width='32'><img src='" . OX::assetPath() . "/images/cropmark-tl.gif' width='32' height='32'></td>\n <td background='" . OX::assetPath() . "/images/ruler-top.gif'> </td>\n <td width='32'><img src='" . OX::assetPath() . "/images/cropmark-tr.gif' width='32' height='32'></td>\n</tr>\n<tr height='{$aBanner['height']}'>\n <td width='32' background='" . OX::assetPath() . "/images/ruler-left.gif'> </td>\n <td bgcolor='#FFFFFF' width='{$aBanner['width']}'>\n {$bannerCode}\n </td>\n <td width='32'> </td>\n</tr>\n<tr height='32'>\n <td width='32'><img src='" . OX::assetPath() . "/images/cropmark-bl.gif' width='32' height='32'></td>\n <td>{$sizeDescription}</td>\n <td width='32'><img src='" . OX::assetPath() . "/images/cropmark-br.gif' width='32' height='32'></td>\n</tr>\n</table>\n</body>\n</html>"; }
function getZoneBanners($zoneId) { $aParams = array('zone_id' => $zoneId, 'exclude' => array('zone_id'), 'custom_columns' => array()); // Get stats banner list $aStatsAds = array(); foreach ($this->aPlugins as $oPlugin) { $pluginParams = $oPlugin->getHistorySpanParams(); $aStatsAds += Admin_DA::fromCache('getEntitiesStats', $aParams + $pluginParams + $this->aDates); } // Get all banners $aAds = Admin_DA::fromCache('getAds', array()); // Get anonymous campaigns $aAnonPlacements = Admin_DA::fromCache('getPlacements', array('placement_anonymous' => 't')); // Intersect foreach ($aAds as $k => $v) { if (!isset($aStatsAds[$k])) { unset($aAds[$k]); } else { $aAds[$k]['anonymous'] = isset($aAnonPlacements[$v['placement_id']]); } } // Cache results $this->crossEntitiesCache = $aAds; return $aAds; }
/** * Get banner stats * * @param array Query parameters * @param int Tree level * @param string Expand GET parameter, used only when called from other get methods * @return Entities array */ function getBanners($aParams, $level, $expand = '') { global $phpAds_IAB; require_once MAX_PATH . '/www/admin/lib-size.inc.php'; $aParams['include'] = array('placement_id'); // Needed to fetch the advertiser_id $aParams['exclude'] = array('zone_id'); $this->prepareData($aParams); $period_preset = MAX_getStoredValue('period_preset', 'today'); $aAds = $this->mergeData($aParams, 'ad_id'); MAX_sortArray($aAds, $this->listOrderField == 'id' ? 'ad_id' : $this->listOrderField, $this->listOrderDirection == 'up'); $aEntitiesData = array(); foreach ($aAds as $bannerId => $banner) { $banner['active'] = $this->_hasActiveStats($banner); if ($this->startLevel > $level || !$this->hideInactive || $banner['active']) { $this->_summarizeStats($banner); // mask banner name if anonymous campaign $campaign = Admin_DA::getPlacement($banner['placement_id']); $campaignAnonymous = $campaign['anonymous'] == 't' ? true : false; if ($banner['type'] == DataObjects_Banners::BANNER_TYPE_MARKET) { $marketBannerNameAndAdvertiserId = $this->getMarketBannerName($banner['name']); $banner['name'] = $marketBannerNameAndAdvertiserId['name']; $banner['marketAdvertiserId'] = $marketBannerNameAndAdvertiserId['marketAdvertiserId']; } $banner['name'] = MAX_getAdName($banner['name'], null, null, $campaignAnonymous, $bannerId); $banner['prefix'] = 'b'; $banner['id'] = $bannerId; $banner['linkparams'] = "clientid={$banner['advertiser_id']}&campaignid={$banner['placement_id']}&bannerid={$bannerId}&"; if (is_array($aParams) && count($aParams) > 0) { foreach ($aParams as $key => $value) { if ($key != "include" && $key != "exclude") { $banner['linkparams'] .= $key . "=" . $value . "&"; } } } else { $banner['linkparams'] .= "&"; } $banner['linkparams'] .= "period_preset={$period_preset}&period_start=" . MAX_getStoredValue('period_start', date('Y-m-d')) . "&period_end=" . MAX_getStoredValue('period_end', date('Y-m-d')); $banner['expanded'] = false; $banner['icon'] = MAX_getEntityIcon('ad', $banner['active'], $banner['type'], $banner['marketAdvertiserId']); $aEntitiesData[] = $banner; } elseif ($this->startLevel == $level) { $this->hiddenEntities++; } } return $aEntitiesData; }
} } else { // New tracker $doClients = OA_Dal::factoryDO('clients'); if ($doClients->get($clientid)) { $client = $doClients->toArray(); } if ($client) { $row['trackername'] = $client['clientname'] . ' - '; } else { $row["trackername"] = ''; } $row["trackername"] .= $strDefault; } $trackerDetails = phpAds_getTrackerDetails($trackerid); $trackerVariables = Admin_DA::getVariables(array('tracker_id' => $trackerid), true); // Default to JS invocation if either appended HTML is found, or the tracker has variables if (empty($invtype) && (!empty($trackerDetails['appendcode']) || !empty($trackerVariables))) { $invtype = 'js'; } $maxInvocation = new MAX_Admin_Invocation(); if (isset($invtype) && $invtype == 'js') { $tracker_code = $maxInvocation->generateJavascriptTrackerCode($trackerid); } else { $tracker_code = $maxInvocation->generateTrackerCode($trackerid); } /*-------------------------------------------------------*/ /* Main code */ /*-------------------------------------------------------*/ $tabindex = 1; // START CODE
function phpAds_buildBannerCode($bannerid, $fullpreview = false) { include_once MAX_PATH . '/lib/max/Delivery/adRender.php'; $aBanner = Admin_DA::getAd($bannerid); $aBanner['storagetype'] = $aBanner['type']; $aBanner['bannerid'] = $aBanner['ad_id']; $bannerCode = MAX_adRender($aBanner, 0, '', '', '', true, '', false, false); return $bannerCode; }
function insert($autoLinkMatchingZones = true) { $this->_rebuildCache(); $id = parent::insert(); if ($id) { // add default zone $aVariables = array('ad_id' => $id, 'zone_id' => 0); Admin_DA::addAdZone($aVariables); if ($autoLinkMatchingZones) { MAX_addDefaultPlacementZones($id, $this->campaignid); } } return $id; }
/** * A method to test the getLinkedEmailZoneIds() method. * * Note that the banner/zone association in this test is * performed via the Admin_DA class, as a result of the fact * that neither the "zone" or "banner" Entity Service * classes support this functionality at the time of writing. */ function testGetLinkedEmailZoneIds() { $oDataGenerator = new DataGenerator(); $dalZones = OA_Dal::factoryDAL('zones'); // Test with invalid input $aResult = $this->oDalCampaigns->getLinkedEmailZoneIds('foo'); $this->assertTrue(is_array($aResult)); $this->assertTrue(empty($aResult)); // Test with invalid campaign IDs $aResult = $this->oDalCampaigns->getLinkedEmailZoneIds(-1); $this->assertTrue(is_array($aResult)); $this->assertTrue(empty($aResult)); $aResult = $this->oDalCampaigns->getLinkedEmailZoneIds(0); $this->assertTrue(is_array($aResult)); $this->assertTrue(empty($aResult)); $aResult = $this->oDalCampaigns->getLinkedEmailZoneIds(2); $this->assertTrue(is_array($aResult)); $this->assertTrue(empty($aResult)); // Generate an owning manager account $doAgency = OA_Dal::factoryDO('agency'); $managerId = $oDataGenerator->generateOne($doAgency); // Generate an advertiser account within the manager account $doClients = OA_Dal::factoryDO('clients'); $doClients->agencyid = $managerId; $advertiserId = $oDataGenerator->generateOne($doClients); // Generate a website account within the manager account $doAffiliates = OA_Dal::factoryDO('affiliates'); $doAffiliates->agencyid = $managerId; $websiteId = $oDataGenerator->generateOne($doAffiliates); // Generate a campaign, with start and end dates $doCampaigns = OA_Dal::factoryDO('campaigns'); $doCampaigns->clientid = $advertiserId; $doCampaigns->activate_time = '2009-02-23 00:00:00'; $doCampaigns->expire_time = '2009-02-24 23:59:59'; $campaignId = $oDataGenerator->generateOne($doCampaigns); // Generate a banner in the campaign generated above $doBanners = OA_Dal::factoryDO('banners'); $doBanners->campaignid = $campaignId; $bannerId = $oDataGenerator->generateOne($doBanners); // Test with no linked zones $aResult = $this->oDalCampaigns->getLinkedEmailZoneIds($campaignId); $this->assertTrue(is_array($aResult)); $this->assertTrue(empty($aResult)); // Add two non-email zones, and link the campaign to the zones $doZones = OA_Dal::factoryDO('zones'); $doZones->affiliateid = $websiteId; $doZones->delivery = phpAds_ZoneBanner; $zoneId1 = $oDataGenerator->generateOne($doZones); $result = $dalZones->linkZonesToCampaign(array($zoneId1), $campaignId); $this->assertEqual($result, 1); $doZones = OA_Dal::factoryDO('zones'); $doZones->affiliateid = $websiteId; $doZones->delivery = phpAds_ZonePopup; $zoneId2 = $oDataGenerator->generateOne($doZones); $result = $dalZones->linkZonesToCampaign(array($zoneId2), $campaignId); $this->assertEqual($result, 1); // Test with linked zones that are not email zones $aResult = $this->oDalCampaigns->getLinkedEmailZoneIds($campaignId); $this->assertTrue(is_array($aResult)); $this->assertTrue(empty($aResult)); // Add an email zone, and link the campaign's banner to the zone $doZones = OA_Dal::factoryDO('zones'); $doZones->affiliateid = $websiteId; $doZones->delivery = MAX_ZoneEmail; $zoneId3 = $oDataGenerator->generateOne($doZones); $aParameters = array('zone_id' => $zoneId3, 'ad_id' => $bannerId); $result = Admin_DA::addAdZone($aParameters); $this->assertTrue($result); // Test with linked zones, one of which is an email zone $aResult = $this->oDalCampaigns->getLinkedEmailZoneIds($campaignId); $this->assertTrue(is_array($aResult)); $this->assertTrue(!empty($aResult)); $this->assertEqual(count($aResult), 1); $this->assertEqual($aResult[0], $zoneId3); // Add another email zone, and link the campaign's banner to the zone $doZones = OA_Dal::factoryDO('zones'); $doZones->affiliateid = $websiteId; $doZones->delivery = MAX_ZoneEmail; $zoneId4 = $oDataGenerator->generateOne($doZones); $aParameters = array('zone_id' => $zoneId4, 'ad_id' => $bannerId); $result = Admin_DA::addAdZone($aParameters); $this->assertTrue($result); // Test with linked zones, some of which are email zones $aResult = $this->oDalCampaigns->getLinkedEmailZoneIds($campaignId); $this->assertTrue(is_array($aResult)); $this->assertTrue(!empty($aResult)); $this->assertEqual(count($aResult), 2); $this->assertEqual($aResult[0], $zoneId3); $this->assertEqual($aResult[1], $zoneId4); }
$aConversions = Admin_DA::getConversions($aParams + $aDates); if (!empty($aConversions)) { $conf = $GLOBALS['_MAX']['CONF']; $modified = false; // Modify conversions foreach ($statusIds as $conversionId => $statusId) { if (isset($aConversions[$conversionId]) && $aConversions[$conversionId]['connection_status'] != $statusId) { $modified = true; // Edit conversion $doData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection'); $doData_intermediate_ad_connection->get($conversionId); $doData_intermediate_ad_connection->connection_status = $statusId; $doData_intermediate_ad_connection->update(); if ($aConversions[$conversionId]['connection_status'] == MAX_CONNECTION_STATUS_APPROVED || $statusId == MAX_CONNECTION_STATUS_APPROVED) { // Connection was changed to conversion (or conversion was changed to connection) $aConVariables = Admin_DA::fromCache('getConnectionVariables', $conversionId); // Sum up basket values $basketValue = 0; $numItems = 0; foreach ($aConVariables as $conVariable) { if ($conVariable['purpose'] == 'basket_value') { $basketValue += $conVariable['value']; } elseif ($conVariable['purpose'] == 'num_items') { $numItems += $conVariable['value']; } } // Get day, $hour and operation interval $dateTime = $aConversions[$conversionId]['date_time']; $oConnectionDate = new Date($dateTime); $oConnectionDate->toUTC(); $optIntID = OX_OperationInterval::convertDateToOperationIntervalID($oConnectionDate);