aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engine/lib/input.php24
-rw-r--r--mod/blog/lib/blog.php21
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;