franck@7
|
1 <?php |
franck@7
|
2 // $Id$ |
franck@7
|
3 /** |
franck@7
|
4 * @file |
franck@7
|
5 * Contains form handlers for the DailyMotion search form. |
franck@7
|
6 */ |
franck@7
|
7 |
franck@7
|
8 /** |
franck@7
|
9 * Generates the search and search results form. |
franck@7
|
10 */ |
franck@7
|
11 function scald_dailymotion_search_form($form_state) { |
franck@7
|
12 $terms = $form_state['storage']['terms']; |
franck@7
|
13 $form = array(); |
franck@7
|
14 $form['search'] = array( |
franck@7
|
15 '#type' => 'fieldset', |
franck@7
|
16 '#tree' => TRUE, |
franck@7
|
17 '#attributes' => array('class' => 'container-inline') |
franck@7
|
18 ); |
franck@7
|
19 $form['search']['search_term'] = array( |
franck@7
|
20 '#type' => 'textfield', |
franck@7
|
21 '#title' => t('Terms'), |
franck@7
|
22 '#default_value' => $terms |
franck@7
|
23 ); |
franck@7
|
24 $form['search']['submit'] = array( |
franck@7
|
25 '#type' => 'submit', |
franck@7
|
26 '#value' => t('Search'), |
franck@7
|
27 '#submit' => array('scald_dailymotion_search_form_search_submit') |
franck@7
|
28 ); |
franck@7
|
29 if (!empty($terms)) { |
franck@7
|
30 $form['results'] = array( |
franck@7
|
31 '#type' => 'fieldset', |
franck@7
|
32 '#title' => t('Search results'), |
franck@7
|
33 '#tree' => TRUE, |
franck@7
|
34 '#theme' => 'scald_dailymotion_search_results_table' |
franck@7
|
35 ); |
franck@7
|
36 $items = scald_dailymotion_feed('search', $terms); |
franck@7
|
37 if (count($items)) { |
franck@7
|
38 foreach ($items as $video) { |
franck@7
|
39 $thumb = str_replace('large', 'small', $video->thumbnail['src']); |
franck@7
|
40 $form['results'][$video->id] = array( |
franck@7
|
41 'checkbox' => array( |
franck@7
|
42 '#type' => 'checkbox', |
franck@7
|
43 ), |
franck@7
|
44 'title' => array( |
franck@7
|
45 '#type' => 'item', |
franck@7
|
46 '#value' => $video->title |
franck@7
|
47 ), |
franck@7
|
48 'thumbnail' => array( |
franck@7
|
49 '#type' => 'markup', |
franck@7
|
50 '#value' => theme('image', $thumb, '', '', NULL, FALSE) |
franck@7
|
51 ) |
franck@7
|
52 ); |
franck@7
|
53 } |
franck@7
|
54 $form['import'] = array( |
franck@7
|
55 '#type' => 'submit', |
franck@7
|
56 '#value' => t('Import'), |
franck@7
|
57 '#submit' => array('scald_dailymotion_search_form_submit') |
franck@7
|
58 ); |
franck@7
|
59 } |
franck@7
|
60 else { |
franck@7
|
61 $form['results']['empty'] = array( |
franck@7
|
62 '#type' => 'markup', |
franck@7
|
63 '#value' => t('No results') |
franck@7
|
64 ); |
franck@7
|
65 } |
franck@7
|
66 } |
franck@7
|
67 return $form; |
franck@7
|
68 } |
franck@7
|
69 |
franck@7
|
70 /** |
franck@7
|
71 * Handles search terms form submission. |
franck@7
|
72 */ |
franck@7
|
73 function scald_dailymotion_search_form_search_submit($form, &$form_state) { |
franck@7
|
74 if ($form_state['clicked_button']['#value'] == t('Search')) { |
franck@7
|
75 $form_state['storage']['terms'] = $form_state['values']['search']['search_term']; |
franck@7
|
76 } |
franck@7
|
77 } |
franck@7
|
78 |
franck@7
|
79 /** |
franck@7
|
80 * Handlers import form submission. |
franck@7
|
81 */ |
franck@7
|
82 function scald_dailymotion_search_form_submit($form, &$form_state) { |
franck@7
|
83 $ids = array(); |
franck@7
|
84 // Find all the elements that have been checked in the results table |
franck@7
|
85 foreach ($form_state['values']['results'] as $id => $element) { |
franck@7
|
86 if ($element['checkbox']) { |
franck@7
|
87 $ids[] = $id; |
franck@7
|
88 } |
franck@7
|
89 } |
franck@7
|
90 // And now create an atom for each of them |
franck@7
|
91 foreach ($ids as $id) { |
franck@7
|
92 $sid = scald_dailymotion_register($id); |
franck@7
|
93 $video = scald_fetch($sid); |
franck@7
|
94 drupal_set_message(t('Created video %title', array('%title' => $video->title))); |
franck@7
|
95 } |
franck@7
|
96 // End the multistep workflow |
franck@7
|
97 unset($form_state['storage']); |
franck@7
|
98 $form_state['rebuild'] = FALSE; |
franck@7
|
99 } |
franck@7
|
100 |
franck@7
|
101 /** |
franck@7
|
102 * Themes the results table. |
franck@7
|
103 */ |
franck@7
|
104 function theme_scald_dailymotion_search_results_table($form) { |
franck@7
|
105 $headers = array(t('Import'), t('Title'), t('Thumbnail')); |
franck@7
|
106 $rows = array(); |
franck@7
|
107 foreach (element_children($form) as $key) { |
franck@7
|
108 // Render our row |
franck@7
|
109 $row = array(); |
franck@7
|
110 $row[] = drupal_render($form[$key]['checkbox']); |
franck@7
|
111 $row[] = drupal_render($form[$key]['title']); |
franck@7
|
112 $row[] = drupal_render($form[$key]['thumbnail']); |
franck@7
|
113 // And add it to the list of table rows. |
franck@7
|
114 $rows[] = $row; |
franck@7
|
115 } |
franck@7
|
116 return theme('table', $headers, $rows); |
franck@7
|
117 } |