--- keys_api.module Thu Jun 22 02:12:08 2008 +++ keys_api.module Thu Jan 29 20:30:00 2009 @@ -170,13 +170,26 @@ * @return * The API Key. */ -function keys_api_get_key($service, $domain) { - $result = db_result(db_query("SELECT api_key FROM {keys_manage} WHERE domain_name = '%s' AND service = '%s'", $domain, $service)); - $key = $result; - if ($key == NULL) { - drupal_set_message(t("Key for '$service' @ '$domain' doesn't exist. Go here to manage keys."),'error'); +function keys_api_get_key($service, $domain = NULL) { + if (!isset($domain)) { + $domain = ($_SERVER['SERVER_ADDR'] == '127.0.0.1') ? 'localhost' : $_SERVER['HTTP_HOST']; } - return $key; + + if ($key = db_result(db_query("SELECT api_key FROM {keys_manage} WHERE service = '%s' AND domain_name = '%s'", $service, $domain))) { + return $key; + } + + $domain = '.' . implode('.', array_slice(explode('.', $_SERVER['HTTP_HOST']), -2, 2)); + if ($key = db_result(db_query("SELECT api_key FROM {keys_manage} WHERE service = '%s' AND domain_name = '%s'", $service, $domain))) { + return $key; + } + + drupal_set_message(t('Key for %service on %domain does not exist. !keys', array( + '%service' => $service, + '%domain' => $domain, + '!keys' => user_access('administer keys') ? l(t('Edit keys'), 'admin/settings/keys') : '', + )), 'error'); + return; } /**