#ifdef HAVE_CONFIG_H #include "config.h" #endif #include "clucene_dll.h" //the dll wrapper #include "php.h" #include "php_clucene.h" /* PHP Includes */ #include "ext/standard/info.h" function_entry clucene_functions[] = { ZEND_FE(cl_open, NULL) ZEND_FE(cl_close, NULL) ZEND_FE(cl_reload, NULL) ZEND_FE(cl_optimize, NULL) ZEND_FE(cl_delete, NULL) ZEND_FE(cl_errno, NULL) ZEND_FE(cl_errstr, NULL) ZEND_FE(cl_error, NULL) ZEND_FE(cl_new_document, NULL) ZEND_FE(cl_add_field, NULL) ZEND_FE(cl_add_file, NULL) ZEND_FE(cl_add_date, NULL) ZEND_FE(cl_insert_document, NULL) ZEND_FE(cl_document_info, NULL) ZEND_FE(cl_search, NULL) ZEND_FE(cl_searchinfo,NULL) ZEND_FE(cl_highlight,NULL) ZEND_FE(cl_hitcount, NULL) ZEND_FE(cl_nexthit, NULL) ZEND_FE(cl_clearsearch, NULL) ZEND_FE(cl_getfield, NULL) ZEND_FE(cl_getdatefield, NULL) {NULL, NULL, NULL} }; zend_module_entry clucene_module_entry = { STANDARD_MODULE_HEADER, "clucene", clucene_functions, PHP_MINIT(clucene), PHP_MSHUTDOWN(clucene), NULL, NULL, PHP_MINFO(clucene), NO_VERSION_YET, STANDARD_MODULE_PROPERTIES }; #ifdef COMPILE_DL_CLUCENE ZEND_GET_MODULE(clucene) #endif PHP_MINIT_FUNCTION(clucene) { //CL_Init(); return SUCCESS; } PHP_MSHUTDOWN_FUNCTION(clucene) { CL_Cleanup(); return SUCCESS; } PHP_MINFO_FUNCTION(clucene) { php_info_print_table_start(); php_info_print_table_row(2, "CLucene Support", "Enabled"); php_info_print_table_row(2, "CLucene Version", "0.9.(x)"); php_info_print_table_end(); } /* Returns the error number */ PHP_FUNCTION(cl_errno) { RETURN_LONG(0); } /* Returns the error string */ PHP_FUNCTION(cl_errstr) { long resource; char err[errlen]; if ( zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &resource) == FAILURE) { return; } CL_ERRSTR(resource,err,errlen); RETURN_STRING(err, 1); } /* Returns the error number and error string in an associative array */ PHP_FUNCTION(cl_error) { array_init(return_value); add_assoc_long (return_value, "errno", 0); add_assoc_string(return_value, "errstr", "TEST",1); } /* Opens a new CLucene directory */ //proto string clopen(string dir, bool create=false) PHP_FUNCTION(cl_open) { int cr; char *s; int s_len; long ret = 0; if( ZEND_NUM_ARGS() > 2 || ZEND_NUM_ARGS() < 1 ) WRONG_PARAM_COUNT; if ( zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|b", &s, &s_len, &cr) == FAILURE) { return; } ret = CL_OPEN(s,cr); if ( ret != 0 ) RETURN_LONG(ret); RETURN_NULL(); } /* Closes a CLucene directory */ PHP_FUNCTION(cl_close) { long resource; if ( zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &resource) == FAILURE) { return; } if ( CL_CLOSE(resource) != 1 ) RETURN_FALSE; RETURN_TRUE; } /* Reloads a CLucene index */ PHP_FUNCTION(cl_reload) { long resource; if ( zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &resource) == FAILURE) { return; } if ( CL_RELOAD(resource) != 1 ) RETURN_FALSE; RETURN_TRUE; } /* Optimizes a Clucene directory */ PHP_FUNCTION(cl_optimize) { long resource; if ( zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &resource) == FAILURE) { return; } if ( CL_OPTIMIZE(resource) != 1 ) RETURN_FALSE; RETURN_TRUE; } /* Creates a new document*/ PHP_FUNCTION(cl_new_document) { long resource; if ( zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &resource) == FAILURE) { return; } if ( CL_NEW_DOCUMENT(resource) != 1 ) RETURN_FALSE; RETURN_TRUE; } /* Adds a field to the current document*/ PHP_FUNCTION(cl_add_field) { long resource; char* fld; char* val; int fld_len; int val_len; int store = 0; int index = 1; int token = 1; if ( zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lss|bbb", &resource, &fld, &fld_len, &val, &val_len, &store, &index, &token) == FAILURE) { return; } if ( CL_ADD_FIELD(resource,fld,val,val_len,store,index,token) != 1 ) RETURN_FALSE; RETURN_TRUE; } PHP_FUNCTION(cl_add_file) { long resource; char* fld; char* file; int fld_len; int file_len; int store = 0; int index = 1; int token = 1; if ( zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lss|bbb", &resource, &fld, &fld_len, &file, &file_len, &store, &index, &token) == FAILURE) { return; } if ( CL_ADD_FILE(resource,fld,file,store,index,token) != 1 ) RETURN_FALSE; RETURN_TRUE; } /* Adds a date field to the current document*/ PHP_FUNCTION(cl_add_date) { long resource; char* fld; char* val; int fld_len; int val_len; int store = 0; int index = 1; int token = 1; if ( zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ls|bbb", &resource, &fld, &fld_len, &val, &val_len, &store, &index, &token) == FAILURE) { return; } if ( CL_ADD_DATE(resource,fld,0,store,index,token) != 1 ) RETURN_FALSE; RETURN_TRUE; } /* Inserts the current document*/ PHP_FUNCTION(cl_insert_document) { long resource; if ( zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &resource) == FAILURE) { return; } if ( CL_INSERT_DOCUMENT(resource) != 1 ) RETURN_FALSE; RETURN_TRUE; } /* Returns text about document info */ PHP_FUNCTION(cl_document_info) { long resource; char ret[2048]; if ( zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &resource) == FAILURE) { return; } CL_DOCUMENT_INFO(resource,ret,2048); RETURN_STRING(ret,1); } /* Performs a search*/ PHP_FUNCTION(cl_search) { long resource; zval *field; char* qry; char* fld; HashTable *fldHash; zval **hash_entry; char* flds[100]; int fldLen; int i=0; int qry_len; if ( zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lsz", &resource, &qry, &qry_len, &field) == FAILURE) { return; } if ( field->type == IS_ARRAY ){ convert_to_array_ex(&field); fldHash = Z_ARRVAL_P(field); fldLen = zend_hash_num_elements(fldHash); for ( i=0;i