1 | <?php |
---|
2 | /** |
---|
3 | * View MythVideo files |
---|
4 | * |
---|
5 | * @url $URL$ |
---|
6 | * @date $Date: 2006-01-25 21:45:37 -0500 (Wed, 25 Jan 2006) $ |
---|
7 | * @version $Revision: 8727 $ |
---|
8 | * @author $Author: xris $ |
---|
9 | * |
---|
10 | * @package MythWeb |
---|
11 | * @subpackage Video |
---|
12 | * |
---|
13 | /**/ |
---|
14 | |
---|
15 | /** |
---|
16 | * This points to the local filesystem path where MythVideo has been told to |
---|
17 | * look for videos. |
---|
18 | * |
---|
19 | * @global string $GLOBALS['mythvideo_dir'] |
---|
20 | * @name $mythvideo_dir |
---|
21 | /**/ |
---|
22 | global $mythvideo_dir; |
---|
23 | $mythvideo_dir = $db->query_col('SELECT data |
---|
24 | FROM settings |
---|
25 | WHERE value="VideoStartupDir" AND hostname=?', |
---|
26 | hostname |
---|
27 | ); |
---|
28 | |
---|
29 | // Make sure the video directory exists |
---|
30 | if (file_exists('data/video')) { |
---|
31 | // File is not a directory or a symlink |
---|
32 | if (!is_dir('data/video') && !is_link('data/video')) { |
---|
33 | $Error = 'An invalid file exists at data/video. Please remove it in' |
---|
34 | .' order to use the video portions of MythWeb.'; |
---|
35 | require_once 'templates/_error.php'; |
---|
36 | } |
---|
37 | } |
---|
38 | // Create the symlink, if possible. |
---|
39 | // |
---|
40 | // NOTE: Errors have been disabled because if I turn them on, people hosting |
---|
41 | // MythWeb on Windows machines will have issues. I will turn the errors |
---|
42 | // back on when I find a clean way to do so. |
---|
43 | // |
---|
44 | else { |
---|
45 | if ($mythvideo_dir) { |
---|
46 | $ret = @symlink($mythvideo_dir, 'data/video'); |
---|
47 | if (!$ret) { |
---|
48 | #$Error = "Could not create a symlink to $mythvideo_dir, the local MythVideo" |
---|
49 | # .' directory for this hostname ('.hostname.'). Please create a |
---|
50 | # .' symlink to your MythVideo directory at data/video in order to |
---|
51 | # .' use the video portions of MythWeb.'; |
---|
52 | #require_once 'templates/_error.php'; |
---|
53 | } |
---|
54 | } |
---|
55 | else { |
---|
56 | #$Error = 'Could not find a value in the database for the MythVideo directory' |
---|
57 | # .' for this hostname ('.hostname.'). Please create a symlink to your' |
---|
58 | # .' MythVideo directory at data/video in order to use the video' |
---|
59 | # .' portions of MythWeb.'; |
---|
60 | #require_once 'templates/_error.php'; |
---|
61 | } |
---|
62 | } |
---|
63 | |
---|
64 | // Editing? |
---|
65 | if ($Path[1] == 'edit') { |
---|
66 | require_once 'modules/video/edit.php'; |
---|
67 | exit; |
---|
68 | } |
---|
69 | |
---|
70 | // Load the sorting routines |
---|
71 | require_once "includes/sorting.php"; |
---|
72 | |
---|
73 | // Queries for a specific program title |
---|
74 | isset($_GET['title']) or $_GET['title'] = $_POST['title']; |
---|
75 | |
---|
76 | // Get the video categories on the system |
---|
77 | $Category_String = array(); |
---|
78 | $Total_Categories = 0; |
---|
79 | $sh = $db->query('SELECT * FROM videocategory'); |
---|
80 | while ($row = $sh->fetch_assoc()) { |
---|
81 | $Category_String[$row['intid']] = $row['category']; |
---|
82 | $Total_Categories++; |
---|
83 | } |
---|
84 | $sh->finish(); |
---|
85 | $Category_String[0] = 'Uncategorized'; |
---|
86 | |
---|
87 | // ADDED |
---|
88 | // Get the video genres on the system |
---|
89 | $Genre_String = array(); |
---|
90 | $Total_Genres = 0; |
---|
91 | $sh = $db->query('SELECT * FROM videogenre'); |
---|
92 | while ($row = $sh->fetch_assoc()) { |
---|
93 | $Genre_String[$row['intid']] = $row['genre']; |
---|
94 | $Total_Genres++; |
---|
95 | } |
---|
96 | $sh->finish(); |
---|
97 | $Genre_String[0] = 'No Genre'; |
---|
98 | |
---|
99 | // Parse the list |
---|
100 | // Filter_Category of -1 means All, 0 mean uncategorized |
---|
101 | $Total_Programs = 0; |
---|
102 | $All_Shows = array(); |
---|
103 | if( isset($_GET['category']) ) { |
---|
104 | $Filter_Category = $_GET['category']; |
---|
105 | if( $Filter_Category != -1) |
---|
106 | $where = ' AND category='.$db->escape($Filter_Category); |
---|
107 | } else { |
---|
108 | $Filter_Category = -1; |
---|
109 | } |
---|
110 | |
---|
111 | if( isset($_GET['genre']) ) { |
---|
112 | $Filter_Genre = $_GET['genre']; |
---|
113 | if( $Filter_Genre != -1) |
---|
114 | $where .= ' AND idgenre='.$db->escape($Filter_Genre); |
---|
115 | } |
---|
116 | else { |
---|
117 | $Filter_Genre = -1; |
---|
118 | } |
---|
119 | |
---|
120 | if( isset($_GET['browse']) ) { |
---|
121 | $Filter_Browse = $_GET['browse']; |
---|
122 | if( $Filter_Browse != -1) |
---|
123 | $where .= ' AND browse='.$db->escape($Filter_Browse); |
---|
124 | } |
---|
125 | else { |
---|
126 | $Filter_Browse = -1; |
---|
127 | } |
---|
128 | |
---|
129 | if( isset($_GET['search']) ) { |
---|
130 | $Filter_Search = $_GET['search']; |
---|
131 | if( strlen($Filter_Search) != 0) |
---|
132 | $where .= ' AND title LIKE '.$db->escape("%".$Filter_Search."%"); |
---|
133 | } |
---|
134 | else { |
---|
135 | $Filter_Search = ""; |
---|
136 | } |
---|
137 | |
---|
138 | if ($where) { $where = 'WHERE '.substr($where, 4); } |
---|
139 | |
---|
140 | #$sh = $db->query('SELECT * FROM videometadata ' . $where . ' ORDER BY title'); |
---|
141 | $sql = 'SELECT * FROM videometadata LEFT JOIN videometadatagenre ON videometadata.intid=videometadatagenre.idvideo ' . $where . ' GROUP BY intid ORDER BY title'; |
---|
142 | $sh = $db->query($sql); |
---|
143 | |
---|
144 | while ($row = $sh->fetch_assoc()) { |
---|
145 | // Create a new show object |
---|
146 | $All_Shows[] = new Video($row); |
---|
147 | } |
---|
148 | $sh->finish(); |
---|
149 | |
---|
150 | // Set sorting |
---|
151 | if (!is_array($_SESSION['video_sortby'])) |
---|
152 | $_SESSION['video_sortby'] = array(array('field' => 'title', |
---|
153 | 'reverse' => false)); |
---|
154 | |
---|
155 | // Sort the programs |
---|
156 | if (count($All_Shows)) |
---|
157 | sort_programs($All_Shows, 'video_sortby'); |
---|
158 | |
---|
159 | // Load the class for this page |
---|
160 | require_once theme_dir.'video/video.php'; |
---|
161 | |
---|
162 | // Exit |
---|
163 | exit; |
---|
164 | |
---|
165 | |
---|
166 | |
---|
167 | class Video { |
---|
168 | |
---|
169 | var $intid; |
---|
170 | var $plot; |
---|
171 | var $category; |
---|
172 | var $rating; // this should be a reference to the $Channel array value |
---|
173 | |
---|
174 | var $title; |
---|
175 | var $director; |
---|
176 | var $inetref; |
---|
177 | var $year; |
---|
178 | var $userrating; |
---|
179 | var $length; // css class, based on category and/or category_type |
---|
180 | var $showlevel; |
---|
181 | var $filename; |
---|
182 | var $coverfile; |
---|
183 | var $childid; |
---|
184 | var $url; |
---|
185 | |
---|
186 | function Video($program_data) { |
---|
187 | global $mythvideo_dir; |
---|
188 | $this->intid = $program_data['intid']; |
---|
189 | $this->plot = $program_data['plot']; |
---|
190 | $this->category = $program_data['category']; |
---|
191 | $this->rating = $program_data['rating']; |
---|
192 | $this->title = $program_data['title']; |
---|
193 | $this->director = $program_data['director']; |
---|
194 | $this->inetref = $program_data['inetref']; |
---|
195 | $this->year = $program_data['year'] ? $program_data['year'] : 'Unknown'; |
---|
196 | $this->userrating = $program_data['userrating'] ? $program_data['userrating'] : 'Unknown'; |
---|
197 | $this->length = $program_data['length']; |
---|
198 | $this->showlevel = $program_data['showlevel']; |
---|
199 | $this->filename = $program_data['filename']; |
---|
200 | $this->coverfile = $program_data['coverfile']; |
---|
201 | $this->childid = $program_data['childid']; |
---|
202 | // Figure out the URL |
---|
203 | $this->url = '#'; |
---|
204 | if (file_exists('data/video/')) { |
---|
205 | $this->url = root . implode('/', array_map('rawurlencode', |
---|
206 | array_map('utf8tolocal', |
---|
207 | explode('/', |
---|
208 | 'data/video/' . preg_replace('#^'.$mythvideo_dir.'/?#', '', $this->filename) |
---|
209 | )))); |
---|
210 | } |
---|
211 | } |
---|
212 | } |
---|
213 | |
---|