diff options
-rw-r--r-- | engine/lib/input.php | 24 | ||||
-rw-r--r-- | mod/blog/lib/blog.php | 21 |
2 files changed, 37 insertions, 8 deletions
diff --git a/engine/lib/input.php b/engine/lib/input.php index c3fabbe5d..25416b868 100644 --- a/engine/lib/input.php +++ b/engine/lib/input.php @@ -181,6 +181,30 @@ function elgg_get_sticky_value($form_name, $variable = '', $default = NULL, $fil } /** + * Get all the values in a sticky form in an array + * + * @param string $form_name The name of the form + * @param bool $filter_result Filter for bad input if true + * + * @return array + * @since 1.8.0 + */ +function elgg_get_sticky_values($form_name, $filter_result = true) { + if (!isset($_SESSION['sticky_forms'][$form_name])) { + return array(); + } + + $values = $_SESSION['sticky_forms'][$form_name]; + if ($filter_result) { + foreach ($values as $key => $value) { + // XSS filter result + $values[$key] = filter_tags($value); + } + } + return $values; +} + +/** * Clear a specific sticky variable * * @param string $form_name The name of the form diff --git a/mod/blog/lib/blog.php b/mod/blog/lib/blog.php index e5a44a200..512f8f6d5 100644 --- a/mod/blog/lib/blog.php +++ b/mod/blog/lib/blog.php @@ -248,6 +248,8 @@ function blog_get_page_content_archive($owner_guid, $lower = 0, $upper = 0) { */ function blog_get_page_content_edit($page, $guid = 0, $revision = NULL) { + elgg_load_js('elgg.blog'); + $return = array( 'buttons' => '', 'filter' => '', @@ -338,24 +340,27 @@ function blog_prepare_form_vars($post = NULL, $revision = NULL) { 'draft_warning' => '', ); - if (elgg_is_sticky_form('blog')) { + if ($post) { foreach (array_keys($values) as $field) { - $values[$field] = elgg_get_sticky_value('blog', $field); + if (isset($post->$field)) { + $values[$field] = $post->$field; + } } } + if (elgg_is_sticky_form('blog')) { + $sticky_values = elgg_get_sticky_values('blog'); + foreach ($sticky_values as $key => $value) { + $values[$key] = $value; + } + } + elgg_clear_sticky_form('blog'); if (!$post) { return $values; } - foreach (array_keys($values) as $field) { - $values[$field] = $post->$field; - } - - $values['entity'] = $post; - // load the revision annotation if requested if ($revision instanceof ElggAnnotation && $revision->entity_guid == $post->getGUID()) { $values['revision'] = $revision; |