From b7fe62f7a5deb413bf5545670dd8b9d7dc008960 Mon Sep 17 00:00:00 2001 From: Lance Albertson Date: Thu, 6 Jun 2024 16:55:17 -0700 Subject: [PATCH 1/3] Set workdir as a library so this works on EL8 Signed-off-by: Lance Albertson --- build | 1 + foomatic/query.in | 1 + 2 files changed, 2 insertions(+) diff --git a/build b/build index 03cd80f..d99d63d 100755 --- a/build +++ b/build @@ -50,6 +50,7 @@ SITECONFPHP="../inc/siteconf.php" perl -p -e "s:\@DRIVERDIR\@:$DRIVERDIR:" | \ perl -p -e "s:\@DRIVERDIRURL\@:$DRIVERDIRURL:" | \ perl -p -e "s:\@PPDDIRURL\@:$PPDDIRURL:" | \ + perl -p -e "s:\@WORKDIR\@:$WORKDIR:" | \ perl -p -e "s:\@LIBDIR\@:$ALIBDIR:" > ${file%.in} chmod +x ${file%.in} done diff --git a/foomatic/query.in b/foomatic/query.in index 6aadef0..2a3914d 100644 --- a/foomatic/query.in +++ b/foomatic/query.in @@ -7,6 +7,7 @@ use Digest::MD5 qw(md5_hex); use strict; +use lib "@WORKDIR@"; use lib "@LIBDIR@"; use Foomatic::Defaults; use Foomatic::DB; From 6286408ce786eeee555201cb6b9919442250996e Mon Sep 17 00:00:00 2001 From: Lance Albertson Date: Fri, 7 Jun 2024 09:55:56 -0700 Subject: [PATCH 2/3] PHP 7.4 fixes - Create composer.json and migrate to using smarty 5.3 - Switch to autoloadingn from composer - Various updates to get support for PHP 7.4 Signed-off-by: Lance Albertson --- composer.json | 20 + composer.lock | 172 + driver_detail.php | 20 +- driver_list.php | 4 +- inc/common.php | 7 +- inc/db.php | 76 +- inc/db/driver/driver.php | 120 +- inc/db/driver/driver_dependency.php | 12 +- inc/db/driver/driver_package.php | 14 +- inc/db/driver/driver_support_contact.php | 38 +- inc/db/driver_printer_association.php | 46 +- inc/db/opdb.php | 84 +- inc/db/option/option.php | 72 +- inc/db/option/option_choice.php | 38 +- inc/db/option/option_constraint.php | 32 +- inc/db/printer/printer.php | 90 +- inc/db/processtarballs.php | 40 +- inc/db/translation.php | 28 +- inc/page.php | 4 +- inc/rss_parser.php | 8 +- inc/smarty/Smarty.class.php | 1533 ------- inc/smarty/SmartyBC.class.php | 460 -- inc/smarty/debug.tpl | 133 - inc/smarty/plugins/block.textformat.php | 113 - inc/smarty/plugins/function.counter.php | 78 - inc/smarty/plugins/function.cycle.php | 106 - inc/smarty/plugins/function.fetch.php | 214 - .../plugins/function.html_checkboxes.php | 233 -- inc/smarty/plugins/function.html_image.php | 159 - inc/smarty/plugins/function.html_options.php | 193 - inc/smarty/plugins/function.html_radios.php | 217 - .../plugins/function.html_select_date.php | 394 -- .../plugins/function.html_select_time.php | 366 -- inc/smarty/plugins/function.html_table.php | 177 - inc/smarty/plugins/function.mailto.php | 152 - inc/smarty/plugins/function.math.php | 87 - inc/smarty/plugins/modifier.capitalize.php | 65 - inc/smarty/plugins/modifier.date_format.php | 65 - .../plugins/modifier.debug_print_var.php | 105 - inc/smarty/plugins/modifier.escape.php | 188 - inc/smarty/plugins/modifier.regex_replace.php | 55 - inc/smarty/plugins/modifier.replace.php | 33 - inc/smarty/plugins/modifier.spacify.php | 27 - inc/smarty/plugins/modifier.truncate.php | 59 - inc/smarty/plugins/modifiercompiler.cat.php | 30 - .../modifiercompiler.count_characters.php | 33 - .../modifiercompiler.count_paragraphs.php | 28 - .../modifiercompiler.count_sentences.php | 28 - .../plugins/modifiercompiler.count_words.php | 32 - .../plugins/modifiercompiler.default.php | 35 - .../plugins/modifiercompiler.escape.php | 125 - .../plugins/modifiercompiler.from_charset.php | 34 - .../plugins/modifiercompiler.indent.php | 32 - inc/smarty/plugins/modifiercompiler.lower.php | 31 - .../plugins/modifiercompiler.noprint.php | 25 - .../modifiercompiler.string_format.php | 26 - inc/smarty/plugins/modifiercompiler.strip.php | 33 - .../plugins/modifiercompiler.strip_tags.php | 28 - .../plugins/modifiercompiler.to_charset.php | 34 - .../plugins/modifiercompiler.unescape.php | 51 - inc/smarty/plugins/modifiercompiler.upper.php | 30 - .../plugins/modifiercompiler.wordwrap.php | 46 - .../plugins/outputfilter.trimwhitespace.php | 94 - .../plugins/shared.escape_special_chars.php | 51 - .../plugins/shared.literal_compiler_param.php | 33 - inc/smarty/plugins/shared.make_timestamp.php | 42 - inc/smarty/plugins/shared.mb_str_replace.php | 55 - inc/smarty/plugins/shared.mb_unicode.php | 48 - inc/smarty/plugins/shared.mb_wordwrap.php | 83 - .../variablefilter.htmlspecialchars.php | 21 - .../sysplugins/smarty_cacheresource.php | 381 -- .../smarty_cacheresource_custom.php | 237 -- .../sysplugins/smarty_config_source.php | 95 - .../smarty_internal_cacheresource_file.php | 275 -- .../smarty_internal_compile_append.php | 53 - .../smarty_internal_compile_assign.php | 88 - .../smarty_internal_compile_block.php | 283 -- .../smarty_internal_compile_break.php | 77 - .../smarty_internal_compile_call.php | 130 - .../smarty_internal_compile_capture.php | 98 - .../smarty_internal_compile_config_load.php | 85 - .../smarty_internal_compile_continue.php | 78 - .../smarty_internal_compile_debug.php | 43 - .../smarty_internal_compile_eval.php | 73 - .../smarty_internal_compile_extends.php | 133 - .../smarty_internal_compile_for.php | 151 - .../smarty_internal_compile_foreach.php | 231 - .../smarty_internal_compile_function.php | 166 - .../sysplugins/smarty_internal_compile_if.php | 207 - .../smarty_internal_compile_include.php | 215 - .../smarty_internal_compile_include_php.php | 108 - .../smarty_internal_compile_insert.php | 142 - .../smarty_internal_compile_ldelim.php | 41 - .../smarty_internal_compile_nocache.php | 73 - ..._internal_compile_private_block_plugin.php | 87 - ...ternal_compile_private_function_plugin.php | 73 - ...arty_internal_compile_private_modifier.php | 140 - ..._compile_private_object_block_function.php | 88 - ...ternal_compile_private_object_function.php | 79 - ...ernal_compile_private_print_expression.php | 156 - ...ernal_compile_private_registered_block.php | 113 - ...al_compile_private_registered_function.php | 81 - ...ernal_compile_private_special_variable.php | 111 - .../smarty_internal_compile_rdelim.php | 41 - .../smarty_internal_compile_section.php | 203 - .../smarty_internal_compile_setfilter.php | 72 - .../smarty_internal_compile_while.php | 94 - .../smarty_internal_compilebase.php | 176 - .../sysplugins/smarty_internal_config.php | 302 -- .../smarty_internal_config_file_compiler.php | 144 - .../smarty_internal_configfilelexer.php | 622 --- .../sysplugins/smarty_internal_data.php | 556 --- .../sysplugins/smarty_internal_debug.php | 206 - .../smarty_internal_filter_handler.php | 70 - .../smarty_internal_function_call_handler.php | 55 - .../smarty_internal_get_include_path.php | 48 - .../smarty_internal_nocache_insert.php | 53 - .../sysplugins/smarty_internal_parsetree.php | 395 -- .../smarty_internal_resource_eval.php | 94 - .../smarty_internal_resource_extends.php | 162 - .../smarty_internal_resource_file.php | 90 - .../smarty_internal_resource_php.php | 114 - .../smarty_internal_resource_registered.php | 95 - .../smarty_internal_resource_stream.php | 78 - .../smarty_internal_resource_string.php | 96 - ...smarty_internal_smartytemplatecompiler.php | 127 - .../sysplugins/smarty_internal_template.php | 697 --- .../smarty_internal_templatebase.php | 811 ---- .../smarty_internal_templatecompilerbase.php | 672 --- .../smarty_internal_templatelexer.php | 1203 ------ .../smarty_internal_templateparser.php | 3254 --------------- .../sysplugins/smarty_internal_utility.php | 830 ---- .../sysplugins/smarty_internal_write_file.php | 88 - inc/smarty/sysplugins/smarty_resource.php | 857 ---- .../sysplugins/smarty_resource_custom.php | 96 - .../sysplugins/smarty_resource_recompiled.php | 36 - .../sysplugins/smarty_resource_uncompiled.php | 44 - inc/smarty/sysplugins/smarty_security.php | 459 -- maint/scripts/commitppdstobzr.php | 6 +- maint/scripts/commitppdstogit.php | 6 +- maint/scripts/exporttobzr.php | 6 +- maint/scripts/exporttogit.php | 6 +- modules/ajax/printers.php | 18 +- printer_detail.php | 56 +- printer_list.php | 6 +- printer_manufacturer.php | 10 +- query.php | 2 +- vendor/autoload.php | 25 + vendor/composer/ClassLoader.php | 585 +++ vendor/composer/InstalledVersions.php | 359 ++ vendor/composer/LICENSE | 19 + vendor/composer/autoload_classmap.php | 10 + vendor/composer/autoload_files.php | 11 + vendor/composer/autoload_namespaces.php | 9 + vendor/composer/autoload_psr4.php | 11 + vendor/composer/autoload_real.php | 50 + vendor/composer/autoload_static.php | 46 + vendor/composer/installed.json | 162 + vendor/composer/installed.php | 41 + vendor/composer/platform_check.php | 26 + vendor/smarty/smarty/CHANGELOG.md | 3718 +++++++++++++++++ vendor/smarty/smarty/CONTRIBUTING.md | 119 + vendor/smarty/smarty/LICENSE | 179 + vendor/smarty/smarty/Makefile | 19 + vendor/smarty/smarty/README.md | 20 + vendor/smarty/smarty/SECURITY.md | 20 + vendor/smarty/smarty/TODO.txt | 32 + vendor/smarty/smarty/changelog/.gitkeep | 0 vendor/smarty/smarty/composer.json | 53 + vendor/smarty/smarty/demo/configs/test.conf | 5 + vendor/smarty/smarty/demo/index.php | 35 + .../smarty/smarty/demo/templates/footer.tpl | 2 + .../smarty/smarty/demo/templates/header.tpl | 5 + vendor/smarty/smarty/demo/templates/index.tpl | 85 + vendor/smarty/smarty/docs/_config.yml | 1 + vendor/smarty/smarty/docs/api/basics.md | 93 + .../smarty/smarty/docs/api/caching/basics.md | 184 + .../docs/api/caching/custom-storage-layers.md | 36 + .../caching/multiple-caches-per-template.md | 137 + vendor/smarty/smarty/docs/api/configuring.md | 196 + .../smarty/docs/api/extending/block-tags.md | 59 + .../smarty/docs/api/extending/extensions.md | 101 + .../smarty/docs/api/extending/introduction.md | 10 + .../smarty/docs/api/extending/modifiers.md | 27 + .../smarty/smarty/docs/api/extending/tags.md | 84 + .../smarty/docs/api/filters/output-filters.md | 35 + .../smarty/docs/api/filters/postfilters.md | 33 + .../smarty/docs/api/filters/prefilters.md | 26 + vendor/smarty/smarty/docs/api/inheritance.md | 130 + vendor/smarty/smarty/docs/api/rendering.md | 86 + vendor/smarty/smarty/docs/api/resources.md | 322 ++ vendor/smarty/smarty/docs/api/security.md | 119 + .../smarty/docs/api/variables/assigning.md | 139 + .../smarty/docs/api/variables/config-files.md | 88 + .../smarty/docs/api/variables/objects.md | 106 + .../api/variables/static-class-methods.md | 39 + .../smarty/docs/api/variables/streams.md | 16 + vendor/smarty/smarty/docs/appendixes/tips.md | 273 ++ .../smarty/docs/appendixes/troubleshooting.md | 104 + .../designers/chapter-debugging-console.md | 39 + .../smarty/docs/designers/config-files.md | 74 + .../designers/language-basic-syntax/index.md | 33 + .../language-escaping.md | 78 + .../language-syntax-attributes.md | 49 + .../language-syntax-comments.md | 69 + .../language-syntax-operators.md | 88 + .../language-syntax-quotes.md | 54 + .../language-syntax-tags.md | 39 + .../language-syntax-variables.md | 106 + .../designers/language-builtin-functions.md | 0 .../language-builtin-functions/index.md | 35 + .../language-function-append.md | 49 + .../language-function-assign.md | 148 + .../language-function-block.md | 201 + .../language-function-call.md | 77 + .../language-function-capture.md | 75 + .../language-function-config-load.md | 87 + .../language-function-debug.md | 17 + .../language-function-extends.md | 37 + .../language-function-for.md | 91 + .../language-function-foreach.md | 389 ++ .../language-function-function.md | 89 + .../language-function-if.md | 92 + .../language-function-include.md | 187 + .../language-function-insert.md | 0 .../language-function-ldelim.md | 51 + .../language-function-literal.md | 34 + .../language-function-nocache.md | 20 + .../language-function-section.md | 610 +++ .../language-function-setfilter.md | 43 + .../language-function-strip.md | 45 + .../language-function-while.md | 20 + .../designers/language-combining-modifiers.md | 32 + .../language-custom-functions/index.md | 19 + .../language-function-counter.md | 45 + .../language-function-cycle.md | 55 + .../language-function-debug.md | 14 + .../language-function-eval.md | 81 + .../language-function-fetch.md | 61 + .../language-function-html-checkboxes.md | 102 + .../language-function-html-image.md | 58 + .../language-function-html-options.md | 146 + .../language-function-html-radios.md | 104 + .../language-function-html-select-date.md | 118 + .../language-function-html-select-time.md | 100 + .../language-function-html-table.md | 93 + .../language-function-mailto.md | 61 + .../language-function-math.md | 99 + .../language-function-textformat.md | 182 + .../designers/language-modifiers/index.md | 104 + .../language-modifier-capitalize.md | 49 + .../language-modifier-cat.md | 36 + .../language-modifier-count-characters.md | 43 + .../language-modifier-count-paragraphs.md | 41 + .../language-modifier-count-sentences.md | 39 + .../language-modifier-count-words.md | 35 + .../language-modifier-count.md | 21 + .../language-modifier-date-format.md | 145 + .../language-modifier-debug-print-var.md | 26 + .../language-modifier-default.md | 45 + .../language-modifier-escape.md | 78 + .../language-modifier-from-charset.md | 20 + .../language-modifier-indent.md | 67 + .../language-modifier-is_array.md | 9 + .../language-modifier-isset.md | 11 + .../language-modifier-join.md | 26 + .../language-modifier-json-encode.md | 27 + .../language-modifier-lower.md | 34 + .../language-modifier-nl2br.md | 37 + .../language-modifier-noprint.md | 9 + .../language-modifier-number-format.md | 32 + .../language-modifier-regex-replace.md | 55 + .../language-modifier-replace.md | 45 + .../language-modifier-round.md | 35 + .../language-modifier-spacify.md | 44 + .../language-modifier-split.md | 32 + .../language-modifier-str-repeat.md | 14 + .../language-modifier-string-format.md | 43 + .../language-modifier-strip-tags.md | 46 + .../language-modifier-strip.md | 42 + .../language-modifier-strlen.md | 9 + .../language-modifier-substr.md | 25 + .../language-modifier-to-charset.md | 20 + .../language-modifier-truncate.md | 57 + .../language-modifier-unescape.md | 43 + .../language-modifier-upper.md | 33 + .../language-modifier-wordwrap.md | 73 + .../designers/language-variables/index.md | 36 + .../language-assigned-variables.md | 126 + .../language-config-variables.md | 79 + .../language-variable-scopes.md | 60 + .../language-variables-smarty.md | 155 + vendor/smarty/smarty/docs/features.md | 151 + vendor/smarty/smarty/docs/getting-started.md | 197 + vendor/smarty/smarty/docs/img/favicon.ico | Bin 0 -> 7782 bytes vendor/smarty/smarty/docs/index.md | 35 + vendor/smarty/smarty/docs/philosophy.md | 107 + .../api-functions/add-extension.md | 0 .../api-functions/api-add-plugins-dir.md | 42 + .../programmers/api-functions/api-append.md | 60 + .../programmers/api-functions/api-assign.md | 83 + .../api-functions/api-clear-all-assign.md | 34 + .../api-functions/api-clear-all-cache.md | 37 + .../api-functions/api-clear-assign.md | 32 + .../api-functions/api-clear-cache.md | 60 + .../api-functions/api-clear-compiled-tpl.md | 44 + .../api-functions/api-clear-config.md | 35 + .../api-functions/api-compile-all-config.md | 61 + .../api-compile-all-templates.md | 71 + .../api-functions/api-config-load.md | 47 + .../api-functions/api-create-data.md | 52 + .../api-functions/api-create-template.md | 99 + .../api-functions/api-disable-security.md | 15 + .../programmers/api-functions/api-display.md | 84 + .../api-functions/api-enable-security.md | 41 + .../programmers/api-functions/api-fetch.md | 91 + .../api-functions/api-get-config-dir.md | 40 + .../api-functions/api-get-config-vars.md | 37 + .../api-functions/api-get-plugins-dir.md | 31 + .../api-get-registered-object.md | 36 + .../api-functions/api-get-template-vars.md | 37 + .../api-functions/api-is-cached.md | 81 + .../api-functions/api-load-filter.md | 41 + .../api-functions/api-mute-expected-errors.md | 21 + .../api-register-cacheresource.md | 40 + .../api-functions/api-register-class.md | 68 + .../api-register-default-plugin-handler.md | 93 + .../api-functions/api-register-filter.md | 44 + .../api-functions/api-register-object.md | 44 + .../api-functions/api-register-plugin.md | 110 + .../api-functions/api-register-resource.md | 46 + .../api-functions/api-set-plugins-dir.md | 46 + .../api-functions/api-test-install.md | 22 + .../api-unregister-cacheresource.md | 28 + .../api-functions/api-unregister-filter.md | 23 + .../api-functions/api-unregister-object.md | 17 + .../api-functions/api-unregister-plugin.md | 36 + .../api-functions/api-unregister-resource.md | 28 + .../api-variables/variable-auto-literal.md | 17 + .../api-variables/variable-cache-dir.md | 35 + .../api-variables/variable-cache-id.md | 11 + .../api-variables/variable-cache-lifetime.md | 30 + .../api-variables/variable-cache-locking.md | 11 + .../variable-cache-modified-check.md | 11 + .../api-variables/variable-caching-type.md | 9 + .../api-variables/variable-caching.md | 38 + .../api-variables/variable-compile-dir.md | 29 + .../api-variables/variable-compile-id.md | 44 + .../api-variables/variable-compile-locking.md | 7 + .../api-variables/variable-compiler-class.md | 6 + .../variable-config-booleanize.md | 8 + .../api-variables/variable-config-dir.md | 23 + .../variable-config-overwrite.md | 40 + .../variable-config-read-hidden.md | 8 + .../api-variables/variable-debug-template.md | 8 + .../api-variables/variable-debugging-ctrl.md | 20 + .../api-variables/variable-debugging.md | 17 + .../variable-default-config-handler-func.md | 50 + .../variable-default-config-type.md | 7 + .../variable-default-modifiers.md | 8 + .../variable-default-resource-type.md | 7 + .../variable-default-template-handler-func.md | 50 + .../api-variables/variable-error-reporting.md | 17 + .../api-variables/variable-escape-html.md | 21 + .../api-variables/variable-force-cache.md | 6 + .../api-variables/variable-force-compile.md | 9 + .../api-variables/variable-locking-timeout.md | 7 + .../variable-merge-compiled-includes.md | 27 + .../api-variables/variable-smarty-debug-id.md | 9 + .../api-variables/variable-template-dir.md | 26 + .../variable-use-include-path.md | 0 .../api-variables/variable-use-sub-dirs.md | 31 + vendor/smarty/smarty/docs/upgrading.md | 157 + vendor/smarty/smarty/libs/Smarty.class.php | 42 + vendor/smarty/smarty/mkdocs.yml | 156 + .../smarty/run-tests-for-all-php-versions.sh | 16 + vendor/smarty/smarty/run-tests.sh | 10 + .../smarty/smarty/src/BlockHandler/Base.php | 19 + .../BlockHandler/BlockHandlerInterface.php | 10 + .../src/BlockHandler/BlockPluginWrapper.php | 19 + .../smarty/src/BlockHandler/TextFormat.php | 110 + .../smarty/smarty/src/Cacheresource/Base.php | 156 + .../smarty/src/Cacheresource/Custom.php | 303 ++ .../smarty/smarty/src/Cacheresource/File.php | 338 ++ .../src/Cacheresource/KeyValueStore.php | 360 +- vendor/smarty/smarty/src/Compile/Base.php | 233 ++ .../smarty/src/Compile/BlockCompiler.php | 228 + .../smarty/src/Compile/CompilerInterface.php | 26 + .../Compile/DefaultHandlerBlockCompiler.php | 29 + .../DefaultHandlerFunctionCallCompiler.php | 47 + .../src/Compile/FunctionCallCompiler.php | 79 + .../src/Compile/Modifier/BCPluginWrapper.php | 19 + .../smarty/src/Compile/Modifier/Base.php | 49 + .../Compile/Modifier/CatModifierCompiler.php | 25 + .../CountCharactersModifierCompiler.php | 21 + .../CountParagraphsModifierCompiler.php | 19 + .../CountSentencesModifierCompiler.php | 19 + .../Modifier/CountWordsModifierCompiler.php | 20 + .../Modifier/DefaultModifierCompiler.php | 26 + .../Modifier/EmptyModifierCompiler.php | 19 + .../Modifier/EscapeModifierCompiler.php | 56 + .../Modifier/FromCharsetModifierCompiler.php | 21 + .../Modifier/IndentModifierCompiler.php | 24 + .../Modifier/IsArrayModifierCompiler.php | 19 + .../Modifier/IssetModifierCompiler.php | 25 + .../Modifier/JsonEncodeModifierCompiler.php | 14 + .../Modifier/LowerModifierCompiler.php | 19 + .../Modifier/ModifierCompilerInterface.php | 17 + .../Modifier/Nl2brModifierCompiler.php | 17 + .../Modifier/NoPrintModifierCompiler.php | 18 + .../Modifier/RoundModifierCompiler.php | 18 + .../Modifier/StrRepeatModifierCompiler.php | 17 + .../Modifier/StringFormatModifierCompiler.php | 18 + .../Modifier/StripModifierCompiler.php | 24 + .../Modifier/StripTagsModifierCompiler.php | 22 + .../Modifier/StrlenModifierCompiler.php | 18 + .../Modifier/SubstrModifierCompiler.php | 15 + .../Modifier/ToCharsetModifierCompiler.php | 21 + .../Modifier/UnescapeModifierCompiler.php | 34 + .../Modifier/UpperModifierCompiler.php | 18 + .../Modifier/WordWrapModifierCompiler.php | 27 + .../smarty/src/Compile/ModifierCompiler.php | 95 + .../src/Compile/ObjectMethodBlockCompiler.php | 44 + .../src/Compile/ObjectMethodCallCompiler.php | 76 + .../src/Compile/PrintExpressionCompiler.php | 95 + .../src/Compile/SpecialVariableCompiler.php | 134 + .../smarty/smarty/src/Compile/Tag/Append.php | 58 + .../smarty/smarty/src/Compile/Tag/Assign.php | 95 + .../src/Compile/Tag/BCPluginWrapper.php | 31 + .../smarty/smarty/src/Compile/Tag/Block.php | 92 + .../smarty/src/Compile/Tag/BlockClose.php | 110 + .../smarty/src/Compile/Tag/BreakTag.php | 123 + vendor/smarty/smarty/src/Compile/Tag/Call.php | 81 + .../smarty/smarty/src/Compile/Tag/Capture.php | 72 + .../smarty/src/Compile/Tag/CaptureClose.php | 43 + .../smarty/src/Compile/Tag/ConfigLoad.php | 77 + .../smarty/src/Compile/Tag/ContinueTag.php | 27 + .../smarty/smarty/src/Compile/Tag/Debug.php | 45 + .../smarty/src/Compile/Tag/ElseIfTag.php | 86 + .../smarty/smarty/src/Compile/Tag/ElseTag.php | 29 + .../smarty/smarty/src/Compile/Tag/EvalTag.php | 74 + .../smarty/src/Compile/Tag/ExtendsTag.php | 87 + .../smarty/src/Compile/Tag/ForClose.php | 51 + .../smarty/smarty/src/Compile/Tag/ForElse.php | 30 + .../smarty/smarty/src/Compile/Tag/ForTag.php | 101 + .../smarty/src/Compile/Tag/ForeachClose.php | 55 + .../smarty/src/Compile/Tag/ForeachElse.php | 35 + .../smarty/src/Compile/Tag/ForeachSection.php | 206 + .../smarty/src/Compile/Tag/ForeachTag.php | 286 ++ .../smarty/src/Compile/Tag/FunctionClose.php | 164 + .../smarty/src/Compile/Tag/FunctionTag.php | 73 + .../smarty/smarty/src/Compile/Tag/IfClose.php | 48 + .../smarty/smarty/src/Compile/Tag/IfTag.php | 70 + .../smarty/src/Compile/Tag/IncludeTag.php | 189 + .../smarty/src/Compile/Tag/Inheritance.php | 54 + .../smarty/smarty/src/Compile/Tag/Ldelim.php | 41 + .../smarty/smarty/src/Compile/Tag/Nocache.php | 36 + .../smarty/src/Compile/Tag/NocacheClose.php | 37 + .../smarty/smarty/src/Compile/Tag/Rdelim.php | 36 + .../smarty/smarty/src/Compile/Tag/Section.php | 399 ++ .../smarty/src/Compile/Tag/SectionClose.php | 48 + .../smarty/src/Compile/Tag/SectionElse.php | 29 + .../smarty/src/Compile/Tag/Setfilter.php | 40 + .../smarty/src/Compile/Tag/SetfilterClose.php | 43 + .../smarty/src/Compile/Tag/WhileClose.php | 45 + .../smarty/src/Compile/Tag/WhileTag.php | 72 + .../smarty/src/Compiler/BaseCompiler.php | 23 + .../smarty/smarty/src/Compiler/CodeFrame.php | 126 + .../smarty/smarty/src/Compiler/Configfile.php | 173 + .../smarty/smarty/src/Compiler/Template.php | 1489 +++++++ .../smarty/smarty/src/CompilerException.php | 73 + vendor/smarty/smarty/src/Data.php | 521 +++ vendor/smarty/smarty/src/Debug.php | 370 ++ vendor/smarty/smarty/src/ErrorHandler.php | 97 + vendor/smarty/smarty/src/Exception.php | 16 + .../smarty/src/Extension/BCPluginsAdapter.php | 229 + vendor/smarty/smarty/src/Extension/Base.php | 41 + .../smarty/src/Extension/CallbackWrapper.php | 35 + .../smarty/src/Extension/CoreExtension.php | 49 + .../smarty/src/Extension/DefaultExtension.php | 756 ++++ .../src/Extension/ExtensionInterface.php | 83 + .../smarty/src/Filter/FilterInterface.php | 9 + .../smarty/src/Filter/FilterPluginWrapper.php | 15 + .../src/Filter/Output/TrimWhitespace.php | 91 + .../src/FunctionHandler/BCPluginWrapper.php | 21 + .../smarty/src/FunctionHandler/Base.php | 21 + .../smarty/src/FunctionHandler/Count.php | 36 + .../smarty/src/FunctionHandler/Counter.php | 61 + .../smarty/src/FunctionHandler/Cycle.php | 90 + .../smarty/src/FunctionHandler/Fetch.php | 203 + .../FunctionHandlerInterface.php | 10 + .../smarty/src/FunctionHandler/HtmlBase.php | 107 + .../src/FunctionHandler/HtmlCheckboxes.php | 189 + .../smarty/src/FunctionHandler/HtmlImage.php | 149 + .../src/FunctionHandler/HtmlOptions.php | 223 + .../smarty/src/FunctionHandler/HtmlRadios.php | 174 + .../src/FunctionHandler/HtmlSelectDate.php | 381 ++ .../src/FunctionHandler/HtmlSelectTime.php | 334 ++ .../smarty/src/FunctionHandler/HtmlTable.php | 161 + .../smarty/src/FunctionHandler/Mailto.php | 141 + .../smarty/src/FunctionHandler/Math.php | 140 + .../smarty/src/Lexer/ConfigfileLexer.php | 707 ++++ .../smarty/src/Lexer/ConfigfileLexer.plex | 321 ++ .../smarty/smarty/src/Lexer/TemplateLexer.php | 1083 +++++ .../smarty/src/Lexer/TemplateLexer.plex | 677 +++ vendor/smarty/smarty/src/ParseTree/Base.php | 45 + vendor/smarty/smarty/src/ParseTree/Code.php | 45 + vendor/smarty/smarty/src/ParseTree/Dq.php | 97 + .../smarty/smarty/src/ParseTree/DqContent.php | 44 + vendor/smarty/smarty/src/ParseTree/Tag.php | 70 + .../smarty/smarty/src/ParseTree/Template.php | 172 + vendor/smarty/smarty/src/ParseTree/Text.php | 59 + .../smarty/src/Parser/ConfigfileParser.php | 865 ++-- .../smarty/src/Parser/ConfigfileParser.y | 352 ++ .../smarty/src/Parser/TemplateParser.php | 3051 ++++++++++++++ .../smarty/smarty/src/Parser/TemplateParser.y | 1312 ++++++ .../smarty/smarty/src/Resource/BasePlugin.php | 145 + .../smarty/src/Resource/CustomPlugin.php | 105 + .../smarty/src/Resource/ExtendsPlugin.php | 112 + .../smarty/smarty/src/Resource/FilePlugin.php | 180 + .../smarty/src/Resource/RecompiledPlugin.php | 50 + .../smarty/src/Resource/StreamPlugin.php | 71 + .../smarty/smarty/src/Resource/StringEval.php | 85 + .../smarty/src/Resource/StringPlugin.php | 94 + vendor/smarty/smarty/src/Runtime/Block.php | 92 + .../smarty/src/Runtime/CaptureRuntime.php | 163 + .../Runtime/DefaultPluginHandlerRuntime.php | 73 + .../smarty/src/Runtime/ForeachRuntime.php | 160 + .../smarty/src/Runtime/InheritanceRuntime.php | 243 ++ .../smarty/src/Runtime/TplFunctionRuntime.php | 144 + vendor/smarty/smarty/src/Security.php | 560 +++ vendor/smarty/smarty/src/Smarty.php | 2239 ++++++++++ vendor/smarty/smarty/src/Template.php | 732 ++++ vendor/smarty/smarty/src/Template/Cached.php | 428 ++ .../smarty/smarty/src/Template/Compiled.php | 302 ++ vendor/smarty/smarty/src/Template/Config.php | 36 + .../smarty/src/Template/GeneratedPhpFile.php | 159 + vendor/smarty/smarty/src/Template/Source.php | 285 ++ vendor/smarty/smarty/src/TemplateBase.php | 425 ++ vendor/smarty/smarty/src/TestInstall.php | 211 + .../smarty/smarty/src/UndefinedVariable.php | 19 + vendor/smarty/smarty/src/Variable.php | 118 + vendor/smarty/smarty/src/debug.tpl | 173 + vendor/smarty/smarty/src/functions.php | 253 ++ vendor/symfony/polyfill-mbstring/LICENSE | 19 + vendor/symfony/polyfill-mbstring/Mbstring.php | 947 +++++ vendor/symfony/polyfill-mbstring/README.md | 13 + .../Resources/unidata/caseFolding.php | 119 + .../Resources/unidata/lowerCase.php | 1397 +++++++ .../Resources/unidata/titleCaseRegexp.php | 5 + .../Resources/unidata/upperCase.php | 1489 +++++++ .../symfony/polyfill-mbstring/bootstrap.php | 151 + .../symfony/polyfill-mbstring/bootstrap80.php | 147 + .../symfony/polyfill-mbstring/composer.json | 38 + 554 files changed, 51958 insertions(+), 24618 deletions(-) create mode 100644 composer.json create mode 100644 composer.lock delete mode 100644 inc/smarty/Smarty.class.php delete mode 100644 inc/smarty/SmartyBC.class.php delete mode 100644 inc/smarty/debug.tpl delete mode 100644 inc/smarty/plugins/block.textformat.php delete mode 100644 inc/smarty/plugins/function.counter.php delete mode 100644 inc/smarty/plugins/function.cycle.php delete mode 100644 inc/smarty/plugins/function.fetch.php delete mode 100644 inc/smarty/plugins/function.html_checkboxes.php delete mode 100644 inc/smarty/plugins/function.html_image.php delete mode 100644 inc/smarty/plugins/function.html_options.php delete mode 100644 inc/smarty/plugins/function.html_radios.php delete mode 100644 inc/smarty/plugins/function.html_select_date.php delete mode 100644 inc/smarty/plugins/function.html_select_time.php delete mode 100644 inc/smarty/plugins/function.html_table.php delete mode 100644 inc/smarty/plugins/function.mailto.php delete mode 100644 inc/smarty/plugins/function.math.php delete mode 100644 inc/smarty/plugins/modifier.capitalize.php delete mode 100644 inc/smarty/plugins/modifier.date_format.php delete mode 100644 inc/smarty/plugins/modifier.debug_print_var.php delete mode 100644 inc/smarty/plugins/modifier.escape.php delete mode 100644 inc/smarty/plugins/modifier.regex_replace.php delete mode 100644 inc/smarty/plugins/modifier.replace.php delete mode 100644 inc/smarty/plugins/modifier.spacify.php delete mode 100644 inc/smarty/plugins/modifier.truncate.php delete mode 100644 inc/smarty/plugins/modifiercompiler.cat.php delete mode 100644 inc/smarty/plugins/modifiercompiler.count_characters.php delete mode 100644 inc/smarty/plugins/modifiercompiler.count_paragraphs.php delete mode 100644 inc/smarty/plugins/modifiercompiler.count_sentences.php delete mode 100644 inc/smarty/plugins/modifiercompiler.count_words.php delete mode 100644 inc/smarty/plugins/modifiercompiler.default.php delete mode 100644 inc/smarty/plugins/modifiercompiler.escape.php delete mode 100644 inc/smarty/plugins/modifiercompiler.from_charset.php delete mode 100644 inc/smarty/plugins/modifiercompiler.indent.php delete mode 100644 inc/smarty/plugins/modifiercompiler.lower.php delete mode 100644 inc/smarty/plugins/modifiercompiler.noprint.php delete mode 100644 inc/smarty/plugins/modifiercompiler.string_format.php delete mode 100644 inc/smarty/plugins/modifiercompiler.strip.php delete mode 100644 inc/smarty/plugins/modifiercompiler.strip_tags.php delete mode 100644 inc/smarty/plugins/modifiercompiler.to_charset.php delete mode 100644 inc/smarty/plugins/modifiercompiler.unescape.php delete mode 100644 inc/smarty/plugins/modifiercompiler.upper.php delete mode 100644 inc/smarty/plugins/modifiercompiler.wordwrap.php delete mode 100644 inc/smarty/plugins/outputfilter.trimwhitespace.php delete mode 100644 inc/smarty/plugins/shared.escape_special_chars.php delete mode 100644 inc/smarty/plugins/shared.literal_compiler_param.php delete mode 100644 inc/smarty/plugins/shared.make_timestamp.php delete mode 100644 inc/smarty/plugins/shared.mb_str_replace.php delete mode 100644 inc/smarty/plugins/shared.mb_unicode.php delete mode 100644 inc/smarty/plugins/shared.mb_wordwrap.php delete mode 100644 inc/smarty/plugins/variablefilter.htmlspecialchars.php delete mode 100644 inc/smarty/sysplugins/smarty_cacheresource.php delete mode 100644 inc/smarty/sysplugins/smarty_cacheresource_custom.php delete mode 100644 inc/smarty/sysplugins/smarty_config_source.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_cacheresource_file.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_compile_append.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_compile_assign.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_compile_block.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_compile_break.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_compile_call.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_compile_capture.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_compile_config_load.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_compile_continue.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_compile_debug.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_compile_eval.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_compile_extends.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_compile_for.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_compile_foreach.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_compile_function.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_compile_if.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_compile_include.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_compile_include_php.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_compile_insert.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_compile_ldelim.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_compile_nocache.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_compile_private_block_plugin.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_compile_private_function_plugin.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_compile_private_modifier.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_compile_private_object_block_function.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_compile_private_object_function.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_compile_private_print_expression.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_compile_private_registered_block.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_compile_private_registered_function.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_compile_private_special_variable.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_compile_rdelim.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_compile_section.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_compile_setfilter.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_compile_while.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_compilebase.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_config.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_config_file_compiler.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_configfilelexer.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_data.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_debug.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_filter_handler.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_function_call_handler.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_get_include_path.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_nocache_insert.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_parsetree.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_resource_eval.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_resource_extends.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_resource_file.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_resource_php.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_resource_registered.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_resource_stream.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_resource_string.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_smartytemplatecompiler.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_template.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_templatebase.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_templatecompilerbase.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_templatelexer.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_templateparser.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_utility.php delete mode 100644 inc/smarty/sysplugins/smarty_internal_write_file.php delete mode 100644 inc/smarty/sysplugins/smarty_resource.php delete mode 100644 inc/smarty/sysplugins/smarty_resource_custom.php delete mode 100644 inc/smarty/sysplugins/smarty_resource_recompiled.php delete mode 100644 inc/smarty/sysplugins/smarty_resource_uncompiled.php delete mode 100644 inc/smarty/sysplugins/smarty_security.php create mode 100644 vendor/autoload.php create mode 100644 vendor/composer/ClassLoader.php create mode 100644 vendor/composer/InstalledVersions.php create mode 100644 vendor/composer/LICENSE create mode 100644 vendor/composer/autoload_classmap.php create mode 100644 vendor/composer/autoload_files.php create mode 100644 vendor/composer/autoload_namespaces.php create mode 100644 vendor/composer/autoload_psr4.php create mode 100644 vendor/composer/autoload_real.php create mode 100644 vendor/composer/autoload_static.php create mode 100644 vendor/composer/installed.json create mode 100644 vendor/composer/installed.php create mode 100644 vendor/composer/platform_check.php create mode 100644 vendor/smarty/smarty/CHANGELOG.md create mode 100644 vendor/smarty/smarty/CONTRIBUTING.md create mode 100644 vendor/smarty/smarty/LICENSE create mode 100644 vendor/smarty/smarty/Makefile create mode 100644 vendor/smarty/smarty/README.md create mode 100644 vendor/smarty/smarty/SECURITY.md create mode 100644 vendor/smarty/smarty/TODO.txt create mode 100644 vendor/smarty/smarty/changelog/.gitkeep create mode 100644 vendor/smarty/smarty/composer.json create mode 100644 vendor/smarty/smarty/demo/configs/test.conf create mode 100644 vendor/smarty/smarty/demo/index.php create mode 100644 vendor/smarty/smarty/demo/templates/footer.tpl create mode 100644 vendor/smarty/smarty/demo/templates/header.tpl create mode 100644 vendor/smarty/smarty/demo/templates/index.tpl create mode 100644 vendor/smarty/smarty/docs/_config.yml create mode 100644 vendor/smarty/smarty/docs/api/basics.md create mode 100644 vendor/smarty/smarty/docs/api/caching/basics.md create mode 100644 vendor/smarty/smarty/docs/api/caching/custom-storage-layers.md create mode 100644 vendor/smarty/smarty/docs/api/caching/multiple-caches-per-template.md create mode 100644 vendor/smarty/smarty/docs/api/configuring.md create mode 100644 vendor/smarty/smarty/docs/api/extending/block-tags.md create mode 100644 vendor/smarty/smarty/docs/api/extending/extensions.md create mode 100644 vendor/smarty/smarty/docs/api/extending/introduction.md create mode 100644 vendor/smarty/smarty/docs/api/extending/modifiers.md create mode 100644 vendor/smarty/smarty/docs/api/extending/tags.md create mode 100644 vendor/smarty/smarty/docs/api/filters/output-filters.md create mode 100644 vendor/smarty/smarty/docs/api/filters/postfilters.md create mode 100644 vendor/smarty/smarty/docs/api/filters/prefilters.md create mode 100644 vendor/smarty/smarty/docs/api/inheritance.md create mode 100644 vendor/smarty/smarty/docs/api/rendering.md create mode 100644 vendor/smarty/smarty/docs/api/resources.md create mode 100644 vendor/smarty/smarty/docs/api/security.md create mode 100644 vendor/smarty/smarty/docs/api/variables/assigning.md create mode 100644 vendor/smarty/smarty/docs/api/variables/config-files.md create mode 100644 vendor/smarty/smarty/docs/api/variables/objects.md create mode 100644 vendor/smarty/smarty/docs/api/variables/static-class-methods.md create mode 100644 vendor/smarty/smarty/docs/api/variables/streams.md create mode 100644 vendor/smarty/smarty/docs/appendixes/tips.md create mode 100644 vendor/smarty/smarty/docs/appendixes/troubleshooting.md create mode 100644 vendor/smarty/smarty/docs/designers/chapter-debugging-console.md create mode 100644 vendor/smarty/smarty/docs/designers/config-files.md create mode 100644 vendor/smarty/smarty/docs/designers/language-basic-syntax/index.md create mode 100644 vendor/smarty/smarty/docs/designers/language-basic-syntax/language-escaping.md create mode 100644 vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-attributes.md create mode 100644 vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-comments.md create mode 100644 vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-operators.md create mode 100644 vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-quotes.md create mode 100644 vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-tags.md create mode 100644 vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-variables.md create mode 100644 vendor/smarty/smarty/docs/designers/language-builtin-functions.md create mode 100644 vendor/smarty/smarty/docs/designers/language-builtin-functions/index.md create mode 100644 vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-append.md create mode 100644 vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-assign.md create mode 100644 vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-block.md create mode 100644 vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-call.md create mode 100644 vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-capture.md create mode 100644 vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-config-load.md create mode 100644 vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-debug.md create mode 100644 vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-extends.md create mode 100644 vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-for.md create mode 100644 vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-foreach.md create mode 100644 vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-function.md create mode 100644 vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-if.md create mode 100644 vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-include.md create mode 100644 vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-insert.md create mode 100644 vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-ldelim.md create mode 100644 vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-literal.md create mode 100644 vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-nocache.md create mode 100644 vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-section.md create mode 100644 vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-setfilter.md create mode 100644 vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-strip.md create mode 100644 vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-while.md create mode 100644 vendor/smarty/smarty/docs/designers/language-combining-modifiers.md create mode 100644 vendor/smarty/smarty/docs/designers/language-custom-functions/index.md create mode 100644 vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-counter.md create mode 100644 vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-cycle.md create mode 100644 vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-debug.md create mode 100644 vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-eval.md create mode 100644 vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-fetch.md create mode 100644 vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-checkboxes.md create mode 100644 vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-image.md create mode 100644 vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-options.md create mode 100644 vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-radios.md create mode 100644 vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-select-date.md create mode 100644 vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-select-time.md create mode 100644 vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-table.md create mode 100644 vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-mailto.md create mode 100644 vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-math.md create mode 100644 vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-textformat.md create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/index.md create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-capitalize.md create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-cat.md create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count-characters.md create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count-paragraphs.md create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count-sentences.md create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count-words.md create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count.md create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-date-format.md create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-debug-print-var.md create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-default.md create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-escape.md create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-from-charset.md create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-indent.md create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-is_array.md create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-isset.md create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-join.md create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-json-encode.md create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-lower.md create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-nl2br.md create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-noprint.md create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-number-format.md create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-regex-replace.md create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-replace.md create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-round.md create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-spacify.md create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-split.md create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-str-repeat.md create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-string-format.md create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-strip-tags.md create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-strip.md create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-strlen.md create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-substr.md create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-to-charset.md create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-truncate.md create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-unescape.md create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-upper.md create mode 100644 vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-wordwrap.md create mode 100644 vendor/smarty/smarty/docs/designers/language-variables/index.md create mode 100644 vendor/smarty/smarty/docs/designers/language-variables/language-assigned-variables.md create mode 100644 vendor/smarty/smarty/docs/designers/language-variables/language-config-variables.md create mode 100644 vendor/smarty/smarty/docs/designers/language-variables/language-variable-scopes.md create mode 100644 vendor/smarty/smarty/docs/designers/language-variables/language-variables-smarty.md create mode 100644 vendor/smarty/smarty/docs/features.md create mode 100644 vendor/smarty/smarty/docs/getting-started.md create mode 100644 vendor/smarty/smarty/docs/img/favicon.ico create mode 100644 vendor/smarty/smarty/docs/index.md create mode 100644 vendor/smarty/smarty/docs/philosophy.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/add-extension.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-add-plugins-dir.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-append.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-assign.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-clear-all-assign.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-clear-all-cache.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-clear-assign.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-clear-cache.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-clear-compiled-tpl.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-clear-config.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-compile-all-config.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-compile-all-templates.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-config-load.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-create-data.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-create-template.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-disable-security.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-display.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-enable-security.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-fetch.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-get-config-dir.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-get-config-vars.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-get-plugins-dir.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-get-registered-object.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-get-template-vars.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-is-cached.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-load-filter.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-mute-expected-errors.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-register-cacheresource.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-register-class.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-register-default-plugin-handler.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-register-filter.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-register-object.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-register-plugin.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-register-resource.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-set-plugins-dir.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-test-install.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-cacheresource.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-filter.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-object.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-plugin.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-resource.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-variables/variable-auto-literal.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-dir.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-id.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-lifetime.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-locking.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-modified-check.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-variables/variable-caching-type.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-variables/variable-caching.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-dir.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-id.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-locking.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-variables/variable-compiler-class.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-variables/variable-config-booleanize.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-variables/variable-config-dir.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-variables/variable-config-overwrite.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-variables/variable-config-read-hidden.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-variables/variable-debug-template.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-variables/variable-debugging-ctrl.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-variables/variable-debugging.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-variables/variable-default-config-handler-func.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-variables/variable-default-config-type.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-variables/variable-default-modifiers.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-variables/variable-default-resource-type.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-variables/variable-default-template-handler-func.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-variables/variable-error-reporting.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-variables/variable-escape-html.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-variables/variable-force-cache.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-variables/variable-force-compile.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-variables/variable-locking-timeout.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-variables/variable-merge-compiled-includes.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-variables/variable-smarty-debug-id.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-variables/variable-template-dir.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-variables/variable-use-include-path.md create mode 100644 vendor/smarty/smarty/docs/programmers/api-variables/variable-use-sub-dirs.md create mode 100644 vendor/smarty/smarty/docs/upgrading.md create mode 100644 vendor/smarty/smarty/libs/Smarty.class.php create mode 100644 vendor/smarty/smarty/mkdocs.yml create mode 100755 vendor/smarty/smarty/run-tests-for-all-php-versions.sh create mode 100755 vendor/smarty/smarty/run-tests.sh create mode 100644 vendor/smarty/smarty/src/BlockHandler/Base.php create mode 100644 vendor/smarty/smarty/src/BlockHandler/BlockHandlerInterface.php create mode 100644 vendor/smarty/smarty/src/BlockHandler/BlockPluginWrapper.php create mode 100644 vendor/smarty/smarty/src/BlockHandler/TextFormat.php create mode 100644 vendor/smarty/smarty/src/Cacheresource/Base.php create mode 100644 vendor/smarty/smarty/src/Cacheresource/Custom.php create mode 100644 vendor/smarty/smarty/src/Cacheresource/File.php rename inc/smarty/sysplugins/smarty_cacheresource_keyvaluestore.php => vendor/smarty/smarty/src/Cacheresource/KeyValueStore.php (56%) create mode 100644 vendor/smarty/smarty/src/Compile/Base.php create mode 100644 vendor/smarty/smarty/src/Compile/BlockCompiler.php create mode 100644 vendor/smarty/smarty/src/Compile/CompilerInterface.php create mode 100644 vendor/smarty/smarty/src/Compile/DefaultHandlerBlockCompiler.php create mode 100644 vendor/smarty/smarty/src/Compile/DefaultHandlerFunctionCallCompiler.php create mode 100644 vendor/smarty/smarty/src/Compile/FunctionCallCompiler.php create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/BCPluginWrapper.php create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/Base.php create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/CatModifierCompiler.php create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/CountCharactersModifierCompiler.php create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/CountParagraphsModifierCompiler.php create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/CountSentencesModifierCompiler.php create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/CountWordsModifierCompiler.php create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/DefaultModifierCompiler.php create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/EmptyModifierCompiler.php create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/EscapeModifierCompiler.php create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/FromCharsetModifierCompiler.php create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/IndentModifierCompiler.php create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/IsArrayModifierCompiler.php create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/IssetModifierCompiler.php create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/JsonEncodeModifierCompiler.php create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/LowerModifierCompiler.php create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/ModifierCompilerInterface.php create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/Nl2brModifierCompiler.php create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/NoPrintModifierCompiler.php create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/RoundModifierCompiler.php create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/StrRepeatModifierCompiler.php create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/StringFormatModifierCompiler.php create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/StripModifierCompiler.php create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/StripTagsModifierCompiler.php create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/StrlenModifierCompiler.php create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/SubstrModifierCompiler.php create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/ToCharsetModifierCompiler.php create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/UnescapeModifierCompiler.php create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/UpperModifierCompiler.php create mode 100644 vendor/smarty/smarty/src/Compile/Modifier/WordWrapModifierCompiler.php create mode 100644 vendor/smarty/smarty/src/Compile/ModifierCompiler.php create mode 100644 vendor/smarty/smarty/src/Compile/ObjectMethodBlockCompiler.php create mode 100644 vendor/smarty/smarty/src/Compile/ObjectMethodCallCompiler.php create mode 100644 vendor/smarty/smarty/src/Compile/PrintExpressionCompiler.php create mode 100644 vendor/smarty/smarty/src/Compile/SpecialVariableCompiler.php create mode 100644 vendor/smarty/smarty/src/Compile/Tag/Append.php create mode 100644 vendor/smarty/smarty/src/Compile/Tag/Assign.php create mode 100644 vendor/smarty/smarty/src/Compile/Tag/BCPluginWrapper.php create mode 100644 vendor/smarty/smarty/src/Compile/Tag/Block.php create mode 100644 vendor/smarty/smarty/src/Compile/Tag/BlockClose.php create mode 100644 vendor/smarty/smarty/src/Compile/Tag/BreakTag.php create mode 100644 vendor/smarty/smarty/src/Compile/Tag/Call.php create mode 100644 vendor/smarty/smarty/src/Compile/Tag/Capture.php create mode 100644 vendor/smarty/smarty/src/Compile/Tag/CaptureClose.php create mode 100644 vendor/smarty/smarty/src/Compile/Tag/ConfigLoad.php create mode 100644 vendor/smarty/smarty/src/Compile/Tag/ContinueTag.php create mode 100644 vendor/smarty/smarty/src/Compile/Tag/Debug.php create mode 100644 vendor/smarty/smarty/src/Compile/Tag/ElseIfTag.php create mode 100644 vendor/smarty/smarty/src/Compile/Tag/ElseTag.php create mode 100644 vendor/smarty/smarty/src/Compile/Tag/EvalTag.php create mode 100644 vendor/smarty/smarty/src/Compile/Tag/ExtendsTag.php create mode 100644 vendor/smarty/smarty/src/Compile/Tag/ForClose.php create mode 100644 vendor/smarty/smarty/src/Compile/Tag/ForElse.php create mode 100644 vendor/smarty/smarty/src/Compile/Tag/ForTag.php create mode 100644 vendor/smarty/smarty/src/Compile/Tag/ForeachClose.php create mode 100644 vendor/smarty/smarty/src/Compile/Tag/ForeachElse.php create mode 100644 vendor/smarty/smarty/src/Compile/Tag/ForeachSection.php create mode 100644 vendor/smarty/smarty/src/Compile/Tag/ForeachTag.php create mode 100644 vendor/smarty/smarty/src/Compile/Tag/FunctionClose.php create mode 100644 vendor/smarty/smarty/src/Compile/Tag/FunctionTag.php create mode 100644 vendor/smarty/smarty/src/Compile/Tag/IfClose.php create mode 100644 vendor/smarty/smarty/src/Compile/Tag/IfTag.php create mode 100644 vendor/smarty/smarty/src/Compile/Tag/IncludeTag.php create mode 100644 vendor/smarty/smarty/src/Compile/Tag/Inheritance.php create mode 100644 vendor/smarty/smarty/src/Compile/Tag/Ldelim.php create mode 100644 vendor/smarty/smarty/src/Compile/Tag/Nocache.php create mode 100644 vendor/smarty/smarty/src/Compile/Tag/NocacheClose.php create mode 100644 vendor/smarty/smarty/src/Compile/Tag/Rdelim.php create mode 100644 vendor/smarty/smarty/src/Compile/Tag/Section.php create mode 100644 vendor/smarty/smarty/src/Compile/Tag/SectionClose.php create mode 100644 vendor/smarty/smarty/src/Compile/Tag/SectionElse.php create mode 100644 vendor/smarty/smarty/src/Compile/Tag/Setfilter.php create mode 100644 vendor/smarty/smarty/src/Compile/Tag/SetfilterClose.php create mode 100644 vendor/smarty/smarty/src/Compile/Tag/WhileClose.php create mode 100644 vendor/smarty/smarty/src/Compile/Tag/WhileTag.php create mode 100644 vendor/smarty/smarty/src/Compiler/BaseCompiler.php create mode 100644 vendor/smarty/smarty/src/Compiler/CodeFrame.php create mode 100644 vendor/smarty/smarty/src/Compiler/Configfile.php create mode 100644 vendor/smarty/smarty/src/Compiler/Template.php create mode 100644 vendor/smarty/smarty/src/CompilerException.php create mode 100644 vendor/smarty/smarty/src/Data.php create mode 100644 vendor/smarty/smarty/src/Debug.php create mode 100644 vendor/smarty/smarty/src/ErrorHandler.php create mode 100644 vendor/smarty/smarty/src/Exception.php create mode 100644 vendor/smarty/smarty/src/Extension/BCPluginsAdapter.php create mode 100644 vendor/smarty/smarty/src/Extension/Base.php create mode 100644 vendor/smarty/smarty/src/Extension/CallbackWrapper.php create mode 100644 vendor/smarty/smarty/src/Extension/CoreExtension.php create mode 100644 vendor/smarty/smarty/src/Extension/DefaultExtension.php create mode 100644 vendor/smarty/smarty/src/Extension/ExtensionInterface.php create mode 100644 vendor/smarty/smarty/src/Filter/FilterInterface.php create mode 100644 vendor/smarty/smarty/src/Filter/FilterPluginWrapper.php create mode 100644 vendor/smarty/smarty/src/Filter/Output/TrimWhitespace.php create mode 100644 vendor/smarty/smarty/src/FunctionHandler/BCPluginWrapper.php create mode 100644 vendor/smarty/smarty/src/FunctionHandler/Base.php create mode 100644 vendor/smarty/smarty/src/FunctionHandler/Count.php create mode 100644 vendor/smarty/smarty/src/FunctionHandler/Counter.php create mode 100644 vendor/smarty/smarty/src/FunctionHandler/Cycle.php create mode 100644 vendor/smarty/smarty/src/FunctionHandler/Fetch.php create mode 100644 vendor/smarty/smarty/src/FunctionHandler/FunctionHandlerInterface.php create mode 100644 vendor/smarty/smarty/src/FunctionHandler/HtmlBase.php create mode 100644 vendor/smarty/smarty/src/FunctionHandler/HtmlCheckboxes.php create mode 100644 vendor/smarty/smarty/src/FunctionHandler/HtmlImage.php create mode 100644 vendor/smarty/smarty/src/FunctionHandler/HtmlOptions.php create mode 100644 vendor/smarty/smarty/src/FunctionHandler/HtmlRadios.php create mode 100644 vendor/smarty/smarty/src/FunctionHandler/HtmlSelectDate.php create mode 100644 vendor/smarty/smarty/src/FunctionHandler/HtmlSelectTime.php create mode 100644 vendor/smarty/smarty/src/FunctionHandler/HtmlTable.php create mode 100644 vendor/smarty/smarty/src/FunctionHandler/Mailto.php create mode 100644 vendor/smarty/smarty/src/FunctionHandler/Math.php create mode 100644 vendor/smarty/smarty/src/Lexer/ConfigfileLexer.php create mode 100644 vendor/smarty/smarty/src/Lexer/ConfigfileLexer.plex create mode 100644 vendor/smarty/smarty/src/Lexer/TemplateLexer.php create mode 100644 vendor/smarty/smarty/src/Lexer/TemplateLexer.plex create mode 100644 vendor/smarty/smarty/src/ParseTree/Base.php create mode 100644 vendor/smarty/smarty/src/ParseTree/Code.php create mode 100644 vendor/smarty/smarty/src/ParseTree/Dq.php create mode 100644 vendor/smarty/smarty/src/ParseTree/DqContent.php create mode 100644 vendor/smarty/smarty/src/ParseTree/Tag.php create mode 100644 vendor/smarty/smarty/src/ParseTree/Template.php create mode 100644 vendor/smarty/smarty/src/ParseTree/Text.php rename inc/smarty/sysplugins/smarty_internal_configfileparser.php => vendor/smarty/smarty/src/Parser/ConfigfileParser.php (51%) create mode 100644 vendor/smarty/smarty/src/Parser/ConfigfileParser.y create mode 100644 vendor/smarty/smarty/src/Parser/TemplateParser.php create mode 100644 vendor/smarty/smarty/src/Parser/TemplateParser.y create mode 100644 vendor/smarty/smarty/src/Resource/BasePlugin.php create mode 100644 vendor/smarty/smarty/src/Resource/CustomPlugin.php create mode 100644 vendor/smarty/smarty/src/Resource/ExtendsPlugin.php create mode 100644 vendor/smarty/smarty/src/Resource/FilePlugin.php create mode 100644 vendor/smarty/smarty/src/Resource/RecompiledPlugin.php create mode 100644 vendor/smarty/smarty/src/Resource/StreamPlugin.php create mode 100644 vendor/smarty/smarty/src/Resource/StringEval.php create mode 100644 vendor/smarty/smarty/src/Resource/StringPlugin.php create mode 100644 vendor/smarty/smarty/src/Runtime/Block.php create mode 100644 vendor/smarty/smarty/src/Runtime/CaptureRuntime.php create mode 100644 vendor/smarty/smarty/src/Runtime/DefaultPluginHandlerRuntime.php create mode 100644 vendor/smarty/smarty/src/Runtime/ForeachRuntime.php create mode 100644 vendor/smarty/smarty/src/Runtime/InheritanceRuntime.php create mode 100644 vendor/smarty/smarty/src/Runtime/TplFunctionRuntime.php create mode 100644 vendor/smarty/smarty/src/Security.php create mode 100644 vendor/smarty/smarty/src/Smarty.php create mode 100644 vendor/smarty/smarty/src/Template.php create mode 100644 vendor/smarty/smarty/src/Template/Cached.php create mode 100644 vendor/smarty/smarty/src/Template/Compiled.php create mode 100644 vendor/smarty/smarty/src/Template/Config.php create mode 100644 vendor/smarty/smarty/src/Template/GeneratedPhpFile.php create mode 100644 vendor/smarty/smarty/src/Template/Source.php create mode 100644 vendor/smarty/smarty/src/TemplateBase.php create mode 100644 vendor/smarty/smarty/src/TestInstall.php create mode 100644 vendor/smarty/smarty/src/UndefinedVariable.php create mode 100644 vendor/smarty/smarty/src/Variable.php create mode 100644 vendor/smarty/smarty/src/debug.tpl create mode 100644 vendor/smarty/smarty/src/functions.php create mode 100644 vendor/symfony/polyfill-mbstring/LICENSE create mode 100644 vendor/symfony/polyfill-mbstring/Mbstring.php create mode 100644 vendor/symfony/polyfill-mbstring/README.md create mode 100644 vendor/symfony/polyfill-mbstring/Resources/unidata/caseFolding.php create mode 100644 vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php create mode 100644 vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php create mode 100644 vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php create mode 100644 vendor/symfony/polyfill-mbstring/bootstrap.php create mode 100644 vendor/symfony/polyfill-mbstring/bootstrap80.php create mode 100644 vendor/symfony/polyfill-mbstring/composer.json diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..fa51b9c --- /dev/null +++ b/composer.json @@ -0,0 +1,20 @@ +{ + "name": "openprinting/foomatic-db-webapp", + "description": "Web application for openprinting.org", + "type": "project", + "require": { + "smarty/smarty": "^5.3" + }, + "license": "GPL-2.0-or-later", + "authors": [ + { + "name": "Lance Albertson", + "email": "lance@osuosl.org" + } + ], + "config": { + "platform": { + "php": "7.4" + } + } +} diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..e368e43 --- /dev/null +++ b/composer.lock @@ -0,0 +1,172 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "d5e5a3ece26cb37b72a67b6ff59144c2", + "packages": [ + { + "name": "smarty/smarty", + "version": "v5.3.0", + "source": { + "type": "git", + "url": "https://github.com/smarty-php/smarty.git", + "reference": "353ca06d076da46964b0c709d8e4dd87677195b8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/smarty-php/smarty/zipball/353ca06d076da46964b0c709d8e4dd87677195b8", + "reference": "353ca06d076da46964b0c709d8e4dd87677195b8", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0", + "symfony/polyfill-mbstring": "^1.27" + }, + "require-dev": { + "phpunit/phpunit": "^8.5 || ^7.5", + "smarty/smarty-lexer": "^4.0.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0.x-dev" + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Smarty\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0" + ], + "authors": [ + { + "name": "Monte Ohrt", + "email": "monte@ohrt.com" + }, + { + "name": "Uwe Tews", + "email": "uwe.tews@googlemail.com" + }, + { + "name": "Rodney Rehm", + "email": "rodney.rehm@medialize.de" + }, + { + "name": "Simon Wisselink", + "homepage": "https://www.iwink.nl/" + } + ], + "description": "Smarty - the compiling PHP template engine", + "homepage": "https://smarty-php.github.io/smarty/", + "keywords": [ + "templating" + ], + "support": { + "forum": "https://github.com/smarty-php/smarty/discussions", + "issues": "https://github.com/smarty-php/smarty/issues", + "source": "https://github.com/smarty-php/smarty/tree/v5.3.0" + }, + "time": "2024-05-30T11:14:56+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.29.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec", + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-01-29T20:11:03+00:00" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [], + "platform-overrides": { + "php": "7.4" + }, + "plugin-api-version": "2.3.0" +} diff --git a/driver_detail.php b/driver_detail.php index 9042e1e..a2207e5 100644 --- a/driver_detail.php +++ b/driver_detail.php @@ -6,22 +6,22 @@ exit; } -$drivertypes = array( +$drivertypes = [ "ghostscript" => 'Ghostscript built-in', "uniprint" => 'Ghostscript Uniprint', "filter" => 'Filter', "ijs" => 'IJS', "cups" => 'CUPS Raster', "opvp" => 'OpenPrinting Vector', - "postscript" => 'PostScript'); + "postscript" => 'PostScript']; -$driverparameters = array( +$driverparameters = [ "text" => 'Text', "lineart" => 'Line Art', "graphics" => 'Graphics', "photo" => 'Photo', "load_time" => 'System Load', - "speed" => 'Speed'); + "speed" => 'Speed']; $PAGE->setPageTitle('Driver: ' . $_GET['driver']); $PAGE->setActiveID('driver'); @@ -56,7 +56,7 @@ // printer ID in such a case. foreach($printers as $pr) { if (strlen($pr['make']) == 0) { - $matches = array(); + $matches = []; if (preg_match("/^([^\-]+)\-(.*)$/", $pr['id'], $matches) != 0) { $printers[$pr['id']]['make'] = preg_replace("/_+/", " ", $matches[1]); @@ -96,7 +96,7 @@ $mask = "{$_GET['driver']};openprinting-{$_GET['driver']};" . "openprinting-ppds-{$_GET['driver']}"; } -$out = array(); +$out = []; exec("cd foomatic; ./packageinfo " . escapeshellarg($mask), $out, $ret_value); if (sizeof($out) > 0) $packagedownloads = $out[0]; @@ -244,7 +244,7 @@ $infobox .= "" . ""; } -if (is_array($contacts) and count($contacts) > 0) { +if (is_[$contacts] and count($contacts) > 0) { $infobox .= "" . "" . "User support:" . @@ -289,8 +289,8 @@ strlen($driver['graphics']) > 0 or strlen($driver['photo']) > 0 or strlen($driver['load_time']) > 0 or strlen($driver['speed']) > 0) { $infobox .= ""; - foreach(array('text', 'graphics', 'load_time', - 'lineart', 'photo', 'speed') as $par) { + foreach(['text', 'graphics', 'load_time', + 'lineart', 'photo', 'speed'] as $par) { $infobox .= "" . "{$driverparameters[$par]}:" . ""; @@ -332,7 +332,7 @@ "" . ""; } -if (is_array($dependencies) and count($dependencies) > 0) { +if (is_[$dependencies] and count($dependencies) > 0) { $infobox .= "" . "" . "Dependencies:" . diff --git a/driver_list.php b/driver_list.php index c1adcde..3fbd499 100644 --- a/driver_list.php +++ b/driver_list.php @@ -1,14 +1,14 @@ 'Ghostscript built-in', "uniprint" => 'Ghostscript Uniprint', "filter" => 'Filter', "ijs" => 'IJS', "cups" => 'CUPS Raster', "opvp" => 'OpenPrinting Vector', - "postscript" => 'PostScript'); + "postscript" => 'PostScript']; $SMARTY->assign("drivertypes",$drivertypes); diff --git a/inc/common.php b/inc/common.php index 6991ba0..ab0cb23 100644 --- a/inc/common.php +++ b/inc/common.php @@ -1,5 +1,7 @@ casModulePath . '/CAS.php'); include('inc/db.php'); -include('inc/smarty/SmartyBC.class.php'); include('inc/page.php'); session_start(); error_reporting(E_ALL); -$SMARTY = new SmartyBC(); -$SMARTY->clear_compiled_tpl(); +use Smarty\Smarty; +$SMARTY = new Smarty(); $PAGE = Page::getInstance(); $PAGE->setSmarty($SMARTY); diff --git a/inc/db.php b/inc/db.php index afb9c3b..f68ca3a 100644 --- a/inc/db.php +++ b/inc/db.php @@ -1,75 +1,75 @@ -statement = $statement; } - + public function toArray($fieldAsIndex = false) { if ($this->hasError) { return false; } - + if (!$fieldAsIndex) { return $this->statement->fetchAll(PDO::FETCH_ASSOC); } - - $result = array(); - + + $result = []; + while ($row = $this->statement->fetch(PDO::FETCH_ASSOC)) { $result[$row[$fieldAsIndex]] = $row; } - + return $result; } - + public function getRow() { if ($this->hasError) { return false; } - + return $this->statement->fetch(PDO::FETCH_ASSOC); } - + public function numRows() { if ($this->hasError) { return false; } - + return $this->statement->rowCount(); } - + /* TODO: reimplement? public function seek($to) { - + } */ - + // FIXME: deprecated public function free() { return true; } } - + class DB { private $mysqli = false; public $lasterror = false; - + private static $instance = false; public static function getInstance() { if(!DB::$instance) DB::$instance = new DB(); return DB::$instance; } - public function __construct() { + public function __construct() { // TODO: move to common.php, call with DB::getInstance global $CONF; - + try { $this->connection = new PDO('mysql:host=' . $CONF->dbServer . ';dbname=' . $CONF->db, $CONF->dbUser, $CONF->dbPass); } catch (PDOException $exception) { @@ -77,50 +77,50 @@ public function __construct() { ." (error code: ".$exception->getCode().")"); } } - + public function __destroy() { $this->mysqli->close(); } - + // Starts a transaction. function beginTransaction() { return $this->connection->beginTransaction(); } - + // Commits all changes made since the transaction began. function commit() { return $this->connection->commit(); } - + // Undoes all changes since the beginning of the transaction. function rollback() { return $this->connection->rollBack(); } - + // Number of affected rows by the last performed query. function affectedRows() { if ($this->lastStatement === null) { return false; } - + return $this->lastStatement->rowCount(); } - + // Unique autonumber of the last inserted record. function lastInsertID() { return $this->connection->lastInsertId(); } - - function query($query, $arguments = array()) { + + function query($query, $arguments = []) { $this->lastStatement = $this->connection->prepare($query); - + if (!is_array($arguments)) { $arguments = array_slice(func_get_args(), 1); } - + $result = new Result($this->lastStatement); - + if (!$this->lastStatement->execute($arguments)) { $result->hasError = true; // TODO: report errors as exception? @@ -128,11 +128,11 @@ function query($query, $arguments = array()) { trigger_error($error[2] . ' [[' . $query . ']]', E_USER_ERROR); return false; } - + return $result; /* $args = func_get_args(); - $query = array_shift($args); + $query = array_shift($args); $query = str_replace("?", "%s", $query); // add magic quotes check if(get_magic_quotes_gpc()) @@ -143,7 +143,7 @@ function query($query, $arguments = array()) { } if(count($args) > 0) { array_unshift($args,$query); - $query = call_user_func_array('sprintf',$args); + $query = call_user_func_['sprintf',$args]; } //echo $query; $result = @$this->mysqli->query($query); @@ -153,10 +153,10 @@ function query($query, $arguments = array()) { $res->hasError = true; trigger_error($this->mysqli->error.' [['.$query.']]'); return false; - } else + } else return $res; */ - } + } } -?> \ No newline at end of file +?> diff --git a/inc/db/driver/driver.php b/inc/db/driver/driver.php index 033dc0b..1f0715d 100644 --- a/inc/db/driver/driver.php +++ b/inc/db/driver/driver.php @@ -10,7 +10,7 @@ class Driver { // Boolean flag to determine if data is present private $loaded; - + // This contains the XML data public $id; public $name; @@ -56,7 +56,7 @@ public function __construct($data = null) { $this->dependencies = null; $this->supportcontacts = null; $this->printers = null; - + if ($data != null) { switch((string)gettype($data)) { case 'array': @@ -94,7 +94,7 @@ public function __construct($data = null) { $this->comments = (string)$data['comments']; $this->loaded = true; break; - + case 'object': if (get_class($data) == "SimpleXMLElement") { list(,$this->id) = preg_split("/\//", $data['id']); @@ -188,7 +188,7 @@ public function __construct($data = null) { $this->speed = -1; } // - + // if ($data->execution != false) { $this->nopjl = (bool)array_key_exists('nopjl', $data->execution); @@ -198,13 +198,13 @@ public function __construct($data = null) { $this->ppdentry = (string)$data->execution->ppdentry; if ($data->execution->requires != false) { $i = 0; - $this->dependencies = array(); + $this->dependencies = []; foreach ($data->execution->requires as $dependency) { $this->dependencies[$i] = new DriverDependency($this->id, $dependency); $i++; } } - + unset($data->execution->nopjl); unset($data->execution->nopageaccounting); unset($data->execution->prototype); @@ -223,38 +223,38 @@ public function __construct($data = null) { } // Prepare the translation data if ($data->supplier) { - $this->translation["supplier"] = new Translation($data->supplier, "driver", array("id" => $this->id), "supplier"); + $this->translation["supplier"] = new Translation($data->supplier, "driver", ["id" => $this->id], "supplier"); } if ($data->license) { - $this->translation["license"] = new Translation($data->license, "driver", array("id" => $this->id), "license"); + $this->translation["license"] = new Translation($data->license, "driver", ["id" => $this->id], "license"); } if ($data->licensetext) { - $this->translation["licensetext"] = new Translation($data->licensetext, "driver", array("id" => $this->id), "licensetext"); + $this->translation["licensetext"] = new Translation($data->licensetext, "driver", ["id" => $this->id], "licensetext"); } if ($data->licensetext) { - $this->translation["licenselink"] = new Translation($data->licensetext, "driver", array("id" => $this->id), "licenselink"); + $this->translation["licenselink"] = new Translation($data->licensetext, "driver", ["id" => $this->id], "licenselink"); } if ($data->shortdescription) { - $this->translation["shortdescription"] = new Translation($data->shortdescription, "driver", array("id" => $this->id), "shortdescription"); + $this->translation["shortdescription"] = new Translation($data->shortdescription, "driver", ["id" => $this->id], "shortdescription"); } if ($data->comments) { - $this->translation["comments"] = new Translation($data->comments, "driver", array("id" => $this->id), "comments"); + $this->translation["comments"] = new Translation($data->comments, "driver", ["id" => $this->id], "comments"); } // Create supportcontacts list if ($data->supportcontacts && $data->supportcontacts->supportcontact) { $i = 0; - $this->supportcontacts = array(); + $this->supportcontacts = []; foreach ($data->supportcontacts->supportcontact as $supportcontact) { $this->supportcontacts[$i] = new DriverSupportContact($this->id, $supportcontact); $i++; } } - + // Create packages list if ($data->packages && $data->packages->package) { $i = 0; - $this->packages = array(); + $this->packages = []; foreach ($data->packages->package as $package) { $this->packages[$i] = new DriverPackage($this->id, $package); $i++; @@ -264,7 +264,7 @@ public function __construct($data = null) { // Create printers list if ($data->printers && $data->printers->printer) { $i = 0; - $this->printers = array(); + $this->printers = []; foreach ($data->printers->printer as $printer) { $this->printers[$i] = new DriverPrinterAssociation($this->id, $printer); $i++; @@ -296,7 +296,7 @@ public function loadXMLString($data) { if (!$xml) { return false; } - + $this->__construct($xml); return $this->loaded; @@ -476,24 +476,24 @@ public function loadDB($id, OPDB $db = null) { if ($id == null) { return false; } - + if ($db == null) { $db = OPDB::getInstance(); } - + // Clear any previous data present unset($this->translation); unset($this->supportcontacts); unset($this->dependencies); unset($this->printers); unset($this->packages); - - $id = mysql_real_escape_string($id); + + $id = $db->mysqli_real_escape_string($id); // Load the translations - foreach(array('supplier', 'license', 'licensetext', 'licenselink', 'shortdescription', 'comments') as $field) { - $this->translation[$field] = new Translation(null, "driver", array("id" => $id), $field); - $this->translation[$field]->loadDB("driver", array("id" => $id), $field, $db); + foreach(['supplier', 'license', 'licensetext', 'licenselink', 'shortdescription', 'comments'] as $field) { + $this->translation[$field] = new Translation(null, "driver", ["id" => $id], $field); + $this->translation[$field]->loadDB("driver", ["id" => $id], $field, $db); } // Prepare the query string for extracting main driver details @@ -502,52 +502,52 @@ public function loadDB($id, OPDB $db = null) { if ($result == null) { return false; } - $row = mysql_fetch_assoc($result); + $row = mysqli_fetch_assoc($result); $this->__construct($row); - mysql_free_result($result); - + mysqli_free_result($result); + // Prepare the query string for extracting details about the driver's support contacts $result = $db->query('SELECT * FROM driver_support_contact WHERE driver_id = ?', $this->id); - + if ($result) { - while($row = mysql_fetch_assoc($result)) { + while($row = mysqli_fetch_assoc($result)) { $this->supportcontacts[sizeof($this->supportcontacts)] = new DriverSupportContact($this->id, $row); $this->supportcontacts[sizeof($this->supportcontacts)-1]->loadDB($this->id, $row['url'], $row['level']); } } - mysql_free_result($result); - + mysqli_free_result($result); + // Prepare the query string for extracting details about the driver's dependencies $result = $db->query('SELECT * FROM driver_dependency WHERE driver_id = ?', $this->id); - + if ($result) { - while($row = mysql_fetch_assoc($result)) { + while($row = mysqli_fetch_assoc($result)) { $this->dependencies[sizeof($this->dependencies)] = new DriverDependency($this->id, $row); } } - mysql_free_result($result); - + mysqli_free_result($result); + // Prepare the query string for extracting details about the driver's packages $result = $db->query('SELECT * FROM driver_package WHERE driver_id = ?', $this->id); if ($result) { - while($row = mysql_fetch_assoc($result)) { + while($row = mysqli_fetch_assoc($result)) { $this->packages[sizeof($this->packages)] = new DriverPackage($this->id, $row); } } - mysql_free_result($result); - + mysqli_free_result($result); + // Prepare the query string for extracting details about the printers that work with this driver $result = $db->query('SELECT * FROM driver_printer_assoc WHERE driver_id = ?', $this->id); - + if ($result) { - while($row = mysql_fetch_assoc($result)) { + while($row = mysqli_fetch_assoc($result)) { $this->printers[sizeof($this->printers)] = new DriverPrinterAssociation($this->id, $row); $this->printers[sizeof($this->printers)-1]->loadDB($this->id, $row['printer_id']); } } - mysql_free_result($result); - + mysqli_free_result($result); + return true; } @@ -557,8 +557,8 @@ public function saveDB(OPDB $db = null) { } if (!$this->loaded) return false; - - $props = array(); + + $props = []; $props['name'] = $this->name; $props['driver_group'] = $this->driver_group; $props['locales'] = $this->locales; @@ -617,15 +617,15 @@ public function saveDB(OPDB $db = null) { $props['pdf_prototype'] = $this->pdf_prototype; $props['ppdentry'] = $this->ppdentry; $props['comments'] = $this->comments; - + // Find out if there is already an entry present and if so, remove it // before creating a new one $query = 'SELECT * FROM driver WHERE id = \'' . $this->id . '\''; $result = $db->query($query); if ($result) { - $count = mysql_num_rows($result); - mysql_free_result($result); + $count = mysqli_num_rows($result); + mysqli_free_result($result); if ($count) { if (!$this->removeFromDB($this->id, $db)) { return false; @@ -651,7 +651,7 @@ public function saveDB(OPDB $db = null) { $values .= "NULL,"; } } else { - $values .= "\"".mysql_real_escape_string($value)."\","; + $values .= "\"".$db->mysqli_real_escape_string($value)."\","; } } $fields[strlen($fields) - 1] = ')'; @@ -662,7 +662,7 @@ public function saveDB(OPDB $db = null) { echo "[ERROR] While saving driver data...\n".$db->getError()."\n"; return false; } - + // Trigger the save of translation data if (property_exists($this, 'translation')) { foreach ($this->translation as $field => $trobj) { @@ -672,7 +672,7 @@ public function saveDB(OPDB $db = null) { } } } - + // Trigger the save of package data if ($this->packages) { foreach ($this->packages as $package) { @@ -682,7 +682,7 @@ public function saveDB(OPDB $db = null) { } } } - + // Trigger the save of support contact data if ($this->supportcontacts) { foreach ($this->supportcontacts as $supportcontact) { @@ -692,7 +692,7 @@ public function saveDB(OPDB $db = null) { } } } - + // Trigger the save of dependency data if ($this->dependencies) { foreach ($this->dependencies as $dependency) { @@ -702,7 +702,7 @@ public function saveDB(OPDB $db = null) { } } } - + // Trigger the save of associated printers data if ($this->printers) { foreach ($this->printers as $printer) { @@ -712,7 +712,7 @@ public function saveDB(OPDB $db = null) { } } } - + return true; } @@ -720,12 +720,12 @@ public function removeFromDB($id, OPDB $db = null, $completeentry = false) { if ($id == null) { return false; } - + if ($db == null) { $db = OPDB::getInstance(); } - - $id = mysql_real_escape_string($id); + + $id = $db->mysqli_real_escape_string($id); // Prepare the query string for removing the main driver entry $query = "delete from driver where id=\"$id\";"; @@ -754,7 +754,7 @@ public function removeFromDB($id, OPDB $db = null, $completeentry = false) { // Remove driver-specific items from the printer/driver association // otherwise $query = "update driver_printer_assoc set " . - "max_res_x=NULL, max_res_y=NULL, color=NULL, text=NULL, lineart=NULL, " . + "max_res_x=NULL, max_res_y=NULL, color=NULL, text=NULL, lineart=NULL, " . "graphics=NULL, photo=NULL, load_time=NULL, speed=NULL, ppdentry=NULL, " . "comments=NULL, fromdriver=false " . "where driver_id=\"$id\";"; @@ -769,13 +769,13 @@ public function removeFromDB($id, OPDB $db = null, $completeentry = false) { if ($result == null) { echo "[ERROR] While deleting driver data...\n".$db->getError()."\n"; } - + if ($completeentry) { // Delete an uploaded tarball $dir = "upload/driver/$id"; $pwd = exec("pwd"); exec("rm -rf $pwd/$dir", - $output = array(), $return_value); + $output = [], $return_value); if ($return_value != 0) { echo "[ERROR] Could not remove attached tarball. " . "Error code: $return_value\n"; diff --git a/inc/db/driver/driver_dependency.php b/inc/db/driver/driver_dependency.php index a842327..850220d 100644 --- a/inc/db/driver/driver_dependency.php +++ b/inc/db/driver/driver_dependency.php @@ -18,7 +18,7 @@ public function __construct($id, $data) { $this->driver_id = $id; $this->version = (string)$data['version']; - + switch((string)gettype($data)) { case 'object': if(get_class($data) == "SimpleXMLElement") { @@ -60,17 +60,17 @@ public function saveDB(OPDB $db = null) { echo __FILE__."[ERROR]".$db->getError()."\n"; return false; } - $count = mysql_num_rows($result); - mysql_free_result($result); + $count = mysqli_num_rows($result); + mysqli_free_result($result); // Insert a new record only if there are no records if ($count) { $query = "update driver_dependency set version=\"{$this->version}\" where driver_id=\"{$this->driver_id}\" and required_driver=\"{$this->required_driver}\""; } else { $query = "insert into driver_dependency(driver_id,required_driver,version) values("; - $query .= "\"".mysql_real_escape_string($this->driver_id)."\","; - $query .= "\"".mysql_real_escape_string($this->required_driver)."\","; - $query .= "\"".mysql_real_escape_string($this->version)."\")"; + $query .= "\"".$db->mysqli_real_escape_string($this->driver_id)."\","; + $query .= "\"".$db->mysqli_real_escape_string($this->required_driver)."\","; + $query .= "\"".$db->mysqli_real_escape_string($this->version)."\")"; } $result = $db->query($query); diff --git a/inc/db/driver/driver_package.php b/inc/db/driver/driver_package.php index 0ee05d1..ad90cd4 100644 --- a/inc/db/driver/driver_package.php +++ b/inc/db/driver/driver_package.php @@ -47,7 +47,7 @@ public function toXML($indent = 0) { "\""; } $xmlstr .= ">" . htmlspecialchars($this->name) . "\n"; - + return $xmlstr; } @@ -65,17 +65,17 @@ public function saveDB(OPDB $db = null) { echo __FILE__."[ERROR]".$db->getError()."\n"; return false; } - $count = mysql_num_rows($result); - mysql_free_result($result); + $count = mysqli_num_rows($result); + mysqli_free_result($result); // Insert a new record only if there are no records if (!$count) { $query = "insert into driver_package(driver_id,scope,fingerprint,name) values("; - $query .= "\"".mysql_real_escape_string($this->driver_id)."\","; - $query .= "\"".mysql_real_escape_string($this->scope)."\","; - $query .= "\"".mysql_real_escape_string($this->fingerprint)."\","; - $query .= "\"".mysql_real_escape_string($this->name)."\")"; + $query .= "\"".$db->mysqli_real_escape_string($this->driver_id)."\","; + $query .= "\"".$db->mysqli_real_escape_string($this->scope)."\","; + $query .= "\"".$db->mysqli_real_escape_string($this->fingerprint)."\","; + $query .= "\"".$db->mysqli_real_escape_string($this->name)."\")"; } else { $query = "update driver_package set name=\"{$this->name}\" where driver_id=\"{$this->driver_id}\" and scope=\"{$this->scope}\" and fingerprint=\"{$this->fingerprint}\""; } diff --git a/inc/db/driver/driver_support_contact.php b/inc/db/driver/driver_support_contact.php index 8d2cdcf..5d87a26 100644 --- a/inc/db/driver/driver_support_contact.php +++ b/inc/db/driver/driver_support_contact.php @@ -42,7 +42,7 @@ public function __construct($driver_id, $data) { // Prepare the translation data if ($data) { - $this->translation["description"] = new Translation($data, "driver_support_contact", array("driver_id" => $this->driver_id, "url" => $this->url, "level" => $this->level), "description"); + $this->translation["description"] = new Translation($data, "driver_support_contact", ["driver_id" => $this->driver_id, "url" => $this->url, "level" => $this->level], "description"); } } @@ -53,12 +53,12 @@ public function loadXMLString($data) { } $this->__construct($xml); - + $this->loaded = true; return true; } - + public function toXML($indent = 0) { $is = str_pad("", $indent); $xmlstr = "$islevel); unset($this->description); - $driver_id = mysql_real_escape_string($driver_id); - $url = mysql_real_escape_string($url); - $level = mysql_real_escape_string($level); + $driver_id = $db->mysqli_real_escape_string($driver_id); + $url = $db->mysqli_real_escape_string($url); + $level = $db->mysqli_real_escape_string($level); // Prepare the query string for extracting main driver support contact // details @@ -113,13 +113,13 @@ public function loadDB($driver_id, $url, $level, OPDB $db = null) { if ($result == null) { return false; } - $row = mysql_fetch_assoc($result); + $row = mysqli_fetch_assoc($result); $this->__construct($driver_id, $row); - mysql_free_result($result); + mysqli_free_result($result); // Load the translations - $this->translation["description"] = new Translation(null, "driver_support_contact", array("driver_id" => $this->driver_id, "url" => $this->url, "level" => $this->level), "description"); - $this->translation["description"]->loadDB("driver_support_contact", array("driver_id" => $this->driver_id, "url" => $this->url, "level" => $this->level), "description", $db); + $this->translation["description"] = new Translation(null, "driver_support_contact", ["driver_id" => $this->driver_id, "url" => $this->url, "level" => $this->level], "description"); + $this->translation["description"]->loadDB("driver_support_contact", ["driver_id" => $this->driver_id, "url" => $this->url, "level" => $this->level], "description", $db); return true; } @@ -128,9 +128,9 @@ public function saveDB(OPDB $db = null) { if ($db == null) { $db = OPDB::getInstance(); } - + if (!$this->loaded) return false; - + // Find out if there is already an entry present $query = "select * from driver_support_contact where driver_id=\"{$this->driver_id}\" and url=\"{$this->url}\" and level=\"{$this->level}\""; $result = $db->query($query); @@ -138,20 +138,20 @@ public function saveDB(OPDB $db = null) { echo __FILE__."[ERROR]".$db->getError()."\n"; return false; } - $count = mysql_num_rows($result); - mysql_free_result($result); + $count = mysqli_num_rows($result); + mysqli_free_result($result); // if there exists an entry just update its description field else insert a new record if ($count) { $query = "update driver_support_contact set description=\"{$this->description}\" where driver_id=\"{$this->driver_id}\" and url=\"{$this->url}\" and level=\"{$this->level}\""; } else { $query = "insert into driver_support_contact(driver_id,url,level,description) values("; - $query .= "\"".mysql_real_escape_string($this->driver_id)."\","; - $query .= "\"".mysql_real_escape_string($this->url)."\","; - $query .= "\"".mysql_real_escape_string($this->level)."\","; - $query .= "\"".mysql_real_escape_string($this->description)."\")"; + $query .= "\"".$db->mysqli_real_escape_string($this->driver_id)."\","; + $query .= "\"".$db->mysqli_real_escape_string($this->url)."\","; + $query .= "\"".$db->mysqli_real_escape_string($this->level)."\","; + $query .= "\"".$db->mysqli_real_escape_string($this->description)."\")"; } - + $result = $db->query($query); if ($result == null) { echo "[ERROR] Unable to save driver's support contact: ".$db->getError()."\n"; diff --git a/inc/db/driver_printer_association.php b/inc/db/driver_printer_association.php index 631702e..ffa8095 100644 --- a/inc/db/driver_printer_association.php +++ b/inc/db/driver_printer_association.php @@ -14,7 +14,7 @@ public function __construct($id, $data, $is_printer = false) { if (!$id && !$data) { return false; } - + if ($is_printer) { $this->data['printer_id'] = $id; $this->data['driver_id'] = ''; @@ -22,7 +22,7 @@ public function __construct($id, $data, $is_printer = false) { $this->data['driver_id'] = $id; $this->data['printer_id'] = ''; } - + switch((string)gettype($data)) { case 'object': if (get_class($data) == "SimpleXMLElement") { @@ -111,9 +111,9 @@ public function __construct($id, $data, $is_printer = false) { // Prepare the translation data if ($data->comments) { if ($is_printer) { - $this->translation["pcomments"] = new Translation($data->comments, "driver_printer_assoc", array("driver_id" => $this->data['driver_id'], "printer_id" => $this->data['printer_id']), "pcomments"); + $this->translation["pcomments"] = new Translation($data->comments, "driver_printer_assoc", ["driver_id" => $this->data['driver_id'], "printer_id" => $this->data['printer_id']], "pcomments"); } else { - $this->translation["comments"] = new Translation($data->comments, "driver_printer_assoc", array("driver_id" => $this->data['driver_id'], "printer_id" => $this->data['printer_id']), "comments"); + $this->translation["comments"] = new Translation($data->comments, "driver_printer_assoc", ["driver_id" => $this->data['driver_id'], "printer_id" => $this->data['printer_id']], "comments"); } } break; @@ -160,7 +160,7 @@ public function toXML($indent = 0, $is_printer = false) { $xmlstr .= "$is \n"; } if (strlen($this->data['ppd'])) - $xmlstr .= "$is " . htmlspecialchars($this->data['ppd']) . + $xmlstr .= "$is " . htmlspecialchars($this->data['ppd']) . "\n"; $xmlstr .= "$is\n"; } elseif ($is_printer == false and $this->data['fromdriver'] == true) { @@ -230,31 +230,31 @@ public function loadDB($driver_id, $printer_id, $for_printer = false, // Clear any previous data present unset($this->translation); unset($this->data); - - $driver_id = mysql_real_escape_string($driver_id); - $printer_id = mysql_real_escape_string($printer_id); + + $driver_id = $db->mysqli_real_escape_string($driver_id); + $printer_id = $db->mysqli_real_escape_string($printer_id); // Load the translations - foreach(array('comments', 'pcomments') as $field) { - $this->translation[$field] = new Translation(null, "driver_printer_assoc", array("driver_id" => $driver_id, "printer_id" => $printer_id), $field); - $this->translation[$field]->loadDB("driver_printer_assoc", array("driver_id" => $driver_id, "printer_id" => $printer_id), $field, $db); + foreach(['comments', 'pcomments'] as $field) { + $this->translation[$field] = new Translation(null, "driver_printer_assoc", ["driver_id" => $driver_id, "printer_id" => $printer_id], $field); + $this->translation[$field]->loadDB("driver_printer_assoc", ["driver_id" => $driver_id, "printer_id" => $printer_id], $field, $db); } // Prepare the query string for extracting main driver/printer combo // details - $qstr = sprintf("SELECT * FROM driver_printer_assoc WHERE driver_id = '%s' and printer_id = '%s' ", mysql_real_escape_string($driver_id), mysql_real_escape_string($printer_id)); + $qstr = sprintf("SELECT * FROM driver_printer_assoc WHERE driver_id = '%s' and printer_id = '%s' ", $db->mysqli_real_escape_string($driver_id), $db->mysqli_real_escape_string($printer_id)); $result = $db->query($qstr); - + if ($result == null) { return false; } - $row = mysql_fetch_assoc($result); + $row = mysqli_fetch_assoc($result); if ($for_printer) { $this->__construct($printer_id, $row, true); } else { $this->__construct($driver_id, $row); } - mysql_free_result($result); + mysqli_free_result($result); } @@ -262,19 +262,19 @@ public function saveDB(OPDB $db = null) { if ($db == null) { $db = OPDB::getInstance(); } - + if ($this->loaded === false) return false; - + // Find out if an entry of this printer exists. If yes, then just update that entry - $qstr = sprintf("SELECT * FROM driver_printer_assoc WHERE driver_id = '%s' and printer_id = '%s' ", mysql_real_escape_string($this->data['driver_id']), mysql_real_escape_string($this->data['printer_id'])); + $qstr = sprintf("SELECT * FROM driver_printer_assoc WHERE driver_id = '%s' and printer_id = '%s' ", $db->mysqli_real_escape_string($this->data['driver_id']), $db->mysqli_real_escape_string($this->data['printer_id'])); $result = $db->query($qstr); if ($result == null) { echo __FILE__."[ERROR]".$db->getError()."\n"; return false; } - $count = mysql_num_rows($result); - mysql_free_result($result); + $count = mysqli_num_rows($result); + mysqli_free_result($result); if ($count) { $query = "update driver_printer_assoc set "; foreach ($this->data as $key=>$value) { @@ -282,7 +282,7 @@ public function saveDB(OPDB $db = null) { ((int)$value == -1)) { $v = "NULL"; } else { - $v = "\"".mysql_real_escape_string($value)."\""; + $v = "\"".$db->mysqli_real_escape_string($value)."\""; } $query .= "$key=$v,"; } @@ -297,7 +297,7 @@ public function saveDB(OPDB $db = null) { ((int)$value == -1)) { $values .= "NULL,"; } else { - $values .= "\"".mysql_real_escape_string($value)."\","; + $values .= "\"".$db->mysqli_real_escape_string($value)."\","; } } $fields[strlen($fields) - 1] = ')'; @@ -320,7 +320,7 @@ public function saveDB(OPDB $db = null) { } } } - + return true; } } diff --git a/inc/db/opdb.php b/inc/db/opdb.php index 0a13a76..637fc8f 100644 --- a/inc/db/opdb.php +++ b/inc/db/opdb.php @@ -6,48 +6,50 @@ class OPDB // points to the current database selected private $server; - + // A handle to the instance of this class private static $instance; - + // An array containing the possible servers and its configurations private $db; - + // path to the file containing server information private static $config_file = "/home/till/printing/foomatic/openprinting/www/includes/openprintingdb.xml"; private function __construct() { global $CONF; - $this->server = array(); - $i = sizeof($this->db); - $this->db[$i] = array(); + $this->server = []; + $i = count($this->db); + $this->db[$i] = []; $this->db[$i]['id'] = (string)$i+1; - $this->db[$i]['name'] = "OpenPrinting" . (string)$i+1; + $this->db[$i]['name'] = "OpenPrinting" . ((string)$i+1); $this->db[$i]['server'] = (string)$CONF->dbServer; $this->db[$i]['database'] = (string)$CONF->db; $this->db[$i]['username'] = (string)$CONF->dbUser; $this->db[$i]['password'] = (string)$CONF->dbPass; $index = &$this->db[$i]; - $test_con = @mysql_connect($index['server'], $index['username'], $index['password']); - if (mysql_errno($test_con) != 0 || !mysql_select_db($index['database'])) { + $test_con = @mysqli_connect($index['server'], $index['username'], $index['password']); + if ($test_con->errno != 0 || !$test_con->select_db($index['database'])) { unset($this->db[$i]); - echo "[ERROR]: ".mysql_error($test_con)."\n"; + echo "[ERROR]: ".mysqli_error($test_con)."\n"; } else { - mysql_close($test_con); + mysqli_close($test_con); } $this->server = 0; - $index = $this->db[0]; - $this->connection = @mysql_connect($index['server'], $index['username'], $index['password']); - mysql_select_db($index['database'], $this->connection); + if (!empty($this->db)) { + $index = $this->db[0]; + } + $this->connection = @mysqli_connect($index['server'], $index['username'], $index['password']); + mysqli_select_db($this->connection, $index['database']); } function __destruct() { if ($this->connection !== false) { - mysql_close($this->connection); + mysqli_close($this->connection); $this->connection = null; } } - + public function getInstance() { if (!isset(self::$instance)) { $class = __CLASS__; @@ -55,7 +57,7 @@ public function getInstance() { } return self::$instance; } - + public function getDBCount() { return sizeof($this->db); } @@ -67,17 +69,17 @@ public function getDBDetails($n) { } return $this->db[$n]; } - + public function open() { if ($this->connection !== null) { - mysql_close($this->connection); + mysqli_close($this->connection); $this->connection = null; } $index = $this->db[$this->server]; - $this->connection = @mysql_connect($index['server'], $index['username'], $index['password']); - mysql_select_db($index['database'], $this->connection); - if (mysql_errno($this->connection) != 0) { - echo "[ERROR]: ".mysql_error($this->connection)."\n"; + $this->connection = @mysqli_connect($index['server'], $index['username'], $index['password']); + mysqli_select_db($index['database'], $this->connection); + if (mysqli_errno($this->connection) != 0) { + echo "[ERROR]: ".mysqli_error($this->connection)."\n"; $this->connection = null; return false; } @@ -86,19 +88,27 @@ public function open() { public function close() { if ($this->connection !== null) { - mysql_close($this->connection); + mysqli_close($this->connection); $this->connection = null; } } - + public function query($string) { if ($this->connection === null) { return false; } - $results = mysql_query($string, $this->connection); + $results = mysqli_query($this->connection, $string); return $results; } - + + public function mysqli_real_escape_string($string) { + if ($this->connection === null) { + return false; + } + $results = mysqli_real_escape_string($this->connection, $string); + return $results; + } + public function changeDB($n) { $n--; if ($n < 0 || $n >= sizeof($this->db)) { @@ -107,27 +117,27 @@ public function changeDB($n) { $this->server = $n; return $this->open(); } - + public function getErrorNo() { - return mysql_errno($this->connection); + return mysqli_errno($this->connection); } - + public function getError() { - return mysql_error($this->connection); + return mysqli_error($this->connection); } } function printerIDfromMakeModel($make, $model) { $mk = $make; $mk = str_replace('+', 'plus', $mk); - $mk = ereg_replace('[^A-Za-z0-9\.]+', '_', $mk); - $mk = ereg_replace('^_', '', $mk); - $mk = ereg_replace('_$', '', $mk); + $mk = preg_replace('[^A-Za-z0-9\.]+', '_', $mk); + $mk = preg_replace('^_', '', $mk); + $mk = preg_replace('_$', '', $mk); $mdl = $model; $mdl = str_replace('+', 'plus', $mdl); - $mdl = ereg_replace('[^A-Za-z0-9\.\-]+', '_', $mdl); - $mdl = ereg_replace('^_', '', $mdl); - $mdl = ereg_replace('_$', '', $mdl); + $mdl = preg_replace('[^A-Za-z0-9\.\-]+', '_', $mdl); + $mdl = preg_replace('^_', '', $mdl); + $mdl = preg_replace('_$', '', $mdl); return $mk . '-' . $mdl; } diff --git a/inc/db/option/option.php b/inc/db/option/option.php index d0d925e..2f9d81c 100644 --- a/inc/db/option/option.php +++ b/inc/db/option/option.php @@ -10,20 +10,20 @@ class Option private $loaded; // Supported option types - public static $types = array('enum', 'bool', 'int', 'float', 'string', 'password'); + public static $types = ['enum', 'bool', 'int', 'float', 'string', 'password']; // Support execution models - public static $execution_types = array('substitution', 'postscript', 'pjl', 'composite', 'forced_composite'); + public static $execution_types = ['substitution', 'postscript', 'pjl', 'composite', 'forced_composite']; // This contains the XML data - public $data = array(); + public $data = []; // Contains of list of objects of respective data - public $choice = array(); - public $constraint = array(); + public $choice = []; + public $constraint = []; public function __construct($data = null) { - $this->loaded = false; + $this->loaded = false; if ($data != null) { switch((string)gettype($data)) { case 'object': @@ -77,10 +77,10 @@ public function __construct($data = null) { // Prepare the translation data if ($this->data['longname']) { - $this->translation["longname"] = new Translation($data->arg_longname, "options", array("id" => $this->data['id']), "longname"); + $this->translation["longname"] = new Translation($data->arg_longname, "options", ["id" => $this->data['id']], "longname"); } if ($this->data['comments']) { - $this->translation["comments"] = new Translation($data->comments, "options", array("id" => $this->data['id']), "comments"); + $this->translation["comments"] = new Translation($data->comments, "options", ["id" => $this->data['id']], "comments"); } // The option's enumerated values @@ -117,7 +117,7 @@ public function loadXMLString($data) { } $this->__construct($xml); - + return $this->loaded; } @@ -239,52 +239,52 @@ public function loadDB($id, OPDB $db = null) { if ($db == null) { $db = OPDB::getInstance(); } - + // Clear any previous data present unset($this->constraint); unset($this->choice); - $id = mysql_real_escape_string($id); - + $id = $db->mysqli_real_escape_string($id); + // Load the translations - foreach(array('longname', 'comments') as $field) { - $this->translation[$field] = new Translation(null, "option", array("id" => $id), $field); - $this->translation[$field]->loadDB("option", array("id" => $id), $field, $db); + foreach(['longname', 'comments'] as $field) { + $this->translation[$field] = new Translation(null, "option", ["id" => $id], $field); + $this->translation[$field]->loadDB("option", ["id" => $id], $field, $db); } // Prepare the query string for extracting main option details $query = "select * from options where id=\"$id\""; $result = $db->query($query); - + if ($result == null) { return false; } - $row = mysql_fetch_assoc($result); + $row = mysqli_fetch_assoc($result); $this->__construct($row); - mysql_free_result($result); - + mysqli_free_result($result); + // Query string for extracting details about the option's choices $query = "select * from option_choice where option_id=\"{$this->data['id']}\""; $result = $db->query($query); - + if ($result) { - while($row = mysql_fetch_assoc($result)) { + while($row = mysqli_fetch_assoc($result)) { $this->choice[sizeof($this->choice)] = new OptionChoice($this->data['id'], $row); $this->choice[sizeof($this->choice)-1]->loadDB($this->data['id'], $row['id']); } } - mysql_free_result($result); - + mysqli_free_result($result); + // Query string for extracting details about the option's constraints $query = "select * from option_constraint where option_id=\"{$this->data['id']}\" and is_choice_constraint=0"; $result = $db->query($query); - + if ($result) { - while($row = mysql_fetch_assoc($result)) { + while($row = mysqli_fetch_assoc($result)) { $this->constraint[sizeof($this->constraint)] = new OptionConstraint($this->data['id'], $row); } } - mysql_free_result($result); + mysqli_free_result($result); return true; } @@ -293,20 +293,20 @@ public function saveDB(OPDB $db = null) { if ($db == null) { $db = OPDB::getInstance(); } - + if (!$this->loaded) { print "[ERROR] Option data not loaded...\n"; return false; } - - $this->data['id'] = mysql_real_escape_string($this->data['id']); + + $this->data['id'] = $db->mysqli_real_escape_string($this->data['id']); // Find out if there is already an entry present $query = "select * from options where id=\"{$this->data['id']}\""; $result = $db->query($query); $count = 0; if ($result) { - $count = mysql_num_rows($result); - mysql_free_result($result); + $count = mysqli_num_rows($result); + mysqli_free_result($result); } else { echo "[ERROR] Option :: ".$db->getError()."\n"; return false; @@ -328,7 +328,7 @@ public function saveDB(OPDB $db = null) { ($value == "")) { $values .= "NULL,"; } else { - $values .= "\"".mysql_real_escape_string($value)."\","; + $values .= "\"".$db->mysqli_real_escape_string($value)."\","; } } $fields[strlen($fields) - 1] = ')'; @@ -380,12 +380,12 @@ public function removeFromDB($id, OPDB $db = null) { if ($id == null) { return false; } - + if ($db == null) { $db = OPDB::getInstance(); } - - $id = mysql_real_escape_string($id); + + $id = $db->mysqli_real_escape_string($id); // Prepare the query string for removing the main printer entry $query = "delete from options where id=\"$id\";"; @@ -396,7 +396,7 @@ public function removeFromDB($id, OPDB $db = null) { echo "[ERROR] While deleting printer data...\n".$db->getError()."\n"; return false; } - + return true; } } diff --git a/inc/db/option/option_choice.php b/inc/db/option/option_choice.php index 392d3ce..ad36c05 100644 --- a/inc/db/option/option_choice.php +++ b/inc/db/option/option_choice.php @@ -9,16 +9,16 @@ class OptionChoice private $loaded; // Supported option types - public static $types = array('enum', 'bool', 'int', 'float', 'string', 'password'); + public static $types = ['enum', 'bool', 'int', 'float', 'string', 'password']; // Support execution models - public static $execution_types = array('substitution', 'postscript', 'pjl', 'composite', 'forced_composite'); + public static $execution_types = ['substitution', 'postscript', 'pjl', 'composite', 'forced_composite']; // This contains the XML data - public $data = array(); + public $data = []; // Contains of list of objects of respective data - public $constraint = array(); + public $constraint = []; public function __construct($id, $data) { if ($id == null || $data == null) { @@ -50,7 +50,7 @@ public function __construct($id, $data) { // Prepare the translation data if ($this->data['longname']) { - $this->translation["longname"] = new Translation($data->ev_longname, "option_choice", array("id" => $this->data['id'], "option_id" => $this->data['option_id']), "longname"); + $this->translation["longname"] = new Translation($data->ev_longname, "option_choice", ["id" => $this->data['id'], "option_id" => $this->data['option_id']], "longname"); } // The choice's constraints @@ -133,7 +133,7 @@ public function loadDB($option_id, $id, OPDB $db = null) { // Clear any previous data present unset($this->constraint); - $id = mysql_real_escape_string($id); + $id = $db->mysqli_real_escape_string($id); // Prepare the query string for extracting main option choice details $query = "select * from option_choice where option_id=\"$option_id\" and id=\"$id\""; @@ -142,24 +142,24 @@ public function loadDB($option_id, $id, OPDB $db = null) { if ($result == null) { return false; } - $row = mysql_fetch_assoc($result); + $row = mysqli_fetch_assoc($result); $this->__construct($id, $row); - mysql_free_result($result); + mysqli_free_result($result); // Query string for extracting details about the choice's constraints $query = "select * from option_constraint where option_id=\"$option_id\" and choice_id=\"$id\" and is_choice_constraint=1"; $result = $db->query($query); if ($result) { - while($row = mysql_fetch_assoc($result)) { + while($row = mysqli_fetch_assoc($result)) { $this->constraint[sizeof($this->constraint)] = new OptionConstraint($option_id, $row, $id); } } - mysql_free_result($result); + mysqli_free_result($result); - // Load the translations - $this->translation["longname"] = new Translation(null, "option_choice", array("id" => $this->data['id'], "option_id" => $this->data['option_id']), "longname"); - $this->translation["longname"]->loadDB("option_choice", array("id" => $this->data['id'], "option_id" => $this->data['option_id']), "longname", $db); + // Load the translations + $this->translation["longname"] = new Translation(null, "option_choice", ["id" => $this->data['id'], "option_id" => $this->data['option_id']], "longname"); + $this->translation["longname"]->loadDB("option_choice", ["id" => $this->data['id'], "option_id" => $this->data['option_id']], "longname", $db); return true; } @@ -174,15 +174,15 @@ public function saveDB(OPDB $db = null) { return false; } - $this->data['option_id'] = mysql_real_escape_string($this->data['option_id']); - $this->data['id'] = mysql_real_escape_string($this->data['id']); + $this->data['option_id'] = $db->mysqli_real_escape_string($this->data['option_id']); + $this->data['id'] = $db->mysqli_real_escape_string($this->data['id']); // Find out if there is already an entry present $query = "select * from option_choice where option_id=\"{$this->data['option_id']}\" and id=\"{$this->data['id']}\""; $result = $db->query($query); $count = 0; if ($result) { - $count = mysql_num_rows($result); - mysql_free_result($result); + $count = mysqli_num_rows($result); + mysqli_free_result($result); } else { echo "[ERROR] Option Choice :: ".$db->getError()."\n"; return false; @@ -192,7 +192,7 @@ public function saveDB(OPDB $db = null) { if ($count) { $query = "update option_choice set "; foreach ($this->data as $key=>$value) { - $query .= "$key=\"".mysql_real_escape_string($value)."\","; + $query .= "$key=\"".$db->mysqli_real_escape_string($value)."\","; } $query[strlen($query) - 1] = " "; $query .= " where option_id=\"{$this->data['option_id']}\" and id=\"{$this->data['id']}\""; @@ -201,7 +201,7 @@ public function saveDB(OPDB $db = null) { $fields = $values = ""; foreach($this->data as $key=>$value) { $fields .= "$key,"; - $values .= "\"".mysql_real_escape_string($value)."\","; + $values .= "\"".$db->mysqli_real_escape_string($value)."\","; } $fields[strlen($fields) - 1] = ')'; $values[strlen($values) - 1] = ')'; diff --git a/inc/db/option/option_constraint.php b/inc/db/option/option_constraint.php index b9277ea..9cb66f3 100644 --- a/inc/db/option/option_constraint.php +++ b/inc/db/option/option_constraint.php @@ -7,13 +7,13 @@ class OptionConstraint private $loaded; // Supported option types - public static $types = array('enum', 'bool', 'int', 'float', 'string', 'password'); + public static $types = ['enum', 'bool', 'int', 'float', 'string', 'password']; // Support execution models - public static $execution_types = array('substitution', 'postscript', 'pjl', 'composite', 'forced_composite'); + public static $execution_types = ['substitution', 'postscript', 'pjl', 'composite', 'forced_composite']; // This contains the XML data - public $data = array(); + public $data = []; public function __construct($id, $data, $choice_id = null) { if ($id == null || $data == null) { @@ -26,7 +26,7 @@ public function __construct($id, $data, $choice_id = null) { $this->data['is_choice_constraint'] = true; } if ($data != null) { - switch((string)gettype($data)) { + switch((string)gettype($data)) { case 'object': if (get_class($data) == "SimpleXMLElement") { $this->data['sense'] = (string)$data['sense']; @@ -120,7 +120,7 @@ public function loadDB($id, OPDB $db = null) { $db = OPDB::getInstance(); } - $id = mysql_real_escape_string($id); + $id = $db->mysqli_real_escape_string($id); // Prepare the query string for extracting main driver details $query = "select * from option_constraint where option_id=\"$id\""; @@ -129,9 +129,9 @@ public function loadDB($id, OPDB $db = null) { if ($result == null) { return false; } - $row = mysql_fetch_assoc($result); + $row = mysqli_fetch_assoc($result); $this->__construct($row); - mysql_free_result($result); + mysqli_free_result($result); return true; } @@ -143,24 +143,24 @@ public function saveDB(OPDB $db = null) { if (!$this->loaded) return false; - $this->data['option_id'] = mysql_real_escape_string($this->data['option_id']); - $this->data['sense'] = mysql_real_escape_string($this->data['sense']); + $this->data['option_id'] = $db->mysqli_real_escape_string($this->data['option_id']); + $this->data['sense'] = $db->mysqli_real_escape_string($this->data['sense']); // Find out if there is already an entry present $query = "select * from option_constraint where option_id=\"{$this->data['option_id']}\""; if (array_key_exists('choice_id', $this->data)) { - $this->data['choice_id'] = mysql_real_escape_string($this->data['choice_id']); + $this->data['choice_id'] = $db->mysqli_real_escape_string($this->data['choice_id']); $query .= " and choice_id=\"{$this->data['choice_id']}\""; } else { $query .= " and (choice_id=\"\" or choice_id is null)"; } if (array_key_exists('printer', $this->data)) { - $this->data['printer'] = mysql_real_escape_string($this->data['printer']); + $this->data['printer'] = $db->mysqli_real_escape_string($this->data['printer']); $query .= " and printer=\"{$this->data['printer']}\""; } else { $query .= " and (printer=\"\" or printer is null)"; } if (array_key_exists('driver', $this->data)) { - $this->data['driver'] = mysql_real_escape_string($this->data['driver']); + $this->data['driver'] = $db->mysqli_real_escape_string($this->data['driver']); $query .= " and driver=\"{$this->data['driver']}\""; } else { $query .= " and (driver=\"\" or driver is null)"; @@ -168,15 +168,15 @@ public function saveDB(OPDB $db = null) { $result = $db->query($query); $count = 0; if ($result) { - $count = mysql_num_rows($result); - mysql_free_result($result); + $count = mysqli_num_rows($result); + mysqli_free_result($result); } // Prepare the query string. Update if data exists or insert a new record if ($count) { $query = "update option_constraint set "; foreach ($this->data as $key=>$value) { - $query .= "$key=\"".mysql_real_escape_string($value)."\","; + $query .= "$key=\"".$db->mysqli_real_escape_string($value)."\","; } $query[strlen($query) - 1] = " "; $query .= " where option_id=\"{$this->data['option_id']}\" and sense=\"{$this->data['sense']}\""; @@ -194,7 +194,7 @@ public function saveDB(OPDB $db = null) { $fields = $values = ""; foreach($this->data as $key=>$value) { $fields .= "$key,"; - $values .= "\"".mysql_real_escape_string($value)."\","; + $values .= "\"".$db->mysqli_real_escape_string($value)."\","; } $fields[strlen($fields) - 1] = ')'; $values[strlen($values) - 1] = ')'; diff --git a/inc/db/printer/printer.php b/inc/db/printer/printer.php index c7fa905..a1b4729 100644 --- a/inc/db/printer/printer.php +++ b/inc/db/printer/printer.php @@ -9,8 +9,8 @@ class Printer private $loaded; // Static data - public static $types = array('laser', 'led', 'inkjet', 'dotmatrix', 'impact', 'sublimation', 'transfer'); - + public static $types = ['laser', 'led', 'inkjet', 'dotmatrix', 'impact', 'sublimation', 'transfer']; + public $id; public $make; public $model; @@ -145,11 +145,11 @@ public function __construct($data = null) { } } // - + // if ($xml->autodetect != false) { if ($xml->autodetect->general != false && sizeof($xml->autodetect->general) >= 1) { - $this->autodetect['general'] = array(); + $this->autodetect['general'] = []; $temp = &$this->autodetect['general']; $temp['model'] = (string)$xml->autodetect->general->model; $temp['ieee1284'] = (string)$xml->autodetect->general->ieee1284; @@ -158,7 +158,7 @@ public function __construct($data = null) { $temp['manufacturer'] = (string)$xml->autodetect->general->manufacturer; } if ($xml->autodetect->parallel != false && sizeof($xml->autodetect->parallel) >= 1) { - $this->autodetect['parallel'] = array(); + $this->autodetect['parallel'] = []; $temp = &$this->autodetect['parallel']; $temp['model'] = (string)$xml->autodetect->parallel->model; $temp['ieee1284'] = (string)$xml->autodetect->parallel->ieee1284; @@ -167,7 +167,7 @@ public function __construct($data = null) { $temp['manufacturer'] = (string)$xml->autodetect->parallel->manufacturer; } if ($xml->autodetect->usb != false && sizeof($xml->autodetect->usb) >= 1) { - $this->autodetect['usb'] = array(); + $this->autodetect['usb'] = []; $temp = &$this->autodetect['usb']; $temp['model'] = (string)$xml->autodetect->usb->model; $temp['ieee1284'] = (string)$xml->autodetect->usb->ieee1284; @@ -176,7 +176,7 @@ public function __construct($data = null) { $temp['manufacturer'] = (string)$xml->autodetect->usb->manufacturer; } if ($xml->autodetect->snmp != false && sizeof($xml->autodetect->snmp) >= 1) { - $this->autodetect['snmp'] = array(); + $this->autodetect['snmp'] = []; $temp = &$this->autodetect['snmp']; $temp['model'] = (string)$xml->autodetect->snmp->model; $temp['ieee1284'] = (string)$xml->autodetect->snmp->ieee1284; @@ -192,13 +192,13 @@ public function __construct($data = null) { } // Prepare the translation data if ($data->comments) { - $this->translation["comments"] = new Translation($data->comments, "printer", array("id" => $this->id), "comments"); + $this->translation["comments"] = new Translation($data->comments, "printer", ["id" => $this->id], "comments"); } - + // if ($data->drivers != false && $data->drivers->driver != false) { $i = 0; - $this->drivers = array(); + $this->drivers = []; foreach($data->drivers->driver as $driver) { $this->drivers[$i] = new DriverPrinterAssociation($this->id, $driver, true); $i ++; @@ -207,7 +207,7 @@ public function __construct($data = null) { // } } - + /** * Initialize class from an XML string * @return bool True if initialization was successful @@ -220,12 +220,12 @@ public function loadXMLString($data) { } $this->__construct($xml); - + $this->loaded = true; - + return true; } - + public function loadXMLFile($filename) { if (!file_exists($filename)) { return false; @@ -237,14 +237,14 @@ public function loadXMLFile($filename) { } return false; } - + public function toXML($indent = 0) { $is = str_pad("", $indent); if (!$this->id) return false; $xmlstr = "$isid}\">\n"; if (strlen($this->make)) $xmlstr .= "$is " . htmlspecialchars($this->make) . "\n"; - if (strlen($this->model)) + if (strlen($this->model)) $xmlstr .= "$is " . htmlspecialchars($this->model) . "\n"; if (strlen($this->pcmodel)) @@ -267,8 +267,8 @@ public function toXML($indent = 0) { if (strlen($this->url)) $xmlstr .= "$is " . htmlspecialchars($this->url) . "\n"; $lang = ""; - foreach(array('postscript', 'pdf', 'pcl', 'lips', 'escp', 'escp2', - 'hpgl2', 'tiff') as $pdl) { + foreach(['postscript', 'pdf', 'pcl', 'lips', 'escp', 'escp2', + 'hpgl2', 'tiff'] as $pdl) { if ($this->lang[$pdl]) { $lang .= "$is <{$pdl} "; if (strlen($this->lang["{$pdl}_level"])) @@ -285,10 +285,10 @@ public function toXML($indent = 0) { if ($lang) $xmlstr .= "$is \n$lang$is \n"; $autodetect = ""; - foreach(array('general', 'parallel', 'usb', 'snmp') as $connection) { + foreach(['general', 'parallel', 'usb', 'snmp'] as $connection) { $components = ""; - foreach(array('ieee1284', 'commandset', 'description', - 'manufacturer', 'model') as $component) { + foreach(['ieee1284', 'commandset', 'description', + 'manufacturer', 'model'] as $component) { if (strlen($this->autodetect[$connection][$component])) $components .= "$is <$component>" . htmlspecialchars($this->autodetect[$connection][$component]) . @@ -338,13 +338,13 @@ public function loadDB($id, OPDB $db = null) { if ($db == null) { $db = OPDB::getInstance(); } - + if ($id == "") { $this->loaded = false; return false; } - - $id = mysql_real_escape_string($id); + + $id = $db->mysqli_real_escape_string($id); $query = "select * from printer where id=\"$id\";"; $result = $db->query($query); if ($result == null) { @@ -355,10 +355,10 @@ public function loadDB($id, OPDB $db = null) { unset($this->translation); // Load the translations - $this->translation['comments'] = new Translation(null, "printer", array("id" => $id), 'comments'); - $this->translation['comments']->loadDB("printer", array("id" => $id), 'comments', $db); - - while($row = mysql_fetch_assoc($result)) { + $this->translation['comments'] = new Translation(null, "printer", ["id" => $id], 'comments'); + $this->translation['comments']->loadDB("printer", ["id" => $id], 'comments', $db); + + while($row = mysqli_fetch_assoc($result)) { $this->id = (string)$row['id']; $this->make = (string)$row['make']; $this->model = (string)$row['model']; @@ -395,7 +395,7 @@ public function loadDB($id, OPDB $db = null) { $this->lang['proprietary'] = (bool)$row['proprietary']; $this->lang['pjl'] = (bool)$row['pjl']; $this->lang['text'] = (string)$row['text']; - + $this->autodetect['general']['ieee1284'] = (string)$row['general_ieee1284']; $this->autodetect['general']['commandset'] = (string)$row['general_commandset']; $this->autodetect['general']['description'] = (string)$row['general_description']; @@ -424,25 +424,25 @@ public function loadDB($id, OPDB $db = null) { $result = $db->query($query); if ($result) { - while($row = mysql_fetch_assoc($result)) { + while($row = mysqli_fetch_assoc($result)) { $this->drivers[sizeof($this->drivers)] = new DriverPrinterAssociation($this->id, $row, true); $this->drivers[sizeof($this->drivers)-1]->loadDB($row['driver_id'], $this->id, true); } } - mysql_free_result($result); + mysqli_free_result($result); $this->loaded = true; return true; } - + public function saveDB(OPDB $db = null) { if ($db == null) { $db = OPDB::getInstance(); } - + if (!$this->loaded) return false; - - $props = array(); + + $props = []; $props['id'] = (string)$this->id; $props['make'] = (string)$this->make; $props['model'] = (string)$this->model; @@ -537,16 +537,16 @@ public function saveDB(OPDB $db = null) { foreach ($this->autodetect as $k=>$v) { $tag = &$this->autodetect[$k]; foreach($tag as $l=>$m) { - $props[$k."_".$l] = (string)$m; + $props[$k."_".$l] = (string)$m; } } - + // Find out if an entry of this printer exists. If yes, delete this entry // before creating a new one $query = "select make from printer where id=\"{$this->id}\""; $result = $db->query($query); - $count = mysql_num_rows($result); - mysql_free_result($result); + $count = mysqli_num_rows($result); + mysqli_free_result($result); if ($count) { if (!$this->removeFromDB($this->id, $db)) { return false; @@ -558,7 +558,7 @@ public function saveDB(OPDB $db = null) { $fields = $values = ""; foreach ($props as $key=>$value) { $fields .= "$key,"; - $values .= "\"".mysql_real_escape_string($value)."\","; + $values .= "\"".$db->mysqli_real_escape_string($value)."\","; } $fields[strlen($fields) - 1] = ')'; $values[strlen($values) - 1] = ')'; @@ -570,7 +570,7 @@ public function saveDB(OPDB $db = null) { echo "[ERROR]: ".$db->getError()."\n"; return false; } - + // Trigger the save of translation data if ($this->translation) { foreach ($this->translation as $field => $trobj) { @@ -581,7 +581,7 @@ public function saveDB(OPDB $db = null) { } } - // Trigger the save of associated drivers data + // Trigger the save of associated drivers data foreach($this->drivers as $driver) { $driver->saveDB($db); } @@ -593,12 +593,12 @@ public function removeFromDB($id, OPDB $db = null, $completeentry = false) { if ($id == null) { return false; } - + if ($db == null) { $db = OPDB::getInstance(); } - - $id = mysql_real_escape_string($id); + + $id = $db->mysqli_real_escape_string($id); // Prepare the query string for removing the main printer entry $query = "delete from printer where id=\"$id\";"; diff --git a/inc/db/processtarballs.php b/inc/db/processtarballs.php index adccbe2..e119674 100644 --- a/inc/db/processtarballs.php +++ b/inc/db/processtarballs.php @@ -53,9 +53,9 @@ function processtarball($driver, $drivertype, $op, $nonfree=false) { fclose($lfh); return -1; } - $file_list = array(); + $file_list = []; if (is_dir($dir . "/$UNCOMPRESSEDDIR")) { - exec("rm -rf $dir/$UNCOMPRESSEDDIR", $out = array(), $ret_value); + exec("rm -rf $dir/$UNCOMPRESSEDDIR", $out = [], $ret_value); if ($ret_value != 0) { fwrite($lfh, "ERROR: Cannot remove old \"$UNCOMPRESSEDDIR\" directory!\n"); @@ -65,7 +65,7 @@ function processtarball($driver, $drivertype, $op, $nonfree=false) { } if (!is_dir($dir . "/$UNCOMPRESSEDDIR")) { // Uncompress the tarball - exec("mkdir -p $dir/$UNCOMPRESSEDDIR", $out = array(), $ret_value); + exec("mkdir -p $dir/$UNCOMPRESSEDDIR", $out = [], $ret_value); if ($ret_value == 0) { // Uncompress the archive and generate a list of files contained // in it @@ -158,7 +158,7 @@ function processtarball($driver, $drivertype, $op, $nonfree=false) { "$file: WARNING - XML file of unknown type\n"); continue; } - $result = array(); + $result = []; exec("xmllint --noout --schema $schemadir/$type.xsd " . "$dir/$UNCOMPRESSEDDIR/$file 2>&1", $result, $ret_value); @@ -166,7 +166,7 @@ function processtarball($driver, $drivertype, $op, $nonfree=false) { fwrite($lfh, "$file: " . ($ret_value == 0 ? "PASS" : "FAIL") . " -\n " . implode("\n ", $result) . "\n"); } elseif (preg_match("/\.ppd(|\.gz)$/i", $file)) { - $result = array(); + $result = []; exec("cupstestppd -W filters -W profiles " . "$dir/$UNCOMPRESSEDDIR/$file 2>&1", $result, $ret_value); @@ -213,11 +213,11 @@ function processtarball($driver, $drivertype, $op, $nonfree=false) { } } } else { - $printer->drivers = array(); + $printer->drivers = []; $need_to_add = true; } if ($need_to_add == true) { - $entry = array(); + $entry = []; $entry['driver_id'] = $driver; $entry['ppd'] = ""; $entry['pcomments'] = ""; @@ -283,7 +283,7 @@ function processtarball($driver, $drivertype, $op, $nonfree=false) { $drivertype == "ghostscript") ? "-l" : ""); exec("$ppdtoxml -d $driver $l -b $ppdbasedir -f $dir -x " . "$dir/$UNCOMPRESSEDDIR/$file", - $out = array(), $ret_value); + $out = [], $ret_value); $ppdlocation = ""; if ($ret_value == 0) { if ($dh = opendir($dir)) { @@ -307,7 +307,7 @@ function processtarball($driver, $drivertype, $op, $nonfree=false) { continue; } $printermake = $printer->make; - $result = array(); + $result = []; exec("$searchprinter -m4 -d1 " . "\"" . escapeshellarg($printer->make) . "|" . escapeshellarg($printer->model) . "\"", $result, $ret_value); @@ -328,9 +328,9 @@ function processtarball($driver, $drivertype, $op, $nonfree=false) { continue; } $found = true; - foreach(array('postscript', 'pdf', 'pcl', + foreach(['postscript', 'pdf', 'pcl', 'lips', 'escp', 'escp2', - 'hpgl2', 'tiff') as $pdl) { + 'hpgl2', 'tiff'] as $pdl) { if (!$printer2->lang[$pdl] and $printer->lang[$pdl]) $printer2->lang[$pdl] = @@ -346,9 +346,9 @@ function processtarball($driver, $drivertype, $op, $nonfree=false) { $printer2->lang["{$pdl}_level"] = $printer->lang["{$pdl}_level"]; } - foreach(array('ieee1284', 'commandset', + foreach(['ieee1284', 'commandset', 'description', 'manufacturer', - 'model') as $component) { + 'model'] as $component) { if (strlen($printer2->autodetect['general'][$component]) == 0 and strlen($printer->autodetect['general'][$component]) != 0) $printer2->autodetect['general'][$component] = @@ -368,7 +368,7 @@ function processtarball($driver, $drivertype, $op, $nonfree=false) { } if (!$drvfound) { if ($printer2->drivers == false) - $printer2->drivers = array(); + $printer2->drivers = []; $printer2->drivers[sizeof($printer2->drivers)] = new DriverPrinterAssociation($printer2->id, null, true); $drv2 = $printer2->drivers[sizeof($printer2->drivers)-1]; @@ -420,12 +420,12 @@ function processtarball($driver, $drivertype, $op, $nonfree=false) { $ret_value = 0; if (preg_match("/\.ppd\.gz$/i", $file)) { exec("gunzip $dir/$UNCOMPRESSEDDIR/$file", - $out = array(), $ret_value); + $out = [], $ret_value); if ($ret_value == 0) $file = substr($file, 0, -3); } if ($ret_value == 0) { - $result = array(); + $result = []; exec("mkdir -p $dir/" . preg_replace(":/[^/]+\.ppd$:", "", $ppdlocation) . " 2>&1", @@ -433,7 +433,7 @@ function processtarball($driver, $drivertype, $op, $nonfree=false) { if ($ret_value == 0) exec("mv $dir/$UNCOMPRESSEDDIR/$file " . "$dir/$ppdlocation 2>&1", - $out = array(), $ret_value); + $out = [], $ret_value); if ($ret_value == 0) { $ppdstocheckin = true; fwrite($lfh, @@ -453,7 +453,7 @@ function processtarball($driver, $drivertype, $op, $nonfree=false) { } if ($ppdstocheckin == true) { // Make PPD tree group-writable - $result = array(); + $result = []; exec("chmod -R g+rwX $dir/PPD", $result, $ret_value); if ($ret_value != 0) { fwrite($lfh, @@ -474,13 +474,13 @@ function processtarball($driver, $drivertype, $op, $nonfree=false) { } } // Remove uncompressed files of the tarball and generated XML files - $result = array(); + $result = []; exec("rm -rf $dir/$UNCOMPRESSEDDIR", $result, $ret_value); if ($ret_value != 0) { fwrite($lfh, "ERROR: Cannot remove \"$UNCOMPRESSEDDIR\" directory!\n"); } - $result = array(); + $result = []; exec("rm -rf $dir/*.xml", $result, $ret_value); if ($ret_value != 0) { fwrite($lfh, diff --git a/inc/db/translation.php b/inc/db/translation.php index 6ae92b8..3c58fa4 100644 --- a/inc/db/translation.php +++ b/inc/db/translation.php @@ -22,12 +22,12 @@ public function __construct($data = null, $table = null, $pkeys = null, $field = $this->loaded = false; return false; } - + $this->table = $table; $this->pkeys = $pkeys; $this->field = $field; - $this->translations = array(); - + $this->translations = []; + if ($data != null) { switch((string)gettype($data)) { case 'array': @@ -82,7 +82,7 @@ public function loadXMLString($data, $table = null, $pkeys = null, $field = null public function toXML($indent = 0, $link = False) { $xmlstr = ""; $is = str_pad("", $indent); - foreach($this->translations as $lang => $trans) { + foreach($this->translations as $lang => $trans) { if ($lang == "en" or !strlen($trans)) continue; if ($link == False) { $xmlstr .= "$is<$lang>"; @@ -127,13 +127,13 @@ public function loadDB($table = null, $pkeys = null, $field = null, OPDB $db = n return false; } - $t = array(); - while($row = mysql_fetch_assoc($result)) { + $t = []; + while($row = mysqli_fetch_assoc($result)) { $t[$row["lang"]] = $row[$field]; } $this->__construct($t, $table, $pkeys, $field); - mysql_free_result($result); + mysqli_free_result($result); return true; } @@ -154,9 +154,9 @@ public function saveDB(OPDB $db = null) { $pkeys_fields = ""; $pkeys_values = ""; foreach($pkeys as $key => $value) { - $pkeys_expr .= " $key=\"".mysql_real_escape_string($value)."\" and"; + $pkeys_expr .= " $key=\"".$db->mysqli_real_escape_string($value)."\" and"; $pkeys_fields .= "$key, "; - $pkeys_values .= "\"".mysql_real_escape_string($value)."\", "; + $pkeys_values .= "\"".$db->mysqli_real_escape_string($value)."\", "; } $pkeys_expr = substr($pkeys_expr, 1, -4); $pkeys_fields = substr($pkeys_fields, 0, -2); @@ -166,21 +166,21 @@ public function saveDB(OPDB $db = null) { // We must add the translations one by one as they go into // different lines foreach($t as $lang => $trans) { - + // Find out if there is already an entry present $result = $db->query('SELECT lang FROM ' . $table . '_translation WHERE ' . $pkeys_expr . ' and lang = \'' . $lang . '\''); $count = 0; if ($result) { - $count = mysql_num_rows($result); - mysql_free_result($result); + $count = mysqli_num_rows($result); + mysqli_free_result($result); } // Prepare the query string. Update if data exists or insert a new record if ($count) { - $query = "update ${table}_translation set $field=\"".mysql_real_escape_string($trans)."\" where $pkeys_expr and lang=\"$lang\";"; + $query = "update ${table}_translation set $field=\"".$db->mysqli_real_escape_string($trans)."\" where $pkeys_expr and lang=\"$lang\";"; } else { - $query = "insert into ${table}_translation($pkeys_fields, lang, $field) values($pkeys_values, \"$lang\", \"".mysql_real_escape_string($trans)."\");"; + $query = "insert into ${table}_translation($pkeys_fields, lang, $field) values($pkeys_values, \"$lang\", \"".$db->mysqli_real_escape_string($trans)."\");"; } $result = $db->query($query); if ($result == null) { diff --git a/inc/page.php b/inc/page.php index cc77553..3f157f3 100644 --- a/inc/page.php +++ b/inc/page.php @@ -6,8 +6,8 @@ class Page { private $pageTitle = 'Untitled'; // Holds the array of breadcrumbs - private $breadcrumbs = array(); - private $gNavItems = array(); + private $breadcrumbs = []; + private $gNavItems = []; private $activeID = ''; private $smarty = false; diff --git a/inc/rss_parser.php b/inc/rss_parser.php index c5a70ad..6925725 100644 --- a/inc/rss_parser.php +++ b/inc/rss_parser.php @@ -13,13 +13,13 @@ class RSS_Parser { private static $title = false; private static $desc = false; private static $link = false; - private static $elems = array(); + private static $elems = []; public static function parse($feed) { - RSS_Parser::$elems = array(); + RSS_Parser::$elems = []; $xml_parser = xml_parser_create(); - xml_set_element_handler($xml_parser, array('RSS_Parser','startElement'), array('RSS_Parser','endElement')); - xml_set_character_data_handler($xml_parser, array('RSS_Parser',"characterData")); + xml_set_element_handler($xml_parser, ['RSS_Parser','startElement'], ['RSS_Parser','endElement']); + xml_set_character_data_handler($xml_parser, ['RSS_Parser',"characterData"]); $fp = fopen($feed,"r") or die("Error reading RSS feed $feed"); diff --git a/inc/smarty/Smarty.class.php b/inc/smarty/Smarty.class.php deleted file mode 100644 index ae2133e..0000000 --- a/inc/smarty/Smarty.class.php +++ /dev/null @@ -1,1533 +0,0 @@ - - * @author Uwe Tews - * @author Rodney Rehm - * @package Smarty - * @version 3.1-DEV - */ - -/** - * define shorthand directory separator constant - */ -if (!defined('DS')) { - define('DS', DIRECTORY_SEPARATOR); -} - -/** - * set SMARTY_DIR to absolute path to Smarty library files. - * Sets SMARTY_DIR only if user application has not already defined it. - */ -if (!defined('SMARTY_DIR')) { - define('SMARTY_DIR', dirname(__FILE__) . DS); -} - -/** - * set SMARTY_SYSPLUGINS_DIR to absolute path to Smarty internal plugins. - * Sets SMARTY_SYSPLUGINS_DIR only if user application has not already defined it. - */ -if (!defined('SMARTY_SYSPLUGINS_DIR')) { - define('SMARTY_SYSPLUGINS_DIR', SMARTY_DIR . 'sysplugins' . DS); -} -if (!defined('SMARTY_PLUGINS_DIR')) { - define('SMARTY_PLUGINS_DIR', SMARTY_DIR . 'plugins' . DS); -} -if (!defined('SMARTY_MBSTRING')) { - define('SMARTY_MBSTRING', function_exists('mb_split')); -} -if (!defined('SMARTY_RESOURCE_CHAR_SET')) { - // UTF-8 can only be done properly when mbstring is available! - /** - * @deprecated in favor of Smarty::$_CHARSET - */ - define('SMARTY_RESOURCE_CHAR_SET', SMARTY_MBSTRING ? 'UTF-8' : 'ISO-8859-1'); -} -if (!defined('SMARTY_RESOURCE_DATE_FORMAT')) { - /** - * @deprecated in favor of Smarty::$_DATE_FORMAT - */ - define('SMARTY_RESOURCE_DATE_FORMAT', '%b %e, %Y'); -} - -/** - * register the class autoloader - */ -if (!defined('SMARTY_SPL_AUTOLOAD')) { - define('SMARTY_SPL_AUTOLOAD', 0); -} - -if (SMARTY_SPL_AUTOLOAD && set_include_path(get_include_path() . PATH_SEPARATOR . SMARTY_SYSPLUGINS_DIR) !== false) { - $registeredAutoLoadFunctions = spl_autoload_functions(); - if (!isset($registeredAutoLoadFunctions['spl_autoload'])) { - spl_autoload_register(); - } -} else { - spl_autoload_register('smartyAutoload'); -} - -/** - * Load always needed external class files - */ -include_once SMARTY_SYSPLUGINS_DIR.'smarty_internal_data.php'; -include_once SMARTY_SYSPLUGINS_DIR.'smarty_internal_templatebase.php'; -include_once SMARTY_SYSPLUGINS_DIR.'smarty_internal_template.php'; -include_once SMARTY_SYSPLUGINS_DIR.'smarty_resource.php'; -include_once SMARTY_SYSPLUGINS_DIR.'smarty_internal_resource_file.php'; -include_once SMARTY_SYSPLUGINS_DIR.'smarty_cacheresource.php'; -include_once SMARTY_SYSPLUGINS_DIR.'smarty_internal_cacheresource_file.php'; - -/** - * This is the main Smarty class - * @package Smarty - */ -class Smarty extends Smarty_Internal_TemplateBase { - - /**#@+ - * constant definitions - */ - - /** - * smarty version - */ - const SMARTY_VERSION = 'Smarty-3.1.14'; - - /** - * define variable scopes - */ - const SCOPE_LOCAL = 0; - const SCOPE_PARENT = 1; - const SCOPE_ROOT = 2; - const SCOPE_GLOBAL = 3; - /** - * define caching modes - */ - const CACHING_OFF = 0; - const CACHING_LIFETIME_CURRENT = 1; - const CACHING_LIFETIME_SAVED = 2; - /** - * define constant for clearing cache files be saved expiration datees - */ - const CLEAR_EXPIRED = -1; - - /** - * define compile check modes - */ - const COMPILECHECK_OFF = 0; - const COMPILECHECK_ON = 1; - const COMPILECHECK_CACHEMISS = 2; - /** - * modes for handling of "" tags in templates. - */ - const PHP_PASSTHRU = 0; //-> print tags as plain text - const PHP_QUOTE = 1; //-> escape tags as entities - const PHP_REMOVE = 2; //-> escape tags as entities - const PHP_ALLOW = 3; //-> escape tags as entities - /** - * filter types - */ - const FILTER_POST = 'post'; - const FILTER_PRE = 'pre'; - const FILTER_OUTPUT = 'output'; - const FILTER_VARIABLE = 'variable'; - /** - * plugin types - */ - const PLUGIN_FUNCTION = 'function'; - const PLUGIN_BLOCK = 'block'; - const PLUGIN_COMPILER = 'compiler'; - const PLUGIN_MODIFIER = 'modifier'; - const PLUGIN_MODIFIERCOMPILER = 'modifiercompiler'; - - /**#@-*/ - - /** - * assigned global tpl vars - */ - public static $global_tpl_vars = array(); - - /** - * error handler returned by set_error_hanlder() in Smarty::muteExpectedErrors() - */ - public static $_previous_error_handler = null; - /** - * contains directories outside of SMARTY_DIR that are to be muted by muteExpectedErrors() - */ - public static $_muted_directories = array(); - /** - * Flag denoting if Multibyte String functions are available - */ - public static $_MBSTRING = SMARTY_MBSTRING; - /** - * The character set to adhere to (e.g. "UTF-8") - */ - public static $_CHARSET = SMARTY_RESOURCE_CHAR_SET; - /** - * The date format to be used internally - * (accepts date() and strftime()) - */ - public static $_DATE_FORMAT = SMARTY_RESOURCE_DATE_FORMAT; - /** - * Flag denoting if PCRE should run in UTF-8 mode - */ - public static $_UTF8_MODIFIER = 'u'; - - /** - * Flag denoting if operating system is windows - */ - public static $_IS_WINDOWS = false; - - /**#@+ - * variables - */ - - /** - * auto literal on delimiters with whitspace - * @var boolean - */ - public $auto_literal = true; - /** - * display error on not assigned variables - * @var boolean - */ - public $error_unassigned = false; - /** - * look up relative filepaths in include_path - * @var boolean - */ - public $use_include_path = false; - /** - * template directory - * @var array - */ - private $template_dir = array(); - /** - * joined template directory string used in cache keys - * @var string - */ - public $joined_template_dir = null; - /** - * joined config directory string used in cache keys - * @var string - */ - public $joined_config_dir = null; - /** - * default template handler - * @var callable - */ - public $default_template_handler_func = null; - /** - * default config handler - * @var callable - */ - public $default_config_handler_func = null; - /** - * default plugin handler - * @var callable - */ - public $default_plugin_handler_func = null; - /** - * compile directory - * @var string - */ - private $compile_dir = null; - /** - * plugins directory - * @var array - */ - private $plugins_dir = array(); - /** - * cache directory - * @var string - */ - private $cache_dir = null; - /** - * config directory - * @var array - */ - private $config_dir = array(); - /** - * force template compiling? - * @var boolean - */ - public $force_compile = false; - /** - * check template for modifications? - * @var boolean - */ - public $compile_check = true; - /** - * use sub dirs for compiled/cached files? - * @var boolean - */ - public $use_sub_dirs = false; - /** - * allow ambiguous resources (that are made unique by the resource handler) - * @var boolean - */ - public $allow_ambiguous_resources = false; - /** - * caching enabled - * @var boolean - */ - public $caching = false; - /** - * merge compiled includes - * @var boolean - */ - public $merge_compiled_includes = false; - /** - * cache lifetime in seconds - * @var integer - */ - public $cache_lifetime = 3600; - /** - * force cache file creation - * @var boolean - */ - public $force_cache = false; - /** - * Set this if you want different sets of cache files for the same - * templates. - * - * @var string - */ - public $cache_id = null; - /** - * Set this if you want different sets of compiled files for the same - * templates. - * - * @var string - */ - public $compile_id = null; - /** - * template left-delimiter - * @var string - */ - public $left_delimiter = "{"; - /** - * template right-delimiter - * @var string - */ - public $right_delimiter = "}"; - /**#@+ - * security - */ - /** - * class name - * - * This should be instance of Smarty_Security. - * - * @var string - * @see Smarty_Security - */ - public $security_class = 'Smarty_Security'; - /** - * implementation of security class - * - * @var Smarty_Security - */ - public $security_policy = null; - /** - * controls handling of PHP-blocks - * - * @var integer - */ - public $php_handling = self::PHP_PASSTHRU; - /** - * controls if the php template file resource is allowed - * - * @var bool - */ - public $allow_php_templates = false; - /** - * Should compiled-templates be prevented from being called directly? - * - * {@internal - * Currently used by Smarty_Internal_Template only. - * }} - * - * @var boolean - */ - public $direct_access_security = true; - /**#@-*/ - /** - * debug mode - * - * Setting this to true enables the debug-console. - * - * @var boolean - */ - public $debugging = false; - /** - * This determines if debugging is enable-able from the browser. - *
    - *
  • NONE => no debugging control allowed
  • - *
  • URL => enable debugging when SMARTY_DEBUG is found in the URL.
  • - *
- * @var string - */ - public $debugging_ctrl = 'NONE'; - /** - * Name of debugging URL-param. - * - * Only used when $debugging_ctrl is set to 'URL'. - * The name of the URL-parameter that activates debugging. - * - * @var type - */ - public $smarty_debug_id = 'SMARTY_DEBUG'; - /** - * Path of debug template. - * @var string - */ - public $debug_tpl = null; - /** - * When set, smarty uses this value as error_reporting-level. - * @var int - */ - public $error_reporting = null; - /** - * Internal flag for getTags() - * @var boolean - */ - public $get_used_tags = false; - - /**#@+ - * config var settings - */ - - /** - * Controls whether variables with the same name overwrite each other. - * @var boolean - */ - public $config_overwrite = true; - /** - * Controls whether config values of on/true/yes and off/false/no get converted to boolean. - * @var boolean - */ - public $config_booleanize = true; - /** - * Controls whether hidden config sections/vars are read from the file. - * @var boolean - */ - public $config_read_hidden = false; - - /**#@-*/ - - /**#@+ - * resource locking - */ - - /** - * locking concurrent compiles - * @var boolean - */ - public $compile_locking = true; - /** - * Controls whether cache resources should emply locking mechanism - * @var boolean - */ - public $cache_locking = false; - /** - * seconds to wait for acquiring a lock before ignoring the write lock - * @var float - */ - public $locking_timeout = 10; - - /**#@-*/ - - /** - * global template functions - * @var array - */ - public $template_functions = array(); - /** - * resource type used if none given - * - * Must be an valid key of $registered_resources. - * @var string - */ - public $default_resource_type = 'file'; - /** - * caching type - * - * Must be an element of $cache_resource_types. - * - * @var string - */ - public $caching_type = 'file'; - /** - * internal config properties - * @var array - */ - public $properties = array(); - /** - * config type - * @var string - */ - public $default_config_type = 'file'; - /** - * cached template objects - * @var array - */ - public $template_objects = array(); - /** - * check If-Modified-Since headers - * @var boolean - */ - public $cache_modified_check = false; - /** - * registered plugins - * @var array - */ - public $registered_plugins = array(); - /** - * plugin search order - * @var array - */ - public $plugin_search_order = array('function', 'block', 'compiler', 'class'); - /** - * registered objects - * @var array - */ - public $registered_objects = array(); - /** - * registered classes - * @var array - */ - public $registered_classes = array(); - /** - * registered filters - * @var array - */ - public $registered_filters = array(); - /** - * registered resources - * @var array - */ - public $registered_resources = array(); - /** - * resource handler cache - * @var array - */ - public $_resource_handlers = array(); - /** - * registered cache resources - * @var array - */ - public $registered_cache_resources = array(); - /** - * cache resource handler cache - * @var array - */ - public $_cacheresource_handlers = array(); - /** - * autoload filter - * @var array - */ - public $autoload_filters = array(); - /** - * default modifier - * @var array - */ - public $default_modifiers = array(); - /** - * autoescape variable output - * @var boolean - */ - public $escape_html = false; - /** - * global internal smarty vars - * @var array - */ - public static $_smarty_vars = array(); - /** - * start time for execution time calculation - * @var int - */ - public $start_time = 0; - /** - * default file permissions - * @var int - */ - public $_file_perms = 0644; - /** - * default dir permissions - * @var int - */ - public $_dir_perms = 0771; - /** - * block tag hierarchy - * @var array - */ - public $_tag_stack = array(); - /** - * self pointer to Smarty object - * @var Smarty - */ - public $smarty; - /** - * required by the compiler for BC - * @var string - */ - public $_current_file = null; - /** - * internal flag to enable parser debugging - * @var bool - */ - public $_parserdebug = false; - /** - * Saved parameter of merged templates during compilation - * - * @var array - */ - public $merged_templates_func = array(); - /**#@-*/ - - /** - * Initialize new Smarty object - * - */ - public function __construct() - { - // selfpointer needed by some other class methods - $this->smarty = $this; - if (is_callable('mb_internal_encoding')) { - mb_internal_encoding(Smarty::$_CHARSET); - } - $this->start_time = microtime(true); - // set default dirs - $this->setTemplateDir('.' . DS . 'templates' . DS) - ->setCompileDir('.' . DS . 'templates_c' . DS) - ->setPluginsDir(SMARTY_PLUGINS_DIR) - ->setCacheDir('.' . DS . 'cache' . DS) - ->setConfigDir('.' . DS . 'configs' . DS); - - $this->debug_tpl = 'file:' . dirname(__FILE__) . '/debug.tpl'; - if (isset($_SERVER['SCRIPT_NAME'])) { - $this->assignGlobal('SCRIPT_NAME', $_SERVER['SCRIPT_NAME']); - } - } - - - /** - * Class destructor - */ - public function __destruct() - { - // intentionally left blank - } - - /** - * <> set selfpointer on cloned object - */ - public function __clone() - { - $this->smarty = $this; - } - - - /** - * <> Generic getter. - * - * Calls the appropriate getter function. - * Issues an E_USER_NOTICE if no valid getter is found. - * - * @param string $name property name - * @return mixed - */ - public function __get($name) - { - $allowed = array( - 'template_dir' => 'getTemplateDir', - 'config_dir' => 'getConfigDir', - 'plugins_dir' => 'getPluginsDir', - 'compile_dir' => 'getCompileDir', - 'cache_dir' => 'getCacheDir', - ); - - if (isset($allowed[$name])) { - return $this->{$allowed[$name]}(); - } else { - trigger_error('Undefined property: '. get_class($this) .'::$'. $name, E_USER_NOTICE); - } - } - - /** - * <> Generic setter. - * - * Calls the appropriate setter function. - * Issues an E_USER_NOTICE if no valid setter is found. - * - * @param string $name property name - * @param mixed $value parameter passed to setter - */ - public function __set($name, $value) - { - $allowed = array( - 'template_dir' => 'setTemplateDir', - 'config_dir' => 'setConfigDir', - 'plugins_dir' => 'setPluginsDir', - 'compile_dir' => 'setCompileDir', - 'cache_dir' => 'setCacheDir', - ); - - if (isset($allowed[$name])) { - $this->{$allowed[$name]}($value); - } else { - trigger_error('Undefined property: ' . get_class($this) . '::$' . $name, E_USER_NOTICE); - } - } - - /** - * Check if a template resource exists - * - * @param string $resource_name template name - * @return boolean status - */ - public function templateExists($resource_name) - { - // create template object - $save = $this->template_objects; - $tpl = new $this->template_class($resource_name, $this); - // check if it does exists - $result = $tpl->source->exists; - $this->template_objects = $save; - return $result; - } - - /** - * Returns a single or all global variables - * - * @param object $smarty - * @param string $varname variable name or null - * @return string variable value or or array of variables - */ - public function getGlobal($varname = null) - { - if (isset($varname)) { - if (isset(self::$global_tpl_vars[$varname])) { - return self::$global_tpl_vars[$varname]->value; - } else { - return ''; - } - } else { - $_result = array(); - foreach (self::$global_tpl_vars AS $key => $var) { - $_result[$key] = $var->value; - } - return $_result; - } - } - - /** - * Empty cache folder - * - * @param integer $exp_time expiration time - * @param string $type resource type - * @return integer number of cache files deleted - */ - function clearAllCache($exp_time = null, $type = null) - { - // load cache resource and call clearAll - $_cache_resource = Smarty_CacheResource::load($this, $type); - Smarty_CacheResource::invalidLoadedCache($this); - return $_cache_resource->clearAll($this, $exp_time); - } - - /** - * Empty cache for a specific template - * - * @param string $template_name template name - * @param string $cache_id cache id - * @param string $compile_id compile id - * @param integer $exp_time expiration time - * @param string $type resource type - * @return integer number of cache files deleted - */ - public function clearCache($template_name, $cache_id = null, $compile_id = null, $exp_time = null, $type = null) - { - // load cache resource and call clear - $_cache_resource = Smarty_CacheResource::load($this, $type); - Smarty_CacheResource::invalidLoadedCache($this); - return $_cache_resource->clear($this, $template_name, $cache_id, $compile_id, $exp_time); - } - - /** - * Loads security class and enables security - * - * @param string|Smarty_Security $security_class if a string is used, it must be class-name - * @return Smarty current Smarty instance for chaining - * @throws SmartyException when an invalid class name is provided - */ - public function enableSecurity($security_class = null) - { - if ($security_class instanceof Smarty_Security) { - $this->security_policy = $security_class; - return $this; - } elseif (is_object($security_class)) { - throw new SmartyException("Class '" . get_class($security_class) . "' must extend Smarty_Security."); - } - if ($security_class == null) { - $security_class = $this->security_class; - } - if (!class_exists($security_class)) { - throw new SmartyException("Security class '$security_class' is not defined"); - } elseif ($security_class !== 'Smarty_Security' && !is_subclass_of($security_class, 'Smarty_Security')) { - throw new SmartyException("Class '$security_class' must extend Smarty_Security."); - } else { - $this->security_policy = new $security_class($this); - } - - return $this; - } - - /** - * Disable security - * @return Smarty current Smarty instance for chaining - */ - public function disableSecurity() - { - $this->security_policy = null; - - return $this; - } - - /** - * Set template directory - * - * @param string|array $template_dir directory(s) of template sources - * @return Smarty current Smarty instance for chaining - */ - public function setTemplateDir($template_dir) - { - $this->template_dir = array(); - foreach ((array) $template_dir as $k => $v) { - $this->template_dir[$k] = rtrim($v, '/\\') . DS; - } - - $this->joined_template_dir = join(DIRECTORY_SEPARATOR, $this->template_dir); - return $this; - } - - /** - * Add template directory(s) - * - * @param string|array $template_dir directory(s) of template sources - * @param string $key of the array element to assign the template dir to - * @return Smarty current Smarty instance for chaining - * @throws SmartyException when the given template directory is not valid - */ - public function addTemplateDir($template_dir, $key=null) - { - // make sure we're dealing with an array - $this->template_dir = (array) $this->template_dir; - - if (is_array($template_dir)) { - foreach ($template_dir as $k => $v) { - if (is_int($k)) { - // indexes are not merged but appended - $this->template_dir[] = rtrim($v, '/\\') . DS; - } else { - // string indexes are overridden - $this->template_dir[$k] = rtrim($v, '/\\') . DS; - } - } - } elseif ($key !== null) { - // override directory at specified index - $this->template_dir[$key] = rtrim($template_dir, '/\\') . DS; - } else { - // append new directory - $this->template_dir[] = rtrim($template_dir, '/\\') . DS; - } - $this->joined_template_dir = join(DIRECTORY_SEPARATOR, $this->template_dir); - return $this; - } - - /** - * Get template directories - * - * @param mixed index of directory to get, null to get all - * @return array|string list of template directories, or directory of $index - */ - public function getTemplateDir($index=null) - { - if ($index !== null) { - return isset($this->template_dir[$index]) ? $this->template_dir[$index] : null; - } - - return (array)$this->template_dir; - } - - /** - * Set config directory - * - * @param string|array $template_dir directory(s) of configuration sources - * @return Smarty current Smarty instance for chaining - */ - public function setConfigDir($config_dir) - { - $this->config_dir = array(); - foreach ((array) $config_dir as $k => $v) { - $this->config_dir[$k] = rtrim($v, '/\\') . DS; - } - - $this->joined_config_dir = join(DIRECTORY_SEPARATOR, $this->config_dir); - return $this; - } - - /** - * Add config directory(s) - * - * @param string|array $config_dir directory(s) of config sources - * @param string key of the array element to assign the config dir to - * @return Smarty current Smarty instance for chaining - */ - public function addConfigDir($config_dir, $key=null) - { - // make sure we're dealing with an array - $this->config_dir = (array) $this->config_dir; - - if (is_array($config_dir)) { - foreach ($config_dir as $k => $v) { - if (is_int($k)) { - // indexes are not merged but appended - $this->config_dir[] = rtrim($v, '/\\') . DS; - } else { - // string indexes are overridden - $this->config_dir[$k] = rtrim($v, '/\\') . DS; - } - } - } elseif( $key !== null ) { - // override directory at specified index - $this->config_dir[$key] = rtrim($config_dir, '/\\') . DS; - } else { - // append new directory - $this->config_dir[] = rtrim($config_dir, '/\\') . DS; - } - - $this->joined_config_dir = join(DIRECTORY_SEPARATOR, $this->config_dir); - return $this; - } - - /** - * Get config directory - * - * @param mixed index of directory to get, null to get all - * @return array|string configuration directory - */ - public function getConfigDir($index=null) - { - if ($index !== null) { - return isset($this->config_dir[$index]) ? $this->config_dir[$index] : null; - } - - return (array)$this->config_dir; - } - - /** - * Set plugins directory - * - * @param string|array $plugins_dir directory(s) of plugins - * @return Smarty current Smarty instance for chaining - */ - public function setPluginsDir($plugins_dir) - { - $this->plugins_dir = array(); - foreach ((array)$plugins_dir as $k => $v) { - $this->plugins_dir[$k] = rtrim($v, '/\\') . DS; - } - - return $this; - } - - /** - * Adds directory of plugin files - * - * @param object $smarty - * @param string $ |array $ plugins folder - * @return Smarty current Smarty instance for chaining - */ - public function addPluginsDir($plugins_dir) - { - // make sure we're dealing with an array - $this->plugins_dir = (array) $this->plugins_dir; - - if (is_array($plugins_dir)) { - foreach ($plugins_dir as $k => $v) { - if (is_int($k)) { - // indexes are not merged but appended - $this->plugins_dir[] = rtrim($v, '/\\') . DS; - } else { - // string indexes are overridden - $this->plugins_dir[$k] = rtrim($v, '/\\') . DS; - } - } - } else { - // append new directory - $this->plugins_dir[] = rtrim($plugins_dir, '/\\') . DS; - } - - $this->plugins_dir = array_unique($this->plugins_dir); - return $this; - } - - /** - * Get plugin directories - * - * @return array list of plugin directories - */ - public function getPluginsDir() - { - return (array)$this->plugins_dir; - } - - /** - * Set compile directory - * - * @param string $compile_dir directory to store compiled templates in - * @return Smarty current Smarty instance for chaining - */ - public function setCompileDir($compile_dir) - { - $this->compile_dir = rtrim($compile_dir, '/\\') . DS; - if (!isset(Smarty::$_muted_directories[$this->compile_dir])) { - Smarty::$_muted_directories[$this->compile_dir] = null; - } - return $this; - } - - /** - * Get compiled directory - * - * @return string path to compiled templates - */ - public function getCompileDir() - { - return $this->compile_dir; - } - - /** - * Set cache directory - * - * @param string $cache_dir directory to store cached templates in - * @return Smarty current Smarty instance for chaining - */ - public function setCacheDir($cache_dir) - { - $this->cache_dir = rtrim($cache_dir, '/\\') . DS; - if (!isset(Smarty::$_muted_directories[$this->cache_dir])) { - Smarty::$_muted_directories[$this->cache_dir] = null; - } - return $this; - } - - /** - * Get cache directory - * - * @return string path of cache directory - */ - public function getCacheDir() - { - return $this->cache_dir; - } - - /** - * Set default modifiers - * - * @param array|string $modifiers modifier or list of modifiers to set - * @return Smarty current Smarty instance for chaining - */ - public function setDefaultModifiers($modifiers) - { - $this->default_modifiers = (array) $modifiers; - return $this; - } - - /** - * Add default modifiers - * - * @param array|string $modifiers modifier or list of modifiers to add - * @return Smarty current Smarty instance for chaining - */ - public function addDefaultModifiers($modifiers) - { - if (is_array($modifiers)) { - $this->default_modifiers = array_merge($this->default_modifiers, $modifiers); - } else { - $this->default_modifiers[] = $modifiers; - } - - return $this; - } - - /** - * Get default modifiers - * - * @return array list of default modifiers - */ - public function getDefaultModifiers() - { - return $this->default_modifiers; - } - - - /** - * Set autoload filters - * - * @param array $filters filters to load automatically - * @param string $type "pre", "output", … specify the filter type to set. Defaults to none treating $filters' keys as the appropriate types - * @return Smarty current Smarty instance for chaining - */ - public function setAutoloadFilters($filters, $type=null) - { - if ($type !== null) { - $this->autoload_filters[$type] = (array) $filters; - } else { - $this->autoload_filters = (array) $filters; - } - - return $this; - } - - /** - * Add autoload filters - * - * @param array $filters filters to load automatically - * @param string $type "pre", "output", … specify the filter type to set. Defaults to none treating $filters' keys as the appropriate types - * @return Smarty current Smarty instance for chaining - */ - public function addAutoloadFilters($filters, $type=null) - { - if ($type !== null) { - if (!empty($this->autoload_filters[$type])) { - $this->autoload_filters[$type] = array_merge($this->autoload_filters[$type], (array) $filters); - } else { - $this->autoload_filters[$type] = (array) $filters; - } - } else { - foreach ((array) $filters as $key => $value) { - if (!empty($this->autoload_filters[$key])) { - $this->autoload_filters[$key] = array_merge($this->autoload_filters[$key], (array) $value); - } else { - $this->autoload_filters[$key] = (array) $value; - } - } - } - - return $this; - } - - /** - * Get autoload filters - * - * @param string $type type of filter to get autoloads for. Defaults to all autoload filters - * @return array array( 'type1' => array( 'filter1', 'filter2', … ) ) or array( 'filter1', 'filter2', …) if $type was specified - */ - public function getAutoloadFilters($type=null) - { - if ($type !== null) { - return isset($this->autoload_filters[$type]) ? $this->autoload_filters[$type] : array(); - } - - return $this->autoload_filters; - } - - /** - * return name of debugging template - * - * @return string - */ - public function getDebugTemplate() - { - return $this->debug_tpl; - } - - /** - * set the debug template - * - * @param string $tpl_name - * @return Smarty current Smarty instance for chaining - * @throws SmartyException if file is not readable - */ - public function setDebugTemplate($tpl_name) - { - if (!is_readable($tpl_name)) { - throw new SmartyException("Unknown file '{$tpl_name}'"); - } - $this->debug_tpl = $tpl_name; - - return $this; - } - - /** - * creates a template object - * - * @param string $template the resource handle of the template file - * @param mixed $cache_id cache id to be used with this template - * @param mixed $compile_id compile id to be used with this template - * @param object $parent next higher level of Smarty variables - * @param boolean $do_clone flag is Smarty object shall be cloned - * @return object template object - */ - public function createTemplate($template, $cache_id = null, $compile_id = null, $parent = null, $do_clone = true) - { - if (!empty($cache_id) && (is_object($cache_id) || is_array($cache_id))) { - $parent = $cache_id; - $cache_id = null; - } - if (!empty($parent) && is_array($parent)) { - $data = $parent; - $parent = null; - } else { - $data = null; - } - // default to cache_id and compile_id of Smarty object - $cache_id = $cache_id === null ? $this->cache_id : $cache_id; - $compile_id = $compile_id === null ? $this->compile_id : $compile_id; - // already in template cache? - if ($this->allow_ambiguous_resources) { - $_templateId = Smarty_Resource::getUniqueTemplateName($this, $template) . $cache_id . $compile_id; - } else { - $_templateId = $this->joined_template_dir . '#' . $template . $cache_id . $compile_id; - } - if (isset($_templateId[150])) { - $_templateId = sha1($_templateId); - } - if ($do_clone) { - if (isset($this->template_objects[$_templateId])) { - // return cached template object - $tpl = clone $this->template_objects[$_templateId]; - $tpl->smarty = clone $tpl->smarty; - $tpl->parent = $parent; - $tpl->tpl_vars = array(); - $tpl->config_vars = array(); - } else { - $tpl = new $this->template_class($template, clone $this, $parent, $cache_id, $compile_id); - } - } else { - if (isset($this->template_objects[$_templateId])) { - // return cached template object - $tpl = $this->template_objects[$_templateId]; - $tpl->parent = $parent; - $tpl->tpl_vars = array(); - $tpl->config_vars = array(); - } else { - $tpl = new $this->template_class($template, $this, $parent, $cache_id, $compile_id); - } - } - // fill data if present - if (!empty($data) && is_array($data)) { - // set up variable values - foreach ($data as $_key => $_val) { - $tpl->tpl_vars[$_key] = new Smarty_variable($_val); - } - } - return $tpl; - } - - - /** - * Takes unknown classes and loads plugin files for them - * class name format: Smarty_PluginType_PluginName - * plugin filename format: plugintype.pluginname.php - * - * @param string $plugin_name class plugin name to load - * @param bool $check check if already loaded - * @return string |boolean filepath of loaded file or false - */ - public function loadPlugin($plugin_name, $check = true) - { - // if function or class exists, exit silently (already loaded) - if ($check && (is_callable($plugin_name) || class_exists($plugin_name, false))) { - return true; - } - // Plugin name is expected to be: Smarty_[Type]_[Name] - $_name_parts = explode('_', $plugin_name, 3); - // class name must have three parts to be valid plugin - // count($_name_parts) < 3 === !isset($_name_parts[2]) - if (!isset($_name_parts[2]) || strtolower($_name_parts[0]) !== 'smarty') { - throw new SmartyException("plugin {$plugin_name} is not a valid name format"); - return false; - } - // if type is "internal", get plugin from sysplugins - if (strtolower($_name_parts[1]) == 'internal') { - $file = SMARTY_SYSPLUGINS_DIR . strtolower($plugin_name) . '.php'; - if (file_exists($file)) { - require_once($file); - return $file; - } else { - return false; - } - } - // plugin filename is expected to be: [type].[name].php - $_plugin_filename = "{$_name_parts[1]}.{$_name_parts[2]}.php"; - - $_stream_resolve_include_path = function_exists('stream_resolve_include_path'); - - // loop through plugin dirs and find the plugin - foreach($this->getPluginsDir() as $_plugin_dir) { - $names = array( - $_plugin_dir . $_plugin_filename, - $_plugin_dir . strtolower($_plugin_filename), - ); - foreach ($names as $file) { - if (file_exists($file)) { - require_once($file); - return $file; - } - if ($this->use_include_path && !preg_match('/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/', $_plugin_dir)) { - // try PHP include_path - if ($_stream_resolve_include_path) { - $file = stream_resolve_include_path($file); - } else { - $file = Smarty_Internal_Get_Include_Path::getIncludePath($file); - } - - if ($file !== false) { - require_once($file); - return $file; - } - } - } - } - // no plugin loaded - return false; - } - - /** - * Compile all template files - * - * @param string $extension file extension - * @param bool $force_compile force all to recompile - * @param int $time_limit - * @param int $max_errors - * @return integer number of template files recompiled - */ - public function compileAllTemplates($extension = '.tpl', $force_compile = false, $time_limit = 0, $max_errors = null) - { - return Smarty_Internal_Utility::compileAllTemplates($extension, $force_compile, $time_limit, $max_errors, $this); - } - - /** - * Compile all config files - * - * @param string $extension file extension - * @param bool $force_compile force all to recompile - * @param int $time_limit - * @param int $max_errors - * @return integer number of template files recompiled - */ - public function compileAllConfig($extension = '.conf', $force_compile = false, $time_limit = 0, $max_errors = null) - { - return Smarty_Internal_Utility::compileAllConfig($extension, $force_compile, $time_limit, $max_errors, $this); - } - - /** - * Delete compiled template file - * - * @param string $resource_name template name - * @param string $compile_id compile id - * @param integer $exp_time expiration time - * @return integer number of template files deleted - */ - public function clearCompiledTemplate($resource_name = null, $compile_id = null, $exp_time = null) - { - return Smarty_Internal_Utility::clearCompiledTemplate($resource_name, $compile_id, $exp_time, $this); - } - - - /** - * Return array of tag/attributes of all tags used by an template - * - * @param object $templae template object - * @return array of tag/attributes - */ - public function getTags(Smarty_Internal_Template $template) - { - return Smarty_Internal_Utility::getTags($template); - } - - /** - * Run installation test - * - * @param array $errors Array to write errors into, rather than outputting them - * @return boolean true if setup is fine, false if something is wrong - */ - public function testInstall(&$errors=null) - { - return Smarty_Internal_Utility::testInstall($this, $errors); - } - - /** - * Error Handler to mute expected messages - * - * @link http://php.net/set_error_handler - * @param integer $errno Error level - * @return boolean - */ - public static function mutingErrorHandler($errno, $errstr, $errfile, $errline, $errcontext) - { - $_is_muted_directory = false; - - // add the SMARTY_DIR to the list of muted directories - if (!isset(Smarty::$_muted_directories[SMARTY_DIR])) { - $smarty_dir = realpath(SMARTY_DIR); - if ($smarty_dir !== false) { - Smarty::$_muted_directories[SMARTY_DIR] = array( - 'file' => $smarty_dir, - 'length' => strlen($smarty_dir), - ); - } - } - - // walk the muted directories and test against $errfile - foreach (Smarty::$_muted_directories as $key => &$dir) { - if (!$dir) { - // resolve directory and length for speedy comparisons - $file = realpath($key); - if ($file === false) { - // this directory does not exist, remove and skip it - unset(Smarty::$_muted_directories[$key]); - continue; - } - $dir = array( - 'file' => $file, - 'length' => strlen($file), - ); - } - if (!strncmp($errfile, $dir['file'], $dir['length'])) { - $_is_muted_directory = true; - break; - } - } - - // pass to next error handler if this error did not occur inside SMARTY_DIR - // or the error was within smarty but masked to be ignored - if (!$_is_muted_directory || ($errno && $errno & error_reporting())) { - if (Smarty::$_previous_error_handler) { - return call_user_func(Smarty::$_previous_error_handler, $errno, $errstr, $errfile, $errline, $errcontext); - } else { - return false; - } - } - } - - /** - * Enable error handler to mute expected messages - * - * @return void - */ - public static function muteExpectedErrors() - { - /* - error muting is done because some people implemented custom error_handlers using - http://php.net/set_error_handler and for some reason did not understand the following paragraph: - - It is important to remember that the standard PHP error handler is completely bypassed for the - error types specified by error_types unless the callback function returns FALSE. - error_reporting() settings will have no effect and your error handler will be called regardless - - however you are still able to read the current value of error_reporting and act appropriately. - Of particular note is that this value will be 0 if the statement that caused the error was - prepended by the @ error-control operator. - - Smarty deliberately uses @filemtime() over file_exists() and filemtime() in some places. Reasons include - - @filemtime() is almost twice as fast as using an additional file_exists() - - between file_exists() and filemtime() a possible race condition is opened, - which does not exist using the simple @filemtime() approach. - */ - $error_handler = array('Smarty', 'mutingErrorHandler'); - $previous = set_error_handler($error_handler); - - // avoid dead loops - if ($previous !== $error_handler) { - Smarty::$_previous_error_handler = $previous; - } - } - - /** - * Disable error handler muting expected messages - * - * @return void - */ - public static function unmuteExpectedErrors() - { - restore_error_handler(); - } -} - -// Check if we're running on windows -Smarty::$_IS_WINDOWS = strtoupper(substr(PHP_OS, 0, 3)) === 'WIN'; - -// let PCRE (preg_*) treat strings as ISO-8859-1 if we're not dealing with UTF-8 -if (Smarty::$_CHARSET !== 'UTF-8') { - Smarty::$_UTF8_MODIFIER = ''; -} - -/** - * Smarty exception class - * @package Smarty - */ -class SmartyException extends Exception { - public static $escape = true; - public function __construct($message) { - $this->message = self::$escape ? htmlentities($message) : $message; - } -} - -/** - * Smarty compiler exception class - * @package Smarty - */ -class SmartyCompilerException extends SmartyException { -} - -/** - * Autoloader - */ -function smartyAutoload($class) -{ - $_class = strtolower($class); - $_classes = array( - 'smarty_config_source' => true, - 'smarty_config_compiled' => true, - 'smarty_security' => true, - 'smarty_cacheresource' => true, - 'smarty_cacheresource_custom' => true, - 'smarty_cacheresource_keyvaluestore' => true, - 'smarty_resource' => true, - 'smarty_resource_custom' => true, - 'smarty_resource_uncompiled' => true, - 'smarty_resource_recompiled' => true, - ); - - if (!strncmp($_class, 'smarty_internal_', 16) || isset($_classes[$_class])) { - include SMARTY_SYSPLUGINS_DIR . $_class . '.php'; - } -} - -?> diff --git a/inc/smarty/SmartyBC.class.php b/inc/smarty/SmartyBC.class.php deleted file mode 100644 index f8f0a13..0000000 --- a/inc/smarty/SmartyBC.class.php +++ /dev/null @@ -1,460 +0,0 @@ - - * @author Uwe Tews - * @author Rodney Rehm - * @package Smarty - */ -/** - * @ignore - */ -require(dirname(__FILE__) . '/Smarty.class.php'); - -/** - * Smarty Backward Compatability Wrapper Class - * - * @package Smarty - */ -class SmartyBC extends Smarty { - - /** - * Smarty 2 BC - * @var string - */ - public $_version = self::SMARTY_VERSION; - - /** - * Initialize new SmartyBC object - * - * @param array $options options to set during initialization, e.g. array( 'forceCompile' => false ) - */ - public function __construct(array $options=array()) - { - parent::__construct($options); - // register {php} tag - $this->registerPlugin('block', 'php', 'smarty_php_tag'); - } - - /** - * wrapper for assign_by_ref - * - * @param string $tpl_var the template variable name - * @param mixed &$value the referenced value to assign - */ - public function assign_by_ref($tpl_var, &$value) - { - $this->assignByRef($tpl_var, $value); - } - - /** - * wrapper for append_by_ref - * - * @param string $tpl_var the template variable name - * @param mixed &$value the referenced value to append - * @param boolean $merge flag if array elements shall be merged - */ - public function append_by_ref($tpl_var, &$value, $merge = false) - { - $this->appendByRef($tpl_var, $value, $merge); - } - - /** - * clear the given assigned template variable. - * - * @param string $tpl_var the template variable to clear - */ - public function clear_assign($tpl_var) - { - $this->clearAssign($tpl_var); - } - - /** - * Registers custom function to be used in templates - * - * @param string $function the name of the template function - * @param string $function_impl the name of the PHP function to register - * @param bool $cacheable - * @param mixed $cache_attrs - */ - public function register_function($function, $function_impl, $cacheable=true, $cache_attrs=null) - { - $this->registerPlugin('function', $function, $function_impl, $cacheable, $cache_attrs); - } - - /** - * Unregisters custom function - * - * @param string $function name of template function - */ - public function unregister_function($function) - { - $this->unregisterPlugin('function', $function); - } - - /** - * Registers object to be used in templates - * - * @param string $object name of template object - * @param object $object_impl the referenced PHP object to register - * @param array $allowed list of allowed methods (empty = all) - * @param boolean $smarty_args smarty argument format, else traditional - * @param array $block_functs list of methods that are block format - */ - public function register_object($object, $object_impl, $allowed = array(), $smarty_args = true, $block_methods = array()) - { - settype($allowed, 'array'); - settype($smarty_args, 'boolean'); - $this->registerObject($object, $object_impl, $allowed, $smarty_args, $block_methods); - } - - /** - * Unregisters object - * - * @param string $object name of template object - */ - public function unregister_object($object) - { - $this->unregisterObject($object); - } - - /** - * Registers block function to be used in templates - * - * @param string $block name of template block - * @param string $block_impl PHP function to register - * @param bool $cacheable - * @param mixed $cache_attrs - */ - public function register_block($block, $block_impl, $cacheable=true, $cache_attrs=null) - { - $this->registerPlugin('block', $block, $block_impl, $cacheable, $cache_attrs); - } - - /** - * Unregisters block function - * - * @param string $block name of template function - */ - public function unregister_block($block) - { - $this->unregisterPlugin('block', $block); - } - - /** - * Registers compiler function - * - * @param string $function name of template function - * @param string $function_impl name of PHP function to register - * @param bool $cacheable - */ - public function register_compiler_function($function, $function_impl, $cacheable=true) - { - $this->registerPlugin('compiler', $function, $function_impl, $cacheable); - } - - /** - * Unregisters compiler function - * - * @param string $function name of template function - */ - public function unregister_compiler_function($function) - { - $this->unregisterPlugin('compiler', $function); - } - - /** - * Registers modifier to be used in templates - * - * @param string $modifier name of template modifier - * @param string $modifier_impl name of PHP function to register - */ - public function register_modifier($modifier, $modifier_impl) - { - $this->registerPlugin('modifier', $modifier, $modifier_impl); - } - - /** - * Unregisters modifier - * - * @param string $modifier name of template modifier - */ - public function unregister_modifier($modifier) - { - $this->unregisterPlugin('modifier', $modifier); - } - - /** - * Registers a resource to fetch a template - * - * @param string $type name of resource - * @param array $functions array of functions to handle resource - */ - public function register_resource($type, $functions) - { - $this->registerResource($type, $functions); - } - - /** - * Unregisters a resource - * - * @param string $type name of resource - */ - public function unregister_resource($type) - { - $this->unregisterResource($type); - } - - /** - * Registers a prefilter function to apply - * to a template before compiling - * - * @param callable $function - */ - public function register_prefilter($function) - { - $this->registerFilter('pre', $function); - } - - /** - * Unregisters a prefilter function - * - * @param callable $function - */ - public function unregister_prefilter($function) - { - $this->unregisterFilter('pre', $function); - } - - /** - * Registers a postfilter function to apply - * to a compiled template after compilation - * - * @param callable $function - */ - public function register_postfilter($function) - { - $this->registerFilter('post', $function); - } - - /** - * Unregisters a postfilter function - * - * @param callable $function - */ - public function unregister_postfilter($function) - { - $this->unregisterFilter('post', $function); - } - - /** - * Registers an output filter function to apply - * to a template output - * - * @param callable $function - */ - public function register_outputfilter($function) - { - $this->registerFilter('output', $function); - } - - /** - * Unregisters an outputfilter function - * - * @param callable $function - */ - public function unregister_outputfilter($function) - { - $this->unregisterFilter('output', $function); - } - - /** - * load a filter of specified type and name - * - * @param string $type filter type - * @param string $name filter name - */ - public function load_filter($type, $name) - { - $this->loadFilter($type, $name); - } - - /** - * clear cached content for the given template and cache id - * - * @param string $tpl_file name of template file - * @param string $cache_id name of cache_id - * @param string $compile_id name of compile_id - * @param string $exp_time expiration time - * @return boolean - */ - public function clear_cache($tpl_file = null, $cache_id = null, $compile_id = null, $exp_time = null) - { - return $this->clearCache($tpl_file, $cache_id, $compile_id, $exp_time); - } - - /** - * clear the entire contents of cache (all templates) - * - * @param string $exp_time expire time - * @return boolean - */ - public function clear_all_cache($exp_time = null) - { - return $this->clearCache(null, null, null, $exp_time); - } - - /** - * test to see if valid cache exists for this template - * - * @param string $tpl_file name of template file - * @param string $cache_id - * @param string $compile_id - * @return boolean - */ - public function is_cached($tpl_file, $cache_id = null, $compile_id = null) - { - return $this->isCached($tpl_file, $cache_id, $compile_id); - } - - /** - * clear all the assigned template variables. - */ - public function clear_all_assign() - { - $this->clearAllAssign(); - } - - /** - * clears compiled version of specified template resource, - * or all compiled template files if one is not specified. - * This function is for advanced use only, not normally needed. - * - * @param string $tpl_file - * @param string $compile_id - * @param string $exp_time - * @return boolean results of {@link smarty_core_rm_auto()} - */ - public function clear_compiled_tpl($tpl_file = null, $compile_id = null, $exp_time = null) - { - return $this->clearCompiledTemplate($tpl_file, $compile_id, $exp_time); - } - - /** - * Checks whether requested template exists. - * - * @param string $tpl_file - * @return boolean - */ - public function template_exists($tpl_file) - { - return $this->templateExists($tpl_file); - } - - /** - * Returns an array containing template variables - * - * @param string $name - * @return array - */ - public function get_template_vars($name=null) - { - return $this->getTemplateVars($name); - } - - /** - * Returns an array containing config variables - * - * @param string $name - * @return array - */ - public function get_config_vars($name=null) - { - return $this->getConfigVars($name); - } - - /** - * load configuration values - * - * @param string $file - * @param string $section - * @param string $scope - */ - public function config_load($file, $section = null, $scope = 'global') - { - $this->ConfigLoad($file, $section, $scope); - } - - /** - * return a reference to a registered object - * - * @param string $name - * @return object - */ - public function get_registered_object($name) - { - return $this->getRegisteredObject($name); - } - - /** - * clear configuration values - * - * @param string $var - */ - public function clear_config($var = null) - { - $this->clearConfig($var); - } - - /** - * trigger Smarty error - * - * @param string $error_msg - * @param integer $error_type - */ - public function trigger_error($error_msg, $error_type = E_USER_WARNING) - { - trigger_error("Smarty error: $error_msg", $error_type); - } - -} - -/** - * Smarty {php}{/php} block function - * - * @param array $params parameter list - * @param string $content contents of the block - * @param object $template template object - * @param boolean &$repeat repeat flag - * @return string content re-formatted - */ -function smarty_php_tag($params, $content, $template, &$repeat) -{ - eval($content); - return ''; -} - -?> \ No newline at end of file diff --git a/inc/smarty/debug.tpl b/inc/smarty/debug.tpl deleted file mode 100644 index 12eef0f..0000000 --- a/inc/smarty/debug.tpl +++ /dev/null @@ -1,133 +0,0 @@ -{capture name='_smarty_debug' assign=debug_output} - - - - Smarty Debug Console - - - - -

Smarty Debug Console - {if isset($template_name)}{$template_name|debug_print_var nofilter}{else}Total Time {$execution_time|string_format:"%.5f"}{/if}

- -{if !empty($template_data)} -

included templates & config files (load time in seconds)

- -
-{foreach $template_data as $template} - {$template.name} - - (compile {$template['compile_time']|string_format:"%.5f"}) (render {$template['render_time']|string_format:"%.5f"}) (cache {$template['cache_time']|string_format:"%.5f"}) - -
-{/foreach} -
-{/if} - -

assigned template variables

- - - {foreach $assigned_vars as $vars} - - - - {/foreach} -
${$vars@key|escape:'html'}{$vars|debug_print_var nofilter}
- -

assigned config file variables (outer template scope)

- - - {foreach $config_vars as $vars} - - - - {/foreach} - -
{$vars@key|escape:'html'}{$vars|debug_print_var nofilter}
- - -{/capture} - diff --git a/inc/smarty/plugins/block.textformat.php b/inc/smarty/plugins/block.textformat.php deleted file mode 100644 index b22b104..0000000 --- a/inc/smarty/plugins/block.textformat.php +++ /dev/null @@ -1,113 +0,0 @@ - - * Name: textformat
- * Purpose: format text a certain way with preset styles - * or custom wrap/indent settings
- * Params: - *
- * - style         - string (email)
- * - indent        - integer (0)
- * - wrap          - integer (80)
- * - wrap_char     - string ("\n")
- * - indent_char   - string (" ")
- * - wrap_boundary - boolean (true)
- * 
- * - * @link http://www.smarty.net/manual/en/language.function.textformat.php {textformat} - * (Smarty online manual) - * @param array $params parameters - * @param string $content contents of the block - * @param Smarty_Internal_Template $template template object - * @param boolean &$repeat repeat flag - * @return string content re-formatted - * @author Monte Ohrt - */ -function smarty_block_textformat($params, $content, $template, &$repeat) -{ - if (is_null($content)) { - return; - } - - $style = null; - $indent = 0; - $indent_first = 0; - $indent_char = ' '; - $wrap = 80; - $wrap_char = "\n"; - $wrap_cut = false; - $assign = null; - - foreach ($params as $_key => $_val) { - switch ($_key) { - case 'style': - case 'indent_char': - case 'wrap_char': - case 'assign': - $$_key = (string)$_val; - break; - - case 'indent': - case 'indent_first': - case 'wrap': - $$_key = (int)$_val; - break; - - case 'wrap_cut': - $$_key = (bool)$_val; - break; - - default: - trigger_error("textformat: unknown attribute '$_key'"); - } - } - - if ($style == 'email') { - $wrap = 72; - } - // split into paragraphs - $_paragraphs = preg_split('![\r\n]{2}!', $content); - $_output = ''; - - - 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) { - require_once(SMARTY_PLUGINS_DIR . 'shared.mb_wordwrap.php'); - $_paragraph = smarty_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; - } -} - -?> \ No newline at end of file diff --git a/inc/smarty/plugins/function.counter.php b/inc/smarty/plugins/function.counter.php deleted file mode 100644 index 3906bad..0000000 --- a/inc/smarty/plugins/function.counter.php +++ /dev/null @@ -1,78 +0,0 @@ - - * Name: counter
- * Purpose: print out a counter value - * - * @author Monte Ohrt - * @link http://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; - -} - -?> \ No newline at end of file diff --git a/inc/smarty/plugins/function.cycle.php b/inc/smarty/plugins/function.cycle.php deleted file mode 100644 index 1778ffb..0000000 --- a/inc/smarty/plugins/function.cycle.php +++ /dev/null @@ -1,106 +0,0 @@ - - * Name: cycle
- * Date: May 3, 2002
- * Purpose: cycle through given values
- * Params: - *
- * - name      - name of cycle (optional)
- * - values    - comma separated list of values to cycle, or an array of values to cycle
- *               (this can be left out for subsequent calls)
- * - reset     - boolean - resets given var to true
- * - print     - boolean - print var or not. default is true
- * - advance   - boolean - whether or not to advance the cycle
- * - delimiter - the value delimiter, default is ","
- * - assign    - boolean, assigns to template var instead of printed.
- * 
- * Examples:
- *
- * {cycle values="#eeeeee,#d0d0d0d"}
- * {cycle name=row values="one,two,three" reset=true}
- * {cycle name=row}
- * 
- * - * @link http://www.smarty.net/manual/en/language.function.cycle.php {cycle} - * (Smarty online manual) - * @author Monte Ohrt - * @author credit to Mark Priatel - * @author credit to Gerard - * @author credit to Jason Sweat - * @version 1.3 - * @param array $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; -} - -?> \ No newline at end of file diff --git a/inc/smarty/plugins/function.fetch.php b/inc/smarty/plugins/function.fetch.php deleted file mode 100644 index eca1182..0000000 --- a/inc/smarty/plugins/function.fetch.php +++ /dev/null @@ -1,214 +0,0 @@ - - * Name: fetch
- * Purpose: fetch file, web or ftp data and display results - * - * @link http://www.smarty.net/manual/en/language.function.fetch.php {fetch} - * (Smarty online manual) - * @author Monte Ohrt - * @param array $params parameters - * @param Smarty_Internal_Template $template template object - * @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; - } -} - -?> \ No newline at end of file diff --git a/inc/smarty/plugins/function.html_checkboxes.php b/inc/smarty/plugins/function.html_checkboxes.php deleted file mode 100644 index 1866bc2..0000000 --- a/inc/smarty/plugins/function.html_checkboxes.php +++ /dev/null @@ -1,233 +0,0 @@ - - * Type: function
- * Name: html_checkboxes
- * Date: 24.Feb.2003
- * Purpose: Prints out a list of checkbox input types
- * Examples: - *
- * {html_checkboxes values=$ids output=$names}
- * {html_checkboxes values=$ids name='box' separator='
' output=$names} - * {html_checkboxes values=$ids checked=$checked separator='
' output=$names} - *
- * 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 http://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 object $template template object - * @return string - * @uses smarty_function_escape_special_chars() - */ -function smarty_function_html_checkboxes($params, $template) -{ - require_once(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; - - $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 '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! - - 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) { - $_html_result[] = smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $label_ids, $escape); - } - } else { - foreach ($values as $_i=>$_key) { - $_val = isset($output[$_i]) ? $output[$_i] : ''; - $_html_result[] = smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $label_ids, $escape); - } - } - - if(!empty($params['assign'])) { - $template->assign($params['assign'], $_html_result); - } else { - return implode("\n", $_html_result); - } - -} - -function smarty_function_html_checkboxes_output($name, $value, $output, $selected, $extra, $separator, $labels, $label_ids, $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 .= '