Drupal's not reading correct values from DB

Posted by John on Stack Overflow See other posts from Stack Overflow or by John
Published on 2010-04-08T14:12:15Z Indexed on 2010/04/08 14:13 UTC
Read the original article Hit count: 250

Filed under:
|
|
|
|

Hey Everyone,

Here is my current problem. I am working with the chat module and I'm building a module that notifies users via AJAX that they have been invited to a chat. The current table structure for the invites table looks like this:

|-------------------------------------------------------------------------|
|  CCID  |  NID  |  INVITER_UID  | INVITEE_UID  |  NOTIFIED  |  ACCEPTED  |
|-------------------------------------------------------------------------|
|  int   |  int  |     int       |     int      |  (0 or 1)  |  (0 or 1)  |
|-------------------------------------------------------------------------|

I'm using the periodical updater plug-in for JQuery to continually poll the server to check for invites. When an invite is found, I set the notified from 0 to 1. However, my problem is the periodical updater. When I first see that there is an invite, I notify the user, and set notified to 1. On the next select though, I get the same results before, as if the update didn't work. But, when I got check the database, I can see that it worked just fine. It's as if the query is querying a cache, but I can't figure it out.

My code for the periodical updater is as follows:

window.onload = function() {


var uid = $('a#chat_uid').html();

$.PeriodicalUpdater(
    '/steelylib/sites/all/modules/_chat_whos_online/ajax/ajax.php',     //url to service
    {
       method: 'get',           //send data via...
       data: {uid: uid},        //data to send
       minTimeout: '1000',      //min time before server is polled (milli-sec.)
       maxTimeout: '20000',     //max time before server is polled (milli-sec.)
       multiplyer: '1.5',       //multiply against curretn poll time every time constant     data is returned
       type: 'text',            //type of data recieved (response type)
       maxCalls: 0,             //max calls to make (0=unlimited)
       autoStop: 0              //max calls with constant data (0=unlimited/disabled)

    },
    function(data)              //callback function
    {
        alert( data ); //for now, until i get it working
    }
);

}



And my code for the ajax call is as follows:

<?php

#bootstrap Drupal, and call function, passing current user's uid.

function _create_chat_node_check_invites($uid)
{    
    cache_clear_all('chatroom_chat_list', 'cache');
    $query = "SELECT * FROM {chatroom_chat_invite} WHERE notified=0 AND invitee_uid=%d     and accepted=0";
    $query_results = db_query( $query, $uid );
    $json = '{"invites":[';
    while( $row = db_fetch_object($query_results) )
    {
      var_dump($row);
        global $base_url;
        $url = $base_url . '/content/privatechat' . $uid .'-' . $row->inviter_uid;

        $inviter = db_fetch_object( db_query( "SELECT name FROM {users} WHERE uid = %d", $row->inviter_uid ) );
        $invitee = db_fetch_object( db_query( "SELECT name FROM {users} WHERE uid = %d", $row->invitee_uid ) );

      #reset table
      $query = "UPDATE {chatroom_chat_invite} "
                ."SET notified=1 "
                ."WHERE inviter_uid=%d AND invitee_uid=%d";
      db_query( $query, $row->inviter_uid, $row->invitee_uid );

        $json .= '[';
        $json .= '"' . $url . '",';
        $json .= '"' .  ($inviter->name) . '",';
        $json .= '"' . ($invitee->name) . '"' ;
        $json .= '],';
    }
    $json = substr($json, 0, -1);
    $json .= ']}';

    return $json;
}
?>

I can't figure out what is going wrong, any help is greatly appreciated!

© Stack Overflow or respective owner

Related posts about drupal

Related posts about database