function file_aliases_filefield_paths_process_file in File Aliases 6
Same name and namespace in other branches
- 5 file_aliases.module \file_aliases_filefield_paths_process_file()
- 7 modules/filefield_paths.inc \file_aliases_filefield_paths_process_file()
Implements hook_filefield_paths_process_file().
File
- ./
file_aliases.module, line 67 - Contains core functions for the File Aliases module.
Code
function file_aliases_filefield_paths_process_file($new, $file, $settings, $node, $update) {
if ($new) {
$file['filealias'] = filefield_paths_process_string($settings['filealias']['value'], 'node', $node, $settings['filealias']);
$file['filealias'] = filefield_paths_process_string($file['filealias'], 'field', array(
0 => $file['field'],
), $settings['filealias']);
$path = 'filefield_paths/alias/' . $file['field']['fid'];
$alias = drupal_get_path_alias($path);
// Path already has an alias.
if ($alias != $path) {
path_set_alias(NULL, $alias);
}
// Rename alias if already in use.
if (drupal_lookup_path('source', $file['filealias']) != NULL) {
$info = pathinfo($file['filealias']);
// PHP < 5.2: pathinfo() doesn't return 'filename' variable.
$info['filename'] = isset($info['filename']) ? $info['filename'] : basename($file['filealias'], '.' . $info['extension']);
$counter = 0;
do {
$file['filealias'] = $info['dirname'] . '/' . $info['filename'] . '_' . $counter++ . '.' . $info['extension'];
} while (drupal_lookup_path('source', $file['filealias']) != NULL);
}
// Create Alias.
path_set_alias('filefield_paths/alias/' . $file['field']['fid'], $file['filealias']);
// Display Alias in Node Body and CCK Text fields.
if ($settings['filealias']['display']) {
// Regular expression to replace file reference with file alias.
$pattern = array(
'regex' => str_replace('/', '\\/', $file['filepath']['new']),
'regex_enc' => str_replace('/', '\\/', drupal_urlencode($file['filepath']['new'])),
'replace' => $file['filealias'],
);
// Process regular expression.
_filefield_paths_replace_pattern($pattern, $node, $update);
}
}
}