function _media_flickr_store_local in Media: Flickr 6
1 call to _media_flickr_store_local()
- media_flickr_store_local in ./media_flickr.module
File
- ./media_flickr.utilities.inc, line 50
- Utility functions for Media: Flickr.
Code
function _media_flickr_store_local($photo_code, $size) {
static $count;
if ($photo_code) {
$thumbnail = media_flickr_photo_remote_url($photo_code, $size);
if ($thumbnail && (($max = variable_get('media_flickr_max_saves', 10)) && $count < $max || !$max)) {
if ($cached && ($cache = cache_get('media_flickr:' . $photo_code . ':' . $size, 'cache'))) {
return $cache->data;
}
$count++;
$image = file_get_contents($thumbnail);
if ($image) {
$validators['file_validate_name_length'] = array();
if (module_exists('transliteration')) {
$thumbnail = transliteration_get($thumbnail);
}
$basename = 'media-flickr-' . $photo_code . '-' . $size . '.' . pathinfo($thumbnail, PATHINFO_EXTENSION);
$directory = file_directory_path();
$dir = variable_get('media_flickr_image_path', '');
if ($dir) {
$directory .= '/' . $dir;
}
$filepath = file_create_filename($basename, $directory);
$file = new stdClass();
global $user;
$file->uid = $user->uid;
$file->filename = parse_url($basename, PHP_URL_PATH);
$file->filepath = parse_url($filepath, PHP_URL_PATH);
$file->filemime = module_exists('mimedetect') ? mimedetect_mime($file) : file_get_mimetype($file->filename);
if (preg_match('/\\.(php|pl|py|cgi|asp|js)$/i', $file->filename) && substr($file->filename, -4) != '.txt') {
$file->filemime = 'text/plain';
$file->filepath .= '.txt';
$file->filename .= '.txt';
}
$file->source = 'media_flickr_fetch_remote_thumbnail';
$file->destination = file_destination($file->filepath, $replace);
$file->filesize = strlen($image);
$errors = array();
foreach ($validators as $function => $args) {
array_unshift($args, $file);
$errors = array_merge($errors, call_user_func_array($function, $args));
}
if (!empty($errors)) {
$message = 'The remote Flickr image %name could not be saved.';
$arguments = array(
'%name' => $file->filename,
);
if (count($errors) > 1) {
$message .= '<ul><li>' . implode('</li><li>', $errors) . '</li></ul>';
}
else {
$message .= ' ' . array_pop($errors);
}
watchdog('media_flickr', $message, $arguments, WATCHDOG_ERROR);
cache_set('media_flickr:' . $photo_code . ':' . $size, url($thumbnail), 'cache', time() + variable_get('emfield_cache_duration', 3600));
return $thumbnail;
}
if (!file_save_data($image, $file->filepath, FILE_EXISTS_RENAME)) {
watchdog('file', 'Upload error. Could not move file %file to destination %destination.', array(
'%file' => $file->filename,
'%destination' => $file->destination,
));
cache_set('media_flickr:' . $photo_code . ':' . $size, url($thumbnail), 'cache', time() + variable_get('emfield_cache_duration', 3600));
return $thumbnail;
}
$file->status = FILE_STATUS_PERMANENT;
$file->timestamp = time();
drupal_write_record('files', $file);
$flickr = new stdClass();
$flickr->fid = $file->fid;
$flickr->size = $size;
$flickr->code = $photo_code;
drupal_write_record('media_flickr_sizes', $flickr);
foreach (module_implements('file_insert') as $module) {
$function = $module . '_file_insert';
$function($file);
}
return $file->filepath;
}
cache_set('media_flickr:' . $photo_code . ':' . $size, url($thumbnail), 'cache', time() + variable_get('emfield_cache_duration', 3600));
}
return $thumbnail;
}
}