Esempio n. 1
0
 /**
  * Calculates the eCPM values for all campaigns in the priority levels specified
  * by ecpmCampaignLevels
  */
 public function runAlgorithm()
 {
     $campaign_priorities = $this->getCampaignPriorityLevelsToProcess();
     $aAgenciesIds = $this->oDal->getAllAgenciesIds();
     foreach ($aAgenciesIds as $agencyId) {
         foreach ($campaign_priorities as $priority => $x) {
             $aCampaignsInfo = $this->oDal->getAllCampaignsInfoByAgencyIdAndPriority($agencyId, $priority);
             if (is_array($aCampaignsInfo) && !empty($aCampaignsInfo)) {
                 $aCampaignsEcpms = array();
                 $aCampaignsDeliveries = $this->oDal->getAgencyPriorityCampaignsDeliveriesToDate($agencyId, $priority);
                 foreach ($aCampaignsInfo as $campaignId => $aCampaign) {
                     $aCampaignsEcpms[$campaignId] = OX_Util_Utils::getEcpm($aCampaign[self::IDX_REVENUE_TYPE], $aCampaign[self::IDX_REVENUE], $aCampaignsDeliveries[$campaignId]['sum_impressions'], $aCampaignsDeliveries[$campaignId]['sum_clicks'], $aCampaignsDeliveries[$campaignId]['sum_conversions'], $aCampaign[self::IDX_ACTIVATE], $aCampaign[self::IDX_EXPIRE]);
                 }
                 $this->oDal->updateCampaignsEcpms($aCampaignsEcpms);
             }
         }
     }
 }
        $aCampaign['activate'] = '-';
    }
    if (!empty($aCampaign['expire_time'])) {
        $oExpireDate = new Date($aCampaign['expire_time']);
        $oTz = $oExpireDate->tz;
        $oExpireDate->setTZbyID('UTC');
        $oExpireDate->convertTZ($oTz);
        $aCampaign['expire'] = $oExpireDate->format($date_format);
    } else {
        $aCampaign['expire'] = '-';
    }
    if ($aCampaign['type'] == DataObjects_Campaigns::CAMPAIGN_TYPE_MARKET_CONTRACT) {
        $aCampaign['system'] = true;
        $aCampaign['type'] = OX_Util_Utils::getCampaignType($aCampaign['priority']);
    } else {
        $aCampaign['type'] = OX_Util_Utils::getCampaignType($aCampaign['priority']);
    }
    if ($aCampaign['priority'] == -1) {
        $aCampaign['priority'] = $strOverride;
    } elseif ($aCampaign['priority'] == -2) {
        $aCampaign['priority'] = $strCampaignECPM;
    } elseif ($aCampaign['priority'] == 0) {
        $aCampaign['priority'] = $strLow;
    } else {
        $aCampaign['priority'] = $strHigh . ' (' . $aCampaign['priority'] . ')';
    }
    $aCampaigns[$campaignId] = $aCampaign;
}
$aCount = array('campaigns' => 0, 'campaigns_hidden' => 0);
$campaignshidden = 0;
if (isset($aCampaigns) && is_array($aCampaigns) && count($aCampaigns) > 0) {
Esempio n. 3
0
 /**
  * Returns campaign status translated text based on given status.
  *
  * @param int $priority
  * @return name for given campaign type
  */
 static function getCampaignStatusName($status)
 {
     $key = OX_Util_Utils::getCampaignStatusTranslationKey($status);
     if ($key) {
         $name = $GLOBALS[$key];
     }
     return $name;
 }
Esempio n. 4
0
 function _function_showCampaignType($aParams, &$smarty)
 {
     $priority = $aParams['priority'];
     return OX_Util_Utils::getCampaignTypeName($priority);
 }
 function calculateEcpm()
 {
     if ($this->campaignid) {
         $oMaxDalMaintenance = new OA_Dal_Maintenance_Priority();
         $result = $oMaxDalMaintenance->getCampaignDeliveryToDate($this->campaignid);
         $requestsToDate = $result[0]['sum_requests'];
         $impressionsToDate = $result[0]['sum_views'];
         $clicksToDate = $result[0]['sum_clicks'];
         $conversionsToDate = $result[0]['sum_conversions'];
     } else {
         $requestsToDate = $impressionsToDate = $clicksToDate = $conversionsToDate = 0;
     }
     return OX_Util_Utils::getEcpm($this->revenue_type, $this->revenue, $impressionsToDate, $clicksToDate, $conversionsToDate, $this->activate_time, $this->expire_time);
 }
function buildCampaignForm($campaign, &$oComponent = null)
{
    global $pref;
    $form = new OA_Admin_UI_Component_Form("campaignform", "POST", $_SERVER['SCRIPT_NAME']);
    $form->forceClientValidation(true);
    $form->addElement('hidden', 'campaignid', $campaign['campaignid']);
    $form->addElement('hidden', 'clientid', $campaign['clientid']);
    $form->addElement('hidden', 'expire_time', $campaign['expire_time']);
    $form->addElement('hidden', 'target_old', isset($campaign['target_value']) ? (int) $campaign['target_value'] : 0);
    $form->addElement('hidden', 'target_type_old', isset($campaign['target_type']) ? $campaign['target_type'] : '');
    $form->addElement('hidden', 'weight_old', isset($campaign['weight']) ? (int) $campaign['weight'] : 0);
    $form->addElement('hidden', 'status_old', isset($campaign['status']) ? (int) $campaign['status'] : 1);
    $form->addElement('hidden', 'previousweight', isset($campaign["weight"]) ? $campaign["weight"] : '');
    $form->addElement('hidden', 'previoustarget', isset($campaign["target"]) ? $campaign["target"] : '');
    $form->addElement('hidden', 'previousactive', isset($campaign["active"]) ? $campaign["active"] : '');
    $form->addElement('hidden', 'previousimpressions', isset($campaign["impressions"]) ? $campaign["impressions"] : '');
    $form->addElement('hidden', 'previousclicks', isset($campaign["clicks"]) ? $campaign["clicks"] : '');
    $form->addElement('hidden', 'previousconversions', isset($campaign["conversions"]) ? $campaign["conversions"] : '');
    //campaign inactive note (if any)
    if (isset($campaign['status']) && $campaign['status'] != OA_ENTITY_STATUS_RUNNING) {
        $aReasons = getCampaignInactiveReasons($campaign);
        $form->addElement('custom', 'campaign-inactive-note', null, array('inactiveReason' => $aReasons), false);
    }
    //form sections
    $newCampaign = empty($campaign['campaignid']);
    $remnantEcpmEnabled = !empty($pref['campaign_ecpm_enabled']);
    $contractEcpmEnabled = !empty($pref['contract_ecpm_enabled']);
    buildBasicInformationFormSection($form, $campaign, $newCampaign, $remnantEcpmEnabled, $contractEcpmEnabled);
    buildDateFormSection($form, $campaign, $newCampaign);
    buildPricingFormSection($form, $campaign, $newCampaign, $remnantEcpmEnabled, $contractEcpmEnabled);
    buildPluggableFormSection($oComponent, 'afterPricingFormSection', $form, $campaign, $newCampaign);
    buildHighPriorityFormSection($form, $campaign, $newCampaign);
    buildLowAndExclusivePriorityFormSection($form, $campaign, $newCampaign);
    buildDeliveryCappingFormSection($form, $GLOBALS['strCappingCampaign'], $campaign, null, null, true, $newCampaign);
    buildMiscFormSection($form, $campaign, $newCampaign);
    //form controls
    $form->addElement('controls', 'form-controls');
    $form->addElement('submit', 'submit', $GLOBALS['strSaveChanges']);
    //validation rules
    $translation = new OX_Translation();
    $nameRequiredMsg = $translation->translate($GLOBALS['strXRequiredField'], array($GLOBALS['strName']));
    $form->addRule('campaignname', $nameRequiredMsg, 'required');
    $form->addFormRule('checkIfCampaignTypeSpecified');
    $typeRequiredMsg = $translation->translate($GLOBALS['strXRequiredField'], array($GLOBALS['strPricingModel']));
    $form->addRule('revenue_type', $typeRequiredMsg, 'required');
    //  $form->addRule('impressions', 'TODO message', 'formattedNumber');
    //  $form->addRule('clicks', 'TODO message', 'formattedNumber');
    //    if ($conf['logging']['trackerImpressions']) {
    //      $form->addRule('conversions', 'TODO message', 'formattedNumber');
    //    }
    //  $form->addRule('weight', 'TODO message', 'wholeNumber-');
    //  $form->addRule('target_value', 'TODO message', 'wholeNumber-');
    //set form values
    $form->setDefaults($campaign);
    $form->setDefaults(array('impressions' => !isset($campaign['impressions']) || $campaign['impressions'] == '' || $campaign['impressions'] < 0 ? '-' : $campaign['impressions'], 'clicks' => !isset($campaign['clicks']) || $campaign['clicks'] == '' || $campaign['clicks'] < 0 ? '-' : $campaign['clicks'], 'conversions' => !isset($campaign['conversions']) || $campaign['conversions'] == '' || $campaign['conversions'] < 0 ? '-' : $campaign['conversions']));
    if (!empty($campaign['activate_date'])) {
        $oDate = new Date($campaign['activate_date']);
        $startDateSet = 't';
        $startDateStr = $oDate->format('%d %B %Y ');
    } else {
        $startDateSet = 'f';
        $startDateStr = '';
    }
    if (!empty($campaign['expire_date'])) {
        $oDate = new Date($campaign['expire_date']);
        $endDateSet = 't';
        $endDateStr = $oDate->format('%d %B %Y ');
    } else {
        $endDateSet = 'f';
        $endDateStr = '';
    }
    $form->setDefaults(array('campaign_type' => $newCampaign ? '' : OX_Util_Utils::getCampaignType($campaign['priority']), 'impr_unlimited' => isset($campaign["impressions"]) && $campaign["impressions"] >= 0 ? 'f' : 't', 'click_unlimited' => isset($campaign["clicks"]) && $campaign["clicks"] >= 0 ? 'f' : 't', 'conv_unlimited' => isset($campaign["conversions"]) && $campaign["conversions"] >= 0 ? 'f' : 't', 'startSet' => $startDateSet, 'endSet' => $endDateSet, 'start' => $startDateStr, 'end' => $endDateStr, 'priority' => $campaign['priority'] > '0' && $campaign['campaignid'] != '' ? 2 : $campaign['priority'], 'high_priority_value' => $campaign['priority'] > '0' ? $campaign['priority'] : 5, 'target_value' => !empty($campaign['target_value']) ? $campaign['target_value'] : '-', 'weight' => isset($campaign["weight"]) ? $campaign["weight"] : $pref['default_campaign_weight'], 'revenue_type' => isset($campaign["revenue_type"]) ? $campaign["revenue_type"] : MAX_FINANCE_CPM));
    return $form;
}
Esempio n. 7
0
        $campaigns[$row_campaigns['campaignid']]['expire'] = $oExpireDate->format($date_format);
    } else {
        $campaigns[$row_campaigns['campaignid']]['expire'] = '-';
    }
    if ($row_campaigns['priority'] == -1) {
        $campaigns[$row_campaigns['campaignid']]['priority'] = $strExclusive;
    } elseif ($row_campaigns['priority'] == -2) {
        $campaigns[$row_campaigns['campaignid']]['priority'] = $strCampaignECPM;
    } elseif ($row_campaigns['priority'] == 0) {
        $campaigns[$row_campaigns['campaignid']]['priority'] = $strLow;
    } else {
        $campaigns[$row_campaigns['campaignid']]['priority'] = $strHigh . ' (' . $row_campaigns['priority'] . ')';
    }
    $campaigns[$row_campaigns['campaignid']]['status'] = $row_campaigns['status'];
    $campaigns[$row_campaigns['campaignid']]['anonymous'] = $row_campaigns['anonymous'];
    $campaigns[$row_campaigns['campaignid']]['type'] = OX_Util_Utils::getCampaignType($row_campaigns['priority']);
}
$aCount = array('campaigns' => 0, 'campaigns_hidden' => 0);
$campaignshidden = 0;
if (isset($campaigns) && is_array($campaigns) && count($campaigns) > 0) {
    reset($campaigns);
    while (list($key, $campaign) = each($campaigns)) {
        $aCount['campaigns']++;
        if ($hideinactive == true && ($campaign['status'] != OA_ENTITY_STATUS_RUNNING || $campaign['status'] == OA_ENTITY_STATUS_RUNNING && count($campaign['banners']) == 0 && count($campaign['banners']) < $campaign['count'])) {
            $aCount['campaigns_hidden']++;
            unset($campaigns[$key]);
        }
    }
}
$oTpl->assign('clientId', $clientid);
$oTpl->assign('aCampaigns', $campaigns);
Esempio n. 8
0
function MAX_displayLinkedPlacementsAds($aParams, $publisherId, $zoneId, $hideInactive, $showMatchingAds, $pageName, &$tabIndex, $directLinkedAds = false)
{
    echo "\n    <br /><strong>{$GLOBALS['strCampaignLinkedAds']}:</strong><br />\n    <table id='linked-campaigns' width='100%' border='0' align='center' cellspacing='0' cellpadding='0'>\n    <tr height='25'>\n        <td width='40%'><b>&nbsp;&nbsp;{$GLOBALS['strName']}</b></td>\n        <td width='20%'><b>&nbsp;&nbsp;{$GLOBALS['strType']}</b></td>\n        <td><b>{$GLOBALS['strID']}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</b></td>\n        <td>&nbsp;</td>\n    </tr>\n    <tr height='1'>\n        <td colspan='4' bgcolor='#888888'><img src='" . OX::assetPath() . "/images/break.gif' height='1' width='100%'></td>\n    </tr>";
    $i = 0;
    $inactive = 0;
    $aPlacements = !empty($aParams) ? Admin_DA::getPlacements($aParams) : array();
    foreach ($aPlacements as $placementId => $aPlacement) {
        $placementActive = $aPlacement['status'] == OA_ENTITY_STATUS_RUNNING;
        if (!$hideInactive || $placementActive) {
            $pParams = $aParams;
            $pParams['placement_id'] = $placementId;
            $aAds = Admin_DA::getAds($pParams, true);
            $bgcolor = $i % 2 == 0 ? " bgcolor='#F6F6F6'" : '';
            // Remove these ad(s) from the direct linked ads
            foreach ($aAds as $dAdId) {
                unset($directLinkedAds[$dAdId['ad_id']]);
            }
            // Remove from array any ads not linked to the zone.
            // These might exist if campaign has been linked to zone
            // and indivual ads have then been unlinked
            $pParams = array('zone_id' => $zoneId);
            $aAdZones = Admin_DA::getAdZones($pParams, true);
            $aAdZoneLinks = array();
            foreach ($aAdZones as $aAdZone) {
                $aAdZoneLinks[] = $aAdZone['ad_id'];
            }
            foreach ($aAds as $adId => $aAd) {
                if (!in_array($adId, $aAdZoneLinks)) {
                    unset($aAds[$adId]);
                }
            }
            $placementIcon = MAX_getEntityIcon('placement', $placementActive);
            $placementName = htmlspecialchars(MAX_getDisplayName($aPlacement['name']));
            $placementLink = OA_Permission::isAccount(OA_ACCOUNT_ADMIN) || OA_Permission::isAccount(OA_ACCOUNT_MANAGER) ? "<a href='campaign-edit.php?clientid={$aPlacement['advertiser_id']}&campaignid={$placementId}'>{$placementName}</a>" : $placementName;
            $placementTypeName = OX_Util_Utils::getCampaignTypeName($aPlacement['priority']);
            $adCount = empty($aAds) ? 0 : count($aAds);
            $placementDescription = $showMatchingAds ? '&nbsp;' : str_replace('{count}', $adCount, $GLOBALS['strMatchingBanners']);
            if ($i > 0) {
                echo "\n    <tr height='1'>\n        <td colspan='4' bgcolor='#888888'><img src='" . OX::assetPath() . "/images/break-l.gif' height='1' width='100%'></td>\n    </tr>";
            }
            echo "\n    <tr height='25'{$bgcolor}>\n        <td>\n            &nbsp;&nbsp;<a href='{$pageName}?affiliateid={$publisherId}&zoneid={$zoneId}&campaignid={$placementId}&action=remove'><img src='" . OX::assetPath() . "/images/caret-l.gif' border='0' align='absmiddle'></a>\n            &nbsp;&nbsp;<img src='{$placementIcon}' align='absmiddle'>\n            &nbsp;{$placementLink}\n        </td>\n        <td><span class='campaign-type'>{$placementTypeName}</span></td>\n        <td>{$placementId}</td>\n        <td>{$placementDescription}</td>\n    </tr>";
            if ($showMatchingAds && !empty($aAds)) {
                foreach ($aAds as $adId => $aAd) {
                    $adActive = $aAd['status'] == OA_ENTITY_STATUS_RUNNING && $aPlacement['status'] == OA_ENTITY_STATUS_RUNNING;
                    if (!$hideInactive || $adActive) {
                        $adIcon = MAX_getEntityIcon('ad', $adActive, $aAd['type']);
                        $adName = htmlspecialchars(MAX_getDisplayName($aAd['name']));
                        $adLink = OA_Permission::isAccount(OA_ACCOUNT_ADMIN) || OA_Permission::isAccount(OA_ACCOUNT_MANAGER) ? "<a href='banner-edit.php?clientid={$aPlacement['advertiser_id']}&campaignid={$placementId}&bannerid={$adId}'>{$adName}</a>" : $adName;
                        $adWidth = $aAd['contenttype'] == 'txt' ? 300 : $aAd['width'] + 64;
                        $adHeight = $aAd['contenttype'] == 'txt' ? 200 : $aAd['height'] + (!empty($aAd['bannertext']) ? 90 : 64);
                        echo "\n    <tr height='1'>\n        <td{$bgcolor}><img src='" . OX::assetPath() . "/images/spacer.gif' width='1' height='1'></td>\n        <td colspan='3' bgcolor='#888888'><img src='" . OX::assetPath() . "/images/break-el.gif' height='1' width='100%'></td>\n    </tr>\n    <tr height='25'{$bgcolor}>\n        <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src='{$adIcon}' align='absmiddle'>&nbsp;{$adLink}</td>\n        <td></td>\n        <td>{$adId}</td>\n        <td align=" . $GLOBALS['phpAds_TextAlignRight'] . ">\n            <img src='" . OX::assetPath() . "/images/icon-zoom.gif' align='absmiddle' border='0'>&nbsp;<a href='banner-htmlpreview.php?bannerid={$adId}' target='_new' onClick=\"return openWindow('banner-htmlpreview.php?bannerid={$adId}', '', 'status=no,scrollbars=no,resizable=no,width={$adWidth},height={$adHeight}');\">{$GLOBALS['strShowBanner']}</a>&nbsp;&nbsp;\n        </td>\n    </tr>";
                    } else {
                        $inactive++;
                    }
                }
            }
            $i++;
        } else {
            $inactive++;
        }
    }
    $showMatchingText = $showMatchingAds ? $GLOBALS['strHideMatchingBanners'] : $GLOBALS['strShowMatchingBanners'];
    $showMatchingValue = $showMatchingAds ? '0' : '1';
    $hideInactiveText = $hideInactive ? $GLOBALS['strShowAll'] : $GLOBALS['strHideInactiveCampaigns'];
    $hideInactiveStats = $hideInactive ? "&nbsp;&nbsp;|&nbsp;&nbsp;{$inactive} {$GLOBALS['strInactiveCampaignsHidden']}" : '';
    $hideInactiveValue = $hideInactive ? '0' : '1';
    $hideInactiveIcon = OX::assetPath($hideInactive ? 'images/icon-activate.gif' : 'images/icon-hideinactivate.gif');
    echo "\n    <tr height='1'>\n        <td colspan='4' bgcolor='#888888'><img src='" . OX::assetPath() . "/images/break.gif' height='1' width='100%'></td>\n    </tr>\n    <tr height='25'>\n        <td colspan='3'>\n            <img src='{$hideInactiveIcon}' align='absmiddle' border='0'>\n            <a href='{$pageName}?affiliateid={$publisherId}&zoneid={$zoneId}&hideinactive={$hideInactiveValue}'>{$hideInactiveText}</a>{$hideInactiveStats}\n        </td>\n        <td align='right'>\n            <img src='" . OX::assetPath() . "/images/icon-banner-stored-d.gif' align='absmiddle' border='0'>\n            <a href='{$pageName}?affiliateid={$publisherId}&zoneid={$zoneId}&showbanners={$showMatchingValue}'>{$showMatchingText}</a>\n    </table>";
    if (!empty($directLinkedAds)) {
        echo "<br /><strong>{$GLOBALS['strBannerLinkedAds']}:</strong><br />";
        $aParams = array('ad_id' => implode(',', array_keys($directLinkedAds)));
        MAX_displayLinkedAdsPlacements($aParams, $publisherId, $zoneId, $hideInactive, $showParentPlacements, $pageName, $tabIndex);
    }
}
 function addVastCompanionsToForm(&$form, $selectableCompanions)
 {
     $form->addElement('header', 'companion_status', "Companion banner");
     $doCampaigns = OA_Dal::factoryDO('campaigns');
     $doCampaigns->campaignid = $GLOBALS['campaignid'];
     $doCampaigns->find();
     $doCampaigns->fetch();
     if (OX_Util_Utils::getCampaignType($doCampaigns->priority) == OX_CAMPAIGN_TYPE_CONTRACT_NORMAL) {
         $form->addElement('html', 'companion_help_contract', '<br/><b>Note:</b> Revive Adserver currently doesn\'t support the display of a companion banner for "Contract" campaigns.
                          <br/>If you wish to display a companion banner, please select a "Remnant" or "Override" campaign.');
         return;
     }
     $helpLinkPlayer = VideoAdsHelper::getHelpLinkVideoPlayerConfig();
     $form->addElement('html', 'companion_help', 'To associate a companion banner to this video ad, select a banner from the companion banner dropdown. This banner will appear for the duration of the video ad. <br/>
     					You will need to specify where this companion banner appears on the page while setting up your video ad in the video player plugin configuration. <a href="' . $helpLinkPlayer . '" target="_blank">Learn more</a>
     					');
     $form->addElement('select', 'vast_companion_banner_id', 'Companion banner', $selectableCompanions);
 }
Esempio n. 10
0
 /**
  * Calculates campaign eCPM based on the campaign history
  *
  * @param integer $campaignId  Campaign ID
  * @param array $aCampaign  Campaign information, see
  *                          OA_Dal_Maintenance_Priority::getCampaignsInfoByQuery
  *                          for info on its format
  * @return float  Calculated campaign eCPM
  */
 public function calculateCampaignEcpm($campaignId, $aCampaign)
 {
     return OX_Util_Utils::getEcpm($aCampaign[self::IDX_REVENUE_TYPE], $aCampaign[self::IDX_REVENUE], $this->aCampaignsDeliveries[$campaignId]['sum_impressions'], $this->aCampaignsDeliveries[$campaignId]['sum_clicks'], $this->aCampaignsDeliveries[$campaignId]['sum_conversions'], $aCampaign[self::IDX_ACTIVATE], $aCampaign[self::IDX_EXPIRE]);
 }
Esempio n. 11
0
function buildStatusForm($aCampaign)
{
    $form = new OA_Admin_UI_Component_Form("statusChangeForm", "POST", $_SERVER['PHP_SELF']);
    $form->forceClientValidation(true);
    $form->addElement('hidden', 'campaignid', $aCampaign['campaignid']);
    $form->addElement('hidden', 'clientid', $aCampaign['clientid']);
    $form->addElement('header', 'h_misc', $GLOBALS['strCampaignStatus']);
    $form->addElement('static', 'status_display', $GLOBALS['strStatus'], OX_Util_Utils::getCampaignStatusName($aCampaign['status']));
    if ($aCampaign['status'] == OA_ENTITY_STATUS_APPROVAL) {
        $form->addElement('radio', 'status', null, $GLOBALS['strCampaignApprove'] . " - " . $GLOBALS['strCampaignApproveDescription'], OA_ENTITY_STATUS_RUNNING, array('id' => 'sts_approve'));
        $form->addElement('radio', 'status', null, $GLOBALS['strCampaignReject'] . " - " . $GLOBALS['strCampaignRejectDescription'], OA_ENTITY_STATUS_REJECTED, array('id' => 'sts_reject'));
        $form->addElement('select', 'as_reject_reason', $GLOBALS['strReasonForRejection'], array(OA_ENTITY_ADVSIGNUP_REJECT_NOTLIVE => $GLOBALS['strReasonSiteNotLive'], OA_ENTITY_ADVSIGNUP_REJECT_BADCREATIVE => $GLOBALS['strReasonBadCreative'], OA_ENTITY_ADVSIGNUP_REJECT_BADURL => $GLOBALS['strReasonBadUrl'], OA_ENTITY_ADVSIGNUP_REJECT_BREAKTERMS => $GLOBALS['strReasonBreakTerms']));
        $form->addDecorator('as_reject_reason', 'process', array('tag' => 'tr', 'addAttributes' => array('id' => 'rsn_row{numCall}', 'class' => '')));
    } elseif ($aCampaign['status'] == OA_ENTITY_STATUS_RUNNING) {
        $form->addElement('radio', 'status', null, $GLOBALS['strCampaignPause'] . " - " . $GLOBALS['strCampaignPauseDescription'], OA_ENTITY_STATUS_PAUSED, array('id' => 'sts_pause'));
    } elseif ($aCampaign['status'] == OA_ENTITY_STATUS_PAUSED) {
        $form->addElement('radio', 'status', null, $GLOBALS['strCampaignRestart'] . " - " . $GLOBALS['strCampaignRestartDescription'], OA_ENTITY_STATUS_RUNNING, array('id' => 'sts_restart'));
    } elseif ($aCampaign['status'] == OA_ENTITY_STATUS_REJECTED) {
        $rejectionReasonText = phpAds_showStatusRejected($aCampaign['as_reject_reason']);
        $form->addElement('static', 'status', null, $rejectionReasonText, OA_ENTITY_STATUS_PAUSED, array('id' => 'sts_pause'));
    }
    $form->addElement('controls', 'form-controls');
    $form->addElement('submit', 'submit_status', $GLOBALS['strChangeStatus']);
    return $form;
}
 function testGetEcpm()
 {
     $revenue = 10;
     $clicks = 10;
     $conversions = 5;
     // Test each type with 0 impressions.
     $impressions = 0;
     // CPM
     $expected = 10;
     $result = OX_Util_Utils::getEcpm(MAX_FINANCE_CPM, $revenue, $impressions);
     $this->assertEqual($expected, $result);
     // CPC
     // eCPM = default click ratio * revenue * 1000
     $defaultClickRatio = null;
     $expected = 50;
     $result = OX_Util_Utils::getEcpm(MAX_FINANCE_CPC, $revenue, $impressions, $clicks, $conversions, null, null, $defaultClickRatio);
     $this->assertEqual($expected, $result);
     $defaultClickRatio = 0.05;
     $expected = 500;
     $result = OX_Util_Utils::getEcpm(MAX_FINANCE_CPC, $revenue, $impressions, $clicks, $conversions, null, null, $defaultClickRatio);
     $this->assertEqual($expected, $result);
     // CPA
     // eCPM = default conversion ratio * revenue * 1000
     $defaultConversionRatio = null;
     $expected = 1;
     $result = OX_Util_Utils::getEcpm(MAX_FINANCE_CPA, $revenue, $impressions, $clicks, $conversions, null, null, $defaultClickRatio, $defaultConversionRatio);
     $this->assertEqual($expected, $result);
     $defaultConversionRatio = 0.01;
     $expected = 100;
     $result = OX_Util_Utils::getEcpm(MAX_FINANCE_CPA, $revenue, $impressions, $clicks, $conversions, null, null, $defaultClickRatio, $defaultConversionRatio);
     $this->assertEqual($expected, $result);
     // Tenancy
     // eCPM = 0.
     $expected = 0;
     $result = OX_Util_Utils::getEcpm(MAX_FINANCE_MT, $revenue, $impressions, $clicks, $conversions, '2009-01-01', '2009-01-14', $defaultClickRatio, $defaultConversionRatio);
     $this->assertEqual($expected, $result);
     // Test each type with some impressions
     $impressions = 100000;
     // CPM
     // eCPM = CPM
     $expected = 10;
     $result = OX_Util_Utils::getEcpm(MAX_FINANCE_CPM, $revenue, $impressions);
     $this->assertEqual($expected, $result);
     // CPC
     // eCPM = revenue * clicks / impressions * 1000
     $expected = 1;
     $result = OX_Util_Utils::getEcpm(MAX_FINANCE_CPC, $revenue, $impressions, $clicks);
     $this->assertEqual($expected, $result);
     // CPA
     // eCPM = revenue * conversions / impressions * 1000
     $expected = 0.5;
     $result = OX_Util_Utils::getEcpm(MAX_FINANCE_CPA, $revenue, $impressions, $clicks, $conversions);
     $this->assertEqual($expected, $result);
     // Tenancy
     // eCPM = (revenue / totalDaysInCampaign) * daysInCampaignSoFar / impressions * 1000
     $now = new Date();
     $startDate = new Date($now);
     $endDate = new Date($now);
     $endDate->addSeconds(60 * 60 * 24 * 10);
     // 10 days in the future.
     $span = new Date_Span();
     $span->setFromDateDiff($startDate, $endDate);
     $this->assertEqual(10, $span->toDays());
     // Total revenue for tenancy.
     $revenue = 10000;
     $revenuePerDay = $revenue / $span->toDays();
     $this->assertEqual(1000, $revenuePerDay);
     // Beginning of campaign (no imps served)
     $impressions = 0;
     $expected = 0;
     $result = OX_Util_Utils::getEcpm(MAX_FINANCE_MT, $revenue, $impressions, $clicks, $conversions, $startDate->getDate(DATE_FORMAT_ISO), $endDate->getDate(DATE_FORMAT_ISO));
     $this->assertEqual($expected, $result);
     // Half way through campaign (40,000 imps served)
     $impressions = 40000;
     $startDate->subtractSeconds(60 * 60 * 24 * 5);
     // We are 5 days into the campaign.
     $endDate->subtractSeconds(60 * 60 * 24 * 5);
     $span->setFromDateDiff($startDate, $now);
     $this->assertEqual(5, $span->toDays());
     $span->setFromDateDiff($endDate, $now);
     $this->assertEqual(5, $span->toDays());
     // eCPM = (revenue / totalDaysInCampaign) * daysInCampaignSoFar / impressions * 1000
     $expected = 125;
     $result = OX_Util_Utils::getEcpm(MAX_FINANCE_MT, $revenue, $impressions, $clicks, $conversions, $startDate->getDate(DATE_FORMAT_ISO), $endDate->getDate(DATE_FORMAT_ISO));
     $this->assertEqual($expected, $result);
     // End of campaign (70,000 imps served)
     $impressions = 70000;
     $startDate->subtractSeconds(60 * 60 * 24 * 5);
     // We are 10 days into the campaign.
     $endDate->subtractSeconds(60 * 60 * 24 * 5);
     $span->setFromDateDiff($startDate, $now);
     $this->assertEqual(10, $span->toDays());
     $expected = 142.857142857;
     $result = OX_Util_Utils::getEcpm(MAX_FINANCE_MT, $revenue, $impressions, $clicks, $conversions, $startDate->getDate(DATE_FORMAT_ISO), $endDate->getDate(DATE_FORMAT_ISO));
     // Is this the correct margin?
     $this->assertWithinMargin($expected, $result, 0.0001, "Outside of margin");
     // No dates given
     $expected = 0;
     $result = OX_Util_Utils::getEcpm(MAX_FINANCE_MT, $revenue, $impressions, $clicks, $conversions, null, null);
     $this->assertEqual($expected, $result);
 }