/**
 * Check to see if this impression contains the valid domain.
 *
 * @param string $limitation The domain limitation.
 * @param string $op The string operator.
 * @param array $aParams An array of additional parameters to be checked.
 * @return boolean Whether this impression's domain passes this limitation's test.
 */
function MAX_checkClient_Domain($limitation, $op, $aParams = array())
{
    if (empty($aParams)) {
        $aParams = $GLOBALS['_MAX']['CLIENT'];
    }
    if ($limitation == '') {
        return true;
    }
    $host = $_SERVER['REMOTE_HOST'];
    if (MAX_limitationsIsOperatorRegexp($op)) {
        $domain = $host;
    } else {
        $domain = substr($host, -strlen($limitation));
    }
    return MAX_limitationsMatchStringValue($domain, $limitation, $op);
}
/**
 * Returns an array with downgraded format of operator and data
 * for string-based delivery limitations.
 * The old operator is stored in ['op'] field,
 * the data in ['data'] field.
 *
 * @param string $op A new operator.
 * @param string $sData A new data specification.
 * @return array An array which contains an old operator in the ['op'] field
 * and an old data in ['data'] field.
 */
function MAX_limitationsGetADowngradeForString($op, $sData)
{
    $aResult['op'] = MAX_limitationsIsOperatorPositive($op) ? '==' : '!=';
    if (MAX_limitationsIsOperatorRegexp($op)) {
        if (substr($sData, 0, 1) == '^') {
            $sData = substr($sData, 1);
        }
        if (substr($sData, strlen($sData) - 1) == '$') {
            $sData = substr($sData, 0, strlen($sData) - 1);
        }
        $sData = str_replace('.*', '*', $sData);
        $sData = str_replace('\\(', '(', $sData);
        $sData = str_replace('\\)', ')', $sData);
        $sData = str_replace('\\.', '.', $sData);
        $aResult['data'] = $sData;
    } elseif (MAX_limitationsIsOperatorContains($op)) {
        $aResult['data'] = "*{$sData}*";
    } else {
        $aResult['data'] = $sData;
    }
    return $aResult;
}