From 80e14346a55f439896dd01553ed4e30db12d93d3 Mon Sep 17 00:00:00 2001 From: Garvin Hicking Date: Wed, 2 Aug 2006 10:07:34 +0000 Subject: [PATCH] Also support "last X" REST interface --- bundled-libs/.current_version | 11 + bundled-libs/Cache/BUNDLE_NOTICE | 8 + bundled-libs/Cache/Lite.php | 755 ++ bundled-libs/Cache/Lite/Function.php | 111 + bundled-libs/Cache/Lite/Output.php | 73 + bundled-libs/HTTP/BUNDLE_NOTICE | 10 + bundled-libs/HTTP/Request.php | 1191 +++ bundled-libs/HTTP/Request/Listener.php | 96 + bundled-libs/Net/BUNDLE_NOTICE | 9 + bundled-libs/Net/CheckIP.php | 75 + bundled-libs/Net/DNSBL.php | 153 + bundled-libs/Net/DNSBL/BUNDLE_NOTICE | 13 + bundled-libs/Net/DNSBL/SURBL.php | 164 + bundled-libs/Net/Socket.php | 528 ++ bundled-libs/Net/URL.php | 410 + bundled-libs/Onyx/RSS.php | 394 + bundled-libs/PEAR.php | 1061 +++ bundled-libs/Smarty/BUGS | 7 + bundled-libs/Smarty/COPYING.lib | 458 + bundled-libs/Smarty/ChangeLog | 7649 +++++++++++++++++ bundled-libs/Smarty/FAQ | 284 + bundled-libs/Smarty/INSTALL | 29 + bundled-libs/Smarty/NEWS | 960 +++ bundled-libs/Smarty/README | 80 + bundled-libs/Smarty/RELEASE_NOTES | 428 + .../Smarty/libs/Config_File.class.php | 389 + bundled-libs/Smarty/libs/Smarty.class.php | 1944 +++++ .../Smarty/libs/Smarty_Compiler.class.php | 2316 +++++ bundled-libs/Smarty/libs/debug.tpl | 64 + .../core.assemble_plugin_filepath.php | 67 + .../core.assign_smarty_interface.php | 43 + .../internals/core.create_dir_structure.php | 79 + .../internals/core.display_debug_console.php | 61 + .../libs/internals/core.get_include_path.php | 44 + .../libs/internals/core.get_microtime.php | 23 + .../libs/internals/core.get_php_resource.php | 80 + .../Smarty/libs/internals/core.is_secure.php | 59 + .../Smarty/libs/internals/core.is_trusted.php | 47 + .../libs/internals/core.load_plugins.php | 125 + .../internals/core.load_resource_plugin.php | 74 + .../internals/core.process_cached_inserts.php | 71 + .../core.process_compiled_include.php | 37 + .../libs/internals/core.read_cache_file.php | 101 + .../Smarty/libs/internals/core.rm_auto.php | 71 + .../Smarty/libs/internals/core.rmdir.php | 54 + .../internals/core.run_insert_handler.php | 71 + .../internals/core.smarty_include_php.php | 50 + .../libs/internals/core.write_cache_file.php | 96 + .../internals/core.write_compiled_include.php | 91 + .../core.write_compiled_resource.php | 35 + .../Smarty/libs/internals/core.write_file.php | 54 + .../Smarty/libs/plugins/block.textformat.php | 103 + .../Smarty/libs/plugins/compiler.assign.php | 40 + .../plugins/function.assign_debug_info.php | 40 + .../libs/plugins/function.config_load.php | 142 + .../Smarty/libs/plugins/function.counter.php | 80 + .../Smarty/libs/plugins/function.cycle.php | 102 + .../Smarty/libs/plugins/function.debug.php | 35 + .../Smarty/libs/plugins/function.eval.php | 49 + .../Smarty/libs/plugins/function.fetch.php | 221 + .../libs/plugins/function.html_checkboxes.php | 143 + .../libs/plugins/function.html_image.php | 142 + .../libs/plugins/function.html_options.php | 122 + .../libs/plugins/function.html_radios.php | 156 + .../plugins/function.html_select_date.php | 323 + .../plugins/function.html_select_time.php | 194 + .../libs/plugins/function.html_table.php | 137 + .../Smarty/libs/plugins/function.mailto.php | 163 + .../Smarty/libs/plugins/function.math.php | 84 + .../Smarty/libs/plugins/function.popup.php | 119 + .../libs/plugins/function.popup_init.php | 40 + .../libs/plugins/modifier.capitalize.php | 43 + .../Smarty/libs/plugins/modifier.cat.php | 33 + .../plugins/modifier.count_characters.php | 32 + .../plugins/modifier.count_paragraphs.php | 29 + .../libs/plugins/modifier.count_sentences.php | 29 + .../libs/plugins/modifier.count_words.php | 33 + .../libs/plugins/modifier.date_format.php | 49 + .../libs/plugins/modifier.debug_print_var.php | 57 + .../Smarty/libs/plugins/modifier.default.php | 32 + .../Smarty/libs/plugins/modifier.escape.php | 93 + .../Smarty/libs/plugins/modifier.indent.php | 28 + .../Smarty/libs/plugins/modifier.lower.php | 26 + .../Smarty/libs/plugins/modifier.nl2br.php | 35 + .../libs/plugins/modifier.regex_replace.php | 35 + .../Smarty/libs/plugins/modifier.replace.php | 30 + .../Smarty/libs/plugins/modifier.spacify.php | 30 + .../libs/plugins/modifier.string_format.php | 29 + .../Smarty/libs/plugins/modifier.strip.php | 33 + .../libs/plugins/modifier.strip_tags.php | 32 + .../Smarty/libs/plugins/modifier.truncate.php | 50 + .../Smarty/libs/plugins/modifier.upper.php | 26 + .../Smarty/libs/plugins/modifier.wordwrap.php | 29 + .../plugins/outputfilter.trimwhitespace.php | 75 + .../plugins/shared.escape_special_chars.php | 31 + .../libs/plugins/shared.make_timestamp.php | 46 + bundled-libs/Text/BUNDLE_NOTICE | 7 + bundled-libs/Text/Wiki.php | 1271 +++ bundled-libs/Text/Wiki/Parse.php | 253 + .../Text/Wiki/Parse/Default/Anchor.php | 67 + .../Text/Wiki/Parse/Default/Blockquote.php | 163 + bundled-libs/Text/Wiki/Parse/Default/Bold.php | 61 + .../Text/Wiki/Parse/Default/Break.php | 54 + .../Text/Wiki/Parse/Default/Center.php | 60 + bundled-libs/Text/Wiki/Parse/Default/Code.php | 81 + .../Text/Wiki/Parse/Default/Colortext.php | 74 + .../Text/Wiki/Parse/Default/Deflist.php | 104 + .../Text/Wiki/Parse/Default/Delimiter.php | 62 + .../Text/Wiki/Parse/Default/Embed.php | 88 + .../Text/Wiki/Parse/Default/Emphasis.php | 67 + .../Text/Wiki/Parse/Default/Freelink.php | 111 + .../Text/Wiki/Parse/Default/Function.php | 115 + .../Text/Wiki/Parse/Default/Heading.php | 89 + .../Text/Wiki/Parse/Default/Horiz.php | 52 + bundled-libs/Text/Wiki/Parse/Default/Html.php | 57 + .../Text/Wiki/Parse/Default/Image.php | 76 + .../Text/Wiki/Parse/Default/Include.php | 84 + .../Text/Wiki/Parse/Default/Interwiki.php | 120 + .../Text/Wiki/Parse/Default/Italic.php | 67 + bundled-libs/Text/Wiki/Parse/Default/List.php | 230 + .../Text/Wiki/Parse/Default/Newline.php | 57 + .../Text/Wiki/Parse/Default/Paragraph.php | 128 + .../Text/Wiki/Parse/Default/Phplookup.php | 58 + .../Text/Wiki/Parse/Default/Prefilter.php | 62 + bundled-libs/Text/Wiki/Parse/Default/Raw.php | 55 + .../Text/Wiki/Parse/Default/Revise.php | 130 + .../Text/Wiki/Parse/Default/Strong.php | 67 + .../Text/Wiki/Parse/Default/Superscript.php | 67 + .../Text/Wiki/Parse/Default/Table.php | 208 + .../Text/Wiki/Parse/Default/Tighten.php | 32 + bundled-libs/Text/Wiki/Parse/Default/Toc.php | 112 + bundled-libs/Text/Wiki/Parse/Default/Tt.php | 69 + bundled-libs/Text/Wiki/Parse/Default/Url.php | 265 + .../Text/Wiki/Parse/Default/Wikilink.php | 158 + bundled-libs/Text/Wiki/Render.php | 167 + bundled-libs/Text/Wiki/Render/Latex.php | 90 + .../Text/Wiki/Render/Latex/Anchor.php | 33 + .../Text/Wiki/Render/Latex/Blockquote.php | 36 + bundled-libs/Text/Wiki/Render/Latex/Bold.php | 4 + bundled-libs/Text/Wiki/Render/Latex/Break.php | 24 + .../Text/Wiki/Render/Latex/Center.php | 33 + bundled-libs/Text/Wiki/Render/Latex/Code.php | 26 + .../Text/Wiki/Render/Latex/Colortext.php | 58 + .../Text/Wiki/Render/Latex/Deflist.php | 53 + .../Text/Wiki/Render/Latex/Delimiter.php | 25 + bundled-libs/Text/Wiki/Render/Latex/Embed.php | 23 + .../Text/Wiki/Render/Latex/Emphasis.php | 29 + .../Text/Wiki/Render/Latex/Freelink.php | 34 + .../Text/Wiki/Render/Latex/Function.php | 23 + .../Text/Wiki/Render/Latex/Heading.php | 33 + bundled-libs/Text/Wiki/Render/Latex/Horiz.php | 23 + bundled-libs/Text/Wiki/Render/Latex/Html.php | 25 + bundled-libs/Text/Wiki/Render/Latex/Image.php | 70 + .../Text/Wiki/Render/Latex/Include.php | 8 + .../Text/Wiki/Render/Latex/Interwiki.php | 60 + .../Text/Wiki/Render/Latex/Italic.php | 5 + bundled-libs/Text/Wiki/Render/Latex/List.php | 57 + .../Text/Wiki/Render/Latex/Newline.php | 12 + .../Text/Wiki/Render/Latex/Paragraph.php | 31 + .../Text/Wiki/Render/Latex/Phplookup.php | 34 + .../Text/Wiki/Render/Latex/Prefilter.php | 40 + bundled-libs/Text/Wiki/Render/Latex/Raw.php | 23 + .../Text/Wiki/Render/Latex/Revise.php | 38 + .../Text/Wiki/Render/Latex/Strong.php | 30 + .../Text/Wiki/Render/Latex/Superscript.php | 31 + bundled-libs/Text/Wiki/Render/Latex/Table.php | 93 + .../Text/Wiki/Render/Latex/Tighten.php | 9 + bundled-libs/Text/Wiki/Render/Latex/Toc.php | 30 + bundled-libs/Text/Wiki/Render/Latex/Tt.php | 30 + bundled-libs/Text/Wiki/Render/Latex/Url.php | 35 + .../Text/Wiki/Render/Latex/Wikilink.php | 60 + bundled-libs/Text/Wiki/Render/Plain.php | 16 + .../Text/Wiki/Render/Plain/Anchor.php | 23 + .../Text/Wiki/Render/Plain/Blockquote.php | 39 + bundled-libs/Text/Wiki/Render/Plain/Bold.php | 23 + bundled-libs/Text/Wiki/Render/Plain/Break.php | 24 + .../Text/Wiki/Render/Plain/Center.php | 23 + bundled-libs/Text/Wiki/Render/Plain/Code.php | 24 + .../Text/Wiki/Render/Plain/Colortext.php | 23 + .../Text/Wiki/Render/Plain/Deflist.php | 59 + .../Text/Wiki/Render/Plain/Delimiter.php | 23 + bundled-libs/Text/Wiki/Render/Plain/Embed.php | 23 + .../Text/Wiki/Render/Plain/Emphasis.php | 23 + .../Text/Wiki/Render/Plain/Freelink.php | 23 + .../Text/Wiki/Render/Plain/Function.php | 39 + .../Text/Wiki/Render/Plain/Heading.php | 14 + bundled-libs/Text/Wiki/Render/Plain/Horiz.php | 23 + bundled-libs/Text/Wiki/Render/Plain/Html.php | 24 + bundled-libs/Text/Wiki/Render/Plain/Image.php | 22 + .../Text/Wiki/Render/Plain/Include.php | 8 + .../Text/Wiki/Render/Plain/Interwiki.php | 23 + .../Text/Wiki/Render/Plain/Italic.php | 23 + bundled-libs/Text/Wiki/Render/Plain/List.php | 68 + .../Text/Wiki/Render/Plain/Newline.php | 12 + .../Text/Wiki/Render/Plain/Paragraph.php | 31 + .../Text/Wiki/Render/Plain/Phplookup.php | 25 + .../Text/Wiki/Render/Plain/Prefilter.php | 40 + bundled-libs/Text/Wiki/Render/Plain/Raw.php | 23 + .../Text/Wiki/Render/Plain/Revise.php | 24 + .../Text/Wiki/Render/Plain/Strong.php | 24 + .../Text/Wiki/Render/Plain/Superscript.php | 23 + bundled-libs/Text/Wiki/Render/Plain/Table.php | 57 + .../Text/Wiki/Render/Plain/Tighten.php | 10 + bundled-libs/Text/Wiki/Render/Plain/Toc.php | 39 + bundled-libs/Text/Wiki/Render/Plain/Tt.php | 24 + bundled-libs/Text/Wiki/Render/Plain/Url.php | 25 + .../Text/Wiki/Render/Plain/Wikilink.php | 24 + bundled-libs/Text/Wiki/Render/Xhtml.php | 33 + .../Text/Wiki/Render/Xhtml/Anchor.php | 37 + .../Text/Wiki/Render/Xhtml/Blockquote.php | 46 + bundled-libs/Text/Wiki/Render/Xhtml/Bold.php | 34 + bundled-libs/Text/Wiki/Render/Xhtml/Break.php | 29 + .../Text/Wiki/Render/Xhtml/Center.php | 29 + bundled-libs/Text/Wiki/Render/Xhtml/Code.php | 102 + .../Text/Wiki/Render/Xhtml/Colortext.php | 56 + .../Text/Wiki/Render/Xhtml/Deflist.php | 64 + .../Text/Wiki/Render/Xhtml/Delimiter.php | 23 + bundled-libs/Text/Wiki/Render/Xhtml/Embed.php | 23 + .../Text/Wiki/Render/Xhtml/Emphasis.php | 35 + .../Text/Wiki/Render/Xhtml/Freelink.php | 9 + .../Text/Wiki/Render/Xhtml/Function.php | 87 + .../Text/Wiki/Render/Xhtml/Heading.php | 29 + bundled-libs/Text/Wiki/Render/Xhtml/Horiz.php | 28 + bundled-libs/Text/Wiki/Render/Xhtml/Html.php | 24 + bundled-libs/Text/Wiki/Render/Xhtml/Image.php | 151 + .../Text/Wiki/Render/Xhtml/Include.php | 8 + .../Text/Wiki/Render/Xhtml/Interwiki.php | 74 + .../Text/Wiki/Render/Xhtml/Italic.php | 34 + bundled-libs/Text/Wiki/Render/Xhtml/List.php | 142 + .../Text/Wiki/Render/Xhtml/Newline.php | 12 + .../Text/Wiki/Render/Xhtml/Paragraph.php | 36 + .../Text/Wiki/Render/Xhtml/Phplookup.php | 59 + .../Text/Wiki/Render/Xhtml/Prefilter.php | 40 + bundled-libs/Text/Wiki/Render/Xhtml/Raw.php | 23 + .../Text/Wiki/Render/Xhtml/Revise.php | 45 + .../Text/Wiki/Render/Xhtml/Strong.php | 35 + .../Text/Wiki/Render/Xhtml/Superscript.php | 34 + bundled-libs/Text/Wiki/Render/Xhtml/Table.php | 98 + .../Text/Wiki/Render/Xhtml/Tighten.php | 10 + bundled-libs/Text/Wiki/Render/Xhtml/Toc.php | 80 + bundled-libs/Text/Wiki/Render/Xhtml/Tt.php | 35 + bundled-libs/Text/Wiki/Render/Xhtml/Url.php | 91 + .../Text/Wiki/Render/Xhtml/Wikilink.php | 137 + bundled-libs/Text/Wiki/Rule.php | 345 + bundled-libs/Text/Wiki/Rule/blockquote.php | 209 + bundled-libs/Text/Wiki/Rule/bold.php | 103 + bundled-libs/Text/Wiki/Rule/break.php | 90 + bundled-libs/Text/Wiki/Rule/center.php | 98 + bundled-libs/Text/Wiki/Rule/code.php | 177 + bundled-libs/Text/Wiki/Rule/colortext.php | 139 + bundled-libs/Text/Wiki/Rule/deflist.php | 172 + bundled-libs/Text/Wiki/Rule/delimiter.php | 95 + bundled-libs/Text/Wiki/Rule/embed.php | 102 + bundled-libs/Text/Wiki/Rule/emphasis.php | 103 + bundled-libs/Text/Wiki/Rule/entities.php | 57 + bundled-libs/Text/Wiki/Rule/freelink.php | 179 + bundled-libs/Text/Wiki/Rule/heading.php | 119 + bundled-libs/Text/Wiki/Rule/horiz.php | 88 + bundled-libs/Text/Wiki/Rule/html.php | 93 + bundled-libs/Text/Wiki/Rule/image.php | 136 + bundled-libs/Text/Wiki/Rule/include.php | 80 + bundled-libs/Text/Wiki/Rule/interwiki.php | 195 + bundled-libs/Text/Wiki/Rule/italic.php | 103 + bundled-libs/Text/Wiki/Rule/list.php | 295 + bundled-libs/Text/Wiki/Rule/newline.php | 91 + bundled-libs/Text/Wiki/Rule/paragraph.php | 141 + bundled-libs/Text/Wiki/Rule/phpcode.php | 133 + bundled-libs/Text/Wiki/Rule/phplookup.php | 93 + bundled-libs/Text/Wiki/Rule/prefilter.php | 77 + bundled-libs/Text/Wiki/Rule/raw.php | 91 + bundled-libs/Text/Wiki/Rule/revise.php | 182 + bundled-libs/Text/Wiki/Rule/strong.php | 103 + bundled-libs/Text/Wiki/Rule/superscript.php | 103 + bundled-libs/Text/Wiki/Rule/table.php | 249 + bundled-libs/Text/Wiki/Rule/tighten.php | 50 + bundled-libs/Text/Wiki/Rule/toc.php | 352 + bundled-libs/Text/Wiki/Rule/tt.php | 102 + bundled-libs/Text/Wiki/Rule/url.php | 316 + bundled-libs/Text/Wiki/Rule/wikilink.php | 241 + bundled-libs/XML/BUNDLE_NOTICE | 8 + bundled-libs/XML/RPC.php | 1951 +++++ bundled-libs/XML/RPC/Dump.php | 187 + bundled-libs/XML/RPC/Server.php | 628 ++ bundled-libs/YahooUI/treeview/YAHOO.js | 63 + bundled-libs/YahooUI/treeview/license.txt | 35 + bundled-libs/YahooUI/treeview/treeview.js | 1490 ++++ bundled-libs/create_release.sh | 105 + bundled-libs/docs/HomePage.wiki.txt | 263 + bundled-libs/docs/SamplePage.wiki.txt | 374 + bundled-libs/docs/SmashWordsTogether.wiki.txt | 1 + bundled-libs/docs/TextWikiProposal.wiki.txt | 151 + bundled-libs/docs/TokenRuleKeys.wiki.txt | 57 + bundled-libs/docs/WikiPage.wiki.txt | 1 + .../docs/WordsSmashedTogether.wiki.txt | 1 + bundled-libs/docs/free links.wiki.txt | 1 + bundled-libs/docs/index.php | 77 + bundled-libs/docs/stylesheet.css | 69 + bundled-libs/dragdrop.js | 802 ++ bundled-libs/imgedit.js | 302 + bundled-libs/tests/README | 4 + comment.php | 166 + deployment/archives/.ignore | 0 deployment/comment.php | 8 + deployment/exit.php | 8 + deployment/index.php | 8 + deployment/rss.php | 8 + deployment/serendipity.css.php | 8 + deployment/serendipity_admin.php | 8 + .../serendipity_admin_image_selector.php | 8 + deployment/serendipity_config.inc.php | 10 + deployment/serendipity_define.js.php | 8 + deployment/serendipity_editor.js | 301 + deployment/serendipity_xmlrpc.php | 8 + deployment/templates_c/.ignore | 0 deployment/uploads/.ignore | 0 deployment/wfwcomment.php | 8 + docs/CHANGED_FILES | 248 + docs/INSTALL | 5 + docs/INSTALL_EMBEDED | 6 + docs/INSTALL_SHARED | 5 + docs/LICENSE | 24 + docs/NEWS | 2439 ++++++ docs/NEWS_OLD | 523 ++ docs/README | 6 + docs/UPGRADE | 5 + docs/upgrade.sh | 188 + exit.php | 34 + htmlarea/ChangeLog | 1185 +++ htmlarea/dialog.js | 73 + htmlarea/examples/2-areas.html | 158 + htmlarea/examples/context-menu.html | 95 + htmlarea/examples/core.html | 184 + htmlarea/examples/css.html | 88 + htmlarea/examples/custom.css | 29 + htmlarea/examples/full-page.html | 77 + htmlarea/examples/fully-loaded.html | 262 + htmlarea/examples/index.html | 29 + htmlarea/examples/spell-checker.html | 132 + htmlarea/examples/table-operations.html | 116 + htmlarea/htmlarea.css | 180 + htmlarea/htmlarea.js | 2554 ++++++ htmlarea/images/ed_about.gif | Bin 0 -> 87 bytes htmlarea/images/ed_align_center.gif | Bin 0 -> 69 bytes htmlarea/images/ed_align_justify.gif | Bin 0 -> 69 bytes htmlarea/images/ed_align_left.gif | Bin 0 -> 69 bytes htmlarea/images/ed_align_right.gif | Bin 0 -> 68 bytes htmlarea/images/ed_blank.gif | Bin 0 -> 56 bytes htmlarea/images/ed_charmap.gif | Bin 0 -> 143 bytes htmlarea/images/ed_color_bg.gif | Bin 0 -> 181 bytes htmlarea/images/ed_color_fg.gif | Bin 0 -> 171 bytes htmlarea/images/ed_copy.gif | Bin 0 -> 110 bytes htmlarea/images/ed_custom.gif | Bin 0 -> 67 bytes htmlarea/images/ed_cut.gif | Bin 0 -> 91 bytes htmlarea/images/ed_delete.gif | Bin 0 -> 90 bytes htmlarea/images/ed_format_bold.gif | Bin 0 -> 74 bytes htmlarea/images/ed_format_italic.gif | Bin 0 -> 77 bytes htmlarea/images/ed_format_strike.gif | Bin 0 -> 78 bytes htmlarea/images/ed_format_sub.gif | Bin 0 -> 78 bytes htmlarea/images/ed_format_sup.gif | Bin 0 -> 77 bytes htmlarea/images/ed_format_underline.gif | Bin 0 -> 85 bytes htmlarea/images/ed_help.gif | Bin 0 -> 70 bytes htmlarea/images/ed_hr.gif | Bin 0 -> 70 bytes htmlarea/images/ed_html.gif | Bin 0 -> 75 bytes htmlarea/images/ed_image.gif | Bin 0 -> 148 bytes htmlarea/images/ed_indent_less.gif | Bin 0 -> 87 bytes htmlarea/images/ed_indent_more.gif | Bin 0 -> 87 bytes htmlarea/images/ed_killword.gif | Bin 0 -> 154 bytes htmlarea/images/ed_left_to_right.gif | Bin 0 -> 89 bytes htmlarea/images/ed_link.gif | Bin 0 -> 97 bytes htmlarea/images/ed_list_bullet.gif | Bin 0 -> 80 bytes htmlarea/images/ed_list_num.gif | Bin 0 -> 82 bytes htmlarea/images/ed_paste.gif | Bin 0 -> 139 bytes htmlarea/images/ed_print.gif | Bin 0 -> 128 bytes htmlarea/images/ed_redo.gif | Bin 0 -> 80 bytes htmlarea/images/ed_right_to_left.gif | Bin 0 -> 88 bytes htmlarea/images/ed_rmformat.gif | Bin 0 -> 118 bytes htmlarea/images/ed_s9yimage.gif | Bin 0 -> 132 bytes htmlarea/images/ed_save.gif | Bin 0 -> 143 bytes htmlarea/images/ed_save.png | Bin 0 -> 230 bytes htmlarea/images/ed_show_border.gif | Bin 0 -> 104 bytes htmlarea/images/ed_splitcel.gif | Bin 0 -> 143 bytes htmlarea/images/ed_undo.gif | Bin 0 -> 81 bytes htmlarea/images/fullscreen_maximize.gif | Bin 0 -> 97 bytes htmlarea/images/fullscreen_minimize.gif | Bin 0 -> 97 bytes htmlarea/images/insert_table.gif | Bin 0 -> 121 bytes htmlarea/index.html | 210 + htmlarea/lang/b5.js | 36 + htmlarea/lang/ch.js | 83 + htmlarea/lang/cs-iso.js | 63 + htmlarea/lang/cs-utf.js | 63 + htmlarea/lang/cs-win.js | 63 + htmlarea/lang/cz.js | 63 + htmlarea/lang/da-utf.js | 38 + htmlarea/lang/da.js | 38 + htmlarea/lang/de-utf.js | 80 + htmlarea/lang/de.js | 80 + htmlarea/lang/ee.js | 63 + htmlarea/lang/el.js | 75 + htmlarea/lang/en.js | 147 + htmlarea/lang/es-utf.js | 51 + htmlarea/lang/es.js | 51 + htmlarea/lang/fi.js | 47 + htmlarea/lang/fr-utf.js | 97 + htmlarea/lang/fr.js | 97 + htmlarea/lang/gb.js | 36 + htmlarea/lang/he.js | 89 + htmlarea/lang/hu.js | 90 + htmlarea/lang/it-utf.js | 79 + htmlarea/lang/it.js | 79 + htmlarea/lang/ja-euc.js | 141 + htmlarea/lang/ja-jis.js | 141 + htmlarea/lang/ja-sjis.js | 141 + htmlarea/lang/ja-utf8.js | 141 + htmlarea/lang/lt.js | 77 + htmlarea/lang/lv.js | 55 + htmlarea/lang/nb.js | 36 + htmlarea/lang/nl-utf.js | 90 + htmlarea/lang/nl.js | 90 + htmlarea/lang/no-utf.js | 79 + htmlarea/lang/no.js | 79 + htmlarea/lang/pl.js | 36 + htmlarea/lang/pt_br.js | 144 + htmlarea/lang/pt_pt-utf.js | 143 + htmlarea/lang/pt_pt.js | 143 + htmlarea/lang/ro.js | 80 + htmlarea/lang/ru.js | 63 + htmlarea/lang/se-utf.js | 79 + htmlarea/lang/se.js | 79 + htmlarea/lang/si.js | 63 + htmlarea/lang/vn.js | 77 + htmlarea/license.txt | 30 + htmlarea/plugins/CSS/css.js | 116 + htmlarea/plugins/CSS/lang/en.js | 2 + htmlarea/plugins/ContextMenu/context-menu.js | 445 + htmlarea/plugins/ContextMenu/lang/de.js | 59 + htmlarea/plugins/ContextMenu/lang/el.js | 57 + htmlarea/plugins/ContextMenu/lang/en.js | 70 + htmlarea/plugins/ContextMenu/lang/nl.js | 66 + htmlarea/plugins/ContextMenu/lang/pt_br.js | 61 + htmlarea/plugins/ContextMenu/menu.css | 65 + htmlarea/plugins/FullPage/full-page.js | 177 + htmlarea/plugins/FullPage/img/docprop.gif | Bin 0 -> 302 bytes htmlarea/plugins/FullPage/lang/en.js | 25 + htmlarea/plugins/FullPage/lang/pt_br.js | 25 + htmlarea/plugins/FullPage/lang/pt_pt.js | 26 + htmlarea/plugins/FullPage/lang/ro.js | 25 + htmlarea/plugins/FullPage/popups/docprop.html | 143 + htmlarea/plugins/FullPage/test.html | 89 + .../TableOperations/img/cell-delete.gif | Bin 0 -> 101 bytes .../TableOperations/img/cell-insert-after.gif | Bin 0 -> 118 bytes .../img/cell-insert-before.gif | Bin 0 -> 118 bytes .../TableOperations/img/cell-merge.gif | Bin 0 -> 896 bytes .../plugins/TableOperations/img/cell-prop.gif | Bin 0 -> 155 bytes .../TableOperations/img/cell-split.gif | Bin 0 -> 907 bytes .../TableOperations/img/col-delete.gif | Bin 0 -> 100 bytes .../TableOperations/img/col-insert-after.gif | Bin 0 -> 111 bytes .../TableOperations/img/col-insert-before.gif | Bin 0 -> 110 bytes .../plugins/TableOperations/img/col-split.gif | Bin 0 -> 908 bytes .../TableOperations/img/row-delete.gif | Bin 0 -> 104 bytes .../TableOperations/img/row-insert-above.gif | Bin 0 -> 116 bytes .../TableOperations/img/row-insert-under.gif | Bin 0 -> 115 bytes .../plugins/TableOperations/img/row-prop.gif | Bin 0 -> 149 bytes .../plugins/TableOperations/img/row-split.gif | Bin 0 -> 895 bytes .../TableOperations/img/table-prop.gif | Bin 0 -> 145 bytes htmlarea/plugins/TableOperations/lang/cz.js | 90 + htmlarea/plugins/TableOperations/lang/da.js | 90 + htmlarea/plugins/TableOperations/lang/de.js | 81 + htmlarea/plugins/TableOperations/lang/el.js | 81 + htmlarea/plugins/TableOperations/lang/en.js | 90 + htmlarea/plugins/TableOperations/lang/fi.js | 66 + htmlarea/plugins/TableOperations/lang/hu.js | 63 + htmlarea/plugins/TableOperations/lang/it.js | 81 + htmlarea/plugins/TableOperations/lang/nl.js | 90 + htmlarea/plugins/TableOperations/lang/no.js | 91 + .../plugins/TableOperations/lang/pt_br.js | 89 + .../plugins/TableOperations/lang/pt_pt.js | 90 + htmlarea/plugins/TableOperations/lang/ro.js | 90 + .../TableOperations/table-operations.js | 1160 +++ htmlarea/popupdiv.js | 369 + htmlarea/popups/about.html | 392 + htmlarea/popups/blank.html | 2 + htmlarea/popups/custom2.html | 35 + htmlarea/popups/editor_help.html | 16 + htmlarea/popups/fullscreen.html | 139 + htmlarea/popups/insert_image.html | 191 + htmlarea/popups/insert_table.html | 175 + htmlarea/popups/link.html | 155 + htmlarea/popups/old-fullscreen.html | 131 + htmlarea/popups/old_insert_image.html | 206 + htmlarea/popups/popup.js | 114 + htmlarea/popups/select_color.html | 347 + htmlarea/popupwin.js | 139 + htmlarea/reference.html | 523 ++ htmlarea/release-notes.html | 209 + include/admin/category.inc.php | 285 + include/admin/comments.inc.php | 421 + include/admin/configuration.inc.php | 77 + include/admin/entries.inc.php | 487 ++ include/admin/entries_overview.inc.php | 12 + include/admin/export.inc.php | 15 + include/admin/groups.inc.php | 207 + include/admin/images.inc.php | 775 ++ include/admin/import.inc.php | 268 + include/admin/importers/b2evolution.inc.php | 296 + include/admin/importers/bblog.inc.php | 263 + include/admin/importers/blogger.inc.php | 257 + include/admin/importers/bmachine.inc.php | 255 + include/admin/importers/geeklog.inc.php | 245 + include/admin/importers/generic.inc.php | 148 + include/admin/importers/livejournal.inc.php | 215 + include/admin/importers/movabletype.inc.php | 475 + include/admin/importers/nucleus.inc.php | 244 + include/admin/importers/phpbb.inc.php | 308 + include/admin/importers/pivot.inc.php | 202 + include/admin/importers/pmachine.inc.php | 252 + include/admin/importers/sunlog.inc.php | 276 + include/admin/importers/textpattern.inc.php | 251 + include/admin/importers/voodoopad.inc.php | 267 + include/admin/importers/wordpress-pg.inc.php | 254 + include/admin/importers/wordpress.inc.php | 255 + include/admin/installer.inc.php | 520 ++ include/admin/overview.inc.php | 42 + include/admin/personal.inc.php | 105 + include/admin/plugins.inc.php | 481 ++ include/admin/templates.inc.php | 182 + include/admin/upgrader.inc.php | 361 + include/admin/users.inc.php | 307 + include/compat.inc.php | 293 + include/db/db.inc.php | 153 + include/db/mysql.inc.php | 363 + include/db/mysqli.inc.php | 331 + include/db/postgres.inc.php | 336 + include/db/sqlite.inc.php | 384 + include/functions.inc.php | 1126 +++ include/functions_calendars.inc.php | 511 ++ include/functions_comments.inc.php | 754 ++ include/functions_config.inc.php | 1819 ++++ include/functions_entries.inc.php | 1507 ++++ include/functions_entries_admin.inc.php | 565 ++ include/functions_images.inc.php | 3268 +++++++ include/functions_images_crop.inc.php | 451 + include/functions_installer.inc.php | 1162 +++ include/functions_permalinks.inc.php | 756 ++ include/functions_plugins_admin.inc.php | 595 ++ include/functions_rss.inc.php | 138 + include/functions_smarty.inc.php | 811 ++ include/functions_trackbacks.inc.php | 511 ++ include/functions_upgrader.inc.php | 149 + include/genpage.inc.php | 118 + include/lang.inc.php | 100 + include/plugin_api.inc.php | 1548 ++++ include/plugin_api_extension.inc.php | 154 + include/plugin_internal.inc.php | 1680 ++++ include/template_api.inc.php | 299 + include/tpl/config_local.inc.php | 576 ++ include/tpl/config_personal.inc.php | 154 + include/tpl/htaccess_cgi_errordocs.tpl | 25 + include/tpl/htaccess_cgi_normal.tpl | 24 + include/tpl/htaccess_cgi_rewrite.tpl | 49 + include/tpl/htaccess_errordocs.tpl | 27 + include/tpl/htaccess_normal.tpl | 26 + include/tpl/htaccess_rewrite.tpl | 51 + index.php | 568 ++ lang/UTF-8/plugin_lang.php | 155 + lang/UTF-8/recode.php | 90 + lang/UTF-8/recode.sh | 3 + lang/UTF-8/serendipity_lang_bg.inc.php | 868 ++ lang/UTF-8/serendipity_lang_cn.inc.php | 881 ++ lang/UTF-8/serendipity_lang_cs.inc.php | 893 ++ lang/UTF-8/serendipity_lang_cz.inc.php | 893 ++ lang/UTF-8/serendipity_lang_da.inc.php | 881 ++ lang/UTF-8/serendipity_lang_de.inc.php | 877 ++ lang/UTF-8/serendipity_lang_en.inc.php | 876 ++ lang/UTF-8/serendipity_lang_es.inc.php | 890 ++ lang/UTF-8/serendipity_lang_fa.inc.php | 881 ++ lang/UTF-8/serendipity_lang_fi.inc.php | 879 ++ lang/UTF-8/serendipity_lang_fr.inc.php | 886 ++ lang/UTF-8/serendipity_lang_hu.inc.php | 880 ++ lang/UTF-8/serendipity_lang_is.inc.php | 880 ++ lang/UTF-8/serendipity_lang_it.inc.php | 883 ++ lang/UTF-8/serendipity_lang_ja.inc.php | 883 ++ lang/UTF-8/serendipity_lang_ko.inc.php | 882 ++ lang/UTF-8/serendipity_lang_nl.inc.php | 882 ++ lang/UTF-8/serendipity_lang_no.inc.php | 882 ++ lang/UTF-8/serendipity_lang_pl.inc.php | 880 ++ lang/UTF-8/serendipity_lang_pt.inc.php | 884 ++ lang/UTF-8/serendipity_lang_pt_PT.inc.php | 887 ++ lang/UTF-8/serendipity_lang_ro.inc.php | 880 ++ lang/UTF-8/serendipity_lang_ru.inc.php | 883 ++ lang/UTF-8/serendipity_lang_sa.inc.php | 799 ++ lang/UTF-8/serendipity_lang_se.inc.php | 879 ++ lang/UTF-8/serendipity_lang_ta.inc.php | 879 ++ lang/UTF-8/serendipity_lang_tn.inc.php | 882 ++ lang/UTF-8/serendipity_lang_tr.inc.php | 883 ++ lang/UTF-8/serendipity_lang_tw.inc.php | 881 ++ lang/UTF-8/serendipity_lang_zh.inc.php | 880 ++ lang/addlang.sh | 14 + lang/addlang.txt | 1 + lang/append.sh | 4 + lang/plugin_lang.php | 155 + lang/serendipity_lang_bg.inc.php | 868 ++ lang/serendipity_lang_cn.inc.php | 881 ++ lang/serendipity_lang_cs.inc.php | 893 ++ lang/serendipity_lang_cz.inc.php | 893 ++ lang/serendipity_lang_da.inc.php | 881 ++ lang/serendipity_lang_de.inc.php | 877 ++ lang/serendipity_lang_en.inc.php | 876 ++ lang/serendipity_lang_es.inc.php | 890 ++ lang/serendipity_lang_fa.inc.php | 881 ++ lang/serendipity_lang_fi.inc.php | 879 ++ lang/serendipity_lang_fr.inc.php | 886 ++ lang/serendipity_lang_hu.inc.php | 880 ++ lang/serendipity_lang_is.inc.php | 880 ++ lang/serendipity_lang_it.inc.php | 883 ++ lang/serendipity_lang_ja.inc.php | 883 ++ lang/serendipity_lang_ko.inc.php | 882 ++ lang/serendipity_lang_nl.inc.php | 882 ++ lang/serendipity_lang_no.inc.php | 882 ++ lang/serendipity_lang_pl.inc.php | 880 ++ lang/serendipity_lang_pt.inc.php | 884 ++ lang/serendipity_lang_pt_PT.inc.php | 887 ++ lang/serendipity_lang_ro.inc.php | 880 ++ lang/serendipity_lang_ru.inc.php | 883 ++ lang/serendipity_lang_sa.inc.php | 799 ++ lang/serendipity_lang_se.inc.php | 879 ++ lang/serendipity_lang_ta.inc.php | 879 ++ lang/serendipity_lang_tn.inc.php | 882 ++ lang/serendipity_lang_tr.inc.php | 883 ++ lang/serendipity_lang_tw.inc.php | 881 ++ lang/serendipity_lang_zh.inc.php | 880 ++ .../UTF-8/lang_bg.inc.php | 13 + .../UTF-8/lang_de.inc.php | 5 + .../UTF-8/lang_es.inc.php | 12 + .../UTF-8/lang_fr.inc.php | 21 + .../UTF-8/lang_ja.inc.php | 14 + .../UTF-8/lang_ko.inc.php | 9 + .../UTF-8/lang_pl.inc.php | 13 + .../UTF-8/lang_pt_PT.inc.php | 20 + .../UTF-8/lang_tn.inc.php | 18 + .../UTF-8/lang_zh.inc.php | 18 + .../serendipity_event_bbcode/lang_bg.inc.php | 13 + .../serendipity_event_bbcode/lang_de.inc.php | 5 + .../serendipity_event_bbcode/lang_en.inc.php | 13 + .../serendipity_event_bbcode/lang_es.inc.php | 12 + .../serendipity_event_bbcode/lang_fa.inc.php | 13 + .../serendipity_event_bbcode/lang_fr.inc.php | 21 + .../serendipity_event_bbcode/lang_ja.inc.php | 14 + .../serendipity_event_bbcode/lang_ko.inc.php | 9 + .../serendipity_event_bbcode/lang_pl.inc.php | 13 + .../lang_pt_PT.inc.php | 20 + .../serendipity_event_bbcode/lang_tn.inc.php | 18 + .../serendipity_event_bbcode/lang_zh.inc.php | 18 + .../serendipity_event_bbcode.php | 295 + .../UTF-8/lang_bg.inc.php | 11 + .../UTF-8/lang_de.inc.php | 4 + .../UTF-8/lang_es.inc.php | 11 + .../UTF-8/lang_fr.inc.php | 20 + .../UTF-8/lang_ja.inc.php | 12 + .../UTF-8/lang_ko.inc.php | 8 + .../UTF-8/lang_pl.inc.php | 12 + .../UTF-8/lang_pt_PT.inc.php | 19 + .../UTF-8/lang_tn.inc.php | 17 + .../UTF-8/lang_zh.inc.php | 17 + .../lang_bg.inc.php | 11 + .../lang_de.inc.php | 4 + .../lang_en.inc.php | 12 + .../lang_es.inc.php | 11 + .../lang_fr.inc.php | 20 + .../lang_ja.inc.php | 12 + .../lang_ko.inc.php | 8 + .../lang_pl.inc.php | 12 + .../lang_pt_PT.inc.php | 19 + .../lang_tn.inc.php | 17 + .../lang_zh.inc.php | 17 + .../pngbehavior.htc | 93 + ...serendipity_event_browsercompatibility.php | 78 + .../UTF-8/lang_de.inc.php | 20 + .../UTF-8/lang_es.inc.php | 27 + .../UTF-8/lang_fr.inc.php | 36 + .../UTF-8/lang_ja.inc.php | 29 + .../UTF-8/lang_ko.inc.php | 24 + .../UTF-8/lang_pt_PT.inc.php | 35 + .../UTF-8/lang_tn.inc.php | 33 + .../UTF-8/lang_zh.inc.php | 33 + .../lang_de.inc.php | 20 + .../lang_en.inc.php | 28 + .../lang_es.inc.php | 27 + .../lang_fr.inc.php | 36 + .../lang_ja.inc.php | 28 + .../lang_ko.inc.php | 24 + .../lang_pt_PT.inc.php | 35 + .../lang_tn.inc.php | 33 + .../lang_zh.inc.php | 33 + .../serendipity_event_contentrewrite.php | 293 + .../UTF-8/lang_cn.inc.php | 30 + .../UTF-8/lang_de.inc.php | 15 + .../UTF-8/lang_es.inc.php | 22 + .../UTF-8/lang_fr.inc.php | 29 + .../UTF-8/lang_ja.inc.php | 23 + .../UTF-8/lang_ko.inc.php | 19 + .../UTF-8/lang_pl.inc.php | 23 + .../UTF-8/lang_pt_PT.inc.php | 21 + .../UTF-8/lang_tn.inc.php | 28 + .../UTF-8/lang_zh.inc.php | 30 + .../lang_cn.inc.php | 30 + .../lang_de.inc.php | 15 + .../lang_en.inc.php | 23 + .../lang_es.inc.php | 22 + .../lang_fr.inc.php | 29 + .../lang_ja.inc.php | 23 + .../lang_ko.inc.php | 19 + .../lang_pl.inc.php | 23 + .../lang_pt_PT.inc.php | 21 + .../lang_tn.inc.php | 28 + .../lang_zh.inc.php | 30 + .../serendipity_event_creativecommons.php | 346 + .../UTF-8/lang_bg.inc.php | 14 + .../UTF-8/lang_de.inc.php | 7 + .../UTF-8/lang_es.inc.php | 13 + .../UTF-8/lang_fr.inc.php | 22 + .../UTF-8/lang_is.inc.php | 9 + .../UTF-8/lang_ja.inc.php | 15 + .../UTF-8/lang_ko.inc.php | 10 + .../UTF-8/lang_pl.inc.php | 14 + .../UTF-8/lang_pt_PT.inc.php | 13 + .../UTF-8/lang_tn.inc.php | 20 + .../UTF-8/lang_zh.inc.php | 20 + .../lang_bg.inc.php | 14 + .../lang_de.inc.php | 7 + .../lang_en.inc.php | 14 + .../lang_es.inc.php | 13 + .../lang_fr.inc.php | 22 + .../lang_is.inc.php | 9 + .../lang_ja.inc.php | 15 + .../lang_ko.inc.php | 10 + .../lang_pl.inc.php | 14 + .../lang_pt_PT.inc.php | 13 + .../lang_tn.inc.php | 20 + .../lang_zh.inc.php | 20 + .../serendipity_event_emoticate.php | 202 + .../UTF-8/lang_bg.inc.php | 40 + .../UTF-8/lang_de.inc.php | 33 + .../UTF-8/lang_es.inc.php | 32 + .../UTF-8/lang_fr.inc.php | 49 + .../UTF-8/lang_ja.inc.php | 41 + .../UTF-8/lang_ko.inc.php | 27 + .../UTF-8/lang_pl.inc.php | 40 + .../UTF-8/lang_pt_PT.inc.php | 38 + .../UTF-8/lang_tn.inc.php | 46 + .../UTF-8/lang_tr.inc.php | 47 + .../UTF-8/lang_zh.inc.php | 46 + .../lang_bg.inc.php | 40 + .../lang_de.inc.php | 33 + .../lang_en.inc.php | 40 + .../lang_es.inc.php | 40 + .../lang_fr.inc.php | 49 + .../lang_ja.inc.php | 41 + .../lang_ko.inc.php | 27 + .../lang_pl.inc.php | 40 + .../lang_pt_PT.inc.php | 38 + .../lang_tn.inc.php | 46 + .../lang_tr.inc.php | 47 + .../lang_zh.inc.php | 46 + .../serendipity_event_entryproperties.php | 803 ++ .../UTF-8/lang_bg.inc.php | 49 + .../UTF-8/lang_de.inc.php | 43 + .../UTF-8/lang_es.inc.php | 49 + .../UTF-8/lang_fr.inc.php | 59 + .../UTF-8/lang_ja.inc.php | 50 + .../UTF-8/lang_ko.inc.php | 47 + .../UTF-8/lang_pl.inc.php | 50 + .../UTF-8/lang_pt_PT.inc.php | 49 + .../UTF-8/lang_tn.inc.php | 56 + .../UTF-8/lang_zh.inc.php | 56 + .../serendipity_event_karma/lang_bg.inc.php | 49 + .../serendipity_event_karma/lang_de.inc.php | 43 + .../serendipity_event_karma/lang_en.inc.php | 50 + .../serendipity_event_karma/lang_es.inc.php | 49 + .../serendipity_event_karma/lang_fa.inc.php | 50 + .../serendipity_event_karma/lang_fr.inc.php | 59 + .../serendipity_event_karma/lang_ja.inc.php | 50 + .../serendipity_event_karma/lang_ko.inc.php | 47 + .../serendipity_event_karma/lang_pl.inc.php | 50 + .../lang_pt_PT.inc.php | 49 + .../serendipity_event_karma/lang_tn.inc.php | 56 + .../serendipity_event_karma/lang_zh.inc.php | 56 + .../serendipity_event_karma.php | 615 ++ .../UTF-8/lang_bg.inc.php | 13 + .../UTF-8/lang_de.inc.php | 5 + .../UTF-8/lang_es.inc.php | 12 + .../UTF-8/lang_fr.inc.php | 21 + .../UTF-8/lang_ja.inc.php | 13 + .../UTF-8/lang_ko.inc.php | 9 + .../UTF-8/lang_nl.inc.php | 11 + .../UTF-8/lang_pl.inc.php | 13 + .../UTF-8/lang_pt_PT.inc.php | 11 + .../UTF-8/lang_tn.inc.php | 18 + .../UTF-8/lang_zh.inc.php | 18 + .../lang_bg.inc.php | 13 + .../lang_de.inc.php | 5 + .../lang_en.inc.php | 13 + .../lang_es.inc.php | 12 + .../lang_fr.inc.php | 21 + .../lang_ja.inc.php | 13 + .../lang_ko.inc.php | 9 + .../lang_nl.inc.php | 11 + .../lang_pl.inc.php | 13 + .../lang_pt_PT.inc.php | 11 + .../lang_tn.inc.php | 18 + .../lang_zh.inc.php | 18 + .../serendipity_event_livesearch.js | 157 + .../serendipity_event_livesearch.php | 166 + .../UTF-8/lang_bg.inc.php | 24 + .../UTF-8/lang_de.inc.php | 16 + .../UTF-8/lang_es.inc.php | 19 + .../UTF-8/lang_fr.inc.php | 32 + .../UTF-8/lang_ja.inc.php | 25 + .../UTF-8/lang_ko.inc.php | 16 + .../UTF-8/lang_pl.inc.php | 25 + .../UTF-8/lang_pt_PT.inc.php | 18 + .../UTF-8/lang_tn.inc.php | 25 + .../UTF-8/lang_zh.inc.php | 25 + .../serendipity_event_mailer/lang_bg.inc.php | 24 + .../serendipity_event_mailer/lang_de.inc.php | 16 + .../serendipity_event_mailer/lang_en.inc.php | 25 + .../serendipity_event_mailer/lang_es.inc.php | 22 + .../serendipity_event_mailer/lang_fr.inc.php | 32 + .../serendipity_event_mailer/lang_ja.inc.php | 25 + .../serendipity_event_mailer/lang_ko.inc.php | 16 + .../serendipity_event_mailer/lang_pl.inc.php | 25 + .../lang_pt_PT.inc.php | 18 + .../serendipity_event_mailer/lang_tn.inc.php | 25 + .../serendipity_event_mailer/lang_zh.inc.php | 25 + .../serendipity_event_mailer.php | 253 + .../UTF-8/lang_bg.inc.php | 12 + .../UTF-8/lang_de.inc.php | 4 + .../UTF-8/lang_es.inc.php | 11 + .../UTF-8/lang_fr.inc.php | 20 + .../UTF-8/lang_ja.inc.php | 13 + .../UTF-8/lang_ko.inc.php | 8 + .../UTF-8/lang_pl.inc.php | 12 + .../UTF-8/lang_pt_PT.inc.php | 19 + .../UTF-8/lang_tn.inc.php | 17 + .../UTF-8/lang_zh.inc.php | 17 + .../serendipity_event_nl2br/lang_bg.inc.php | 12 + .../serendipity_event_nl2br/lang_de.inc.php | 4 + .../serendipity_event_nl2br/lang_en.inc.php | 12 + .../serendipity_event_nl2br/lang_es.inc.php | 11 + .../serendipity_event_nl2br/lang_fr.inc.php | 20 + .../serendipity_event_nl2br/lang_ja.inc.php | 13 + .../serendipity_event_nl2br/lang_ko.inc.php | 8 + .../serendipity_event_nl2br/lang_pl.inc.php | 12 + .../lang_pt_PT.inc.php | 19 + .../serendipity_event_nl2br/lang_tn.inc.php | 17 + .../serendipity_event_nl2br/lang_zh.inc.php | 17 + .../serendipity_event_nl2br.php | 115 + .../UTF-8/lang_bg.inc.php | 12 + .../UTF-8/lang_de.inc.php | 5 + .../UTF-8/lang_es.inc.php | 12 + .../UTF-8/lang_fr.inc.php | 21 + .../UTF-8/lang_is.inc.php | 8 + .../UTF-8/lang_ja.inc.php | 14 + .../UTF-8/lang_ko.inc.php | 9 + .../UTF-8/lang_pl.inc.php | 13 + .../UTF-8/lang_pt_PT.inc.php | 22 + .../UTF-8/lang_tn.inc.php | 18 + .../UTF-8/lang_zh.inc.php | 18 + .../lang_bg.inc.php | 12 + .../lang_de.inc.php | 5 + .../lang_en.inc.php | 13 + .../lang_es.inc.php | 12 + .../lang_fr.inc.php | 21 + .../lang_is.inc.php | 8 + .../lang_ja.inc.php | 14 + .../lang_ko.inc.php | 9 + .../lang_pl.inc.php | 13 + .../lang_pt_PT.inc.php | 22 + .../lang_tn.inc.php | 18 + .../lang_zh.inc.php | 18 + .../serendipity_event_s9ymarkup.php | 144 + .../UTF-8/lang_bg.inc.php | 12 + .../UTF-8/lang_de.inc.php | 4 + .../UTF-8/lang_es.inc.php | 11 + .../UTF-8/lang_fr.inc.php | 20 + .../UTF-8/lang_ja.inc.php | 12 + .../UTF-8/lang_ko.inc.php | 8 + .../UTF-8/lang_pl.inc.php | 12 + .../UTF-8/lang_tn.inc.php | 17 + .../UTF-8/lang_zh.inc.php | 18 + .../lang_bg.inc.php | 12 + .../lang_de.inc.php | 4 + .../lang_en.inc.php | 12 + .../lang_es.inc.php | 11 + .../lang_fr.inc.php | 20 + .../lang_ja.inc.php | 12 + .../lang_ko.inc.php | 8 + .../lang_pl.inc.php | 12 + .../lang_tn.inc.php | 17 + .../lang_zh.inc.php | 18 + .../serendipity_event_searchhighlight.php | 232 + .../serendipity_event_spamblock/36daysago.ttf | Bin 0 -> 42073 bytes .../serendipity_event_spamblock/36daysago.txt | 85 + .../UTF-8/lang_cn.inc.php | 99 + .../UTF-8/lang_de.inc.php | 101 + .../UTF-8/lang_es.inc.php | 94 + .../UTF-8/lang_fr.inc.php | 103 + .../UTF-8/lang_is.inc.php | 78 + .../UTF-8/lang_ja.inc.php | 105 + .../UTF-8/lang_ko.inc.php | 72 + .../UTF-8/lang_pl.inc.php | 112 + .../UTF-8/lang_pt_PT.inc.php | 101 + .../UTF-8/lang_tn.inc.php | 93 + .../UTF-8/lang_zh.inc.php | 100 + plugins/serendipity_event_spamblock/Vera.ttf | Bin 0 -> 65933 bytes .../serendipity_event_spamblock/VeraSe.ttf | Bin 0 -> 60281 bytes .../serendipity_event_spamblock/captcha_2.png | Bin 0 -> 133 bytes .../serendipity_event_spamblock/captcha_3.png | Bin 0 -> 132 bytes .../serendipity_event_spamblock/captcha_4.png | Bin 0 -> 141 bytes .../serendipity_event_spamblock/captcha_7.png | Bin 0 -> 124 bytes .../serendipity_event_spamblock/captcha_9.png | Bin 0 -> 144 bytes .../serendipity_event_spamblock/captcha_a.png | Bin 0 -> 145 bytes .../serendipity_event_spamblock/captcha_b.png | Bin 0 -> 131 bytes .../serendipity_event_spamblock/captcha_c.png | Bin 0 -> 133 bytes .../serendipity_event_spamblock/captcha_d.png | Bin 0 -> 127 bytes .../serendipity_event_spamblock/captcha_e.png | Bin 0 -> 124 bytes .../serendipity_event_spamblock/captcha_f.png | Bin 0 -> 134 bytes .../serendipity_event_spamblock/captcha_h.png | Bin 0 -> 131 bytes .../serendipity_event_spamblock/captcha_j.png | Bin 0 -> 124 bytes .../serendipity_event_spamblock/captcha_k.png | Bin 0 -> 145 bytes .../serendipity_event_spamblock/captcha_l.png | Bin 0 -> 132 bytes .../serendipity_event_spamblock/captcha_m.png | Bin 0 -> 144 bytes .../serendipity_event_spamblock/captcha_n.png | Bin 0 -> 130 bytes .../serendipity_event_spamblock/captcha_p.png | Bin 0 -> 131 bytes .../serendipity_event_spamblock/captcha_q.png | Bin 0 -> 144 bytes .../serendipity_event_spamblock/captcha_r.png | Bin 0 -> 139 bytes .../serendipity_event_spamblock/captcha_t.png | Bin 0 -> 132 bytes .../serendipity_event_spamblock/captcha_u.png | Bin 0 -> 129 bytes .../serendipity_event_spamblock/captcha_v.png | Bin 0 -> 121 bytes .../serendipity_event_spamblock/captcha_w.png | Bin 0 -> 137 bytes .../serendipity_event_spamblock/captcha_x.png | Bin 0 -> 125 bytes .../serendipity_event_spamblock/captcha_y.png | Bin 0 -> 140 bytes .../serendipity_event_spamblock/captcha_z.png | Bin 0 -> 124 bytes .../serendipity_event_spamblock/chumbly.ttf | Bin 0 -> 67845 bytes .../serendipity_event_spamblock/chumbly.txt | 57 + .../lang_cn.inc.php | 99 + .../lang_de.inc.php | 102 + .../lang_en.inc.php | 112 + .../lang_es.inc.php | 94 + .../lang_fa.inc.php | 102 + .../lang_fr.inc.php | 103 + .../lang_is.inc.php | 78 + .../lang_ja.inc.php | 105 + .../lang_ko.inc.php | 72 + .../lang_pl.inc.php | 112 + .../lang_pt_PT.inc.php | 101 + .../lang_tn.inc.php | 93 + .../lang_zh.inc.php | 100 + .../serendipity_event_spamblock.php | 1203 +++ .../UTF-8/lang_de.inc.php | 23 + .../UTF-8/lang_es.inc.php | 26 + .../UTF-8/lang_fr.inc.php | 36 + .../UTF-8/lang_is.inc.php | 10 + .../UTF-8/lang_ja.inc.php | 27 + .../UTF-8/lang_ko.inc.php | 17 + .../UTF-8/lang_pl.inc.php | 27 + .../UTF-8/lang_pt_PT.inc.php | 34 + .../UTF-8/lang_tn.inc.php | 32 + .../UTF-8/lang_zh.inc.php | 32 + .../lang_de.inc.php | 23 + .../lang_en.inc.php | 30 + .../lang_es.inc.php | 26 + .../lang_fr.inc.php | 36 + .../lang_is.inc.php | 10 + .../lang_ja.inc.php | 27 + .../lang_ko.inc.php | 17 + .../lang_pl.inc.php | 27 + .../lang_pt_PT.inc.php | 34 + .../lang_tn.inc.php | 32 + .../lang_zh.inc.php | 32 + .../serendipity_event_spartacus.php | 824 ++ .../serendipity_event_statistics/ChangeLog | 12 + .../UTF-8/lang_bg.inc.php | 103 + .../UTF-8/lang_cz.inc.php | 50 + .../UTF-8/lang_de.inc.php | 50 + .../UTF-8/lang_es.inc.php | 92 + .../UTF-8/lang_fr.inc.php | 97 + .../UTF-8/lang_ja.inc.php | 76 + .../UTF-8/lang_ko.inc.php | 54 + .../UTF-8/lang_pl.inc.php | 101 + .../UTF-8/lang_pt_PT.inc.php | 83 + .../UTF-8/lang_tn.inc.php | 63 + .../UTF-8/lang_zh.inc.php | 63 + .../serendipity_event_statistics/green.png | Bin 0 -> 91 bytes .../lang_bg.inc.php | 103 + .../lang_cz.inc.php | 50 + .../lang_de.inc.php | 50 + .../lang_en.inc.php | 101 + .../lang_es.inc.php | 92 + .../lang_fr.inc.php | 97 + .../lang_ja.inc.php | 76 + .../lang_ko.inc.php | 54 + .../lang_pl.inc.php | 101 + .../lang_pt_PT.inc.php | 83 + .../lang_tn.inc.php | 63 + .../lang_zh.inc.php | 63 + plugins/serendipity_event_statistics/red.png | Bin 0 -> 90 bytes .../serendipity_event_statistics.php | 966 +++ .../serendipity_plugin_statistics.php | 216 + .../serendipity_event_statistics/yellow.png | Bin 0 -> 91 bytes .../UTF-8/lang_bg.inc.php | 11 + .../UTF-8/lang_de.inc.php | 4 + .../UTF-8/lang_es.inc.php | 11 + .../UTF-8/lang_fr.inc.php | 20 + .../UTF-8/lang_ja.inc.php | 12 + .../UTF-8/lang_ko.inc.php | 8 + .../UTF-8/lang_pl.inc.php | 12 + .../UTF-8/lang_pt_PT.inc.php | 19 + .../UTF-8/lang_tn.inc.php | 17 + .../UTF-8/lang_zh.inc.php | 17 + .../lang_bg.inc.php | 11 + .../lang_de.inc.php | 4 + .../lang_en.inc.php | 12 + .../lang_es.inc.php | 11 + .../lang_fr.inc.php | 20 + .../lang_ja.inc.php | 12 + .../lang_ko.inc.php | 8 + .../lang_pl.inc.php | 12 + .../lang_pt_PT.inc.php | 19 + .../lang_tn.inc.php | 17 + .../lang_zh.inc.php | 17 + .../serendipity_event_templatechooser.php | 81 + .../UTF-8/lang_bg.inc.php | 13 + .../UTF-8/lang_de.inc.php | 5 + .../UTF-8/lang_es.inc.php | 12 + .../UTF-8/lang_fr.inc.php | 21 + .../UTF-8/lang_ja.inc.php | 13 + .../UTF-8/lang_ko.inc.php | 9 + .../UTF-8/lang_pl.inc.php | 13 + .../UTF-8/lang_pt_PT.inc.php | 20 + .../UTF-8/lang_tn.inc.php | 18 + .../UTF-8/lang_zh.inc.php | 18 + .../serendipity_event_textile/lang_bg.inc.php | 13 + .../serendipity_event_textile/lang_de.inc.php | 5 + .../serendipity_event_textile/lang_en.inc.php | 13 + .../serendipity_event_textile/lang_es.inc.php | 12 + .../serendipity_event_textile/lang_fr.inc.php | 21 + .../serendipity_event_textile/lang_ja.inc.php | 13 + .../serendipity_event_textile/lang_ko.inc.php | 9 + .../serendipity_event_textile/lang_pl.inc.php | 13 + .../lang_pt_PT.inc.php | 20 + .../serendipity_event_textile/lang_tn.inc.php | 18 + .../serendipity_event_textile/lang_zh.inc.php | 18 + .../serendipity_event_textile.php | 231 + plugins/serendipity_event_textile/textile.php | 1096 +++ .../UTF-8/lang_bg.inc.php | 13 + .../UTF-8/lang_de.inc.php | 5 + .../UTF-8/lang_es.inc.php | 13 + .../UTF-8/lang_fr.inc.php | 21 + .../UTF-8/lang_ja.inc.php | 13 + .../UTF-8/lang_ko.inc.php | 9 + .../UTF-8/lang_pl.inc.php | 13 + .../UTF-8/lang_pt_PT.inc.php | 74 + .../UTF-8/lang_tn.inc.php | 18 + .../UTF-8/lang_zh.inc.php | 18 + .../lang_bg.inc.php | 13 + .../lang_de.inc.php | 5 + .../lang_en.inc.php | 13 + .../lang_es.inc.php | 13 + .../lang_fr.inc.php | 21 + .../lang_ja.inc.php | 13 + .../lang_ko.inc.php | 9 + .../lang_pl.inc.php | 13 + .../lang_pt_PT.inc.php | 74 + .../lang_tn.inc.php | 18 + .../lang_zh.inc.php | 18 + .../serendipity_event_textwiki.php | 679 ++ .../UTF-8/lang_de.inc.php | 9 + .../UTF-8/lang_es.inc.php | 17 + .../UTF-8/lang_fr.inc.php | 25 + .../UTF-8/lang_ja.inc.php | 17 + .../UTF-8/lang_ko.inc.php | 13 + .../UTF-8/lang_pl.inc.php | 17 + .../UTF-8/lang_pt_PT.inc.php | 24 + .../UTF-8/lang_tn.inc.php | 22 + .../UTF-8/lang_zh.inc.php | 22 + .../lang_de.inc.php | 9 + .../lang_en.inc.php | 17 + .../lang_es.inc.php | 17 + .../lang_fr.inc.php | 25 + .../lang_ja.inc.php | 17 + .../lang_ko.inc.php | 13 + .../lang_pl.inc.php | 17 + .../lang_pt_PT.inc.php | 24 + .../lang_tn.inc.php | 22 + .../lang_zh.inc.php | 22 + .../serendipity_event_trackexits.php | 224 + .../UTF-8/lang_de.inc.php | 9 + .../UTF-8/lang_es.inc.php | 19 + .../UTF-8/lang_fr.inc.php | 27 + .../UTF-8/lang_ja.inc.php | 19 + .../UTF-8/lang_ko.inc.php | 15 + .../UTF-8/lang_pl.inc.php | 19 + .../UTF-8/lang_pt_PT.inc.php | 26 + .../UTF-8/lang_tn.inc.php | 24 + .../UTF-8/lang_zh.inc.php | 24 + .../lang_de.inc.php | 9 + .../lang_en.inc.php | 19 + .../lang_es.inc.php | 19 + .../lang_fr.inc.php | 27 + .../lang_ja.inc.php | 19 + .../lang_ko.inc.php | 15 + .../lang_pl.inc.php | 19 + .../lang_pt_PT.inc.php | 26 + .../lang_tn.inc.php | 24 + .../lang_zh.inc.php | 24 + .../serendipity_event_weblogping.php | 265 + .../servicesdb_de.inc.php | 58 + .../servicesdb_en.inc.php | 63 + .../servicesdb_ja.inc.php | 147 + .../servicesdb_tn.inc.php | 66 + .../UTF-8/lang_bg.inc.php | 16 + .../UTF-8/lang_de.inc.php | 4 + .../UTF-8/lang_fr.inc.php | 24 + .../UTF-8/lang_ja.inc.php | 16 + .../UTF-8/lang_ko.inc.php | 8 + .../UTF-8/lang_pl.inc.php | 16 + .../UTF-8/lang_pt_PT.inc.php | 23 + .../UTF-8/lang_tn.inc.php | 21 + .../UTF-8/lang_zh.inc.php | 21 + .../lang_bg.inc.php | 16 + .../lang_de.inc.php | 4 + .../lang_en.inc.php | 16 + .../lang_es.inc.php | 16 + .../lang_fr.inc.php | 24 + .../lang_ja.inc.php | 16 + .../lang_ko.inc.php | 8 + .../lang_pl.inc.php | 16 + .../lang_pt_PT.inc.php | 23 + .../lang_tn.inc.php | 21 + .../lang_zh.inc.php | 21 + .../serendipity_event_xhtmlcleanup.php | 230 + .../UTF-8/lang_bg.inc.php | 18 + .../UTF-8/lang_cn.inc.php | 25 + .../UTF-8/lang_de.inc.php | 10 + .../UTF-8/lang_es.inc.php | 18 + .../UTF-8/lang_fr.inc.php | 28 + .../UTF-8/lang_is.inc.php | 12 + .../UTF-8/lang_ja.inc.php | 18 + .../UTF-8/lang_ko.inc.php | 14 + .../UTF-8/lang_pl.inc.php | 18 + .../UTF-8/lang_pt_PT.inc.php | 28 + .../UTF-8/lang_tn.inc.php | 23 + .../UTF-8/lang_tr.inc.php | 18 + .../UTF-8/lang_zh.inc.php | 26 + .../lang_bg.inc.php | 18 + .../lang_cn.inc.php | 25 + .../lang_de.inc.php | 10 + .../lang_en.inc.php | 18 + .../lang_es.inc.php | 18 + .../lang_fr.inc.php | 28 + .../lang_is.inc.php | 12 + .../lang_ja.inc.php | 18 + .../lang_ko.inc.php | 14 + .../lang_pl.inc.php | 18 + .../lang_pt_PT.inc.php | 28 + .../lang_tn.inc.php | 23 + .../lang_tr.inc.php | 18 + .../lang_zh.inc.php | 26 + .../serendipity_plugin_comments.php | 216 + .../UTF-8/lang_bg.inc.php | 12 + .../UTF-8/lang_cn.inc.php | 19 + .../UTF-8/lang_de.inc.php | 4 + .../UTF-8/lang_es.inc.php | 12 + .../UTF-8/lang_fr.inc.php | 20 + .../UTF-8/lang_ja.inc.php | 12 + .../UTF-8/lang_ko.inc.php | 8 + .../UTF-8/lang_pl.inc.php | 12 + .../UTF-8/lang_pt_PT.inc.php | 19 + .../UTF-8/lang_tn.inc.php | 17 + .../UTF-8/lang_zh.inc.php | 20 + .../lang_bg.inc.php | 12 + .../lang_cn.inc.php | 19 + .../lang_de.inc.php | 4 + .../lang_en.inc.php | 12 + .../lang_es.inc.php | 12 + .../lang_fr.inc.php | 20 + .../lang_ja.inc.php | 12 + .../lang_ko.inc.php | 8 + .../lang_pl.inc.php | 12 + .../lang_pt_PT.inc.php | 19 + .../lang_tn.inc.php | 17 + .../lang_zh.inc.php | 20 + .../serendipity_plugin_creativecommons.php | 59 + .../UTF-8/lang_bg.inc.php | 22 + .../UTF-8/lang_de.inc.php | 15 + .../UTF-8/lang_es.inc.php | 23 + .../UTF-8/lang_fr.inc.php | 31 + .../UTF-8/lang_ja.inc.php | 23 + .../UTF-8/lang_ko.inc.php | 19 + .../UTF-8/lang_pl.inc.php | 23 + .../UTF-8/lang_pt_PT.inc.php | 30 + .../UTF-8/lang_tn.inc.php | 28 + .../UTF-8/lang_tr.inc.php | 23 + .../UTF-8/lang_zh.inc.php | 28 + .../lang_bg.inc.php | 22 + .../lang_de.inc.php | 15 + .../lang_en.inc.php | 23 + .../lang_es.inc.php | 23 + .../lang_fr.inc.php | 31 + .../lang_ja.inc.php | 23 + .../lang_ko.inc.php | 19 + .../lang_pl.inc.php | 23 + .../lang_pt_PT.inc.php | 30 + .../lang_tn.inc.php | 28 + .../lang_tr.inc.php | 23 + .../lang_zh.inc.php | 28 + .../serendipity_plugin_entrylinks.php | 190 + .../UTF-8/lang_bg.inc.php | 14 + .../UTF-8/lang_de.inc.php | 7 + .../UTF-8/lang_es.inc.php | 15 + .../UTF-8/lang_fr.inc.php | 23 + .../UTF-8/lang_ja.inc.php | 15 + .../UTF-8/lang_ko.inc.php | 11 + .../UTF-8/lang_pl.inc.php | 15 + .../UTF-8/lang_pt_PT.inc.php | 22 + .../UTF-8/lang_tn.inc.php | 20 + .../UTF-8/lang_zh.inc.php | 20 + .../lang_bg.inc.php | 14 + .../lang_de.inc.php | 7 + .../lang_en.inc.php | 15 + .../lang_es.inc.php | 15 + .../lang_fr.inc.php | 23 + .../lang_ja.inc.php | 15 + .../lang_ko.inc.php | 11 + .../lang_pl.inc.php | 15 + .../lang_pt_PT.inc.php | 22 + .../lang_tn.inc.php | 20 + .../lang_zh.inc.php | 20 + .../serendipity_plugin_eventwrapper.php | 91 + .../UTF-8/lang_bg.inc.php | 34 + .../UTF-8/lang_de.inc.php | 26 + .../UTF-8/lang_es.inc.php | 34 + .../UTF-8/lang_fr.inc.php | 42 + .../UTF-8/lang_ja.inc.php | 35 + .../UTF-8/lang_ko.inc.php | 30 + .../UTF-8/lang_pl.inc.php | 33 + .../UTF-8/lang_pt_PT.inc.php | 41 + .../UTF-8/lang_tn.inc.php | 39 + .../UTF-8/lang_zh.inc.php | 39 + .../lang_bg.inc.php | 34 + .../lang_de.inc.php | 26 + .../lang_en.inc.php | 33 + .../lang_es.inc.php | 34 + .../lang_fr.inc.php | 42 + .../lang_ja.inc.php | 35 + .../lang_ko.inc.php | 30 + .../lang_pl.inc.php | 33 + .../lang_pt_PT.inc.php | 41 + .../lang_tn.inc.php | 39 + .../lang_zh.inc.php | 39 + .../serendipity_plugin_history.php | 202 + .../UTF-8/lang_bg.inc.php | 17 + .../UTF-8/lang_de.inc.php | 10 + .../UTF-8/lang_es.inc.php | 18 + .../UTF-8/lang_fr.inc.php | 26 + .../UTF-8/lang_is.inc.php | 9 + .../UTF-8/lang_ja.inc.php | 19 + .../UTF-8/lang_ko.inc.php | 14 + .../UTF-8/lang_pl.inc.php | 18 + .../UTF-8/lang_pt_PT.inc.php | 25 + .../UTF-8/lang_tn.inc.php | 23 + .../UTF-8/lang_tr.inc.php | 18 + .../UTF-8/lang_zh.inc.php | 23 + .../lang_bg.inc.php | 17 + .../lang_de.inc.php | 10 + .../lang_en.inc.php | 18 + .../lang_es.inc.php | 18 + .../lang_fa.inc.php | 18 + .../lang_fr.inc.php | 26 + .../lang_is.inc.php | 9 + .../lang_ja.inc.php | 19 + .../lang_ko.inc.php | 14 + .../lang_pl.inc.php | 18 + .../lang_pt_PT.inc.php | 25 + .../lang_tn.inc.php | 23 + .../lang_tr.inc.php | 18 + .../lang_zh.inc.php | 23 + .../serendipity_plugin_recententries.php | 184 + .../UTF-8/lang_de.inc.php | 21 + .../UTF-8/lang_es.inc.php | 29 + .../UTF-8/lang_fr.inc.php | 37 + .../UTF-8/lang_ja.inc.php | 29 + .../UTF-8/lang_ko.inc.php | 25 + .../UTF-8/lang_pl.inc.php | 29 + .../UTF-8/lang_pt_PT.inc.php | 36 + .../UTF-8/lang_tn.inc.php | 34 + .../UTF-8/lang_zh.inc.php | 34 + .../lang_de.inc.php | 21 + .../lang_en.inc.php | 29 + .../lang_es.inc.php | 29 + .../lang_fr.inc.php | 37 + .../lang_ja.inc.php | 29 + .../lang_ko.inc.php | 25 + .../lang_pl.inc.php | 29 + .../lang_pt_PT.inc.php | 36 + .../lang_tn.inc.php | 34 + .../lang_zh.inc.php | 34 + .../serendipity_plugin_remoterss.php | 608 ++ .../UTF-8/lang_de.inc.php | 12 + .../UTF-8/lang_es.inc.php | 20 + .../UTF-8/lang_fr.inc.php | 28 + .../UTF-8/lang_ja.inc.php | 21 + .../UTF-8/lang_ko.inc.php | 16 + .../UTF-8/lang_pl.inc.php | 20 + .../UTF-8/lang_pt_PT.inc.php | 27 + .../UTF-8/lang_tn.inc.php | 25 + .../UTF-8/lang_zh.inc.php | 25 + .../lang_de.inc.php | 12 + .../lang_en.inc.php | 20 + .../lang_es.inc.php | 20 + .../lang_fr.inc.php | 28 + .../lang_ja.inc.php | 21 + .../lang_ko.inc.php | 16 + .../lang_pl.inc.php | 20 + .../lang_pt_PT.inc.php | 27 + .../lang_tn.inc.php | 25 + .../lang_zh.inc.php | 25 + .../serendipity_plugin_shoutbox.php | 194 + .../UTF-8/lang_bg.inc.php | 14 + .../UTF-8/lang_de.inc.php | 6 + .../UTF-8/lang_es.inc.php | 14 + .../UTF-8/lang_fr.inc.php | 22 + .../UTF-8/lang_ja.inc.php | 15 + .../UTF-8/lang_ko.inc.php | 10 + .../UTF-8/lang_pl.inc.php | 14 + .../UTF-8/lang_pt_PT.inc.php | 21 + .../UTF-8/lang_tn.inc.php | 19 + .../UTF-8/lang_zh.inc.php | 19 + .../lang_bg.inc.php | 14 + .../lang_de.inc.php | 6 + .../lang_en.inc.php | 14 + .../lang_es.inc.php | 14 + .../lang_fr.inc.php | 22 + .../lang_ja.inc.php | 15 + .../lang_ko.inc.php | 10 + .../lang_pl.inc.php | 14 + .../lang_pt_PT.inc.php | 21 + .../lang_tn.inc.php | 19 + .../lang_zh.inc.php | 19 + .../serendipity_plugin_templatedropdown.php | 83 + rss.php | 246 + serendipity.css.php | 79 + serendipity_admin.php | 381 + serendipity_admin_image_selector.php | 302 + serendipity_config.inc.php | 349 + serendipity_define.js.php | 14 + serendipity_editor.js | 301 + serendipity_xmlrpc.php | 14 + sql/db.sql | 313 + sql/db_update_0.2_0.3_mysql.sql | 17 + sql/db_update_0.2_0.3_postgres.sql | 17 + sql/db_update_0.3_0.4_mysql.sql | 1 + sql/db_update_0.3_0.4_postgres.sql | 4 + sql/db_update_0.5.1_0.6_mysql.sql | 3 + sql/db_update_0.5.1_0.6_postgres.sql | 3 + sql/db_update_0.5_0.5.1_mysql.sql | 34 + sql/db_update_0.5_0.5.1_postgres.sql | 34 + sql/db_update_0.6.10_0.6.11_mysql.sql | 1 + sql/db_update_0.6.10_0.6.11_postgres.sql | 1 + sql/db_update_0.6.1_0.6.2_mysql.sql | 1 + sql/db_update_0.6.1_0.6.2_postgres.sql | 1 + sql/db_update_0.6.2_0.6.3_mysql.sql | 2 + sql/db_update_0.6.2_0.6.3_postgres.sql | 4 + sql/db_update_0.6.3_0.6.4_mysql.sql | 1 + sql/db_update_0.6.3_0.6.4_postgres.sql | 3 + sql/db_update_0.6.4_0.6.5_mysql.sql | 15 + sql/db_update_0.6.4_0.6.5_postgres.sql | 21 + sql/db_update_0.6.5_0.6.6_mysql.sql | 1 + sql/db_update_0.6.5_0.6.6_postgres.sql | 1 + sql/db_update_0.6.6_0.6.7_mysql.sql | 3 + sql/db_update_0.6.6_0.6.7_postgres.sql | 7 + sql/db_update_0.6.8_0.6.9_mysql.sql | 1 + sql/db_update_0.6.8_0.6.9_postgres.sql | 9 + sql/db_update_0.6.9_0.7.0_mysql.sql | 1 + sql/db_update_0.6.9_0.7.0_postgresql.sql | 2 + sql/db_update_0.6_0.6.1_mysql.sql | 15 + sql/db_update_0.6_0.6.1_postgres.sql | 22 + ...b_update_0.8-alpha10_0.8-alpha11_mysql.sql | 7 + ...b_update_0.8-alpha11_0.8-alpha12_mysql.sql | 2 + ...pdate_0.8-alpha11_0.8-alpha12_postgres.sql | 1 + ..._update_0.8-alpha11_0.8-alpha12_sqlite.sql | 31 + ...b_update_0.8-alpha12_0.8-alpha13_mysql.sql | 1 + ...pdate_0.8-alpha12_0.8-alpha13_postgres.sql | 1 + ..._update_0.8-alpha12_0.8-alpha13_sqlite.sql | 35 + sql/db_update_0.8-alpha1_0.8-alpha2_mysql.sql | 8 + sql/db_update_0.8-alpha4_0.8-alpha5_mysql.sql | 1 + ..._update_0.8-alpha4_0.8-alpha5_postgres.sql | 1 + ...db_update_0.8-alpha4_0.8-alpha5_sqlite.sql | 38 + sql/db_update_0.8-alpha5_0.8-alpha6_mysql.sql | 1 + ..._update_0.8-alpha5_0.8-alpha6_postgres.sql | 1 + ...db_update_0.8-alpha5_0.8-alpha6_sqlite.sql | 22 + sql/db_update_0.8-beta3_0.8-beta4_mysql.sql | 1 + ...db_update_0.8-beta3_0.8-beta4_postgres.sql | 1 + sql/db_update_0.8-beta3_0.8-beta4_sqlite.sql | 1 + sql/db_update_0.8-beta5_0.8-beta6_mysql.sql | 2 + ...db_update_0.8-beta5_0.8-beta6_postgres.sql | 2 + sql/db_update_0.8-beta5_0.8-beta6_sqlite.sql | 2 + sql/db_update_0.9-alpha1_0.9-alpha2_mysql.sql | 31 + ..._update_0.9-alpha1_0.9-alpha2_postgres.sql | 31 + ...db_update_0.9-alpha1_0.9-alpha2_sqlite.sql | 31 + sql/db_update_0.9-alpha2_0.9-alpha3_mysql.sql | 21 + sql/db_update_0.9-alpha3_0.9-alpha4_mysql.sql | 29 + sql/db_update_0.9-alpha4_0.9-alpha5_mysql.sql | 12 + sql/db_update_1.1-alpha1_1.1-alpha2_mysql.sql | 1 + sql/db_update_1.1-alpha2_1.1-alpha3_mysql.sql | 10 + sql/db_update_1.1-alpha3_1.1-alpha4_mysql.sql | 7 + sql/db_update_1.1-alpha4_1.1-alpha5_mysql.sql | 3 + ..._update_1.1-alpha4_1.1-alpha5_postgres.sql | 4 + ...db_update_1.1-alpha4_1.1-alpha5_sqlite.sql | 65 + sql/db_update_1.1-alpha5_1.1-alpha6_mysql.sql | 2 + ..._update_1.1-alpha5_1.1-alpha6_postgres.sql | 3 + ...db_update_1.1-alpha5_1.1-alpha6_sqlite.sql | 0 templates/HOWTO | 1 + templates/blue/htmlarea.css | 45 + templates/blue/img/back.png | Bin 0 -> 347 bytes templates/blue/img/down.png | Bin 0 -> 365 bytes templates/blue/img/forward.png | Bin 0 -> 344 bytes templates/blue/img/up.png | Bin 0 -> 363 bytes templates/blue/info.txt | 3 + templates/blue/preview.png | Bin 0 -> 7667 bytes templates/blue/style.css | 341 + .../carl_contest/admin/img/background.png | Bin 0 -> 496 bytes .../admin/img/button_background.png | Bin 0 -> 2176 bytes .../admin/img/infobar_background.png | Bin 0 -> 252 bytes templates/carl_contest/admin/style.css | 304 + templates/carl_contest/entries.tpl | 211 + templates/carl_contest/entries_summary.tpl | 13 + templates/carl_contest/img/back.gif | Bin 0 -> 188 bytes templates/carl_contest/img/background.png | Bin 0 -> 496 bytes .../carl_contest/img/background_alternate.png | Bin 0 -> 179 bytes templates/carl_contest/img/forward.gif | Bin 0 -> 212 bytes .../carl_contest/img/graph_bar_horisontal.png | Bin 0 -> 159 bytes .../img/info_header_text_tile.gif | Bin 0 -> 67 bytes templates/carl_contest/img/link_blue.gif | Bin 0 -> 81 bytes templates/carl_contest/img/link_ltblue.gif | Bin 0 -> 88 bytes templates/carl_contest/img/link_orange.gif | Bin 0 -> 89 bytes templates/carl_contest/img/xml.gif | Bin 0 -> 585 bytes templates/carl_contest/index.tpl | 58 + templates/carl_contest/info.txt | 3 + templates/carl_contest/plugin_calendar.tpl | 33 + templates/carl_contest/preview.png | Bin 0 -> 6965 bytes templates/carl_contest/screenshot.png | Bin 0 -> 58108 bytes templates/carl_contest/style.css | 641 ++ .../competition/admin/img/background.jpg | Bin 0 -> 30651 bytes .../admin/img/banner_background.png | Bin 0 -> 11755 bytes .../admin/img/button_background.png | Bin 0 -> 2176 bytes .../admin/img/infobar_background.png | Bin 0 -> 252 bytes .../competition/admin/img/menu_background.png | Bin 0 -> 700 bytes .../admin/img/menuheader_background.png | Bin 0 -> 3968 bytes templates/competition/admin/img/menuitem.png | Bin 0 -> 3228 bytes templates/competition/admin/style.css | 316 + templates/competition/entries.tpl | 205 + templates/competition/img/back.png | Bin 0 -> 3158 bytes templates/competition/img/background.png | Bin 0 -> 42339 bytes templates/competition/img/forward.png | Bin 0 -> 3152 bytes .../competition/img/graph_bar_horisontal.png | Bin 0 -> 2846 bytes .../competition/img/s9y_banner_small.png | Bin 0 -> 6233 bytes templates/competition/img/xml.gif | Bin 0 -> 353 bytes templates/competition/index.tpl | 54 + templates/competition/info.txt | 4 + templates/competition/preview.png | Bin 0 -> 13931 bytes templates/competition/style.css | 403 + templates/contest/admin/img/Thumbs.db | Bin 0 -> 10752 bytes .../contest/admin/img/button_background.png | Bin 0 -> 2132 bytes templates/contest/admin/img/header_bar.png | Bin 0 -> 283 bytes templates/contest/admin/img/header_logo.png | Bin 0 -> 32813 bytes .../admin/img/menuheader_background.png | Bin 0 -> 213 bytes templates/contest/admin/img/sidebar_left.jpg | Bin 0 -> 884 bytes templates/contest/admin/style.css | 354 + templates/contest/content.tpl | 18 + templates/contest/entries.tpl | 203 + templates/contest/img/Thumbs.db | Bin 0 -> 12288 bytes templates/contest/img/back.png | Bin 0 -> 3319 bytes templates/contest/img/date_bar.png | Bin 0 -> 404 bytes templates/contest/img/forward.png | Bin 0 -> 3371 bytes templates/contest/img/header_bar.png | Bin 0 -> 283 bytes templates/contest/img/header_logo.png | Bin 0 -> 32813 bytes templates/contest/img/header_spacer.png | Bin 0 -> 151 bytes templates/contest/img/sidebar_left.jpg | Bin 0 -> 884 bytes templates/contest/img/sidebar_right.jpg | Bin 0 -> 906 bytes templates/contest/img/sidebar_spacer.jpg | Bin 0 -> 320 bytes templates/contest/img/xml.gif | Bin 0 -> 652 bytes templates/contest/index.tpl | 57 + templates/contest/info.txt | 4 + templates/contest/plugin_calendar.tpl | 35 + templates/contest/preview.png | Bin 0 -> 11048 bytes templates/contest/style.css | 494 ++ templates/default-php/IMPORTANT-TODO | 19 + templates/default-php/commentform.tpl | 60 + templates/default-php/commentpopup.tpl | 61 + templates/default-php/comments.tpl | 37 + templates/default-php/content.tpl | 22 + templates/default-php/entries.tpl | 198 + templates/default-php/entries_archives.tpl | 20 + templates/default-php/entries_summary.tpl | 15 + templates/default-php/feed_0.91.tpl | 26 + templates/default-php/feed_1.0.tpl | 59 + templates/default-php/feed_2.0.tpl | 53 + templates/default-php/feed_atom0.3.tpl | 56 + templates/default-php/feed_atom1.0.tpl | 59 + templates/default-php/feed_opml1.0.tpl | 16 + templates/default-php/index.tpl | 48 + templates/default-php/info.txt | 4 + templates/default-php/plugin_calendar.tpl | 33 + templates/default-php/plugin_categories.tpl | 31 + templates/default-php/preview.png | Bin 0 -> 13606 bytes templates/default-php/preview_iframe.tpl | 24 + templates/default-php/sidebar.tpl | 12 + templates/default-php/template.inc.php | 7 + templates/default-php/trackbacks.tpl | 18 + .../default-rtl/admin/img/background.jpg | Bin 0 -> 6947 bytes .../admin/img/banner_background.png | Bin 0 -> 6414 bytes .../admin/img/button_background.png | Bin 0 -> 2176 bytes .../admin/img/infobar_background.png | Bin 0 -> 252 bytes .../default-rtl/admin/img/menu_background.png | Bin 0 -> 1035 bytes .../admin/img/menuheader_background.png | Bin 0 -> 1475 bytes templates/default-rtl/admin/style.css | 273 + templates/default-rtl/entries_archives.tpl | 19 + templates/default-rtl/entries_summary.tpl | 15 + templates/default-rtl/htmlarea.css | 45 + templates/default-rtl/img/background.png | Bin 0 -> 674 bytes templates/default-rtl/info.txt | 4 + templates/default-rtl/plugin_calendar.tpl | 33 + templates/default-rtl/preview.png | Bin 0 -> 13606 bytes templates/default-rtl/style.css | 353 + templates/default-xml/index.tpl | 1 + templates/default-xml/info.txt | 4 + templates/default-xml/preview.png | Bin 0 -> 13606 bytes templates/default-xml/template.inc.php | 7 + templates/default/admin/img/accept.png | Bin 0 -> 883 bytes templates/default/admin/img/background.jpg | Bin 0 -> 6947 bytes .../default/admin/img/banner_background.png | Bin 0 -> 6414 bytes templates/default/admin/img/big_delete.png | Bin 0 -> 1572 bytes templates/default/admin/img/big_rename.png | Bin 0 -> 1111 bytes templates/default/admin/img/big_resize.png | Bin 0 -> 1157 bytes .../default/admin/img/big_rotate_ccw.png | Bin 0 -> 1141 bytes templates/default/admin/img/big_rotate_cw.png | Bin 0 -> 1132 bytes templates/default/admin/img/big_zoom.png | Bin 0 -> 1329 bytes .../default/admin/img/button_background.png | Bin 0 -> 2176 bytes templates/default/admin/img/clock.png | Bin 0 -> 1160 bytes templates/default/admin/img/clock_future.png | Bin 0 -> 3650 bytes templates/default/admin/img/configure.png | Bin 0 -> 980 bytes templates/default/admin/img/delete.png | Bin 0 -> 1032 bytes templates/default/admin/img/downarrow.png | Bin 0 -> 808 bytes templates/default/admin/img/edit.png | Bin 0 -> 857 bytes templates/default/admin/img/folder.png | Bin 0 -> 702 bytes templates/default/admin/img/grablet.gif | Bin 0 -> 102 bytes templates/default/admin/img/grablet_over.gif | Bin 0 -> 102 bytes templates/default/admin/img/imgedit_area.gif | Bin 0 -> 797 bytes .../default/admin/img/imgedit_orientation.gif | Bin 0 -> 191 bytes .../default/admin/img/imgedit_slider.gif | Bin 0 -> 79 bytes templates/default/admin/img/imgedit_varea.gif | Bin 0 -> 1681 bytes .../default/admin/img/infobar_background.png | Bin 0 -> 252 bytes templates/default/admin/img/install.png | Bin 0 -> 2407 bytes templates/default/admin/img/install_now.png | Bin 0 -> 2172 bytes .../admin/img/install_now_spartacus.png | Bin 0 -> 2217 bytes .../default/admin/img/install_template.png | Bin 0 -> 2358 bytes .../default/admin/img/menu_background.png | Bin 0 -> 700 bytes .../admin/img/menuheader_background.png | Bin 0 -> 1135 bytes templates/default/admin/img/menuitem.png | Bin 0 -> 708 bytes templates/default/admin/img/mime_unknown.png | Bin 0 -> 5854 bytes templates/default/admin/img/next.png | Bin 0 -> 781 bytes templates/default/admin/img/previous.png | Bin 0 -> 777 bytes templates/default/admin/img/rotate.png | Bin 0 -> 1141 bytes templates/default/admin/img/thumbnail.png | Bin 0 -> 922 bytes templates/default/admin/img/unconfigure.png | Bin 0 -> 997 bytes templates/default/admin/img/uparrow.png | Bin 0 -> 781 bytes templates/default/admin/img/upgrade_now.png | Bin 0 -> 2146 bytes templates/default/admin/img/user_admin.png | Bin 0 -> 1157 bytes templates/default/admin/img/user_chief.png | Bin 0 -> 1130 bytes templates/default/admin/img/user_editor.png | Bin 0 -> 1068 bytes templates/default/admin/img/zoom.png | Bin 0 -> 813 bytes templates/default/admin/imgedit.css | 173 + templates/default/admin/media_choose.tpl | 344 + templates/default/admin/media_imgedit.tpl | 57 + .../default/admin/media_imgedit_done.tpl | 37 + templates/default/admin/media_items.tpl | 153 + templates/default/admin/media_pane.tpl | 173 + templates/default/admin/media_properties.tpl | 18 + templates/default/admin/media_showitem.tpl | 91 + templates/default/admin/media_upload.tpl | 263 + templates/default/admin/pluginmanager.css | 54 + templates/default/admin/style.css | 317 + templates/default/atom.css | 89 + templates/default/commentform.tpl | 60 + templates/default/commentpopup.tpl | 61 + templates/default/comments.tpl | 37 + templates/default/content.tpl | 22 + templates/default/entries.tpl | 198 + templates/default/entries_archives.tpl | 20 + templates/default/entries_summary.tpl | 15 + templates/default/feed_0.91.tpl | 26 + templates/default/feed_1.0.tpl | 59 + templates/default/feed_2.0.tpl | 53 + templates/default/feed_atom0.3.tpl | 56 + templates/default/feed_atom1.0.tpl | 59 + templates/default/feed_opml1.0.tpl | 16 + templates/default/htmlarea.css | 45 + templates/default/img/back.png | Bin 0 -> 468 bytes templates/default/img/background.png | Bin 0 -> 674 bytes templates/default/img/blank.gif | Bin 0 -> 43 bytes templates/default/img/blank.png | Bin 0 -> 127 bytes templates/default/img/delete.png | Bin 0 -> 969 bytes templates/default/img/down.png | Bin 0 -> 456 bytes templates/default/img/emoticons/cool.png | Bin 0 -> 627 bytes templates/default/img/emoticons/cry.png | Bin 0 -> 702 bytes templates/default/img/emoticons/eek.png | Bin 0 -> 567 bytes templates/default/img/emoticons/laugh.png | Bin 0 -> 591 bytes templates/default/img/emoticons/normal.png | Bin 0 -> 526 bytes templates/default/img/emoticons/sad.png | Bin 0 -> 593 bytes templates/default/img/emoticons/smile.png | Bin 0 -> 556 bytes templates/default/img/emoticons/tongue.png | Bin 0 -> 571 bytes templates/default/img/emoticons/wink.png | Bin 0 -> 577 bytes templates/default/img/forward.png | Bin 0 -> 477 bytes .../default/img/graph_bar_horisontal.png | Bin 0 -> 165 bytes templates/default/img/img_align_left.png | Bin 0 -> 6212 bytes templates/default/img/img_align_right.png | Bin 0 -> 6409 bytes templates/default/img/img_align_top.png | Bin 0 -> 4596 bytes templates/default/img/minus.png | Bin 0 -> 265 bytes templates/default/img/norights.png | Bin 0 -> 1167 bytes templates/default/img/plus.png | Bin 0 -> 290 bytes templates/default/img/rename.png | Bin 0 -> 766 bytes templates/default/img/s9y_banner_small.png | Bin 0 -> 6440 bytes templates/default/img/scale.png | Bin 0 -> 840 bytes templates/default/img/somerights20.gif | Bin 0 -> 1836 bytes templates/default/img/up.png | Bin 0 -> 440 bytes templates/default/img/xml.gif | Bin 0 -> 111 bytes templates/default/img/zoom.png | Bin 0 -> 1132 bytes templates/default/index.tpl | 54 + templates/default/info.txt | 4 + templates/default/plugin_calendar.tpl | 33 + templates/default/plugin_categories.tpl | 31 + templates/default/preview.png | Bin 0 -> 13606 bytes templates/default/preview_iframe.tpl | 24 + templates/default/sidebar.tpl | 12 + templates/default/style.css | 349 + templates/default/trackbacks.tpl | 18 + templates/default/treeview/lm.gif | Bin 0 -> 94 bytes templates/default/treeview/lmh.gif | Bin 0 -> 106 bytes templates/default/treeview/ln.gif | Bin 0 -> 142 bytes templates/default/treeview/loading.gif | Bin 0 -> 2673 bytes templates/default/treeview/lp.gif | Bin 0 -> 130 bytes templates/default/treeview/lph.gif | Bin 0 -> 111 bytes templates/default/treeview/screen.css | 1 + templates/default/treeview/tm.gif | Bin 0 -> 545 bytes templates/default/treeview/tmh.gif | Bin 0 -> 563 bytes templates/default/treeview/tn.gif | Bin 0 -> 504 bytes templates/default/treeview/tp.gif | Bin 0 -> 539 bytes templates/default/treeview/tph.gif | Bin 0 -> 568 bytes templates/default/treeview/tree.css | 125 + templates/default/treeview/vline.gif | Bin 0 -> 503 bytes templates/idea/img/I_had_an_idea.jpg | Bin 0 -> 2299 bytes templates/idea/img/bullet.gif | Bin 0 -> 113 bytes .../idea/img/clock_face_messy_paint_runs.jpg | Bin 0 -> 638 bytes templates/idea/img/quote.gif | Bin 0 -> 451 bytes templates/idea/info.txt | 3 + templates/idea/preview.png | Bin 0 -> 6220 bytes templates/idea/style.css | 391 + templates/kubrick/comments.tpl | 28 + templates/kubrick/config.inc.php | 10 + templates/kubrick/entries.tpl | 200 + templates/kubrick/images/kubrickbg.jpg | Bin 0 -> 1047 bytes templates/kubrick/images/kubrickbgcolor.jpg | Bin 0 -> 558 bytes templates/kubrick/images/kubrickbgwide.jpg | Bin 0 -> 1020 bytes templates/kubrick/images/kubrickfooter.jpg | Bin 0 -> 2601 bytes templates/kubrick/images/kubrickheader.jpg | Bin 0 -> 8334 bytes templates/kubrick/images/kubricklogo.jpg | Bin 0 -> 20902 bytes templates/kubrick/images/kubrickportrait.png | Bin 0 -> 23879 bytes templates/kubrick/img/back.png | Bin 0 -> 347 bytes templates/kubrick/img/down.png | Bin 0 -> 365 bytes templates/kubrick/img/forward.png | Bin 0 -> 344 bytes templates/kubrick/img/up.png | Bin 0 -> 363 bytes templates/kubrick/index.tpl | 62 + templates/kubrick/info.txt | 3 + templates/kubrick/lang_de.inc.php | 11 + templates/kubrick/lang_en.inc.php | 11 + templates/kubrick/lang_ko.inc.php | 11 + templates/kubrick/preview.png | Bin 0 -> 8941 bytes templates/kubrick/sidebar.tpl | 8 + templates/kubrick/style.css | 619 ++ templates/kubrick/trackbacks.tpl | 16 + templates/moz-modern/htmlarea.css | 44 + templates/moz-modern/img/back.png | Bin 0 -> 390 bytes templates/moz-modern/img/background.png | Bin 0 -> 1135 bytes templates/moz-modern/img/background2.png | Bin 0 -> 577 bytes templates/moz-modern/img/forward.png | Bin 0 -> 386 bytes templates/moz-modern/index.tpl | 61 + templates/moz-modern/info.txt | 4 + templates/moz-modern/preview.png | Bin 0 -> 6974 bytes templates/moz-modern/style.css | 477 + templates/mt-clean/info.txt | 3 + templates/mt-clean/preview.png | Bin 0 -> 6426 bytes templates/mt-clean/style.css | 291 + templates/mt-georgiablue/info.txt | 3 + templates/mt-georgiablue/preview.png | Bin 0 -> 6523 bytes templates/mt-georgiablue/style.css | 304 + templates/mt-gettysburg/img/back.png | Bin 0 -> 347 bytes templates/mt-gettysburg/img/down.png | Bin 0 -> 365 bytes templates/mt-gettysburg/img/forward.png | Bin 0 -> 344 bytes templates/mt-gettysburg/img/up.png | Bin 0 -> 363 bytes templates/mt-gettysburg/info.txt | 3 + templates/mt-gettysburg/preview.png | Bin 0 -> 6560 bytes templates/mt-gettysburg/style.css | 312 + templates/mt-plainjane/info.txt | 3 + templates/mt-plainjane/preview.png | Bin 0 -> 5855 bytes templates/mt-plainjane/style.css | 303 + templates/mt-rusty/img/back.png | Bin 0 -> 347 bytes templates/mt-rusty/img/down.png | Bin 0 -> 365 bytes templates/mt-rusty/img/forward.png | Bin 0 -> 344 bytes templates/mt-rusty/img/up.png | Bin 0 -> 363 bytes templates/mt-rusty/info.txt | 3 + templates/mt-rusty/preview.png | Bin 0 -> 6943 bytes templates/mt-rusty/style.css | 323 + templates/mt-stormy/inactive.txt | 2 + templates/mt-stormy/info.txt | 3 + templates/mt-stormy/style.css | 163 + templates/mt-trendy/htmlarea.css | 45 + templates/mt-trendy/img/back.png | Bin 0 -> 436 bytes templates/mt-trendy/img/forward.png | Bin 0 -> 434 bytes templates/mt-trendy/info.txt | 3 + templates/mt-trendy/preview.png | Bin 0 -> 6563 bytes templates/mt-trendy/style.css | 287 + templates/mt3-chalkboard/img/back.png | Bin 0 -> 347 bytes templates/mt3-chalkboard/img/down.png | Bin 0 -> 365 bytes templates/mt3-chalkboard/img/forward.png | Bin 0 -> 344 bytes templates/mt3-chalkboard/img/up.png | Bin 0 -> 363 bytes templates/mt3-chalkboard/info.txt | 3 + templates/mt3-chalkboard/preview.png | Bin 0 -> 43018 bytes templates/mt3-chalkboard/style.css | 433 + templates/mt3-gettysburg/info.txt | 3 + templates/mt3-gettysburg/preview.png | Bin 0 -> 40016 bytes templates/mt3-gettysburg/style.css | 405 + templates/mt3-independence/info.txt | 3 + templates/mt3-independence/preview.png | Bin 0 -> 39819 bytes templates/mt3-independence/style.css | 428 + templates/mt3-squash/info.txt | 3 + templates/mt3-squash/preview.png | Bin 0 -> 41003 bytes templates/mt3-squash/style.css | 414 + templates/newspaper/htmlarea.css | 44 + templates/newspaper/img/shadowb.png | Bin 0 -> 204 bytes templates/newspaper/img/shadowbl.png | Bin 0 -> 299 bytes templates/newspaper/img/shadowbr.png | Bin 0 -> 298 bytes templates/newspaper/img/shadowr.png | Bin 0 -> 209 bytes templates/newspaper/img/shadowt.png | Bin 0 -> 311 bytes templates/newspaper/info.txt | 3 + templates/newspaper/layout.php | 107 + templates/newspaper/preview.png | Bin 0 -> 10421 bytes templates/newspaper/style.css | 352 + templates/wp/atom.css | 89 + templates/wp/commentform.tpl | 52 + templates/wp/comments.tpl | 12 + templates/wp/content.tpl | 7 + templates/wp/entries.tpl | 66 + templates/wp/entries_archives.tpl | 19 + templates/wp/entries_summary.tpl | 15 + templates/wp/htmlarea.css | 45 + templates/wp/index.tpl | 49 + templates/wp/info.txt | 4 + templates/wp/plugin_calendar.tpl | 32 + templates/wp/sidebar.tpl | 5 + templates/wp/trackbacks.tpl | 6 + templates/wp/wp-layout.css | 145 + templates_c/.empty | 0 uploads/.empty | 0 wfwcomment.php | 40 + 1775 files changed, 195589 insertions(+) create mode 100644 bundled-libs/.current_version create mode 100644 bundled-libs/Cache/BUNDLE_NOTICE create mode 100644 bundled-libs/Cache/Lite.php create mode 100644 bundled-libs/Cache/Lite/Function.php create mode 100644 bundled-libs/Cache/Lite/Output.php create mode 100644 bundled-libs/HTTP/BUNDLE_NOTICE create mode 100644 bundled-libs/HTTP/Request.php create mode 100644 bundled-libs/HTTP/Request/Listener.php create mode 100644 bundled-libs/Net/BUNDLE_NOTICE create mode 100644 bundled-libs/Net/CheckIP.php create mode 100644 bundled-libs/Net/DNSBL.php create mode 100644 bundled-libs/Net/DNSBL/BUNDLE_NOTICE create mode 100644 bundled-libs/Net/DNSBL/SURBL.php create mode 100644 bundled-libs/Net/Socket.php create mode 100644 bundled-libs/Net/URL.php create mode 100644 bundled-libs/Onyx/RSS.php create mode 100644 bundled-libs/PEAR.php create mode 100644 bundled-libs/Smarty/BUGS create mode 100644 bundled-libs/Smarty/COPYING.lib create mode 100644 bundled-libs/Smarty/ChangeLog create mode 100644 bundled-libs/Smarty/FAQ create mode 100644 bundled-libs/Smarty/INSTALL create mode 100644 bundled-libs/Smarty/NEWS create mode 100644 bundled-libs/Smarty/README create mode 100644 bundled-libs/Smarty/RELEASE_NOTES create mode 100644 bundled-libs/Smarty/libs/Config_File.class.php create mode 100644 bundled-libs/Smarty/libs/Smarty.class.php create mode 100644 bundled-libs/Smarty/libs/Smarty_Compiler.class.php create mode 100644 bundled-libs/Smarty/libs/debug.tpl create mode 100644 bundled-libs/Smarty/libs/internals/core.assemble_plugin_filepath.php create mode 100644 bundled-libs/Smarty/libs/internals/core.assign_smarty_interface.php create mode 100644 bundled-libs/Smarty/libs/internals/core.create_dir_structure.php create mode 100644 bundled-libs/Smarty/libs/internals/core.display_debug_console.php create mode 100644 bundled-libs/Smarty/libs/internals/core.get_include_path.php create mode 100644 bundled-libs/Smarty/libs/internals/core.get_microtime.php create mode 100644 bundled-libs/Smarty/libs/internals/core.get_php_resource.php create mode 100644 bundled-libs/Smarty/libs/internals/core.is_secure.php create mode 100644 bundled-libs/Smarty/libs/internals/core.is_trusted.php create mode 100644 bundled-libs/Smarty/libs/internals/core.load_plugins.php create mode 100644 bundled-libs/Smarty/libs/internals/core.load_resource_plugin.php create mode 100644 bundled-libs/Smarty/libs/internals/core.process_cached_inserts.php create mode 100644 bundled-libs/Smarty/libs/internals/core.process_compiled_include.php create mode 100644 bundled-libs/Smarty/libs/internals/core.read_cache_file.php create mode 100644 bundled-libs/Smarty/libs/internals/core.rm_auto.php create mode 100644 bundled-libs/Smarty/libs/internals/core.rmdir.php create mode 100644 bundled-libs/Smarty/libs/internals/core.run_insert_handler.php create mode 100644 bundled-libs/Smarty/libs/internals/core.smarty_include_php.php create mode 100644 bundled-libs/Smarty/libs/internals/core.write_cache_file.php create mode 100644 bundled-libs/Smarty/libs/internals/core.write_compiled_include.php create mode 100644 bundled-libs/Smarty/libs/internals/core.write_compiled_resource.php create mode 100644 bundled-libs/Smarty/libs/internals/core.write_file.php create mode 100644 bundled-libs/Smarty/libs/plugins/block.textformat.php create mode 100644 bundled-libs/Smarty/libs/plugins/compiler.assign.php create mode 100644 bundled-libs/Smarty/libs/plugins/function.assign_debug_info.php create mode 100644 bundled-libs/Smarty/libs/plugins/function.config_load.php create mode 100644 bundled-libs/Smarty/libs/plugins/function.counter.php create mode 100644 bundled-libs/Smarty/libs/plugins/function.cycle.php create mode 100644 bundled-libs/Smarty/libs/plugins/function.debug.php create mode 100644 bundled-libs/Smarty/libs/plugins/function.eval.php create mode 100644 bundled-libs/Smarty/libs/plugins/function.fetch.php create mode 100644 bundled-libs/Smarty/libs/plugins/function.html_checkboxes.php create mode 100644 bundled-libs/Smarty/libs/plugins/function.html_image.php create mode 100644 bundled-libs/Smarty/libs/plugins/function.html_options.php create mode 100644 bundled-libs/Smarty/libs/plugins/function.html_radios.php create mode 100644 bundled-libs/Smarty/libs/plugins/function.html_select_date.php create mode 100644 bundled-libs/Smarty/libs/plugins/function.html_select_time.php create mode 100644 bundled-libs/Smarty/libs/plugins/function.html_table.php create mode 100644 bundled-libs/Smarty/libs/plugins/function.mailto.php create mode 100644 bundled-libs/Smarty/libs/plugins/function.math.php create mode 100644 bundled-libs/Smarty/libs/plugins/function.popup.php create mode 100644 bundled-libs/Smarty/libs/plugins/function.popup_init.php create mode 100644 bundled-libs/Smarty/libs/plugins/modifier.capitalize.php create mode 100644 bundled-libs/Smarty/libs/plugins/modifier.cat.php create mode 100644 bundled-libs/Smarty/libs/plugins/modifier.count_characters.php create mode 100644 bundled-libs/Smarty/libs/plugins/modifier.count_paragraphs.php create mode 100644 bundled-libs/Smarty/libs/plugins/modifier.count_sentences.php create mode 100644 bundled-libs/Smarty/libs/plugins/modifier.count_words.php create mode 100644 bundled-libs/Smarty/libs/plugins/modifier.date_format.php create mode 100644 bundled-libs/Smarty/libs/plugins/modifier.debug_print_var.php create mode 100644 bundled-libs/Smarty/libs/plugins/modifier.default.php create mode 100644 bundled-libs/Smarty/libs/plugins/modifier.escape.php create mode 100644 bundled-libs/Smarty/libs/plugins/modifier.indent.php create mode 100644 bundled-libs/Smarty/libs/plugins/modifier.lower.php create mode 100644 bundled-libs/Smarty/libs/plugins/modifier.nl2br.php create mode 100644 bundled-libs/Smarty/libs/plugins/modifier.regex_replace.php create mode 100644 bundled-libs/Smarty/libs/plugins/modifier.replace.php create mode 100644 bundled-libs/Smarty/libs/plugins/modifier.spacify.php create mode 100644 bundled-libs/Smarty/libs/plugins/modifier.string_format.php create mode 100644 bundled-libs/Smarty/libs/plugins/modifier.strip.php create mode 100644 bundled-libs/Smarty/libs/plugins/modifier.strip_tags.php create mode 100644 bundled-libs/Smarty/libs/plugins/modifier.truncate.php create mode 100644 bundled-libs/Smarty/libs/plugins/modifier.upper.php create mode 100644 bundled-libs/Smarty/libs/plugins/modifier.wordwrap.php create mode 100644 bundled-libs/Smarty/libs/plugins/outputfilter.trimwhitespace.php create mode 100644 bundled-libs/Smarty/libs/plugins/shared.escape_special_chars.php create mode 100644 bundled-libs/Smarty/libs/plugins/shared.make_timestamp.php create mode 100644 bundled-libs/Text/BUNDLE_NOTICE create mode 100644 bundled-libs/Text/Wiki.php create mode 100644 bundled-libs/Text/Wiki/Parse.php create mode 100644 bundled-libs/Text/Wiki/Parse/Default/Anchor.php create mode 100644 bundled-libs/Text/Wiki/Parse/Default/Blockquote.php create mode 100644 bundled-libs/Text/Wiki/Parse/Default/Bold.php create mode 100644 bundled-libs/Text/Wiki/Parse/Default/Break.php create mode 100644 bundled-libs/Text/Wiki/Parse/Default/Center.php create mode 100644 bundled-libs/Text/Wiki/Parse/Default/Code.php create mode 100644 bundled-libs/Text/Wiki/Parse/Default/Colortext.php create mode 100644 bundled-libs/Text/Wiki/Parse/Default/Deflist.php create mode 100644 bundled-libs/Text/Wiki/Parse/Default/Delimiter.php create mode 100644 bundled-libs/Text/Wiki/Parse/Default/Embed.php create mode 100644 bundled-libs/Text/Wiki/Parse/Default/Emphasis.php create mode 100644 bundled-libs/Text/Wiki/Parse/Default/Freelink.php create mode 100644 bundled-libs/Text/Wiki/Parse/Default/Function.php create mode 100644 bundled-libs/Text/Wiki/Parse/Default/Heading.php create mode 100644 bundled-libs/Text/Wiki/Parse/Default/Horiz.php create mode 100644 bundled-libs/Text/Wiki/Parse/Default/Html.php create mode 100644 bundled-libs/Text/Wiki/Parse/Default/Image.php create mode 100644 bundled-libs/Text/Wiki/Parse/Default/Include.php create mode 100644 bundled-libs/Text/Wiki/Parse/Default/Interwiki.php create mode 100644 bundled-libs/Text/Wiki/Parse/Default/Italic.php create mode 100644 bundled-libs/Text/Wiki/Parse/Default/List.php create mode 100644 bundled-libs/Text/Wiki/Parse/Default/Newline.php create mode 100644 bundled-libs/Text/Wiki/Parse/Default/Paragraph.php create mode 100644 bundled-libs/Text/Wiki/Parse/Default/Phplookup.php create mode 100644 bundled-libs/Text/Wiki/Parse/Default/Prefilter.php create mode 100644 bundled-libs/Text/Wiki/Parse/Default/Raw.php create mode 100644 bundled-libs/Text/Wiki/Parse/Default/Revise.php create mode 100644 bundled-libs/Text/Wiki/Parse/Default/Strong.php create mode 100644 bundled-libs/Text/Wiki/Parse/Default/Superscript.php create mode 100644 bundled-libs/Text/Wiki/Parse/Default/Table.php create mode 100644 bundled-libs/Text/Wiki/Parse/Default/Tighten.php create mode 100644 bundled-libs/Text/Wiki/Parse/Default/Toc.php create mode 100644 bundled-libs/Text/Wiki/Parse/Default/Tt.php create mode 100644 bundled-libs/Text/Wiki/Parse/Default/Url.php create mode 100644 bundled-libs/Text/Wiki/Parse/Default/Wikilink.php create mode 100644 bundled-libs/Text/Wiki/Render.php create mode 100644 bundled-libs/Text/Wiki/Render/Latex.php create mode 100644 bundled-libs/Text/Wiki/Render/Latex/Anchor.php create mode 100644 bundled-libs/Text/Wiki/Render/Latex/Blockquote.php create mode 100644 bundled-libs/Text/Wiki/Render/Latex/Bold.php create mode 100644 bundled-libs/Text/Wiki/Render/Latex/Break.php create mode 100644 bundled-libs/Text/Wiki/Render/Latex/Center.php create mode 100644 bundled-libs/Text/Wiki/Render/Latex/Code.php create mode 100644 bundled-libs/Text/Wiki/Render/Latex/Colortext.php create mode 100644 bundled-libs/Text/Wiki/Render/Latex/Deflist.php create mode 100644 bundled-libs/Text/Wiki/Render/Latex/Delimiter.php create mode 100644 bundled-libs/Text/Wiki/Render/Latex/Embed.php create mode 100644 bundled-libs/Text/Wiki/Render/Latex/Emphasis.php create mode 100644 bundled-libs/Text/Wiki/Render/Latex/Freelink.php create mode 100644 bundled-libs/Text/Wiki/Render/Latex/Function.php create mode 100644 bundled-libs/Text/Wiki/Render/Latex/Heading.php create mode 100644 bundled-libs/Text/Wiki/Render/Latex/Horiz.php create mode 100644 bundled-libs/Text/Wiki/Render/Latex/Html.php create mode 100644 bundled-libs/Text/Wiki/Render/Latex/Image.php create mode 100644 bundled-libs/Text/Wiki/Render/Latex/Include.php create mode 100644 bundled-libs/Text/Wiki/Render/Latex/Interwiki.php create mode 100644 bundled-libs/Text/Wiki/Render/Latex/Italic.php create mode 100644 bundled-libs/Text/Wiki/Render/Latex/List.php create mode 100644 bundled-libs/Text/Wiki/Render/Latex/Newline.php create mode 100644 bundled-libs/Text/Wiki/Render/Latex/Paragraph.php create mode 100644 bundled-libs/Text/Wiki/Render/Latex/Phplookup.php create mode 100644 bundled-libs/Text/Wiki/Render/Latex/Prefilter.php create mode 100644 bundled-libs/Text/Wiki/Render/Latex/Raw.php create mode 100644 bundled-libs/Text/Wiki/Render/Latex/Revise.php create mode 100644 bundled-libs/Text/Wiki/Render/Latex/Strong.php create mode 100644 bundled-libs/Text/Wiki/Render/Latex/Superscript.php create mode 100644 bundled-libs/Text/Wiki/Render/Latex/Table.php create mode 100644 bundled-libs/Text/Wiki/Render/Latex/Tighten.php create mode 100644 bundled-libs/Text/Wiki/Render/Latex/Toc.php create mode 100644 bundled-libs/Text/Wiki/Render/Latex/Tt.php create mode 100644 bundled-libs/Text/Wiki/Render/Latex/Url.php create mode 100644 bundled-libs/Text/Wiki/Render/Latex/Wikilink.php create mode 100644 bundled-libs/Text/Wiki/Render/Plain.php create mode 100644 bundled-libs/Text/Wiki/Render/Plain/Anchor.php create mode 100644 bundled-libs/Text/Wiki/Render/Plain/Blockquote.php create mode 100644 bundled-libs/Text/Wiki/Render/Plain/Bold.php create mode 100644 bundled-libs/Text/Wiki/Render/Plain/Break.php create mode 100644 bundled-libs/Text/Wiki/Render/Plain/Center.php create mode 100644 bundled-libs/Text/Wiki/Render/Plain/Code.php create mode 100644 bundled-libs/Text/Wiki/Render/Plain/Colortext.php create mode 100644 bundled-libs/Text/Wiki/Render/Plain/Deflist.php create mode 100644 bundled-libs/Text/Wiki/Render/Plain/Delimiter.php create mode 100644 bundled-libs/Text/Wiki/Render/Plain/Embed.php create mode 100644 bundled-libs/Text/Wiki/Render/Plain/Emphasis.php create mode 100644 bundled-libs/Text/Wiki/Render/Plain/Freelink.php create mode 100644 bundled-libs/Text/Wiki/Render/Plain/Function.php create mode 100644 bundled-libs/Text/Wiki/Render/Plain/Heading.php create mode 100644 bundled-libs/Text/Wiki/Render/Plain/Horiz.php create mode 100644 bundled-libs/Text/Wiki/Render/Plain/Html.php create mode 100644 bundled-libs/Text/Wiki/Render/Plain/Image.php create mode 100644 bundled-libs/Text/Wiki/Render/Plain/Include.php create mode 100644 bundled-libs/Text/Wiki/Render/Plain/Interwiki.php create mode 100644 bundled-libs/Text/Wiki/Render/Plain/Italic.php create mode 100644 bundled-libs/Text/Wiki/Render/Plain/List.php create mode 100644 bundled-libs/Text/Wiki/Render/Plain/Newline.php create mode 100644 bundled-libs/Text/Wiki/Render/Plain/Paragraph.php create mode 100644 bundled-libs/Text/Wiki/Render/Plain/Phplookup.php create mode 100644 bundled-libs/Text/Wiki/Render/Plain/Prefilter.php create mode 100644 bundled-libs/Text/Wiki/Render/Plain/Raw.php create mode 100644 bundled-libs/Text/Wiki/Render/Plain/Revise.php create mode 100644 bundled-libs/Text/Wiki/Render/Plain/Strong.php create mode 100644 bundled-libs/Text/Wiki/Render/Plain/Superscript.php create mode 100644 bundled-libs/Text/Wiki/Render/Plain/Table.php create mode 100644 bundled-libs/Text/Wiki/Render/Plain/Tighten.php create mode 100644 bundled-libs/Text/Wiki/Render/Plain/Toc.php create mode 100644 bundled-libs/Text/Wiki/Render/Plain/Tt.php create mode 100644 bundled-libs/Text/Wiki/Render/Plain/Url.php create mode 100644 bundled-libs/Text/Wiki/Render/Plain/Wikilink.php create mode 100644 bundled-libs/Text/Wiki/Render/Xhtml.php create mode 100644 bundled-libs/Text/Wiki/Render/Xhtml/Anchor.php create mode 100644 bundled-libs/Text/Wiki/Render/Xhtml/Blockquote.php create mode 100644 bundled-libs/Text/Wiki/Render/Xhtml/Bold.php create mode 100644 bundled-libs/Text/Wiki/Render/Xhtml/Break.php create mode 100644 bundled-libs/Text/Wiki/Render/Xhtml/Center.php create mode 100644 bundled-libs/Text/Wiki/Render/Xhtml/Code.php create mode 100644 bundled-libs/Text/Wiki/Render/Xhtml/Colortext.php create mode 100644 bundled-libs/Text/Wiki/Render/Xhtml/Deflist.php create mode 100644 bundled-libs/Text/Wiki/Render/Xhtml/Delimiter.php create mode 100644 bundled-libs/Text/Wiki/Render/Xhtml/Embed.php create mode 100644 bundled-libs/Text/Wiki/Render/Xhtml/Emphasis.php create mode 100644 bundled-libs/Text/Wiki/Render/Xhtml/Freelink.php create mode 100644 bundled-libs/Text/Wiki/Render/Xhtml/Function.php create mode 100644 bundled-libs/Text/Wiki/Render/Xhtml/Heading.php create mode 100644 bundled-libs/Text/Wiki/Render/Xhtml/Horiz.php create mode 100644 bundled-libs/Text/Wiki/Render/Xhtml/Html.php create mode 100644 bundled-libs/Text/Wiki/Render/Xhtml/Image.php create mode 100644 bundled-libs/Text/Wiki/Render/Xhtml/Include.php create mode 100644 bundled-libs/Text/Wiki/Render/Xhtml/Interwiki.php create mode 100644 bundled-libs/Text/Wiki/Render/Xhtml/Italic.php create mode 100644 bundled-libs/Text/Wiki/Render/Xhtml/List.php create mode 100644 bundled-libs/Text/Wiki/Render/Xhtml/Newline.php create mode 100644 bundled-libs/Text/Wiki/Render/Xhtml/Paragraph.php create mode 100644 bundled-libs/Text/Wiki/Render/Xhtml/Phplookup.php create mode 100644 bundled-libs/Text/Wiki/Render/Xhtml/Prefilter.php create mode 100644 bundled-libs/Text/Wiki/Render/Xhtml/Raw.php create mode 100644 bundled-libs/Text/Wiki/Render/Xhtml/Revise.php create mode 100644 bundled-libs/Text/Wiki/Render/Xhtml/Strong.php create mode 100644 bundled-libs/Text/Wiki/Render/Xhtml/Superscript.php create mode 100644 bundled-libs/Text/Wiki/Render/Xhtml/Table.php create mode 100644 bundled-libs/Text/Wiki/Render/Xhtml/Tighten.php create mode 100644 bundled-libs/Text/Wiki/Render/Xhtml/Toc.php create mode 100644 bundled-libs/Text/Wiki/Render/Xhtml/Tt.php create mode 100644 bundled-libs/Text/Wiki/Render/Xhtml/Url.php create mode 100644 bundled-libs/Text/Wiki/Render/Xhtml/Wikilink.php create mode 100644 bundled-libs/Text/Wiki/Rule.php create mode 100644 bundled-libs/Text/Wiki/Rule/blockquote.php create mode 100644 bundled-libs/Text/Wiki/Rule/bold.php create mode 100644 bundled-libs/Text/Wiki/Rule/break.php create mode 100644 bundled-libs/Text/Wiki/Rule/center.php create mode 100644 bundled-libs/Text/Wiki/Rule/code.php create mode 100644 bundled-libs/Text/Wiki/Rule/colortext.php create mode 100644 bundled-libs/Text/Wiki/Rule/deflist.php create mode 100644 bundled-libs/Text/Wiki/Rule/delimiter.php create mode 100644 bundled-libs/Text/Wiki/Rule/embed.php create mode 100644 bundled-libs/Text/Wiki/Rule/emphasis.php create mode 100644 bundled-libs/Text/Wiki/Rule/entities.php create mode 100644 bundled-libs/Text/Wiki/Rule/freelink.php create mode 100644 bundled-libs/Text/Wiki/Rule/heading.php create mode 100644 bundled-libs/Text/Wiki/Rule/horiz.php create mode 100644 bundled-libs/Text/Wiki/Rule/html.php create mode 100644 bundled-libs/Text/Wiki/Rule/image.php create mode 100644 bundled-libs/Text/Wiki/Rule/include.php create mode 100644 bundled-libs/Text/Wiki/Rule/interwiki.php create mode 100644 bundled-libs/Text/Wiki/Rule/italic.php create mode 100644 bundled-libs/Text/Wiki/Rule/list.php create mode 100644 bundled-libs/Text/Wiki/Rule/newline.php create mode 100644 bundled-libs/Text/Wiki/Rule/paragraph.php create mode 100644 bundled-libs/Text/Wiki/Rule/phpcode.php create mode 100644 bundled-libs/Text/Wiki/Rule/phplookup.php create mode 100644 bundled-libs/Text/Wiki/Rule/prefilter.php create mode 100644 bundled-libs/Text/Wiki/Rule/raw.php create mode 100644 bundled-libs/Text/Wiki/Rule/revise.php create mode 100644 bundled-libs/Text/Wiki/Rule/strong.php create mode 100644 bundled-libs/Text/Wiki/Rule/superscript.php create mode 100644 bundled-libs/Text/Wiki/Rule/table.php create mode 100644 bundled-libs/Text/Wiki/Rule/tighten.php create mode 100644 bundled-libs/Text/Wiki/Rule/toc.php create mode 100644 bundled-libs/Text/Wiki/Rule/tt.php create mode 100644 bundled-libs/Text/Wiki/Rule/url.php create mode 100644 bundled-libs/Text/Wiki/Rule/wikilink.php create mode 100644 bundled-libs/XML/BUNDLE_NOTICE create mode 100644 bundled-libs/XML/RPC.php create mode 100644 bundled-libs/XML/RPC/Dump.php create mode 100644 bundled-libs/XML/RPC/Server.php create mode 100644 bundled-libs/YahooUI/treeview/YAHOO.js create mode 100644 bundled-libs/YahooUI/treeview/license.txt create mode 100644 bundled-libs/YahooUI/treeview/treeview.js create mode 100755 bundled-libs/create_release.sh create mode 100644 bundled-libs/docs/HomePage.wiki.txt create mode 100644 bundled-libs/docs/SamplePage.wiki.txt create mode 100644 bundled-libs/docs/SmashWordsTogether.wiki.txt create mode 100644 bundled-libs/docs/TextWikiProposal.wiki.txt create mode 100644 bundled-libs/docs/TokenRuleKeys.wiki.txt create mode 100644 bundled-libs/docs/WikiPage.wiki.txt create mode 100644 bundled-libs/docs/WordsSmashedTogether.wiki.txt create mode 100644 bundled-libs/docs/free links.wiki.txt create mode 100644 bundled-libs/docs/index.php create mode 100644 bundled-libs/docs/stylesheet.css create mode 100644 bundled-libs/dragdrop.js create mode 100644 bundled-libs/imgedit.js create mode 100644 bundled-libs/tests/README create mode 100644 comment.php create mode 100644 deployment/archives/.ignore create mode 100644 deployment/comment.php create mode 100644 deployment/exit.php create mode 100644 deployment/index.php create mode 100644 deployment/rss.php create mode 100644 deployment/serendipity.css.php create mode 100644 deployment/serendipity_admin.php create mode 100644 deployment/serendipity_admin_image_selector.php create mode 100644 deployment/serendipity_config.inc.php create mode 100644 deployment/serendipity_define.js.php create mode 100644 deployment/serendipity_editor.js create mode 100644 deployment/serendipity_xmlrpc.php create mode 100644 deployment/templates_c/.ignore create mode 100644 deployment/uploads/.ignore create mode 100644 deployment/wfwcomment.php create mode 100644 docs/CHANGED_FILES create mode 100644 docs/INSTALL create mode 100644 docs/INSTALL_EMBEDED create mode 100644 docs/INSTALL_SHARED create mode 100644 docs/LICENSE create mode 100644 docs/NEWS create mode 100644 docs/NEWS_OLD create mode 100644 docs/README create mode 100644 docs/UPGRADE create mode 100755 docs/upgrade.sh create mode 100644 exit.php create mode 100644 htmlarea/ChangeLog create mode 100644 htmlarea/dialog.js create mode 100644 htmlarea/examples/2-areas.html create mode 100644 htmlarea/examples/context-menu.html create mode 100644 htmlarea/examples/core.html create mode 100644 htmlarea/examples/css.html create mode 100644 htmlarea/examples/custom.css create mode 100644 htmlarea/examples/full-page.html create mode 100644 htmlarea/examples/fully-loaded.html create mode 100644 htmlarea/examples/index.html create mode 100644 htmlarea/examples/spell-checker.html create mode 100644 htmlarea/examples/table-operations.html create mode 100644 htmlarea/htmlarea.css create mode 100644 htmlarea/htmlarea.js create mode 100644 htmlarea/images/ed_about.gif create mode 100644 htmlarea/images/ed_align_center.gif create mode 100644 htmlarea/images/ed_align_justify.gif create mode 100644 htmlarea/images/ed_align_left.gif create mode 100644 htmlarea/images/ed_align_right.gif create mode 100644 htmlarea/images/ed_blank.gif create mode 100644 htmlarea/images/ed_charmap.gif create mode 100644 htmlarea/images/ed_color_bg.gif create mode 100644 htmlarea/images/ed_color_fg.gif create mode 100644 htmlarea/images/ed_copy.gif create mode 100644 htmlarea/images/ed_custom.gif create mode 100644 htmlarea/images/ed_cut.gif create mode 100644 htmlarea/images/ed_delete.gif create mode 100644 htmlarea/images/ed_format_bold.gif create mode 100644 htmlarea/images/ed_format_italic.gif create mode 100644 htmlarea/images/ed_format_strike.gif create mode 100644 htmlarea/images/ed_format_sub.gif create mode 100644 htmlarea/images/ed_format_sup.gif create mode 100644 htmlarea/images/ed_format_underline.gif create mode 100644 htmlarea/images/ed_help.gif create mode 100644 htmlarea/images/ed_hr.gif create mode 100644 htmlarea/images/ed_html.gif create mode 100644 htmlarea/images/ed_image.gif create mode 100644 htmlarea/images/ed_indent_less.gif create mode 100644 htmlarea/images/ed_indent_more.gif create mode 100644 htmlarea/images/ed_killword.gif create mode 100644 htmlarea/images/ed_left_to_right.gif create mode 100644 htmlarea/images/ed_link.gif create mode 100644 htmlarea/images/ed_list_bullet.gif create mode 100644 htmlarea/images/ed_list_num.gif create mode 100644 htmlarea/images/ed_paste.gif create mode 100644 htmlarea/images/ed_print.gif create mode 100644 htmlarea/images/ed_redo.gif create mode 100644 htmlarea/images/ed_right_to_left.gif create mode 100644 htmlarea/images/ed_rmformat.gif create mode 100644 htmlarea/images/ed_s9yimage.gif create mode 100644 htmlarea/images/ed_save.gif create mode 100644 htmlarea/images/ed_save.png create mode 100644 htmlarea/images/ed_show_border.gif create mode 100644 htmlarea/images/ed_splitcel.gif create mode 100644 htmlarea/images/ed_undo.gif create mode 100644 htmlarea/images/fullscreen_maximize.gif create mode 100644 htmlarea/images/fullscreen_minimize.gif create mode 100644 htmlarea/images/insert_table.gif create mode 100644 htmlarea/index.html create mode 100644 htmlarea/lang/b5.js create mode 100644 htmlarea/lang/ch.js create mode 100644 htmlarea/lang/cs-iso.js create mode 100755 htmlarea/lang/cs-utf.js create mode 100644 htmlarea/lang/cs-win.js create mode 100644 htmlarea/lang/cz.js create mode 100644 htmlarea/lang/da-utf.js create mode 100644 htmlarea/lang/da.js create mode 100644 htmlarea/lang/de-utf.js create mode 100644 htmlarea/lang/de.js create mode 100644 htmlarea/lang/ee.js create mode 100644 htmlarea/lang/el.js create mode 100644 htmlarea/lang/en.js create mode 100644 htmlarea/lang/es-utf.js create mode 100644 htmlarea/lang/es.js create mode 100644 htmlarea/lang/fi.js create mode 100644 htmlarea/lang/fr-utf.js create mode 100644 htmlarea/lang/fr.js create mode 100644 htmlarea/lang/gb.js create mode 100644 htmlarea/lang/he.js create mode 100644 htmlarea/lang/hu.js create mode 100644 htmlarea/lang/it-utf.js create mode 100644 htmlarea/lang/it.js create mode 100644 htmlarea/lang/ja-euc.js create mode 100644 htmlarea/lang/ja-jis.js create mode 100644 htmlarea/lang/ja-sjis.js create mode 100644 htmlarea/lang/ja-utf8.js create mode 100644 htmlarea/lang/lt.js create mode 100644 htmlarea/lang/lv.js create mode 100644 htmlarea/lang/nb.js create mode 100644 htmlarea/lang/nl-utf.js create mode 100644 htmlarea/lang/nl.js create mode 100644 htmlarea/lang/no-utf.js create mode 100644 htmlarea/lang/no.js create mode 100644 htmlarea/lang/pl.js create mode 100644 htmlarea/lang/pt_br.js create mode 100644 htmlarea/lang/pt_pt-utf.js create mode 100644 htmlarea/lang/pt_pt.js create mode 100644 htmlarea/lang/ro.js create mode 100644 htmlarea/lang/ru.js create mode 100644 htmlarea/lang/se-utf.js create mode 100644 htmlarea/lang/se.js create mode 100644 htmlarea/lang/si.js create mode 100644 htmlarea/lang/vn.js create mode 100644 htmlarea/license.txt create mode 100644 htmlarea/plugins/CSS/css.js create mode 100644 htmlarea/plugins/CSS/lang/en.js create mode 100644 htmlarea/plugins/ContextMenu/context-menu.js create mode 100644 htmlarea/plugins/ContextMenu/lang/de.js create mode 100644 htmlarea/plugins/ContextMenu/lang/el.js create mode 100644 htmlarea/plugins/ContextMenu/lang/en.js create mode 100644 htmlarea/plugins/ContextMenu/lang/nl.js create mode 100644 htmlarea/plugins/ContextMenu/lang/pt_br.js create mode 100644 htmlarea/plugins/ContextMenu/menu.css create mode 100644 htmlarea/plugins/FullPage/full-page.js create mode 100644 htmlarea/plugins/FullPage/img/docprop.gif create mode 100644 htmlarea/plugins/FullPage/lang/en.js create mode 100644 htmlarea/plugins/FullPage/lang/pt_br.js create mode 100644 htmlarea/plugins/FullPage/lang/pt_pt.js create mode 100644 htmlarea/plugins/FullPage/lang/ro.js create mode 100644 htmlarea/plugins/FullPage/popups/docprop.html create mode 100644 htmlarea/plugins/FullPage/test.html create mode 100644 htmlarea/plugins/TableOperations/img/cell-delete.gif create mode 100644 htmlarea/plugins/TableOperations/img/cell-insert-after.gif create mode 100644 htmlarea/plugins/TableOperations/img/cell-insert-before.gif create mode 100644 htmlarea/plugins/TableOperations/img/cell-merge.gif create mode 100644 htmlarea/plugins/TableOperations/img/cell-prop.gif create mode 100644 htmlarea/plugins/TableOperations/img/cell-split.gif create mode 100644 htmlarea/plugins/TableOperations/img/col-delete.gif create mode 100644 htmlarea/plugins/TableOperations/img/col-insert-after.gif create mode 100644 htmlarea/plugins/TableOperations/img/col-insert-before.gif create mode 100644 htmlarea/plugins/TableOperations/img/col-split.gif create mode 100644 htmlarea/plugins/TableOperations/img/row-delete.gif create mode 100644 htmlarea/plugins/TableOperations/img/row-insert-above.gif create mode 100644 htmlarea/plugins/TableOperations/img/row-insert-under.gif create mode 100644 htmlarea/plugins/TableOperations/img/row-prop.gif create mode 100644 htmlarea/plugins/TableOperations/img/row-split.gif create mode 100644 htmlarea/plugins/TableOperations/img/table-prop.gif create mode 100644 htmlarea/plugins/TableOperations/lang/cz.js create mode 100644 htmlarea/plugins/TableOperations/lang/da.js create mode 100644 htmlarea/plugins/TableOperations/lang/de.js create mode 100644 htmlarea/plugins/TableOperations/lang/el.js create mode 100644 htmlarea/plugins/TableOperations/lang/en.js create mode 100644 htmlarea/plugins/TableOperations/lang/fi.js create mode 100644 htmlarea/plugins/TableOperations/lang/hu.js create mode 100644 htmlarea/plugins/TableOperations/lang/it.js create mode 100644 htmlarea/plugins/TableOperations/lang/nl.js create mode 100644 htmlarea/plugins/TableOperations/lang/no.js create mode 100644 htmlarea/plugins/TableOperations/lang/pt_br.js create mode 100644 htmlarea/plugins/TableOperations/lang/pt_pt.js create mode 100644 htmlarea/plugins/TableOperations/lang/ro.js create mode 100644 htmlarea/plugins/TableOperations/table-operations.js create mode 100644 htmlarea/popupdiv.js create mode 100644 htmlarea/popups/about.html create mode 100644 htmlarea/popups/blank.html create mode 100644 htmlarea/popups/custom2.html create mode 100644 htmlarea/popups/editor_help.html create mode 100644 htmlarea/popups/fullscreen.html create mode 100644 htmlarea/popups/insert_image.html create mode 100644 htmlarea/popups/insert_table.html create mode 100644 htmlarea/popups/link.html create mode 100644 htmlarea/popups/old-fullscreen.html create mode 100644 htmlarea/popups/old_insert_image.html create mode 100644 htmlarea/popups/popup.js create mode 100644 htmlarea/popups/select_color.html create mode 100644 htmlarea/popupwin.js create mode 100644 htmlarea/reference.html create mode 100644 htmlarea/release-notes.html create mode 100644 include/admin/category.inc.php create mode 100644 include/admin/comments.inc.php create mode 100644 include/admin/configuration.inc.php create mode 100644 include/admin/entries.inc.php create mode 100644 include/admin/entries_overview.inc.php create mode 100644 include/admin/export.inc.php create mode 100644 include/admin/groups.inc.php create mode 100644 include/admin/images.inc.php create mode 100644 include/admin/import.inc.php create mode 100644 include/admin/importers/b2evolution.inc.php create mode 100644 include/admin/importers/bblog.inc.php create mode 100644 include/admin/importers/blogger.inc.php create mode 100644 include/admin/importers/bmachine.inc.php create mode 100644 include/admin/importers/geeklog.inc.php create mode 100644 include/admin/importers/generic.inc.php create mode 100644 include/admin/importers/livejournal.inc.php create mode 100644 include/admin/importers/movabletype.inc.php create mode 100644 include/admin/importers/nucleus.inc.php create mode 100644 include/admin/importers/phpbb.inc.php create mode 100644 include/admin/importers/pivot.inc.php create mode 100644 include/admin/importers/pmachine.inc.php create mode 100644 include/admin/importers/sunlog.inc.php create mode 100644 include/admin/importers/textpattern.inc.php create mode 100755 include/admin/importers/voodoopad.inc.php create mode 100644 include/admin/importers/wordpress-pg.inc.php create mode 100644 include/admin/importers/wordpress.inc.php create mode 100644 include/admin/installer.inc.php create mode 100644 include/admin/overview.inc.php create mode 100644 include/admin/personal.inc.php create mode 100644 include/admin/plugins.inc.php create mode 100644 include/admin/templates.inc.php create mode 100644 include/admin/upgrader.inc.php create mode 100644 include/admin/users.inc.php create mode 100644 include/compat.inc.php create mode 100644 include/db/db.inc.php create mode 100644 include/db/mysql.inc.php create mode 100644 include/db/mysqli.inc.php create mode 100644 include/db/postgres.inc.php create mode 100644 include/db/sqlite.inc.php create mode 100644 include/functions.inc.php create mode 100644 include/functions_calendars.inc.php create mode 100644 include/functions_comments.inc.php create mode 100644 include/functions_config.inc.php create mode 100644 include/functions_entries.inc.php create mode 100644 include/functions_entries_admin.inc.php create mode 100644 include/functions_images.inc.php create mode 100644 include/functions_images_crop.inc.php create mode 100644 include/functions_installer.inc.php create mode 100644 include/functions_permalinks.inc.php create mode 100644 include/functions_plugins_admin.inc.php create mode 100644 include/functions_rss.inc.php create mode 100644 include/functions_smarty.inc.php create mode 100644 include/functions_trackbacks.inc.php create mode 100644 include/functions_upgrader.inc.php create mode 100644 include/genpage.inc.php create mode 100644 include/lang.inc.php create mode 100644 include/plugin_api.inc.php create mode 100644 include/plugin_api_extension.inc.php create mode 100644 include/plugin_internal.inc.php create mode 100644 include/template_api.inc.php create mode 100644 include/tpl/config_local.inc.php create mode 100644 include/tpl/config_personal.inc.php create mode 100644 include/tpl/htaccess_cgi_errordocs.tpl create mode 100644 include/tpl/htaccess_cgi_normal.tpl create mode 100644 include/tpl/htaccess_cgi_rewrite.tpl create mode 100644 include/tpl/htaccess_errordocs.tpl create mode 100644 include/tpl/htaccess_normal.tpl create mode 100644 include/tpl/htaccess_rewrite.tpl create mode 100644 index.php create mode 100644 lang/UTF-8/plugin_lang.php create mode 100644 lang/UTF-8/recode.php create mode 100755 lang/UTF-8/recode.sh create mode 100644 lang/UTF-8/serendipity_lang_bg.inc.php create mode 100644 lang/UTF-8/serendipity_lang_cn.inc.php create mode 100644 lang/UTF-8/serendipity_lang_cs.inc.php create mode 100644 lang/UTF-8/serendipity_lang_cz.inc.php create mode 100644 lang/UTF-8/serendipity_lang_da.inc.php create mode 100644 lang/UTF-8/serendipity_lang_de.inc.php create mode 100644 lang/UTF-8/serendipity_lang_en.inc.php create mode 100644 lang/UTF-8/serendipity_lang_es.inc.php create mode 100644 lang/UTF-8/serendipity_lang_fa.inc.php create mode 100644 lang/UTF-8/serendipity_lang_fi.inc.php create mode 100644 lang/UTF-8/serendipity_lang_fr.inc.php create mode 100644 lang/UTF-8/serendipity_lang_hu.inc.php create mode 100644 lang/UTF-8/serendipity_lang_is.inc.php create mode 100644 lang/UTF-8/serendipity_lang_it.inc.php create mode 100644 lang/UTF-8/serendipity_lang_ja.inc.php create mode 100644 lang/UTF-8/serendipity_lang_ko.inc.php create mode 100644 lang/UTF-8/serendipity_lang_nl.inc.php create mode 100644 lang/UTF-8/serendipity_lang_no.inc.php create mode 100644 lang/UTF-8/serendipity_lang_pl.inc.php create mode 100644 lang/UTF-8/serendipity_lang_pt.inc.php create mode 100644 lang/UTF-8/serendipity_lang_pt_PT.inc.php create mode 100644 lang/UTF-8/serendipity_lang_ro.inc.php create mode 100644 lang/UTF-8/serendipity_lang_ru.inc.php create mode 100644 lang/UTF-8/serendipity_lang_sa.inc.php create mode 100644 lang/UTF-8/serendipity_lang_se.inc.php create mode 100644 lang/UTF-8/serendipity_lang_ta.inc.php create mode 100644 lang/UTF-8/serendipity_lang_tn.inc.php create mode 100644 lang/UTF-8/serendipity_lang_tr.inc.php create mode 100644 lang/UTF-8/serendipity_lang_tw.inc.php create mode 100644 lang/UTF-8/serendipity_lang_zh.inc.php create mode 100755 lang/addlang.sh create mode 100644 lang/addlang.txt create mode 100755 lang/append.sh create mode 100644 lang/plugin_lang.php create mode 100644 lang/serendipity_lang_bg.inc.php create mode 100644 lang/serendipity_lang_cn.inc.php create mode 100644 lang/serendipity_lang_cs.inc.php create mode 100644 lang/serendipity_lang_cz.inc.php create mode 100644 lang/serendipity_lang_da.inc.php create mode 100644 lang/serendipity_lang_de.inc.php create mode 100644 lang/serendipity_lang_en.inc.php create mode 100644 lang/serendipity_lang_es.inc.php create mode 100644 lang/serendipity_lang_fa.inc.php create mode 100644 lang/serendipity_lang_fi.inc.php create mode 100644 lang/serendipity_lang_fr.inc.php create mode 100644 lang/serendipity_lang_hu.inc.php create mode 100644 lang/serendipity_lang_is.inc.php create mode 100644 lang/serendipity_lang_it.inc.php create mode 100644 lang/serendipity_lang_ja.inc.php create mode 100644 lang/serendipity_lang_ko.inc.php create mode 100644 lang/serendipity_lang_nl.inc.php create mode 100644 lang/serendipity_lang_no.inc.php create mode 100644 lang/serendipity_lang_pl.inc.php create mode 100644 lang/serendipity_lang_pt.inc.php create mode 100644 lang/serendipity_lang_pt_PT.inc.php create mode 100644 lang/serendipity_lang_ro.inc.php create mode 100644 lang/serendipity_lang_ru.inc.php create mode 100644 lang/serendipity_lang_sa.inc.php create mode 100644 lang/serendipity_lang_se.inc.php create mode 100644 lang/serendipity_lang_ta.inc.php create mode 100644 lang/serendipity_lang_tn.inc.php create mode 100644 lang/serendipity_lang_tr.inc.php create mode 100644 lang/serendipity_lang_tw.inc.php create mode 100644 lang/serendipity_lang_zh.inc.php create mode 100644 plugins/serendipity_event_bbcode/UTF-8/lang_bg.inc.php create mode 100644 plugins/serendipity_event_bbcode/UTF-8/lang_de.inc.php create mode 100644 plugins/serendipity_event_bbcode/UTF-8/lang_es.inc.php create mode 100644 plugins/serendipity_event_bbcode/UTF-8/lang_fr.inc.php create mode 100644 plugins/serendipity_event_bbcode/UTF-8/lang_ja.inc.php create mode 100644 plugins/serendipity_event_bbcode/UTF-8/lang_ko.inc.php create mode 100644 plugins/serendipity_event_bbcode/UTF-8/lang_pl.inc.php create mode 100644 plugins/serendipity_event_bbcode/UTF-8/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_event_bbcode/UTF-8/lang_tn.inc.php create mode 100644 plugins/serendipity_event_bbcode/UTF-8/lang_zh.inc.php create mode 100644 plugins/serendipity_event_bbcode/lang_bg.inc.php create mode 100644 plugins/serendipity_event_bbcode/lang_de.inc.php create mode 100644 plugins/serendipity_event_bbcode/lang_en.inc.php create mode 100644 plugins/serendipity_event_bbcode/lang_es.inc.php create mode 100644 plugins/serendipity_event_bbcode/lang_fa.inc.php create mode 100644 plugins/serendipity_event_bbcode/lang_fr.inc.php create mode 100644 plugins/serendipity_event_bbcode/lang_ja.inc.php create mode 100644 plugins/serendipity_event_bbcode/lang_ko.inc.php create mode 100644 plugins/serendipity_event_bbcode/lang_pl.inc.php create mode 100644 plugins/serendipity_event_bbcode/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_event_bbcode/lang_tn.inc.php create mode 100644 plugins/serendipity_event_bbcode/lang_zh.inc.php create mode 100644 plugins/serendipity_event_bbcode/serendipity_event_bbcode.php create mode 100644 plugins/serendipity_event_browsercompatibility/UTF-8/lang_bg.inc.php create mode 100644 plugins/serendipity_event_browsercompatibility/UTF-8/lang_de.inc.php create mode 100644 plugins/serendipity_event_browsercompatibility/UTF-8/lang_es.inc.php create mode 100644 plugins/serendipity_event_browsercompatibility/UTF-8/lang_fr.inc.php create mode 100644 plugins/serendipity_event_browsercompatibility/UTF-8/lang_ja.inc.php create mode 100644 plugins/serendipity_event_browsercompatibility/UTF-8/lang_ko.inc.php create mode 100644 plugins/serendipity_event_browsercompatibility/UTF-8/lang_pl.inc.php create mode 100644 plugins/serendipity_event_browsercompatibility/UTF-8/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_event_browsercompatibility/UTF-8/lang_tn.inc.php create mode 100644 plugins/serendipity_event_browsercompatibility/UTF-8/lang_zh.inc.php create mode 100644 plugins/serendipity_event_browsercompatibility/lang_bg.inc.php create mode 100644 plugins/serendipity_event_browsercompatibility/lang_de.inc.php create mode 100644 plugins/serendipity_event_browsercompatibility/lang_en.inc.php create mode 100644 plugins/serendipity_event_browsercompatibility/lang_es.inc.php create mode 100644 plugins/serendipity_event_browsercompatibility/lang_fr.inc.php create mode 100644 plugins/serendipity_event_browsercompatibility/lang_ja.inc.php create mode 100644 plugins/serendipity_event_browsercompatibility/lang_ko.inc.php create mode 100644 plugins/serendipity_event_browsercompatibility/lang_pl.inc.php create mode 100644 plugins/serendipity_event_browsercompatibility/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_event_browsercompatibility/lang_tn.inc.php create mode 100644 plugins/serendipity_event_browsercompatibility/lang_zh.inc.php create mode 100644 plugins/serendipity_event_browsercompatibility/pngbehavior.htc create mode 100644 plugins/serendipity_event_browsercompatibility/serendipity_event_browsercompatibility.php create mode 100644 plugins/serendipity_event_contentrewrite/UTF-8/lang_de.inc.php create mode 100644 plugins/serendipity_event_contentrewrite/UTF-8/lang_es.inc.php create mode 100644 plugins/serendipity_event_contentrewrite/UTF-8/lang_fr.inc.php create mode 100644 plugins/serendipity_event_contentrewrite/UTF-8/lang_ja.inc.php create mode 100644 plugins/serendipity_event_contentrewrite/UTF-8/lang_ko.inc.php create mode 100644 plugins/serendipity_event_contentrewrite/UTF-8/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_event_contentrewrite/UTF-8/lang_tn.inc.php create mode 100644 plugins/serendipity_event_contentrewrite/UTF-8/lang_zh.inc.php create mode 100644 plugins/serendipity_event_contentrewrite/lang_de.inc.php create mode 100644 plugins/serendipity_event_contentrewrite/lang_en.inc.php create mode 100644 plugins/serendipity_event_contentrewrite/lang_es.inc.php create mode 100644 plugins/serendipity_event_contentrewrite/lang_fr.inc.php create mode 100644 plugins/serendipity_event_contentrewrite/lang_ja.inc.php create mode 100644 plugins/serendipity_event_contentrewrite/lang_ko.inc.php create mode 100644 plugins/serendipity_event_contentrewrite/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_event_contentrewrite/lang_tn.inc.php create mode 100644 plugins/serendipity_event_contentrewrite/lang_zh.inc.php create mode 100644 plugins/serendipity_event_contentrewrite/serendipity_event_contentrewrite.php create mode 100644 plugins/serendipity_event_creativecommons/UTF-8/lang_cn.inc.php create mode 100644 plugins/serendipity_event_creativecommons/UTF-8/lang_de.inc.php create mode 100644 plugins/serendipity_event_creativecommons/UTF-8/lang_es.inc.php create mode 100644 plugins/serendipity_event_creativecommons/UTF-8/lang_fr.inc.php create mode 100644 plugins/serendipity_event_creativecommons/UTF-8/lang_ja.inc.php create mode 100644 plugins/serendipity_event_creativecommons/UTF-8/lang_ko.inc.php create mode 100644 plugins/serendipity_event_creativecommons/UTF-8/lang_pl.inc.php create mode 100644 plugins/serendipity_event_creativecommons/UTF-8/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_event_creativecommons/UTF-8/lang_tn.inc.php create mode 100644 plugins/serendipity_event_creativecommons/UTF-8/lang_zh.inc.php create mode 100644 plugins/serendipity_event_creativecommons/lang_cn.inc.php create mode 100644 plugins/serendipity_event_creativecommons/lang_de.inc.php create mode 100644 plugins/serendipity_event_creativecommons/lang_en.inc.php create mode 100644 plugins/serendipity_event_creativecommons/lang_es.inc.php create mode 100644 plugins/serendipity_event_creativecommons/lang_fr.inc.php create mode 100644 plugins/serendipity_event_creativecommons/lang_ja.inc.php create mode 100644 plugins/serendipity_event_creativecommons/lang_ko.inc.php create mode 100644 plugins/serendipity_event_creativecommons/lang_pl.inc.php create mode 100644 plugins/serendipity_event_creativecommons/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_event_creativecommons/lang_tn.inc.php create mode 100644 plugins/serendipity_event_creativecommons/lang_zh.inc.php create mode 100644 plugins/serendipity_event_creativecommons/serendipity_event_creativecommons.php create mode 100644 plugins/serendipity_event_emoticate/UTF-8/lang_bg.inc.php create mode 100644 plugins/serendipity_event_emoticate/UTF-8/lang_de.inc.php create mode 100644 plugins/serendipity_event_emoticate/UTF-8/lang_es.inc.php create mode 100644 plugins/serendipity_event_emoticate/UTF-8/lang_fr.inc.php create mode 100644 plugins/serendipity_event_emoticate/UTF-8/lang_is.inc.php create mode 100644 plugins/serendipity_event_emoticate/UTF-8/lang_ja.inc.php create mode 100644 plugins/serendipity_event_emoticate/UTF-8/lang_ko.inc.php create mode 100644 plugins/serendipity_event_emoticate/UTF-8/lang_pl.inc.php create mode 100644 plugins/serendipity_event_emoticate/UTF-8/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_event_emoticate/UTF-8/lang_tn.inc.php create mode 100644 plugins/serendipity_event_emoticate/UTF-8/lang_zh.inc.php create mode 100644 plugins/serendipity_event_emoticate/lang_bg.inc.php create mode 100644 plugins/serendipity_event_emoticate/lang_de.inc.php create mode 100644 plugins/serendipity_event_emoticate/lang_en.inc.php create mode 100644 plugins/serendipity_event_emoticate/lang_es.inc.php create mode 100644 plugins/serendipity_event_emoticate/lang_fr.inc.php create mode 100644 plugins/serendipity_event_emoticate/lang_is.inc.php create mode 100644 plugins/serendipity_event_emoticate/lang_ja.inc.php create mode 100644 plugins/serendipity_event_emoticate/lang_ko.inc.php create mode 100644 plugins/serendipity_event_emoticate/lang_pl.inc.php create mode 100644 plugins/serendipity_event_emoticate/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_event_emoticate/lang_tn.inc.php create mode 100644 plugins/serendipity_event_emoticate/lang_zh.inc.php create mode 100644 plugins/serendipity_event_emoticate/serendipity_event_emoticate.php create mode 100644 plugins/serendipity_event_entryproperties/UTF-8/lang_bg.inc.php create mode 100644 plugins/serendipity_event_entryproperties/UTF-8/lang_de.inc.php create mode 100644 plugins/serendipity_event_entryproperties/UTF-8/lang_es.inc.php create mode 100644 plugins/serendipity_event_entryproperties/UTF-8/lang_fr.inc.php create mode 100644 plugins/serendipity_event_entryproperties/UTF-8/lang_ja.inc.php create mode 100644 plugins/serendipity_event_entryproperties/UTF-8/lang_ko.inc.php create mode 100644 plugins/serendipity_event_entryproperties/UTF-8/lang_pl.inc.php create mode 100644 plugins/serendipity_event_entryproperties/UTF-8/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_event_entryproperties/UTF-8/lang_tn.inc.php create mode 100644 plugins/serendipity_event_entryproperties/UTF-8/lang_tr.inc.php create mode 100644 plugins/serendipity_event_entryproperties/UTF-8/lang_zh.inc.php create mode 100644 plugins/serendipity_event_entryproperties/lang_bg.inc.php create mode 100644 plugins/serendipity_event_entryproperties/lang_de.inc.php create mode 100644 plugins/serendipity_event_entryproperties/lang_en.inc.php create mode 100644 plugins/serendipity_event_entryproperties/lang_es.inc.php create mode 100644 plugins/serendipity_event_entryproperties/lang_fr.inc.php create mode 100644 plugins/serendipity_event_entryproperties/lang_ja.inc.php create mode 100644 plugins/serendipity_event_entryproperties/lang_ko.inc.php create mode 100644 plugins/serendipity_event_entryproperties/lang_pl.inc.php create mode 100644 plugins/serendipity_event_entryproperties/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_event_entryproperties/lang_tn.inc.php create mode 100644 plugins/serendipity_event_entryproperties/lang_tr.inc.php create mode 100644 plugins/serendipity_event_entryproperties/lang_zh.inc.php create mode 100644 plugins/serendipity_event_entryproperties/serendipity_event_entryproperties.php create mode 100644 plugins/serendipity_event_karma/UTF-8/lang_bg.inc.php create mode 100644 plugins/serendipity_event_karma/UTF-8/lang_de.inc.php create mode 100644 plugins/serendipity_event_karma/UTF-8/lang_es.inc.php create mode 100644 plugins/serendipity_event_karma/UTF-8/lang_fr.inc.php create mode 100644 plugins/serendipity_event_karma/UTF-8/lang_ja.inc.php create mode 100644 plugins/serendipity_event_karma/UTF-8/lang_ko.inc.php create mode 100644 plugins/serendipity_event_karma/UTF-8/lang_pl.inc.php create mode 100644 plugins/serendipity_event_karma/UTF-8/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_event_karma/UTF-8/lang_tn.inc.php create mode 100644 plugins/serendipity_event_karma/UTF-8/lang_zh.inc.php create mode 100644 plugins/serendipity_event_karma/lang_bg.inc.php create mode 100644 plugins/serendipity_event_karma/lang_de.inc.php create mode 100644 plugins/serendipity_event_karma/lang_en.inc.php create mode 100644 plugins/serendipity_event_karma/lang_es.inc.php create mode 100644 plugins/serendipity_event_karma/lang_fa.inc.php create mode 100644 plugins/serendipity_event_karma/lang_fr.inc.php create mode 100644 plugins/serendipity_event_karma/lang_ja.inc.php create mode 100644 plugins/serendipity_event_karma/lang_ko.inc.php create mode 100644 plugins/serendipity_event_karma/lang_pl.inc.php create mode 100644 plugins/serendipity_event_karma/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_event_karma/lang_tn.inc.php create mode 100644 plugins/serendipity_event_karma/lang_zh.inc.php create mode 100644 plugins/serendipity_event_karma/serendipity_event_karma.php create mode 100644 plugins/serendipity_event_livesearch/UTF-8/lang_bg.inc.php create mode 100644 plugins/serendipity_event_livesearch/UTF-8/lang_de.inc.php create mode 100644 plugins/serendipity_event_livesearch/UTF-8/lang_es.inc.php create mode 100644 plugins/serendipity_event_livesearch/UTF-8/lang_fr.inc.php create mode 100644 plugins/serendipity_event_livesearch/UTF-8/lang_ja.inc.php create mode 100644 plugins/serendipity_event_livesearch/UTF-8/lang_ko.inc.php create mode 100644 plugins/serendipity_event_livesearch/UTF-8/lang_nl.inc.php create mode 100644 plugins/serendipity_event_livesearch/UTF-8/lang_pl.inc.php create mode 100644 plugins/serendipity_event_livesearch/UTF-8/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_event_livesearch/UTF-8/lang_tn.inc.php create mode 100644 plugins/serendipity_event_livesearch/UTF-8/lang_zh.inc.php create mode 100644 plugins/serendipity_event_livesearch/lang_bg.inc.php create mode 100644 plugins/serendipity_event_livesearch/lang_de.inc.php create mode 100644 plugins/serendipity_event_livesearch/lang_en.inc.php create mode 100644 plugins/serendipity_event_livesearch/lang_es.inc.php create mode 100644 plugins/serendipity_event_livesearch/lang_fr.inc.php create mode 100644 plugins/serendipity_event_livesearch/lang_ja.inc.php create mode 100644 plugins/serendipity_event_livesearch/lang_ko.inc.php create mode 100644 plugins/serendipity_event_livesearch/lang_nl.inc.php create mode 100644 plugins/serendipity_event_livesearch/lang_pl.inc.php create mode 100644 plugins/serendipity_event_livesearch/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_event_livesearch/lang_tn.inc.php create mode 100644 plugins/serendipity_event_livesearch/lang_zh.inc.php create mode 100644 plugins/serendipity_event_livesearch/serendipity_event_livesearch.js create mode 100644 plugins/serendipity_event_livesearch/serendipity_event_livesearch.php create mode 100644 plugins/serendipity_event_mailer/UTF-8/lang_bg.inc.php create mode 100644 plugins/serendipity_event_mailer/UTF-8/lang_de.inc.php create mode 100644 plugins/serendipity_event_mailer/UTF-8/lang_es.inc.php create mode 100644 plugins/serendipity_event_mailer/UTF-8/lang_fr.inc.php create mode 100644 plugins/serendipity_event_mailer/UTF-8/lang_ja.inc.php create mode 100644 plugins/serendipity_event_mailer/UTF-8/lang_ko.inc.php create mode 100644 plugins/serendipity_event_mailer/UTF-8/lang_pl.inc.php create mode 100644 plugins/serendipity_event_mailer/UTF-8/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_event_mailer/UTF-8/lang_tn.inc.php create mode 100644 plugins/serendipity_event_mailer/UTF-8/lang_zh.inc.php create mode 100644 plugins/serendipity_event_mailer/lang_bg.inc.php create mode 100644 plugins/serendipity_event_mailer/lang_de.inc.php create mode 100644 plugins/serendipity_event_mailer/lang_en.inc.php create mode 100644 plugins/serendipity_event_mailer/lang_es.inc.php create mode 100644 plugins/serendipity_event_mailer/lang_fr.inc.php create mode 100644 plugins/serendipity_event_mailer/lang_ja.inc.php create mode 100644 plugins/serendipity_event_mailer/lang_ko.inc.php create mode 100644 plugins/serendipity_event_mailer/lang_pl.inc.php create mode 100644 plugins/serendipity_event_mailer/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_event_mailer/lang_tn.inc.php create mode 100644 plugins/serendipity_event_mailer/lang_zh.inc.php create mode 100644 plugins/serendipity_event_mailer/serendipity_event_mailer.php create mode 100644 plugins/serendipity_event_nl2br/UTF-8/lang_bg.inc.php create mode 100644 plugins/serendipity_event_nl2br/UTF-8/lang_de.inc.php create mode 100644 plugins/serendipity_event_nl2br/UTF-8/lang_es.inc.php create mode 100644 plugins/serendipity_event_nl2br/UTF-8/lang_fr.inc.php create mode 100644 plugins/serendipity_event_nl2br/UTF-8/lang_ja.inc.php create mode 100644 plugins/serendipity_event_nl2br/UTF-8/lang_ko.inc.php create mode 100644 plugins/serendipity_event_nl2br/UTF-8/lang_pl.inc.php create mode 100644 plugins/serendipity_event_nl2br/UTF-8/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_event_nl2br/UTF-8/lang_tn.inc.php create mode 100644 plugins/serendipity_event_nl2br/UTF-8/lang_zh.inc.php create mode 100644 plugins/serendipity_event_nl2br/lang_bg.inc.php create mode 100644 plugins/serendipity_event_nl2br/lang_de.inc.php create mode 100644 plugins/serendipity_event_nl2br/lang_en.inc.php create mode 100644 plugins/serendipity_event_nl2br/lang_es.inc.php create mode 100644 plugins/serendipity_event_nl2br/lang_fr.inc.php create mode 100644 plugins/serendipity_event_nl2br/lang_ja.inc.php create mode 100644 plugins/serendipity_event_nl2br/lang_ko.inc.php create mode 100644 plugins/serendipity_event_nl2br/lang_pl.inc.php create mode 100644 plugins/serendipity_event_nl2br/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_event_nl2br/lang_tn.inc.php create mode 100644 plugins/serendipity_event_nl2br/lang_zh.inc.php create mode 100644 plugins/serendipity_event_nl2br/serendipity_event_nl2br.php create mode 100644 plugins/serendipity_event_s9ymarkup/UTF-8/lang_bg.inc.php create mode 100644 plugins/serendipity_event_s9ymarkup/UTF-8/lang_de.inc.php create mode 100644 plugins/serendipity_event_s9ymarkup/UTF-8/lang_es.inc.php create mode 100644 plugins/serendipity_event_s9ymarkup/UTF-8/lang_fr.inc.php create mode 100644 plugins/serendipity_event_s9ymarkup/UTF-8/lang_is.inc.php create mode 100644 plugins/serendipity_event_s9ymarkup/UTF-8/lang_ja.inc.php create mode 100644 plugins/serendipity_event_s9ymarkup/UTF-8/lang_ko.inc.php create mode 100644 plugins/serendipity_event_s9ymarkup/UTF-8/lang_pl.inc.php create mode 100644 plugins/serendipity_event_s9ymarkup/UTF-8/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_event_s9ymarkup/UTF-8/lang_tn.inc.php create mode 100644 plugins/serendipity_event_s9ymarkup/UTF-8/lang_zh.inc.php create mode 100644 plugins/serendipity_event_s9ymarkup/lang_bg.inc.php create mode 100644 plugins/serendipity_event_s9ymarkup/lang_de.inc.php create mode 100644 plugins/serendipity_event_s9ymarkup/lang_en.inc.php create mode 100644 plugins/serendipity_event_s9ymarkup/lang_es.inc.php create mode 100644 plugins/serendipity_event_s9ymarkup/lang_fr.inc.php create mode 100644 plugins/serendipity_event_s9ymarkup/lang_is.inc.php create mode 100644 plugins/serendipity_event_s9ymarkup/lang_ja.inc.php create mode 100644 plugins/serendipity_event_s9ymarkup/lang_ko.inc.php create mode 100644 plugins/serendipity_event_s9ymarkup/lang_pl.inc.php create mode 100644 plugins/serendipity_event_s9ymarkup/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_event_s9ymarkup/lang_tn.inc.php create mode 100644 plugins/serendipity_event_s9ymarkup/lang_zh.inc.php create mode 100644 plugins/serendipity_event_s9ymarkup/serendipity_event_s9ymarkup.php create mode 100644 plugins/serendipity_event_searchhighlight/UTF-8/lang_bg.inc.php create mode 100644 plugins/serendipity_event_searchhighlight/UTF-8/lang_de.inc.php create mode 100644 plugins/serendipity_event_searchhighlight/UTF-8/lang_es.inc.php create mode 100644 plugins/serendipity_event_searchhighlight/UTF-8/lang_fr.inc.php create mode 100644 plugins/serendipity_event_searchhighlight/UTF-8/lang_ja.inc.php create mode 100644 plugins/serendipity_event_searchhighlight/UTF-8/lang_ko.inc.php create mode 100644 plugins/serendipity_event_searchhighlight/UTF-8/lang_pl.inc.php create mode 100644 plugins/serendipity_event_searchhighlight/UTF-8/lang_tn.inc.php create mode 100644 plugins/serendipity_event_searchhighlight/UTF-8/lang_zh.inc.php create mode 100644 plugins/serendipity_event_searchhighlight/lang_bg.inc.php create mode 100644 plugins/serendipity_event_searchhighlight/lang_de.inc.php create mode 100644 plugins/serendipity_event_searchhighlight/lang_en.inc.php create mode 100644 plugins/serendipity_event_searchhighlight/lang_es.inc.php create mode 100644 plugins/serendipity_event_searchhighlight/lang_fr.inc.php create mode 100644 plugins/serendipity_event_searchhighlight/lang_ja.inc.php create mode 100644 plugins/serendipity_event_searchhighlight/lang_ko.inc.php create mode 100644 plugins/serendipity_event_searchhighlight/lang_pl.inc.php create mode 100644 plugins/serendipity_event_searchhighlight/lang_tn.inc.php create mode 100644 plugins/serendipity_event_searchhighlight/lang_zh.inc.php create mode 100644 plugins/serendipity_event_searchhighlight/serendipity_event_searchhighlight.php create mode 100644 plugins/serendipity_event_spamblock/36daysago.ttf create mode 100644 plugins/serendipity_event_spamblock/36daysago.txt create mode 100644 plugins/serendipity_event_spamblock/UTF-8/lang_cn.inc.php create mode 100644 plugins/serendipity_event_spamblock/UTF-8/lang_de.inc.php create mode 100644 plugins/serendipity_event_spamblock/UTF-8/lang_es.inc.php create mode 100644 plugins/serendipity_event_spamblock/UTF-8/lang_fr.inc.php create mode 100644 plugins/serendipity_event_spamblock/UTF-8/lang_is.inc.php create mode 100644 plugins/serendipity_event_spamblock/UTF-8/lang_ja.inc.php create mode 100644 plugins/serendipity_event_spamblock/UTF-8/lang_ko.inc.php create mode 100644 plugins/serendipity_event_spamblock/UTF-8/lang_pl.inc.php create mode 100644 plugins/serendipity_event_spamblock/UTF-8/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_event_spamblock/UTF-8/lang_tn.inc.php create mode 100644 plugins/serendipity_event_spamblock/UTF-8/lang_zh.inc.php create mode 100644 plugins/serendipity_event_spamblock/Vera.ttf create mode 100644 plugins/serendipity_event_spamblock/VeraSe.ttf create mode 100644 plugins/serendipity_event_spamblock/captcha_2.png create mode 100644 plugins/serendipity_event_spamblock/captcha_3.png create mode 100644 plugins/serendipity_event_spamblock/captcha_4.png create mode 100644 plugins/serendipity_event_spamblock/captcha_7.png create mode 100644 plugins/serendipity_event_spamblock/captcha_9.png create mode 100644 plugins/serendipity_event_spamblock/captcha_a.png create mode 100644 plugins/serendipity_event_spamblock/captcha_b.png create mode 100644 plugins/serendipity_event_spamblock/captcha_c.png create mode 100644 plugins/serendipity_event_spamblock/captcha_d.png create mode 100644 plugins/serendipity_event_spamblock/captcha_e.png create mode 100644 plugins/serendipity_event_spamblock/captcha_f.png create mode 100644 plugins/serendipity_event_spamblock/captcha_h.png create mode 100644 plugins/serendipity_event_spamblock/captcha_j.png create mode 100644 plugins/serendipity_event_spamblock/captcha_k.png create mode 100644 plugins/serendipity_event_spamblock/captcha_l.png create mode 100644 plugins/serendipity_event_spamblock/captcha_m.png create mode 100644 plugins/serendipity_event_spamblock/captcha_n.png create mode 100644 plugins/serendipity_event_spamblock/captcha_p.png create mode 100644 plugins/serendipity_event_spamblock/captcha_q.png create mode 100644 plugins/serendipity_event_spamblock/captcha_r.png create mode 100644 plugins/serendipity_event_spamblock/captcha_t.png create mode 100644 plugins/serendipity_event_spamblock/captcha_u.png create mode 100644 plugins/serendipity_event_spamblock/captcha_v.png create mode 100644 plugins/serendipity_event_spamblock/captcha_w.png create mode 100644 plugins/serendipity_event_spamblock/captcha_x.png create mode 100644 plugins/serendipity_event_spamblock/captcha_y.png create mode 100644 plugins/serendipity_event_spamblock/captcha_z.png create mode 100644 plugins/serendipity_event_spamblock/chumbly.ttf create mode 100644 plugins/serendipity_event_spamblock/chumbly.txt create mode 100644 plugins/serendipity_event_spamblock/lang_cn.inc.php create mode 100644 plugins/serendipity_event_spamblock/lang_de.inc.php create mode 100644 plugins/serendipity_event_spamblock/lang_en.inc.php create mode 100644 plugins/serendipity_event_spamblock/lang_es.inc.php create mode 100644 plugins/serendipity_event_spamblock/lang_fa.inc.php create mode 100644 plugins/serendipity_event_spamblock/lang_fr.inc.php create mode 100644 plugins/serendipity_event_spamblock/lang_is.inc.php create mode 100644 plugins/serendipity_event_spamblock/lang_ja.inc.php create mode 100644 plugins/serendipity_event_spamblock/lang_ko.inc.php create mode 100644 plugins/serendipity_event_spamblock/lang_pl.inc.php create mode 100644 plugins/serendipity_event_spamblock/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_event_spamblock/lang_tn.inc.php create mode 100644 plugins/serendipity_event_spamblock/lang_zh.inc.php create mode 100644 plugins/serendipity_event_spamblock/serendipity_event_spamblock.php create mode 100644 plugins/serendipity_event_spartacus/UTF-8/lang_de.inc.php create mode 100644 plugins/serendipity_event_spartacus/UTF-8/lang_es.inc.php create mode 100644 plugins/serendipity_event_spartacus/UTF-8/lang_fr.inc.php create mode 100644 plugins/serendipity_event_spartacus/UTF-8/lang_is.inc.php create mode 100644 plugins/serendipity_event_spartacus/UTF-8/lang_ja.inc.php create mode 100644 plugins/serendipity_event_spartacus/UTF-8/lang_ko.inc.php create mode 100644 plugins/serendipity_event_spartacus/UTF-8/lang_pl.inc.php create mode 100644 plugins/serendipity_event_spartacus/UTF-8/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_event_spartacus/UTF-8/lang_tn.inc.php create mode 100644 plugins/serendipity_event_spartacus/UTF-8/lang_zh.inc.php create mode 100644 plugins/serendipity_event_spartacus/lang_de.inc.php create mode 100644 plugins/serendipity_event_spartacus/lang_en.inc.php create mode 100644 plugins/serendipity_event_spartacus/lang_es.inc.php create mode 100644 plugins/serendipity_event_spartacus/lang_fr.inc.php create mode 100644 plugins/serendipity_event_spartacus/lang_is.inc.php create mode 100644 plugins/serendipity_event_spartacus/lang_ja.inc.php create mode 100644 plugins/serendipity_event_spartacus/lang_ko.inc.php create mode 100644 plugins/serendipity_event_spartacus/lang_pl.inc.php create mode 100644 plugins/serendipity_event_spartacus/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_event_spartacus/lang_tn.inc.php create mode 100644 plugins/serendipity_event_spartacus/lang_zh.inc.php create mode 100644 plugins/serendipity_event_spartacus/serendipity_event_spartacus.php create mode 100644 plugins/serendipity_event_statistics/ChangeLog create mode 100644 plugins/serendipity_event_statistics/UTF-8/lang_bg.inc.php create mode 100644 plugins/serendipity_event_statistics/UTF-8/lang_cz.inc.php create mode 100644 plugins/serendipity_event_statistics/UTF-8/lang_de.inc.php create mode 100644 plugins/serendipity_event_statistics/UTF-8/lang_es.inc.php create mode 100644 plugins/serendipity_event_statistics/UTF-8/lang_fr.inc.php create mode 100644 plugins/serendipity_event_statistics/UTF-8/lang_ja.inc.php create mode 100644 plugins/serendipity_event_statistics/UTF-8/lang_ko.inc.php create mode 100644 plugins/serendipity_event_statistics/UTF-8/lang_pl.inc.php create mode 100644 plugins/serendipity_event_statistics/UTF-8/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_event_statistics/UTF-8/lang_tn.inc.php create mode 100644 plugins/serendipity_event_statistics/UTF-8/lang_zh.inc.php create mode 100644 plugins/serendipity_event_statistics/green.png create mode 100644 plugins/serendipity_event_statistics/lang_bg.inc.php create mode 100644 plugins/serendipity_event_statistics/lang_cz.inc.php create mode 100644 plugins/serendipity_event_statistics/lang_de.inc.php create mode 100644 plugins/serendipity_event_statistics/lang_en.inc.php create mode 100644 plugins/serendipity_event_statistics/lang_es.inc.php create mode 100644 plugins/serendipity_event_statistics/lang_fr.inc.php create mode 100644 plugins/serendipity_event_statistics/lang_ja.inc.php create mode 100644 plugins/serendipity_event_statistics/lang_ko.inc.php create mode 100644 plugins/serendipity_event_statistics/lang_pl.inc.php create mode 100644 plugins/serendipity_event_statistics/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_event_statistics/lang_tn.inc.php create mode 100644 plugins/serendipity_event_statistics/lang_zh.inc.php create mode 100644 plugins/serendipity_event_statistics/red.png create mode 100644 plugins/serendipity_event_statistics/serendipity_event_statistics.php create mode 100644 plugins/serendipity_event_statistics/serendipity_plugin_statistics.php create mode 100644 plugins/serendipity_event_statistics/yellow.png create mode 100644 plugins/serendipity_event_templatechooser/UTF-8/lang_bg.inc.php create mode 100644 plugins/serendipity_event_templatechooser/UTF-8/lang_de.inc.php create mode 100644 plugins/serendipity_event_templatechooser/UTF-8/lang_es.inc.php create mode 100644 plugins/serendipity_event_templatechooser/UTF-8/lang_fr.inc.php create mode 100644 plugins/serendipity_event_templatechooser/UTF-8/lang_ja.inc.php create mode 100644 plugins/serendipity_event_templatechooser/UTF-8/lang_ko.inc.php create mode 100644 plugins/serendipity_event_templatechooser/UTF-8/lang_pl.inc.php create mode 100644 plugins/serendipity_event_templatechooser/UTF-8/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_event_templatechooser/UTF-8/lang_tn.inc.php create mode 100644 plugins/serendipity_event_templatechooser/UTF-8/lang_zh.inc.php create mode 100644 plugins/serendipity_event_templatechooser/lang_bg.inc.php create mode 100644 plugins/serendipity_event_templatechooser/lang_de.inc.php create mode 100644 plugins/serendipity_event_templatechooser/lang_en.inc.php create mode 100644 plugins/serendipity_event_templatechooser/lang_es.inc.php create mode 100644 plugins/serendipity_event_templatechooser/lang_fr.inc.php create mode 100644 plugins/serendipity_event_templatechooser/lang_ja.inc.php create mode 100644 plugins/serendipity_event_templatechooser/lang_ko.inc.php create mode 100644 plugins/serendipity_event_templatechooser/lang_pl.inc.php create mode 100644 plugins/serendipity_event_templatechooser/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_event_templatechooser/lang_tn.inc.php create mode 100644 plugins/serendipity_event_templatechooser/lang_zh.inc.php create mode 100644 plugins/serendipity_event_templatechooser/serendipity_event_templatechooser.php create mode 100644 plugins/serendipity_event_textile/UTF-8/lang_bg.inc.php create mode 100644 plugins/serendipity_event_textile/UTF-8/lang_de.inc.php create mode 100644 plugins/serendipity_event_textile/UTF-8/lang_es.inc.php create mode 100644 plugins/serendipity_event_textile/UTF-8/lang_fr.inc.php create mode 100644 plugins/serendipity_event_textile/UTF-8/lang_ja.inc.php create mode 100644 plugins/serendipity_event_textile/UTF-8/lang_ko.inc.php create mode 100644 plugins/serendipity_event_textile/UTF-8/lang_pl.inc.php create mode 100644 plugins/serendipity_event_textile/UTF-8/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_event_textile/UTF-8/lang_tn.inc.php create mode 100644 plugins/serendipity_event_textile/UTF-8/lang_zh.inc.php create mode 100644 plugins/serendipity_event_textile/lang_bg.inc.php create mode 100644 plugins/serendipity_event_textile/lang_de.inc.php create mode 100644 plugins/serendipity_event_textile/lang_en.inc.php create mode 100644 plugins/serendipity_event_textile/lang_es.inc.php create mode 100644 plugins/serendipity_event_textile/lang_fr.inc.php create mode 100644 plugins/serendipity_event_textile/lang_ja.inc.php create mode 100644 plugins/serendipity_event_textile/lang_ko.inc.php create mode 100644 plugins/serendipity_event_textile/lang_pl.inc.php create mode 100644 plugins/serendipity_event_textile/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_event_textile/lang_tn.inc.php create mode 100644 plugins/serendipity_event_textile/lang_zh.inc.php create mode 100644 plugins/serendipity_event_textile/serendipity_event_textile.php create mode 100644 plugins/serendipity_event_textile/textile.php create mode 100644 plugins/serendipity_event_textwiki/UTF-8/lang_bg.inc.php create mode 100644 plugins/serendipity_event_textwiki/UTF-8/lang_de.inc.php create mode 100644 plugins/serendipity_event_textwiki/UTF-8/lang_es.inc.php create mode 100644 plugins/serendipity_event_textwiki/UTF-8/lang_fr.inc.php create mode 100644 plugins/serendipity_event_textwiki/UTF-8/lang_ja.inc.php create mode 100644 plugins/serendipity_event_textwiki/UTF-8/lang_ko.inc.php create mode 100644 plugins/serendipity_event_textwiki/UTF-8/lang_pl.inc.php create mode 100644 plugins/serendipity_event_textwiki/UTF-8/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_event_textwiki/UTF-8/lang_tn.inc.php create mode 100644 plugins/serendipity_event_textwiki/UTF-8/lang_zh.inc.php create mode 100644 plugins/serendipity_event_textwiki/lang_bg.inc.php create mode 100644 plugins/serendipity_event_textwiki/lang_de.inc.php create mode 100644 plugins/serendipity_event_textwiki/lang_en.inc.php create mode 100644 plugins/serendipity_event_textwiki/lang_es.inc.php create mode 100644 plugins/serendipity_event_textwiki/lang_fr.inc.php create mode 100644 plugins/serendipity_event_textwiki/lang_ja.inc.php create mode 100644 plugins/serendipity_event_textwiki/lang_ko.inc.php create mode 100644 plugins/serendipity_event_textwiki/lang_pl.inc.php create mode 100644 plugins/serendipity_event_textwiki/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_event_textwiki/lang_tn.inc.php create mode 100644 plugins/serendipity_event_textwiki/lang_zh.inc.php create mode 100644 plugins/serendipity_event_textwiki/serendipity_event_textwiki.php create mode 100644 plugins/serendipity_event_trackexits/UTF-8/lang_de.inc.php create mode 100644 plugins/serendipity_event_trackexits/UTF-8/lang_es.inc.php create mode 100644 plugins/serendipity_event_trackexits/UTF-8/lang_fr.inc.php create mode 100644 plugins/serendipity_event_trackexits/UTF-8/lang_ja.inc.php create mode 100644 plugins/serendipity_event_trackexits/UTF-8/lang_ko.inc.php create mode 100644 plugins/serendipity_event_trackexits/UTF-8/lang_pl.inc.php create mode 100644 plugins/serendipity_event_trackexits/UTF-8/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_event_trackexits/UTF-8/lang_tn.inc.php create mode 100644 plugins/serendipity_event_trackexits/UTF-8/lang_zh.inc.php create mode 100644 plugins/serendipity_event_trackexits/lang_de.inc.php create mode 100644 plugins/serendipity_event_trackexits/lang_en.inc.php create mode 100644 plugins/serendipity_event_trackexits/lang_es.inc.php create mode 100644 plugins/serendipity_event_trackexits/lang_fr.inc.php create mode 100644 plugins/serendipity_event_trackexits/lang_ja.inc.php create mode 100644 plugins/serendipity_event_trackexits/lang_ko.inc.php create mode 100644 plugins/serendipity_event_trackexits/lang_pl.inc.php create mode 100644 plugins/serendipity_event_trackexits/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_event_trackexits/lang_tn.inc.php create mode 100644 plugins/serendipity_event_trackexits/lang_zh.inc.php create mode 100644 plugins/serendipity_event_trackexits/serendipity_event_trackexits.php create mode 100644 plugins/serendipity_event_weblogping/UTF-8/lang_de.inc.php create mode 100644 plugins/serendipity_event_weblogping/UTF-8/lang_es.inc.php create mode 100644 plugins/serendipity_event_weblogping/UTF-8/lang_fr.inc.php create mode 100644 plugins/serendipity_event_weblogping/UTF-8/lang_ja.inc.php create mode 100644 plugins/serendipity_event_weblogping/UTF-8/lang_ko.inc.php create mode 100644 plugins/serendipity_event_weblogping/UTF-8/lang_pl.inc.php create mode 100644 plugins/serendipity_event_weblogping/UTF-8/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_event_weblogping/UTF-8/lang_tn.inc.php create mode 100644 plugins/serendipity_event_weblogping/UTF-8/lang_zh.inc.php create mode 100644 plugins/serendipity_event_weblogping/lang_de.inc.php create mode 100644 plugins/serendipity_event_weblogping/lang_en.inc.php create mode 100644 plugins/serendipity_event_weblogping/lang_es.inc.php create mode 100644 plugins/serendipity_event_weblogping/lang_fr.inc.php create mode 100644 plugins/serendipity_event_weblogping/lang_ja.inc.php create mode 100644 plugins/serendipity_event_weblogping/lang_ko.inc.php create mode 100644 plugins/serendipity_event_weblogping/lang_pl.inc.php create mode 100644 plugins/serendipity_event_weblogping/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_event_weblogping/lang_tn.inc.php create mode 100644 plugins/serendipity_event_weblogping/lang_zh.inc.php create mode 100644 plugins/serendipity_event_weblogping/serendipity_event_weblogping.php create mode 100644 plugins/serendipity_event_weblogping/servicesdb_de.inc.php create mode 100644 plugins/serendipity_event_weblogping/servicesdb_en.inc.php create mode 100644 plugins/serendipity_event_weblogping/servicesdb_ja.inc.php create mode 100644 plugins/serendipity_event_weblogping/servicesdb_tn.inc.php create mode 100644 plugins/serendipity_event_xhtmlcleanup/UTF-8/lang_bg.inc.php create mode 100644 plugins/serendipity_event_xhtmlcleanup/UTF-8/lang_de.inc.php create mode 100644 plugins/serendipity_event_xhtmlcleanup/UTF-8/lang_fr.inc.php create mode 100644 plugins/serendipity_event_xhtmlcleanup/UTF-8/lang_ja.inc.php create mode 100644 plugins/serendipity_event_xhtmlcleanup/UTF-8/lang_ko.inc.php create mode 100644 plugins/serendipity_event_xhtmlcleanup/UTF-8/lang_pl.inc.php create mode 100644 plugins/serendipity_event_xhtmlcleanup/UTF-8/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_event_xhtmlcleanup/UTF-8/lang_tn.inc.php create mode 100644 plugins/serendipity_event_xhtmlcleanup/UTF-8/lang_zh.inc.php create mode 100644 plugins/serendipity_event_xhtmlcleanup/lang_bg.inc.php create mode 100644 plugins/serendipity_event_xhtmlcleanup/lang_de.inc.php create mode 100644 plugins/serendipity_event_xhtmlcleanup/lang_en.inc.php create mode 100644 plugins/serendipity_event_xhtmlcleanup/lang_es.inc.php create mode 100644 plugins/serendipity_event_xhtmlcleanup/lang_fr.inc.php create mode 100644 plugins/serendipity_event_xhtmlcleanup/lang_ja.inc.php create mode 100644 plugins/serendipity_event_xhtmlcleanup/lang_ko.inc.php create mode 100644 plugins/serendipity_event_xhtmlcleanup/lang_pl.inc.php create mode 100644 plugins/serendipity_event_xhtmlcleanup/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_event_xhtmlcleanup/lang_tn.inc.php create mode 100644 plugins/serendipity_event_xhtmlcleanup/lang_zh.inc.php create mode 100644 plugins/serendipity_event_xhtmlcleanup/serendipity_event_xhtmlcleanup.php create mode 100644 plugins/serendipity_plugin_comments/UTF-8/lang_bg.inc.php create mode 100644 plugins/serendipity_plugin_comments/UTF-8/lang_cn.inc.php create mode 100644 plugins/serendipity_plugin_comments/UTF-8/lang_de.inc.php create mode 100644 plugins/serendipity_plugin_comments/UTF-8/lang_es.inc.php create mode 100644 plugins/serendipity_plugin_comments/UTF-8/lang_fr.inc.php create mode 100644 plugins/serendipity_plugin_comments/UTF-8/lang_is.inc.php create mode 100644 plugins/serendipity_plugin_comments/UTF-8/lang_ja.inc.php create mode 100644 plugins/serendipity_plugin_comments/UTF-8/lang_ko.inc.php create mode 100644 plugins/serendipity_plugin_comments/UTF-8/lang_pl.inc.php create mode 100644 plugins/serendipity_plugin_comments/UTF-8/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_plugin_comments/UTF-8/lang_tn.inc.php create mode 100644 plugins/serendipity_plugin_comments/UTF-8/lang_tr.inc.php create mode 100644 plugins/serendipity_plugin_comments/UTF-8/lang_zh.inc.php create mode 100644 plugins/serendipity_plugin_comments/lang_bg.inc.php create mode 100644 plugins/serendipity_plugin_comments/lang_cn.inc.php create mode 100644 plugins/serendipity_plugin_comments/lang_de.inc.php create mode 100644 plugins/serendipity_plugin_comments/lang_en.inc.php create mode 100644 plugins/serendipity_plugin_comments/lang_es.inc.php create mode 100644 plugins/serendipity_plugin_comments/lang_fr.inc.php create mode 100644 plugins/serendipity_plugin_comments/lang_is.inc.php create mode 100644 plugins/serendipity_plugin_comments/lang_ja.inc.php create mode 100644 plugins/serendipity_plugin_comments/lang_ko.inc.php create mode 100644 plugins/serendipity_plugin_comments/lang_pl.inc.php create mode 100644 plugins/serendipity_plugin_comments/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_plugin_comments/lang_tn.inc.php create mode 100644 plugins/serendipity_plugin_comments/lang_tr.inc.php create mode 100644 plugins/serendipity_plugin_comments/lang_zh.inc.php create mode 100644 plugins/serendipity_plugin_comments/serendipity_plugin_comments.php create mode 100644 plugins/serendipity_plugin_creativecommons/UTF-8/lang_bg.inc.php create mode 100644 plugins/serendipity_plugin_creativecommons/UTF-8/lang_cn.inc.php create mode 100644 plugins/serendipity_plugin_creativecommons/UTF-8/lang_de.inc.php create mode 100644 plugins/serendipity_plugin_creativecommons/UTF-8/lang_es.inc.php create mode 100644 plugins/serendipity_plugin_creativecommons/UTF-8/lang_fr.inc.php create mode 100644 plugins/serendipity_plugin_creativecommons/UTF-8/lang_ja.inc.php create mode 100644 plugins/serendipity_plugin_creativecommons/UTF-8/lang_ko.inc.php create mode 100644 plugins/serendipity_plugin_creativecommons/UTF-8/lang_pl.inc.php create mode 100644 plugins/serendipity_plugin_creativecommons/UTF-8/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_plugin_creativecommons/UTF-8/lang_tn.inc.php create mode 100644 plugins/serendipity_plugin_creativecommons/UTF-8/lang_zh.inc.php create mode 100644 plugins/serendipity_plugin_creativecommons/lang_bg.inc.php create mode 100644 plugins/serendipity_plugin_creativecommons/lang_cn.inc.php create mode 100644 plugins/serendipity_plugin_creativecommons/lang_de.inc.php create mode 100644 plugins/serendipity_plugin_creativecommons/lang_en.inc.php create mode 100644 plugins/serendipity_plugin_creativecommons/lang_es.inc.php create mode 100644 plugins/serendipity_plugin_creativecommons/lang_fr.inc.php create mode 100644 plugins/serendipity_plugin_creativecommons/lang_ja.inc.php create mode 100644 plugins/serendipity_plugin_creativecommons/lang_ko.inc.php create mode 100644 plugins/serendipity_plugin_creativecommons/lang_pl.inc.php create mode 100644 plugins/serendipity_plugin_creativecommons/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_plugin_creativecommons/lang_tn.inc.php create mode 100644 plugins/serendipity_plugin_creativecommons/lang_zh.inc.php create mode 100644 plugins/serendipity_plugin_creativecommons/serendipity_plugin_creativecommons.php create mode 100644 plugins/serendipity_plugin_entrylinks/UTF-8/lang_bg.inc.php create mode 100644 plugins/serendipity_plugin_entrylinks/UTF-8/lang_de.inc.php create mode 100644 plugins/serendipity_plugin_entrylinks/UTF-8/lang_es.inc.php create mode 100644 plugins/serendipity_plugin_entrylinks/UTF-8/lang_fr.inc.php create mode 100644 plugins/serendipity_plugin_entrylinks/UTF-8/lang_ja.inc.php create mode 100644 plugins/serendipity_plugin_entrylinks/UTF-8/lang_ko.inc.php create mode 100644 plugins/serendipity_plugin_entrylinks/UTF-8/lang_pl.inc.php create mode 100644 plugins/serendipity_plugin_entrylinks/UTF-8/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_plugin_entrylinks/UTF-8/lang_tn.inc.php create mode 100644 plugins/serendipity_plugin_entrylinks/UTF-8/lang_tr.inc.php create mode 100644 plugins/serendipity_plugin_entrylinks/UTF-8/lang_zh.inc.php create mode 100644 plugins/serendipity_plugin_entrylinks/lang_bg.inc.php create mode 100644 plugins/serendipity_plugin_entrylinks/lang_de.inc.php create mode 100644 plugins/serendipity_plugin_entrylinks/lang_en.inc.php create mode 100644 plugins/serendipity_plugin_entrylinks/lang_es.inc.php create mode 100644 plugins/serendipity_plugin_entrylinks/lang_fr.inc.php create mode 100644 plugins/serendipity_plugin_entrylinks/lang_ja.inc.php create mode 100644 plugins/serendipity_plugin_entrylinks/lang_ko.inc.php create mode 100644 plugins/serendipity_plugin_entrylinks/lang_pl.inc.php create mode 100644 plugins/serendipity_plugin_entrylinks/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_plugin_entrylinks/lang_tn.inc.php create mode 100644 plugins/serendipity_plugin_entrylinks/lang_tr.inc.php create mode 100644 plugins/serendipity_plugin_entrylinks/lang_zh.inc.php create mode 100644 plugins/serendipity_plugin_entrylinks/serendipity_plugin_entrylinks.php create mode 100644 plugins/serendipity_plugin_eventwrapper/UTF-8/lang_bg.inc.php create mode 100644 plugins/serendipity_plugin_eventwrapper/UTF-8/lang_de.inc.php create mode 100644 plugins/serendipity_plugin_eventwrapper/UTF-8/lang_es.inc.php create mode 100644 plugins/serendipity_plugin_eventwrapper/UTF-8/lang_fr.inc.php create mode 100644 plugins/serendipity_plugin_eventwrapper/UTF-8/lang_ja.inc.php create mode 100644 plugins/serendipity_plugin_eventwrapper/UTF-8/lang_ko.inc.php create mode 100644 plugins/serendipity_plugin_eventwrapper/UTF-8/lang_pl.inc.php create mode 100644 plugins/serendipity_plugin_eventwrapper/UTF-8/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_plugin_eventwrapper/UTF-8/lang_tn.inc.php create mode 100644 plugins/serendipity_plugin_eventwrapper/UTF-8/lang_zh.inc.php create mode 100644 plugins/serendipity_plugin_eventwrapper/lang_bg.inc.php create mode 100644 plugins/serendipity_plugin_eventwrapper/lang_de.inc.php create mode 100644 plugins/serendipity_plugin_eventwrapper/lang_en.inc.php create mode 100644 plugins/serendipity_plugin_eventwrapper/lang_es.inc.php create mode 100644 plugins/serendipity_plugin_eventwrapper/lang_fr.inc.php create mode 100644 plugins/serendipity_plugin_eventwrapper/lang_ja.inc.php create mode 100644 plugins/serendipity_plugin_eventwrapper/lang_ko.inc.php create mode 100644 plugins/serendipity_plugin_eventwrapper/lang_pl.inc.php create mode 100644 plugins/serendipity_plugin_eventwrapper/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_plugin_eventwrapper/lang_tn.inc.php create mode 100644 plugins/serendipity_plugin_eventwrapper/lang_zh.inc.php create mode 100644 plugins/serendipity_plugin_eventwrapper/serendipity_plugin_eventwrapper.php create mode 100644 plugins/serendipity_plugin_history/UTF-8/lang_bg.inc.php create mode 100644 plugins/serendipity_plugin_history/UTF-8/lang_de.inc.php create mode 100644 plugins/serendipity_plugin_history/UTF-8/lang_es.inc.php create mode 100644 plugins/serendipity_plugin_history/UTF-8/lang_fr.inc.php create mode 100644 plugins/serendipity_plugin_history/UTF-8/lang_ja.inc.php create mode 100644 plugins/serendipity_plugin_history/UTF-8/lang_ko.inc.php create mode 100644 plugins/serendipity_plugin_history/UTF-8/lang_pl.inc.php create mode 100644 plugins/serendipity_plugin_history/UTF-8/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_plugin_history/UTF-8/lang_tn.inc.php create mode 100644 plugins/serendipity_plugin_history/UTF-8/lang_zh.inc.php create mode 100644 plugins/serendipity_plugin_history/lang_bg.inc.php create mode 100644 plugins/serendipity_plugin_history/lang_de.inc.php create mode 100644 plugins/serendipity_plugin_history/lang_en.inc.php create mode 100644 plugins/serendipity_plugin_history/lang_es.inc.php create mode 100644 plugins/serendipity_plugin_history/lang_fr.inc.php create mode 100644 plugins/serendipity_plugin_history/lang_ja.inc.php create mode 100644 plugins/serendipity_plugin_history/lang_ko.inc.php create mode 100644 plugins/serendipity_plugin_history/lang_pl.inc.php create mode 100644 plugins/serendipity_plugin_history/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_plugin_history/lang_tn.inc.php create mode 100644 plugins/serendipity_plugin_history/lang_zh.inc.php create mode 100644 plugins/serendipity_plugin_history/serendipity_plugin_history.php create mode 100644 plugins/serendipity_plugin_recententries/UTF-8/lang_bg.inc.php create mode 100644 plugins/serendipity_plugin_recententries/UTF-8/lang_de.inc.php create mode 100644 plugins/serendipity_plugin_recententries/UTF-8/lang_es.inc.php create mode 100644 plugins/serendipity_plugin_recententries/UTF-8/lang_fr.inc.php create mode 100644 plugins/serendipity_plugin_recententries/UTF-8/lang_is.inc.php create mode 100644 plugins/serendipity_plugin_recententries/UTF-8/lang_ja.inc.php create mode 100644 plugins/serendipity_plugin_recententries/UTF-8/lang_ko.inc.php create mode 100644 plugins/serendipity_plugin_recententries/UTF-8/lang_pl.inc.php create mode 100644 plugins/serendipity_plugin_recententries/UTF-8/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_plugin_recententries/UTF-8/lang_tn.inc.php create mode 100644 plugins/serendipity_plugin_recententries/UTF-8/lang_tr.inc.php create mode 100644 plugins/serendipity_plugin_recententries/UTF-8/lang_zh.inc.php create mode 100644 plugins/serendipity_plugin_recententries/lang_bg.inc.php create mode 100644 plugins/serendipity_plugin_recententries/lang_de.inc.php create mode 100644 plugins/serendipity_plugin_recententries/lang_en.inc.php create mode 100644 plugins/serendipity_plugin_recententries/lang_es.inc.php create mode 100644 plugins/serendipity_plugin_recententries/lang_fa.inc.php create mode 100644 plugins/serendipity_plugin_recententries/lang_fr.inc.php create mode 100644 plugins/serendipity_plugin_recententries/lang_is.inc.php create mode 100644 plugins/serendipity_plugin_recententries/lang_ja.inc.php create mode 100644 plugins/serendipity_plugin_recententries/lang_ko.inc.php create mode 100644 plugins/serendipity_plugin_recententries/lang_pl.inc.php create mode 100644 plugins/serendipity_plugin_recententries/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_plugin_recententries/lang_tn.inc.php create mode 100644 plugins/serendipity_plugin_recententries/lang_tr.inc.php create mode 100644 plugins/serendipity_plugin_recententries/lang_zh.inc.php create mode 100644 plugins/serendipity_plugin_recententries/serendipity_plugin_recententries.php create mode 100644 plugins/serendipity_plugin_remoterss/UTF-8/lang_de.inc.php create mode 100644 plugins/serendipity_plugin_remoterss/UTF-8/lang_es.inc.php create mode 100644 plugins/serendipity_plugin_remoterss/UTF-8/lang_fr.inc.php create mode 100644 plugins/serendipity_plugin_remoterss/UTF-8/lang_ja.inc.php create mode 100644 plugins/serendipity_plugin_remoterss/UTF-8/lang_ko.inc.php create mode 100644 plugins/serendipity_plugin_remoterss/UTF-8/lang_pl.inc.php create mode 100644 plugins/serendipity_plugin_remoterss/UTF-8/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_plugin_remoterss/UTF-8/lang_tn.inc.php create mode 100644 plugins/serendipity_plugin_remoterss/UTF-8/lang_zh.inc.php create mode 100644 plugins/serendipity_plugin_remoterss/lang_de.inc.php create mode 100644 plugins/serendipity_plugin_remoterss/lang_en.inc.php create mode 100644 plugins/serendipity_plugin_remoterss/lang_es.inc.php create mode 100644 plugins/serendipity_plugin_remoterss/lang_fr.inc.php create mode 100644 plugins/serendipity_plugin_remoterss/lang_ja.inc.php create mode 100644 plugins/serendipity_plugin_remoterss/lang_ko.inc.php create mode 100644 plugins/serendipity_plugin_remoterss/lang_pl.inc.php create mode 100644 plugins/serendipity_plugin_remoterss/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_plugin_remoterss/lang_tn.inc.php create mode 100644 plugins/serendipity_plugin_remoterss/lang_zh.inc.php create mode 100644 plugins/serendipity_plugin_remoterss/serendipity_plugin_remoterss.php create mode 100644 plugins/serendipity_plugin_shoutbox/UTF-8/lang_de.inc.php create mode 100644 plugins/serendipity_plugin_shoutbox/UTF-8/lang_es.inc.php create mode 100644 plugins/serendipity_plugin_shoutbox/UTF-8/lang_fr.inc.php create mode 100644 plugins/serendipity_plugin_shoutbox/UTF-8/lang_ja.inc.php create mode 100644 plugins/serendipity_plugin_shoutbox/UTF-8/lang_ko.inc.php create mode 100644 plugins/serendipity_plugin_shoutbox/UTF-8/lang_pl.inc.php create mode 100644 plugins/serendipity_plugin_shoutbox/UTF-8/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_plugin_shoutbox/UTF-8/lang_tn.inc.php create mode 100644 plugins/serendipity_plugin_shoutbox/UTF-8/lang_zh.inc.php create mode 100644 plugins/serendipity_plugin_shoutbox/lang_de.inc.php create mode 100644 plugins/serendipity_plugin_shoutbox/lang_en.inc.php create mode 100644 plugins/serendipity_plugin_shoutbox/lang_es.inc.php create mode 100644 plugins/serendipity_plugin_shoutbox/lang_fr.inc.php create mode 100644 plugins/serendipity_plugin_shoutbox/lang_ja.inc.php create mode 100644 plugins/serendipity_plugin_shoutbox/lang_ko.inc.php create mode 100644 plugins/serendipity_plugin_shoutbox/lang_pl.inc.php create mode 100644 plugins/serendipity_plugin_shoutbox/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_plugin_shoutbox/lang_tn.inc.php create mode 100644 plugins/serendipity_plugin_shoutbox/lang_zh.inc.php create mode 100644 plugins/serendipity_plugin_shoutbox/serendipity_plugin_shoutbox.php create mode 100644 plugins/serendipity_plugin_templatedropdown/UTF-8/lang_bg.inc.php create mode 100644 plugins/serendipity_plugin_templatedropdown/UTF-8/lang_de.inc.php create mode 100644 plugins/serendipity_plugin_templatedropdown/UTF-8/lang_es.inc.php create mode 100644 plugins/serendipity_plugin_templatedropdown/UTF-8/lang_fr.inc.php create mode 100644 plugins/serendipity_plugin_templatedropdown/UTF-8/lang_ja.inc.php create mode 100644 plugins/serendipity_plugin_templatedropdown/UTF-8/lang_ko.inc.php create mode 100644 plugins/serendipity_plugin_templatedropdown/UTF-8/lang_pl.inc.php create mode 100644 plugins/serendipity_plugin_templatedropdown/UTF-8/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_plugin_templatedropdown/UTF-8/lang_tn.inc.php create mode 100644 plugins/serendipity_plugin_templatedropdown/UTF-8/lang_zh.inc.php create mode 100644 plugins/serendipity_plugin_templatedropdown/lang_bg.inc.php create mode 100644 plugins/serendipity_plugin_templatedropdown/lang_de.inc.php create mode 100644 plugins/serendipity_plugin_templatedropdown/lang_en.inc.php create mode 100644 plugins/serendipity_plugin_templatedropdown/lang_es.inc.php create mode 100644 plugins/serendipity_plugin_templatedropdown/lang_fr.inc.php create mode 100644 plugins/serendipity_plugin_templatedropdown/lang_ja.inc.php create mode 100644 plugins/serendipity_plugin_templatedropdown/lang_ko.inc.php create mode 100644 plugins/serendipity_plugin_templatedropdown/lang_pl.inc.php create mode 100644 plugins/serendipity_plugin_templatedropdown/lang_pt_PT.inc.php create mode 100644 plugins/serendipity_plugin_templatedropdown/lang_tn.inc.php create mode 100644 plugins/serendipity_plugin_templatedropdown/lang_zh.inc.php create mode 100644 plugins/serendipity_plugin_templatedropdown/serendipity_plugin_templatedropdown.php create mode 100644 rss.php create mode 100644 serendipity.css.php create mode 100644 serendipity_admin.php create mode 100644 serendipity_admin_image_selector.php create mode 100644 serendipity_config.inc.php create mode 100644 serendipity_define.js.php create mode 100644 serendipity_editor.js create mode 100644 serendipity_xmlrpc.php create mode 100644 sql/db.sql create mode 100644 sql/db_update_0.2_0.3_mysql.sql create mode 100644 sql/db_update_0.2_0.3_postgres.sql create mode 100644 sql/db_update_0.3_0.4_mysql.sql create mode 100644 sql/db_update_0.3_0.4_postgres.sql create mode 100644 sql/db_update_0.5.1_0.6_mysql.sql create mode 100644 sql/db_update_0.5.1_0.6_postgres.sql create mode 100644 sql/db_update_0.5_0.5.1_mysql.sql create mode 100644 sql/db_update_0.5_0.5.1_postgres.sql create mode 100644 sql/db_update_0.6.10_0.6.11_mysql.sql create mode 100644 sql/db_update_0.6.10_0.6.11_postgres.sql create mode 100644 sql/db_update_0.6.1_0.6.2_mysql.sql create mode 100644 sql/db_update_0.6.1_0.6.2_postgres.sql create mode 100644 sql/db_update_0.6.2_0.6.3_mysql.sql create mode 100644 sql/db_update_0.6.2_0.6.3_postgres.sql create mode 100644 sql/db_update_0.6.3_0.6.4_mysql.sql create mode 100644 sql/db_update_0.6.3_0.6.4_postgres.sql create mode 100644 sql/db_update_0.6.4_0.6.5_mysql.sql create mode 100644 sql/db_update_0.6.4_0.6.5_postgres.sql create mode 100644 sql/db_update_0.6.5_0.6.6_mysql.sql create mode 100644 sql/db_update_0.6.5_0.6.6_postgres.sql create mode 100644 sql/db_update_0.6.6_0.6.7_mysql.sql create mode 100644 sql/db_update_0.6.6_0.6.7_postgres.sql create mode 100644 sql/db_update_0.6.8_0.6.9_mysql.sql create mode 100644 sql/db_update_0.6.8_0.6.9_postgres.sql create mode 100644 sql/db_update_0.6.9_0.7.0_mysql.sql create mode 100644 sql/db_update_0.6.9_0.7.0_postgresql.sql create mode 100644 sql/db_update_0.6_0.6.1_mysql.sql create mode 100644 sql/db_update_0.6_0.6.1_postgres.sql create mode 100644 sql/db_update_0.8-alpha10_0.8-alpha11_mysql.sql create mode 100644 sql/db_update_0.8-alpha11_0.8-alpha12_mysql.sql create mode 100644 sql/db_update_0.8-alpha11_0.8-alpha12_postgres.sql create mode 100644 sql/db_update_0.8-alpha11_0.8-alpha12_sqlite.sql create mode 100644 sql/db_update_0.8-alpha12_0.8-alpha13_mysql.sql create mode 100644 sql/db_update_0.8-alpha12_0.8-alpha13_postgres.sql create mode 100644 sql/db_update_0.8-alpha12_0.8-alpha13_sqlite.sql create mode 100644 sql/db_update_0.8-alpha1_0.8-alpha2_mysql.sql create mode 100644 sql/db_update_0.8-alpha4_0.8-alpha5_mysql.sql create mode 100644 sql/db_update_0.8-alpha4_0.8-alpha5_postgres.sql create mode 100644 sql/db_update_0.8-alpha4_0.8-alpha5_sqlite.sql create mode 100644 sql/db_update_0.8-alpha5_0.8-alpha6_mysql.sql create mode 100644 sql/db_update_0.8-alpha5_0.8-alpha6_postgres.sql create mode 100644 sql/db_update_0.8-alpha5_0.8-alpha6_sqlite.sql create mode 100644 sql/db_update_0.8-beta3_0.8-beta4_mysql.sql create mode 100644 sql/db_update_0.8-beta3_0.8-beta4_postgres.sql create mode 100644 sql/db_update_0.8-beta3_0.8-beta4_sqlite.sql create mode 100644 sql/db_update_0.8-beta5_0.8-beta6_mysql.sql create mode 100644 sql/db_update_0.8-beta5_0.8-beta6_postgres.sql create mode 100644 sql/db_update_0.8-beta5_0.8-beta6_sqlite.sql create mode 100644 sql/db_update_0.9-alpha1_0.9-alpha2_mysql.sql create mode 100644 sql/db_update_0.9-alpha1_0.9-alpha2_postgres.sql create mode 100644 sql/db_update_0.9-alpha1_0.9-alpha2_sqlite.sql create mode 100644 sql/db_update_0.9-alpha2_0.9-alpha3_mysql.sql create mode 100644 sql/db_update_0.9-alpha3_0.9-alpha4_mysql.sql create mode 100644 sql/db_update_0.9-alpha4_0.9-alpha5_mysql.sql create mode 100644 sql/db_update_1.1-alpha1_1.1-alpha2_mysql.sql create mode 100644 sql/db_update_1.1-alpha2_1.1-alpha3_mysql.sql create mode 100644 sql/db_update_1.1-alpha3_1.1-alpha4_mysql.sql create mode 100644 sql/db_update_1.1-alpha4_1.1-alpha5_mysql.sql create mode 100644 sql/db_update_1.1-alpha4_1.1-alpha5_postgres.sql create mode 100644 sql/db_update_1.1-alpha4_1.1-alpha5_sqlite.sql create mode 100644 sql/db_update_1.1-alpha5_1.1-alpha6_mysql.sql create mode 100644 sql/db_update_1.1-alpha5_1.1-alpha6_postgres.sql create mode 100644 sql/db_update_1.1-alpha5_1.1-alpha6_sqlite.sql create mode 100644 templates/HOWTO create mode 100644 templates/blue/htmlarea.css create mode 100644 templates/blue/img/back.png create mode 100644 templates/blue/img/down.png create mode 100644 templates/blue/img/forward.png create mode 100644 templates/blue/img/up.png create mode 100644 templates/blue/info.txt create mode 100644 templates/blue/preview.png create mode 100644 templates/blue/style.css create mode 100755 templates/carl_contest/admin/img/background.png create mode 100644 templates/carl_contest/admin/img/button_background.png create mode 100644 templates/carl_contest/admin/img/infobar_background.png create mode 100755 templates/carl_contest/admin/style.css create mode 100644 templates/carl_contest/entries.tpl create mode 100644 templates/carl_contest/entries_summary.tpl create mode 100755 templates/carl_contest/img/back.gif create mode 100755 templates/carl_contest/img/background.png create mode 100755 templates/carl_contest/img/background_alternate.png create mode 100755 templates/carl_contest/img/forward.gif create mode 100755 templates/carl_contest/img/graph_bar_horisontal.png create mode 100755 templates/carl_contest/img/info_header_text_tile.gif create mode 100755 templates/carl_contest/img/link_blue.gif create mode 100755 templates/carl_contest/img/link_ltblue.gif create mode 100755 templates/carl_contest/img/link_orange.gif create mode 100755 templates/carl_contest/img/xml.gif create mode 100755 templates/carl_contest/index.tpl create mode 100755 templates/carl_contest/info.txt create mode 100755 templates/carl_contest/plugin_calendar.tpl create mode 100755 templates/carl_contest/preview.png create mode 100755 templates/carl_contest/screenshot.png create mode 100644 templates/carl_contest/style.css create mode 100644 templates/competition/admin/img/background.jpg create mode 100644 templates/competition/admin/img/banner_background.png create mode 100644 templates/competition/admin/img/button_background.png create mode 100644 templates/competition/admin/img/infobar_background.png create mode 100644 templates/competition/admin/img/menu_background.png create mode 100644 templates/competition/admin/img/menuheader_background.png create mode 100644 templates/competition/admin/img/menuitem.png create mode 100644 templates/competition/admin/style.css create mode 100644 templates/competition/entries.tpl create mode 100644 templates/competition/img/back.png create mode 100644 templates/competition/img/background.png create mode 100644 templates/competition/img/forward.png create mode 100644 templates/competition/img/graph_bar_horisontal.png create mode 100644 templates/competition/img/s9y_banner_small.png create mode 100644 templates/competition/img/xml.gif create mode 100644 templates/competition/index.tpl create mode 100644 templates/competition/info.txt create mode 100644 templates/competition/preview.png create mode 100644 templates/competition/style.css create mode 100644 templates/contest/admin/img/Thumbs.db create mode 100644 templates/contest/admin/img/button_background.png create mode 100644 templates/contest/admin/img/header_bar.png create mode 100644 templates/contest/admin/img/header_logo.png create mode 100644 templates/contest/admin/img/menuheader_background.png create mode 100644 templates/contest/admin/img/sidebar_left.jpg create mode 100644 templates/contest/admin/style.css create mode 100644 templates/contest/content.tpl create mode 100644 templates/contest/entries.tpl create mode 100644 templates/contest/img/Thumbs.db create mode 100644 templates/contest/img/back.png create mode 100644 templates/contest/img/date_bar.png create mode 100644 templates/contest/img/forward.png create mode 100644 templates/contest/img/header_bar.png create mode 100644 templates/contest/img/header_logo.png create mode 100644 templates/contest/img/header_spacer.png create mode 100644 templates/contest/img/sidebar_left.jpg create mode 100644 templates/contest/img/sidebar_right.jpg create mode 100644 templates/contest/img/sidebar_spacer.jpg create mode 100644 templates/contest/img/xml.gif create mode 100644 templates/contest/index.tpl create mode 100755 templates/contest/info.txt create mode 100644 templates/contest/plugin_calendar.tpl create mode 100755 templates/contest/preview.png create mode 100644 templates/contest/style.css create mode 100644 templates/default-php/IMPORTANT-TODO create mode 100644 templates/default-php/commentform.tpl create mode 100644 templates/default-php/commentpopup.tpl create mode 100644 templates/default-php/comments.tpl create mode 100644 templates/default-php/content.tpl create mode 100644 templates/default-php/entries.tpl create mode 100644 templates/default-php/entries_archives.tpl create mode 100644 templates/default-php/entries_summary.tpl create mode 100644 templates/default-php/feed_0.91.tpl create mode 100644 templates/default-php/feed_1.0.tpl create mode 100644 templates/default-php/feed_2.0.tpl create mode 100644 templates/default-php/feed_atom0.3.tpl create mode 100644 templates/default-php/feed_atom1.0.tpl create mode 100644 templates/default-php/feed_opml1.0.tpl create mode 100644 templates/default-php/index.tpl create mode 100644 templates/default-php/info.txt create mode 100644 templates/default-php/plugin_calendar.tpl create mode 100644 templates/default-php/plugin_categories.tpl create mode 100644 templates/default-php/preview.png create mode 100644 templates/default-php/preview_iframe.tpl create mode 100644 templates/default-php/sidebar.tpl create mode 100644 templates/default-php/template.inc.php create mode 100644 templates/default-php/trackbacks.tpl create mode 100644 templates/default-rtl/admin/img/background.jpg create mode 100644 templates/default-rtl/admin/img/banner_background.png create mode 100644 templates/default-rtl/admin/img/button_background.png create mode 100644 templates/default-rtl/admin/img/infobar_background.png create mode 100644 templates/default-rtl/admin/img/menu_background.png create mode 100644 templates/default-rtl/admin/img/menuheader_background.png create mode 100644 templates/default-rtl/admin/style.css create mode 100644 templates/default-rtl/entries_archives.tpl create mode 100644 templates/default-rtl/entries_summary.tpl create mode 100644 templates/default-rtl/htmlarea.css create mode 100644 templates/default-rtl/img/background.png create mode 100644 templates/default-rtl/info.txt create mode 100644 templates/default-rtl/plugin_calendar.tpl create mode 100644 templates/default-rtl/preview.png create mode 100644 templates/default-rtl/style.css create mode 100644 templates/default-xml/index.tpl create mode 100644 templates/default-xml/info.txt create mode 100644 templates/default-xml/preview.png create mode 100644 templates/default-xml/template.inc.php create mode 100644 templates/default/admin/img/accept.png create mode 100644 templates/default/admin/img/background.jpg create mode 100644 templates/default/admin/img/banner_background.png create mode 100644 templates/default/admin/img/big_delete.png create mode 100644 templates/default/admin/img/big_rename.png create mode 100644 templates/default/admin/img/big_resize.png create mode 100644 templates/default/admin/img/big_rotate_ccw.png create mode 100644 templates/default/admin/img/big_rotate_cw.png create mode 100644 templates/default/admin/img/big_zoom.png create mode 100644 templates/default/admin/img/button_background.png create mode 100644 templates/default/admin/img/clock.png create mode 100644 templates/default/admin/img/clock_future.png create mode 100644 templates/default/admin/img/configure.png create mode 100644 templates/default/admin/img/delete.png create mode 100644 templates/default/admin/img/downarrow.png create mode 100644 templates/default/admin/img/edit.png create mode 100644 templates/default/admin/img/folder.png create mode 100644 templates/default/admin/img/grablet.gif create mode 100644 templates/default/admin/img/grablet_over.gif create mode 100644 templates/default/admin/img/imgedit_area.gif create mode 100644 templates/default/admin/img/imgedit_orientation.gif create mode 100644 templates/default/admin/img/imgedit_slider.gif create mode 100644 templates/default/admin/img/imgedit_varea.gif create mode 100644 templates/default/admin/img/infobar_background.png create mode 100644 templates/default/admin/img/install.png create mode 100644 templates/default/admin/img/install_now.png create mode 100644 templates/default/admin/img/install_now_spartacus.png create mode 100644 templates/default/admin/img/install_template.png create mode 100644 templates/default/admin/img/menu_background.png create mode 100644 templates/default/admin/img/menuheader_background.png create mode 100644 templates/default/admin/img/menuitem.png create mode 100644 templates/default/admin/img/mime_unknown.png create mode 100644 templates/default/admin/img/next.png create mode 100644 templates/default/admin/img/previous.png create mode 100644 templates/default/admin/img/rotate.png create mode 100644 templates/default/admin/img/thumbnail.png create mode 100644 templates/default/admin/img/unconfigure.png create mode 100644 templates/default/admin/img/uparrow.png create mode 100644 templates/default/admin/img/upgrade_now.png create mode 100644 templates/default/admin/img/user_admin.png create mode 100644 templates/default/admin/img/user_chief.png create mode 100644 templates/default/admin/img/user_editor.png create mode 100644 templates/default/admin/img/zoom.png create mode 100644 templates/default/admin/imgedit.css create mode 100644 templates/default/admin/media_choose.tpl create mode 100644 templates/default/admin/media_imgedit.tpl create mode 100644 templates/default/admin/media_imgedit_done.tpl create mode 100644 templates/default/admin/media_items.tpl create mode 100644 templates/default/admin/media_pane.tpl create mode 100644 templates/default/admin/media_properties.tpl create mode 100644 templates/default/admin/media_showitem.tpl create mode 100644 templates/default/admin/media_upload.tpl create mode 100644 templates/default/admin/pluginmanager.css create mode 100644 templates/default/admin/style.css create mode 100644 templates/default/atom.css create mode 100644 templates/default/commentform.tpl create mode 100644 templates/default/commentpopup.tpl create mode 100644 templates/default/comments.tpl create mode 100644 templates/default/content.tpl create mode 100644 templates/default/entries.tpl create mode 100644 templates/default/entries_archives.tpl create mode 100644 templates/default/entries_summary.tpl create mode 100644 templates/default/feed_0.91.tpl create mode 100644 templates/default/feed_1.0.tpl create mode 100644 templates/default/feed_2.0.tpl create mode 100644 templates/default/feed_atom0.3.tpl create mode 100644 templates/default/feed_atom1.0.tpl create mode 100644 templates/default/feed_opml1.0.tpl create mode 100644 templates/default/htmlarea.css create mode 100644 templates/default/img/back.png create mode 100644 templates/default/img/background.png create mode 100644 templates/default/img/blank.gif create mode 100644 templates/default/img/blank.png create mode 100644 templates/default/img/delete.png create mode 100644 templates/default/img/down.png create mode 100644 templates/default/img/emoticons/cool.png create mode 100644 templates/default/img/emoticons/cry.png create mode 100644 templates/default/img/emoticons/eek.png create mode 100644 templates/default/img/emoticons/laugh.png create mode 100644 templates/default/img/emoticons/normal.png create mode 100644 templates/default/img/emoticons/sad.png create mode 100644 templates/default/img/emoticons/smile.png create mode 100644 templates/default/img/emoticons/tongue.png create mode 100644 templates/default/img/emoticons/wink.png create mode 100644 templates/default/img/forward.png create mode 100644 templates/default/img/graph_bar_horisontal.png create mode 100644 templates/default/img/img_align_left.png create mode 100644 templates/default/img/img_align_right.png create mode 100644 templates/default/img/img_align_top.png create mode 100644 templates/default/img/minus.png create mode 100644 templates/default/img/norights.png create mode 100644 templates/default/img/plus.png create mode 100644 templates/default/img/rename.png create mode 100644 templates/default/img/s9y_banner_small.png create mode 100644 templates/default/img/scale.png create mode 100644 templates/default/img/somerights20.gif create mode 100644 templates/default/img/up.png create mode 100644 templates/default/img/xml.gif create mode 100644 templates/default/img/zoom.png create mode 100644 templates/default/index.tpl create mode 100644 templates/default/info.txt create mode 100644 templates/default/plugin_calendar.tpl create mode 100644 templates/default/plugin_categories.tpl create mode 100644 templates/default/preview.png create mode 100644 templates/default/preview_iframe.tpl create mode 100644 templates/default/sidebar.tpl create mode 100644 templates/default/style.css create mode 100644 templates/default/trackbacks.tpl create mode 100644 templates/default/treeview/lm.gif create mode 100644 templates/default/treeview/lmh.gif create mode 100644 templates/default/treeview/ln.gif create mode 100644 templates/default/treeview/loading.gif create mode 100644 templates/default/treeview/lp.gif create mode 100644 templates/default/treeview/lph.gif create mode 100644 templates/default/treeview/screen.css create mode 100644 templates/default/treeview/tm.gif create mode 100644 templates/default/treeview/tmh.gif create mode 100644 templates/default/treeview/tn.gif create mode 100644 templates/default/treeview/tp.gif create mode 100644 templates/default/treeview/tph.gif create mode 100644 templates/default/treeview/tree.css create mode 100644 templates/default/treeview/vline.gif create mode 100644 templates/idea/img/I_had_an_idea.jpg create mode 100644 templates/idea/img/bullet.gif create mode 100644 templates/idea/img/clock_face_messy_paint_runs.jpg create mode 100644 templates/idea/img/quote.gif create mode 100644 templates/idea/info.txt create mode 100644 templates/idea/preview.png create mode 100644 templates/idea/style.css create mode 100644 templates/kubrick/comments.tpl create mode 100644 templates/kubrick/config.inc.php create mode 100644 templates/kubrick/entries.tpl create mode 100644 templates/kubrick/images/kubrickbg.jpg create mode 100644 templates/kubrick/images/kubrickbgcolor.jpg create mode 100644 templates/kubrick/images/kubrickbgwide.jpg create mode 100644 templates/kubrick/images/kubrickfooter.jpg create mode 100644 templates/kubrick/images/kubrickheader.jpg create mode 100644 templates/kubrick/images/kubricklogo.jpg create mode 100644 templates/kubrick/images/kubrickportrait.png create mode 100644 templates/kubrick/img/back.png create mode 100644 templates/kubrick/img/down.png create mode 100644 templates/kubrick/img/forward.png create mode 100644 templates/kubrick/img/up.png create mode 100644 templates/kubrick/index.tpl create mode 100644 templates/kubrick/info.txt create mode 100644 templates/kubrick/lang_de.inc.php create mode 100644 templates/kubrick/lang_en.inc.php create mode 100644 templates/kubrick/lang_ko.inc.php create mode 100644 templates/kubrick/preview.png create mode 100644 templates/kubrick/sidebar.tpl create mode 100644 templates/kubrick/style.css create mode 100644 templates/kubrick/trackbacks.tpl create mode 100644 templates/moz-modern/htmlarea.css create mode 100644 templates/moz-modern/img/back.png create mode 100644 templates/moz-modern/img/background.png create mode 100644 templates/moz-modern/img/background2.png create mode 100644 templates/moz-modern/img/forward.png create mode 100644 templates/moz-modern/index.tpl create mode 100644 templates/moz-modern/info.txt create mode 100644 templates/moz-modern/preview.png create mode 100644 templates/moz-modern/style.css create mode 100644 templates/mt-clean/info.txt create mode 100644 templates/mt-clean/preview.png create mode 100644 templates/mt-clean/style.css create mode 100644 templates/mt-georgiablue/info.txt create mode 100644 templates/mt-georgiablue/preview.png create mode 100644 templates/mt-georgiablue/style.css create mode 100644 templates/mt-gettysburg/img/back.png create mode 100644 templates/mt-gettysburg/img/down.png create mode 100644 templates/mt-gettysburg/img/forward.png create mode 100644 templates/mt-gettysburg/img/up.png create mode 100644 templates/mt-gettysburg/info.txt create mode 100644 templates/mt-gettysburg/preview.png create mode 100644 templates/mt-gettysburg/style.css create mode 100644 templates/mt-plainjane/info.txt create mode 100644 templates/mt-plainjane/preview.png create mode 100644 templates/mt-plainjane/style.css create mode 100644 templates/mt-rusty/img/back.png create mode 100644 templates/mt-rusty/img/down.png create mode 100644 templates/mt-rusty/img/forward.png create mode 100644 templates/mt-rusty/img/up.png create mode 100644 templates/mt-rusty/info.txt create mode 100644 templates/mt-rusty/preview.png create mode 100644 templates/mt-rusty/style.css create mode 100644 templates/mt-stormy/inactive.txt create mode 100644 templates/mt-stormy/info.txt create mode 100644 templates/mt-stormy/style.css create mode 100644 templates/mt-trendy/htmlarea.css create mode 100644 templates/mt-trendy/img/back.png create mode 100644 templates/mt-trendy/img/forward.png create mode 100644 templates/mt-trendy/info.txt create mode 100644 templates/mt-trendy/preview.png create mode 100644 templates/mt-trendy/style.css create mode 100644 templates/mt3-chalkboard/img/back.png create mode 100644 templates/mt3-chalkboard/img/down.png create mode 100644 templates/mt3-chalkboard/img/forward.png create mode 100644 templates/mt3-chalkboard/img/up.png create mode 100644 templates/mt3-chalkboard/info.txt create mode 100644 templates/mt3-chalkboard/preview.png create mode 100644 templates/mt3-chalkboard/style.css create mode 100644 templates/mt3-gettysburg/info.txt create mode 100644 templates/mt3-gettysburg/preview.png create mode 100644 templates/mt3-gettysburg/style.css create mode 100644 templates/mt3-independence/info.txt create mode 100644 templates/mt3-independence/preview.png create mode 100644 templates/mt3-independence/style.css create mode 100644 templates/mt3-squash/info.txt create mode 100644 templates/mt3-squash/preview.png create mode 100644 templates/mt3-squash/style.css create mode 100644 templates/newspaper/htmlarea.css create mode 100644 templates/newspaper/img/shadowb.png create mode 100644 templates/newspaper/img/shadowbl.png create mode 100644 templates/newspaper/img/shadowbr.png create mode 100644 templates/newspaper/img/shadowr.png create mode 100644 templates/newspaper/img/shadowt.png create mode 100644 templates/newspaper/info.txt create mode 100644 templates/newspaper/layout.php create mode 100644 templates/newspaper/preview.png create mode 100644 templates/newspaper/style.css create mode 100644 templates/wp/atom.css create mode 100644 templates/wp/commentform.tpl create mode 100644 templates/wp/comments.tpl create mode 100644 templates/wp/content.tpl create mode 100644 templates/wp/entries.tpl create mode 100644 templates/wp/entries_archives.tpl create mode 100644 templates/wp/entries_summary.tpl create mode 100644 templates/wp/htmlarea.css create mode 100644 templates/wp/index.tpl create mode 100644 templates/wp/info.txt create mode 100644 templates/wp/plugin_calendar.tpl create mode 100644 templates/wp/sidebar.tpl create mode 100644 templates/wp/trackbacks.tpl create mode 100644 templates/wp/wp-layout.css create mode 100644 templates_c/.empty create mode 100644 uploads/.empty create mode 100644 wfwcomment.php diff --git a/bundled-libs/.current_version b/bundled-libs/.current_version new file mode 100644 index 00000000..bee8b66d --- /dev/null +++ b/bundled-libs/.current_version @@ -0,0 +1,11 @@ +Cache_Lite 1.5.1 +HTTP_Request 1.2.4 +Net_CheckIP 1.1 +Net_Socket 1.0.6 +Net_URL 1.0.14 +PEAR 1.3.5 +Text_Wiki 0.25.0 +XML_RPC 1.4.0 +Onyx 1.0 (customized) +Smarty 2.6.9 +Net_DNSBL 1.0.0 \ No newline at end of file diff --git a/bundled-libs/Cache/BUNDLE_NOTICE b/bundled-libs/Cache/BUNDLE_NOTICE new file mode 100644 index 00000000..d33d37bc --- /dev/null +++ b/bundled-libs/Cache/BUNDLE_NOTICE @@ -0,0 +1,8 @@ +- Replace: +Lite.php: +include_once('PEAR.php'); +include_once dirname(__FILE__) . '/../PEAR.php'; + +Output.php, Function.php: +require_once('Cache/Lite.php'); +require_once(dirname(__FILE__) . '/../Lite.php'; \ No newline at end of file diff --git a/bundled-libs/Cache/Lite.php b/bundled-libs/Cache/Lite.php new file mode 100644 index 00000000..fbe93bf5 --- /dev/null +++ b/bundled-libs/Cache/Lite.php @@ -0,0 +1,755 @@ + +* +* Nota : A chinese documentation (thanks to RainX ) is +* available at : +* http://rainx.phpmore.com/manual/cache_lite.html +* +* @package Cache_Lite +* @category Caching +* @version $Id: Lite.php,v 1.30 2005/06/13 20:50:48 fab Exp $ +* @author Fabien MARTY +*/ + +define('CACHE_LITE_ERROR_RETURN', 1); +define('CACHE_LITE_ERROR_DIE', 8); + +class Cache_Lite +{ + + // --- Private properties --- + + /** + * Directory where to put the cache files + * (make sure to add a trailing slash) + * + * @var string $_cacheDir + */ + var $_cacheDir = '/tmp/'; + + /** + * Enable / disable caching + * + * (can be very usefull for the debug of cached scripts) + * + * @var boolean $_caching + */ + var $_caching = true; + + /** + * Cache lifetime (in seconds) + * + * @var int $_lifeTime + */ + var $_lifeTime = 3600; + + /** + * Enable / disable fileLocking + * + * (can avoid cache corruption under bad circumstances) + * + * @var boolean $_fileLocking + */ + var $_fileLocking = true; + + /** + * Timestamp of the last valid cache + * + * @var int $_refreshTime + */ + var $_refreshTime; + + /** + * File name (with path) + * + * @var string $_file + */ + var $_file; + + /** + * File name (without path) + * + * @var string $_fileName + */ + var $_fileName; + + /** + * Enable / disable write control (the cache is read just after writing to detect corrupt entries) + * + * Enable write control will lightly slow the cache writing but not the cache reading + * Write control can detect some corrupt cache files but maybe it's not a perfect control + * + * @var boolean $_writeControl + */ + var $_writeControl = true; + + /** + * Enable / disable read control + * + * If enabled, a control key is embeded in cache file and this key is compared with the one + * calculated after the reading. + * + * @var boolean $_writeControl + */ + var $_readControl = true; + + /** + * Type of read control (only if read control is enabled) + * + * Available values are : + * 'md5' for a md5 hash control (best but slowest) + * 'crc32' for a crc32 hash control (lightly less safe but faster, better choice) + * 'strlen' for a length only test (fastest) + * + * @var boolean $_readControlType + */ + var $_readControlType = 'crc32'; + + /** + * Pear error mode (when raiseError is called) + * + * (see PEAR doc) + * + * @see setToDebug() + * @var int $_pearErrorMode + */ + var $_pearErrorMode = CACHE_LITE_ERROR_RETURN; + + /** + * Current cache id + * + * @var string $_id + */ + var $_id; + + /** + * Current cache group + * + * @var string $_group + */ + var $_group; + + /** + * Enable / Disable "Memory Caching" + * + * NB : There is no lifetime for memory caching ! + * + * @var boolean $_memoryCaching + */ + var $_memoryCaching = false; + + /** + * Enable / Disable "Only Memory Caching" + * (be carefull, memory caching is "beta quality") + * + * @var boolean $_onlyMemoryCaching + */ + var $_onlyMemoryCaching = false; + + /** + * Memory caching array + * + * @var array $_memoryCachingArray + */ + var $_memoryCachingArray = array(); + + /** + * Memory caching counter + * + * @var int $memoryCachingCounter + */ + var $_memoryCachingCounter = 0; + + /** + * Memory caching limit + * + * @var int $memoryCachingLimit + */ + var $_memoryCachingLimit = 1000; + + /** + * File Name protection + * + * if set to true, you can use any cache id or group name + * if set to false, it can be faster but cache ids and group names + * will be used directly in cache file names so be carefull with + * special characters... + * + * @var boolean $fileNameProtection + */ + var $_fileNameProtection = true; + + /** + * Enable / disable automatic serialization + * + * it can be used to save directly datas which aren't strings + * (but it's slower) + * + * @var boolean $_serialize + */ + var $_automaticSerialization = false; + + /** + * Disable / Tune the automatic cleaning process + * + * The automatic cleaning process destroy too old (for the given life time) + * cache files when a new cache file is written. + * 0 => no automatic cache cleaning + * 1 => systematic cache cleaning + * x (integer) > 1 => automatic cleaning randomly 1 times on x cache write + * + * @var int $_automaticCleaning + */ + var $_automaticCleaningFactor = 0; + + /** + * Nested directory level + * + * Set the hashed directory structure level. 0 means "no hashed directory + * structure", 1 means "one level of directory", 2 means "two levels"... + * This option can speed up Cache_Lite only when you have many thousands of + * cache file. Only specific benchs can help you to choose the perfect value + * for you. Maybe, 1 or 2 is a good start. + * + * @var int $_hashedDirectoryLevel + */ + var $_hashedDirectoryLevel = 0; + + /** + * Umask for hashed directory structure + * + * @var int $_hashedDirectoryUmask + */ + var $_hashedDirectoryUmask = 0700; + + // --- Public methods --- + + /** + * Constructor + * + * $options is an assoc. Available options are : + * $options = array( + * 'cacheDir' => directory where to put the cache files (string), + * 'caching' => enable / disable caching (boolean), + * 'lifeTime' => cache lifetime in seconds (int), + * 'fileLocking' => enable / disable fileLocking (boolean), + * 'writeControl' => enable / disable write control (boolean), + * 'readControl' => enable / disable read control (boolean), + * 'readControlType' => type of read control 'crc32', 'md5', 'strlen' (string), + * 'pearErrorMode' => pear error mode (when raiseError is called) (cf PEAR doc) (int), + * 'memoryCaching' => enable / disable memory caching (boolean), + * 'onlyMemoryCaching' => enable / disable only memory caching (boolean), + * 'memoryCachingLimit' => max nbr of records to store into memory caching (int), + * 'fileNameProtection' => enable / disable automatic file name protection (boolean), + * 'automaticSerialization' => enable / disable automatic serialization (boolean) + * 'automaticCleaningFactor' => distable / tune automatic cleaning process (int) + * 'hashedDirectoryLevel' => level of the hashed directory system (int) + * 'hashedDirectoryUmask' => umask for hashed directory structure (int) + * ); + * + * @param array $options options + * @access public + */ + function Cache_Lite($options = array(NULL)) + { + $availableOptions = array('hashedDirectoryUmask', 'hashedDirectoryLevel', 'automaticCleaningFactor', 'automaticSerialization', 'fileNameProtection', 'memoryCaching', 'onlyMemoryCaching', 'memoryCachingLimit', 'cacheDir', 'caching', 'lifeTime', 'fileLocking', 'writeControl', 'readControl', 'readControlType', 'pearErrorMode'); + foreach($options as $key => $value) { + if(in_array($key, $availableOptions)) { + $property = '_'.$key; + $this->$property = $value; + } + } + $this->_refreshTime = time() - $this->_lifeTime; + } + + /** + * Test if a cache is available and (if yes) return it + * + * @param string $id cache id + * @param string $group name of the cache group + * @param boolean $doNotTestCacheValidity if set to true, the cache validity won't be tested + * @return string data of the cache (or false if no cache available) + * @access public + */ + function get($id, $group = 'default', $doNotTestCacheValidity = false) + { + $this->_id = $id; + $this->_group = $group; + $data = false; + if ($this->_caching) { + $this->_setFileName($id, $group); + if ($this->_memoryCaching) { + if (isset($this->_memoryCachingArray[$this->_file])) { + if ($this->_automaticSerialization) { + return unserialize($this->_memoryCachingArray[$this->_file]); + } else { + return $this->_memoryCachingArray[$this->_file]; + } + } else { + if ($this->_onlyMemoryCaching) { + return false; + } + } + } + if ($doNotTestCacheValidity) { + if (file_exists($this->_file)) { + $data = $this->_read(); + } + } else { + if ((file_exists($this->_file)) && (@filemtime($this->_file) > $this->_refreshTime)) { + $data = $this->_read(); + } + } + if (($data) and ($this->_memoryCaching)) { + $this->_memoryCacheAdd($this->_file, $data); + } + if (($this->_automaticSerialization) and (is_string($data))) { + $data = unserialize($data); + } + return $data; + } + return false; + } + + /** + * Save some data in a cache file + * + * @param string $data data to put in cache (can be another type than strings if automaticSerialization is on) + * @param string $id cache id + * @param string $group name of the cache group + * @return boolean true if no problem + * @access public + */ + function save($data, $id = NULL, $group = 'default') + { + if ($this->_caching) { + if ($this->_automaticSerialization) { + $data = serialize($data); + } + if (isset($id)) { + $this->_setFileName($id, $group); + } + if ($this->_memoryCaching) { + $this->_memoryCacheAdd($this->_file, $data); + if ($this->_onlyMemoryCaching) { + return true; + } + } + if ($this->_automaticCleaningFactor>0) { + $rand = rand(1, $this->_automaticCleaningFactor); + if ($rand==1) { + $this->clean(false, 'old'); + } + } + if ($this->_writeControl) { + if (!$this->_writeAndControl($data)) { + @touch($this->_file, time() - 2*abs($this->_lifeTime)); + return false; + } else { + return true; + } + } else { + return $this->_write($data); + } + } + return false; + } + + /** + * Remove a cache file + * + * @param string $id cache id + * @param string $group name of the cache group + * @return boolean true if no problem + * @access public + */ + function remove($id, $group = 'default') + { + $this->_setFileName($id, $group); + if ($this->_memoryCaching) { + if (isset($this->_memoryCachingArray[$this->_file])) { + unset($this->_memoryCachingArray[$this->_file]); + $this->_memoryCachingCounter = $this->_memoryCachingCounter - 1; + } + if ($this->_onlyMemoryCaching) { + return true; + } + } + return $this->_unlink($this->_file); + } + + /** + * Clean the cache + * + * if no group is specified all cache files will be destroyed + * else only cache files of the specified group will be destroyed + * + * @param string $group name of the cache group + * @param string $mode flush cache mode : 'old', 'ingroup', 'notingroup', + * 'callback_myFunction' + * @return boolean true if no problem + * @access public + */ + function clean($group = false, $mode = 'ingroup') + { + return $this->_cleanDir($this->_cacheDir, $group, $mode); + } + + /** + * Set to debug mode + * + * When an error is found, the script will stop and the message will be displayed + * (in debug mode only). + * + * @access public + */ + function setToDebug() + { + $this->_pearErrorMode = CACHE_LITE_ERROR_DIE; + } + + /** + * Set a new life time + * + * @param int $newLifeTime new life time (in seconds) + * @access public + */ + function setLifeTime($newLifeTime) + { + $this->_lifeTime = $newLifeTime; + $this->_refreshTime = time() - $newLifeTime; + } + + /** + * Save the state of the caching memory array into a cache file cache + * + * @param string $id cache id + * @param string $group name of the cache group + * @access public + */ + function saveMemoryCachingState($id, $group = 'default') + { + if ($this->_caching) { + $array = array( + 'counter' => $this->_memoryCachingCounter, + 'array' => $this->_memoryCachingState + ); + $data = serialize($array); + $this->save($data, $id, $group); + } + } + + /** + * Load the state of the caching memory array from a given cache file cache + * + * @param string $id cache id + * @param string $group name of the cache group + * @param boolean $doNotTestCacheValidity if set to true, the cache validity won't be tested + * @access public + */ + function getMemoryCachingState($id, $group = 'default', $doNotTestCacheValidity = false) + { + if ($this->_caching) { + if ($data = $this->get($id, $group, $doNotTestCacheValidity)) { + $array = unserialize($data); + $this->_memoryCachingCounter = $array['counter']; + $this->_memoryCachingArray = $array['array']; + } + } + } + + /** + * Return the cache last modification time + * + * BE CAREFUL : THIS METHOD IS FOR HACKING ONLY ! + * + * @return int last modification time + */ + function lastModified() { + return @filemtime($this->_file); + } + + /** + * Trigger a PEAR error + * + * To improve performances, the PEAR.php file is included dynamically. + * The file is so included only when an error is triggered. So, in most + * cases, the file isn't included and perfs are much better. + * + * @param string $msg error message + * @param int $code error code + * @access public + */ + function raiseError($msg, $code) + { + include_once(dirname(__FILE__) . '/../PEAR.php'); + PEAR::raiseError($msg, $code, $this->_pearErrorMode); + } + + // --- Private methods --- + + /** + * Remove a file + * + * @param string $file complete file path and name + * @return boolean true if no problem + * @access private + */ + function _unlink($file) + { + if (!@unlink($file)) { + $this->raiseError('Cache_Lite : Unable to remove cache !', -3); + return false; + } else { + return true; + } + } + + /** + * Recursive function for cleaning cache file in the given directory + * + * @param string $dir directory complete path (with a trailing slash) + * @param string $group name of the cache group + * @param string $mode flush cache mode : 'old', 'ingroup', 'notingroup', + 'callback_myFunction' + * @return boolean true if no problem + * @access private + */ + function _cleanDir($dir, $group = false, $mode = 'ingroup') + { + if ($this->_fileNameProtection) { + $motif = ($group) ? 'cache_'.md5($group).'_' : 'cache_'; + } else { + $motif = ($group) ? 'cache_'.$group.'_' : 'cache_'; + } + if ($this->_memoryCaching) { + while (list($key, $value) = each($this->_memoryCachingArray)) { + if (strpos($key, $motif, 0)) { + unset($this->_memoryCachingArray[$key]); + $this->_memoryCachingCounter = $this->_memoryCachingCounter - 1; + } + } + if ($this->_onlyMemoryCaching) { + return true; + } + } + if (!($dh = opendir($dir))) { + $this->raiseError('Cache_Lite : Unable to open cache directory !', -4); + return false; + } + $result = true; + while ($file = readdir($dh)) { + if (($file != '.') && ($file != '..')) { + if (substr($file, 0, 6)=='cache_') { + $file2 = $dir . $file; + if (is_file($file2)) { + switch (substr($mode, 0, 9)) { + case 'old': + // files older than lifeTime get deleted from cache + if ((mktime() - filemtime($file2)) > $this->_lifeTime) { + $result = ($result and ($this->_unlink($file2))); + } + break; + case 'notingrou': + if (!strpos($file2, $motif, 0)) { + $result = ($result and ($this->_unlink($file2))); + } + break; + case 'callback_': + $func = substr($mode, 9, strlen($mode) - 9); + if ($func($file2, $group)) { + $result = ($result and ($this->_unlink($file2))); + } + break; + case 'ingroup': + default: + if (strpos($file2, $motif, 0)) { + $result = ($result and ($this->_unlink($file2))); + } + break; + } + } + if ((is_dir($file2)) and ($this->_hashedDirectoryLevel>0)) { + $result = ($result and ($this->_cleanDir($file2 . '/', $group, $mode))); + } + } + } + } + return $result; + } + + /** + * Add some date in the memory caching array + * + * @param string $id cache id + * @param string $data data to cache + * @access private + */ + function _memoryCacheAdd($id, $data) + { + $this->_memoryCachingArray[$this->_file] = $data; + if ($this->_memoryCachingCounter >= $this->_memoryCachingLimit) { + list($key, $value) = each($this->_memoryCachingArray); + unset($this->_memoryCachingArray[$key]); + } else { + $this->_memoryCachingCounter = $this->_memoryCachingCounter + 1; + } + } + + /** + * Make a file name (with path) + * + * @param string $id cache id + * @param string $group name of the group + * @access private + */ + function _setFileName($id, $group) + { + + if ($this->_fileNameProtection) { + $suffix = 'cache_'.md5($group).'_'.md5($id); + } else { + $suffix = 'cache_'.$group.'_'.$id; + } + $root = $this->_cacheDir; + if ($this->_hashedDirectoryLevel>0) { + $hash = md5($suffix); + for ($i=0 ; $i<$this->_hashedDirectoryLevel ; $i++) { + $root = $root . 'cache_' . substr($hash, 0, $i + 1) . '/'; + } + } + $this->_fileName = $suffix; + $this->_file = $root.$suffix; + } + + /** + * Read the cache file and return the content + * + * @return string content of the cache file + * @access private + */ + function _read() + { + $fp = @fopen($this->_file, "rb"); + if ($this->_fileLocking) @flock($fp, LOCK_SH); + if ($fp) { + clearstatcache(); // because the filesize can be cached by PHP itself... + $length = @filesize($this->_file); + $mqr = get_magic_quotes_runtime(); + set_magic_quotes_runtime(0); + if ($this->_readControl) { + $hashControl = @fread($fp, 32); + $length = $length - 32; + } + if ($length) { + $data = @fread($fp, $length); + } else { + $data = ''; + } + set_magic_quotes_runtime($mqr); + if ($this->_fileLocking) @flock($fp, LOCK_UN); + @fclose($fp); + if ($this->_readControl) { + $hashData = $this->_hash($data, $this->_readControlType); + if ($hashData != $hashControl) { + @touch($this->_file, time() - 2*abs($this->_lifeTime)); + return false; + } + } + return $data; + } + $this->raiseError('Cache_Lite : Unable to read cache !', -2); + return false; + } + + /** + * Write the given data in the cache file + * + * @param string $data data to put in cache + * @return boolean true if ok + * @access private + */ + function _write($data) + { + $try = 1; + while ($try<=2) { + $fp = @fopen($this->_file, "wb"); + if ($fp) { + if ($this->_fileLocking) @flock($fp, LOCK_EX); + if ($this->_readControl) { + @fwrite($fp, $this->_hash($data, $this->_readControlType), 32); + } + $len = strlen($data); + @fwrite($fp, $data, $len); + if ($this->_fileLocking) @flock($fp, LOCK_UN); + @fclose($fp); + return true; + } else { + if (($try==1) and ($this->_hashedDirectoryLevel>0)) { + $hash = md5($this->_fileName); + $root = $this->_cacheDir; + for ($i=0 ; $i<$this->_hashedDirectoryLevel ; $i++) { + $root = $root . 'cache_' . substr($hash, 0, $i + 1) . '/'; + @mkdir($root, $this->_hashedDirectoryUmask); + } + $try = 2; + } else { + $try = 999; + } + } + } + $this->raiseError('Cache_Lite : Unable to write cache file : '.$this->_file, -1); + return false; + } + + /** + * Write the given data in the cache file and control it just after to avoir corrupted cache entries + * + * @param string $data data to put in cache + * @return boolean true if the test is ok + * @access private + */ + function _writeAndControl($data) + { + $this->_write($data); + $dataRead = $this->_read($data); + return ($dataRead==$data); + } + + /** + * Make a control key with the string containing datas + * + * @param string $data data + * @param string $controlType type of control 'md5', 'crc32' or 'strlen' + * @return string control key + * @access private + */ + function _hash($data, $controlType) + { + switch ($controlType) { + case 'md5': + return md5($data); + case 'crc32': + return sprintf('% 32d', crc32($data)); + case 'strlen': + return sprintf('% 32d', strlen($data)); + default: + $this->raiseError('Unknown controlType ! (available values are only \'md5\', \'crc32\', \'strlen\')', -5); + } + } + +} + +?> diff --git a/bundled-libs/Cache/Lite/Function.php b/bundled-libs/Cache/Lite/Function.php new file mode 100644 index 00000000..0ed15fb8 --- /dev/null +++ b/bundled-libs/Cache/Lite/Function.php @@ -0,0 +1,111 @@ + +* @author Fabien MARTY +*/ + +require_once(dirname(__FILE__) . '/../Lite.php'); + +class Cache_Lite_Function extends Cache_Lite +{ + + // --- Private properties --- + + /** + * Default cache group for function caching + * + * @var string $_defaultGroup + */ + var $_defaultGroup = 'Cache_Lite_Function'; + + // --- Public methods ---- + + /** + * Constructor + * + * $options is an assoc. To have a look at availables options, + * see the constructor of the Cache_Lite class in 'Cache_Lite.php' + * + * Comparing to Cache_Lite constructor, there is another option : + * $options = array( + * (...) see Cache_Lite constructor + * 'defaultGroup' => default cache group for function caching (string) + * ); + * + * @param array $options options + * @access public + */ + function Cache_Lite_Function($options = array(NULL)) + { + if (isset($options['defaultGroup'])) { + $this->_defaultGroup = $options['defaultGroup']; + } + $this->Cache_Lite($options); + } + + /** + * Calls a cacheable function or method (or not if there is already a cache for it) + * + * Arguments of this method are read with func_get_args. So it doesn't appear + * in the function definition. Synopsis : + * call('functionName', $arg1, $arg2, ...) + * (arg1, arg2... are arguments of 'functionName') + * + * @return mixed result of the function/method + * @access public + */ + function call() + { + $arguments = func_get_args(); + $id = serialize($arguments); // Generate a cache id + if (!$this->_fileNameProtection) { + $id = md5($id); + // if fileNameProtection is set to false, then the id has to be hashed + // because it's a very bad file name in most cases + } + $data = $this->get($id, $this->_defaultGroup); + if ($data !== false) { + $array = unserialize($data); + $output = $array['output']; + $result = $array['result']; + } else { + ob_start(); + ob_implicit_flush(false); + $target = array_shift($arguments); + if (strstr($target, '::')) { // classname::staticMethod + list($class, $method) = explode('::', $target); + $result = call_user_func_array(array($class, $method), $arguments); + } else if (strstr($target, '->')) { // object->method + // use a stupid name ($objet_123456789 because) of problems when the object + // name is the same as this var name + list($object_123456789, $method) = explode('->', $target); + global $$object_123456789; + $result = call_user_func_array(array($$object_123456789, $method), $arguments); + } else { // function + $result = call_user_func_array($target, $arguments); + } + $output = ob_get_contents(); + ob_end_clean(); + $array['output'] = $output; + $array['result'] = $result; + $this->save(serialize($array), $id, $this->_defaultGroup); + } + echo($output); + return $result; + } + +} + +?> diff --git a/bundled-libs/Cache/Lite/Output.php b/bundled-libs/Cache/Lite/Output.php new file mode 100644 index 00000000..97c0adc8 --- /dev/null +++ b/bundled-libs/Cache/Lite/Output.php @@ -0,0 +1,73 @@ + +*/ + +require_once(dirname(__FILE__) . '/../Lite.php'); + +class Cache_Lite_Output extends Cache_Lite +{ + + // --- Public methods --- + + /** + * Constructor + * + * $options is an assoc. To have a look at availables options, + * see the constructor of the Cache_Lite class in 'Cache_Lite.php' + * + * @param array $options options + * @access public + */ + function Cache_Lite_Output($options) + { + $this->Cache_Lite($options); + } + + /** + * Start the cache + * + * @param string $id cache id + * @param string $group name of the cache group + * @param boolean $doNotTestCacheValidity if set to true, the cache validity won't be tested + * @return boolean true if the cache is hit (false else) + * @access public + */ + function start($id, $group = 'default', $doNotTestCacheValidity = false) + { + $data = $this->get($id, $group, $doNotTestCacheValidity); + if ($data !== false) { + echo($data); + return true; + } else { + ob_start(); + ob_implicit_flush(false); + return false; + } + } + + /** + * Stop the cache + * + * @access public + */ + function end() + { + $data = ob_get_contents(); + ob_end_clean(); + $this->save($data, $this->_id, $this->_group); + echo($data); + } + +} + + +?> diff --git a/bundled-libs/HTTP/BUNDLE_NOTICE b/bundled-libs/HTTP/BUNDLE_NOTICE new file mode 100644 index 00000000..c4e2445a --- /dev/null +++ b/bundled-libs/HTTP/BUNDLE_NOTICE @@ -0,0 +1,10 @@ +- Replace: +Request.php: +require_once('PEAR.php'); +require_once(dirname(__FILE__) . '/../PEAR.php'); + +require_once('Net/Socket.php'); +require_once(dirname(__FILE__) . '/../Net/Socket.php'); + +require_once('Net/URL.php'); +require_once(dirname(__FILE__) . '/../Net/URL.php'); \ No newline at end of file diff --git a/bundled-libs/HTTP/Request.php b/bundled-libs/HTTP/Request.php new file mode 100644 index 00000000..7db3634d --- /dev/null +++ b/bundled-libs/HTTP/Request.php @@ -0,0 +1,1191 @@ + | +// +-----------------------------------------------------------------------+ +// +// $Id: Request.php,v 1.43 2005/11/06 18:29:14 avb Exp $ +// +// HTTP_Request Class +// +// Simple example, (Fetches yahoo.com and displays it): +// +// $a = &new HTTP_Request('http://www.yahoo.com/'); +// $a->sendRequest(); +// echo $a->getResponseBody(); +// + +require_once(dirname(__FILE__) . '/../PEAR.php'); +require_once(dirname(__FILE__) . '/../Net/Socket.php'); +require_once(dirname(__FILE__) . '/../Net/URL.php'); + +define('HTTP_REQUEST_METHOD_GET', 'GET', true); +define('HTTP_REQUEST_METHOD_HEAD', 'HEAD', true); +define('HTTP_REQUEST_METHOD_POST', 'POST', true); +define('HTTP_REQUEST_METHOD_PUT', 'PUT', true); +define('HTTP_REQUEST_METHOD_DELETE', 'DELETE', true); +define('HTTP_REQUEST_METHOD_OPTIONS', 'OPTIONS', true); +define('HTTP_REQUEST_METHOD_TRACE', 'TRACE', true); + +define('HTTP_REQUEST_HTTP_VER_1_0', '1.0', true); +define('HTTP_REQUEST_HTTP_VER_1_1', '1.1', true); + +class HTTP_Request { + + /** + * Instance of Net_URL + * @var object Net_URL + */ + var $_url; + + /** + * Type of request + * @var string + */ + var $_method; + + /** + * HTTP Version + * @var string + */ + var $_http; + + /** + * Request headers + * @var array + */ + var $_requestHeaders; + + /** + * Basic Auth Username + * @var string + */ + var $_user; + + /** + * Basic Auth Password + * @var string + */ + var $_pass; + + /** + * Socket object + * @var object Net_Socket + */ + var $_sock; + + /** + * Proxy server + * @var string + */ + var $_proxy_host; + + /** + * Proxy port + * @var integer + */ + var $_proxy_port; + + /** + * Proxy username + * @var string + */ + var $_proxy_user; + + /** + * Proxy password + * @var string + */ + var $_proxy_pass; + + /** + * Post data + * @var array + */ + var $_postData; + + /** + * Request body + * @var string + */ + var $_body; + + /** + * A list of methods that MUST NOT have a request body, per RFC 2616 + * @var array + */ + var $_bodyDisallowed = array('TRACE'); + + /** + * Files to post + * @var array + */ + var $_postFiles = array(); + + /** + * Connection timeout. + * @var float + */ + var $_timeout; + + /** + * HTTP_Response object + * @var object HTTP_Response + */ + var $_response; + + /** + * Whether to allow redirects + * @var boolean + */ + var $_allowRedirects; + + /** + * Maximum redirects allowed + * @var integer + */ + var $_maxRedirects; + + /** + * Current number of redirects + * @var integer + */ + var $_redirects; + + /** + * Whether to append brackets [] to array variables + * @var bool + */ + var $_useBrackets = true; + + /** + * Attached listeners + * @var array + */ + var $_listeners = array(); + + /** + * Whether to save response body in response object property + * @var bool + */ + var $_saveBody = true; + + /** + * Timeout for reading from socket (array(seconds, microseconds)) + * @var array + */ + var $_readTimeout = null; + + /** + * Options to pass to Net_Socket::connect. See stream_context_create + * @var array + */ + var $_socketOptions = null; + + /** + * Constructor + * + * Sets up the object + * @param string The url to fetch/access + * @param array Associative array of parameters which can have the following keys: + *
    + *
  • method - Method to use, GET, POST etc (string)
  • + *
  • http - HTTP Version to use, 1.0 or 1.1 (string)
  • + *
  • user - Basic Auth username (string)
  • + *
  • pass - Basic Auth password (string)
  • + *
  • proxy_host - Proxy server host (string)
  • + *
  • proxy_port - Proxy server port (integer)
  • + *
  • proxy_user - Proxy auth username (string)
  • + *
  • proxy_pass - Proxy auth password (string)
  • + *
  • timeout - Connection timeout in seconds (float)
  • + *
  • allowRedirects - Whether to follow redirects or not (bool)
  • + *
  • maxRedirects - Max number of redirects to follow (integer)
  • + *
  • useBrackets - Whether to append [] to array variable names (bool)
  • + *
  • saveBody - Whether to save response body in response object property (bool)
  • + *
  • readTimeout - Timeout for reading / writing data over the socket (array (seconds, microseconds))
  • + *
  • socketOptions - Options to pass to Net_Socket object (array)
  • + *
+ * @access public + */ + function HTTP_Request($url = '', $params = array()) + { + $this->_sock = &new Net_Socket(); + $this->_method = HTTP_REQUEST_METHOD_GET; + $this->_http = HTTP_REQUEST_HTTP_VER_1_1; + $this->_requestHeaders = array(); + $this->_postData = array(); + $this->_body = null; + + $this->_user = null; + $this->_pass = null; + + $this->_proxy_host = null; + $this->_proxy_port = null; + $this->_proxy_user = null; + $this->_proxy_pass = null; + + $this->_allowRedirects = false; + $this->_maxRedirects = 3; + $this->_redirects = 0; + + $this->_timeout = null; + $this->_response = null; + + foreach ($params as $key => $value) { + $this->{'_' . $key} = $value; + } + + if (!empty($url)) { + $this->setURL($url); + } + + // Default useragent + $this->addHeader('User-Agent', 'PEAR HTTP_Request class ( http://pear.php.net/ )'); + + // Make sure keepalives dont knobble us + $this->addHeader('Connection', 'close'); + + // Basic authentication + if (!empty($this->_user)) { + $this->addHeader('Authorization', 'Basic ' . base64_encode($this->_user . ':' . $this->_pass)); + } + + // Use gzip encoding if possible + // Avoid gzip encoding if using multibyte functions (see #1781) + if (HTTP_REQUEST_HTTP_VER_1_1 == $this->_http && extension_loaded('zlib') && + 0 == (2 & ini_get('mbstring.func_overload'))) { + + $this->addHeader('Accept-Encoding', 'gzip'); + } + } + + /** + * Generates a Host header for HTTP/1.1 requests + * + * @access private + * @return string + */ + function _generateHostHeader() + { + if ($this->_url->port != 80 AND strcasecmp($this->_url->protocol, 'http') == 0) { + $host = $this->_url->host . ':' . $this->_url->port; + + } elseif ($this->_url->port != 443 AND strcasecmp($this->_url->protocol, 'https') == 0) { + $host = $this->_url->host . ':' . $this->_url->port; + + } elseif ($this->_url->port == 443 AND strcasecmp($this->_url->protocol, 'https') == 0 AND strpos($this->_url->url, ':443') !== false) { + $host = $this->_url->host . ':' . $this->_url->port; + + } else { + $host = $this->_url->host; + } + + return $host; + } + + /** + * Resets the object to its initial state (DEPRECATED). + * Takes the same parameters as the constructor. + * + * @param string $url The url to be requested + * @param array $params Associative array of parameters + * (see constructor for details) + * @access public + * @deprecated deprecated since 1.2, call the constructor if this is necessary + */ + function reset($url, $params = array()) + { + $this->HTTP_Request($url, $params); + } + + /** + * Sets the URL to be requested + * + * @param string The url to be requested + * @access public + */ + function setURL($url) + { + $this->_url = &new Net_URL($url, $this->_useBrackets); + + if (!empty($this->_url->user) || !empty($this->_url->pass)) { + $this->setBasicAuth($this->_url->user, $this->_url->pass); + } + + if (HTTP_REQUEST_HTTP_VER_1_1 == $this->_http) { + $this->addHeader('Host', $this->_generateHostHeader()); + } + } + + /** + * Sets a proxy to be used + * + * @param string Proxy host + * @param int Proxy port + * @param string Proxy username + * @param string Proxy password + * @access public + */ + function setProxy($host, $port = 8080, $user = null, $pass = null) + { + $this->_proxy_host = $host; + $this->_proxy_port = $port; + $this->_proxy_user = $user; + $this->_proxy_pass = $pass; + + if (!empty($user)) { + $this->addHeader('Proxy-Authorization', 'Basic ' . base64_encode($user . ':' . $pass)); + } + } + + /** + * Sets basic authentication parameters + * + * @param string Username + * @param string Password + */ + function setBasicAuth($user, $pass) + { + $this->_user = $user; + $this->_pass = $pass; + + $this->addHeader('Authorization', 'Basic ' . base64_encode($user . ':' . $pass)); + } + + /** + * Sets the method to be used, GET, POST etc. + * + * @param string Method to use. Use the defined constants for this + * @access public + */ + function setMethod($method) + { + $this->_method = $method; + } + + /** + * Sets the HTTP version to use, 1.0 or 1.1 + * + * @param string Version to use. Use the defined constants for this + * @access public + */ + function setHttpVer($http) + { + $this->_http = $http; + } + + /** + * Adds a request header + * + * @param string Header name + * @param string Header value + * @access public + */ + function addHeader($name, $value) + { + $this->_requestHeaders[strtolower($name)] = $value; + } + + /** + * Removes a request header + * + * @param string Header name to remove + * @access public + */ + function removeHeader($name) + { + if (isset($this->_requestHeaders[strtolower($name)])) { + unset($this->_requestHeaders[strtolower($name)]); + } + } + + /** + * Adds a querystring parameter + * + * @param string Querystring parameter name + * @param string Querystring parameter value + * @param bool Whether the value is already urlencoded or not, default = not + * @access public + */ + function addQueryString($name, $value, $preencoded = false) + { + $this->_url->addQueryString($name, $value, $preencoded); + } + + /** + * Sets the querystring to literally what you supply + * + * @param string The querystring data. Should be of the format foo=bar&x=y etc + * @param bool Whether data is already urlencoded or not, default = already encoded + * @access public + */ + function addRawQueryString($querystring, $preencoded = true) + { + $this->_url->addRawQueryString($querystring, $preencoded); + } + + /** + * Adds postdata items + * + * @param string Post data name + * @param string Post data value + * @param bool Whether data is already urlencoded or not, default = not + * @access public + */ + function addPostData($name, $value, $preencoded = false) + { + if ($preencoded) { + $this->_postData[$name] = $value; + } else { + $this->_postData[$name] = $this->_arrayMapRecursive('urlencode', $value); + } + } + + /** + * Recursively applies the callback function to the value + * + * @param mixed Callback function + * @param mixed Value to process + * @access private + * @return mixed Processed value + */ + function _arrayMapRecursive($callback, $value) + { + if (!is_array($value)) { + return call_user_func($callback, $value); + } else { + $map = array(); + foreach ($value as $k => $v) { + $map[$k] = $this->_arrayMapRecursive($callback, $v); + } + return $map; + } + } + + /** + * Adds a file to upload + * + * This also changes content-type to 'multipart/form-data' for proper upload + * + * @access public + * @param string name of file-upload field + * @param mixed file name(s) + * @param mixed content-type(s) of file(s) being uploaded + * @return bool true on success + * @throws PEAR_Error + */ + function addFile($inputName, $fileName, $contentType = 'application/octet-stream') + { + if (!is_array($fileName) && !is_readable($fileName)) { + return PEAR::raiseError("File '{$fileName}' is not readable"); + } elseif (is_array($fileName)) { + foreach ($fileName as $name) { + if (!is_readable($name)) { + return PEAR::raiseError("File '{$name}' is not readable"); + } + } + } + $this->addHeader('Content-Type', 'multipart/form-data'); + $this->_postFiles[$inputName] = array( + 'name' => $fileName, + 'type' => $contentType + ); + return true; + } + + /** + * Adds raw postdata (DEPRECATED) + * + * @param string The data + * @param bool Whether data is preencoded or not, default = already encoded + * @access public + * @deprecated deprecated since 1.3.0, method addBody() should be used instead + */ + function addRawPostData($postdata, $preencoded = true) + { + $this->_body = $preencoded ? $postdata : urlencode($postdata); + } + + /** + * Sets the request body (for POST, PUT and similar requests) + * + * @param string Request body + * @access public + */ + function setBody($body) + { + $this->_body = $body; + } + + /** + * Clears any postdata that has been added (DEPRECATED). + * + * Useful for multiple request scenarios. + * + * @access public + * @deprecated deprecated since 1.2 + */ + function clearPostData() + { + $this->_postData = null; + } + + /** + * Appends a cookie to "Cookie:" header + * + * @param string $name cookie name + * @param string $value cookie value + * @access public + */ + function addCookie($name, $value) + { + $cookies = isset($this->_requestHeaders['cookie']) ? $this->_requestHeaders['cookie']. '; ' : ''; + $this->addHeader('Cookie', $cookies . $name . '=' . $value); + } + + /** + * Clears any cookies that have been added (DEPRECATED). + * + * Useful for multiple request scenarios + * + * @access public + * @deprecated deprecated since 1.2 + */ + function clearCookies() + { + $this->removeHeader('Cookie'); + } + + /** + * Sends the request + * + * @access public + * @param bool Whether to store response body in Response object property, + * set this to false if downloading a LARGE file and using a Listener + * @return mixed PEAR error on error, true otherwise + */ + function sendRequest($saveBody = true) + { + if (!is_a($this->_url, 'Net_URL')) { + return PEAR::raiseError('No URL given.'); + } + + $host = isset($this->_proxy_host) ? $this->_proxy_host : $this->_url->host; + $port = isset($this->_proxy_port) ? $this->_proxy_port : $this->_url->port; + + // 4.3.0 supports SSL connections using OpenSSL. The function test determines + // we running on at least 4.3.0 + if (strcasecmp($this->_url->protocol, 'https') == 0 AND function_exists('file_get_contents') AND extension_loaded('openssl')) { + if (isset($this->_proxy_host)) { + return PEAR::raiseError('HTTPS proxies are not supported.'); + } + $host = 'ssl://' . $host; + } + + // magic quotes may fuck up file uploads and chunked response processing + $magicQuotes = ini_get('magic_quotes_runtime'); + ini_set('magic_quotes_runtime', false); + + // If this is a second request, we may get away without + // re-connecting if they're on the same server + $err = $this->_sock->connect($host, $port, null, $this->_timeout, $this->_socketOptions); + PEAR::isError($err) or $err = $this->_sock->write($this->_buildRequest()); + + if (!PEAR::isError($err)) { + if (!empty($this->_readTimeout)) { + $this->_sock->setTimeout($this->_readTimeout[0], $this->_readTimeout[1]); + } + + $this->_notify('sentRequest'); + + // Read the response + $this->_response = &new HTTP_Response($this->_sock, $this->_listeners); + $err = $this->_response->process($this->_saveBody && $saveBody); + } + + ini_set('magic_quotes_runtime', $magicQuotes); + + if (PEAR::isError($err)) { + return $err; + } + + + // Check for redirection + if ( $this->_allowRedirects + AND $this->_redirects <= $this->_maxRedirects + AND $this->getResponseCode() > 300 + AND $this->getResponseCode() < 399 + AND !empty($this->_response->_headers['location'])) { + + + $redirect = $this->_response->_headers['location']; + + // Absolute URL + if (preg_match('/^https?:\/\//i', $redirect)) { + $this->_url = &new Net_URL($redirect); + $this->addHeader('Host', $this->_generateHostHeader()); + // Absolute path + } elseif ($redirect{0} == '/') { + $this->_url->path = $redirect; + + // Relative path + } elseif (substr($redirect, 0, 3) == '../' OR substr($redirect, 0, 2) == './') { + if (substr($this->_url->path, -1) == '/') { + $redirect = $this->_url->path . $redirect; + } else { + $redirect = dirname($this->_url->path) . '/' . $redirect; + } + $redirect = Net_URL::resolvePath($redirect); + $this->_url->path = $redirect; + + // Filename, no path + } else { + if (substr($this->_url->path, -1) == '/') { + $redirect = $this->_url->path . $redirect; + } else { + $redirect = dirname($this->_url->path) . '/' . $redirect; + } + $this->_url->path = $redirect; + } + + $this->_redirects++; + return $this->sendRequest($saveBody); + + // Too many redirects + } elseif ($this->_allowRedirects AND $this->_redirects > $this->_maxRedirects) { + return PEAR::raiseError('Too many redirects'); + } + + $this->_sock->disconnect(); + + return true; + } + + /** + * Returns the response code + * + * @access public + * @return mixed Response code, false if not set + */ + function getResponseCode() + { + return isset($this->_response->_code) ? $this->_response->_code : false; + } + + /** + * Returns either the named header or all if no name given + * + * @access public + * @param string The header name to return, do not set to get all headers + * @return mixed either the value of $headername (false if header is not present) + * or an array of all headers + */ + function getResponseHeader($headername = null) + { + if (!isset($headername)) { + return isset($this->_response->_headers)? $this->_response->_headers: array(); + } else { + $headername = strtolower($headername); + return isset($this->_response->_headers[$headername]) ? $this->_response->_headers[$headername] : false; + } + } + + /** + * Returns the body of the response + * + * @access public + * @return mixed response body, false if not set + */ + function getResponseBody() + { + return isset($this->_response->_body) ? $this->_response->_body : false; + } + + /** + * Returns cookies set in response + * + * @access public + * @return mixed array of response cookies, false if none are present + */ + function getResponseCookies() + { + return isset($this->_response->_cookies) ? $this->_response->_cookies : false; + } + + /** + * Builds the request string + * + * @access private + * @return string The request string + */ + function _buildRequest() + { + $separator = ini_get('arg_separator.output'); + ini_set('arg_separator.output', '&'); + $querystring = ($querystring = $this->_url->getQueryString()) ? '?' . $querystring : ''; + ini_set('arg_separator.output', $separator); + + $host = isset($this->_proxy_host) ? $this->_url->protocol . '://' . $this->_url->host : ''; + $port = (isset($this->_proxy_host) AND $this->_url->port != 80) ? ':' . $this->_url->port : ''; + $path = (empty($this->_url->path)? '/': $this->_url->path) . $querystring; + $url = $host . $port . $path; + + $request = $this->_method . ' ' . $url . ' HTTP/' . $this->_http . "\r\n"; + + if (in_array($this->_method, $this->_bodyDisallowed) || + (HTTP_REQUEST_METHOD_POST != $this->_method && empty($this->_body)) || + (HTTP_REQUEST_METHOD_POST != $this->_method && empty($this->_postData) && empty($this->_postFiles))) { + + $this->removeHeader('Content-Type'); + } else { + if (empty($this->_requestHeaders['content-type'])) { + // Add default content-type + $this->addHeader('Content-Type', 'application/x-www-form-urlencoded'); + } elseif ('multipart/form-data' == $this->_requestHeaders['content-type']) { + $boundary = 'HTTP_Request_' . md5(uniqid('request') . microtime()); + $this->addHeader('Content-Type', 'multipart/form-data; boundary=' . $boundary); + } + } + + // Request Headers + if (!empty($this->_requestHeaders)) { + foreach ($this->_requestHeaders as $name => $value) { + $canonicalName = implode('-', array_map('ucfirst', explode('-', $name))); + $request .= $canonicalName . ': ' . $value . "\r\n"; + } + } + + // No post data or wrong method, so simply add a final CRLF + if (in_array($this->_method, $this->_bodyDisallowed) || + (HTTP_REQUEST_METHOD_POST != $this->_method && empty($this->_body))) { + + $request .= "\r\n"; + + // Post data if it's an array + } elseif (HTTP_REQUEST_METHOD_POST == $this->_method && + (!empty($this->_postData) || !empty($this->_postFiles))) { + + // "normal" POST request + if (!isset($boundary)) { + $postdata = implode('&', array_map( + create_function('$a', 'return $a[0] . \'=\' . $a[1];'), + $this->_flattenArray('', $this->_postData) + )); + + // multipart request, probably with file uploads + } else { + $postdata = ''; + if (!empty($this->_postData)) { + $flatData = $this->_flattenArray('', $this->_postData); + foreach ($flatData as $item) { + $postdata .= '--' . $boundary . "\r\n"; + $postdata .= 'Content-Disposition: form-data; name="' . $item[0] . '"'; + $postdata .= "\r\n\r\n" . urldecode($item[1]) . "\r\n"; + } + } + foreach ($this->_postFiles as $name => $value) { + if (is_array($value['name'])) { + $varname = $name . ($this->_useBrackets? '[]': ''); + } else { + $varname = $name; + $value['name'] = array($value['name']); + } + foreach ($value['name'] as $key => $filename) { + $fp = fopen($filename, 'r'); + $data = fread($fp, filesize($filename)); + fclose($fp); + $basename = basename($filename); + $type = is_array($value['type'])? @$value['type'][$key]: $value['type']; + + $postdata .= '--' . $boundary . "\r\n"; + $postdata .= 'Content-Disposition: form-data; name="' . $varname . '"; filename="' . $basename . '"'; + $postdata .= "\r\nContent-Type: " . $type; + $postdata .= "\r\n\r\n" . $data . "\r\n"; + } + } + $postdata .= '--' . $boundary . "--\r\n"; + } + $request .= 'Content-Length: ' . strlen($postdata) . "\r\n\r\n"; + $request .= $postdata; + + // Explicitly set request body + } elseif (!empty($this->_body)) { + + $request .= 'Content-Length: ' . strlen($this->_body) . "\r\n\r\n"; + $request .= $this->_body; + } + + return $request; + } + + /** + * Helper function to change the (probably multidimensional) associative array + * into the simple one. + * + * @param string name for item + * @param mixed item's values + * @return array array with the following items: array('item name', 'item value'); + */ + function _flattenArray($name, $values) + { + if (!is_array($values)) { + return array(array($name, $values)); + } else { + $ret = array(); + foreach ($values as $k => $v) { + if (empty($name)) { + $newName = $k; + } elseif ($this->_useBrackets) { + $newName = $name . '[' . $k . ']'; + } else { + $newName = $name; + } + $ret = array_merge($ret, $this->_flattenArray($newName, $v)); + } + return $ret; + } + } + + + /** + * Adds a Listener to the list of listeners that are notified of + * the object's events + * + * @param object HTTP_Request_Listener instance to attach + * @return boolean whether the listener was successfully attached + * @access public + */ + function attach(&$listener) + { + if (!is_a($listener, 'HTTP_Request_Listener')) { + return false; + } + $this->_listeners[$listener->getId()] =& $listener; + return true; + } + + + /** + * Removes a Listener from the list of listeners + * + * @param object HTTP_Request_Listener instance to detach + * @return boolean whether the listener was successfully detached + * @access public + */ + function detach(&$listener) + { + if (!is_a($listener, 'HTTP_Request_Listener') || + !isset($this->_listeners[$listener->getId()])) { + return false; + } + unset($this->_listeners[$listener->getId()]); + return true; + } + + + /** + * Notifies all registered listeners of an event. + * + * Events sent by HTTP_Request object + * 'sentRequest': after the request was sent + * Events sent by HTTP_Response object + * 'gotHeaders': after receiving response headers (headers are passed in $data) + * 'tick': on receiving a part of response body (the part is passed in $data) + * 'gzTick': on receiving a gzip-encoded part of response body (ditto) + * 'gotBody': after receiving the response body (passes the decoded body in $data if it was gzipped) + * + * @param string Event name + * @param mixed Additional data + * @access private + */ + function _notify($event, $data = null) + { + foreach (array_keys($this->_listeners) as $id) { + $this->_listeners[$id]->update($this, $event, $data); + } + } +} + + +/** +* Response class to complement the Request class +*/ +class HTTP_Response +{ + /** + * Socket object + * @var object + */ + var $_sock; + + /** + * Protocol + * @var string + */ + var $_protocol; + + /** + * Return code + * @var string + */ + var $_code; + + /** + * Response headers + * @var array + */ + var $_headers; + + /** + * Cookies set in response + * @var array + */ + var $_cookies; + + /** + * Response body + * @var string + */ + var $_body = ''; + + /** + * Used by _readChunked(): remaining length of the current chunk + * @var string + */ + var $_chunkLength = 0; + + /** + * Attached listeners + * @var array + */ + var $_listeners = array(); + + /** + * Constructor + * + * @param object Net_Socket socket to read the response from + * @param array listeners attached to request + * @return mixed PEAR Error on error, true otherwise + */ + function HTTP_Response(&$sock, &$listeners) + { + $this->_sock =& $sock; + $this->_listeners =& $listeners; + } + + + /** + * Processes a HTTP response + * + * This extracts response code, headers, cookies and decodes body if it + * was encoded in some way + * + * @access public + * @param bool Whether to store response body in object property, set + * this to false if downloading a LARGE file and using a Listener. + * This is assumed to be true if body is gzip-encoded. + * @throws PEAR_Error + * @return mixed true on success, PEAR_Error in case of malformed response + */ + function process($saveBody = true) + { + do { + $line = $this->_sock->readLine(); + if (sscanf($line, 'HTTP/%s %s', $http_version, $returncode) != 2) { + return PEAR::raiseError('Malformed response.'); + } else { + $this->_protocol = 'HTTP/' . $http_version; + $this->_code = intval($returncode); + } + while ('' !== ($header = $this->_sock->readLine())) { + $this->_processHeader($header); + } + } while (100 == $this->_code); + + $this->_notify('gotHeaders', $this->_headers); + + // If response body is present, read it and decode + $chunked = isset($this->_headers['transfer-encoding']) && ('chunked' == $this->_headers['transfer-encoding']); + $gzipped = isset($this->_headers['content-encoding']) && ('gzip' == $this->_headers['content-encoding']); + $hasBody = false; + if (!isset($this->_headers['content-length']) || 0 != $this->_headers['content-length']) { + while (!$this->_sock->eof()) { + if ($chunked) { + $data = $this->_readChunked(); + } else { + $data = $this->_sock->read(4096); + } + if ('' == $data) { + break; + } else { + $hasBody = true; + if ($saveBody || $gzipped) { + $this->_body .= $data; + } + $this->_notify($gzipped? 'gzTick': 'tick', $data); + } + } + } + if ($hasBody) { + // Uncompress the body if needed + if ($gzipped) { + $this->_body = gzinflate(substr($this->_body, 10)); + $this->_notify('gotBody', $this->_body); + } else { + $this->_notify('gotBody'); + } + } + return true; + } + + + /** + * Processes the response header + * + * @access private + * @param string HTTP header + */ + function _processHeader($header) + { + list($headername, $headervalue) = explode(':', $header, 2); + $headername = strtolower($headername); + $headervalue = ltrim($headervalue); + + if ('set-cookie' != $headername) { + if (isset($this->_headers[$headername])) { + $this->_headers[$headername] .= ',' . $headervalue; + } else { + $this->_headers[$headername] = $headervalue; + } + } else { + $this->_parseCookie($headervalue); + } + } + + + /** + * Parse a Set-Cookie header to fill $_cookies array + * + * @access private + * @param string value of Set-Cookie header + */ + function _parseCookie($headervalue) + { + $cookie = array( + 'expires' => null, + 'domain' => null, + 'path' => null, + 'secure' => false + ); + + // Only a name=value pair + if (!strpos($headervalue, ';')) { + $pos = strpos($headervalue, '='); + $cookie['name'] = trim(substr($headervalue, 0, $pos)); + $cookie['value'] = trim(substr($headervalue, $pos + 1)); + + // Some optional parameters are supplied + } else { + $elements = explode(';', $headervalue); + $pos = strpos($elements[0], '='); + $cookie['name'] = trim(substr($elements[0], 0, $pos)); + $cookie['value'] = trim(substr($elements[0], $pos + 1)); + + for ($i = 1; $i < count($elements); $i++) { + if (false === strpos($elements[$i], '=')) { + $elName = trim($elements[$i]); + $elValue = null; + } else { + list ($elName, $elValue) = array_map('trim', explode('=', $elements[$i])); + } + $elName = strtolower($elName); + if ('secure' == $elName) { + $cookie['secure'] = true; + } elseif ('expires' == $elName) { + $cookie['expires'] = str_replace('"', '', $elValue); + } elseif ('path' == $elName || 'domain' == $elName) { + $cookie[$elName] = urldecode($elValue); + } else { + $cookie[$elName] = $elValue; + } + } + } + $this->_cookies[] = $cookie; + } + + + /** + * Read a part of response body encoded with chunked Transfer-Encoding + * + * @access private + * @return string + */ + function _readChunked() + { + // at start of the next chunk? + if (0 == $this->_chunkLength) { + $line = $this->_sock->readLine(); + if (preg_match('/^([0-9a-f]+)/i', $line, $matches)) { + $this->_chunkLength = hexdec($matches[1]); + // Chunk with zero length indicates the end + if (0 == $this->_chunkLength) { + $this->_sock->readLine(); // make this an eof() + return ''; + } + } else { + return ''; + } + } + $data = $this->_sock->read($this->_chunkLength); + $this->_chunkLength -= strlen($data); + if (0 == $this->_chunkLength) { + $this->_sock->readLine(); // Trailing CRLF + } + return $data; + } + + + /** + * Notifies all registered listeners of an event. + * + * @param string Event name + * @param mixed Additional data + * @access private + * @see HTTP_Request::_notify() + */ + function _notify($event, $data = null) + { + foreach (array_keys($this->_listeners) as $id) { + $this->_listeners[$id]->update($this, $event, $data); + } + } +} // End class HTTP_Response +?> diff --git a/bundled-libs/HTTP/Request/Listener.php b/bundled-libs/HTTP/Request/Listener.php new file mode 100644 index 00000000..38b115a6 --- /dev/null +++ b/bundled-libs/HTTP/Request/Listener.php @@ -0,0 +1,96 @@ + | +// +-----------------------------------------------------------------------+ +// +// $Id: Listener.php,v 1.2 2003/10/26 10:28:29 avb Exp $ +// + +/** + * This class implements the Observer part of a Subject-Observer + * design pattern. It listens to the events sent by a + * HTTP_Request or HTTP_Response instance. + * + * @package HTTP_Request + * @author Alexey Borzov + * @version $Revision: 1.2 $ + */ +class HTTP_Request_Listener +{ + /** + * A listener's identifier + * @var string + */ + var $_id; + + /** + * Constructor, sets the object's identifier + * + * @access public + */ + function HTTP_Request_Listener() + { + $this->_id = md5(uniqid('http_request_', 1)); + } + + + /** + * Returns the listener's identifier + * + * @access public + * @return string + */ + function getId() + { + return $this->_id; + } + + + /** + * This method is called when Listener is notified of an event + * + * @access public + * @param object an object the listener is attached to + * @param string Event name + * @param mixed Additional data + * @abstract + */ + function update(&$subject, $event, $data = null) + { + echo "Notified of event: '$event'\n"; + if (null !== $data) { + echo "Additional data: "; + var_dump($data); + } + } +} +?> diff --git a/bundled-libs/Net/BUNDLE_NOTICE b/bundled-libs/Net/BUNDLE_NOTICE new file mode 100644 index 00000000..e4157ae2 --- /dev/null +++ b/bundled-libs/Net/BUNDLE_NOTICE @@ -0,0 +1,9 @@ +- Replace: +DNSBL.php +require_once 'Net/CheckIP.php'; +require_once dirname(__FILE__) . '/CheckIP.php'; + +Socket.php +require_once('PEAR.php'); +require_once(dirname(__FILE__) . '/../PEAR.php'); + diff --git a/bundled-libs/Net/CheckIP.php b/bundled-libs/Net/CheckIP.php new file mode 100644 index 00000000..b0fbc73e --- /dev/null +++ b/bundled-libs/Net/CheckIP.php @@ -0,0 +1,75 @@ + | +// | Guido Haeger | +// +----------------------------------------------------------------------+ +// +// $Id: CheckIP.php,v 1.5 2002/08/17 09:41:24 mj Exp $ + +/** +* Class to validate the syntax of IPv4 adresses +* +* Usage: +* +* +* @author Martin Jansen +* @author Guido Haeger +* @package Net_CheckIP +* @version 1.1 +* @access public +*/ +class Net_CheckIP +{ + + /** + * Validate the syntax of the given IP adress + * + * This function splits the IP address in 4 pieces + * (separated by ".") and checks for each piece + * if it's an integer value between 0 and 255. + * If all 4 parameters pass this test, the function + * returns true. + * + * @param string $ip IP adress + * @return bool true if syntax is valid, otherwise false + */ + function check_ip($ip) + { + $oct = explode('.', $ip); + if (count($oct) != 4) { + return false; + } + + for ($i = 0; $i < 4; $i++) { + if (!is_numeric($oct[$i])) { + return false; + } + + if ($oct[$i] < 0 || $oct[$i] > 255) { + return false; + } + } + + return true; + } +} +?> diff --git a/bundled-libs/Net/DNSBL.php b/bundled-libs/Net/DNSBL.php new file mode 100644 index 00000000..3091dab3 --- /dev/null +++ b/bundled-libs/Net/DNSBL.php @@ -0,0 +1,153 @@ + | +// +----------------------------------------------------------------------+ +// | 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. | +// +----------------------------------------------------------------------+ +// | Authors: Sebastian Nohn | +// +----------------------------------------------------------------------+ +// +// $Id: DNSBL.php,v 1.4 2004/12/02 14:23:51 nohn Exp $ + +/** + * PEAR::Net_DNSBL + * + * This class acts as interface to generic Realtime Blocking Lists + * (RBL) + * + * Net_RBL looks up an supplied host if it's listed in 1-n supplied + * Blacklists + * + * @author Sebastian Nohn + * @package Net_DNSBL + * @license http://www.php.net/license/3_0.txt + * @version 0.5.3 + */ +require_once dirname(__FILE__) . '/CheckIP.php'; + +class Net_DNSBL { + + /** + * Array of blacklists. + * + * Must have one or more elements. + * + * @var array + * @access protected + */ + var $blacklists = array('sbl-xbl.spamhaus.net', + 'bl.spamcop.net'); + + /** + * Set the blacklist to a desired blacklist. + * + * @param array Array of blacklists to use. May contain only one element. + * @access public + * @return bool true if the operation was successful + */ + function setBlacklists($blacklists) + { + if (is_array($blacklists)) { + $this->blacklists = $blacklists; + return true; + } else { + return false; + } // if + } // function + + /** + * Get the blacklists. + * + * @access public + * @return array Currently set blacklists. + */ + function getBlacklists() + { + return $this->blacklists; + } + + /** + * Checks if the supplied Host is listed in one or more of the + * RBLs. + * + * @param string Host to check for being listed. + * @access public + * @return boolean true if the checked host is listed in a blacklist. + */ + function isListed($host) + { + + $isListed = false; + + foreach ($this->blacklists as $blacklist) { + $result = gethostbyname($this->getHostForLookup($host, $blacklist)); + if ($result != $this->getHostForLookup($host, $blacklist)) { + $isListed = true; + + //if the Host was listed we don't need to check other RBLs, + break; + + } // if + } // foreach + + return $isListed; + } // function + + /** + * Get host to lookup. Lookup a host if neccessary and get the + * complete FQDN to lookup. + * + * @param string Host OR IP to use for building the lookup. + * @param string Blacklist to use for building the lookup. + * @access protected + * @return string Ready to use host to lookup + */ + function getHostForLookup($host, $blacklist) + { + // Currently only works for v4 addresses. + if (!Net_CheckIP::check_ip($host)) { + $ip = gethostbyname($host); + } else { + $ip = $host; + } + + return $this->buildLookUpHost($ip, $blacklist); + } // function + + /** + * Build the host to lookup from an IP. + * + * @param string IP to use for building the lookup. + * @param string Blacklist to use for building the lookup. + * @access protected + * @return string Ready to use host to lookup + */ + function buildLookUpHost($ip, $blacklist) + { + return $this->reverseIp($ip).'.'.$blacklist; + } // function + + /** + * Reverse the order of an IP. 127.0.0.1 -> 1.0.0.127. Currently + * only works for v4-adresses + * + * @param string IP to reverse. + * @access protected + * @return string Reversed IP + */ + function reverseIp($ip) + { + return implode('.', array_reverse(explode('.', $ip))); + } // function + +} // class +?> \ No newline at end of file diff --git a/bundled-libs/Net/DNSBL/BUNDLE_NOTICE b/bundled-libs/Net/DNSBL/BUNDLE_NOTICE new file mode 100644 index 00000000..b175048f --- /dev/null +++ b/bundled-libs/Net/DNSBL/BUNDLE_NOTICE @@ -0,0 +1,13 @@ +- Replace: +SURBL.php +require_once 'Cache/Lite.php'; +require_once dirname(__FILE__) . '/../../Cache/Lite.php'; + +require_once 'HTTP/Request.php'; +require_once dirname(__FILE__) . '/../../HTTP/Request.php'; + +require_once 'Net/CheckIP.php'; +require_once dirname(__FILE__) . '/../CheckIP.php'; + +require_once 'Net/DNSBL.php'; +require_once dirname(__FILE__) . '/../DNSBL.php'; \ No newline at end of file diff --git a/bundled-libs/Net/DNSBL/SURBL.php b/bundled-libs/Net/DNSBL/SURBL.php new file mode 100644 index 00000000..9ffd7866 --- /dev/null +++ b/bundled-libs/Net/DNSBL/SURBL.php @@ -0,0 +1,164 @@ + | +// +----------------------------------------------------------------------+ +// | 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. | +// +----------------------------------------------------------------------+ +// | Authors: Sebastian Nohn | +// +----------------------------------------------------------------------+ +// +// $Id: SURBL.php,v 1.4 2004/12/02 14:23:51 nohn Exp $ + +/** + * PEAR::Net_DNSBL_SURBL + * + * This class acts as interface to the SURBL - Spam URI Realtime Blocklists. + * + * Services_SURBL looks up an supplied URI if it's listed in a + * Spam URI Realtime Blocklists. + * + * @author Sebastian Nohn + * @package Net_DNSBL + * @license http://www.php.net/license/3_0.txt + * @version 0.5.4 + */ +require_once dirname(__FILE__) . '/../../Cache/Lite.php'; +require_once dirname(__FILE__) . '/../../HTTP/Request.php'; +require_once dirname(__FILE__) . '/../CheckIP.php'; +require_once dirname(__FILE__) . '/../DNSBL.php'; + +class Net_DNSBL_SURBL extends Net_DNSBL { + + /** + * Array of blacklists. + * + * Must have one or more elements. + * + * @var string[] + * @access protected + */ + var $blacklists = array('multi.surbl.org'); + + /** + * File containing whitelisted hosts. + * + * There are some whitelisted hosts (co.uk for example). This + * requires the package to not ask the domain name but the host + * name (spammer.co.uk instead of co.uk). + * + * @var string + * @see $twoLevelCcTld + * @access protected + */ + var $doubleCcTldFile = 'http://spamcheck.freeapp.net/two-level-tlds'; + + /** + * Array of whitelisted hosts. + * + * @var array + * @see $twoLevelCcTldFile + * @access private + */ + var $twoLevelCcTld = array(); + + /** + * Check if the last two parts of the FQDN are whitelisted. + * + * @param string Host to check if it is whitelisted + * @access protected + * @return boolean True if the host is whitelisted + */ + function isDoubleCcTld($fqdn) + { + // 30 Days should be way enough + $options = array( + 'lifeTime' => '2592000', + 'automaticSerialization' => true + ); + $id = md5($this->doubleCcTldFile); + + $cache = new Cache_Lite($options); + if ($data = $cache->get($id)) { + // Cache hit + } else { + // Cache miss + $http = &new HTTP_Request($this->doubleCcTldFile); + if (!PEAR::isError($http->sendRequest())) { + $data = $http->getResponseBody(); + } + $data = explode("\n", $data); + $data = array_flip($data); + $cache->save($data, $id); + } // if + if (array_key_exists($fqdn, $data)) { + return true; + } else { + return false; + } // if + } // function + + /** + * Get Hostname to ask for. + * + * Performs the following steps: + * + * (1) Extract the hostname from the given URI + * (2) Check if the "hostname" is an ip + * (3a) IS_IP Reverse the IP (1.2.3.4 -> 4.3.2.1) + * (3b) IS_FQDN Check if is in "CC-2-level-TLD" + * (3b1) IS_IN_2LEVEL: we want the last three names + * (3b2) IS_NOT_2LEVEL: we want the last two names + * (4) return the FQDN to query. + * + * @param string URL to check. + * @access protected + * @return string Host to lookup + */ + function getHostForLookup($uri, $blacklist) + { + $host = ''; + // (1) Extract the hostname from the given URI + $parsed_uri = parse_url($uri); + $host = $parsed_uri['host']; + // (2) Check if the "hostname" is an ip + if (Net_CheckIP::check_ip($host)) { + // (3a) IS_IP Reverse the IP (1.2.3.4 -> 4.3.2.1) + $host = $this->reverseIp($host); + } else { + $host_elements = explode('.', $host); + while (count($host_elements) > 3) { + array_shift($host_elements); + } // while + $host_3_elements = implode('.', $host_elements); + + $host_elements = explode('.', $host); + while (count($host_elements) > 2) { + array_shift($host_elements); + } // while + $host_2_elements = implode('.', $host_elements); + + // (3b) IS_FQDN Check if is in "CC-2-level-TLD" + if ($this->isDoubleCcTld($host_2_elements)) { + // (3b1) IS_IN_2LEVEL: we want the last three names + $host = $host_3_elements; + } else { + // (3b2) IS_NOT_2LEVEL: we want the last two names + $host = $host_2_elements; + } // if + } // if + // (4) return the FQDN to query + $host .= '.'.$blacklist; + return $host; + } // function + +} // class +?> \ No newline at end of file diff --git a/bundled-libs/Net/Socket.php b/bundled-libs/Net/Socket.php new file mode 100644 index 00000000..669a7b52 --- /dev/null +++ b/bundled-libs/Net/Socket.php @@ -0,0 +1,528 @@ + | +// | Chuck Hagenbuch | +// +----------------------------------------------------------------------+ +// +// $Id: Socket.php,v 1.24 2005/02/03 20:40:16 chagenbu Exp $ + +require_once(dirname(__FILE__) . '/../PEAR.php'); + +define('NET_SOCKET_READ', 1); +define('NET_SOCKET_WRITE', 2); +define('NET_SOCKET_ERROR', 3); + +/** + * Generalized Socket class. + * + * @version 1.1 + * @author Stig Bakken + * @author Chuck Hagenbuch + */ +class Net_Socket extends PEAR { + + /** + * Socket file pointer. + * @var resource $fp + */ + var $fp = null; + + /** + * Whether the socket is blocking. Defaults to true. + * @var boolean $blocking + */ + var $blocking = true; + + /** + * Whether the socket is persistent. Defaults to false. + * @var boolean $persistent + */ + var $persistent = false; + + /** + * The IP address to connect to. + * @var string $addr + */ + var $addr = ''; + + /** + * The port number to connect to. + * @var integer $port + */ + var $port = 0; + + /** + * Number of seconds to wait on socket connections before assuming + * there's no more data. Defaults to no timeout. + * @var integer $timeout + */ + var $timeout = false; + + /** + * Number of bytes to read at a time in readLine() and + * readAll(). Defaults to 2048. + * @var integer $lineLength + */ + var $lineLength = 2048; + + /** + * Connect to the specified port. If called when the socket is + * already connected, it disconnects and connects again. + * + * @param string $addr IP address or host name. + * @param integer $port TCP port number. + * @param boolean $persistent (optional) Whether the connection is + * persistent (kept open between requests + * by the web server). + * @param integer $timeout (optional) How long to wait for data. + * @param array $options See options for stream_context_create. + * + * @access public + * + * @return boolean | PEAR_Error True on success or a PEAR_Error on failure. + */ + function connect($addr, $port = 0, $persistent = null, $timeout = null, $options = null) + { + if (is_resource($this->fp)) { + @fclose($this->fp); + $this->fp = null; + } + + if (!$addr) { + return $this->raiseError('$addr cannot be empty'); + } elseif (strspn($addr, '.0123456789') == strlen($addr) || + strstr($addr, '/') !== false) { + $this->addr = $addr; + } else { + $this->addr = @gethostbyname($addr); + } + + $this->port = $port % 65536; + + if ($persistent !== null) { + $this->persistent = $persistent; + } + + if ($timeout !== null) { + $this->timeout = $timeout; + } + + $openfunc = $this->persistent ? 'pfsockopen' : 'fsockopen'; + $errno = 0; + $errstr = ''; + if ($options && function_exists('stream_context_create')) { + if ($this->timeout) { + $timeout = $this->timeout; + } else { + $timeout = 0; + } + $context = stream_context_create($options); + $fp = @$openfunc($this->addr, $this->port, $errno, $errstr, $timeout, $context); + } else { + if ($this->timeout) { + $fp = @$openfunc($this->addr, $this->port, $errno, $errstr, $this->timeout); + } else { + $fp = @$openfunc($this->addr, $this->port, $errno, $errstr); + } + } + + if (!$fp) { + return $this->raiseError($errstr, $errno); + } + + $this->fp = $fp; + + return $this->setBlocking($this->blocking); + } + + /** + * Disconnects from the peer, closes the socket. + * + * @access public + * @return mixed true on success or an error object otherwise + */ + function disconnect() + { + if (!is_resource($this->fp)) { + return $this->raiseError('not connected'); + } + + @fclose($this->fp); + $this->fp = null; + return true; + } + + /** + * Find out if the socket is in blocking mode. + * + * @access public + * @return boolean The current blocking mode. + */ + function isBlocking() + { + return $this->blocking; + } + + /** + * Sets whether the socket connection should be blocking or + * not. A read call to a non-blocking socket will return immediately + * if there is no data available, whereas it will block until there + * is data for blocking sockets. + * + * @param boolean $mode True for blocking sockets, false for nonblocking. + * @access public + * @return mixed true on success or an error object otherwise + */ + function setBlocking($mode) + { + if (!is_resource($this->fp)) { + return $this->raiseError('not connected'); + } + + $this->blocking = $mode; + socket_set_blocking($this->fp, $this->blocking); + return true; + } + + /** + * Sets the timeout value on socket descriptor, + * expressed in the sum of seconds and microseconds + * + * @param integer $seconds Seconds. + * @param integer $microseconds Microseconds. + * @access public + * @return mixed true on success or an error object otherwise + */ + function setTimeout($seconds, $microseconds) + { + if (!is_resource($this->fp)) { + return $this->raiseError('not connected'); + } + + return socket_set_timeout($this->fp, $seconds, $microseconds); + } + + /** + * Returns information about an existing socket resource. + * Currently returns four entries in the result array: + * + *

+ * timed_out (bool) - The socket timed out waiting for data
+ * blocked (bool) - The socket was blocked
+ * eof (bool) - Indicates EOF event
+ * unread_bytes (int) - Number of bytes left in the socket buffer
+ *

+ * + * @access public + * @return mixed Array containing information about existing socket resource or an error object otherwise + */ + function getStatus() + { + if (!is_resource($this->fp)) { + return $this->raiseError('not connected'); + } + + return socket_get_status($this->fp); + } + + /** + * Get a specified line of data + * + * @access public + * @return $size bytes of data from the socket, or a PEAR_Error if + * not connected. + */ + function gets($size) + { + if (!is_resource($this->fp)) { + return $this->raiseError('not connected'); + } + + return @fgets($this->fp, $size); + } + + /** + * Read a specified amount of data. This is guaranteed to return, + * and has the added benefit of getting everything in one fread() + * chunk; if you know the size of the data you're getting + * beforehand, this is definitely the way to go. + * + * @param integer $size The number of bytes to read from the socket. + * @access public + * @return $size bytes of data from the socket, or a PEAR_Error if + * not connected. + */ + function read($size) + { + if (!is_resource($this->fp)) { + return $this->raiseError('not connected'); + } + + return @fread($this->fp, $size); + } + + /** + * Write a specified amount of data. + * + * @param string $data Data to write. + * @param integer $blocksize Amount of data to write at once. + * NULL means all at once. + * + * @access public + * @return mixed true on success or an error object otherwise + */ + function write($data, $blocksize = null) + { + if (!is_resource($this->fp)) { + return $this->raiseError('not connected'); + } + + if (is_null($blocksize) && !OS_WINDOWS) { + return fwrite($this->fp, $data); + } else { + if (is_null($blocksize)) { + $blocksize = 1024; + } + + $pos = 0; + $size = strlen($data); + while ($pos < $size) { + $written = @fwrite($this->fp, substr($data, $pos, $blocksize)); + if ($written === false) { + return false; + } + $pos += $written; + } + + return $pos; + } + } + + /** + * Write a line of data to the socket, followed by a trailing "\r\n". + * + * @access public + * @return mixed fputs result, or an error + */ + function writeLine($data) + { + if (!is_resource($this->fp)) { + return $this->raiseError('not connected'); + } + + return fwrite($this->fp, $data . "\r\n"); + } + + /** + * Tests for end-of-file on a socket descriptor. + * + * @access public + * @return bool + */ + function eof() + { + return (is_resource($this->fp) && feof($this->fp)); + } + + /** + * Reads a byte of data + * + * @access public + * @return 1 byte of data from the socket, or a PEAR_Error if + * not connected. + */ + function readByte() + { + if (!is_resource($this->fp)) { + return $this->raiseError('not connected'); + } + + return ord(@fread($this->fp, 1)); + } + + /** + * Reads a word of data + * + * @access public + * @return 1 word of data from the socket, or a PEAR_Error if + * not connected. + */ + function readWord() + { + if (!is_resource($this->fp)) { + return $this->raiseError('not connected'); + } + + $buf = @fread($this->fp, 2); + return (ord($buf[0]) + (ord($buf[1]) << 8)); + } + + /** + * Reads an int of data + * + * @access public + * @return integer 1 int of data from the socket, or a PEAR_Error if + * not connected. + */ + function readInt() + { + if (!is_resource($this->fp)) { + return $this->raiseError('not connected'); + } + + $buf = @fread($this->fp, 4); + return (ord($buf[0]) + (ord($buf[1]) << 8) + + (ord($buf[2]) << 16) + (ord($buf[3]) << 24)); + } + + /** + * Reads a zero-terminated string of data + * + * @access public + * @return string, or a PEAR_Error if + * not connected. + */ + function readString() + { + if (!is_resource($this->fp)) { + return $this->raiseError('not connected'); + } + + $string = ''; + while (($char = @fread($this->fp, 1)) != "\x00") { + $string .= $char; + } + return $string; + } + + /** + * Reads an IP Address and returns it in a dot formated string + * + * @access public + * @return Dot formated string, or a PEAR_Error if + * not connected. + */ + function readIPAddress() + { + if (!is_resource($this->fp)) { + return $this->raiseError('not connected'); + } + + $buf = @fread($this->fp, 4); + return sprintf("%s.%s.%s.%s", ord($buf[0]), ord($buf[1]), + ord($buf[2]), ord($buf[3])); + } + + /** + * Read until either the end of the socket or a newline, whichever + * comes first. Strips the trailing newline from the returned data. + * + * @access public + * @return All available data up to a newline, without that + * newline, or until the end of the socket, or a PEAR_Error if + * not connected. + */ + function readLine() + { + if (!is_resource($this->fp)) { + return $this->raiseError('not connected'); + } + + $line = ''; + $timeout = time() + $this->timeout; + while (!feof($this->fp) && (!$this->timeout || time() < $timeout)) { + $line .= @fgets($this->fp, $this->lineLength); + if (substr($line, -1) == "\n") { + return rtrim($line, "\r\n"); + } + } + return $line; + } + + /** + * Read until the socket closes, or until there is no more data in + * the inner PHP buffer. If the inner buffer is empty, in blocking + * mode we wait for at least 1 byte of data. Therefore, in + * blocking mode, if there is no data at all to be read, this + * function will never exit (unless the socket is closed on the + * remote end). + * + * @access public + * + * @return string All data until the socket closes, or a PEAR_Error if + * not connected. + */ + function readAll() + { + if (!is_resource($this->fp)) { + return $this->raiseError('not connected'); + } + + $data = ''; + while (!feof($this->fp)) { + $data .= @fread($this->fp, $this->lineLength); + } + return $data; + } + + /** + * Runs the equivalent of the select() system call on the socket + * with a timeout specified by tv_sec and tv_usec. + * + * @param integer $state Which of read/write/error to check for. + * @param integer $tv_sec Number of seconds for timeout. + * @param integer $tv_usec Number of microseconds for timeout. + * + * @access public + * @return False if select fails, integer describing which of read/write/error + * are ready, or PEAR_Error if not connected. + */ + function select($state, $tv_sec, $tv_usec = 0) + { + if (!is_resource($this->fp)) { + return $this->raiseError('not connected'); + } + + $read = null; + $write = null; + $except = null; + if ($state & NET_SOCKET_READ) { + $read[] = $this->fp; + } + if ($state & NET_SOCKET_WRITE) { + $write[] = $this->fp; + } + if ($state & NET_SOCKET_ERROR) { + $except[] = $this->fp; + } + if (false === ($sr = stream_select($read, $write, $except, $tv_sec, $tv_usec))) { + return false; + } + + $result = 0; + if (count($read)) { + $result |= NET_SOCKET_READ; + } + if (count($write)) { + $result |= NET_SOCKET_WRITE; + } + if (count($except)) { + $result |= NET_SOCKET_ERROR; + } + return $result; + } + +} diff --git a/bundled-libs/Net/URL.php b/bundled-libs/Net/URL.php new file mode 100644 index 00000000..6331fc0a --- /dev/null +++ b/bundled-libs/Net/URL.php @@ -0,0 +1,410 @@ + | +// +-----------------------------------------------------------------------+ +// +// $Id: URL.php,v 1.36 2004/06/19 18:58:50 richard Exp $ +// +// Net_URL Class + +class Net_URL +{ + /** + * Full url + * @var string + */ + var $url; + + /** + * Protocol + * @var string + */ + var $protocol; + + /** + * Username + * @var string + */ + var $username; + + /** + * Password + * @var string + */ + var $password; + + /** + * Host + * @var string + */ + var $host; + + /** + * Port + * @var integer + */ + var $port; + + /** + * Path + * @var string + */ + var $path; + + /** + * Query string + * @var array + */ + var $querystring; + + /** + * Anchor + * @var string + */ + var $anchor; + + /** + * Whether to use [] + * @var bool + */ + var $useBrackets; + + /** + * PHP4 Constructor + * + * @see __construct() + */ + function Net_URL($url = null, $useBrackets = true) + { + $this->__construct($url, $useBrackets); + } + + /** + * PHP5 Constructor + * + * Parses the given url and stores the various parts + * Defaults are used in certain cases + * + * @param string $url Optional URL + * @param bool $useBrackets Whether to use square brackets when + * multiple querystrings with the same name + * exist + */ + function __construct($url = null, $useBrackets = true) + { + $HTTP_SERVER_VARS = !empty($_SERVER) ? $_SERVER : $GLOBALS['HTTP_SERVER_VARS']; + + $this->useBrackets = $useBrackets; + $this->url = $url; + $this->user = ''; + $this->pass = ''; + $this->host = ''; + $this->port = 80; + $this->path = ''; + $this->querystring = array(); + $this->anchor = ''; + + // Only use defaults if not an absolute URL given + if (!preg_match('/^[a-z0-9]+:\/\//i', $url)) { + + $this->protocol = (@$HTTP_SERVER_VARS['HTTPS'] == 'on' ? 'https' : 'http'); + + /** + * Figure out host/port + */ + if (!empty($HTTP_SERVER_VARS['HTTP_HOST']) AND preg_match('/^(.*)(:([0-9]+))?$/U', $HTTP_SERVER_VARS['HTTP_HOST'], $matches)) { + $host = $matches[1]; + if (!empty($matches[3])) { + $port = $matches[3]; + } else { + $port = $this->getStandardPort($this->protocol); + } + } + + $this->user = ''; + $this->pass = ''; + $this->host = !empty($host) ? $host : (isset($HTTP_SERVER_VARS['SERVER_NAME']) ? $HTTP_SERVER_VARS['SERVER_NAME'] : 'localhost'); + $this->port = !empty($port) ? $port : (isset($HTTP_SERVER_VARS['SERVER_PORT']) ? $HTTP_SERVER_VARS['SERVER_PORT'] : $this->getStandardPort($this->protocol)); + $this->path = !empty($HTTP_SERVER_VARS['PHP_SELF']) ? $HTTP_SERVER_VARS['PHP_SELF'] : '/'; + $this->querystring = isset($HTTP_SERVER_VARS['QUERY_STRING']) ? $this->_parseRawQuerystring($HTTP_SERVER_VARS['QUERY_STRING']) : null; + $this->anchor = ''; + } + + // Parse the url and store the various parts + if (!empty($url)) { + $urlinfo = parse_url($url); + + // Default querystring + $this->querystring = array(); + + foreach ($urlinfo as $key => $value) { + switch ($key) { + case 'scheme': + $this->protocol = $value; + $this->port = $this->getStandardPort($value); + break; + + case 'user': + case 'pass': + case 'host': + case 'port': + $this->$key = $value; + break; + + case 'path': + if ($value{0} == '/') { + $this->path = $value; + } else { + $path = dirname($this->path) == DIRECTORY_SEPARATOR ? '' : dirname($this->path); + $this->path = sprintf('%s/%s', $path, $value); + } + break; + + case 'query': + $this->querystring = $this->_parseRawQueryString($value); + break; + + case 'fragment': + $this->anchor = $value; + break; + } + } + } + } + + /** + * Returns full url + * + * @return string Full url + * @access public + */ + function getURL() + { + $querystring = $this->getQueryString(); + + $this->url = $this->protocol . '://' + . $this->user . (!empty($this->pass) ? ':' : '') + . $this->pass . (!empty($this->user) ? '@' : '') + . $this->host . ($this->port == $this->getStandardPort($this->protocol) ? '' : ':' . $this->port) + . $this->path + . (!empty($querystring) ? '?' . $querystring : '') + . (!empty($this->anchor) ? '#' . $this->anchor : ''); + + return $this->url; + } + + /** + * Adds a querystring item + * + * @param string $name Name of item + * @param string $value Value of item + * @param bool $preencoded Whether value is urlencoded or not, default = not + * @access public + */ + function addQueryString($name, $value, $preencoded = false) + { + if ($preencoded) { + $this->querystring[$name] = $value; + } else { + $this->querystring[$name] = is_array($value) ? array_map('rawurlencode', $value): rawurlencode($value); + } + } + + /** + * Removes a querystring item + * + * @param string $name Name of item + * @access public + */ + function removeQueryString($name) + { + if (isset($this->querystring[$name])) { + unset($this->querystring[$name]); + } + } + + /** + * Sets the querystring to literally what you supply + * + * @param string $querystring The querystring data. Should be of the format foo=bar&x=y etc + * @access public + */ + function addRawQueryString($querystring) + { + $this->querystring = $this->_parseRawQueryString($querystring); + } + + /** + * Returns flat querystring + * + * @return string Querystring + * @access public + */ + function getQueryString() + { + if (!empty($this->querystring)) { + foreach ($this->querystring as $name => $value) { + if (is_array($value)) { + foreach ($value as $k => $v) { + $querystring[] = $this->useBrackets ? sprintf('%s[%s]=%s', $name, $k, $v) : ($name . '=' . $v); + } + } elseif (!is_null($value)) { + $querystring[] = $name . '=' . $value; + } else { + $querystring[] = $name; + } + } + $querystring = implode(ini_get('arg_separator.output'), $querystring); + } else { + $querystring = ''; + } + + return $querystring; + } + + /** + * Parses raw querystring and returns an array of it + * + * @param string $querystring The querystring to parse + * @return array An array of the querystring data + * @access private + */ + function _parseRawQuerystring($querystring) + { + $parts = preg_split('/[' . preg_quote(ini_get('arg_separator.input'), '/') . ']/', $querystring, -1, PREG_SPLIT_NO_EMPTY); + $return = array(); + + foreach ($parts as $part) { + if (strpos($part, '=') !== false) { + $value = substr($part, strpos($part, '=') + 1); + $key = substr($part, 0, strpos($part, '=')); + } else { + $value = null; + $key = $part; + } + if (substr($key, -2) == '[]') { + $key = substr($key, 0, -2); + if (@!is_array($return[$key])) { + $return[$key] = array(); + $return[$key][] = $value; + } else { + $return[$key][] = $value; + } + } elseif (!$this->useBrackets AND !empty($return[$key])) { + $return[$key] = (array)$return[$key]; + $return[$key][] = $value; + } else { + $return[$key] = $value; + } + } + + return $return; + } + + /** + * Resolves //, ../ and ./ from a path and returns + * the result. Eg: + * + * /foo/bar/../boo.php => /foo/boo.php + * /foo/bar/../../boo.php => /boo.php + * /foo/bar/.././/boo.php => /foo/boo.php + * + * This method can also be called statically. + * + * @param string $url URL path to resolve + * @return string The result + */ + function resolvePath($path) + { + $path = explode('/', str_replace('//', '/', $path)); + + for ($i=0; $i 1 OR ($i == 1 AND $path[0] != '') ) ) { + unset($path[$i]); + unset($path[$i-1]); + $path = array_values($path); + $i -= 2; + + } elseif ($path[$i] == '..' AND $i == 1 AND $path[0] == '') { + unset($path[$i]); + $path = array_values($path); + $i--; + + } else { + continue; + } + } + + return implode('/', $path); + } + + /** + * Returns the standard port number for a protocol + * + * @param string $scheme The protocol to lookup + * @return integer Port number or NULL if no scheme matches + * + * @author Philippe Jausions + */ + function getStandardPort($scheme) + { + switch (strtolower($scheme)) { + case 'http': return 80; + case 'https': return 443; + case 'ftp': return 21; + case 'imap': return 143; + case 'imaps': return 993; + case 'pop3': return 110; + case 'pop3s': return 995; + default: return null; + } + } + + /** + * Forces the URL to a particular protocol + * + * @param string $protocol Protocol to force the URL to + * @param integer $port Optional port (standard port is used by default) + */ + function setProtocol($protocol, $port = null) + { + $this->protocol = $protocol; + $this->port = is_null($port) ? $this->getStandardPort() : $port; + } + +} +?> diff --git a/bundled-libs/Onyx/RSS.php b/bundled-libs/Onyx/RSS.php new file mode 100644 index 00000000..1bd838f7 --- /dev/null +++ b/bundled-libs/Onyx/RSS.php @@ -0,0 +1,394 @@ +PHP\'s XML Extension is not loaded or available.'); + define('ONYX_ERR_NOT_WRITEABLE', 'The specified cache directory is not writeable.'); + define('ONYX_ERR_INVALID_URI', 'The specified file could not be opened.'); + define('ONYX_ERR_INVALID_ITEM', 'Invalid item index specified.'); + define('ONYX_ERR_NO_STREAM', 'Could not open the specified file. Check the path, and make sure that you have write permissions to this file.'); + define('ONYX_META', 'meta'); + define('ONYX_ITEMS', 'items'); + define('ONYX_IMAGE', 'image'); + define('ONYX_TEXTINPUT', 'textinput'); + define('ONYX_NAMESPACES', 'namespaces'); + define('ONYX_CACHE_AGE', 'cache_age'); + define('ONYX_FETCH_ASSOC', 1); + define('ONYX_FETCH_OBJECT', 2); +} + +class ONYX_RSS +{ + var $parser; + var $conf; + var $rss; + var $data; + var $type; + /* For when PHP v.5 is released + * http://www.phpvolcano.com/eide/php5.php?page=variables + * private $parser; + * private $conf; + * private $rss; + * private $data; + * private $type; + */ + + function ONYX_RSS($charset = 'UTF-8') + { + $this->__construct($charset); + } + + // Forward compatibility with PHP v.5 + // http://www.phpvolcano.com/eide/php5.php?page=start + function __construct($charset = 'UTF-8') + { + $this->conf = array(); + $this->conf['error'] = '
Error on line %s of '.__FILE__.': %s
'; + $this->conf['cache_path'] = dirname(__FILE__); + $this->conf['cache_time'] = 180; + $this->conf['debug_mode'] = true; + $this->conf['fetch_mode'] = ONYX_FETCH_ASSOC; + + if (!function_exists('xml_parser_create')) + { + $this->raiseError((__LINE__-2), ONYX_ERR_NO_PARSER); + return false; + } + + if ($charset == 'native') { + $charset = LANG_CHARSET; + } + $this->parser = @xml_parser_create($charset); + if (!is_resource($this->parser)) + { + $this->raiseError((__LINE__-3), ONYX_ERR_NO_PARSER); + return false; + } + xml_set_object($this->parser, $this); + xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, false); + @xml_parser_set_option($this->parser, XML_OPTION_TARGET_ENCODING, LANG_CHARSET); + xml_set_element_handler($this->parser, 'tag_open', 'tag_close'); + xml_set_character_data_handler($this->parser, 'cdata'); + } + + function parse($uri, $file=false, $time=false, $local=false) + { + $this->rss = array(); + $this->rss['cache_age'] = 0; + $this->rss['current_tag'] = ''; + $this->rss['index'] = 0; + $this->rss['output_index'] = -1; + $this->data = array(); + + if ($file) + { + if (!is_writeable($this->conf['cache_path'])) + { + $this->raiseError((__LINE__-2), ONYX_ERR_NOT_WRITEABLE); + return false; + } + $file = str_replace('//', '/', $this->conf['cache_path'].'/'.$file); + if (!$time) + $time = $this->conf['cache_time']; + $this->rss['cache_age'] = file_exists($file) ? ceil((time() - filemtime($file)) / 60) : 0; + + clearstatcache(); + if (!$local && file_exists($file)) + if (($mod = $this->mod_time($uri)) === false) + { + $this->raiseError((__LINE__-2), ONYX_ERR_INVALID_URI); + return false; + } + else + $mod = ($mod !== 0) ? strtotime($mod) : (time()+3600); + elseif ($local) + $mod = (file_exists($file) && ($m = filemtime($uri))) ? $m : time()+3600; + } + if ( !$file || + ($file && !file_exists($file)) || + ($file && file_exists($file) && $time <= $this->rss['cache_age'] && $mod >= (time() - ($this->rss['cache_age'] * 60)))) + { + clearstatcache(); + + require_once S9Y_PEAR_PATH . 'HTTP/Request.php'; + serendipity_request_start(); + $req = &new HTTP_Request($uri, array('allowRedirects' => true, 'maxRedirects' => 5)); + $res = $req->sendRequest(); + + if (PEAR::isError($res) || $req->getResponseCode() != '200') + { + serendipity_request_end(); + $this->raiseError((__LINE__-2), ONYX_ERR_INVALID_URI . ' (#' . $req->getResponseCode() . ')'); + return false; + } + + $fContent = $req->getResponseBody(); + serendipity_request_end(); + if (@preg_match('@]*encoding="([^"]+)"@i', $fContent, $xml_encoding)) { + $this->rss['encoding'] = strtolower($xml_encoding[1]); + } + + $parsedOkay = xml_parse($this->parser, $fContent, true); + if (!$parsedOkay && xml_get_error_code($this->parser) != XML_ERROR_NONE) + { + $this->raiseError((__LINE__-3), 'File has an XML error ('.xml_error_string(xml_get_error_code($this->parser)).' at line '.xml_get_current_line_number($this->parser).').'); + return false; + } + + clearstatcache(); + if ($file) + { + if (!($cache = @fopen($file, 'w'))) + { + $this->raiseError((__LINE__-2), 'Could not write to cache file ('.$file.'). The path may be invalid or you may not have write permissions.'); + return false; + } + fwrite($cache, serialize($this->data)); + fclose($cache); + $this->rss['cache_age'] = 0; + } + } + else + { + clearstatcache(); + if (!($fp = @fopen($file, 'r'))) + { + $this->raiseError((__LINE__-2), 'Could not read contents of cache file ('.$cache_file.').'); + return false; + } + $this->data = unserialize(fread($fp, filesize($file))); + fclose($fp); + } + return true; + } + + function parseLocal($uri, $file=false, $time=false) + { + return $this->parse($uri, $file, $time, true); + } + + //private function tag_open($parser, $tag, $attrs) + function tag_open($parser, $tag, $attrs) + { + $this->rss['current_tag'] = $tag = strtolower($tag); + switch ($tag) + { + case 'channel': + case 'image': + case 'textinput': + $this->type = $tag; + break; + case 'item': + $this->type = $tag; + $this->rss['index']++; + break; + default: + break; + } + if (sizeof($attrs)) + foreach ($attrs as $k => $v) + if (strpos($k, 'xmlns') !== false) + $this->data['namespaces'][$k] = $v; + } + + //private function tag_close($parser, $tag){} + function tag_close($parser, $tag){} + + //private function cdata($parser, $cdata) + function cdata($parser, $cdata) + { + if (strlen(trim($cdata)) && $cdata != "\n") + switch ($this->type) + { + case 'channel': + case 'image': + case 'textinput': + (!isset($this->data[$this->type][$this->rss['current_tag']]) || + !strlen($this->data[$this->type][$this->rss['current_tag']])) ? + $this->data[$this->type][$this->rss['current_tag']] = $cdata : + $this->data[$this->type][$this->rss['current_tag']].= $cdata; + break; + case 'item': + (!isset($this->data['items'][$this->rss['index']-1][$this->rss['current_tag']]) || + !strlen($this->data['items'][$this->rss['index']-1][$this->rss['current_tag']])) ? + $this->data['items'][$this->rss['index']-1][$this->rss['current_tag']] = $cdata : + $this->data['items'][$this->rss['index']-1][$this->rss['current_tag']].= $cdata; + break; + } + } + + function getData($type) + { + if ($type == ONYX_META) + return $this->conf['fetch_mode'] == 1 ? $this->data['channel'] : (object)$this->data['channel']; + if ($type == ONYX_IMAGE) + return $this->conf['fetch_mode'] == 1 ? $this->data['image'] : (object)$this->data['image']; + if ($type == ONYX_TEXTINPUT) + return $this->conf['fetch_mode'] == 1 ? $this->data['textinput'] : (object)$this->data['textinput']; + if ($type == ONYX_ITEMS) + { + if ($this->conf['fetch_mode'] == 1) + return $this->data['items']; + + $temp = array(); + for ($i=0; $i < sizeof($this->data['items']); $i++) + $temp[] = (object)$this->data['items'][$i]; + + return $temp; + } + if ($type == ONYX_NAMESPACES) + return $this->conf['fetch_mode'] == 1 ? $this->data['namespaces'] : (object)$this->data['namespaces']; + if ($type == ONYX_CACHE_AGE) + return $this->rss['cache_age']; + + return false; + } + + function numItems() + { + return sizeof($this->data['items']); + } + + function getNextItem($max=false) + { + $type = $this->conf['fetch_mode']; + $this->rss['output_index']++; + if (($max && $this->rss['output_index'] > $max) || !isset($this->data['items'][$this->rss['output_index']])) + return false; + + return ($type == ONYX_FETCH_ASSOC) ? $this->data['items'][$this->rss['output_index']] : + (($type == ONYX_FETCH_OBJECT) ? (object)$this->data['items'][$this->rss['output_index']] : false); + } + + function itemAt($num) + { + if (!isset($this->data['items'][$num])) + { + $this->raiseError((__LINE__-3), ONYX_ERR_INVALID_ITEM); + return false; + } + + $type = $this->conf['fetch_mode']; + return ($type == ONYX_FETCH_ASSOC) ? $this->data['items'][$num] : + (($type == ONYX_FETCH_OBJECT) ? (object)$this->data['items'][$num] : false); + } + + function startBuffer($file=false) + { + $this->conf['output_file'] = $file; + ob_start(); + } + + function endBuffer() + { + if (!$this->conf['output_file']) + ob_end_flush(); + else + { + if (!($fp = @fopen($this->conf['output_file'], 'w'))) + { + $this->raiseError((__LINE__-2), ONYX_ERR_NO_STREAM); + ob_end_flush(); + return; + } + fwrite($fp, ob_get_contents()); + fclose($fp); + ob_end_clean(); + } + } + + //private function raiseError($line, $err) + function raiseError($line, $err) + { + if ($this->conf['debug_mode']) + printf($this->conf['error'], $line, $err); + } + + function setCachePath($path) + { + $this->conf['cache_path'] = $path; + } + + function setExpiryTime($time) + { + $this->conf['cache_time'] = $time; + } + + function setDebugMode($state) + { + $this->conf['debug_mode'] = (bool)$state; + } + + function setFetchMode($mode) + { + $this->conf['fetch_mode'] = $mode; + } + + //private function mod_time($uri) + function mod_time($uri) + { + if (function_exists('version_compare') && version_compare(phpversion(), '4.3.0') >= 0) + { + require_once S9Y_PEAR_PATH . 'HTTP/Request.php'; + serendipity_request_start(); + $req = &new HTTP_Request($uri); + + if (PEAR::isError($req->sendRequest()) || $req->getResponseCode() != '200') { + serendipity_request_end(); + return false; + } + + $fHeader = $req->getResponseHeader(); + if (isset($fHeader['last-modified'])) { + $modtime = $fHeader['last-modified']; + } + serendipity_request_end(); + } + else + { + $parts = parse_url($uri); + $host = $parts['host']; + $path = $parts['path']; + + if (!($fp = @fsockopen($host, 80))) + return false; + + $req = "HEAD $path HTTP/1.1\r\nUser-Agent: PHP/".phpversion(); + $req.= "\r\nHost: $host\r\nAccept: */*\r\n\r\n"; + fputs($fp, $req); + + while (!feof($fp)) + { + $str = fgets($fp, 4096); + if (strpos(strtolower($str), 'last-modified') !== false) + { + $modtime = substr($str, 15); + break; + } + } + fclose($fp); + } + return (isset($modtime)) ? $modtime : 0; + } +} + + +?> diff --git a/bundled-libs/PEAR.php b/bundled-libs/PEAR.php new file mode 100644 index 00000000..d4cf894a --- /dev/null +++ b/bundled-libs/PEAR.php @@ -0,0 +1,1061 @@ + | +// | Stig Bakken | +// | Tomas V.V.Cox | +// +--------------------------------------------------------------------+ +// +// $Id: PEAR.php,v 1.83 2005/03/28 16:38:58 cellog Exp $ +// + +// Serendipity-Patch +if (class_exists('PEAR')) { + return false; +} +// Serendipity-Patch end + +define('PEAR_ERROR_RETURN', 1); +define('PEAR_ERROR_PRINT', 2); +define('PEAR_ERROR_TRIGGER', 4); +define('PEAR_ERROR_DIE', 8); +define('PEAR_ERROR_CALLBACK', 16); +/** + * WARNING: obsolete + * @deprecated + */ +define('PEAR_ERROR_EXCEPTION', 32); +define('PEAR_ZE2', (function_exists('version_compare') && + version_compare(zend_version(), "2-dev", "ge"))); + +if (substr(PHP_OS, 0, 3) == 'WIN') { + define('OS_WINDOWS', true); + define('OS_UNIX', false); + define('PEAR_OS', 'Windows'); +} else { + define('OS_WINDOWS', false); + define('OS_UNIX', true); + define('PEAR_OS', 'Unix'); // blatant assumption +} + +// instant backwards compatibility +if (!defined('PATH_SEPARATOR')) { + if (OS_WINDOWS) { + define('PATH_SEPARATOR', ';'); + } else { + define('PATH_SEPARATOR', ':'); + } +} + +$GLOBALS['_PEAR_default_error_mode'] = PEAR_ERROR_RETURN; +$GLOBALS['_PEAR_default_error_options'] = E_USER_NOTICE; +$GLOBALS['_PEAR_destructor_object_list'] = array(); +$GLOBALS['_PEAR_shutdown_funcs'] = array(); +$GLOBALS['_PEAR_error_handler_stack'] = array(); + +@ini_set('track_errors', true); + +/** + * Base class for other PEAR classes. Provides rudimentary + * emulation of destructors. + * + * If you want a destructor in your class, inherit PEAR and make a + * destructor method called _yourclassname (same name as the + * constructor, but with a "_" prefix). Also, in your constructor you + * have to call the PEAR constructor: $this->PEAR();. + * The destructor method will be called without parameters. Note that + * at in some SAPI implementations (such as Apache), any output during + * the request shutdown (in which destructors are called) seems to be + * discarded. If you need to get any debug information from your + * destructor, use error_log(), syslog() or something similar. + * + * IMPORTANT! To use the emulated destructors you need to create the + * objects by reference: $obj =& new PEAR_child; + * + * @since PHP 4.0.2 + * @author Stig Bakken + * @see http://pear.php.net/manual/ + */ +class PEAR +{ + // {{{ properties + + /** + * Whether to enable internal debug messages. + * + * @var bool + * @access private + */ + var $_debug = false; + + /** + * Default error mode for this object. + * + * @var int + * @access private + */ + var $_default_error_mode = null; + + /** + * Default error options used for this object when error mode + * is PEAR_ERROR_TRIGGER. + * + * @var int + * @access private + */ + var $_default_error_options = null; + + /** + * Default error handler (callback) for this object, if error mode is + * PEAR_ERROR_CALLBACK. + * + * @var string + * @access private + */ + var $_default_error_handler = ''; + + /** + * Which class to use for error objects. + * + * @var string + * @access private + */ + var $_error_class = 'PEAR_Error'; + + /** + * An array of expected errors. + * + * @var array + * @access private + */ + var $_expected_errors = array(); + + // }}} + + // {{{ constructor + + /** + * Constructor. Registers this object in + * $_PEAR_destructor_object_list for destructor emulation if a + * destructor object exists. + * + * @param string $error_class (optional) which class to use for + * error objects, defaults to PEAR_Error. + * @access public + * @return void + */ + function PEAR($error_class = null) + { + $classname = strtolower(get_class($this)); + if ($this->_debug) { + print "PEAR constructor called, class=$classname\n"; + } + if ($error_class !== null) { + $this->_error_class = $error_class; + } + while ($classname && strcasecmp($classname, "pear")) { + $destructor = "_$classname"; + if (method_exists($this, $destructor)) { + global $_PEAR_destructor_object_list; + $_PEAR_destructor_object_list[] = &$this; + if (!isset($GLOBALS['_PEAR_SHUTDOWN_REGISTERED'])) { + register_shutdown_function("_PEAR_call_destructors"); + $GLOBALS['_PEAR_SHUTDOWN_REGISTERED'] = true; + } + break; + } else { + $classname = get_parent_class($classname); + } + } + } + + // }}} + // {{{ destructor + + /** + * Destructor (the emulated type of...). Does nothing right now, + * but is included for forward compatibility, so subclass + * destructors should always call it. + * + * See the note in the class desciption about output from + * destructors. + * + * @access public + * @return void + */ + function _PEAR() { + if ($this->_debug) { + printf("PEAR destructor called, class=%s\n", strtolower(get_class($this))); + } + } + + // }}} + // {{{ getStaticProperty() + + /** + * If you have a class that's mostly/entirely static, and you need static + * properties, you can use this method to simulate them. Eg. in your method(s) + * do this: $myVar = &PEAR::getStaticProperty('myclass', 'myVar'); + * You MUST use a reference, or they will not persist! + * + * @access public + * @param string $class The calling classname, to prevent clashes + * @param string $var The variable to retrieve. + * @return mixed A reference to the variable. If not set it will be + * auto initialised to NULL. + */ + function &getStaticProperty($class, $var) + { + static $properties; + return $properties[$class][$var]; + } + + // }}} + // {{{ registerShutdownFunc() + + /** + * Use this function to register a shutdown method for static + * classes. + * + * @access public + * @param mixed $func The function name (or array of class/method) to call + * @param mixed $args The arguments to pass to the function + * @return void + */ + function registerShutdownFunc($func, $args = array()) + { + $GLOBALS['_PEAR_shutdown_funcs'][] = array($func, $args); + } + + // }}} + // {{{ isError() + + /** + * Tell whether a value is a PEAR error. + * + * @param mixed $data the value to test + * @param int $code if $data is an error object, return true + * only if $code is a string and + * $obj->getMessage() == $code or + * $code is an integer and $obj->getCode() == $code + * @access public + * @return bool true if parameter is an error + */ + function isError($data, $code = null) + { + if (is_a($data, 'PEAR_Error')) { + if (is_null($code)) { + return true; + } elseif (is_string($code)) { + return $data->getMessage() == $code; + } else { + return $data->getCode() == $code; + } + } + return false; + } + + // }}} + // {{{ setErrorHandling() + + /** + * Sets how errors generated by this object should be handled. + * Can be invoked both in objects and statically. If called + * statically, setErrorHandling sets the default behaviour for all + * PEAR objects. If called in an object, setErrorHandling sets + * the default behaviour for that object. + * + * @param int $mode + * One of PEAR_ERROR_RETURN, PEAR_ERROR_PRINT, + * PEAR_ERROR_TRIGGER, PEAR_ERROR_DIE, + * PEAR_ERROR_CALLBACK or PEAR_ERROR_EXCEPTION. + * + * @param mixed $options + * When $mode is PEAR_ERROR_TRIGGER, this is the error level (one + * of E_USER_NOTICE, E_USER_WARNING or E_USER_ERROR). + * + * When $mode is PEAR_ERROR_CALLBACK, this parameter is expected + * to be the callback function or method. A callback + * function is a string with the name of the function, a + * callback method is an array of two elements: the element + * at index 0 is the object, and the element at index 1 is + * the name of the method to call in the object. + * + * When $mode is PEAR_ERROR_PRINT or PEAR_ERROR_DIE, this is + * a printf format string used when printing the error + * message. + * + * @access public + * @return void + * @see PEAR_ERROR_RETURN + * @see PEAR_ERROR_PRINT + * @see PEAR_ERROR_TRIGGER + * @see PEAR_ERROR_DIE + * @see PEAR_ERROR_CALLBACK + * @see PEAR_ERROR_EXCEPTION + * + * @since PHP 4.0.5 + */ + + function setErrorHandling($mode = null, $options = null) + { + if (isset($this) && is_a($this, 'PEAR')) { + $setmode = &$this->_default_error_mode; + $setoptions = &$this->_default_error_options; + } else { + $setmode = &$GLOBALS['_PEAR_default_error_mode']; + $setoptions = &$GLOBALS['_PEAR_default_error_options']; + } + + switch ($mode) { + case PEAR_ERROR_EXCEPTION: + case PEAR_ERROR_RETURN: + case PEAR_ERROR_PRINT: + case PEAR_ERROR_TRIGGER: + case PEAR_ERROR_DIE: + case null: + $setmode = $mode; + $setoptions = $options; + break; + + case PEAR_ERROR_CALLBACK: + $setmode = $mode; + // class/object method callback + if (is_callable($options)) { + $setoptions = $options; + } else { + trigger_error("invalid error callback", E_USER_WARNING); + } + break; + + default: + trigger_error("invalid error mode", E_USER_WARNING); + break; + } + } + + // }}} + // {{{ expectError() + + /** + * This method is used to tell which errors you expect to get. + * Expected errors are always returned with error mode + * PEAR_ERROR_RETURN. Expected error codes are stored in a stack, + * and this method pushes a new element onto it. The list of + * expected errors are in effect until they are popped off the + * stack with the popExpect() method. + * + * Note that this method can not be called statically + * + * @param mixed $code a single error code or an array of error codes to expect + * + * @return int the new depth of the "expected errors" stack + * @access public + */ + function expectError($code = '*') + { + if (is_array($code)) { + array_push($this->_expected_errors, $code); + } else { + array_push($this->_expected_errors, array($code)); + } + return sizeof($this->_expected_errors); + } + + // }}} + // {{{ popExpect() + + /** + * This method pops one element off the expected error codes + * stack. + * + * @return array the list of error codes that were popped + */ + function popExpect() + { + return array_pop($this->_expected_errors); + } + + // }}} + // {{{ _checkDelExpect() + + /** + * This method checks unsets an error code if available + * + * @param mixed error code + * @return bool true if the error code was unset, false otherwise + * @access private + * @since PHP 4.3.0 + */ + function _checkDelExpect($error_code) + { + $deleted = false; + + foreach ($this->_expected_errors AS $key => $error_array) { + if (in_array($error_code, $error_array)) { + unset($this->_expected_errors[$key][array_search($error_code, $error_array)]); + $deleted = true; + } + + // clean up empty arrays + if (0 == count($this->_expected_errors[$key])) { + unset($this->_expected_errors[$key]); + } + } + return $deleted; + } + + // }}} + // {{{ delExpect() + + /** + * This method deletes all occurences of the specified element from + * the expected error codes stack. + * + * @param mixed $error_code error code that should be deleted + * @return mixed list of error codes that were deleted or error + * @access public + * @since PHP 4.3.0 + */ + function delExpect($error_code) + { + $deleted = false; + + if ((is_array($error_code) && (0 != count($error_code)))) { + // $error_code is a non-empty array here; + // we walk through it trying to unset all + // values + foreach($error_code as $key => $error) { + if ($this->_checkDelExpect($error)) { + $deleted = true; + } else { + $deleted = false; + } + } + return $deleted ? true : PEAR::raiseError("The expected error you submitted does not exist"); // IMPROVE ME + } elseif (!empty($error_code)) { + // $error_code comes alone, trying to unset it + if ($this->_checkDelExpect($error_code)) { + return true; + } else { + return PEAR::raiseError("The expected error you submitted does not exist"); // IMPROVE ME + } + } else { + // $error_code is empty + return PEAR::raiseError("The expected error you submitted is empty"); // IMPROVE ME + } + } + + // }}} + // {{{ raiseError() + + /** + * This method is a wrapper that returns an instance of the + * configured error class with this object's default error + * handling applied. If the $mode and $options parameters are not + * specified, the object's defaults are used. + * + * @param mixed $message a text error message or a PEAR error object + * + * @param int $code a numeric error code (it is up to your class + * to define these if you want to use codes) + * + * @param int $mode One of PEAR_ERROR_RETURN, PEAR_ERROR_PRINT, + * PEAR_ERROR_TRIGGER, PEAR_ERROR_DIE, + * PEAR_ERROR_CALLBACK, PEAR_ERROR_EXCEPTION. + * + * @param mixed $options If $mode is PEAR_ERROR_TRIGGER, this parameter + * specifies the PHP-internal error level (one of + * E_USER_NOTICE, E_USER_WARNING or E_USER_ERROR). + * If $mode is PEAR_ERROR_CALLBACK, this + * parameter specifies the callback function or + * method. In other error modes this parameter + * is ignored. + * + * @param string $userinfo If you need to pass along for example debug + * information, this parameter is meant for that. + * + * @param string $error_class The returned error object will be + * instantiated from this class, if specified. + * + * @param bool $skipmsg If true, raiseError will only pass error codes, + * the error message parameter will be dropped. + * + * @access public + * @return object a PEAR error object + * @see PEAR::setErrorHandling + * @since PHP 4.0.5 + */ + function raiseError($message = null, + $code = null, + $mode = null, + $options = null, + $userinfo = null, + $error_class = null, + $skipmsg = false) + { + // The error is yet a PEAR error object + if (is_object($message)) { + $code = $message->getCode(); + $userinfo = $message->getUserInfo(); + $error_class = $message->getType(); + $message->error_message_prefix = ''; + $message = $message->getMessage(); + } + + if (isset($this) && isset($this->_expected_errors) && sizeof($this->_expected_errors) > 0 && sizeof($exp = end($this->_expected_errors))) { + if ($exp[0] == "*" || + (is_int(reset($exp)) && in_array($code, $exp)) || + (is_string(reset($exp)) && in_array($message, $exp))) { + $mode = PEAR_ERROR_RETURN; + } + } + // No mode given, try global ones + if ($mode === null) { + // Class error handler + if (isset($this) && isset($this->_default_error_mode)) { + $mode = $this->_default_error_mode; + $options = $this->_default_error_options; + // Global error handler + } elseif (isset($GLOBALS['_PEAR_default_error_mode'])) { + $mode = $GLOBALS['_PEAR_default_error_mode']; + $options = $GLOBALS['_PEAR_default_error_options']; + } + } + + if ($error_class !== null) { + $ec = $error_class; + } elseif (isset($this) && isset($this->_error_class)) { + $ec = $this->_error_class; + } else { + $ec = 'PEAR_Error'; + } + if ($skipmsg) { + return new $ec($code, $mode, $options, $userinfo); + } else { + return new $ec($message, $code, $mode, $options, $userinfo); + } + } + + // }}} + // {{{ throwError() + + /** + * Simpler form of raiseError with fewer options. In most cases + * message, code and userinfo are enough. + * + * @param string $message + * + */ + function throwError($message = null, + $code = null, + $userinfo = null) + { + if (isset($this) && is_a($this, 'PEAR')) { + return $this->raiseError($message, $code, null, null, $userinfo); + } else { + return PEAR::raiseError($message, $code, null, null, $userinfo); + } + } + + // }}} + function staticPushErrorHandling($mode, $options = null) + { + $stack = &$GLOBALS['_PEAR_error_handler_stack']; + $def_mode = &$GLOBALS['_PEAR_default_error_mode']; + $def_options = &$GLOBALS['_PEAR_default_error_options']; + $stack[] = array($def_mode, $def_options); + switch ($mode) { + case PEAR_ERROR_EXCEPTION: + case PEAR_ERROR_RETURN: + case PEAR_ERROR_PRINT: + case PEAR_ERROR_TRIGGER: + case PEAR_ERROR_DIE: + case null: + $def_mode = $mode; + $def_options = $options; + break; + + case PEAR_ERROR_CALLBACK: + $def_mode = $mode; + // class/object method callback + if (is_callable($options)) { + $def_options = $options; + } else { + trigger_error("invalid error callback", E_USER_WARNING); + } + break; + + default: + trigger_error("invalid error mode", E_USER_WARNING); + break; + } + $stack[] = array($mode, $options); + return true; + } + + function staticPopErrorHandling() + { + $stack = &$GLOBALS['_PEAR_error_handler_stack']; + $setmode = &$GLOBALS['_PEAR_default_error_mode']; + $setoptions = &$GLOBALS['_PEAR_default_error_options']; + array_pop($stack); + list($mode, $options) = $stack[sizeof($stack) - 1]; + array_pop($stack); + switch ($mode) { + case PEAR_ERROR_EXCEPTION: + case PEAR_ERROR_RETURN: + case PEAR_ERROR_PRINT: + case PEAR_ERROR_TRIGGER: + case PEAR_ERROR_DIE: + case null: + $setmode = $mode; + $setoptions = $options; + break; + + case PEAR_ERROR_CALLBACK: + $setmode = $mode; + // class/object method callback + if (is_callable($options)) { + $setoptions = $options; + } else { + trigger_error("invalid error callback", E_USER_WARNING); + } + break; + + default: + trigger_error("invalid error mode", E_USER_WARNING); + break; + } + return true; + } + + // {{{ pushErrorHandling() + + /** + * Push a new error handler on top of the error handler options stack. With this + * you can easily override the actual error handler for some code and restore + * it later with popErrorHandling. + * + * @param mixed $mode (same as setErrorHandling) + * @param mixed $options (same as setErrorHandling) + * + * @return bool Always true + * + * @see PEAR::setErrorHandling + */ + function pushErrorHandling($mode, $options = null) + { + $stack = &$GLOBALS['_PEAR_error_handler_stack']; + if (isset($this) && is_a($this, 'PEAR')) { + $def_mode = &$this->_default_error_mode; + $def_options = &$this->_default_error_options; + } else { + $def_mode = &$GLOBALS['_PEAR_default_error_mode']; + $def_options = &$GLOBALS['_PEAR_default_error_options']; + } + $stack[] = array($def_mode, $def_options); + + if (isset($this) && is_a($this, 'PEAR')) { + $this->setErrorHandling($mode, $options); + } else { + PEAR::setErrorHandling($mode, $options); + } + $stack[] = array($mode, $options); + return true; + } + + // }}} + // {{{ popErrorHandling() + + /** + * Pop the last error handler used + * + * @return bool Always true + * + * @see PEAR::pushErrorHandling + */ + function popErrorHandling() + { + $stack = &$GLOBALS['_PEAR_error_handler_stack']; + array_pop($stack); + list($mode, $options) = $stack[sizeof($stack) - 1]; + array_pop($stack); + if (isset($this) && is_a($this, 'PEAR')) { + $this->setErrorHandling($mode, $options); + } else { + PEAR::setErrorHandling($mode, $options); + } + return true; + } + + // }}} + // {{{ loadExtension() + + /** + * OS independant PHP extension load. Remember to take care + * on the correct extension name for case sensitive OSes. + * + * @param string $ext The extension name + * @return bool Success or not on the dl() call + */ + function loadExtension($ext) + { + if (!extension_loaded($ext)) { + // if either returns true dl() will produce a FATAL error, stop that + if ((ini_get('enable_dl') != 1) || (ini_get('safe_mode') == 1)) { + return false; + } + if (OS_WINDOWS) { + $suffix = '.dll'; + } elseif (PHP_OS == 'HP-UX') { + $suffix = '.sl'; + } elseif (PHP_OS == 'AIX') { + $suffix = '.a'; + } elseif (PHP_OS == 'OSX') { + $suffix = '.bundle'; + } else { + $suffix = '.so'; + } + return @dl('php_'.$ext.$suffix) || @dl($ext.$suffix); + } + return true; + } + + // }}} +} + +// {{{ _PEAR_call_destructors() + +function _PEAR_call_destructors() +{ + global $_PEAR_destructor_object_list; + if (is_array($_PEAR_destructor_object_list) && + sizeof($_PEAR_destructor_object_list)) + { + reset($_PEAR_destructor_object_list); + if (@PEAR::getStaticProperty('PEAR', 'destructlifo')) { + $_PEAR_destructor_object_list = array_reverse($_PEAR_destructor_object_list); + } + while (list($k, $objref) = each($_PEAR_destructor_object_list)) { + $classname = get_class($objref); + while ($classname) { + $destructor = "_$classname"; + if (method_exists($objref, $destructor)) { + $objref->$destructor(); + break; + } else { + $classname = get_parent_class($classname); + } + } + } + // Empty the object list to ensure that destructors are + // not called more than once. + $_PEAR_destructor_object_list = array(); + } + + // Now call the shutdown functions + if (is_array($GLOBALS['_PEAR_shutdown_funcs']) AND !empty($GLOBALS['_PEAR_shutdown_funcs'])) { + foreach ($GLOBALS['_PEAR_shutdown_funcs'] as $value) { + call_user_func_array($value[0], $value[1]); + } + } +} + +// }}} + +class PEAR_Error +{ + // {{{ properties + + var $error_message_prefix = ''; + var $mode = PEAR_ERROR_RETURN; + var $level = E_USER_NOTICE; + var $code = -1; + var $message = ''; + var $userinfo = ''; + var $backtrace = null; + + // }}} + // {{{ constructor + + /** + * PEAR_Error constructor + * + * @param string $message message + * + * @param int $code (optional) error code + * + * @param int $mode (optional) error mode, one of: PEAR_ERROR_RETURN, + * PEAR_ERROR_PRINT, PEAR_ERROR_DIE, PEAR_ERROR_TRIGGER, + * PEAR_ERROR_CALLBACK or PEAR_ERROR_EXCEPTION + * + * @param mixed $options (optional) error level, _OR_ in the case of + * PEAR_ERROR_CALLBACK, the callback function or object/method + * tuple. + * + * @param string $userinfo (optional) additional user/debug info + * + * @access public + * + */ + function PEAR_Error($message = 'unknown error', $code = null, + $mode = null, $options = null, $userinfo = null) + { + if ($mode === null) { + $mode = PEAR_ERROR_RETURN; + } + $this->message = $message; + $this->code = $code; + $this->mode = $mode; + $this->userinfo = $userinfo; + if (function_exists("debug_backtrace")) { + if (@!PEAR::getStaticProperty('PEAR_Error', 'skiptrace')) { + $this->backtrace = debug_backtrace(); + } + } + if ($mode & PEAR_ERROR_CALLBACK) { + $this->level = E_USER_NOTICE; + $this->callback = $options; + } else { + if ($options === null) { + $options = E_USER_NOTICE; + } + $this->level = $options; + $this->callback = null; + } + if ($this->mode & PEAR_ERROR_PRINT) { + if (is_null($options) || is_int($options)) { + $format = "%s"; + } else { + $format = $options; + } + printf($format, $this->getMessage()); + } + if ($this->mode & PEAR_ERROR_TRIGGER) { + trigger_error($this->getMessage(), $this->level); + } + if ($this->mode & PEAR_ERROR_DIE) { + $msg = $this->getMessage(); + if (is_null($options) || is_int($options)) { + $format = "%s"; + if (substr($msg, -1) != "\n") { + $msg .= "\n"; + } + } else { + $format = $options; + } + die(sprintf($format, $msg)); + } + if ($this->mode & PEAR_ERROR_CALLBACK) { + if (is_callable($this->callback)) { + call_user_func($this->callback, $this); + } + } + if ($this->mode & PEAR_ERROR_EXCEPTION) { + trigger_error("PEAR_ERROR_EXCEPTION is obsolete, use class PEAR_ErrorStack for exceptions", E_USER_WARNING); + eval('$e = new Exception($this->message, $this->code);$e->PEAR_Error = $this;throw($e);'); + } + } + + // }}} + // {{{ getMode() + + /** + * Get the error mode from an error object. + * + * @return int error mode + * @access public + */ + function getMode() { + return $this->mode; + } + + // }}} + // {{{ getCallback() + + /** + * Get the callback function/method from an error object. + * + * @return mixed callback function or object/method array + * @access public + */ + function getCallback() { + return $this->callback; + } + + // }}} + // {{{ getMessage() + + + /** + * Get the error message from an error object. + * + * @return string full error message + * @access public + */ + function getMessage() + { + return ($this->error_message_prefix . $this->message); + } + + + // }}} + // {{{ getCode() + + /** + * Get error code from an error object + * + * @return int error code + * @access public + */ + function getCode() + { + return $this->code; + } + + // }}} + // {{{ getType() + + /** + * Get the name of this error/exception. + * + * @return string error/exception name (type) + * @access public + */ + function getType() + { + return get_class($this); + } + + // }}} + // {{{ getUserInfo() + + /** + * Get additional user-supplied information. + * + * @return string user-supplied information + * @access public + */ + function getUserInfo() + { + return $this->userinfo; + } + + // }}} + // {{{ getDebugInfo() + + /** + * Get additional debug information supplied by the application. + * + * @return string debug information + * @access public + */ + function getDebugInfo() + { + return $this->getUserInfo(); + } + + // }}} + // {{{ getBacktrace() + + /** + * Get the call backtrace from where the error was generated. + * Supported with PHP 4.3.0 or newer. + * + * @param int $frame (optional) what frame to fetch + * @return array Backtrace, or NULL if not available. + * @access public + */ + function getBacktrace($frame = null) + { + if ($frame === null) { + return $this->backtrace; + } + return $this->backtrace[$frame]; + } + + // }}} + // {{{ addUserInfo() + + function addUserInfo($info) + { + if (empty($this->userinfo)) { + $this->userinfo = $info; + } else { + $this->userinfo .= " ** $info"; + } + } + + // }}} + // {{{ toString() + + /** + * Make a string representation of this object. + * + * @return string a string with an object summary + * @access public + */ + function toString() { + $modes = array(); + $levels = array(E_USER_NOTICE => 'notice', + E_USER_WARNING => 'warning', + E_USER_ERROR => 'error'); + if ($this->mode & PEAR_ERROR_CALLBACK) { + if (is_array($this->callback)) { + $callback = (is_object($this->callback[0]) ? + strtolower(get_class($this->callback[0])) : + $this->callback[0]) . '::' . + $this->callback[1]; + } else { + $callback = $this->callback; + } + return sprintf('[%s: message="%s" code=%d mode=callback '. + 'callback=%s prefix="%s" info="%s"]', + strtolower(get_class($this)), $this->message, $this->code, + $callback, $this->error_message_prefix, + $this->userinfo); + } + if ($this->mode & PEAR_ERROR_PRINT) { + $modes[] = 'print'; + } + if ($this->mode & PEAR_ERROR_TRIGGER) { + $modes[] = 'trigger'; + } + if ($this->mode & PEAR_ERROR_DIE) { + $modes[] = 'die'; + } + if ($this->mode & PEAR_ERROR_RETURN) { + $modes[] = 'return'; + } + return sprintf('[%s: message="%s" code=%d mode=%s level=%s '. + 'prefix="%s" info="%s"]', + strtolower(get_class($this)), $this->message, $this->code, + implode("|", $modes), $levels[$this->level], + $this->error_message_prefix, + $this->userinfo); + } + + // }}} +} + +/* + * Local Variables: + * mode: php + * tab-width: 4 + * c-basic-offset: 4 + * End: + */ +?> \ No newline at end of file diff --git a/bundled-libs/Smarty/BUGS b/bundled-libs/Smarty/BUGS new file mode 100644 index 00000000..9f1a80f3 --- /dev/null +++ b/bundled-libs/Smarty/BUGS @@ -0,0 +1,7 @@ +Smarty is supported only in PHP 4.0.6 or later. + +Smarty versions previous to 2.0 require the PEAR libraries. Be sure to include +the path to the PEAR libraries in your php include_path. Config_file.class.php +uses the PEAR library for its error handling routines. PEAR comes with the PHP +distribution. Unix users check /usr/local/lib/php, windows users check +C:/php/pear. diff --git a/bundled-libs/Smarty/COPYING.lib b/bundled-libs/Smarty/COPYING.lib new file mode 100644 index 00000000..3b204400 --- /dev/null +++ b/bundled-libs/Smarty/COPYING.lib @@ -0,0 +1,458 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS diff --git a/bundled-libs/Smarty/ChangeLog b/bundled-libs/Smarty/ChangeLog new file mode 100644 index 00000000..41af8fa6 --- /dev/null +++ b/bundled-libs/Smarty/ChangeLog @@ -0,0 +1,7649 @@ +2006-05-25 boots + + * NEWS + libs/Smarty_Compiler.class.php: + un-hide hidden xml open tags + +2006-05-09 boots + + * NEWS + libs/Smarty_Compiler.class.php: + separate handling of comment blocks from "special blocks" + + * NEWS + libs/plugins/function.popup_init.php: + reverted {popup_init} as proposed change to insertion behviour was not BC + +2006-05-04 boots + + * NEWS + libs/plugins/function.popup_init.php: + changed {popup_init} to only emit code once during a request + + Thanks to TGKnIght from forums + +2006-04-22 Messju Mohr + + * NEWS + libs/Smarty_Compiler.class.php: + fix handling of block-methods of registered objects + thanks to El Hombre Gris + +2006-04-04 Monte Ohrt + + * libs/plugins/function.html_select_date.php: + fix typo + +2006-03-09 Monte Ohrt + + * (Smarty_2_6_13) + NEWS: + update for release + +2006-03-08 Monte Ohrt + + * libs/plugins/modifier.regex_replace.php: + remove delim quote + + * libs/plugins/modifier.regex_replace.php: + fix delimiter issue + +2006-03-03 Monte Ohrt + + * libs/plugins/modifier.regex_replace.php: + use preg_replace to cover any space chars + + * libs/plugins/modifier.regex_replace.php: + fix problem with allowing "e" modifier + +2006-01-29 Messju Mohr + + * libs/Smarty_Compiler.class.php: + removed possiblity for E_NOTICE on an undefined variable in + Smarty_Compiler::_compile_if_tag() - thanks to sbeh + +2006-01-18 Monte Ohrt + + * libs/Config_File.class.php + libs/Smarty.class.php + libs/Smarty_Compiler.class.php: + update version numbers + + * (Smarty_2_6_12) + NEWS: + commit 2.6.12 release + +2006-01-15 Messju Mohr + + * NEWS + libs/Smarty_Compiler.class.php: + fixed use of references $cache_attrs and $repeat in Smarty_Compiler. + + php does not allow to pass an assigned by reference to a function. since + php-5.1.2 + the reference to the lval gets lost when passing an assignment. + +2005-12-31 Messju Mohr + + * NEWS + libs/Smarty.class.php: + fixed incompatible use of fread() in Smarty::_read_file() + it choke on php-5.1.1 and later. + thanks to andig for pointing this out. + +2005-12-21 boots + + * NEWS + libs/Smarty_Compiler.class.php: + Fix improper tokenization of certain inline math expressions. + + Thanks to gerard at forums for reporting this. + +2005-12-19 Messju Mohr + + * libs/plugins/function.math.php: + fixed problem with math in certain LC_NUMERIC locales. + thanks to wiebren for providing problem+solution. + +2005-12-14 Messju Mohr + + * NEWS: + fixed iso-latin1 special chars + +2005-12-14 Monte Ohrt + + * libs/Config_File.class.php + libs/Smarty.class.php + libs/Smarty_Compiler.class.php: + update version numbers + + * (Smarty_2_6_11) + NEWS: + commit NEWS file for 2.6.11 + +2005-12-08 Messju Mohr + + * docs/de/getting-started.xml: + sync with en + +2005-11-29 Messju Mohr + + * NEWS + libs/Smarty_Compiler.class.php: + fixed code generation of non-cacheable blocks to play well with php's + "Alternative syntax" used for example in compiled {if}..{else}..{/if} + blocks. + + (see: http://php.net/manual/en/control-structures.alternative-syntax.php + on "Alternative syntax") + + thanks to kihara from the forum. + +2005-11-26 Messju Mohr + + * NEWS: + fixed handling of multiple identical calls to {insert}. + + the function was called multiple times, but all inserts where replaced + by the results of the first call to the insert function. + + * libs/plugins/compiler.assign.php + libs/plugins/function.config_load.php: + added credits + + * libs/plugins/function.popup.php: + added "closeclick" from + http://www.bosrup.com/web/overlib/?Command_Reference + +2005-11-23 boots + + * NEWS + libs/Config_File.class.php + libs/Smarty.class.php + libs/Smarty_Compiler.class.php + libs/plugins/modifier.escape.php: + replace {} string access with equivalent substr() to avoid E_STRICT + warnings in PHP 5.1 + +2005-11-09 boots + + * NEWS + libs/Smarty.class.php: + return valid reference in get_config_vars() when given var is non-existant + +2005-10-11 Monte Ohrt + + * libs/plugins/block.textformat.php + libs/plugins/compiler.assign.php + libs/plugins/function.assign_debug_info.php + libs/plugins/function.config_load.php + libs/plugins/function.counter.php + libs/plugins/function.eval.php + libs/plugins/function.fetch.php + libs/plugins/function.html_options.php + libs/plugins/function.html_select_date.php + libs/plugins/function.html_select_time.php + libs/plugins/function.math.php + libs/plugins/function.popup.php + libs/plugins/function.popup_init.php + libs/plugins/modifier.capitalize.php + libs/plugins/modifier.count_characters.php + libs/plugins/modifier.count_paragraphs.php + libs/plugins/modifier.count_sentences.php + libs/plugins/modifier.count_words.php + libs/plugins/modifier.date_format.php + libs/plugins/modifier.debug_print_var.php + libs/plugins/modifier.default.php + libs/plugins/modifier.escape.php + libs/plugins/modifier.indent.php + libs/plugins/modifier.lower.php + libs/plugins/modifier.regex_replace.php + libs/plugins/modifier.replace.php + libs/plugins/modifier.spacify.php + libs/plugins/modifier.string_format.php + libs/plugins/modifier.strip_tags.php + libs/plugins/modifier.truncate.php + libs/plugins/modifier.upper.php + libs/plugins/modifier.wordwrap.php + libs/plugins/shared.escape_special_chars.php + libs/plugins/shared.make_timestamp.php: + Added author title to plugins where they don't exist. I put my name where I + was the original or co-author. If there needs to be more credit given + somewhere, speak up! + +2005-10-10 Monte Ohrt + + * NEWS + libs/plugins/function.html_image.php: + add path_prefix to html_image, fix incorrect secure_dir error when image + file is missing + +2005-10-04 Monte Ohrt + + * demo/templates/index.tpl: + remove popup example, update section var syntax + +2005-09-16 Nuno Lopes + + * docs/de/getting-started.xml: + more fixes + + * docs/de/getting-started.xml: + fix php bug #34520: broken example display (de only) + +2005-08-30 Monte Ohrt + + * libs/plugins/modifier.escape.php: + change default charset from utf8 to iso-8859-1 + + * NEWS + libs/plugins/modifier.escape.php: + add char_set param + +2005-08-17 Monte Ohrt + + * NEWS: + fix notice in debug security check + + * libs/Smarty.class.php: + fix typo + + * NEWS + libs/Smarty.class.php: + return valid reference in get_template_vars() when given var is + non-existant + +2005-08-12 Monte Ohrt + + * NEWS + libs/plugins/modifier.escape.php: + add "urlpathinfo" escape type to escape modifier. (apache does not like %2F + in the PATH_INFO) + +2005-08-05 Monte Ohrt + + * NEWS + libs/Config_File.class.php + libs/Smarty.class.php + libs/Smarty_Compiler.class.php: + update version numbers + +2005-08-04 Monte Ohrt + + * NEWS: + update secure_dir notes + + * NEWS: + allow debug.tpl to work from arbitrary dir + +2005-08-04 Messju Mohr + + * NEWS + libs/Smarty_Compiler.class.php: + fixed proper escaping for literal strings passed to + Smarty_Compiler::_expand_quoted_text() by + Smarty_Compiler::_parse_var_props() + +2005-07-27 Messju Mohr + + * NEWS + libs/plugins/shared.make_timestamp.php: + removed ambiguity for numeric values passed to smarty_make_timestamp(). + numeric values are *always* treated as timestamps now. + +2005-07-18 Messju Mohr + + * libs/Config_File.class.php: + removed E_NOTICE from Config_File::get() + + * libs/Smarty.class.php: + removed E_NOTICE + +2005-07-10 Yannick Torres + + * docs/fr/getting-started.xml: + sync with EN + +2005-07-08 Monte Ohrt + + * NEWS: + correct username in NEWS file + + * NEWS + libs/plugins/function.html_select_date.php: + added passthru attribute feature to html_select_date + +2005-07-03 Yannick Torres + + * docs/fr/language-snippets.ent + docs/fr/preface.xml: + sync with EN + +2005-06-16 Messju Mohr + + * docs/de/preface.xml + docs/de/preface.xml: + sync with en + +2005-06-13 Monte Ohrt + + * NEWS + libs/plugins/modifier.truncate.php: + add "middle" parameter to truncate modifier + +2005-06-10 Messju Mohr + + * docs/de/livedocs.ent: + added german livedocs.ent + + * docs/de/language-snippets.ent + docs/de/preface.xml: + sync with en + +2005-06-09 Messju Mohr + + * docs/de/bookinfo.xml + docs/de/getting-started.xml + docs/de/getting-started.xml: + sync with en + +2005-05-24 Yannick Torres + + * docs/fr/getting-started.xml + docs/fr/language-snippets.ent: + sync with EN + +2005-05-20 Monte Ohrt + + * libs/plugins/function.html_radios.php: + fix allowable label id characters + +2005-05-06 Monte Ohrt + + * NEWS + libs/plugins/function.html_radios.php: + make form input label ids optional (monte) + +2005-05-02 Monte Ohrt + + * NEWS + libs/Smarty_Compiler.class.php: + add error message for empty if/elseif statements + +2005-04-15 Monte Ohrt + + * NEWS + libs/plugins/function.html_radios.php: + cast selected value to string for comparison in html_radios + +2005-04-07 Messju Mohr + + * NEWS + libs/plugins/function.html_select_date.php: + added xhtml compliance to html_select_date's year_as_text-feature + thanks to Mark West + + * NEWS + libs/plugins/function.html_select_date.php: + fixed handling of selected month html_select_date + thanks to Yuri Weseman for providing problem+solution + +2005-04-07 Nuno Lopes + + * docs/configure.in: + sync configure and file-entities scripts with phpdoc, for better + windows/cygwin support + +2005-03-31 Monte Ohrt + + * libs/Config_File.class.php + libs/Smarty.class.php + libs/Smarty_Compiler.class.php: + update version numbers + + * (Smarty_2_6_9) + NEWS: + update NEWS file + +2005-03-30 Messju Mohr + + * libs/plugins/function.math.php: + re-enabled hex-constant. i hope in a sane way this time. + +2005-03-30 Monte Ohrt + + * libs/plugins/function.math.php: + fix function testing logic + + * libs/Smarty_Compiler.class.php: + disable variable func calls completely + + * libs/Smarty_Compiler.class.php: + disallow variable func calls when security is enabled + +2005-03-22 Messju Mohr + + * NEWS + libs/Config_File.class.php + libs/Smarty.class.php + libs/Smarty_Compiler.class.php: + bumped version-number to 2.6.9-dev + added headline of 2.6.6 release to NEWS file + +2005-03-21 Messju Mohr + + * (Smarty_2_6_8) + NEWS: + maybe even better this way. thanks monte :) + + * NEWS: + little more clear news-entry + +2005-03-21 Monte Ohrt + + * NEWS: + update NEWS with e-modifier removal + + * (Smarty_2_6_8) + libs/plugins/modifier.regex_replace.php: + remove e-modifier + +2005-03-19 Messju Mohr + + * NEWS + libs/Smarty_Compiler.class.php: + objects don't get casted to arrays anymore in {foreach} + +2005-02-26 Messju Mohr + + * NEWS + libs/Smarty.class.php: + add "null" as a valid token for {if} when security is enabled + +2005-02-25 Monte Ohrt + + * NEWS + libs/plugins/function.mailto.php: + add javascript_charcode option to mailto + +2005-02-24 Monte Ohrt + + * NEWS: + update NEWS file + + * QUICK_START + libs/plugins/function.html_radios.php: + add label ids to html_radios + +2005-02-10 Monte Ohrt + + * QUICK_START: + update with directory structure + +2005-02-10 Nuno Lopes + + * docs/Makefile.in: + fix chm generation + +2005-02-10 Messju Mohr + + * libs/Smarty_Compiler.class.php: + fixed too agressive {strip} around delimiters inside strip-blocks + +2005-02-10 Monte Ohrt + + * QUICK_START: + fix a couple errors + +2005-02-10 Nuno Lopes + + * docs/Makefile.in + docs/README: + commiting the new tools to make the CHM manual. + +2005-02-09 Messju Mohr + + * NEWS + libs/Smarty_Compiler.class.php: + fixed handling of strip-tags with non-default delimiters + +2005-02-04 Messju Mohr + + * libs/plugins/function.html_radios.php: + fixed syntax error. shame on me. + +2005-02-03 Monte Ohrt + + * QUICK_START: + fix example + + * QUICK_START: + initial commit + + * RELEASE_NOTES + libs/Config_File.class.php + libs/Smarty.class.php + libs/Smarty_Compiler.class.php: + update version numbers in cvs + + * (Smarty_2_6_7) + NEWS + libs/Config_File.class.php + libs/Smarty.class.php + libs/Smarty_Compiler.class.php: + commit version numbers for new release + +2005-02-03 Messju Mohr + + * (Smarty_2_6_7) + libs/plugins/function.html_image.php: + fixed comment (thanks to CirTap) + +2005-02-01 Monte Ohrt + + * libs/plugins/function.html_image.php: + remove border tag + +2005-02-01 Messju Mohr + + * libs/Smarty.class.php: + fixed serialization of values containing newlines (like _cache_attrs) + in core_write_cache_file() + + bumped version to 2.6.6-dev-3 to indicate that the fileformat of cache + has changed + +2005-01-30 Messju Mohr + + * NEWS + libs/Smarty_Compiler.class.php: + fixed handling of hashed opening php-tags inside strip-blocks + (reported by titi_rafa) + +2005-01-30 Nuno Lopes + + * docs/fr/language-snippets.ent: + fix build + +2005-01-28 Messju Mohr + + * NEWS + libs/plugins/modifier.escape.php: + escape:url now uses the (RFC 1738 compliant) rawurlencode() + +2005-01-23 Messju Mohr + + * libs/Smarty.class.php: + replaced ? true : false and removed intermediate $_cookie_var in the + handling of the SMARTY_DEBUG-cookie + +2005-01-22 Yannick Torres + + * docs/fr/bookinfo.xml: + update EN-Revision tag + +2005-01-21 Monte Ohrt + + * README + RELEASE_NOTES + docs/de/bookinfo.xml + docs/fr/bookinfo.xml + libs/Smarty.class.php + libs/Smarty_Compiler.class.php + libs/plugins/function.cycle.php + libs/plugins/function.debug.php + libs/plugins/function.html_checkboxes.php + libs/plugins/function.html_image.php + libs/plugins/function.html_radios.php + libs/plugins/function.html_table.php + libs/plugins/function.mailto.php + libs/plugins/modifier.cat.php + libs/plugins/modifier.nl2br.php + libs/plugins/modifier.strip.php + libs/plugins/outputfilter.trimwhitespace.php: + de-spammify e-mails + + * README + RELEASE_NOTES + docs/de/bookinfo.xml + docs/fr/bookinfo.xml + libs/Config_File.class.php + libs/Smarty.class.php + libs/Smarty_Compiler.class.php + libs/plugins/function.cycle.php + libs/plugins/function.debug.php + libs/plugins/function.html_checkboxes.php + libs/plugins/function.html_image.php + libs/plugins/function.html_radios.php + libs/plugins/function.html_table.php + libs/plugins/function.mailto.php + libs/plugins/modifier.cat.php + libs/plugins/modifier.nl2br.php + libs/plugins/modifier.strip.php + libs/plugins/outputfilter.trimwhitespace.php: + update copyright notices, e-mail addresses + +2005-01-06 Messju Mohr + + * libs/Smarty_Compiler.class.php: + reduced the code that is generated on a {foreach}-block that has a + name. + + instead of pre-computing all foreach-properties (like first, last, + show) on each iteration, they are computed on demand as soon as + {$smarty.foreach.*}-variables are used. + + * NEWS + libs/Smarty_Compiler.class.php: + slight optimization in the compilation of $smarty.const.FOO . + + more complex consts like $smarty.const.$name still compile to + constant($this->_tpl_vars['name']) + +2005-01-05 Messju Mohr + + * NEWS + libs/Smarty_Compiler.class.php: + make block functions and registered objects' block methods use a + local variable for block_content instead of $this->_block_content + + it's not necessary to have $smarty->_block_content accessible. + +2005-01-04 Yannick Torres + + * docs/fr/bookinfo.xml: + sync with EN + +2005-01-01 Messju Mohr + + * libs/Config_File.class.php + libs/Smarty.class.php + libs/Smarty_Compiler.class.php: + Happy new year from germany. + +2004-12-28 Monte Ohrt + + * libs/Smarty.class.php: + fix _read_file comments + +2004-12-26 Yannick Torres + + * docs/fr/getting-started.xml + docs/fr/preface.xml: + typo + + * docs/fr/language-defs.ent + docs/fr/language-snippets.ent + docs/fr/livedocs.ent: + sync with EN & typo + +2004-12-21 Yannick Torres + + * docs/fr/bookinfo.xml + docs/fr/getting-started.xml + docs/fr/translation.xml: + sync with EN + +2004-12-17 Messju Mohr + + * NEWS + libs/Smarty_Compiler.class.php: + fixed escaping of template-filenames in the generated code that loads + needed plugins + +2004-12-15 Monte Ohrt + + * NEWS + libs/plugins/function.popup.php: + fix invalid HTML issue with popup + +2004-12-06 boots + + * NEWS + libs/plugins/function.popup.php: + - fixed {popup} to properly handle inarray and function parameters and + added support for mouseoff and followmouse options + +2004-11-21 Mehdi Achour + + * docs/fr/livedocs.ent: + add livedocs specific entities files + +2004-11-16 Messju Mohr + + * libs/plugins/function.html_checkboxes.php + libs/plugins/function.html_radios.php: + cleaned up typecasting + +2004-11-15 Messju Mohr + + * libs/plugins/function.html_options.php: + fixed semantically misleading check for $options (use isset() instead + of is_array() because it is always an array). + + thanks to albert almeida. + +2004-11-08 Messju Mohr + + * libs/Smarty_Compiler.class.php: + removed unused code + +2004-10-25 Mehdi Achour + + * docs/fr/bookinfo.xml + docs/fr/getting-started.xml: + sync with en + +2004-10-13 Monte Ohrt + + * NEWS: + update header + +2004-10-02 Messju Mohr + + * NEWS: + fixed nocache-handling with nested includes. there was a logical error + in the replacement of internal nocache-tags to dynamic content that + lead to false results with deeply nested includes or with + nocache-blocks inside nocache-blocks. + + many thanks to Lars Jankowfsky for providing big help on reproducing + and tracking down this bug! + +2004-10-01 Messju Mohr + + * libs/Smarty.class.php + libs/Smarty_Compiler.class.php: + - better header for compiled includes (more in line with compiled + templates) + + - reuse cache_serials if a file is compiled more than once in one + process (force_compile) + + - don't print nocache-delimiters wenn already inside + process_cached_inserts() + +2004-09-29 Messju Mohr + + * libs/Smarty.class.php: + switched from @count() to !empty() . this was pointed out a few times + by a few people with buggy error-handlers + + * libs/Smarty_Compiler.class.php: + added some property declarations + +2004-09-28 Messju Mohr + + * libs/Smarty.class.php: + bumped up version number to reflect incompatibility in tempfiles of + 'core' vs. 'internals' + +2004-09-24 Messju Mohr + + * libs/plugins/function.html_select_date.php: + fixed $start_year when no value for the year in $time is given. + +2004-09-21 Messju Mohr + + * libs/plugins/function.html_table.php: + fixed handling of "inner"-attribute + + * libs/Smarty_Compiler.class.php: + fixed handling of object derefence inside backticks + +2004-09-20 Monte Ohrt + + * libs/debug.tpl: + add tags + +2004-09-18 boots + + * libs/Smarty.class.php + libs/Smarty_Compiler.class.php + libs/plugins/function.config_load.php + libs/plugins/function.debug.php + libs/plugins/function.fetch.php + libs/plugins/function.html_image.php: + Fixed \\r\\n line endings mistakenly introduced in last commit. d'oh. + +2004-09-16 boots + + * NEWS + libs/Smarty.class.php + libs/Smarty_Compiler.class.php + libs/core/core.assemble_plugin_filepath.php + libs/core/core.assign_smarty_interface.php + libs/core/core.create_dir_structure.php + libs/core/core.display_debug_console.php + libs/core/core.get_include_path.php + libs/core/core.get_microtime.php + libs/core/core.get_php_resource.php + libs/core/core.is_secure.php + libs/core/core.is_trusted.php + libs/core/core.load_plugins.php + libs/core/core.load_resource_plugin.php + libs/core/core.process_cached_inserts.php + libs/core/core.process_compiled_include.php + libs/core/core.read_cache_file.php + libs/core/core.rm_auto.php + libs/core/core.rmdir.php + libs/core/core.run_insert_handler.php + libs/core/core.smarty_include_php.php + libs/core/core.write_cache_file.php + libs/core/core.write_compiled_include.php + libs/core/core.write_compiled_resource.php + libs/core/core.write_file.php + libs/plugins/function.config_load.php + libs/plugins/function.debug.php + libs/plugins/function.fetch.php + libs/plugins/function.html_image.php: + Moved /libs/core to /libs/internals and created new constant, + SMARTY_CORE_DIR which defaults to SMARTY_DIR/internals. This should help + CVS and rsynch users butupgrades will require changes and this may affect + 3rd party plugins that use the /core dir. + +2004-09-15 Messju Mohr + + * NEWS + libs/Smarty_Compiler.class.php: + moved $this->_num_const_regexp out of $this->_var_regexp and added it + to the places that affect $this->_var_regexp + + this should fix some problems parsing plugin-names endings with digits + +2004-09-14 Messju Mohr + + * libs/Config_File.class.php + libs/Smarty.class.php + libs/Smarty_Compiler.class.php: + update files to 2.6.6-dev + +2004-09-13 Messju Mohr + + * NEWS: + fixed typo + +2004-09-13 Monte Ohrt + + * (Smarty_2_6_5) + NEWS: + update NEWS file with parsing correction note + +2004-09-11 Messju Mohr + + * libs/plugins/function.debug.php: + removed notice from {debug} + thanks to Peter Billen for pointing this one out! + +2004-09-11 Monte Ohrt + + * libs/Smarty_Compiler.class.php: + fix more object calling syntax issues + +2004-09-10 Messju Mohr + + * NEWS + libs/Smarty.class.php + libs/Smarty_Compiler.class.php: + added $smarty->security_settings['ALLOW_CONSTANTS'] + including test-cases for them + +2004-09-09 Monte Ohrt + + * libs/Smarty_Compiler.class.php: + break down regex to digestable chunks, fix multiple param problem with + method calls, + add object method testing to unit_test cases + + * libs/Smarty_Compiler.class.php: + update code comment with more examples + + * libs/Smarty_Compiler.class.php: + allow objects in arbitrary param positions + + * libs/Smarty_Compiler.class.php: + fix object parameter regex, allow one level of object indirection + + * libs/Smarty_Compiler.class.php: + fix compile problem with numeric constants and math operator matching + +2004-09-07 Monte Ohrt + + * libs/Config_File.class.php + libs/Smarty.class.php + libs/Smarty_Compiler.class.php: + update files to 2.6.5-dev + + * (Smarty_2_6_4) + NEWS: + update NEWS file with 2.6.4 header + +2004-08-31 Monte Ohrt + + * libs/Smarty_Compiler.class.php: + fix preg_quote + + * libs/Smarty_Compiler.class.php: + fix math in object params, clean up some regex on the way, change + preg_ delimiters to ~ to avoid character clashes with ! and % + +2004-08-30 Monte Ohrt + + * NEWS + libs/Smarty_Compiler.class.php: + add $smarty.ldelim and $smarty.rdelim to smarty special var + +2004-08-29 Messju Mohr + + * NEWS + libs/core/core.write_file.php: + tempnam() seems to be borken on many installation. + + now we try tempnam first and if that fails we generate our own + temp-filename with uniqid() + +2004-08-23 Monte Ohrt + + * libs/plugins/modifier.capitalize.php: + dont use constant, use static var instead + + * libs/plugins/modifier.capitalize.php: + implement optional param to capitalize for digit behavior + + * libs/plugins/modifier.capitalize.php: + another commit to capitalize, taking special chars into account + +2004-08-23 Messju Mohr + + * libs/Smarty_Compiler.class.php: + cleaned up attribute-handling in Smarty_Compiler::_compile_foreach_start() + +2004-08-23 Monte Ohrt + + * NEWS + libs/plugins/function.html_select_date.php + libs/plugins/modifier.capitalize.php: + fix capitalize modifier to not rely on buggy ucwords() func + +2004-08-20 Monte Ohrt + + * libs/plugins/function.html_select_date.php: + update version + + * NEWS + libs/plugins/function.html_select_date.php: + make time param work with negative timestamps, force year range to include + given date unless explicitly set + +2004-08-19 Monte Ohrt + + * NEWS + libs/plugins/function.fetch.php: + fix bug with fetch, passing user/pass in url did not work + +2004-08-13 Messju Mohr + + * libs/Smarty_Compiler.class.php: + fixed handling of {foreachelse} and {sectionelse} that got borked with + the latest commit (v 1.330) + +2004-08-12 Messju Mohr + + * NEWS + libs/Smarty_Compiler.class.php: + fixed occasional wrong error messages on mismatched tags when + {else}, {elseif}, {foreachelse} or {sectionelse} is involved + + thanks to Ooypunk for pointing me on this + +2004-08-12 Nuno Lopes + + * docs/.cvsignore + docs/Makefile.in + docs/configure.in: + enable russian PDF builds + +2004-07-30 Nuno Lopes + + * docs/configure.in: + typo + + * docs/Makefile.in + docs/README + docs/configure.in: + add make test_xml + this is usefull to detect XML problems + +2004-07-29 Nuno Lopes + + * docs/configure.in: + avoid warnings in head + + * docs/.cvsignore + docs/Makefile.in + docs/README + docs/configure.in: + build pdf files + just type make pdf + +2004-07-27 Messju Mohr + + * NEWS + libs/Smarty_Compiler.class.php: + fixed handling of methods arguments. + + thanks to Manfred Wischin for finding this one and providing the + conceptual fix. + +2004-07-23 Messju Mohr + + * libs/plugins/function.html_checkboxes.php + libs/plugins/function.html_radios.php: + there was little flaw in smarty_function_html_radios() and + smarty_function_html_checkboxes(): + + the newly introduced assign-attribute was still added to the + tag-output as an extra-attribute. + + fixed. + + * NEWS + libs/Smarty.class.php + libs/Smarty_Compiler.class.php + libs/core/core.load_plugins.php + libs/core/core.load_resource_plugin.php + libs/plugins/function.html_checkboxes.php + libs/plugins/function.html_image.php + libs/plugins/function.html_options.php + libs/plugins/function.html_radios.php + libs/plugins/function.html_select_date.php + libs/plugins/function.html_select_time.php + libs/plugins/modifier.date_format.php: + backed out renaming of _get_plugin_filepath() to get_plugin_filepath() + + we'll stick to _get_plugin_filepath() and look for a more viable + solution to be exposed to plugin-writers. + +2004-07-20 Messju Mohr + + * libs/Smarty_Compiler.class.php + libs/core/core.is_trusted.php + libs/plugins/compiler.assign.php: + Some fixes on PhpDocumentor comments. Thanks go to Ruben Vermeersch. + +2004-07-16 andreas halter + + * docs/de/bookinfo.xml + docs/de/getting-started.xml + docs/de/language-defs.ent + docs/de/language-snippets.ent + docs/de/preface.xml: + - updated for 2.6.3 + - updates for new build system + - added missing files + - corrections from users + - revcheck comments for all files + - big up to didou and nuno, brilliant work + - make test: ok + - make: ok + +2004-07-16 Nuno Lopes + + * docs/de/getting-started.xml: + fix the revision tracking tag + the revision number might not be right. just check it, please + +2004-07-16 andreas halter + + * docs/de/getting-started.xml: + - updated version (incl revcheck comment) for revcheck testing + +2004-07-14 Monte Ohrt + + * libs/Smarty.class.php: + replace " with ' where literal strings are quoted (ever so slight speedup) + +2004-07-12 Messju Mohr + + * libs/plugins/modifier.date_format.php: + changed call from $smarty->_get_plugin_filepath() to + $smarty->get_plugin_filepath() + + * libs/plugins/function.html_checkboxes.php + libs/plugins/function.html_image.php + libs/plugins/function.html_options.php + libs/plugins/function.html_radios.php + libs/plugins/function.html_select_date.php + libs/plugins/function.html_select_time.php: + renamed calls to $smarty->_get_plugin_filepath() to + $smarty->get_plugin_filepath() + + * NEWS + libs/Smarty.class.php + libs/Smarty_Compiler.class.php + libs/core/core.load_plugins.php + libs/core/core.load_resource_plugin.php: + renamed Smarty::_get_plugin_filepath() to Smarty::get_plugin_filepath() + + * NEWS + libs/Smarty.class.php + libs/core/core.write_compiled_include.php + libs/core/core.write_compiled_resource.php + libs/core/core.write_file.php: + removed touch() call. changing the timestamp of the compiled-template + to the source template's may be irritating for certain + source-code-caches. now a newly compiled template gets the current + time as timestamp. + +2004-07-02 gerald croes + + * docs/fr/getting-started.xml + docs/fr/preface.xml: + Fixed missing tags to be able to make doc again + + * docs/fr/preface.xml: + added the "is a good thing [TM]" as in en docs + + * docs/fr/getting-started.xml: + added ctags, updated screen => programm listing. + added the technical note founded on the en doc + +2004-07-02 Monte Ohrt + + * NEWS + libs/plugins/function.html_checkboxes.php + libs/plugins/function.html_radios.php + libs/plugins/function.mailto.php: + add assign attribute to html_checkboxes and html_radios + +2004-07-01 Messju Mohr + + * NEWS + libs/Smarty.class.php: + removed use of get_include_filepath() inside + get_auto_filename(). thanks go to c960657 + + * NEWS + libs/Smarty_Compiler.class.php: + enhanced error-reporting for {foreach} + + * NEWS + libs/Smarty_Compiler.class.php: + fixed handling of digits inside tagnames. this problem slipped into + the regexps by adding support for numeric contants next to string + constants as variables. + +2004-06-27 Messju Mohr + + * NEWS + libs/Smarty_Compiler.class.php: + fixed escaping of backslashes in Smarty_Compiler::_quote_replace() + +2004-06-23 Monte Ohrt + + * libs/plugins/modifier.date_format.php: + display date_format %e, %T and %D as expected for windows + +2004-06-17 Messju Mohr + + * libs/Config_File.class.php + libs/Smarty.class.php + libs/Smarty_Compiler.class.php: + changed version-number to 2.6.4-dev + +2004-06-16 Monte Ohrt + + * (Smarty_2_6_3) + NEWS: + update NEWS file with version number + +2004-06-09 Monte Ohrt + + * NEWS + libs/plugins/modifier.escape.php: + added escapement of ' + + * docs/fr/translation.xml: + Add other translators. + +2004-06-08 Messju Mohr + + * libs/Smarty.class.php: + made the correct value of "use_sub_dirs" available to the compiler. + (not worth a NEWS-entry, i think) + +2004-06-01 Messju Mohr + + * libs/plugins/function.fetch.php: + fix: proper initialistaion of $content. + thanks to Dmitry Koteroff for pointing this out. + +2004-05-29 Mehdi Achour + + * docs/fr/translation.xml: + oups :) + + * docs/fr/translation.xml: + added translation file + +2004-05-28 Nuno Lopes + + * docs/Makefile.in: + clean also file-entities.php + +2004-05-28 Messju Mohr + + * NEWS + libs/plugins/function.mailto.php: + added obfuscation of protocol-string in {mailto} when using + hex-encoding (thanks to bharat) + +2004-05-26 Messju Mohr + + * NEWS + libs/Smarty.class.php: + enhanced auto-generated filenames for templates_c and cache + + incremented Smarty::_version because the tempfiles' structure changed + a little + +2004-05-23 Mehdi Achour + + * docs/fr/bookinfo.xml + docs/fr/getting-started.xml + docs/fr/preface.xml: + WS and added revcheck + +2004-05-21 Messju Mohr + + * libs/Smarty_Compiler.class.php: + fixed typo in error-messages + + * docs/de/language-snippets.ent + docs/fr/language-snippets.ent: + added empty language-snippets.ent to fix "make web" + +2004-05-12 Monte Ohrt + + * NEWS + libs/plugins/modifier.escape.php: + add 'nonstd' escape modifier + +2004-05-07 Monte Ohrt + + * NEWS + libs/plugins/block.textformat.php: + update textformat to not output wrap chars after last para + +2004-05-06 Messju Mohr + + * NEWS + libs/core/core.write_file.php: + use tempnam() instead of unqid() to create better temporary files in + smarty_core_write_file(). + + (thanks to xces for finding this race-condition and his work on + fixing it) + +2004-05-04 Messju Mohr + + * libs/Smarty.class.php: + added check if for file_exists() to Smarty::_read_file() + +2004-04-30 Monte Ohrt + + * NEWS + libs/plugins/modifier.escape.php: + add 'mail' attribute to escape modifier + +2004-04-20 Mehdi Achour + + * docs/manual.xml.in: + added the language-snippets.ent file and started using entities for notes + under en/programmers/api-functions + +2004-04-18 Mehdi Achour + + * docs/de/getting-started.xml + docs/fr/getting-started.xml: + new global entity for zend and php-accelerator + + * docs/fr/bookinfo.xml + docs/fr/getting-started.xml + docs/fr/preface.xml: + added myself as translator and added vim comments and xml tags + +2004-04-16 Messju Mohr + + * NEWS: + added entry for numeric constants + + * libs/Smarty_Compiler.class.php: + removed unused 2nd param in call to _parse_var() + + * libs/Smarty_Compiler.class.php: + added explanation for $this->_num_const_regexp + + * NEWS + libs/plugins/modifier.escape.php: + added escape type "decentity" to smarty_modifier_escape() + + * libs/Smarty_Compiler.class.php: + enabled numerical constants be parsed as statements. + (like {10} or {10|@range:12} ) + + * libs/Smarty_Compiler.class.php: + removed unused $smarty_compiler->_dvar_num_var_regexp + + * libs/Smarty.class.php: + reverted Stuff + + * libs/debug.tpl + libs/core/core.assemble_plugin_filepath.php + libs/core/core.read_cache_file.php + libs/core/core.write_file.php + libs/plugins/function.eval.php + libs/plugins/function.popup.php + libs/plugins/modifier.escape.php + libs/plugins/shared.make_timestamp.php: + reverted stuff + + * libs/Smarty.class.php + libs/Smarty_Compiler.class.php + libs/debug.tpl + libs/core/core.assemble_plugin_filepath.php + libs/core/core.read_cache_file.php + libs/core/core.write_file.php + libs/plugins/function.eval.php + libs/plugins/function.popup.php + libs/plugins/modifier.escape.php + libs/plugins/shared.make_timestamp.php: + Smarty_Compiler.class.php + +2004-04-15 Messju Mohr + + * NEWS + libs/core/core.write_compiled_include.php: + made smarty_core_write_compiled_include() php5-aware + + if someone knows a better way than patching the source with the + tokenizer, please stand up! + +2004-04-14 Nuno Lopes + + * docs/Makefile.in: + remove file-entities.ent also + + * docs/.cvsignore + docs/Makefile.in + docs/README: + allow make revcheck + +2004-04-13 Nuno Lopes + + * docs/configure.in: + do not need inipath + +2004-04-13 Mehdi Achour + + * docs/TODO: + done + + * docs/configure.in + docs/manual.xml.in: + now the files entites are generated dynamically + +2004-04-12 Messju Mohr + + * NEWS + libs/Config_File.class.php + libs/Smarty.class.php: + removed unused functionality to load a subset of lines from a file in + Smarty::_read_file() + + additionally removed a warning that is emitted since php-4.3.5 when + fread() is called on an empty file (with filesize()==0). thanks to + Andreas Streichardt who pointed this out. + + * NEWS + libs/core/core.is_secure.php: + smarty_core_is_secure() only checks the file for readability now, not + the directory where is in. + + * libs/Smarty.class.php: + removed unused security_setting 'ALLOW_CONSTANTS' + +2004-04-07 Messju Mohr + + * libs/plugins/function.assign_debug_info.php + libs/plugins/function.cycle.php + libs/plugins/function.mailto.php: + removed trailing spaces + + * libs/Smarty.class.php: + removed unused $smarty->_error_msg + +2004-04-04 Nuno Lopes + + * docs/configure.in: + fixing my crap + put build_date back on-line + +2004-04-03 Nuno Lopes + + * docs/Makefile.in + docs/configure.in + docs/manual.xml.in: + trying to fix ru problems + +2004-03-30 Monte Ohrt + + * libs/core/core.display_debug_console.php: + fix problem with debug_tpl path and security + + * NEWS + libs/core/core.display_debug_console.php: + fix problem displaying debug console when $default_resource_type is not + "file:" + +2004-03-29 Mehdi Achour + + * docs/TODO: + and finally, add a TODO here + + * docs/de/bookinfo.xml + docs/de/manual.sgml + docs/fr/bookinfo.xml + docs/fr/manual.xml: + translate bookinfo.xml and put back the translators + +2004-03-28 Mehdi Achour + + * docs/manual.xml.in: + add global.ent and define some general entities + + * docs/de/bookinfo.xml + docs/de/getting-started.xml + docs/de/language-defs.ent + docs/de/preface.xml: + add new de files + + * docs/de/appendixes.sgml + docs/de/designers.sgml + docs/de/getting-started.sgml + docs/de/html-common.dsl + docs/de/preface.sgml + docs/de/programmers.sgml: + drop old de files + + * docs/fr/bookinfo.xml + docs/fr/getting-started.xml + docs/fr/manual.xml + docs/fr/preface.xml: + add ommited files + + * docs/fr/language-defs.ent: + split the french dir + + * docs/fr/appendixes.sgml + docs/fr/designers.sgml + docs/fr/getting-started.sgml + docs/fr/html-common.dsl + docs/fr/manual.sgml + docs/fr/preface.sgml + docs/fr/programmers.sgml: + drop old french files + + * docs/manual.xml.in: + let's put the new build system + +2004-03-26 Mehdi Achour + + * docs/de/common.dsl + docs/de/html.dsl + docs/fr/common.dsl + docs/fr/html.dsl + docs/fr/php.dsl: + not needed anymore + +2004-03-24 Nuno Lopes + + * docs/Makefile.in: + updated stylesheets + highlight PHP automatically + + * docs/Makefile.in + docs/html.dsl: + remove unneeded file + +2004-03-23 Nuno Lopes + + * docs/version.ent.in: + remove this also + + * docs/getting-started.sgml: + remove this one too + + * docs/appendixes.sgml + docs/common.dsl + docs/designers.sgml + docs/html-common.dsl + docs/manual.sgml + docs/php.dsl + docs/preface.sgml + docs/programmers.sgml: + removing uneeded files + + * docs/.cvsignore: + commiting missing files for docbook + + * docs/.cvsignore + docs/Makefile.in + docs/configure.in + docs/manual.xml.in: + bundling docbook 4 + now make and make web works + +2004-03-23 Messju Mohr + + * NEWS + libs/plugins/function.config_load.php: + unrolled call to the is_compiled()-check to be able to supply the + correct resource_base_path for config_load. this avoids errors when + config-files are accessed where security is enabled. + + thanks to shuther for pointing out this bug. + +2004-03-20 Nuno Lopes + + * docs/manual.xml.in: + fix build date + +2004-03-18 Messju Mohr + + * libs/core/core.is_secure.php: + removed merging of $smarty->template_dir into $smarty->secure_dir + + the resource_base_path is considerd secure instead. this change should + have absolutely no impact on smarty's security's behaviour + +2004-03-18 Nuno Lopes + + * docs/configure.in: + correcting non-existent var + + * docs/.cvsignore + docs/Makefile.in + docs/configure.in + docs/manual.xml.in + docs/version.ent.in: + generate build date + + * docs/.cvsignore + docs/Makefile.in + docs/README + docs/configure.in + docs/manual.xml.in: + new build/test system + +2004-03-18 Messju Mohr + + * libs/Smarty.class.php: + moved setting of a default resource_base_path from + Smarty::_parse_resource_name() to Smarty::_fetch_resource_info() + + this shouldn't affect anything, since all calls to + _parse_resource_name() that are not done from within + _fetch_resource_info() all pass their own resource_base_path + +2004-03-17 Messju Mohr + + * NEWS + libs/Smarty.class.php: + removed '.' from the list of default resource_base_paths in + _parse_resource_name() + + this should only affect _parse_resource_name() for templates, not for + php-resources and not for config_files. the latter pass two their own + resource_base_path. + +2004-03-16 Mehdi Achour + + * docs/appendixes.sgml + docs/getting-started.sgml + docs/preface.sgml: + adding editor comments + + * docs/appendixes.sgml + docs/getting-started.sgml: + cleaning words spacing, killing tabulations, using roles for + programlisting.. + +2004-03-15 Messju Mohr + + * libs/Smarty.class.php: + simplified Smarty::clear_all_cache(); + +2004-03-12 boots + + * docs/programmers.sgml: + Updated is_cached prototype to indicate proper return type. (thanks to + Geoffrey Hoffman) + +2004-03-11 Messju Mohr + + * libs/core/core.assemble_plugin_filepath.php: + fixed little bug that prevented plugins filepaths that are found in + php's include_path (and not in one of the plugins_dirs) from being + cached in the internal plugins-filepath-cache + +2004-03-01 Monte Ohrt + + * docs/designers.sgml: + update include_php docs:wq + :q + + * docs/appendixes.sgml: + update componentized template example to something useful + +2004-02-24 Messju Mohr + + * NEWS + libs/Smarty.class.php: + _parse_resource_name() returned true on non-existant absolute + paths. This caused a warning on _fetch_resource_info() when used in + conjunction with template_exists(). It should be fixed now without + negative effects. + +2004-02-24 Monte Ohrt + + * docs/designers.sgml: + one more typo + + * docs/designers.sgml: + fix typo + +2004-02-24 Messju Mohr + + * NEWS + libs/core/core.is_secure.php: + smarty_resource_*_secure got &$smarty passed errornously as 3rd + parameter and not as 2nd. this is fixed. + +2004-02-23 Messju Mohr + + * NEWS: + fix handling of integer values like width and delay im + smarty_function_popup() + + * libs/plugins/function.popup.php: + fixed handling of integer-attributes + + * libs/Config_File.class.php + libs/Smarty.class.php + libs/Smarty_Compiler.class.php: + updated version to 2.6.3-dev + +2004-02-22 Messju Mohr + + * libs/plugins/function.html_select_date.php: + removed notice on html_select_date with the month_empty-attribute + + * libs/plugins/function.mailto.php: + removed 2 notices of undefined vars (thanks Cit) + +2004-02-17 Monte Ohrt + + * NEWS: + add header + + * (Smarty_2_6_2) + libs/Config_File.class.php + libs/Smarty.class.php + libs/Smarty_Compiler.class.php: + change some info in headers, remove fluff + +2004-02-13 Messju Mohr + + * NEWS + libs/plugins/function.html_select_date.php: + correctly handle partially empty dates (like "2004--" or "-12-"). + + * docs/programmers.sgml: + learned something about and sgml and applied this to the + use.sub.dirs-section :) + + * docs/designers.sgml: + changed attribute-name "checked" to "selected" in the docs for + html_radios and html_checkboxes. "checked" is deprecated for ages + AFAIK and selected is recommended for consistency with {html_options} + + * docs/programmers.sgml: + added note about use_sub_dirs and Smarty-2.6.2 . + fixed markup for section about clear_compiled_tpl() . + +2004-02-12 Messju Mohr + + * NEWS + libs/Config_File.class.php: + YES and NO should not be booleanized inside triple-quotes in a + config-file. this behaviour changed by accident in 2.6.1 and is now + reverted to pre-2.6.1 behaviour + +2004-02-10 Messju Mohr + + * NEWS + libs/Config_File.class.php: + fixed slurping of a the next line following a triple-quoted value in a + config-file + +2004-02-07 Messju Mohr + + * libs/Config_File.class.php: + avoid @-operator for handling empty lines in Config_File.class.php + + * libs/Smarty_Compiler.class.php: + removed two notices from Smarty_Compiler::_parse_is_expr() + (thanks shuther!) + + * NEWS + libs/Smarty.class.php: + changed default for use_sub_dirs to false + + * libs/plugins/function.mailto.php: + removed notice of undefined variable. (thanks shuther!) + +2004-01-29 Messju Mohr + + * libs/Smarty_Compiler.class.php: + added file and line-number-information to error-messages regarding + assigned objects an an error messages regarding modifiers with + security. + +2004-01-27 Messju Mohr + + * libs/Smarty_Compiler.class.php: + removed use of temporary var $_params in compiled code of block-plugins + + * NEWS + libs/plugins/function.popup.php: + fixed quoting of values in smarty_function_popup() + +2004-01-25 Messju Mohr + + * docs/programmers.sgml: + documented parameters of Smarty::clear_compiled_tpl() + + * libs/Smarty_Compiler.class.php: + Smarty_Compiler::_syntax_error() uses Smarty::_trigger_fatal_error() now + instead of the trigger_error()-function + + * libs/Smarty.class.php: + Smarty::_trigger_fatal_error() uses Smarty::trigger_error() now, + instead of the native trigger_error()-function + + * libs/Smarty_Compiler.class.php: + unrecognized custom-functions trigger an error at compile now, not at + display-time. + +2004-01-23 Monte Ohrt + + * docs/getting-started.sgml: + reword a paragraph + +2004-01-22 Messju Mohr + + * libs/plugins/function.config_load.php: + removed emission of unnecessary notices for unavailable config-files + in config_load() + + * NEWS + libs/Config_File.class.php: + fixed handling of hidden sections in Config_File + +2004-01-21 Messju Mohr + + * NEWS + libs/plugins/function.config_load.php: + added handling of resources for {config_load} + +2004-01-19 Messju Mohr + + * NEWS + libs/plugins/function.html_table.php: + fixed bug when using arrays with tr_attr and td_attr in {html_table} + +2004-01-16 Monte Ohrt + + * NEWS: + add unit testing + + * NEWS + libs/Config_File.class.php + libs/Smarty.class.php + libs/Smarty_Compiler.class.php: + update version numbers, add initial unit test directory + + * (Smarty_2_6_1) + libs/Config_File.class.php + libs/Smarty.class.php + libs/Smarty_Compiler.class.php: + update version numbers for 2.6.1 release + +2004-01-16 Messju Mohr + + * (Smarty_2_6_1) + NEWS + docs/programmers.sgml + libs/Smarty.class.php: + renamed $smarty->tpl_rror_reporting to $smarty->error_reporting + "tpl_" is a bit redundant here (it's a TemPLate-engine overall :) + +2004-01-15 Messju Mohr + + * libs/plugins/function.html_image.php: + forgot to remove duplicate is_secure()-check + + * NEWS + libs/plugins/function.html_image.php: + fix: $smarty->security is now correctly handled + + minor optimizations: + core/core.is_secure.php is only included when needed + $dpi_default is only determined when needed + +2004-01-14 Messju Mohr + + * docs/appendixes.sgml + docs/programmers.sgml: + removed suggestions to use extract() from the manual + + * docs/designers.sgml: + fixed typo + +2004-01-12 Messju Mohr + + * docs/designers.sgml: + mention SCRIPT_NAME below {$smarty} reserved variable because it got + lost in the docs for $smarty->global_assign + + * docs/designers.sgml: + added docs for {$smarty.version} special variable + + * docs/programmers.sgml: + removed docs for $global_assign + + * docs/programmers.sgml: + added docs for tpl_error_reporting + + * docs/designers.sgml: + added docs for year_empty-, month_empty- and day_emtpy-attributes of + html_select_date. maybe an example is needed to better explain empty + values in YYY-MM-DD. + +2004-01-10 Messju Mohr + + * libs/Smarty_Compiler.class.php: + fixed handling of {php}-tags + +2004-01-10 Monte Ohrt + + * docs/designers.sgml: + fix html_checkboxes examples + +2004-01-08 Messju Mohr + + * NEWS + libs/core/core.assemble_plugin_filepath.php: + added caching of requested paths to smarty_core_assemble_plugin_filepath() + + * NEWS: + fix handling of comments inside {php}- and {literal}-blocks + + * libs/Smarty_Compiler.class.php: + fixed handling of comments inside {php} and {literal} + +2004-01-06 Messju Mohr + + * NEWS + libs/Config_File.class.php: + fixed bug handling triple-quotes in config-files + + * libs/Config_File.class.php: + fixed bugs with triple-quotes in config-files + thanks BRDude for finding them testing! + +2004-01-02 Messju Mohr + + * libs/Smarty.class.php: + removed unnecessary param in call to _fetch_resource_info() + +2003-12-30 Messju Mohr + + * libs/Smarty.class.php: + oops! removed tabs. + +2003-12-27 Messju Mohr + + * NEWS + libs/Smarty.class.php: + made $SCRIPT_NAME available again + changes default for request_use_auto_global to prefer autoglobals + + * libs/Smarty.class.php: + removed tabs and trailing spaces + + * NEWS + libs/Smarty_Compiler.class.php: + readded default_modifiers. who removed that? + +2003-12-23 Monte Ohrt + + * NEWS: + add portuguese docs + +2003-12-22 Monte Ohrt + + * docs/designers.sgml: + fix counter example + +2003-12-19 Monte Ohrt + + * libs/Smarty.class.php: + add debug console persistance feature + +2003-12-19 Messju Mohr + + * libs/plugins/block.textformat.php + libs/plugins/function.html_table.php + libs/plugins/function.popup.php: + removed extract(). enhanced parameter parsing. + + * libs/plugins/function.counter.php + libs/plugins/function.fetch.php + libs/plugins/function.popup_init.php + libs/plugins/modifier.capitalize.php + libs/plugins/modifier.cat.php + libs/plugins/modifier.date_format.php + libs/plugins/modifier.debug_print_var.php + libs/plugins/modifier.escape.php + libs/plugins/modifier.indent.php + libs/plugins/modifier.lower.php + libs/plugins/modifier.nl2br.php + libs/plugins/modifier.strip.php + libs/plugins/modifier.upper.php + libs/plugins/modifier.wordwrap.php + libs/plugins/outputfilter.trimwhitespace.php + libs/plugins/shared.escape_special_chars.php: + removed tabs. fixed indentiation. + + * libs/plugins/modifier.truncate.php: + removed tabs + + * libs/plugins/function.counter.php + libs/plugins/function.cycle.php: + removed extract() from parameter-parsing + +2003-12-17 Messju Mohr + + * libs/plugins/function.html_select_date.php: + fix plugin-name in error message + + * libs/plugins/function.html_select_time.php: + remove extract-call from {html_select_time} + + * NEWS + libs/plugins/function.html_select_date.php: + allow single-digit days and months without smarty_make_timestamp() + this makes dates like "1968-11-6" work correctly since no strtotime() + is involved + + add warning when unknown parameter is passed + +2003-12-16 Messju Mohr + + * NEWS + libs/Smarty.class.php: + fix headers sent erroneously with cache_modified_check and fetch() + +2003-12-12 Monte Ohrt + + * libs/plugins/function.config_load.php: + move set_path() call below the conditional bracket + + * NEWS + libs/plugins/function.config_load.php: + fix config_load filepath bug + +2003-12-12 boots + + * docs/designers.sgml: + Updated language.function.if with additional annotation and to fix error + that broke docs build process + +2003-12-11 Messju Mohr + + * libs/Smarty_Compiler.class.php: + little optimization for "is odd" and "is even" + +2003-12-11 Monte Ohrt + + * NEWS + libs/Smarty_Compiler.class.php: + fix 'is even by' and 'is odd by' logic + +2003-12-11 Messju Mohr + + * docs/designers.sgml: + update example-output of {mailto} + + * libs/plugins/function.mailto.php: + removed extract-call -> cleaner parameter-handling + + * libs/plugins/function.mailto.php: + fixed indentiation + + * TODO: + removed two done topics + +2003-12-11 boots + + * docs/designers.sgml: + Updated language.function.if to describe qualifiers (thanks andre) + +2003-12-10 Messju Mohr + + * NEWS + libs/plugins/function.html_select_date.php: + added day_empty, month_empty, year_empty and all_empty attributes + to pass an undefined date use {html_select_date time="--" ...} + + * libs/plugins/function.html_select_date.php: + removed extract()-call + + * libs/plugins/function.html_select_date.php: + fixed indetiation + +2003-12-10 boots + + * NEWS + docs/designers.sgml: + Added table to language.function.if to describe qualifiers + +2003-12-09 Messju Mohr + + * libs/plugins/function.html_checkboxes.php + libs/plugins/function.html_options.php: + strict comparason didn't work in all cases. use type-casting now. + + * NEWS + libs/plugins/function.html_checkboxes.php + libs/plugins/function.html_options.php: + fix bug when comparing array-keys to "selected" in html_options and + html_checkboxes + + in_array() uses "strict" comparason now. + + * libs/plugins/function.html_checkboxes.php + libs/plugins/function.html_options.php + libs/plugins/function.html_radios.php: + removed tabs, fixed indentiation + +2003-12-08 Messju Mohr + + * NEWS + libs/Smarty_Compiler.class.php: + add better checks for correctly nested tags when compiling + +2003-12-04 Messju Mohr + + * libs/Smarty.class.php + libs/plugins/function.html_image.php: + fix: check $smarty->request_use_auto_globals at the last occurences of + HTTP_*_VARS + +2003-12-03 Messju Mohr + + * NEWS + libs/Smarty.class.php: + remove $global_assign property from Smarty and $global_assign-handling + from the constructor. the only visible change is, that $SCRIPT_NAME is + not available in the tempates anymore. $smarty.server.SCRIPT_NAME has + to be used from now. + +2003-12-03 boots + + * docs/designers.sgml: + Fixed example for count_characters + +2003-12-01 boots + + * docs/designers.sgml: + Added section "Escaping Smarty Parsing" under Basic Syntax. + +2003-12-01 Messju Mohr + + * libs/core/core.create_dir_structure.php: + thought again about my latest commit and backed it out. + + * libs/core/core.create_dir_structure.php: + fix root-dir-handling on windows filepath + +2003-11-29 boots + + * libs/plugins/function.config_load.php: + really make the fixes the last patch was supposed to do + + * libs/plugins/function.config_load.php: + removed tabs and killed trailing white-space + + * libs/plugins/function.config_load.php: + changed $smarty->_syntax_error to $smarty->trigger_error + +2003-11-27 Messju Mohr + + * NEWS + libs/plugins/modifier.debug_print_var.php: + remove warning in debug_print_var on php-resources + + * README: + fix version number + +2003-11-26 Messju Mohr + + * libs/Smarty_Compiler.class.php: + raise max_level for $smarty.config... to 3 to allow arrays of config-vars + +2003-11-25 Messju Mohr + + * libs/Smarty.class.php: + changed version-tag to indicate incompatibility to older compiled + templates + +2003-11-24 Messju Mohr + + * NEWS + libs/plugins/compiler.assign.php + libs/plugins/function.assign.php: + move function.assign.php to compiler.assign.php + + * libs/core/core.get_include_path.php: + silence occasional warnings of open_basedir- and + safe_mode-restrictions in core.get_include_path.php + +2003-11-23 Messju Mohr + + * libs/core/core.write_compiled_resource.php + libs/core/core.write_file.php: + avoid touch()-ing of recently unlinked files by touch()-ing the + tempfile before rename instead of touch()-ing the resulting file after + rename. + + * NEWS + libs/Smarty.class.php: + add property $tpl_error_reporting + +2003-11-22 Messju Mohr + + * libs/plugins/function.assign.php: + remove use of extract() in smarty_function_assign() + + * NEWS + libs/Smarty.class.php: + remove property $undefined. "null" is used literally instead + +2003-11-21 Messju Mohr + + * libs/Smarty_Compiler.class.php: + remove two E_NOTICES + +2003-11-20 Messju Mohr + + * libs/Config_File.class.php + libs/Smarty.class.php + libs/Smarty_Compiler.class.php: + change version to 2.6.1-dev + +2003-11-19 Monte Ohrt + + * (Smarty_2_6_0) + NEWS: + update NEWS file + + * (Smarty_2_6_0) + docs/designers.sgml + libs/Config_File.class.php + libs/Smarty.class.php + libs/Smarty_Compiler.class.php: + change version numbers to 2.6.0 + +2003-11-19 Messju Mohr + + * docs/designers.sgml + docs/de/designers.sgml + docs/fr/designers.sgml: + fix examples of escape-modifier (in docs, docs/de and docs/fr !) + +2003-11-18 Messju Mohr + + * NEWS + libs/Smarty.class.php + libs/Smarty_Compiler.class.php: + move Smarty::quote_replace() to Smarty_Compiler::_quote_replace() + + * libs/Smarty.class.php: + removed extract-calls from _include()- and _eval()-wrappers + variables passed with {include_php} have to accessed as members of $params + now + +2003-11-17 Messju Mohr + + * docs/designers.sgml: + fixed typo + +2003-11-13 Messju Mohr + + * libs/Config_File.class.php: + fix occasional notice + +2003-11-13 andreas halter + + * docs/de/designers.sgml: + - added cat modifier, thanks messju :-) + +2003-11-13 Monte Ohrt + + * (Smarty_2_6_0-RC3) + NEWS + libs/Config_File.class.php + libs/Smarty.class.php + libs/Smarty_Compiler.class.php: + commit RC3 tags + +2003-11-13 Messju Mohr + + * NEWS + libs/Smarty_Compiler.class.php: + fix handling of $var.key inside [] + + * libs/Smarty.class.php: + fix unnecessary loading of core.load_resource_plugin.php + + * (Smarty_2_6_0-RC3) + docs/fr/designers.sgml: + fixed example of html_table + +2003-11-11 Messju Mohr + + * NEWS + libs/core/core.process_cached_inserts.php: + fix handling of assign inside {insert}-tags + +2003-11-06 Messju Mohr + + * libs/core/core.read_cache_file.php: + added $exp_time-parameter + + * docs/programmers.sgml: + added $exp_time to cache_handler_func-example + + * libs/Smarty.class.php + libs/core/core.write_cache_file.php: + added $exp_time-parameter of clear_cache() and clear_all_cache() to + cache_handler_func. + +2003-11-05 Messju Mohr + + * NEWS + libs/Config_File.class.php: + fix handling if [...] inside triple-quotes in config-files + +2003-11-04 Messju Mohr + + * libs/Smarty.class.php: + fixed little bug in _parse_resource_name() (jlgunter, messju) + +2003-11-03 andreas halter + + * docs/designers.sgml + docs/de/designers.sgml + docs/fr/designers.sgml: + - changed Smarty.php.class occurences to Smarty.class.php + +2003-10-29 boots + + * docs/appendixes.sgml + docs/designers.sgml + docs/manual.sgml + docs/programmers.sgml + docs/de/appendixes.sgml + docs/de/designers.sgml + docs/de/programmers.sgml + docs/fr/appendixes.sgml + docs/fr/designers.sgml + docs/fr/getting-started.sgml + docs/fr/manual.sgml + docs/fr/preface.sgml + docs/fr/programmers.sgml: + Fixes to documentation syntax so that all content can be processed used + xsltproc docbook-xsl tools. In particular, fixes unescaped entities, + broken tags, unquoted attributes. + +2003-10-27 Messju Mohr + + * NEWS + libs/Smarty_Compiler.class.php: + fix handling of simple-math-operators inside modifiers + +2003-10-25 Messju Mohr + + * libs/Smarty_Compiler.class.php: + removed unused property _output_type + removed unused param $tag_attrs of _parse_var_props() + cleaned up alignment of class-properties + +2003-10-23 Messju Mohr + + * libs/Smarty_Compiler.class.php: + removed notice in php-tag handling in Smarty_Compiler::_compile_file() + + * libs/Smarty_Compiler.class.php: + removed two occasional E_NOTICES from + Smarty_Compiler::_compile_include_php_tag() + + * NEWS + libs/core/core.create_dir_structure.php: + fix handling of trailing-slashes in open_basedir in + smarty_core_create_dir_structure() + +2003-10-20 Messju Mohr + + * libs/Smarty_Compiler.class.php: + elements inside `` are bracketed now inside the compiled-tpl. this + fixes some issues with simple-math inside backticks. + +2003-10-16 Monte Ohrt + + * docs/designers.sgml: + update overlib docs, no working examples + +2003-10-12 Messju Mohr + + * libs/Smarty.class.php + libs/core/core.is_secure.php: + move check for template_dir in secure_dir-array into core.is_secure.php + + this makes template_exists() work correctly with security=true even if + template_dir is not inside the secure_dir-array + +2003-10-11 Messju Mohr + + * libs/plugins/shared.make_timestamp.php: + tightened check for YYYYMMDDHHMMSS-format. thanks konstantin for + pointing this out. + + removed a few tabs. + + * libs/Smarty_Compiler.class.php: + fix precedence of simple-math-operators before modifiers. + thanks dominik! + + * libs/Config_File.class.php + libs/Smarty.class.php + libs/Smarty_Compiler.class.php + libs/core/core.assemble_plugin_filepath.php + libs/core/core.assign_smarty_interface.php + libs/core/core.create_dir_structure.php + libs/core/core.display_debug_console.php + libs/core/core.get_include_path.php + libs/core/core.get_microtime.php + libs/core/core.get_php_resource.php + libs/core/core.is_secure.php + libs/core/core.is_trusted.php + libs/core/core.load_plugins.php + libs/core/core.load_resource_plugin.php + libs/core/core.process_cached_inserts.php + libs/core/core.process_compiled_include.php + libs/core/core.read_cache_file.php + libs/core/core.rm_auto.php + libs/core/core.rmdir.php + libs/core/core.run_insert_handler.php + libs/core/core.smarty_include_php.php + libs/core/core.write_compiled_include.php + libs/core/core.write_compiled_resource.php + libs/core/core.write_file.php: + removed tabs from the main and the core/*.php files + +2003-10-08 Monte Ohrt + + * (Smarty_2_6_0-RC2) + NEWS + libs/Config_File.class.php + libs/Smarty.class.php + libs/Smarty_Compiler.class.php: + update version numbers to RC2 + +2003-09-18 Messju Mohr + + * docs/designers.sgml + docs/de/designers.sgml: + fixed description of cycle's advance-attribute + +2003-09-16 Messju Mohr + + * NEWS + libs/Smarty_Compiler.class.php: + apply modifiers only once to section-loop and foreach-from attributes + +2003-09-15 Messju Mohr + + * libs/Smarty.class.php + libs/Smarty_Compiler.class.php + libs/core/core.write_cache_paths_file.php: + backed out _smarty_cached_paths-file-handling + + * libs/Smarty.class.php + libs/core/core.rm_auto.php: + fixed clear_compiled_tpl with explicit $tpl_file given + fixed return value of smarty_core_rm_auto() + Smarty::_unlink() + + * libs/Smarty.class.php: + little fix in _get_auto_filename() + +2003-09-14 Messju Mohr + + * libs/Smarty.class.php + libs/core/core.assemble_auto_filename.php: + removed auto-filenames from path-cache. merged assemble_auto_filename + back into Smarty::_get_auto_filename() + +2003-09-12 Messju Mohr + + * libs/Smarty_Compiler.class.php: + fixed quoting of modifier parameters + + * NEWS + libs/Smarty.class.php + libs/Smarty_Compiler.class.php + libs/core/core.get_php_resource.php + libs/core/core.load_plugins.php + libs/core/core.load_resource_plugin.php: + remove Smarty::_plugin_implementation_exists() - use php's native + is_callable() + +2003-09-11 Messju Mohr + + * libs/Smarty.class.php: + silenced two notices acces HTTP_SERVER_VARS + +2003-09-10 andreas halter + + * docs/de/designers.sgml + docs/de/getting-started.sgml + docs/de/programmers.sgml: + - minor fixes (2 rep), slight wording changes + - jade transform problem fixed + +2003-09-08 andreas halter + + * docs/de/designers.sgml + docs/de/getting-started.sgml + docs/de/manual.sgml + docs/de/preface.sgml + docs/de/programmers.sgml: + all updated for 2.6.0 release, translated everything from 2_5_0 branch to + 20030908 + +2003-09-04 Messju Mohr + + * libs/Smarty.class.php: + proper checking for files in _fetch_resource_info() + +2003-09-02 Messju Mohr + + * NEWS + libs/Smarty_Compiler.class.php: + ignore {strip}/{/strip) inside {strip}-blocks + + * libs/plugins/function.mailto.php: + fixed 2 notices in smarty_function_mailto() + +2003-09-01 Messju Mohr + + * libs/Smarty.class.php: + re-include cache_paths on multiple calls to fetch() to avoid + inconsistencies + at multiple calls to fetch() in one script + + * libs/Smarty_Compiler.class.php: + fixed handling of \r in {strip} + renamed $_trailing_lf to $_additional_newline + + * libs/Smarty_Compiler.class.php: + the weekly fix for {strip} :) + + * docs/designers.sgml: + fixed example for simple math. + +2003-08-29 Messju Mohr + + * libs/core/core.assign_smarty_interface.php + libs/core/core.display_debug_console.php + libs/plugins/function.assign.php + libs/plugins/function.html_options.php + libs/plugins/function.html_table.php: + fixed PHPDocumentor-comments (thanks Konstantin) + + * libs/core/core.rmdir.php: + made rmdir a bit more optimistic. especially it now removes + directories correctly that where created accidently by "safe_mode=On + && $use_sub_dirs=true" + +2003-08-27 Messju Mohr + + * NEWS + libs/Smarty_Compiler.class.php: + fixed removal of leading/trailing newlines in {strip}-blocks + +2003-08-25 Messju Mohr + + * INSTALL: + added note emphasizing the introduction of "libs/" with 2.5.0 + + * NEWS + libs/plugins/modifier.escape.php: + fixed proper escaping of " and ' with escape:javascript + +2003-08-22 Messju Mohr + + * NEWS + libs/core/core.assemble_plugin_filepath.php: + fixed bug in traversal of $smarty->plugins_dir-array in + smarty_core_assemble_plugin_filepath(). the first matching plugin in + the path should be used, not the last one. + + * libs/core/core.read_cache_file.php: + discard $_cache_info when the cache should be regenerated + +2003-08-20 Messju Mohr + + * NEWS + libs/Smarty_Compiler.class.php + libs/plugins/block.strip.php: + reverted {strip} from a block-plugin back into the compiler + + * docs/programmers.sgml: + fixed examples for register_function() and register_block() + + * libs/Smarty.class.php: + made template_exists() quiet when the template does not exist (thanks + to konstatin for pointing this out) + +2003-08-18 Monte Ohrt + + * docs/getting-started.sgml: + fix example title + + * docs/README + docs/getting-started.sgml: + change installation wording confusion + +2003-08-18 Messju Mohr + + * libs/Smarty.class.php + libs/core/core.read_cache_file.php: + fixed unnecessary load of source in template_exists() and the + compile-check of smarty_core_read_cache_file() + + * libs/Smarty_Compiler.class.php: + allow section-, array- and object-dereference in $smarty-references + +2003-08-15 Messju Mohr + + * docs/designers.sgml: + added parameter-descriptions for count_characters (thanks Konstantin + A. Pelepelin) + + fixed docs for {html_checkboxes} + +2003-08-14 Messju Mohr + + * libs/Smarty.class.php + libs/core/core.read_cache_file.php: + fixed timestamp-check of config-files in smarty_core_read_cache_file() + + * libs/Smarty.class.php: + fixed typecasting for arrays in _parse_resource_name() + + * NEWS + libs/plugins/function.config_load.php: + fixes in config_load: + - handling of section-attribute + - reusing the same config-file multiple times + - serialization of config-data for php<4.2.0 (no var_export) + + many thanks to atu for pointing this out and for testing + +2003-08-13 Messju Mohr + + * libs/Smarty.class.php + libs/core/core.smarty_include_php.php: + fixed problem with vars as attributes in {include_php} + +2003-08-13 Monte Ohrt + + * docs/README: + commit README file for documentation compiling + +2003-08-13 Messju Mohr + + * libs/debug.tpl + libs/plugins/modifier.debug_print_var.php: + removed '\r' from debug_print_vars' output + properly escape vars in javascript-version of debug.tpl + +2003-08-11 Monte Ohrt + + * (Smarty_2_6_0_RC1) + NEWS + docs/designers.sgml + docs/html.dsl + docs/php.dsl + libs/Config_File.class.php + libs/Smarty.class.php + libs/Smarty_Compiler.class.php: + get ready for 2.6.0-RC1 release + +2003-08-10 Messju Mohr + + * NEWS + libs/Smarty.class.php: + fixed status-header for cache_modified_check under cgi-sapi + +2003-08-09 Messju Mohr + + * libs/core/core.is_secure.php + libs/core/core.is_trusted.php: + synced secure_dir-checking with trusted_dir-checking + + * libs/core/core.is_secure.php: + tightenend path checking in smarty_core_is_secure() + +2003-08-08 Messju Mohr + + * libs/Smarty.class.php: + fix: proper nesting of $smarty->_cache_including flag in cascaded + cached/not-cached/fetched/inserted/foo-templates + + * libs/debug.tpl: + better escaping for $_debug_tpls[templates].filenames + + * libs/Smarty.class.php + libs/Smarty_Compiler.class.php: + removed redundant $smarty from Smarty::_smarty_include() + + * libs/debug.tpl: + proper escaping of filenames in debug-console (thanks to prossel). + +2003-08-07 Messju Mohr + + * docs/programmers.sgml: + added docs for block-methods of registered objects + + * docs/programmers.sgml: + fixed typo in example for registered objects + + * docs/designers.sgml: + fixed exampls of html_image and html_checkboxes + + * libs/plugins/function.debug.php: + fixed {debug} and removed tabs in function.debug.php + + * docs/programmers.sgml: + fixed example for register_object + + * docs/designers.sgml + docs/programmers.sgml: + updated docs for capture, html_table, html_image and register_object + +2003-08-07 Monte Ohrt + + * docs/designers.sgml + docs/programmers.sgml: + add math and default_resource_type to docs + + * docs/getting-started.sgml: + add core to example, add tech note + +2003-08-07 Messju Mohr + + * docs/manual.sgml + docs/fr/manual.sgml: + upd copyright in the docs + +2003-08-07 Monte Ohrt + + * docs/getting-started.sgml: + added core directory to install instructions + +2003-08-07 Messju Mohr + + * docs/designers.sgml + docs/programmers.sgml: + added docs for php-functions as modifiers + + * libs/Smarty.class.php + libs/Smarty_Compiler.class.php: + better caching of attributes for $cacheable=false-plugins + + * docs/programmers.sgml: + added section "caching.cacheable" to the docs, explaining the usage of + the $cacheable-flag of the register_(block|compiler|function)-functions + + * libs/Smarty_Compiler.class.php: + fixed output of custom-functions with cached attributes + + * docs/programmers.sgml: + docs update on callbacks to the register_*-functions + +2003-08-06 Messju Mohr + + * NEWS + libs/Smarty.class.php + libs/Smarty_Compiler.class.php + libs/core/core.process_compiled_include.php: + added optional parameter $cache_attrs to register_function() and + register_block(). $cache_attrs is an array containing attribute- names + that should be cached on calls to functions that have $cacheable set + to false. + + * libs/Smarty.class.php: + fixed bug in _run_mod_handler + + * libs/Smarty_Compiler.class.php: + fixed bug with autoload-handling of modifiers. thanks ándre. + +2003-08-05 Messju Mohr + + * libs/Config_File.class.php + libs/Smarty.class.php + libs/Smarty_Compiler.class.php: + updated copyright notice + + * libs/Smarty.class.php + libs/core/core.load_plugins.php: + fixed bug that occurred when using the same not-cacheable plugin in + multiple includes + + * docs/programmers.sgml: + docs-update for plugins.writing + +2003-08-04 Messju Mohr + + * docs/designers.sgml + docs/programmers.sgml: + updated docs for register_block_function(), block-functions, + $request_use_auto_globals and html_checkboxes + +2003-07-31 Messju Mohr + + * NEWS + libs/Smarty.class.php + libs/Smarty_Compiler.class.php: + enabled registration of class-methods as callbacks for the + register_*-functions + + use: array('classname', 'method_name')) as callback + +2003-07-29 Messju Mohr + + * libs/Smarty.class.php + libs/Smarty_Compiler.class.php: + modifiers are resolved at compile-time now. _run_mod_handler() is + still used for modifiers with map_array=true (== no preceeding '@') + + * libs/Smarty.class.php + libs/Smarty_Compiler.class.php + libs/core/core.smarty_include.php: + moved _smarty_include() back into Smarty.class.php + + * libs/Smarty.class.php + libs/core/core.load_plugins.php: + prevent unnecessary calls to _read_file() in _is_compiled() + converted method-call to internal function-call in + smarty_core_load_plugins() + +2003-07-28 Messju Mohr + + * libs/Smarty_Compiler.class.php: + quote smarty-header properly to prevent resource-names from escaping from + the comment + +2003-07-25 Messju Mohr + + * libs/core/core.create_dir_structure.php: + weakend race-condition and removed bogus error-message caused by that + in smarty_core_create_dir_structure(). + +2003-07-23 Messju Mohr + + * libs/Smarty.class.php + libs/core/core.display_debug_console.php + libs/core/core.fetch_resource_info.php + libs/core/core.get_php_resource.php + libs/core/core.parse_resource_name.php + libs/core/core.process_cached_inserts.php + libs/core/core.read_cache_file.php + libs/core/core.run_insert_handler.php + libs/core/core.smarty_include.php + libs/core/core.smarty_include_php.php + libs/plugins/function.eval.php: + moved _fetch_resource_info and _parse_resource_name back into + Smarty.class.php + renamed smarty_include and smarty_eval wrappers to _include and _eval + +2003-07-17 Messju Mohr + + * libs/core/core.process_compiled_include.php + libs/core/core.read_cache_file.php: + improved checking of compiled_include against cached-template with + non-cached-chunks + + * libs/core/core.write_compiled_include.php: + fixed too short open-tag + + * libs/plugins/function.eval.php: + fixed assign parameter for eval (must have gotton lost on its way to 2.5.0) + cleaned up indentiation + +2003-07-03 Messju Mohr + + * libs/Smarty_Compiler.class.php: + resurrected $foo->$bar syntax + + * libs/Smarty_Compiler.class.php: + i'm so stupid. kick me. + + * libs/Smarty_Compiler.class.php: + fixed initialisation of $this->_plugins in compile_block_tag() + +2003-07-03 Monte Ohrt + + * libs/Config_File.class.php: + add preg_quote delimiter + +2003-07-03 Messju Mohr + + * libs/Smarty_Compiler.class.php: + applied fix for {$var1->p1|modifier:$var2->p2}-syntax - thanks Dominik + +2003-07-02 Messju Mohr + + * libs/Smarty_Compiler.class.php: + fixed duplicate generation of arg-list in _compile_block_tag() + + * libs/Smarty_Compiler.class.php: + fixed off-by-one-error in nocache-tag-handling + +2003-06-30 Messju Mohr + + * libs/Smarty_Compiler.class.php: + backed out errornously committed support for $foo->$bar + + * libs/core/core.write_file.php: + fixed indentiation, silenced occasional warning + + * libs/plugins/function.html_image.php: + match first character of file-attribute against "/" instead of + DIRECTORY_SEPARATOR since it is a url-path and not a file-path. + + * libs/Smarty_Compiler.class.php + libs/core/core.write_file.php + libs/plugins/function.html_image.php: + libs/plugins/function.html_image.php + + * libs/Smarty_Compiler.class.php: + re-fixed cacheable_state-handling + + * libs/core/core.display_debug_console.php + libs/core/core.process_cached_inserts.php + libs/core/core.process_compiled_include.php + libs/core/core.run_insert_handler.php: + extincting $this out of smarty_core_*-functions + + * libs/Smarty.class.php + libs/Smarty_Compiler.class.php: + fixed handling of nocache-state + +2003-06-29 Messju Mohr + + * libs/Smarty.class.php + libs/core/core.smarty_include.php + libs/core/core.smarty_include_php.php + libs/plugins/function.eval.php: + removed $this from smarty_include and smarty_include_php + added cleaner handling of $this to {eval} + + * libs/core/core.load_resource_plugin.php: + fixed inlude_once-call + + * docs/de/designers.sgml + docs/fr/designers.sgml: + fixed examples of html_radios and html_checkboxes in german and french docs + +2003-06-25 Monte Ohrt + + * libs/core/core.assemble_auto_filename.php + libs/core/core.write_cache_paths_file.php: + fix typo, fix write_cache_paths logic + + * libs/Smarty.class.php + libs/core/core.assemble_auto_filename.php: + fix SMARTY_COMPILE_DIR_SEP problem, make local var + +2003-06-24 Monte Ohrt + + * libs/Smarty.class.php + libs/core/core.assemble_auto_filename.php + libs/core/core.write_cache_paths_file.php: + fixed cache_paths bug, simplified filename assembly logic + +2003-06-24 Messju Mohr + + * libs/plugins/function.html_image.php: + added parsing of forgotton param "basedir" + + * libs/Smarty_Compiler.class.php: + fixed $smarty.get-reference + + * libs/plugins/block.textformat.php: + removed warning + + * libs/Smarty_Compiler.class.php: + fixed value of _cacheable_state on compiler-startup + +2003-06-23 Monte Ohrt + + * libs/Smarty.class.php + libs/Smarty_Compiler.class.php + libs/core/core.write_cache_paths_file.php: + make cache_path per resource, fix a couple directory path issues + +2003-06-23 Messju Mohr + + * libs/Smarty_Compiler.class.php: + removed warning when compiling empty template + + * libs/core/core.write_compiled_include.php: + fixed bug in write_compiled_include + + * libs/core/core.assemble_plugin_filepath.php: + fixed warning + +2003-06-22 Messju Mohr + + * libs/plugins/function.eval.php: + fixed propagation of $this into evald code in smarty_function_eval() + + * libs/core/core.write_cache_paths_file.php + libs/core/core.write_compiled_include.php: + fix in compiled-include-handling + + * libs/core/core.assemble_auto_filename.php + libs/core/core.assemble_plugin_filepath.php + libs/core/core.assign_smarty_interface.php + libs/core/core.create_dir_structure.php + libs/core/core.fetch_resource_info.php + libs/core/core.get_include_path.php + libs/core/core.get_microtime.php + libs/core/core.get_php_resource.php + libs/core/core.is_secure.php + libs/core/core.is_trusted.php + libs/core/core.load_plugins.php + libs/core/core.load_resource_plugin.php + libs/core/core.parse_resource_name.php + libs/core/core.read_cache_file.php + libs/core/core.rm_auto.php + libs/core/core.rmdir.php + libs/core/core.write_cache_file.php + libs/core/core.write_cache_paths_file.php + libs/core/core.write_compiled_include.php + libs/core/core.write_compiled_resource.php + libs/core/core.write_file.php + libs/plugins/modifier.date_format.php: + started moving from $this to $smarty in core.*.php + +2003-06-21 Monte Ohrt + + * libs/core/core.create_dir_structure.php + libs/core/core.write_file.php + libs/plugins/function.config_load.php: + fix more dir paths + + * NEWS + libs/Smarty.class.php + libs/core/core.assemble_auto_filename.php + libs/core/core.assemble_plugin_filepath.php + libs/core/core.fetch_resource_info.php + libs/core/core.get_php_resource.php + libs/core/core.parse_resource_name.php + libs/core/core.process_cached_inserts.php + libs/core/core.read_cache_file.php + libs/core/core.rm_auto.php + libs/core/core.rmdir.php + libs/core/core.run_insert_handler.php + libs/core/core.smarty_include.php + libs/core/core.smarty_include_php.php + libs/core/core.write_cache_file.php + libs/core/core.write_cache_paths_file.php + libs/core/core.write_compiled_include.php + libs/core/core.write_compiled_resource.php + libs/core/core.write_file.php + libs/plugins/function.config_load.php + libs/plugins/function.fetch.php + libs/plugins/function.html_image.php: + fix filepaths to core files to use DIRECTORY_SEPARATOR + +2003-06-21 Messju Mohr + + * libs/Smarty_Compiler.class.php: + fixed {plugin|modifier} syntax + + * libs/Smarty.class.php + libs/core/core.write_compiled_include.php: + fixed compiled include handling + +2003-06-21 Monte Ohrt + + * libs/Smarty.class.php + libs/Smarty_Compiler.class.php + libs/core/core.assemble_auto_filename.php + libs/core/core.assemble_plugin_filepath.php + libs/core/core.write_cache_paths_file.php: + added filepath caching + +2003-06-20 Monte Ohrt + + * libs/Smarty_Compiler.class.php: + update more varnames + + * libs/Smarty.class.php + libs/core/core.display_debug_console.php + libs/core/core.fetch_file_info.php + libs/core/core.fetch_resource_info.php + libs/core/core.get_php_resource.php + libs/core/core.parse_file_path.php + libs/core/core.parse_resource_name.php + libs/core/core.process_cached_inserts.php + libs/core/core.read_cache_file.php + libs/core/core.run_insert_handler.php + libs/core/core.smarty_include.php + libs/core/core.smarty_include_php.php + libs/core/core.write_compiled_resource.php + libs/core/core.write_compiled_template.php + libs/plugins/function.config_load.php: + refactored var naming to better reflect "resource" instead of "file" where + appropriate + +2003-06-19 Messju Mohr + + * libs/Smarty.class.php: + updated version-number to 2.5.0-cvs + + * libs/core/core.write_cache_file.php: + omit is-cache_dir-writable-check if a cache_handler_function is in use + + * libs/core/core.smarty_include_php.php: + fixed comments in smarty_include_php + +2003-06-19 Monte Ohrt + + * libs/Smarty.class.php + libs/Smarty_Compiler.class.php + libs/core/core.display_debug_console.php + libs/core/core.smarty_include.php + libs/plugins/function.eval.php: + split up _compile_template to _compile_file and _compile_source, fix eval + function + VS: ---------------------------------------------------------------------- + + * libs/plugins/function.config_load.php: + fix logic for _is_compiled() + +2003-06-19 Messju Mohr + + * NEWS + libs/Smarty_Compiler.class.php: + added optional assign-attribute to {capture}-tag + + * NEWS + libs/Smarty.class.php: + added $cacheable-parameter to register_compiler_function() + +2003-06-18 Messju Mohr + + * NEWS + libs/Smarty.class.php + libs/Smarty_Compiler.class.php + libs/core/core.load_plugins.php + libs/core/core.process_compiled_include.php + libs/core/core.read_cache_file.php + libs/core/core.write_cache_file.php + libs/core/core.write_compiled_include.php: + added $cacheable-parameter to register_function() and register_block() + + * libs/Smarty.class.php: + append '.php' to all compiled templates regardless of the settings of + $use_sub_dirs + + * libs/Smarty.class.php + libs/core/core.read_cache_file.php: + fixed $file_path-parameters passed to smarty_core_fetch_file_info() + +2003-06-17 Monte Ohrt + + * NEWS: + fix name + + * libs/Smarty_Compiler.class.php: + change varnames to follow coding methods + + * NEWS + libs/Smarty_Compiler.class.php: + add math patch to core + +2003-06-17 Messju Mohr + + * libs/core/core.smarty_include.php: + switched _process_template() to _is_compiled()-logic + +2003-06-17 Monte Ohrt + + * libs/Smarty.class.php: + fix _is_compiled logic + + * NEWS: + update news file + + * libs/Smarty.class.php + libs/Smarty_Compiler.class.php: + fix _run_mod_handler routine + + * libs/Smarty.class.php + libs/Smarty_Compiler.class.php + libs/core/core.display_debug_console.php + libs/core/core.fetch_file_info.php + libs/core/core.parse_file_path.php + libs/core/core.write_compiled_template.php + libs/plugins/function.config_load.php: + fix path problems, rename some varibles from "template" to "file" + +2003-06-16 Monte Ohrt + + * libs/core/core.fetch_file_info.php + libs/core/core.fetch_template_info.php: + rename file, commit + + * libs/Smarty.class.php + libs/Smarty_Compiler.class.php + libs/core/core.parse_file_path.php + libs/core/core.read_cache_file.php + libs/plugins/block.strip.php + libs/plugins/block.textformat.php + libs/plugins/compiler.config_load.php + libs/plugins/function.config_load.php + libs/plugins/function.eval.php + libs/plugins/function.fetch.php + libs/plugins/function.html_image.php: + fix config_load, compile fetched arrays to compile_dir, switch display + back to runtime. clean up var names and function names, split up compile + testing and compiling to separate funcs, rename some template_* functions + to + file_* functions and update logic so they can be used for file resources + other than templates. + +2003-06-16 Messju Mohr + + * libs/Smarty_Compiler.class.php: + fixed little bug in _compile_custom_tag() + +2003-06-16 Monte Ohrt + + * NEWS + libs/Smarty.class.php + libs/Smarty_Compiler.class.php + libs/core/core.assign_smarty_interface.php + libs/core/core.create_dir_structure.php + libs/core/core.display_debug_console.php + libs/core/core.fetch_template_info.php + libs/core/core.get_include_path.php + libs/core/core.get_microtime.php + libs/core/core.get_php_resource.php + libs/core/core.is_secure.php + libs/core/core.is_trusted.php + libs/core/core.load_plugins.php + libs/core/core.load_resource_plugin.php + libs/core/core.parse_file_path.php + libs/core/core.process_cached_inserts.php + libs/core/core.read_cache_file.php + libs/core/core.rm_auto.php + libs/core/core.rmdir.php + libs/core/core.run_insert_handler.php + libs/core/core.smarty_include.php + libs/core/core.smarty_include_php.php + libs/core/core.write_cache_file.php + libs/core/core.write_compiled_template.php + libs/core/core.write_file.php + libs/plugins/core.assign_smarty_interface.php + libs/plugins/core.create_dir_structure.php + libs/plugins/core.display_debug_console.php + libs/plugins/core.fetch_template_info.php + libs/plugins/core.get_include_path.php + libs/plugins/core.get_microtime.php + libs/plugins/core.get_php_resource.php + libs/plugins/core.is_secure.php + libs/plugins/core.is_trusted.php + libs/plugins/core.load_plugins.php + libs/plugins/core.load_resource_plugin.php + libs/plugins/core.parse_file_path.php + libs/plugins/core.process_cached_inserts.php + libs/plugins/core.read_cache_file.php + libs/plugins/core.rm_auto.php + libs/plugins/core.rmdir.php + libs/plugins/core.run_insert_handler.php + libs/plugins/core.smarty_include.php + libs/plugins/core.smarty_include_php.php + libs/plugins/core.write_cache_file.php + libs/plugins/core.write_compiled_template.php + libs/plugins/core.write_file.php: + move core files into their own directory under SMARTY_DIR, + remove abstraction function _execute_core_function + + * libs/Smarty_Compiler.class.php: + fix newline handling for template for all template tags + +2003-06-11 Monte Ohrt + + * libs/plugins/compiler.config_load.php: + add compiler function to cvs repository + +2003-06-11 Messju Mohr + + * NEWS + libs/Smarty.class.php + libs/Smarty_Compiler.class.php: + added config-option "request_use_auto_globals" to make auto-globals be + used as request vars instead of HTTP_*_VARS + +2003-06-11 Monte Ohrt + + * NEWS + libs/Smarty.class.php + libs/Smarty_Compiler.class.php + libs/plugins/function.config_load.php: + make config vars compile statically + +2003-06-11 Messju Mohr + + * NEWS + libs/Smarty_Compiler.class.php: + backed out newlines patch + + * NEWS + libs/Smarty_Compiler.class.php: + removed newlines in compiled templates after closing tags + +2003-06-10 Messju Mohr + + * docs/de/designers.sgml: + fixed german note on html_image and disk-access + +2003-06-10 Monte Ohrt + + * libs/plugins/core.parse_file_path.php: + fix bug with resource_type resolving + +2003-06-09 Monte Ohrt + + * docs/designers.sgml: + replace example with more practical one + +2003-06-08 Messju Mohr + + * NEWS + libs/Smarty.class.php + libs/Smarty_Compiler.class.php: + added block-methods for registered objects + +2003-06-07 Messju Mohr + + * docs/programmers.sgml: + fixed bug in documentation for $smarty->default_modifiers + +2003-06-06 Monte Ohrt + + * libs/plugins/core.parse_file_path.php: + fix problem with new default_resource_type changes + + * NEWS: + update NEWS file info + + * NEWS + libs/Smarty.class.php + libs/plugins/core.parse_file_path.php: + add default_resource_type, ignore 1 char resource names + + * NEWS + libs/Config_File.class.php: + fix bug where config file starts with hidden section + +2003-06-04 Monte Ohrt + + * NEWS + libs/Smarty.class.php: + -** empty log message *** + +2003-06-03 Monte Ohrt + + * libs/plugins/function.html_image.php: + fix example in code comments + +2003-06-03 Messju Mohr + + * NEWS + libs/plugins/function.counter.php: + fixed behaviour of start=... for {counter} + +2003-06-02 Messju Mohr + + * NEWS + libs/plugins/function.counter.php: + fixed assign for {counter} + +2003-05-30 Monte Ohrt + + * libs/plugins/core.write_cache_file.php + libs/plugins/core.write_compiled_template.php: + add discrete error checking pertaining to $cache_dir + and $compile_dir, their existance and writability + +2003-05-28 Messju Mohr + + * NEWS + libs/plugins/function.html_table.php: + added params vdir, hdir and inner to html_table to allow looping over + the data in various directions + +2003-05-28 Monte Ohrt + + * libs/plugins/core.compile_template.php + libs/plugins/core.display_debug_console.php: + fix problem with security and debug.tpl file + +2003-05-23 Monte Ohrt + + * NEWS: + upd NEWS file + + * libs/Smarty_Compiler.class.php: + allow spaces in literal tags + +2003-05-22 Monte Ohrt + + * docs/fr/programmers.sgml: + fix special chars + +2003-05-19 Monte Ohrt + + * NEWS + libs/Smarty_Compiler.class.php: + speed up compiled templates, hardcode plugin filepaths instead of + recalculate at runtime + +2003-05-19 Messju Mohr + + * docs/designers.sgml: + fixed example of {html_image} + + * docs/designers.sgml: + fixed typo + +2003-05-12 Messju Mohr + + * libs/Smarty.class.php + libs/plugins/core.read_cache_file.php + libs/plugins/core.smarty_include.php + libs/plugins/function.config_load.php: + fixed multiple redundant occurrences for 'config' and 'template' in + $smarty->_cache_info + +2003-05-10 Messju Mohr + + * libs/plugins/core.create_dir_structure.php: + refurbished create_dir_structure to use '/' internally + + * libs/plugins/core.create_dir_structure.php: + fixed windows absolute-paths in smarty_core_create_dir_structure() + + * libs/plugins/core.create_dir_structure.php: + fixed error-message + +2003-05-09 Messju Mohr + + * libs/Smarty_Compiler.class.php: + fixed warning due to missing param to _execute_core_function() + + * libs/Smarty_Compiler.class.php: + fixed quoting in _compile_include_php + + * libs/Smarty_Compiler.class.php: + fixed quoting of "file"-parameter in _compile_include_tag() + +2003-05-08 Monte Ohrt + + * docs/programmers.sgml: + fix typo + + * libs/Smarty.class.php + libs/Smarty_Compiler.class.php + libs/plugins/core.compile_template.php + libs/plugins/core.create_dir_structure.php + libs/plugins/core.fetch_template_info.php + libs/plugins/core.get_include_path.php + libs/plugins/core.get_microtime.php + libs/plugins/core.get_php_resource.php + libs/plugins/core.is_secure.php + libs/plugins/core.is_trusted.php + libs/plugins/core.load_plugins.php + libs/plugins/core.load_resource_plugin.php + libs/plugins/core.parse_file_path.php + libs/plugins/core.process_cached_inserts.php + libs/plugins/core.read_cache_file.php + libs/plugins/core.rm_auto.php + libs/plugins/core.rmdir.php + libs/plugins/core.run_insert_handler.php + libs/plugins/core.smarty_include.php + libs/plugins/core.smarty_include_php.php + libs/plugins/core.write_cache_file.php + libs/plugins/core.write_compiled_template.php + libs/plugins/core.write_file.php + libs/plugins/function.config_load.php + libs/plugins/function.fetch.php + libs/plugins/function.html_image.php: + abstract more private functions to plugin directory + + * libs/Config_File.class.php: + only add DIRECTORY_SEPARATOR if it isn't already present + + * libs/Config_File.class.php: + fix directory separator code, use DIRECTORY_SEPARATOR + +2003-05-08 Messju Mohr + + * docs/designers.sgml: + fixed example of html_checkboxes + + * NEWS + libs/Smarty.class.php: + fixed bug in _create_dir_structure() when used with + open_basedir-restriction and relative paths + + * docs/designers.sgml: + fixed example for html_radios + +2003-05-07 Monte Ohrt + + * libs/Smarty.class.php + libs/Smarty_Compiler.class.php + libs/plugins/core.assign_smarty_interface.php + libs/plugins/core.display_debug_console.php + libs/plugins/function.display_debug_console.php: + abstracted display_debug_console and assign_smarty_interface to plugin dir + as a test + + * libs/Smarty.class.php + libs/plugins/function.display_debug_console.php: + correct misc varnames, abstract debug console display to plugin function + + * libs/plugins/modifier.escape.php: + fix typo + +2003-05-05 Monte Ohrt + + * libs/Smarty_Compiler.class.php: + add % to math + + * libs/Smarty.class.php: + clean up comments, formatting + + * NEWS + libs/Smarty.class.php: + keep DIR_SEP for 3rd party compatability + + * NEWS + libs/Smarty.class.php: + remove DIR_SEP, use DIRECTORY_SEPARATOR exclusively + + * libs/Smarty_Compiler.class.php: + remove ++ and -- math operators on template vars + +2003-05-04 Messju Mohr + + * libs/Smarty_Compiler.class.php: + removed unused parameter $quote from Smarty_Compiler::_parse_attrs() + + * libs/plugins/function.html_image.php: + fixed DIR_SEP in html_image-plugin + +2003-05-04 Monte Ohrt + + * NEWS + libs/Smarty.class.php: + rename DIR_SEP to SMARTY_DIR_SEP to avoid varname collisions + +2003-05-04 Messju Mohr + + * NEWS + libs/plugins/function.html_image.php: + changed "link" to "href" in html_image. "link" is still working but + deprecated + html_image always renders an alt-tag now (default alt="") + cleaned up indentiation of function.html_image.php + +2003-05-03 Monte Ohrt + + * libs/debug.tpl: + fix typo + +2003-05-02 Messju Mohr + + * NEWS + libs/plugins/function.counter.php: + fixed assign attribute for multiple counters + +2003-05-02 Monte Ohrt + + * libs/Smarty_Compiler.class.php: + allow math on negative number + + * NEWS + libs/Smarty_Compiler.class.php: + added simple math operators to variables + +2003-05-02 Messju Mohr + + * docs/designers.sgml: + fixed typos + +2003-04-30 Monte Ohrt + + * docs/fr/appendixes.sgml + docs/fr/common.dsl + docs/fr/designers.sgml + docs/fr/getting-started.sgml + docs/fr/html-common.dsl + docs/fr/html.dsl + docs/fr/manual.sgml + docs/fr/php.dsl + docs/fr/preface.sgml + docs/fr/programmers.sgml: + add frech docs to cvs repository + +2003-04-29 Messju Mohr + + * NEWS + libs/Smarty.class.php + libs/Smarty_Compiler.class.php: + reverted patch for case-insensitive tag-names + +2003-04-28 Messju Mohr + + * docs/programmers.sgml: + reverted back to humerous redundancy in the docs :). although we all + know we are here to generate template-based output, and not to have + fun ;-) + + * docs/getting-started.sgml: + fixed default user and group for max os x installation + + * libs/Smarty.class.php: + made $function[2] and $function[3] options for register_resource + + * libs/Smarty.class.php: + fixed issue with object-callback when fetching a php-resource + + * NEWS + libs/Smarty.class.php: + enabled array(&$obj. 'source', 'timestamp', 'secure', 'trusted') as + callback for register_resource() + + enabled array(&$obj, 'method') as callback for + $default_template_handler_func + +2003-04-27 Messju Mohr + + * docs/designers.sgml + docs/programmers.sgml: + fixed some typos, thank to mehdi + + * libs/plugins/function.counter.php: + prevent assign from overruling print-attribute in function.counter.php + + * libs/plugins/function.counter.php: + fixed problem with counter and assign + + * libs/Smarty.class.php: + fixed notice in _load_plugins() + + * NEWS + libs/Smarty.class.php + libs/Smarty_Compiler.class.php: + made plugin-names case-insensitive. this affects + compiler/block/custom-functions and modifers. + +2003-04-26 Monte Ohrt + + * NEWS + libs/Smarty_Compiler.class.php: + remove unnecessary close/open tags from compiled templates + +2003-04-26 Messju Mohr + + * docs/designers.sgml: + added documentation for foreach.property.* + +2003-04-24 Messju Mohr + + * docs/designers.sgml: + fixed example table_attr and tr_attr in html_table-example + +2003-04-21 Greg Beaver + + * libs/Smarty.class.php: + fixed small bug in doc comments + +2003-04-21 Messju Mohr + + * NEWS + libs/plugins/function.html_image.php: + fixed errornous creation of '//' in image_path in html_image + +2003-04-21 Monte Ohrt + + * libs/plugins/modifier.debug_print_var.php: + fix htmlspecialchars() conflict + + * NEWS + libs/plugins/modifier.debug_print_var.php: + fix escapement of special chars in key values of debug console + + * NEWS + libs/plugins/function.config_load.php: + fixed debug timing logic for config_load + + * docs/designers.sgml: + fix example text + + +2003-04-20 Greg Beaver + * plugins/* + Smarty.class.php + Smarty_Compiler.class.php + Config_File.class.php: + updated all doc comments to phpDocumentor format (whew!) + +2003-04-06 Messju Mohr + + * libs/plugins/function.math.php: + allowed "_" in the name of variable-parameters to {math}-function + +2003-04-04 Monte Ohrt + + * NEWS + docs/designers.sgml + libs/Smarty_Compiler.class.php: + change backtic syntax from $`foo` to `$foo` + + * NEWS + libs/Smarty_Compiler.class.php: + recognize $foo[][] syntax in embedded quotes without backticks + +2003-04-03 Messju Mohr + + * NEWS + libs/Smarty_Compiler.class.php: + name=123 is passed as an integer (not a string) to plugins now + +2003-04-01 Messju Mohr + + * libs/Smarty.class.php + libs/Smarty_Compiler.class.php: + added CVS $Id: ChangeLog,v 1.417 2006/05/26 05:32:07 changelog Exp $ + +2003-03-31 Messju Mohr + + * libs/Smarty.class.php: + added missing compile_id inside Smarty_Compiler + + * libs/Smarty_Compiler.class.php: + fixed flaw when generating an error for missing postfilter + +2003-03-31 Monte Ohrt + + * docs/getting-started.sgml + docs/programmers.sgml: + fix typos + +2003-03-27 Messju Mohr + + * NEWS + libs/plugins/modifier.debug_print_var.php: + $length is now propagated to sub-values in debug_print_var + +2003-03-26 Monte Ohrt + + * NEWS: + update header + + * RELEASE_NOTES: + commit changes to release notes + + * (Smarty_2_5_0_RC2) + libs/Config_File.class.php + libs/Smarty.class.php + libs/Smarty_Compiler.class.php: + committing RC2 + +2003-03-24 Messju Mohr + + * NEWS + libs/Smarty.class.php: + made clear_cache() ignore compile_id when clearing cache_groups + + * libs/plugins/function.popup.php: + made onmouseout XHTML-compatible in function.popup.php + +2003-03-21 Messju Mohr + + * NEWS + libs/Smarty.class.php: + applied new var-names to fetch() + + * NEWS + libs/Smarty.class.php: + renamed $localvars to $_localvars in cache-file-handling-functions, + added _get_auto_id()-function + +2003-03-21 Monte Ohrt + + * libs/plugins/function.mailto.php + libs/plugins/function.popup.php: + update functions for XHTML compatability + +2003-03-21 Messju Mohr + + * libs/Smarty.class.php: + fixed wrong $auto_id in _read_cache_file() + + * NEWS + libs/Smarty.class.php: + swapped compile_id and cache_id in read_cache_file and write_cache_file + + * libs/Smarty.class.php: + reverted patch for ignoring compile-id back to -r1.364, due to problems + + * NEWS + libs/plugins/function.html_checkboxes.php + libs/plugins/function.html_radios.php: + html_radios and html_checkboxes accept "selected" instead of "checked" + optionally now + + * NEWS + libs/Smarty.class.php: + swapped compile_id and cache_id for cache-file-handling again + +2003-03-20 Monte Ohrt + + * libs/Smarty_Compiler.class.php: + fix notice when no parameter is passed to default + +2003-03-20 Messju Mohr + + * NEWS + libs/Smarty.class.php: + removed notice of undefined var in _rm_auto() + +2003-03-19 Monte Ohrt + + * libs/plugins/function.html_checkboxes.php + libs/plugins/function.html_radios.php + libs/plugins/function.html_table.php: + fix a few error messages, follow consistancy format plugin_name: errormsg + + * libs/plugins/function.html_radios.php: + update error messages + + * NEWS + libs/plugins/function.html_radios.php: + add a warning when an array is passed as the 'checked' value of html_radios + +2003-03-19 Messju Mohr + + * NEWS + libs/Smarty_Compiler.class.php: + fixed errormessage in _compile_smarty_ref() + + * NEWS + docs/designers.sgml: + updated docs for html_image + +2003-03-18 Messju Mohr + + * NEWS + libs/Smarty.class.php: + cleaned up calls to readdir() + + * libs/plugins/function.html_options.php: + fixed label for optgroup in html_options + +2003-03-18 Monte Ohrt + + * NEWS + libs/Smarty_Compiler.class.php: + fix (newly introduced) bug with passing multiple modifiers to a parameter + +2003-03-18 Messju Mohr + + * NEWS + docs/designers.sgml: + updated docs for html_checkboxes, html_options and html_radios + + * libs/plugins/function.html_options.php: + fixed wrong default-"name" in function.html_options.php + + * NEWS + libs/plugins/function.html_checkboxes.php + libs/plugins/function.html_radios.php: + renamed "checkbox" and "radios" to "options" in {html_checkboxes} and + {html_radios} + + * libs/plugins/outputfilter.trimwhitespace.php: + tried to optimize re-replacement in outputfilter.trimwhitespace.php a + little + + * libs/plugins/outputfilter.trimwhitespace.php: + fixed greedy str_replace in outputfilter.trimwhitespace.php + + * NEWS + libs/plugins/function.html_checkboxes.php + libs/plugins/function.html_options.php + libs/plugins/function.html_radios.php: + html_options, html_checkboxes and html_radios now pass-thru all unknown + paramters + +2003-03-17 Messju Mohr + + * NEWS + libs/plugins/function.html_options.php: + html_options passthru all unknown paramters now + +2003-03-17 Monte Ohrt + + * NEWS + libs/plugins/function.html_image.php: + Fix link bug in html_image function, also make output XHTML compatible + + * libs/Smarty_Compiler.class.php: + fix issue of embedded var and escaped double quotes + +2003-03-15 Monte Ohrt + + * NEWS + libs/Smarty_Compiler.class.php: + back out "@" logic, apply only to default modifier special case + + * libs/Smarty_Compiler.class.php: + fix @ logic, only use upon an echo + + * NEWS + libs/Smarty_Compiler.class.php: + append "@" to template var echoes to supress possible notices + + * NEWS + libs/Smarty_Compiler.class.php: + append "@" to _run_mod_handler to supress warnings + +2003-03-14 Monte Ohrt + + * NEWS + libs/Smarty_Compiler.class.php: + fix problem with escaped double quotes + + * NEWS + libs/plugins/function.html_radios.php: + fixed html_options to not return an array + +2003-03-12 Messju Mohr + + * NEWS + libs/plugins/modifier.truncate.php: + fixed length in modifier.truncate.php + + * NEWS + libs/plugins/outputfilter.trimwhitespace.php: + fixed handling of '$'-signs in trimwhitespace outputfilter (messju) + +2003-03-12 Monte Ohrt + + * docs/programmers.sgml: + update technical explanation of assign_by_ref and append_by_ref + +2003-03-11 Monte Ohrt + + * NEWS + libs/Smarty.class.php: + fix config file recompiling code + +2003-03-07 Monte Ohrt + + * libs/plugins/function.html_image.php: + change E_USER_ERROR to E_USER_NOTICE + + * libs/plugins/function.html_image.php: + suppress warning in html_image + + * NEWS + libs/plugins/function.html_image.php: + update changes to html_image + +2003-03-06 Monte Ohrt + + * docs/designers.sgml + docs/de/appendixes.sgml + docs/de/common.dsl + docs/de/designers.sgml + docs/de/getting-started.sgml + docs/de/html-common.dsl + docs/de/html.dsl + docs/de/manual.sgml + docs/de/preface.sgml + docs/de/programmers.sgml: + add german docs to dist + + * NEWS: + update news file + + * libs/plugins/function.html_image.php: + fix width/height parameter index + + * NEWS + libs/Smarty.class.php: + get rid of unsetting name and script attributes to insert tags + +2003-03-05 Monte Ohrt + + * NEWS + RELEASE_NOTES: + update NEWS file + + * libs/plugins/modifier.string_format.php: + fix argument order, erroneously swapped a while back + + * (Smarty_2_5_0_RC1) + NEWS + README + RELEASE_NOTES + libs/Config_File.class.php + libs/Smarty.class.php + libs/Smarty_Compiler.class.php: + commit final changes for 2.5.0-RC1 + +2003-03-04 Monte Ohrt + + * docs/programmers.sgml: + remove $show_info_header and $show_info_include property vars from docs + +2003-03-03 Monte Ohrt + + * NEWS + libs/plugins/function.popup.php: + fixed PHP notice + +2003-02-28 Monte Ohrt + + * libs/Smarty_Compiler.class.php: + simplify smarty.const.foo and smarty.const.$foo logic + + * libs/Smarty_Compiler.class.php: + only allow $foo syntax in embedded quotes, unless escaped with backticks + then allow any dollar var + + * NEWS + libs/Smarty_Compiler.class.php: + fix "once" var compiling to work with new attr compiling methods for + include_php + + * FAQ + NEWS + README + docs/designers.sgml + docs/getting-started.sgml + libs/Smarty_Compiler.class.php + libs/plugins/function.html_checkboxes.php + libs/plugins/function.html_image.php + libs/plugins/function.html_options.php + libs/plugins/function.html_radios.php + libs/plugins/function.html_select_date.php + libs/plugins/function.html_select_time.php + libs/plugins/function.html_table.php: + fix $smarty.const.foo compiling, clean up double quoted strings, + allow full dollar var syntax in quotes again + +2003-02-27 Monte Ohrt + + * docs/designers.sgml + docs/programmers.sgml + libs/Smarty_Compiler.class.php: + update docs, fix smarty var compiling, allow any $smarty.*.$foo syntax, + add $`foobar` for embedded variables + + * libs/plugins/function.html_image.php: + update functionality + +2003-02-26 Monte Ohrt + + * NEWS + libs/plugins/modifier.nl2br.php: + add nl2br modifier + + * libs/plugins/function.html_image.php: + add link parameter + +2003-02-24 Monte Ohrt + + * libs/Smarty.class.php + libs/plugins/function.html_image.php: + fix rename problem in windows, unlink first + + * libs/plugins/function.html_checkboxes.php + libs/plugins/function.html_image.php + libs/plugins/function.html_options.php + libs/plugins/function.html_radios.php + libs/plugins/shared.escape_special_chars.php: + update functions with separate escape_special_chars routine + + * NEWS + libs/plugins/function.html_checkboxes.php + libs/plugins/function.html_radios.php: + commit checkboxes, update radios + + * NEWS + libs/Smarty.class.php + libs/plugins/function.html_image.php: + fix bug with get_registered_object + + * NEWS + libs/plugins/modifier.cat.php: + added cat modifier to distribution + + * NEWS + libs/Smarty_Compiler.class.php: + added << >> <> support to IF statements + + * libs/plugins/function.html_radios.php: + apply patch to initial html_radios function + + * NEWS + libs/Smarty.class.php: + fix _assign_smarty_interface to not overwrite keys other than 'request' + + * NEWS + libs/plugins/function.html_radios.php: + added html_radios to distribution + + * NEWS + libs/plugins/modifier.string_format.php: + fixed arg order of string_format + + * NEWS + libs/Smarty.class.php: + use tmp file for file writes, avoid race condition + + * NEWS + libs/Smarty_Compiler.class.php: + add $smarty.config.foo var, handle embedded smarty var correctly + + * NEWS + libs/plugins/function.fetch.php: + silence warnings in fetch plugin + +2003-02-21 Monte Ohrt + + * INSTALL: + update wording + + * INSTALL: + update install instructions + + * AUTHORS + BUGS + CREDITS + QUICKSTART + README + RESOURCES + TESTIMONIALS: + remove some files already in docs or elsewhere + + * demo/index.php: + add templates_c to repository + + * index.php: + move demo files to demo directory + + * Config_File.class.php + Smarty.class.php + Smarty_Compiler.class.php + debug.tpl: + moved lib files under libs directory + +2003-02-20 Monte Ohrt + + * NEWS + Smarty.class.php: + add get_config_vars() method, update get_template_vars() functionality + + * NEWS + Smarty.class.php: + fix minor logic in _fetch_template_info() + + * NEWS + Smarty.class.php: + support merging appended vars + + * NEWS + Smarty.class.php: + fix cache groups behavior with compile_id set + +2003-02-19 Monte Ohrt + + * Smarty.class.php: + back out third parameter, extend functionality of append + + * NEWS + Smarty_Compiler.class.php: + update imbedded vars, allow special $smarty vars + + * plugins/function.html_table.php: + add plugin html_table + + * NEWS + Smarty.class.php: + support appending key=>val pairs + + * NEWS + Smarty_Compiler.class.php: + change embedded variable logic to only recognize $foo and $foo[0][bar] + syntax + + * NEWS + Smarty_Compiler.class.php: + allow null as function attribute value + +2003-02-18 Monte Ohrt + + * NEWS + Smarty.class.php + Smarty_Compiler.class.php: + support foo->bar[index] syntax + + * Smarty_Compiler.class.php: + allow $foo->bar[0] syntax + +2003-02-17 Monte Ohrt + + * plugins/modifier.escape.php: + fix syntax error from previous commit + + * NEWS + Smarty.class.php: + add error msgs to get_registered_object + + * Smarty.class.php: + add function for getting reference to registered object + + * Smarty_Compiler.class.php: + back out patches for object and objref calls on $smarty var + + * NEWS + Smarty_Compiler.class.php: + treat unrecognized param attribute syntax as a string + + * NEWS + Smarty_Compiler.class.php: + support $smarty.const.$foo syntax + + * NEWS + debug.tpl + plugins/modifier.count_words.php + plugins/modifier.escape.php: + fix E_NOTICE messages + + * NEWS + Smarty.class.php + Smarty_Compiler.class.php: + add @ and === to if tokens, few param cleanups + +2003-02-16 Greg Beaver + + * ChangeLog + Smarty.class.php + Smarty_Compiler.class.php: + many more phpdoc comment upgrades + +2003-02-15 Greg Beaver + * Smarty.class.php + Smarty_Compiler.class.php + continue cleaning of phpdoc comments. All that is needed is the + addition of @return tags and perhaps a bit more verbose comments + and they are finished. + +2003-02-14 Monte Ohrt + + * NEWS + Smarty.class.php: + enable config_load error messages + + * NEWS + plugins/function.html_options.php: + fix html_options to not escape already escaped entities + + * NEWS + Smarty.class.php: + send Last-Modified header on cache creation, misc tab/spacing cleanup + +2003-02-13 Monte Ohrt + + * Smarty_Compiler.class.php + docs/designers.sgml: + allow dash in plain text + + * NEWS + Smarty_Compiler.class.php: + check strict syntax of function attributes + +2003-02-12 Monte Ohrt + + * NEWS + Smarty_Compiler.class.php: + dropped support for modifiers on object parameters, + added support for objects as modifier parameters + + * NEWS + Smarty_Compiler.class.php + docs/designers.sgml: + fix bug with decimal numbers in if statements, misc doc updates + +2003-02-11 Monte Ohrt + + * (Smarty_2_4_2) + Config_File.class.php + NEWS + README + RELEASE_NOTES + Smarty.class.php + Smarty_Compiler.class.php: + update version numbers + +2003-02-10 Monte Ohrt + + * NEWS + Smarty_Compiler.class.php: + add support for $foo->$bar syntax + + * NEWS: + update NEWS file + + * NEWS + Smarty_Compiler.class.php: + support full var syntax in quoted text, fix problem with const var access, + clean up some more regex code, fix object problem with no properties + +2003-02-06 Monte Ohrt + + * (Smarty_2_4_1) + Config_File.class.php + NEWS + README + RELEASE_NOTES + Smarty.class.php + Smarty_Compiler.class.php: + committed 2.4.1 changes + + * NEWS + Smarty_Compiler.class.php: + ignore case in IF statements + +2003-02-05 Monte Ohrt + + * NEWS + Smarty_Compiler.class.php: + treat undefined constants as null + + * NEWS + Smarty.class.php: + fix problem with inserts and nested fetches + + * Smarty_Compiler.class.php: + fix "if" regex for math tokens + + * NEWS + Smarty.class.php + Smarty_Compiler.class.php + docs/getting-started.sgml: + added support for extracting params to include_php + +2003-02-04 Monte Ohrt + + * RELEASE_NOTES: + reformat text + +2003-02-03 Monte Ohrt + + * NEWS: + update news file + +2003-02-03 Greg Beaver + + * ChangeLog + Smarty.class.php: + begin fixing phpdoc comments in Smarty.class.php + + * ChangeLog + Config_File.class.php: + fixed phpdoc comments + +2003-02-03 Monte Ohrt + + * Smarty_Compiler.class.php: + allow $foo->bar[$x].foo syntax + + * Smarty_Compiler.class.php + index.php + configs/test.conf + templates/index.tpl: + fix accidental commit + + * index.php + configs/test.conf + templates/index.tpl: + allow $foo->bar[$j].blah type of syntax + +2003-02-02 Greg Beaver + + * Smarty.class.php + begin fixing of phpdoc comments + + * Config_File.class.php + fix phpdoc comments, add phpDocumentor docblock templates + +2003-02-02 Monte Ohrt + + * Smarty.class.php + docs/html.dsl + docs/php.dsl: + fix version number + + * (Smarty_2_4_0) + Config_File.class.php + NEWS + README + RELEASE_NOTES + Smarty.class.php + Smarty_Compiler.class.php + docs/appendixes.sgml + docs/designers.sgml + docs/programmers.sgml: + update Smarty version numbers + +2003-01-30 Monte Ohrt + + * NEWS + Smarty_Compiler.class.php + TODO: + fix order of php tag comparisons + + * NEWS + Smarty_Compiler.class.php: + fix known php tag handling problems + +2003-01-29 Monte Ohrt + + * Smarty.class.php + Smarty_Compiler.class.php: + change comments to phpdoc style + +2003-01-28 Monte Ohrt + + * Smarty.class.php + docs/programmers.sgml: + make separate var for compiler file + + * plugins/function.fetch.php: + fix error call + +2003-01-25 Monte Ohrt + + * Smarty.class.php + Smarty_Compiler.class.php: + add support for restriction to registered methods + + * plugins/outputfilter.trimwhitespace.php: + update with textarea support + +2003-01-24 Monte Ohrt + + * Smarty_Compiler.class.php: + fix compiling problem with {foreach} tags + + * Smarty.class.php + Smarty_Compiler.class.php: + put objects in own array, add object param format support, change + object syntax from foo.bar to foo->bar + +2003-01-23 Monte Ohrt + + * NEWS + Smarty.class.php + Smarty_Compiler.class.php: + add support for object registration + +2003-01-22 Monte Ohrt + + * Smarty.class.php: + add file & line number of calling error to error message + +2003-01-21 Monte Ohrt + + * Smarty_Compiler.class.php: + put php style object syntax back in + +2003-01-20 Monte Ohrt + + * Smarty.class.php: + move security settings to fetch function for template_dir + + * NEWS + Smarty.class.php: + fix debug template and security, add template_dir to secure_dir at runtime + +2003-01-17 Monte Ohrt + + * NEWS + Smarty.class.php + Smarty_Compiler.class.php: + added new object support without new template syntax + +2003-01-15 Monte Ohrt + + * NEWS + Smarty.class.php + Smarty_Compiler.class.php: + fix if statement syntax for negative integers, fix issue with directories + named '0' + +2003-01-08 Monte Ohrt + + * Smarty.class.php + plugins/function.counter.php + plugins/function.cycle.php + plugins/function.debug.php + plugins/function.eval.php + plugins/function.fetch.php + plugins/function.html_options.php + plugins/function.html_select_date.php + plugins/function.html_select_time.php + plugins/function.mailto.php + plugins/function.math.php + plugins/function.popup.php + plugins/function.popup_init.php: + update plugins to return values instead of echo, fix config file cache + to include global config variables in cache file + + * Smarty_Compiler.class.php: + fix bug with >= tests in if statements, comment out full object support + +2003-01-06 Monte Ohrt + + * NEWS + docs/html.dsl + plugins/modifier.escape.php: + add javascript escape parameter to escape modifier + +2003-01-02 Monte Ohrt + + * templates/header.tpl: + move the title into head where it should be + +2002-12-24 Monte Ohrt + + * Smarty_Compiler.class.php: + added correct line numbers to smarty syntax error messages + + * docs/programmers.sgml: + update append documentation, make more clear on its function + + * Smarty_Compiler.class.php: + fix modifier matching regexp + +2002-12-23 Monte Ohrt + + * Smarty_Compiler.class.php: + support nested function calls in IF statements + +2002-12-20 Monte Ohrt + + * Smarty_Compiler.class.php: + few more fixes, spaces around function parameters + + * Smarty_Compiler.class.php: + fix misc syntax issues with {if} tags + +2002-12-20 Monte Ohrt + + * Smarty_Compiler.class.php: + fix misc syntax issues with {if} tags + +2002-12-19 Monte Ohrt + + * Smarty_Compiler.class.php: + commit updates, passes all smoke tests + + * NEWS: + update NEWS file + + * Smarty_Compiler.class.php: + fixed literal string not in quotes as parameters + + * NEWS + Smarty_Compiler.class.php: + fix misc syntax issues, add ability to pass modifiers to functions + +2002-12-18 Monte Ohrt + + * NEWS: + update NEWS + + * NEWS + Smarty.class.php + Smarty_Compiler.class.php: + update compiler code, clean up regex, add new syntax features + +2002-12-16 Monte Ohrt + + * NEWS: + update NEWS file + + * Smarty_Compiler.class.php: + commit updates for objects + +2002-12-14 Monte Ohrt + + * Smarty.class.php + Smarty_Compiler.class.php: + fix bug with compiling config files with caching on + +2002-12-13 Monte Ohrt + + * Smarty_Compiler.class.php: + fix problem with matching single quoted strings + + * Smarty_Compiler.class.php: + update embedded variable logic, get rid of ."" at end of output + + * NEWS + docs/designers.sgml + plugins/function.html_select_date.php: + add day_value_format to html_select_date + +2002-12-12 Monte Ohrt + + * plugins/modifier.debug_print_var.php: + fix bug, double escaped values in display + + * Smarty.class.php: + move debug test back into fetch() + + * NEWS + Smarty.class.php + Smarty_Compiler.class.php + plugins/outputfilter.trimwhitespace.php: + assigned vars are no longer in global name space, few debug cleanups + +2002-12-11 Monte Ohrt + + * plugins/function.popup.php: + fix error in newline code + + * plugins/function.popup.php: + fix popup to allow newlines in text data + +2002-12-10 Monte Ohrt + + * Smarty.class.php: + fix plugin error logic + + * docs/designers.sgml + docs/programmers.sgml: + edit examples, make more verbose + + * NEWS + plugins/function.html_options.php: + escape html entities in the option values and output + + * NEWS + plugins/function.html_options.php: + fixed bug with label of html_options + +2002-12-09 Monte Ohrt + + * Smarty.class.php: + add support for var_export() + + * Config_File.class.php + Smarty.class.php: + clean up code, respect force_compile and compile_check flags + + * NEWS + Smarty.class.php + Smarty_Compiler.class.php + docs/designers.sgml + plugins/function.mailto.php: + add caching feature to config loading, document update, add mailto plugin + +2002-12-08 Monte Ohrt + + * plugins/function.fetch.php: + fix query part of URL + +2002-12-05 Monte Ohrt + + * docs/designers.sgml: + fix typos + +2002-11-22 Monte Ohrt + + * Smarty_Compiler.class.php: + patch for warning message + +2002-11-21 Monte Ohrt + + * RELEASE_NOTES + Smarty.class.php: + get rid of testing for a set value with assign function, just set to + whatever is passed into the template + + * docs/programmers.sgml: + fix typo + +2002-11-19 Monte Ohrt + + * Config_File.class.php + NEWS + README + RELEASE_NOTES + Smarty.class.php + Smarty_Compiler.class.php: + commit changes, ready for 2.3.1 release + +2002-11-01 Monte Ohrt + + * plugins/function.html_options.php: + added label attribute to all option outputs, cover w3c spec. + + * NEWS: update NEWS file + + * docs/designers.sgml: update docs for optgroup output + + * plugins/function.html_options.php: + make html_options work with optgroup, make func modular and recursive. + +2002-10-29 Monte Ohrt + + * NEWS + Smarty.class.php: set mtime on compile files so they match source files + +2002-10-18 Monte Ohrt + + * NEWS + Smarty.class.php: added proper support for open_basedir setting + + * docs/designers.sgml: clear up docs on index, iteration and rownum + +2002-10-16 Monte Ohrt + + * plugins/modifier.default.php: fix warning message in default modifier + +2002-09-25 Monte Ohrt + + * docs/designers.sgml + plugins/modifier.strip.php + NEWS: added strip variable modifier + +2002-09-24 Andrei Zmievski + + * NEWS: *** empty log message *** + + * Smarty_Compiler.class.php: + Fix to be able to use $smarty.x variables as arrays. + +2002-09-23 Monte Ohrt + + * Config_File.class.php: + add support for mac/dos formatted config files (fix newlines) + + * docs/programmers.sgml: add optional tags to clear_cache parameters + + * docs/designers.sgml: + fix error with include_php description, add $this to description + +2002-09-20 Monte Ohrt + + * NEWS + docs/getting-started.sgml: fixed errors with example setup docs + +2002-09-16 Monte Ohrt + + * plugins/block.textformat.php + docs/designers.sgml + NEWS: add textformat block function + +2002-09-10 Monte Ohrt + + * docs/designers.sgml: + add assign attribute to cycle function documentation + + * docs/designers.sgml + docs/programmers.sgml: fix typos + +2002-09-09 Monte Ohrt + + * plugins/function.debug.php + templates/header.tpl: + fix header in debug template, fix typo in header.tpl example + +2002-08-15 mohrt + + * docs/programmers.sgml: fix typos + +2002-08-08 mohrt + + * RELEASE_NOTES + Smarty.class.php: + supress warnings from unlink() and is_dir(), let error handler deal with it + +2002-08-07 mohrt + + * docs/appendixes.sgml + docs/designers.sgml + docs/programmers.sgml + Config_File.class.php + NEWS + README + RELEASE_NOTES + Smarty.class.php + Smarty_Compiler.class.php: update files with new version numbers + +2002-08-02 mohrt + + * NEWS: update NEWS file with credits + + * NEWS + Smarty.class.php: added assign_by_ref() and append_by_ref() functions + +2002-08-01 mohrt + + * TODO + NEWS + Smarty.class.php: + changed default warning type for plugin errors from E_USER_WARNING to E_USER_ERROR + +2002-07-29 mohrt + + * plugins/function.html_select_time.php + docs/designers.sgml + NEWS: added paramters to html_select_time plugin + +2002-07-25 Andrei Zmievski + + * TODO: *** empty log message *** + +2002-07-24 mohrt + + * QUICKSTART: update QUICKSTART guide + + * NEWS + debug.tpl + plugins/modifier.debug_print_var.php: + update debug console to show objects, fix warning in debug.tpl + +2002-07-23 mohrt + + * docs/programmers.sgml: fix load_filter examples + + * Config_File.class.php + NEWS: fix error when there are no sections in config file + +2002-07-19 mohrt + + * docs/getting-started.sgml: fix error in install guide + +2002-07-18 mohrt + + * Smarty_Compiler.class.php: + correct the expression match for smarty:nodefaults + +2002-07-17 mohrt + + * Smarty_Compiler.class.php: fix default modifier to work with config vars + + * Smarty_Compiler.class.php: got args to strstr backwards... + + * NEWS + Smarty.class.php + Smarty_Compiler.class.php: + change default modifiers to array instead of string + + * Smarty_Compiler.class.php + docs/designers.sgml + Smarty.class.php: add default modifier logic, minor doc updates + + * NEWS + Smarty.class.php + plugins/function.popup_init.php: + make popup_init xhtml compliant, minor variable name changes for consistancy + +2002-07-16 mohrt + + * NEWS: update NEWS file + + * plugins/function.debug.php + Smarty.class.php + debug.tpl + NEWS: + fix problem with filenames on windows, add ability to supply expire time in seconds when clearing cache or compiled files + +2002-07-15 mohrt + + * Smarty.class.php: + fixed problem with insert tags when loading function from script attribute + and caching enabled (Monte) + +2002-07-14 mohrt + + * NEWS + Smarty.class.php: fix bug with debug_tpl file path for Windows + +2002-07-12 Monte Ohrt + + * Smarty.class.php: fix append function with array/string issue + +2002-07-11 Monte Ohrt + + * RELEASE_NOTES: update release notes + + * NEWS + README + RELEASE_NOTES + Smarty.class.php + Smarty_Compiler.class.php + Config_File.class.php: update files to 2.2.0 tags, get ready for release + +2002-07-09 Monte Ohrt + + * NEWS + Smarty.class.php: make debug.tpl work with any delimiter + + * NEWS + Smarty.class.php: + change tests in append and assign to != '' instead of empty(), which is more accurate + +2002-07-08 Monte Ohrt + + * docs/designers.sgml: minor doc update + + * Smarty.class.php: + cast var as an array, simplify and get rid of PHP warning messages + +2002-07-03 Monte Ohrt + + * Smarty.class.php: one more N + + * Smarty.class.php: + prepend "N" to filenames to avoid possible OS issues with dir names starting with "-" + + * Smarty.class.php: only set $debug_tpl in constructor if empty + + * Smarty.class.php + docs/designers.sgml + docs/getting-started.sgml + docs/programmers.sgml: + make use_sub_dirs go back to crc32 for subdir separation + +2002-06-29 Monte Ohrt + + * plugins/function.eval.php: do nothing if $val is empty + + * TODO + plugins/function.eval.php + plugins/function.popup_init.php: + add zindex to popup init, fix error message for eval. + +2002-06-27 Monte Ohrt + + * Smarty.class.php: + only loop through relative paths for PHP include_path, remove $_relative variable + + * Smarty_Compiler.class.php: added {$smarty.version} variable + +2002-06-26 Monte Ohrt + + * docs/appendixes.sgml + docs/designers.sgml + docs/getting-started.sgml + docs/programmers.sgml + Smarty.class.php: + update plugin loading logic, look in SMARTY_DIR, then cwd. If all fail, then retry all with include_path + + * templates/header.tpl + Smarty.class.php: update get_include_path, get _path_array only once + + * Smarty.class.php: fix get_include_path function for windows + + * Smarty.class.php: update plugin search logic + + * Smarty.class.php: only search include_path if relative path + + * plugins/function.html_select_date.php + plugins/function.html_select_time.php + plugins/modifier.date_format.php + Smarty_Compiler.class.php + NEWS + Smarty.class.php: allow plugins_dir to be an array of directories + +2002-06-25 Monte Ohrt + + * docs/programmers.sgml + docs/getting-started.sgml: update installation docs + + * debug.tpl + docs/getting-started.sgml + templates/debug.tpl + NEWS + Smarty.class.php: move debug.tpl to SMARTY_DIR, add to constructor + +2002-06-24 Monte Ohrt + + * plugins/function.assign_debug_info.php + NEWS: fixed warning message in function.assign_debug_info + + * Smarty.class.php: update include_path fixes + + * NEWS: + fixed $template_dir, $compile_dir, $cache_dir, $config_dir to respect include_path + +2002-06-23 Monte Ohrt + + * plugins/shared.make_timestamp.php: + update timestamp plugin to work when passed a timestamp + +2002-06-19 Monte Ohrt + + * NEWS: update NEWS file + + * plugins/modifier.date_format.php + docs/designers.sgml: + update date_format, allow optional 2nd paramater as default date if passed date is empty. update docs. + + * plugins/modifier.date_format.php: + fix date_format modifier, return nothing if given empty string + +2002-06-18 Monte Ohrt + + * NEWS + plugins/function.cycle.php: + gave $reset a default value in cycle function + + * plugins/function.html_select_date.php + plugins/shared.make_timestamp.php + NEWS: + corrected warnings in html_select_time function, made make timestamp always return a timestamp + +2002-06-17 Monte Ohrt + + * Smarty.class.php: swapped around cache_id and compile_id order + +2002-06-14 Monte Ohrt + + * docs/programmers.sgml + plugins/function.popup_init.php + Smarty.class.php: + change directory delimiter to "^" for cache and compile files + +2002-06-13 Andrei Zmievski + + * TODO: done. + + * Smarty_Compiler.class.php: + Optimize the calculation of section 'total' property. + +2002-06-11 Monte Ohrt + + * NEWS + Smarty.class.php: + added support for subdir exclusion, deletion by full or partial cache_id and compile_id, change file format to urlencoded values instead of crc32 + +2002-06-07 Monte Ohrt + + * Smarty.class.php: fix bug with last_modified_check code + + * NEWS + Smarty.class.php: + updated $GLOBALS refererence for HTTP_IF_MODIFIED_SINCE + +2002-06-06 Monte Ohrt + + * docs/designers.sgml + overlib.js: + remove overlib.js file from distribution, update plugin and docs + +2002-06-05 Monte Ohrt + + * docs/designers.sgml + NEWS + Smarty.class.php: fix 304 Not Modified, don't send content + +2002-06-03 Monte Ohrt + + * plugins/function.cycle.php: update version number + + * plugins/function.cycle.php + NEWS: + fixed cycle function to respect delimiter setting after initial setting + + * Smarty.class.php + NEWS: + update $GLOBALS references to work properly with track_globals settings + + * plugins/function.math.php: fixed bug with call $assign + + * docs/appendixes.sgml + docs/designers.sgml + plugins/function.html_options.php + plugins/function.html_select_time.php + NEWS + Smarty.class.php + Smarty_Compiler.class.php: + optimized for loops with count() function calls + +2002-06-01 Andrei Zmievski + + * TODO: *** empty log message *** + +2002-05-21 Monte Ohrt + + * NEWS: update NEWS file + + * plugins/function.html_select_date.php + RESOURCES + docs/designers.sgml + Config_File.class.php: + update html_select_date with month_value_format attribute for controlling the format of the month values. + +2002-05-17 Andrei Zmievski + + * NEWS + Smarty_Compiler.class.php: + Made it possible to use simple variables inside [] for indexing. + +2002-05-16 Monte Ohrt + + * docs/designers.sgml + docs/getting-started.sgml + NEWS + Smarty.class.php + Smarty_Compiler.class.php + TESTIMONIALS: add "once" attribute to php_include, update docs + +2002-05-09 Andrei Zmievski + + * NEWS + TODO: *** empty log message *** + +2002-05-07 Monte Ohrt + + * plugins/function.cycle.php: remove \n from cycle function + + * docs/designers.sgml + plugins/function.cycle.php + README + RELEASE_NOTES + Smarty.class.php + Smarty_Compiler.class.php + NEWS: + update cycle function to handle array as input, update files to 2.1.1 + +2002-05-06 Monte Ohrt + + * plugins/function.fetch.php: + update fetch function with more error checking + +2002-05-03 Monte Ohrt + + * docs/designers.sgml + plugins/function.counter.php: + update counter to use name instead of id (id still works though) + + * plugins/function.cycle.php + docs/designers.sgml: rename id to name for cycle function + + * plugins/function.cycle.php: + update cycle function to allow blank values parameter after initialized + + * plugins/function.cycle.php: fix syntax error + +2002-05-02 Monte Ohrt + + * plugins/function.cycle.php: ugh, another typo + + * plugins/function.cycle.php: update comments + + * docs/designers.sgml + plugins/function.cycle.php + NEWS: added function cycle + + * FAQ + Smarty.class.php: fix register_outputfilter function + +2002-05-01 Monte Ohrt + + * docs/designers.sgml + NEWS + Smarty.class.php: fixed bug with resource testing and include_path + +2002-04-30 Monte Ohrt + + * NEWS + README + RELEASE_NOTES + Smarty.class.php + Smarty_Compiler.class.php: update files for 2.1.0 release + +2002-04-30 Andrei Zmievski + + * plugins/function.fetch.php + docs/programmers.sgml + Smarty.class.php: Fix. + +2002-04-29 Andrei Zmievski + + * docs/programmers.sgml + docs/designers.sgml: A whole bunch of docs. + +2002-04-26 Monte Ohrt + + * FAQ + QUICKSTART + docs/programmers.sgml: update FAQ, QUICKSTART, small doc syntax fix + +2002-04-24 Monte Ohrt + + * docs/programmers.sgml + templates/debug.tpl + Smarty.class.php: changed doc structure a bit + +2002-04-16 Andrei Zmievski + + * Smarty.class.php: Add register/unregister API for output filters. + + * NEWS + Smarty.class.php + Smarty_Compiler.class.php + TODO: + Changed the way filters are loaded, which now has to be done explicitly, + either through load_filter() API or by filling in $autoload_filters variable. + Also renamed internal variable to avoid namespace pollution. + +2002-04-15 Andrei Zmievski + + * Smarty.class.php: + Fixed _get_php_resource() to take include_path into account. + +2002-04-15 Monte Ohrt + + * docs/designers.sgml: + update docs, get modifiers and functions into index for easy access + + * docs/programmers.sgml + NEWS + Smarty.class.php: update caching documentation + +2002-04-15 Andrei Zmievski + + * NEWS: *** empty log message *** + + * Smarty.class.php: Only turn down error notices if $debugging is false. + +2002-04-15 Monte Ohrt + + * NEWS: update NEWS file + + * plugins/function.html_select_date.php: + fixed logic so this works right when field_separator = "/" + + * plugins/function.html_select_date.php: + fix regular expression for matching date + +2002-04-13 Monte Ohrt + + * docs/designers.sgml: updated html_select_date docs to reflect changes + + * NEWS + plugins/function.html_select_date.php: + added YYYY-MM-DD support to html_select_date + +2002-04-12 Andrei Zmievski + + * TESTIMONIALS: New entry. + +2002-04-12 Monte Ohrt + + * plugins/modifier.strip_tags.php: back out changes to strip_tags + + * docs/programmers.sgml: update docs regarding cache_lifetime + + * plugins/modifier.strip_tags.php + Smarty.class.php: + update cache_lifetime logic: -1 = never expire, 0 = always expire + +2002-04-11 Andrei Zmievski + + * BUGS + FAQ + INSTALL + NEWS + Smarty.class.php + Smarty_Compiler.class.php + docs/getting-started.sgml: + Fixed directory separtor issue. Requiring PHP 4.0.6 now. + + * NEWS + Smarty_Compiler.class.php: + Added ability to use simple variables for array indices or object properties. + + * TESTIMONIALS: Another one. + + * TESTIMONIALS: Adding one from Mark P. + +2002-04-05 Andrei Zmievski + + * Smarty_Compiler.class.php + NEWS + Smarty.class.php: Make it possible to unregister pre/postfilter plugins. + +2002-04-05 Monte Ohrt + + * INSTALL: Remove addons file from INSTALL instructions + +2002-04-04 Monte Ohrt + + * docs/designers.sgml: update doc error + + * docs/designers.sgml + plugins/modifier.escape.php + NEWS + Smarty.class.php: added htmlall attribute to escape modifier + +2002-04-03 Andrei Zmievski + + * Smarty_Compiler.class.php: Fixed undefined offset warning in {if} tag. + + * Smarty.class.php + NEWS: Added template_exists() API. + + * Smarty.class.php + Smarty_Compiler.class.php + NEWS: + - Added $smarty.template variable. + - Fixed {include_php} tag when dynamic values were used for 'file' attribute. + + * Config_File.class.php: Separator setting fix. + +2002-03-28 Monte Ohrt + + * FAQ + README: add digest address + + * FAQ + README + Smarty.class.php: update mailing list addresses + +2002-03-28 Andrei Zmievski + + * NEWS: *** empty log message *** + + * plugins/function.html_select_date.php + plugins/function.html_select_time.php + plugins/modifier.date_format.php: + Fix for when plugins directory is not the default one. + +2002-03-28 Andrei Zmievski + + * NEWS: *** empty log message *** + + * plugins/function.html_select_date.php + plugins/function.html_select_time.php + plugins/modifier.date_format.php: + Fix for when plugins directory is not the default one. + +2002-03-27 Monte Ohrt + + * FAQ: update FAQ page + +2002-03-26 Andrei Zmievski + + * CREDITS + NEWS + Smarty.class.php + Smarty_Compiler.class.php + TODO: Block functions changes. + + * Config_File.class.php: *** empty log message *** + +2002-03-25 Andrei Zmievski + + * Smarty.class.php + Smarty_Compiler.class.php: Initial implementation of block functions. + +2002-03-22 Monte Ohrt + + * docs/designers.sgml: fix documentation error in capture + +2002-03-22 Andrei Zmievski + + * Smarty.class.php: *** empty log message *** + + * Smarty.class.php: Turn off notices. + +2002-03-21 Andrei Zmievski + + * Smarty_Compiler.class.php: Make _current_file available to prefilters. + + * NEWS + Smarty.class.php: + Made is possible to assign variables in pre/postfilters. + +2002-03-20 Andrei Zmievski + + * plugins/function.html_select_date.php: Fixed +/- functionality. + + * NEWS: *** empty log message *** + +2002-03-20 Monte Ohrt + + * Config_File.class.php + NEWS + README + RELEASE_NOTES + Smarty.class.php + Smarty_Compiler.class.php: update version numbers + + * plugins/function.html_select_date.php + plugins/function.html_select_time.php + plugins/modifier.date_format.php: + move .make_timestamp.php to shared.make_timestamp.php + + * NEWS + Smarty.class.php + docs/designers.sgml + plugins/function.fetch.php + plugins/function.html_select_date.php: + update file generation, replace crc32() '-' with 'N' + +2002-03-20 Andrei Zmievski + + * Smarty_Compiler.class.php: *** empty log message *** + +2002-03-19 Andrei Zmievski + + * NEWS: *** empty log message *** + + * Smarty.class.php + Smarty_Compiler.class.php: + Fix plugin behavior for inserts with script attribute. + + * NEWS: *** empty log message *** + + * Smarty_Compiler.class.php: Fix bug with $smarty.cookies. + + * TESTIMONIALS: *** empty log message *** + +2002-03-15 Monte Ohrt + + * NEWS + docs/designers.sgml: update Changelog + + * plugins/modifier.indent.php + plugins/modifier.wordwrap.php: add wordwrap and indent to repository + +2002-03-14 Monte Ohrt + + * Smarty.class.php: + remove show_info_include and show_info_header functions + +2002-03-13 Monte Ohrt + + * plugins/function.fetch.php: update fetch function + + * plugins/function.fetch.php: update fetch function with new parameters + +2002-03-12 Monte Ohrt + + * docs/designers.sgml: update doc tables + + * docs/designers.sgml: update docs columns + + * docs/getting-started.sgml + docs/appendixes.sgml: update docs + + * TESTIMONIALS + docs/appendixes.sgml: update syntax error in docs, add to testimonials + +2002-03-04 Monte Ohrt + + * FAQ + README: update FAQ, README with digest mode info + +2002-03-02 Monte Ohrt + + * QUICKSTART: update quickstart + + * Smarty.class.php: + change behavior so cache_lifetime = 0 never expires (instead of always regenerate) + +2002-03-01 Monte Ohrt + + * docs/designers.sgml: update doc example + +2002-03-01 Andrei Zmievski + + * CREDITS + RELEASE_NOTES + TODO + NEWS: *** empty log message *** + +2002-03-01 Monte Ohrt + + * docs/appendixes.sgml + docs/designers.sgml + docs/getting-started.sgml + docs/programmers.sgml: update document id tags + + * docs.sgml: remove docs.sgml + + * RESOURCES + Smarty.class.php: update resources + +2002-02-28 Andrei Zmievski + + * TESTIMONIALS + docs/appendixes.sgml + docs/designers.sgml + docs/programmers.sgml: *** empty log message *** + +2002-02-27 Andrei Zmievski + + * plugins/function.eval.php + docs/designers.sgml: *** empty log message *** + +2002-02-27 Monte Ohrt + + * plugins/function.eval.php: added eval function to plugin dir + +2002-02-27 Andrei Zmievski + + * NEWS: *** empty log message *** + +2002-02-27 Monte Ohrt + + * docs/designers.sgml: fix syntax error + + * docs/appendixes.sgml + docs/designers.sgml + docs/getting-started.sgml + docs/programmers.sgml: convert technical notes to docbook format + + * NEWS + docs/designers.sgml: added "eval" plugin docs + +2002-02-26 Andrei Zmievski + + * docs/programmers.sgml + docs/designers.sgml + docs/appendixes.sgml + docs/getting-started.sgml + docs/html-common.dsl + docs/.cvsignore: *** empty log message *** + + * docs/appendixes.sgml + docs/common.dsl + docs/designers.sgml + docs/getting-started.sgml + docs/html-common.dsl + docs/html.dsl + docs/manual.sgml + docs/preface.sgml + docs/programmers.sgml: Split up docs. + +2002-02-25 Andrei Zmievski + + * docs.sgml: *** empty log message *** + +2002-02-22 Monte Ohrt + + * docs.sgml: update docs + +2002-02-22 Andrei Zmievski + + * docs.sgml + AUTHORS + NEWS: *** empty log message *** + +2002-02-21 Monte Ohrt + + * Config_File.class.php + NEWS + Smarty.class.php + Smarty_Compiler.class.php + docs.sgml: update misc changes + +2002-02-21 Andrei Zmievski + + * docs.sgml: *** empty log message *** + +2002-02-20 Monte Ohrt + + * docs.sgml: misc updates + +2002-02-20 Andrei Zmievski + + * docs.sgml: *** empty log message *** + + * Smarty.class.php + plugins/function.assign.php + plugins/function.assign_debug_info.php + plugins/function.counter.php + plugins/function.fetch.php + plugins/function.math.php + plugins/function.popup.php + plugins/function.popup_init.php + plugins/modifier.escape.php: Fixup some naming. + +2002-02-20 Monte Ohrt + + * docs.sgml: update docs + +2002-02-20 Andrei Zmievski + + * docs.sgml: *** empty log message *** + +2002-02-20 Monte Ohrt + + * NEWS + docs.sgml + plugins/modifier.escape.php: + removed global vars from fetch function, added attrs to escape modifier + + * docs.sgml: add plugin chapter outline + +2002-02-19 Monte Ohrt + + * README + RELEASE_NOTES + RESOURCES + Smarty.class.php + docs.sgml + BUGS + FAQ + INSTALL + QUICKSTART: update docs + +2002-02-19 Andrei Zmievski + + * docs.sgml: Updated resources docs. + + * README: *** empty log message *** + + * docs.sgml: Updated description of {$smarty} variable. + + * BUGS + FAQ + INSTALL + QUICKSTART + RELEASE_NOTES + docs.sgml: Remove PEAR notes. + +2002-02-18 Andrei Zmievski + + * Config_File.class.php + NEWS: Removed dependency on PEAR. + +2002-02-18 Monte Ohrt + + * NEWS + docs.sgml + plugins/function.popup_init.php: add src attribute to popup_init + +2002-02-15 Andrei Zmievski + + * Smarty_Compiler.class.php + plugins/modifier.debug_print_var.php + NEWS + Smarty.class.php: Performance enhancements. + +2002-02-06 Andrei Zmievski + + * plugins/function.html_options.php: + Fix html_options output to be XHTML compatible. + +2002-02-05 Andrei Zmievski + + * Smarty.class.php + Smarty_Compiler.class.php: Fix up plugin inclusion. + + * Smarty.class.php + Smarty_Compiler.class.php + TODO + plugins/function.html_select_date.php + plugins/function.html_select_time.php + plugins/modifier.date_format.php: Fix plugin directory access. + +2002-02-04 Andrei Zmievski + + * .cvsignore + Smarty_Compiler.class.php: *** empty log message *** + +2002-01-31 Andrei Zmievski + + * NEWS: *** empty log message *** + + * Smarty.addons.php + Smarty.class.php + Smarty_Compiler.class.php + TODO + plugins/function.assign.php + plugins/function.assign_debug_info.php + plugins/function.counter.php + plugins/function.fetch.php + plugins/function.html_options.php + plugins/function.html_select_date.php + plugins/function.html_select_time.php + plugins/function.math.php + plugins/function.popup.php + plugins/function.popup_init.php + plugins/modifier.capitalize.php + plugins/modifier.count_characters.php + plugins/modifier.count_paragraphs.php + plugins/modifier.count_sentences.php + plugins/modifier.count_words.php + plugins/modifier.date_format.php + plugins/modifier.debug_print_var.php + plugins/modifier.default.php + plugins/modifier.escape.php + plugins/modifier.lower.php + plugins/modifier.regex_replace.php + plugins/modifier.replace.php + plugins/modifier.spacify.php + plugins/modifier.string_format.php + plugins/modifier.strip_tags.php + plugins/modifier.truncate.php + plugins/modifier.upper.php + plugins/shared.make_timestamp.php + templates/index.tpl + AUTHORS + CREDITS + Config_File.class.php + README: Implemented plugin architecture. + + * NEWS: *** empty log message *** + +2002-01-30 Monte Ohrt + + * NEWS + Smarty.addons.php + Smarty.class.php + docs.sgml: added modifiers wordwrap and indent + +2002-01-28 Monte Ohrt + + * Smarty.class.php + docs.sgml: + add support for is-modified-since headers, adjust a doc example + +2002-01-24 Monte Ohrt + + * Smarty.class.php: cleanup formatting + + * NEWS + Smarty.class.php + docs.sgml: update ChangeLog, remove insert_tag_check parameter + +2002-01-24 Andrei Zmievski + + * plugins/standard.plugin.php: *** empty log message *** + +2002-01-24 Monte Ohrt + + * Smarty.class.php: fix syntax error + + * Smarty.class.php: removed unneccesary test from fetch() + +2002-01-23 Monte Ohrt + + * Smarty.addons.php: update overlib fixes + + * NEWS: update changelog + + * FAQ + NEWS + RESOURCES + Smarty.addons.php: updated overlib fixes + +2001-12-31 Andrei Zmievski + + * NEWS + Smarty.class.php: Fixed compile_id problem. + +2001-12-28 Monte Ohrt + + * NEWS + Smarty.class.php + Smarty_Compiler.class.php: + fixed problem with using assigned var with include_php filepath + +2001-12-21 Monte Ohrt + + * RESOURCES: update RESOURCES + +2001-12-20 Monte Ohrt + + * FAQ + README: update FAQ + +2001-12-18 Monte Ohrt + + * Smarty_Compiler.class.php + docs.sgml + Config_File.class.php + NEWS + README + RELEASE_NOTES + Smarty.addons.php + Smarty.class.php: update version numbers + +2001-12-18 Andrei Zmievski + + * NEWS + Smarty.class.php: Fixed clear_cache(). + +2001-12-14 Monte Ohrt + + * NEWS + Smarty.addons.php: + fixed bug in smarty_make_timestamp introduced in PHP 4.1.0 + +2001-12-13 Monte Ohrt + + * NEWS + Smarty.class.php + docs.sgml: update default function args, fix cached insert debug timing + +2001-12-12 Monte Ohrt + + * docs.sgml: fix syntax error in documentation + + * Smarty.class.php: update default template handling functionality + +2001-12-11 Monte Ohrt + + * Smarty.class.php + Smarty_Compiler.class.php: update file fetching logic + +2001-12-11 Andrei Zmievski + + * NEWS + Smarty.class.php: Added 'script' attribute to {insert..}. + +2001-12-10 Monte Ohrt + + * NEWS + Smarty.class.php: added default template function handler + + * Config_File.class.php + NEWS + README + RELEASE_NOTES + Smarty.addons.php + Smarty.class.php + Smarty_Compiler.class.php: update version numbers in files to 1.5.1 + +2001-12-10 Andrei Zmievski + + * NEWS + Smarty.class.php: Removed error message from the _read_file() method. + + * Smarty.class.php: Fix check for compile and cache IDs. + +2001-12-06 Monte Ohrt + + * QUICKSTART: fix spelling error in QUICKSTART + + * docs.sgml: fixed spelling errors in documenation + + * Smarty_Compiler.class.php + docs.sgml + Config_File.class.php + NEWS + README + RELEASE_NOTES + Smarty.addons.php + Smarty.class.php: commit 1.5.0 release + + * RESOURCES + docs.sgml: added RESOURCES file + +2001-12-05 Andrei Zmievski + + * Smarty_Compiler.class.php: Refactor. + +2001-12-05 Monte Ohrt + + * NEWS + Smarty_Compiler.class.php + docs.sgml: added assign to include and php_include + + * Smarty.class.php + Smarty_Compiler.class.php + docs.sgml: *** empty log message *** + +2001-12-04 Andrei Zmievski + + * NEWS + Smarty_Compiler.class.php: Formatting. + +2001-12-04 Monte Ohrt + + * Smarty_Compiler.class.php + NEWS + Smarty.class.php: update ChangeLog + +2001-12-04 Andrei Zmievski + + * NEWS + Smarty.class.php: Formatting. + +2001-12-04 Monte Ohrt + + * Smarty.class.php: removed SMARTY_DIR setting in constructor + + * Smarty.class.php: fix Smarty.class.php indention error + + * Smarty.class.php: update trusted logic + +2001-12-03 Monte Ohrt + + * Smarty.class.php: + fix up is_secure, is_trusted, make _parse_tpl_path function + + * Smarty.class.php: fix problem with testing SMARTY_DIR as empty + + * NEWS + docs.sgml: update documentation, change log + + * Smarty.class.php: + update constructor to check for SMARTY_DIR before assigning + +2001-12-03 Andrei Zmievski + + * NEWS + Smarty.class.php: *** empty log message *** + +2001-12-03 Monte Ohrt + + * FAQ + INSTALL + RELEASE_NOTES: update a few files + + * NEWS + QUICKSTART + Smarty.class.php + docs.sgml: added trusted_dir functionality, cleaned up secure_dir logic + +2001-12-03 Andrei Zmievski + + * NEWS: *** empty log message *** + + * NEWS + Smarty.class.php: - Introduced $compile_id class variable. + - Fixed a situation where if $cache_id and $compile_id were both null + they were passed to auto functions as empty string instead of null. + +2001-11-30 Monte Ohrt + + * NEWS + Smarty.class.php: + change variable names in fetch() fuction to smarty_* to avoid namespace conflicts + + * NEWS + Smarty.class.php: fixed bug in _rm_auto with catenated null values + +2001-11-29 Andrei Zmievski + + * NEWS + Smarty_Compiler.class.php: Added $smarty.section.* syntax. + + * Smarty_Compiler.class.php: Made 'name' attribute optional for {foreach}. + +2001-11-29 Monte Ohrt + + * Smarty.class.php + index.php: remove assign "now" in index.tpl + +2001-11-29 Andrei Zmievski + + * NEWS + Smarty.addons.php + Smarty.class.php: Fix formatting. + +2001-11-28 Monte Ohrt + + * NEWS + Smarty.class.php + docs.sgml: + removed return statements from _read_cache_file (how did they get in there?) + +2001-11-27 Monte Ohrt + + * docs.sgml + NEWS + Smarty.addons.php + Smarty.class.php: + fixed bugs and added assign attribute to several functions + +2001-11-27 Andrei Zmievski + + * NEWS: Some rewording. + + * Smarty_Compiler.class.php: Fix $smarty.capture access. + + * TODO: *** empty log message *** + + * NEWS + Smarty.class.php + Smarty_Compiler.class.php: + Made {config_load ..} merge globals from each config file only once per scope. + + * NEWS + Smarty.class.php + Smarty_Compiler.class.php: - Added {foreach ...}. + - Made certain $smarty.* references handled at compilation time. + +2001-11-26 Monte Ohrt + + * Config_File.class.php + NEWS + Smarty.class.php + Smarty_Compiler.class.php + docs.sgml: commit cache handler functionality + +2001-11-20 Andrei Zmievski + + * NEWS + Smarty.addons.php + Smarty_Compiler.class.php: Various fixes and additions. + + * NEWS + index.php: *** empty log message *** + +2001-11-05 Monte Ohrt + + * Smarty.class.php: changed _read_file parameter from $end to $lines + + * NEWS + Smarty.class.php: fixed is_cache, make cache reading more efficient + +2001-11-02 Monte Ohrt + + * FAQ + NEWS: update FAQ with mailing list Reply-To header FAQ + + * NEWS + Smarty.class.php + index.php: supress fopen errors, return false if cache file won't load + +2001-11-01 Monte Ohrt + + * QUICKSTART + docs.sgml + index.php: update QUICKSTART guide with index key example + + * Config_File.class.php + NEWS + README + RELEASE_NOTES + Smarty.addons.php + Smarty.class.php + Smarty_Compiler.class.php + docs.sgml: commit all updates for 1.4.6 + +2001-11-01 Andrei Zmievski + + * NEWS: *** empty log message *** + +2001-10-30 Monte Ohrt + + * Smarty.addons.php: fix assign function problem with empty value passed + + * NEWS + Smarty.addons.php + Smarty.class.php + Smarty_Compiler.class.php + templates/debug.tpl: + fixed bug in assign function when passing an empty value + +2001-10-26 Monte Ohrt + + * Smarty.addons.php + Smarty.class.php + index.php: fix minor typo in debug code + +2001-10-26 Andrei Zmievski + + * Smarty.class.php: Typo. + +2001-10-26 Monte Ohrt + + * Smarty.addons.php: + update debug console output, handle html encoding correctly + +2001-10-26 Andrei Zmievski + + * Smarty.addons.php + templates/debug.tpl: Debug formatting. + + * Smarty.class.php: Disable rmdir warning. + +2001-10-26 Monte Ohrt + + * Smarty.addons.php + Smarty.class.php + templates/debug.tpl: update debugging to expand array variables + + * Smarty.class.php + docs.sgml: + update docs for fetching only timestamp with custom template source functions + + * Smarty.addons.php: fix debug console error + +2001-10-26 Andrei Zmievski + + * docs.sgml: Typos. + + * Smarty.addons.php: Cleanup whitespace. + + * Smarty_Compiler.class.php: Clean up whitespace. + + * Smarty.class.php: Cleaning up code, formatting mostly. + + * NEWS: *** empty log message *** + +2001-10-25 Monte Ohrt + + * NEWS + docs.sgml: update documentation to current version + + * NEWS + Smarty.addons.php: + updated fetch to give proper warning when fetching unreadable or nonexistant files + + * NEWS + Smarty.class.php + Smarty_Compiler.class.php: + fixed problem with newline at the end of compiled templates + + * NEWS + Smarty.class.php: recompile cache if config file gets modified too. + + * NEWS + Smarty.class.php: + added feature to regenerate cache if compile_check is enabled and an + involved template is modified + +2001-10-23 Monte Ohrt + + * Smarty.class.php: fix indent for insert tags in debug console + + * templates/debug.tpl: update debug.tpl file format + + * NEWS + Smarty.addons.php + Smarty.class.php + templates/debug.tpl: + update execution time debugging, move into include list + +2001-10-10 Monte Ohrt + + * NEWS + Smarty.addons.php + Smarty.class.php + Smarty_Compiler.class.php: + fixed up execution time output in debug console + +2001-10-09 Andrei Zmievski + + * Config_File.class.php + NEWS + Smarty.class.php + TODO: Added support for hidden config vars. + +2001-10-04 Monte Ohrt + + * NEWS + Smarty.addons.php + Smarty.class.php + templates/debug.tpl: added execution times to debug console + +2001-10-02 Andrei Zmievski + + * Smarty_Compiler.class.php: Add space. + +2001-10-01 Andrei Zmievski + + * Smarty.class.php: Fix reference to compile_id. + +2001-09-28 Andrei Zmievski + + * NEWS + Smarty.class.php + Smarty_Compiler.class.php: Added postfilter functions. + +2001-09-26 Andrei Zmievski + + * NEWS + Smarty.class.php + docs.sgml: Rename to clear_compiled_tpl(). + +2001-09-25 Andrei Zmievski + + * NEWS + Smarty_Compiler.class.php: + Fixed line number reporting when removing comments. + +2001-09-20 Monte Ohrt + + * NEWS + RELEASE_NOTES + Smarty.addons.php: made html_options output xhtml compatible + +2001-09-19 Monte Ohrt + + * Config_File.class.php + NEWS + README + RELEASE_NOTES + Smarty.addons.php + Smarty.class.php + Smarty_Compiler.class.php + templates/debug.tpl: updated version numbers + +2001-09-16 Monte Ohrt + + * FAQ + NEWS + docs.sgml: fix doc error with insert function + +2001-09-06 Andrei Zmievski + + * NEWS: *** empty log message *** + +2001-08-31 Monte Ohrt + + * NEWS: update ChangeLog + + * overlib.js + Smarty.addons.php + Smarty.class.php + docs.sgml: + update overlib to 3.50, adjust addon code so that the overlib.js file isn't modified + +2001-08-31 Andrei Zmievski + + * Smarty.class.php: - compile_id changes + + * NEWS + Smarty.addons.php: - compile_id support + - new options for html_select_date + +2001-08-23 Andrei Zmievski + + * TODO: *** empty log message *** + +2001-08-10 Andrei Zmievski + + * NEWS + Smarty.addons.php + Smarty.class.php + Smarty_Compiler.class.php: + Modified to pass Smarty object as second parameter to insert functions. + Also moved _smarty_mod_handler() and _smarty_insert_handler() into the class. + + * NEWS + Smarty_Compiler.class.php: + Passing Smarty as second parameter to prefilter functions. + +2001-08-09 Andrei Zmievski + + * NEWS: *** empty log message *** + +2001-08-09 Monte Ohrt + + * templates/index.tpl + Smarty.class.php: add smarty.now variable to template + +2001-08-06 Monte Ohrt + + * templates/index.tpl: change config_load section back to setup + +2001-08-06 Andrei Zmievski + + * Smarty.addons.php: Optimize a bit. + +2001-08-04 Monte Ohrt + + * docs.sgml: update capture documentation + +2001-08-03 Monte Ohrt + + * FAQ + NEWS + Smarty.class.php: + fix bug with URL controlled debugging, works now (Monte) + +2001-08-01 Andrei Zmievski + + * Config_File.class.php: *** empty log message *** + + * Smarty_Compiler.class.php + Smarty.class.php: - Fixed some E_NOTICE stuff in compiler. + - Generalized assign_smarty_interface() a bit. + +2001-07-24 Andrei Zmievski + + * NEWS + Smarty_Compiler.class.php + TODO: See ChangeLog for details. + +2001-07-20 Andrei Zmievski + + * Config_File.class.php: Booleanize case-insensitively. + +2001-07-17 Monte Ohrt + + * NEWS: update ChangeLog + + * Smarty.class.php + docs.sgml: put SMARTY_DIR on Config_File require + +2001-07-11 Monte Ohrt + + * docs.sgml + FAQ + NEWS + Smarty.class.php: + updated security to not include insecure docs, only warning + +2001-07-10 Andrei Zmievski + + * Smarty.class.php: Adding 'sizeof' as an allowed {if} function. + +2001-07-06 Andrei Zmievski + + * NEWS: *** empty log message *** + +2001-07-06 Monte Ohrt + + * Config_File.class.php + NEWS + README + RELEASE_NOTES + Smarty.addons.php + Smarty.class.php + Smarty_Compiler.class.php: update version number to 1.4.4 + + * NEWS + Smarty.addons.php + Smarty_Compiler.class.php + docs.sgml + templates/header.tpl + templates/index.tpl: update documenatation, template examples + +2001-07-03 Andrei Zmievski + + * NEWS + Smarty.class.php: Implemented access to request vars via $smarty var. + + * NEWS + Smarty_Compiler.class.php: + Fixed a bug with parsing function arguments in {if} tags. + +2001-06-30 Monte Ohrt + + * NEWS: update ChangeLog + +2001-06-29 Monte Ohrt + + * Smarty.addons.php + Smarty.class.php + docs.sgml + overlib.js: + moved overlib to separate file, added SMARTY_DIR, documented. added much documentation + +2001-06-29 Andrei Zmievski + + * NEWS + RELEASE_NOTES + TODO: *** empty log message *** + +2001-06-29 Monte Ohrt + + * NEWS + README + RELEASE_NOTES + Smarty.addons.php + Smarty.class.php + docs.sgml + index.php + templates/debug.tpl + templates/header.tpl + templates/index.tpl: update release notes + +2001-06-27 Andrei Zmievski + + * Smarty_Compiler.class.php: *** empty log message *** + + * NEWS + Smarty_Compiler.class.php: Implemented 'step' section attribute. + + * Smarty_Compiler.class.php: Negative values of 'max' will mean no max. + + * AUTHORS + NEWS: *** empty log message *** + +2001-06-26 Andrei Zmievski + + * NEWS + Smarty.class.php + Smarty_Compiler.class.php + index.php: Added 'max' and 'start' section attributes. + Added 'total' and 'iteration' section properties. + +2001-06-25 Andrei Zmievski + + * Config_File.class.php + RELEASE_NOTES + Smarty.addons.php + Smarty.class.php + Smarty_Compiler.class.php: Update version numbers. + +2001-06-23 Andrei Zmievski + + * TODO: *** empty log message *** + +2001-06-21 Andrei Zmievski + + * Config_File.class.php + NEWS: Fixed booleanization bug. + +2001-06-20 Monte Ohrt + + * docs.sgml: + update documents to reflect changes to cached content & debugging + +2001-06-20 Andrei Zmievski + + * Smarty.addons.php + Smarty.class.php: Remove debug output for cached and fetched cases. + +2001-06-20 Monte Ohrt + + * Smarty.class.php: update include_info to false + + * Smarty.class.php + docs.sgml + index.php + templates/footer.tpl: + moved debug logic into Smarty completely, created flags for it + +2001-06-19 Andrei Zmievski + + * Smarty.addons.php + Smarty.class.php + templates/debug.tpl: *** empty log message *** + + * NEWS + Smarty.class.php: Remove unneeded debug functions. + +2001-06-19 Monte Ohrt + + * NEWS + Smarty.addons.php + Smarty.class.php + docs.sgml + templates/debug.tpl + templates/footer.tpl: commit updates, add debug template + +2001-06-19 Andrei Zmievski + + * Smarty.class.php + Smarty_Compiler.class.php + TODO: + Moved config loading code inside main class, the compiled template now + simply calls that method. + +2001-06-15 Andrei Zmievski + + * NEWS + Smarty.class.php + Smarty_Compiler.class.php + templates/index.tpl: * moved config array into class itself + * added 'scope' attribute for config_load + + * Smarty_Compiler.class.php + Smarty.addons.php + Smarty.class.php: Finishing up secure mode. + +2001-06-15 Monte Ohrt + + * NEWS: update ChangeLog + + * Smarty_Compiler.class.php: cleaned up logic of if statement security + + * Smarty_Compiler.class.php: update if logic to cover more situations + + * Smarty_Compiler.class.php + docs.sgml: update if statement security feature + +2001-06-14 Andrei Zmievski + + * Smarty.addons.php + Smarty.class.php: *** empty log message *** + + * NEWS + Smarty_Compiler.class.php: + Fixed a bug with quoted strings inside if statements. + +2001-06-13 Monte Ohrt + + * Smarty.addons.php + Smarty.class.php: added secure_dir array for multiple secure directories + + * Smarty.addons.php: update fetch funtion to respect security setting + + * NEWS + Smarty.addons.php + Smarty.class.php + docs.sgml: update documentation, changelog + + * Smarty.addons.php + Smarty.class.php: moved _extract setting to assign functions + + * Smarty.addons.php + Smarty.class.php + Smarty_Compiler.class.php: + added assign/unassign custom functions, ability to re-extract tpl_vars + + * Smarty.class.php + Smarty_Compiler.class.php + docs.sgml + index.php: commit security features + +2001-06-11 Andrei Zmievski + + * Smarty.class.php: Version variable typo. + +2001-06-05 Andrei Zmievski + + * Smarty.class.php: + Create config object in fetch() or just set the config path if it already + exists. + +2001-06-04 Andrei Zmievski + + * Smarty.class.php: *** empty log message *** + + * NEWS + Smarty_Compiler.class.php: + Fixed a problem with $ inside strip tags. + +2001-05-31 Andrei Zmievski + + * NEWS: *** empty log message *** + + * Config_File.class.php: Allow empty config_path. + +2001-05-29 Monte Ohrt + + * Smarty_Compiler.class.php + docs.sgml + NEWS + README + RELEASE_NOTES + Smarty.addons.php + Smarty.class.php: update version numbers + + * NEWS + Smarty.class.php + Smarty_Compiler.class.php + docs.sgml: moved version variable to internal variable + +2001-05-22 Andrei Zmievski + + * NEWS + Smarty.class.php + Smarty_Compiler.class.php: + Moved $_smarty_sections and $_smarty_conf_obj into Smarty class. + +2001-05-18 Monte Ohrt + + * NEWS: update ChangeLog + + * FAQ + QUICKSTART: update FAQ, QUICKSTART for windows include_path setup + + * configs/test.conf: added configs directory to cvs + +2001-05-18 Andrei Zmievski + + * Smarty.class.php: Use compiler_class for including the file. + +2001-05-18 Monte Ohrt + + * docs.sgml: fix typo + +2001-05-16 Monte Ohrt + + * README + RELEASE_NOTES + Smarty.addons.php + Smarty.class.php + Smarty_Compiler.class.php: update files to version 1.4.1 + + * NEWS: update ChangeLog + +2001-05-15 Andrei Zmievski + + * NEWS: *** empty log message *** + + * index.php: forget that! + + * NEWS + Smarty_Compiler.class.php + index.php: Fixed a few E_NOTICE warnings. + +2001-05-09 Monte Ohrt + + * NEWS + RELEASE_NOTES + Smarty.addons.php + Smarty.class.php + docs.sgml: update dates versions + +2001-05-09 Andrei Zmievski + + * NEWS: *** empty log message *** + + * Smarty.class.php: + Use absolute paths when requiring/including Smart components. + + * NEWS: *** empty log message *** + + * Smarty.class.php: Use write mode instead of append. + +2001-05-02 Andrei Zmievski + + * NEWS + Smarty_Compiler.class.php: Fix indexing by section properties. + +2001-05-02 Monte Ohrt + + * NEWS: update changelog + + * Smarty.class.php: remove period from syntax error + +2001-05-02 Andrei Zmievski + + * Smarty_Compiler.class.php: Double-quote the attribute values by default. + +2001-04-30 Monte Ohrt + + * Smarty_Compiler.class.php + NEWS: added simple {capture} logic + +2001-04-30 Andrei Zmievski + + * TODO: *** empty log message *** + + * Smarty_Compiler.class.php + Smarty.class.php: Fix passing config vars to included files. + + * Smarty.class.php + Smarty_Compiler.class.php: Fix inclusion again. + +2001-04-30 Monte Ohrt + + * FAQ + RELEASE_NOTES + Smarty.class.php + misc/fix_vars.php + NEWS: update paths for windows (c:) + +2001-04-28 Andrei Zmievski + + * Smarty.class.php + Smarty_Compiler.class.php: Fix passing variables to included files. + + * templates/index.tpl: *** empty log message *** + +2001-04-27 Andrei Zmievski + + * Smarty_Compiler.class.php: Fix includes. + +2001-04-26 Andrei Zmievski + + * Smarty_Compiler.class.php + docs.sgml + Smarty.class.php: Formatting mostly. + + * Smarty_Compiler.class.php + Config_File.class.php: *** empty log message *** + +2001-04-26 Monte Ohrt + + * Smarty_Compiler.class.php + docs.sgml + FAQ + NEWS + QUICKSTART + RELEASE_NOTES + Smarty.class.php: update docs with new changes + +2001-04-26 Andrei Zmievski + + * RELEASE_NOTES: *** empty log message *** + + * docs.sgml + templates/index.tpl + NEWS + Smarty_Compiler.class.php: Added ability to reference object properties. + +2001-04-25 Andrei Zmievski + + * README + Smarty.addons.php + Smarty.class.php + Smarty_Compiler.class.php + docs.sgml + AUTHORS + Config_File.class.php + CREDITS + RELEASE_NOTES + NEWS: *** empty log message *** + + * docs.sgml: Docs on new parameter to custom functions. + + * NEWS: *** empty log message *** + + * Smarty_Compiler.class.php: + Changing the way tpl vars are referenced and passing smarty object + to custom functions. + + * RELEASE_NOTES + docs.sgml: Fixing docs a bit. + +2001-04-24 Andrei Zmievski + + * docs.sgml: Docs for $compiler_class and compiler functions. + + * templates/index.tpl: *** empty log message *** + + * Smarty_Compiler.class.php: Remove debugging. + +2001-04-24 Monte Ohrt + + * docs.sgml: update compiler function docs + +2001-04-24 Andrei Zmievski + + * NEWS + Smarty.class.php + Smarty_Compiler.class.php + templates/index.tpl: Added compiler function support. + +2001-04-24 Monte Ohrt + + * RELEASE_NOTES + Smarty.class.php: + update notes, change show_info_header to false by default + + * Smarty.class.php + Smarty_Compiler.class.php + docs.sgml + CREDITS + FAQ + NEWS + README + RELEASE_NOTES: update documenation, bug fixes + +2001-04-24 Andrei Zmievski + + * misc/fix_vars.php: Hopefully fix for sure. + +2001-04-23 Monte Ohrt + + * misc/fix_vars.php: uncomment copy/unlink + +2001-04-23 Andrei Zmievski + + * misc/fix_vars.php: Do it more thoroughly. + + * misc/fix_vars.php: check for } + +2001-04-22 Andrei Zmievski + + * misc/fix_vars.php: Fix variable parsing. + +2001-04-20 Monte Ohrt + + * misc/fix_vars.php: fix problem with 4.0.5-dev and preg_replace_callback + +2001-04-19 Monte Ohrt + + * Smarty_Compiler.class.php + docs.sgml + misc/fix_vars.php + NEWS + RELEASE_NOTES + Smarty.class.php: update notes/documentation + + * NEWS + README + RELEASE_NOTES + Smarty.addons.php + Smarty.class.php + Smarty_Compiler.class.php + docs.sgml: update files for 1.4.0 release + +2001-04-16 Andrei Zmievski + + * misc/fix_vars.php: Added fix_vars.php script. + +2001-04-16 Monte Ohrt + + * QUICKSTART + RELEASE_NOTES + docs.sgml + templates/index.tpl: + update RELEASE_NOTES & scripts with new section var syntax + +2001-04-13 Andrei Zmievski + + * Smarty_Compiler.class.php: * Implement new variable format parser. + * Optimizing config load a bit. + +2001-04-13 Monte Ohrt + + * FAQ + NEWS + RELEASE_NOTES + Smarty.class.php: + added $check_cached_insert_tags to speed up cached pages if + {insert ...} is not used (Monte) + +2001-04-12 Andrei Zmievski + + * NEWS + Smarty.class.php + RELEASE_NOTES: *** empty log message *** + + * Smarty_Compiler.class.php: Remove redundant functions. + + * Smarty.class.php: Formatting. + +2001-04-12 Monte Ohrt + + * Smarty.class.php: update file: parsing + + * Smarty.class.php + docs.sgml: update documentation + +2001-04-12 Andrei Zmievski + + * Smarty.class.php + Smarty_Compiler.class.php + TODO: *** empty log message *** + +2001-04-11 Monte Ohrt + + * FAQ + QUICKSTART + RELEASE_NOTES: added RELEASE_NOTES file to cvs + + * NEWS + docs.sgml: update ChangeLog, update documentation + + * Smarty.class.php + Smarty_Compiler.class.php + templates/index.tpl: + update Smarty to compile at run-time. added ability to get files from + absolute paths, added work around for LOCK_EX and windows, changed a few + file permissions to be more secure. + +2001-03-29 Monte Ohrt + + * NEWS + Smarty.addons.php: + allow arbitrary date strings instead of just timestamps + +2001-03-28 Monte Ohrt + + * Smarty.class.php + Smarty_Compiler.class.php + docs.sgml + FAQ + NEWS + README + Smarty.addons.php: + update version in class, update docs for count_ and new vars + + * templates/index.tpl + docs.sgml: update docs, example template + +2001-03-28 Andrei Zmievski + + * Smarty_Compiler.class.php: Some variable renaming. + +2001-03-23 Andrei Zmievski + + * Smarty_Compiler.class.php + NEWS: Fixed nested include infinite repeat bug. + +2001-03-23 Monte Ohrt + + * Smarty.class.php: fix version number + + * Smarty.class.php + NEWS: added optional HTML header to output + +2001-03-22 Andrei Zmievski + + * Smarty_Compiler.class.php: Fixed inclusion of dynamic files. + +2001-03-16 Andrei Zmievski + + * Smarty_Compiler.class.php: Fixing the config_load scoping. + + * Smarty_Compiler.class.php: making config variables global for now. + +2001-03-15 Andrei Zmievski + + * NEWS: *** empty log message *** + + * Smarty_Compiler.class.php: + * Includes are now always done via generated function call to protect + namespace. + * config_load now always uses global config object to improve + performance. + +2001-03-13 Monte Ohrt + + * docs.sgml: update math documentation with format attribute + +2001-03-11 Monte Ohrt + + * docs.sgml + NEWS + Smarty.addons.php + Smarty.class.php + Smarty_Compiler.class.php: update math function with format attribute + +2001-03-10 Andrei Zmievski + + * Smarty.addons.php: *** empty log message *** + + * NEWS + Smarty.addons.php + Smarty.class.php: Added html_select_time custom function. + +2001-03-08 Monte Ohrt + + * Smarty.class.php + Smarty_Compiler.class.php + NEWS + README + Smarty.addons.php: rename 1.3.1b to 1.3.1pl1 + + * NEWS + Smarty.addons.php + Smarty.class.php + Smarty_Compiler.class.php: update version numbers, changelog + + * Smarty.class.php + Smarty_Compiler.class.php: + moved _syntax_error to Smarty_Compiler.class.php + + * Smarty.class.php + docs.sgml: + missing _syntax_error function recovered. fixed minor syntax in docs + +2001-03-07 Monte Ohrt + + * QUICKSTART + README + Smarty.addons.php + Smarty.class.php + Smarty_Compiler.class.php + BUGS + INSTALL + NEWS: update everything to 1.3.1 + +2001-03-03 Monte Ohrt + + * Smarty_Compiler.class.php + Smarty.class.php: fixed bug with cached insert tags + +2001-03-02 Monte Ohrt + + * Smarty.class.php + Smarty_Compiler.class.php: + fix cache fuctions with separated compiled class + + * FAQ + NEWS + docs.sgml: update changelog + +2001-03-02 Andrei Zmievski + + * NEWS + Smarty_Compiler.class.php: Added 'first' and 'last' section properties. + +2001-03-02 Monte Ohrt + + * TODO: remove compiling separation TODO + + * Smarty_Compiler.class.php + Smarty.addons.php + Smarty.class.php: update function headers + + * templates/index.tpl + NEWS + Smarty.class.php + Smarty_Compiler.class.php + index.php: split out compiling code for faster execution + + * Smarty.class.php: fixed a few warning messages + + * Smarty.addons.php + Smarty.class.php + docs.sgml + NEWS: added fetch, unregister mod/fun, updated docs + +2001-03-01 Monte Ohrt + + * Smarty.addons.php: added "int" to available list + + * docs.sgml + FAQ + Smarty.class.php: update FAQ, add math functions & update documetation + + * index.php + Smarty.addons.php + Smarty.class.php + docs.sgml: fixed literal tags and other optional delimiters + +2001-02-26 Andrei Zmievski + + * NEWS + Smarty.class.php: + Added index_prev, index_next section properties and ability to + index by them. + + * NEWS + Smarty.addons.php + Smarty.class.php: Reverting the plugins patch - needs more thought. + + * Smarty.class.php: Fixing plugin loading. + +2001-02-23 Andrei Zmievski + + * Smarty.addons.php + Smarty.class.php + plugins/standard.plugin.php + NEWS: Added plugin functionality. + +2001-02-22 Monte Ohrt + + * docs.sgml + templates/index.tpl + NEWS + README + Smarty.class.php: fixed issue with php tags executed in literal blocks + +2001-02-21 Monte Ohrt + + * NEWS: update changelog for LGPL change + + * Smarty.class.php + docs.sgml + README + Smarty.addons.php: updated version numbers to 1.3.0 + + * NEWS + templates/index.tpl: update changelog, rearrange index.tpl file + +2001-02-21 Andrei Zmievski + + * NEWS + Smarty.class.php: *** empty log message *** + +2001-02-21 Monte Ohrt + + * docs.sgml: update parameters for is_cached and fetch + +2001-02-21 Andrei Zmievski + + * NEWS + Smarty.class.php: *** empty log message *** + +2001-02-21 Monte Ohrt + + * NEWS + Smarty.addons.php + docs.sgml: update docs, remove header function from addons + +2001-02-20 Monte Ohrt + + * FAQ + NEWS: update changelog + + * TODO: update todo + + * TODO: update todo list + + * Smarty.class.php: update php tag handling logic + +2001-02-19 Monte Ohrt + + * index.php + Config_File.class.php + FAQ + Smarty.class.php + docs.sgml: fixed + + * Smarty.addons.php: *** empty log message *** + +2001-02-13 Andrei Zmievski + + * TODO: *** empty log message *** + +2001-02-12 Andrei Zmievski + + * templates/index.tpl + Smarty.class.php: *** empty log message *** + +2001-02-10 Monte Ohrt + + * Smarty.class.php: remove unneeded preg_match + + * Smarty.class.php: remove comment + + * Smarty.class.php: updated php escape to handle +{/if} diff --git a/bundled-libs/Smarty/libs/internals/core.assemble_plugin_filepath.php b/bundled-libs/Smarty/libs/internals/core.assemble_plugin_filepath.php new file mode 100644 index 00000000..690d3ddb --- /dev/null +++ b/bundled-libs/Smarty/libs/internals/core.assemble_plugin_filepath.php @@ -0,0 +1,67 @@ +plugins_dir as $_plugin_dir) { + + $_plugin_filepath = $_plugin_dir . DIRECTORY_SEPARATOR . $_plugin_filename; + + // see if path is relative + if (!preg_match("/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/", $_plugin_dir)) { + $_relative_paths[] = $_plugin_dir; + // relative path, see if it is in the SMARTY_DIR + if (@is_readable(SMARTY_DIR . $_plugin_filepath)) { + $_return = SMARTY_DIR . $_plugin_filepath; + break; + } + } + // try relative to cwd (or absolute) + if (@is_readable($_plugin_filepath)) { + $_return = $_plugin_filepath; + break; + } + } + + if($_return === false) { + // still not found, try PHP include_path + if(isset($_relative_paths)) { + foreach ((array)$_relative_paths as $_plugin_dir) { + + $_plugin_filepath = $_plugin_dir . DIRECTORY_SEPARATOR . $_plugin_filename; + + $_params = array('file_path' => $_plugin_filepath); + require_once(SMARTY_CORE_DIR . 'core.get_include_path.php'); + if(smarty_core_get_include_path($_params, $smarty)) { + $_return = $_params['new_file_path']; + break; + } + } + } + } + $_filepaths_cache[$_plugin_filename] = $_return; + return $_return; +} + +/* vim: set expandtab: */ + +?> diff --git a/bundled-libs/Smarty/libs/internals/core.assign_smarty_interface.php b/bundled-libs/Smarty/libs/internals/core.assign_smarty_interface.php new file mode 100644 index 00000000..7e65a73e --- /dev/null +++ b/bundled-libs/Smarty/libs/internals/core.assign_smarty_interface.php @@ -0,0 +1,43 @@ + + * Name: assign_smarty_interface
+ * Purpose: assign the $smarty interface variable + * @param array Format: null + * @param Smarty + */ +function smarty_core_assign_smarty_interface($params, &$smarty) +{ + if (isset($smarty->_smarty_vars) && isset($smarty->_smarty_vars['request'])) { + return; + } + + $_globals_map = array('g' => 'HTTP_GET_VARS', + 'p' => 'HTTP_POST_VARS', + 'c' => 'HTTP_COOKIE_VARS', + 's' => 'HTTP_SERVER_VARS', + 'e' => 'HTTP_ENV_VARS'); + + $_smarty_vars_request = array(); + + foreach (preg_split('!!', strtolower($smarty->request_vars_order)) as $_c) { + if (isset($_globals_map[$_c])) { + $_smarty_vars_request = array_merge($_smarty_vars_request, $GLOBALS[$_globals_map[$_c]]); + } + } + $_smarty_vars_request = @array_merge($_smarty_vars_request, $GLOBALS['HTTP_SESSION_VARS']); + + $smarty->_smarty_vars['request'] = $_smarty_vars_request; +} + +/* vim: set expandtab: */ + +?> diff --git a/bundled-libs/Smarty/libs/internals/core.create_dir_structure.php b/bundled-libs/Smarty/libs/internals/core.create_dir_structure.php new file mode 100644 index 00000000..3eecc497 --- /dev/null +++ b/bundled-libs/Smarty/libs/internals/core.create_dir_structure.php @@ -0,0 +1,79 @@ +_dir_perms) && !is_dir($_new_dir)) { + $smarty->trigger_error("problem creating directory '" . $_new_dir . "'"); + return false; + } + $_new_dir .= '/'; + } + } +} + +/* vim: set expandtab: */ + +?> diff --git a/bundled-libs/Smarty/libs/internals/core.display_debug_console.php b/bundled-libs/Smarty/libs/internals/core.display_debug_console.php new file mode 100644 index 00000000..1a80f390 --- /dev/null +++ b/bundled-libs/Smarty/libs/internals/core.display_debug_console.php @@ -0,0 +1,61 @@ + + * Name: display_debug_console
+ * Purpose: display the javascript debug console window + * @param array Format: null + * @param Smarty + */ +function smarty_core_display_debug_console($params, &$smarty) +{ + // we must force compile the debug template in case the environment + // changed between separate applications. + + if(empty($smarty->debug_tpl)) { + // set path to debug template from SMARTY_DIR + $smarty->debug_tpl = SMARTY_DIR . 'debug.tpl'; + if($smarty->security && is_file($smarty->debug_tpl)) { + $smarty->secure_dir[] = realpath($smarty->debug_tpl); + } + $smarty->debug_tpl = 'file:' . SMARTY_DIR . 'debug.tpl'; + } + + $_ldelim_orig = $smarty->left_delimiter; + $_rdelim_orig = $smarty->right_delimiter; + + $smarty->left_delimiter = '{'; + $smarty->right_delimiter = '}'; + + $_compile_id_orig = $smarty->_compile_id; + $smarty->_compile_id = null; + + $_compile_path = $smarty->_get_compile_path($smarty->debug_tpl); + if ($smarty->_compile_resource($smarty->debug_tpl, $_compile_path)) + { + ob_start(); + $smarty->_include($_compile_path); + $_results = ob_get_contents(); + ob_end_clean(); + } else { + $_results = ''; + } + + $smarty->_compile_id = $_compile_id_orig; + + $smarty->left_delimiter = $_ldelim_orig; + $smarty->right_delimiter = $_rdelim_orig; + + return $_results; +} + +/* vim: set expandtab: */ + +?> diff --git a/bundled-libs/Smarty/libs/internals/core.get_include_path.php b/bundled-libs/Smarty/libs/internals/core.get_include_path.php new file mode 100644 index 00000000..43432412 --- /dev/null +++ b/bundled-libs/Smarty/libs/internals/core.get_include_path.php @@ -0,0 +1,44 @@ + diff --git a/bundled-libs/Smarty/libs/internals/core.get_microtime.php b/bundled-libs/Smarty/libs/internals/core.get_microtime.php new file mode 100644 index 00000000..f1a28e04 --- /dev/null +++ b/bundled-libs/Smarty/libs/internals/core.get_microtime.php @@ -0,0 +1,23 @@ + diff --git a/bundled-libs/Smarty/libs/internals/core.get_php_resource.php b/bundled-libs/Smarty/libs/internals/core.get_php_resource.php new file mode 100644 index 00000000..786d4e78 --- /dev/null +++ b/bundled-libs/Smarty/libs/internals/core.get_php_resource.php @@ -0,0 +1,80 @@ +trusted_dir; + $smarty->_parse_resource_name($params, $smarty); + + /* + * Find out if the resource exists. + */ + + if ($params['resource_type'] == 'file') { + $_readable = false; + if(file_exists($params['resource_name']) && is_readable($params['resource_name'])) { + $_readable = true; + } else { + // test for file in include_path + $_params = array('file_path' => $params['resource_name']); + require_once(SMARTY_CORE_DIR . 'core.get_include_path.php'); + if(smarty_core_get_include_path($_params, $smarty)) { + $_include_path = $_params['new_file_path']; + $_readable = true; + } + } + } else if ($params['resource_type'] != 'file') { + $_template_source = null; + $_readable = is_callable($smarty->_plugins['resource'][$params['resource_type']][0][0]) + && call_user_func_array($smarty->_plugins['resource'][$params['resource_type']][0][0], + array($params['resource_name'], &$_template_source, &$smarty)); + } + + /* + * Set the error function, depending on which class calls us. + */ + if (method_exists($smarty, '_syntax_error')) { + $_error_funcc = '_syntax_error'; + } else { + $_error_funcc = 'trigger_error'; + } + + if ($_readable) { + if ($smarty->security) { + require_once(SMARTY_CORE_DIR . 'core.is_trusted.php'); + if (!smarty_core_is_trusted($params, $smarty)) { + $smarty->$_error_funcc('(secure mode) ' . $params['resource_type'] . ':' . $params['resource_name'] . ' is not trusted'); + return false; + } + } + } else { + $smarty->$_error_funcc($params['resource_type'] . ':' . $params['resource_name'] . ' is not readable'); + return false; + } + + if ($params['resource_type'] == 'file') { + $params['php_resource'] = $params['resource_name']; + } else { + $params['php_resource'] = $_template_source; + } + return true; +} + +/* vim: set expandtab: */ + +?> diff --git a/bundled-libs/Smarty/libs/internals/core.is_secure.php b/bundled-libs/Smarty/libs/internals/core.is_secure.php new file mode 100644 index 00000000..d54abd43 --- /dev/null +++ b/bundled-libs/Smarty/libs/internals/core.is_secure.php @@ -0,0 +1,59 @@ +security || $smarty->security_settings['INCLUDE_ANY']) { + return true; + } + + if ($params['resource_type'] == 'file') { + $_rp = realpath($params['resource_name']); + if (isset($params['resource_base_path'])) { + foreach ((array)$params['resource_base_path'] as $curr_dir) { + if ( ($_cd = realpath($curr_dir)) !== false && + strncmp($_rp, $_cd, strlen($_cd)) == 0 && + substr($_rp, strlen($_cd), 1) == DIRECTORY_SEPARATOR ) { + return true; + } + } + } + if (!empty($smarty->secure_dir)) { + foreach ((array)$smarty->secure_dir as $curr_dir) { + if ( ($_cd = realpath($curr_dir)) !== false) { + if($_cd == $_rp) { + return true; + } elseif (strncmp($_rp, $_cd, strlen($_cd)) == 0 && + substr($_rp, strlen($_cd), 1) == DIRECTORY_SEPARATOR) { + return true; + } + } + } + } + } else { + // resource is not on local file system + return call_user_func_array( + $smarty->_plugins['resource'][$params['resource_type']][0][2], + array($params['resource_name'], &$smarty)); + } + + return false; +} + +/* vim: set expandtab: */ + +?> diff --git a/bundled-libs/Smarty/libs/internals/core.is_trusted.php b/bundled-libs/Smarty/libs/internals/core.is_trusted.php new file mode 100644 index 00000000..42997315 --- /dev/null +++ b/bundled-libs/Smarty/libs/internals/core.is_trusted.php @@ -0,0 +1,47 @@ +trusted_dir)) { + $_rp = realpath($params['resource_name']); + foreach ((array)$smarty->trusted_dir as $curr_dir) { + if (!empty($curr_dir) && is_readable ($curr_dir)) { + $_cd = realpath($curr_dir); + if (strncmp($_rp, $_cd, strlen($_cd)) == 0 + && substr($_rp, strlen($_cd), 1) == DIRECTORY_SEPARATOR ) { + $_smarty_trusted = true; + break; + } + } + } + } + + } else { + // resource is not on local file system + $_smarty_trusted = call_user_func_array($smarty->_plugins['resource'][$params['resource_type']][0][3], + array($params['resource_name'], $smarty)); + } + + return $_smarty_trusted; +} + +/* vim: set expandtab: */ + +?> diff --git a/bundled-libs/Smarty/libs/internals/core.load_plugins.php b/bundled-libs/Smarty/libs/internals/core.load_plugins.php new file mode 100644 index 00000000..6db1dc51 --- /dev/null +++ b/bundled-libs/Smarty/libs/internals/core.load_plugins.php @@ -0,0 +1,125 @@ +_plugins[$_type][$_name]; + + /* + * We do not load plugin more than once for each instance of Smarty. + * The following code checks for that. The plugin can also be + * registered dynamically at runtime, in which case template file + * and line number will be unknown, so we fill them in. + * + * The final element of the info array is a flag that indicates + * whether the dynamically registered plugin function has been + * checked for existence yet or not. + */ + if (isset($_plugin)) { + if (empty($_plugin[3])) { + if (!is_callable($_plugin[0])) { + $smarty->_trigger_fatal_error("[plugin] $_type '$_name' is not implemented", $_tpl_file, $_tpl_line, __FILE__, __LINE__); + } else { + $_plugin[1] = $_tpl_file; + $_plugin[2] = $_tpl_line; + $_plugin[3] = true; + if (!isset($_plugin[4])) $_plugin[4] = true; /* cacheable */ + } + } + continue; + } else if ($_type == 'insert') { + /* + * For backwards compatibility, we check for insert functions in + * the symbol table before trying to load them as a plugin. + */ + $_plugin_func = 'insert_' . $_name; + if (function_exists($_plugin_func)) { + $_plugin = array($_plugin_func, $_tpl_file, $_tpl_line, true, false); + continue; + } + } + + $_plugin_file = $smarty->_get_plugin_filepath($_type, $_name); + + if (! $_found = ($_plugin_file != false)) { + $_message = "could not load plugin file '$_type.$_name.php'\n"; + } + + /* + * If plugin file is found, it -must- provide the properly named + * plugin function. In case it doesn't, simply output the error and + * do not fall back on any other method. + */ + if ($_found) { + include_once $_plugin_file; + + $_plugin_func = 'smarty_' . $_type . '_' . $_name; + if (!function_exists($_plugin_func)) { + $smarty->_trigger_fatal_error("[plugin] function $_plugin_func() not found in $_plugin_file", $_tpl_file, $_tpl_line, __FILE__, __LINE__); + continue; + } + } + /* + * In case of insert plugins, their code may be loaded later via + * 'script' attribute. + */ + else if ($_type == 'insert' && $_delayed_loading) { + $_plugin_func = 'smarty_' . $_type . '_' . $_name; + $_found = true; + } + + /* + * Plugin specific processing and error checking. + */ + if (!$_found) { + if ($_type == 'modifier') { + /* + * In case modifier falls back on using PHP functions + * directly, we only allow those specified in the security + * context. + */ + if ($smarty->security && !in_array($_name, $smarty->security_settings['MODIFIER_FUNCS'])) { + $_message = "(secure mode) modifier '$_name' is not allowed"; + } else { + if (!function_exists($_name)) { + $_message = "modifier '$_name' is not implemented"; + } else { + $_plugin_func = $_name; + $_found = true; + } + } + } else if ($_type == 'function') { + /* + * This is a catch-all situation. + */ + $_message = "unknown tag - '$_name'"; + } + } + + if ($_found) { + $smarty->_plugins[$_type][$_name] = array($_plugin_func, $_tpl_file, $_tpl_line, true, true); + } else { + // output error + $smarty->_trigger_fatal_error('[plugin] ' . $_message, $_tpl_file, $_tpl_line, __FILE__, __LINE__); + } + } +} + +/* vim: set expandtab: */ + +?> diff --git a/bundled-libs/Smarty/libs/internals/core.load_resource_plugin.php b/bundled-libs/Smarty/libs/internals/core.load_resource_plugin.php new file mode 100644 index 00000000..a7d37d1a --- /dev/null +++ b/bundled-libs/Smarty/libs/internals/core.load_resource_plugin.php @@ -0,0 +1,74 @@ +_plugins['resource'][$params['type']]; + if (isset($_plugin)) { + if (!$_plugin[1] && count($_plugin[0])) { + $_plugin[1] = true; + foreach ($_plugin[0] as $_plugin_func) { + if (!is_callable($_plugin_func)) { + $_plugin[1] = false; + break; + } + } + } + + if (!$_plugin[1]) { + $smarty->_trigger_fatal_error("[plugin] resource '" . $params['type'] . "' is not implemented", null, null, __FILE__, __LINE__); + } + + return; + } + + $_plugin_file = $smarty->_get_plugin_filepath('resource', $params['type']); + $_found = ($_plugin_file != false); + + if ($_found) { /* + * If the plugin file is found, it -must- provide the properly named + * plugin functions. + */ + include_once($_plugin_file); + + /* + * Locate functions that we require the plugin to provide. + */ + $_resource_ops = array('source', 'timestamp', 'secure', 'trusted'); + $_resource_funcs = array(); + foreach ($_resource_ops as $_op) { + $_plugin_func = 'smarty_resource_' . $params['type'] . '_' . $_op; + if (!function_exists($_plugin_func)) { + $smarty->_trigger_fatal_error("[plugin] function $_plugin_func() not found in $_plugin_file", null, null, __FILE__, __LINE__); + return; + } else { + $_resource_funcs[] = $_plugin_func; + } + } + + $smarty->_plugins['resource'][$params['type']] = array($_resource_funcs, true); + } +} + +/* vim: set expandtab: */ + +?> diff --git a/bundled-libs/Smarty/libs/internals/core.process_cached_inserts.php b/bundled-libs/Smarty/libs/internals/core.process_cached_inserts.php new file mode 100644 index 00000000..1d78edd9 --- /dev/null +++ b/bundled-libs/Smarty/libs/internals/core.process_cached_inserts.php @@ -0,0 +1,71 @@ +_smarty_md5.'{insert_cache (.*)}'.$smarty->_smarty_md5.'!Uis', + $params['results'], $match); + list($cached_inserts, $insert_args) = $match; + + for ($i = 0, $for_max = count($cached_inserts); $i < $for_max; $i++) { + if ($smarty->debugging) { + $_params = array(); + require_once(SMARTY_CORE_DIR . 'core.get_microtime.php'); + $debug_start_time = smarty_core_get_microtime($_params, $smarty); + } + + $args = unserialize($insert_args[$i]); + $name = $args['name']; + + if (isset($args['script'])) { + $_params = array('resource_name' => $smarty->_dequote($args['script'])); + require_once(SMARTY_CORE_DIR . 'core.get_php_resource.php'); + if(!smarty_core_get_php_resource($_params, $smarty)) { + return false; + } + $resource_type = $_params['resource_type']; + $php_resource = $_params['php_resource']; + + + if ($resource_type == 'file') { + $smarty->_include($php_resource, true); + } else { + $smarty->_eval($php_resource); + } + } + + $function_name = $smarty->_plugins['insert'][$name][0]; + if (empty($args['assign'])) { + $replace = $function_name($args, $smarty); + } else { + $smarty->assign($args['assign'], $function_name($args, $smarty)); + $replace = ''; + } + + $params['results'] = substr_replace($params['results'], $replace, strpos($params['results'], $cached_inserts[$i]), strlen($cached_inserts[$i])); + if ($smarty->debugging) { + $_params = array(); + require_once(SMARTY_CORE_DIR . 'core.get_microtime.php'); + $smarty->_smarty_debug_info[] = array('type' => 'insert', + 'filename' => 'insert_'.$name, + 'depth' => $smarty->_inclusion_depth, + 'exec_time' => smarty_core_get_microtime($_params, $smarty) - $debug_start_time); + } + } + + return $params['results']; +} + +/* vim: set expandtab: */ + +?> diff --git a/bundled-libs/Smarty/libs/internals/core.process_compiled_include.php b/bundled-libs/Smarty/libs/internals/core.process_compiled_include.php new file mode 100644 index 00000000..d539423b --- /dev/null +++ b/bundled-libs/Smarty/libs/internals/core.process_compiled_include.php @@ -0,0 +1,37 @@ +_cache_including; + $smarty->_cache_including = true; + + $_return = $params['results']; + + foreach ($smarty->_cache_info['cache_serials'] as $_include_file_path=>$_cache_serial) { + $smarty->_include($_include_file_path, true); + } + + foreach ($smarty->_cache_serials as $_include_file_path=>$_cache_serial) { + $_return = preg_replace_callback('!(\{nocache\:('.$_cache_serial.')#(\d+)\})!s', + array(&$smarty, '_process_compiled_include_callback'), + $_return); + } + $smarty->_cache_including = $_cache_including; + return $_return; +} + +?> diff --git a/bundled-libs/Smarty/libs/internals/core.read_cache_file.php b/bundled-libs/Smarty/libs/internals/core.read_cache_file.php new file mode 100644 index 00000000..c60e113a --- /dev/null +++ b/bundled-libs/Smarty/libs/internals/core.read_cache_file.php @@ -0,0 +1,101 @@ +force_compile) { + // force compile enabled, always regenerate + return false; + } + + if (isset($content_cache[$params['tpl_file'].','.$params['cache_id'].','.$params['compile_id']])) { + list($params['results'], $smarty->_cache_info) = $content_cache[$params['tpl_file'].','.$params['cache_id'].','.$params['compile_id']]; + return true; + } + + if (!empty($smarty->cache_handler_func)) { + // use cache_handler function + call_user_func_array($smarty->cache_handler_func, + array('read', &$smarty, &$params['results'], $params['tpl_file'], $params['cache_id'], $params['compile_id'], null)); + } else { + // use local cache file + $_auto_id = $smarty->_get_auto_id($params['cache_id'], $params['compile_id']); + $_cache_file = $smarty->_get_auto_filename($smarty->cache_dir, $params['tpl_file'], $_auto_id); + $params['results'] = $smarty->_read_file($_cache_file); + } + + if (empty($params['results'])) { + // nothing to parse (error?), regenerate cache + return false; + } + + $_contents = $params['results']; + $_info_start = strpos($_contents, "\n") + 1; + $_info_len = (int)substr($_contents, 0, $_info_start - 1); + $_cache_info = unserialize(substr($_contents, $_info_start, $_info_len)); + $params['results'] = substr($_contents, $_info_start + $_info_len); + + if ($smarty->caching == 2 && isset ($_cache_info['expires'])){ + // caching by expiration time + if ($_cache_info['expires'] > -1 && (time() > $_cache_info['expires'])) { + // cache expired, regenerate + return false; + } + } else { + // caching by lifetime + if ($smarty->cache_lifetime > -1 && (time() - $_cache_info['timestamp'] > $smarty->cache_lifetime)) { + // cache expired, regenerate + return false; + } + } + + if ($smarty->compile_check) { + $_params = array('get_source' => false, 'quiet'=>true); + foreach (array_keys($_cache_info['template']) as $_template_dep) { + $_params['resource_name'] = $_template_dep; + if (!$smarty->_fetch_resource_info($_params) || $_cache_info['timestamp'] < $_params['resource_timestamp']) { + // template file has changed, regenerate cache + return false; + } + } + + if (isset($_cache_info['config'])) { + $_params = array('resource_base_path' => $smarty->config_dir, 'get_source' => false, 'quiet'=>true); + foreach (array_keys($_cache_info['config']) as $_config_dep) { + $_params['resource_name'] = $_config_dep; + if (!$smarty->_fetch_resource_info($_params) || $_cache_info['timestamp'] < $_params['resource_timestamp']) { + // config file has changed, regenerate cache + return false; + } + } + } + } + + $content_cache[$params['tpl_file'].','.$params['cache_id'].','.$params['compile_id']] = array($params['results'], $_cache_info); + + $smarty->_cache_info = $_cache_info; + return true; +} + +/* vim: set expandtab: */ + +?> diff --git a/bundled-libs/Smarty/libs/internals/core.rm_auto.php b/bundled-libs/Smarty/libs/internals/core.rm_auto.php new file mode 100644 index 00000000..b251f649 --- /dev/null +++ b/bundled-libs/Smarty/libs/internals/core.rm_auto.php @@ -0,0 +1,71 @@ + $params['auto_base'], + 'level' => 0, + 'exp_time' => $params['exp_time'] + ); + require_once(SMARTY_CORE_DIR . 'core.rmdir.php'); + $_res = smarty_core_rmdir($_params, $smarty); + } else { + $_tname = $smarty->_get_auto_filename($params['auto_base'], $params['auto_source'], $params['auto_id']); + + if(isset($params['auto_source'])) { + if (isset($params['extensions'])) { + $_res = false; + foreach ((array)$params['extensions'] as $_extension) + $_res |= $smarty->_unlink($_tname.$_extension, $params['exp_time']); + } else { + $_res = $smarty->_unlink($_tname, $params['exp_time']); + } + } elseif ($smarty->use_sub_dirs) { + $_params = array( + 'dirname' => $_tname, + 'level' => 1, + 'exp_time' => $params['exp_time'] + ); + require_once(SMARTY_CORE_DIR . 'core.rmdir.php'); + $_res = smarty_core_rmdir($_params, $smarty); + } else { + // remove matching file names + $_handle = opendir($params['auto_base']); + $_res = true; + while (false !== ($_filename = readdir($_handle))) { + if($_filename == '.' || $_filename == '..') { + continue; + } elseif (substr($params['auto_base'] . DIRECTORY_SEPARATOR . $_filename, 0, strlen($_tname)) == $_tname) { + $_res &= (bool)$smarty->_unlink($params['auto_base'] . DIRECTORY_SEPARATOR . $_filename, $params['exp_time']); + } + } + } + } + + return $_res; +} + +/* vim: set expandtab: */ + +?> diff --git a/bundled-libs/Smarty/libs/internals/core.rmdir.php b/bundled-libs/Smarty/libs/internals/core.rmdir.php new file mode 100644 index 00000000..2166c44d --- /dev/null +++ b/bundled-libs/Smarty/libs/internals/core.rmdir.php @@ -0,0 +1,54 @@ + keep root) + * WARNING: no tests, it will try to remove what you tell it! + * + * @param string $dirname + * @param integer $level + * @param integer $exp_time + * @return boolean + */ + +// $dirname, $level = 1, $exp_time = null + +function smarty_core_rmdir($params, &$smarty) +{ + if(!isset($params['level'])) { $params['level'] = 1; } + if(!isset($params['exp_time'])) { $params['exp_time'] = null; } + + if($_handle = @opendir($params['dirname'])) { + + while (false !== ($_entry = readdir($_handle))) { + if ($_entry != '.' && $_entry != '..') { + if (@is_dir($params['dirname'] . DIRECTORY_SEPARATOR . $_entry)) { + $_params = array( + 'dirname' => $params['dirname'] . DIRECTORY_SEPARATOR . $_entry, + 'level' => $params['level'] + 1, + 'exp_time' => $params['exp_time'] + ); + smarty_core_rmdir($_params, $smarty); + } + else { + $smarty->_unlink($params['dirname'] . DIRECTORY_SEPARATOR . $_entry, $params['exp_time']); + } + } + } + closedir($_handle); + } + + if ($params['level']) { + return @rmdir($params['dirname']); + } + return (bool)$_handle; + +} + +/* vim: set expandtab: */ + +?> diff --git a/bundled-libs/Smarty/libs/internals/core.run_insert_handler.php b/bundled-libs/Smarty/libs/internals/core.run_insert_handler.php new file mode 100644 index 00000000..71c38450 --- /dev/null +++ b/bundled-libs/Smarty/libs/internals/core.run_insert_handler.php @@ -0,0 +1,71 @@ +debugging) { + $_params = array(); + $_debug_start_time = smarty_core_get_microtime($_params, $smarty); + } + + if ($smarty->caching) { + $_arg_string = serialize($params['args']); + $_name = $params['args']['name']; + if (!isset($smarty->_cache_info['insert_tags'][$_name])) { + $smarty->_cache_info['insert_tags'][$_name] = array('insert', + $_name, + $smarty->_plugins['insert'][$_name][1], + $smarty->_plugins['insert'][$_name][2], + !empty($params['args']['script']) ? true : false); + } + return $smarty->_smarty_md5."{insert_cache $_arg_string}".$smarty->_smarty_md5; + } else { + if (isset($params['args']['script'])) { + $_params = array('resource_name' => $smarty->_dequote($params['args']['script'])); + require_once(SMARTY_CORE_DIR . 'core.get_php_resource.php'); + if(!smarty_core_get_php_resource($_params, $smarty)) { + return false; + } + + if ($_params['resource_type'] == 'file') { + $smarty->_include($_params['php_resource'], true); + } else { + $smarty->_eval($_params['php_resource']); + } + unset($params['args']['script']); + } + + $_funcname = $smarty->_plugins['insert'][$params['args']['name']][0]; + $_content = $_funcname($params['args'], $smarty); + if ($smarty->debugging) { + $_params = array(); + require_once(SMARTY_CORE_DIR . 'core.get_microtime.php'); + $smarty->_smarty_debug_info[] = array('type' => 'insert', + 'filename' => 'insert_'.$params['args']['name'], + 'depth' => $smarty->_inclusion_depth, + 'exec_time' => smarty_core_get_microtime($_params, $smarty) - $_debug_start_time); + } + + if (!empty($params['args']["assign"])) { + $smarty->assign($params['args']["assign"], $_content); + } else { + return $_content; + } + } +} + +/* vim: set expandtab: */ + +?> diff --git a/bundled-libs/Smarty/libs/internals/core.smarty_include_php.php b/bundled-libs/Smarty/libs/internals/core.smarty_include_php.php new file mode 100644 index 00000000..30c6e765 --- /dev/null +++ b/bundled-libs/Smarty/libs/internals/core.smarty_include_php.php @@ -0,0 +1,50 @@ + $params['smarty_file']); + require_once(SMARTY_CORE_DIR . 'core.get_php_resource.php'); + smarty_core_get_php_resource($_params, $smarty); + $_smarty_resource_type = $_params['resource_type']; + $_smarty_php_resource = $_params['php_resource']; + + if (!empty($params['smarty_assign'])) { + ob_start(); + if ($_smarty_resource_type == 'file') { + $smarty->_include($_smarty_php_resource, $params['smarty_once'], $params['smarty_include_vars']); + } else { + $smarty->_eval($_smarty_php_resource, $params['smarty_include_vars']); + } + $smarty->assign($params['smarty_assign'], ob_get_contents()); + ob_end_clean(); + } else { + if ($_smarty_resource_type == 'file') { + $smarty->_include($_smarty_php_resource, $params['smarty_once'], $params['smarty_include_vars']); + } else { + $smarty->_eval($_smarty_php_resource, $params['smarty_include_vars']); + } + } +} + + +/* vim: set expandtab: */ + +?> diff --git a/bundled-libs/Smarty/libs/internals/core.write_cache_file.php b/bundled-libs/Smarty/libs/internals/core.write_cache_file.php new file mode 100644 index 00000000..72f785b7 --- /dev/null +++ b/bundled-libs/Smarty/libs/internals/core.write_cache_file.php @@ -0,0 +1,96 @@ +_cache_info['timestamp'] = time(); + if ($smarty->cache_lifetime > -1){ + // expiration set + $smarty->_cache_info['expires'] = $smarty->_cache_info['timestamp'] + $smarty->cache_lifetime; + } else { + // cache will never expire + $smarty->_cache_info['expires'] = -1; + } + + // collapse nocache.../nocache-tags + if (preg_match_all('!\{(/?)nocache\:[0-9a-f]{32}#\d+\}!', $params['results'], $match, PREG_PATTERN_ORDER)) { + // remove everything between every pair of outermost noache.../nocache-tags + // and replace it by a single nocache-tag + // this new nocache-tag will be replaced by dynamic contents in + // smarty_core_process_compiled_includes() on a cache-read + + $match_count = count($match[0]); + $results = preg_split('!(\{/?nocache\:[0-9a-f]{32}#\d+\})!', $params['results'], -1, PREG_SPLIT_DELIM_CAPTURE); + + $level = 0; + $j = 0; + for ($i=0, $results_count = count($results); $i < $results_count && $j < $match_count; $i++) { + if ($results[$i] == $match[0][$j]) { + // nocache tag + if ($match[1][$j]) { // closing tag + $level--; + unset($results[$i]); + } else { // opening tag + if ($level++ > 0) unset($results[$i]); + } + $j++; + } elseif ($level > 0) { + unset($results[$i]); + } + } + $params['results'] = implode('', $results); + } + $smarty->_cache_info['cache_serials'] = $smarty->_cache_serials; + + // prepend the cache header info into cache file + $_cache_info = serialize($smarty->_cache_info); + $params['results'] = strlen($_cache_info) . "\n" . $_cache_info . $params['results']; + + if (!empty($smarty->cache_handler_func)) { + // use cache_handler function + call_user_func_array($smarty->cache_handler_func, + array('write', &$smarty, &$params['results'], $params['tpl_file'], $params['cache_id'], $params['compile_id'], null)); + } else { + // use local cache file + + if(!@is_writable($smarty->cache_dir)) { + // cache_dir not writable, see if it exists + if(!@is_dir($smarty->cache_dir)) { + $smarty->trigger_error('the $cache_dir \'' . $smarty->cache_dir . '\' does not exist, or is not a directory.', E_USER_ERROR); + return false; + } + $smarty->trigger_error('unable to write to $cache_dir \'' . realpath($smarty->cache_dir) . '\'. Be sure $cache_dir is writable by the web server user.', E_USER_ERROR); + return false; + } + + $_auto_id = $smarty->_get_auto_id($params['cache_id'], $params['compile_id']); + $_cache_file = $smarty->_get_auto_filename($smarty->cache_dir, $params['tpl_file'], $_auto_id); + $_params = array('filename' => $_cache_file, 'contents' => $params['results'], 'create_dirs' => true); + require_once(SMARTY_CORE_DIR . 'core.write_file.php'); + smarty_core_write_file($_params, $smarty); + return true; + } +} + +/* vim: set expandtab: */ + +?> diff --git a/bundled-libs/Smarty/libs/internals/core.write_compiled_include.php b/bundled-libs/Smarty/libs/internals/core.write_compiled_include.php new file mode 100644 index 00000000..3a780941 --- /dev/null +++ b/bundled-libs/Smarty/libs/internals/core.write_compiled_include.php @@ -0,0 +1,91 @@ +caching && \!\$this->_cache_including\) \{ echo \'\{nocache\:('.$params['cache_serial'].')#(\d+)\}\'; \};'; + $_tag_end = 'if \(\$this->caching && \!\$this->_cache_including\) \{ echo \'\{/nocache\:(\\2)#(\\3)\}\'; \};'; + + preg_match_all('!('.$_tag_start.'(.*)'.$_tag_end.')!Us', + $params['compiled_content'], $_match_source, PREG_SET_ORDER); + + // no nocache-parts found: done + if (count($_match_source)==0) return; + + // convert the matched php-code to functions + $_include_compiled = "_version.", created on ".strftime("%Y-%m-%d %H:%M:%S")."\n"; + $_include_compiled .= " compiled from " . strtr(urlencode($params['resource_name']), array('%2F'=>'/', '%3A'=>':')) . " */\n\n"; + + $_compile_path = $params['include_file_path']; + + $smarty->_cache_serials[$_compile_path] = $params['cache_serial']; + $_include_compiled .= "\$this->_cache_serials['".$_compile_path."'] = '".$params['cache_serial']."';\n\n?>"; + + $_include_compiled .= $params['plugins_code']; + $_include_compiled .= "= 5.0) ? '_smarty' : 'this'; + for ($_i = 0, $_for_max = count($_match_source); $_i < $_for_max; $_i++) { + $_match =& $_match_source[$_i]; + $source = $_match[4]; + if ($this_varname == '_smarty') { + /* rename $this to $_smarty in the sourcecode */ + $tokens = token_get_all('\n"; + + $_params = array('filename' => $_compile_path, + 'contents' => $_include_compiled, 'create_dirs' => true); + + require_once(SMARTY_CORE_DIR . 'core.write_file.php'); + smarty_core_write_file($_params, $smarty); + return true; +} + + +?> diff --git a/bundled-libs/Smarty/libs/internals/core.write_compiled_resource.php b/bundled-libs/Smarty/libs/internals/core.write_compiled_resource.php new file mode 100644 index 00000000..b902eff3 --- /dev/null +++ b/bundled-libs/Smarty/libs/internals/core.write_compiled_resource.php @@ -0,0 +1,35 @@ +compile_dir)) { + // compile_dir not writable, see if it exists + if(!@is_dir($smarty->compile_dir)) { + $smarty->trigger_error('the $compile_dir \'' . $smarty->compile_dir . '\' does not exist, or is not a directory.', E_USER_ERROR); + return false; + } + $smarty->trigger_error('unable to write to $compile_dir \'' . realpath($smarty->compile_dir) . '\'. Be sure $compile_dir is writable by the web server user.', E_USER_ERROR); + return false; + } + + $_params = array('filename' => $params['compile_path'], 'contents' => $params['compiled_content'], 'create_dirs' => true); + require_once(SMARTY_CORE_DIR . 'core.write_file.php'); + smarty_core_write_file($_params, $smarty); + return true; +} + +/* vim: set expandtab: */ + +?> diff --git a/bundled-libs/Smarty/libs/internals/core.write_file.php b/bundled-libs/Smarty/libs/internals/core.write_file.php new file mode 100644 index 00000000..09e16984 --- /dev/null +++ b/bundled-libs/Smarty/libs/internals/core.write_file.php @@ -0,0 +1,54 @@ + $_dirname); + require_once(SMARTY_CORE_DIR . 'core.create_dir_structure.php'); + smarty_core_create_dir_structure($_params, $smarty); + } + + // write to tmp file, then rename it to avoid + // file locking race condition + $_tmp_file = tempnam($_dirname, 'wrt'); + + if (!($fd = @fopen($_tmp_file, 'wb'))) { + $_tmp_file = $_dirname . DIRECTORY_SEPARATOR . uniqid('wrt'); + if (!($fd = @fopen($_tmp_file, 'wb'))) { + $smarty->trigger_error("problem writing temporary file '$_tmp_file'"); + return false; + } + } + + fwrite($fd, $params['contents']); + fclose($fd); + + // Delete the file if it allready exists (this is needed on Win, + // because it cannot overwrite files with rename() + if (file_exists($params['filename'])) { + @unlink($params['filename']); + } + @rename($_tmp_file, $params['filename']); + @chmod($params['filename'], $smarty->_file_perms); + + return true; +} + +/* vim: set expandtab: */ + +?> diff --git a/bundled-libs/Smarty/libs/plugins/block.textformat.php b/bundled-libs/Smarty/libs/plugins/block.textformat.php new file mode 100644 index 00000000..8cd010ac --- /dev/null +++ b/bundled-libs/Smarty/libs/plugins/block.textformat.php @@ -0,0 +1,103 @@ + + * Name: textformat
+ * Purpose: format text a certain way with preset styles + * or custom wrap/indent settings
+ * @link http://smarty.php.net/manual/en/language.function.textformat.php {textformat} + * (Smarty online manual) + * @param array + *
+ * Params:   style: string (email)
+ *           indent: integer (0)
+ *           wrap: integer (80)
+ *           wrap_char string ("\n")
+ *           indent_char: string (" ")
+ *           wrap_boundary: boolean (true)
+ * 
+ * @author Monte Ohrt + * @param string contents of the block + * @param Smarty clever simulation of a method + * @return string string $content re-formatted + */ +function smarty_block_textformat($params, $content, &$smarty) +{ + if (is_null($content)) { + return; + } + + $style = null; + $indent = 0; + $indent_first = 0; + $indent_char = ' '; + $wrap = 80; + $wrap_char = "\n"; + $wrap_cut = false; + $assign = null; + + foreach ($params as $_key => $_val) { + switch ($_key) { + case 'style': + case 'indent_char': + case 'wrap_char': + case 'assign': + $$_key = (string)$_val; + break; + + case 'indent': + case 'indent_first': + case 'wrap': + $$_key = (int)$_val; + break; + + case 'wrap_cut': + $$_key = (bool)$_val; + break; + + default: + $smarty->trigger_error("textformat: unknown attribute '$_key'"); + } + } + + if ($style == 'email') { + $wrap = 72; + } + + // split into paragraphs + $_paragraphs = preg_split('![\r\n][\r\n]!',$content); + $_output = ''; + + for($_x = 0, $_y = count($_paragraphs); $_x < $_y; $_x++) { + if ($_paragraphs[$_x] == '') { + continue; + } + // convert mult. spaces & special chars to single space + $_paragraphs[$_x] = preg_replace(array('!\s+!','!(^\s+)|(\s+$)!'), array(' ',''), $_paragraphs[$_x]); + // indent first line + if($indent_first > 0) { + $_paragraphs[$_x] = str_repeat($indent_char, $indent_first) . $_paragraphs[$_x]; + } + // wordwrap sentences + $_paragraphs[$_x] = wordwrap($_paragraphs[$_x], $wrap - $indent, $wrap_char, $wrap_cut); + // indent lines + if($indent > 0) { + $_paragraphs[$_x] = preg_replace('!^!m', str_repeat($indent_char, $indent), $_paragraphs[$_x]); + } + } + $_output = implode($wrap_char . $wrap_char, $_paragraphs); + + return $assign ? $smarty->assign($assign, $_output) : $_output; + +} + +/* vim: set expandtab: */ + +?> diff --git a/bundled-libs/Smarty/libs/plugins/compiler.assign.php b/bundled-libs/Smarty/libs/plugins/compiler.assign.php new file mode 100644 index 00000000..be172985 --- /dev/null +++ b/bundled-libs/Smarty/libs/plugins/compiler.assign.php @@ -0,0 +1,40 @@ + + * Name: assign
+ * Purpose: assign a value to a template variable + * @link http://smarty.php.net/manual/en/language.custom.functions.php#LANGUAGE.FUNCTION.ASSIGN {assign} + * (Smarty online manual) + * @author Monte Ohrt (initial author) + * @auther messju mohr (conversion to compiler function) + * @param string containing var-attribute and value-attribute + * @param Smarty_Compiler + */ +function smarty_compiler_assign($tag_attrs, &$compiler) +{ + $_params = $compiler->_parse_attrs($tag_attrs); + + if (!isset($_params['var'])) { + $compiler->_syntax_error("assign: missing 'var' parameter", E_USER_WARNING); + return; + } + + if (!isset($_params['value'])) { + $compiler->_syntax_error("assign: missing 'value' parameter", E_USER_WARNING); + return; + } + + return "\$this->assign({$_params['var']}, {$_params['value']});"; +} + +/* vim: set expandtab: */ + +?> diff --git a/bundled-libs/Smarty/libs/plugins/function.assign_debug_info.php b/bundled-libs/Smarty/libs/plugins/function.assign_debug_info.php new file mode 100644 index 00000000..65404987 --- /dev/null +++ b/bundled-libs/Smarty/libs/plugins/function.assign_debug_info.php @@ -0,0 +1,40 @@ + + * Name: assign_debug_info
+ * Purpose: assign debug info to the template
+ * @author Monte Ohrt + * @param array unused in this plugin, this plugin uses {@link Smarty::$_config}, + * {@link Smarty::$_tpl_vars} and {@link Smarty::$_smarty_debug_info} + * @param Smarty + */ +function smarty_function_assign_debug_info($params, &$smarty) +{ + $assigned_vars = $smarty->_tpl_vars; + ksort($assigned_vars); + if (@is_array($smarty->_config[0])) { + $config_vars = $smarty->_config[0]; + ksort($config_vars); + $smarty->assign("_debug_config_keys", array_keys($config_vars)); + $smarty->assign("_debug_config_vals", array_values($config_vars)); + } + + $included_templates = $smarty->_smarty_debug_info; + + $smarty->assign("_debug_keys", array_keys($assigned_vars)); + $smarty->assign("_debug_vals", array_values($assigned_vars)); + + $smarty->assign("_debug_tpls", $included_templates); +} + +/* vim: set expandtab: */ + +?> diff --git a/bundled-libs/Smarty/libs/plugins/function.config_load.php b/bundled-libs/Smarty/libs/plugins/function.config_load.php new file mode 100644 index 00000000..db89f638 --- /dev/null +++ b/bundled-libs/Smarty/libs/plugins/function.config_load.php @@ -0,0 +1,142 @@ + + * Name: config_load
+ * Purpose: load config file vars + * @link http://smarty.php.net/manual/en/language.function.config.load.php {config_load} + * (Smarty online manual) + * @author Monte Ohrt + * @author messju mohr (added use of resources) + * @param array Format: + *
+ * array('file' => required config file name,
+ *       'section' => optional config file section to load
+ *       'scope' => local/parent/global
+ *       'global' => overrides scope, setting to parent if true)
+ * 
+ * @param Smarty + */ +function smarty_function_config_load($params, &$smarty) +{ + if ($smarty->debugging) { + $_params = array(); + require_once(SMARTY_CORE_DIR . 'core.get_microtime.php'); + $_debug_start_time = smarty_core_get_microtime($_params, $smarty); + } + + $_file = isset($params['file']) ? $smarty->_dequote($params['file']) : null; + $_section = isset($params['section']) ? $smarty->_dequote($params['section']) : null; + $_scope = isset($params['scope']) ? $smarty->_dequote($params['scope']) : 'global'; + $_global = isset($params['global']) ? $smarty->_dequote($params['global']) : false; + + if (!isset($_file) || strlen($_file) == 0) { + $smarty->trigger_error("missing 'file' attribute in config_load tag", E_USER_ERROR, __FILE__, __LINE__); + } + + if (isset($_scope)) { + if ($_scope != 'local' && + $_scope != 'parent' && + $_scope != 'global') { + $smarty->trigger_error("invalid 'scope' attribute value", E_USER_ERROR, __FILE__, __LINE__); + } + } else { + if ($_global) { + $_scope = 'parent'; + } else { + $_scope = 'local'; + } + } + + $_params = array('resource_name' => $_file, + 'resource_base_path' => $smarty->config_dir, + 'get_source' => false); + $smarty->_parse_resource_name($_params); + $_file_path = $_params['resource_type'] . ':' . $_params['resource_name']; + if (isset($_section)) + $_compile_file = $smarty->_get_compile_path($_file_path.'|'.$_section); + else + $_compile_file = $smarty->_get_compile_path($_file_path); + + if($smarty->force_compile || !file_exists($_compile_file)) { + $_compile = true; + } elseif ($smarty->compile_check) { + $_params = array('resource_name' => $_file, + 'resource_base_path' => $smarty->config_dir, + 'get_source' => false); + $_compile = $smarty->_fetch_resource_info($_params) && + $_params['resource_timestamp'] > filemtime($_compile_file); + } else { + $_compile = false; + } + + if($_compile) { + // compile config file + if(!is_object($smarty->_conf_obj)) { + require_once SMARTY_DIR . $smarty->config_class . '.class.php'; + $smarty->_conf_obj = new $smarty->config_class(); + $smarty->_conf_obj->overwrite = $smarty->config_overwrite; + $smarty->_conf_obj->booleanize = $smarty->config_booleanize; + $smarty->_conf_obj->read_hidden = $smarty->config_read_hidden; + $smarty->_conf_obj->fix_newlines = $smarty->config_fix_newlines; + } + + $_params = array('resource_name' => $_file, + 'resource_base_path' => $smarty->config_dir, + $_params['get_source'] = true); + if (!$smarty->_fetch_resource_info($_params)) { + return; + } + $smarty->_conf_obj->set_file_contents($_file, $_params['source_content']); + $_config_vars = array_merge($smarty->_conf_obj->get($_file), + $smarty->_conf_obj->get($_file, $_section)); + if(function_exists('var_export')) { + $_output = ''; + } else { + $_output = ''\\\'', '\\'=>'\\\\')) . '\'); ?>'; + } + $_params = (array('compile_path' => $_compile_file, 'compiled_content' => $_output, 'resource_timestamp' => $_params['resource_timestamp'])); + require_once(SMARTY_CORE_DIR . 'core.write_compiled_resource.php'); + smarty_core_write_compiled_resource($_params, $smarty); + } else { + include($_compile_file); + } + + if ($smarty->caching) { + $smarty->_cache_info['config'][$_file] = true; + } + + $smarty->_config[0]['vars'] = @array_merge($smarty->_config[0]['vars'], $_config_vars); + $smarty->_config[0]['files'][$_file] = true; + + if ($_scope == 'parent') { + $smarty->_config[1]['vars'] = @array_merge($smarty->_config[1]['vars'], $_config_vars); + $smarty->_config[1]['files'][$_file] = true; + } else if ($_scope == 'global') { + for ($i = 1, $for_max = count($smarty->_config); $i < $for_max; $i++) { + $smarty->_config[$i]['vars'] = @array_merge($smarty->_config[$i]['vars'], $_config_vars); + $smarty->_config[$i]['files'][$_file] = true; + } + } + + if ($smarty->debugging) { + $_params = array(); + require_once(SMARTY_CORE_DIR . 'core.get_microtime.php'); + $smarty->_smarty_debug_info[] = array('type' => 'config', + 'filename' => $_file.' ['.$_section.'] '.$_scope, + 'depth' => $smarty->_inclusion_depth, + 'exec_time' => smarty_core_get_microtime($_params, $smarty) - $_debug_start_time); + } + +} + +/* vim: set expandtab: */ + +?> diff --git a/bundled-libs/Smarty/libs/plugins/function.counter.php b/bundled-libs/Smarty/libs/plugins/function.counter.php new file mode 100644 index 00000000..1f26db5f --- /dev/null +++ b/bundled-libs/Smarty/libs/plugins/function.counter.php @@ -0,0 +1,80 @@ + + * Name: counter
+ * Purpose: print out a counter value + * @author Monte Ohrt + * @link http://smarty.php.net/manual/en/language.function.counter.php {counter} + * (Smarty online manual) + * @param array parameters + * @param Smarty + * @return string|null + */ +function smarty_function_counter($params, &$smarty) +{ + static $counters = array(); + + $name = (isset($params['name'])) ? $params['name'] : 'default'; + if (!isset($counters[$name])) { + $counters[$name] = array( + 'start'=>1, + 'skip'=>1, + 'direction'=>'up', + 'count'=>1 + ); + } + $counter =& $counters[$name]; + + if (isset($params['start'])) { + $counter['start'] = $counter['count'] = (int)$params['start']; + } + + if (!empty($params['assign'])) { + $counter['assign'] = $params['assign']; + } + + if (isset($counter['assign'])) { + $smarty->assign($counter['assign'], $counter['count']); + } + + if (isset($params['print'])) { + $print = (bool)$params['print']; + } else { + $print = empty($counter['assign']); + } + + if ($print) { + $retval = $counter['count']; + } else { + $retval = null; + } + + if (isset($params['skip'])) { + $counter['skip'] = $params['skip']; + } + + if (isset($params['direction'])) { + $counter['direction'] = $params['direction']; + } + + if ($counter['direction'] == "down") + $counter['count'] -= $counter['skip']; + else + $counter['count'] += $counter['skip']; + + return $retval; + +} + +/* vim: set expandtab: */ + +?> diff --git a/bundled-libs/Smarty/libs/plugins/function.cycle.php b/bundled-libs/Smarty/libs/plugins/function.cycle.php new file mode 100644 index 00000000..fe78bb87 --- /dev/null +++ b/bundled-libs/Smarty/libs/plugins/function.cycle.php @@ -0,0 +1,102 @@ + + * Name: cycle
+ * Date: May 3, 2002
+ * Purpose: cycle through given values
+ * Input: + * - name = name of cycle (optional) + * - values = comma separated list of values to cycle, + * or an array of values to cycle + * (this can be left out for subsequent calls) + * - reset = boolean - resets given var to true + * - print = boolean - print var or not. default is true + * - advance = boolean - whether or not to advance the cycle + * - delimiter = the value delimiter, default is "," + * - assign = boolean, assigns to template var instead of + * printed. + * + * Examples:
+ *
+ * {cycle values="#eeeeee,#d0d0d0d"}
+ * {cycle name=row values="one,two,three" reset=true}
+ * {cycle name=row}
+ * 
+ * @link http://smarty.php.net/manual/en/language.function.cycle.php {cycle} + * (Smarty online manual) + * @author Monte Ohrt + * @author credit to Mark Priatel + * @author credit to Gerard + * @author credit to Jason Sweat + * @version 1.3 + * @param array + * @param Smarty + * @return string|null + */ +function smarty_function_cycle($params, &$smarty) +{ + static $cycle_vars; + + $name = (empty($params['name'])) ? 'default' : $params['name']; + $print = (isset($params['print'])) ? (bool)$params['print'] : true; + $advance = (isset($params['advance'])) ? (bool)$params['advance'] : true; + $reset = (isset($params['reset'])) ? (bool)$params['reset'] : false; + + if (!in_array('values', array_keys($params))) { + if(!isset($cycle_vars[$name]['values'])) { + $smarty->trigger_error("cycle: missing 'values' parameter"); + return; + } + } else { + if(isset($cycle_vars[$name]['values']) + && $cycle_vars[$name]['values'] != $params['values'] ) { + $cycle_vars[$name]['index'] = 0; + } + $cycle_vars[$name]['values'] = $params['values']; + } + + $cycle_vars[$name]['delimiter'] = (isset($params['delimiter'])) ? $params['delimiter'] : ','; + + if(is_array($cycle_vars[$name]['values'])) { + $cycle_array = $cycle_vars[$name]['values']; + } else { + $cycle_array = explode($cycle_vars[$name]['delimiter'],$cycle_vars[$name]['values']); + } + + if(!isset($cycle_vars[$name]['index']) || $reset ) { + $cycle_vars[$name]['index'] = 0; + } + + if (isset($params['assign'])) { + $print = false; + $smarty->assign($params['assign'], $cycle_array[$cycle_vars[$name]['index']]); + } + + if($print) { + $retval = $cycle_array[$cycle_vars[$name]['index']]; + } else { + $retval = null; + } + + if($advance) { + if ( $cycle_vars[$name]['index'] >= count($cycle_array) -1 ) { + $cycle_vars[$name]['index'] = 0; + } else { + $cycle_vars[$name]['index']++; + } + } + + return $retval; +} + +/* vim: set expandtab: */ + +?> diff --git a/bundled-libs/Smarty/libs/plugins/function.debug.php b/bundled-libs/Smarty/libs/plugins/function.debug.php new file mode 100644 index 00000000..43452307 --- /dev/null +++ b/bundled-libs/Smarty/libs/plugins/function.debug.php @@ -0,0 +1,35 @@ + + * Name: debug
+ * Date: July 1, 2002
+ * Purpose: popup debug window + * @link http://smarty.php.net/manual/en/language.function.debug.php {debug} + * (Smarty online manual) + * @author Monte Ohrt + * @version 1.0 + * @param array + * @param Smarty + * @return string output from {@link Smarty::_generate_debug_output()} + */ +function smarty_function_debug($params, &$smarty) +{ + if (isset($params['output'])) { + $smarty->assign('_smarty_debug_output', $params['output']); + } + require_once(SMARTY_CORE_DIR . 'core.display_debug_console.php'); + return smarty_core_display_debug_console(null, $smarty); +} + +/* vim: set expandtab: */ + +?> diff --git a/bundled-libs/Smarty/libs/plugins/function.eval.php b/bundled-libs/Smarty/libs/plugins/function.eval.php new file mode 100644 index 00000000..ff0472de --- /dev/null +++ b/bundled-libs/Smarty/libs/plugins/function.eval.php @@ -0,0 +1,49 @@ + + * Name: eval
+ * Purpose: evaluate a template variable as a template
+ * @link http://smarty.php.net/manual/en/language.function.eval.php {eval} + * (Smarty online manual) + * @author Monte Ohrt + * @param array + * @param Smarty + */ +function smarty_function_eval($params, &$smarty) +{ + + if (!isset($params['var'])) { + $smarty->trigger_error("eval: missing 'var' parameter"); + return; + } + + if($params['var'] == '') { + return; + } + + $smarty->_compile_source('evaluated template', $params['var'], $_var_compiled); + + ob_start(); + $smarty->_eval('?>' . $_var_compiled); + $_contents = ob_get_contents(); + ob_end_clean(); + + if (!empty($params['assign'])) { + $smarty->assign($params['assign'], $_contents); + } else { + return $_contents; + } +} + +/* vim: set expandtab: */ + +?> diff --git a/bundled-libs/Smarty/libs/plugins/function.fetch.php b/bundled-libs/Smarty/libs/plugins/function.fetch.php new file mode 100644 index 00000000..81b1bfc6 --- /dev/null +++ b/bundled-libs/Smarty/libs/plugins/function.fetch.php @@ -0,0 +1,221 @@ + + * Name: fetch
+ * Purpose: fetch file, web or ftp data and display results + * @link http://smarty.php.net/manual/en/language.function.fetch.php {fetch} + * (Smarty online manual) + * @author Monte Ohrt + * @param array + * @param Smarty + * @return string|null if the assign parameter is passed, Smarty assigns the + * result to a template variable + */ +function smarty_function_fetch($params, &$smarty) +{ + if (empty($params['file'])) { + $smarty->_trigger_fatal_error("[plugin] parameter 'file' cannot be empty"); + return; + } + + $content = ''; + if ($smarty->security && !preg_match('!^(http|ftp)://!i', $params['file'])) { + $_params = array('resource_type' => 'file', 'resource_name' => $params['file']); + require_once(SMARTY_CORE_DIR . 'core.is_secure.php'); + if(!smarty_core_is_secure($_params, $smarty)) { + $smarty->_trigger_fatal_error('[plugin] (secure mode) fetch \'' . $params['file'] . '\' is not allowed'); + return; + } + + // fetch the file + if($fp = @fopen($params['file'],'r')) { + while(!feof($fp)) { + $content .= fgets ($fp,4096); + } + fclose($fp); + } else { + $smarty->_trigger_fatal_error('[plugin] fetch cannot read file \'' . $params['file'] . '\''); + return; + } + } else { + // not a local file + if(preg_match('!^http://!i',$params['file'])) { + // http fetch + if($uri_parts = parse_url($params['file'])) { + // set defaults + $host = $server_name = $uri_parts['host']; + $timeout = 30; + $accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*"; + $agent = "Smarty Template Engine ".$smarty->_version; + $referer = ""; + $uri = !empty($uri_parts['path']) ? $uri_parts['path'] : '/'; + $uri .= !empty($uri_parts['query']) ? '?' . $uri_parts['query'] : ''; + $_is_proxy = false; + if(empty($uri_parts['port'])) { + $port = 80; + } else { + $port = $uri_parts['port']; + } + if(!empty($uri_parts['user'])) { + $user = $uri_parts['user']; + } + if(!empty($uri_parts['pass'])) { + $pass = $uri_parts['pass']; + } + // loop through parameters, setup headers + foreach($params as $param_key => $param_value) { + switch($param_key) { + case "file": + case "assign": + case "assign_headers": + break; + case "user": + if(!empty($param_value)) { + $user = $param_value; + } + break; + case "pass": + if(!empty($param_value)) { + $pass = $param_value; + } + break; + case "accept": + if(!empty($param_value)) { + $accept = $param_value; + } + break; + case "header": + if(!empty($param_value)) { + if(!preg_match('![\w\d-]+: .+!',$param_value)) { + $smarty->_trigger_fatal_error("[plugin] invalid header format '".$param_value."'"); + return; + } else { + $extra_headers[] = $param_value; + } + } + break; + case "proxy_host": + if(!empty($param_value)) { + $proxy_host = $param_value; + } + break; + case "proxy_port": + if(!preg_match('!\D!', $param_value)) { + $proxy_port = (int) $param_value; + } else { + $smarty->_trigger_fatal_error("[plugin] invalid value for attribute '".$param_key."'"); + return; + } + break; + case "agent": + if(!empty($param_value)) { + $agent = $param_value; + } + break; + case "referer": + if(!empty($param_value)) { + $referer = $param_value; + } + break; + case "timeout": + if(!preg_match('!\D!', $param_value)) { + $timeout = (int) $param_value; + } else { + $smarty->_trigger_fatal_error("[plugin] invalid value for attribute '".$param_key."'"); + return; + } + break; + default: + $smarty->_trigger_fatal_error("[plugin] unrecognized attribute '".$param_key."'"); + return; + } + } + if(!empty($proxy_host) && !empty($proxy_port)) { + $_is_proxy = true; + $fp = fsockopen($proxy_host,$proxy_port,$errno,$errstr,$timeout); + } else { + $fp = fsockopen($server_name,$port,$errno,$errstr,$timeout); + } + + if(!$fp) { + $smarty->_trigger_fatal_error("[plugin] unable to fetch: $errstr ($errno)"); + return; + } else { + if($_is_proxy) { + fputs($fp, 'GET ' . $params['file'] . " HTTP/1.0\r\n"); + } else { + fputs($fp, "GET $uri HTTP/1.0\r\n"); + } + if(!empty($host)) { + fputs($fp, "Host: $host\r\n"); + } + if(!empty($accept)) { + fputs($fp, "Accept: $accept\r\n"); + } + if(!empty($agent)) { + fputs($fp, "User-Agent: $agent\r\n"); + } + if(!empty($referer)) { + fputs($fp, "Referer: $referer\r\n"); + } + if(isset($extra_headers) && is_array($extra_headers)) { + foreach($extra_headers as $curr_header) { + fputs($fp, $curr_header."\r\n"); + } + } + if(!empty($user) && !empty($pass)) { + fputs($fp, "Authorization: BASIC ".base64_encode("$user:$pass")."\r\n"); + } + + fputs($fp, "\r\n"); + while(!feof($fp)) { + $content .= fgets($fp,4096); + } + fclose($fp); + $csplit = split("\r\n\r\n",$content,2); + + $content = $csplit[1]; + + if(!empty($params['assign_headers'])) { + $smarty->assign($params['assign_headers'],split("\r\n",$csplit[0])); + } + } + } else { + $smarty->_trigger_fatal_error("[plugin] unable to parse URL, check syntax"); + return; + } + } else { + // ftp fetch + if($fp = @fopen($params['file'],'r')) { + while(!feof($fp)) { + $content .= fgets ($fp,4096); + } + fclose($fp); + } else { + $smarty->_trigger_fatal_error('[plugin] fetch cannot read file \'' . $params['file'] .'\''); + return; + } + } + + } + + + if (!empty($params['assign'])) { + $smarty->assign($params['assign'],$content); + } else { + return $content; + } +} + +/* vim: set expandtab: */ + +?> diff --git a/bundled-libs/Smarty/libs/plugins/function.html_checkboxes.php b/bundled-libs/Smarty/libs/plugins/function.html_checkboxes.php new file mode 100644 index 00000000..ed8ad7f3 --- /dev/null +++ b/bundled-libs/Smarty/libs/plugins/function.html_checkboxes.php @@ -0,0 +1,143 @@ + + * Type: function
+ * Name: html_checkboxes
+ * Date: 24.Feb.2003
+ * Purpose: Prints out a list of checkbox input types
+ * Input:
+ * - name (optional) - string default "checkbox" + * - values (required) - array + * - options (optional) - associative array + * - checked (optional) - array default not set + * - separator (optional) - ie
or   + * - output (optional) - the output next to each checkbox + * - assign (optional) - assign the output as an array to this variable + * Examples: + *
+ * {html_checkboxes values=$ids output=$names}
+ * {html_checkboxes values=$ids name='box' separator='
' output=$names} + * {html_checkboxes values=$ids checked=$checked separator='
' output=$names} + *
+ * @link http://smarty.php.net/manual/en/language.function.html.checkboxes.php {html_checkboxes} + * (Smarty online manual) + * @author Christopher Kvarme + * @author credits to Monte Ohrt + * @version 1.0 + * @param array + * @param Smarty + * @return string + * @uses smarty_function_escape_special_chars() + */ +function smarty_function_html_checkboxes($params, &$smarty) +{ + require_once $smarty->_get_plugin_filepath('shared','escape_special_chars'); + + $name = 'checkbox'; + $values = null; + $options = null; + $selected = null; + $separator = ''; + $labels = true; + $output = null; + + $extra = ''; + + foreach($params as $_key => $_val) { + switch($_key) { + case 'name': + case 'separator': + $$_key = $_val; + break; + + case 'labels': + $$_key = (bool)$_val; + break; + + case 'options': + $$_key = (array)$_val; + break; + + case 'values': + case 'output': + $$_key = array_values((array)$_val); + break; + + case 'checked': + case 'selected': + $selected = array_map('strval', array_values((array)$_val)); + break; + + case 'checkboxes': + $smarty->trigger_error('html_checkboxes: the use of the "checkboxes" attribute is deprecated, use "options" instead', E_USER_WARNING); + $options = (array)$_val; + break; + + case 'assign': + break; + + default: + if(!is_array($_val)) { + $extra .= ' '.$_key.'="'.smarty_function_escape_special_chars($_val).'"'; + } else { + $smarty->trigger_error("html_checkboxes: extra attribute '$_key' cannot be an array", E_USER_NOTICE); + } + break; + } + } + + if (!isset($options) && !isset($values)) + return ''; /* raise error here? */ + + settype($selected, 'array'); + $_html_result = array(); + + if (isset($options)) { + + foreach ($options as $_key=>$_val) + $_html_result[] = smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels); + + + } else { + foreach ($values as $_i=>$_key) { + $_val = isset($output[$_i]) ? $output[$_i] : ''; + $_html_result[] = smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels); + } + + } + + if(!empty($params['assign'])) { + $smarty->assign($params['assign'], $_html_result); + } else { + return implode("\n",$_html_result); + } + +} + +function smarty_function_html_checkboxes_output($name, $value, $output, $selected, $extra, $separator, $labels) { + $_output = ''; + if ($labels) $_output .= ''; + $_output .= $separator; + + return $_output; +} + +?> diff --git a/bundled-libs/Smarty/libs/plugins/function.html_image.php b/bundled-libs/Smarty/libs/plugins/function.html_image.php new file mode 100644 index 00000000..9abae72e --- /dev/null +++ b/bundled-libs/Smarty/libs/plugins/function.html_image.php @@ -0,0 +1,142 @@ + + * Name: html_image
+ * Date: Feb 24, 2003
+ * Purpose: format HTML tags for the image
+ * Input:
+ * - file = file (and path) of image (required) + * - height = image height (optional, default actual height) + * - width = image width (optional, default actual width) + * - basedir = base directory for absolute paths, default + * is environment variable DOCUMENT_ROOT + * - path_prefix = prefix for path output (optional, default empty) + * + * Examples: {html_image file="/images/masthead.gif"} + * Output: + * @link http://smarty.php.net/manual/en/language.function.html.image.php {html_image} + * (Smarty online manual) + * @author Monte Ohrt + * @author credits to Duda - wrote first image function + * in repository, helped with lots of functionality + * @version 1.0 + * @param array + * @param Smarty + * @return string + * @uses smarty_function_escape_special_chars() + */ +function smarty_function_html_image($params, &$smarty) +{ + require_once $smarty->_get_plugin_filepath('shared','escape_special_chars'); + + $alt = ''; + $file = ''; + $height = ''; + $width = ''; + $extra = ''; + $prefix = ''; + $suffix = ''; + $path_prefix = ''; + $server_vars = ($smarty->request_use_auto_globals) ? $_SERVER : $GLOBALS['HTTP_SERVER_VARS']; + $basedir = isset($server_vars['DOCUMENT_ROOT']) ? $server_vars['DOCUMENT_ROOT'] : ''; + foreach($params as $_key => $_val) { + switch($_key) { + case 'file': + case 'height': + case 'width': + case 'dpi': + case 'path_prefix': + case 'basedir': + $$_key = $_val; + break; + + case 'alt': + if(!is_array($_val)) { + $$_key = smarty_function_escape_special_chars($_val); + } else { + $smarty->trigger_error("html_image: extra attribute '$_key' cannot be an array", E_USER_NOTICE); + } + break; + + case 'link': + case 'href': + $prefix = ''; + $suffix = ''; + break; + + default: + if(!is_array($_val)) { + $extra .= ' '.$_key.'="'.smarty_function_escape_special_chars($_val).'"'; + } else { + $smarty->trigger_error("html_image: extra attribute '$_key' cannot be an array", E_USER_NOTICE); + } + break; + } + } + + if (empty($file)) { + $smarty->trigger_error("html_image: missing 'file' parameter", E_USER_NOTICE); + return; + } + + if (substr($file,0,1) == '/') { + $_image_path = $basedir . $file; + } else { + $_image_path = $file; + } + + if(!isset($params['width']) || !isset($params['height'])) { + if(!$_image_data = @getimagesize($_image_path)) { + if(!file_exists($_image_path)) { + $smarty->trigger_error("html_image: unable to find '$_image_path'", E_USER_NOTICE); + return; + } else if(!is_readable($_image_path)) { + $smarty->trigger_error("html_image: unable to read '$_image_path'", E_USER_NOTICE); + return; + } else { + $smarty->trigger_error("html_image: '$_image_path' is not a valid image file", E_USER_NOTICE); + return; + } + } + if ($smarty->security && + ($_params = array('resource_type' => 'file', 'resource_name' => $_image_path)) && + (require_once(SMARTY_CORE_DIR . 'core.is_secure.php')) && + (!smarty_core_is_secure($_params, $smarty)) ) { + $smarty->trigger_error("html_image: (secure) '$_image_path' not in secure directory", E_USER_NOTICE); + } + + if(!isset($params['width'])) { + $width = $_image_data[0]; + } + if(!isset($params['height'])) { + $height = $_image_data[1]; + } + + } + + if(isset($params['dpi'])) { + if(strstr($server_vars['HTTP_USER_AGENT'], 'Mac')) { + $dpi_default = 72; + } else { + $dpi_default = 96; + } + $_resize = $dpi_default/$params['dpi']; + $width = round($width * $_resize); + $height = round($height * $_resize); + } + + return $prefix . ''.$alt.'' . $suffix; +} + +/* vim: set expandtab: */ + +?> diff --git a/bundled-libs/Smarty/libs/plugins/function.html_options.php b/bundled-libs/Smarty/libs/plugins/function.html_options.php new file mode 100644 index 00000000..cebadde4 --- /dev/null +++ b/bundled-libs/Smarty/libs/plugins/function.html_options.php @@ -0,0 +1,122 @@ + + * Name: html_options
+ * Input:
+ * - name (optional) - string default "select" + * - values (required if no options supplied) - array + * - options (required if no values supplied) - associative array + * - selected (optional) - string default not set + * - output (required if not options supplied) - array + * Purpose: Prints the list of