diff options
Diffstat (limited to 'engine/lib')
| -rw-r--r-- | engine/lib/deprecated-1.9.php | 582 | ||||
| -rw-r--r-- | engine/lib/output.php | 42 | ||||
| -rw-r--r-- | engine/lib/upgrades/2010052601.php | 12 | ||||
| -rw-r--r-- | engine/lib/views.php | 2 | 
4 files changed, 631 insertions, 7 deletions
diff --git a/engine/lib/deprecated-1.9.php b/engine/lib/deprecated-1.9.php new file mode 100644 index 000000000..31d03428f --- /dev/null +++ b/engine/lib/deprecated-1.9.php @@ -0,0 +1,582 @@ +<?php +/** + * Return a timestamp for the start of a given day (defaults today). + * + * @param int $day   Day + * @param int $month Month + * @param int $year  Year + * + * @return int + * @access private + * @deprecated 1.9 + */ +function get_day_start($day = null, $month = null, $year = null) { +	elgg_deprecated_notice('get_day_start() has been deprecated', 1.9); +	return mktime(0, 0, 0, $month, $day, $year); +} + +/** + * Return a timestamp for the end of a given day (defaults today). + * + * @param int $day   Day + * @param int $month Month + * @param int $year  Year + * + * @return int + * @access private + * @deprecated 1.9 + */ +function get_day_end($day = null, $month = null, $year = null) { +	elgg_deprecated_notice('get_day_end() has been deprecated', 1.9); +	return mktime(23, 59, 59, $month, $day, $year); +} + +/** + * Return the notable entities for a given time period. + * + * @param int     $start_time     The start time as a unix timestamp. + * @param int     $end_time       The end time as a unix timestamp. + * @param string  $type           The type of entity (eg "user", "object" etc) + * @param string  $subtype        The arbitrary subtype of the entity + * @param int     $owner_guid     The GUID of the owning user + * @param string  $order_by       The field to order by; by default, time_created desc + * @param int     $limit          The number of entities to return; 10 by default + * @param int     $offset         The indexing offset, 0 by default + * @param boolean $count          Set to true to get a count instead of entities. Defaults to false. + * @param int     $site_guid      Site to get entities for. Default 0 = current site. -1 = any. + * @param mixed   $container_guid Container or containers to get entities from (default: any). + * + * @return array|false + * @access private + * @deprecated 1.9 + */ +function get_notable_entities($start_time, $end_time, $type = "", $subtype = "", $owner_guid = 0, +$order_by = "asc", $limit = 10, $offset = 0, $count = false, $site_guid = 0, +$container_guid = null) { +	elgg_deprecated_notice('get_notable_entities() has been deprecated', 1.9); +	global $CONFIG; + +	if ($subtype === false || $subtype === null || $subtype === 0) { +		return false; +	} + +	$start_time = (int)$start_time; +	$end_time = (int)$end_time; +	$order_by = sanitise_string($order_by); +	$limit = (int)$limit; +	$offset = (int)$offset; +	$site_guid = (int) $site_guid; +	if ($site_guid == 0) { +		$site_guid = $CONFIG->site_guid; +	} + +	$where = array(); + +	if (is_array($type)) { +		$tempwhere = ""; +		if (sizeof($type)) { +			foreach ($type as $typekey => $subtypearray) { +				foreach ($subtypearray as $subtypeval) { +					$typekey = sanitise_string($typekey); +					if (!empty($subtypeval)) { +						$subtypeval = (int) get_subtype_id($typekey, $subtypeval); +					} else { +						$subtypeval = 0; +					} +					if (!empty($tempwhere)) { +						$tempwhere .= " or "; +					} +					$tempwhere .= "(e.type = '{$typekey}' and e.subtype = {$subtypeval})"; +				} +			} +		} +		if (!empty($tempwhere)) { +			$where[] = "({$tempwhere})"; +		} +	} else { +		$type = sanitise_string($type); +		$subtype = get_subtype_id($type, $subtype); + +		if ($type != "") { +			$where[] = "e.type='$type'"; +		} + +		if ($subtype !== "") { +			$where[] = "e.subtype=$subtype"; +		} +	} + +	if ($owner_guid != "") { +		if (!is_array($owner_guid)) { +			$owner_array = array($owner_guid); +			$owner_guid = (int) $owner_guid; +			$where[] = "e.owner_guid = '$owner_guid'"; +		} else if (sizeof($owner_guid) > 0) { +			$owner_array = array_map('sanitise_int', $owner_guid); +			// Cast every element to the owner_guid array to int +			$owner_guid = implode(",", $owner_guid); +			$where[] = "e.owner_guid in ({$owner_guid})"; +		} +		if (is_null($container_guid)) { +			$container_guid = $owner_array; +		} +	} + +	if ($site_guid > 0) { +		$where[] = "e.site_guid = {$site_guid}"; +	} + +	if (!is_null($container_guid)) { +		if (is_array($container_guid)) { +			foreach ($container_guid as $key => $val) { +				$container_guid[$key] = (int) $val; +			} +			$where[] = "e.container_guid in (" . implode(",", $container_guid) . ")"; +		} else { +			$container_guid = (int) $container_guid; +			$where[] = "e.container_guid = {$container_guid}"; +		} +	} + +	// Add the calendar stuff +	$cal_join = " +		JOIN {$CONFIG->dbprefix}metadata cal_start on e.guid=cal_start.entity_guid +		JOIN {$CONFIG->dbprefix}metastrings cal_start_name on cal_start.name_id=cal_start_name.id +		JOIN {$CONFIG->dbprefix}metastrings cal_start_value on cal_start.value_id=cal_start_value.id + +		JOIN {$CONFIG->dbprefix}metadata cal_end on e.guid=cal_end.entity_guid +		JOIN {$CONFIG->dbprefix}metastrings cal_end_name on cal_end.name_id=cal_end_name.id +		JOIN {$CONFIG->dbprefix}metastrings cal_end_value on cal_end.value_id=cal_end_value.id +	"; +	$where[] = "cal_start_name.string='calendar_start'"; +	$where[] = "cal_start_value.string>=$start_time"; +	$where[] = "cal_end_name.string='calendar_end'"; +	$where[] = "cal_end_value.string <= $end_time"; + + +	if (!$count) { +		$query = "SELECT e.* from {$CONFIG->dbprefix}entities e $cal_join where "; +	} else { +		$query = "SELECT count(e.guid) as total from {$CONFIG->dbprefix}entities e $cal_join where "; +	} +	foreach ($where as $w) { +		$query .= " $w and "; +	} + +	$query .= get_access_sql_suffix('e'); // Add access controls + +	if (!$count) { +		$query .= " order by n.calendar_start $order_by"; +		// Add order and limit +		if ($limit) { +			$query .= " limit $offset, $limit"; +		} +		$dt = get_data($query, "entity_row_to_elggstar"); + +		return $dt; +	} else { +		$total = get_data_row($query); +		return $total->total; +	} +} + +/** + * Return the notable entities for a given time period based on an item of metadata. + * + * @param int    $start_time     The start time as a unix timestamp. + * @param int    $end_time       The end time as a unix timestamp. + * @param mixed  $meta_name      Metadata name + * @param mixed  $meta_value     Metadata value + * @param string $entity_type    The type of entity to look for, eg 'site' or 'object' + * @param string $entity_subtype The subtype of the entity. + * @param int    $owner_guid     Owner GUID + * @param int    $limit          Limit + * @param int    $offset         Offset + * @param string $order_by       Optional ordering. + * @param int    $site_guid      Site to get entities for. Default 0 = current site. -1 = any. + * @param bool   $count          If true, returns count instead of entities. (Default: false) + * + * @return int|array A list of entities, or a count if $count is set to true + * @access private + * @deprecated 1.9 + */ +function get_notable_entities_from_metadata($start_time, $end_time, $meta_name, $meta_value = "", +$entity_type = "", $entity_subtype = "", $owner_guid = 0, $limit = 10, $offset = 0, $order_by = "", +$site_guid = 0, $count = false) { +	elgg_deprecated_notice('get_notable_entities_from_metadata() has been deprecated', 1.9); + +	global $CONFIG; + +	$meta_n = get_metastring_id($meta_name); +	$meta_v = get_metastring_id($meta_value); + +	$start_time = (int)$start_time; +	$end_time = (int)$end_time; +	$entity_type = sanitise_string($entity_type); +	$entity_subtype = get_subtype_id($entity_type, $entity_subtype); +	$limit = (int)$limit; +	$offset = (int)$offset; +	if ($order_by == "") { +		$order_by = "e.time_created desc"; +	} +	$order_by = sanitise_string($order_by); +	$site_guid = (int) $site_guid; +	if ((is_array($owner_guid) && (count($owner_guid)))) { +		foreach ($owner_guid as $key => $guid) { +			$owner_guid[$key] = (int) $guid; +		} +	} else { +		$owner_guid = (int) $owner_guid; +	} + +	if ($site_guid == 0) { +		$site_guid = $CONFIG->site_guid; +	} + +	//$access = get_access_list(); + +	$where = array(); + +	if ($entity_type != "") { +		$where[] = "e.type='$entity_type'"; +	} + +	if ($entity_subtype) { +		$where[] = "e.subtype=$entity_subtype"; +	} + +	if ($meta_name != "") { +		$where[] = "m.name_id='$meta_n'"; +	} + +	if ($meta_value != "") { +		$where[] = "m.value_id='$meta_v'"; +	} + +	if ($site_guid > 0) { +		$where[] = "e.site_guid = {$site_guid}"; +	} + +	if (is_array($owner_guid)) { +		$where[] = "e.container_guid in (" . implode(",", $owner_guid) . ")"; +	} else if ($owner_guid > 0) { +		$where[] = "e.container_guid = {$owner_guid}"; +	} + +	// Add the calendar stuff +	$cal_join = " +		JOIN {$CONFIG->dbprefix}metadata cal_start on e.guid=cal_start.entity_guid +		JOIN {$CONFIG->dbprefix}metastrings cal_start_name on cal_start.name_id=cal_start_name.id +		JOIN {$CONFIG->dbprefix}metastrings cal_start_value on cal_start.value_id=cal_start_value.id + +		JOIN {$CONFIG->dbprefix}metadata cal_end on e.guid=cal_end.entity_guid +		JOIN {$CONFIG->dbprefix}metastrings cal_end_name on cal_end.name_id=cal_end_name.id +		JOIN {$CONFIG->dbprefix}metastrings cal_end_value on cal_end.value_id=cal_end_value.id +	"; + +	$where[] = "cal_start_name.string='calendar_start'"; +	$where[] = "cal_start_value.string>=$start_time"; +	$where[] = "cal_end_name.string='calendar_end'"; +	$where[] = "cal_end_value.string <= $end_time"; + +	if (!$count) { +		$query = "SELECT distinct e.* "; +	} else { +		$query = "SELECT count(distinct e.guid) as total "; +	} + +	$query .= "from {$CONFIG->dbprefix}entities e" +	. " JOIN {$CONFIG->dbprefix}metadata m on e.guid = m.entity_guid $cal_join where"; + +	foreach ($where as $w) { +		$query .= " $w and "; +	} + +	// Add access controls +	$query .= get_access_sql_suffix("e"); +	$query .= ' and ' . get_access_sql_suffix("m"); + +	if (!$count) { +		// Add order and limit +		$query .= " order by $order_by limit $offset, $limit"; +		return get_data($query, "entity_row_to_elggstar"); +	} else { +		if ($row = get_data_row($query)) { +			return $row->total; +		} +	} + +	return false; +} + +/** + * Return the notable entities for a given time period based on their relationship. + * + * @param int     $start_time           The start time as a unix timestamp. + * @param int     $end_time             The end time as a unix timestamp. + * @param string  $relationship         The relationship eg "friends_of" + * @param int     $relationship_guid    The guid of the entity to use query + * @param bool    $inverse_relationship Reverse the normal function of the query to say + *                                      "give me all entities for whom $relationship_guid is a + *                                      $relationship of" + * @param string  $type                 Entity type + * @param string  $subtype              Entity subtype + * @param int     $owner_guid           Owner GUID + * @param string  $order_by             Optional Order by + * @param int     $limit                Limit + * @param int     $offset               Offset + * @param boolean $count                If true returns a count of entities (default false) + * @param int     $site_guid            Site to get entities for. Default 0 = current site. -1 = any + * + * @return array|int|false An array of entities, or the number of entities, or false on failure + * @access private + * @deprecated 1.9 + */ +function get_noteable_entities_from_relationship($start_time, $end_time, $relationship, +$relationship_guid, $inverse_relationship = false, $type = "", $subtype = "", $owner_guid = 0, +$order_by = "", $limit = 10, $offset = 0, $count = false, $site_guid = 0) { +	elgg_deprecated_notice('get_noteable_entities_from_relationship() has been deprecated', 1.9); + +	global $CONFIG; + +	$start_time = (int)$start_time; +	$end_time = (int)$end_time; +	$relationship = sanitise_string($relationship); +	$relationship_guid = (int)$relationship_guid; +	$inverse_relationship = (bool)$inverse_relationship; +	$type = sanitise_string($type); +	$subtype = get_subtype_id($type, $subtype); +	$owner_guid = (int)$owner_guid; +	if ($order_by == "") { +		$order_by = "time_created desc"; +	} +	$order_by = sanitise_string($order_by); +	$limit = (int)$limit; +	$offset = (int)$offset; +	$site_guid = (int) $site_guid; +	if ($site_guid == 0) { +		$site_guid = $CONFIG->site_guid; +	} + +	//$access = get_access_list(); + +	$where = array(); + +	if ($relationship != "") { +		$where[] = "r.relationship='$relationship'"; +	} +	if ($relationship_guid) { +		$where[] = $inverse_relationship ? +			"r.guid_two='$relationship_guid'" : "r.guid_one='$relationship_guid'"; +	} +	if ($type != "") { +		$where[] = "e.type='$type'"; +	} +	if ($subtype) { +		$where[] = "e.subtype=$subtype"; +	} +	if ($owner_guid != "") { +		$where[] = "e.container_guid='$owner_guid'"; +	} +	if ($site_guid > 0) { +		$where[] = "e.site_guid = {$site_guid}"; +	} + +	// Add the calendar stuff +	$cal_join = " +		JOIN {$CONFIG->dbprefix}metadata cal_start on e.guid=cal_start.entity_guid +		JOIN {$CONFIG->dbprefix}metastrings cal_start_name on cal_start.name_id=cal_start_name.id +		JOIN {$CONFIG->dbprefix}metastrings cal_start_value on cal_start.value_id=cal_start_value.id + +		JOIN {$CONFIG->dbprefix}metadata cal_end on e.guid=cal_end.entity_guid +		JOIN {$CONFIG->dbprefix}metastrings cal_end_name on cal_end.name_id=cal_end_name.id +		JOIN {$CONFIG->dbprefix}metastrings cal_end_value on cal_end.value_id=cal_end_value.id +	"; +	$where[] = "cal_start_name.string='calendar_start'"; +	$where[] = "cal_start_value.string>=$start_time"; +	$where[] = "cal_end_name.string='calendar_end'"; +	$where[] = "cal_end_value.string <= $end_time"; + +	// Select what we're joining based on the options +	$joinon = "e.guid = r.guid_one"; +	if (!$inverse_relationship) { +		$joinon = "e.guid = r.guid_two"; +	} + +	if ($count) { +		$query = "SELECT count(distinct e.guid) as total "; +	} else { +		$query = "SELECT distinct e.* "; +	} +	$query .= " from {$CONFIG->dbprefix}entity_relationships r" +	. " JOIN {$CONFIG->dbprefix}entities e on $joinon $cal_join where "; + +	foreach ($where as $w) { +		$query .= " $w and "; +	} +	// Add access controls +	$query .= get_access_sql_suffix("e"); +	if (!$count) { +		$query .= " order by $order_by limit $offset, $limit"; // Add order and limit +		return get_data($query, "entity_row_to_elggstar"); +	} else { +		if ($count = get_data_row($query)) { +			return $count->total; +		} +	} +	return false; +} + +/** + * Get all entities for today. + * + * @param string  $type           The type of entity (eg "user", "object" etc) + * @param string  $subtype        The arbitrary subtype of the entity + * @param int     $owner_guid     The GUID of the owning user + * @param string  $order_by       The field to order by; by default, time_created desc + * @param int     $limit          The number of entities to return; 10 by default + * @param int     $offset         The indexing offset, 0 by default + * @param boolean $count          If true returns a count of entities (default false) + * @param int     $site_guid      Site to get entities for. Default 0 = current site. -1 = any + * @param mixed   $container_guid Container(s) to get entities from (default: any). + * + * @return array|false + * @access private + * @deprecated 1.9 + */ +function get_todays_entities($type = "", $subtype = "", $owner_guid = 0, $order_by = "", +$limit = 10, $offset = 0, $count = false, $site_guid = 0, $container_guid = null) { +	elgg_deprecated_notice('get_todays_entities() has been deprecated', 1.9); + +	$day_start = get_day_start(); +	$day_end = get_day_end(); + +	return get_notable_entities($day_start, $day_end, $type, $subtype, $owner_guid, $order_by, +		$limit, $offset, $count, $site_guid, $container_guid); +} + +/** + * Get entities for today from metadata. + * + * @param mixed  $meta_name      Metadata name + * @param mixed  $meta_value     Metadata value + * @param string $entity_type    The type of entity to look for, eg 'site' or 'object' + * @param string $entity_subtype The subtype of the entity. + * @param int    $owner_guid     Owner GUID + * @param int    $limit          Limit + * @param int    $offset         Offset + * @param string $order_by       Optional ordering. + * @param int    $site_guid      Site to get entities for. Default 0 = current site. -1 = any. + * @param bool   $count          If true, returns count instead of entities. (Default: false) + * + * @return int|array A list of entities, or a count if $count is set to true + * @access private + * @deprecated 1.9 + */ +function get_todays_entities_from_metadata($meta_name, $meta_value = "", $entity_type = "", +$entity_subtype = "", $owner_guid = 0, $limit = 10, $offset = 0, $order_by = "", $site_guid = 0, +$count = false) { +	elgg_deprecated_notice('get_todays_entities_from_metadata() has been deprecated', 1.9); + +	$day_start = get_day_start(); +	$day_end = get_day_end(); + +	return get_notable_entities_from_metadata($day_start, $day_end, $meta_name, $meta_value, +		$entity_type, $entity_subtype, $owner_guid, $limit, $offset, $order_by, $site_guid, $count); +} + +/** + * Get entities for today from a relationship + * + * @param string  $relationship         The relationship eg "friends_of" + * @param int     $relationship_guid    The guid of the entity to use query + * @param bool    $inverse_relationship Reverse the normal function of the query to say + *                                      "give me all entities for whom $relationship_guid is a + *                                      $relationship of" + * @param string  $type                 Entity type + * @param string  $subtype              Entity subtype + * @param int     $owner_guid           Owner GUID + * @param string  $order_by             Optional Order by + * @param int     $limit                Limit + * @param int     $offset               Offset + * @param boolean $count                If true returns a count of entities (default false) + * @param int     $site_guid            Site to get entities for. Default 0 = current site. -1 = any + * + * @return array|int|false An array of entities, or the number of entities, or false on failure + * @access private + * @deprecated 1.9 + */ +function get_todays_entities_from_relationship($relationship, $relationship_guid, +$inverse_relationship = false, $type = "", $subtype = "", $owner_guid = 0, +$order_by = "", $limit = 10, $offset = 0, $count = false, $site_guid = 0) { +	elgg_deprecated_notice('get_todays_entities_from_relationship() has been deprecated', 1.9); + +	$day_start = get_day_start(); +	$day_end = get_day_end(); + +	return get_notable_entities_from_relationship($day_start, $day_end, $relationship, +		$relationship_guid,	$inverse_relationship, $type, $subtype, $owner_guid, $order_by, +		$limit, $offset, $count, $site_guid); +} + +/** + * Returns a viewable list of entities for a given time period. + * + * @see elgg_view_entity_list + * + * @param int     $start_time     The start time as a unix timestamp. + * @param int     $end_time       The end time as a unix timestamp. + * @param string  $type           The type of entity (eg "user", "object" etc) + * @param string  $subtype        The arbitrary subtype of the entity + * @param int     $owner_guid     The GUID of the owning user + * @param int     $limit          The number of entities to return; 10 by default + * @param boolean $fullview       Whether or not to display the full view (default: true) + * @param boolean $listtypetoggle Whether or not to allow gallery view + * @param boolean $navigation     Display pagination? Default: true + * + * @return string A viewable list of entities + * @access private + * @deprecated 1.9 + */ +function list_notable_entities($start_time, $end_time, $type= "", $subtype = "", $owner_guid = 0, +$limit = 10, $fullview = true, $listtypetoggle = false, $navigation = true) { +	elgg_deprecated_notice('list_notable_entities() has been deprecated', 1.9); + +	$offset = (int) get_input('offset'); +	$count = get_notable_entities($start_time, $end_time, $type, $subtype, +		$owner_guid, "", $limit, $offset, true); + +	$entities = get_notable_entities($start_time, $end_time, $type, $subtype, +		$owner_guid, "", $limit, $offset); + +	return elgg_view_entity_list($entities, $count, $offset, $limit, +		$fullview, $listtypetoggle, $navigation); +} + +/** + * Return a list of today's entities. + * + * @see list_notable_entities + * + * @param string  $type           The type of entity (eg "user", "object" etc) + * @param string  $subtype        The arbitrary subtype of the entity + * @param int     $owner_guid     The GUID of the owning user + * @param int     $limit          The number of entities to return; 10 by default + * @param boolean $fullview       Whether or not to display the full view (default: true) + * @param boolean $listtypetoggle Whether or not to allow gallery view + * @param boolean $navigation     Display pagination? Default: true + * + * @return string A viewable list of entities + * @access private + * @deprecated 1.9 + */ +function list_todays_entities($type= "", $subtype = "", $owner_guid = 0, $limit = 10, +$fullview = true, $listtypetoggle = false, $navigation = true) { +	elgg_deprecated_notice('list_todays_entities() has been deprecated', 1.9); + +	$day_start = get_day_start(); +	$day_end = get_day_end(); + +	return list_notable_entities($day_start, $day_end, $type, $subtype, $owner_guid, $limit, +		$fullview, $listtypetoggle, $navigation); +} diff --git a/engine/lib/output.php b/engine/lib/output.php index 0069360f0..352de863b 100644 --- a/engine/lib/output.php +++ b/engine/lib/output.php @@ -398,3 +398,45 @@ function elgg_strip_tags($string) {  	return $string;  } + +/** + * Apply html_entity_decode() to a string while re-entitising HTML + * special char entities to prevent them from being decoded back to their + * unsafe original forms. + * + * This relies on html_entity_decode() not translating entities when + * doing so leaves behind another entity, e.g. &gt; if decoded would + * create > which is another entity itself. This seems to escape the + * usual behaviour where any two paired entities creating a HTML tag are + * usually decoded, i.e. a lone > is not decoded, but <foo> would + * be decoded to <foo> since it creates a full tag. + * + * Note: This function is poorly explained in the manual - which is really + * bad given its potential for misuse on user input already escaped elsewhere. + * Stackoverflow is littered with advice to use this function in the precise + * way that would lead to user input being capable of injecting arbitrary HTML. + * + * @param string $string + * + * @return string + * + * @author Pádraic Brady + * @copyright Copyright (c) 2010 Pádraic Brady (http://blog.astrumfutura.com) + * @license Released under dual-license GPL2/MIT by explicit permission of Pádraic Brady + * + * @access private + */ +function _elgg_html_decode($string) { +	$string = str_replace( +		array('>', '<', '&', '"', '''), +		array('&gt;', '&lt;', '&amp;', '&quot;', '&#039;'), +		$string +	); +	$string = html_entity_decode($string, ENT_NOQUOTES, 'UTF-8'); +	$string = str_replace( +		array('&gt;', '&lt;', '&amp;', '&quot;', '&#039;'), +		array('>', '<', '&', '"', '''), +		$string +	); +	return $string; +} diff --git a/engine/lib/upgrades/2010052601.php b/engine/lib/upgrades/2010052601.php index 5b477910f..a9cca6dc5 100644 --- a/engine/lib/upgrades/2010052601.php +++ b/engine/lib/upgrades/2010052601.php @@ -9,14 +9,14 @@ $params = array('type' => 'group',  $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'); +		$group->name = _elgg_html_decode($group->name); +		$group->description = _elgg_html_decode($group->description); +		$group->briefdescription = _elgg_html_decode($group->briefdescription); +		$group->website = _elgg_html_decode($group->website);  		if ($group->interests) {  			$tags = $group->interests; -			foreach ($tags as $index=>$tag) { -				$tags[$index] = html_entity_decode($tag, ENT_COMPAT, 'UTF-8'); +			foreach ($tags as $index => $tag) { +				$tags[$index] = _elgg_html_decode($tag);  			}  			$group->interests = $tags;  		} diff --git a/engine/lib/views.php b/engine/lib/views.php index 6135026a7..b92d9c57a 100644 --- a/engine/lib/views.php +++ b/engine/lib/views.php @@ -1567,7 +1567,7 @@ function autoregister_views($view_base, $folder, $base_location_path, $viewtype)  function elgg_views_add_rss_link() {  	global $autofeed;  	if (isset($autofeed) && $autofeed == true) { -		$url = full_url(); +		$url = current_page_url();  		if (substr_count($url, '?')) {  			$url .= "&view=rss";  		} else {  | 
