/** * Check to see if this impression contains the valid city. * * @param string $limitation The city (or comma list of cities) limitation * @param string $op The operator (either '==' or '!=') * @param array $aParams An array of additional parameters to be checked * @return boolean Whether this impression's city passes this limitation's test. */ function MAX_checkGeo_City($limitation, $op, $aParams = array()) { if (empty($aParams)) { $aParams = $GLOBALS['_MAX']['CLIENT_GEO']; } if ($aParams && $aParams['city'] && $aParams['country_code']) { $aLimitation = array(substr($limitation, 0, strpos($limitation, '|')), substr($limitation, strpos($limitation, '|') + 1)); $sCities = $aLimitation[1]; if (!empty($aLimitation[0])) { return MAX_limitationsMatchStringValue($aParams['country_code'], $aLimitation[0], '==') && MAX_limitationsMatchArrayValue($aParams['city'], $sCities, $op); } else { return MAX_limitationsMatchArrayValue($aParams['city'], $sCities, $op); } } else { return false; // If client has no data about city, do not show the ad } }
/** * Check to see if this impression contains the valid region. * * @param string $limitation The region (or comma list of regions) limitation * @param string $op The operator (either '==' or '!=') * @param array $aParams An array of additional parameters to be checked * @return boolean Whether this impression's region passes this limitation's test. */ function MAX_checkGeo_Region($limitation, $op, $aParams = array()) { if (empty($aParams)) { $aParams = $GLOBALS['_MAX']['CLIENT_GEO']; } if ($op != '=~' && $op != '!~') { // Provide backwards compatibility $op = '=~'; } $aLimitation = explode('|', $limitation); $sCountry = $aLimitation[0]; $sRegions = $aLimitation[1]; if ($aParams && $aParams['region'] && $aParams['country_code']) { return MAX_limitationsMatchStringValue($aParams['country_code'], $sCountry, '==') && MAX_limitationsMatchArrayValue($aParams['region'], $sRegions, $op); } else { return false; // Do not show the ad if user has no data about region and country. } }
/** * Check to see if this impression contains the valid day. * * @param string $limitation The day limitation * @param string $op The operator (either '==' or '!=') * @param array $aParams An array of additional parameters to be checked * @return boolean Whether this impression's day passes this limitation's test. */ function MAX_checkTime_Day($limitation, $op, $aParams = array()) { // Get timezone, if any $offset = strpos($limitation, '@'); if ($offset !== false) { $tz = substr($limitation, $offset + 1); $limitation = substr($limitation, 0, $offset); } else { $tz = false; } if ($limitation == '') { return true; } $timestamp = !empty($aParams['timestamp']) ? $aParams['timestamp'] : time(); if ($tz && $tz != 'UTC') { OA_setTimeZone($tz); $day = date('w', $timestamp); OA_setTimeZoneUTC(); } else { $day = gmdate('w', $timestamp); } return MAX_limitationsMatchArrayValue($day, $limitation, $op, $aParams); }
/** * An utility function which checks if the value in $aParams[$paramName] * matches the array limitations specified in $limitation and $op. * If $aParams is empty then $GLOBALS['_MAX'][$namespace] is used instead. * See {@link MAX_limitationsMatchArrayValue} for more details on * how matching is done. * * @param string $paramName * @param string $limitation * @param string $op * @param string $aParams * @param string $namespace * @return boolean True if the value matches the limitations, false otherwise. */ function MAX_limitationsMatchArray($paramName, $limitation, $op, $aParams = array(), $namespace = 'CLIENT') { if (empty($aParams)) { $aParams = $GLOBALS['_MAX'][$namespace]; } if ($limitation == '' || empty($aParams)) { return true; } return MAX_limitationsMatchArrayValue($aParams[$paramName], $limitation, $op); }