function system_patterns_validate in Patterns 7
Same name and namespace in other branches
- 7.2 patterns_components/components/system.inc \system_patterns_validate()
File
- patterns_components/components/system.inc, line 182
Code
function system_patterns_validate($action, $tag, &$data) {
$status = PATTERNS_SUCCESS;
$msg = '';
if ($tag == 'theme') {
$themes = system_rebuild_theme_data();
if (!array_key_exists($data['theme_default'], $themes)) {
$status = PATTERNS_ERR;
$msg = t('%theme is not a valid theme.', array(
'%theme' => $data['theme_default'],
));
}
}
elseif ($tag == 'modules') {
if (!isset($modules_info) || !is_array($modules_info)) {
$modules_info = system_rebuild_module_data();
}
$modules = module_list();
$delete = $action === PATTERNS_DELETE;
for ($i = 0; isset($data[$i]) && ($item = $data[$i]); $i++) {
$module = $item['value'];
if ($delete) {
if (array_key_exists($module, $modules_info)) {
if (array_key_exists($module, $modules)) {
}
else {
$remove[] = $i;
$status = PATTERNS_WARN;
$msg .= t('Warning: Did not disable %module because it is already disabled.', array(
'%module' => $module,
)) . '<br/>';
}
}
else {
$remove[] = $i;
$status = PATTERNS_WARN;
$msg .= t('Warning: Could not disable %module because it is missing.', array(
'%module' => $module,
)) . '<br/>';
}
}
else {
if (!array_key_exists($module, $modules)) {
if (!array_key_exists($module, $modules_info)) {
$required[] = $module;
}
else {
foreach ((array) $modules_info[$module]->info['dependencies'] as $dependency) {
if (!array_key_exists($dependency, $modules) && !array_key_exists($dependency, $modules_info)) {
$required[] = $dependency;
}
}
}
if (!empty($required)) {
$status = PATTERNS_ERR;
$msg .= t('%module can not be installed because the module or its dependencies are missing. Please download them and try again.', array(
'%module' => $module,
)) . t('!title%dependencies', array(
'!title' => '<br/><b>' . t('Missing module(s): ') . '</b>',
'%dependencies' => implode(', ', $required),
));
}
}
else {
$status = PATTERNS_WARN;
$msg .= t('Warning: Did not enable %module because it is already enabled.', array(
'%module' => $module,
)) . '<br/>';
}
}
}
if (!empty($remove)) {
$result = array();
foreach ($data as $key => $item) {
if (!in_array($key, $remove)) {
$result[] = $item;
}
}
$data = $result;
}
}
elseif ($tag == 'call_php_func') {
if (empty($data['function'])) {
$status = PATTERNS_ERR;
$msg = t("A function is required for this tag");
}
elseif (!empty($data['type']) && empty($data['module'])) {
$status = PATTERNS_ERR;
$msg = t("If you specify a type you must specify a module. See the documentation for module_load_include.");
}
elseif (empty($data['type']) && !empty($data['module'])) {
$status = PATTERNS_ERR;
$msg = t("If you specify a module you must specify a type. See the documentation for module_load_include.");
}
elseif (!empty($data['filepath']) && !file_exists($data['filepath'])) {
$status = PATTERNS_ERR;
$msg = t('The file that you specified does not exist: %file', array(
'%file' => $data['filepath'],
));
}
}
elseif ($tag == 'form') {
if (!isset($data['form_id'])) {
$status = PATTERNS_ERR;
$msg = t('"form_id" is missing.');
}
list($menu, $masks) = menu_router_build();
foreach ($menu as $item) {
if (isset($item['page arguments'][0]) && $item['page arguments'][0] == $data['form_id'] && !empty($item['include file'])) {
$data['include'] = $item['include file'];
break;
}
}
if (!empty($data['include']) && is_file($data['include'])) {
require_once $data['include'];
}
elseif (is_array($data['include'])) {
$data['include'] = drupal_get_path('module', $data['include']['module']) . '/' . $data['include']['file'];
}
if (!function_exists($data['form_id'])) {
if (!empty($data['module']) && is_string($data['module'])) {
$modules = module_list();
if (in_array($data['module'], $modules)) {
module_load_include('inc', $data['module']);
module_load_include('inc', $data['module'], $data['module'] . '.admin');
module_load_include('inc', $data['module'], $data['module'] . '.page');
}
}
}
if (!function_exists($data['form_id'])) {
$status = PATTERNS_ERR;
$msg = t("Couldn't load the form %form. Check if all required modules are enabled and try to define 'include' or 'module' for this action.", array(
'%form' => $data['form_id'],
));
}
}
return patterns_results($status, $msg);
}