function coder_upgrade_add_file_entries in Coder 7
Same name and namespace in other branches
- 7.2 coder_upgrade/conversions/end.inc \coder_upgrade_add_file_entries()
Adds file entries to .info files.
Module .info files must now specify all loadable code files explicitly. http://drupal.org/node/224333#registry
Parameters
string $dirname: Module directory path.
array $files: Contents of directory $dirname.
array $items: List of registry files.
string $path: Subdirectory whose parent directory contains a module.
1 call to coder_upgrade_add_file_entries()
- coder_upgrade_upgrade_end_alter in coder_upgrade/
conversions/ end.inc - Implements hook_upgrade_end_alter().
File
- coder_upgrade/
conversions/ end.inc, line 90 - Provides conversion routines applied to the directory after routines are applied to the files.
Code
function coder_upgrade_add_file_entries($dirname = '', $files = array(), &$items = array(), $path = '') {
if (empty($files)) {
return;
}
global $_coder_upgrade_dirname, $_coder_upgrade_class_files;
// Extensions that indicate a module is present.
$extensions = array(
'info',
'module',
);
$info_file = '';
if ($path != 'new' && ($path != '' || $dirname != $_coder_upgrade_dirname)) {
// Scan subdirectory for .info file indicating presence of another module.
foreach ($files as $file) {
if (!is_array($file)) {
$extension = pathinfo($file, PATHINFO_EXTENSION);
if (in_array($extension, $extensions)) {
// This subdirectory contains a module - so recurse.
$dirname .= $path != '' ? '/' . $path : '';
$path = 'new';
$items2 = array();
coder_upgrade_add_file_entries($dirname, $files, $items2, $path);
return;
}
}
}
}
// Clear path if we are starting another module.
$path = $path == 'new' ? '' : $path;
// Create list of files for registry.
// TODO Allow for custom extensions!!!
$extensions = array(
'inc',
'install',
'module',
'php',
'profile',
'test',
'theme',
'upgrade',
);
$dirname .= $path != '' ? '/' . $path : '';
$path = $path != '' ? $path . '/' : $path;
foreach ($files as $file) {
if (is_array($file)) {
coder_upgrade_add_file_entries($dirname, $file['entries'], $items, $file['dir']);
}
else {
$extension = pathinfo($file, PATHINFO_EXTENSION);
if ($extension == 'php' && substr($file, -8) == '.tpl.php') {
// Exclude template files.
}
elseif (in_array($extension, $extensions) && in_array($dirname . '/' . $file, $_coder_upgrade_class_files)) {
$items[] = $dirname . '/' . $file;
}
elseif ($extension == 'info') {
// Save the name of the .info file.
$info_file = $dirname . '/' . $file;
}
}
}
if ($info_file != '') {
$new = file_get_contents($info_file);
// Remove any file entries from .info file.
$from = "/^\\s*files\\[\\]\\s*=.*?\$/m";
$to = '';
$new = preg_replace($from, $to, $new);
// Add sorted entries to .info file.
$new .= "\n";
foreach ($items as $item) {
$item = str_replace($dirname . '/', '', $item);
$new .= "files[] = {$item}\n";
}
if (file_put_contents($info_file, $new) === FALSE) {
clp(t('File could not be written: @file', array(
'@file' => $info_file,
)));
}
}
}