mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
add xsl_xsltprocessor_transform_to_uri functionality
fix a few unhandled error conditions fix compiler warnings
This commit is contained in:
parent
44401fa0e7
commit
e52b96a296
1 changed files with 48 additions and 9 deletions
|
@ -124,7 +124,7 @@ Since:
|
|||
PHP_FUNCTION(xsl_xsltprocessor_import_stylesheet)
|
||||
{
|
||||
zval *id, *docp = NULL;
|
||||
xmlDoc *doc;
|
||||
xmlDoc *doc = NULL;
|
||||
xsltStylesheetPtr sheetp, oldsheetp;
|
||||
xmlDocPtr newdocp;
|
||||
xsl_object *intern;
|
||||
|
@ -170,7 +170,7 @@ Since:
|
|||
PHP_FUNCTION(xsl_xsltprocessor_transform_to_doc)
|
||||
{
|
||||
zval *id, *rv = NULL, *docp = NULL;
|
||||
xmlDoc *doc;
|
||||
xmlDoc *doc = NULL;
|
||||
xmlDoc *newdocp;
|
||||
xsltStylesheetPtr sheetp;
|
||||
int ret;
|
||||
|
@ -210,7 +210,41 @@ PHP_FUNCTION(xsl_xsltprocessor_transform_to_doc)
|
|||
*/
|
||||
PHP_FUNCTION(xsl_xsltprocessor_transform_to_uri)
|
||||
{
|
||||
DOM_NOT_IMPLEMENTED();
|
||||
zval *id, *docp = NULL;
|
||||
xmlDoc *doc = NULL;
|
||||
xmlDoc *newdocp;
|
||||
xsltStylesheetPtr sheetp;
|
||||
int ret, uri_len;
|
||||
char **params = NULL, *uri;
|
||||
xsl_object *intern;
|
||||
node_object *docobj;
|
||||
|
||||
id = getThis();
|
||||
intern = (xsl_object *)zend_object_store_get_object(id TSRMLS_CC);
|
||||
sheetp = (xsltStylesheetPtr) intern->ptr;
|
||||
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "os", &docp, &uri, &uri_len) == FAILURE) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
DOC_GET_OBJ(doc, docp, xmlDocPtr, docobj);
|
||||
|
||||
if (intern->parameter) {
|
||||
params = php_xsl_xslt_make_params(intern->parameter, 0 TSRMLS_CC);
|
||||
}
|
||||
newdocp = xsltApplyStylesheet(sheetp, doc, (const char**)params);
|
||||
|
||||
if (params) {
|
||||
efree(params);
|
||||
}
|
||||
|
||||
ret = -1;
|
||||
if (newdocp) {
|
||||
ret = xsltSaveResultToFilename(uri, newdocp, sheetp, 0);
|
||||
xmlFreeDoc(newdocp);
|
||||
}
|
||||
|
||||
RETVAL_LONG(ret);
|
||||
}
|
||||
/* }}} end xsl_xsltprocessor_transform_to_uri */
|
||||
|
||||
|
@ -220,7 +254,7 @@ PHP_FUNCTION(xsl_xsltprocessor_transform_to_uri)
|
|||
PHP_FUNCTION(xsl_xsltprocessor_transform_to_xml)
|
||||
{
|
||||
zval *id, *docp = NULL;
|
||||
xmlDoc *doc;
|
||||
xmlDoc *doc = NULL;
|
||||
xmlDoc *newdocp;
|
||||
xsltStylesheetPtr sheetp;
|
||||
int ret;
|
||||
|
@ -247,15 +281,20 @@ PHP_FUNCTION(xsl_xsltprocessor_transform_to_xml)
|
|||
if (params) {
|
||||
efree(params);
|
||||
}
|
||||
ret = xsltSaveResultToString(&doc_txt_ptr, &doc_txt_len, newdocp, sheetp);
|
||||
|
||||
ret = -1;
|
||||
if (newdocp) {
|
||||
ret = xsltSaveResultToString(&doc_txt_ptr, &doc_txt_len, newdocp, sheetp);
|
||||
if (doc_txt_ptr) {
|
||||
RETVAL_STRINGL(doc_txt_ptr, doc_txt_len, 1);
|
||||
xmlFree(doc_txt_ptr);
|
||||
}
|
||||
xmlFreeDoc(newdocp);
|
||||
}
|
||||
|
||||
if (ret < 0) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
RETVAL_STRINGL(doc_txt_ptr, doc_txt_len, 1);
|
||||
xmlFree(doc_txt_ptr);
|
||||
xmlFreeDoc(newdocp);
|
||||
}
|
||||
/* }}} end xsl_xsltprocessor_transform_to_xml */
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue