From 974c0fb92fbfdd763dab8139a01df0481d7e994c Mon Sep 17 00:00:00 2001 From: Clemens Schwaighofer Date: Wed, 19 Jan 2022 15:57:06 +0900 Subject: [PATCH] Remove Smarty 4.0.0 so we can test block/etc implementation first before we deploy it --- www/admin/class_test.smarty4.php | 107 + www/includes/templates/admin/main_body4.tpl | 156 + www/includes/templates/admin/smarty_test4.tpl | 37 + www/lib/CoreLibs/Template/SmartyExtend4.php | 533 +++ www/lib/smarty-4.0.0/.github/workflows/ci.yml | 73 - www/lib/smarty-4.0.0/CHANGELOG.md | 3496 ----------------- www/lib/smarty-4.0.0/LICENSE | 179 - www/lib/smarty-4.0.0/README.md | 28 - www/lib/smarty-4.0.0/SECURITY.md | 19 - www/lib/smarty-4.0.0/composer.json | 49 - www/lib/smarty-4.0.0/demo/configs/test.conf | 5 - www/lib/smarty-4.0.0/demo/index.php | 35 - .../demo/plugins/cacheresource.apc.php | 85 - .../demo/plugins/cacheresource.memcache.php | 99 - .../demo/plugins/cacheresource.mysql.php | 183 - .../demo/plugins/cacheresource.pdo.php | 346 -- .../demo/plugins/cacheresource.pdo_gzip.php | 42 - .../demo/plugins/resource.extendsall.php | 62 - .../demo/plugins/resource.mysql.php | 101 - .../demo/plugins/resource.mysqls.php | 77 - .../smarty-4.0.0/demo/templates/footer.tpl | 2 - .../smarty-4.0.0/demo/templates/header.tpl | 5 - www/lib/smarty-4.0.0/demo/templates/index.tpl | 87 - .../smarty_internal_configfilelexer.plex | 318 -- .../lexer/smarty_internal_configfileparser.y | 346 -- .../lexer/smarty_internal_templatelexer.plex | 688 ---- .../lexer/smarty_internal_templateparser.y | 1266 ------ www/lib/smarty-4.0.0/libs/Autoloader.php | 106 - www/lib/smarty-4.0.0/libs/Smarty.class.php | 1397 ------- www/lib/smarty-4.0.0/libs/bootstrap.php | 16 - www/lib/smarty-4.0.0/libs/debug.tpl | 160 - www/lib/smarty-4.0.0/libs/plugins/block.t.php | 120 - .../libs/plugins/block.textformat.php | 121 - .../libs/plugins/function.counter.php | 62 - .../libs/plugins/function.cycle.php | 92 - .../libs/plugins/function.fetch.php | 204 - .../libs/plugins/function.html_checkboxes.php | 296 -- .../libs/plugins/function.html_image.php | 158 - .../libs/plugins/function.html_options.php | 237 -- .../libs/plugins/function.html_radios.php | 266 -- .../plugins/function.html_select_date.php | 388 -- .../plugins/function.html_select_time.php | 354 -- .../libs/plugins/function.html_table.php | 164 - .../libs/plugins/function.mailto.php | 137 - .../libs/plugins/function.math.php | 112 - .../libs/plugins/function.popup.php | 119 - .../libs/plugins/function.popup_init.php | 40 - .../libs/plugins/modifier.capitalize.php | 145 - .../libs/plugins/modifier.date_format.php | 85 - .../libs/plugins/modifier.debug_print_var.php | 103 - .../libs/plugins/modifier.escape.php | 257 -- .../libs/plugins/modifier.mb_wordwrap.php | 71 - .../libs/plugins/modifier.regex_replace.php | 55 - .../libs/plugins/modifier.replace.php | 37 - .../libs/plugins/modifier.spacify.php | 26 - .../libs/plugins/modifier.truncate.php | 62 - .../libs/plugins/modifiercompiler.cat.php | 28 - .../modifiercompiler.count_characters.php | 32 - .../modifiercompiler.count_paragraphs.php | 26 - .../modifiercompiler.count_sentences.php | 26 - .../plugins/modifiercompiler.count_words.php | 31 - .../libs/plugins/modifiercompiler.default.php | 32 - .../libs/plugins/modifiercompiler.escape.php | 110 - .../plugins/modifiercompiler.from_charset.php | 30 - .../libs/plugins/modifiercompiler.indent.php | 30 - .../libs/plugins/modifiercompiler.lower.php | 29 - .../libs/plugins/modifiercompiler.noprint.php | 20 - .../modifiercompiler.string_format.php | 24 - .../libs/plugins/modifiercompiler.strip.php | 30 - .../plugins/modifiercompiler.strip_tags.php | 28 - .../plugins/modifiercompiler.to_charset.php | 30 - .../plugins/modifiercompiler.unescape.php | 44 - .../libs/plugins/modifiercompiler.upper.php | 28 - .../plugins/modifiercompiler.wordwrap.php | 39 - .../plugins/outputfilter.trimwhitespace.php | 89 - .../plugins/shared.escape_special_chars.php | 26 - .../plugins/shared.literal_compiler_param.php | 35 - .../libs/plugins/shared.make_timestamp.php | 49 - .../libs/plugins/shared.mb_str_replace.php | 53 - .../libs/plugins/shared.mb_unicode.php | 51 - .../variablefilter.htmlspecialchars.php | 19 - .../libs/sysplugins/smarty_cacheresource.php | 219 -- .../smarty_cacheresource_custom.php | 297 -- .../smarty_cacheresource_keyvaluestore.php | 538 --- .../libs/sysplugins/smarty_data.php | 68 - .../libs/sysplugins/smarty_internal_block.php | 90 - .../smarty_internal_cacheresource_file.php | 235 -- .../smarty_internal_compile_append.php | 52 - .../smarty_internal_compile_assign.php | 96 - .../smarty_internal_compile_block.php | 189 - .../smarty_internal_compile_block_child.php | 24 - .../smarty_internal_compile_block_parent.php | 31 - .../smarty_internal_compile_break.php | 117 - .../smarty_internal_compile_call.php | 89 - .../smarty_internal_compile_capture.php | 105 - .../smarty_internal_compile_child.php | 79 - .../smarty_internal_compile_config_load.php | 96 - .../smarty_internal_compile_continue.php | 25 - .../smarty_internal_compile_debug.php | 40 - .../smarty_internal_compile_eval.php | 70 - .../smarty_internal_compile_extends.php | 158 - .../smarty_internal_compile_for.php | 164 - .../smarty_internal_compile_foreach.php | 343 -- .../smarty_internal_compile_function.php | 236 -- .../sysplugins/smarty_internal_compile_if.php | 207 - .../smarty_internal_compile_include.php | 347 -- .../smarty_internal_compile_insert.php | 157 - .../smarty_internal_compile_ldelim.php | 37 - .../smarty_internal_compile_make_nocache.php | 62 - .../smarty_internal_compile_nocache.php | 73 - .../smarty_internal_compile_parent.php | 31 - ..._internal_compile_private_block_plugin.php | 124 - ...nternal_compile_private_foreachsection.php | 228 -- ...ternal_compile_private_function_plugin.php | 78 - ...arty_internal_compile_private_modifier.php | 158 - ..._compile_private_object_block_function.php | 42 - ...ternal_compile_private_object_function.php | 85 - ...ernal_compile_private_print_expression.php | 161 - ...ernal_compile_private_registered_block.php | 72 - ...al_compile_private_registered_function.php | 91 - ...ernal_compile_private_special_variable.php | 130 - .../smarty_internal_compile_rdelim.php | 34 - .../smarty_internal_compile_section.php | 462 --- .../smarty_internal_compile_setfilter.php | 68 - ...ty_internal_compile_shared_inheritance.php | 49 - .../smarty_internal_compile_while.php | 100 - .../smarty_internal_compilebase.php | 203 - .../smarty_internal_config_file_compiler.php | 209 - .../smarty_internal_configfilelexer.php | 739 ---- .../smarty_internal_configfileparser.php | 1046 ----- .../libs/sysplugins/smarty_internal_data.php | 272 -- .../libs/sysplugins/smarty_internal_debug.php | 425 -- .../smarty_internal_errorhandler.php | 84 - .../smarty_internal_extension_handler.php | 197 - ...rty_internal_method_addautoloadfilters.php | 53 - ...ty_internal_method_adddefaultmodifiers.php | 42 - .../smarty_internal_method_append.php | 74 - .../smarty_internal_method_appendbyref.php | 49 - .../smarty_internal_method_assignbyref.php | 36 - .../smarty_internal_method_assignglobal.php | 44 - .../smarty_internal_method_clearallassign.php | 36 - .../smarty_internal_method_clearallcache.php | 41 - .../smarty_internal_method_clearassign.php | 43 - .../smarty_internal_method_clearcache.php | 50 - ..._internal_method_clearcompiledtemplate.php | 131 - .../smarty_internal_method_clearconfig.php | 41 - ...marty_internal_method_compileallconfig.php | 36 - ...ty_internal_method_compilealltemplates.php | 130 - .../smarty_internal_method_configload.php | 182 - .../smarty_internal_method_createdata.php | 44 - ...rty_internal_method_getautoloadfilters.php | 37 - ...arty_internal_method_getconfigvariable.php | 34 - .../smarty_internal_method_getconfigvars.php | 58 - ...marty_internal_method_getdebugtemplate.php | 35 - ...ty_internal_method_getdefaultmodifiers.php | 35 - .../smarty_internal_method_getglobal.php | 47 - ...ty_internal_method_getregisteredobject.php | 44 - ...arty_internal_method_getstreamvariable.php | 50 - .../smarty_internal_method_gettags.php | 63 - ...smarty_internal_method_gettemplatevars.php | 119 - .../smarty_internal_method_literals.php | 100 - .../smarty_internal_method_loadfilter.php | 77 - .../smarty_internal_method_loadplugin.php | 111 - .../smarty_internal_method_mustcompile.php | 50 - ..._internal_method_registercacheresource.php | 42 - .../smarty_internal_method_registerclass.php | 46 - ...al_method_registerdefaultconfighandler.php | 42 - ...al_method_registerdefaultpluginhandler.php | 43 - ..._method_registerdefaulttemplatehandler.php | 88 - .../smarty_internal_method_registerfilter.php | 87 - .../smarty_internal_method_registerobject.php | 84 - .../smarty_internal_method_registerplugin.php | 58 - ...marty_internal_method_registerresource.php | 39 - ...rty_internal_method_setautoloadfilters.php | 72 - ...marty_internal_method_setdebugtemplate.php | 41 - ...ty_internal_method_setdefaultmodifiers.php | 38 - .../smarty_internal_method_unloadfilter.php | 43 - ...nternal_method_unregistercacheresource.php | 40 - ...marty_internal_method_unregisterfilter.php | 43 - ...marty_internal_method_unregisterobject.php | 40 - ...marty_internal_method_unregisterplugin.php | 41 - ...rty_internal_method_unregisterresource.php | 40 - .../smarty_internal_nocache_insert.php | 51 - .../sysplugins/smarty_internal_parsetree.php | 50 - .../smarty_internal_parsetree_code.php | 42 - .../smarty_internal_parsetree_dq.php | 95 - .../smarty_internal_parsetree_dqcontent.php | 42 - .../smarty_internal_parsetree_tag.php | 67 - .../smarty_internal_parsetree_template.php | 169 - .../smarty_internal_parsetree_text.php | 57 - .../smarty_internal_resource_eval.php | 94 - .../smarty_internal_resource_extends.php | 126 - .../smarty_internal_resource_file.php | 180 - .../smarty_internal_resource_php.php | 116 - .../smarty_internal_resource_stream.php | 78 - .../smarty_internal_resource_string.php | 108 - .../smarty_internal_runtime_cachemodify.php | 68 - ...rty_internal_runtime_cacheresourcefile.php | 139 - .../smarty_internal_runtime_capture.php | 174 - .../smarty_internal_runtime_codeframe.php | 100 - .../smarty_internal_runtime_filterhandler.php | 69 - .../smarty_internal_runtime_foreach.php | 162 - ...smarty_internal_runtime_getincludepath.php | 181 - .../smarty_internal_runtime_inheritance.php | 251 -- .../smarty_internal_runtime_make_nocache.php | 54 - .../smarty_internal_runtime_tplfunction.php | 177 - .../smarty_internal_runtime_updatecache.php | 183 - .../smarty_internal_runtime_updatescope.php | 115 - .../smarty_internal_runtime_writefile.php | 100 - ...smarty_internal_smartytemplatecompiler.php | 184 - .../sysplugins/smarty_internal_template.php | 740 ---- .../smarty_internal_templatebase.php | 401 -- .../smarty_internal_templatecompilerbase.php | 1744 -------- .../smarty_internal_templatelexer.php | 1095 ------ .../smarty_internal_templateparser.php | 2923 -------------- .../smarty_internal_testinstall.php | 605 --- .../sysplugins/smarty_internal_undefined.php | 67 - .../libs/sysplugins/smarty_resource.php | 260 -- .../sysplugins/smarty_resource_custom.php | 93 - .../sysplugins/smarty_resource_recompiled.php | 94 - .../sysplugins/smarty_resource_uncompiled.php | 49 - .../libs/sysplugins/smarty_security.php | 708 ---- .../sysplugins/smarty_template_cached.php | 257 -- .../sysplugins/smarty_template_compiled.php | 257 -- .../sysplugins/smarty_template_config.php | 100 - .../smarty_template_resource_base.php | 152 - .../sysplugins/smarty_template_source.php | 213 - .../sysplugins/smarty_undefined_variable.php | 33 - .../libs/sysplugins/smarty_variable.php | 47 - .../sysplugins/smartycompilerexception.php | 45 - .../libs/sysplugins/smartyexception.php | 19 - www/vendor/composer/autoload_classmap.php | 1 + www/vendor/composer/autoload_static.php | 1 + 233 files changed, 835 insertions(+), 39205 deletions(-) create mode 100644 www/admin/class_test.smarty4.php create mode 100644 www/includes/templates/admin/main_body4.tpl create mode 100755 www/includes/templates/admin/smarty_test4.tpl create mode 100644 www/lib/CoreLibs/Template/SmartyExtend4.php delete mode 100644 www/lib/smarty-4.0.0/.github/workflows/ci.yml delete mode 100644 www/lib/smarty-4.0.0/CHANGELOG.md delete mode 100644 www/lib/smarty-4.0.0/LICENSE delete mode 100644 www/lib/smarty-4.0.0/README.md delete mode 100644 www/lib/smarty-4.0.0/SECURITY.md delete mode 100644 www/lib/smarty-4.0.0/composer.json delete mode 100644 www/lib/smarty-4.0.0/demo/configs/test.conf delete mode 100644 www/lib/smarty-4.0.0/demo/index.php delete mode 100644 www/lib/smarty-4.0.0/demo/plugins/cacheresource.apc.php delete mode 100644 www/lib/smarty-4.0.0/demo/plugins/cacheresource.memcache.php delete mode 100644 www/lib/smarty-4.0.0/demo/plugins/cacheresource.mysql.php delete mode 100644 www/lib/smarty-4.0.0/demo/plugins/cacheresource.pdo.php delete mode 100644 www/lib/smarty-4.0.0/demo/plugins/cacheresource.pdo_gzip.php delete mode 100644 www/lib/smarty-4.0.0/demo/plugins/resource.extendsall.php delete mode 100644 www/lib/smarty-4.0.0/demo/plugins/resource.mysql.php delete mode 100644 www/lib/smarty-4.0.0/demo/plugins/resource.mysqls.php delete mode 100644 www/lib/smarty-4.0.0/demo/templates/footer.tpl delete mode 100644 www/lib/smarty-4.0.0/demo/templates/header.tpl delete mode 100644 www/lib/smarty-4.0.0/demo/templates/index.tpl delete mode 100644 www/lib/smarty-4.0.0/lexer/smarty_internal_configfilelexer.plex delete mode 100644 www/lib/smarty-4.0.0/lexer/smarty_internal_configfileparser.y delete mode 100644 www/lib/smarty-4.0.0/lexer/smarty_internal_templatelexer.plex delete mode 100644 www/lib/smarty-4.0.0/lexer/smarty_internal_templateparser.y delete mode 100644 www/lib/smarty-4.0.0/libs/Autoloader.php delete mode 100644 www/lib/smarty-4.0.0/libs/Smarty.class.php delete mode 100644 www/lib/smarty-4.0.0/libs/bootstrap.php delete mode 100644 www/lib/smarty-4.0.0/libs/debug.tpl delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/block.t.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/block.textformat.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/function.counter.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/function.cycle.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/function.fetch.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/function.html_checkboxes.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/function.html_image.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/function.html_options.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/function.html_radios.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/function.html_select_date.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/function.html_select_time.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/function.html_table.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/function.mailto.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/function.math.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/function.popup.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/function.popup_init.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/modifier.capitalize.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/modifier.date_format.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/modifier.debug_print_var.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/modifier.escape.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/modifier.mb_wordwrap.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/modifier.regex_replace.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/modifier.replace.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/modifier.spacify.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/modifier.truncate.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/modifiercompiler.cat.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/modifiercompiler.count_characters.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/modifiercompiler.count_paragraphs.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/modifiercompiler.count_sentences.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/modifiercompiler.count_words.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/modifiercompiler.default.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/modifiercompiler.escape.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/modifiercompiler.from_charset.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/modifiercompiler.indent.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/modifiercompiler.lower.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/modifiercompiler.noprint.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/modifiercompiler.string_format.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/modifiercompiler.strip.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/modifiercompiler.strip_tags.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/modifiercompiler.to_charset.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/modifiercompiler.unescape.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/modifiercompiler.upper.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/modifiercompiler.wordwrap.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/outputfilter.trimwhitespace.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/shared.escape_special_chars.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/shared.literal_compiler_param.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/shared.make_timestamp.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/shared.mb_str_replace.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/shared.mb_unicode.php delete mode 100644 www/lib/smarty-4.0.0/libs/plugins/variablefilter.htmlspecialchars.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_cacheresource.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_cacheresource_custom.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_cacheresource_keyvaluestore.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_data.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_block.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_cacheresource_file.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_compile_append.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_compile_assign.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_compile_block.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_compile_block_child.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_compile_block_parent.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_compile_break.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_compile_call.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_compile_capture.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_compile_child.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_compile_config_load.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_compile_continue.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_compile_debug.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_compile_eval.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_compile_extends.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_compile_for.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_compile_foreach.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_compile_function.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_compile_if.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_compile_include.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_compile_insert.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_compile_ldelim.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_compile_make_nocache.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_compile_nocache.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_compile_parent.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_compile_private_block_plugin.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_compile_private_foreachsection.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_compile_private_function_plugin.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_compile_private_modifier.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_compile_private_object_block_function.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_compile_private_object_function.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_compile_private_print_expression.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_compile_private_registered_block.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_compile_private_registered_function.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_compile_private_special_variable.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_compile_rdelim.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_compile_section.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_compile_setfilter.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_compile_shared_inheritance.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_compile_while.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_compilebase.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_config_file_compiler.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_configfilelexer.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_configfileparser.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_data.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_debug.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_errorhandler.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_extension_handler.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_addautoloadfilters.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_adddefaultmodifiers.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_append.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_appendbyref.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_assignbyref.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_assignglobal.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_clearallassign.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_clearallcache.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_clearassign.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_clearcache.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_clearcompiledtemplate.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_clearconfig.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_compileallconfig.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_compilealltemplates.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_configload.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_createdata.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_getautoloadfilters.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_getconfigvariable.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_getconfigvars.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_getdebugtemplate.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_getdefaultmodifiers.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_getglobal.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_getregisteredobject.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_getstreamvariable.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_gettags.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_gettemplatevars.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_literals.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_loadfilter.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_loadplugin.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_mustcompile.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_registercacheresource.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_registerclass.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_registerdefaultconfighandler.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_registerdefaultpluginhandler.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_registerdefaulttemplatehandler.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_registerfilter.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_registerobject.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_registerplugin.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_registerresource.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_setautoloadfilters.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_setdebugtemplate.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_setdefaultmodifiers.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_unloadfilter.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_unregistercacheresource.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_unregisterfilter.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_unregisterobject.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_unregisterplugin.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_method_unregisterresource.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_nocache_insert.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_parsetree.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_parsetree_code.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_parsetree_dq.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_parsetree_dqcontent.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_parsetree_tag.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_parsetree_template.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_parsetree_text.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_resource_eval.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_resource_extends.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_resource_file.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_resource_php.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_resource_stream.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_resource_string.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_runtime_cachemodify.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_runtime_cacheresourcefile.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_runtime_capture.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_runtime_codeframe.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_runtime_filterhandler.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_runtime_foreach.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_runtime_getincludepath.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_runtime_inheritance.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_runtime_make_nocache.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_runtime_tplfunction.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_runtime_updatecache.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_runtime_updatescope.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_runtime_writefile.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_smartytemplatecompiler.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_template.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_templatebase.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_templatecompilerbase.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_templatelexer.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_templateparser.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_testinstall.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_internal_undefined.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_resource.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_resource_custom.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_resource_recompiled.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_resource_uncompiled.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_security.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_template_cached.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_template_compiled.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_template_config.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_template_resource_base.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_template_source.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_undefined_variable.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smarty_variable.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smartycompilerexception.php delete mode 100644 www/lib/smarty-4.0.0/libs/sysplugins/smartyexception.php diff --git a/www/admin/class_test.smarty4.php b/www/admin/class_test.smarty4.php new file mode 100644 index 00000000..d413f5c4 --- /dev/null +++ b/www/admin/class_test.smarty4.php @@ -0,0 +1,107 @@ + BASE . LOG, + 'file_id' => $LOG_FILE_ID, + // add file date + 'print_file_date' => true, + // set debug and print flags + 'debug_all' => $DEBUG_ALL ?? false, + 'echo_all' => $ECHO_ALL ?? false, + 'print_all' => $PRINT_ALL ?? false, +]); +$basic = new CoreLibs\Basic($log); +$smarty = new CoreLibs\Template\SmartyExtend4(); +// for testing with or without CMS +// $cms = new CoreLibs\Admin\Backend(DB_CONFIG); +$l = new CoreLibs\Language\L10n($lang); + +print "TEST CLASS: SMARTY"; +print ""; +print '
Class Test Master
'; + +$smarty->DATA['JS_DEBUG'] = DEBUG; +$smarty->MASTER_TEMPLATE_NAME = 'main_body4.tpl'; +$smarty->TEMPLATE_NAME = 'smarty_test4.tpl'; +$smarty->CSS_SPECIAL_TEMPLATE_NAME = 'smart_test.css'; +$smarty->USE_PROTOTYPE = false; +$smarty->USE_JQUERY = true; +$smarty->JS_DATEPICKR = false; +if ($smarty->USE_PROTOTYPE) { + $smarty->ADMIN_JAVASCRIPT = 'edit.pt.js'; + $smarty->JS_SPECIAL_TEMPLATE_NAME = 'prototype.test.js'; +} elseif ($smarty->USE_JQUERY) { + $smarty->ADMIN_JAVASCRIPT = 'edit.jq.js'; + $smarty->JS_SPECIAL_TEMPLATE_NAME = 'jquery.test.js'; +} +$smarty->PAGE_WIDTH = '100%'; +// require BASE.INCLUDES.'admin_set_paths.php'; +$smarty->setSmartyPaths(); + +// smarty test +$smarty->DATA['SMARTY_TEST'] = 'Test Data'; +$smarty->DATA['TRANSLATE_TEST'] = $l->__('Are we translated?'); +$smarty->DATA['TRANSLATE_TEST_SMARTY'] = $smarty->l10n->__('Are we translated?'); + +// drop down test with optgroups +$options = [ + '' => '選択してください', + '4/25(木)' => [ + '4/25(木) 11:00-11:50' => '4/25(木) 11:00-11:50', + '4/25(木) 12:20-13:00' => '4/25(木) 12:20-13:00' + ], + '4/26(金)' => [ + '4/26(金) 11:00-11:50' => '4/26(金) 11:00-11:50', + '4/26(金) 12:20-13:00' => '4/26(金) 12:20-13:00' + ], + '4/27(土)' => [ + '4/27(土) 11:00-11:50' => '4/27(土) 11:00-11:50', + '4/27(土) 12:20-13:00' => '4/27(土) 12:20-13:00' + ], +]; + +$smarty->DATA['drop_down_test'] = $options; +$smarty->DATA['drop_down_test_selected'] = ''; +$smarty->DATA['loop_start'] = 2; +// require BASE.INCLUDES.'admin_smarty.php'; +$smarty->setSmartyVarsAdmin(); + +// error message +print $log->printErrorMsg(); + +print ""; + +// __END__ diff --git a/www/includes/templates/admin/main_body4.tpl b/www/includes/templates/admin/main_body4.tpl new file mode 100644 index 00000000..25b52eed --- /dev/null +++ b/www/includes/templates/admin/main_body4.tpl @@ -0,0 +1,156 @@ +{* + ******************************************************************** + * AUTHOR: Clemens Schwaighofer + * DATE: 2005/06/23 + * DESCRIPTION: + * edit body part + * HISTORY: + ******************************************************************** +*} + + + + {$HTML_TITLE} + + {if $STYLESHEET} + + {/if} + {if $CSS_INCLUDE} + + {/if} + {if $CSS_SPECIAL_INCLUDE} + + {/if} + + + + {if $USE_JQUERY} + + + {/if} + {if $USE_PROTOTYPE} + + {if $USE_SCRIPTACULOUS} + + {/if} + {/if} + {* for including datepickr or flatpickr *} + {if $JS_DATEPICKR} + + + + {/if} + {if $JS_FLATPICKR} + + + + {/if} + {if $JAVASCRIPT} + + {/if} + {* declare prototype everywhere *} + {if $JS_INCLUDE} + + {/if} + {if $JS_SPECIAL_INCLUDE} + + {/if} + {if $USE_TINY_MCE} + + + + + {/if} + + +{* {popup_init src="`$js`/overlib/overlib.js"} *} +
+ + +
+ {$page_name} +
+
+{* error/warning *} +{if $messages} +
+ {foreach from=$messages item=item key=key} +
{$item.msg}
+ {/foreach} +
+{/if} +{include file="$TEMPLATE_NAME"} + +{* debug info *} +{if $DEBUG} +
+{$Id}
+ {$smarty.now|date_format:"%Y-%m-%d %H:%M:%S"}
+{$debug_error_msg} +
+{/if} + + + diff --git a/www/includes/templates/admin/smarty_test4.tpl b/www/includes/templates/admin/smarty_test4.tpl new file mode 100755 index 00000000..f9300036 --- /dev/null +++ b/www/includes/templates/admin/smarty_test4.tpl @@ -0,0 +1,37 @@ +
+ {$SMARTY_TEST} +
+
+ TRANSLATION CLASS (OUT): {$TRANSLATE_TEST} +
+
+ TRANSLATION CLASS (SMARTY): {$TRANSLATE_TEST_SMARTY} +
+
+ +
+
+ +
+
+
LOOP TEST
+{section name=page_list start=1 loop=$loop_start+1} +
LOOP OUTPUT: {$smarty.section.page_list.index}
+{/section} +
+{* progresss indicator *} +
+{* the action confirm box *} +
+{* The Overlay box *} +
diff --git a/www/lib/CoreLibs/Template/SmartyExtend4.php b/www/lib/CoreLibs/Template/SmartyExtend4.php new file mode 100644 index 00000000..ca587b75 --- /dev/null +++ b/www/lib/CoreLibs/Template/SmartyExtend4.php @@ -0,0 +1,533 @@ + */ + public $HEADER = []; + /** @var array */ + public $DATA = []; + /** @var array */ + public $DEBUG_DATA = []; + /** @var array */ + private $CONTENT_DATA = []; + // control vars + /** @var bool */ + public $USE_PROTOTYPE = USE_PROTOTYPE; + /** @var bool */ + public $USE_JQUERY = USE_JQUERY; + /** @var bool */ + public $USE_SCRIPTACULOUS = USE_SCRIPTACULOUS; + // sub content input vars + /** @var bool */ + public $USE_TINY_MCE = false; + /** @var bool */ + public $JS_DATEPICKR = false; + /** @var bool */ + public $JS_FLATPICKR = false; + /** @var bool */ + public $JS_FILE_UPLOADER = false; + /** @var bool */ + public $DEBUG_TMPL = false; + /** @var bool */ + public $USE_INCLUDE_TEMPLATE = false; + // cache & compile + /** @var string */ + public $CACHE_ID = ''; + /** @var string */ + public $COMPILE_ID = ''; + // template vars + /** @var string */ + public $MASTER_TEMPLATE_NAME; + /** @var string */ + public $PAGE_FILE_NAME; + /** @var string */ + public $CONTENT_INCLUDE; + /** @var string */ + public $FORM_NAME; + /** @var string */ + public $FORM_ACTION; + /** @var string */ + public $L_TITLE; + /** @var string|int */ + public $PAGE_WIDTH; + // smarty include/set var + /** @var string */ + public $TEMPLATE_PATH; + /** @var string */ + public $TEMPLATE_NAME; + /** @var string */ + public $INC_TEMPLATE_NAME; + /** @var string */ + public $JS_TEMPLATE_NAME; + /** @var string */ + public $CSS_TEMPLATE_NAME; + /** @var string|null */ + public $TEMPLATE_TRANSLATE; + // core group + /** @var string */ + public $JS_CORE_TEMPLATE_NAME; + /** @var string */ + public $CSS_CORE_TEMPLATE_NAME; + /** @var string */ + public $JS_CORE_INCLUDE; + /** @var string */ + public $CSS_CORE_INCLUDE; + // local names + /** @var string */ + public $JS_SPECIAL_TEMPLATE_NAME = ''; + /** @var string */ + public $CSS_SPECIAL_TEMPLATE_NAME = ''; + /** @var string */ + public $JS_INCLUDE; + /** @var string */ + public $CSS_INCLUDE; + /** @var string */ + public $JS_SPECIAL_INCLUDE; + /** @var string */ + public $CSS_SPECIAL_INCLUDE; + /** @var string */ + public $ADMIN_JAVASCRIPT; + /** @var string */ + public $ADMIN_STYLESHEET; + /** @var string */ + public $FRONTEND_JAVASCRIPT; + /** @var string */ + public $FRONTEND_STYLESHEET; + // other smarty folder vars + /** @var string */ + public $INCLUDES; + /** @var string */ + public $JAVASCRIPT; + /** @var string */ + public $CSS; + /** @var string */ + public $FONT; + /** @var string */ + public $PICTURES; + /** @var string */ + public $CACHE_PICTURES; + /** @var string */ + public $CACHE_PICTURES_ROOT; + + // constructor class, just sets the language stuff + /** + * constructor class, just sets the language stuff + * calls L10 for pass on internaly in smarty + * also registers the getvar caller plugin + */ + public function __construct() + { + // call basic smarty + parent::__construct(); + // set lang vars + $this->setLangEncoding(); + // iinit lang + $this->l10n = new \CoreLibs\Language\L10n($this->lang); + /** @phpstan-ignore-next-line */ + $this->registerPlugin('modifier', 'getvar', [&$this, 'get_template_vars']); + + $this->page_name = pathinfo($_SERVER["PHP_SELF"])['basename']; + + // set internal settings + $this->CACHE_ID = defined('CACHE_ID') ? CACHE_ID : ''; + $this->COMPILE_ID = defined('COMPILE_ID') ? COMPILE_ID : ''; + } + + /** + * ORIGINAL in \CoreLibs\Admin\Backend + * set the language encoding and language settings + * the default charset from _SESSION login or from + * config DEFAULT ENCODING + * the lang full name for mo loading from _SESSION login + * or SITE LANG or DEFAULT LANG from config + * creates short lang (only first two chars) from the lang + * @return void + */ + private function setLangEncoding(): void + { + // just emergency fallback for language + // set encoding + if (isset($_SESSION['DEFAULT_CHARSET'])) { + $this->encoding = $_SESSION['DEFAULT_CHARSET']; + } else { + $this->encoding = DEFAULT_ENCODING; + } + // gobal override + if (isset($GLOBALS['OVERRIDE_LANG'])) { + $this->lang = $GLOBALS['OVERRIDE_LANG']; + } elseif (isset($_SESSION['DEFAULT_LANG'])) { + // session (login) + $this->lang = $_SESSION['DEFAULT_LANG']; + } else { + // mostly default SITE LANG or DEFAULT LANG + $this->lang = defined('SITE_LANG') ? SITE_LANG : DEFAULT_LANG; + } + // create the char lang encoding + $this->lang_short = substr($this->lang, 0, 2); + // set the language folder + $this->lang_dir = BASE . INCLUDES . LANG . CONTENT_PATH; + } + + /** + * @return void + */ + private function setSmartCoreIncludeCssJs(): void + { + // core CS + $this->CSS_CORE_INCLUDE = ''; + if ( + file_exists($this->CSS . $this->CSS_CORE_TEMPLATE_NAME) && + is_file($this->CSS . $this->CSS_CORE_TEMPLATE_NAME) + ) { + $this->CSS_CORE_INCLUDE = $this->CSS . $this->CSS_CORE_TEMPLATE_NAME; + } + // core JS + $this->JS_CORE_INCLUDE = ''; + if ( + file_exists($this->JAVASCRIPT . $this->JS_CORE_TEMPLATE_NAME) && + is_file($this->JAVASCRIPT . $this->JS_CORE_TEMPLATE_NAME) + ) { + $this->JS_CORE_INCLUDE = $this->JAVASCRIPT . $this->JS_CORE_TEMPLATE_NAME; + } + // additional per page Javascript include + $this->JS_INCLUDE = ''; + if ( + file_exists($this->JAVASCRIPT . $this->JS_TEMPLATE_NAME) && + is_file($this->JAVASCRIPT . $this->JS_TEMPLATE_NAME) + ) { + $this->JS_INCLUDE = $this->JAVASCRIPT . $this->JS_TEMPLATE_NAME; + } + // per page css file + $this->CSS_INCLUDE = ''; + if ( + file_exists($this->CSS . $this->CSS_TEMPLATE_NAME) && + is_file($this->CSS . $this->CSS_TEMPLATE_NAME) + ) { + $this->CSS_INCLUDE = $this->CSS . $this->CSS_TEMPLATE_NAME; + } + // optional CSS file + $this->CSS_SPECIAL_INCLUDE = ''; + if ( + file_exists($this->CSS . $this->CSS_SPECIAL_TEMPLATE_NAME) && + is_file($this->CSS . $this->CSS_SPECIAL_TEMPLATE_NAME) + ) { + $this->CSS_SPECIAL_INCLUDE = $this->CSS . $this->CSS_SPECIAL_TEMPLATE_NAME; + } + // optional JS file + $this->JS_SPECIAL_INCLUDE = ''; + if ( + file_exists($this->JAVASCRIPT . $this->JS_SPECIAL_TEMPLATE_NAME) && + is_file($this->JAVASCRIPT . $this->JS_SPECIAL_TEMPLATE_NAME) + ) { + $this->JS_SPECIAL_INCLUDE = $this->JAVASCRIPT . $this->JS_SPECIAL_TEMPLATE_NAME; + } + } + + + /** + * sets all internal paths and names that need to be passed on to the smarty template + * @return void + */ + public function setSmartyPaths(): void + { + // master template + if (empty($this->MASTER_TEMPLATE_NAME)) { + $this->MASTER_TEMPLATE_NAME = MASTER_TEMPLATE_NAME; + } + + // set include & template names + if (empty($this->CONTENT_INCLUDE)) { + $this->CONTENT_INCLUDE = str_replace('.php', '', $this->page_name) . '.tpl'; + } + // strip tpl and replace it with php + // php include file per page + $this->INC_TEMPLATE_NAME = str_replace('.tpl', '.php', $this->CONTENT_INCLUDE); + // javascript include per page + $this->JS_TEMPLATE_NAME = str_replace('.tpl', '.js', $this->CONTENT_INCLUDE); + // css per page + $this->CSS_TEMPLATE_NAME = str_replace('.tpl', '.css', $this->CONTENT_INCLUDE); + + // set basic template path (tmp) + $this->INCLUDES = BASE . INCLUDES; // no longer in templates, only global + $this->TEMPLATE_PATH = BASE . INCLUDES . TEMPLATES . CONTENT_PATH; + $this->setTemplateDir($this->TEMPLATE_PATH); + $this->JAVASCRIPT = LAYOUT . JS; + $this->CSS = LAYOUT . CSS; + $this->FONT = LAYOUT . FONT; + $this->PICTURES = LAYOUT . IMAGES; + $this->CACHE_PICTURES = LAYOUT . CACHE; + $this->CACHE_PICTURES_ROOT = ROOT . $this->CACHE_PICTURES; + // check if we have an external file with the template name + if ( + file_exists($this->INCLUDES . $this->INC_TEMPLATE_NAME) && + is_file($this->INCLUDES . $this->INC_TEMPLATE_NAME) + ) { + include($this->INCLUDES . $this->INC_TEMPLATE_NAME); + } + // check for template include + if ( + $this->USE_INCLUDE_TEMPLATE === true && + !$this->TEMPLATE_NAME + ) { + $this->TEMPLATE_NAME = $this->CONTENT_INCLUDE; + // add to cache & compile id + $this->COMPILE_ID .= '_' . $this->TEMPLATE_NAME; + $this->CACHE_ID .= '_' . $this->TEMPLATE_NAME; + } + // set all the additional CSS/JS parths + $this->setSmartCoreIncludeCssJs(); + // check if template names exist + if (!$this->MASTER_TEMPLATE_NAME) { + exit('MASTER TEMPLATE is not set'); + } elseif (!file_exists($this->getTemplateDir()[0] . DS . $this->MASTER_TEMPLATE_NAME)) { + // abort if master template could not be found + exit('MASTER TEMPLATE: ' . $this->MASTER_TEMPLATE_NAME . ' could not be found'); + } + if ( + $this->TEMPLATE_NAME && + !file_exists($this->getTemplateDir()[0] . DS . $this->TEMPLATE_NAME) + ) { + exit('INCLUDE TEMPLATE: ' . $this->TEMPLATE_NAME . ' could not be found'); + } + // javascript translate data as template for auto translate + if (empty($this->TEMPLATE_TRANSLATE)) { + $this->TEMPLATE_TRANSLATE = 'jsTranslate_' . $this->lang . '.tpl'; + } else { + // we assume we have some fixed set + // we must add _<$this->lang> + // if .tpl, put before .tpl + // if not .tpl, add _<$this->lang>.tpl + if (strpos($this->TEMPLATE_TRANSLATE, '.tpl')) { + $this->TEMPLATE_TRANSLATE = str_replace('.tpl', '_' . $this->lang . '.tpl', $this->TEMPLATE_TRANSLATE); + } else { + $this->TEMPLATE_TRANSLATE .= '_' . $this->lang . '.tpl'; + } + } + // if we can't find it, dump it + if (!file_exists($this->getTemplateDir()[0] . DS . $this->TEMPLATE_TRANSLATE)) { + $this->TEMPLATE_TRANSLATE = null; + } + } + + /** + * wrapper call for setSmartyVars + * this is for frontend type and will not set any only admin needed variables + * @return void + */ + public function setSmartyVarsFrontend(): void + { + $this->setSmartyVars(); + } + + /** + * wrapper call for setSmartyVars + * this is only for admin interface and will set additional variables + */ + public function setSmartyVarsAdmin(): void + { + $this->setSmartyVars(true); + } + + /** + * set smarty pass on variables, sub template names and finally calls the smarty parser + * @param boolean $admin_call default false, will set admin only variables + * @return void + */ + private function setSmartyVars($admin_call = false): void + { + /** @var \CoreLibs\Admin\Backend This is an assumption */ + global $cms; + if (is_object($cms)) { + $this->mergeCmsSmartyVars($cms); + } + + // trigger flags + $this->HEADER['USE_PROTOTYPE'] = $this->USE_PROTOTYPE; + // scriptacolous, can only be used with prototype + if ($this->HEADER['USE_PROTOTYPE']) { + $this->HEADER['USE_SCRIPTACULOUS'] = $this->USE_SCRIPTACULOUS; + } + // jquery and prototype should not be used together + $this->HEADER['USE_JQUERY'] = $this->USE_JQUERY; + + // set all the additional CSS/JS parths + $this->setSmartCoreIncludeCssJs(); + + // the actual include files for javascript (per page) + $this->HEADER['JS_CORE_INCLUDE'] = $this->JS_CORE_INCLUDE; + $this->HEADER['CSS_CORE_INCLUDE'] = $this->CSS_CORE_INCLUDE; + $this->HEADER['JS_INCLUDE'] = $this->JS_INCLUDE; + $this->HEADER['CSS_INCLUDE'] = $this->CSS_INCLUDE; + $this->HEADER['CSS_SPECIAL_INCLUDE'] = $this->CSS_SPECIAL_INCLUDE; + $this->HEADER['JS_SPECIAL_INCLUDE'] = $this->JS_SPECIAL_INCLUDE; + // paths to the files + $this->DATA['includes'] = $this->INCLUDES; + $this->DATA['js'] = $this->JAVASCRIPT; + $this->DATA['css'] = $this->CSS; + $this->DATA['pictures'] = $this->PICTURES; + + // default CMS settings + // define all needed smarty stuff for the general HTML/page building + $this->HEADER['CSS'] = CSS; + $this->HEADER['FONT'] = FONT; + $this->HEADER['JS'] = JS; + $this->HEADER['ENCODING'] = $this->encoding; + $this->HEADER['DEFAULT_ENCODING'] = DEFAULT_ENCODING; + + // form name + $this->DATA['FORM_NAME'] = !$this->FORM_NAME ? + str_replace('.php', '', $this->page_name) : + $this->FORM_NAME; + $this->DATA['FORM_ACTION'] = $this->FORM_ACTION; + // special for admin + if ($admin_call === true) { + // set ACL extra show + if (is_object($cms)) { + $this->DATA['show_ea_extra'] = $cms->acl['show_ea_extra'] ?? false; + $this->DATA['ADMIN'] = $cms->acl['admin'] ?? 0; + // top menu + $this->DATA['nav_menu'] = $cms->adbTopMenu(); + $this->DATA['nav_menu_count'] = is_array($this->DATA['nav_menu']) ? count($this->DATA['nav_menu']) : 0; + // messages = ['msg' =>, 'class' => 'error/warning/...'] + $this->DATA['messages'] = $cms->messages; + } else { /** @phpstan-ignore-line Because I assume object for phpstan */ + $this->DATA['show_ea_extra'] = false; + $this->DATA['ADMIN'] = 0; + $this->DATA['nav_menu'] = []; + $this->DATA['nav_menu_count'] = 0; + $this->DATA['messages'] = []; + } + // set style sheets + $this->HEADER['STYLESHEET'] = $this->ADMIN_STYLESHEET ? $this->ADMIN_STYLESHEET : ADMIN_STYLESHEET; + $this->HEADER['JAVASCRIPT'] = $this->ADMIN_JAVASCRIPT ? $this->ADMIN_JAVASCRIPT : ADMIN_JAVASCRIPT; + // the page name + $this->DATA['page_name'] = $this->page_name; + $this->DATA['table_width'] = empty($this->PAGE_WIDTH) ?: PAGE_WIDTH; + $this->DATA['form_name'] = $this->DATA['FORM_NAME']; + // for tinymce special + $this->DATA['TINYMCE_LANG'] = $this->lang_short; + // include flags + $this->DATA['USE_TINY_MCE'] = $this->USE_TINY_MCE; + // debug data, if DEBUG flag is on, this data is print out + $this->DEBUG_DATA['DEBUG'] = $this->DEBUG_TMPL; + } else { + $this->HEADER['STYLESHEET'] = $this->FRONTEND_STYLESHEET ? $this->FRONTEND_STYLESHEET : STYLESHEET; + $this->HEADER['JAVASCRIPT'] = $this->FRONTEND_JAVASCRIPT ? $this->FRONTEND_JAVASCRIPT : JAVASCRIPT; + } + // html title + // set local page title + $this->HEADER['HTML_TITLE'] = !$this->L_TITLE ? + ucfirst(str_replace('_', ' ', \CoreLibs\Get\System::getPageName(1))) + . (defined('G_TITLE') ? ' - ' . $this->l10n->__(G_TITLE) : '') : + $this->l10n->__($this->L_TITLE); + + // LANG + $this->DATA['LANG'] = $this->lang; + // include flags + $this->DATA['JS_DATEPICKR'] = $this->JS_DATEPICKR; + $this->DATA['JS_FLATPICKR'] = $this->JS_FLATPICKR; + $this->DATA['JS_FILE_UPLOADER'] = $this->JS_FILE_UPLOADER; + // user name + $this->DATA['USER_NAME'] = !empty($_SESSION['USER_NAME']) ? $_SESSION['USER_NAME'] : ''; + // the template part to include into the body + $this->DATA['TEMPLATE_NAME'] = $this->TEMPLATE_NAME; + $this->DATA['CONTENT_INCLUDE'] = $this->CONTENT_INCLUDE; + $this->DATA['TEMPLATE_TRANSLATE'] = $this->TEMPLATE_TRANSLATE ?? null; + $this->DATA['PAGE_FILE_NAME'] = str_replace('.php', '', $this->page_name) . '.tpl'; + // render page + $this->renderSmarty(); + } + + /** + * merge outside object HEADER/DATA/DEBUG_DATA vars into the smarty class + * @param object $cms object that has header/data/debug_data + * @return void + */ + public function mergeCmsSmartyVars(object $cms): void + { + // array merge HEADER, DATA, DEBUG DATA + foreach (['HEADER', 'DATA', 'DEBUG_DATA'] as $ext_smarty) { + if ( + isset($cms->{$ext_smarty}) && + is_array($cms->{$ext_smarty}) + ) { + $this->{$ext_smarty} = array_merge($this->{$ext_smarty}, $cms->{$ext_smarty}); + } + } + } + + /** + * render smarty data (can be called sepparate) + * @return void + */ + public function renderSmarty(): void + { + // create main data array + $this->CONTENT_DATA = array_merge($this->HEADER, $this->DATA, $this->DEBUG_DATA); + // data is 1:1 mapping (all vars, values, etc) + foreach ($this->CONTENT_DATA as $key => $value) { + $this->assign($key, $value); + } + if (is_dir(BASE . TEMPLATES_C)) { + $this->setCompileDir(BASE . TEMPLATES_C); + } + if (is_dir(BASE . CACHE)) { + $this->setCacheDir(BASE . CACHE); + } + $this->display( + $this->MASTER_TEMPLATE_NAME, + $this->CACHE_ID . ($this->CACHE_ID ? '_' : '') . $this->lang, + $this->COMPILE_ID . ($this->COMPILE_ID ? '_' : '') . $this->lang + ); + } +} + +// __END__ diff --git a/www/lib/smarty-4.0.0/.github/workflows/ci.yml b/www/lib/smarty-4.0.0/.github/workflows/ci.yml deleted file mode 100644 index e82642aa..00000000 --- a/www/lib/smarty-4.0.0/.github/workflows/ci.yml +++ /dev/null @@ -1,73 +0,0 @@ -# https://help.github.com/en/categories/automating-your-workflow-with-github-actions - -on: - - pull_request - - push - -name: CI - -jobs: - tests: - name: Tests - - runs-on: ${{ matrix.os }} - - env: - PHP_EXTENSIONS: dom, json, libxml, mbstring, pdo_sqlite, soap, xml, xmlwriter - PHP_INI_VALUES: assert.exception=1, zend.assertions=1 - - strategy: - fail-fast: false - matrix: - os: - - ubuntu-latest - - php-version: - - "7.1" - - "7.2" - - "7.3" - - "7.4" - - "8.0" - - compiler: - - default - - include: - - os: ubuntu-latest - php-version: "8.0" - compiler: jit - - steps: - - name: Checkout - uses: actions/checkout@v2 - - - name: Override PHP ini values for JIT compiler - if: matrix.compiler == 'jit' - run: echo "PHP_INI_VALUES::assert.exception=1, zend.assertions=1, opcache.enable=1, opcache.enable_cli=1, opcache.optimization_level=-1, opcache.jit=1255, opcache.jit_buffer_size=32M" >> $GITHUB_ENV - - - name: Install PHP with extensions - uses: shivammathur/setup-php@v2 - with: - php-version: ${{ matrix.php-version }} - coverage: pcov - extensions: ${{ env.PHP_EXTENSIONS }} - ini-values: ${{ env.PHP_INI_VALUES }} - - - name: Validate composer.json and composer.lock - run: composer validate - - - name: Cache Composer packages - id: composer-cache - uses: actions/cache@v2 - with: - path: vendor - key: ${{ runner.os }}-php-${{ matrix.php-version }}-${{ hashFiles('**/composer.lock') }} - restore-keys: | - ${{ runner.os }}-php-${{ matrix.php-version }}- - - - name: Install dependencies - if: steps.composer-cache.outputs.cache-hit != 'true' - run: composer install --prefer-dist --no-progress --no-suggest - - - name: Run tests with phpunit - run: ./phpunit.sh diff --git a/www/lib/smarty-4.0.0/CHANGELOG.md b/www/lib/smarty-4.0.0/CHANGELOG.md deleted file mode 100644 index d31ac9b8..00000000 --- a/www/lib/smarty-4.0.0/CHANGELOG.md +++ /dev/null @@ -1,3496 +0,0 @@ -# Changelog -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [Unreleased] - -## [4.0.0] - 2021-11-25 - -## [4.0.0-rc.0] - 2021-10-13 - -### Added -- You can now use `$smarty->muteUndefinedOrNullWarnings()` to activate convert warnings about undefined or null template vars to notices when running PHP8 - -### Changed -- Switch CI from Travis to Github CI -- Updated unit tests to avoid skipped and risky test warnings - -### Removed -- Dropped support for PHP7.0 and below, so Smarty now requires PHP >=7.1 -- Dropped support for php asp tags in templates (removed from php since php7.0) -- Dropped deprecated API calls that where only accessible through SmartyBC -- Dropped support for {php} and {include_php} tags and embedded PHP in templates. Embedded PHP will now be passed through as is. -- Removed all PHP_VERSION_ID and compare_version checks and conditional code blocks that are now no longer required -- Dropped deprecated SMARTY_RESOURCE_CHAR_SET and SMARTY_RESOURCE_DATE_FORMAT constants -- Dropped deprecated Smarty::muteExpectedErrors and Smarty::unmuteExpectedErrors API methods -- Dropped deprecated $smarty->getVariable() method. Use $smarty->getTemplateVars() instead. -- $smarty->registerResource() no longer accepts an array of callback functions - -## [3.1.40] - 2021-10-13 - -### Changed -- modifier escape now triggers a E_USER_NOTICE when an unsupported escape type is used https://github.com/smarty-php/smarty/pull/649 - -### Security -- More advanced javascript escaping to handle https://html.spec.whatwg.org/multipage/scripting.html#restrictions-for-contents-of-script-elements thanks to m-haritonov - -## [3.1.39] - 2021-02-17 - -### Security -- Prevent access to `$smarty.template_object` in sandbox mode. This addresses CVE-2021-26119. -- Fixed code injection vulnerability by using illegal function names in `{function name='blah'}{/function}`. This addresses CVE-2021-26120. - -## [3.1.38] - 2021-01-08 - -### Fixed -- Smarty::SMARTY_VERSION wasn't updated https://github.com/smarty-php/smarty/issues/628 - -## [3.1.37] - 2021-01-07 - -### Changed -- Changed error handlers and handling of undefined constants for php8-compatibility (set $errcontext argument optional) https://github.com/smarty-php/smarty/issues/605 -- Changed expected error levels in unit tests for php8-compatibility -- Travis unit tests now run for all php versions >= 5.3, including php8 -- Travis runs on Xenial where possible - -### Fixed -- PHP5.3 compatibility fixes -- Brought lexer source functionally up-to-date with compiled version - -## [3.1.36] - 2020-04-14 - -### Fixed - - Smarty::SMARTY_VERSION wasn't updated in v3.1.35 https://github.com/smarty-php/smarty/issues/584 - -## [3.1.35] - 2020-04-14 - - remove whitespaces after comments https://github.com/smarty-php/smarty/issues/447 - - fix foreachelse on arrayiterators https://github.com/smarty-php/smarty/issues/506 - - fix files contained in git export archive for package maintainers https://github.com/smarty-php/smarty/issues/325 - - throw SmartyException when setting caching attributes for cacheable plugin https://github.com/smarty-php/smarty/issues/457 - - fix errors that occured where isset was replaced with null check such as https://github.com/smarty-php/smarty/issues/453 - - unit tests are now in the repository - -## 3.1.34 release - 05.11.2019 -13.01.2020 - - fix typo in exception message (JercSi) - - fix typehint warning with callable (bets4breakfast) - - add travis badge and compatability info to readme (matks) - - fix stdClass cast when compiling foreach (carpii) - - fix wrong set/get methods for memcached (IT-Experte) - - fix pborm assigning value to object variables in smarty_internal_compile_assign (Hunman) - - exclude error_reporting.ini from git export (glensc) - -## 3.1.34-dev-6 - -30.10.2018 - - bugfix a nested subblock in an inheritance child template was not replace by - outer level block with same name in same child template https://github.com/smarty-php/smarty/issues/500 - -29.10.2018 - - bugfix Smarty::$php_handling == PHP_PASSTHRU (default) did eat the "\n" (newline) character if it did directly followed - a PHP tag like "?>" or other https://github.com/smarty-php/smarty/issues/501 - -14.10.2018 - - bugfix autoloader exit shortcut https://github.com/smarty-php/smarty/issues/467 - -11.10.2018 - - bugfix {insert} not works when caching is enabled and included template is present - https://github.com/smarty-php/smarty/issues/496 - - bugfix in date-format modifier; NULL at date string or default_date did not produce correct output - https://github.com/smarty-php/smarty/pull/458 - -09.10.2018 - - bugfix fix of 26.8.2017 https://github.com/smarty-php/smarty/issues/327 - modifier is applied to sum expression https://github.com/smarty-php/smarty/issues/491 - - bugfix indexed arrays could not be defined "array(...)"" - -18.09.2018 - - bugfix large plain text template sections without a Smarty tag > 700kB could - could fail in version 3.1.32 and 3.1.33 because PHP preg_match() restrictions - https://github.com/smarty-php/smarty/issues/488 - -## 3.1.33 release - 12.09.2018 -## 3.1.33-dev-12 - -03.09.2018 - - bugfix {foreach} using new style property access like {$item@property} on - Smarty 2 style named foreach loop could produce errors https://github.com/smarty-php/smarty/issues/484 - -31.08.2018 - - bugfix some custom left and right delimiters like '{^' '^}' did not work - https://github.com/smarty-php/smarty/issues/450 https://github.com/smarty-php/smarty/pull/482 - - - reformating for PSR-2 coding standards https://github.com/smarty-php/smarty/pull/483 - - - bugfix on Windows absolute filepathes did fail if the drive letter was followed by a linux DIRECTORY_SEPARATOR - like C:/ at Smarty > 3.1.33-dev-5 https://github.com/smarty-php/smarty/issues/451 - - - PSR-2 code style fixes for config and template file Lexer/Parser generated with - the Smarty Lexer/Parser generator from https://github.com/smarty-php/smarty-lexer - https://github.com/smarty-php/smarty/pull/483 - -26.08.2018 - - bugfix/enhancement {capture} allow variable as capture block name in Smarty special variable - like $smarty.capture.$foo https://github.com/smarty-php/smarty/issues/478 https://github.com/smarty-php/smarty/pull/481 - -## 3.1.33-dev-6 - -19.08.2018 - - fix PSR-2 coding standards and PHPDoc blocks https://github.com/smarty-php/smarty/pull/452 - https://github.com/smarty-php/smarty/pull/475 - https://github.com/smarty-php/smarty/pull/473 - - bugfix PHP5.2 compatibility https://github.com/smarty-php/smarty/pull/472 - -## 3.1.33-dev-4 - -17.05.2018 - - bugfix strip-block produces different output in Smarty v3.1.32 https://github.com/smarty-php/smarty/issues/436 - - bugfix Smarty::compileAllTemplates ignores `$extension` parameter https://github.com/smarty-php/smarty/issues/437 - https://github.com/smarty-php/smarty/pull/438 - - improvement do not compute total property in {foreach} if not needed https://github.com/smarty-php/smarty/issues/443 - - bugfix plugins may not be loaded when setMergeCompiledIncludes is true https://github.com/smarty-php/smarty/issues/435 - -26.04.2018 - - bugfix regarding Security Vulnerability did not solve the problem under Linux. - Security issue CVE-2018-16831 - -## 3.1.32 - (24.04.2018) -24.04.2018 - - bugfix possible Security Vulnerability in Smarty_Security class. - -26.03.2018 - - bugfix plugins may not be loaded if {function} or {block} tags are executed in nocache mode - https://github.com/smarty-php/smarty/issues/371 - -26.03.2018 - - new feature {parent} = {$smarty.block.parent} {child} = {$smarty.block.child} - -23.03.2018 - - bugfix preg_replace could fail on large content resulting in a blank page https://github.com/smarty-php/smarty/issues/417 - -21.03.2018 - - bugfix {$smarty.section...} used outside {section}{/section} showed incorrect values if {section}{/section} was called inside - another loop https://github.com/smarty-php/smarty/issues/422 - - bugfix short form of {section} attributes did not work https://github.com/smarty-php/smarty/issues/428 - -17.03.2018 - - improvement Smarty::compileAllTemplates() exit with a non-zero status code if max errors is reached https://github.com/smarty-php/smarty/pull/402 - -16.03.2018 - - bugfix extends resource did not work with user defined left/right delimiter https://github.com/smarty-php/smarty/issues/419 - -22.11.2017 - - bugfix {break} and {continue} could fail if {foreach}{/foreach} did contain other - looping tags like {for}, {section} and {while} https://github.com/smarty-php/smarty/issues/323 - -20.11.2017 - - bugfix rework of newline spacing between tag code and template text. - now again identical with Smarty2 (forum topic 26878) - - replacement of " by ' - -05.11.2017 - - lexer/parser optimization - - code cleanup and optimizations - - bugfix {$smarty.section.name.loop} used together with {$smarty.section.name.total} could produce - wrong results (forum topic 27041) - -26.10.2017 - - bugfix Smarty version was not filled in header comment of compiled and cached files - - optimization replace internal Smarty::$ds property by DIRECTORY_SEPARATOR - - deprecate functions Smarty::muteExpectedErrors() and Smarty::unmuteExpectedErrors() - as Smarty does no longer use error suppression like @filemtime(). - for backward compatibility code is moved from Smarty class to an external class and still can be - called. - - correction of PHPDoc blocks - - minor code cleanup - -21.10.2017 - - bugfix custom delimiters could fail since modification of version 3.1.32-dev-23 - https://github.com/smarty-php/smarty/issues/394 - -18.10.2017 - - bugfix fix implementation of unclosed block tag in double quoted string of 12.10.2017 - https://github.com/smarty-php/smarty/issues/396 https://github.com/smarty-php/smarty/issues/397 - https://github.com/smarty-php/smarty/issues/391 https://github.com/smarty-php/smarty/issues/392 - -12.10.2017 - - bugfix $smarty.block.child and $smarty.block.parent could not be used like any - $smarty special variable https://github.com/smarty-php/smarty/issues/393 - - unclosed block tag in double quoted string must throw compiler exception. - https://github.com/smarty-php/smarty/issues/391 https://github.com/smarty-php/smarty/issues/392 - -07.10.2017 - - bugfix modification of 9.8.2017 did fail on some recursive - tag nesting. https://github.com/smarty-php/smarty/issues/389 - -26.8.2017 - - bugfix chained modifier failed when last modifier parameter is a signed value - https://github.com/smarty-php/smarty/issues/327 - - bugfix templates filepath with multibyte characters did not work - https://github.com/smarty-php/smarty/issues/385 - - bugfix {make_nocache} did display code if the template did not contain other nocache code - https://github.com/smarty-php/smarty/issues/369 - -09.8.2017 - - improvement repeated delimiter like {{ and }} will be treated as literal - https://groups.google.com/forum/#!topic/smarty-developers/h9r82Bx4KZw - -05.8.2017 - - bugfix wordwrap modifier could fail if used in nocache code. - converted plugin file shared.mb_wordwrap.php into modifier.mb_wordwrap.php - - cleanup of _getSmartyObj() - -31.7.2017 - - Call clearstatcache() after mkdir() failure https://github.com/smarty-php/smarty/pull/379 - -30.7.2017 - - rewrite mkdir() bugfix to retry automatically see https://github.com/smarty-php/smarty/pull/377 - https://github.com/smarty-php/smarty/pull/379 - -21.7.2017 - - security possible PHP code injection on custom resources at display() or fetch() - calls if the resource does not sanitize the template name - - bugfix fix 'mkdir(): File exists' error on create directory from parallel - processes https://github.com/smarty-php/smarty/pull/377 - - bugfix solve preg_match() hhvm parameter problem https://github.com/smarty-php/smarty/pull/372 - -27.5.2017 - - bugfix change compiled code for registered function and modifiers to called as callable to allow closures - https://github.com/smarty-php/smarty/pull/368, https://github.com/smarty-php/smarty/issues/273 - - bugfix https://github.com/smarty-php/smarty/pull/368 did break the default plugin handler - - improvement replace phpversion() by PHP_VERSION constant. - https://github.com/smarty-php/smarty/pull/363 - -21.5.2017 - - performance store flag for already required shared plugin functions in static variable or - Smarty's $_cache to improve performance when plugins are often called - https://github.com/smarty-php/smarty/commit/51e0d5cd405d764a4ea257d1bac1fb1205f74528#commitcomment-22280086 - - bugfix remove special treatment of classes implementing ArrayAccess in {foreach} - https://github.com/smarty-php/smarty/issues/332 - - bugfix remove deleted files by clear_cache() and clear_compiled_template() from - ACP cache if present, add some is_file() checks to avoid possible warnings on filemtime() - caused by above functions. - https://github.com/smarty-php/smarty/issues/341 - - bugfix version 3.1.31 did fail under PHP 5.2 - https://github.com/smarty-php/smarty/issues/365 - -19.5.2017 - - change properties $accessMap and $obsoleteProperties from private to protected - https://github.com/smarty-php/smarty/issues/351 - - new feature The named capture buffers can now be accessed also as array - See NEWS_FEATURES.txt https://github.com/smarty-php/smarty/issues/366 - - improvement check if ini_get() and ini_set() not disabled - https://github.com/smarty-php/smarty/pull/362 - -24.4.2017 - - fix spelling https://github.com/smarty-php/smarty/commit/e3eda8a5f5653d8abb960eb1bc47e3eca679b1b4#commitcomment-21803095 - -17.4.2017 - - correct generated code on empty() and isset() call, observe change PHP behaviour since PHP 5.5 - https://github.com/smarty-php/smarty/issues/347 - -14.4.2017 - - merge pull requests https://github.com/smarty-php/smarty/pull/349, https://github.com/smarty-php/smarty/pull/322 and https://github.com/smarty-php/smarty/pull/337 to fix spelling and annotation - -13.4.2017 - - bugfix array_merge() parameter should be checked https://github.com/smarty-php/smarty/issues/350 - -## 3.1.31 - (14.12.2016) - 23.11.2016 - - move template object cache into static variables - - 19.11.2016 - - bugfix inheritance root child templates containing nested {block}{/block} could call sub-bock content from parent - template https://github.com/smarty-php/smarty/issues/317 - - change version checking - - 11.11.2016 - - bugfix when Smarty is using a cached template object on Smarty::fetch() or Smarty::isCached() the inheritance data - must be removed https://github.com/smarty-php/smarty/issues/312 - - smaller speed optimization - - 08.11.2016 - - add bootstrap file to load and register Smarty_Autoloader. Change composer.json to make it known to composer - - 07.11.2016 - - optimization of lexer speed https://github.com/smarty-php/smarty/issues/311 - - 27.10.2016 - - bugfix template function definitions array has not been cached between Smarty::fetch() and Smarty::display() calls - https://github.com/smarty-php/smarty/issues/301 - - 23.10.2016 - - improvement/bugfix when Smarty::fetch() is called on a template object the inheritance and tplFunctions property - should be copied to the called template object - - 21.10.2016 - - bugfix for compile locking touched timestamp of old compiled file was not restored on compilation error https://github.com/smarty-php/smarty/issues/308 - - 20.10.2016 - - bugfix nocache code was not removed in cache file when subtemplate did contain PHP short tags in text but no other - nocache code https://github.com/smarty-php/smarty/issues/300 - - 19.10.2016 - - bugfix {make_nocache $var} did fail when variable value did contain '\' https://github.com/smarty-php/smarty/issues/305 - - bugfix {make_nocache $var} remove spaces from variable value https://github.com/smarty-php/smarty/issues/304 - - 12.10.2016 - - bugfix {include} with template names including variable or constants could fail after bugfix from - 28.09.2016 https://github.com/smarty-php/smarty/issues/302 - - 08.10.2016 - - optimization move runtime extension for template functions into Smarty objects - - 29.09.2016 - - improvement new Smarty::$extends_recursion property to disable execution of {extends} in templates called by extends resource - https://github.com/smarty-php/smarty/issues/296 - - 28.09.2016 - - bugfix the generated code for calling a subtemplate must pass the template resource name in single quotes https://github.com/smarty-php/smarty/issues/299 - - bugfix nocache hash was not removed for tags in subtemplates https://github.com/smarty-php/smarty/issues/300 - - 27.09.2016 - - bugfix when Smarty does use an internally cached template object on Smarty::fetch() calls - the template and config variables must be cleared https://github.com/smarty-php/smarty/issues/297 - - 20.09.2016 - - bugfix some $smarty special template variables are no longer accessed as real variable. - using them on calls like {if isset($smarty.foo)} or {if empty($smarty.foo)} will fail - http://www.smarty.net/forums/viewtopic.php?t=26222 - - temporary fix for https://github.com/smarty-php/smarty/issues/293 main reason still under investigation - - improvement new tags {block_parent} {block_child} in template inheritance - - 19.09.2016 - - optimization clear compiled and cached folder completely on detected version change - - cleanup convert cache resource file method clear into runtime extension - - 15.09.2016 - - bugfix assigning a variable in if condition by function like {if $value = array_shift($array)} the function got called twice https://github.com/smarty-php/smarty/issues/291 - - bugfix function plugins called with assign attribute like {foo assign='bar'} did not output returned content because - because assumption was made that it was assigned to a variable https://github.com/smarty-php/smarty/issues/292 - - bugfix calling $smarty->isCached() on a not existing cache file with $smarty->cache_locking = true; could cause a 10 second delay http://www.smarty.net/forums/viewtopic.php?t=26282 - - improvement make Smarty::clearCompiledTemplate() on custom resource independent from changes of templateId computation - - 11.09.2016 - - improvement {math} misleading E_USER_WARNING messages when parameter value = null https://github.com/smarty-php/smarty/issues/288 - - improvement move often used code snippets into methods - - performance Smarty::configLoad() did load unneeded template source object - - 09.09.2016 - - bugfix/optimization {foreach} did not execute the {foreachelse} when iterating empty objects https://github.com/smarty-php/smarty/pull/287 - - bugfix {foreach} must keep the @properties when restoring a saved $item variable as the properties might be used outside {foreach} https://github.com/smarty-php/smarty/issues/267 - - improvement {foreach} observe {break n} and {continue n} nesting levels when restoring saved $item and $key variables - - 08.09.2016 - - bugfix implement wrapper for removed method getConfigVariable() https://github.com/smarty-php/smarty/issues/286 - - 07.09.2016 - - bugfix using nocache like attribute with value true like {plugin nocache=true} did not work https://github.com/smarty-php/smarty/issues/285 - - bugfix uppercase TRUE, FALSE and NULL did not work when security was enabled https://github.com/smarty-php/smarty/issues/282 - - bugfix when {foreach} was looping over an object the total property like {$item@total} did always return 1 https://github.com/smarty-php/smarty/issues/281 - - bugfix {capture}{/capture} did add in 3.1.30 unintended additional blank lines https://github.com/smarty-php/smarty/issues/268 - - 01.09.2016 - - performance require_once should be called only once for shared plugins https://github.com/smarty-php/smarty/issues/280 - - 26.08.2016 - - bugfix change of 23.08.2016 failed on linux when use_include_path = true - - 23.08.2016 - - bugfix remove constant DS as shortcut for DIRECTORY_SEPARATOR as the user may have defined it to something else https://github.com/smarty-php/smarty/issues/277 - - 20.08-2016 - - bugfix {config_load ... scope="global"} shall not throw an arror but fallback to scope="smarty" https://github.com/smarty-php/smarty/issues/274 - - bugfix {make_nocache} failed when using composer autoloader https://github.com/smarty-php/smarty/issues/275 - - 14.08.2016 - - bugfix $smarty_>debugging = true; did E_NOTICE messages when {eval} tag was used https://github.com/smarty-php/smarty/issues/266 - - bugfix Class 'Smarty_Internal_Runtime_ValidateCompiled' not found when upgrading from some older Smarty versions with existing - compiled or cached template files https://github.com/smarty-php/smarty/issues/269 - - optimization remove unneeded call to update acopes when {assign} scope and template scope was local (default) - -## 3.1.30 - (07.08.2016) - - 07.08.2016 - - bugfix update of 04.08.2016 was incomplete - - 05.08.2016 - - bugfix compiling of templates failed when the Smarty delimiter did contain '/' https://github.com/smarty-php/smarty/issues/264 - - updated error checking at template and config default handler - - 04.08.2016 - - improvement move template function source parameter into extension - - 26.07.2016 - - optimization unneeded loading of compiled resource - - 24.07.2016 - - regression this->addPluginsDir('/abs/path/to/dir') adding absolute path without trailing '/' did fail https://github.com/smarty-php/smarty/issues/260 - - 23.07.2016 - - bugfix setTemplateDir('/') and setTemplateDir('') did create wrong absolute filepath https://github.com/smarty-php/smarty/issues/245 - - optimization of filepath normalization - - improvement remove double function declaration in plugin shared.escape_special_cars.php https://github.com/smarty-php/smarty/issues/229 - - 19.07.2016 - - bugfix multiple {include} with relative filepath within {block}{/block} could fail https://github.com/smarty-php/smarty/issues/246 - - bugfix {math} shell injection vulnerability patch provided by Tim Weber - - 18.07.2016 - - bugfix {foreach} if key variable and item@key attribute have been used both the key variable was not updated https://github.com/smarty-php/smarty/issues/254 - - bugfix modifier on plugins like {plugin|modifier ... } did fail when the plugin does return an array https://github.com/smarty-php/smarty/issues/228 - - bugfix avoid opcache_invalidate to result in ErrorException when opcache.restrict_api is not empty https://github.com/smarty-php/smarty/pull/244 - - bugfix multiple {include} with relative filepath within {block}{/block} could fail https://github.com/smarty-php/smarty/issues/246 - - 14.07.2016 - - bugfix wrong parameter on compileAllTemplates() and compileAllConfig() https://github.com/smarty-php/smarty/issues/231 - - 13.07.2016 - - bugfix PHP 7 compatibility on registered compiler plugins https://github.com/smarty-php/smarty/issues/241 - - update testInstall() https://github.com/smarty-php/smarty/issues/248https://github.com/smarty-php/smarty/issues/248 - - bugfix enable debugging could fail when template objects did already exists https://github.com/smarty-php/smarty/issues/237 - - bugfix template function data should be merged when loading subtemplate https://github.com/smarty-php/smarty/issues/240 - - bugfix wrong parameter on compileAllTemplates() https://github.com/smarty-php/smarty/issues/231 - - 12.07.2016 - - bugfix {foreach} item variable must be created also on empty from array https://github.com/smarty-php/smarty/issues/238 and https://github.com/smarty-php/smarty/issues/239 - - bugfix enableSecurity() must init cache flags https://github.com/smarty-php/smarty/issues/247 - - 27.05.2016 - - bugfix/improvement of compileAlltemplates() follow symlinks in template folder (PHP >= 5.3.1) https://github.com/smarty-php/smarty/issues/224 - clear internal cache and expension handler for each template to avoid possible conflicts https://github.com/smarty-php/smarty/issues/231 - - 16.05.2016 - - optimization {foreach} compiler and processing - - broken PHP 5.3 and 5.4 compatibility - - 15.05.2016 - - optimization and cleanup of resource code - - 10.05.2016 - - optimization of inheritance processing - - 07.05.2016 - -bugfix Only variables should be assigned by reference https://github.com/smarty-php/smarty/issues/227 - - 02.05.2016 - - enhancement {block} tag names can now be variable https://github.com/smarty-php/smarty/issues/221 - - 01.05.2016 - - bugfix same relative filepath at {include} called from template in different folders could display wrong sub-template - - 29.04.2016 - - bugfix {strip} remove space on linebreak between html tags https://github.com/smarty-php/smarty/issues/213 - - 24.04.2016 - - bugfix nested {include} with relative file path could fail when called in {block} ... {/block} https://github.com/smarty-php/smarty/issues/218 - - 14.04.2016 - - bugfix special variable {$smarty.capture.name} was not case sensitive on name https://github.com/smarty-php/smarty/issues/210 - - bugfix the default template handler must calculate the source uid https://github.com/smarty-php/smarty/issues/205 - - 13.04.2016 - - bugfix template inheritance status must be saved when calling sub-templates https://github.com/smarty-php/smarty/issues/215 - - 27.03.2016 - - bugfix change of 11.03.2016 cause again {capture} data could not been seen in other templates with {$smarty.capture.name} https://github.com/smarty-php/smarty/issues/153 - - 11.03.2016 - - optimization of capture and security handling - - improvement $smarty->clearCompiledTemplate() should return on recompiled or uncompiled resources - - 10.03.2016 - - optimization of resource processing - - 09.03.2016 - - improvement rework of 'scope' attribute handling see see NEW_FEATURES.txt https://github.com/smarty-php/smarty/issues/194 - https://github.com/smarty-php/smarty/issues/186 https://github.com/smarty-php/smarty/issues/179 - - bugfix correct Autoloader update of 2.3.2014 https://github.com/smarty-php/smarty/issues/199 - - 04.03.2016 - - bugfix change from 01.03.2016 will cause $smarty->isCached(..) failure if called multiple time for same template - (forum topic 25935) - - 02.03.2016 - - revert autoloader optimizations because of unexplainable warning when using plugins https://github.com/smarty-php/smarty/issues/199 - - 01.03.2016 - - bugfix template objects must be cached on $smarty->fetch('foo.tpl) calls incase the template is fetched - multiple times (forum topic 25909) - - 25.02.2016 - - bugfix wrong _realpath with 4 or more parent-directories https://github.com/smarty-php/smarty/issues/190 - - optimization of _realpath - - bugfix instanceof expression in template code must be treated as value https://github.com/smarty-php/smarty/issues/191 - - 20.02.2016 - - bugfix {strip} must keep space between hmtl tags. Broken by changes of 10.2.2016 https://github.com/smarty-php/smarty/issues/184 - - new feature/bugfix {foreach}{section} add 'properties' attribute to force compilation of loop properties - see NEW_FEATURES.txt https://github.com/smarty-php/smarty/issues/189 - - 19.02.2016 - - revert output buffer flushing on display, echo content again because possible problems when PHP files had - characters (newline} after ?> at file end https://github.com/smarty-php/smarty/issues/187 - - 14.02.2016 - - new tag {make_nocache} read NEW_FEATURES.txt https://github.com/smarty-php/smarty/issues/110 - - optimization of sub-template processing - - bugfix using extendsall as default resource and {include} inside {block} tags could produce unexpected results https://github.com/smarty-php/smarty/issues/183 - - optimization of tag attribute compiling - - optimization make compiler tag object cache static for higher compilation speed - - 11.02.2016 - - improvement added KnockoutJS comments to trimwhitespace outputfilter https://github.com/smarty-php/smarty/issues/82 - https://github.com/smarty-php/smarty/pull/181 - - 10.02.2016 - - bugfix {strip} must keep space on output creating smarty tags within html tags https://github.com/smarty-php/smarty/issues/177 - - bugfix wrong precedence on special if conditions like '$foo is ... by $bar' could cause wrong code https://github.com/smarty-php/smarty/issues/178 - - improvement because of ambiguities the inline constant support has been removed from the $foo.bar syntax https://github.com/smarty-php/smarty/issues/149 - - bugfix other {strip} error with output tags between hmtl https://github.com/smarty-php/smarty/issues/180 - - 09.02.2016 - - move some code from parser into compiler - - reformat all code for unique style - - update/bugfix scope attribute handling reworked. Read the newfeatures.txt file - - 05.02.2016 - - improvement internal compiler changes - - 01.02.2016 - - bugfix {foreach} compilation failed when $smarty->merge_compiled_includes = true and pre-filters are used. - - 29.01.2016 - - bugfix implement replacement code for _tag_stack property https://github.com/smarty-php/smarty/issues/151 - - 28.01.2016 - - bugfix allow windows network filepath or wrapper (forum topic 25876) https://github.com/smarty-php/smarty/issues/170 - - bugfix if fetch('foo.tpl') is called on a template object the $parent parameter should default to the calling template object https://github.com/smarty-php/smarty/issues/152 - - 27.01.2016 - - revert bugfix compiling {section} did create warning - - bugfix {$smarty.section.customer.loop} did throw compiler error https://github.com/smarty-php/smarty/issues/161 - update of yesterdays fix - - bugfix string resource could inject code at {block} or inline subtemplates through PHP comments https://github.com/smarty-php/smarty/issues/157 - - bugfix output filters did not observe nocache code flhttps://github.com/smarty-php/smarty/issues/154g https://github.com/smarty-php/smarty/issues/160 - - bugfix {extends} with relative file path did not work https://github.com/smarty-php/smarty/issues/154 - https://github.com/smarty-php/smarty/issues/158 - - bugfix {capture} data could not been seen in other templates with {$smarty.capture.name} https://github.com/smarty-php/smarty/issues/153 - - 26.01.2016 - - improvement observe Smarty::$_CHARSET in debugging console https://github.com/smarty-php/smarty/issues/169 - - bugfix compiling {section} did create warning - - bugfix {$smarty.section.customer.loop} did throw compiler error https://github.com/smarty-php/smarty/issues/161 - - 02.01.2016 - - update scope handling - - optimize block plugin compiler - - improvement runtime checks if registered block plugins are callable - - 01.01.2016 - - remove Smarty::$resource_cache_mode property - - 31.12.2015 - - optimization of {assign}, {if} and {while} compiled code - - 30.12.2015 - - bugfix plugin names starting with "php" did not compile https://github.com/smarty-php/smarty/issues/147 - - 29.12.2015 - - bugfix Smarty::error_reporting was not observed when display() or fetch() was called on template objects https://github.com/smarty-php/smarty/issues/145 - - 28.12.2015 - - optimization of {foreach} code size and processing - - 27.12.2015 - - improve inheritance code - - update external methods - - code fixes - - PHPdoc updates - - 25.12.2015 - - compile {block} tag code and its processing into classes - - optimization replace hhvm extension by inline code - - new feature If ACP is enabled force an apc_compile_file() when compiled or cached template was updated - - 24.12.2015 - - new feature Compiler does now observe the template_dir setting and will create separate compiled files if required - - bugfix post filter did fail on template inheritance https://github.com/smarty-php/smarty/issues/144 - - 23.12.2015 - - optimization move internal method decodeProperties back into template object - - optimization move subtemplate processing back into template object - - new feature Caching does now observe the template_dir setting and will create separate cache files if required - - 22.12.2015 - - change $xxx_dir properties from private to protected in case Smarty class gets extended - - code optimizations - - 21.12.2015 - - bugfix a filepath starting with '/' or '\' on windows should normalize to the root dir - of current working drive https://github.com/smarty-php/smarty/issues/134 - - optimization of filepath normalization - - bugfix {strip} must remove all blanks between html tags https://github.com/smarty-php/smarty/issues/136 - - - 3.1.29 - (21.12.2015) - 21.12.2015 - - optimization improve speed of filetime checks on extends and extendsall resource - - 20.12.2015 - - bugfix failure when the default resource type was set to 'extendsall' https://github.com/smarty-php/smarty/issues/123 - - update compilation of Smarty special variables - - bugfix add addition check for OS type on normalization of file path https://github.com/smarty-php/smarty/issues/134 - - bugfix the source uid of the extendsall resource must contain $template_dir settings https://github.com/smarty-php/smarty/issues/123 - - 19.12.2015 - - bugfix using $smarty.capture.foo in expressions could fail https://github.com/smarty-php/smarty/pull/138 - - bugfix broken PHP 5.2 compatibility https://github.com/smarty-php/smarty/issues/139 - - remove no longer used code - - improvement make sure that compiled and cache templates never can contain a trailing '?>? - - 18.12.2015 - - bugfix regression when modifier parameter was followed by math https://github.com/smarty-php/smarty/issues/132 - - 17.12.2015 - - bugfix {$smarty.capture.nameFail} did lowercase capture name https://github.com/smarty-php/smarty/issues/135 - - bugfix using {block append/prepend} on same block in multiple levels of inheritance templates could fail (forum topic 25827) - - bugfix text content consisting of just a single '0' like in {if true}0{/if} was suppressed (forum topic 25834) - - 16.12.2015 - - bugfix {foreach} did fail if from atrribute is a Generator class https://github.com/smarty-php/smarty/issues/128 - - bugfix direct access $smarty->template_dir = 'foo'; should call Smarty::setTemplateDir() https://github.com/smarty-php/smarty/issues/121 - - 15.12.2015 - - bugfix {$smarty.cookies.foo} did return the $_COOKIE array not the 'foo' value https://github.com/smarty-php/smarty/issues/122 - - bugfix a call to clearAllCache() and other should clear all internal template object caches (forum topic 25828) - - 14.12.2015 - - bugfix {$smarty.config.foo} broken in 3.1.28 https://github.com/smarty-php/smarty/issues/120 - - bugfix multiple calls of {section} with same name droped E_NOTICE error https://github.com/smarty-php/smarty/issues/118 - - - 3.1.28 - (13.12.2015) - 13.12.2015 - - bugfix {foreach} and {section} with uppercase characters in name attribute did not work (forum topic 25819) - - bugfix $smarty->debugging_ctrl = 'URL' did not work (forum topic 25811) - - bugfix Debug Console could display incorrect data when using subtemplates - - 09.12.2015 - - bugfix Smarty did fail under PHP 7.0.0 with use_include_path = true; - - 09.12.2015 - - bugfix {strip} should exclude some html tags from stripping, related to fix for https://github.com/smarty-php/smarty/issues/111 - - 08.12.2015 - - bugfix internal template function data got stored in wrong compiled file https://github.com/smarty-php/smarty/issues/114 - - 05.12.2015 - -bugfix {strip} should insert a single space https://github.com/smarty-php/smarty/issues/111 - - 25.11.2015 - -bugfix a left delimter like '[%' did fail on [%$var_[%$variable%]%] (forum topic 25798) - - 02.11.2015 - - bugfix {include} with variable file name like {include file="foo_`$bar`.tpl"} did fail in 3.1.28-dev https://github.com/smarty-php/smarty/issues/102 - - 01.11.2015 - - update config file processing - - 31.10.2015 - - bugfix add missing $trusted_dir property to SmartyBC class (forum topic 25751) - - 29.10.2015 - - improve template scope handling - - 24.10.2015 - - more optimizations of template processing - - bugfix Error when using {include} within {capture} https://github.com/smarty-php/smarty/issues/100 - - 21.10.2015 - - move some code into runtime extensions - - 18.10.2015 - - optimize filepath normalization - - rework of template inheritance - - speed and size optimizations - - bugfix under HHVM temporary cache file must only be created when caches template was updated - - fix compiled code for new {block} assign attribute - - update code generated by template function call handler - - 18.09.2015 - - bugfix {if $foo instanceof $bar} failed to compile if 2nd value is a variable https://github.com/smarty-php/smarty/issues/92 - - 17.09.2015 - - bugfix {foreach} first attribute was not correctly reset since commit 05a8fa2 of 02.08.2015 https://github.com/smarty-php/smarty/issues/90 - - 16.09.2015 - - update compiler by moving no longer needed properties, code optimizations and other - - 14.09.2015 - - optimize autoloader - - optimize subtemplate handling - - update template inheritance processing - - move code of {call} processing back into Smarty_Internal_Template class - - improvement invalidate OPCACHE for cleared compiled and cached template files (forum topic 25557) - - bugfix unintended multiple debug windows (forum topic 25699) - - 30.08.2015 - - size optimization move some runtime functions into extension - - optimize inline template processing - - optimization merge inheritance child and parent templates into one compiled template file - - 29.08.2015 - - improvement convert template inheritance into runtime processing - - bugfix {$smarty.block.parent} did always reference the root parent block https://github.com/smarty-php/smarty/issues/68 - - 23.08.2015 - - introduce Smarty::$resource_cache_mode and cache template object of {include} inside loop - - load seldom used Smarty API methods dynamically to reduce memory footprint - - cache template object of {include} if same template is included several times - - convert debug console processing to object - - use output buffers for better performance and less memory usage - - optimize nocache hash processing - - remove not really needed properties - - optimize rendering - - move caching to Smarty::_cache - - remove properties with redundant content - - optimize Smarty::templateExists() - - optimize use_include_path processing - - relocate properties for size optimization - - remove redundant code - - bugfix compiling super globals like {$smarty.get.foo} did fail in the master branch https://github.com/smarty-php/smarty/issues/77 - - 06.08.2015 - - avoid possible circular object references caused by parser/lexer objects - - rewrite compileAll... utility methods - - commit several internal improvements - - bugfix Smarty failed when compile_id did contain "|" - - 03.08.2015 - - rework clear cache methods - - bugfix compileAllConfig() was broken since 3.1.22 because of the changes in config file processing - - improve getIncludePath() to return directory if no file was given - - 02.08.2015 - - optimization and code cleanup of {foreach} and {section} compiler - - rework {capture} compiler - - 01.08.2015 - - update DateTime object can be instance of DateTimeImmutable since PHP5.5 https://github.com/smarty-php/smarty/pull/75 - - improvement show resource type and start of template source instead of uid on eval: and string: resource (forum topic 25630) - - 31.07.2015 - - optimize {foreach} and {section} compiler - - 29.07.2015 - - optimize {section} compiler for speed and size of compiled code - - 28.07.2015 - - update for PHP 7 compatibility - - 26.07.2015 - - improvement impement workaround for HHVM PHP incompatibillity https://github.com/facebook/hhvm/issues/4797 - - 25.07.2015 - - bugfix parser did hang on text starting fetch('foo.tpl') https://github.com/smarty-php/smarty/issues/70 - - improvement Added $limit parameter to regex_replace modifier #71 - - new feature multiple indices on file: resource - - 06.07.2015 - - optimize {block} compilation - - optimization get rid of __get and __set in source object - - 01.07.2015 - - optimize compile check handling - - update {foreach} compiler - - bugfix debugging console did not display string values containing \n, \r or \t correctly https://github.com/smarty-php/smarty/issues/66 - - optimize source resources - - 28.06.2015 - - move $smarty->enableSecurity() into Smarty_Security class - - optimize security isTrustedResourceDir() - - move auto load filter methods into extension - - move $smarty->getTemplateVars() into extension - - move getStreamVariable() into extension - - move $smarty->append() and $smarty->appendByRef() into extension - - optimize autoloader - - optimize file path normalization - - bugfix PATH_SEPARATOR was replaced by mistake in autoloader - - remove redundant code - - 27.06.2015 - - bugfix resolve naming conflict between custom Smarty delimiter '<%' and PHP ASP tags https://github.com/smarty-php/smarty/issues/64 - - update $smarty->_realpath for relative path not starting with './' - - update Smarty security with new realpath handling - - update {include_php} with new realpath handling - - move $smarty->loadPlugin() into extension - - minor compiler optimizations - - bugfix allow function plugins with name ending with 'close' https://github.com/smarty-php/smarty/issues/52 - - rework of $smarty->clearCompiledTemplate() and move it to its own extension - - 19.06.2015 - - improvement allow closures as callback at $smarty->registerFilter() https://github.com/smarty-php/smarty/issues/59 - - - 3.1.27- (18.06.2015) - 18.06.2015 - - bugfix another update on file path normalization failed on path containing something like "/.foo/" https://github.com/smarty-php/smarty/issues/56 - - - 3.1.26- (18.06.2015) - 18.06.2015 - - bugfix file path normalization failed on path containing something like "/.foo/" https://github.com/smarty-php/smarty/issues/56 - - 17.06.2015 - - bugfix calling a plugin with nocache option but no other attributes like {foo nocache} caused call to undefined function https://github.com/smarty-php/smarty/issues/55 - - - 3.1.25- (15.06.2015) - 15.06.2015 - - optimization of smarty_cachereource_keyvaluestore.php code - - 14.06.2015 - - bugfix a relative sub template path could fail if template_dir path did contain /../ https://github.com/smarty-php/smarty/issues/50 - - optimization rework of path normalization - - bugfix an output tag with variable, modifier followed by an operator like {$foo|modifier+1} did fail https://github.com/smarty-php/smarty/issues/53 - - 13.06.2015 - - bugfix a custom cache resource using smarty_cachereource_keyvaluestore.php did fail if php.ini mbstring.func_overload = 2 (forum topic 25568) - - 11.06.2015 - - bugfix the lexer could hang on very large quoted strings (forum topic 25570) - - 08.06.2015 - - bugfix using {$foo} as array index like $bar.{$foo} or in double quoted string like "some {$foo} thing" failed https://github.com/smarty-php/smarty/issues/49 - - 04.06.2015 - - bugfix possible error message on unset() while compiling {block} tags https://github.com/smarty-php/smarty/issues/46 - - 01.06.2015 - - bugfix including template variables broken since 3.1.22 https://github.com/smarty-php/smarty/issues/47 - - 27.05.2015 - - bugfix {include} with variable file name must not create by default individual cache file (since 3.1.22) https://github.com/smarty-php/smarty/issues/43 - - 24.05.2015 - - bugfix if condition string 'neq' broken due to a typo https://github.com/smarty-php/smarty/issues/42 - - - 3.1.24- (23.05.2015) - 23.05.2015 - - improvement on php_handling to allow very large PHP sections, better error handling - - improvement allow extreme large comment sections (forum 25538) - - 21.05.2015 - - bugfix broken PHP 5.2 compatibility when compiling 1 did compile into wrong code https://github.com/smarty-php/smarty/issues/41 - - 19.05.2015 - - bugfix compiler did overwrite existing variable value when setting the nocache attribute https://github.com/smarty-php/smarty/issues/39 - - bugfix output filter trimwhitespace could run into the pcre.backtrack_limit on large output (code.google issue 220) - - bugfix compiler could run into the pcre.backtrack_limit on larger comment or {php} tag sections (forum 25538) - - 18.05.2015 - - improvement introduce shortcuts in lexer/parser rules for most frequent terms for higher - compilation speed - - 16.05.2015 - - bugfix {php}{/php} did work just for single lines https://github.com/smarty-php/smarty/issues/33 - - improvement remove not needed ?> handling from parser to new compiler module - - 05.05.2015 - - bugfix code could be messed up when {tags} are used in multiple attributes https://github.com/smarty-php/smarty/issues/23 - - 04.05.2015 - - bugfix Smarty_Resource::parseResourceName incompatible with Google AppEngine (https://github.com/smarty-php/smarty/issues/22) - - improvement use is_file() checks to avoid errors suppressed by @ which could still cause problems (https://github.com/smarty-php/smarty/issues/24) - - 28.04.2015 - - bugfix plugins of merged subtemplates not loaded in 3.1.22-dev (forum topic 25508) 2nd fix - - 28.04.2015 - - bugfix plugins of merged subtemplates not loaded in 3.1.22-dev (forum topic 25508) - - 23.04.2015 - - bugfix a nocache template variable used as parameter at {insert} was by mistake cached - - 20.04.2015 - - bugfix at a template function containing nocache code a parmeter could overwrite a template variable of same name - - 27.03.2015 - - bugfix Smarty_Security->allow_constants=false; did also disable true, false and null (change of 16.03.2015) - - improvement added a whitelist for trusted constants to security Smarty_Security::$trusted_constants (forum topic 25471) - - 20.03.2015 - - bugfix make sure that function properties get saved only in compiled files containing the fuction definition {forum topic 25452} - - bugfix correct update of global variable values on exit of template functions. (reported under Smarty Developers) - - 16.03.2015 - - bugfix problems with {function}{/function} and {call} tags in different subtemplate cache files {forum topic 25452} - - bugfix Smarty_Security->allow_constants=false; did not disallow direct usage of defined constants like {SMARTY_DIR} {forum topic 25457} - - bugfix {block}{/block} tags did not work inside double quoted strings https://github.com/smarty-php/smarty/issues/18 - - - 15.03.2015 - - bugfix $smarty->compile_check must be restored before rendering of a just updated cache file {forum 25452} - - 14.03.2015 - - bugfix {nocache} {/nocache} tags corrupted code when used within a nocache section caused by a nocache template variable. - - - bugfix template functions defined with {function} in an included subtemplate could not be called in nocache - mode with {call... nocache} if the subtemplate had it's own cache file {forum 25452} - - 10.03.2015 - - bugfix {include ... nocache} whith variable file or compile_id attribute was not executed in nocache mode. - - 12.02.2015 - - bugfix multiple Smarty::fetch() of same template when $smarty->merge_compiled_includes = true; could cause function already defined error - - 11.02.2015 - - bugfix recursive {includes} did create E_NOTICE message when $smarty->merge_compiled_includes = true; (github issue #16) - - 22.01.2015 - - new feature security can now control access to static methods and properties - see also NEW_FEATURES.txt - - 21.01.2015 - - bugfix clearCompiledTemplates(), clearAll() and clear() could try to delete whole drive at wrong path permissions because realpath() fail (forum 25397) - - bugfix 'self::' and 'parent::' was interpreted in template syntax as static class - - 04.01.2015 - - push last weeks changes to github - - - different optimizations - - improvement automatically create different versions of compiled templates and config files depending - on property settings. - - optimization restructure template processing by moving code into classes it better belongs to - - optimization restructure config file processing - - 31.12.2014 - - bugfix use function_exists('mb_get_info') for setting Smarty::$_MBSTRING. - Function mb_split could be overloaded depending on php.ini mbstring.func_overload - - - 29.12.2014 - - new feature security can now limit the template nesting level by property $max_template_nesting - see also NEW_FEATURES.txt (forum 25370) - - 29.12.2014 - - new feature security can now disable special $smarty variables listed in property $disabled_special_smarty_vars - see also NEW_FEATURES.txt (forum 25370) - - 27.12.2014 - - bugfix clear internal _is_file_cache when plugins_dir was modified - - 13.12.2014 - - improvement optimization of lexer and parser resulting in a up to 30% higher compiling speed - - 11.12.2014 - - bugfix resolve parser ambiguity between constant print tag {CONST} and other smarty tags after change of 09.12.2014 - - 09.12.2014 - - bugfix variables $null, $true and $false did not work after the change of 12.11.2014 (forum 25342) - - bugfix call of template function by a variable name did not work after latest changes (forum 25342) - - 23.11.2014 - - bugfix a plugin with attached modifier could fail if the tag was immediately followed by another Smarty tag (since 3.1.21) (forum 25326) - - 13.11.2014 - - improvement move autoload code into Autoloader.php. Use Composer autoloader when possible - - 12.11.2014 - - new feature added support of namespaces to template code - - 08.11.2014 - 10.11.2014 - - bugfix subtemplate called in nocache mode could be called with wrong compile_id when it did change on one of the calling templates - - improvement add code of template functions called in nocache mode dynamically to cache file (related to bugfix of 01.11.2014) - - bugfix Debug Console did not include all data from merged compiled subtemplates - - 04.11.2014 - - new feature $smarty->debugging = true; => overwrite existing Debug Console window (old behaviour) - $smarty->debugging = 2; => individual Debug Console window by template name - - 03.11.2014 - - bugfix Debug Console did not show included subtemplates since 3.1.17 (forum 25301) - - bugfix Modifier debug_print_var did not limit recursion or prevent recursive object display at Debug Console - (ATTENTION: parameter order has changed to be able to specify maximum recursion) - - bugfix Debug consol did not include subtemplate information with $smarty->merge_compiled_includes = true - - improvement The template variables are no longer displayed as objects on the Debug Console - - improvement $smarty->createData($parent = null, $name = null) new optional name parameter for display at Debug Console - - addition of some hooks for future extension of Debug Console - - 01.11.2014 - - bugfix and enhancement on subtemplate {include} and template {function} tags. - * Calling a template which has a nocache section could fail if it was called from a cached and a not cached subtemplate. - * Calling the same subtemplate cached and not cached with the $smarty->merge_compiled_includes enabled could cause problems - * Many smaller related changes - - 30.10.2014 - - bugfix access to class constant by object like {$object::CONST} or variable class name {$class::CONST} did not work (forum 25301) - - 26.10.2014 - - bugfix E_NOTICE message was created during compilation when ASP tags '<%' or '%>' are in template source text - - bugfix merge_compiled_includes option failed when caching enables and same subtemplate was included cached and not cached - - - 3.1.21 - (18.10.2014) - 18.10.2014 - - composer moved to github - - 17.10.2014 - - bugfix on $php_handling security and optimization of smarty_internal_parsetree (Thue Kristensen) - - 16.10.2014 - - bugfix composer.json update - - 15.10.2014 - - bugfix calling a new created cache file with fetch() and Smarty::CACHING_LIFETIME_SAVED multiple times did fail (forum 22350) - - 14.10.2014 - - bugfix any tag placed within " diff --git a/www/lib/smarty-4.0.0/libs/plugins/block.t.php b/www/lib/smarty-4.0.0/libs/plugins/block.t.php deleted file mode 100644 index fb34307f..00000000 --- a/www/lib/smarty-4.0.0/libs/plugins/block.t.php +++ /dev/null @@ -1,120 +0,0 @@ -register_block('t', 'smarty_translate'); - * - * @package smarty-gettext - * @version $Id: block.t.php 4737 2013-12-11 06:29:51Z gullevek $ - * @link http://smarty-gettext.sf.net/ - * @author Sagi Bashari - * @copyright 2004 Sagi Bashari - */ - -/** - * Replace arguments in a string with their values. Arguments are represented by % followed by their number. - * - * @param string Source string - * @param mixed Arguments, can be passed in an array or through single variables. - * @returns string Modified string - */ -function strarg($str) -{ - $tr = array(); - $p = 0; - - for ($i=1; $i < func_num_args(); $i++) { - $arg = func_get_arg($i); - - if (is_array($arg)) { - foreach ($arg as $aarg) { - $tr['%'.++$p] = $aarg; - } - } else { - $tr['%'.++$p] = $arg; - } - } - - return strtr($str, $tr); -} - -/** - * Smarty block function, provides gettext support for smarty. - * - * The block content is the text that should be translated. - * - * Any parameter that is sent to the function will be represented as %n in the translation text, - * where n is 1 for the first parameter. The following parameters are reserved: - * - escape - sets escape mode: - * - 'html' for HTML escaping, this is the default. - * - 'js' for javascript escaping. - * - 'no'/'off'/0 - turns off escaping - * - plural - The plural version of the text (2nd parameter of ngettext()) - * - count - The item count for plural mode (3rd parameter of ngettext()) - */ - -// cs modified: __ calls instead of direct gettext calls - -function smarty_block_t($params, $text, $template, &$repeat) -{ - if ($text) { - $text = stripslashes($text); - - // set escape mode - if (isset($params['escape'])) { - $escape = $params['escape']; - unset($params['escape']); - } - - // set plural version - if (isset($params['plural'])) { - $plural = $params['plural']; - unset($params['plural']); - - // set count - if (isset($params['count'])) { - $count = $params['count']; - unset($params['count']); - } - } - - // use plural if required parameters are set - if (isset($count) && isset($plural)) { - $text = $template->l10n->__ngettext($text, $plural, $count); - } else { // use normal - $text = $template->l10n->__($text); - } - - // run strarg if there are parameters - if (count($params)) { - $text = strarg($text, $params); - } - - if (!isset($escape) || $escape == 'html') { // html escape, default - $text = nl2br(htmlspecialchars($text)); - } elseif (isset($escape) && ($escape == 'javascript' || $escape == 'js')) { // javascript escape - $text = str_replace('\'','\\\'',stripslashes($text)); - } - - return $text; - } -} - -?> diff --git a/www/lib/smarty-4.0.0/libs/plugins/block.textformat.php b/www/lib/smarty-4.0.0/libs/plugins/block.textformat.php deleted file mode 100644 index fed090e4..00000000 --- a/www/lib/smarty-4.0.0/libs/plugins/block.textformat.php +++ /dev/null @@ -1,121 +0,0 @@ - - * @throws \SmartyException - */ -function smarty_block_textformat($params, $content, Smarty_Internal_Template $template, &$repeat) -{ - if (is_null($content)) { - return; - } - if (Smarty::$_MBSTRING) { - $template->_checkPlugins( - array( - array( - 'function' => 'smarty_modifier_mb_wordwrap', - 'file' => SMARTY_PLUGINS_DIR . 'modifier.mb_wordwrap.php' - ) - ) - ); - } - $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: - trigger_error("textformat: unknown attribute '{$_key}'"); - } - } - if ($style === 'email') { - $wrap = 72; - } - // split into paragraphs - $_paragraphs = preg_split('![\r\n]{2}!', $content); - foreach ($_paragraphs as &$_paragraph) { - if (!$_paragraph) { - continue; - } - // convert mult. spaces & special chars to single space - $_paragraph = - preg_replace( - array( - '!\s+!' . Smarty::$_UTF8_MODIFIER, - '!(^\s+)|(\s+$)!' . Smarty::$_UTF8_MODIFIER - ), - array( - ' ', - '' - ), - $_paragraph - ); - // indent first line - if ($indent_first > 0) { - $_paragraph = str_repeat($indent_char, $indent_first) . $_paragraph; - } - // wordwrap sentences - if (Smarty::$_MBSTRING) { - $_paragraph = smarty_modifier_mb_wordwrap($_paragraph, $wrap - $indent, $wrap_char, $wrap_cut); - } else { - $_paragraph = wordwrap($_paragraph, $wrap - $indent, $wrap_char, $wrap_cut); - } - // indent lines - if ($indent > 0) { - $_paragraph = preg_replace('!^!m', str_repeat($indent_char, $indent), $_paragraph); - } - } - $_output = implode($wrap_char . $wrap_char, $_paragraphs); - if ($assign) { - $template->assign($assign, $_output); - } else { - return $_output; - } -} diff --git a/www/lib/smarty-4.0.0/libs/plugins/function.counter.php b/www/lib/smarty-4.0.0/libs/plugins/function.counter.php deleted file mode 100644 index 54795459..00000000 --- a/www/lib/smarty-4.0.0/libs/plugins/function.counter.php +++ /dev/null @@ -1,62 +0,0 @@ - - * @link https://www.smarty.net/manual/en/language.function.counter.php {counter} - * (Smarty online manual) - * - * @param array $params parameters - * @param Smarty_Internal_Template $template template object - * - * @return string|null - */ -function smarty_function_counter($params, $template) -{ - 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' ])) { - $template->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; -} diff --git a/www/lib/smarty-4.0.0/libs/plugins/function.cycle.php b/www/lib/smarty-4.0.0/libs/plugins/function.cycle.php deleted file mode 100644 index 79356999..00000000 --- a/www/lib/smarty-4.0.0/libs/plugins/function.cycle.php +++ /dev/null @@ -1,92 +0,0 @@ - - * @author credit to Mark Priatel - * @author credit to Gerard - * @author credit to Jason Sweat - * @version 1.3 - * - * @param array $params parameters - * @param Smarty_Internal_Template $template template object - * - * @return string|null - */ -function smarty_function_cycle($params, $template) -{ - 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 (!isset($params[ 'values' ])) { - if (!isset($cycle_vars[ $name ][ 'values' ])) { - 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' ]; - } - if (isset($params[ 'delimiter' ])) { - $cycle_vars[ $name ][ 'delimiter' ] = $params[ 'delimiter' ]; - } elseif (!isset($cycle_vars[ $name ][ 'delimiter' ])) { - $cycle_vars[ $name ][ '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; - $template->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; -} diff --git a/www/lib/smarty-4.0.0/libs/plugins/function.fetch.php b/www/lib/smarty-4.0.0/libs/plugins/function.fetch.php deleted file mode 100644 index 4a3e8819..00000000 --- a/www/lib/smarty-4.0.0/libs/plugins/function.fetch.php +++ /dev/null @@ -1,204 +0,0 @@ - - * - * @param array $params parameters - * @param Smarty_Internal_Template $template template object - * - * @throws SmartyException - * @return string|null if the assign parameter is passed, Smarty assigns the result to a template variable - */ -function smarty_function_fetch($params, $template) -{ - if (empty($params[ 'file' ])) { - trigger_error('[plugin] fetch parameter \'file\' cannot be empty', E_USER_NOTICE); - return; - } - // strip file protocol - if (stripos($params[ 'file' ], 'file://') === 0) { - $params[ 'file' ] = substr($params[ 'file' ], 7); - } - $protocol = strpos($params[ 'file' ], '://'); - if ($protocol !== false) { - $protocol = strtolower(substr($params[ 'file' ], 0, $protocol)); - } - if (isset($template->smarty->security_policy)) { - if ($protocol) { - // remote resource (or php stream, …) - if (!$template->smarty->security_policy->isTrustedUri($params[ 'file' ])) { - return; - } - } else { - // local file - if (!$template->smarty->security_policy->isTrustedResourceDir($params[ 'file' ])) { - return; - } - } - } - $content = ''; - if ($protocol === 'http') { - // 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::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)) { - trigger_error("[plugin] invalid header format '{$param_value}'", E_USER_NOTICE); - 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 { - trigger_error("[plugin] invalid value for attribute '{$param_key }'", E_USER_NOTICE); - 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 { - trigger_error("[plugin] invalid value for attribute '{$param_key}'", E_USER_NOTICE); - return; - } - break; - default: - trigger_error("[plugin] unrecognized attribute '{$param_key}'", E_USER_NOTICE); - 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) { - trigger_error("[plugin] unable to fetch: $errstr ($errno)", E_USER_NOTICE); - 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 = preg_split("!\r\n\r\n!", $content, 2); - $content = $csplit[ 1 ]; - if (!empty($params[ 'assign_headers' ])) { - $template->assign($params[ 'assign_headers' ], preg_split("!\r\n!", $csplit[ 0 ])); - } - } - } else { - trigger_error("[plugin fetch] unable to parse URL, check syntax", E_USER_NOTICE); - return; - } - } else { - $content = @file_get_contents($params[ 'file' ]); - if ($content === false) { - throw new SmartyException("{fetch} cannot read resource '" . $params[ 'file' ] . "'"); - } - } - if (!empty($params[ 'assign' ])) { - $template->assign($params[ 'assign' ], $content); - } else { - return $content; - } -} diff --git a/www/lib/smarty-4.0.0/libs/plugins/function.html_checkboxes.php b/www/lib/smarty-4.0.0/libs/plugins/function.html_checkboxes.php deleted file mode 100644 index 0ed418ec..00000000 --- a/www/lib/smarty-4.0.0/libs/plugins/function.html_checkboxes.php +++ /dev/null @@ -1,296 +0,0 @@ -' output=$names} - * {html_checkboxes values=$ids checked=$checked separator='
' output=$names} - * - * Params: - * - * - 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 - * - escape (optional) - escape the content (not value), defaults to true - * - * @link https://www.smarty.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 $params parameters - * @param Smarty_Internal_Template $template template object - * - * @return string - * @uses smarty_function_escape_special_chars() - * @throws \SmartyException - */ -function smarty_function_html_checkboxes($params, Smarty_Internal_Template $template) -{ - $template->_checkPlugins( - array( - array( - 'function' => 'smarty_function_escape_special_chars', - 'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php' - ) - ) - ); - $name = 'checkbox'; - $values = null; - $options = null; - $selected = array(); - $separator = ''; - $escape = true; - $labels = true; - $label_ids = false; - $output = null; - $pos = null; - $extra = ''; - foreach ($params as $_key => $_val) { - switch ($_key) { - case 'name': - case 'separator': - $$_key = (string)$_val; - break; - case 'escape': - case 'labels': - case 'label_ids': - $$_key = (bool)$_val; - break; - case 'options': - $$_key = (array)$_val; - break; - case 'values': - case 'output': - $$_key = array_values((array)$_val); - break; - case 'checked': - case 'selected': - if (is_array($_val)) { - $selected = array(); - foreach ($_val as $_sel) { - if (is_object($_sel)) { - if (method_exists($_sel, '__toString')) { - $_sel = smarty_function_escape_special_chars((string)$_sel->__toString()); - } else { - trigger_error( - 'html_checkboxes: selected attribute contains an object of class \'' . - get_class($_sel) . '\' without __toString() method', - E_USER_NOTICE - ); - continue; - } - } else { - $_sel = smarty_function_escape_special_chars((string)$_sel); - } - $selected[ $_sel ] = true; - } - } elseif (is_object($_val)) { - if (method_exists($_val, '__toString')) { - $selected = smarty_function_escape_special_chars((string)$_val->__toString()); - } else { - trigger_error( - 'html_checkboxes: selected attribute is an object of class \'' . get_class($_val) . - '\' without __toString() method', - E_USER_NOTICE - ); - } - } else { - $selected = smarty_function_escape_special_chars((string)$_val); - } - break; - case 'checkboxes': - 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; - case 'pos': - $$_key = array_values((array)$_val); - break; - case 'strict': - break; - case 'disabled': - case 'readonly': - if (!empty($params[ 'strict' ])) { - if (!is_scalar($_val)) { - trigger_error( - "html_options: {$_key} attribute must be a scalar, only boolean true or string '{$_key}' will actually add the attribute", - E_USER_NOTICE - ); - } - if ($_val === true || $_val === $_key) { - $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_key) . '"'; - } - break; - } - // omit break; to fall through! - // no break - default: - if (!is_array($_val)) { - $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"'; - } else { - trigger_error("html_checkboxes: extra attribute '{$_key}' cannot be an array", E_USER_NOTICE); - } - break; - } - } - if (!isset($options) && !isset($values)) { - return ''; - } /* raise error here? */ - $_html_result = array(); - if (isset($options)) { - foreach ($options as $_key => $_val) { - $_pos = isset($pos[ $_key ]) ? $pos[ $_key ] : ''; - $_html_result[] = - smarty_function_html_checkboxes_output( - $name, - $_key, - $_val, - $selected, - $extra, - $separator, - $labels, - $label_ids, - $_pos, - $escape - ); - } - } else { - foreach ($values as $_i => $_key) { - $_val = isset($output[ $_i ]) ? $output[ $_i ] : ''; - $_pos = isset($pos[ $_i ]) ? $pos[ $_i ] : ''; - $_html_result[] = - smarty_function_html_checkboxes_output( - $name, - $_key, - $_val, - $selected, - $extra, - $separator, - $labels, - $label_ids, - $_pos, - $escape - ); - } - } - if (!empty($params[ 'assign' ])) { - $template->assign($params[ 'assign' ], $_html_result); - } else { - return implode("\n", $_html_result); - } -} - -/** - * @param $name - * @param $value - * @param $output - * @param $selected - * @param $extra - * @param $separator - * @param $labels - * @param $label_ids - * @param $pos - * @param bool $escape - * - * @return string - */ -function smarty_function_html_checkboxes_output( - $name, - $value, - $output, - $selected, - $extra, - $separator, - $labels, - $label_ids, - $pos, - $escape = true -) { - $_output = ''; - if (is_object($value)) { - if (method_exists($value, '__toString')) { - $value = (string)$value->__toString(); - } else { - trigger_error( - 'html_options: value is an object of class \'' . get_class($value) . - '\' without __toString() method', - E_USER_NOTICE - ); - return ''; - } - } else { - $value = (string)$value; - } - if (is_object($output)) { - if (method_exists($output, '__toString')) { - $output = (string)$output->__toString(); - } else { - trigger_error( - 'html_options: output is an object of class \'' . get_class($output) . - '\' without __toString() method', - E_USER_NOTICE - ); - return ''; - } - } else { - $output = (string)$output; - } - if ($labels) { - if ($label_ids) { - $_id = smarty_function_escape_special_chars( - preg_replace( - '![^\w\-\.]!' . Smarty::$_UTF8_MODIFIER, - '_', - $name . '_' . $value - ) - ); - $_output .= '