gluke           Sun Nov 24 14:36:46 2002 EDT

  Modified files:              
    /php4/ext/mnogosearch       php_mnogo.c 
  Log:
  @- A new functions have been added: udm_set_agent_param_ex and
     udm_get_res_field_ex
  - A new functions have been added: udm_set_agent_param_ex and
    udm_get_res_field_ex                                          
  
  
Index: php4/ext/mnogosearch/php_mnogo.c
diff -u php4/ext/mnogosearch/php_mnogo.c:1.66 php4/ext/mnogosearch/php_mnogo.c:1.67
--- php4/ext/mnogosearch/php_mnogo.c:1.66       Sat Sep 28 13:52:06 2002
+++ php4/ext/mnogosearch/php_mnogo.c    Sun Nov 24 14:36:45 2002
@@ -1,5 +1,5 @@
 /* $Source: /usr/repository/php4/ext/mnogosearch/php_mnogo.c,v $ */
-/* $Id: php_mnogo.c,v 1.66 2002/09/28 17:52:06 gluke Exp $ */
+/* $Id: php_mnogo.c,v 1.67 2002/11/24 19:36:45 gluke Exp $ */
 
 /*
    +----------------------------------------------------------------------+
@@ -163,6 +163,8 @@
 #if UDM_VERSION_ID >= 30204
        PHP_FE(udm_parse_query_string,  NULL)
        PHP_FE(udm_make_excerpt,        NULL)
+       PHP_FE(udm_set_agent_param_ex,  NULL)
+       PHP_FE(udm_get_res_field_ex,    NULL)
 #endif
 #endif
 
@@ -1663,6 +1665,104 @@
        }
        
        RETURN_TRUE;
+}
+/* }}} */
+
+/* {{{ proto int udm_set_agent_param_ex(int agent, string var, string val)
+   Set mnoGoSearch agent session parameters extended */
+DLEXPORT PHP_FUNCTION(udm_set_agent_param_ex)
+{
+       pval **yyagent, **yyvar, **yyval;
+       char *val, *var;
+       UDM_AGENT * Agent;
+
+       switch(ZEND_NUM_ARGS()){
+       
+               case 3:                 
+                       if(zend_get_parameters_ex(3,&yyagent,&yyvar,&yyval)==FAILURE){
+                               RETURN_FALSE;
+                       }
+                       convert_to_string_ex(yyvar);
+                       convert_to_string_ex(yyval);
+                       ZEND_FETCH_RESOURCE(Agent, UDM_AGENT *, yyagent, -1, 
+"mnoGoSearch-agent", le_link);
+                       var = Z_STRVAL_PP(yyvar);
+                       val = Z_STRVAL_PP(yyval);
+                       
+                       break;
+                       
+               default:
+                       WRONG_PARAM_COUNT;
+                       break;
+       }
+       
+       UdmVarListReplaceStr(&Agent->Conf->Vars,var,val);
+       
+       if (!strcasecmp(var,"LocalCharset")) {
+               const char * 
+charset=UdmVarListFindStr(&Agent->Conf->Vars,"LocalCharset","iso-8859-1");
+               Agent->Conf->lcs=UdmGetCharSet(charset);
+       } else if (!strcasecmp(var,"BrowserCharset")) {
+               const char * 
+charset=UdmVarListFindStr(&Agent->Conf->Vars,"BrowserCharset","iso-8859-1");
+               Agent->Conf->bcs=UdmGetCharSet(charset);
+       } else if (!strcasecmp(var,"Synonym")) {
+               if (UdmSynonymListLoad(Agent->Conf,val)) {
+                       php_error(E_WARNING, "%s(): %s", 
+get_active_function_name(TSRMLS_C),Agent->Conf->errstr);
+                       RETURN_FALSE;
+               } else UdmSynonymListSort(&(Agent->Conf->Synonyms));
+       } else if (!strcasecmp(var,"Stopwordfile")) {
+               if (UdmStopListLoad(Agent->Conf,val)) {
+                       php_error(E_WARNING, "%s(): %s", Agent->Conf->errstr, 
+get_active_function_name(TSRMLS_C));
+                       RETURN_FALSE;
+               }
+       } else if (!strcasecmp(var,"MinWordLen")) {
+               Agent->Conf->WordParam.min_word_len=atoi(val);
+       } else if (!strcasecmp(var,"MaxWordLen")) {
+               Agent->Conf->WordParam.max_word_len=atoi(val);
+       } else if (!strcasecmp(var,"VarDir")) {
+               
+snprintf(Agent->Conf->vardir,sizeof(Agent->Conf->vardir)-1,"%s%s",val,UDMSLASHSTR);
+       }
+
+       RETURN_TRUE;
+}
+
+/* {{{ proto string udm_get_res_field_ex(int res, int row, string field)
+   Fetch mnoGoSearch result field */
+DLEXPORT PHP_FUNCTION(udm_get_res_field_ex)
+{
+       pval **yyres, **yyrow_num, **yyfield_name;
+
+       UDM_RESULT * Res;
+       int row;
+       char *field;
+       
+       switch(ZEND_NUM_ARGS()){
+               case 3: {
+                               if (zend_get_parameters_ex(3, 
+&yyres,&yyrow_num,&yyfield_name)==FAILURE){
+                                       RETURN_FALSE;
+                               }
+                               convert_to_string_ex(yyrow_num);
+                               convert_to_string_ex(yyfield_name);
+                               field = Z_STRVAL_PP(yyfield_name);
+                               row = atoi(Z_STRVAL_PP(yyrow_num));
+                       }
+                       break;
+               default:
+                       WRONG_PARAM_COUNT;
+                       break;
+       }
+       
+       ZEND_FETCH_RESOURCE(Res, UDM_RESULT *, yyres, -1, "mnoGoSearch-Result", 
+le_res);
+       if(row<Res->num_rows){
+               if (!strcasecmp(field,"URL")) {
+                   char        *al;
+                   al = (char *)MyRemoveHiLightDup((const char 
+*)(UdmVarListFindStr(&(Res->Doc[row].Sections), field, "")));
+                   UdmVarListReplaceStr(&Res->Doc[row].Sections,field,al);
+                   free(al);
+               }
+               RETURN_STRING((char 
+*)UdmVarListFindStr(&Res->Doc[row].Sections,field,""),1);
+       } else {
+               php_error(E_WARNING,"%s(): row number too large", 
+get_active_function_name(TSRMLS_C));
+               RETURN_FALSE;
+       }
 }
 /* }}} */
 #endif



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to