diff options
Diffstat (limited to 'ext/tidy')
38 files changed, 0 insertions, 3391 deletions
diff --git a/ext/tidy/CREDITS b/ext/tidy/CREDITS deleted file mode 100644 index 1c77b2ff3b..0000000000 --- a/ext/tidy/CREDITS +++ /dev/null @@ -1,2 +0,0 @@ -tidy -John Coggeshall, Ilia Alshanetsky diff --git a/ext/tidy/README b/ext/tidy/README deleted file mode 100644 index 19f6b9ff6a..0000000000 --- a/ext/tidy/README +++ /dev/null @@ -1,16 +0,0 @@ - -README FOR ext/tidy by John Coggeshall <john@php.net> - - -Tidy is an extension based on Libtidy (http://tidy.sf.net/) and allows a PHP developer -to clean, repair, and traverse HTML, XHTML, and XML documents -- including ones with -embedded scripting languages such as PHP or ASP within them using OO constructs. - ---------------------------------------------------------------------------------------- -!! Important Note !! ---------------------------------------------------------------------------------------- -Older versions of libtidy have a small memory leak inside the ParseConfigFileEnc() function -used to load configuration from a file. If you intend to use this functionality apply -the "libtidy.txt" patch (cd tidy/src/; patch -p0 < libtidy.txt) to libtidy sources and -then recompile libtidy. ---------------------------------------------------------------------------------------- diff --git a/ext/tidy/TODO b/ext/tidy/TODO deleted file mode 100644 index 8a13162cc0..0000000000 --- a/ext/tidy/TODO +++ /dev/null @@ -1,3 +0,0 @@ -TODO - -Do the docs. diff --git a/ext/tidy/config.m4 b/ext/tidy/config.m4 deleted file mode 100644 index bd6e018e12..0000000000 --- a/ext/tidy/config.m4 +++ /dev/null @@ -1,38 +0,0 @@ -dnl -dnl $Id$ -dnl - -PHP_ARG_WITH(tidy,for TIDY support, -[ --with-tidy[=DIR] Include TIDY support]) - -if test "$PHP_TIDY" != "no"; then - - if test "$PHP_TIDY" != "yes"; then - TIDY_SEARCH_DIRS=$PHP_TIDY - else - TIDY_SEARCH_DIRS="/usr/local /usr" - fi - - for i in $TIDY_SEARCH_DIRS; do - if test -f $i/include/tidy/tidy.h; then - TIDY_DIR=$i - TIDY_INCDIR=$i/include/tidy - elif test -f $i/include/tidy.h; then - TIDY_DIR=$i - TIDY_INCDIR=$i/include - fi - done - - if test -z "$TIDY_DIR"; then - AC_MSG_ERROR(Cannot find libtidy) - fi - - TIDY_LIBDIR=$TIDY_DIR/lib - - PHP_ADD_LIBRARY_WITH_PATH(tidy, $TIDY_LIBDIR, TIDY_SHARED_LIBADD) - PHP_ADD_INCLUDE($TIDY_INCDIR) - - PHP_NEW_EXTENSION(tidy, tidy.c, $ext_shared) - PHP_SUBST(TIDY_SHARED_LIBADD) - AC_DEFINE(HAVE_TIDY,1,[ ]) -fi diff --git a/ext/tidy/config.w32 b/ext/tidy/config.w32 deleted file mode 100644 index 0f47864fa2..0000000000 --- a/ext/tidy/config.w32 +++ /dev/null @@ -1,19 +0,0 @@ -// $Id$ -// vim:ft=javascript - -ARG_WITH("tidy", "TIDY support", "no"); - -if (PHP_TIDY != "no") { - if (CHECK_LIB("libtidy.lib", "tidy", PHP_TIDY) && - ( - CHECK_HEADER_ADD_INCLUDE("tidy.h", "CFLAGS_TIDY") || - CHECK_HEADER_ADD_INCLUDE("tidy/tidy.h", "CFLAGS_TIDY", null, null, true) || - CHECK_HEADER_ADD_INCLUDE("libtidy/tidy.h", "CFLAGS_TIDY", null, null, true) - )) { - EXTENSION("tidy", "tidy.c"); - AC_DEFINE('HAVE_TIDY', 1, 'Have TIDY library'); - } else { - WARNING("tidy not enabled; libraries and headers not found"); - } -} - diff --git a/ext/tidy/examples/cleanhtml.php b/ext/tidy/examples/cleanhtml.php deleted file mode 100644 index 9a6713dc55..0000000000 --- a/ext/tidy/examples/cleanhtml.php +++ /dev/null @@ -1,40 +0,0 @@ -<?php - - /* - * cleanhtml.php - * - * A simple script to clean and repair HTML,XHTML,PHP,ASP,etc. documents - * if no file is provided, it reads from standard input. - * - * NOTE: Works only with tidy for PHP 4.3.x, for tidy in PHP 5 see cleanhtml5.php - * - * By: John Coggeshall <john@php.net> - * - * Usage: php cleanhtml.php [filename] - * - */ - - if(!isset($_SERVER['argv'][1])) { - $data = file_get_contents("php://stdin"); - tidy_parse_string($data); - } else { - tidy_parse_file($_SERVER['argv'][1]); - } - - tidy_clean_repair(); - - if(tidy_warning_count() || - tidy_error_count()) { - - echo "\n\nThe following errors or warnings occured:\n"; - echo tidy_get_error_buffer(); - echo "\n"; - } - - echo tidy_get_output(); - -?> - - - -
\ No newline at end of file diff --git a/ext/tidy/examples/cleanhtml5.php b/ext/tidy/examples/cleanhtml5.php deleted file mode 100644 index c31e36f1f2..0000000000 --- a/ext/tidy/examples/cleanhtml5.php +++ /dev/null @@ -1,39 +0,0 @@ -<?php - - /* - * cleanhtml5.php - * - * A simple script to clean and repair HTML,XHTML,PHP,ASP,etc. documents - * if no file is provided, it reads from standard input. - * - * NOTE: Works only with tidy for PHP 5, for tidy in PHP 4.3.x see cleanhtml.php - * - * By: John Coggeshall <john@php.net> - * - * Usage: php cleanhtml5.php [filename] - * - */ - - if(!isset($_SERVER['argv'][1])) { - $data = file_get_contents("php://stdin"); - $tidy = tidy_parse_string($data); - } else { - $tidy = tidy_parse_file($_SERVER['argv'][1]); - } - - $tidy->cleanRepair(); - - if(!empty($tidy->error_buf)) { - - echo "\n\nThe following errors or warnings occured:\n"; - echo "{$tidy->error_buf}\n"; - - } - - echo $tidy; - -?> - - - - diff --git a/ext/tidy/examples/dumpit.php b/ext/tidy/examples/dumpit.php deleted file mode 100644 index e77b7b9323..0000000000 --- a/ext/tidy/examples/dumpit.php +++ /dev/null @@ -1,93 +0,0 @@ -<?php - /* - * dumpit.php - * - * a command-line script which dumps the given HTML, PHP, ASP, XHTML, etc. - * file as it is represented in the document model. - * - * By: John Coggeshall <john@php.net> - * - * Usage; php dumpit.php <filename> - */ - - tidy_parse_file($_SERVER['argv'][1]); - - /* Optionally you can do this here if you want to fix up the document */ - - /* tidy_clean_repair(); */ - - $tree = tidy_get_root(); - dump_tree($tree); - echo "\n"; - - function node_type($type) { - - switch($type) { - - case TIDY_NODETYPE_ROOT: return "Root Node"; - case TIDY_NODETYPE_DOCTYPE: return "DocType Node"; - case TIDY_NODETYPE_COMMENT: return "Comment Node"; - case TIDY_NODETYPE_PROCINS: return "ProcIns Node"; - case TIDY_NODETYPE_TEXT: return "Text Node"; - case TIDY_NODETYPE_START: return "Start Node"; - case TIDY_NODETYPE_END: return "End Node"; - case TIDY_NODETYPE_STARTEND: return "Start/End Node"; - case TIDY_NODETYPE_CDATA: return "CDATA Node"; - case TIDY_NODETYPE_SECTION: return "Section Node"; - case TIDY_NODETYPE_ASP: return "ASP Source Code Node"; - case TIDY_NODETYPE_PHP: return "PHP Source Code Node"; - case TIDY_NODETYPE_JSTE: return "JSTE Source Code"; - case TIDY_NODETYPE_XMLDECL: return "XML Declaration Node"; - default: return "Unknown Node"; - } - } - - function do_leaf($string, $indent) { - for($i = 0; $i < $indent; $i++) { - echo " "; - } - echo $string; - } - - function dump_tree($node, $indent = 0) { - if($node) { - /* Put something there if the node name is empty */ - $nodename = trim(strtoupper($node->name)); - $nodename = (empty($nodename)) ? "[EMPTY]" : $nodename; - - /* Generate the Node, and a pretty name for it */ - do_leaf(" + $nodename (".node_type($node->type).")\n", $indent); - - /* Check to see if this node is a text node. Text nodes are - generated by start/end tags and contain the text in between. - i.e. <B>foo</B> will create a text node with $node->value - equal to 'foo' */ - if($node->type == TIDY_NODETYPE_TEXT) { - do_leaf(" |\n", $indent); - do_leaf(" +---- Value: '{$node->value}'\n", $indent); - } - - /* Any attributes on this node? */ - if(count($node->attributes())) { - do_leaf(" |\n", $indent); - do_leaf(" +---- Attributes\n", $indent); - - /* Cycle through the attributes and display them and their values. */ - foreach($node->attributes() as $attrib) { - do_leaf(" +--{$attrib->name}\n", $indent); - do_leaf(" | +-- Value: {$attrib->value}\n", $indent); - } - } - - /* Recurse along the children to generate the remaining nodes */ - if($node->has_children()) { - foreach($node->children() as $child) { - dump_tree($child, $indent + 3); - } - } - } - } - - echo tidy_get_output(); - -?>
\ No newline at end of file diff --git a/ext/tidy/examples/dumpit5.php b/ext/tidy/examples/dumpit5.php deleted file mode 100644 index ad9157f6ad..0000000000 --- a/ext/tidy/examples/dumpit5.php +++ /dev/null @@ -1,92 +0,0 @@ -<?php - /* - * dumpit5.php - * - * a command-line script which dumps the given HTML, PHP, ASP, XHTML, etc. - * file as it is represented in the document model. - * - * NOTE: Only works with tidy for PHP 5+, for tidy in 4.3.x, see dumpit.php - * - * By: John Coggeshall <john@php.net> - * - * Usage; php dumpit5.php <filename> - */ - - $tidy = tidy_parse_file($_SERVER['argv'][1]); - - /* Optionally you can do this here if you want to fix up the document */ - - /* $tidy->clean_repair() */ - - $tree = $tidy->root(); - dump_tree($tree); - echo "\n"; - - function node_type($type) { - - switch($type) { - - case TIDY_NODETYPE_ROOT: return "Root Node"; - case TIDY_NODETYPE_DOCTYPE: return "DocType Node"; - case TIDY_NODETYPE_COMMENT: return "Comment Node"; - case TIDY_NODETYPE_PROCINS: return "ProcIns Node"; - case TIDY_NODETYPE_TEXT: return "Text Node"; - case TIDY_NODETYPE_START: return "Start Node"; - case TIDY_NODETYPE_END: return "End Node"; - case TIDY_NODETYPE_STARTEND: return "Start/End Node"; - case TIDY_NODETYPE_CDATA: return "CDATA Node"; - case TIDY_NODETYPE_SECTION: return "Section Node"; - case TIDY_NODETYPE_ASP: return "ASP Source Code Node"; - case TIDY_NODETYPE_PHP: return "PHP Source Code Node"; - case TIDY_NODETYPE_JSTE: return "JSTE Source Code"; - case TIDY_NODETYPE_XMLDECL: return "XML Declaration Node"; - default: return "Unknown Node"; - } - } - - function do_leaf($string, $indent) { - for($i = 0; $i < $indent; $i++) { - echo " "; - } - echo $string; - } - - function dump_tree(tidy_node $node, $indent = 0) { - - /* Put something there if the node name is empty */ - $nodename = trim(strtoupper($node->name)); - $nodename = (empty($nodename)) ? "[EMPTY]" : $nodename; - - /* Generate the Node, and a pretty name for it */ - do_leaf(" + $nodename (".node_type($node->type).")\n", $indent); - - /* Check to see if this node is a text node. Text nodes are - generated by start/end tags and contain the text in between. - i.e. <B>foo</B> will create a text node with $node->value - equal to 'foo' */ - if($node->type == TIDY_NODETYPE_TEXT) { - do_leaf(" |\n", $indent); - do_leaf(" +---- Value: '{$node->value}'\n", $indent); - } - - if(count($node->attribute)) { - do_leaf(" |\n", $indent); - do_leaf(" +---- Attributes\n", $indent); - - foreach($node->attribute as $name=>$value) { - @do_leaf(" +-- $name\n", $indent); - do_leaf(" | +-- Value: $value\n", $indent); - } - } - - /* Recurse along the children to generate the remaining nodes */ - if($node->has_children()) { - foreach($node->child as $child) { - dump_tree($child, $indent + 3); - } - } - - } - - -?>
\ No newline at end of file diff --git a/ext/tidy/examples/urlgrab.php b/ext/tidy/examples/urlgrab.php deleted file mode 100644 index 9ec4c42bab..0000000000 --- a/ext/tidy/examples/urlgrab.php +++ /dev/null @@ -1,62 +0,0 @@ -<?php - - /* - * urlgrab.php - * - * A simple command-line utility to extract all of the URLS contained - * within <A HREF> tags from a document. - * - * NOTE: Only works with tidy for PHP 4.3.x, please see urlgrab5.php for tidy for PHP 5 - * - * By: John Coggeshall <john@php.net> - * - * Usage: php urlgrab.php <file> - * - */ - - /* Parse the document */ - tidy_parse_file($_SERVER['argv'][1]); - - /* Fix up the document */ - tidy_clean_repair(); - - /* Get an object representing everything from the <HTML> tag in */ - $html = tidy_get_html(); - - /* Traverse the document tree */ - print_r(get_links($html)); - - function get_links($node) { - $urls = array(); - - /* Check to see if we are on an <A> tag or not */ - if($node->id == TIDY_TAG_A) { - /* If we are, find the HREF attribute */ - $attrib = $node->get_attr(TIDY_ATTR_HREF); - if($attrib) { - /* Add the value of the HREF attrib to $urls */ - $urls[] = $attrib->value; - } - - } - - /* Are there any children? */ - if($node->has_children()) { - - /* Traverse down each child recursively */ - foreach($node->children() as $child) { - - /* Append the results from recursion to $urls */ - foreach(get_links($child) as $url) { - - $urls[] = $url; - - } - - } - } - - return $urls; - } - -?>
\ No newline at end of file diff --git a/ext/tidy/examples/urlgrab5.php b/ext/tidy/examples/urlgrab5.php deleted file mode 100644 index 8e08322a14..0000000000 --- a/ext/tidy/examples/urlgrab5.php +++ /dev/null @@ -1,39 +0,0 @@ -<?php - /* - * urlgrab5.php - * - * A simple command-line utility to extract all of the URLS contained - * within <A HREF> tags from a document. - * - * NOTE: Only works with tidy for PHP 5, please see urlgrab.php for tidy for PHP 4.3.x - * - * By: John Coggeshall <john@php.net> - * - * Usage: php urlgrab5.php <file> - * - */ - function dump_nodes(tidy_node $node, &$urls = NULL) { - - $urls = (is_array($urls)) ? $urls : array(); - - if(isset($node->id)) { - if($node->id == TIDY_TAG_A) { - $urls[] = $node->attribute['href']; - } - } - - if($node->hasChildren()) { - - foreach($node->child as $c) { - dump_nodes($c, $urls); - } - - } - - return $urls; - } - - $a = tidy_parse_file($_SERVER['argv'][1]); - $a->cleanRepair(); - print_r(dump_nodes($a->html())); -?> diff --git a/ext/tidy/libtidy.txt b/ext/tidy/libtidy.txt deleted file mode 100644 index 53185d9fc2..0000000000 --- a/ext/tidy/libtidy.txt +++ /dev/null @@ -1,12 +0,0 @@ ---- config.c Mon Jun 9 04:07:55 2003 -+++ config.c Sun Sep 21 16:13:04 2003 -@@ -719,7 +719,8 @@ - } - - fclose( fin ); -- MemFree( cfg->cfgIn ); -+ MemFree( cfg->cfgIn->source.sourceData ); -+ MemFree( cfg->cfgIn ); - cfg->cfgIn = NULL; - } - diff --git a/ext/tidy/package.xml b/ext/tidy/package.xml deleted file mode 100644 index a5b461ce45..0000000000 --- a/ext/tidy/package.xml +++ /dev/null @@ -1,65 +0,0 @@ -<?xml version="1.0" encoding="ISO-8859-1" ?> -<!DOCTYPE package SYSTEM "../pear/package.dtd"> -<package> - <name>tidy</name> - <summary>Tidy HTML Repairing and Parsing</summary> - <maintainers> - <maintainer> - <user>john</user> - <name>John Coggeshall</name> - <email>john@php.net</email> - <role>lead</role> - </maintainer> - <maintainer> - <user>iliaa</user> - <name>Ilia Alshanetsky</name> - <email>ilia@php.net</email> - <role>developer</role> - </maintainer> - </maintainers> - <description> -Tidy is a binding for the Tidy HTML clean and repair utility which -allows you to not only clean and otherwise manipluate HTML documents, -but also traverse the document tree using the Zend Engine 2 OO semantics. - </description> - <license>PHP</license> - <release> - <state>beta</state> - <version>2.0dev</version> - <date>2003-11-13</date> - <notes> - Major API changes for PHP 5.0, including the re-introduction of resources, output buffering support, - dual-nature syntax (tidy_clean_repair($tidy_res) or $tidy->clean_repair()) and more. - </notes> - <configureoptions> - <configureoption name="with-tidy" default="autodetect" prompt="Tidy library installation dir?"/> - </configureoptions> - <filelist> - <file role="src" name="config.m4"/> - <file role="src" name="tidy.c"/> - <file role="src" name="php_tidy.h"/> - - <file role="doc" name="CREDITS"/> - <file role="doc" name="TODO"/> - <file role="doc" name="examples/cleanhtml.php"/> - <file role="doc" name="examples/dumpit.php"/> - <file role="doc" name="examples/urlgrab.php"/> - <file role="doc" name="libtidy.txt"/> - - <file role="test" name="tests/001.phpt"/> - <file role="test" name="tests/002.phpt"/> - <file role="test" name="tests/003.phpt"/> - <file role="test" name="tests/004.phpt"/> - <file role="test" name="tests/005.phpt"/> - <file role="test" name="tests/005.html"/> - <file role="test" name="tests/006.phpt"/> - <file role="test" name="tests/007.phpt"/> - </filelist> - <deps> - <dep type="php" rel="ge" version="5" /> - </deps> - </release> -</package> -<!-- -vim:et:ts=1:sw=1 ---> diff --git a/ext/tidy/php_tidy.h b/ext/tidy/php_tidy.h deleted file mode 100644 index 4fbf95fca4..0000000000 --- a/ext/tidy/php_tidy.h +++ /dev/null @@ -1,292 +0,0 @@ -/* - +----------------------------------------------------------------------+ - | PHP Version 5 | - +----------------------------------------------------------------------+ - | Copyright (c) 1997-2004 The PHP Group | - +----------------------------------------------------------------------+ - | This source file is subject to version 3.0 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.php.net/license/3_0.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 | - | license@php.net so we can mail you a copy immediately. | - +----------------------------------------------------------------------+ - | Author: John Coggeshall <john@php.net> | - +----------------------------------------------------------------------+ -*/ - -/* $Id$ */ - -#ifndef PHP_TIDY_H -#define PHP_TIDY_H - -#include "tidyenum.h" -#include "tidy.h" -#include "buffio.h" - -extern zend_module_entry tidy_module_entry; -#define phpext_tidy_ptr &tidy_module_entry - -#ifdef PHP_WIN32 -#define PHP_TIDY_API __declspec(dllexport) -#else -#define PHP_TIDY_API -#endif - -#ifdef ZTS -#include "TSRM.h" -#endif - -#define PHP_TIDY_MODULE_VERSION "2.0-dev" - - -#define REMOVE_NEWLINE(_z) _z->value.str.val[_z->value.str.len-1] = '\0'; _z->value.str.len--; - -#define TIDYDOC_FROM_OBJECT(tdoc, object) \ - { \ - PHPTidyObj *obj = (PHPTidyObj*) zend_object_store_get_object(object TSRMLS_CC); \ - tdoc = obj->ptdoc; \ - } - -#define TIDY_FETCH_OBJECT \ - zval *object = getThis(); \ - PHPTidyObj *obj; \ - if (object) { \ - if (ZEND_NUM_ARGS()) { \ - WRONG_PARAM_COUNT; \ - } \ - } else { \ - if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, NULL, "O", &object, tidy_ce_doc) == FAILURE) { \ - RETURN_FALSE; \ - } \ - } \ - obj = (PHPTidyObj *) zend_object_store_get_object(object TSRMLS_CC); \ - -#define TIDY_FETCH_ONLY_OBJECT \ - zval *object = getThis(); \ - PHPTidyObj *obj; \ - if (ZEND_NUM_ARGS()) { \ - WRONG_PARAM_COUNT; \ - } \ - obj = (PHPTidyObj *) zend_object_store_get_object(object TSRMLS_CC); \ - - -#define Z_OBJ_P(zval_p) zend_objects_get_address(zval_p TSRMLS_CC) - -#define TIDY_METHOD_MAP(name, func_name, arg_types) \ - ZEND_NAMED_FE(name, ZEND_FN(func_name), arg_types) - -#define TIDY_APPLY_CONFIG_ZVAL(_doc, _val) \ - if(_val) { \ - if(Z_TYPE_P(_val) == IS_ARRAY) { \ - _php_tidy_apply_config_array(_doc, HASH_OF(_val) TSRMLS_CC); \ - } else { \ - convert_to_string_ex(&_val); \ - TIDY_SAFE_MODE_CHECK(Z_STRVAL_P(_val)); \ - if (tidyLoadConfig(_doc, Z_STRVAL_P(_val)) < 0) { \ - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could not load configuration file '%s'", Z_STRVAL_P(_val)); \ - RETURN_FALSE; \ - } \ - } \ - } - - -/* This is necessary, as apparently some Win32 compilers aren't C99 - compliant. When that isn't the case we can't use variable arg preprocessor - macros and need to instead call a wrapper function */ -#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L -#define TIDY_THROW(...) zend_throw_exception_ex(tidy_ce_exception, 0 TSRMLS_CC, __VA_ARGS__) -#else -#define TIDY_THROW _php_tidy_throw_exception -#endif - -#define TIDY_NODE_METHOD(name) PHP_FUNCTION(tnm_ ##name) -#define TIDY_NODE_ME(name, param) TIDY_METHOD_MAP(name, tnm_ ##name, param) -#define TIDY_DOC_METHOD(name) PHP_FUNCTION(tdm_ ##name) -#define TIDY_DOC_ME(name, param) TIDY_METHOD_MAP(name, tdm_ ##name, param) -#define TIDY_ATTR_METHOD(name) PHP_FUNCTION(tam_ ##name) -#define TIDY_ATTR_ME(name, param) TIDY_METHOD_MAP(name, tam_ ##name, param) - -#define REGISTER_TIDY_CLASS(classname, name, parent) \ - { \ - zend_class_entry ce; \ - INIT_CLASS_ENTRY(ce, # classname, tidy_funcs_ ## name); \ - ce.create_object = tidy_object_new_ ## name; \ - tidy_ce_ ## name = zend_register_internal_class_ex(&ce, parent, NULL TSRMLS_CC); \ - tidy_ce_ ## name->ce_flags |= ZEND_ACC_FINAL_CLASS; \ - memcpy(&tidy_object_handlers_ ## name, zend_get_std_object_handlers(), sizeof(zend_object_handlers)); \ - tidy_object_handlers_ ## name.clone_obj = NULL; \ - } - -#define TIDY_TAG_CONST(tag) REGISTER_LONG_CONSTANT("TIDY_TAG_" #tag, TidyTag_##tag, CONST_CS | CONST_PERSISTENT) -#define TIDY_ATTR_CONST(attr) REGISTER_LONG_CONSTANT("TIDY_ATTR_" #attr, TidyAttr_##attr, CONST_CS | CONST_PERSISTENT) -#define TIDY_NODE_CONST(name, type) REGISTER_LONG_CONSTANT("TIDY_NODETYPE_" #name, TidyNode_##type, CONST_CS | CONST_PERSISTENT) - -#ifndef TRUE -#define TRUE 1 -#define FALSE 0 -#endif - -#define ADD_PROPERTY_STRING(_table, _key, _string) \ - { \ - zval *tmp; \ - MAKE_STD_ZVAL(tmp); \ - if (_string) { \ - ZVAL_STRING(tmp, (char *)_string, 1); \ - } else { \ - ZVAL_EMPTY_STRING(tmp); \ - } \ - zend_hash_update(_table, #_key, sizeof(#_key), (void *)&tmp, sizeof(zval *), NULL); \ - } - -#define ADD_PROPERTY_LONG(_table, _key, _long) \ - { \ - zval *tmp; \ - MAKE_STD_ZVAL(tmp); \ - ZVAL_LONG(tmp, _long); \ - zend_hash_update(_table, #_key, sizeof(#_key), (void *)&tmp, sizeof(zval *), NULL); \ - } - -#define ADD_PROPERTY_NULL(_table, _key) \ - { \ - zval *tmp; \ - MAKE_STD_ZVAL(tmp); \ - ZVAL_NULL(tmp); \ - zend_hash_update(_table, #_key, sizeof(#_key), (void *)&tmp, sizeof(zval *), NULL); \ - } - -#define TIDY_SAFE_MODE_CHECK(filename) \ -if ((PG(safe_mode) && (!php_checkuid(filename, NULL, CHECKUID_CHECK_FILE_AND_DIR))) || php_check_open_basedir(filename TSRMLS_CC)) { \ - RETURN_FALSE; \ -} \ - -#define TIDY_SET_DEFAULT_CONFIG(_doc) \ - if (TG(default_config) && TG(default_config)[0]) { \ - if (tidyLoadConfig(_doc, TG(default_config)) < 0) { \ - zend_error(E_ERROR, "Unable to load Tidy configuration file at '%s'.", TG(default_config)); \ - } \ - } - - -typedef struct _PHPTidyDoc PHPTidyDoc; -typedef struct _PHPTidyObj PHPTidyObj; - -typedef enum { - is_node, - is_attr, - is_doc, - is_exception -} tidy_obj_type; - -typedef enum { - is_root_node, - is_html_node, - is_head_node, - is_body_node -} tidy_base_nodetypes; - -struct _PHPTidyDoc { - TidyDoc doc; - TidyBuffer *errbuf; - unsigned int ref_count; -}; - -struct _PHPTidyObj { - zend_object std; - TidyNode node; - tidy_obj_type type; - PHPTidyDoc *ptdoc; -}; - -static char *php_tidy_file_to_mem(char *, zend_bool TSRMLS_DC); -static void tidy_object_dtor(void *, zend_object_handle TSRMLS_DC); -static zend_object_value tidy_object_new_node(zend_class_entry * TSRMLS_DC); -static zend_object_value tidy_object_new_doc(zend_class_entry * TSRMLS_DC); -static zend_object_value tidy_object_new_exception(zend_class_entry * TSRMLS_DC); -static zend_class_entry *tidy_get_ce_node(zval * TSRMLS_DC); -static zend_class_entry *tidy_get_ce_doc(zval * TSRMLS_DC); -static zval * tidy_instanciate(zend_class_entry *, zval * TSRMLS_DC); -static int tidy_doc_cast_handler(zval *, zval *, int, int TSRMLS_DC); -static int tidy_node_cast_handler(zval *, zval *, int, int TSRMLS_DC); -static void tidy_doc_update_properties(PHPTidyObj * TSRMLS_DC); -static void tidy_add_default_properties(PHPTidyObj *, tidy_obj_type TSRMLS_DC); -static void *php_tidy_get_opt_val(PHPTidyDoc *, TidyOption, TidyOptionType * TSRMLS_DC); -static void php_tidy_create_node(INTERNAL_FUNCTION_PARAMETERS, tidy_base_nodetypes); -static int _php_tidy_set_tidy_opt(TidyDoc, char *, zval * TSRMLS_DC); -static int _php_tidy_apply_config_array(TidyDoc doc, HashTable *ht_options TSRMLS_DC); - -void _php_tidy_register_nodetypes(INIT_FUNC_ARGS); -void _php_tidy_register_tags(INIT_FUNC_ARGS); - -PHP_MINIT_FUNCTION(tidy); -PHP_MSHUTDOWN_FUNCTION(tidy); -PHP_RINIT_FUNCTION(tidy); -PHP_RSHUTDOWN_FUNCTION(tidy); -PHP_MINFO_FUNCTION(tidy); - -PHP_FUNCTION(tidy_getopt); -PHP_FUNCTION(tidy_parse_string); -PHP_FUNCTION(tidy_parse_file); -PHP_FUNCTION(tidy_clean_repair); -PHP_FUNCTION(tidy_repair_string); -PHP_FUNCTION(tidy_repair_file); -PHP_FUNCTION(tidy_diagnose); -PHP_FUNCTION(tidy_get_output); -PHP_FUNCTION(tidy_get_error_buffer); -PHP_FUNCTION(tidy_get_release); -PHP_FUNCTION(tidy_reset_config); -PHP_FUNCTION(tidy_get_config); -PHP_FUNCTION(tidy_get_status); -PHP_FUNCTION(tidy_get_html_ver); -PHP_FUNCTION(tidy_is_xhtml); -PHP_FUNCTION(tidy_is_xml); -PHP_FUNCTION(tidy_error_count); -PHP_FUNCTION(tidy_warning_count); -PHP_FUNCTION(tidy_access_count); -PHP_FUNCTION(tidy_config_count); - -PHP_FUNCTION(ob_tidyhandler); - -PHP_FUNCTION(tidy_get_root); -PHP_FUNCTION(tidy_get_html); -PHP_FUNCTION(tidy_get_head); -PHP_FUNCTION(tidy_get_body); - -TIDY_DOC_METHOD(__construct); -TIDY_DOC_METHOD(parseFile); -TIDY_DOC_METHOD(parseString); - -TIDY_NODE_METHOD(__construct); -TIDY_NODE_METHOD(hasChildren); -TIDY_NODE_METHOD(hasSiblings); -TIDY_NODE_METHOD(isComment); -TIDY_NODE_METHOD(isHtml); -TIDY_NODE_METHOD(isXhtml); -TIDY_NODE_METHOD(isXml); -TIDY_NODE_METHOD(isText); -TIDY_NODE_METHOD(isJste); -TIDY_NODE_METHOD(isAsp); -TIDY_NODE_METHOD(isPhp); - -ZEND_BEGIN_MODULE_GLOBALS(tidy) - char *default_config; -ZEND_END_MODULE_GLOBALS(tidy) - -#ifdef ZTS -#define TG(v) TSRMG(tidy_globals_id, zend_tidy_globals *, v) -#else -#define TG(v) (tidy_globals.v) -#endif - -#endif - - -/* - * Local variables: - * tab-width: 4 - * c-basic-offset: 4 - * End: - * vim600: noet sw=4 ts=4 fdm=marker - * vim<600: noet sw=4 ts=4 - */ diff --git a/ext/tidy/tests/001.phpt b/ext/tidy/tests/001.phpt deleted file mode 100644 index 6a9f1b5c81..0000000000 --- a/ext/tidy/tests/001.phpt +++ /dev/null @@ -1,13 +0,0 @@ ---TEST-- -Check for tidy presence ---SKIPIF-- -<?php if (!extension_loaded("tidy")) print "skip"; ?> ---POST-- ---GET-- ---INI-- ---FILE-- -<?php -echo "tidy extension is available"; -?> ---EXPECT-- -tidy extension is available diff --git a/ext/tidy/tests/002.phpt b/ext/tidy/tests/002.phpt deleted file mode 100644 index c928a9baae..0000000000 --- a/ext/tidy/tests/002.phpt +++ /dev/null @@ -1,21 +0,0 @@ ---TEST-- -tidy_parse_string() ---SKIPIF-- -<?php if (!extension_loaded("tidy")) print "skip"; ?> ---POST-- ---GET-- ---INI-- ---FILE-- -<?php - $a = tidy_parse_string("<HTML></HTML>"); - echo tidy_get_output($a); - -?> ---EXPECT-- -<html> -<head> -<title></title> -</head> -<body> -</body> -</html>
\ No newline at end of file diff --git a/ext/tidy/tests/003.phpt b/ext/tidy/tests/003.phpt deleted file mode 100644 index 028e543915..0000000000 --- a/ext/tidy/tests/003.phpt +++ /dev/null @@ -1,24 +0,0 @@ ---TEST-- -tidy_clean_repair() ---SKIPIF-- -<?php if (!extension_loaded("tidy")) print "skip"; ?> ---POST-- ---GET-- ---INI-- ---FILE-- -<?php - - $a = tidy_parse_string("<HTML></HTML>"); - tidy_clean_repair($a); - echo tidy_get_output($a); - -?> ---EXPECT-- -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN"> -<html> -<head> -<title></title> -</head> -<body> -</body> -</html> diff --git a/ext/tidy/tests/004.phpt b/ext/tidy/tests/004.phpt deleted file mode 100644 index fa2bb6a314..0000000000 --- a/ext/tidy/tests/004.phpt +++ /dev/null @@ -1,20 +0,0 @@ ---TEST-- -tidy_diagnose() ---SKIPIF-- -<?php if (!extension_loaded("tidy")) print "skip"; ?> ---POST-- ---GET-- ---INI-- ---FILE-- -<?php - $a = tidy_parse_string("<HTML></HTML>"); - tidy_diagnose($a); - echo tidy_get_error_buffer($a); -?> ---EXPECT-- - -line 1 column 1 - Warning: missing <!DOCTYPE> declaration -line 1 column 7 - Warning: discarding unexpected </html> -line 1 column 14 - Warning: inserting missing 'title' element -Info: Document content looks like HTML 3.2 -3 warnings, 0 errors were found!
\ No newline at end of file diff --git a/ext/tidy/tests/005.html b/ext/tidy/tests/005.html deleted file mode 100644 index 8c17451f91..0000000000 --- a/ext/tidy/tests/005.html +++ /dev/null @@ -1 +0,0 @@ -<HTML></HTML> diff --git a/ext/tidy/tests/005.phpt b/ext/tidy/tests/005.phpt deleted file mode 100644 index 267befa5b6..0000000000 --- a/ext/tidy/tests/005.phpt +++ /dev/null @@ -1,21 +0,0 @@ ---TEST-- -tidy_parse_file() ---SKIPIF-- -<?php if (!extension_loaded("tidy")) print "skip"; ?> ---POST-- ---GET-- ---INI-- ---FILE-- -<?php - $a = tidy_parse_file("ext/tidy/tests/005.html"); - echo tidy_get_output($a); - -?> ---EXPECT-- -<html> -<head> -<title></title> -</head> -<body> -</body> -</html>
\ No newline at end of file diff --git a/ext/tidy/tests/006.phpt b/ext/tidy/tests/006.phpt deleted file mode 100644 index 1609243974..0000000000 --- a/ext/tidy/tests/006.phpt +++ /dev/null @@ -1,19 +0,0 @@ ---TEST-- -Verbose tidy_get_error_buffer() ---SKIPIF-- -<?php if (!extension_loaded("tidy")) print "skip"; ?> ---POST-- ---GET-- ---INI-- ---FILE-- -<?php - $a = tidy_parse_string("<HTML><asd asdf></HTML>"); - echo tidy_get_error_buffer($a); - -?> ---EXPECT-- -line 1 column 1 - Warning: missing <!DOCTYPE> declaration -line 1 column 7 - Error: <asd> is not recognized! -line 1 column 7 - Warning: discarding unexpected <asd> -line 1 column 17 - Warning: discarding unexpected </html> -line 1 column 7 - Warning: inserting missing 'title' element
\ No newline at end of file diff --git a/ext/tidy/tests/007.phpt b/ext/tidy/tests/007.phpt deleted file mode 100644 index 4b419b56b5..0000000000 --- a/ext/tidy/tests/007.phpt +++ /dev/null @@ -1,21 +0,0 @@ ---TEST-- -Verbose tidy_setopt() / tidy_getopt() ---SKIPIF-- -<?php if (!extension_loaded("tidy")) print "skip"; ?> ---INI-- -tidy.default_config= ---FILE-- -<?php - $a = new tidy(); - echo "Current Value of 'tidy-mark': "; - var_dump($a->getopt("tidy-mark")); - echo "Current Value of 'error-file': "; - var_dump($a->getopt("error-file")); - echo "Current Value of 'tab-size': "; - var_dump($a->getopt("tab-size")); - -?> ---EXPECT-- -Current Value of 'tidy-mark': NULL -Current Value of 'error-file': string(0) "" -Current Value of 'tab-size': int(8) diff --git a/ext/tidy/tests/008.phpt b/ext/tidy/tests/008.phpt deleted file mode 100644 index 47c9474b2e..0000000000 --- a/ext/tidy/tests/008.phpt +++ /dev/null @@ -1,20 +0,0 @@ ---TEST-- -Accessing the error buffer via $obj->error_buf... ---SKIPIF-- -<?php if (!extension_loaded("tidy")) print "skip"; ?> ---POST-- ---GET-- ---INI-- ---FILE-- -<?php - - $a = tidy_parse_string("<HTML><asd asdf></HTML>"); - echo $a->error_buf; - -?> ---EXPECT-- -line 1 column 1 - Warning: missing <!DOCTYPE> declaration -line 1 column 7 - Error: <asd> is not recognized! -line 1 column 7 - Warning: discarding unexpected <asd> -line 1 column 17 - Warning: discarding unexpected </html> -line 1 column 7 - Warning: inserting missing 'title' element
\ No newline at end of file diff --git a/ext/tidy/tests/009.phpt b/ext/tidy/tests/009.phpt deleted file mode 100644 index b024192091..0000000000 --- a/ext/tidy/tests/009.phpt +++ /dev/null @@ -1,22 +0,0 @@ ---TEST-- -tidy_doc object overloading ---SKIPIF-- -<?php if (!extension_loaded("tidy")) print "skip"; ?> ---POST-- ---GET-- ---INI-- ---FILE-- -<?php - - $a = tidy_parse_string("<HTML></HTML>"); - echo $a; - -?> ---EXPECT-- -<html> -<head> -<title></title> -</head> -<body> -</body> -</html>
\ No newline at end of file diff --git a/ext/tidy/tests/010.phpt b/ext/tidy/tests/010.phpt deleted file mode 100644 index efeb1b59a9..0000000000 --- a/ext/tidy/tests/010.phpt +++ /dev/null @@ -1,248 +0,0 @@ ---TEST-- -Accessing root, body, html, and head nodes.. ---SKIPIF-- -<?php if (!extension_loaded("tidy")) print "skip"; ?> ---POST-- ---GET-- ---INI-- ---FILE-- -<?php - $a = tidy_parse_string("<HTML><BODY BGCOLOR=#FFFFFF ALINK=#000000></BODY></HTML>"); - var_dump($a->root()); - var_dump($a->body()); - var_dump($a->html()); - var_dump($a->head()); - -?> ---EXPECT-- -object(tidy_node)#2 (5) { - ["value"]=> - string(94) "<html> -<head> -<title></title> -</head> -<body bgcolor="#FFFFFF" alink="#000000"> -</body> -</html>" - ["name"]=> - string(0) "" - ["type"]=> - int(0) - ["attribute"]=> - NULL - ["child"]=> - array(1) { - [0]=> - &object(tidy_node)#3 (6) { - ["value"]=> - string(94) "<html> -<head> -<title></title> -</head> -<body bgcolor="#FFFFFF" alink="#000000"> -</body> -</html>" - ["name"]=> - string(4) "html" - ["type"]=> - int(5) - ["id"]=> - int(48) - ["attribute"]=> - NULL - ["child"]=> - array(2) { - [0]=> - &object(tidy_node)#4 (6) { - ["value"]=> - string(31) "<head> -<title></title> -</head> -" - ["name"]=> - string(4) "head" - ["type"]=> - int(5) - ["id"]=> - int(46) - ["attribute"]=> - NULL - ["child"]=> - array(1) { - [0]=> - &object(tidy_node)#5 (6) { - ["value"]=> - string(16) "<title></title> -" - ["name"]=> - string(5) "title" - ["type"]=> - int(5) - ["id"]=> - int(111) - ["attribute"]=> - NULL - ["child"]=> - NULL - } - } - } - [1]=> - &object(tidy_node)#6 (6) { - ["value"]=> - string(49) "<body bgcolor="#FFFFFF" alink="#000000"> -</body> -" - ["name"]=> - string(4) "body" - ["type"]=> - int(5) - ["id"]=> - int(16) - ["attribute"]=> - array(2) { - ["bgcolor"]=> - string(7) "#FFFFFF" - ["alink"]=> - string(7) "#000000" - } - ["child"]=> - NULL - } - } - } - } -} -object(tidy_node)#2 (6) { - ["value"]=> - string(49) "<body bgcolor="#FFFFFF" alink="#000000"> -</body> -" - ["name"]=> - string(4) "body" - ["type"]=> - int(5) - ["id"]=> - int(16) - ["attribute"]=> - array(2) { - ["bgcolor"]=> - string(7) "#FFFFFF" - ["alink"]=> - string(7) "#000000" - } - ["child"]=> - NULL -} -object(tidy_node)#2 (6) { - ["value"]=> - string(94) "<html> -<head> -<title></title> -</head> -<body bgcolor="#FFFFFF" alink="#000000"> -</body> -</html>" - ["name"]=> - string(4) "html" - ["type"]=> - int(5) - ["id"]=> - int(48) - ["attribute"]=> - NULL - ["child"]=> - array(2) { - [0]=> - &object(tidy_node)#3 (6) { - ["value"]=> - string(31) "<head> -<title></title> -</head> -" - ["name"]=> - string(4) "head" - ["type"]=> - int(5) - ["id"]=> - int(46) - ["attribute"]=> - NULL - ["child"]=> - array(1) { - [0]=> - &object(tidy_node)#6 (6) { - ["value"]=> - string(16) "<title></title> -" - ["name"]=> - string(5) "title" - ["type"]=> - int(5) - ["id"]=> - int(111) - ["attribute"]=> - NULL - ["child"]=> - NULL - } - } - } - [1]=> - &object(tidy_node)#4 (6) { - ["value"]=> - string(49) "<body bgcolor="#FFFFFF" alink="#000000"> -</body> -" - ["name"]=> - string(4) "body" - ["type"]=> - int(5) - ["id"]=> - int(16) - ["attribute"]=> - array(2) { - ["bgcolor"]=> - string(7) "#FFFFFF" - ["alink"]=> - string(7) "#000000" - } - ["child"]=> - NULL - } - } -} -object(tidy_node)#2 (6) { - ["value"]=> - string(31) "<head> -<title></title> -</head> -" - ["name"]=> - string(4) "head" - ["type"]=> - int(5) - ["id"]=> - int(46) - ["attribute"]=> - NULL - ["child"]=> - array(1) { - [0]=> - &object(tidy_node)#4 (6) { - ["value"]=> - string(16) "<title></title> -" - ["name"]=> - string(5) "title" - ["type"]=> - int(5) - ["id"]=> - int(111) - ["attribute"]=> - NULL - ["child"]=> - NULL - } - } -} diff --git a/ext/tidy/tests/011.phpt b/ext/tidy/tests/011.phpt deleted file mode 100644 index 3596d02779..0000000000 --- a/ext/tidy/tests/011.phpt +++ /dev/null @@ -1,25 +0,0 @@ ---TEST-- -Accessing attributes of a node ---SKIPIF-- -<?php if (!extension_loaded("tidy")) print "skip"; ?> ---POST-- ---GET-- ---INI-- ---FILE-- -<?php - $a = tidy_parse_string("<HTML><BODY BGCOLOR=#FFFFFF ALINK=#000000></BODY></HTML>"); - $body = $a->body(); - var_dump($body->attribute); - foreach($body->attribute as $key=>$val) { - echo "Attrib '$key': $val\n"; - } -?> ---EXPECT-- -array(2) { - ["bgcolor"]=> - string(7) "#FFFFFF" - ["alink"]=> - string(7) "#000000" -} -Attrib 'bgcolor': #FFFFFF -Attrib 'alink': #000000
\ No newline at end of file diff --git a/ext/tidy/tests/012.phpt b/ext/tidy/tests/012.phpt deleted file mode 100644 index f500019bf9..0000000000 --- a/ext/tidy/tests/012.phpt +++ /dev/null @@ -1,350 +0,0 @@ ---TEST-- -Accessing children nodes ---SKIPIF-- -<?php if (!extension_loaded("tidy")) print "skip"; ?> ---POST-- ---GET-- ---INI-- ---FILE-- -<?php - - function dump_nodes(tidy_node $node) { - - var_dump($node->has_children()); - if($node->has_children()) { - - foreach($node->child as $c) { - - var_dump($c); - - if($c->has_children()) { - - dump_nodes($c); - - } - } - - } - - } - - $a = tidy_parse_string("<HTML><BODY BGCOLOR=#FFFFFF ALINK=#000000><B>Hi</B><I>Bye<U>Test</U></I></BODY></HTML>"); - $html = $a->html(); - dump_nodes($html); - -?> ---EXPECT-- -bool(true) -object(tidy_node)#3 (6) { - ["value"]=> - string(31) "<head> -<title></title> -</head> -" - ["name"]=> - string(4) "head" - ["type"]=> - int(5) - ["id"]=> - int(46) - ["attribute"]=> - NULL - ["child"]=> - array(1) { - [0]=> - &object(tidy_node)#4 (6) { - ["value"]=> - string(16) "<title></title> -" - ["name"]=> - string(5) "title" - ["type"]=> - int(5) - ["id"]=> - int(111) - ["attribute"]=> - NULL - ["child"]=> - NULL - } - } -} -bool(true) -object(tidy_node)#4 (6) { - ["value"]=> - string(16) "<title></title> -" - ["name"]=> - string(5) "title" - ["type"]=> - int(5) - ["id"]=> - int(111) - ["attribute"]=> - NULL - ["child"]=> - NULL -} -object(tidy_node)#5 (6) { - ["value"]=> - string(80) "<body bgcolor="#FFFFFF" alink="#000000"> -<b>Hi</b><i>Bye<u>Test</u></i> -</body> -" - ["name"]=> - string(4) "body" - ["type"]=> - int(5) - ["id"]=> - int(16) - ["attribute"]=> - array(2) { - ["bgcolor"]=> - string(7) "#FFFFFF" - ["alink"]=> - string(7) "#000000" - } - ["child"]=> - array(2) { - [0]=> - &object(tidy_node)#6 (6) { - ["value"]=> - string(9) "<b>Hi</b>" - ["name"]=> - string(1) "b" - ["type"]=> - int(5) - ["id"]=> - int(8) - ["attribute"]=> - NULL - ["child"]=> - array(1) { - [0]=> - &object(tidy_node)#7 (5) { - ["value"]=> - string(2) "Hi" - ["name"]=> - string(0) "" - ["type"]=> - int(4) - ["attribute"]=> - NULL - ["child"]=> - NULL - } - } - } - [1]=> - &object(tidy_node)#8 (6) { - ["value"]=> - string(21) "<i>Bye<u>Test</u></i>" - ["name"]=> - string(1) "i" - ["type"]=> - int(5) - ["id"]=> - int(49) - ["attribute"]=> - NULL - ["child"]=> - array(2) { - [0]=> - &object(tidy_node)#9 (5) { - ["value"]=> - string(3) "Bye" - ["name"]=> - string(0) "" - ["type"]=> - int(4) - ["attribute"]=> - NULL - ["child"]=> - NULL - } - [1]=> - &object(tidy_node)#10 (6) { - ["value"]=> - string(11) "<u>Test</u>" - ["name"]=> - string(1) "u" - ["type"]=> - int(5) - ["id"]=> - int(114) - ["attribute"]=> - NULL - ["child"]=> - array(1) { - [0]=> - &object(tidy_node)#11 (5) { - ["value"]=> - string(4) "Test" - ["name"]=> - string(0) "" - ["type"]=> - int(4) - ["attribute"]=> - NULL - ["child"]=> - NULL - } - } - } - } - } - } -} -bool(true) -object(tidy_node)#6 (6) { - ["value"]=> - string(9) "<b>Hi</b>" - ["name"]=> - string(1) "b" - ["type"]=> - int(5) - ["id"]=> - int(8) - ["attribute"]=> - NULL - ["child"]=> - array(1) { - [0]=> - &object(tidy_node)#7 (5) { - ["value"]=> - string(2) "Hi" - ["name"]=> - string(0) "" - ["type"]=> - int(4) - ["attribute"]=> - NULL - ["child"]=> - NULL - } - } -} -bool(true) -object(tidy_node)#7 (5) { - ["value"]=> - string(2) "Hi" - ["name"]=> - string(0) "" - ["type"]=> - int(4) - ["attribute"]=> - NULL - ["child"]=> - NULL -} -object(tidy_node)#8 (6) { - ["value"]=> - string(21) "<i>Bye<u>Test</u></i>" - ["name"]=> - string(1) "i" - ["type"]=> - int(5) - ["id"]=> - int(49) - ["attribute"]=> - NULL - ["child"]=> - array(2) { - [0]=> - &object(tidy_node)#9 (5) { - ["value"]=> - string(3) "Bye" - ["name"]=> - string(0) "" - ["type"]=> - int(4) - ["attribute"]=> - NULL - ["child"]=> - NULL - } - [1]=> - &object(tidy_node)#10 (6) { - ["value"]=> - string(11) "<u>Test</u>" - ["name"]=> - string(1) "u" - ["type"]=> - int(5) - ["id"]=> - int(114) - ["attribute"]=> - NULL - ["child"]=> - array(1) { - [0]=> - &object(tidy_node)#11 (5) { - ["value"]=> - string(4) "Test" - ["name"]=> - string(0) "" - ["type"]=> - int(4) - ["attribute"]=> - NULL - ["child"]=> - NULL - } - } - } - } -} -bool(true) -object(tidy_node)#9 (5) { - ["value"]=> - string(3) "Bye" - ["name"]=> - string(0) "" - ["type"]=> - int(4) - ["attribute"]=> - NULL - ["child"]=> - NULL -} -object(tidy_node)#10 (6) { - ["value"]=> - string(11) "<u>Test</u>" - ["name"]=> - string(1) "u" - ["type"]=> - int(5) - ["id"]=> - int(114) - ["attribute"]=> - NULL - ["child"]=> - array(1) { - [0]=> - &object(tidy_node)#11 (5) { - ["value"]=> - string(4) "Test" - ["name"]=> - string(0) "" - ["type"]=> - int(4) - ["attribute"]=> - NULL - ["child"]=> - NULL - } - } -} -bool(true) -object(tidy_node)#11 (5) { - ["value"]=> - string(4) "Test" - ["name"]=> - string(0) "" - ["type"]=> - int(4) - ["attribute"]=> - NULL - ["child"]=> - NULL -} diff --git a/ext/tidy/tests/013.html b/ext/tidy/tests/013.html deleted file mode 100644 index 7dc0357779..0000000000 --- a/ext/tidy/tests/013.html +++ /dev/null @@ -1 +0,0 @@ -<B>testing</I> diff --git a/ext/tidy/tests/013.phpt b/ext/tidy/tests/013.phpt deleted file mode 100644 index 5db0ce1cd8..0000000000 --- a/ext/tidy/tests/013.phpt +++ /dev/null @@ -1,16 +0,0 @@ ---TEST-- -Parsing a file using constructor ---SKIPIF-- -<?php if (!extension_loaded("tidy")) print "skip"; ?> ---POST-- ---GET-- ---INI-- ---FILE-- -<?php - $tidy = new tidy("ext/tidy/tests/013.html", array("show-body-only"=>true)); - $tidy->clean_repair(); - echo $tidy; - -?> ---EXPECT-- -<b>testing</b>
\ No newline at end of file diff --git a/ext/tidy/tests/014.phpt b/ext/tidy/tests/014.phpt deleted file mode 100644 index 2b94f93b13..0000000000 --- a/ext/tidy/tests/014.phpt +++ /dev/null @@ -1,17 +0,0 @@ ---TEST-- -Passing configuration options through tidy_parse_string(). ---SKIPIF-- -<?php if (!extension_loaded("tidy")) print "skip"; ?> ---POST-- ---GET-- ---INI-- ---FILE-- -<?php - $text = "<B>testing</I>"; - $tidy = tidy_parse_string($text, array('show-body-only'=>true)); - tidy_clean_repair($tidy); - echo tidy_get_output($tidy); - -?> ---EXPECT-- -<b>testing</b>
\ No newline at end of file diff --git a/ext/tidy/tests/015.html b/ext/tidy/tests/015.html deleted file mode 100644 index 7dc0357779..0000000000 --- a/ext/tidy/tests/015.html +++ /dev/null @@ -1 +0,0 @@ -<B>testing</I> diff --git a/ext/tidy/tests/015.phpt b/ext/tidy/tests/015.phpt deleted file mode 100644 index d553ca7aeb..0000000000 --- a/ext/tidy/tests/015.phpt +++ /dev/null @@ -1,16 +0,0 @@ ---TEST-- -Passing configuration options through tidy_parse_file(). ---SKIPIF-- -<?php if (!extension_loaded("tidy")) print "skip"; ?> ---POST-- ---GET-- ---INI-- ---FILE-- -<?php - $tidy = tidy_parse_file("ext/tidy/tests/015.html", array('show-body-only'=>true)); - tidy_clean_repair($tidy); - echo tidy_get_output($tidy); - -?> ---EXPECT-- -<b>testing</b>
\ No newline at end of file diff --git a/ext/tidy/tests/016.html b/ext/tidy/tests/016.html deleted file mode 100644 index 7dc6e4aba8..0000000000 --- a/ext/tidy/tests/016.html +++ /dev/null @@ -1 +0,0 @@ -<P><B><FONT SIZE=10 COLOR=#FF0000>testing</FONT></I></P> diff --git a/ext/tidy/tests/016.phpt b/ext/tidy/tests/016.phpt deleted file mode 100644 index 1b0fa1e38f..0000000000 --- a/ext/tidy/tests/016.phpt +++ /dev/null @@ -1,27 +0,0 @@ ---TEST-- -Passing configuration file through tidy_parse_file() ---SKIPIF-- -<?php if (!extension_loaded("tidy")) print "skip"; ?> ---POST-- ---GET-- ---INI-- ---FILE-- -<?php - $tidy = tidy_parse_file("ext/tidy/tests/016.html", "ext/tidy/tests/016.tcfg"); - tidy_clean_repair($tidy); - echo tidy_get_output($tidy); -?> ---EXPECT-- -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN"> -<html> -<head> -<title></title> - -<style type="text/css"> - p.c1 {font-weight: bold} -</style> -</head> -<body> -<p class="c1">testing</p> -</body> -</html> diff --git a/ext/tidy/tests/016.tcfg b/ext/tidy/tests/016.tcfg deleted file mode 100644 index fd6e4e44f4..0000000000 --- a/ext/tidy/tests/016.tcfg +++ /dev/null @@ -1 +0,0 @@ -clean: yes diff --git a/ext/tidy/tests/017.phpt b/ext/tidy/tests/017.phpt deleted file mode 100644 index 893e902f19..0000000000 --- a/ext/tidy/tests/017.phpt +++ /dev/null @@ -1,20 +0,0 @@ ---TEST-- -The Tidy Output Buffer Filter ---SKIPIF-- -<?php if (!extension_loaded("tidy")) print "skip"; ?> ---POST-- ---GET-- ---INI-- ---FILE-- -<?php ob_start("ob_tidyhandler"); ?> -<B>testing</I> ---EXPECT-- -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN"> -<html> -<head> -<title></title> -</head> -<body> -<b>testing</b> -</body> -</html>
\ No newline at end of file diff --git a/ext/tidy/tidy.c b/ext/tidy/tidy.c deleted file mode 100644 index 3c9a462e33..0000000000 --- a/ext/tidy/tidy.c +++ /dev/null @@ -1,1566 +0,0 @@ -/* - +----------------------------------------------------------------------+ - | PHP Version 5 | - +----------------------------------------------------------------------+ - | Copyright (c) 1997-2004 The PHP Group | - +----------------------------------------------------------------------+ - | This source file is subject to version 3.0 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.php.net/license/3_0.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 | - | license@php.net so we can mail you a copy immediately. | - +----------------------------------------------------------------------+ - | Author: John Coggeshall <john@php.net> | - +----------------------------------------------------------------------+ -*/ - -/* $Id$ */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "php.h" -#include "php_tidy.h" - -#if HAVE_TIDY - -#include "php_ini.h" -#include "ext/standard/info.h" -#include "safe_mode.h" -#include "Zend/zend_API.h" -#include "Zend/zend_hash.h" -#include "Zend/zend_default_classes.h" -#include "Zend/zend_object_handlers.h" - -ZEND_DECLARE_MODULE_GLOBALS(tidy) - -PHP_INI_BEGIN() -STD_PHP_INI_ENTRY("tidy.default_config", "", PHP_INI_SYSTEM, OnUpdateString, default_config, zend_tidy_globals, tidy_globals) -PHP_INI_ENTRY("tidy.clean_output", "0", PHP_INI_PERDIR, NULL) -PHP_INI_END() - -function_entry tidy_functions[] = { - PHP_FE(tidy_getopt, NULL) - PHP_FE(tidy_parse_string, NULL) - PHP_FE(tidy_parse_file, NULL) - PHP_FE(tidy_get_output, NULL) - PHP_FE(tidy_get_error_buffer, NULL) - PHP_FE(tidy_clean_repair, NULL) - PHP_FE(tidy_repair_string, NULL) - PHP_FE(tidy_repair_file, NULL) - PHP_FE(tidy_diagnose, NULL) - PHP_FE(tidy_get_release, NULL) - PHP_FE(tidy_get_config, NULL) - PHP_FE(tidy_get_status, NULL) - PHP_FE(tidy_get_html_ver, NULL) - PHP_FE(tidy_is_xhtml, NULL) - PHP_FE(tidy_is_xml, NULL) - PHP_FE(tidy_error_count, NULL) - PHP_FE(tidy_warning_count, NULL) - PHP_FE(tidy_access_count, NULL) - PHP_FE(tidy_config_count, NULL) - PHP_FE(tidy_get_root, NULL) - PHP_FE(tidy_get_head, NULL) - PHP_FE(tidy_get_html, NULL) - PHP_FE(tidy_get_body, NULL) - PHP_FE(ob_tidyhandler, NULL) - {NULL, NULL, NULL} -}; - -function_entry tidy_funcs_doc[] = { - TIDY_METHOD_MAP(getOpt, tidy_getopt, NULL) - TIDY_METHOD_MAP(cleanRepair, tidy_clean_repair, NULL) - TIDY_DOC_ME(parseFile, NULL) - TIDY_DOC_ME(parseString, NULL) - TIDY_METHOD_MAP(repairString, tidy_repair_string, NULL) - TIDY_METHOD_MAP(repairFile, tidy_repair_file, NULL) - TIDY_METHOD_MAP(diagnose, tidy_diagnose, NULL) - TIDY_METHOD_MAP(getRelease, tidy_get_release, NULL) - TIDY_METHOD_MAP(getConfig, tidy_get_config, NULL) - TIDY_METHOD_MAP(getStatus, tidy_get_status, NULL) - TIDY_METHOD_MAP(getHtmlVer, tidy_get_html_ver, NULL) - TIDY_METHOD_MAP(isXhtml, tidy_is_xhtml, NULL) - TIDY_METHOD_MAP(isXml, tidy_is_xml, NULL) - TIDY_METHOD_MAP(root, tidy_get_root, NULL) - TIDY_METHOD_MAP(head, tidy_get_head, NULL) - TIDY_METHOD_MAP(html, tidy_get_html, NULL) - TIDY_METHOD_MAP(body, tidy_get_body, NULL) - TIDY_DOC_ME(__construct, NULL) - {NULL, NULL, NULL} -}; - -function_entry tidy_funcs_node[] = { - - TIDY_NODE_ME(__construct, NULL) - TIDY_NODE_ME(hasChildren, NULL) - TIDY_NODE_ME(hasSiblings, NULL) - TIDY_NODE_ME(isComment, NULL) - TIDY_NODE_ME(isHtml, NULL) - TIDY_NODE_ME(isText, NULL) - TIDY_NODE_ME(isJste, NULL) - TIDY_NODE_ME(isAsp, NULL) - TIDY_NODE_ME(isPhp, NULL) - {NULL, NULL, NULL} -}; - -function_entry tidy_funcs_exception[] = { - {NULL, NULL, NULL} -}; - -zend_class_entry *tidy_ce_doc, *tidy_ce_node, *tidy_ce_exception; - -static zend_object_handlers tidy_object_handlers_doc; -static zend_object_handlers tidy_object_handlers_node; -static zend_object_handlers tidy_object_handlers_exception; - -zend_module_entry tidy_module_entry = { -#if ZEND_MODULE_API_NO >= 20010901 - STANDARD_MODULE_HEADER, -#endif - "tidy", - tidy_functions, - PHP_MINIT(tidy), - PHP_MSHUTDOWN(tidy), - PHP_RINIT(tidy), - PHP_RSHUTDOWN(tidy), - PHP_MINFO(tidy), -#if ZEND_MODULE_API_NO >= 20010901 - PHP_TIDY_MODULE_VERSION, -#endif - STANDARD_MODULE_PROPERTIES -}; - -#ifdef COMPILE_DL_TIDY -ZEND_GET_MODULE(tidy) -#endif - -void *php_tidy_malloc(size_t len) -{ - return emalloc(len); -} - -void *php_tidy_realloc(void *buf, size_t len) -{ - return erealloc(buf, len); -} - -void php_tidy_free(void *buf) -{ - efree(buf); -} - -void php_tidy_panic(ctmbstr msg) -{ - zend_error(E_ERROR, "Could not allocate memory for tidy! (Reason: %s)", (char *)msg); -} - -/* Workaround for compilers that are not C99 complaint */ -static void _php_tidy_throw_exception(char *message, ...) -{ - char *msg; - va_list ap; - - TSRMLS_FETCH(); - - va_start(ap, message); - vspprintf(&msg, 0, message, ap); - zend_throw_exception(tidy_ce_exception, msg, 0 TSRMLS_CC); - va_end(ap); - efree(msg); - -} - -static int _php_tidy_set_tidy_opt(TidyDoc doc, char *optname, zval *value TSRMLS_DC) -{ - TidyOption opt; - - opt = tidyGetOptionByName(doc, optname); - - if (!opt) { - TIDY_THROW("Unknown Tidy Configuration Option '%s'", optname); - return FAILURE; - } - - if (tidyOptIsReadOnly(opt)) { - TIDY_THROW("Attempt to set read-only option '%s'", optname); - return FAILURE; - } - - switch(tidyOptGetType(opt)) { - case TidyString: - convert_to_string_ex(&value); - if (tidyOptSetValue(doc, tidyOptGetId(opt), Z_STRVAL_P(value))) { - return SUCCESS; - } - break; - - case TidyInteger: - convert_to_long_ex(&value); - if (tidyOptSetInt(doc, tidyOptGetId(opt), Z_LVAL_P(value))) { - return SUCCESS; - } - break; - - case TidyBoolean: - convert_to_long_ex(&value); - if (tidyOptSetBool(doc, tidyOptGetId(opt), Z_LVAL_P(value))) { - return SUCCESS; - } - break; - - default: - TIDY_THROW("Unable to determine type of configuration option"); - break; - } - - return FAILURE; -} - -static void php_tidy_quick_repair(INTERNAL_FUNCTION_PARAMETERS, zend_bool is_file) -{ - char *data=NULL, *arg1, *enc = NULL; - int arg1_len, enc_len = 0; - zend_bool use_include_path = 0; - TidyDoc doc; - TidyBuffer *errbuf; - zval *config; - - - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|zsb", &arg1, &arg1_len, &config, &enc, &enc_len, &use_include_path) == FAILURE) { - RETURN_FALSE; - } - - if (is_file) { - if (!(data = php_tidy_file_to_mem(arg1, use_include_path TSRMLS_CC))) { - RETURN_FALSE; - } - } else { - data = arg1; - } - - doc = tidyCreate(); - errbuf = emalloc(sizeof(TidyBuffer)); - tidyBufInit(errbuf); - - if (tidySetErrorBuffer(doc, errbuf) != 0) { - zend_error(E_ERROR, "Could not set Tidy error buffer"); - } - - tidyOptSetBool(doc, TidyForceOutput, yes); - tidyOptSetBool(doc, TidyMark, no); - - TIDY_SET_DEFAULT_CONFIG(doc); - - /* We can't use TIDY_APPLY_CONFIG_ZVAL() here, it uses RETURN_FALSE */ - - if(Z_TYPE_P(config) == IS_ARRAY) { - _php_tidy_apply_config_array(doc, HASH_OF(config) TSRMLS_CC); - } else { - convert_to_string_ex(&config); - TIDY_SAFE_MODE_CHECK(Z_STRVAL_P(config)); - if (tidyLoadConfig(doc, Z_STRVAL_P(config)) < 0) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could not load configuration file '%s'", Z_STRVAL_P(config)); - RETVAL_FALSE; - } - } - - if(enc_len) { - if (tidySetCharEncoding(doc, enc) < 0) { - TIDY_THROW("Could not set encoding '%s'", enc); - RETVAL_FALSE; - } - } - - if (data) { - if (tidyParseString(doc, data) < 0) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", errbuf->bp); - RETVAL_FALSE; - } else { - if (tidyCleanAndRepair(doc) >= 0) { - TidyBuffer output = {0}; - - tidySaveBuffer (doc, &output); - RETVAL_STRING(output.bp, 1); - tidyBufFree(&output); - } else { - RETVAL_FALSE; - } - } - } - - if (is_file) { - efree(data); - } - - tidyBufFree(errbuf); - efree(errbuf); - tidyRelease(doc); -} - -static char *php_tidy_file_to_mem(char *filename, zend_bool use_include_path TSRMLS_DC) -{ - php_stream *stream; - int len; - char *data = NULL; - - if (!(stream = php_stream_open_wrapper(filename, "rb", (use_include_path ? USE_PATH : 0) | ENFORCE_SAFE_MODE | REPORT_ERRORS, NULL))) { - return NULL; - } - if ((len = php_stream_copy_to_mem(stream, &data, PHP_STREAM_COPY_ALL, 0)) == 0) { - data = estrdup(""); - } - php_stream_close(stream); - - return data; -} - -static void tidy_object_dtor(void *object, zend_object_handle handle TSRMLS_DC) -{ - PHPTidyObj *intern = (PHPTidyObj *)object; - - zend_hash_destroy(intern->std.properties); - FREE_HASHTABLE(intern->std.properties); - - intern->ptdoc->ref_count--; - - if (intern->ptdoc->ref_count <= 0) { - tidyBufFree(intern->ptdoc->errbuf); - efree(intern->ptdoc->errbuf); - tidyRelease(intern->ptdoc->doc); - efree(intern->ptdoc); - } - - efree(object); -} - -static void tidy_object_new(zend_class_entry *class_type, zend_object_handlers *handlers, - zend_object_value *retval, tidy_obj_type objtype TSRMLS_DC) -{ - PHPTidyObj *intern; - zval *tmp; - - intern = emalloc(sizeof(PHPTidyObj)); - memset(intern, 0, sizeof(PHPTidyObj)); - intern->std.ce = class_type; - - ALLOC_HASHTABLE(intern->std.properties); - zend_hash_init(intern->std.properties, 0, NULL, ZVAL_PTR_DTOR, 0); - zend_hash_copy(intern->std.properties, &class_type->default_properties, (copy_ctor_func_t) zval_add_ref, (void *) &tmp, sizeof(zval *)); - - switch(objtype) { - case is_node: - break; - - case is_doc: - tidySetMallocCall(php_tidy_malloc); - tidySetReallocCall(php_tidy_realloc); - tidySetFreeCall(php_tidy_free); - tidySetPanicCall(php_tidy_panic); - - intern->ptdoc = emalloc(sizeof(PHPTidyDoc)); - intern->ptdoc->doc = tidyCreate(); - intern->ptdoc->ref_count = 1; - intern->ptdoc->errbuf = emalloc(sizeof(TidyBuffer)); - tidyBufInit(intern->ptdoc->errbuf); - - if (tidySetErrorBuffer(intern->ptdoc->doc, intern->ptdoc->errbuf) != 0) { - zend_error(E_ERROR, "Could not set Tidy error buffer"); - } - - tidyOptSetBool(intern->ptdoc->doc, TidyForceOutput, yes); - tidyOptSetBool(intern->ptdoc->doc, TidyMark, no); - - TIDY_SET_DEFAULT_CONFIG(intern->ptdoc->doc); - - tidy_add_default_properties(intern, is_doc TSRMLS_CC); - break; - - default: - break; - } - - retval->handle = zend_objects_store_put(intern, tidy_object_dtor, NULL TSRMLS_CC); - retval->handlers = handlers; -} - -static zend_object_value tidy_object_new_node(zend_class_entry *class_type TSRMLS_DC) -{ - zend_object_value retval; - tidy_object_new(class_type, &tidy_object_handlers_node, &retval, is_node TSRMLS_CC); - return retval; -} - -static zend_object_value tidy_object_new_doc(zend_class_entry *class_type TSRMLS_DC) -{ - zend_object_value retval; - tidy_object_new(class_type, &tidy_object_handlers_doc, &retval, is_doc TSRMLS_CC); - return retval; -} - -static zend_object_value tidy_object_new_exception(zend_class_entry *class_type TSRMLS_DC) -{ - zend_object_value retval; - tidy_object_new(class_type, &tidy_object_handlers_exception, &retval, is_exception TSRMLS_CC); - return retval; -} - -static zend_class_entry *tidy_get_ce_node(zval *object TSRMLS_DC) -{ - return tidy_ce_node; -} - -static zend_class_entry *tidy_get_ce_doc(zval *object TSRMLS_DC) -{ - return tidy_ce_doc; -} - -static zval * tidy_instanciate(zend_class_entry *pce, zval *object TSRMLS_DC) -{ - if (!object) { - ALLOC_ZVAL(object); - } - Z_TYPE_P(object) = IS_OBJECT; - object_init_ex(object, pce); - object->refcount = 1; - object->is_ref = 1; - return object; -} - -static int tidy_doc_cast_handler(zval *in, zval *out, int type, int free TSRMLS_DC) -{ - TidyBuffer output = {0}; - PHPTidyObj *obj; - - switch(type) { - case IS_LONG: - ZVAL_LONG(out, 0); - break; - - case IS_DOUBLE: - ZVAL_DOUBLE(out, 0); - break; - - case IS_BOOL: - ZVAL_BOOL(out, TRUE); - break; - - case IS_STRING: - obj = (PHPTidyObj *)zend_object_store_get_object(in TSRMLS_CC); - tidySaveBuffer (obj->ptdoc->doc, &output); - ZVAL_STRINGL(out, output.bp, output.size, TRUE); - tidyBufFree(&output); - break; - - default: - return FAILURE; - } - - return SUCCESS; -} - -static int tidy_node_cast_handler(zval *in, zval *out, int type, int free TSRMLS_DC) -{ - TidyBuffer buf = {0}; - PHPTidyObj *obj; - - switch(type) { - case IS_LONG: - ZVAL_LONG(out, 0); - break; - - case IS_DOUBLE: - ZVAL_DOUBLE(out, 0); - break; - - case IS_BOOL: - ZVAL_BOOL(out, TRUE); - break; - - case IS_STRING: - obj = (PHPTidyObj *)zend_object_store_get_object(in TSRMLS_CC); - tidyNodeGetText(obj->ptdoc->doc, obj->node, &buf); - ZVAL_STRINGL(out, buf.bp, buf.size, TRUE); - tidyBufFree(&buf); - break; - - default: - return FAILURE; - } - - return SUCCESS; -} - -static void tidy_doc_update_properties(PHPTidyObj *obj TSRMLS_DC) -{ - - TidyBuffer output = {0}; - zval *temp; - - tidySaveBuffer (obj->ptdoc->doc, &output); - - if (output.size) { - MAKE_STD_ZVAL(temp); - ZVAL_STRINGL(temp, output.bp, output.size, TRUE); - zend_hash_update(obj->std.properties, "value", sizeof("value"), (void *)&temp, sizeof(zval *), NULL); - } - - tidyBufFree(&output); - - if (obj->ptdoc->errbuf->size) { - MAKE_STD_ZVAL(temp); - ZVAL_STRINGL(temp, obj->ptdoc->errbuf->bp, obj->ptdoc->errbuf->size, TRUE); - zend_hash_update(obj->std.properties, "error_buf", sizeof("error_buf"), (void *)&temp, sizeof(zval *), NULL); - } -} - -static void tidy_add_default_properties(PHPTidyObj *obj, tidy_obj_type type TSRMLS_DC) -{ - - TidyBuffer buf; - TidyAttr tempattr; - TidyNode tempnode; - zval *attribute, *children, *temp; - PHPTidyObj *newobj; - - switch(type) { - - case is_node: - - memset(&buf, 0, sizeof(buf)); - tidyNodeGetText(obj->ptdoc->doc, obj->node, &buf); - buf.bp[buf.size-1] = '\0'; - ADD_PROPERTY_STRING(obj->std.properties, value, buf.bp); - tidyBufFree(&buf); - - ADD_PROPERTY_STRING(obj->std.properties, name, tidyNodeGetName(obj->node)); - ADD_PROPERTY_LONG(obj->std.properties, type, tidyNodeGetType(obj->node)); - - switch(tidyNodeGetType(obj->node)) { - case TidyNode_Root: - case TidyNode_DocType: - case TidyNode_Text: - case TidyNode_Comment: - break; - - default: - ADD_PROPERTY_LONG(obj->std.properties, id, tidyNodeGetId(obj->node)); - } - - tempattr = tidyAttrFirst(obj->node); - MAKE_STD_ZVAL(attribute); - - if (tempattr) { - char *name, *val; - array_init(attribute); - - do { - name = (char *)tidyAttrName(tempattr); - val = (char *)tidyAttrValue(tempattr); - if (name && val) { - add_assoc_string(attribute, name, val, TRUE); - } - } while((tempattr = tidyAttrNext(tempattr))); - } else { - ZVAL_NULL(attribute); - } - zend_hash_update(obj->std.properties, "attribute", sizeof("attribute"), (void *)&attribute, sizeof(zval *), NULL); - - tempnode = tidyGetChild(obj->node); - - MAKE_STD_ZVAL(children); - if (tempnode) { - array_init(children); - do { - MAKE_STD_ZVAL(temp); - tidy_instanciate(tidy_ce_node, temp TSRMLS_CC); - newobj = (PHPTidyObj *) zend_object_store_get_object(temp TSRMLS_CC); - newobj->node = tempnode; - newobj->type = is_node; - newobj->ptdoc = obj->ptdoc; - newobj->ptdoc->ref_count++; - - tidy_add_default_properties(newobj, is_node TSRMLS_CC); - add_next_index_zval(children, temp); - - } while((tempnode = tidyGetNext(tempnode))); - - } else { - ZVAL_NULL(children); - } - - zend_hash_update(obj->std.properties, "child", sizeof("child"), (void *)&children, sizeof(zval *), NULL); - - break; - - case is_doc: - ADD_PROPERTY_NULL(obj->std.properties, error_buf); - ADD_PROPERTY_NULL(obj->std.properties, value); - break; - - case is_exception: - default: - break; - } -} - -static void *php_tidy_get_opt_val(PHPTidyDoc *ptdoc, TidyOption opt, TidyOptionType *type TSRMLS_DC) -{ - *type = tidyOptGetType(opt); - - switch (*type) { - case TidyString: { - char *val = (char *) tidyOptGetValue(ptdoc->doc, tidyOptGetId(opt)); - if (val) { - return (void *) estrdup(val); - } else { - return (void *) estrdup(""); - } - } - break; - - case TidyInteger: - return (void *) tidyOptGetInt(ptdoc->doc, tidyOptGetId(opt)); - break; - - case TidyBoolean: - return (void *) tidyOptGetBool(ptdoc->doc, tidyOptGetId(opt)); - break; - } - - /* should not happen */ - return NULL; -} - -static void php_tidy_create_node(INTERNAL_FUNCTION_PARAMETERS, tidy_base_nodetypes node) -{ - PHPTidyObj *newobj; - TIDY_FETCH_OBJECT; - - tidy_instanciate(tidy_ce_node, return_value TSRMLS_CC); - newobj = (PHPTidyObj *) zend_object_store_get_object(return_value TSRMLS_CC); - newobj->type = is_node; - newobj->ptdoc = obj->ptdoc; - newobj->ptdoc->ref_count++; - - switch(node) { - case is_root_node: - newobj->node = tidyGetRoot(newobj->ptdoc->doc); - break; - - case is_html_node: - newobj->node = tidyGetHtml(newobj->ptdoc->doc); - break; - - case is_head_node: - newobj->node = tidyGetHead(newobj->ptdoc->doc); - break; - - case is_body_node: - newobj->node = tidyGetBody(newobj->ptdoc->doc); - break; - } - - tidy_add_default_properties(newobj, is_node TSRMLS_CC); -} - -static int _php_tidy_apply_config_array(TidyDoc doc, HashTable *ht_options TSRMLS_DC) -{ - char *opt_name = NULL; - zval **opt_val; - ulong opt_indx; - - for (zend_hash_internal_pointer_reset(ht_options); - zend_hash_get_current_data(ht_options, (void **)&opt_val) == SUCCESS; - zend_hash_move_forward(ht_options)) { - - if(zend_hash_get_current_key(ht_options, &opt_name, &opt_indx, FALSE) == FAILURE) { - TIDY_THROW("Could not retrieve key from option array"); - return FAILURE; - } - if(opt_name) { - _php_tidy_set_tidy_opt(doc, opt_name, *opt_val TSRMLS_CC); - } - - } - - return SUCCESS; -} - -static int php_tidy_parse_string(PHPTidyObj *obj, char *string, char *enc TSRMLS_DC) -{ - if(enc) { - if (tidySetCharEncoding(obj->ptdoc->doc, enc) < 0) { - TIDY_THROW("Could not set encoding '%s'", enc); - return FAILURE; - } - } - - if (tidyParseString(obj->ptdoc->doc, string) < 0) { - TIDY_THROW("%s", obj->ptdoc->errbuf->bp); - return FAILURE; - - } else { - tidy_doc_update_properties(obj TSRMLS_CC); - - return SUCCESS; - } - - tidy_doc_update_properties(obj TSRMLS_CC); - -} - -static void tidy_globals_ctor(void *global TSRMLS_DC) -{ -} - -static void tidy_globals_dtor(void *global TSRMLS_DC) -{ -} - -PHP_MINIT_FUNCTION(tidy) -{ - ZEND_INIT_MODULE_GLOBALS(tidy, tidy_globals_ctor, tidy_globals_dtor); - - REGISTER_INI_ENTRIES(); - REGISTER_TIDY_CLASS(tidy, doc, NULL); - REGISTER_TIDY_CLASS(tidy_node, node, NULL); - REGISTER_TIDY_CLASS(tidy_exception, exception, zend_exception_get_default()); - - tidy_object_handlers_doc.get_class_entry = tidy_get_ce_doc; - tidy_object_handlers_node.get_class_entry = tidy_get_ce_node; - - tidy_object_handlers_doc.cast_object = tidy_doc_cast_handler; - tidy_object_handlers_node.cast_object = tidy_node_cast_handler; - - _php_tidy_register_tags(INIT_FUNC_ARGS_PASSTHRU); - _php_tidy_register_nodetypes(INIT_FUNC_ARGS_PASSTHRU); - - return SUCCESS; -} - - -PHP_MSHUTDOWN_FUNCTION(tidy) -{ - return SUCCESS; -} - -PHP_RINIT_FUNCTION(tidy) -{ - if (INI_BOOL("tidy.clean_output") == TRUE) { - if (php_start_ob_buffer_named("ob_tidyhandler", 0, 1 TSRMLS_CC) == FAILURE) { - zend_error(E_NOTICE, "Unable to use Tidy for output buffering."); - } - } - - return SUCCESS; -} - -PHP_RSHUTDOWN_FUNCTION(tidy) -{ - return SUCCESS; -} - -PHP_MINFO_FUNCTION(tidy) -{ - php_info_print_table_start(); - php_info_print_table_header(2, "Tidy support", "enabled"); - php_info_print_table_row(2, "libTidy Release", (char *)tidyReleaseDate()); - php_info_print_table_row(2, "Extension Version", PHP_TIDY_MODULE_VERSION " ($Id$)"); - php_info_print_table_end(); - - DISPLAY_INI_ENTRIES(); -} - -PHP_FUNCTION(ob_tidyhandler) -{ - char *input; - int input_len; - long mode; - TidyBuffer errbuf = {0}; - TidyDoc doc; - - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|l", &input, &input_len, &mode) == FAILURE) { - WRONG_PARAM_COUNT; - } - - doc = tidyCreate(); - tidyBufInit(&errbuf); - - tidyOptSetBool(doc, TidyForceOutput, yes); - tidyOptSetBool(doc, TidyMark, no); - - if (tidySetErrorBuffer(doc, &errbuf) != 0) { - tidyRelease(doc); - tidyBufFree(&errbuf); - - zend_error(E_ERROR, "Could not set Tidy error buffer"); - } - - TIDY_SET_DEFAULT_CONFIG(doc); - - if (input_len > 1) { - if (tidyParseString(doc, input) < 0 || tidyCleanAndRepair(doc) < 0) { - TIDY_THROW(errbuf.bp); - RETVAL_NULL(); - } else { - TidyBuffer output = {0}; - tidyBufInit(&output); - - tidySaveBuffer(doc, &output); - RETVAL_STRING(output.bp, 1); - - tidyBufFree(&output); - } - } else { - RETVAL_NULL(); - } - - tidyRelease(doc); - tidyBufFree(&errbuf); -} - -/* {{{ proto bool tidy_parse_string(string input [, mixed config_options [, string encoding]]) - Parse a document stored in a string */ -PHP_FUNCTION(tidy_parse_string) -{ - char *input, *enc = NULL; - int input_len, enc_len = 0; - zval *options = NULL; - - PHPTidyObj *obj; - - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|zs", &input, &input_len, &options, &enc, &enc_len) == FAILURE) { - RETURN_FALSE; - } - - tidy_instanciate(tidy_ce_doc, return_value TSRMLS_CC); - obj = (PHPTidyObj *) zend_object_store_get_object(return_value TSRMLS_CC); - - TIDY_APPLY_CONFIG_ZVAL(obj->ptdoc->doc, options); - - if(php_tidy_parse_string(obj, input, enc TSRMLS_CC) == FAILURE) { - zval_dtor(return_value); - INIT_ZVAL(*return_value); - RETURN_FALSE; - } - -} -/* }}} */ - -/* {{{ proto string tidy_get_error_buffer([boolean detailed]) - Return warnings and errors which occured parsing the specified document*/ -PHP_FUNCTION(tidy_get_error_buffer) -{ - TIDY_FETCH_OBJECT; - - RETURN_STRING(obj->ptdoc->errbuf->bp, 1); -} -/* }}} */ - -/* {{{ proto string tidy_get_output() - Return a string representing the parsed tidy markup */ -PHP_FUNCTION(tidy_get_output) -{ - TidyBuffer output = {0}; - TIDY_FETCH_OBJECT; - - tidySaveBuffer(obj->ptdoc->doc, &output); - - RETVAL_STRING(output.bp, 1); - - tidyBufFree(&output); -} -/* }}} */ - -/* {{{ proto boolean tidy_parse_file(string file [, mixed config_options [, string encoding [, bool use_include_path]]]) - Parse markup in file or URI */ -PHP_FUNCTION(tidy_parse_file) -{ - char *inputfile, *enc = NULL; - int input_len, enc_len = 0; - zend_bool use_include_path = 0; - char *contents; - zval *options = NULL; - - PHPTidyObj *obj; - - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|zsb", &inputfile, &input_len, - &options, &enc, &enc_len, &use_include_path) == FAILURE) { - RETURN_FALSE; - } - - tidy_instanciate(tidy_ce_doc, return_value TSRMLS_CC); - obj = (PHPTidyObj *) zend_object_store_get_object(return_value TSRMLS_CC); - - if (!(contents = php_tidy_file_to_mem(inputfile, use_include_path TSRMLS_CC))) { - TIDY_THROW("Cannot Load '%s' into memory %s", inputfile, (use_include_path) ? "(Using include path)" : ""); - return; - } - - TIDY_APPLY_CONFIG_ZVAL(obj->ptdoc->doc, options); - - if(php_tidy_parse_string(obj, contents, enc TSRMLS_CC) == FAILURE) { - zval_dtor(return_value); - INIT_ZVAL(*return_value); - RETVAL_FALSE; - } - efree(contents); -} -/* }}} */ - -/* {{{ proto boolean tidy_clean_repair() - Execute configured cleanup and repair operations on parsed markup */ -PHP_FUNCTION(tidy_clean_repair) -{ - TIDY_FETCH_OBJECT; - - if (tidyCleanAndRepair(obj->ptdoc->doc) >= 0) { - tidy_doc_update_properties(obj TSRMLS_CC); - RETURN_TRUE; - } - - RETURN_FALSE; -} -/* }}} */ - -/* {{{ proto boolean tidy_repair_string(string data [, mixed config_file [, string encoding]]) - Repair a string using an optionally provided configuration file */ -PHP_FUNCTION(tidy_repair_string) -{ - php_tidy_quick_repair(INTERNAL_FUNCTION_PARAM_PASSTHRU, FALSE); -} -/* }}} */ - -/* {{{ proto boolean tidy_repair_file(string filename [, mixed config_file [, string encoding [, bool use_include_path]]]) - Repair a file using an optionally provided configuration file */ -PHP_FUNCTION(tidy_repair_file) -{ - php_tidy_quick_repair(INTERNAL_FUNCTION_PARAM_PASSTHRU, TRUE); -} -/* }}} */ - -/* {{{ proto boolean tidy_diagnose() - Run configured diagnostics on parsed and repaired markup. */ -PHP_FUNCTION(tidy_diagnose) -{ - TIDY_FETCH_OBJECT; - - if (tidyRunDiagnostics(obj->ptdoc->doc) >= 0) { - tidy_doc_update_properties(obj TSRMLS_CC); - RETURN_TRUE; - } - - RETURN_FALSE; -} -/* }}} */ - -/* {{{ proto string tidy_get_release() - Get release date (version) for Tidy library */ -PHP_FUNCTION(tidy_get_release) -{ - if (ZEND_NUM_ARGS()) { - WRONG_PARAM_COUNT; - } - - RETURN_STRING((char *)tidyReleaseDate(), 1); -} -/* }}} */ - -/* {{{ proto array tidy_get_config() - Get current Tidy configuarion */ -PHP_FUNCTION(tidy_get_config) -{ - TidyIterator itOpt; - char *opt_name; - void *opt_value; - TidyOptionType optt; - - TIDY_FETCH_OBJECT; - - itOpt = tidyGetOptionList(obj->ptdoc->doc); - - array_init(return_value); - - while (itOpt) { - TidyOption opt = tidyGetNextOption(obj->ptdoc->doc, &itOpt); - - opt_name = (char *)tidyOptGetName(opt); - opt_value = php_tidy_get_opt_val(obj->ptdoc, opt, &optt TSRMLS_CC); - switch (optt) { - case TidyString: - add_assoc_string(return_value, opt_name, (char*)opt_value, 0); - break; - - case TidyInteger: - add_assoc_long(return_value, opt_name, (long)opt_value); - break; - - case TidyBoolean: - add_assoc_bool(return_value, opt_name, (long)opt_value); - break; - } - } - - return; -} -/* }}} */ - -/* {{{ proto int tidy_get_status() - Get status of specfied document. */ -PHP_FUNCTION(tidy_get_status) -{ - TIDY_FETCH_OBJECT; - - RETURN_LONG(tidyStatus(obj->ptdoc->doc)); -} -/* }}} */ - -/* {{{ proto int tidy_get_html_ver() - Get the Detected HTML version for the specified document. */ -PHP_FUNCTION(tidy_get_html_ver) -{ - TIDY_FETCH_OBJECT; - - RETURN_LONG(tidyDetectedHtmlVersion(obj->ptdoc->doc)); -} -/* }}} */ - -/* {{{ proto boolean tidy_is_xhtml() - Indicates if the document is a XHTML document. */ -PHP_FUNCTION(tidy_is_xhtml) -{ - TIDY_FETCH_OBJECT; - - RETURN_BOOL(tidyDetectedXhtml(obj->ptdoc->doc)); -} -/* }}} */ - -/* {{{ proto boolean tidy_is_xhtml() - Indicates if the document is a generic (non HTML/XHTML) XML document. */ -PHP_FUNCTION(tidy_is_xml) -{ - TIDY_FETCH_OBJECT; - - RETURN_BOOL(tidyDetectedGenericXml(obj->ptdoc->doc)); -} -/* }}} */ - -/* {{{ proto int tidy_error_count() - Returns the Number of Tidy errors encountered for specified document. */ -PHP_FUNCTION(tidy_error_count) -{ - TIDY_FETCH_OBJECT; - - RETURN_LONG(tidyErrorCount(obj->ptdoc->doc)); -} -/* }}} */ - -/* {{{ proto int tidy_warning_count() - Returns the Number of Tidy warnings encountered for specified document. */ -PHP_FUNCTION(tidy_warning_count) -{ - TIDY_FETCH_OBJECT; - - RETURN_LONG(tidyWarningCount(obj->ptdoc->doc)); -} -/* }}} */ - -/* {{{ proto int tidy_access_count() - Returns the Number of Tidy accessibility warnings encountered for specified document. */ -PHP_FUNCTION(tidy_access_count) -{ - TIDY_FETCH_OBJECT; - - RETURN_LONG(tidyAccessWarningCount(obj->ptdoc->doc)); -} -/* }}} */ - -/* {{{ proto int tidy_config_count() - Returns the Number of Tidy configuration errors encountered for specified document. */ -PHP_FUNCTION(tidy_config_count) -{ - TIDY_FETCH_OBJECT; - - RETURN_LONG(tidyConfigErrorCount(obj->ptdoc->doc)); -} -/* }}} */ - -/* {{{ proto mixed tidy_getopt(string option) - Returns the value of the specified configuration option for the tidy document. */ -PHP_FUNCTION(tidy_getopt) -{ - zval *object = getThis(); - PHPTidyObj *obj; - char *optname; - void *optval; - int optname_len; - TidyOption opt; - TidyOptionType optt; - - if (object) { - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &optname, &optname_len) == FAILURE) { - RETURN_FALSE; - } - } else { - if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, NULL, "Os", &object, tidy_ce_doc, &optname, &optname_len) == FAILURE) { - RETURN_FALSE; - } - } - - obj = (PHPTidyObj *) zend_object_store_get_object(object TSRMLS_CC); - - opt = tidyGetOptionByName(obj->ptdoc->doc, optname); - if (!opt) { - TIDY_THROW("Unknown Tidy Configuration Option '%s'", optname); - RETURN_FALSE; - } - - optval = php_tidy_get_opt_val(obj->ptdoc, opt, &optt TSRMLS_CC); - switch (optt) { - case TidyString: - RETURN_STRING((char *)optval, 0); - break; - - case TidyInteger: - RETURN_LONG((long)optval); - break; - - case TidyBoolean: - if (optval) { - RETURN_TRUE; - } else { - RETURN_NULL(); - } - break; - - default: - TIDY_THROW("Unable to determine type of configuration constant"); - break; - } - - RETURN_FALSE; -} -/* }}} */ - -TIDY_DOC_METHOD(__construct) -{ - char *inputfile, *enc = NULL; - int input_len, enc_len = 0; - zend_bool use_include_path = 0; - char *contents; - zval *options = NULL; - - zval *object = getThis(); - PHPTidyObj *obj; - - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|szsb", &inputfile, &input_len, - &options, &enc, &enc_len, &use_include_path) == FAILURE) { - RETURN_FALSE; - } - - obj = (PHPTidyObj *)zend_object_store_get_object(object TSRMLS_CC); - - if (!(contents = php_tidy_file_to_mem(inputfile, use_include_path TSRMLS_CC))) { - TIDY_THROW("Cannot Load '%s' into memory %s", inputfile, (use_include_path) ? "(Using include path)" : ""); - return; - } - - TIDY_APPLY_CONFIG_ZVAL(obj->ptdoc->doc, options); - - php_tidy_parse_string(obj, contents, enc TSRMLS_CC); - - efree(contents); - -} - -TIDY_DOC_METHOD(parseFile) -{ - char *inputfile, *enc = NULL; - int input_len, enc_len = 0; - zend_bool use_include_path = 0; - char *contents; - zval *options = NULL; - zval *object = getThis(); - PHPTidyObj *obj; - - obj = (PHPTidyObj *)zend_object_store_get_object(object TSRMLS_CC); - - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|zsb", &inputfile, &input_len, - &options, &enc, &enc_len, &use_include_path) == FAILURE) { - RETURN_FALSE; - } - - if (!(contents = php_tidy_file_to_mem(inputfile, use_include_path TSRMLS_CC))) { - TIDY_THROW("Cannot Load '%s' into memory %s", inputfile, (use_include_path) ? "(Using include path)" : ""); - RETURN_FALSE; - } - - TIDY_APPLY_CONFIG_ZVAL(obj->ptdoc->doc, options); - - if(php_tidy_parse_string(obj, contents, enc TSRMLS_CC) == FAILURE) { - RETVAL_FALSE; - } else { - RETVAL_TRUE; - } - - efree(contents); -} - -TIDY_DOC_METHOD(parseString) -{ - char *input, *enc = NULL; - int input_len, enc_len = 0; - zval *options = NULL; - - zval *object = getThis(); - PHPTidyObj *obj; - - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|zs", &input, &input_len, &options, &enc, &enc_len) == FAILURE) { - RETURN_FALSE; - } - - obj = (PHPTidyObj *)zend_object_store_get_object(object TSRMLS_CC); - - TIDY_APPLY_CONFIG_ZVAL(obj->ptdoc->doc, options); - - if(php_tidy_parse_string(obj, input, enc TSRMLS_CC) == SUCCESS) { - RETURN_TRUE; - } - - RETURN_FALSE; -} - - -/* {{{ proto TidyNode tidy_get_root() - Returns a TidyNode Object representing the root of the tidy parse tree */ -PHP_FUNCTION(tidy_get_root) -{ - php_tidy_create_node(INTERNAL_FUNCTION_PARAM_PASSTHRU, is_root_node); -} -/* }}} */ - -/* {{{ proto TidyNode tidy_get_html() - Returns a TidyNode Object starting from the <HTML> tag of the tidy parse tree */ -PHP_FUNCTION(tidy_get_html) -{ - php_tidy_create_node(INTERNAL_FUNCTION_PARAM_PASSTHRU, is_html_node); -} -/* }}} */ - -/* {{{ proto TidyNode tidy_get_head() - Returns a TidyNode Object starting from the <HEAD> tag of the tidy parse tree */ -PHP_FUNCTION(tidy_get_head) -{ - php_tidy_create_node(INTERNAL_FUNCTION_PARAM_PASSTHRU, is_head_node); -} -/* }}} */ - -/* {{{ proto TidyNode tidy_get_body(resource tidy) - Returns a TidyNode Object starting from the <BODY> tag of the tidy parse tree */ -PHP_FUNCTION(tidy_get_body) -{ - php_tidy_create_node(INTERNAL_FUNCTION_PARAM_PASSTHRU, is_body_node); -} -/* }}} */ - -/* {{{ proto void tidy_node::tidy_node() - Constructor. */ -TIDY_NODE_METHOD(__construct) -{ -} -/* }}} */ - -/* {{{ proto boolean tidy_node::has_children() - Returns true if this node has children */ -TIDY_NODE_METHOD(hasChildren) -{ - TIDY_FETCH_ONLY_OBJECT; - - if (tidyGetChild(obj->node)) { - RETURN_TRUE; - } else { - RETURN_FALSE; - } -} -/* }}} */ - -/* {{{ proto boolean tidy_node::has_siblings() - Returns true if this node has siblings */ -TIDY_NODE_METHOD(hasSiblings) -{ - TIDY_FETCH_ONLY_OBJECT; - - if (tidyGetNext(obj->node)) { - RETURN_TRUE; - } else { - RETURN_FALSE; - } -} -/* }}} */ - -/* {{{ proto boolean tidy_node::is_comment() - Returns true if this node represents a comment */ -TIDY_NODE_METHOD(isComment) -{ - TIDY_FETCH_ONLY_OBJECT; - - if (tidyNodeGetType(obj->node) == TidyNode_Comment) { - RETURN_TRUE; - } else { - RETURN_FALSE; - } -} -/* }}} */ - -/* {{{ proto boolean tidy_node::is_html() - Returns true if this node is part of a HTML document */ -TIDY_NODE_METHOD(isHtml) -{ - TIDY_FETCH_ONLY_OBJECT; - - if (tidyNodeGetType(obj->node) & (TidyNode_Start | TidyNode_End | TidyNode_StartEnd)) { - RETURN_TRUE; - } - - RETURN_FALSE; -} -/* }}} */ - -/* {{{ proto boolean tidy_node::is_xhtml() - Returns true if this node is part of a XHTML document */ -TIDY_NODE_METHOD(isXhtml) -{ - TIDY_FETCH_ONLY_OBJECT; - - if (tidyDetectedXhtml(obj->ptdoc->doc)) { - RETURN_TRUE; - } else { - RETURN_FALSE; - } -} -/* }}} */ - -/* {{{ proto boolean tidy_node::is_xml() - Returns true if this node is part of a XML document */ -TIDY_NODE_METHOD(isXml) -{ - TIDY_FETCH_ONLY_OBJECT; - - if (tidyDetectedGenericXml(obj->ptdoc->doc)) { - RETURN_TRUE; - } else { - RETURN_FALSE; - } -} -/* }}} */ - -/* {{{ proto boolean tidy_node::is_text() - Returns true if this node represents text (no markup) */ -TIDY_NODE_METHOD(isText) -{ - TIDY_FETCH_ONLY_OBJECT; - - if (tidyNodeGetType(obj->node) == TidyNode_Text) { - RETURN_TRUE; - } else { - RETURN_FALSE; - } -} -/* }}} */ - -/* {{{ proto boolean tidy_node::is_jste() - Returns true if this node is JSTE */ -TIDY_NODE_METHOD(isJste) -{ - TIDY_FETCH_ONLY_OBJECT; - - if (tidyNodeGetType(obj->node) == TidyNode_Jste) { - RETURN_TRUE; - } else { - RETURN_FALSE; - } -} -/* }}} */ - -/* {{{ proto boolean tidy_node::is_asp() - Returns true if this node is ASP */ -TIDY_NODE_METHOD(isAsp) -{ - TIDY_FETCH_ONLY_OBJECT; - - if (tidyNodeGetType(obj->node) == TidyNode_Asp) { - RETURN_TRUE; - } else { - RETURN_FALSE; - } -} -/* }}} */ - -/* {{{ proto boolean tidy_node::is_php() - Returns true if this node is PHP */ -TIDY_NODE_METHOD(isPhp) -{ - TIDY_FETCH_ONLY_OBJECT; - - if (tidyNodeGetType(obj->node) == TidyNode_Php) { - RETURN_TRUE; - } else { - RETURN_FALSE; - } -} -/* }}} */ - -void _php_tidy_register_nodetypes(INIT_FUNC_ARGS) -{ - TIDY_NODE_CONST(ROOT, Root); - TIDY_NODE_CONST(DOCTYPE, DocType); - TIDY_NODE_CONST(COMMENT, Comment); - TIDY_NODE_CONST(PROCINS, ProcIns); - TIDY_NODE_CONST(TEXT, Text); - TIDY_NODE_CONST(START, Start); - TIDY_NODE_CONST(END, End); - TIDY_NODE_CONST(STARTEND, StartEnd); - TIDY_NODE_CONST(CDATA, CDATA); - TIDY_NODE_CONST(SECTION, Section); - TIDY_NODE_CONST(ASP, Asp); - TIDY_NODE_CONST(JSTE, Jste); - TIDY_NODE_CONST(PHP, Php); - TIDY_NODE_CONST(XMLDECL, XmlDecl); -} - -void _php_tidy_register_tags(INIT_FUNC_ARGS) -{ - TIDY_TAG_CONST(UNKNOWN); - TIDY_TAG_CONST(A); - TIDY_TAG_CONST(ABBR); - TIDY_TAG_CONST(ACRONYM); - TIDY_TAG_CONST(ADDRESS); - TIDY_TAG_CONST(ALIGN); - TIDY_TAG_CONST(APPLET); - TIDY_TAG_CONST(AREA); - TIDY_TAG_CONST(B); - TIDY_TAG_CONST(BASE); - TIDY_TAG_CONST(BASEFONT); - TIDY_TAG_CONST(BDO); - TIDY_TAG_CONST(BGSOUND); - TIDY_TAG_CONST(BIG); - TIDY_TAG_CONST(BLINK); - TIDY_TAG_CONST(BLOCKQUOTE); - TIDY_TAG_CONST(BODY); - TIDY_TAG_CONST(BR); - TIDY_TAG_CONST(BUTTON); - TIDY_TAG_CONST(CAPTION); - TIDY_TAG_CONST(CENTER); - TIDY_TAG_CONST(CITE); - TIDY_TAG_CONST(CODE); - TIDY_TAG_CONST(COL); - TIDY_TAG_CONST(COLGROUP); - TIDY_TAG_CONST(COMMENT); - TIDY_TAG_CONST(DD); - TIDY_TAG_CONST(DEL); - TIDY_TAG_CONST(DFN); - TIDY_TAG_CONST(DIR); - TIDY_TAG_CONST(DIV); - TIDY_TAG_CONST(DL); - TIDY_TAG_CONST(DT); - TIDY_TAG_CONST(EM); - TIDY_TAG_CONST(EMBED); - TIDY_TAG_CONST(FIELDSET); - TIDY_TAG_CONST(FONT); - TIDY_TAG_CONST(FORM); - TIDY_TAG_CONST(FRAME); - TIDY_TAG_CONST(FRAMESET); - TIDY_TAG_CONST(H1); - TIDY_TAG_CONST(H2); - TIDY_TAG_CONST(H3); - TIDY_TAG_CONST(H4); - TIDY_TAG_CONST(H5); - TIDY_TAG_CONST(H6); - TIDY_TAG_CONST(HEAD); - TIDY_TAG_CONST(HR); - TIDY_TAG_CONST(HTML); - TIDY_TAG_CONST(I); - TIDY_TAG_CONST(IFRAME); - TIDY_TAG_CONST(ILAYER); - TIDY_TAG_CONST(IMG); - TIDY_TAG_CONST(INPUT); - TIDY_TAG_CONST(INS); - TIDY_TAG_CONST(ISINDEX); - TIDY_TAG_CONST(KBD); - TIDY_TAG_CONST(KEYGEN); - TIDY_TAG_CONST(LABEL); - TIDY_TAG_CONST(LAYER); - TIDY_TAG_CONST(LEGEND); - TIDY_TAG_CONST(LI); - TIDY_TAG_CONST(LINK); - TIDY_TAG_CONST(LISTING); - TIDY_TAG_CONST(MAP); - TIDY_TAG_CONST(MARQUEE); - TIDY_TAG_CONST(MENU); - TIDY_TAG_CONST(META); - TIDY_TAG_CONST(MULTICOL); - TIDY_TAG_CONST(NOBR); - TIDY_TAG_CONST(NOEMBED); - TIDY_TAG_CONST(NOFRAMES); - TIDY_TAG_CONST(NOLAYER); - TIDY_TAG_CONST(NOSAVE); - TIDY_TAG_CONST(NOSCRIPT); - TIDY_TAG_CONST(OBJECT); - TIDY_TAG_CONST(OL); - TIDY_TAG_CONST(OPTGROUP); - TIDY_TAG_CONST(OPTION); - TIDY_TAG_CONST(P); - TIDY_TAG_CONST(PARAM); - TIDY_TAG_CONST(PLAINTEXT); - TIDY_TAG_CONST(PRE); - TIDY_TAG_CONST(Q); - TIDY_TAG_CONST(RB); - TIDY_TAG_CONST(RBC); - TIDY_TAG_CONST(RP); - TIDY_TAG_CONST(RT); - TIDY_TAG_CONST(RTC); - TIDY_TAG_CONST(RUBY); - TIDY_TAG_CONST(S); - TIDY_TAG_CONST(SAMP); - TIDY_TAG_CONST(SCRIPT); - TIDY_TAG_CONST(SELECT); - TIDY_TAG_CONST(SERVER); - TIDY_TAG_CONST(SERVLET); - TIDY_TAG_CONST(SMALL); - TIDY_TAG_CONST(SPACER); - TIDY_TAG_CONST(SPAN); - TIDY_TAG_CONST(STRIKE); - TIDY_TAG_CONST(STRONG); - TIDY_TAG_CONST(STYLE); - TIDY_TAG_CONST(SUB); - TIDY_TAG_CONST(SUP); - TIDY_TAG_CONST(TABLE); - TIDY_TAG_CONST(TBODY); - TIDY_TAG_CONST(TD); - TIDY_TAG_CONST(TEXTAREA); - TIDY_TAG_CONST(TFOOT); - TIDY_TAG_CONST(TH); - TIDY_TAG_CONST(THEAD); - TIDY_TAG_CONST(TITLE); - TIDY_TAG_CONST(TR); - TIDY_TAG_CONST(TT); - TIDY_TAG_CONST(U); - TIDY_TAG_CONST(UL); - TIDY_TAG_CONST(VAR); - TIDY_TAG_CONST(WBR); - TIDY_TAG_CONST(XMP); -} - -#endif - -/* - * Local variables: - * tab-width: 4 - * c-basic-offset: 4 - * End: - * vim600: noet sw=4 ts=4 fdm=marker - * vim<600: noet sw=4 ts=4 - */ diff --git a/ext/tidy/tidy.dsp b/ext/tidy/tidy.dsp deleted file mode 100755 index fe44fa7a51..0000000000 --- a/ext/tidy/tidy.dsp +++ /dev/null @@ -1,108 +0,0 @@ -# Microsoft Developer Studio Project File - Name="tidy" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=tidy - Win32 Debug_TS
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "tidy.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "tidy.mak" CFG="tidy - Win32 Debug_TS"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "tidy - Win32 Release_TS" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "tidy - Win32 Debug_TS" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "tidy - Win32 Release_TS"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release_TS"
-# PROP BASE Intermediate_Dir "Release_TS"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_TS"
-# PROP Intermediate_Dir "Release_TS"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TIDY_EXPORTS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /I "..\..\main" /I "..\..\Zend" /I "..\..\TSRM" /I "..\..\..\php_build\include" /I "..\..\..\php_build\include\libtidy" /D ZEND_DEBUG=0 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "COMPILE_DL_TIDY" /D ZTS=1 /D "ZEND_WIN32" /D "PHP_WIN32" /D "PHP_TIDY_EXPORTS" /D "HAVE_ZLIB" /FR /YX /FD /c
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x407 /d "NDEBUG"
-# ADD RSC /l 0x407 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
-# ADD LINK32 php5ts.lib libtidy.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /out:"..\..\Release_TS/php_tidy.dll" /libpath:"..\..\Release_TS" /libpath:"..\..\Release_TS_Inline" /libpath:"..\..\..\php_build\release"
-
-!ELSEIF "$(CFG)" == "tidy - Win32 Debug_TS"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug_TS"
-# PROP BASE Intermediate_Dir "Debug_TS"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_TS"
-# PROP Intermediate_Dir "Debug_TS"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TIDY_EXPORTS" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\.." /I "..\..\main" /I "..\..\Zend" /I "..\..\TSRM" /I "..\..\..\php_build\include" /I "..\..\..\php_build\include\libtidy" /D ZEND_DEBUG=1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "COMPILE_DL_TIDY" /D ZTS=1 /D "ZEND_WIN32" /D "PHP_WIN32" /D "PHP_TIDY_EXPORTS" /D "HAVE_ZLIB" /YX /FD /GZ /c
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x407 /d "_DEBUG"
-# ADD RSC /l 0x407 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 php5ts_debug.lib libtidy.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /out:"..\..\Debug_TS/php_tidy.dll" /pdbtype:sept /libpath:"..\..\Debug_TS" /libpath:"..\..\..\php_build\release"
-
-!ENDIF
-
-# Begin Target
-
-# Name "tidy - Win32 Release_TS"
-# Name "tidy - Win32 Debug_TS"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=.\tidy.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=.\php_tidy.h
-# End Source File
-# End Group
-# End Target
-# End Project
|