1 diff -urN php-4.3.1.org/ext/mnogosearch/php_mnogo.c php-4.3.1/ext/mnogosearch/php_mnogo.c
2 --- php-4.3.1.org/ext/mnogosearch/php_mnogo.c Mon Feb 24 21:42:43 2003
3 +++ php-4.3.1/ext/mnogosearch/php_mnogo.c Mon Dec 16 20:17:09 2002
10 +----------------------------------------------------------------------+
12 #if UDM_VERSION_ID >= 30204
13 PHP_FE(udm_parse_query_string, NULL)
14 PHP_FE(udm_make_excerpt, NULL)
15 + PHP_FE(udm_set_agent_param_ex, NULL)
16 + PHP_FE(udm_get_res_field_ex, NULL)
21 UdmVarListReplaceStr(&Env->Vars,"DBAddr",dbaddr);
22 if(UDM_OK!=UdmDBSetAddr(Env->db,dbaddr,UDM_OPEN_MODE_READ)){
23 sprintf(Env->errstr,"Invalid DBAddr: '%s'",dbaddr);
24 +#if UDM_VERSION_ID <= 30207
27 php_error(E_WARNING,"%s(): Invalid DBAddr", get_active_function_name(TSRMLS_C));
31 UdmVarListReplaceStr(&Env->Vars,"DBAddr",dbaddr);
32 if(UDM_OK!=UdmDBSetAddr(Env->db,dbaddr,UDM_OPEN_MODE_READ)){
33 sprintf(Env->errstr,"Invalid DBAddr: '%s'",dbaddr);
34 +#if UDM_VERSION_ID <= 30207
37 php_error(E_WARNING,"%s(): Invalid DBAddr", get_active_function_name(TSRMLS_C));
41 case UDM_PARAM_VARDIR:
42 #if UDM_VERSION_ID < 30200
43 udm_snprintf(Agent->Conf->vardir,sizeof(Agent->Conf->vardir)-1,"%s%s",val,UDMSLASHSTR);
44 +#elif UDM_VERSION_ID >= 30208
45 + UdmVarListReplaceStr(&Agent->Conf->Vars,"Vardir",val);
46 #elif UDM_VERSION_ID >= 30204
47 UdmVarListReplaceStr(&Agent->Conf->Vars,"Vardir",val);
48 snprintf(Agent->Conf->vardir,sizeof(Agent->Conf->vardir)-1,"%s%s",val,UDMSLASHSTR);
49 @@ -1665,6 +1673,106 @@
54 +/* {{{ proto int udm_set_agent_param_ex(int agent, string var, string val)
55 + Set mnoGoSearch agent session parameters extended */
56 +DLEXPORT PHP_FUNCTION(udm_set_agent_param_ex)
58 + pval **yyagent, **yyvar, **yyval;
62 + switch(ZEND_NUM_ARGS()){
65 + if(zend_get_parameters_ex(3,&yyagent,&yyvar,&yyval)==FAILURE){
68 + convert_to_string_ex(yyvar);
69 + convert_to_string_ex(yyval);
70 + ZEND_FETCH_RESOURCE(Agent, UDM_AGENT *, yyagent, -1, "mnoGoSearch-agent", le_link);
71 + var = Z_STRVAL_PP(yyvar);
72 + val = Z_STRVAL_PP(yyval);
81 + UdmVarListReplaceStr(&Agent->Conf->Vars,var,val);
83 + if (!strcasecmp(var,"LocalCharset")) {
84 + const char * charset=UdmVarListFindStr(&Agent->Conf->Vars,"LocalCharset","iso-8859-1");
85 + Agent->Conf->lcs=UdmGetCharSet(charset);
86 + } else if (!strcasecmp(var,"BrowserCharset")) {
87 + const char * charset=UdmVarListFindStr(&Agent->Conf->Vars,"BrowserCharset","iso-8859-1");
88 + Agent->Conf->bcs=UdmGetCharSet(charset);
89 + } else if (!strcasecmp(var,"Synonym")) {
90 + if (UdmSynonymListLoad(Agent->Conf,val)) {
91 + php_error(E_WARNING, "%s(): %s", get_active_function_name(TSRMLS_C),Agent->Conf->errstr);
93 + } else UdmSynonymListSort(&(Agent->Conf->Synonyms));
94 + } else if (!strcasecmp(var,"Stopwordfile")) {
95 + if (UdmStopListLoad(Agent->Conf,val)) {
96 + php_error(E_WARNING, "%s(): %s", Agent->Conf->errstr, get_active_function_name(TSRMLS_C));
99 + } else if (!strcasecmp(var,"MinWordLen")) {
100 + Agent->Conf->WordParam.min_word_len=atoi(val);
101 + } else if (!strcasecmp(var,"MaxWordLen")) {
102 + Agent->Conf->WordParam.max_word_len=atoi(val);
103 +#if UDM_VERSION_ID <= 30207
104 + } else if (!strcasecmp(var,"VarDir")) {
105 + snprintf(Agent->Conf->vardir,sizeof(Agent->Conf->vardir)-1,"%s%s",val,UDMSLASHSTR);
112 +/* {{{ proto string udm_get_res_field_ex(int res, int row, string field)
113 + Fetch mnoGoSearch result field */
114 +DLEXPORT PHP_FUNCTION(udm_get_res_field_ex)
116 + pval **yyres, **yyrow_num, **yyfield_name;
122 + switch(ZEND_NUM_ARGS()){
124 + if (zend_get_parameters_ex(3, &yyres,&yyrow_num,&yyfield_name)==FAILURE){
127 + convert_to_string_ex(yyrow_num);
128 + convert_to_string_ex(yyfield_name);
129 + field = Z_STRVAL_PP(yyfield_name);
130 + row = atoi(Z_STRVAL_PP(yyrow_num));
138 + ZEND_FETCH_RESOURCE(Res, UDM_RESULT *, yyres, -1, "mnoGoSearch-Result", le_res);
139 + if(row<Res->num_rows){
140 + if (!strcasecmp(field,"URL")) {
142 + al = (char *)MyRemoveHiLightDup((const char *)(UdmVarListFindStr(&(Res->Doc[row].Sections), field, "")));
143 + UdmVarListReplaceStr(&Res->Doc[row].Sections,field,al);
146 + RETURN_STRING((char *)UdmVarListFindStr(&Res->Doc[row].Sections,field,""),1);
148 + php_error(E_WARNING,"%s(): row number too large", get_active_function_name(TSRMLS_C));
155 /* {{{ proto int udm_find(int agent, string query)
156 @@ -2071,7 +2179,13 @@
159 ZEND_FETCH_RESOURCE(Agent, UDM_AGENT *, yyagent, -1, "mnoGoSearch-Agent", le_link);
160 -#if UDM_VERSION_ID >= 30204
161 +#if UDM_VERSION_ID >= 30208
162 + if (UdmEnvErrMsg(Agent->Conf) && strlen(UdmEnvErrMsg(Agent->Conf))) {
167 +#elif UDM_VERSION_ID >= 30204
168 RETURN_LONG(UdmEnvErrCode(Agent->Conf));
170 RETURN_LONG(UdmDBErrorCode(Agent->db));
171 diff -urN php-4.3.1.org/ext/mnogosearch/php_mnogo.h php-4.3.1/ext/mnogosearch/php_mnogo.h
172 --- php-4.3.1.org/ext/mnogosearch/php_mnogo.h Mon Feb 24 21:42:43 2003
173 +++ php-4.3.1/ext/mnogosearch/php_mnogo.h Sun Nov 24 20:39:46 2002
180 +----------------------------------------------------------------------+
182 #if UDM_VERSION_ID >= 30204
183 DLEXPORT PHP_FUNCTION(udm_parse_query_string);
184 DLEXPORT PHP_FUNCTION(udm_make_excerpt);
185 +DLEXPORT PHP_FUNCTION(udm_set_agent_param_ex);
186 +DLEXPORT PHP_FUNCTION(udm_get_res_field_ex);