--- users-agent	2004-08-07 16:58:45.000000000 -0400
+++ users-agent.vcard	2004-08-07 16:58:59.000000000 -0400
@@ -214,18 +214,18 @@
 
     my $fromJID = $iq->GetFrom("jid");
 
-    my $command = "SELECT * FROM jud WHERE jid ='".$fromJID->GetJID()."';";
+    my $command = "SELECT `n-given`,`n-family`,`nickname`,`email` FROM vcard WHERE `collection-owner` ='".$fromJID->GetJID()."';";
 
     my $sth = $dbh->prepare($command);
     $sth->execute;
     my $ref = $sth->fetchrow_hashref();
     if (defined($ref))
     {
-        $fields{first} = $ref->{first};
-        $fields{last} = $ref->{last};
-        $fields{nick} = $ref->{nick};
+        $fields{first} = $ref->{'n-given'};
+        $fields{last} = $ref->{'n-family'};
+        $fields{nick} = $ref->{nickname};
         $fields{email} = $ref->{email};
-        $fields{registered} = 1;
+        $fields{registered} = $ref->{'collection-owner'};
     }
     $sth->finish();
 
@@ -273,8 +273,6 @@
     my $iqReply = $iq->Reply(type=>"result");
     my $iqReplyQuery = $iqReply->NewQuery("jabber:iq:register");
 
-    $dbh->do("DELETE FROM jud WHERE jid='".$fromJID->GetJID()."';");
-
     my @xData = $query->GetX("jabber:x:data");
     my %fields;
     if ($#xData > -1)
@@ -296,8 +294,20 @@
         $fields{email} = $query->GetEmail();
     }
 
-    $dbh->do("INSERT INTO jud VALUES(".$dbh->quote($fromJID->GetJID()).",'',".$dbh->quote($fields{first}).",".$dbh->quote($fields{last}).",".$dbh->quote($fields{nick}).",".$dbh->quote($fields{email}).");");
-
+    my $rowExists = $dbh->do("SELECT `collection-owner` FROM vcard WHERE `collection-owner` = ".$dbh->quote($fromJID->GetJID()));
+    
+    if ( $rowExists == 1)
+    {
+        $dbh->do("UPDATE vcard
+        SET `n-given`=".$dbh->quote($fields{first}).",`n-family`=".$dbh->quote($fields{last}).",nickname=".$dbh->quote($fields{nick}).",email=".$dbh->quote($fields{email}).
+        "WHERE `collection-owner` = ".$dbh->quote($fromJID->GetJID()).";");      
+    }
+    else
+    {
+        $dbh->do("INSERT INTO vcard (`collection-owner`,`n-given`,`n-family`,`nickname`,`email`)
+        VALUES (".$dbh->quote($fromJID->GetJID()).",".$dbh->quote($fields{first}).",".$dbh->quote($fields{last}).",".$dbh->quote($fields{nick}).",".$dbh->quote($fields{email}).");");
+    }
+    
     $dbh->do("OPTIMIZE TABLE jud;");
     
     $Debug->Log1("iqRegisterSetCB: reply(",$iqReply->GetXML(),")");
@@ -369,20 +379,30 @@
         {
             next if ($field->GetValue() eq "");
             next if ($field->GetVar() eq "speed");
-
-            push(@commands,$field->GetVar()." LIKE ".$dbh->quote($likeSpeed.$field->GetValue()."%"));
+            
+            push(@commands,"`n-given` LIKE ".$dbh->quote($likeSpeed.$field->GetValue()."%"))
+                if ($field->GetVar() eq "first");
+    
+            push(@commands,"`n-family` LIKE ".$dbh->quote($likeSpeed.$field->GetValue()."%"))
+                if ($field->GetVar() eq "last");
+    
+            push(@commands,"nickname LIKE ".$dbh->quote($likeSpeed.$field->GetValue()."%"))
+                if ($field->GetVar() eq "nick");
+    
+            push(@commands,"email LIKE ".$dbh->quote($likeSpeed.$field->GetValue()."%"))
+                if ($field->GetVar() eq "email");            
         }
     }
     else
     {
 
-        push(@commands,"first LIKE ".$dbh->quote("%".$query->GetFirst()."%"))
+        push(@commands,"`n-given` LIKE ".$dbh->quote("%".$query->GetFirst()."%"))
             if ($query->DefinedFirst() && ($query->GetFirst() ne ""));
 
-        push(@commands,"last LIKE ".$dbh->quote("%".$query->GetLast()."%"))
+        push(@commands,"`n-family` LIKE ".$dbh->quote("%".$query->GetLast()."%"))
             if ($query->DefinedLast() && ($query->GetLast() ne ""));
 
-        push(@commands,"nick LIKE ".$dbh->quote("%".$query->GetNick()."%"))
+        push(@commands,"nickname LIKE ".$dbh->quote("%".$query->GetNick()."%"))
             if ($query->DefinedNick() && ($query->GetNick() ne ""));
 
         push(@commands,"email LIKE ".$dbh->quote("%".$query->GetEmail()."%"))
@@ -397,7 +417,7 @@
     }
     else
     {
-        my $command = "SELECT * FROM jud WHERE ".join(" AND ",@commands)." order by last";
+        my $command = "SELECT * FROM vcard WHERE ".join(" AND ",@commands)." order by `n-family`";
         $command .= " limit $config{mysql}->{limit}"
             if ($config{mysql}->{limit} ne "");
         $command .= ";";
@@ -431,23 +451,23 @@
         {
             if ($hasForm == 0)
             {
-                $iqReplyQuery->AddItem(jid=>$ref->{jid},
-                                       first=>$ref->{first},
-                                       last=>$ref->{last},
-                                       nick=>$ref->{nick},
+                $iqReplyQuery->AddItem(jid=>$ref->{'collection-owner'},
+                                       first=>$ref->{'n-given'},
+                                       last=>$ref->{'n-family'},
+                                       nick=>$ref->{nickname},
                                        email=>$ref->{email});
             }
             else
             {
                 my $item = $resultsReport->AddItem();
                 $item->AddField(var=>"jid",
-                                value=>$ref->{jid});
+                                value=>$ref->{'collection-owner'});
                 $item->AddField(var=>"first",
-                                value=>$ref->{first});
+                                value=>$ref->{'n-given'});
                 $item->AddField(var=>"last",
-                                value=>$ref->{last});
+                                value=>$ref->{'n-family'});
                 $item->AddField(var=>"nick",
-                                value=>$ref->{nick});
+                                value=>$ref->{nickname});
                 $item->AddField(var=>"email",
                                 value=>$ref->{email});
             }
