/** * The local implementation of the execute() method to generate the report. * * @param OA_Admin_oDaySpan $oDaySpan The OA_Admin_oDaySpan object for the report. * @param integer $placementId The ID of the placement the report is for. * @param array $aSheets An array of sheets that should be in the report. */ function execute($oDaySpan, $placementId, $aSheets) { $checkResult = $this->_checkParameters($oDaySpan, $placementId, $aSheets); if ($checkResult !== true) { return $checkResult; } // Save the placement ID for use later $this->_placementId = $placementId; // Locate and save the placement's name & owning advertiser $doCampaigns = OA_Dal::factoryDO('campaigns'); $doCampaigns->campaignid = $this->_placementId; $doCampaigns->find(); if (!$doCampaigns->fetch()) { // Could not find the placement, set false // for the placement name, and the owning // advertiser ID and advertiser name $this->_placementName = false; $this->_advertiserId = false; $this->_advertiserName = false; } else { // Get and store the placement name and the // owning advertiser ID $aPlacement = $doCampaigns->toArray(); $aPlacement['name'] = $aPlacement['campaignname']; $this->_placementName = MAX_getPlacementName($aPlacement); $this->_advertiserId = $aPlacement['clientid']; if ($aPlacement['anonymous'] == 't') { $campaignAnonymous = true; } else { $campaignAnonymous = false; } // Get the owning advertiser's name $doClients = OA_Dal::factoryDO('clients'); $doClients->clientid = $this->_advertiserId; $doClients->find(); if (!$doClients->fetch()) { // Coule not find the owning advertiser name $this->_advertiserName = false; } else { // Store the owning advertiser name $aAdvertiser = $doClients->toArray(); $this->_advertiserName = MAX_getAdvertiserName($aAdvertiser['clientname'], null, $campaignAnonymous); } } // Prepare the range information for the report $this->_prepareReportRange($oDaySpan); // Prepare the report name $reportFileName = $this->_getReportFileName(); // Prepare the output writer for generation $this->_oReportWriter->openWithFilename($reportFileName); // Add the worksheets to the report, as required if (isset($aSheets['daily_breakdown'])) { $this->_addDailyBreakdownWorksheet(); } if (isset($aSheets['ad_breakdown'])) { $this->_addAdBreakdownWorksheet(); } if (isset($aSheets['zone_breakdown'])) { $this->_addZoneBreakdownWorksheet(); } // Close the report writer and send the report to the user $this->_oReportWriter->closeAndSend(); }
/** * 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); } }