From: <lph...@us...> - 2008-12-25 20:35:19
|
Revision: 16146 http://tikiwiki.svn.sourceforge.net/tikiwiki/?rev=16146&view=rev Author: lphuberdeau Date: 2008-12-25 20:35:12 +0000 (Thu, 25 Dec 2008) Log Message: ----------- [MRG] Automatic merge, trunk 16106 to 16144 Modified Paths: -------------- branches/experimental/ui-revamp/comments.php branches/experimental/ui-revamp/lang/fr/language.php branches/experimental/ui-revamp/lib/structures/structlib.php branches/experimental/ui-revamp/lib/tikilib.php branches/experimental/ui-revamp/lib/trackers/trackerlib.php branches/experimental/ui-revamp/lib/wiki/renderlib.php branches/experimental/ui-revamp/styles/feb12.css branches/experimental/ui-revamp/styles/tikineat.css branches/experimental/ui-revamp/styles/transitions/2.0to3.0.css branches/experimental/ui-revamp/templates/comments.tpl branches/experimental/ui-revamp/templates/comments_button.tpl branches/experimental/ui-revamp/templates/list_file_gallery.tpl branches/experimental/ui-revamp/templates/map/tiki-map.tpl branches/experimental/ui-revamp/templates/map/tiki-map_edit.tpl branches/experimental/ui-revamp/templates/map/tiki-map_upload.tpl branches/experimental/ui-revamp/templates/module.tpl branches/experimental/ui-revamp/templates/modules/mod-application_menu.tpl branches/experimental/ui-revamp/templates/modules/mod-change_category.tpl branches/experimental/ui-revamp/templates/modules/mod-last_visitors.tpl branches/experimental/ui-revamp/templates/modules/mod-live_support.tpl branches/experimental/ui-revamp/templates/modules/mod-logo.tpl branches/experimental/ui-revamp/templates/modules/mod-online_users.tpl branches/experimental/ui-revamp/templates/modules/mod-random_images.tpl branches/experimental/ui-revamp/templates/modules/mod-user_bookmarks.tpl branches/experimental/ui-revamp/templates/modules/mod-who_is_there.tpl branches/experimental/ui-revamp/templates/styles/simple/modules/mod-application_menu.tpl branches/experimental/ui-revamp/templates/styles/simple/tiki-print_article.tpl branches/experimental/ui-revamp/templates/styles/simple/tiki-view_blog_post.tpl branches/experimental/ui-revamp/templates/tiki-admin-include-category.tpl branches/experimental/ui-revamp/templates/tiki-admin_categories.tpl branches/experimental/ui-revamp/templates/tiki-admin_drawings.tpl branches/experimental/ui-revamp/templates/tiki-admin_newsletters.tpl branches/experimental/ui-revamp/templates/tiki-admin_structures.tpl branches/experimental/ui-revamp/templates/tiki-admin_topics.tpl branches/experimental/ui-revamp/templates/tiki-admin_tracker_fields.tpl branches/experimental/ui-revamp/templates/tiki-blog_post.tpl branches/experimental/ui-revamp/templates/tiki-browse_gallery.tpl branches/experimental/ui-revamp/templates/tiki-calendar_calmode.tpl branches/experimental/ui-revamp/templates/tiki-calendar_daymode.tpl branches/experimental/ui-revamp/templates/tiki-calendar_edit_item.tpl branches/experimental/ui-revamp/templates/tiki-calendar_nav.tpl branches/experimental/ui-revamp/templates/tiki-calendar_params_ical.tpl branches/experimental/ui-revamp/templates/tiki-calendar_weekmode.tpl branches/experimental/ui-revamp/templates/tiki-directory_admin_categories.tpl branches/experimental/ui-revamp/templates/tiki-edit_article.tpl branches/experimental/ui-revamp/templates/tiki-edit_banner.tpl branches/experimental/ui-revamp/templates/tiki-edit_quiz_questions.tpl branches/experimental/ui-revamp/templates/tiki-edit_structure.tpl branches/experimental/ui-revamp/templates/tiki-edit_submission.tpl branches/experimental/ui-revamp/templates/tiki-edit_templates.tpl branches/experimental/ui-revamp/templates/tiki-forum_queue.tpl branches/experimental/ui-revamp/templates/tiki-g-admin_graph.tpl branches/experimental/ui-revamp/templates/tiki-g-admin_instance.tpl branches/experimental/ui-revamp/templates/tiki-g-admin_instance_activity.tpl branches/experimental/ui-revamp/templates/tiki-g-admin_processes.tpl branches/experimental/ui-revamp/templates/tiki-g-monitor_activities.tpl branches/experimental/ui-revamp/templates/tiki-g-monitor_bar.tpl branches/experimental/ui-revamp/templates/tiki-g-monitor_instances.tpl branches/experimental/ui-revamp/templates/tiki-g-monitor_processes.tpl branches/experimental/ui-revamp/templates/tiki-g-my_activities.tpl branches/experimental/ui-revamp/templates/tiki-g-my_instances.tpl branches/experimental/ui-revamp/templates/tiki-g-proc_bar.tpl branches/experimental/ui-revamp/templates/tiki-g-user_activities.tpl branches/experimental/ui-revamp/templates/tiki-g-user_bar.tpl branches/experimental/ui-revamp/templates/tiki-g-user_instances.tpl branches/experimental/ui-revamp/templates/tiki-g-user_processes.tpl branches/experimental/ui-revamp/templates/tiki-install.tpl branches/experimental/ui-revamp/templates/tiki-list_cache.tpl branches/experimental/ui-revamp/templates/tiki-list_file_gallery.tpl branches/experimental/ui-revamp/templates/tiki-list_games.tpl branches/experimental/ui-revamp/templates/tiki-list_submissions.tpl branches/experimental/ui-revamp/templates/tiki-list_users.tpl branches/experimental/ui-revamp/templates/tiki-listpages.tpl branches/experimental/ui-revamp/templates/tiki-listpages_content.tpl branches/experimental/ui-revamp/templates/tiki-live_support_admin.tpl branches/experimental/ui-revamp/templates/tiki-mytiki_bar.tpl branches/experimental/ui-revamp/templates/tiki-mytiki_mootabs.tpl branches/experimental/ui-revamp/templates/tiki-newsreader_read.tpl branches/experimental/ui-revamp/templates/tiki-newsreader_servers.tpl branches/experimental/ui-revamp/templates/tiki-plugin_trackerlist.tpl branches/experimental/ui-revamp/templates/tiki-preview_article.tpl branches/experimental/ui-revamp/templates/tiki-print_article.tpl branches/experimental/ui-revamp/templates/tiki-read_article.tpl branches/experimental/ui-revamp/templates/tiki-received_articles.tpl branches/experimental/ui-revamp/templates/tiki-register_site.tpl branches/experimental/ui-revamp/templates/tiki-sheets.tpl branches/experimental/ui-revamp/templates/tiki-show_calendar.tpl branches/experimental/ui-revamp/templates/tiki-show_page.tpl branches/experimental/ui-revamp/templates/tiki-smileys.tpl branches/experimental/ui-revamp/templates/tiki-upload_file_progress.tpl branches/experimental/ui-revamp/templates/tiki-user_menu.tpl branches/experimental/ui-revamp/templates/tiki-user_tasks.tpl branches/experimental/ui-revamp/templates/tiki-user_tasks_edit.tpl branches/experimental/ui-revamp/templates/tiki-user_tasks_list.tpl branches/experimental/ui-revamp/templates/tiki-user_tasks_view.tpl branches/experimental/ui-revamp/templates/tiki-view_articles.tpl branches/experimental/ui-revamp/templates/tiki-view_chart_item.tpl branches/experimental/ui-revamp/templates/tiki-view_forum.tpl branches/experimental/ui-revamp/templates/tiki-view_tracker.tpl branches/experimental/ui-revamp/templates/tiki-webmail.tpl branches/experimental/ui-revamp/templates/tracker_filter.tpl branches/experimental/ui-revamp/templates/tracker_item_field_value.tpl branches/experimental/ui-revamp/templates/wiki-plugins/wikiplugin_subscribegroups.tpl branches/experimental/ui-revamp/templates/wiki-plugins/wikiplugin_vote.tpl branches/experimental/ui-revamp/tiki-admin_include_trackers.php branches/experimental/ui-revamp/tiki-admin_structures.php branches/experimental/ui-revamp/tiki-backlinks.php branches/experimental/ui-revamp/tiki-calendar.php branches/experimental/ui-revamp/tiki-contacts.php branches/experimental/ui-revamp/tiki-edit_structure.php branches/experimental/ui-revamp/tiki-index_p.php branches/experimental/ui-revamp/tiki-index_raw.php branches/experimental/ui-revamp/tiki-likepages.php branches/experimental/ui-revamp/tiki-list_file_gallery.php branches/experimental/ui-revamp/tiki-listpages.php branches/experimental/ui-revamp/tiki-login.php branches/experimental/ui-revamp/tiki-pagehistory.php branches/experimental/ui-revamp/tiki-print.php branches/experimental/ui-revamp/tiki-removepage.php branches/experimental/ui-revamp/tiki-rename_page.php branches/experimental/ui-revamp/tiki-rollback.php branches/experimental/ui-revamp/tiki-slideshow.php branches/experimental/ui-revamp/tiki-slideshow2.php branches/experimental/ui-revamp/tiki-view_tracker_item.php Added Paths: ----------- branches/experimental/ui-revamp/lib/pear/XML_Parser/ branches/experimental/ui-revamp/lib/pear/XML_Parser/Parser/ branches/experimental/ui-revamp/lib/pear/XML_Parser/Parser/Simple.php branches/experimental/ui-revamp/lib/pear/XML_Parser/Parser.php branches/experimental/ui-revamp/lib/pear/XML_Parser/examples/ branches/experimental/ui-revamp/lib/pear/XML_Parser/examples/xml_parser_file.php branches/experimental/ui-revamp/lib/pear/XML_Parser/examples/xml_parser_file.xml branches/experimental/ui-revamp/lib/pear/XML_Parser/examples/xml_parser_funcmode.php branches/experimental/ui-revamp/lib/pear/XML_Parser/examples/xml_parser_handler.php branches/experimental/ui-revamp/lib/pear/XML_Parser/examples/xml_parser_simple1.php branches/experimental/ui-revamp/lib/pear/XML_Parser/examples/xml_parser_simple1.xml branches/experimental/ui-revamp/lib/pear/XML_Parser/examples/xml_parser_simple2.php branches/experimental/ui-revamp/lib/pear/XML_Parser/examples/xml_parser_simple2.xml branches/experimental/ui-revamp/lib/pear/XML_Parser/examples/xml_parser_simple_handler.php branches/experimental/ui-revamp/lib/pear/XML_Parser/tests/ branches/experimental/ui-revamp/lib/pear/XML_Parser/tests/001.phpt branches/experimental/ui-revamp/lib/pear/XML_Parser/tests/002.phpt branches/experimental/ui-revamp/lib/pear/XML_Parser/tests/003.phpt branches/experimental/ui-revamp/lib/pear/XML_Parser/tests/004.phpt branches/experimental/ui-revamp/lib/pear/XML_Parser/tests/005.phpt branches/experimental/ui-revamp/lib/pear/XML_Parser/tests/test2.xml branches/experimental/ui-revamp/lib/pear/XML_Parser/tests/test3.xml branches/experimental/ui-revamp/lib/wiki/xmllib.php branches/experimental/ui-revamp/templates/tiki-export_comment_xml.tpl branches/experimental/ui-revamp/templates/tiki-export_page_xml.tpl branches/experimental/ui-revamp/templates/tiki-import_xml_zip.tpl branches/experimental/ui-revamp/tests/testfile.txt branches/experimental/ui-revamp/tiki-import_xml_zip.php Removed Paths: ------------- branches/experimental/ui-revamp/lib/pear/XML_Parser/Parser/ branches/experimental/ui-revamp/lib/pear/XML_Parser/Parser/Simple.php branches/experimental/ui-revamp/lib/pear/XML_Parser/Parser.php branches/experimental/ui-revamp/lib/pear/XML_Parser/examples/ branches/experimental/ui-revamp/lib/pear/XML_Parser/examples/xml_parser_file.php branches/experimental/ui-revamp/lib/pear/XML_Parser/examples/xml_parser_file.xml branches/experimental/ui-revamp/lib/pear/XML_Parser/examples/xml_parser_funcmode.php branches/experimental/ui-revamp/lib/pear/XML_Parser/examples/xml_parser_handler.php branches/experimental/ui-revamp/lib/pear/XML_Parser/examples/xml_parser_simple1.php branches/experimental/ui-revamp/lib/pear/XML_Parser/examples/xml_parser_simple1.xml branches/experimental/ui-revamp/lib/pear/XML_Parser/examples/xml_parser_simple2.php branches/experimental/ui-revamp/lib/pear/XML_Parser/examples/xml_parser_simple2.xml branches/experimental/ui-revamp/lib/pear/XML_Parser/examples/xml_parser_simple_handler.php branches/experimental/ui-revamp/lib/pear/XML_Parser/tests/ branches/experimental/ui-revamp/lib/pear/XML_Parser/tests/001.phpt branches/experimental/ui-revamp/lib/pear/XML_Parser/tests/002.phpt branches/experimental/ui-revamp/lib/pear/XML_Parser/tests/003.phpt branches/experimental/ui-revamp/lib/pear/XML_Parser/tests/004.phpt branches/experimental/ui-revamp/lib/pear/XML_Parser/tests/005.phpt branches/experimental/ui-revamp/lib/pear/XML_Parser/tests/test2.xml branches/experimental/ui-revamp/lib/pear/XML_Parser/tests/test3.xml branches/experimental/ui-revamp/tiki-pagesetup.php Property Changed: ---------------- branches/experimental/ui-revamp/ branches/experimental/ui-revamp/installer/schema/20081105_calendar_items_allday_update_tiki.sql branches/experimental/ui-revamp/installer/schema/20081211_newsletter_files_tiki.sql branches/experimental/ui-revamp/lib/core/lib/Multilingual/Aligner/BilingualAligner.php branches/experimental/ui-revamp/lib/core/lib/Multilingual/Aligner/SentenceSegmentor.php branches/experimental/ui-revamp/lib/core/lib/Multilingual/Aligner/ShortestPathFinder.php branches/experimental/ui-revamp/lib/core/test/Multilingual/Aligner/AllTests.php branches/experimental/ui-revamp/lib/core/test/Multilingual/Aligner/BilingualAlignerTest.php branches/experimental/ui-revamp/lib/core/test/Multilingual/Aligner/SentenceSegmentorTest.php branches/experimental/ui-revamp/lib/core/test/Multilingual/Aligner/ShortestPathFinderTest.php Property changes on: branches/experimental/ui-revamp ___________________________________________________________________ Modified: svn:mergeinfo - /branches/experimental/declfilter:15787-16031 /trunk:15666-16106 + /branches/experimental/declfilter:15787-16031 /trunk:15666-16144 Modified: branches/experimental/ui-revamp/comments.php =================================================================== --- branches/experimental/ui-revamp/comments.php 2008-12-25 20:14:30 UTC (rev 16145) +++ branches/experimental/ui-revamp/comments.php 2008-12-25 20:35:12 UTC (rev 16146) @@ -202,15 +202,15 @@ if ( ($tiki_p_post_comments == 'y' && (!isset($forum_mode) || $forum_mode == 'n')) || ($tiki_p_forum_post == 'y' && isset($forum_mode) && $forum_mode == 'y') ) { if (isset($_REQUEST["comments_postComment"])) { + $msgError = ''; + $smarty->assign('comments_postComment', 'y'); + if (empty($user) && $prefs['feature_antibot'] == 'y' && (!isset($_SESSION['random_number']) || $_SESSION['random_number'] != $_REQUEST['antibotcode'])) { - $smarty->assign('msg',tra("You have mistyped the anti-bot verification code; please try again.")); - $smarty->assign('errortype', 'no_redirect_login'); - $smarty->display("error.tpl"); - die; + $msgError = tra('You have mistyped the anti-bot verification code; please try again.'); } $comments_show = 'y'; - if (!empty($_REQUEST["comments_title"]) && !empty($_REQUEST["comments_data"]) && !($prefs['feature_contribution'] == 'y' && ((isset($forum_mode) && $forum_mode == 'y' && $prefs['feature_contribution_mandatory_forum'] == 'y') || ((empty($forum_mode) || $forum_mode == 'n') && $prefs['feature_contribution_mandatory_comment'] == 'y')) && empty($_REQUEST['contributions']))) { + if ( $msgError == '' && !empty($_REQUEST["comments_title"]) && !empty($_REQUEST["comments_data"]) && !($prefs['feature_contribution'] == 'y' && ((isset($forum_mode) && $forum_mode == 'y' && $prefs['feature_contribution_mandatory_forum'] == 'y') || ((empty($forum_mode) || $forum_mode == 'n') && $prefs['feature_contribution_mandatory_comment'] == 'y')) && empty($_REQUEST['contributions']))) { if ( isset($forum_mode) && $forum_mode == 'y' && $forum_info['is_flat'] == 'y' && $_REQUEST["comments_grandParentId"] > 0 ) { $smarty->assign('msg', tra("This forum is flat and doesn't allow replies to other replies")); @@ -451,9 +451,10 @@ header('location: ' . $url); } } else { - $msgError = ''; if (empty($_REQUEST["comments_title"]) || empty($_REQUEST["comments_data"])) { - $msgError = tra("Missing title or body when trying to post a comment"); + if ($msgError) + $msgError .= '<br />'; + $msgError .= tra("Missing title or body when trying to post a comment"); } if ($prefs['feature_contribution'] == 'y' && empty($_REQUEST['contributions'])) { if ($msgError) @@ -575,7 +576,7 @@ if (isset($_REQUEST["comments_previewComment"]) || isset($msgError)) { $smarty->assign('comments_preview_title', $_REQUEST["comments_title"]); - + $comments_show = 'y'; $smarty->assign('comments_preview_data', $commentslib->parse_comment_data(strip_tags($_REQUEST["comments_data"]))); $smarty->assign('comment_title', $_REQUEST["comments_title"]); $smarty->assign('comment_rating', $_REQUEST["comment_rating"]); @@ -585,8 +586,9 @@ } // Always show comments when a display setting has been explicitely specified -if ( isset($_REQUEST['comments_per_page']) || isset($_REQUEST['thread_style']) || isset($_REQUEST['thread_sort_mode']) ) -$comments_show = 'y'; +if ( isset($_REQUEST['comments_per_page']) || isset($_REQUEST['thread_style']) || isset($_REQUEST['thread_sort_mode']) ) { + $comments_show = 'y'; +} if (!isset($_REQUEST["comments_commentFind"])) $_REQUEST["comments_commentFind"] = ''; else $comments_show = 'y'; @@ -703,4 +705,4 @@ $smarty->assign('was_queued', $_REQUEST['was_queued']); } -?> +$smarty->assign('comments_show', $comments_show); Property changes on: branches/experimental/ui-revamp/installer/schema/20081105_calendar_items_allday_update_tiki.sql ___________________________________________________________________ Modified: svn:mergeinfo - /branches/experimental/declfilter/installer/schema/20081105_calendar_items_allday_update.sql:15787-16031 /trunk/installer/schema/20081105_calendar_items_allday_update_tiki.sql:16069-16106 + /branches/experimental/declfilter/installer/schema/20081105_calendar_items_allday_update.sql:15787-16031 /trunk/installer/schema/20081105_calendar_items_allday_update_tiki.sql:16069-16144 Property changes on: branches/experimental/ui-revamp/installer/schema/20081211_newsletter_files_tiki.sql ___________________________________________________________________ Modified: svn:mergeinfo - /trunk/installer/schema/20081211_newsletter_files_tiki.sql:16066-16106 + /trunk/installer/schema/20081211_newsletter_files_tiki.sql:16066-16144 Modified: branches/experimental/ui-revamp/lang/fr/language.php =================================================================== --- branches/experimental/ui-revamp/lang/fr/language.php 2008-12-25 20:14:30 UTC (rev 16145) +++ branches/experimental/ui-revamp/lang/fr/language.php 2008-12-25 20:35:12 UTC (rev 16146) @@ -5551,7 +5551,7 @@ "Users can subscribe any email address" => "Les utilisateurs peuvent s'abonner avec une adresse électronique différente", "Add unsubscribe instructions to each newsletter" => "Ajouter les instructions pour se désabonner dans chaque lettre d'informations envoyée", "Validate email addresses" => "Les inscriptions sont validées après réponse à un email", -"Editions" => "éditions", +"Editions" => "Éditions", "Drafts" => "Brouillons", "Last Sent" => "Dernier envoi", "Send Newsletter" => "Envoyer la lettre d'informations", Property changes on: branches/experimental/ui-revamp/lib/core/lib/Multilingual/Aligner/BilingualAligner.php ___________________________________________________________________ Modified: svn:mergeinfo - /branches/experimental/declfilter/lib/multilingual/BilingualAligner.php:15787-16031 /trunk/lib/core/lib/Multilingual/Aligner/BilingualAligner.php:16066-16106 + /branches/experimental/declfilter/lib/multilingual/BilingualAligner.php:15787-16031 /trunk/lib/core/lib/Multilingual/Aligner/BilingualAligner.php:16066-16144 Property changes on: branches/experimental/ui-revamp/lib/core/lib/Multilingual/Aligner/SentenceSegmentor.php ___________________________________________________________________ Modified: svn:mergeinfo - /branches/experimental/declfilter/lib/multilingual/SentenceSegmentor.php:15787-16031 /trunk/lib/core/lib/Multilingual/Aligner/SentenceSegmentor.php:16066-16106 + /branches/experimental/declfilter/lib/multilingual/SentenceSegmentor.php:15787-16031 /trunk/lib/core/lib/Multilingual/Aligner/SentenceSegmentor.php:16066-16144 Property changes on: branches/experimental/ui-revamp/lib/core/lib/Multilingual/Aligner/ShortestPathFinder.php ___________________________________________________________________ Modified: svn:mergeinfo - /branches/experimental/declfilter/lib/multilingual/ShortestPathFinder.php:15787-16031 /trunk/lib/core/lib/Multilingual/Aligner/ShortestPathFinder.php:16066-16106 + /branches/experimental/declfilter/lib/multilingual/ShortestPathFinder.php:15787-16031 /trunk/lib/core/lib/Multilingual/Aligner/ShortestPathFinder.php:16066-16144 Property changes on: branches/experimental/ui-revamp/lib/core/test/Multilingual/Aligner/AllTests.php ___________________________________________________________________ Modified: svn:mergeinfo - /branches/experimental/declfilter/lib/multilingual/AllTests.php:15787-16031 /trunk/lib/core/test/Multilingual/Aligner/AllTests.php:16066-16106 + /branches/experimental/declfilter/lib/multilingual/AllTests.php:15787-16031 /trunk/lib/core/test/Multilingual/Aligner/AllTests.php:16066-16144 Property changes on: branches/experimental/ui-revamp/lib/core/test/Multilingual/Aligner/BilingualAlignerTest.php ___________________________________________________________________ Modified: svn:mergeinfo - /branches/experimental/declfilter/lib/multilingual/BilingualAlignerTest.php:15787-16031 /trunk/lib/core/test/Multilingual/Aligner/BilingualAlignerTest.php:16066-16106 + /branches/experimental/declfilter/lib/multilingual/BilingualAlignerTest.php:15787-16031 /trunk/lib/core/test/Multilingual/Aligner/BilingualAlignerTest.php:16066-16144 Property changes on: branches/experimental/ui-revamp/lib/core/test/Multilingual/Aligner/SentenceSegmentorTest.php ___________________________________________________________________ Modified: svn:mergeinfo - /branches/experimental/declfilter/lib/multilingual/SentenceSegmentorTest.php:15787-16031 /trunk/lib/core/test/Multilingual/Aligner/SentenceSegmentorTest.php:16066-16106 + /branches/experimental/declfilter/lib/multilingual/SentenceSegmentorTest.php:15787-16031 /trunk/lib/core/test/Multilingual/Aligner/SentenceSegmentorTest.php:16066-16144 Property changes on: branches/experimental/ui-revamp/lib/core/test/Multilingual/Aligner/ShortestPathFinderTest.php ___________________________________________________________________ Modified: svn:mergeinfo - /trunk/lib/core/test/Multilingual/Aligner/ShortestPathFinderTest.php:16066-16106 + /trunk/lib/core/test/Multilingual/Aligner/ShortestPathFinderTest.php:16066-16144 Deleted: branches/experimental/ui-revamp/lib/pear/XML_Parser/Parser/Simple.php =================================================================== --- trunk/lib/pear/XML_Parser/Parser/Simple.php 2008-12-25 06:47:37 UTC (rev 16144) +++ branches/experimental/ui-revamp/lib/pear/XML_Parser/Parser/Simple.php 2008-12-25 20:35:12 UTC (rev 16146) @@ -1,326 +0,0 @@ -<?php - -/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ - -/** - * XML_Parser - * - * XML Parser's Simple parser class - * - * PHP versions 4 and 5 - * - * LICENSE: - * - * Copyright (c) 2002-2008 The PHP Group - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, - * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * @category XML - * @package XML_Parser - * @author Stephan Schmidt <sc...@ph...> - * @copyright 2004-2008 Stephan Schmidt <sc...@ph...> - * @license http://opensource.org/licenses/bsd-license New BSD License - * @version CVS: $Id: Simple.php,v 1.7 2008/08/24 21:48:21 ashnazg Exp $ - * @link http://pear.php.net/package/XML_Parser - */ - -/** - * built on XML_Parser - */ -require_once 'XML/Parser.php'; - -/** - * Simple XML parser class. - * - * This class is a simplified version of XML_Parser. - * In most XML applications the real action is executed, - * when a closing tag is found. - * - * XML_Parser_Simple allows you to just implement one callback - * for each tag that will receive the tag with its attributes - * and CData. - * - * <code> - * require_once '../Parser/Simple.php'; - * - * class myParser extends XML_Parser_Simple - * { - * function myParser() - * { - * $this->XML_Parser_Simple(); - * } - * - * function handleElement($name, $attribs, $data) - * { - * printf('handle %s<br>', $name); - * } - * } - * - * $p = &new myParser(); - * - * $result = $p->setInputFile('myDoc.xml'); - * $result = $p->parse(); - * </code> - * - * @category XML - * @package XML_Parser - * @author Stephan Schmidt <sc...@ph...> - * @copyright 2004-2008 The PHP Group - * @license http://opensource.org/licenses/bsd-license New BSD License - * @version Release: @package_version@ - * @link http://pear.php.net/package/XML_Parser - */ -class XML_Parser_Simple extends XML_Parser -{ - /** - * element stack - * - * @access private - * @var array - */ - var $_elStack = array(); - - /** - * all character data - * - * @access private - * @var array - */ - var $_data = array(); - - /** - * element depth - * - * @access private - * @var integer - */ - var $_depth = 0; - - /** - * Mapping from expat handler function to class method. - * - * @var array - */ - var $handler = array( - 'default_handler' => 'defaultHandler', - 'processing_instruction_handler' => 'piHandler', - 'unparsed_entity_decl_handler' => 'unparsedHandler', - 'notation_decl_handler' => 'notationHandler', - 'external_entity_ref_handler' => 'entityrefHandler' - ); - - /** - * Creates an XML parser. - * - * This is needed for PHP4 compatibility, it will - * call the constructor, when a new instance is created. - * - * @param string $srcenc source charset encoding, use NULL (default) to use - * whatever the document specifies - * @param string $mode how this parser object should work, "event" for - * handleElement(), "func" to have it call functions - * named after elements (handleElement_$name()) - * @param string $tgtenc a valid target encoding - */ - function XML_Parser_Simple($srcenc = null, $mode = 'event', $tgtenc = null) - { - $this->XML_Parser($srcenc, $mode, $tgtenc); - } - - /** - * inits the handlers - * - * @return mixed - * @access private - */ - function _initHandlers() - { - if (!is_object($this->_handlerObj)) { - $this->_handlerObj = &$this; - } - - if ($this->mode != 'func' && $this->mode != 'event') { - return $this->raiseError('Unsupported mode given', - XML_PARSER_ERROR_UNSUPPORTED_MODE); - } - xml_set_object($this->parser, $this->_handlerObj); - - xml_set_element_handler($this->parser, array(&$this, 'startHandler'), - array(&$this, 'endHandler')); - xml_set_character_data_handler($this->parser, array(&$this, 'cdataHandler')); - - /** - * set additional handlers for character data, entities, etc. - */ - foreach ($this->handler as $xml_func => $method) { - if (method_exists($this->_handlerObj, $method)) { - $xml_func = 'xml_set_' . $xml_func; - $xml_func($this->parser, $method); - } - } - } - - /** - * Reset the parser. - * - * This allows you to use one parser instance - * to parse multiple XML documents. - * - * @access public - * @return boolean|object true on success, PEAR_Error otherwise - */ - function reset() - { - $this->_elStack = array(); - $this->_data = array(); - $this->_depth = 0; - - $result = $this->_create(); - if ($this->isError($result)) { - return $result; - } - return true; - } - - /** - * start handler - * - * Pushes attributes and tagname onto a stack - * - * @param resource $xp xml parser resource - * @param string $elem element name - * @param array &$attribs attributes - * - * @return mixed - * @access private - * @final - */ - function startHandler($xp, $elem, &$attribs) - { - array_push($this->_elStack, array( - 'name' => $elem, - 'attribs' => $attribs - )); - $this->_depth++; - $this->_data[$this->_depth] = ''; - } - - /** - * end handler - * - * Pulls attributes and tagname from a stack - * - * @param resource $xp xml parser resource - * @param string $elem element name - * - * @return mixed - * @access private - * @final - */ - function endHandler($xp, $elem) - { - $el = array_pop($this->_elStack); - $data = $this->_data[$this->_depth]; - $this->_depth--; - - switch ($this->mode) { - case 'event': - $this->_handlerObj->handleElement($el['name'], $el['attribs'], $data); - break; - case 'func': - $func = 'handleElement_' . $elem; - if (strchr($func, '.')) { - $func = str_replace('.', '_', $func); - } - if (method_exists($this->_handlerObj, $func)) { - call_user_func(array(&$this->_handlerObj, $func), - $el['name'], $el['attribs'], $data); - } - break; - } - } - - /** - * handle character data - * - * @param resource $xp xml parser resource - * @param string $data data - * - * @return void - * @access private - * @final - */ - function cdataHandler($xp, $data) - { - $this->_data[$this->_depth] .= $data; - } - - /** - * handle a tag - * - * Implement this in your parser - * - * @param string $name element name - * @param array $attribs attributes - * @param string $data character data - * - * @return void - * @access public - * @abstract - */ - function handleElement($name, $attribs, $data) - { - } - - /** - * get the current tag depth - * - * The root tag is in depth 0. - * - * @access public - * @return integer - */ - function getCurrentDepth() - { - return $this->_depth; - } - - /** - * add some string to the current ddata. - * - * This is commonly needed, when a document is parsed recursively. - * - * @param string $data data to add - * - * @return void - * @access public - */ - function addToData($data) - { - $this->_data[$this->_depth] .= $data; - } -} -?> Copied: branches/experimental/ui-revamp/lib/pear/XML_Parser/Parser/Simple.php (from rev 16144, trunk/lib/pear/XML_Parser/Parser/Simple.php) =================================================================== --- branches/experimental/ui-revamp/lib/pear/XML_Parser/Parser/Simple.php (rev 0) +++ branches/experimental/ui-revamp/lib/pear/XML_Parser/Parser/Simple.php 2008-12-25 20:35:12 UTC (rev 16146) @@ -0,0 +1,326 @@ +<?php + +/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ + +/** + * XML_Parser + * + * XML Parser's Simple parser class + * + * PHP versions 4 and 5 + * + * LICENSE: + * + * Copyright (c) 2002-2008 The PHP Group + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * @category XML + * @package XML_Parser + * @author Stephan Schmidt <sc...@ph...> + * @copyright 2004-2008 Stephan Schmidt <sc...@ph...> + * @license http://opensource.org/licenses/bsd-license New BSD License + * @version CVS: $Id: Simple.php,v 1.7 2008/08/24 21:48:21 ashnazg Exp $ + * @link http://pear.php.net/package/XML_Parser + */ + +/** + * built on XML_Parser + */ +require_once 'XML/Parser.php'; + +/** + * Simple XML parser class. + * + * This class is a simplified version of XML_Parser. + * In most XML applications the real action is executed, + * when a closing tag is found. + * + * XML_Parser_Simple allows you to just implement one callback + * for each tag that will receive the tag with its attributes + * and CData. + * + * <code> + * require_once '../Parser/Simple.php'; + * + * class myParser extends XML_Parser_Simple + * { + * function myParser() + * { + * $this->XML_Parser_Simple(); + * } + * + * function handleElement($name, $attribs, $data) + * { + * printf('handle %s<br>', $name); + * } + * } + * + * $p = &new myParser(); + * + * $result = $p->setInputFile('myDoc.xml'); + * $result = $p->parse(); + * </code> + * + * @category XML + * @package XML_Parser + * @author Stephan Schmidt <sc...@ph...> + * @copyright 2004-2008 The PHP Group + * @license http://opensource.org/licenses/bsd-license New BSD License + * @version Release: @package_version@ + * @link http://pear.php.net/package/XML_Parser + */ +class XML_Parser_Simple extends XML_Parser +{ + /** + * element stack + * + * @access private + * @var array + */ + var $_elStack = array(); + + /** + * all character data + * + * @access private + * @var array + */ + var $_data = array(); + + /** + * element depth + * + * @access private + * @var integer + */ + var $_depth = 0; + + /** + * Mapping from expat handler function to class method. + * + * @var array + */ + var $handler = array( + 'default_handler' => 'defaultHandler', + 'processing_instruction_handler' => 'piHandler', + 'unparsed_entity_decl_handler' => 'unparsedHandler', + 'notation_decl_handler' => 'notationHandler', + 'external_entity_ref_handler' => 'entityrefHandler' + ); + + /** + * Creates an XML parser. + * + * This is needed for PHP4 compatibility, it will + * call the constructor, when a new instance is created. + * + * @param string $srcenc source charset encoding, use NULL (default) to use + * whatever the document specifies + * @param string $mode how this parser object should work, "event" for + * handleElement(), "func" to have it call functions + * named after elements (handleElement_$name()) + * @param string $tgtenc a valid target encoding + */ + function XML_Parser_Simple($srcenc = null, $mode = 'event', $tgtenc = null) + { + $this->XML_Parser($srcenc, $mode, $tgtenc); + } + + /** + * inits the handlers + * + * @return mixed + * @access private + */ + function _initHandlers() + { + if (!is_object($this->_handlerObj)) { + $this->_handlerObj = &$this; + } + + if ($this->mode != 'func' && $this->mode != 'event') { + return $this->raiseError('Unsupported mode given', + XML_PARSER_ERROR_UNSUPPORTED_MODE); + } + xml_set_object($this->parser, $this->_handlerObj); + + xml_set_element_handler($this->parser, array(&$this, 'startHandler'), + array(&$this, 'endHandler')); + xml_set_character_data_handler($this->parser, array(&$this, 'cdataHandler')); + + /** + * set additional handlers for character data, entities, etc. + */ + foreach ($this->handler as $xml_func => $method) { + if (method_exists($this->_handlerObj, $method)) { + $xml_func = 'xml_set_' . $xml_func; + $xml_func($this->parser, $method); + } + } + } + + /** + * Reset the parser. + * + * This allows you to use one parser instance + * to parse multiple XML documents. + * + * @access public + * @return boolean|object true on success, PEAR_Error otherwise + */ + function reset() + { + $this->_elStack = array(); + $this->_data = array(); + $this->_depth = 0; + + $result = $this->_create(); + if ($this->isError($result)) { + return $result; + } + return true; + } + + /** + * start handler + * + * Pushes attributes and tagname onto a stack + * + * @param resource $xp xml parser resource + * @param string $elem element name + * @param array &$attribs attributes + * + * @return mixed + * @access private + * @final + */ + function startHandler($xp, $elem, &$attribs) + { + array_push($this->_elStack, array( + 'name' => $elem, + 'attribs' => $attribs + )); + $this->_depth++; + $this->_data[$this->_depth] = ''; + } + + /** + * end handler + * + * Pulls attributes and tagname from a stack + * + * @param resource $xp xml parser resource + * @param string $elem element name + * + * @return mixed + * @access private + * @final + */ + function endHandler($xp, $elem) + { + $el = array_pop($this->_elStack); + $data = $this->_data[$this->_depth]; + $this->_depth--; + + switch ($this->mode) { + case 'event': + $this->_handlerObj->handleElement($el['name'], $el['attribs'], $data); + break; + case 'func': + $func = 'handleElement_' . $elem; + if (strchr($func, '.')) { + $func = str_replace('.', '_', $func); + } + if (method_exists($this->_handlerObj, $func)) { + call_user_func(array(&$this->_handlerObj, $func), + $el['name'], $el['attribs'], $data); + } + break; + } + } + + /** + * handle character data + * + * @param resource $xp xml parser resource + * @param string $data data + * + * @return void + * @access private + * @final + */ + function cdataHandler($xp, $data) + { + $this->_data[$this->_depth] .= $data; + } + + /** + * handle a tag + * + * Implement this in your parser + * + * @param string $name element name + * @param array $attribs attributes + * @param string $data character data + * + * @return void + * @access public + * @abstract + */ + function handleElement($name, $attribs, $data) + { + } + + /** + * get the current tag depth + * + * The root tag is in depth 0. + * + * @access public + * @return integer + */ + function getCurrentDepth() + { + return $this->_depth; + } + + /** + * add some string to the current ddata. + * + * This is commonly needed, when a document is parsed recursively. + * + * @param string $data data to add + * + * @return void + * @access public + */ + function addToData($data) + { + $this->_data[$this->_depth] .= $data; + } +} +?> Deleted: branches/experimental/ui-revamp/lib/pear/XML_Parser/Parser.php =================================================================== --- trunk/lib/pear/XML_Parser/Parser.php 2008-12-25 06:47:37 UTC (rev 16144) +++ branches/experimental/ui-revamp/lib/pear/XML_Parser/Parser.php 2008-12-25 20:35:12 UTC (rev 16146) @@ -1,768 +0,0 @@ -<?php - -/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ - -/** - * XML_Parser - * - * XML Parser package - * - * PHP versions 4 and 5 - * - * LICENSE: - * - * Copyright (c) 2002-2008 The PHP Group - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, - * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * @category XML - * @package XML_Parser - * @author Stig Bakken <ss...@fa...> - * @author Tomas V.V.Cox <co...@id...> - * @author Stephan Schmidt <sc...@ph...> - * @copyright 2002-2008 The PHP Group - * @license http://opensource.org/licenses/bsd-license New BSD License - * @version CVS: $Id: Parser.php,v 1.29 2008/08/24 21:48:21 ashnazg Exp $ - * @link http://pear.php.net/package/XML_Parser - */ - -/** - * uses PEAR's error handling - */ -require_once 'PEAR.php'; - -/** - * resource could not be created - */ -define('XML_PARSER_ERROR_NO_RESOURCE', 200); - -/** - * unsupported mode - */ -define('XML_PARSER_ERROR_UNSUPPORTED_MODE', 201); - -/** - * invalid encoding was given - */ -define('XML_PARSER_ERROR_INVALID_ENCODING', 202); - -/** - * specified file could not be read - */ -define('XML_PARSER_ERROR_FILE_NOT_READABLE', 203); - -/** - * invalid input - */ -define('XML_PARSER_ERROR_INVALID_INPUT', 204); - -/** - * remote file cannot be retrieved in safe mode - */ -define('XML_PARSER_ERROR_REMOTE', 205); - -/** - * XML Parser class. - * - * This is an XML parser based on PHP's "xml" extension, - * based on the bundled expat library. - * - * Notes: - * - It requires PHP 4.0.4pl1 or greater - * - From revision 1.17, the function names used by the 'func' mode - * are in the format "xmltag_$elem", for example: use "xmltag_name" - * to handle the <name></name> tags of your xml file. - * - different parsing modes - * - * @category XML - * @package XML_Parser - * @author Stig Bakken <ss...@fa...> - * @author Tomas V.V.Cox <co...@id...> - * @author Stephan Schmidt <sc...@ph...> - * @copyright 2002-2008 The PHP Group - * @license http://opensource.org/licenses/bsd-license New BSD License - * @version Release: @package_version@ - * @link http://pear.php.net/package/XML_Parser - * @todo create XML_Parser_Namespace to parse documents with namespaces - * @todo create XML_Parser_Pull - * @todo Tests that need to be made: - * - mixing character encodings - * - a test using all expat handlers - * - options (folding, output charset) - */ -class XML_Parser extends PEAR -{ - // {{{ properties - - /** - * XML parser handle - * - * @var resource - * @see xml_parser_create() - */ - var $parser; - - /** - * File handle if parsing from a file - * - * @var resource - */ - var $fp; - - /** - * Whether to do case folding - * - * If set to true, all tag and attribute names will - * be converted to UPPER CASE. - * - * @var boolean - */ - var $folding = true; - - /** - * Mode of operation, one of "event" or "func" - * - * @var string - */ - var $mode; - - /** - * Mapping from expat handler function to class method. - * - * @var array - */ - var $handler = array( - 'character_data_handler' => 'cdataHandler', - 'default_handler' => 'defaultHandler', - 'processing_instruction_handler' => 'piHandler', - 'unparsed_entity_decl_handler' => 'unparsedHandler', - 'notation_decl_handler' => 'notationHandler', - 'external_entity_ref_handler' => 'entityrefHandler' - ); - - /** - * source encoding - * - * @var string - */ - var $srcenc; - - /** - * target encoding - * - * @var string - */ - var $tgtenc; - - /** - * handler object - * - * @var object - */ - var $_handlerObj; - - /** - * valid encodings - * - * @var array - */ - var $_validEncodings = array('ISO-8859-1', 'UTF-8', 'US-ASCII'); - - // }}} - // {{{ php4 constructor - - /** - * Creates an XML parser. - * - * This is needed for PHP4 compatibility, it will - * call the constructor, when a new instance is created. - * - * @param string $srcenc source charset encoding, use NULL (default) to use - * whatever the document specifies - * @param string $mode how this parser object should work, "event" for - * startelement/endelement-type events, "func" - * to have it call functions named after elements - * @param string $tgtenc a valid target encoding - */ - function XML_Parser($srcenc = null, $mode = 'event', $tgtenc = null) - { - XML_Parser::__construct($srcenc, $mode, $tgtenc); - } - // }}} - // {{{ php5 constructor - - /** - * PHP5 constructor - * - * @param string $srcenc source charset encoding, use NULL (default) to use - * whatever the document specifies - * @param string $mode how this parser object should work, "event" for - * startelement/endelement-type events, "func" - * to have it call functions named after elements - * @param string $tgtenc a valid target encoding - */ - function __construct($srcenc = null, $mode = 'event', $tgtenc = null) - { - $this->PEAR('XML_Parser_Error'); - - $this->mode = $mode; - $this->srcenc = $srcenc; - $this->tgtenc = $tgtenc; - } - // }}} - - /** - * Sets the mode of the parser. - * - * Possible modes are: - * - func - * - event - * - * You can set the mode using the second parameter - * in the constructor. - * - * This method is only needed, when switching to a new - * mode at a later point. - * - * @param string $mode mode, either 'func' or 'event' - * - * @return boolean|object true on success, PEAR_Error otherwise - * @access public - */ - function setMode($mode) - { - if ($mode != 'func' && $mode != 'event') { - $this->raiseError('Unsupported mode given', - XML_PARSER_ERROR_UNSUPPORTED_MODE); - } - - $this->mode = $mode; - return true; - } - - /** - * Sets the object, that will handle the XML events - * - * This allows you to create a handler object independent of the - * parser object that you are using and easily switch the underlying - * parser. - * - * If no object will be set, XML_Parser assumes that you - * extend this class and handle the events in $this. - * - * @param object &$obj object to handle the events - * - * @return boolean will always return true - * @access public - * @since v1.2.0beta3 - */ - function setHandlerObj(&$obj) - { - $this->_handlerObj = &$obj; - return true; - } - - /** - * Init the element handlers - * - * @return mixed - * @access private - */ - function _initHandlers() - { - if (!is_resource($this->parser)) { - return false; - } - - if (!is_object($this->_handlerObj)) { - $this->_handlerObj = &$this; - } - switch ($this->mode) { - - case 'func': - xml_set_object($this->parser, $this->_handlerObj); - xml_set_element_handler($this->parser, - array(&$this, 'funcStartHandler'), array(&$this, 'funcEndHandler')); - break; - - case 'event': - xml_set_object($this->parser, $this->_handlerObj); - xml_set_element_handler($this->parser, 'startHandler', 'endHandler'); - break; - default: - return $this->raiseError('Unsupported mode given', - XML_PARSER_ERROR_UNSUPPORTED_MODE); - break; - } - - /** - * set additional handlers for character data, entities, etc. - */ - foreach ($this->handler as $xml_func => $method) { - if (method_exists($this->_handlerObj, $method)) { - $xml_func = 'xml_set_' . $xml_func; - $xml_func($this->parser, $method); - } - } - } - - // {{{ _create() - - /** - * create the XML parser resource - * - * Has been moved from the constructor to avoid - * problems with object references. - * - * Furthermore it allows us returning an error - * if something fails. - * - * NOTE: uses '@' error suppresion in this method - * - * @return bool|PEAR_Error true on success, PEAR_Error otherwise - * @access private - * @see xml_parser_create - */ - function _create() - { - if ($this->srcenc === null) { - $xp = @xml_parser_create(); - } else { - $xp = @xml_parser_create($this->srcenc); - } - if (is_resource($xp)) { - if ($this->tgtenc !== null) { - if (!@xml_parser_set_option($xp, XML_OPTION_TARGET_ENCODING, - $this->tgtenc) - ) { - return $this->raiseError('invalid target encoding', - XML_PARSER_ERROR_INVALID_ENCODING); - } - } - $this->parser = $xp; - $result = $this->_initHandlers($this->mode); - if ($this->isError($result)) { - return $result; - } - xml_parser_set_option($xp, XML_OPTION_CASE_FOLDING, $this->folding); - return true; - } - if (!in_array(strtoupper($this->srcenc), $this->_validEncodings)) { - return $this->raiseError('invalid source encoding', - XML_PARSER_ERROR_INVALID_ENCODING); - } - return $this->raiseError('Unable to create XML parser resource.', - XML_PARSER_ERROR_NO_RESOURCE); - } - - // }}} - // {{{ reset() - - /** - * Reset the parser. - * - * This allows you to use one parser instance - * to parse multiple XML documents. - * - * @access public - * @return boolean|object true on success, PEAR_Error otherwise - */ - function reset() - { - $result = $this->_create(); - if ($this->isError($result)) { - return $result; - } - return true; - } - - // }}} - // {{{ setInputFile() - - /** - * Sets the input xml file to be parsed - * - * @param string $file Filename (full path) - * - * @return resource fopen handle of the given file - * @access public - * @throws XML_Parser_Error - * @see setInput(), setInputString(), parse() - */ - function setInputFile($file) - { - /** - * check, if file is a remote file - */ - if (eregi('^(http|ftp)://', substr($file, 0, 10))) { - if (!ini_get('allow_url_fopen')) { - return $this-> - raiseError('Remote files cannot be parsed, as safe mode is enabled.', - XML_PARSER_ERROR_REMOTE); - } - } - - $fp = @fopen($file, 'rb'); - if (is_resource($fp)) { - $this->fp = $fp; - return $fp; - } - return $this->raiseError('File could not be opened.', - XML_PARSER_ERROR_FILE_NOT_READABLE); - } - - // }}} - // {{{ setInputString() - - /** - * XML_Parser::setInputString() - * - * Sets the xml input from a string - * - * @param string $data a string containing the XML document - * - * @return null - */ - function setInputString($data) - { - $this->fp = $data; - return null; - } - - // }}} - // {{{ setInput() - - /** - * Sets the file handle to use with parse(). - * - * You should use setInputFile() or setInputString() if you - * pass a string - * - * @param mixed $fp Can be either a resource returned from fopen(), - * a URL, a local filename or a string. - * - * @return mixed - * @access public - * @see parse() - * @uses setInputString(), setInputFile() - */ - function setInput($fp) - { - if (is_resource($fp)) { - $this->fp = $fp; - return true; - } elseif (eregi('^[a-z]+://', substr($fp, 0, 10))) { - // see if it's an absolute URL (has a scheme at the beginning) - return $this->setInputFile($fp); - } elseif (file_exists($fp)) { - // see if it's a local file - return $this->setInputFile($fp); - } else { - // it must be a string - $this->fp = $fp; - return true; - } - - return $this->raiseError('Illegal input format', - XML_PARSER_ERROR_INVALID_INPUT); - } - - // }}} - // {{{ parse() - - /** - * Central parsing function. - * - * @return bool|PEAR_Error returns true on success, or a PEAR_Error otherwise - * @access public - */ - function parse() - { - /** - * reset the parser - */ - $result = $this->reset(); - if ($this->isError($result)) { - return $result; - } - // if $this->fp was fopened previously - if (is_resource($this->fp)) { - - while ($data = fread($this->fp, 4096)) { - if (!$this->_parseString($data, feof($this->fp))) { - $error = &$this->raiseError(); - $this->free(); - return $error; - } - } - } else { - // otherwise, $this->fp must be a string - if (!$this->_parseString($this->fp, true)) { - $error = &$this->raiseError(); - $this->free(); - return $error; - } - } - $this->free(); - - return true; - } - - /** - * XML_Parser::_parseString() - * - * @param string $data data - * @param bool $eof end-of-file flag - * - * @return bool - * @access private - * @see parseString() - **/ - function _parseString($data, $eof = false) - { - return xml_parse($this->parser, $data, $eof); - } - - // }}} - // {{{ parseString() - - /** - * XML_Parser::parseString() - * - * Parses a string. - * - * @param string $data XML data - * @param boolean $eof If set and TRUE, data is the last piece - * of data sent in this parser - * - * @return bool|PEAR_Error true on success or a PEAR Error - * @throws XML_Parser_Error - * @see _parseString() - */ - function parseString($data, $eof = false) - { - if (!isset($this->parser) || !is_resource($this->parser)) { - $this->reset(); - } - - if (!$this->_parseString($data, $eof)) { - $error = &$this->raiseError(); - $this->free(); - return $error; - } - - if ($eof === true) { - $this->free(); - } - return true; - } - - /** - * XML_Parser::free() - * - * Free the internal resources associated with the parser - * - * @return null - **/ - function free() - { - if (isset($this->parser) && is_resource($this->parser)) { - xml_parser_free($this->parser); - unset( $this->parser ); - } - if (isset($this->fp) && is_resource($this->fp)) { - fclose($this->fp); - } - unset($this->fp); - return null; - } - - /** - * XML_Parser::raiseError() - * - * Throws a XML_Parser_Error - * - * @param string $msg the error message - * @param integer $ecode the error message code - * - * @return XML_Parser_Error - **/ - function raiseError($msg = null, $ecode = 0) - { - $msg = !is_null($msg) ? $msg : $this->parser; - $err = &new XML_Parser_Error($msg, $ecode); - return parent::raiseError($err); - } - - // }}} - // {{{ funcStartHandler() - - /** - * derives and calls the Start Handler function - * - * @param mixed $xp ?? - * @param mixed $elem ?? - * @param mixed $attribs ?? - * - * @return void - */ - function funcStartHandler($xp, $elem, $attribs) - { - $func = 'xmltag... [truncated message content] |