You are here

function file_upload_security_affected_fields in File Upload Security 7

Same name and namespace in other branches
  1. 7.3 file_upload_security.module \file_upload_security_affected_fields()

Helper to get all file fields in use on site.

Return value

array An array of file fields and entities using them by bundle.

1 call to file_upload_security_affected_fields()
file_upload_security_affected_types in ./file_upload_security.module
Helper to return an array of entities user 0 can create.

File

./file_upload_security.module, line 490
Helper module to advise and resolve security issues in file uploads.

Code

function file_upload_security_affected_fields() {
  $file_fields =& drupal_static(__FUNCTION__);
  if (!isset($file_fields)) {
    $fields = field_info_field_map();
    $file_fields = array(
      'fields' => array(),
      'entities' => array(),
    );
    if ($fields) {
      $iterator = new RecursiveArrayIterator($fields);
      while ($iterator
        ->valid()) {
        $data = $iterator
          ->current();
        $field = $iterator
          ->key();
        if (array_key_exists('type', $data) && in_array($data['type'], file_upload_security_field_types())) {
          if (array_key_exists('bundles', $data)) {
            $bundles = reset($data['bundles']);
            $entity = key($data['bundles']);
            foreach ($bundles as $bundle) {
              $file_fields['fields'][$field][] = $bundle;
            }
            if (array_key_exists($entity, $file_fields['entities'])) {
              $file_fields['entities'][$entity] = array_merge($file_fields['entities'][$entity], $bundles);
            }
            else {
              $file_fields['entities'][$entity] = $bundles;
            }
          }
        }
        $iterator
          ->next();
      }
    }
  }
  return $file_fields;
}