Changeset 621
- Timestamp:
- 07/23/05 22:16:22 (3 years ago)
- Files:
-
- trunk/src/search.c (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/src/search.c
r612 r621 37 37 const char *search_instructions; 38 38 39 struct search_req_s {40 int start;41 int maxgroups;42 };43 44 39 void jabber_iq_set_search_byform(Stream *s,const char *from,const char *to, 45 const char *id,xmlnode q ,int maxgroups,int start);40 const char *id,xmlnode q); 46 41 47 42 xmlnode search_form(xmlnode parent){ … … 63 58 form_add_field(form,"text-single","familyname",_("Family name"),NULL,0); 64 59 form_add_field(form,"text-single","familycity",_("Family city"),NULL,0); 65 form_add_field(form,"text-single","maxgroups",_("Max. result groups"),"1",1);66 60 return form; 67 61 } … … 70 64 71 65 int search_byform_done(struct request_s *r, gg_pubdir50_t results){ 72 int i ,start,next,maxgroups;66 int i; 73 67 xmlnode q,form,item; 74 68 char *jid; 75 69 const char *val; 76 struct search_req_s *sr;77 78 sr=(struct search_req_s *)r->data;79 maxgroups=sr->maxgroups-1;80 start=sr->start;81 g_free(sr);82 70 83 71 q=xmlnode_new_tag("query"); … … 85 73 form=form_new_result(_("GG public directory search results")); 86 74 87 if (start==0){ 88 form_add_result_field(form,"jid",_("JID"),"jid-single"); 89 form_add_result_field(form,"nick",_("Nick"),"text-single"); 90 form_add_result_field(form,"status",_("Status"),"text-single"); 91 form_add_result_field(form,"firstname",_("First name"),"text-single"); 92 form_add_result_field(form,"lastname",_("Last name"),"text-single"); 93 form_add_result_field(form,"city",_("City"),"text-single"); 94 form_add_result_field(form,"gender",_("Sex"),"text-single"); 95 form_add_result_field(form,"birthyear","Birth year","text-single"); 96 form_add_result_field(form,"familyname",_("Family name"),"text-single"); 97 form_add_result_field(form,"familycity",_("Family city"),"text-single"); 98 } 75 form_add_result_field(form,"jid",_("JID"),"jid-single"); 76 form_add_result_field(form,"nick",_("Nick"),"text-single"); 77 form_add_result_field(form,"status",_("Status"),"text-single"); 78 form_add_result_field(form,"firstname",_("First name"),"text-single"); 79 form_add_result_field(form,"lastname",_("Last name"),"text-single"); 80 form_add_result_field(form,"city",_("City"),"text-single"); 81 form_add_result_field(form,"gender",_("Sex"),"text-single"); 82 form_add_result_field(form,"birthyear","Birth year","text-single"); 83 form_add_result_field(form,"familyname",_("Family name"),"text-single"); 84 form_add_result_field(form,"familycity",_("Family city"),"text-single"); 99 85 100 86 for(i=0;i<gg_pubdir50_count(results);i++){ … … 141 127 jabber_iq_send_result(r->stream,r->from,r->to,r->id,q); 142 128 xmlnode_free(q); 143 if (maxgroups>0){ 144 next=gg_pubdir50_next(results); 145 if (next>0 && next>start) 146 jabber_iq_set_search_byform(r->stream,r->from,r->to,r->id, 147 r->query,maxgroups,next); 148 } 129 xmlnode_free(form); 149 130 return 0; 150 131 } … … 244 225 245 226 void jabber_iq_set_search_byform(Stream *s,const char *from,const char *to, 246 const char *id,xmlnode q ,int maxgroups,int start){227 const char *id,xmlnode q){ 247 228 xmlnode form,field,value; 248 229 char *val; … … 250 231 Session *sess; 251 232 Request *r; 252 struct search_req_s *sr;253 233 254 234 form=xmlnode_get_tag(q,"x?xmlns=jabber:x:data"); … … 289 269 FIELD_TO_PUBDIR("familycity",GG_PUBDIR50_FAMILYCITY); 290 270 291 val=g_strdup_printf("%i",start); 292 gg_pubdir50_add(search, GG_PUBDIR50_START, val); 293 g_free(val); 294 295 if (maxgroups<1){ 296 val=NULL; 297 field=xmlnode_get_tag(form,"field?var=maxgroups"); 298 if (field!=NULL){ 299 value=xmlnode_get_tag(field,"value"); 300 if (value!=NULL) val=xmlnode_get_data(value); 301 } 302 if (val!=NULL){ 303 maxgroups=atoi(val); 304 if (maxgroups<1) maxgroups=1; 305 } 306 else 307 maxgroups=1; 308 } 271 gg_pubdir50_add(search, GG_PUBDIR50_START, "0"); 309 272 310 273 r=add_request(RT_SEARCH,from,to,id,q,search,s); 311 sr=g_new(struct search_req_s,1);312 sr->maxgroups=maxgroups;313 sr->start=start;314 r->data=sr;315 274 gg_pubdir50_free(search); 316 275 } … … 324 283 n=xmlnode_get_tag(q,"x?xmlns=jabber:x:data"); 325 284 if (n){ 326 return jabber_iq_set_search_byform(s,from,to,id,q ,0,0);285 return jabber_iq_set_search_byform(s,from,to,id,q); 327 286 } 328 287 sess=session_get_by_jid(from,NULL,0);
