summaryrefslogtreecommitdiff
path: root/includes
diff options
context:
space:
mode:
Diffstat (limited to 'includes')
-rw-r--r--includes/common.inc46
-rw-r--r--includes/form.inc29
-rw-r--r--includes/locale.inc94
3 files changed, 91 insertions, 78 deletions
diff --git a/includes/common.inc b/includes/common.inc
index da7d6402d..1be683d2c 100644
--- a/includes/common.inc
+++ b/includes/common.inc
@@ -1742,15 +1742,15 @@ function drupal_add_js($data = NULL, $type = 'module', $scope = 'header', $defer
* @return
* All JavaScript code segments and includes for the scope as HTML tags.
*/
-function drupal_get_js($scope = 'header', $javascript = NULL) {
+function drupal_get_js($scope = 'header', $javascript = NULL) {
if (!isset($javascript)) {
$javascript = drupal_add_js(NULL, NULL, $scope);
}
if (count($javascript) < 1) {
return '';
- }
-
+ }
+
$output = '';
$preprocessed = '';
$no_preprocess = array('core' => '', 'module' => '', 'theme' => '');
@@ -1760,7 +1760,7 @@ function drupal_get_js($scope = 'header', $javascript = NULL) {
$is_writable = is_dir($directory) && is_writable($directory) && (variable_get('file_downloads', FILE_DOWNLOADS_PUBLIC) == FILE_DOWNLOADS_PUBLIC);
foreach ($javascript as $type => $data) {
-
+
if (!$data) continue;
switch ($type) {
@@ -1776,27 +1776,27 @@ function drupal_get_js($scope = 'header', $javascript = NULL) {
// If JS preprocessing is off, we still need to output the scripts.
// Additionally, go through any remaining scripts if JS preprocessing is on and output the non-cached ones.
foreach ($data as $path => $info) {
- if (!$info['preprocess'] || !$is_writable || !$preprocess_js) {
+ if (!$info['preprocess'] || !$is_writable || !$preprocess_js) {
$no_preprocess[$type] .= '<script type="text/javascript"'. ($info['defer'] ? ' defer="defer"' : '') .' src="'. base_path() . $path . ($info['cache'] ? '' : '?'. time()) ."\"></script>\n";
}
- else {
+ else {
$files[$path] = $info;
}
}
}
}
-
+
// Aggregate any remaining JS files that haven't already been output.
- if ($is_writable && $preprocess_js && count($files) > 0) {
+ if ($is_writable && $preprocess_js && count($files) > 0) {
$filename = md5(serialize($files)) .'.js';
$preprocess_file = drupal_build_js_cache($files, $filename);
$preprocessed .= '<script type="text/javascript" src="'. base_path() . $preprocess_file .'"></script>'. "\n";
}
-
+
// Keep the order of JS files consistent as some are preprocessed and others are not.
// Make sure any inline or JS setting variables appear last after libraries have loaded.
$output = $preprocessed . implode('', $no_preprocess) . $output;
-
+
return $output;
}
@@ -1818,9 +1818,9 @@ function drupal_build_js_cache($files, $filename) {
file_check_directory($jspath, FILE_CREATE_DIRECTORY);
if (!file_exists($jspath .'/'. $filename)) {
- // Build aggregate JS file.
- foreach ($files as $path => $info) {
- if ($info['preprocess']) {
+ // Build aggregate JS file.
+ foreach ($files as $path => $info) {
+ if ($info['preprocess']) {
// Append a ';' after each JS file to prevent them from running together.
$contents .= _drupal_compress_js(file_get_contents($path). ';');
}
@@ -1858,8 +1858,8 @@ function _drupal_compress_js($script) {
$script = _packer_apply($script, $regexps, TRUE);
return $script;
-}
-
+}
+
/**
* Multi-regexp replacements.
*
@@ -1887,7 +1887,7 @@ function _packer_apply($script, $regexps, $escape = FALSE) {
// Count the number of matching groups (including the whole).
$length = 1 + preg_match_all('/(?<!\\\\)\((?!\?)/', $expression, $out);
-
+
// Treat only strings $replacement
if (is_string($replacement)) {
// Does the pattern deal with sub-expressions?
@@ -1918,9 +1918,9 @@ function _packer_apply($script, $regexps, $escape = FALSE) {
$_regexps[] = array('/^$/', $replacement, $length);
}
}
-
+
// Execute the global replacement
-
+
// Build one mega-regexp out of the smaller ones.
$regexp = '/';
foreach ($_regexps as $_regexp) {
@@ -1928,7 +1928,7 @@ function _packer_apply($script, $regexps, $escape = FALSE) {
$regexp .= '(' . substr($expression, 1, -1) . ')|';
}
$regexp = substr($regexp, 0, -1) . '/';
-
+
// In order to simplify the regexps that look e.g. for quoted strings, we
// remove all escaped characters (such as \' or \") from the data. Then, we
// put them back as they were.
@@ -1983,7 +1983,7 @@ function _packer_escape_char($match, $return = FALSE) {
$_escaped[] = $match[1];
return '\\';
}
-}
+}
/**
* Helper function for _packer_apply().
@@ -2003,12 +2003,12 @@ function _packer_replacement($arguments, $regexps = NULL, $escape = NULL) {
if (empty($arguments)) {
return '';
}
-
+
$i = 1; $j = 0;
// Loop through the regexps
while (isset($_regexps[$j])) {
list($expression, $replacement, $length) = $_regexps[$j++];
-
+
// Do we have a result?
if (isset($arguments[$i]) && ($arguments[$i] != '')) {
if (is_array($replacement) && isset($replacement['fn'])) {
@@ -2043,7 +2043,7 @@ function _packer_unescape_char($match, $escaped = NULL) {
else {
return '\\'. array_shift($_escaped);
}
-}
+}
/**
* Helper function for _packer_replacement().
diff --git a/includes/form.inc b/includes/form.inc
index 01b95e0b4..81ee1ea16 100644
--- a/includes/form.inc
+++ b/includes/form.inc
@@ -75,6 +75,10 @@ function drupal_get_form($form_id) {
// to build it from scratch.
if (!isset($form)) {
$form_state['post'] = $_POST;
+ array_shift($args);
+ array_unshift($args, $form_state);
+ array_unshift($args, $form_id);
+
$form = call_user_func_array('drupal_retrieve_form', $args);
$form_build_id = 'form-'. md5(mt_rand());
$form['#build_id'] = $form_build_id;
@@ -109,7 +113,9 @@ function drupal_get_form($form_id) {
// other variables passed into drupal_get_form().
if (!empty($form_state['rebuild']) || !empty($form_state['storage'])) {
- $args[] = $form_state;
+ array_shift($args);
+ array_unshift($args, $form_state);
+ array_unshift($args, $form_id);
$form = call_user_func_array('drupal_retrieve_form', $args);
// We need a new build_id for the new version of the form.
@@ -182,8 +188,7 @@ function drupal_execute($form_id, &$form_state) {
// the $form_state to be the last parameter, while drupal_execute()
// always takes it in as the second parameter.
$args = array_slice($args, 3);
- array_unshift($args, $form_id);
- $args[] = $form_state;
+ $args[1] = $form_state;
$form = call_user_func_array('drupal_retrieve_form', $args);
$form['#post'] = $form_state['values'];
@@ -200,10 +205,12 @@ function drupal_execute($form_id, &$form_state) {
* Modules that need to generate the same form (or very similar forms)
* using different $form_ids can implement hook_forms(), which maps
* different $form_id values to the proper form constructor function.
+ * @param $form_state
+ * A keyed array containing the current state of the form.
* @param ...
* Any additional arguments needed by the form constructor function.
*/
-function drupal_retrieve_form($form_id) {
+function drupal_retrieve_form($form_id, &$form_state) {
static $forms;
// We save two copies of the incoming arguments: one for modules to use
@@ -214,6 +221,9 @@ function drupal_retrieve_form($form_id) {
$args = func_get_args();
$saved_args = $args;
array_shift($args);
+ if (isset($form_state)) {
+ array_shift($args);
+ }
// We first check to see if there's a function named after the $form_id.
// If there is, we simply pass the arguments on to it to get the form.
@@ -240,6 +250,9 @@ function drupal_retrieve_form($form_id) {
$callback = $form_definition['callback'];
}
}
+
+ array_unshift($args, $form_state);
+
// If $callback was returned by a hook_forms() implementation, call it.
// Otherwise, call the function named after the form id.
$form = call_user_func_array(isset($callback) ? $callback : $form_id, $args);
@@ -613,7 +626,7 @@ function form_execute_handlers($type, &$form, &$form_state) {
$batch['sets'][] = array('form_submit' => $function);
}
else {
- $function($form, $form_state, $form_state['values']);
+ $function($form, $form_state);
}
$return = TRUE;
}
@@ -742,7 +755,7 @@ function form_builder($form_id, $form, &$form_state) {
// after normal input parsing has been completed.
if (isset($form['#after_build']) && !isset($form['#after_build_done'])) {
foreach ($form['#after_build'] as $function) {
- $form = $function($form, $form_state['values'], $form_state);
+ $form = $function($form, $form_state);
$form['#after_build_done'] = TRUE;
}
}
@@ -918,7 +931,7 @@ function _form_builder_ie_cleanup($form, &$form_state) {
*
* Specifically, if $form['#parents'] is array('foo', 'bar')
* and $value is 'baz' then this function will make
- * $form_values['foo']['bar'] to be 'baz'.
+ * $form_state['values']['foo']['bar'] to be 'baz'.
*
* @param $form
* The form item. Keys used: #parents, #value
@@ -933,7 +946,7 @@ function form_set_value($form, $value, &$form_state) {
* Helper function for form_set_value().
*
* We iterate over $parents and create nested arrays for them
- * in $form_values if needed. Then we insert the value into
+ * in $form_state['values'] if needed. Then we insert the value into
* the right array.
*/
function _form_set_value(&$form_values, $form, $parents, $value) {
diff --git a/includes/locale.inc b/includes/locale.inc
index c067e1068..0e20c1683 100644
--- a/includes/locale.inc
+++ b/includes/locale.inc
@@ -81,27 +81,27 @@ function theme_locale_languages_overview_form($form) {
/**
* Process language overview form submissions, updating existing languages.
*/
-function locale_languages_overview_form_submit($form, &$form_state, $form_values) {
+function locale_languages_overview_form_submit($form, &$form_state) {
$languages = language_list();
$enabled_count = 0;
foreach ($languages as $langcode => $language) {
- if ($form_values['site_default'] == $langcode) {
+ if ($form_state['values']['site_default'] == $langcode) {
// Automatically enable the default language.
- $form_values['enabled'][$langcode] = 1;
+ $form_state['values']['enabled'][$langcode] = 1;
}
- if ($form_values['enabled'][$langcode]) {
+ if ($form_state['values']['enabled'][$langcode]) {
$enabled_count++;
$language->enabled = 1;
}
else {
$language->enabled = 0;
}
- $language->weight = $form_values['weight'][$langcode];
+ $language->weight = $form_state['values']['weight'][$langcode];
db_query("UPDATE {languages} SET enabled = %d, weight = %d WHERE language = '%s'", $language->enabled, $language->weight, $langcode);
$languages[$langcode] = $language;
}
drupal_set_message(t('Configuration saved.'));
- variable_set('language_default', $languages[$form_values['site_default']]);
+ variable_set('language_default', $languages[$form_state['values']['site_default']]);
variable_set('language_count', $enabled_count);
// Changing the language settings impacts the interface.
@@ -175,7 +175,7 @@ function locale_languages_custom_form() {
* @param $langcode
* Language code of the language to edit.
*/
-function locale_languages_edit_form($langcode) {
+function locale_languages_edit_form(&$form_state, $langcode) {
if ($language = db_fetch_object(db_query("SELECT * FROM {languages} WHERE language = '%s'", $langcode))) {
$form = array();
_locale_languages_common_controls($form, $language);
@@ -265,14 +265,14 @@ function _locale_languages_common_controls(&$form, $language = NULL) {
/**
* Validate the language addition form.
*/
-function locale_languages_predefined_form_validate($form, &$form_state, $form_values) {
- $langcode = $form_values['langcode'];
+function locale_languages_predefined_form_validate($form, &$form_state) {
+ $langcode = $form_state['values']['langcode'];
if ($duplicate = db_num_rows(db_query("SELECT language FROM {languages} WHERE language = '%s'", $langcode)) != 0) {
- form_set_error('langcode', t('The language %language (%code) already exists.', array('%language' => $form_values['name'], '%code' => $langcode)));
+ form_set_error('langcode', t('The language %language (%code) already exists.', array('%language' => $form_state['values']['name'], '%code' => $langcode)));
}
- if (!isset($form_values['name'])) {
+ if (!isset($form_state['values']['name'])) {
// Predefined language selection.
$predefined = _locale_get_predefined_list();
if (!isset($predefined[$langcode])) {
@@ -281,19 +281,19 @@ function locale_languages_predefined_form_validate($form, &$form_state, $form_va
}
else {
// Reuse the editing form validation routine if we add a custom language.
- locale_languages_edit_form_validate($form_values, $form, $form_state);
+ locale_languages_edit_form_validate($form_state['values'], $form, $form_state);
}
}
/**
* Process the language addition form submission.
*/
-function locale_languages_predefined_form_submit($form, &$form_state, $form_values) {
- $langcode = $form_values['langcode'];
- if (isset($form_values['name'])) {
+function locale_languages_predefined_form_submit($form, &$form_state) {
+ $langcode = $form_state['values']['langcode'];
+ if (isset($form_state['values']['name'])) {
// Custom language form.
- locale_add_language($langcode, $form_values['name'], $form_values['native'], $form_values['direction'], $form_values['domain'], $form_values['prefix']);
- drupal_set_message(t('The language %language has been created and can now be used. More information is available on the <a href="@locale-help">help screen</a>.', array('%language' => t($form_values['name']), '@locale-help' => url('admin/help/locale'))));
+ locale_add_language($langcode, $form_state['values']['name'], $form_state['values']['native'], $form_state['values']['direction'], $form_state['values']['domain'], $form_state['values']['prefix']);
+ drupal_set_message(t('The language %language has been created and can now be used. More information is available on the <a href="@locale-help">help screen</a>.', array('%language' => t($form_state['values']['name']), '@locale-help' => url('admin/help/locale'))));
}
else {
// Predefined language selection.
@@ -315,31 +315,31 @@ function locale_languages_predefined_form_submit($form, &$form_state, $form_valu
/**
* Validate the language editing form. Reused for custom language addition too.
*/
-function locale_languages_edit_form_validate($form, &$form_state, $form_values) {
- if (!empty($form_values['domain']) && !empty($form_values['prefix'])) {
+function locale_languages_edit_form_validate($form, &$form_state) {
+ if (!empty($form_state['values']['domain']) && !empty($form_state['values']['prefix'])) {
form_set_error('prefix', t('Domain and path prefix values should not be set at the same time.'));
}
- if (!empty($form_values['domain']) && $duplicate = db_fetch_object(db_query("SELECT language FROM {languages} WHERE domain = '%s' AND language != '%s'", $form_values['domain'], $form_values['langcode']))) {
- form_set_error('domain', t('The domain (%domain) is already tied to a language (%language).', array('%domain' => $form_values['domain'], '%language' => $duplicate->language)));
+ if (!empty($form_state['values']['domain']) && $duplicate = db_fetch_object(db_query("SELECT language FROM {languages} WHERE domain = '%s' AND language != '%s'", $form_state['values']['domain'], $form_state['values']['langcode']))) {
+ form_set_error('domain', t('The domain (%domain) is already tied to a language (%language).', array('%domain' => $form_state['values']['domain'], '%language' => $duplicate->language)));
}
- if (empty($form_values['prefix']) && language_default('language') != $form_values['langcode'] && empty($form_values['domain'])) {
+ if (empty($form_state['values']['prefix']) && language_default('language') != $form_state['values']['langcode'] && empty($form_state['values']['domain'])) {
form_set_error('prefix', t('Only the default language can have both the domain and prefix empty.'));
}
- if (!empty($form_values['prefix']) && $duplicate = db_fetch_object(db_query("SELECT language FROM {languages} WHERE prefix = '%s' AND language != '%s'", $form_values['prefix'], $form_values['langcode']))) {
- form_set_error('prefix', t('The prefix (%prefix) is already tied to a language (%language).', array('%prefix' => $form_values['prefix'], '%language' => $duplicate->language)));
+ if (!empty($form_state['values']['prefix']) && $duplicate = db_fetch_object(db_query("SELECT language FROM {languages} WHERE prefix = '%s' AND language != '%s'", $form_state['values']['prefix'], $form_state['values']['langcode']))) {
+ form_set_error('prefix', t('The prefix (%prefix) is already tied to a language (%language).', array('%prefix' => $form_state['values']['prefix'], '%language' => $duplicate->language)));
}
}
/**
* Process the language editing form submission.
*/
-function locale_languages_edit_form_submit($form, &$form_state, $form_values) {
- db_query("UPDATE {languages} SET name = '%s', native = '%s', domain = '%s', prefix = '%s', direction = %d WHERE language = '%s'", $form_values['name'], $form_values['native'], $form_values['domain'], $form_values['prefix'], $form_values['direction'], $form_values['langcode']);
+function locale_languages_edit_form_submit($form, &$form_state) {
+ db_query("UPDATE {languages} SET name = '%s', native = '%s', domain = '%s', prefix = '%s', direction = %d WHERE language = '%s'", $form_state['values']['name'], $form_state['values']['native'], $form_state['values']['domain'], $form_state['values']['prefix'], $form_state['values']['direction'], $form_state['values']['langcode']);
$default = language_default();
- if ($default->language == $form_values['langcode']) {
+ if ($default->language == $form_state['values']['langcode']) {
$properties = array('name', 'native', 'direction', 'enabled', 'plurals', 'formula', 'domain', 'prefix', 'weight');
foreach ($properties as $keyname) {
- $default->$keyname = $form_values[$keyname];
+ $default->$keyname = $form_state['values'][$keyname];
}
variable_set('language_default', $default);
}
@@ -358,7 +358,7 @@ function locale_languages_edit_form_submit($form, &$form_state, $form_values) {
/**
* User interface for the language deletion confirmation screen.
*/
-function locale_languages_delete_form($langcode) {
+function locale_languages_delete_form(&$form_state, $langcode) {
// Do not allow deletion of English locale.
if ($langcode == 'en') {
@@ -386,13 +386,13 @@ function locale_languages_delete_form($langcode) {
/**
* Process language deletion submissions.
*/
-function locale_languages_delete_form_submit($form, &$form_state, $form_values) {
+function locale_languages_delete_form_submit($form, &$form_state) {
$languages = language_list();
- if (isset($languages[$form_values['langcode']])) {
- db_query("DELETE FROM {languages} WHERE language = '%s'", $form_values['langcode']);
- db_query("DELETE FROM {locales_target} WHERE language = '%s'", $form_values['langcode']);
- db_query("UPDATE {node} SET language = '' WHERE language = '%s'", $form_values['langcode']);
- $variables = array('%locale' => $languages[$form_values['langcode']]->name);
+ if (isset($languages[$form_state['values']['langcode']])) {
+ db_query("DELETE FROM {languages} WHERE language = '%s'", $form_state['values']['langcode']);
+ db_query("DELETE FROM {locales_target} WHERE language = '%s'", $form_state['values']['langcode']);
+ db_query("UPDATE {node} SET language = '' WHERE language = '%s'", $form_state['values']['langcode']);
+ $variables = array('%locale' => $languages[$form_state['values']['langcode']]->name);
drupal_set_message(t('The language %locale has been removed.', $variables));
watchdog('locale', 'The language %locale has been removed.', $variables);
}
@@ -437,8 +437,8 @@ function locale_languages_configure_form() {
/**
* Submit function for language negotiation settings.
*/
-function locale_languages_configure_form_submit($form, &$form_state, $form_values) {
- variable_set('language_negotiation', $form_values['language_negotiation']);
+function locale_languages_configure_form_submit($form, &$form_state) {
+ variable_set('language_negotiation', $form_state['values']['language_negotiation']);
drupal_set_message(t('Language negotiation configuration saved.'));
$form_state['redirect'] = 'admin/settings/language';
return;
@@ -610,13 +610,13 @@ function locale_translate_import_form() {
/**
* Process the locale import form submission.
*/
-function locale_translate_import_form_submit($form, &$form_state, $form_values) {
+function locale_translate_import_form_submit($form, &$form_state) {
// Ensure we have the file uploaded
if ($file = file_save_upload('file')) {
// Add language, if not yet supported
$languages = language_list('language', TRUE);
- $langcode = $form_values['langcode'];
+ $langcode = $form_state['values']['langcode'];
if (!isset($languages[$langcode])) {
$predefined = _locale_get_predefined_list();
locale_add_language($langcode);
@@ -624,7 +624,7 @@ function locale_translate_import_form_submit($form, &$form_state, $form_values)
}
// Now import strings into the language
- if ($ret = _locale_import_po($file, $langcode, $form_values['mode'], $form_values['group']) == FALSE) {
+ if ($ret = _locale_import_po($file, $langcode, $form_state['values']['mode'], $form_state['values']['group']) == FALSE) {
$variables = array('%filename' => $file->filename);
drupal_set_message(t('The translation import of %filename failed.', $variables), 'error');
watchdog('locale', 'The translation import of %filename failed.', $variables, WATCHDOG_ERROR);
@@ -669,7 +669,7 @@ function locale_translate_export_screen() {
* @param $names
* An associate array with localized language names
*/
-function locale_translate_export_po_form($names) {
+function locale_translate_export_po_form(&$form_state, $names) {
$form['export'] = array('#type' => 'fieldset',
'#title' => t('Export translation'),
'#collapsible' => TRUE,
@@ -713,9 +713,9 @@ function locale_translate_export_pot_form() {
/**
* Process a translation (or template) export form submission.
*/
-function locale_translate_export_po_form_submit($form, &$form_state, $form_values) {
+function locale_translate_export_po_form_submit($form, &$form_state) {
// If template is required, language code is not given.
- _locale_export_po(isset($form_values['langcode']) ? $form_values['langcode'] : NULL, $form_values['group']);
+ _locale_export_po(isset($form_state['values']['langcode']) ? $form_state['values']['langcode'] : NULL, $form_state['values']['group']);
}
/**
* @} End of "locale-translate-export"
@@ -729,7 +729,7 @@ function locale_translate_export_po_form_submit($form, &$form_state, $form_value
/**
* User interface for string editing.
*/
-function locale_translate_edit_form($lid) {
+function locale_translate_edit_form(&$form_state, $lid) {
$languages = language_list();
unset($languages['en']);
@@ -782,9 +782,9 @@ function locale_translate_edit_form($lid) {
* Process string editing form submissions.
* Saves all translations of one string submitted from a form.
*/
-function locale_translate_edit_form_submit($form, &$form_state, $form_values) {
- $lid = $form_values['lid'];
- foreach ($form_values['translations'] as $key => $value) {
+function locale_translate_edit_form_submit($form, &$form_state) {
+ $lid = $form_state['values']['lid'];
+ foreach ($form_state['values']['translations'] as $key => $value) {
$trans = db_fetch_object(db_query("SELECT translation FROM {locales_target} WHERE lid = %d AND language = '%s'", $lid, $key));
if (isset($trans->translation)) {
db_query("UPDATE {locales_target} SET translation = '%s' WHERE lid = %d AND language = '%s'", $value, $lid, $key);