aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engine/lib/upgrades/2010052601.php27
-rw-r--r--mod/groups/actions/edit.php295
-rw-r--r--mod/groups/views/default/forms/groups/edit.php8
-rw-r--r--version.php2
4 files changed, 178 insertions, 154 deletions
diff --git a/engine/lib/upgrades/2010052601.php b/engine/lib/upgrades/2010052601.php
new file mode 100644
index 000000000..5b477910f
--- /dev/null
+++ b/engine/lib/upgrades/2010052601.php
@@ -0,0 +1,27 @@
+<?php
+
+// Upgrade to fix encoding issues on group data: #1963
+
+elgg_set_ignore_access(TRUE);
+
+$params = array('type' => 'group',
+ 'limit' => 0);
+$groups = elgg_get_entities($params);
+if ($groups) {
+ foreach ($groups as $group) {
+ $group->name = html_entity_decode($group->name, ENT_COMPAT, 'UTF-8');
+ $group->description = html_entity_decode($group->description, ENT_COMPAT, 'UTF-8');
+ $group->briefdescription = html_entity_decode($group->briefdescription, ENT_COMPAT, 'UTF-8');
+ $group->website = html_entity_decode($group->website, ENT_COMPAT, 'UTF-8');
+ if ($group->interests) {
+ $tags = $group->interests;
+ foreach ($tags as $index=>$tag) {
+ $tags[$index] = html_entity_decode($tag, ENT_COMPAT, 'UTF-8');
+ }
+ $group->interests = $tags;
+ }
+
+ $group->save();
+ }
+}
+elgg_set_ignore_access(FALSE);
diff --git a/mod/groups/actions/edit.php b/mod/groups/actions/edit.php
index 72cc66e85..361f81757 100644
--- a/mod/groups/actions/edit.php
+++ b/mod/groups/actions/edit.php
@@ -1,156 +1,151 @@
<?php
- /**
- * Elgg groups plugin edit action.
- *
- * @package ElggGroups
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Curverider Ltd
- * @copyright Curverider Ltd 2008-2010
- * @link http://elgg.com/
- */
-
- // Load configuration
- global $CONFIG;
-
- // Get group fields
- $input = array();
- foreach($CONFIG->group as $shortname => $valuetype) {
- $input[$shortname] = get_input($shortname);
- if ($shortname == 'name') {
- $input[$shortname] = strip_tags($input[$shortname]);
- }
- if ($valuetype == 'tags')
- $input[$shortname] = string_to_tag_array($input[$shortname]);
- }
-
- $user_guid = get_input('user_guid');
- $user = NULL;
- if (!$user_guid) $user = $_SESSION['user'];
- else
- $user = get_entity($user_guid);
-
- $group_guid = get_input('group_guid');
-
- $group = new ElggGroup($group_guid); // load if present, if not create a new group
- if (($group_guid) && (!$group->canEdit()))
- {
- register_error(elgg_echo("groups:cantedit"));
-
- forward($_SERVER['HTTP_REFERER']);
- exit;
- }
-
- // Assume we can edit or this is a new group
- if (sizeof($input) > 0)
- {
- foreach($input as $shortname => $value) {
- $group->$shortname = $value;
- }
- }
-
- // Validate create
- if (!$group->name)
- {
- register_error(elgg_echo("groups:notitle"));
-
- forward($_SERVER['HTTP_REFERER']);
- exit;
+/**
+ * Elgg groups plugin edit action.
+ *
+ * @package ElggGroups
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
+ * @author Curverider Ltd
+ * @copyright Curverider Ltd 2008-2010
+ * @link http://elgg.com/
+ */
+
+// Load configuration
+global $CONFIG;
+
+// Get group fields
+$input = array();
+foreach ($CONFIG->group as $shortname => $valuetype) {
+ $input[$shortname] = get_input($shortname);
+ // another work around for Elgg's encoding problems: #561, #1963
+ $input[$shortname] = html_entity_decode($input[$shortname], ENT_COMPAT, 'UTF-8');
+ if ($shortname == 'name') {
+ $input[$shortname] = strip_tags($input[$shortname]);
}
-
- // Group membership - should these be treated with same constants as access permissions?
- switch (get_input('membership'))
- {
- case ACCESS_PUBLIC:
- $group->membership = ACCESS_PUBLIC;
- break;
- default:
- $group->membership = ACCESS_PRIVATE;
+ if ($valuetype == 'tags') {
+ $input[$shortname] = string_to_tag_array($input[$shortname]);
}
-
- // Set access - all groups are public from elgg's point of view, unless the override is in place
-
- if (get_plugin_setting('hidden_groups', 'groups') == 'yes')
- {
- $visibility = (int)get_input('vis','',false);
-
- $group->access_id = $visibility;
+}
+
+$user = get_loggedin_user();
+
+$group_guid = (int)get_input('group_guid');
+$new_group_flag = $group_guid == 0;
+
+$group = new ElggGroup($group_guid); // load if present, if not create a new group
+if (($group_guid) && (!$group->canEdit())) {
+ register_error(elgg_echo("groups:cantedit"));
+
+ forward($_SERVER['HTTP_REFERER']);
+ exit;
+}
+
+// Assume we can edit or this is a new group
+if (sizeof($input) > 0) {
+ foreach($input as $shortname => $value) {
+ $group->$shortname = $value;
}
- else
- $group->access_id = ACCESS_PUBLIC;
-
- // Set group tool options
- //$group->files_enable = get_input('files_enable', 'yes');
- //$group->pages_enable = get_input('pages_enable', 'yes');
- //$group->forum_enable = get_input('forum_enable', 'yes');
-
- // Set group tool options
- if (isset($CONFIG->group_tool_options)) {
- foreach($CONFIG->group_tool_options as $group_option) {
- $group_option_toggle_name = $group_option->name."_enable";
- if ($group_option->default_on) {
- $group_option_default_value = 'yes';
- } else {
- $group_option_default_value = 'no';
- }
- $group->$group_option_toggle_name = get_input($group_option_toggle_name, $group_option_default_value);
- }
- }
-
- $group->save();
-
- if (!$group->isMember($user))
- $group->join($user); // Creator always a member
-
-
- // Now see if we have a file icon
- if ((isset($_FILES['icon'])) && (substr_count($_FILES['icon']['type'],'image/')))
- {
- $prefix = "groups/".$group->guid;
-
- $filehandler = new ElggFile();
- $filehandler->owner_guid = $group->owner_guid;
- $filehandler->setFilename($prefix . ".jpg");
- $filehandler->open("write");
- $filehandler->write(get_uploaded_file('icon'));
- $filehandler->close();
-
- $thumbtiny = get_resized_image_from_existing_file($filehandler->getFilenameOnFilestore(),25,25, true);
- $thumbsmall = get_resized_image_from_existing_file($filehandler->getFilenameOnFilestore(),40,40, true);
- $thumbmedium = get_resized_image_from_existing_file($filehandler->getFilenameOnFilestore(),100,100, true);
- $thumblarge = get_resized_image_from_existing_file($filehandler->getFilenameOnFilestore(),200,200, false);
- if ($thumbtiny) {
-
- $thumb = new ElggFile();
- $thumb->owner_guid = $group->owner_guid;
- $thumb->setMimeType('image/jpeg');
-
- $thumb->setFilename($prefix."tiny.jpg");
- $thumb->open("write");
- $thumb->write($thumbtiny);
- $thumb->close();
-
- $thumb->setFilename($prefix."small.jpg");
- $thumb->open("write");
- $thumb->write($thumbsmall);
- $thumb->close();
-
- $thumb->setFilename($prefix."medium.jpg");
- $thumb->open("write");
- $thumb->write($thumbmedium);
- $thumb->close();
-
- $thumb->setFilename($prefix."large.jpg");
- $thumb->open("write");
- $thumb->write($thumblarge);
- $thumb->close();
-
- $group->icontime = time();
+}
+
+// Validate create
+if (!$group->name) {
+ register_error(elgg_echo("groups:notitle"));
+
+ forward($_SERVER['HTTP_REFERER']);
+ exit;
+}
+
+// Group membership - should these be treated with same constants as access permissions?
+switch (get_input('membership')) {
+ case ACCESS_PUBLIC:
+ $group->membership = ACCESS_PUBLIC;
+ break;
+ default:
+ $group->membership = ACCESS_PRIVATE;
+}
+
+// Set access - all groups are public from elgg's point of view, unless the override is in place
+if (get_plugin_setting('hidden_groups', 'groups') == 'yes') {
+ $visibility = (int)get_input('vis','',false);
+
+ $group->access_id = $visibility;
+} else {
+ $group->access_id = ACCESS_PUBLIC;
+}
+
+// Set group tool options
+//$group->files_enable = get_input('files_enable', 'yes');
+//$group->pages_enable = get_input('pages_enable', 'yes');
+//$group->forum_enable = get_input('forum_enable', 'yes');
+
+// Set group tool options
+if (isset($CONFIG->group_tool_options)) {
+ foreach($CONFIG->group_tool_options as $group_option) {
+ $group_option_toggle_name = $group_option->name."_enable";
+ if ($group_option->default_on) {
+ $group_option_default_value = 'yes';
+ } else {
+ $group_option_default_value = 'no';
}
+ $group->$group_option_toggle_name = get_input($group_option_toggle_name, $group_option_default_value);
}
-
- system_message(elgg_echo("groups:saved"));
-
- // Forward to the user's profile
- forward($group->getUrl());
- exit;
-?>
+}
+
+$group->save();
+
+// group creator needs to be member of new group
+if ($new_group_flag) {
+ $group->join($user);
+}
+
+
+
+// Now see if we have a file icon
+if ((isset($_FILES['icon'])) && (substr_count($_FILES['icon']['type'],'image/'))) {
+ $prefix = "groups/".$group->guid;
+
+ $filehandler = new ElggFile();
+ $filehandler->owner_guid = $group->owner_guid;
+ $filehandler->setFilename($prefix . ".jpg");
+ $filehandler->open("write");
+ $filehandler->write(get_uploaded_file('icon'));
+ $filehandler->close();
+
+ $thumbtiny = get_resized_image_from_existing_file($filehandler->getFilenameOnFilestore(),25,25, true);
+ $thumbsmall = get_resized_image_from_existing_file($filehandler->getFilenameOnFilestore(),40,40, true);
+ $thumbmedium = get_resized_image_from_existing_file($filehandler->getFilenameOnFilestore(),100,100, true);
+ $thumblarge = get_resized_image_from_existing_file($filehandler->getFilenameOnFilestore(),200,200, false);
+ if ($thumbtiny) {
+
+ $thumb = new ElggFile();
+ $thumb->owner_guid = $group->owner_guid;
+ $thumb->setMimeType('image/jpeg');
+
+ $thumb->setFilename($prefix."tiny.jpg");
+ $thumb->open("write");
+ $thumb->write($thumbtiny);
+ $thumb->close();
+
+ $thumb->setFilename($prefix."small.jpg");
+ $thumb->open("write");
+ $thumb->write($thumbsmall);
+ $thumb->close();
+
+ $thumb->setFilename($prefix."medium.jpg");
+ $thumb->open("write");
+ $thumb->write($thumbmedium);
+ $thumb->close();
+
+ $thumb->setFilename($prefix."large.jpg");
+ $thumb->open("write");
+ $thumb->write($thumblarge);
+ $thumb->close();
+
+ $group->icontime = time();
+ }
+}
+
+system_message(elgg_echo("groups:saved"));
+
+
+forward($group->getUrl());
+
diff --git a/mod/groups/views/default/forms/groups/edit.php b/mod/groups/views/default/forms/groups/edit.php
index c0c9591f3..fbc8c0777 100644
--- a/mod/groups/views/default/forms/groups/edit.php
+++ b/mod/groups/views/default/forms/groups/edit.php
@@ -132,11 +132,13 @@ if (is_array($vars['config']->group) && sizeof($vars['config']->group) > 0)
?>
<p>
<?php
- if ($vars['entity']) {
- ?><input type="hidden" name="group_guid" value="<?php echo $vars['entity']->getGUID(); ?>" /><?php
+ if ($vars['entity'])
+ {
+ ?>
+ <input type="hidden" name="group_guid" value="<?php echo $vars['entity']->getGUID(); ?>" />
+ <?php
}
?>
- <input type="hidden" name="user_guid" value="<?php echo page_owner_entity()->guid; ?>" />
<input type="submit" class="submit_button" value="<?php echo elgg_echo("save"); ?>" />
</p>
diff --git a/version.php b/version.php
index 62fb107ef..bfa62f449 100644
--- a/version.php
+++ b/version.php
@@ -12,7 +12,7 @@
// YYYYMMDD = Elgg Date
// XX = Interim incrementer
-$version = 2010050701;
+$version = 2010052601;
// Human-friendly version name
$release = '1.8-svn';