Drupal modules for browsing and managing Fedora-based digital repositories.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

102 lines
2.7 KiB

<?php
/**
* @file
* Contains islandora_videojs.module.
*
* This file is part of the Islandora Project.
*
* (c) Islandora Foundation
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
use Drupal\Core\Routing\RouteMatchInterface;
/**
* Implements hook_help().
*/
function islandora_videojs_help($route_name, RouteMatchInterface $route_match) {
switch ($route_name) {
// Main module help for the islandora module.
case 'help.page.islandora_videojs':
$output = '';
$output .= '<h3>' . t('About') . '</h3>';
$output .= '<p>' . t('Islandora Videojs overrides.') . '</p>';
$output .= '<p>' . t('Customizes videojs.') . '</p>';
return $output;
default:
}
}
function islandora_videojs_theme_registry_alter(&$theme_registry) {
$module_path = drupal_get_path('module', 'islandora_videojs');
// Use the templates in my module's template folder.
$theme_registry['videojs'] = $theme_registry['videojs'];
$theme_registry['videojs']['path'] = $module_path . '/templates';
$theme_registry['videojs']['template'] = 'videojs';
}
function islandora_videojs_theme($existing, $type, $theme, $path) {
$transcript_urls = get_transcript_urls();
return array(
'videojs' => array(
'variables' => array('items' => NULL, 'player_attributes' => NULL, 'mimes' => NULL, 'transcript_urls' => $transcript_urls),
'base hook' => 'videojs'
),
);
}
function get_transcript_urls() {
// Get the nid
$node = \Drupal::routeMatch()->getParameter('node');
$nid = NULL;
if ($node instanceof \Drupal\node\NodeInterface) {
$nid = $node->id();
}
$transcript_urls = array();
if ($nid != NULL) {
// media url
global $base_url;
$media_url = $base_url. '/node/' . $nid . '/media';
try {
$media_client = new \GuzzleHttp\Client();
$media_response = $media_client->request('GET', $media_url, [
'http_errors' => false,
'auth' => ['admin', 'islandora'],
'query' => ['_format' => 'json']
]);
$code = $media_response->getStatusCode();
if ($code = 200) {
// Loop through media to find the transcripts
$media_list = (string) $media_response->getBody();
$media_list = json_decode($media_list, true);
foreach ($media_list as $media) {
if ($media['field_media_use'][0]['url'] == "/taxonomy/term/20") {
$file_url = $media['field_media_file'][0]['url'];
$transcript_urls[] = $file_url;
}
}
}
}
catch (\Exception $e) {
\Drupal::logger('islandora_videojs')->notice("Error in getting transcripts: " . $e->getMessage());
}
}
return $transcript_urls;
}