file.devel_generate.inc 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <?php
  2. function file_devel_generate($object, $field, $instance, $bundle) {
  3. if (field_behaviors_widget('multiple values', $instance) == FIELD_BEHAVIOR_CUSTOM) {
  4. return devel_generate_multiple('_file_devel_generate', $object, $field, $instance, $bundle);
  5. }
  6. else {
  7. return _file_devel_generate($object, $field, $instance, $bundle);
  8. }
  9. }
  10. function _file_devel_generate($object, $field, $instance, $bundle) {
  11. static $file;
  12. if (empty($file)) {
  13. if ($path = devel_generate_textfile()) {
  14. $destination_dir = $field['settings']['uri_scheme'] . '://' . $instance['settings']['file_directory'];
  15. file_prepare_directory($destination_dir, FILE_CREATE_DIRECTORY);
  16. if ($uri = file_unmanaged_move($path, $destination_dir)) {
  17. $file = new stdClass();
  18. $file->fid = NULL;
  19. $file->uri = $uri;
  20. $file->filename = drupal_basename($uri);
  21. $file->filemime = file_get_mimetype($file->uri);
  22. // @todo Randomize file owner.
  23. $file->uid = 1;
  24. $file->devel_generate = TRUE;
  25. $file = file_save($file);
  26. }
  27. else {
  28. return FALSE;
  29. }
  30. }
  31. else {
  32. return FALSE;
  33. }
  34. }
  35. if (!$file) {
  36. // In case a previous file operation failed or no file is set, return FALSE
  37. return FALSE;
  38. }
  39. else {
  40. $object_field['fid'] = $file->fid;
  41. $object_field['display'] = $field['settings']['display_default'];
  42. $object_field['description'] = devel_create_greeking(10);
  43. return $object_field;
  44. }
  45. }
  46. /**
  47. * Private function for generating a random text file.
  48. */
  49. function devel_generate_textfile($filesize = 1024) {
  50. if ($tmp_file = drupal_tempnam('temporary://', 'filefield_')) {
  51. $destination = $tmp_file . '.txt';
  52. file_unmanaged_move($tmp_file, $destination);
  53. $fp = fopen($destination, 'w');
  54. fwrite($fp, str_repeat('01', $filesize/2));
  55. fclose($fp);
  56. return $destination;
  57. }
  58. }