------------------------------------------------------------
revno: 872
committer: Roger Martin <[email protected]>
branch nick: aikiframework
timestamp: Mon 2011-07-04 22:27:04 +0200
message:
membership who_is_onine and how_many_are_online added
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-06-27 20:23:02 +0000
+++ src/libs/membership.php 2011-07-04 20:27:04 +0000
@@ -36,7 +36,7 @@
class membership
{
/**
- * @var string permissions for auser
+ * @var string permissions for a user
*/
public $permissions;
/**
@@ -78,45 +78,44 @@
try {
/* Has user defined session handler as alternative
* to the default php file based session handler */
- $session = new AikiSession(new DatabaseSession($db));
+ $session = new AikiSession(new DatabaseSession($db));
}
catch (AikiException $e) {
- $log->exception($e);
+ $log->exception($e);
+ }
+
+ $allowGuestSessions = isset ($config["allow_guest_sessions"]) &&
+ $config["allow_guest_sessions"] ;
+
+ if ( $allowGuestSessions || @$_COOKIE["PHPSESSID"] ){
+ session_start();
}
- if (isset ($config["allow_guest_sessions"]) and
- $config["allow_guest_sessions"] != false)
- {
- session_start();
- }elseif (@$_COOKIE["PHPSESSID"]){
- session_start();
- }
-
- if (!isset($username) and
- isset($_SESSION['aikiuser']))
- {
+ if ( isset($_SESSION['aikiuser']) ) {
$username = $db->get_var("SELECT user_name FROM aiki_users_sessions where user_session='".$_SESSION['aikiuser']."'");
}
if (isset($username))
{
$this->getUserPermissions($username);
- } else {
+
+ } else {
$this->group_level = '1000000000';
$this->permissions = '';
}
$time_now = time();
- if (isset ($config["allow_guest_sessions"]) and
- $config["allow_guest_sessions"])
+ if ( $allowGuestSessions )
{
if (!isset($_SESSION['aikiuser']) and !isset($_SESSION['guest']))
{
$user_ip = $this->get_ip();
$_SESSION['guest'] = $this->generate_session(100);
- $insert_session = $db->query("INSERT INTO aiki_users_sessions VALUES ('', '', 'guest' , '$time_now', '$time_now' , '".$_SESSION['guest']."', '1', '$user_ip', '$user_ip')");
+ $insert_session = $db->query(
+ "INSERT INTO aiki_users_sessions".
+ " VALUES ('', '', 'guest' , '$time_now', '$time_now' , '".$_SESSION['guest']."', '1', '$user_ip', '$user_ip')");
} else {
$update_guest = $db->query("UPDATE `aiki_users_sessions` SET `last_hit` = '$time_now' WHERE `user_session`='".$_SESSION['guest']."' LIMIT 1");
@@ -146,7 +145,7 @@
/**
- * Handles the login or a user.
+ * Handles the login of a user.
*
* @param string $username name of user
* @param string $password a user's password
@@ -158,44 +157,36 @@
public function login ($username, $password)
{
global $db, $layout, $config, $aiki;
-
+
$password = stripslashes($password);
$password = md5(md5($password));
$time_now = time();
-
+
+
if (!isset($_SESSION['aikiuser']) and
!isset($_SESSION['guest']) and
!isset($_COOKIE["PHPSESSID"]))
{
session_start();
}
-
- $get_user = $db->get_row("SELECT * FROM aiki_users where username='$username' and password='$password' limit 1");
-
- if($get_user and $get_user->username == $username and
- $get_user->password == $password)
- {
+
+ $get_user = $db->get_row("SELECT * FROM aiki_users WHERE username='$username' AND password='$password' LIMIT 1");
+ if($get_user){
$host_name = $_SERVER['HTTP_HOST'];
- $user_ip = $this->get_ip();
+ $user_ip = $this->get_ip();
if (isset ($config["allow_guest_sessions"]) and
$config["allow_guest_sessions"])
{
$_SESSION['aikiuser'] = $_SESSION['guest'];
+ $register_user = $db->query("UPDATE `aiki_users_sessions` SET `user_id`='".$get_user->userid."', `user_name` = '".$get_user->username."', `user_ip`='$user_ip' WHERE `user_session`='".$_SESSION['aikiuser']."' LIMIT 1");
} else {
$_SESSION['aikiuser'] = $this->generate_session(100);
- }
-
- if (isset ($config["allow_guest_sessions"]) and
- $config["allow_guest_sessions"])
- {
- $register_user = $db->query("UPDATE `aiki_users_sessions` SET `user_id`='".$get_user->userid."', `user_name` = '".$get_user->username."', `user_ip`='$user_ip' WHERE `user_session`='".$_SESSION['aikiuser']."' LIMIT 1");
- } else {
$register_user = $db->query("INSERT INTO aiki_users_sessions VALUES ('', '".$get_user->userid."', '".$get_user->username."' , '$time_now', '$time_now' ,'".$_SESSION['aikiuser']."', '1', '$user_ip', '$user_ip')");
}
- if ($config["allow_multiple_sessions"] == false)
+ if (!isset($config["allow_multiple_sessions"]) || $config["allow_multiple_sessions"] == false)
{
$delete_previous_open_sessions =$db->query("DELETE FROM `aiki_users_sessions` WHERE `user_session`!='".$_SESSION['aikiuser']."' and `user_name` = '".$get_user->username."' and `user_id`='".$get_user->userid."'");
}
@@ -206,8 +197,8 @@
if ($get_user->logins_number == 0)
{
$update_acces = $db->query("UPDATE `aiki_users` SET `first_login`= NOW(),`first_ip`='$user_ip' WHERE `userid`='".$get_user->userid."' LIMIT 1");
- }
-
+ }
+
} else {
$aiki->message->set_login_error("Wrong username or password.");
}
@@ -277,14 +268,11 @@
*/
public function get_ip()
{
- if ( isset($_SERVER["REMOTE_ADDR"]) )
- {
+ if ( isset($_SERVER["REMOTE_ADDR"]) ) {
return $_SERVER["REMOTE_ADDR"];
- } else if ( isset($_SERVER["HTTP_X_FORWARDED_FOR"]) )
- {
+ } elseif ( isset($_SERVER["HTTP_X_FORWARDED_FOR"]) ) {
return $_SERVER["HTTP_X_FORWARDED_FOR"];
- } else if ( isset($_SERVER["HTTP_CLIENT_IP"]) )
- {
+ } elseif ( isset($_SERVER["HTTP_CLIENT_IP"]) ) {
return $_SERVER["HTTP_CLIENT_IP"];
}
}
@@ -481,6 +469,45 @@
}
} // end of logOut function
+
+ /*
+ * return number of registered user online.
+ *
+ *
+ */
+
+ 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'){
+ global $db;
+ $users= $db->get_results("SELECT user_id, user_name FROM aiki_users_sessions");
+
+ $output="<ul>";
+ foreach ($users as $user){
+ $output .= sprintf("<li>{$format}</li>", $user->user_name, $user->user_id );
+ }
+ if ( $output=="<ul>" ){
+ $output .= "<li>Nobody is online</li>";
+ }
+ $output .= "</ul>";
+ return $output;
+ }
+
+
+
} // end of membership class
// NOTE: closing php necessary in this file
_______________________________________________
Mailing list: https://launchpad.net/~aikiframework-devel
Post to : [email protected]
Unsubscribe : https://launchpad.net/~aikiframework-devel
More help : https://help.launchpad.net/ListHelp