Révision 59ae487e
Ajouté par Assos Assos il y a presque 7 ans
drupal7/sites/all/modules/file_entity/file_entity.field.inc | ||
---|---|---|
284 | 284 |
foreach ($items as $delta => $item) { |
285 | 285 |
// Protect ourselves from recursive rendering. |
286 | 286 |
static $recursive_render_depth = array(); |
287 |
$recursive_render_id = $entity_type . $field['field_name'] . $item['fid']; |
|
287 |
if (!empty($item)) { |
|
288 |
$recursive_render_id = $entity_type . $field['field_name'] . $item['fid']; |
|
289 |
if (isset($recursive_render_depth[$recursive_render_id])) { |
|
290 |
$recursive_render_depth[$recursive_render_id]++; |
|
291 |
} |
|
292 |
else { |
|
293 |
$recursive_render_depth[$recursive_render_id] = 1; |
|
294 |
} |
|
288 | 295 |
|
289 |
if (isset($recursive_render_depth[$recursive_render_id])) { |
|
290 |
$recursive_render_depth[$recursive_render_id]++; |
|
291 |
} |
|
292 |
else { |
|
293 |
$recursive_render_depth[$recursive_render_id] = 1; |
|
294 |
} |
|
296 |
if ($recursive_render_depth[$recursive_render_id] > 20) { |
|
297 |
watchdog( |
|
298 |
'file_entity', |
|
299 |
'Recursive rendering detected when rendering entity %entity_type: %entity_id, using the %field_name field. Aborting rendering.', |
|
300 |
array( |
|
301 |
'%entity_type' => 'file', |
|
302 |
'%entity_id' => $item['fid'], |
|
303 |
'%field_name' => $field['field_name'], |
|
304 |
), |
|
305 |
WATCHDOG_ERROR |
|
306 |
); |
|
307 |
return $element; |
|
308 |
} |
|
309 |
|
|
310 |
$file = file_load($item['fid']); |
|
311 |
|
|
312 |
// Add some references to the referencing entity. |
|
313 |
// @see https://www.drupal.org/node/2333107 |
|
314 |
$file->referencing_entity = $entity; |
|
315 |
$file->referencing_entity_type = $entity_type; |
|
316 |
$file->referencing_field = $field['field_name']; |
|
295 | 317 |
|
296 |
if ($recursive_render_depth[$recursive_render_id] > 20) { |
|
318 |
$element[$delta] = file_view($file, $settings['file_view_mode'], $langcode); |
|
319 |
} else { |
|
297 | 320 |
watchdog( |
298 | 321 |
'file_entity', |
299 |
'Recursive rendering detected when rendering entity %entity_type: %entity_id, using the %field_name field. Aborting rendering.',
|
|
322 |
'In the %referencing_entity_type, the %field_name field refers to a %entity_type which does not exist. Aborting the render for it.',
|
|
300 | 323 |
array( |
301 |
'%entity_type' => 'file', |
|
302 |
'%entity_id' => $item['fid'], |
|
324 |
'%referencing_entity_type' => $entity_type, |
|
303 | 325 |
'%field_name' => $field['field_name'], |
326 |
'%entity_type' => 'file', |
|
304 | 327 |
), |
305 | 328 |
WATCHDOG_ERROR |
306 | 329 |
); |
307 |
return $element; |
|
308 | 330 |
} |
309 |
|
|
310 |
$file = (object) $item; |
|
311 |
|
|
312 |
// Add some references to the referencing entity. |
|
313 |
// @see https://www.drupal.org/node/2333107 |
|
314 |
$file->referencing_entity = $entity; |
|
315 |
$file->referencing_entity_type = $entity_type; |
|
316 |
$file->referencing_field = $field['field_name']; |
|
317 |
|
|
318 |
$element[$delta] = file_view($file, $settings['file_view_mode'], $langcode); |
|
319 | 331 |
} |
320 | 332 |
break; |
321 | 333 |
|
322 | 334 |
case 'file_download_link': |
335 |
// Prevent 'empty' fields from causing a WSOD. |
|
336 |
$items = array_filter($items); |
|
323 | 337 |
foreach ($items as $delta => $item) { |
324 |
$file = (object) $item; |
|
325 |
if (file_entity_access('download', $file)) { |
|
338 |
if (!empty($item['fid']) && ($file = file_load($item['fid'])) && file_entity_access('download', $file)) { |
|
326 | 339 |
$element[$delta] = array( |
327 | 340 |
'#theme' => 'file_entity_download_link', |
328 | 341 |
'#file' => $file, |
... | ... | |
342 | 355 |
$source_lists = array(); |
343 | 356 |
if ($multiple_file_behavior == 'tags') { |
344 | 357 |
foreach ($items as $delta => $item) { |
345 |
if ($item['type'] == 'audio') {
|
|
358 |
if (file_entity_file_get_mimetype_type($item) == 'audio') {
|
|
346 | 359 |
$source_lists[$delta] = array($item); |
347 | 360 |
} |
348 | 361 |
} |
349 | 362 |
} |
350 | 363 |
else { |
351 | 364 |
foreach ($items as $delta => $item) { |
352 |
if ($item['type'] == 'audio') {
|
|
365 |
if (file_entity_file_get_mimetype_type($item) == 'audio') {
|
|
353 | 366 |
$source_lists[0][$delta] = $item; |
354 | 367 |
} |
355 | 368 |
} |
... | ... | |
378 | 391 |
$source_lists = array(); |
379 | 392 |
if ($multiple_file_behavior == 'tags') { |
380 | 393 |
foreach ($items as $delta => $item) { |
381 |
if ($item['type'] == 'video') {
|
|
394 |
if (file_entity_file_get_mimetype_type($item) == 'video') {
|
|
382 | 395 |
$source_lists[$delta] = array($item); |
383 | 396 |
} |
384 | 397 |
} |
385 | 398 |
} |
386 | 399 |
else { |
387 | 400 |
foreach ($items as $delta => $item) { |
388 |
if ($item['type'] == 'video') {
|
|
401 |
if (file_entity_file_get_mimetype_type($item) == 'video') {
|
|
389 | 402 |
$source_lists[0][$delta] = $item; |
390 | 403 |
} |
391 | 404 |
} |
Formats disponibles : Unified diff
Weekly update of contrib modules