]> granicus.if.org Git - php/commitdiff
Added new UDM_PARAM_STOPTABLE and UDM_PARAM_STOPFILE parameters
authorSergey Kartashoff <gluke@php.net>
Fri, 2 Feb 2001 12:54:15 +0000 (12:54 +0000)
committerSergey Kartashoff <gluke@php.net>
Fri, 2 Feb 2001 12:54:15 +0000 (12:54 +0000)
for Udm_Set_Agent_Params mnoGoSearch module. Now it can use stopwords
stored either in database or in the plain text files. Added php warnings.
Test example updated.
@- Added new UDM_PARAM_STOPTABLE and UDM_PARAM_STOPFILE parameters
@  for Udm_Set_Agent_Params mnoGoSearch module. Now it can use stopwords
@  stored either in database or in the plain text files. Added php warnings.
@  Test example updated. (gluke)

ext/mnogosearch/README
ext/mnogosearch/php_mnogo.c
ext/mnogosearch/test.php

index e240cea91ff85a1df94bc16bda51482c91b5b716..5e5b9e871a296f65c91c9af2c0e4923a2d5f3ad4 100644 (file)
@@ -1,7 +1,7 @@
 $Source$
 $Id$
 
-mnoGoSearch extension module version 0.3 for PHP4.
+mnoGoSearch extension module for PHP4.
 Basic mnoGoSearch function implementation.
 
 If used with mysql you should not use bundled mysql library 
@@ -12,8 +12,7 @@ library. To do this you should compile php with specefying mysql-dir
   TODO
   ----
 
-1. Implement more UdmSearch functions. Only basic minimal functions
-set is implemented for now.
+1. Implement more UdmSearch functions.
 
 2. Fix  config.m4 to detect whether UdmSearch is actually installed.
 Currently there is no any checking. ./configure just trust that UdmSearch
@@ -24,6 +23,3 @@ PHP4 by default and does not require any additional UdmSearch libraries.
   Actually it should work fine with other supported database.
 
 4. Write PHP interface documentation.
-
-5. Add nice warnings when unknown parameters are passed to PHP functions.
-Those places are marked with FIXME is php_udm.c
index 5cde4fa17bba13eb01af76142df8f71bbc448915..24b9d6025e7febeb070b3429c29ebedc394e9f50 100644 (file)
@@ -48,6 +48,8 @@
 #define UDM_PARAM_CACHE_MODE   4
 #define UDM_PARAM_TRACK_MODE   5
 #define UDM_PARAM_CHARSET      6
+#define UDM_PARAM_STOPTABLE    7
+#define UDM_PARAM_STOPFILE     8
 
 #define UDM_TRACK_ENABLED      1
 #define UDM_TRACK_DISABLED     0
@@ -128,6 +130,8 @@ DLEXPORT PHP_MINIT_FUNCTION(mnogosearch)
        REGISTER_LONG_CONSTANT("UDM_PARAM_CACHE_MODE",UDM_PARAM_CACHE_MODE,CONST_CS | CONST_PERSISTENT);        
        REGISTER_LONG_CONSTANT("UDM_PARAM_TRACK_MODE",UDM_PARAM_TRACK_MODE,CONST_CS | CONST_PERSISTENT);        
        REGISTER_LONG_CONSTANT("UDM_PARAM_CHARSET",UDM_PARAM_CHARSET,CONST_CS | CONST_PERSISTENT);      
+       REGISTER_LONG_CONSTANT("UDM_PARAM_STOPTABLE",UDM_PARAM_STOPTABLE,CONST_CS | CONST_PERSISTENT);  
+       REGISTER_LONG_CONSTANT("UDM_PARAM_STOPFILE",UDM_PARAM_STOPFILE,CONST_CS | CONST_PERSISTENT);    
        
        /* udm_get_res_param constants */
        REGISTER_LONG_CONSTANT("UDM_PARAM_FOUND",UDM_PARAM_FOUND,CONST_CS | CONST_PERSISTENT);
@@ -285,7 +289,8 @@ DLEXPORT PHP_FUNCTION(udm_set_agent_param)
                                                break;
                                                
                                        default:
-                                               RETURN_STRING("<Udm_Set_Agent_Param: Unknown search mode>",1);
+                                               php_error(E_WARNING,"Udm_Set_Agent_Param: Unknown search mode");
+                                               RETURN_FALSE;
                                                break;
                        }
                        
@@ -303,7 +308,8 @@ DLEXPORT PHP_FUNCTION(udm_set_agent_param)
                                        
                                default:
                                        Agent->cache_mode=UDM_CACHE_DISABLED;
-                                       RETURN_STRING("<Udm_Set_Agent_Param: Unknown cache mode>",1);
+                                       php_error(E_WARNING,"Udm_Set_Agent_Param: Unknown cache mode");
+                                       RETURN_FALSE;
                                        break;
                        }
                        
@@ -320,7 +326,8 @@ DLEXPORT PHP_FUNCTION(udm_set_agent_param)
                                        break;
                                        
                                default:
-                                       RETURN_STRING("<Udm_Set_Agent_Param: Unknown track_mode>",1);
+                                       php_error(E_WARNING,"Udm_Set_Agent_Param: Unknown track mode");
+                                       RETURN_FALSE;
                                        break;
                        }
                        
@@ -332,34 +339,26 @@ DLEXPORT PHP_FUNCTION(udm_set_agent_param)
 
                        break;
                        
-               default:
-                       RETURN_STRING("<Udm_Set_Agent_Param: Unknown agent parameter>",1);
-                       break;
-       }
-}
-/* }}} */
-
+               case UDM_PARAM_STOPTABLE:
+                       strcat(Agent->Conf->stop_tables," ");
+                       strcat(Agent->Conf->stop_tables,val);
 
+                       break;
 
-/* {{{ proto int udm_free_agent(int agent_identifier)
-   Free mnoGoSearch session */
-DLEXPORT PHP_FUNCTION(udm_free_agent)
-{
-       pval ** yyagent;
-       UDM_RESULT * Agent;
-       switch(ZEND_NUM_ARGS()){
-               case 1: {
-                               if (zend_get_parameters_ex(1, &yyagent)==FAILURE) {
-                                       RETURN_FALSE;
-                               }
+               case UDM_PARAM_STOPFILE: 
+                       if (UdmFileLoadStopList(Agent->Conf,val)) {
+                               php_error(E_WARNING,Agent->Conf->errstr);
+                               RETURN_FALSE;
                        }
+                           
                        break;
+                       
                default:
-                       WRONG_PARAM_COUNT;
+                       php_error(E_WARNING,"Udm_Set_Agent_Param: Unknown agent parameter");
+                       RETURN_FALSE;
                        break;
        }
-       ZEND_FETCH_RESOURCE(Agent, UDM_RESULT *, yyagent, -1, "mnoGoSearch-agent", le_link);
-       zend_list_delete((*yyagent)->value.lval);
+       RETURN_TRUE;
 }
 /* }}} */
 
@@ -429,10 +428,46 @@ DLEXPORT PHP_FUNCTION(udm_get_res_field){
                        case UDM_FIELD_SCORE:           RETURN_LONG((Res->Doc[row].rating));break;
                        case UDM_FIELD_MODIFIED:        RETURN_LONG((Res->Doc[row].last_mod_time));break;
                        default: 
-                               RETURN_STRING("<Udm_Get_Res_Field: Unknown mnoGoSearch field name>",1);break;
+                               php_error(E_WARNING,"Udm_Get_Res_Field: Unknown mnoGoSearch field name");
+                               RETURN_FALSE;
+                               break;
                }
        }else{
-               RETURN_STRING("<Udm_Get_Res_Field: row number too large>",1);
+               php_error(E_WARNING,"Udm_Get_Res_Field: row number too large");
+               RETURN_FALSE;
+       }
+}
+/* }}} */
+
+
+/* {{{ proto int udm_get_res_param(int res_identifier, const int param_id)
+    mnoGoSearch result parameters */
+DLEXPORT PHP_FUNCTION(udm_get_res_param)
+{
+       pval ** yyres, ** yyparam;
+       int param;
+       UDM_RESULT * Res;
+       switch(ZEND_NUM_ARGS()){
+               case 2: {
+                               if (zend_get_parameters_ex(2, &yyres, &yyparam)==FAILURE) {
+                                       RETURN_FALSE;
+                               }
+                               convert_to_long_ex(yyparam);
+                               param=((*yyparam)->value.lval);
+                       }
+                       break;
+               default:
+                       WRONG_PARAM_COUNT;
+                       break;
+       }
+       ZEND_FETCH_RESOURCE(Res, UDM_RESULT *, yyres, -1, "mnoGoSearch-Result", le_res);
+       switch(param){
+               case UDM_PARAM_NUM_ROWS: RETURN_LONG(Res->num_rows);break;
+               case UDM_PARAM_FOUND:    RETURN_LONG(Res->total_found);break;
+               default:
+                       php_error(E_WARNING,"Udm_Get_Res_Param: Unknown mnoGoSearch param name");
+                       RETURN_FALSE;
+                       break;
        }
 }
 /* }}} */
@@ -462,13 +497,12 @@ DLEXPORT PHP_FUNCTION(udm_free_res)
 /* }}} */
 
 
-/* {{{ proto int udm_error(int agent_identifier)
-    mnoGoSearch error message */
-DLEXPORT PHP_FUNCTION(udm_error)
+/* {{{ proto int udm_errno(int agent_identifier)
+    mnoGoSearch error number */
+DLEXPORT PHP_FUNCTION(udm_errno)
 {
        pval ** yyagent;
        UDM_AGENT * Agent;
-       
        switch(ZEND_NUM_ARGS()){
                case 1: {
                                if (zend_get_parameters_ex(1, &yyagent)==FAILURE) {
@@ -481,16 +515,18 @@ DLEXPORT PHP_FUNCTION(udm_error)
                        break;
        }
        ZEND_FETCH_RESOURCE(Agent, UDM_AGENT *, yyagent, -1, "mnoGoSearch-Agent", le_link);
-       RETURN_STRING(UdmDBErrorMsg(Agent->db),1);
+       RETURN_LONG(UdmDBErrorCode(Agent->db));
 }
 /* }}} */
 
-/* {{{ proto int udm_errno(int agent_identifier)
-    mnoGoSearch error number */
-DLEXPORT PHP_FUNCTION(udm_errno)
+
+/* {{{ proto int udm_error(int agent_identifier)
+    mnoGoSearch error message */
+DLEXPORT PHP_FUNCTION(udm_error)
 {
        pval ** yyagent;
        UDM_AGENT * Agent;
+       
        switch(ZEND_NUM_ARGS()){
                case 1: {
                                if (zend_get_parameters_ex(1, &yyagent)==FAILURE) {
@@ -503,43 +539,34 @@ DLEXPORT PHP_FUNCTION(udm_errno)
                        break;
        }
        ZEND_FETCH_RESOURCE(Agent, UDM_AGENT *, yyagent, -1, "mnoGoSearch-Agent", le_link);
-       RETURN_LONG(UdmDBErrorCode(Agent->db));
+       RETURN_STRING(UdmDBErrorMsg(Agent->db),1);
 }
 /* }}} */
 
 
-/* {{{ proto int udm_get_res_param(int res_identifier, const int param_id)
-    mnoGoSearch result parameters */
-DLEXPORT PHP_FUNCTION(udm_get_res_param)
+/* {{{ proto int udm_free_agent(int agent_identifier)
+   Free mnoGoSearch session */
+DLEXPORT PHP_FUNCTION(udm_free_agent)
 {
-       pval ** yyres, ** yyparam;
-       int param;
-       UDM_RESULT * Res;
+       pval ** yyagent;
+       UDM_RESULT * Agent;
        switch(ZEND_NUM_ARGS()){
-               case 2: {
-                               if (zend_get_parameters_ex(2, &yyres, &yyparam)==FAILURE) {
+               case 1: {
+                               if (zend_get_parameters_ex(1, &yyagent)==FAILURE) {
                                        RETURN_FALSE;
                                }
-                               convert_to_long_ex(yyparam);
-                               param=((*yyparam)->value.lval);
                        }
                        break;
                default:
                        WRONG_PARAM_COUNT;
                        break;
        }
-       ZEND_FETCH_RESOURCE(Res, UDM_RESULT *, yyres, -1, "mnoGoSearch-Result", le_res);
-       switch(param){
-               case UDM_PARAM_NUM_ROWS: RETURN_LONG(Res->num_rows);break;
-               case UDM_PARAM_FOUND:    RETURN_LONG(Res->total_found);break;
-               default:
-                       /* FIXME: unknown parameter */
-                       RETURN_STRING("<Udm_Get_Res_Param: Unknown mnoGoSearch param name>",1);
-                       break;
-       }
+       ZEND_FETCH_RESOURCE(Agent, UDM_RESULT *, yyagent, -1, "mnoGoSearch-agent", le_link);
+       zend_list_delete((*yyagent)->value.lval);
 }
 /* }}} */
 
+
 #endif
 
 
index a97ffd1da1228e0805bbddaed8f6d9414fbac4e1..0f99703fb08db8d21dbfa68b3210c11f8821216f 100644 (file)
@@ -35,6 +35,8 @@
        Udm_Set_Agent_Param($udm,UDM_PARAM_CACHE_MODE,UDM_CACHE_DISABLED);
        Udm_Set_Agent_Param($udm,UDM_PARAM_TRACK_MODE,UDM_TRACK_DISABLED);
        Udm_Set_Agent_Param($udm,UDM_PARAM_CHARSET,"koi8-r");
+       Udm_Set_Agent_Param($udm,UDM_PARAM_STOPTABLE,"stopwords");
+//     Udm_Set_Agent_Param($udm,UDM_PARAM_STOPFILE,"stop.txt");
        
 // Stage 3: perform search