本文整理汇总了PHP中OA_Dal::equalNoDateString方法的典型用法代码示例。如果您正苦于以下问题:PHP OA_Dal::equalNoDateString方法的具体用法?PHP OA_Dal::equalNoDateString怎么用?PHP OA_Dal::equalNoDateString使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类OA_Dal
的用法示例。
在下文中一共展示了OA_Dal::equalNoDateString方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: manageCampaigns
/**
* A method to activate/deactivate campaigns, based on the date and/or the inventory
* requirements (impressions, clicks and/or conversions). Also sends email reports
* for any campaigns that are activated/deactivated, as well as sending email reports
* for any campaigns that are likely to expire in the near future.
*
* @param Date $oDate The current date/time.
* @return string Report on the campaigns activated/deactivated.
*/
function manageCampaigns($oDate)
{
$aConf = $GLOBALS['_MAX']['CONF'];
$oServiceLocator =& OA_ServiceLocator::instance();
$oEmail =& $oServiceLocator->get('OA_Email');
if ($oEmail === false) {
$oEmail = new OA_Email();
$oServiceLocator->register('OA_Email', $oEmail);
}
$report = "\n";
// Select all campaigns in the system, where:
// The campaign is ACTIVE and:
// - The end date stored for the campaign is not null; or
// - The campaign has a lifetime impression, click or conversion
// target set.
//
// That is:
// - It is possible for the active campaign to be automatically
// stopped, as it has a valid end date. (No limitations are
// applied to those campaigns tested, as the ME may not have
// run for a while, and if so, even campaigns with an end date
// of many, many weeks ago should be tested to ensure they are
// [belatedly] halted.)
// - It is possible for the active campaign to be automatically
// stopped, as it has at leaast one lifetime target that could
// have been reached.
//
// The campaign is INACTIVE and:
// - The start date stored for the campaign is not null; and
// - The weight is greater than zero; and
// - The end date stored for the campaign is either null, or is
// greater than "today" less one day.
//
// That is:
// - It is possible for the inactive campaign to be automatically
// started, as it has a valid start date. (No limitations are
// applied to those campaigns tested, as the ME may not have run
// for a while, and if so, even campaigns with an activation date
// of many, many weeks ago should be tested to ensure they are
// [belatedy] enabled.)
// - The campaign is not in a permanently inactive state, as a
// result of the weight being less then one, which means that
// it cannot be activated.
// - The test to start the campaign is unlikely to fail on account
// of the end date. (Inactive campaigns with start dates may have
// passed the start date, but they may also have passed the end
// date - unfortunately, because the dates are not stored in UTC,
// it's not possible to know exactly which campaigns have passed
// the end date or not, until the values are converted to UTC based
// on the Advertiser Account timezone preference - so it's necessary
// to get some campaigns that might be passed the end date, and do
// the converstion to UTC and test to check.)
$prefix = $this->getTablePrefix();
$oYesterdayDate = new Date();
$oYesterdayDate->copy($oDate);
$oYesterdayDate->subtractSeconds(SECONDS_PER_DAY);
$query = "\n SELECT\n cl.clientid AS advertiser_id,\n cl.account_id AS advertiser_account_id,\n cl.agencyid AS agency_id,\n cl.contact AS contact,\n cl.email AS email,\n cl.reportdeactivate AS send_activate_deactivate_email,\n ca.campaignid AS campaign_id,\n ca.campaignname AS campaign_name,\n ca.views AS targetimpressions,\n ca.clicks AS targetclicks,\n ca.conversions AS targetconversions,\n ca.status AS status,\n ca.activate AS start,\n ca.expire AS end\n FROM\n {$prefix}campaigns AS ca,\n {$prefix}clients AS cl\n WHERE\n ca.clientid = cl.clientid\n AND\n ca.status = " . $this->oDbh->quote(OA_ENTITY_STATUS_RUNNING, 'integer') . "\n AND\n (\n ca.expire " . OA_Dal::notEqualNoDateString() . "\n OR\n (\n ca.views > 0\n OR\n ca.clicks > 0\n OR\n ca.conversions > 0\n )\n )\n UNION ALL\n SELECT\n cl.clientid AS advertiser_id,\n cl.account_id AS advertiser_account_id,\n cl.agencyid AS agency_id,\n cl.contact AS contact,\n cl.email AS email,\n cl.reportdeactivate AS send_activate_deactivate_email,\n ca.campaignid AS campaign_id,\n ca.campaignname AS campaign_name,\n ca.views AS targetimpressions,\n ca.clicks AS targetclicks,\n ca.conversions AS targetconversions,\n ca.status AS status,\n ca.activate AS start,\n ca.expire AS end\n FROM\n {$prefix}campaigns AS ca,\n {$prefix}clients AS cl\n WHERE\n ca.clientid = cl.clientid\n AND\n ca.status != " . $this->oDbh->quote(OA_ENTITY_STATUS_RUNNING, 'integer') . "\n AND\n ca.activate " . OA_Dal::notEqualNoDateString() . "\n AND\n (\n ca.weight > 0\n OR\n ca.priority > 0\n )\n AND\n (\n ca.expire >= " . $this->oDbh->quote($oYesterdayDate->format('%Y-%m-%d'), 'timestamp') . "\n OR\n ca.expire " . OA_Dal::equalNoDateString() . "\n )\n ORDER BY\n advertiser_id";
$rsResult = $this->oDbh->query($query);
if (PEAR::isError($rsResult)) {
return MAX::raiseError($rsResult, MAX_ERROR_DBFAILURE, PEAR_ERROR_DIE);
}
OA::debug('- Found ' . $rsResult->numRows() . ' campaigns to test for activation/deactivation', PEAR_LOG_DEBUG);
while ($aCampaign = $rsResult->fetchRow()) {
if ($aCampaign['status'] == OA_ENTITY_STATUS_RUNNING) {
// The campaign is currently running, look at the campaign
$disableReason = 0;
$canExpireSoon = false;
if ($aCampaign['targetimpressions'] > 0 || $aCampaign['targetclicks'] > 0 || $aCampaign['targetconversions'] > 0) {
// The campaign has an impression, click and/or conversion target,
// so get the sum total statistics for the campaign
$query = "\n SELECT\n SUM(dia.impressions) AS impressions,\n SUM(dia.clicks) AS clicks,\n SUM(dia.conversions) AS conversions\n FROM\n " . $this->oDbh->quoteIdentifier($aConf['table']['prefix'] . $aConf['table']['data_intermediate_ad'], true) . " AS dia,\n " . $this->oDbh->quoteIdentifier($aConf['table']['prefix'] . $aConf['table']['banners'], true) . " AS b\n WHERE\n dia.ad_id = b.bannerid\n AND b.campaignid = {$aCampaign['campaign_id']}";
$rsResultInner = $this->oDbh->query($query);
$valuesRow = $rsResultInner->fetchRow();
if (!is_null($valuesRow['impressions']) || !is_null($valuesRow['clicks']) || !is_null($valuesRow['conversions'])) {
// There were impressions, clicks and/or conversions for this
// campaign, so find out if campaign targets have been passed
if (is_null($valuesRow['impressions'])) {
// No impressions
$valuesRow['impressions'] = 0;
}
if (is_null($valuesRow['clicks'])) {
// No clicks
$valuesRow['clicks'] = 0;
}
if (is_null($valuesRow['conversions'])) {
// No conversions
$valuesRow['conversions'] = 0;
}
if ($aCampaign['targetimpressions'] > 0) {
if ($aCampaign['targetimpressions'] <= $valuesRow['impressions']) {
// The campaign has an impressions target, and this has been
//.........这里部分代码省略.........
示例2: _getValidCampaigns
/**
* A method that uses the getAllCampaigns() method to obtain all campaigns
* that meet the requirements of this class. That is:
*
* - The campaign has an expiration date (that is not already passed); and
* - As a result of the above, the campaign must have an activation date that has
* passed, or has the default fake activation date; and
* - The campaign is active, and has a priority of at least 1; and
* - The campaign has inventory requirements for the duration of its activation.
*
* @access private
* @return array An array of {@link OX_Maintenance_Priority_Campaign} objects.
*/
function _getValidCampaigns()
{
$conf = $GLOBALS['_MAX']['CONF'];
// Get current date
$oDate = $this->_getDate();
$dateYMD = $oDate->format('%Y-%m-%d');
$oDbh = OA_DB::singleton();
$table = $oDbh->quoteIdentifier($conf['table']['prefix'] . $conf['table']['campaigns'], true);
$aWheres = array(array("({$table}.activate " . OA_Dal::equalNoDateString() . " OR {$table}.activate <= '{$dateYMD}')", 'AND'), array("{$table}.expire >= '{$dateYMD}'", 'AND'), array("{$table}.priority >= 1", 'AND'), array("{$table}.status = " . OA_ENTITY_STATUS_RUNNING, 'AND'), array("({$table}.views > 0 OR {$table}.clicks > 0 OR {$table}.conversions > 0)", 'AND'));
return $this->_getAllCampaigns($aWheres);
}