/**
 * Verify the provided Flickr API key by calling Flickr's API
 *
 * @author Niall Kennedy
 * @since 0.1
 * @param string $api_key Flickr API key input into the settings field
 * @return string $api_key Flickr API key, or blank if validation failed
 */
function flickr_settings_api_key_field_sanitize($api_key)
{
    $api_key = trim($api_key);
    if (empty($api_key) || !ctype_alnum($api_key)) {
        return '';
    }
    if (!class_exists('FlickrRequest')) {
        require_once dirname(__FILE__) . '/class.flickr.php';
    }
    if (FlickrRequest::validate_api_key($api_key) === true) {
        return $api_key;
    } else {
        add_settings_error('flickr_api_key', 'flickr-api-key-invalid', __('Invalid Flickr API key: Flickr rejected the key.'));
        return '';
    }
}
 /**
  * Store multiple sizes available for the given photo identifier on Flickr
  *
  * @param FlickrRequest $request existing Flickr request if you would like to reuse
  * @return FlickrRequest Flickr request object for reuse
  */
 private function load_sizes($request = null)
 {
     if (is_null($request)) {
         $request = new FlickrRequest();
     }
     $sizes = $request->get_photo_sizes($this->id);
     if (is_wp_error($sizes) || empty($sizes)) {
         return $sizes;
     }
     if (isset($sizes->size)) {
         $sizes = $sizes->size;
     } else {
         return '';
     }
     $this->sizes = array();
     foreach ($sizes as $size) {
         if (isset($size->media) && $size->media === 'photo') {
             $this->sizes[absint($size->width)] = array('height' => absint($size->height), 'url' => esc_url_raw($size->source, array('http', 'https')));
         }
     }
     unset($sizes);
     return $request;
 }