diff options
author | cash <cash.costello@gmail.com> | 2011-10-01 21:51:53 -0400 |
---|---|---|
committer | cash <cash.costello@gmail.com> | 2011-10-01 21:51:53 -0400 |
commit | 3f3994647b238f05233da5f22f75a88582562308 (patch) | |
tree | a867edc42c19f417a57da709b08d8ec96c1e1556 | |
parent | 00433c37e49e1ca706809a1a5f1c515cd784fc22 (diff) | |
download | elgg-3f3994647b238f05233da5f22f75a88582562308.tar.gz elgg-3f3994647b238f05233da5f22f75a88582562308.tar.bz2 |
Fixes #3686 added work around for PHP bug when validating URLs with dashes
-rw-r--r-- | mod/bookmarks/actions/bookmarks/save.php | 19 | ||||
-rw-r--r-- | mod/bookmarks/languages/en.php | 3 |
2 files changed, 20 insertions, 2 deletions
diff --git a/mod/bookmarks/actions/bookmarks/save.php b/mod/bookmarks/actions/bookmarks/save.php index 19bb3c73a..f240c4b26 100644 --- a/mod/bookmarks/actions/bookmarks/save.php +++ b/mod/bookmarks/actions/bookmarks/save.php @@ -24,7 +24,24 @@ if ($address && !preg_match("#^((ht|f)tps?:)?//#i", $address)) { $address = "http://$address"; } -if (!$title || !$address || !filter_var($address, FILTER_VALIDATE_URL)) { +if (!$title || !$address) { + register_error(elgg_echo('bookmarks:save:failed')); + forward(REFERER); +} + +// see https://bugs.php.net/bug.php?id=51192 +$php_5_2_13_and_below = version_compare(PHP_VERSION, '5.2.14', '<'); +$php_5_3_0_to_5_3_2 = version_compare(PHP_VERSION, '5.3.0', '>=') && + version_compare(PHP_VERSION, '5.3.3', '<'); + +$validated = false; +if ($php_5_2_13_and_below || $php_5_3_0_to_5_3_2) { + $tmp_address = str_replace("-", "", $address); + $validated = filter_var($tmp_address, FILTER_VALIDATE_URL); +} else { + $validated = filter_var($address, FILTER_VALIDATE_URL); +} +if (!$validated) { register_error(elgg_echo('bookmarks:save:failed')); forward(REFERER); } diff --git a/mod/bookmarks/languages/en.php b/mod/bookmarks/languages/en.php index 1d32a0344..0478e292f 100644 --- a/mod/bookmarks/languages/en.php +++ b/mod/bookmarks/languages/en.php @@ -24,7 +24,7 @@ $english = array( 'bookmarks:with' => "Share with", 'bookmarks:new' => "A new bookmark", 'bookmarks:via' => "via bookmarks", - 'bookmarks:address' => "Address of the resource to bookmark", + 'bookmarks:address' => "Address of the bookmark", 'bookmarks:none' => 'No bookmarks', 'bookmarks:delete:confirm' => "Are you sure you want to delete this resource?", @@ -75,6 +75,7 @@ $english = array( */ 'bookmarks:save:failed' => "Your bookmark could not be saved. Make sure you've entered a title and address and then try again.", + 'bookmarks:save:invalid' => "The address of the bookmark is invalid and could nto be saved.", 'bookmarks:delete:failed' => "Your bookmark could not be deleted. Please try again.", ); |