comparison scald_dailymotion.module @ 2:c57b2ac8f84c

Fluidify feed processing and prevent duplicate errors.
author Franck Deroche <franck@defr.org>
date Mon, 19 Jul 2010 13:41:45 +0200
parents e851124eabe3
children 2a63a6e15166
comparison
equal deleted inserted replaced
1:e851124eabe3 2:c57b2ac8f84c
45 ) 45 )
46 ); 46 );
47 } 47 }
48 48
49 /** 49 /**
50 * Creates an atom based on a DailyMotion video id. 50 * Creates an atom based on a DailyMotion video id or an object
51 * @param $video_id 51 * containing the video informations..
52 * Unique identifier of the video on dailymotion 52 * @param $video
53 * Unique identifier of the video on dailymotion, or object
54 * returned by scald_dailymotion_video.
53 * @return integer 55 * @return integer
54 * Unique identifier of the new atom 56 * Unique identifier of the new atom
55 */ 57 */
56 function scald_dailymotion_register($video_id) { 58 function scald_dailymotion_register($video) {
57 global $user; 59 global $user;
58 // Fetch the needed informations from DailyMotion 60 // Fetch the needed informations from DailyMotion
59 $infos = scald_dailymotion_video($video_id); 61 if (is_object($video)) {
62 $infos = $video;
63 }
64 else {
65 $infos = scald_dailymotion_video($video);
66 }
67 // Check if the video has already been imported to prevent duplicated
68 $old = scald_dailymotion_already_imported($infos->id);
69 if ($old) {
70 return $old;
71 }
60 // Download a copy of the video thumbnail. This makes it possible 72 // Download a copy of the video thumbnail. This makes it possible
61 // to do interesting things when used with ImageCache for example. 73 // to do interesting things when used with ImageCache for example.
62 $thumb = drupal_http_request($infos->thumbnail['src']); 74 $thumb = drupal_http_request($infos->thumbnail['src']);
63 $dir = file_directory_path() . '/dailymotion'; 75 $dir = file_directory_path() . '/dailymotion';
64 if ($thumb->code == 200 && file_check_directory($dir)) { 76 if ($thumb->code == 200 && file_check_directory($dir)) {
144 */ 156 */
145 function scald_dailymotion_video($id) { 157 function scald_dailymotion_video($id) {
146 $items = scald_dailymotion_feed('video', $id); 158 $items = scald_dailymotion_feed('video', $id);
147 return $items[0]; 159 return $items[0];
148 } 160 }
161
162 /**
163 * Checks if a video has already been imported, based on its video
164 * id.
165 * @param $id
166 * The video identifier
167 * @return mixed
168 * FALSE if the video was never imported, the scald identifier of
169 * the video otherwise.
170 */
171 function scald_dailymotion_already_imported($id) {
172 $query = array('provider' => 'scald_dailymotion', 'base_id' => $id);
173 return scald_search($query, FALSE, TRUE);
174 }