From 08d3f7f2820ed971ce5171c9ce9e15dbf452cf3f Mon Sep 17 00:00:00 2001 From: brettp Date: Mon, 5 Apr 2010 16:51:32 +0000 Subject: Merged 5605:5622 from 1.7 to trunk. git-svn-id: http://code.elgg.org/elgg/trunk@5623 36083f99-b078-4883-b0ff-0f9b5a30f544 --- mod/profile/actions/edit.php | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'mod/profile/actions/edit.php') diff --git a/mod/profile/actions/edit.php b/mod/profile/actions/edit.php index 207559334..baeb49108 100644 --- a/mod/profile/actions/edit.php +++ b/mod/profile/actions/edit.php @@ -29,15 +29,21 @@ if (!is_array($accesslevel)) { $accesslevel = array(); } +/** + * wrapper for recursive array walk decoding + */ +function profile_array_decoder(&$v) { + $v = html_entity_decode($v, ENT_COMPAT, 'UTF-8'); +} + + foreach($CONFIG->profile as $shortname => $valuetype) { // the decoding is a stop gag to prevent && showing up in profile fields // because it is escaped on both input (get_input()) and output (view:output/text). see #561 and #1405. // must decode in utf8 or string corruption occurs. see #1567. $value = get_input($shortname); if (is_array($value)) { - foreach ($value as $k => $v) { - $value[$k] = html_entity_decode($v, ENT_COMPAT, 'UTF-8'); - } + array_walk_recursive($value, 'profile_array_decoder'); } else { $value = html_entity_decode($value, ENT_COMPAT, 'UTF-8'); } @@ -104,4 +110,4 @@ if (sizeof($input) > 0) { system_message(elgg_echo("profile:saved")); } -forward($profile_owner->getUrl()); \ No newline at end of file +forward($profile_owner->getUrl()); -- cgit v1.2.3