features_override.extend.inc in Features Override 6
File
features_override.extend.inc
View source
<?php
function features_override_extend() {
$form = array();
$compontents = array();
foreach (features_get_components() as $component => $info) {
if (isset($info['default_hook']) && (!isset($info['module']) || $info['module'] != 'features_override') && $info['default_hook'] != 'node_info' && !module_hook('features_override', $info['default_hook'] . '_alter')) {
$components[] = isset($info['name']) ? $info['name'] . ' (' . $component . ')' : $component;
}
}
if (!empty($components)) {
$items = theme('item_list', $components);
$form['#prefix'] = t('The following features compontents are not yet available for overriding:') . $items;
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Generate additional include files'),
);
}
else {
$form['#prefix'] = t('All features compontent are already available for overriding.');
}
return $form;
}
function features_override_extend_submit() {
features_override_generate();
}
function features_override_generate() {
$files = array();
foreach (features_get_components() as $component => $info) {
if (isset($info['default_hook']) && (!isset($info['module']) || $info['module'] != 'features_override') && $info['default_hook'] != 'node_info' && !module_hook('features_override', $info['default_hook'] . '_alter')) {
$module = isset($info['module']) ? $info['module'] : 'features';
$code = array();
$code[] = "/**";
$code[] = " * Implementation of hook_{$info['default_hook']}_alter().";
$code[] = " */";
$code[] = 'function features_override_' . $info['default_hook'] . '_alter(&$items) {';
$code[] = ' features_override_features_default_alter($items, "' . $component . '");';
$code[] = "}";
$code = implode("\n", $code);
$files[$module][] = $code;
}
}
$generated = array();
$dir = file_create_path('features_override');
file_check_directory($dir, FILE_CREATE_DIRECTORY);
$module_dir = drupal_get_path('module', 'features_override') . '/modules';
foreach ($files as $module => $contents) {
$name = $module . '.features_override.inc';
if (file_exists($module_dir . '/' . $name)) {
$header = file_get_contents($module_dir . '/' . $name);
}
else {
$header = "<?php";
}
$contents = $header . "\n\n" . implode("\n\n", $contents) . "\n";
$dest = $dir . '/' . $name;
file_save_data($contents, $dest, FILE_EXISTS_REPLACE);
$generated[] = 'modules/' . $name;
}
if (!empty($generated)) {
drupal_set_message(t('New include files were generated in !dir. The new include files and can be copied to !module_dir and to enable features override functionality for additional compontent types. Please also submit these changes as a patch to the Features Overide module.', array(
'!dir' => $dir,
'!module_dir' => $module_dir,
)));
}
}