Changeset 30

Show
Ignore:
Timestamp:
08/20/07 13:22:04 (7 years ago)
Author:
jesus
Message:

Add fastxsl.replace_document_function option to replace the libxslt provided 'document' function with 'cached_document'

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/fastxsl.c

    r29 r30  
    410410                        ss_wrapper->alloc_type = FASTXSL_SHMALLOC; 
    411411                        ss_wrapper->data_type = FASTXSL_STYLESHEET; 
    412                         func = xmlXPathFunctionLookup(ctxt->context, (const xmlChar *)"document"); 
     412                        if(FASTXSL_G(replace_document_function)) { 
     413                                func = xmlXPathFunctionLookup(ctxt->context, (const xmlChar *)"original_document"); 
     414                        } 
     415                        else { 
     416                                func = xmlXPathFunctionLookup(ctxt->context, (const xmlChar *)"document"); 
     417                        } 
    413418                        valuePush(ctxt, xmlXPathObjectCopy(ctxt->value)); 
    414419                        func(ctxt, nargs); 
     
    468473                                        ss_wrapper->alloc_type = FASTXSL_SHMALLOC; 
    469474                                        ss_wrapper->data_type = FASTXSL_STYLESHEET; 
    470                                         func = xmlXPathFunctionLookup(ctxt->context, (const xmlChar *)"document"); 
     475                                        if(FASTXSL_G(replace_document_function)) { 
     476                                                func = xmlXPathFunctionLookup(ctxt->context, (const xmlChar *)"original_document"); 
     477                                        } 
     478                                        else { 
     479                                                func = xmlXPathFunctionLookup(ctxt->context, (const xmlChar *)"document"); 
     480                                        } 
    471481                                        valuePush(ctxt, xmlXPathObjectCopy(ctxt->value)); 
    472482                                        func(ctxt, nargs); 
     
    928938        ctxt = xsltNewTransformContext(ss_wrapper->data.ss, xd_wrapper->xd); 
    929939#ifdef FASTXSL_MM 
     940        if(FASTXSL_G(replace_document_function)) { 
     941                xmlXPathFunction func; 
     942                func = xmlXPathFunctionLookup(ctxt->xpathCtxt, (const xmlChar *)"document"); 
     943                xmlXPathRegisterFunc(ctxt->xpathCtxt, (const xmlChar *) "original_document", func); 
     944                xmlXPathRegisterFunc(ctxt->xpathCtxt, (const xmlChar *) "document", NULL); 
     945                xmlXPathRegisterFunc(ctxt->xpathCtxt, (const xmlChar *) "document", 
     946                                        fastxsl_CachedDocumentFunction); 
     947        } 
    930948        xmlXPathRegisterFunc(ctxt->xpathCtxt, (const xmlChar *) "cached_document", 
    931949                                fastxsl_CachedDocumentFunction); 
     
    15391557        STD_PHP_INI_ENTRY("fastxsl.shmpath", "/tmp/fastxsl_mem", PHP_INI_SYSTEM, OnUpdateString, shmpath, zend_fastxsl_globals, fastxsl_globals) 
    15401558        STD_PHP_INI_BOOLEAN("fastxsl.nostat", "0", PHP_INI_ALL, OnUpdateLong, nostat, zend_fastxsl_globals, fastxsl_globals)  
     1559        STD_PHP_INI_BOOLEAN("fastxsl.replace_document_function", "0", PHP_INI_ALL, OnUpdateLong, replace_document_function, zend_fastxsl_globals, fastxsl_globals)  
    15411560        STD_PHP_INI_BOOLEAN("fastxsl.memalloc", "0", PHP_INI_SYSTEM, OnUpdateLong, memalloc, zend_fastxsl_globals, fastxsl_globals)  
    15421561        STD_PHP_INI_BOOLEAN("fastxsl.register_functions", "0", PHP_INI_ALL, OnUpdateLong, register_functions, zend_fastxsl_globals, fastxsl_globals)  
     
    16021621                                           fastxsl_ext_function); 
    16031622        } 
    1604         xsltRegisterExtModuleFunction ((const xmlChar *) "cached_document", 
    1605                                    (const xmlChar *) "http://php.net/fastxsl/cached_document", 
    1606                                    fastxsl_CachedDocumentFunction); 
    16071623        //xmlCleanupParserr(); 
    16081624inshm = 0; 
  • trunk/php_fastxsl.h

    r26 r30  
    106106        char     *errbuf; 
    107107        long      nostat; 
     108        long      replace_document_function; 
    108109        long      memalloc; 
    109110        long      register_functions;