rrichards               Fri May 12 18:53:40 2006 UTC

  Modified files:              (Branch: PHP_5_2)
    /php-src/ext/xsl    xsltprocessor.c 
  Log:
  MFH: add doXInclude property to allow processor to perform XIncludes
  
http://cvs.php.net/viewcvs.cgi/php-src/ext/xsl/xsltprocessor.c?r1=1.39.2.2&r2=1.39.2.2.2.1&diff_format=u
Index: php-src/ext/xsl/xsltprocessor.c
diff -u php-src/ext/xsl/xsltprocessor.c:1.39.2.2 
php-src/ext/xsl/xsltprocessor.c:1.39.2.2.2.1
--- php-src/ext/xsl/xsltprocessor.c:1.39.2.2    Sun Jan  1 12:50:17 2006
+++ php-src/ext/xsl/xsltprocessor.c     Fri May 12 18:53:40 2006
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: xsltprocessor.c,v 1.39.2.2 2006/01/01 12:50:17 sniper Exp $ */
+/* $Id: xsltprocessor.c,v 1.39.2.2.2.1 2006/05/12 18:53:40 rrichards Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -396,7 +396,7 @@
        } else {
                intern->hasKeys = clone_docu;
        }
-       
+
        if ((oldsheetp = (xsltStylesheetPtr)intern->ptr)) { 
                /* free wrapper */
                if (((xsltStylesheetPtr) intern->ptr)->_private != NULL) {
@@ -411,7 +411,7 @@
 /* }}} end xsl_xsltprocessor_import_stylesheet */
 
 
-static xmlDocPtr php_xsl_apply_stylesheet(xsl_object *intern, 
xsltStylesheetPtr style, zval *docp TSRMLS_DC)
+static xmlDocPtr php_xsl_apply_stylesheet(zval *id, xsl_object *intern, 
xsltStylesheetPtr style, zval *docp TSRMLS_DC)
 {
        xmlDocPtr newdocp;
        xmlDocPtr doc = NULL;
@@ -420,6 +420,8 @@
        php_libxml_node_object *object;
        char **params = NULL;
        int clone;
+       zval *doXInclude, *member;
+       zend_object_handlers *std_hnd;
 
        node = php_libxml_import_node(docp TSRMLS_CC);
        
@@ -453,7 +455,18 @@
 
        ctxt = xsltNewTransformContext(style, doc);
        ctxt->_private = (void *) intern;
-       
+
+       std_hnd = zend_get_std_object_handlers();
+
+       MAKE_STD_ZVAL(member);
+       ZVAL_STRING(member, "doXInclude", 0);
+       doXInclude = std_hnd->read_property(id, member, BP_VAR_IS TSRMLS_CC);
+       if (Z_TYPE_P(doXInclude) != IS_NULL) {
+               convert_to_long(doXInclude);
+               ctxt->xinclude = Z_LVAL_P(doXInclude);
+       }
+       efree(member);
+
        newdocp = xsltApplyStylesheetUser(style, doc, (const char**) params, 
NULL, NULL, ctxt);
 
        xsltFreeTransformContext(ctxt);
@@ -501,7 +514,7 @@
                RETURN_FALSE;
        }
 
-       newdocp = php_xsl_apply_stylesheet(intern, sheetp, docp TSRMLS_CC);
+       newdocp = php_xsl_apply_stylesheet(id, intern, sheetp, docp TSRMLS_CC);
 
        if (newdocp) {
                DOM_RET_OBJ(rv, (xmlNodePtr) newdocp, &ret, NULL);
@@ -532,7 +545,7 @@
                RETURN_FALSE;
        }
 
-       newdocp = php_xsl_apply_stylesheet(intern, sheetp, docp TSRMLS_CC);
+       newdocp = php_xsl_apply_stylesheet(id, intern, sheetp, docp TSRMLS_CC);
 
        ret = -1;
        if (newdocp) {
@@ -565,7 +578,7 @@
                RETURN_FALSE;
        }
 
-       newdocp = php_xsl_apply_stylesheet(intern, sheetp, docp TSRMLS_CC);
+       newdocp = php_xsl_apply_stylesheet(id, intern, sheetp, docp TSRMLS_CC);
 
        ret = -1;
        if (newdocp) {

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to