]> git.pld-linux.org Git - packages/php.git/blame - php-mnogosearch.patch
- don't use pcre functions in standard/aggregation functions if building pcre extensi...
[packages/php.git] / php-mnogosearch.patch
CommitLineData
3873f8f8
AF
1diff -ur php-4.2.2/ext/mnogosearch.orig/php_mnogo.c php-4.2.2/ext/mnogosearch/php_mnogo.c
2--- php-4.2.2/ext/mnogosearch.orig/php_mnogo.c Thu Feb 28 09:26:23 2002
3+++ php-4.2.2/ext/mnogosearch/php_mnogo.c Mon Jun 17 19:39:17 2002
4@@ -1,5 +1,5 @@
5 /* $Source$ */
6-/* $Id$ */
7+/* $Id$ */
8
9 /*
10 +----------------------------------------------------------------------+
11@@ -77,6 +77,7 @@
12 #define UDM_PARAM_SEARCHD 22
13 #define UDM_PARAM_QSTRING 23
14 #define UDM_PARAM_REMOTE_ADDR 24
15+#define UDM_PARAM_QUERY 25
16
17 /* udm_add_search_limit constants */
18 #define UDM_LIMIT_URL 1
19@@ -118,6 +119,7 @@
20 #define UDM_PARAM_SEARCHTIME 259
21 #define UDM_PARAM_FIRST_DOC 260
22 #define UDM_PARAM_LAST_DOC 261
23+#define UDM_PARAM_WORDINFO_ALL 262
24
25 /* udm_load_ispell_data constants */
26 #define UDM_ISPELL_TYPE_AFFIX 1
27@@ -135,16 +137,21 @@
28 */
29 function_entry mnogosearch_functions[] = {
30 PHP_FE(udm_api_version, NULL)
31+
32 #if UDM_VERSION_ID >= 30200
33 PHP_FE(udm_check_charset, NULL)
34-#endif
35-
36-#if UDM_VERSION_ID >= 30203
37- PHP_FE(udm_crc32, NULL)
38+#if UDM_VERSION_ID == 30203
39 PHP_FE(udm_open_stored, NULL)
40 PHP_FE(udm_check_stored,NULL)
41 PHP_FE(udm_close_stored,NULL)
42 #endif
43+#if UDM_VERSION_ID >= 30203
44+ PHP_FE(udm_crc32, NULL)
45+#endif
46+#if UDM_VERSION_ID >= 30204
47+ PHP_FE(udm_parse_query_string,NULL)
48+#endif
49+#endif
50
51 PHP_FE(udm_alloc_agent, NULL)
52 PHP_FE(udm_set_agent_param, NULL)
53@@ -197,14 +204,24 @@
54 static void _free_udm_agent(zend_rsrc_list_entry *rsrc TSRMLS_DC)
55 {
56 UDM_AGENT * Agent = (UDM_AGENT *)rsrc->ptr;
57+#if UDM_VERSION_ID >= 30204
58+ UdmEnvFree(Agent->Conf);
59+ UdmAgentFree(Agent);
60+#else
61 UdmFreeEnv(Agent->Conf);
62 UdmFreeAgent(Agent);
63+#endif
64 }
65
66 static void _free_udm_res(zend_rsrc_list_entry *rsrc TSRMLS_DC)
67 {
68 UDM_RESULT * Res = (UDM_RESULT *)rsrc->ptr;
69- UdmFreeResult(Res);
70+
71+#if UDM_VERSION_ID >= 30204
72+ UdmResultFree(Res);
73+#else
74+ UdmFreeResult(Res);
75+#endif
76 }
77
78 /* {{{ PHP_MINIT_FUNCTION
79@@ -278,6 +295,7 @@
80
81 REGISTER_LONG_CONSTANT("UDM_PARAM_QSTRING", UDM_PARAM_QSTRING,CONST_CS | CONST_PERSISTENT);
82 REGISTER_LONG_CONSTANT("UDM_PARAM_REMOTE_ADDR", UDM_PARAM_REMOTE_ADDR,CONST_CS | CONST_PERSISTENT);
83+ REGISTER_LONG_CONSTANT("UDM_PARAM_QUERY", UDM_PARAM_QUERY,CONST_CS | CONST_PERSISTENT);
84
85 /* udm_add_search_limit constants */
86 REGISTER_LONG_CONSTANT("UDM_LIMIT_CAT", UDM_LIMIT_CAT,CONST_CS | CONST_PERSISTENT);
87@@ -290,6 +308,7 @@
88 REGISTER_LONG_CONSTANT("UDM_PARAM_FOUND", UDM_PARAM_FOUND,CONST_CS | CONST_PERSISTENT);
89 REGISTER_LONG_CONSTANT("UDM_PARAM_NUM_ROWS", UDM_PARAM_NUM_ROWS,CONST_CS | CONST_PERSISTENT);
90 REGISTER_LONG_CONSTANT("UDM_PARAM_WORDINFO", UDM_PARAM_WORDINFO,CONST_CS | CONST_PERSISTENT);
91+ REGISTER_LONG_CONSTANT("UDM_PARAM_WORDINFO_ALL",UDM_PARAM_WORDINFO_ALL,CONST_CS | CONST_PERSISTENT);
92 REGISTER_LONG_CONSTANT("UDM_PARAM_WORD_INFO", UDM_PARAM_WORDINFO,CONST_CS | CONST_PERSISTENT);
93 REGISTER_LONG_CONSTANT("UDM_PARAM_SEARCHTIME", UDM_PARAM_SEARCHTIME,CONST_CS | CONST_PERSISTENT);
94 REGISTER_LONG_CONSTANT("UDM_PARAM_SEARCH_TIME", UDM_PARAM_SEARCHTIME,CONST_CS | CONST_PERSISTENT);
95@@ -399,19 +418,37 @@
96 }
97 convert_to_string_ex(yydbaddr);
98 dbaddr = Z_STRVAL_PP(yydbaddr);
99-
100+
101+#if UDM_VERSION_ID >= 30204
102+ Env=UdmEnvInit(NULL);
103+ UdmVarListReplaceStr(&Env->Vars,"SyslogFacility","local7");
104+ UdmSetLogLevel(Env,0);
105+ UdmOpenLog("mnoGoSearch-php",Env,0);
106+
107+ if(!memcmp(dbaddr,"searchd:",8)){
108+ UDM_URL Url;
109+ UdmURLParse(&Url,dbaddr);
110+ UdmDBListAdd(&Env->sdcl,Url.hostinfo);
111+ }
112+ UdmVarListReplaceStr(&Env->Vars,"DBAddr",dbaddr);
113+ if(UDM_OK!=UdmDBSetAddr(Env->db,dbaddr,UDM_OPEN_MODE_READ)){
114+ sprintf(Env->errstr,"Invalid DBAddr: '%s'",dbaddr);
115+ Env->errcode=1;
116+ php_error(E_WARNING,"Udm_Alloc_Agent: Invalid DBAddr");
117+ RETURN_FALSE;
118+ }
119+ Agent=UdmAgentInit(NULL,Env,0);
120+#elif UDM_VERSION_ID >= 30200
121 Env=UdmAllocEnv();
122-
123-#if UDM_VERSION_ID >= 30200
124 Env->vars=UdmAllocVarList();
125 Env->DBAddr=strdup(dbaddr);
126 UdmEnvSetDBMode(Env,"single");
127+ Agent=UdmAllocAgent(Env,0,UDM_OPEN_MODE_READ);
128 #else
129+ Env=UdmAllocEnv();
130 UdmEnvSetDBAddr(Env,dbaddr);
131-#endif
132-
133 Agent=UdmAllocAgent(Env,0,UDM_OPEN_MODE_READ);
134-
135+#endif
136 ZEND_REGISTER_RESOURCE(return_value,Agent,le_link);
137 }
138 break;
139@@ -432,18 +469,37 @@
140 dbaddr = Z_STRVAL_PP(yydbaddr);
141 dbmode = Z_STRVAL_PP(yydbmode);
142
143- Env=UdmAllocEnv();
144-#if UDM_VERSION_ID >= 30200
145+#if UDM_VERSION_ID >= 30204
146+ Env=UdmEnvInit(NULL);
147+ UdmVarListReplaceStr(&Env->Vars,"SyslogFacility","local7");
148+ UdmSetLogLevel(Env,0);
149+ UdmOpenLog("mnoGoSearch-php",Env,0);
150+
151+ if(!memcmp(dbaddr,"searchd:",8)){
152+ UDM_URL Url;
153+ UdmURLParse(&Url,dbaddr);
154+ UdmDBListAdd(&Env->sdcl,Url.hostinfo);
155+ }
156+ UdmVarListReplaceStr(&Env->Vars,"DBAddr",dbaddr);
157+ if(UDM_OK!=UdmDBSetAddr(Env->db,dbaddr,UDM_OPEN_MODE_READ)){
158+ sprintf(Env->errstr,"Invalid DBAddr: '%s'",dbaddr);
159+ Env->errcode=1;
160+ php_error(E_WARNING,"Udm_Alloc_Agent: Invalid DBAddr");
161+ RETURN_FALSE;
162+ }
163+ Agent=UdmAgentInit(NULL,Env,0);
164+#elif UDM_VERSION_ID >= 30200
165+ Env=UdmAllocEnv();
166 Env->vars=UdmAllocVarList();
167 Env->DBAddr=strdup(dbaddr);
168 UdmEnvSetDBMode(Env,dbmode);
169-#else
170+ Agent=UdmAllocAgent(Env,0,UDM_OPEN_MODE_READ);
171+#else
172+ Env=UdmAllocEnv();
173 UdmEnvSetDBAddr(Env,dbaddr);
174- UdmEnvSetDBMode(Env,dbmode);
175-#endif
176-
177+ UdmEnvSetDBMode(Env,dbmode);
178 Agent=UdmAllocAgent(Env,0,UDM_OPEN_MODE_READ);
179-
180+#endif
181 ZEND_REGISTER_RESOURCE(return_value,Agent,le_link);
182 }
183 break;
184@@ -485,66 +541,110 @@
185
186 switch(var){
187 case UDM_PARAM_PAGE_SIZE:
188+#if UDM_VERSION_ID >= 30204
189+ UdmVarListReplaceStr(&Agent->Conf->Vars,"ps",val);
190+#else
191 Agent->page_size=atoi(val);
192 if(Agent->page_size<1)Agent->page_size=20;
193-
194+#endif
195 break;
196
197 case UDM_PARAM_PAGE_NUM:
198+#if UDM_VERSION_ID >= 30204
199+ UdmVarListReplaceStr(&Agent->Conf->Vars,"np",val);
200+#else
201 Agent->page_number=atoi(val);
202 if(Agent->page_number<0)Agent->page_number=0;
203-
204+#endif
205 break;
206-
207+
208 case UDM_PARAM_SEARCH_MODE:
209 switch (atoi(val)){
210 case UDM_MODE_ALL:
211+#if UDM_VERSION_ID >= 30204
212+ UdmVarListReplaceStr(&Agent->Conf->Vars,"m","all");
213+#else
214 Agent->search_mode=UDM_MODE_ALL;
215+#endif
216 break;
217
218 case UDM_MODE_ANY:
219+#if UDM_VERSION_ID >= 30204
220+ UdmVarListReplaceStr(&Agent->Conf->Vars,"m","any");
221+#else
222 Agent->search_mode=UDM_MODE_ANY;
223+#endif
224 break;
225
226 case UDM_MODE_BOOL:
227+#if UDM_VERSION_ID >= 30204
228+ UdmVarListReplaceStr(&Agent->Conf->Vars,"m","all");
229+#else
230 Agent->search_mode=UDM_MODE_BOOL;
231+#endif
232 break;
233
234 case UDM_MODE_PHRASE:
235+#if UDM_VERSION_ID >= 30200
236+ php_error(E_WARNING,"Udm_Set_Agent_Param: Unknown search mode");
237+ RETURN_FALSE;
238+#else
239 Agent->search_mode=UDM_MODE_PHRASE;
240+#endif
241 break;
242
243 default:
244+#if UDM_VERSION_ID >= 30204
245+ UdmVarListReplaceStr(&Agent->Conf->Vars,"m","all");
246+#else
247 Agent->search_mode=UDM_MODE_ALL;
248-
249- php_error(E_WARNING,"Udm_Set_Agent_Param: Unknown search mode");
250+#endif
251+ php_error(E_WARNING,"Udm_Set_Agent_Param: Unknown search mode");
252 RETURN_FALSE;
253 break;
254 }
255-
256 break;
257
258 case UDM_PARAM_WORD_MATCH:
259 switch (atoi(val)){
260 case UDM_MATCH_WORD:
261+#if UDM_VERSION_ID >= 30204
262+ UdmVarListReplaceStr(&Agent->Conf->Vars,"wm","wrd");
263+#else
264 Agent->word_match=UDM_MATCH_WORD;
265+#endif
266 break;
267
268 case UDM_MATCH_BEGIN:
269+#if UDM_VERSION_ID >= 30204
270+ UdmVarListReplaceStr(&Agent->Conf->Vars,"wm","beg");
271+#else
272 Agent->word_match=UDM_MATCH_BEGIN;
273+#endif
274 break;
275
276 case UDM_MATCH_END:
277+#if UDM_VERSION_ID >= 30204
278+ UdmVarListReplaceStr(&Agent->Conf->Vars,"wm","end");
279+#else
280 Agent->word_match=UDM_MATCH_END;
281+#endif
282 break;
283
284 case UDM_MATCH_SUBSTR:
285+#if UDM_VERSION_ID >= 30204
286+ UdmVarListReplaceStr(&Agent->Conf->Vars,"wm","sub");
287+#else
288 Agent->word_match=UDM_MATCH_SUBSTR;
289+#endif
290 break;
291
292 default:
293+#if UDM_VERSION_ID >= 30204
294+ UdmVarListReplaceStr(&Agent->Conf->Vars,"wm","wrd");
295+#else
296 Agent->word_match=UDM_MATCH_WORD;
297-
298+#endif
299 php_error(E_WARNING,"Udm_Set_Agent_Param: Unknown word match mode");
300 RETURN_FALSE;
301 break;
302@@ -553,9 +653,11 @@
303 case UDM_PARAM_CACHE_MODE:
304 switch (atoi(val)){
305 case UDM_CACHE_ENABLED:
306-#if UDM_VERSION_ID < 30200
307+#if UDM_VERSION_ID < 30200
308 Agent->cache_mode=UDM_CACHE_ENABLED;
309-#else
310+#elif UDM_VERSION_ID >= 30204
311+ UdmVarListReplaceStr(&Agent->Conf->Vars,"Cache","yes");
312+#else
313 UdmReplaceStrVar(Agent->Conf->vars,"Cache","yes",UDM_VARSRC_GLOBAL);
314 #endif
315 break;
316@@ -563,6 +665,8 @@
317 case UDM_CACHE_DISABLED:
318 #if UDM_VERSION_ID < 30200
319 Agent->cache_mode=UDM_CACHE_DISABLED;
320+#elif UDM_VERSION_ID >= 30204
321+ UdmVarListReplaceStr(&Agent->Conf->Vars,"Cache","no");
322 #else
323 UdmReplaceStrVar(Agent->Conf->vars,"Cache","no",UDM_VARSRC_GLOBAL);
324 #endif
325@@ -571,6 +675,8 @@
326 default:
327 #if UDM_VERSION_ID < 30200
328 Agent->cache_mode=UDM_CACHE_DISABLED;
329+#elif UDM_VERSION_ID >= 30204
330+ UdmVarListReplaceStr(&Agent->Conf->Vars,"Cache","no");
331 #else
332 UdmReplaceStrVar(Agent->Conf->vars,"Cache","no",UDM_VARSRC_GLOBAL);
333 #endif
334@@ -586,6 +692,8 @@
335 case UDM_TRACK_ENABLED:
336 #if UDM_VERSION_ID < 30200
337 Agent->track_mode|=UDM_TRACK_QUERIES;
338+#elif UDM_VERSION_ID >= 30204
339+ UdmVarListReplaceStr(&Agent->Conf->Vars,"TrackQuery","yes");
340 #else
341 UdmReplaceStrVar(Agent->Conf->vars,"TrackQuery","yes",UDM_VARSRC_GLOBAL);
342 #endif
343@@ -594,6 +702,8 @@
344 case UDM_TRACK_DISABLED:
345 #if UDM_VERSION_ID < 30200
346 Agent->track_mode &= ~(UDM_TRACK_QUERIES);
347+#elif UDM_VERSION_ID >= 30204
348+ UdmVarListReplaceStr(&Agent->Conf->Vars,"TrackQuery","no");
349 #else
350 UdmReplaceStrVar(Agent->Conf->vars,"TrackQuery","no",UDM_VARSRC_GLOBAL);
351 #endif
352@@ -603,6 +713,8 @@
353 default:
354 #if UDM_VERSION_ID < 30200
355 Agent->track_mode &= ~(UDM_TRACK_QUERIES);
356+#elif UDM_VERSION_ID >= 30204
357+ UdmVarListReplaceStr(&Agent->Conf->Vars,"TrackQuery","no");
358 #else
359 UdmReplaceStrVar(Agent->Conf->vars,"TrackQuery","no",UDM_VARSRC_GLOBAL);
360 #endif
361@@ -633,11 +745,12 @@
362 break;
363
364 case UDM_PARAM_ISPELL_PREFIXES:
365-
366 switch (atoi(val)){
367 case UDM_PREFIXES_ENABLED:
368 #if UDM_VERSION_ID < 30200
369 Agent->Conf->ispell_mode |= UDM_ISPELL_USE_PREFIXES;
370+#elif UDM_VERSION_ID >= 30204
371+ UdmVarListReplaceStr(&Agent->Conf->Vars,"IspellUsePrefixes","1");
372 #else
373 UdmAddIntVar(Agent->Conf->vars, "IspellUsePrefixes", 1, UDM_VARSRC_GLOBAL);
374 #endif
375@@ -646,6 +759,8 @@
376 case UDM_PREFIXES_DISABLED:
377 #if UDM_VERSION_ID < 30200
378 Agent->Conf->ispell_mode &= ~UDM_ISPELL_USE_PREFIXES;
379+#elif UDM_VERSION_ID >= 30204
380+ UdmVarListReplaceStr(&Agent->Conf->Vars,"IspellUsePrefixes","0");
381 #else
382 UdmAddIntVar(Agent->Conf->vars, "IspellUsePrefixes", 0, UDM_VARSRC_GLOBAL);
383 #endif
384@@ -655,6 +770,8 @@
385 default:
386 #if UDM_VERSION_ID < 30200
387 Agent->Conf->ispell_mode |= UDM_ISPELL_USE_PREFIXES;
388+#elif UDM_VERSION_ID >= 30204
389+ UdmVarListReplaceStr(&Agent->Conf->Vars,"IspellUsePrefixes","0");
390 #else
391 UdmAddIntVar(Agent->Conf->vars, "IspellUsePrefixes", 1, UDM_VARSRC_GLOBAL);
392 #endif
393@@ -670,6 +787,12 @@
394 #if UDM_VERSION_ID < 30200
395 Agent->Conf->local_charset=UdmGetCharset(val);
396 Agent->charset=Agent->Conf->local_charset;
397+#elif UDM_VERSION_ID >= 30204
398+ UdmVarListReplaceStr(&Agent->Conf->Vars,"LocalCharset",val);
399+ {
400+ const char * charset=UdmVarListFindStr(&Agent->Conf->Vars,"LocalCharset","iso-8859-1");
401+ Agent->Conf->lcs=UdmGetCharSet(charset);
402+ }
403 #else
404 Agent->Conf->local_charset=strdup(val);
405 UdmReplaceStrVar(Agent->Conf->vars,"LocalCharset",val,UDM_VARSRC_GLOBAL);
406@@ -679,29 +802,47 @@
407
408 #if UDM_VERSION_ID >= 30200
409 case UDM_PARAM_BROWSER_CHARSET:
410+#if UDM_VERSION_ID >= 30204
411+ UdmVarListReplaceStr(&Agent->Conf->Vars,"BrowserCharset",val);
412+ {
413+ const char * charset=UdmVarListFindStr(&Agent->Conf->Vars,"BrowserCharset","iso-8859-1");
414+ Agent->Conf->lcs=UdmGetCharSet(charset);
415+ }
416+#else
417 Agent->Conf->browser_charset=strdup(val);
418 UdmReplaceStrVar(Agent->Conf->vars,"BrowserCharset",val,UDM_VARSRC_GLOBAL);
419-
420+#endif
421 break;
422
423 case UDM_PARAM_HLBEG:
424+#if UDM_VERSION_ID >= 30204
425+ UdmVarListReplaceStr(&Agent->Conf->Vars,"HlBeg",val);
426+#else
427 UdmReplaceStrVar(Agent->Conf->vars,"HlBeg",val,UDM_VARSRC_GLOBAL);
428-
429+#endif
430 break;
431
432 case UDM_PARAM_HLEND:
433- UdmReplaceStrVar(Agent->Conf->vars,"HlBeg",val,UDM_VARSRC_GLOBAL);
434-
435+#if UDM_VERSION_ID >= 30204
436+ UdmVarListReplaceStr(&Agent->Conf->Vars,"HlEnd",val);
437+#else
438+ UdmReplaceStrVar(Agent->Conf->vars,"HlEnd",val,UDM_VARSRC_GLOBAL);
439+#endif
440 break;
441
442 case UDM_PARAM_SYNONYM:
443 if (UdmSynonymListLoad(Agent->Conf,val)) {
444 php_error(E_WARNING,Agent->Conf->errstr);
445 RETURN_FALSE;
446+#if UDM_VERSION_ID >= 30204
447+ } else UdmSynonymListSort(&(Agent->Conf->Synonyms));
448+#else
449 } else UdmSynonymListSort(&(Agent->Conf->SynList));
450+#endif
451 break;
452
453 case UDM_PARAM_SEARCHD:
454+#if UDM_VERSION_ID <= 30203
455 UdmSDCLientListAdd(&(Agent->Conf->sdcl),val);
456 {
457 size_t i;
458@@ -709,17 +850,24 @@
459 UdmSDCLientListAdd(&Agent->sdcl,Agent->Conf->sdcl.Clients[i].addr);
460 }
461 }
462-
463+#endif
464 break;
465
466 case UDM_PARAM_QSTRING:
467+#if UDM_VERSION_ID >= 30204
468+ UdmVarListReplaceStr(&Agent->Conf->Vars,"QUERY_STRING",val);
469+#else
470 UdmReplaceStrVar(Agent->Conf->vars,"QUERY_STRING",val,UDM_VARSRC_GLOBAL);
471-
472+#endif
473 break;
474
475+
476 case UDM_PARAM_REMOTE_ADDR:
477+#if UDM_VERSION_ID >= 30204
478+ UdmVarListReplaceStr(&Agent->Conf->Vars,"IP",val);
479+#else
480 UdmReplaceStrVar(Agent->Conf->vars,"IP",val,UDM_VARSRC_GLOBAL);
481-
482+#endif
483 break;
484 #endif
485
486@@ -731,7 +879,11 @@
487 break;
488
489 case UDM_PARAM_STOPFILE:
490+#if UDM_VERSION_ID >= 30204
491+ if (UdmStopListLoad(Agent->Conf,val)) {
492+#else
493 if (UdmFileLoadStopList(Agent->Conf,val)) {
494+#endif
495 php_error(E_WARNING,Agent->Conf->errstr);
496 RETURN_FALSE;
497 }
498@@ -740,6 +892,8 @@
499 case UDM_PARAM_WEIGHT_FACTOR:
500 #if UDM_VERSION_ID < 30200
501 Agent->weight_factor=strdup(val);
502+#elif UDM_VERSION_ID >= 30204
503+ UdmVarListReplaceStr(&Agent->Conf->Vars,"wf",val);
504 #else
505 UdmReplaceStrVar(Agent->Conf->vars,"wf",val,UDM_VARSRC_GLOBAL);
506 {
507@@ -763,23 +917,37 @@
508 break;
509
510 case UDM_PARAM_MIN_WORD_LEN:
511+#if UDM_VERSION_ID >= 30204
512+ Agent->Conf->WordParam.min_word_len=atoi(val);
513+#else
514 Agent->Conf->min_word_len=atoi(val);
515-
516+#endif
517 break;
518
519 case UDM_PARAM_MAX_WORD_LEN:
520+#if UDM_VERSION_ID >= 30204
521+ Agent->Conf->WordParam.max_word_len=atoi(val);
522+#else
523 Agent->Conf->max_word_len=atoi(val);
524-
525+#endif
526 break;
527
528 case UDM_PARAM_CROSS_WORDS:
529 switch (atoi(val)){
530 case UDM_CROSS_WORDS_ENABLED:
531+#if UDM_VERSION_ID >= 30204
532+ UdmVarListReplaceStr(&Agent->Conf->Vars,"CrossWords","yes");
533+#else
534 Agent->Conf->use_crossword=UDM_CROSS_WORDS_ENABLED;
535+#endif
536 break;
537
538 case UDM_CROSS_WORDS_DISABLED:
539+#if UDM_VERSION_ID >= 30204
540+ UdmVarListReplaceStr(&Agent->Conf->Vars,"CrossWords","no");
541+#else
542 Agent->Conf->use_crossword=UDM_CROSS_WORDS_DISABLED;
543+#endif
544 break;
545
546 default:
547@@ -795,14 +963,22 @@
548 case UDM_PARAM_VARDIR:
549 #if UDM_VERSION_ID < 30200
550 udm_snprintf(Agent->Conf->vardir,sizeof(Agent->Conf->vardir)-1,"%s%s",val,UDMSLASHSTR);
551+#elif UDM_VERSION_ID >= 30204
552+ UdmVarListReplaceStr(&Agent->Conf->Vars,"Vardir",val);
553+ snprintf(Agent->Conf->vardir,sizeof(Agent->Conf->vardir)-1,"%s%s",val,UDMSLASHSTR);
554 #else
555 snprintf(Agent->Conf->vardir,sizeof(Agent->Conf->vardir)-1,"%s%s",val,UDMSLASHSTR);
556 #endif
557-
558 break;
559
560+#if UDM_VERSION_ID >= 30204
561+ case UDM_PARAM_QUERY:
562+ UdmVarListReplaceStr(&Agent->Conf->Vars,"q",val);
563+
564+ break;
565+#endif
566+
567 #endif
568-
569 default:
570 php_error(E_WARNING,"Udm_Set_Agent_Param: Unknown agent session parameter");
571 RETURN_FALSE;
572@@ -938,10 +1114,17 @@
573 }
574
575 if (flag) {
576+#if UDM_VERSION_ID >= 30204
577+ if(Agent->Conf->Spells.nspell) {
578+ UdmSortDictionary(&Agent->Conf->Spells);
579+ UdmSortAffixes(&Agent->Conf->Affixes,&Agent->Conf->Spells);
580+ }
581+#else
582 if(Agent->Conf->nspell) {
583 UdmSortDictionary(Agent->Conf);
584 UdmSortAffixes(Agent->Conf);
585 }
586+#endif
587 }
588
589 RETURN_TRUE;
590@@ -966,8 +1149,11 @@
591 break;
592 }
593 ZEND_FETCH_RESOURCE(Agent, UDM_AGENT *, yyagent, -1, "mnoGoSearch-Agent", le_link);
594-
595-#if UDM_VERSION_ID > 30111
596+
597+#if UDM_VERSION_ID >= 30204
598+ UdmSpellListFree(&Agent->Conf->Spells);
599+ UdmAffixListFree(&Agent->Conf->Affixes);
600+#elif UDM_VERSION_ID > 30111
601 UdmFreeIspell(Agent->Conf);
602 #endif
603
604@@ -1005,26 +1191,40 @@
605
606 switch(var){
607 case UDM_LIMIT_URL:
608+#if UDM_VERSION_ID >= 30204
609+ UdmVarListAddStr(&Agent->Conf->Vars,"ul",val);
610+#else
611 UdmAddURLLimit(Agent->Conf,val);
612-
613+#endif
614 break;
615
616 case UDM_LIMIT_TAG:
617+#if UDM_VERSION_ID >= 30204
618+ UdmVarListAddStr(&Agent->Conf->Vars,"t",val);
619+#else
620 UdmAddTagLimit(Agent->Conf,val);
621-
622+#endif
623 break;
624
625 case UDM_LIMIT_LANG:
626+#if UDM_VERSION_ID >= 30204
627+ UdmVarListAddStr(&Agent->Conf->Vars,"lang",val);
628+#else
629 UdmAddLangLimit(Agent->Conf,val);
630-
631+#endif
632 break;
633
634 case UDM_LIMIT_CAT:
635+#if UDM_VERSION_ID >= 30204
636+ UdmVarListAddStr(&Agent->Conf->Vars,"cat",val);
637+#else
638 UdmAddCatLimit(Agent->Conf,val);
639-
640+#endif
641 break;
642
643- case UDM_LIMIT_DATE: {
644+ case UDM_LIMIT_DATE:
645+#if UDM_VERSION_ID < 30200
646+ {
647 struct udm_stl_info_t stl_info = { 0, 0, 0 };
648
649 if (val[0] == '>') {
650@@ -1038,9 +1238,9 @@
651
652 stl_info.t1=(time_t)(atol(val+1));
653 UdmAddTimeLimit(Agent->Conf,&stl_info);
654-
655- break;
656 }
657+#endif
658+ break;
659 default:
660 php_error(E_WARNING,"Udm_Add_Search_Limit: Unknown search limit parameter");
661 RETURN_FALSE;
662@@ -1056,6 +1256,8 @@
663 {
664 pval ** yyagent;
665 UDM_AGENT * Agent;
666+ int i;
667+
668 switch(ZEND_NUM_ARGS()){
669 case 1: {
670 if (zend_get_parameters_ex(1, &yyagent)==FAILURE) {
671@@ -1068,9 +1270,20 @@
672 break;
673 }
674 ZEND_FETCH_RESOURCE(Agent, UDM_AGENT *, yyagent, -1, "mnoGoSearch-Agent", le_link);
675-
676+#if UDM_VERSION_ID >= 30204
677+ for(i=0;i<Agent->Conf->Vars.nvars;i++){
678+ if ((!strcasecmp("ul",Agent->Conf->Vars.Var[i].name))||
679+ (!strcasecmp("cat",Agent->Conf->Vars.Var[i].name))||
680+ (!strcasecmp("t",Agent->Conf->Vars.Var[i].name))||
681+ (!strcasecmp("lang",Agent->Conf->Vars.Var[i].name))) {
682+ UDM_FREE(Agent->Conf->Vars.Var[i].name);
683+ UDM_FREE(Agent->Conf->Vars.Var[i].val);
684+ Agent->Conf->Vars.nvars--;
685+ }
686+ }
687+#else
688 UdmClearLimits(Agent->Conf);
689-
690+#endif
691 RETURN_TRUE;
692 }
693 /* }}} */
694@@ -1141,7 +1354,9 @@
695 RETURN_STRING(buf,1);
696 }
697 /* }}} */
698+#endif
699
700+#if UDM_VERSION_ID == 30203
701 /* {{{ proto int udm_open_stored(int agent, string storedaddr)
702 Open connection to stored */
703 DLEXPORT PHP_FUNCTION(udm_open_stored)
704@@ -1260,6 +1475,37 @@
705 /* }}} */
706 #endif
707
708+#if UDM_VERSION_ID >= 30204
709+/* {{{ proto int udm_parse_query_string(int agent, string str)
710+ Parses query string, initialises variables and search limits taken from it */
711+DLEXPORT PHP_FUNCTION(udm_parse_query_string)
712+{
713+ pval ** yystr, ** yyagent;
714+ char *str;
715+ UDM_AGENT * Agent;
716+ int id=-1;
717+
718+ switch(ZEND_NUM_ARGS()){
719+ case 2: {
720+ if (zend_get_parameters_ex(2, &yyagent,&yystr)==FAILURE) {
721+ RETURN_FALSE;
722+ }
723+ }
724+ break;
725+ default:
726+ WRONG_PARAM_COUNT;
727+ break;
728+ }
729+ ZEND_FETCH_RESOURCE(Agent, UDM_AGENT *, yyagent, id, "mnoGoSearch-Agent", le_link);
730+ convert_to_string_ex(yystr);
731+ str = Z_STRVAL_PP(yystr);
732+
733+ UdmParseQueryString(Agent,&Agent->Conf->Vars,str);
734+ RETURN_TRUE;
735+}
736+/* }}} */
737+#endif
738+
739 /* {{{ proto int udm_find(int agent, string query)
740 Perform search */
741 DLEXPORT PHP_FUNCTION(udm_find)
742@@ -1283,7 +1529,7 @@
743 ZEND_FETCH_RESOURCE(Agent, UDM_AGENT *, yyagent, id, "mnoGoSearch-Agent", le_link);
744 convert_to_string_ex(yyquery);
745
746-#if UDM_VERSION_ID < 30200
747+#if UDM_VERSION_ID < 30200
748 if ((Res=UdmFind(Agent,UdmTolower(Z_STRVAL_PP(yyquery),Agent->charset)))) {
749 #else
750 if ((Res=UdmFind(Agent,Z_STRVAL_PP(yyquery)))) {
751@@ -1323,64 +1569,124 @@
752 if(row<Res->num_rows){
753 switch(field){
754 case UDM_FIELD_URL:
755+#if UDM_VERSION_ID >= 30204
756+ RETURN_STRING((char *)UdmVarListFindStr(&Res->Doc[row].Sections,"URL",""),1);
757+#else
758 RETURN_STRING((Res->Doc[row].url)?(Res->Doc[row].url):"",1);
759+#endif
760 break;
761
762 case UDM_FIELD_CONTENT:
763+#if UDM_VERSION_ID >= 30204
764+ RETURN_STRING((char *)UdmVarListFindStr(&(Res->Doc[row].Sections),"Content-Type",""),1);
765+#else
766 RETURN_STRING((Res->Doc[row].content_type)?(Res->Doc[row].content_type):"",1);
767+#endif
768 break;
769
770 case UDM_FIELD_TITLE:
771+#if UDM_VERSION_ID >= 30204
772+ RETURN_STRING((char *)UdmVarListFindStr(&(Res->Doc[row].Sections),"Title",""),1);
773+#else
774 RETURN_STRING((Res->Doc[row].title)?(Res->Doc[row].title):"",1);
775+#endif
776 break;
777
778 case UDM_FIELD_KEYWORDS:
779+#if UDM_VERSION_ID >= 30204
780+ RETURN_STRING((char *)UdmVarListFindStr(&(Res->Doc[row].Sections),"Meta.Keywords",""),1);
781+#else
782 RETURN_STRING((Res->Doc[row].keywords)?(Res->Doc[row].keywords):"",1);
783+#endif
784 break;
785
786 case UDM_FIELD_DESC:
787+#if UDM_VERSION_ID >= 30204
788+ RETURN_STRING((char *)UdmVarListFindStr(&(Res->Doc[row].Sections),"Meta.Description",""),1);
789+#else
790 RETURN_STRING((Res->Doc[row].description)?(Res->Doc[row].description):"",1);
791+#endif
792 break;
793
794 case UDM_FIELD_TEXT:
795+#if UDM_VERSION_ID >= 30204
796+ RETURN_STRING((char *)UdmVarListFindStr(&(Res->Doc[row].Sections),"Body",""),1);
797+#else
798 RETURN_STRING((Res->Doc[row].text)?(Res->Doc[row].text):"",1);
799+#endif
800 break;
801
802 case UDM_FIELD_SIZE:
803+#if UDM_VERSION_ID >= 30204
804+ RETURN_LONG(UdmVarListFindInt(&(Res->Doc[row].Sections),"Content-Length",0));
805+#else
806 RETURN_LONG((Res->Doc[row].size));
807+#endif
808 break;
809
810- case UDM_FIELD_URLID:
811+ case UDM_FIELD_URLID:
812+#if UDM_VERSION_ID >= 30204
813+ RETURN_LONG(UdmVarListFindInt(&(Res->Doc[row].Sections),"ID",0));
814+#else
815 RETURN_LONG((Res->Doc[row].url_id));
816+#endif
817 break;
818
819 case UDM_FIELD_RATING:
820+#if UDM_VERSION_ID >= 30204
821+ RETURN_STRING((char *)UdmVarListFindStr(&(Res->Doc[row].Sections),"Score",""),1);
822+#else
823 RETURN_LONG((Res->Doc[row].rating));
824+#endif
825 break;
826
827 case UDM_FIELD_MODIFIED:
828+#if UDM_VERSION_ID >= 30204
829+ RETURN_LONG(UdmVarListFindInt(&(Res->Doc[row].Sections),"Last-Modified",0));
830+#else
831 RETURN_LONG((Res->Doc[row].last_mod_time));
832+#endif
833 break;
834
835 case UDM_FIELD_ORDER:
836+#if UDM_VERSION_ID >= 30204
837+ RETURN_LONG(UdmVarListFindInt(&(Res->Doc[row].Sections),"Order",0));
838+#else
839 RETURN_LONG((Res->Doc[row].order));
840+#endif
841 break;
842
843 case UDM_FIELD_CRC:
844+#if UDM_VERSION_ID >= 30204
845+ RETURN_LONG(UdmVarListFindInt(&(Res->Doc[row].Sections),"crc32",0));
846+#else
847 RETURN_LONG((Res->Doc[row].crc32));
848+#endif
849 break;
850
851 case UDM_FIELD_CATEGORY:
852+#if UDM_VERSION_ID >= 30204
853+ RETURN_STRING((char *)UdmVarListFindStr(&(Res->Doc[row].Sections),"Category",""),1);
854+#else
855 RETURN_STRING((Res->Doc[row].category)?(Res->Doc[row].category):"",1);
856+#endif
857 break;
858
859 #if UDM_VERSION_ID >= 30203
860 case UDM_FIELD_LANG:
861+#if UDM_VERSION_ID >= 30204
862+ RETURN_STRING((char *)UdmVarListFindStr(&(Res->Doc[row].Sections),"Content-Language",""),1);
863+#else
864 RETURN_STRING((Res->Doc[row].lang)?(Res->Doc[row].lang):"",1);
865+#endif
866 break;
867
868 case UDM_FIELD_CHARSET:
869+#if UDM_VERSION_ID >= 30204
870+ RETURN_STRING((char *)UdmVarListFindStr(&(Res->Doc[row].Sections),"Charset",""),1);
871+#else
872 RETURN_STRING((Res->Doc[row].charset)?(Res->Doc[row].charset):"",1);
873+#endif
874 break;
875 #endif
876
877@@ -1426,9 +1732,73 @@
878 RETURN_LONG(Res->total_found);
879 break;
880
881- case UDM_PARAM_WORDINFO:
882+ case UDM_PARAM_WORDINFO:
883+#if UDM_VERSION_ID >= 30204
884+ {
885+ int len,i;
886+ for(len = i = 0; i < Res->WWList.nwords; i++)
887+ len += Res->WWList.Word[i].len;
888+ {
889+ size_t wsize=(1+len*15)*sizeof(char);
890+ char *wordinfo = (char*) malloc(wsize);
891+ int corder = -1, ccount = 0;
892+
893+ *wordinfo = '\0';
894+
895+ for(i = 0; i < Res->WWList.nwords; i++){
896+ if ((Res->WWList.Word[i].count > 0) || (Res->WWList.Word[i].origin == UDM_WORD_ORIGIN_QUERY)) {
897+ if(wordinfo[0]) strcat(wordinfo,", ");
898+ sprintf(UDM_STREND(wordinfo)," %s : %d", Res->WWList.Word[i].word, Res->WWList.Word[i].count);
899+ } else if (Res->WWList.Word[i].origin == UDM_WORD_ORIGIN_STOP) {
900+ if(wordinfo[0]) strcat(wordinfo,", ");
901+ sprintf(UDM_STREND(wordinfo)," %s : stopword", Res->WWList.Word[i].word);
902+ }
903+ }
904+ RETURN_STRING(wordinfo,1);
905+ }
906+ }
907+#else
908 RETURN_STRING((Res->wordinfo)?(Res->wordinfo):"",1);
909+#endif
910+ break;
911+
912+#if UDM_VERSION_ID >= 30204
913+ case UDM_PARAM_WORDINFO_ALL:
914+ {
915+ int len,i;
916+ for(len = i = 0; i < Res->WWList.nwords; i++)
917+ len += Res->WWList.Word[i].len;
918+ {
919+ size_t wsize=(1+len*15)*sizeof(char);
920+ char *wordinfo = (char*) malloc(wsize);
921+ int corder = -1, ccount = 0;
922+
923+ *wordinfo = '\0';
924+
925+ for(i = 0; i < Res->WWList.nwords; i++){
926+ if (Res->WWList.Word[i].order != corder) {
927+ if(wordinfo[0]) {
928+ sprintf(UDM_STREND(wordinfo)," / %d, ", ccount);
929+ }
930+ ccount = Res->WWList.Word[i].count;
931+ if (Res->WWList.Word[i].origin == UDM_WORD_ORIGIN_STOP) {
932+ sprintf(UDM_STREND(wordinfo)," %s : stopword", Res->WWList.Word[i].word);
933+ } else {
934+ sprintf(UDM_STREND(wordinfo)," %s : %d", Res->WWList.Word[i].word, Res->WWList.Word[i].count);
935+ corder = Res->WWList.Word[i].order;
936+ }
937+ } else {
938+ ccount += Res->WWList.Word[i].count;
939+ }
940+ }
941+ if (Res->WWList.nwords) {
942+ sprintf(UDM_STREND(wordinfo)," / %d", ccount);
943+ }
944+ RETURN_STRING(wordinfo,1);
945+ }
946+ }
947 break;
948+#endif
949
950 case UDM_PARAM_SEARCHTIME:
951 RETURN_DOUBLE(((double)Res->work_time)/1000);
952@@ -1516,7 +1886,11 @@
953 break;
954 }
955 ZEND_FETCH_RESOURCE(Agent, UDM_AGENT *, yyagent, -1, "mnoGoSearch-Agent", le_link);
956+#if UDM_VERSION_ID >= 30204
957+ RETURN_LONG(UdmEnvErrCode(Agent->Conf));
958+#else
959 RETURN_LONG(UdmDBErrorCode(Agent->db));
960+#endif
961 }
962 /* }}} */
963
964@@ -1539,7 +1913,11 @@
965 break;
966 }
967 ZEND_FETCH_RESOURCE(Agent, UDM_AGENT *, yyagent, -1, "mnoGoSearch-Agent", le_link);
968+#if UDM_VERSION_ID >= 30204
969+ RETURN_STRING((UdmEnvErrMsg(Agent->Conf))?(UdmEnvErrMsg(Agent->Conf)):"",1);
970+#else
971 RETURN_STRING((UdmDBErrorMsg(Agent->db))?(UdmDBErrorMsg(Agent->db)):"",1);
972+#endif
973 }
974 /* }}} */
975
976@@ -1577,7 +1955,14 @@
977 convert_to_string_ex(yycat);
978 cat = Z_STRVAL_PP(yycat);
979
980+#if UDM_VERSION_ID >= 30204
981+ if (NULL==(c=(UDM_CATEGORY *)malloc(sizeof(UDM_CATEGORY)))) RETURN_FALSE;
982+ if (NULL==(c->Category=malloc(sizeof(UDM_CATITEM)))) RETURN_FALSE;
983+ strncpy(c->addr,cat,sizeof(c->addr)-1);
984+ if(UdmCatAction(Agent,c,UDM_CAT_ACTION_LIST,Agent->Conf->db)){
985+#else
986 if((c=UdmCatList(Agent,cat))){
987+#endif
988 if (array_init(return_value)==FAILURE) {
989 RETURN_FALSE;
990 }
991@@ -1586,15 +1971,30 @@
992 RETURN_FALSE;
993 }
994
995+#if UDM_VERSION_ID >= 30204
996+ {
997+ int i;
998+ for(i==0;i<c->ncategories;i++){
999+ snprintf(buf, UDMSTRSIZ, "%s%s",c->Category[i].link[0]?"@ ":"", c->Category[i].name);
1000+ add_next_index_string(return_value, c->Category[i].link[0]?c->Category[i].link:c->Category[i].path, 1);
1001+ add_next_index_string(return_value, buf, 1);
1002+ c++;
1003+ }
1004+ }
1005+#else
1006 while(c->rec_id){
1007 snprintf(buf, UDMSTRSIZ, "%s%s",c->link[0]?"@ ":"", c->name);
1008 add_next_index_string(return_value, c->link[0]?c->link:c->path, 1);
1009 add_next_index_string(return_value, buf, 1);
1010 c++;
1011 }
1012-
1013+#endif
1014 free(buf);
1015- } else {
1016+#if UDM_VERSION_ID >= 30204
1017+ free(c->Category);
1018+ free(c);
1019+#endif
1020+} else {
1021 RETURN_FALSE;
1022 }
1023 }
1024@@ -1626,7 +2026,14 @@
1025 convert_to_string_ex(yycat);
1026 cat = Z_STRVAL_PP(yycat);
1027
1028+#if UDM_VERSION_ID >= 30204
1029+ if (NULL==(c=(UDM_CATEGORY *)malloc(sizeof(UDM_CATEGORY)))) RETURN_FALSE;
1030+ if (NULL==(c->Category=malloc(sizeof(UDM_CATITEM)))) RETURN_FALSE;
1031+ strncpy(c->addr,cat,sizeof(c->addr)-1);
1032+ if(UdmCatAction(Agent,c,UDM_CAT_ACTION_PATH,Agent->Conf->db)){
1033+#else
1034 if((c=UdmCatPath(Agent,cat))){
1035+#endif
1036 if (array_init(return_value)==FAILURE) {
1037 RETURN_FALSE;
1038 }
1039@@ -1635,14 +2042,29 @@
1040 RETURN_FALSE;
1041 }
1042
1043+#if UDM_VERSION_ID >= 30204
1044+ {
1045+ int i;
1046+ for(i==0;i<c->ncategories;i++){
1047+ snprintf(buf, UDMSTRSIZ, "%s%s",c->Category[i].link[0]?"@ ":"", c->Category[i].name);
1048+ add_next_index_string(return_value, c->Category[i].link[0]?c->Category[i].link:c->Category[i].path, 1);
1049+ add_next_index_string(return_value, buf, 1);
1050+ c++;
1051+ }
1052+ }
1053+#else
1054 while(c->rec_id){
1055 snprintf(buf, UDMSTRSIZ, "%s%s",c->link[0]?"@ ":"", c->name);
1056 add_next_index_string(return_value, c->link[0]?c->link:c->path, 1);
1057 add_next_index_string(return_value, buf, 1);
1058 c++;
1059 }
1060-
1061+#endif
1062 free(buf);
1063+#if UDM_VERSION_ID >= 30204
1064+ free(c->Category);
1065+ free(c);
1066+#endif
1067 } else {
1068 RETURN_FALSE;
1069 }
1070@@ -1670,7 +2092,11 @@
1071 break;
1072 }
1073 ZEND_FETCH_RESOURCE(Agent, UDM_AGENT *, yyagent, id, "mnoGoSearch-Agent", le_link);
1074+#if UDM_VERSION_ID >= 30204
1075+ RETURN_LONG(UdmURLAction(Agent,NULL,UDM_URL_ACTION_DOCCOUNT,Agent->Conf->db));
1076+#else
1077 RETURN_LONG(UdmGetDocCount(Agent));
1078+#endif
1079 }
1080 /* }}} */
1081 #endif
1082diff -ur php-4.2.2/ext/mnogosearch.orig/php_mnogo.h php-4.2.2/ext/mnogosearch/php_mnogo.h
1083--- php-4.2.2/ext/mnogosearch.orig/php_mnogo.h Thu Feb 28 09:26:23 2002
1084+++ php-4.2.2/ext/mnogosearch/php_mnogo.h Thu Jun 6 07:45:45 2002
1085@@ -1,5 +1,5 @@
1086 /* $Source$ */
1087-/* $Id$ */
1088+/* $Id$ */
1089
1090 /*
1091 +----------------------------------------------------------------------+
1092@@ -57,14 +57,18 @@
1093 DLEXPORT PHP_FUNCTION(udm_api_version);
1094 #if UDM_VERSION_ID >= 30200
1095 DLEXPORT PHP_FUNCTION(udm_check_charset);
1096-#endif
1097-
1098-#if UDM_VERSION_ID >= 30203
1099-DLEXPORT PHP_FUNCTION(udm_crc32);
1100+#if UDM_VERSION_ID == 30203
1101 DLEXPORT PHP_FUNCTION(udm_open_stored);
1102 DLEXPORT PHP_FUNCTION(udm_check_stored);
1103 DLEXPORT PHP_FUNCTION(udm_close_stored);
1104 #endif
1105+#if UDM_VERSION_ID >= 30203
1106+DLEXPORT PHP_FUNCTION(udm_crc32);
1107+#endif
1108+#if UDM_VERSION_ID >= 30204
1109+DLEXPORT PHP_FUNCTION(udm_parse_query_string);
1110+#endif
1111+#endif
1112
1113 DLEXPORT PHP_FUNCTION(udm_alloc_agent);
1114 DLEXPORT PHP_FUNCTION(udm_set_agent_param);
This page took 0.209285 seconds and 4 git commands to generate.