/**
  * The final "child" implementation of the parental abstract method.
  *
  * @see OA_Admin_Statistics_Common::start()
  */
 function start()
 {
     // Get parameters
     $publisherId = $this->_getId('publisher');
     $zoneId = $this->_getId('zone');
     $adId = $this->_getId('ad', 0);
     // Security check
     OA_Permission::enforceAccount(OA_ACCOUNT_ADMIN, OA_ACCOUNT_MANAGER, OA_ACCOUNT_TRAFFICKER);
     $this->_checkAccess(array('publisher' => $publisherId, 'zone' => $zoneId));
     // Cross-entity security check
     if (!empty($zoneId)) {
         $aAds = $this->getZoneBanners($zoneId);
         if (!isset($aAds[$adId])) {
             $this->noStatsAvailable = true;
         }
     }
     // Add standard page parameters
     $this->aPageParams = array('affiliateid' => $publisherId, 'zoneid' => $zoneId, 'campaignid' => $aAds[$adId]['placement_id'], 'bannerid' => $adId);
     // Load the period preset and stats breakdown parameters
     $this->_loadPeriodPresetParam();
     $this->_loadStatsBreakdownParam();
     // Load $_GET parameters
     $this->_loadParams();
     // HTML Framework
     if (OA_Permission::isAccount(OA_ACCOUNT_ADMIN) || OA_Permission::isAccount(OA_ACCOUNT_MANAGER)) {
         $this->pageId = '2.4.2.2.2';
         $this->aPageSections = array($this->pageId);
     } elseif (OA_Permission::isAccount(OA_ACCOUNT_TRAFFICKER)) {
         $this->pageId = '1.2.2.2';
         $this->aPageSections = array($this->pageId);
     }
     // Add breadcrumbs
     $this->_addBreadcrumbs('zone', $zoneId);
     $this->addCrossBreadcrumbs('banner', $adId);
     // Add context
     $params = $this->aPageParams;
     foreach ($aAds as $k => $v) {
         $params['campaignid'] = $v['placement_id'];
         $params['bannerid'] = $k;
         phpAds_PageContext(MAX_buildName($k, MAX_getAdName($v['name'], null, null, $v['anonymous'], $k)), $this->_addPageParamsToURI($this->pageName, $params, true), $adId == $k);
     }
     // Add shortcuts
     if (!OA_Permission::isAccount(OA_ACCOUNT_TRAFFICKER)) {
         $this->_addShortcut($GLOBALS['strAffiliateProperties'], 'affiliate-edit.php?affiliateid=' . $publisherId, 'images/icon-affiliate.gif');
     }
     $this->_addShortcut($GLOBALS['strZoneProperties'], 'zone-edit.php?affiliateid=' . $publisherId . '&zoneid=' . $zoneId, 'images/icon-zone.gif');
     // Prepare the data for display by output() method
     $aParams = array('zone_id' => $zoneId, 'ad_id' => $adId);
     $this->prepare($aParams, 'stats.php');
 }
Exemplo n.º 2
0
 /**
  * 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;
 }
$doBanners->campaignid = $campaignid;
$doBanners->addListorderBy($listorder, $orderdirection);
$doBanners->selectAdd('storagetype AS type');
$doBanners->find();
$countActive = 0;
while ($doBanners->fetch() && ($row = $doBanners->toArray())) {
    $banners[$row['bannerid']] = $row;
    $banners[$row['bannerid']]['active'] = $banners[$row['bannerid']]["status"] == OA_ENTITY_STATUS_RUNNING;
    $banners[$row['bannerid']]['description'] = $strUntitled;
    if (isset($banners[$row['bannerid']]['alt']) && $banners[$row['bannerid']]['alt'] != '') {
        $banners[$row['bannerid']]['description'] = $banners[$row['bannerid']]['alt'];
    }
    // mask banner name if anonymous campaign
    $campaign_details = Admin_DA::getPlacement($row['campaignid']);
    $campaignAnonymous = $campaign_details['anonymous'] == 't' ? true : false;
    $banners[$row['bannerid']]['description'] = MAX_getAdName($row['description'], null, null, $campaignAnonymous, $row['bannerid']);
    $banners[$row['bannerid']]['expand'] = 0;
    if ($row['status'] == OA_ENTITY_STATUS_RUNNING) {
        $countActive++;
    }
    // Build banner preview
    if ($row['bannerid'] && !empty($GLOBALS['_MAX']['PREF']['ui_show_campaign_preview']) && empty($_GET['nopreview'])) {
        $bannerCode = MAX_bannerPreview($row['bannerid']);
    } else {
        $bannerCode = '';
    }
    $banners[$row['bannerid']]['preview'] = $bannerCode;
}
$aCount = array('banners' => 0, 'banners_hidden' => 0);
// Figure out which banners are inactive and prepare trimmed URLs for display
$bannersHidden = 0;
 function addCrossBreadCrumbs($type, $entityId, $level = 0)
 {
     $cache = $this->crossEntitiesCache;
     switch ($type) {
         case 'campaign':
             if ($this->noStatsAvailable) {
                 $this->_addBreadcrumb('', MAX_getEntityIcon('placement'), $type);
             } else {
                 $this->_addBreadcrumb(MAX_buildName($entityId, MAX_getPlacementName($cache[$entityId])), MAX_getEntityIcon('placement'), $type);
             }
             break;
         case 'banner':
             if ($this->noStatsAvailable) {
                 $this->_addBreadcrumb('', MAX_getEntityIcon('ad'), $type);
             } else {
                 $this->_addBreadcrumb(MAX_buildName($entityId, MAX_getAdName($cache[$entityId]['name'], null, null, $cache[$entityId]['anonymous'], $entityId)), MAX_getEntityIcon('ad'), $type);
             }
             break;
         case 'publisher':
             if ($this->noStatsAvailable) {
                 $this->_addBreadcrumb('', MAX_getEntityIcon('publisher'), '');
             } else {
                 $this->_addBreadcrumb(MAX_buildName($entityId, MAX_getPublisherName($cache[$entityId]['name'], null, $cache[$entityId]['anonymous'], $entityId)), MAX_getEntityIcon('publisher'), 'website');
             }
             break;
         case 'zone':
             if ($this->noStatsAvailable) {
                 $this->_addBreadcrumb('', MAX_getEntityIcon('zone'), $type);
             } else {
                 $this->_addBreadcrumb(MAX_buildName($entityId, MAX_getZoneName($cache[$entityId]['name'], null, $cache[$entityId]['anonymous'], $entityId)), MAX_getEntityIcon('zone'), $type);
             }
             break;
     }
 }
 /**
  * Mask entities which have the hidden flag set
  *
  * @param array Entities array
  * @param string Name which should be used for hidden entitiies
  */
 function maskHiddenEntities(&$aEntitiesData, $entityType)
 {
     $this->fixLinkParams($aEntitiesData);
     foreach (array_keys($aEntitiesData) as $entityId) {
         if (isset($aEntitiesData[$entityId]['hidden']) && $aEntitiesData[$entityId]['hidden']) {
             switch ($entityType) {
                 case 'advertiser':
                     $aEntitiesData[$entityId]['name'] = MAX_getAdvertiserName($aEntitiesData[$entityId]['name'], null, true, $aEntitiesData[$entityId]['id']);
                     break;
                 case 'campaign':
                     $tmp = array('placement_id' => $aEntitiesData[$entityId]['id'], 'name' => $aEntitiesData[$entityId]['name'], 'anonymous' => true);
                     $aEntitiesData[$entityId]['name'] = MAX_getPlacementName($tmp);
                     break;
                 case 'banner':
                     $aEntitiesData[$entityId]['name'] = MAX_getAdName($aEntitiesData[$entityId]['name'], null, null, true, $aEntitiesData[$entityId]['id']);
                     break;
                 case 'publisher':
                     $aEntitiesData[$entityId]['name'] = MAX_getPublisherName($aEntitiesData[$entityId]['name'], null, true, $aEntitiesData[$entityId]['id']);
                     break;
                 case 'zone':
                     $aEntitiesData[$entityId]['name'] = MAX_getZoneName($aEntitiesData[$entityId]['name'], null, true, $aEntitiesData[$entityId]['id']);
                     break;
             }
             //$aEntitiesData[$entityId]['num_children'] = 0;
             //unset($aEntitiesData[$entityId]['subentities']);
         }
     }
     if ($this->listOrderField == 'name' || $this->listOrderField == 'id') {
         MAX_sortArray($aEntitiesData, $this->listOrderField, $this->listOrderDirection == 'up');
     }
 }
 /**
  * A private method to create and add the "connection detail" worksheet
  * of the report.
  *
  * @access private
  */
 function _addConnectionDetailWorksheet($aConnections, $aTrackerVariables)
 {
     // Create a worksheet
     $worksheetName = $this->translate("Connection Detail");
     $this->_oReportWriter->createReportWorksheet($worksheetName, $this->_name, $this->_getReportParametersForDisplay(), $this->_getReportWarningsForDisplay());
     $aStatus = $this->_getConnectionStatuses();
     // Create a subsection for each tracker
     foreach ($aTrackerVariables as $trackerId => $aTracker) {
         $trackerAnonymous = $this->_isTrackerLinkedToAnonymousCampaign($trackerId);
         $trackerName = MAX_getTrackerName($aTracker['tracker_name'], null, $trackerAnonymous, $trackerId);
         $aHeaders = array();
         $key = $this->translate("Connection ID");
         $aHeaders[$key] = 'id';
         $key = $this->translate("Connection Date / Time");
         $aHeaders[$key] = 'datetime';
         if (!empty($aTracker['variables'])) {
             foreach ($aTracker['variables'] as $trackerVariableId => $aTrackerVariable) {
                 $variableName = !empty($aTrackerVariable['tracker_variable_description']) ? $aTrackerVariable['tracker_variable_description'] : $aTrackerVariable['tracker_variable_name'];
                 // Don't display if the user is a publisher and the variable is hidden
                 if (!OA_Permission::isAccount(OA_ACCOUNT_TRAFFICKER) || $aTrackerVariable['tracker_variable_hidden'] != 't') {
                     switch ($aTrackerVariable['tracker_variable_data_type']) {
                         case 'int':
                         case 'numeric':
                             $aHeaders[$variableName] = 'numeric';
                             break;
                         case 'date':
                             $aHeaders[$variableName] = 'datetime';
                             break;
                         default:
                             $aHeaders[$variableName] = 'text';
                             break;
                     }
                 }
             }
         }
         $key = $this->translate("Approval Status");
         $aHeaders[$key] = 'text';
         $key = $this->translate("Comment");
         $aHeaders[$key] = 'text';
         if ($this->_shouldDisplaySourceField()) {
             $key = $GLOBALS['strSource'];
             $aHeaders[$key] = 'text';
         }
         $key = $this->translate("Advertiser Name");
         $aHeaders[$key] = 'text';
         $key = $GLOBALS['strTrackerName'];
         $aHeaders[$key] = 'text';
         $key = $this->translate("Ad Name");
         $aHeaders[$key] = 'text';
         $key = $this->translate("Website Name");
         $aHeaders[$key] = 'text';
         $key = $this->translate("Zone Name");
         $aHeaders[$key] = 'text';
         $key = $this->translate("Connection Type");
         $aHeaders[$key] = 'text';
         $key = $this->translate("Connecting Value Date / Time");
         $aHeaders[$key] = 'datetime';
         $key = $this->translate("IP Address");
         $aHeaders[$key] = 'text';
         $key = $GLOBALS['strCountry'];
         $aHeaders[$key] = 'text';
         $key = $GLOBALS['strDomain'];
         $aHeaders[$key] = 'text';
         $key = $GLOBALS['strLanguage'];
         $aHeaders[$key] = 'text';
         $key = $GLOBALS['strOS'];
         $aHeaders[$key] = 'text';
         $key = $GLOBALS['strBrowser'];
         $aHeaders[$key] = 'text';
         $key = $GLOBALS['strWindowDelay'];
         $aHeaders[$key] = 'text';
         $aData = array();
         if (!empty($aConnections[$trackerId]['connections'])) {
             $row = 0;
             foreach ($aConnections[$trackerId]['connections'] as $connectionId => $aConnection) {
                 // Skip connections with a hidden status
                 if (!isset($aStatus[$aConnection['connection_status']])) {
                     continue;
                 }
                 $aData[$row][] = $connectionId;
                 $aData[$row][] = $aConnection['tracker_date_time'];
                 if (!empty($aTracker['variables'])) {
                     foreach ($aTracker['variables'] as $trackerVariableId => $aTrackerVariable) {
                         // Don't display if the user is a publisher and the variable is hidden
                         if (!OA_Permission::isAccount(OA_ACCOUNT_TRAFFICKER) || $aTrackerVariable['tracker_variable_hidden'] != 't') {
                             $value = $aConnection['variables'][$trackerVariableId]['tracker_variable_value'];
                             if ($aTrackerVariable['tracker_variable_data_type'] == 'date') {
                                 // Change value to match Excel format
                                 $value = $this->_oReportWriter->convertToDate($value);
                             }
                             $aData[$row][] = $value;
                         }
                     }
                 }
                 $aData[$row][] = $this->_decodeConnectionStatus($aConnection['connection_status']);
                 $aData[$row][] = $aConnection['connection_comments'];
                 if ($this->_shouldDisplaySourceField()) {
                     $aData[$row][] = $aConnection['connection_channel'];
                 }
                 $aData[$row][] = MAX_getAdvertiserName($aConnection['advertiser_name'], null, $trackerAnonymous, $aConnection['advertiser_id']);
                 $aData[$row][] = $trackerName;
                 $aData[$row][] = MAX_getAdName($aConnection['ad_name'], $aConnection['ad_alt'], null, $trackerAnonymous, $aConnection['ad_id']);
                 $aData[$row][] = MAX_getPublisherName($aConnection['publisher_name'], null, $trackerAnonymous, $aConnection['publisher_id']);
                 $aData[$row][] = MAX_getZoneName($aConnection['zone_name'], null, $trackerAnonymous, $aConnection['zone_id']);
                 $aData[$row][] = $this->_decodeConnectionType($aConnection['connection_action']);
                 $aData[$row][] = $aConnection['connection_date_time'];
                 $aData[$row][] = $aConnection['connection_ip_address'];
                 $aData[$row][] = $aConnection['connection_country'];
                 $aData[$row][] = OA_Permission::isAccount(OA_ACCOUNT_ADVERTISER) && $trackerAnonymous ? '' : $aConnection['connection_domain'];
                 $aData[$row][] = $aConnection['connection_language'];
                 $aData[$row][] = $aConnection['connection_os'];
                 $aData[$row][] = $aConnection['connection_browser'];
                 $aData[$row][] = $aConnection['window_delay'];
                 $row++;
             }
         }
         $this->_oReportWriter->createReportSection($worksheetName, $trackerName, $aHeaders, $aData, 30);
     }
 }
Exemplo n.º 7
0
 /**
  * A private method that can be inherited and used by children classes to
  * output the context in the left navigation bar.
  *
  * {@uses phpAds_PageContext()}
  */
 function _showContext($type, $current_id = 0)
 {
     if ($this->useDailyClass && $type == 'days') {
         // Use the helper class contect method instead
         $aArray = array('period_start' => MAX_getStoredValue('period_start', date('Y-m-d')), 'period_end' => MAX_getStoredValue('period_end', date('Y-m-d')));
         $aDates = array_reverse($this->oHistory->getDatesArray($aArray, 'day', $this->oStartDate));
         $this->oDaily->showContext($aDates, $current_id, $this);
     } else {
         $aParams = array();
         switch ($type) {
             case 'advertisers':
                 if (OA_Permission::isAccount(OA_ACCOUNT_ADMIN) || OA_Permission::isAccount(OA_ACCOUNT_MANAGER)) {
                     if (OA_Permission::isAccount(OA_ACCOUNT_MANAGER)) {
                         $aParams['agency_id'] = OA_Permission::getEntityId();
                     }
                     $params = $this->aPageParams;
                     $advertisers = Admin_DA::getAdvertisers($aParams, false);
                     foreach ($advertisers as $advertiser) {
                         $params['clientid'] = $advertiser['advertiser_id'];
                         phpAds_PageContext(MAX_buildName($advertiser['advertiser_id'], $advertiser['name']), $this->_addPageParamsToURI($this->pageName, $params, true), $current_id == $advertiser['advertiser_id']);
                     }
                 }
                 break;
             case 'campaigns':
                 $aParams['advertiser_id'] = $this->aPageParams['clientid'];
                 $params = $this->aPageParams;
                 $campaigns = Admin_DA::getPlacements($aParams, false);
                 foreach ($campaigns as $campaign) {
                     $params['campaignid'] = $campaign['placement_id'];
                     // mask campaign name if anonymous campaign
                     $campaign['name'] = MAX_getPlacementName($campaign);
                     phpAds_PageContext(MAX_buildName($campaign['placement_id'], $campaign['name']), $this->_addPageParamsToURI($this->pageName, $params, true), $current_id == $campaign['placement_id']);
                 }
                 break;
             case 'banners':
                 $aParams['placement_id'] = $this->aPageParams['campaignid'];
                 $params = $this->aPageParams;
                 $banners = Admin_DA::getAds($aParams, false);
                 foreach ($banners as $banner) {
                     $params['bannerid'] = $banner['ad_id'];
                     // mask banner name if anonymous campaign
                     $campaign = Admin_DA::getPlacement($banner['placement_id']);
                     $campaignAnonymous = $campaign['anonymous'] == 't' ? true : false;
                     $banner['name'] = MAX_getAdName($banner['name'], null, null, $campaignAnonymous, $banner['ad_id']);
                     phpAds_PageContext(MAX_buildName($banner['ad_id'], $banner['name']), $this->_addPageParamsToURI($this->pageName, $params, true), $current_id == $banner['ad_id']);
                 }
                 break;
             case 'publishers':
                 if (OA_Permission::isAccount(OA_ACCOUNT_ADMIN) || OA_Permission::isAccount(OA_ACCOUNT_MANAGER)) {
                     if (OA_Permission::isAccount(OA_ACCOUNT_MANAGER)) {
                         $aParams['agency_id'] = OA_Permission::getEntityId();
                     }
                     $params = $this->aPageParams;
                     $campaigns = Admin_DA::getPublishers($aParams, false);
                     foreach ($campaigns as $publisher) {
                         $params['affiliateid'] = $publisher['publisher_id'];
                         phpAds_PageContext(MAX_buildName($publisher['publisher_id'], $publisher['name']), $this->_addPageParamsToURI($this->pageName, $params, true), $current_id == $publisher['publisher_id']);
                     }
                 }
                 break;
             case 'publisher-campaigns':
                 if (OA_Permission::isAccount(OA_ACCOUNT_ADMIN) || OA_Permission::isAccount(OA_ACCOUNT_MANAGER)) {
                     $aParams = array('publisher_id' => $publisherId, 'placement_id' => $placementId, 'include' => array('placement_id'), 'exclude' => array('zone_id'));
                     $aPlacements = array();
                     foreach (Admin_DA::fromCache('getEntitiesStats', $aParams + $this->aDates) as $v) {
                         $aPlacements[$v['placement_id']] = true;
                     }
                     $params = $this->aPageParams;
                     $campaigns = Admin_DA::getPlacements(array(), false);
                     foreach ($campaigns as $campaign) {
                         if (isset($aPlacements[$campaign['placement_id']])) {
                             $params['campaignid'] = $campaign['placement_id'];
                             phpAds_PageContext(MAX_buildName($campaign['placement_id'], $campaign['name']), $this->_addPageParamsToURI($this->pageName, $params, true), $current_id == $campaign['placement_id']);
                         }
                     }
                 }
                 break;
             case 'zones':
                 $aParams['publisher_id'] = $this->aPageParams['affiliateid'];
                 $params = $this->aPageParams;
                 $zones = Admin_DA::getZones($aParams, false);
                 foreach ($zones as $zone) {
                     $params['zoneid'] = $zone['zone_id'];
                     phpAds_PageContext(MAX_buildName($zone['zone_id'], $zone['name']), $this->_addPageParamsToURI($this->pageName, $params, true), $current_id == $zone['zone_id']);
                 }
                 break;
         }
     }
 }