------------------------------------------------------------
revno: 914
committer: Roger Martin <[email protected]>
branch nick: aikiframework
timestamp: Sun 2011-10-16 16:45:11 +0200
message:
  membership minor improvments
modified:
  src/libs/membership.php


--
lp:aikiframework
https://code.launchpad.net/~aikiframework-devel/aikiframework/trunk

Your team Aiki Framework Developers is subscribed to branch lp:aikiframework.
To unsubscribe from this branch go to 
https://code.launchpad.net/~aikiframework-devel/aikiframework/trunk/+edit-subscription
=== modified file 'src/libs/membership.php'
--- src/libs/membership.php	2011-10-15 17:37:31 +0000
+++ src/libs/membership.php	2011-10-16 14:45:11 +0000
@@ -32,13 +32,16 @@
  *
  * @category    Aiki
  * @package     Library
- *
- * @todo    rename the class to Membership
  */
-class membership {
+
+
+class membership
+{
+    
 	/**
 	 * @var string  permissions for a user
 	 */
+
 	public $permissions;
 	
 	/**
@@ -84,6 +87,7 @@
 			$log->exception($e);		
 		}
 			
+
 		$allowGuestSessions = isset($config["allow_guest_sessions"]) && 
 							  $config["allow_guest_sessions"] ;
 				
@@ -219,13 +223,12 @@
 	 */
 	public function isUserLogged($userid) {
 		global $db;
-		$user_session = $db->get_var("SELECT user_id FROM aiki_users_sessions where user_session='" .
-			$_SESSION['aikiuser'] . "'");
-		if ( $user_session == $userid ) {
-			return true;
-		} else {
-			return false;
-		}
+		
+		$SQL = "SELECT user_id" .
+		       " FROM aiki_users_sessions".
+		       " WHERE user_session='{$_SESSION['aikiuser']}' and user_id='{$userid}'";		
+		return  (is_null( $db->get_var($SQL))? false : true );
+
 	}
 
 
@@ -237,31 +240,30 @@
 	 */
 	public function getUserPermissions($user) {
 		global $db;
-		$user = addslashes($user);
-
-		$user = $db->get_row("SELECT userid, usergroup, full_name, username FROM aiki_users where username='$user'");
-		if ( $user->userid and $this->isUserLogged($user->userid) ) {
-			$group_permissions = $db->get_row("SELECT group_permissions, group_level FROM aiki_users_groups " .
-				"WHERE id='".$user->usergroup."'");
-
-			$this->full_name = $user->full_name;
-			$this->username = $user->username;
-			$this->group_level= $group_permissions->group_level;
-			$this->userid = $user->userid;
-
-			$this->permissions = $group_permissions->group_permissions;
-
+
+		$user   = addslashes($user);
+		$session= addslashes($_SESSION['aikiuser']);
+
+		$SQL = "SELECT userid, usergroup, full_name, username,group_level,group_permissions".
+		       " FROM aiki_users ".
+		       " INNER JOIN aiki_users_sessions ON aiki_users.userid = aiki_users_sessions.user_id".
+		       " INNER JOIN aiki_users_groups   ON aiki_users.usergroup= aiki_users_groups.id".
+		       " WHERE aiki_users.username='$user' AND user_session='$session'";        
+		$user = $db->get_row($SQL);		
+		if ( $user )	{
+			$this->full_name   = $user->full_name;
+			$this->username    = $user->username;
+			$this->userid      = $user->userid;			
+			$this->group_level = $user->group_level;			
+			$this->permissions = $user->group_permissions;
 		} else {
-			$this->permissions = "";
-		}
-
-		//unset the browser session if the session
-		//record was deleted from aiki_users_sessions
-		if ( !isset($group_permissions) or !$group_permissions ) {
+			$this->permissions = "";	
+			
+			//unset the browser session if the session
+			//record was deleted from aiki_users_sessions	
 			unset($_SESSION['guest']);
 			unset($_SESSION['aikiuser']);
 		}
-
 	}
 
 
@@ -504,36 +506,53 @@
 		}
 	} // end of logOut function
 
-	
-	/*
-	 * return number of registered user online.
-	 *
-	 *
-	 */
-	
-	function how_many_are_online() {
+
+    
+    /**
+     * return number of registered user online.
+     *
+     * @return integer 
+     * @global $db
+     */
+    
+    function how_many_are_online(){
 		global $db;
 		return $db->get_var("SELECT count(DISTINCT user_id) FROM aiki_users_sessions");
 	}	
 		
-	/*
-	 * Give a list (ul/li) of online users
-	 *
-	 *  format is the  sprintf format used for generate each line, between li.
-	 *  examples:  
-	 *   '%s' (default) display username
-	 *   '<a href='user-detail/%$s'>%1$s</a>'  a link to user page.
-	 *  $format receives two arguments in this order: user_name, user_id.
-	 */
-	
-	function who_is_online($format = '%s') {
+
+    /**
+     * Give a list (ul/li) of online users
+     *
+     *  format is the  sprintf format used for generate each line, between li.
+     *  examples:  
+     *   '%s' (default) display username
+     *   '<a href='user-detail/%$s'>%1$s</a>'  a link to user page.
+     *  $format receives two arguments in this order: user_name, user_id.
+     * @todo pagination 
+     
+     * @return string user list in html using ul/li tags.
+     * @global $db
+     */
+    
+    function who_is_online( $format = '%s', $max=100, $id="who-is-online"){
+
 		global $db;
 		
-		$output = "<ul>";
-		$users = $db->get_results("SELECT user_id, user_name FROM aiki_users_sessions");		
-		if (!is_null($users)) {
-			foreach ( $users as $user ) {
-				$output .= sprintf("<li>{$format}</li>", $user->user_name, $user->user_id);
+		$max= (int) $max;
+		$max=  (  $max <=0 || $max > 100 ?  100 : $max);
+		
+		$count= 0;
+		$output="<ul id='$id' >";
+		$users= $db->get_results("SELECT user_id, user_name FROM aiki_users_sessions");		
+		if ( !is_null($users) ){
+			foreach ($users as $user){		
+				$output .= sprintf("<li>{$format}</li>", $user->user_name, $user->user_id );
+				$count++;
+				if ( $count > 100) {
+				    // @todo pagination of result.
+					break;
+				}	
 			}
 		} else {
 			$output .= "<li>" . __("Nobody is online") . "</li>";

_______________________________________________
Mailing list: https://launchpad.net/~aikiframework-devel
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~aikiframework-devel
More help   : https://help.launchpad.net/ListHelp

Reply via email to