/[drupal]/contributions/modules/moviedb/mdb_movie.inc
ViewVC logotype

Contents of /contributions/modules/moviedb/mdb_movie.inc

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.3 - (show annotations) (download) (as text)
Mon Feb 23 20:51:19 2009 UTC (9 months ago) by ultimatedruid
Branch: MAIN
CVS Tags: HEAD
Branch point for: DRUPAL-6--1
Changes since 1.2: +83 -66 lines
File MIME type: text/x-php
no message
1 <?php
2 // $Id$
3
4 /**
5 * @file
6 * Control the Movie page output
7 */
8
9
10 /**
11 * Implementation of hook_access().
12 *
13 */
14 function mdb_movie_access($op, $node) {
15
16 global $user;
17
18 if ($op == 'view' && user_access('view movies')) {
19 return $node->status;
20 }
21
22 if ($op == 'create') {
23 return user_access('create movies');
24 }
25
26 if ($op == 'update' || $op == 'delete') {
27 if (user_access('edit own movies') && ($user->uid == $node->uid)) {
28 return TRUE;
29 }
30 }
31 }
32
33 /**
34 * Implementation of hook_insert().
35 */
36 function mdb_movie_insert($node) {
37
38 //Insert the data in the moviedb table
39 db_query("INSERT INTO {moviedb} (nid, movietitle, releaseyear, cover, runtime, country, language, imdb, amazon ) VALUES (%d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')", $node->nid, $node->title, $node->releaseyear, $node->cover, $node->runtime, $node->country, $node->language, $node->imdb, $node->amazon);
40
41 //Add the actors
42 moviedb_people_process($node->nid, $node->actors_form, 'actors');
43
44 //Add the directors
45 moviedb_people_process($node->nid, $node->directors_form, 'directors');
46
47 //Add the writers
48 moviedb_people_process($node->nid, $node->writers_form, 'writers');
49
50 //Add the producers
51 moviedb_people_process($node->nid, $node->producers_form, 'producers');
52
53
54 for ($i = 0; $i < $node->numlinks; $i++) {
55 $movielink = "movielink-$i";
56 $linkdescription = "linkdescription-$i";
57 if ($node->$movielink) {
58 db_query("INSERT INTO {moviedb_links} (nid, movielink, description, weight) VALUES (%d, '%s', '%s', %d)", $node->nid, $node->$movielink, $node->$linkdescription, $i);
59 }
60 }
61
62 }
63
64 /**
65 * Implementation of hook_load().
66 *
67 */
68 function mdb_movie_load($node) {
69 $moviedb = db_fetch_object(db_query("SELECT '%s' {moviedb} WHERE nid = '$node->nid'"));
70
71 $actors = moviedb_people_load($node->nid, 'actors');
72 $moviedb->actors = $actors['object'];
73 $moviedb->actors_form = $actors['form'];
74
75 $directors = moviedb_people_load($node->nid, 'directors');
76 $moviedb->directors = $directors['object'];
77 $moviedb->directors_form = $directors['form'];
78
79 $writers = moviedb_people_load($node->nid, 'writers');
80 $moviedb->writers = $writers['object'];
81 $moviedb->writers_form = $writers['form'];
82
83 $producers = moviedb_people_load($node->nid, 'producers');
84 $moviedb->producers = $producers['object'];
85 $moviedb->producers_form = $producers['form'];
86
87 if (module_exists('taxonomy') && ($vid = variable_get('moviedb_genre_vocab', 0)) != 0) {
88 $terms = taxonomy_node_get_terms_by_vocabulary($node->nid, $vid);
89 }
90 if ($terms) {
91 $moviedb->genre = $terms;
92 }
93
94
95
96 $movielinks = db_query("SELECT movielink, description, weight FROM {moviedb_links} WHERE nid = '%s' ORDER BY weight", '$node->nid');
97 while ($movielink = db_fetch_object($movielinks)) {
98 $moviedb->movielinks[$movielink->weight] = $movielink->movielink;
99 $moviedb->linkdescriptions[$movielink->weight] = $movielink->description;
100 }
101 $moviedb->numlinks = count($moviedb->movielinks);
102
103 return $moviedb;
104 }
105
106 /**
107 * Implementation of hook_update().
108 *
109 */
110 function mdb_movie_update($node) {
111
112 //Update the moviedb table
113 db_query("UPDATE {moviedb} SET movietitle = '%s', releaseyear = '%s', cover = '%s', runtime = '%s', country = '%s', language = '%s', imdb = '%s', amazon = '%s' WHERE nid = %d", $node->title, $node->releaseyear, $node->cover, $node->runtime, $node->country, $node->language, $node->imdb, $node->amazon, $node->nid);
114
115
116 //Delete all the records from the actor links table
117 db_query("DELETE FROM {moviedb_actors} WHERE mid = %d", $node->nid);
118 //Add the actors
119 moviedb_people_process($node->nid, $node->actors_form, 'actors');
120
121
122 //Delete all the records from the directors links table
123 db_query("DELETE FROM {moviedb_directors} WHERE mid = %d", $node->nid);
124 //Add the directors
125 moviedb_people_process($node->nid, $node->directors_form, 'directors');
126
127 //Delete all the records from the writers links table
128 db_query("DELETE FROM {moviedb_writers} WHERE mid = %d", $node->nid);
129 //Add the writers
130 moviedb_people_process($node->nid, $node->writers_form, 'writers');
131
132 //Delete all the records from the producers links table
133 db_query("DELETE FROM {moviedb_producers} WHERE mid = %d", $node->nid);
134 //Add the producers
135 moviedb_people_process($node->nid, $node->producers_form, 'producers');
136
137
138 db_query("DELETE FROM {moviedb_links} WHERE nid = %d", $node->nid);
139 for ($i = 0; $i < $node->numlinks; $i++) {
140 $movielink = "movielink-$i";
141 $linkdescription = "linkdescription-$i";
142 if ($node->$movielink) {
143 db_query("INSERT INTO {moviedb_links} (nid, movielink, description, weight) VALUES (%d, '%s', '%s', %d)", $node->nid, $node->$movielink, $node->$linkdescription, $i);
144 }
145 }
146
147 }
148
149 /**
150 * Implementation of hook_delete().
151 *
152 */
153 function mdb_movie_delete($node) {
154 db_query("DELETE FROM {moviedb} WHERE nid = %d", $node->nid);
155 db_query("DELETE FROM {moviedb_actors} WHERE mid = %d", $node->nid);
156 db_query("DELETE FROM {moviedb_directors} WHERE mid = %d", $node->nid);
157 db_query("DELETE FROM {moviedb_writers} WHERE mid = %d", $node->nid);
158 db_query("DELETE FROM {moviedb_producers} WHERE mid = %d", $node->nid);
159 db_query("DELETE FROM {moviedb_links} WHERE nid = %d", $node->nid);
160 }
161
162 /**
163 * Implementation of hook_submit().
164 *
165 */
166 function mdb_movie_submit(&$node) {
167 }
168
169 /**
170 * Implementation of validate().
171 *
172 */
173 function mdb_movie_validate(&$node) {
174 }
175
176 /**
177 * Implementation of hook_form().
178 *
179 */
180 function mdb_movie_form(&$node) {
181
182 if ($node->movielinks) {
183 $node->numlinks = count($node->movielinks);
184 }
185 else {
186 $node->numlinks = 3;
187 }
188
189 drupal_add_js('
190 var offlinks = '. $node->numlinks .';
191 function mdb_add_offsite() {
192 numlinks = offlinks;
193 speed = "slow";
194 var linkcode;
195
196 linkcode = "<tr><td><div class=\"form-item\"><label for=\"edit-movielink-"+numlinks+"\">URL: </label><input type=\"text\" maxlength=\"255\" name=\"movielink-"+numlinks+"\" id=\"edit-movielink-"+numlinks+"\" size=\"45\" class=\"form-text\" /></div></td><td><div class=\"form-item\"><label for=\"edit-linkdescription-"+numlinks+"\">Description: </label><input type=\"text\" maxlength=\"255\" name=\"linkdescription-"+numlinks+"\" id=\"edit-linkdescription-"+numlinks+"\" size=\"45\" class=\"form-text\" /></div></td></tr>";
197
198 $("#offsite-links").append(linkcode);
199 offlinks++;
200 }
201 ', 'inline');
202
203 $form['numlinks'] = array(
204 '#type' => 'hidden',
205 '#value' => $node->numlinks,
206 );
207
208 $form['title'] = array(
209 '#type' => 'textfield',
210 '#title' => t('Title'),
211 '#default_value' => $node->title,
212 '#size' => 60,
213 '#maxlength' => 255,
214 '#description' => t('The title of the movie being reviewed.'),
215 );
216
217
218 $form['general'] = array(
219 '#type' => 'fieldset',
220 '#title' => t('General Info'),
221 '#collapsible' => TRUE,
222 '#weight' => 0,
223
224 );
225
226
227 $form['general']['releaseyear'] = array(
228 '#type' => 'textfield',
229 '#title' => t('Release year'),
230 '#default_value' => $node->releaseyear,
231 '#size' => 4,
232 '#maxlength' => 255,
233 '#description' => t('The year the movie was released. (Format: YYYY).'),
234 );
235
236
237
238
239
240 $form['general']['cover'] = array(
241 '#type' => 'textfield',
242 '#title' => t('Cover picture'),
243 '#default_value' => $node->cover,
244 '#size' => 60,
245 '#maxlength' => 255,
246 '#description' => t('URL of movie cover image.'),
247 );
248
249
250 $form['general']['runtime'] = array(
251 '#type' => 'textfield',
252 '#title' => t('Runtime'),
253 '#default_value' => $node->runtime,
254 '#size' => 60,
255 '#maxlength' => 255,
256 '#description' => t('The movie run time.'),
257 );
258
259 $form['general']['country'] = array(
260 '#type' => 'textfield',
261 '#title' => t('Country'),
262 '#default_value' => $node->country,
263 '#size' => 60,
264 '#maxlength' => 255,
265 '#description' => t('Country of movie production.'),
266 );
267
268 $form['general']['language'] = array(
269 '#type' => 'textfield',
270 '#title' => t('Language'),
271 '#default_value' => $node->language,
272 '#size' => 60,
273 '#maxlength' => 255,
274 '#description' => t('Language of the movie.'),
275 );
276
277 $form['general']['body'] = array(
278 '#type' => 'textarea',
279 '#title' => t('Synopsis'),
280 '#default_value' => $node->body,
281 '#cols' => 50,
282 '#rows' => 6,
283 '#description' => t('A synopsis of the movie being reviewed.'),
284 );
285
286 $form['people'] = array(
287 '#type' => 'fieldset',
288 '#title' => t('People'),
289 '#collapsible' => TRUE,
290 '#weight' => 2,
291
292 );
293
294 $form['people']['actors_form'] = array(
295 '#type' => 'textarea',
296 '#title' => t('Actors'),
297 '#default_value' => $node->actors_form,
298 '#description' => t('Enter the name of the actors. Comma separated. eg: Mel Gibson, Tom Cruise'),
299 '#cols' => 50,
300 '#rows' => 4,
301 '#weight' => 0,
302 );
303
304 $form['people']['directors_form'] = array(
305 '#type' => 'textfield',
306 '#title' => t('Director'),
307 '#default_value' => $node->directors_form,
308 '#size' => 60,
309 '#description' => t('Director(s) of the movie. Comma separated.'),
310 '#weight' => 4,
311 '#autocomplete_path' => 'moviedb/person/autocomplete',
312 );
313
314 $form['people']['writers_form'] = array(
315 '#type' => 'textfield',
316 '#title' => t('Writers'),
317 '#default_value' => $node->writers_form,
318 '#size' => 60,
319 '#description' => t('Writers of the movie. Comma separated.'),
320 '#weight' => 6,
321 '#autocomplete_path' => 'moviedb/person/autocomplete',
322 );
323
324 $form['people']['producers_form'] = array(
325 '#type' => 'textfield',
326 '#title' => t('Producers'),
327 '#default_value' => $node->producers_form,
328 '#size' => 60,
329 '#description' => t('Producers of the movie. Comma separated.'),
330 '#weight' => 8,
331 '#autocomplete_path' => 'moviedb/person/autocomplete',
332 );
333
334
335
336 $form['links'] = array(
337 '#type' => 'fieldset',
338 '#title' => t('Links'),
339 '#collapsible' => TRUE,
340 '#weight' => 5,
341
342 );
343
344 $form['links']['imdb'] = array(
345 '#type' => 'textfield',
346 '#title' => t('Imdb'),
347 '#default_value' => $node->imdb,
348 '#size' => 60,
349 '#maxlength' => 255,
350 '#description' => t('Imdb id of the movie'),
351 );
352
353 $form['links']['amazon'] = array(
354 '#type' => 'textfield',
355 '#title' => t('Amazon'),
356 '#default_value' => $node->amazon,
357 '#size' => 60,
358 '#maxlength' => 255,
359 '#description' => t('Amazon ASIN of the movie'),
360 );
361
362
363 $form['links']['offsite_links'] = array(
364 '#type' => 'fieldset',
365 '#title' => t('Offsite links'),
366 '#collapsible' => TRUE,
367 '#collapsed' => TRUE,
368 );
369
370 $form['links']['offsite_links']['movielinks_begin'] = array(
371 '#type' => 'markup',
372 '#value' => '<table id="offsite-links">',
373 );
374 for ($i = 0; $i < $node->numlinks; $i++) {
375 $form['links']['offsite_links']["movielink-$i"] = array(
376 '#type' => 'textfield',
377 '#title' => 'URL',
378 '#default_value' => $node->movielinks[$i],
379 '#size' => 45,
380 '#maxlength' => 255,
381 '#description' => '',
382 '#prefix' => '<tr><td>',
383 '#suffix' => '</td>',
384 );
385 $form['links']['offsite_links']["linkdescription-$i"] = array(
386 '#type' => 'textfield',
387 '#title' => 'Description',
388 '#default_value' => $node->linkdescriptions[$i],
389 '#size' => 45,
390 '#maxlength' => 255,
391 '#description' => '',
392 '#prefix' => '<td>',
393 '#suffix' => '</td></tr>',
394 );
395 }
396 $form['links']['offsite_links']['movielinks_end'] = array(
397 '#type' => 'markup',
398 '#value' => '</table>',
399 );
400
401 $form['links']['offsite_links']['mdb_movie_more_links'] = array(
402 '#type' => 'button',
403 '#button_type' => 'offsite_but',
404 '#name' => 'add_offsite',
405 '#submit' => FALSE,
406 '#value' => t('add more links'),
407 '#attributes' => array('onclick' => 'mdb_add_offsite();return false;'),
408 );
409
410 $form['format'] = filter_form($node->format, 8);
411
412 return $form;
413
414 }
415
416 /**
417 * Implementation of hook_view().
418 *
419 */
420 function mdb_movie_view(&$node, $teaser = FALSE, $page = FALSE) {
421 $node = node_prepare($node, $teaser);
422
423 $node->content['data'] = array(
424 '#value' => theme('mdb_movie', $node),
425 '#weight' => 0, );
426 $node->content['body']['#value'] = '';
427
428 return $node;
429 }

  ViewVC Help
Powered by ViewVC 1.1.2