summaryrefslogtreecommitdiff
path: root/ext/mnogosearch
diff options
context:
space:
mode:
authorSergey Kartashoff <gluke@php.net>2001-11-05 19:07:25 +0000
committerSergey Kartashoff <gluke@php.net>2001-11-05 19:07:25 +0000
commit962216c2013086c8127362c47a3befcbb3adab20 (patch)
tree2cc47d3e47994c9d26ec0af8d4f5bf32e8850ae9 /ext/mnogosearch
parente06c1d7c7ea8ef8608fc28ad92624f6081dea0e9 (diff)
downloadphp-git-962216c2013086c8127362c47a3befcbb3adab20.tar.gz
@- Added Udm_Check_Charset function (gluke)
- Added Udm_Check_Charset function (gluke)
Diffstat (limited to 'ext/mnogosearch')
-rw-r--r--ext/mnogosearch/php_mnogo.c108
-rw-r--r--ext/mnogosearch/php_mnogo.h3
2 files changed, 92 insertions, 19 deletions
diff --git a/ext/mnogosearch/php_mnogo.c b/ext/mnogosearch/php_mnogo.c
index 36c0214e3f..aa1c9d8b2d 100644
--- a/ext/mnogosearch/php_mnogo.c
+++ b/ext/mnogosearch/php_mnogo.c
@@ -129,6 +129,9 @@ static int le_link,le_res;
*/
function_entry mnogosearch_functions[] = {
PHP_FE(udm_api_version, NULL)
+#if UDM_VERSION_ID >= 30200
+ PHP_FE(udm_check_charset, NULL)
+#endif
PHP_FE(udm_alloc_agent, NULL)
PHP_FE(udm_set_agent_param, NULL)
@@ -753,12 +756,12 @@ DLEXPORT PHP_FUNCTION(udm_set_agent_param)
}
/* }}} */
-/* {{{ proto int udm_load_ispell_data(int agent, int var, string val1, string val2, int flag)
+/* {{{ proto int udm_load_ispell_data(int agent, int var, string val1, [string charset], string val2, int flag)
Load ispell data */
DLEXPORT PHP_FUNCTION(udm_load_ispell_data)
{
- pval **yyagent, **yyvar, **yyval1, **yyval2, **yyflag;
- char *val1, *val2;
+ pval **yyagent, **yyvar, **yyval1, **yyval2, **yyflag, **yycharset ;
+ char *val1, *val2, *charset;
int var, flag;
UDM_AGENT * Agent;
@@ -777,6 +780,25 @@ DLEXPORT PHP_FUNCTION(udm_load_ispell_data)
flag = Z_LVAL_PP(yyflag);
val1 = Z_STRVAL_PP(yyval1);
val2 = Z_STRVAL_PP(yyval2);
+ charset = "us-ascii";
+
+ break;
+
+ case 6:
+ if(zend_get_parameters_ex(6,&yyagent,&yyvar,&yyval1,&yycharset,&yyval2,&yyflag)==FAILURE){
+ RETURN_FALSE;
+ }
+ convert_to_long_ex(yyvar);
+ convert_to_long_ex(yyflag);
+ convert_to_string_ex(yyval1);
+ convert_to_string_ex(yyval2);
+ convert_to_string_ex(yycharset);
+ ZEND_FETCH_RESOURCE(Agent, UDM_AGENT *, yyagent, -1, "mnoGoSearch-agent", le_link);
+ var = Z_LVAL_PP(yyvar);
+ flag = Z_LVAL_PP(yyflag);
+ val1 = Z_STRVAL_PP(yyval1);
+ val2 = Z_STRVAL_PP(yyval2);
+ charset = Z_STRVAL_PP(yycharset);
break;
@@ -785,8 +807,9 @@ DLEXPORT PHP_FUNCTION(udm_load_ispell_data)
break;
}
-#if UDM_VERSION_ID < 30200
+
switch(var){
+#if UDM_VERSION_ID < 30200
case UDM_ISPELL_TYPE_DB:
Agent->Conf->ispell_mode |= UDM_ISPELL_MODE_DB;
@@ -794,10 +817,24 @@ DLEXPORT PHP_FUNCTION(udm_load_ispell_data)
UdmImportDictionaryFromDB(Agent)) {
RETURN_FALSE;
}
-
+
break;
+#if UDM_VERSION_ID > 30111
+
+ case UDM_ISPELL_TYPE_SERVER:
+ Agent->Conf->ispell_mode &= ~UDM_ISPELL_MODE_DB;
+ Agent->Conf->ispell_mode |= UDM_ISPELL_MODE_SERVER;
+
+ Agent->Conf->spellhost = strdup(val1);
+
+ break;
+
+#endif
+#endif
+
case UDM_ISPELL_TYPE_AFFIX:
+#if UDM_VERSION_ID < 30200
Agent->Conf->ispell_mode &= ~UDM_ISPELL_MODE_DB;
#if UDM_VERSION_ID > 30111
@@ -808,10 +845,17 @@ DLEXPORT PHP_FUNCTION(udm_load_ispell_data)
php_error(E_WARNING,"Udm_Load_Ispell_Data: Cannot load affix file %s",val2);
RETURN_FALSE;
}
-
+#else
+ if (UdmImportAffixes(Agent->Conf,val1,charset,val2)) {
+ php_error(E_WARNING,"Udm_Load_Ispell_Data: Cannot load affix file %s",val2);
+ RETURN_FALSE;
+ }
+
+#endif
break;
case UDM_ISPELL_TYPE_SPELL:
+#if UDM_VERSION_ID < 30200
Agent->Conf->ispell_mode &= ~UDM_ISPELL_MODE_DB;
#if UDM_VERSION_ID > 30111
@@ -822,20 +866,14 @@ DLEXPORT PHP_FUNCTION(udm_load_ispell_data)
php_error(E_WARNING,"Udm_Load_Ispell_Data: Cannot load spell file %s",val2);
RETURN_FALSE;
}
-
+#else
+ if (UdmImportDictionary(Agent->Conf,val1,charset,val2,0,"")) {
+ php_error(E_WARNING,"Udm_Load_Ispell_Data: Cannot load spell file %s",val2);
+ RETURN_FALSE;
+ }
+#endif
break;
-#if UDM_VERSION_ID > 30111
-
- case UDM_ISPELL_TYPE_SERVER:
- Agent->Conf->ispell_mode &= ~UDM_ISPELL_MODE_DB;
- Agent->Conf->ispell_mode |= UDM_ISPELL_MODE_SERVER;
-
- Agent->Conf->spellhost = strdup(val1);
-
- break;
-
-#endif
default:
php_error(E_WARNING,"Udm_Load_Ispell_Data: Unknown ispell type parameter");
@@ -849,7 +887,6 @@ DLEXPORT PHP_FUNCTION(udm_load_ispell_data)
UdmSortAffixes(Agent->Conf);
}
}
-#endif
RETURN_TRUE;
}
@@ -982,6 +1019,39 @@ DLEXPORT PHP_FUNCTION(udm_clear_search_limits)
}
/* }}} */
+#if UDM_VERSION_ID >= 30200
+/* {{{ proto int udm_check_charset(int agent, string charset)
+ Check if the given charset is known to mnogosearch */
+DLEXPORT PHP_FUNCTION(udm_check_charset)
+{
+ pval ** yycharset, ** yyagent;
+ UDM_AGENT * Agent;
+ int id=-1;
+
+ switch(ZEND_NUM_ARGS()){
+ case 2: {
+ if (zend_get_parameters_ex(2, &yyagent,&yycharset)==FAILURE) {
+ RETURN_FALSE;
+ }
+ }
+ break;
+ default:
+ WRONG_PARAM_COUNT;
+ break;
+ }
+ ZEND_FETCH_RESOURCE(Agent, UDM_AGENT *, yyagent, id, "mnoGoSearch-Agent", le_link);
+ convert_to_string_ex(yycharset);
+
+
+ if (UdmGetCharSet(Z_STRVAL_PP(yycharset))) {
+ RETURN_TRUE;
+ } else {
+ RETURN_FALSE;
+ }
+}
+/* }}} */
+#endif
+
/* {{{ proto int udm_find(int agent, string query)
Perform search */
DLEXPORT PHP_FUNCTION(udm_find)
diff --git a/ext/mnogosearch/php_mnogo.h b/ext/mnogosearch/php_mnogo.h
index 809b3e290e..b5e4480321 100644
--- a/ext/mnogosearch/php_mnogo.h
+++ b/ext/mnogosearch/php_mnogo.h
@@ -50,6 +50,9 @@ DLEXPORT PHP_MSHUTDOWN_FUNCTION(mnogosearch);
DLEXPORT PHP_MINFO_FUNCTION(mnogosearch);
DLEXPORT PHP_FUNCTION(udm_api_version);
+#if UDM_VERSION_ID >= 30200
+DLEXPORT PHP_FUNCTION(udm_check_charset);
+#endif
DLEXPORT PHP_FUNCTION(udm_alloc_agent);
DLEXPORT PHP_FUNCTION(udm_set_agent_param);