summaryrefslogtreecommitdiffstats
path: root/media.api.php
blob: ecde61b2490f162eb41c6b960d41b0e30bd78f67 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
<?php

/**
 * @file
 * Hooks provided by the Media module.
 */

/**
 * Parses a url or embedded code into a unique URI.
 *
 * @param string $url
 *   The original URL or embed code to parse.
 *
 * @return array
 *   The unique URI for the file, based on its stream wrapper, or NULL.
 *
 * @see hook_media_parse_alter()
 * @see media_parse_to_file()
 * @see media_add_from_url_validate()
 */
function hook_media_parse($url) {
  // Only parse URLs from our website of choice: examplevideo.com
  if (substr($url, 0, 27) == 'http://www.examplevideo.com') {
    // Each video has a 5 digit ID, i.e. http://www.examplevideo.com/12345
    // Grab the ID and use it in our URI.
    $id = substr($url, 28, 33);
    return file_stream_wrapper_uri_normalize('examplevideo://video/' . $id);
  }
}

/**
 * Alters the parsing of urls and embedded codes into unique URIs.
 *
 * @param string $success
 *   The unique URI for the file, based on its stream wrapper, or NULL.
 * @param array $context
 *   A nested array of contextual information containing the following keys:
 *   - url: The original URL or embed code to parse.
 *   - module: The name of the module which is attempting to parse the url or
 *     embedded code into a unique URI.
 *
 * @see hook_media_parse()
 * @see hook_media_browser_plugin_info()
 * @see media_get_browser_plugin_info()
 */
function hook_media_parse_alter(&$success, $context) {
  $url = $context['url'];
  $url_info = parse_url($url);

  // Restrict users to only embedding secure links.
  if ($url_info['scheme'] != 'https') {
    $success = NULL;
  }

  // Use a custom handler for detecting YouTube videos.
  if ($context['module' == 'media_youtube']) {
    $handler = new CustomYouTubeHandler($url);
    $success = $handler->parse($url);
  }
}

/**
 * Returns a list of plugins for the media browser.
 *
 * @return array
 *   A nested array of plugin information, keyed by plugin name. Each plugin
 *   info array may have the following keys:
 *   - title: (required) A name for the tab in the media browser.
 *   - class: (required) The class name of the handler. This class must
 *     implement a view() method, and may (should) extend the
 *     @link MediaBrowserPlugin MediaBrowserPlugin @endlink class.
 *   - weight: (optional) Integer to determine the tab order. Defaults to 0.
 *   - access callback: (optional) A callback for user access checks.
 *   - access arguments: (optional) An array of arguments for the user access
 *   check.
 *
 * Additional custom keys may be provided for use by the handler.
 *
 * @see hook_media_browser_plugin_info_alter()
 * @see media_get_browser_plugin_info()
 */
function hook_media_browser_plugin_info() {
  $info['media_upload'] = array(
    'title' => t('Upload'),
    'class' => 'MediaBrowserUpload',
    'weight' => -10,
    'access callback' => 'user_access',
    'access arguments' => array('create files'),
  );

  return $info;
}

/**
 * Alter the list of plugins for the media browser.
 *
 * @param array $info
 *   The associative array of media browser plugin definitions from
 *   hook_media_browser_plugin_info().
 *
 * @see hook_media_browser_plugin_info()
 * @see media_get_browser_plugin_info()
 */
function hook_media_browser_plugin_info_alter(&$info) {
  $info['media_upload']['title'] = t('Upload 2.0');
  $info['media_upload']['class'] = 'MediaBrowserUploadImproved';
}

/**
 * Alter the plugins before they are rendered.
 *
 * @param array $plugin_output
 *   The associative array of media browser plugin information from
 *   media_get_browser_plugin_info().
 *
 * @see hook_media_browser_plugin_info()
 * @see media_get_browser_plugin_info()
 */
function hook_media_browser_plugins_alter(&$plugin_output) {
  $plugin_output['upload']['form']['upload']['#title'] = t('Upload 2.0');
  $plugin_output['media_internet']['form']['embed_code']['#size'] = 100;
}

/**
 * Alter a singleton of the params passed to the media browser.
 *
 * @param array $stored_params
 *   An array of parameters provided when a media_browser is launched.
 *
 * @see media_browser()
 * @see media_set_browser_params()
 */
function hook_media_browser_params_alter(&$stored_params) {
  $stored_params['view_mode'] = 'custom';
  $stored_params['types'][] = 'document';
  unset($stored_params['enabledPlugins'][0]);
}