gluke           Tue Jan 30 04:54:11 2001 EDT

  Added files:                 
    /php4/ext/mnogosearch       Makefile.in README config.m4 php_mnogo.c 
                                php_mnogo.h setup.stub test.php 
  Log:
  mnoGoSearch extension module initial version has been added.
  This module currently at the alpha state, but it can be used already.
  @- mnoGoSearch extension module initial version has been added.
  @  This module currently at the alpha state, but it can be used already.
  # For details about mnoGoSearch please refer at http://search.mnogo.ru
  PR:
  Submitted by:
  Reviewed by:
  Obtained from:
  
  

Index: php4/ext/mnogosearch/Makefile.in
+++ php4/ext/mnogosearch/Makefile.in

LTLIBRARY_NAME    = libmnogosearch.la
LTLIBRARY_SOURCES = php_mnogo.c
LTLIBRARY_SHARED_NAME = mnogosearch.la
LTLIBRARY_SHARED_LIBADD = $(MNOGOSEARCH_SHARED_LIBADD)

include $(top_srcdir)/build/dynlib.mk

Index: php4/ext/mnogosearch/config.m4
+++ php4/ext/mnogosearch/config.m4
dnl $Id: config.m4,v 1.1 2001/01/30 12:53:50 gluke Exp $


PHP_ARG_WITH(mnogosearch,for mnoGoSearch support,
[  --with-mnogosearch[=DIR]       Include mnoGoSearch support.  DIR is the mnoGoSearch 
base
                          install directory, defaults to /usr/local/udmsearch.])

  if test "$PHP_MNOGOSEARCH" != "no"; then
  
    if test "$PHP_MNOGOSEARCH" = "yes"; then
      MNOGOSEARCH_BINDIR=/usr/local/udmsearch/bin
      MNOGOSEARCH_INCDIR=/usr/local/udmsearch/include
      MNOGOSEARCH_LIBDIR=/usr/local/udmsearch/lib
    else
      MNOGOSEARCH_BINDIR=$PHP_MNOGOSEARCH/bin
      MNOGOSEARCH_INCDIR=$PHP_MNOGOSEARCH/include
      MNOGOSEARCH_LIBDIR=$PHP_MNOGOSEARCH/lib
    fi
    
    AC_ADD_INCLUDE($MNOGOSEARCH_INCDIR)
    
    if test -x "$MNOGOSEARCH_BINDIR/udm-config"; then
        PHP_EVAL_LIBLINE(`$MNOGOSEARCH_BINDIR/udm-config --libs`, 
MNOGOSEARCH_SHARED_LIBADD)
    else
        AC_ADD_LIBRARY_WITH_PATH(udmsearch, $MNOGOSEARCH_LIBDIR, 
MNOGOSEARCH_SHARED_LIBADD)
    fi
    
    AC_DEFINE(HAVE_MNOGOSEARCH,1,[ ])
    
    PHP_SUBST(MNOGOSEARCH_SHARED_LIBADD)
    PHP_EXTENSION(mnogosearch,$ext_shared)
    
  fi

Index: php4/ext/mnogosearch/php_mnogo.c
+++ php4/ext/mnogosearch/php_mnogo.c
/*
   +----------------------------------------------------------------------+
   | PHP version 4.0                                                      |
   +----------------------------------------------------------------------+
   | Copyright (c) 1997, 1998, 1999, 2000 The PHP Group                   |
   +----------------------------------------------------------------------+
   | This source file is subject to version 2.02 of the PHP license,      |
   | that is bundled with this package in the file LICENSE, and is        |
   | available at through the world-wide-web at                           |
   | http://www.php.net/license/2_02.txt.                                 |
   | If you did not receive a copy of the PHP license and are unable to   |
   | obtain it through the world-wide-web, please send a note to          |
   | [EMAIL PROTECTED] so we can mail you a copy immediately.               |
   +----------------------------------------------------------------------+
   | Authors:                                                             |
   |  Initial version     by  Alex Barkov <[EMAIL PROTECTED]>                 |
   |                      and Ramil Kalimullin <[EMAIL PROTECTED]>            |
   |  Further development by  Sergey Kartashoff <[EMAIL PROTECTED]>        |
   +----------------------------------------------------------------------+
 */
 
/* $Id: php_mnogo.c,v 0.3 2001/01/27 15:30:00 */

#include "php.h"
#include "php_mnogo.h"
#include "ext/standard/php_standard.h"
#include "ext/standard/info.h"
#include "php_globals.h"

#ifdef HAVE_MNOGOSEARCH

#define UDM_FIELD_URLID         1
#define UDM_FIELD_URL           2
#define UDM_FIELD_CONTENT       4       
#define UDM_FIELD_TITLE         8
#define UDM_FIELD_KEYWORDS      16
#define UDM_FIELD_DESC          32
#define UDM_FIELD_TEXT          64
#define UDM_FIELD_SIZE          128
#define UDM_FIELD_SCORE         256
#define UDM_FIELD_MODIFIED      512

#define UDM_PARAM_PAGE_SIZE     1
#define UDM_PARAM_PAGE_NUM      2
#define UDM_PARAM_SEARCH_MODE   4
#define UDM_PARAM_CHARSET       8
#define UDM_PARAM_NUM_ROWS      16
#define UDM_PARAM_FOUND         32

/* True globals, no need for thread safety */
static int le_link,le_res;

#include <udmsearch.h>

function_entry mnogosearch_functions[] = {
        PHP_FE(udm_alloc_agent,         NULL)
        PHP_FE(udm_set_agent_param,     NULL)
        PHP_FE(udm_free_agent,          NULL)

        PHP_FE(udm_errno,               NULL)
        PHP_FE(udm_error,               NULL)

        PHP_FE(udm_find,                NULL)
        PHP_FE(udm_free_res,            NULL)
        PHP_FE(udm_get_res_field,       NULL)
        PHP_FE(udm_get_res_param,       NULL)

        {NULL, NULL, NULL}
};


zend_module_entry mnogosearch_module_entry = {
        "mnogosearch", 
        mnogosearch_functions, 
        PHP_MINIT(mnogosearch), 
        PHP_MSHUTDOWN(mnogosearch), 
        PHP_RINIT(mnogosearch), 
        NULL,
        PHP_MINFO(mnogosearch), 
        STANDARD_MODULE_PROPERTIES
};


#ifdef COMPILE_DL_MNOGOSEARCH
ZEND_GET_MODULE(mnogosearch)
#endif

static void _free_udm_agent(zend_rsrc_list_entry *rsrc){
        UDM_AGENT * Agent = (UDM_AGENT *)rsrc->ptr;
        UdmFreeAgent(Agent);
}

static void _free_udm_res(zend_rsrc_list_entry *rsrc){
        UDM_RESULT * Res = (UDM_RESULT *)rsrc->ptr;
        UdmFreeResult(Res);     
}

DLEXPORT PHP_MINIT_FUNCTION(mnogosearch)
{
        UdmInit();
        le_link = zend_register_list_destructors_ex(_free_udm_agent,NULL,"mnogosearch 
agent",module_number);
        le_res = zend_register_list_destructors_ex(_free_udm_res,NULL,"mnogosearch 
result",module_number);

        REGISTER_LONG_CONSTANT("UDM_FIELD_URLID",       UDM_FIELD_URLID,CONST_CS | 
CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("UDM_FIELD_URL", UDM_FIELD_URL,CONST_CS | 
CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("UDM_FIELD_CONTENT",UDM_FIELD_CONTENT,CONST_CS | 
CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("UDM_FIELD_TITLE",       UDM_FIELD_TITLE,CONST_CS | 
CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("UDM_FIELD_KEYWORDS",UDM_FIELD_KEYWORDS,CONST_CS | 
CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("UDM_FIELD_DESC",        UDM_FIELD_DESC,CONST_CS | 
CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("UDM_FIELD_TEXT",        UDM_FIELD_TEXT,CONST_CS | 
CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("UDM_FIELD_SIZE",        UDM_FIELD_SIZE,CONST_CS | 
CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("UDM_FIELD_SCORE",       UDM_FIELD_SCORE,CONST_CS | 
CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("UDM_FIELD_MODIFIED",UDM_FIELD_MODIFIED,CONST_CS | 
CONST_PERSISTENT);

        REGISTER_LONG_CONSTANT("UDM_PARAM_PAGE_SIZE",UDM_PARAM_PAGE_SIZE,CONST_CS | 
CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("UDM_PARAM_PAGE_NUM",UDM_PARAM_PAGE_NUM,CONST_CS | 
CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("UDM_PARAM_SEARCH_MODE",UDM_PARAM_SEARCH_MODE,CONST_CS 
| CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("UDM_PARAM_CHARSET",UDM_PARAM_CHARSET,CONST_CS | 
CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("UDM_PARAM_FOUND",UDM_PARAM_FOUND,CONST_CS | 
CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("UDM_PARAM_NUM_ROWS",UDM_PARAM_NUM_ROWS,CONST_CS | 
CONST_PERSISTENT);


        REGISTER_LONG_CONSTANT("UDM_MODE_ALL",UDM_MODE_ALL,CONST_CS | 
CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("UDM_MODE_ANY",UDM_MODE_ANY,CONST_CS | 
CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("UDM_MODE_BOOL",UDM_MODE_BOOL,CONST_CS | 
CONST_PERSISTENT);

        return SUCCESS;
}


DLEXPORT PHP_MSHUTDOWN_FUNCTION(mnogosearch)
{
        return SUCCESS;
}


DLEXPORT PHP_RINIT_FUNCTION(mnogosearch)
{
        return SUCCESS;
}


DLEXPORT PHP_MINFO_FUNCTION(mnogosearch)
{
        php_info_print_table_start();
        php_info_print_table_row(2, "mnoGoSearch Support", "enabled" );
        php_info_print_table_end();
}


/* {{{ proto int mnogosearch_alloc_agent(string dbaddr [, string dbmode])
   Allocate mnoGoSearch session */
DLEXPORT PHP_FUNCTION(udm_alloc_agent)
{
        switch(ZEND_NUM_ARGS()){

                case 1: {
                                pval **yydbaddr;
                                char *dbaddr;
                                UDM_ENV   * Env;
                                UDM_AGENT * Agent;
                                
                                if(zend_get_parameters_ex(1,&yydbaddr)==FAILURE){
                                        RETURN_FALSE;
                                }
                                convert_to_string_ex(yydbaddr);
                                dbaddr = (*yydbaddr)->value.str.val;
                                
                                Env=UdmAllocEnv();
                                UdmEnvSetDBAddr(Env,dbaddr);
                                Agent=UdmAllocAgent(Env,0,UDM_OPEN_MODE_READ);
                                
                                ZEND_REGISTER_RESOURCE(return_value,Agent,le_link);
                        }
                        break;
                        
                case 2: {
                                pval **yydbaddr;
                                pval **yydbmode;
                                char *dbaddr;
                                char *dbmode;
                                UDM_ENV   * Env;
                                UDM_AGENT * Agent;
                                
                                
if(zend_get_parameters_ex(2,&yydbaddr,&yydbmode)==FAILURE){
                                        RETURN_FALSE;
                                }
                                convert_to_string_ex(yydbaddr);
                                convert_to_string_ex(yydbmode);
                                dbaddr = (*yydbaddr)->value.str.val;
                                dbmode = (*yydbmode)->value.str.val;
                                
                                Env=UdmAllocEnv();                              
                                UdmEnvSetDBAddr(Env,dbaddr);
                                UdmEnvSetDBMode(Env,dbmode);                           
 
                                Agent=UdmAllocAgent(Env,0,UDM_OPEN_MODE_READ);         
                 
                                
                                ZEND_REGISTER_RESOURCE(return_value,Agent,le_link);
                        }
                        break;
                        
                default:
                        WRONG_PARAM_COUNT;
                        break;
        }
}
/* }}} */


/* {{{ proto int udm_set_agent_param(agent,var,val)
   Set mnoGoSearch agent session parameters */
DLEXPORT PHP_FUNCTION(udm_set_agent_param)
{
        pval **yyagent, **yyvar, **yyval;
        char *val;
        int var;
        UDM_AGENT * Agent;

        switch(ZEND_NUM_ARGS()){
        
                case 3: {
                                
if(zend_get_parameters_ex(3,&yyagent,&yyvar,&yyval)==FAILURE){
                                        RETURN_FALSE;
                                }
                                convert_to_long_ex(yyvar);
                                convert_to_string_ex(yyval);
                                ZEND_FETCH_RESOURCE(Agent, UDM_AGENT *, yyagent, -1, 
"mnoGoSearch-agent", le_link);
                                var = (*yyvar)->value.lval;
                                val = (*yyval)->value.str.val;
                        }
                        break;
                        
                default:
                        WRONG_PARAM_COUNT;
                        break;
        }
        
        switch(var){
                case UDM_PARAM_PAGE_SIZE: {
                                Agent->page_size=atoi(val);
                                if(Agent->page_size<1)Agent->page_size=20;
                        }
                        break;
                case UDM_PARAM_PAGE_NUM: {
                                Agent->page_number=atoi(val);
                                if(Agent->page_number<0)Agent->page_number=0;
                        }
                        break;
                case UDM_PARAM_SEARCH_MODE: {
                                switch (atoi(val)){
                                        case UDM_MODE_ALL:
                                                Agent->search_mode=UDM_MODE_ALL;
                                                break;
                                        case UDM_MODE_ANY:
                                                Agent->search_mode=UDM_MODE_ANY;
                                                break;
                                        case UDM_MODE_BOOL: 
                                                Agent->search_mode=UDM_MODE_BOOL;
                                                break;
                                        default:
                                                RETURN_STRING("<Udm_Set_Agent_Param: 
Unknown search mode>",1);
                                                break;
                                }
                        }
                        break;
                default:
                        RETURN_STRING("<Udm_Set_Agent_Param: Unknown agent 
parameter>",1);
                        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;
                                }
                        }
                        break;
                default:
                        WRONG_PARAM_COUNT;
                        break;
        }
        ZEND_FETCH_RESOURCE(Agent, UDM_RESULT *, yyagent, -1, "mnoGoSearch-agent", 
le_link);
        zend_list_delete((*yyagent)->value.lval);
}
/* }}} */


/* {{{ proto int udm_find(int agent_identifier,string query)
   perform search */
DLEXPORT PHP_FUNCTION(udm_find)
{
        pval ** yyquery, ** yyagent;
        UDM_RESULT * Res;
        UDM_AGENT * Agent;
        int id=-1;

        switch(ZEND_NUM_ARGS()){
                case 2: {
                                if (zend_get_parameters_ex(2, 
&yyagent,&yyquery)==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(yyquery);
        Res=UdmFind(Agent,(*yyquery)->value.str.val);
        ZEND_REGISTER_RESOURCE(return_value,Res,le_res);
}
/* }}} */


/* {{{ proto int udm_get_res_field(int res_identifier,int row_num,const int field_name)
   Fetch mnoGoSearch result field */
DLEXPORT PHP_FUNCTION(udm_get_res_field){
        pval **yyres, **yyrow_num, **yyfield_name;

        UDM_RESULT * Res;
        int row,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=atoi((*yyfield_name)->value.str.val);
                                row=atoi((*yyrow_num)->value.str.val);
                        }
                        break;
                default:
                        WRONG_PARAM_COUNT;
                        break;
        }
        ZEND_FETCH_RESOURCE(Res, UDM_RESULT *, yyres, -1, "mnoGoSearch-Result", 
le_res);
        if(row<Res->num_rows){
                switch(field){
                        case UDM_FIELD_URL:             
RETURN_STRING((Res->Doc[row].url),1);break;
                        case UDM_FIELD_CONTENT:         
RETURN_STRING((Res->Doc[row].content_type),1);break;
                        case UDM_FIELD_TITLE:           
RETURN_STRING((Res->Doc[row].title),1);break;
                        case UDM_FIELD_KEYWORDS:        
RETURN_STRING((Res->Doc[row].keywords),1);break;
                        case UDM_FIELD_DESC:            
RETURN_STRING((Res->Doc[row].description),1);break;
                        case UDM_FIELD_TEXT:            
RETURN_STRING((Res->Doc[row].text),1);break;
                        case UDM_FIELD_SIZE:            
RETURN_LONG((Res->Doc[row].size));break;
                        case UDM_FIELD_URLID:           
RETURN_LONG((Res->Doc[row].url_id));break;
                        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;
                }
        }else{
                RETURN_STRING("<Udm_Get_Res_Field: row number too large>",1);
        }
}
/* }}} */


/* {{{ proto int udm_free_res(int res_identifier)
    mnoGoSearch free result */
DLEXPORT PHP_FUNCTION(udm_free_res)
{
        pval ** yyres;
        UDM_RESULT * Res;
        switch(ZEND_NUM_ARGS()){
                case 1: {
                                if (zend_get_parameters_ex(1, &yyres)==FAILURE) {
                                        RETURN_FALSE;
                                }
                        }
                        break;
                default:
                        WRONG_PARAM_COUNT;
                        break;
        }
        ZEND_FETCH_RESOURCE(Res, UDM_RESULT *, yyres, -1, "mnoGoSearch-Result", 
le_res);
        zend_list_delete((*yyres)->value.lval);

}
/* }}} */


/* {{{ 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) {
                                        RETURN_FALSE;
                                }
                        }
                        break;
                default:
                        WRONG_PARAM_COUNT;
                        break;
        }
        ZEND_FETCH_RESOURCE(Agent, UDM_AGENT *, yyagent, -1, "mnoGoSearch-Agent", 
le_link);
        RETURN_STRING(UdmDBErrorMsg(Agent->db),1);
}
/* }}} */

/* {{{ 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) {
                                        RETURN_FALSE;
                                }
                        }
                        break;
                default:
                        WRONG_PARAM_COUNT;
                        break;
        }
        ZEND_FETCH_RESOURCE(Agent, UDM_AGENT *, yyagent, -1, "mnoGoSearch-Agent", 
le_link);
        RETURN_LONG(UdmDBErrorCode(Agent->db));
}
/* }}} */


/* {{{ 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:
                        /* FIXME: unknown parameter */
                        RETURN_STRING("<Udm_Get_Res_Param: Unknown mnoGoSearch param 
name>",1);
                        break;
        }
}
/* }}} */

#endif


/*
 * Local variables:
 * End:
 */


Index: php4/ext/mnogosearch/php_mnogo.h
+++ php4/ext/mnogosearch/php_mnogo.h
/* 
   +----------------------------------------------------------------------+
   | PHP HTML Embedded Scripting Language Version 3.0                     |
   +----------------------------------------------------------------------+
   | Copyright (c) 1997,1998 PHP Development Team (See Credits file)      |
   +----------------------------------------------------------------------+
   | This program is free software; you can redistribute it and/or modify |
   | it under the terms of one of the following licenses:                 |
   |                                                                      |
   |  A) the GNU General Public License as published by the Free Software |
   |     Foundation; either version 2 of the License, or (at your option) |
   |     any later version.                                               |
   |                                                                      |
   |  B) the PHP License as published by the PHP Development Team and     |
   |     included in the distribution in the file: LICENSE                |
   |                                                                      |
   | This program is distributed in the hope that it will be useful,      |
   | but WITHOUT ANY WARRANTY; without even the implied warranty of       |
   | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        |
   | GNU General Public License for more details.                         |
   |                                                                      |
   | You should have received a copy of both licenses referred to here.   |
   | If you did not, or have any questions about PHP licensing, please    |
   | contact [EMAIL PROTECTED]                                                |
   +----------------------------------------------------------------------+
   | Authors:                                                             |
   |  Initial version     by  Alex Barkov <[EMAIL PROTECTED]>                 |
   |                      and Ramil Kalimullin <[EMAIL PROTECTED]>            |
   |  Further development by  Sergey Kartashoff <[EMAIL PROTECTED]>        |
   +----------------------------------------------------------------------+
 */

/* $Id: php_mnogo.h,v 0.3 2001/01/27 15:30:00 */


#ifndef _PHP_MNOGO_H
#define _PHP_MNOGO_H

#if HAVE_MNOGOSEARCH

extern zend_module_entry mnogosearch_module_entry;
#define mnogosearch_module_ptr &mnogosearch_module_entry

#ifdef PHP_WIN32                            
#define PHP_MNOGO_API __declspec(dllexport)  
#else                                       
#define PHP_MNOGO_API                        
#endif                                      

#ifdef ZTS       
#include "TSRM.h"
#endif           

/* mnoGoSearch functions */
DLEXPORT PHP_MINIT_FUNCTION(mnogosearch);
DLEXPORT PHP_RINIT_FUNCTION(mnogosearch);
DLEXPORT PHP_MSHUTDOWN_FUNCTION(mnogosearch);
DLEXPORT PHP_MINFO_FUNCTION(mnogosearch);

DLEXPORT PHP_FUNCTION(udm_alloc_agent);
DLEXPORT PHP_FUNCTION(udm_set_agent_param);
DLEXPORT PHP_FUNCTION(udm_free_agent);

DLEXPORT PHP_FUNCTION(udm_error);
DLEXPORT PHP_FUNCTION(udm_errno);

DLEXPORT PHP_FUNCTION(udm_find);
DLEXPORT PHP_FUNCTION(udm_free_res);
DLEXPORT PHP_FUNCTION(udm_get_res_field);
DLEXPORT PHP_FUNCTION(udm_get_res_param);

#else

#define mnogosearch_module_ptr NULL

#endif

#define phpext_mnogosearch_ptr mnogosearch_module_ptr

#endif /* _PHP_MNOGO_H */

Index: php4/ext/mnogosearch/setup.stub
+++ php4/ext/mnogosearch/setup.stub
# $Source: /local/repository/php4/ext/mnogosearch/setup.stub,v $
# $Id: setup.stub,v 1.1 2001/01/30 12:53:50 gluke Exp $

define_option with-mnogosearch 'mnoGoSearch support?' yesnodir \
    'no /usr/local/udmsearch mnoGoSearch install' \
'    Whether to build PHP with mnoGoSearch support. 
     More info about mnoGoSearch can be found at http://search.mnogo.ru/.'


        
Index: php4/ext/mnogosearch/test.php
+++ php4/ext/mnogosearch/test.php
<html>
<body>

<form method=post>
<input type=text size=30 name=q value="<? echo $q; ?>">
<input type=submit value=" Search ! ">
</form>

<pre>

<?
        if ($q=='') {
                print("</pre></body></html>\n");
                exit();
        }
        
// Stage 1: allocate UdmSearch agent, set DBAddr and DBMode
// DBMode is optional, "single" by default

        $udm=Udm_Alloc_Agent("mysql://udm:udm@localhost/udm/",'crc-multi');
        
// Stage 2: set search parameters

        $page_size=10;
        $page_number=0;
        $search_mode=UDM_MODE_BOOL;
        $first=$page_size*$page_number+1;

        Udm_Set_Agent_Param($udm,UDM_PARAM_PAGE_SIZE,$page_size);
        Udm_Set_Agent_Param($udm,UDM_PARAM_PAGE_NUM,$page_number);
        Udm_Set_Agent_Param($udm,UDM_PARAM_SEARCH_MODE,$search_mode);
        

// Stage 3: perform search 

        $res=Udm_Find($udm,$q); 

// Stage 4: display results

        // Check error code
        if(($errno=Udm_Errno($udm))>0){
                // Display error message
                printf("Error #%d: '%s'\n",$errno,Udm_Error($udm));
        }else{

                // Get result parameters
                $total=Udm_Get_Res_Param($res,UDM_PARAM_FOUND);
                $rows=Udm_Get_Res_Param($res,UDM_PARAM_NUM_ROWS);

                printf("Documents %d-%d from %d total found\n\n",
                        $first,$first+$rows-1,$total);

                // Fetch all rows
                for($i=0;$i<$rows;$i++){
                        printf("%3d. 
%s\n",$first+$i,Udm_Get_Res_Field($res,$i,UDM_FIELD_URL));
                        printf("     CONT : 
%s\n",htmlspecialchars(Udm_Get_Res_Field($res,$i,UDM_FIELD_CONTENT)));
                        printf("     TITLE: 
%s\n",htmlspecialchars(Udm_Get_Res_Field($res,$i,UDM_FIELD_TITLE)));
                        printf("     KEYWORDS: 
%s\n",htmlspecialchars(Udm_Get_Res_Field($res,$i,UDM_FIELD_KEYWORDS)));
                        printf("     DESC: 
%s\n",htmlspecialchars(Udm_Get_Res_Field($res,$i,UDM_FIELD_DESC)));
                        printf("     TEXT: 
%s\n",htmlspecialchars(Udm_Get_Res_Field($res,$i,UDM_FIELD_TEXT)));
                        printf("     SIZE : 
%d\n",Udm_Get_Res_Field($res,$i,UDM_FIELD_SIZE));
                        printf("     MODIFIED : 
%s\n",Udm_Get_Res_Field($res,$i,UDM_FIELD_MODIFIED));
                        printf("     URLID : 
%d\n",Udm_Get_Res_Field($res,$i,UDM_FIELD_URLID));
                        printf("     SCORE : 
%d\n",Udm_Get_Res_Field($res,$i,UDM_FIELD_SCORE));
                        printf("---------\n");
                }
                                
                // Free result
                Udm_Free_Res($res);
        }

//Stage 5: free UdmSearch agent

        Udm_Free_Agent($udm);
?>

</pre>
</body>
</html>

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to