diff -crB ori/bp-activity/bp-activity-classes.php mod/bp-activity/bp-activity-classes.php
*** ori/bp-activity/bp-activity-classes.php	2011-06-10 11:41:33.951771397 +0200
--- mod/bp-activity/bp-activity-classes.php	2011-05-27 02:15:59.000000000 +0200
***************
*** 86,92 ****
  
  	/* Static Functions */
  
! 	function get( $max = false, $page = 1, $per_page = 25, $sort = 'DESC', $search_terms = false, $filter = false, $display_comments = false, $show_hidden = false ) {
  		global $wpdb, $bp;
  
  		/* Select conditions */
--- 86,92 ----
  
  	/* Static Functions */
  
! 	function get( $max = false, $page = 1, $per_page = 25, $sort = 'DESC', $search_terms = false, $filter = false, $display_comments = false, $show_hidden = false, $order = false) {
  		global $wpdb, $bp;
  
  		/* Select conditions */
***************
*** 110,115 ****
--- 110,133 ----
  		/* Sorting */
  		if ( $sort != 'ASC' && $sort != 'DESC' )
  			$sort = 'DESC';
+ 		
+ 		/* Ordering */ //added by Federico Rampazzo 27/05/2011
+ 		switch ( $order ){
+ 		  case 'comments':
+ 		    $select_sql .= ", (SELECT COUNT(id) 
+ 					FROM {$bp->activity->table_name} 
+ 					WHERE item_id=a.id) AS comments";
+ 		  break;
+ 		  case 'favourites':
+ 		    $select_sql .= ", (SELECT meta_value 
+ 					FROM {$bp->activity->table_name_meta} 
+ 					WHERE activity_id=a.id 
+ 					AND meta_key='favorite_count') AS favourites";
+ 		  break;
+ 		  default:
+ 		    $order = 'a.date_recorded';
+ 		  break;
+ 		}
  
  		/* Hide Hidden Items? */
  		if ( !$show_hidden )
***************
*** 124,132 ****
  
  		if ( $per_page && $page ) {
  			$pag_sql = $wpdb->prepare( "LIMIT %d, %d", intval( ( $page - 1 ) * $per_page ), intval( $per_page ) );
! 			$activities = $wpdb->get_results( $wpdb->prepare( "{$select_sql} {$from_sql} {$where_sql} ORDER BY a.date_recorded {$sort} {$pag_sql}" ) );
  		} else
! 			$activities = $wpdb->get_results( $wpdb->prepare( "{$select_sql} {$from_sql} {$where_sql} ORDER BY a.date_recorded {$sort} {$pag_sql}" ) );
  
  		$total_activities = $wpdb->get_var( $wpdb->prepare( "SELECT count(a.id) FROM {$bp->activity->table_name} a {$where_sql} ORDER BY a.date_recorded {$sort}" ) );
  
--- 142,150 ----
  
  		if ( $per_page && $page ) {
  			$pag_sql = $wpdb->prepare( "LIMIT %d, %d", intval( ( $page - 1 ) * $per_page ), intval( $per_page ) );
! 			$activities = $wpdb->get_results( $wpdb->prepare( "{$select_sql} {$from_sql} {$where_sql} ORDER BY {$order} {$sort} {$pag_sql}" ) );
  		} else
! 			$activities = $wpdb->get_results( $wpdb->prepare( "{$select_sql} {$from_sql} {$where_sql} ORDER BY {$order} {$sort} {$pag_sql}" ) );
  
  		$total_activities = $wpdb->get_var( $wpdb->prepare( "SELECT count(a.id) FROM {$bp->activity->table_name} a {$where_sql} ORDER BY a.date_recorded {$sort}" ) );
  
***************
*** 166,173 ****
  		return array( 'activities' => $activities, 'total' => (int)$total_activities );
  	}
  
! 	function get_specific( $activity_ids, $max = false, $page = 1, $per_page = 25, $sort = 'DESC', $display_comments = false ) {
  		global $wpdb, $bp;
  
  		if ( is_array( $activity_ids ) )
  			$activity_ids = implode( ',', $activity_ids );
--- 184,193 ----
  		return array( 'activities' => $activities, 'total' => (int)$total_activities );
  	}
  
! 	function get_specific( $activity_ids, $max = false, $page = 1, $per_page = 25, $sort = 'DESC', $display_comments = false, $order = false ) {
  		global $wpdb, $bp;
+ 		
+ 		$select_sql = 'SELECT *';
  
  		if ( is_array( $activity_ids ) )
  			$activity_ids = implode( ',', $activity_ids );
***************
*** 182,189 ****
  
  		if ( $sort != 'ASC' && $sort != 'DESC' )
  			$sort = 'DESC';
  
! 		$activities = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$bp->activity->table_name} WHERE id IN ({$activity_ids}) ORDER BY date_recorded {$sort} $pag_sql" ) );
  		$total_activities = $wpdb->get_var( $wpdb->prepare( "SELECT count(id) FROM {$bp->activity->table_name} WHERE id IN ({$activity_ids})" ) );
  
  		if ( $display_comments )
--- 202,227 ----
  
  		if ( $sort != 'ASC' && $sort != 'DESC' )
  			$sort = 'DESC';
+ 		
+ 		/* Ordering */ //added by Federico Rampazzo 27/05/2011
+ 		switch ( $order ){
+ 		  case 'comments':
+ 		    $select_sql .= ", (SELECT COUNT(id) 
+ 					FROM {$bp->activity->table_name} 
+ 					WHERE item_id=a.id) AS comments";
+ 		  break;
+ 		  case 'favourites':
+ 		    $select_sql .= ", (SELECT meta_value 
+ 					FROM {$bp->activity->table_name_meta}
+ 					WHERE activity_id=a.id 
+ 					AND meta_key='favorite_count') AS favourites";
+ 		  break;
+ 		  default:
+ 		    $order = 'a.date_recorded';
+ 		  break;
+ 		}
  
! 		$activities = $wpdb->get_results( $wpdb->prepare( "{$select_sql} FROM {$bp->activity->table_name} AS a WHERE id IN ({$activity_ids}) ORDER BY {$order} {$sort} $pag_sql" ) );
  		$total_activities = $wpdb->get_var( $wpdb->prepare( "SELECT count(id) FROM {$bp->activity->table_name} WHERE id IN ({$activity_ids})" ) );
  
  		if ( $display_comments )
diff -crB ori/bp-activity.php mod/bp-activity.php
*** ori/bp-activity.php	2011-06-10 11:42:03.747398901 +0200
--- mod/bp-activity.php	2011-05-27 02:01:00.000000000 +0200
***************
*** 595,609 ****
  
  	$r = wp_parse_args( $args, $defaults );
  	extract( $r, EXTR_SKIP );
  
  	/* Attempt to return a cached copy of the first page of sitewide activity. */
  	if ( 1 == (int)$page && empty( $max ) && empty( $search_terms ) && empty( $filter ) && 'DESC' == $sort ) {
  		if ( !$activity = wp_cache_get( 'bp_activity_sitewide_front', 'bp' ) ) {
! 			$activity = BP_Activity_Activity::get( $max, $page, $per_page, $sort, $search_terms, $filter, $display_comments, $show_hidden );
  			wp_cache_set( 'bp_activity_sitewide_front', $activity, 'bp' );
  		}
  	} else
! 		$activity = BP_Activity_Activity::get( $max, $page, $per_page, $sort, $search_terms, $filter, $display_comments, $show_hidden );
  
  	return apply_filters( 'bp_activity_get', $activity, &$r );
  }
--- 595,612 ----
  
  	$r = wp_parse_args( $args, $defaults );
  	extract( $r, EXTR_SKIP );
+ 	
+ 	$order = (isset($_COOKIE['order']) ? $_COOKIE['order'] : false);
+ 	$sort = (isset($_COOKIE['sort']) ? $_COOKIE['sort'] : 'DESC');
  
  	/* Attempt to return a cached copy of the first page of sitewide activity. */
  	if ( 1 == (int)$page && empty( $max ) && empty( $search_terms ) && empty( $filter ) && 'DESC' == $sort ) {
  		if ( !$activity = wp_cache_get( 'bp_activity_sitewide_front', 'bp' ) ) {
! 			$activity = BP_Activity_Activity::get( $max, $page, $per_page, $sort, $search_terms, $filter, $display_comments, $show_hidden, $order);
  			wp_cache_set( 'bp_activity_sitewide_front', $activity, 'bp' );
  		}
  	} else
! 		$activity = BP_Activity_Activity::get( $max, $page, $per_page, $sort, $search_terms, $filter, $display_comments, $show_hidden, $order);
  
  	return apply_filters( 'bp_activity_get', $activity, &$r );
  }
