function list_users ( $search = null )
{
global $config;
- $query = sprintf("SELECT CONCAT(username, '@', domain), displayname FROM %s ORDER BY username,domain", $config['hermes_users_table'] );
+ $query = sprintf("SELECT CONCAT(username, '@', domain), displayname, username, domain FROM %s ORDER BY username,domain", $config['hermes_users_table'] );
if ( array_key_exists ( 'search', $_POST ) )
{
$search = $_POST['search']; // TODO: Add some sanitation and input validation!
- $query = sprintf("SELECT CONCAT(username, '@', domain) FROM %s WHERE CONCAT(username, '@', domain) LIKE '%%%s%%' ORDER BY username,domain", $config['hermes_users_table'], sql_clean( $search ) );
+ $query = sprintf("SELECT CONCAT(username, '@', domain), displayname, username, domain FROM %s WHERE CONCAT(username, '@', domain) LIKE '%%%s%%' ORDER BY username,domain", $config['hermes_users_table'], sql_clean( $search ) );
}
$result = sql_dbquery( $config['hermes_db'], $query );
$list = array();
while ( $row = @mysql_fetch_row( $result ) )
{
- array_push( $list, array( "user" => $row[0], "displayname" => $row[1] ) );
+ $online = is_online( $row[2], $row[3] ) ? online : offline;
+ array_push( $list, array( "user" => $row[0], "displayname" => $row[1], "status" => $online ) );
}
return $list;
print json_encode( array( 'response' => 'ok', 'list' => $list ));
return $user;
}
-
+
+function get_locations( $username, $domain )
+{
+ global $config;
+
+ $query = sprintf ("SELECT contact, UNIX_TIMESTAMP(expires) as expires, user_agent, socket FROM %s WHERE username = '%s' AND (domain = '%s' OR domain is NULL)",
+ $config['kamailio_location_table'],
+ sql_clean($username),
+ sql_clean($domain));
+
+ $result = sql_dbquery( $config['kamailio_db'], $query );
+ if ( !$result ) return null;
+ $list = array();
+ while ( $row = @mysql_fetch_row( $result ) )
+ {
+ array_push( $list, array( "contact" => $row[0], "expires" => $row[1], "useragent" => $row[2] ) );
+ }
+ return $list;
+}
+
+function is_online( $username, $domain )
+{
+ if ( get_locations( $username, $domain ) != null ) return true;
+ else return false;
+}
+
?>