Presence not Updating with Wildfire 3.1.0 & Custom Database Integration

I’‘ve succesfully (and painlessly thanks to good documentation) gotten Wildfire 3.1.0 up and running using usernames and passwords from our existing database. Everyone is able to log in and chat without a problem. The only problem we are having is that once you log on, you never see anyone’'s presence update. Users can log in and out, change their status, and set an away message – none of it updates on the other clients.

If you log out and then back in, you’‘ll see everyone’'s updated status, but it never changes. I did see the bug JM-851 but I am using version 3.1.0 and not LDAP. Any help is appreciated in advance!

Here is the custom part of my configuration. The group queries are a little weird, but the groups are based on the user’'s extension.

<jdbcProvider>

<driver>com.mysql.jdbc.Driver</driver>

<connectionString>jdbc:mysql://192.168.1.39/xrms?user=wildfire&password=** ******</connectionString>

</jdbcProvider>

<provider>

<auth>

<className>org.jivesoftware.wildfire.auth.JDBCAuthProvider</className&g t;

</auth>

<user>

<className>org.jivesoftware.wildfire.user.JDBCUserProvider</className&g t;

</user>

<group>

<className>org.jivesoftware.wildfire.group.JDBCGroupProvider</className >

</group>

</provider>

<jdbcAuthProvider>

<passwordSQL>SELECT password FROM users WHERE username=? AND user_record_status=’‘a’’</passwordSQL>

<passwordType>md5</passwordType>

</jdbcAuthProvider>

<jdbcUserProvider>

<loadUserSQL>SELECT CONCAT(first_names, ‘’ ‘’, last_name) AS name,email FROM users WHERE user_record_status=’‘a’’ AND username=?</loadUserSQL>

<userCountSQL>SELECT COUNT(*) FROM users WHERE user_record_status = ‘‘a’’</userCountSQL>

<allUsersSQL>SELECT username FROM users WHERE user_record_status = ‘‘a’’</allUsersSQL>

<searchSQL>SELECT username FROM users WHERE user_record_status = ‘‘a’’</searchSQL>

<usernameField>username</usernameField>

<nameField>CONCAT(first_names, ‘’ ‘’, last_name)</nameField>

<emailField>email</emailField>

</jdbcUserProvider>

<jdbcGroupProvider>

<groupCountSQL>SELECT COUNT(DISTINCT(CASE SUBSTR(work_phone, INSTR(work_phone, ‘‘x’’)+1, 1) WHEN 2 THEN ‘‘Administration’’ WHEN 3 THEN

‘‘Customer Care’’ WHEN 4 THEN ‘‘Sales’’ WHEN 6 THEN ‘‘Graphics’’ WHEN 7 THEN ‘‘Information Technology’’ WHEN 8 THEN ‘‘Presenters’’ ELSE ‘‘Other’’ END))

FROM users</groupCountSQL>

<allGroupsSQL>SELECT DISTINCT(CASE SUBSTR(work_phone, INSTR(work_phone, ‘‘x’’)+1, 1) WHEN 2 THEN ‘‘Administration’’ WHEN 3 THEN ‘‘Customer Care’’

WHEN 4 THEN ‘‘Sales’’ WHEN 6 THEN ‘‘Graphics’’ WHEN 7 THEN ‘‘Information Technology’’ WHEN 8 THEN ‘‘Presenters’’ ELSE ‘‘Other’’ END) FROM users</allGroupsSQL>

<userGroupsSQL>SELECT CASE SUBSTR(work_phone, INSTR(work_phone, ‘‘x’’)+1, 1) WHEN 2 THEN ‘‘Administration’’ WHEN 3 THEN ‘‘Customer Care’’

WHEN 4 THEN ‘‘Sales’’ WHEN 6 THEN ‘‘Graphics’’ WHEN 7 THEN ‘‘Information Technology’’ WHEN 8 THEN ‘‘Presenters’’ ELSE ‘‘Other’’ END FROM users

WHERE username = ?</userGroupsSQL>

<descriptionSQL>SELECT ? FROM dual</descriptionSQL>

<loadMembersSQL>SELECT username FROM users u WHERE CASE SUBSTR(work_phone, INSTR(work_phone, ‘‘x’’)+1, 1)

WHEN 2 THEN ‘‘Administration’’ WHEN 3 THEN ‘‘Customer Care’’ WHEN 4 THEN ‘‘Sales’’ WHEN 6 THEN ‘‘Graphics’’ WHEN 7 THEN ‘‘Information Technology’’

WHEN 8 THEN ‘‘Presenters’’ ELSE ‘‘Other’’ END = ? AND user_record_status = ‘‘a’’;</loadMembersSQL>

<loadAdminsSQL>SELECT username FROM users WHERE user_record_status = ‘‘s’’</loadAdminsSQL>

</jdbcGroupProvider>

This issue was resolved by JM-972