You are here

media_flickr.module in Media: Flickr 7.2

Same filename and directory in other branches
  1. 6 media_flickr.module
  2. 7 media_flickr.module

Provides a stream wrapper and formatters appropriate for accessing and displaying Flickr images.

File

media_flickr.module
View source
<?php

/**
 * @file
 * Provides a stream wrapper and formatters appropriate for accessing and
 * displaying Flickr images.
 */
define('MEDIA_FLICKR_RESTPOINT', 'https://api.flickr.com/services/rest/');
define('MEDIA_FLICKR_API_APPLICATION_URL', 'https://www.flickr.com/services/api/keys');

// Load all Flickr file formatters.
require_once dirname(__FILE__) . '/includes/media_flickr.formatters.inc';

/**
 * Implements hook_media_internet_providers().
 */
function media_flickr_media_internet_providers() {
  return array(
    'MediaInternetFlickrHandler' => array(
      'title' => t('Flickr'),
    ),
  );
}

/**
 * Implements hook_stream_wrappers().
 */
function media_flickr_stream_wrappers() {
  return array(
    'flickr' => array(
      'name' => t('Flickr photos'),
      'class' => 'MediaFlickrStreamWrapper',
      'description' => t('Remote images hosted on the Flickr photo-sharing website.'),
      'type' => STREAM_WRAPPERS_READ_VISIBLE,
    ),
  );
}

/**
 * Implements hook_permission().
 */
function media_flickr_permission() {
  return array(
    'configure flickr' => array(
      'title' => t('Configure Media: Flickr settings'),
    ),
  );
}

/**
 * Implement hook_menu().
 */
function media_flickr_menu() {
  $items = array();
  $items['admin/config/media/media-flickr'] = array(
    'title' => 'Flickr settings',
    'description' => 'Configuration settings for Media: Flickr.',
    'page callback' => 'drupal_get_form',
    'page arguments' => array(
      'media_flickr_settings_form',
    ),
    'access arguments' => array(
      'configure flickr',
    ),
    'file' => 'includes/media_flickr.admin.inc',
  );
  return $items;
}

/**
 * Implements hook_help().
 */
function media_flickr_help($path, $arg) {
  if ($path === 'admin/config/media/media-flickr') {
    return '<p>' . t('In order to add and display images from Flickr you first need to apply for an API Developer Key from the <a href="@flickr" target="_blank">Flickr Developer Profile page</a>.', array(
      '@flickr' => MEDIA_FLICKR_API_APPLICATION_URL,
    )) . '</p>';
  }
  return '';
}

/**
 *  Implements hook_theme().
 */
function media_flickr_theme($existing, $type, $theme, $path) {
  return array(
    'media_flickr_preview_style' => array(
      'variables' => array(
        'field_type' => NULL,
        'container_name' => NULL,
        'style_name' => NULL,
      ),
      'file' => 'media_flickr.theme.inc',
      'path' => $path . '/themes',
    ),
    'media_flickr_field_formatter_styles' => array(
      'variables' => array(
        'element' => NULL,
        'style' => NULL,
      ),
      'file' => 'media_flickr.theme.inc',
      'path' => $path . '/themes',
    ),
    'media_flickr_embed' => array(
      'variables' => array(
        'style_name' => NULL,
        'uri' => NULL,
        'alt' => NULL,
        'title' => NULL,
      ),
      'file' => 'media_flickr.theme.inc',
      'path' => $path . '/themes',
    ),
    'media_flickr_styles' => array(
      'variables' => array(
        'element' => NULL,
        'style' => NULL,
      ),
      'file' => 'media_flickr.theme.inc',
      'path' => $path . '/themes',
    ),
    'media_flickr_photoset' => array(
      'variables' => array(
        'uri' => NULL,
        'width' => NULL,
        'height' => NULL,
      ),
      'file' => 'media_flickr.theme.inc',
      'path' => $path . '/themes',
      'template' => 'media-flickr-photoset',
    ),
  );
}

/**
 * Implements hook_media_parse().
 *
 * @return string
 *   The unique URI based on its stream wrapper, or NULL.
 */
function media_flickr_media_parse($url) {
  module_load_include('inc', 'media_flickr', 'includes/media_flickr.utilities');
  return _media_flickr_media_parse($url);
}

/**
 * Implements hook_file_mimetype_mapping_alter().
 */
function media_flickr_file_mimetype_mapping_alter(&$mapping) {
  $mapping['mimetypes'][] = 'image/flickr';
}

/**
 *  Determine if a stream belongs to Media: Flickr.
 *
 * @param $variables
 */
function media_flickr_formatter_filter($variables) {
  if (!isset($variables['object'])) {
    return FALSE;
  }
  $object = $variables['object'];
  return file_uri_scheme($object->uri) === 'flickr';
}

/**
 *  Based on the Photo ID of a Flickr image, this will return the URL to the
 *  image itself.
 *
 *  @param $photo_code
 *    The Flickr photo code.
 *  @param $width
 *  @param $height
 *    We use this to guess the actual size provided by Flickr.
 *  @param boolean $refresh
 *    Optional; if TRUE, then we'll force a new load of the XML. Otherwise,
 *    a cached version will be retrieved if possible.
 */
function media_flickr_image_url($photo_code, $width = 0, $height = 0, $refresh = FALSE) {
  module_load_include('inc', 'media_flickr', 'includes/media_flickr.utilities');
  return _media_flickr_photo_url($photo_code, $width, $height, $refresh);
}
function media_flickr_photoset_photo_id($uri, $refresh = FALSE) {
  module_load_include('inc', 'media_flickr', 'includes/media_flickr.utilities');
  return _media_flickr_photoset_photo_id($uri, $refresh);
}
function media_flickr_photoset_image_url($uri, $width = 0, $height = 0, $refresh = FALSE) {
  module_load_include('inc', 'media_flickr', 'includes/media_flickr.utilities');
  return _media_flickr_photoset_image_url($uri, $width, $height, $refresh);
}
function media_flickr_original_url($uri, $refresh = FALSE) {
  module_load_include('inc', 'media_flickr', 'includes/media_flickr.utilities');
  return _media_flickr_original_url($uri, $refresh);
}

Functions

Constants

Namesort descending Description
MEDIA_FLICKR_API_APPLICATION_URL
MEDIA_FLICKR_RESTPOINT @file Provides a stream wrapper and formatters appropriate for accessing and displaying Flickr images.