forked from DGI-USC/usc_mirc
-
Notifications
You must be signed in to change notification settings - Fork 0
/
usc_mirc.autocomplete.inc
59 lines (51 loc) · 1.63 KB
/
usc_mirc.autocomplete.inc
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
<?php
/**
* array_filter callback to find filenames which (should) represent a video file.
*/
function _usc_mirc_is_video_filename($filename) {
static $exts = NULL;
if (empty($exts)) {
$exts = explode(
' ',
variable_get(
'usc_mirc_streaming_extensions',
'.m4v .mp4 .flv .mov'
)
);
}
return in_array(substr($filename, -4), $exts);
}
/**
* Get an array of all the files in this directory (including subdirectories
* if $recurse is TRUE).
* XXX: This could be made a great deal more efficient in the case of a deep hierarchy, but anyway.
*/
function _usc_mirc_traverse_directory($url_base, $filesystem_base, $string, $sub_dir = '.', $recurse = TRUE) {
$videos = array();
$dir_name = "$filesystem_base/$sub_dir";
if ($sub_dir === '.') {
$dir_name = $filesystem_base;
}
if (is_dir($dir_name)) {
$dir = dir($dir_name);
while ($entry = $dir->read()) {
if (in_array($entry, array('.', '..'))) {
continue;
}
else {
$this_entry = "$sub_dir/$entry";
if ($sub_dir === '.') {
$this_entry = $entry;
}
if ($recurse && is_dir("$filesystem_base/$this_entry")) {
$videos = array_merge($videos, _usc_mirc_traverse_directory($url_base, $filesystem_base, $string, $this_entry, $recurse));
}
elseif ($string === '*' || strpos($entry, $string) === 0) { //XXX: Should probably get rid of the wildcard.
$videos["$url_base/$this_entry"] = $entry;
}
}
}
$dir->close();
}
return $videos;
}