aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG14
-rw-r--r--Zotlabs/Lib/Activity.php267
-rw-r--r--Zotlabs/Lib/Enotify.php25
-rw-r--r--Zotlabs/Lib/Libzot.php14
-rw-r--r--Zotlabs/Lib/MessageFilter.php2
-rw-r--r--Zotlabs/Lib/NativeWiki.php322
-rw-r--r--Zotlabs/Lib/NativeWikiPage.php725
-rw-r--r--Zotlabs/Lib/Queue.php2
-rw-r--r--Zotlabs/Lib/ThreadItem.php17
-rw-r--r--Zotlabs/Lib/ThreadStream.php4
-rw-r--r--Zotlabs/Module/Article_edit.php138
-rw-r--r--Zotlabs/Module/Articles.php232
-rw-r--r--Zotlabs/Module/Card_edit.php140
-rw-r--r--Zotlabs/Module/Cards.php214
-rw-r--r--Zotlabs/Module/Display.php42
-rw-r--r--Zotlabs/Module/Item.php44
-rw-r--r--Zotlabs/Module/Profile_photo.php4
-rw-r--r--Zotlabs/Module/Search.php50
-rw-r--r--Zotlabs/Module/Sse_bs.php24
-rw-r--r--Zotlabs/Module/Starred.php37
-rw-r--r--Zotlabs/Module/Wiki.php873
-rw-r--r--Zotlabs/Module/Zot_probe.php16
-rw-r--r--Zotlabs/Update/_1253.php23
-rw-r--r--Zotlabs/Web/HTTPSig.php7
-rw-r--r--Zotlabs/Widget/Categories.php32
-rw-r--r--Zotlabs/Widget/Notes.php4
-rw-r--r--Zotlabs/Widget/Tasklist.php9
-rw-r--r--Zotlabs/Widget/Wiki_list.php28
-rw-r--r--Zotlabs/Widget/Wiki_page_history.php36
-rw-r--r--Zotlabs/Widget/Wiki_pages.php110
-rw-r--r--app/articles.apd7
-rw-r--r--app/cards.apd7
-rw-r--r--app/wiki.apd7
-rw-r--r--boot.php6
-rw-r--r--composer.lock893
-rw-r--r--include/contact_widgets.php91
-rw-r--r--include/conversation.php2
-rw-r--r--include/event.php15
-rw-r--r--include/features.php8
-rw-r--r--include/html2bbcode.php9
-rw-r--r--include/items.php7
-rw-r--r--include/nav.php27
-rw-r--r--include/photos.php6
-rw-r--r--include/plugin.php11
-rw-r--r--vendor/autoload.php5
-rw-r--r--vendor/bshaffer/oauth2-server-php/.github/workflows/tests.yml55
-rw-r--r--vendor/bshaffer/oauth2-server-php/composer.json13
-rwxr-xr-x[-rw-r--r--]vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/CouchbaseDB.php0
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/Controller/AuthorizeControllerTest.php16
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/Encryption/FirebaseJwtTest.php2
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/Encryption/JwtTest.php2
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/JwtBearerTest.php2
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/ResponseType/CodeIdTokenTest.php6
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/ResponseType/IdTokenTest.php4
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/ResponseType/IdTokenTokenTest.php2
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseTest.php2
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/ServerTest.php234
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/Storage/PdoTest.php8
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/cleanup.php15
-rwxr-xr-x[-rw-r--r--]vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Storage/BaseTest.php0
-rwxr-xr-x[-rw-r--r--]vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Storage/Bootstrap.php29
-rw-r--r--vendor/composer/InstalledVersions.php2
-rw-r--r--vendor/composer/autoload_classmap.php52
-rw-r--r--vendor/composer/autoload_files.php4
-rw-r--r--vendor/composer/autoload_namespaces.php2
-rw-r--r--vendor/composer/autoload_psr4.php5
-rw-r--r--vendor/composer/autoload_real.php31
-rw-r--r--vendor/composer/autoload_static.php63
-rw-r--r--vendor/composer/include_paths.php2
-rw-r--r--vendor/composer/installed.json288
-rw-r--r--vendor/composer/installed.php58
-rw-r--r--vendor/phpseclib/phpseclib/BACKERS.md1
-rw-r--r--vendor/phpseclib/phpseclib/README.md3
-rw-r--r--vendor/phpseclib/phpseclib/phpseclib/Crypt/Base.php14
-rw-r--r--vendor/phpseclib/phpseclib/phpseclib/Crypt/RSA.php63
-rw-r--r--vendor/phpseclib/phpseclib/phpseclib/System/SSH/Agent.php3
-rw-r--r--vendor/ramsey/uuid/LICENSE2
-rw-r--r--vendor/ramsey/uuid/composer.json46
-rw-r--r--vendor/ramsey/uuid/src/Builder/BuilderCollection.php5
-rw-r--r--vendor/ramsey/uuid/src/Builder/FallbackBuilder.php6
-rw-r--r--vendor/ramsey/uuid/src/FeatureSet.php11
-rw-r--r--vendor/ramsey/uuid/src/Generator/CombGenerator.php2
-rw-r--r--vendor/ramsey/uuid/src/Generator/RandomLibAdapter.php4
-rw-r--r--vendor/ramsey/uuid/src/Provider/Dce/SystemDceSecurityProvider.php2
-rw-r--r--vendor/ramsey/uuid/src/Provider/Node/FallbackNodeProvider.php6
-rw-r--r--vendor/ramsey/uuid/src/Provider/Node/NodeProviderCollection.php5
-rw-r--r--vendor/ramsey/uuid/src/Uuid.php3
-rw-r--r--vendor/simplepie/simplepie/.editorconfig20
-rw-r--r--vendor/simplepie/simplepie/CHANGELOG.md42
-rw-r--r--vendor/simplepie/simplepie/README.markdown5
-rw-r--r--vendor/simplepie/simplepie/composer.json8
-rwxr-xr-xvendor/simplepie/simplepie/library/SimplePie.php24
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Author.php2
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Cache.php2
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Cache/Base.php2
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Cache/DB.php2
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Cache/File.php2
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Cache/Memcache.php2
-rwxr-xr-xvendor/simplepie/simplepie/library/SimplePie/Cache/Memcached.php2
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Cache/MySQL.php4
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Cache/Redis.php2
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Caption.php2
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Category.php3
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Content/Type/Sniffer.php2
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Copyright.php2
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Credit.php2
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Enclosure.php2
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Exception.php4
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/File.php2
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/HTTP/Parser.php2
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/IRI.php2
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Item.php2
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Locator.php2
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Misc.php2
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Net/IPv6.php2
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Parse/Date.php2
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Parser.php2
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Rating.php2
-rwxr-xr-xvendor/simplepie/simplepie/library/SimplePie/Registry.php2
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Restriction.php2
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Sanitize.php57
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Source.php2
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/XML/Declaration/Parser.php2
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/gzdecode.php2
-rw-r--r--vendor/simplepie/simplepie/src/Author.php55
-rw-r--r--vendor/simplepie/simplepie/src/Cache.php55
-rw-r--r--vendor/simplepie/simplepie/src/Cache/Base.php55
-rw-r--r--vendor/simplepie/simplepie/src/Cache/DB.php55
-rw-r--r--vendor/simplepie/simplepie/src/Cache/File.php55
-rw-r--r--vendor/simplepie/simplepie/src/Cache/Memcache.php55
-rw-r--r--vendor/simplepie/simplepie/src/Cache/Memcached.php55
-rw-r--r--vendor/simplepie/simplepie/src/Cache/MySQL.php55
-rw-r--r--vendor/simplepie/simplepie/src/Cache/Redis.php55
-rw-r--r--vendor/simplepie/simplepie/src/Caption.php55
-rw-r--r--vendor/simplepie/simplepie/src/Category.php55
-rw-r--r--vendor/simplepie/simplepie/src/Content/Type/Sniffer.php55
-rw-r--r--vendor/simplepie/simplepie/src/Copyright.php55
-rw-r--r--vendor/simplepie/simplepie/src/Credit.php55
-rw-r--r--vendor/simplepie/simplepie/src/Enclosure.php55
-rw-r--r--vendor/simplepie/simplepie/src/Exception.php55
-rw-r--r--vendor/simplepie/simplepie/src/File.php55
-rw-r--r--vendor/simplepie/simplepie/src/Gzdecode.php55
-rw-r--r--vendor/simplepie/simplepie/src/HTTP/Parser.php55
-rw-r--r--vendor/simplepie/simplepie/src/IRI.php55
-rw-r--r--vendor/simplepie/simplepie/src/Item.php55
-rw-r--r--vendor/simplepie/simplepie/src/Locator.php55
-rw-r--r--vendor/simplepie/simplepie/src/Misc.php55
-rw-r--r--vendor/simplepie/simplepie/src/Net/IPv6.php55
-rw-r--r--vendor/simplepie/simplepie/src/Parse/Date.php55
-rw-r--r--vendor/simplepie/simplepie/src/Parser.php55
-rw-r--r--vendor/simplepie/simplepie/src/Rating.php55
-rw-r--r--vendor/simplepie/simplepie/src/Registry.php55
-rw-r--r--vendor/simplepie/simplepie/src/Restriction.php55
-rw-r--r--vendor/simplepie/simplepie/src/Sanitize.php55
-rw-r--r--vendor/simplepie/simplepie/src/SimplePie.php55
-rw-r--r--vendor/simplepie/simplepie/src/Source.php55
-rw-r--r--vendor/simplepie/simplepie/src/XML/Declaration/Parser.php55
-rw-r--r--vendor/smarty/smarty/.github/workflows/ci.yml77
-rw-r--r--vendor/smarty/smarty/CHANGELOG.md13
-rw-r--r--vendor/smarty/smarty/demo/configs/test.conf5
-rw-r--r--vendor/smarty/smarty/demo/index.php35
-rw-r--r--vendor/smarty/smarty/demo/plugins/cacheresource.apc.php85
-rw-r--r--vendor/smarty/smarty/demo/plugins/cacheresource.memcache.php99
-rw-r--r--vendor/smarty/smarty/demo/plugins/cacheresource.mysql.php183
-rw-r--r--vendor/smarty/smarty/demo/plugins/cacheresource.pdo.php346
-rw-r--r--vendor/smarty/smarty/demo/plugins/cacheresource.pdo_gzip.php42
-rw-r--r--vendor/smarty/smarty/demo/plugins/resource.extendsall.php62
-rw-r--r--vendor/smarty/smarty/demo/plugins/resource.mysql.php101
-rw-r--r--vendor/smarty/smarty/demo/plugins/resource.mysqls.php77
-rw-r--r--vendor/smarty/smarty/demo/templates/footer.tpl2
-rw-r--r--vendor/smarty/smarty/demo/templates/header.tpl5
-rw-r--r--vendor/smarty/smarty/demo/templates/index.tpl87
-rw-r--r--vendor/smarty/smarty/docs/_config.yml1
-rw-r--r--vendor/smarty/smarty/docs/appendixes/tips.md332
-rw-r--r--vendor/smarty/smarty/docs/appendixes/troubleshooting.md120
-rw-r--r--vendor/smarty/smarty/docs/designers/chapter-debugging-console.md41
-rw-r--r--vendor/smarty/smarty/docs/designers/config-files.md77
-rw-r--r--vendor/smarty/smarty/docs/designers/language-basic-syntax.md33
-rw-r--r--vendor/smarty/smarty/docs/designers/language-basic-syntax/language-escaping.md84
-rw-r--r--vendor/smarty/smarty/docs/designers/language-basic-syntax/language-math.md29
-rw-r--r--vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-attributes.md50
-rw-r--r--vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-comments.md71
-rw-r--r--vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-functions.md40
-rw-r--r--vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-quotes.md61
-rw-r--r--vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-variables.md111
-rw-r--r--vendor/smarty/smarty/docs/designers/language-builtin-functions.md39
-rw-r--r--vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-append.md49
-rw-r--r--vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-assign.md149
-rw-r--r--vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-block.md191
-rw-r--r--vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-call.md76
-rw-r--r--vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-capture.md82
-rw-r--r--vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-config-load.md91
-rw-r--r--vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-debug.md18
-rw-r--r--vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-extends.md37
-rw-r--r--vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-for.md97
-rw-r--r--vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-foreach.md407
-rw-r--r--vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-function.md88
-rw-r--r--vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-if.md121
-rw-r--r--vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-include-php.md74
-rw-r--r--vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-include.md194
-rw-r--r--vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-insert.md86
-rw-r--r--vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-ldelim.md55
-rw-r--r--vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-literal.md36
-rw-r--r--vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-nocache.md23
-rw-r--r--vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-section.md644
-rw-r--r--vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-setfilter.md42
-rw-r--r--vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-shortform-assign.md84
-rw-r--r--vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-strip.md48
-rw-r--r--vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-while.md43
-rw-r--r--vendor/smarty/smarty/docs/designers/language-combining-modifiers.md35
-rw-r--r--vendor/smarty/smarty/docs/designers/language-custom-functions.md21
-rw-r--r--vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-counter.md41
-rw-r--r--vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-cycle.md57
-rw-r--r--vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-debug.md15
-rw-r--r--vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-eval.md84
-rw-r--r--vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-fetch.md59
-rw-r--r--vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-checkboxes.md113
-rw-r--r--vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-image.md56
-rw-r--r--vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-options.md155
-rw-r--r--vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-radios.md112
-rw-r--r--vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-select-date.md119
-rw-r--r--vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-select-time.md98
-rw-r--r--vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-table.md89
-rw-r--r--vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-mailto.md56
-rw-r--r--vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-math.md104
-rw-r--r--vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-textformat.md190
-rw-r--r--vendor/smarty/smarty/docs/designers/language-modifiers.md123
-rw-r--r--vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-capitalize.md41
-rw-r--r--vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-cat.md31
-rw-r--r--vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count-characters.md39
-rw-r--r--vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count-paragraphs.md38
-rw-r--r--vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count-sentences.md37
-rw-r--r--vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count-words.md33
-rw-r--r--vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-date-format.md175
-rw-r--r--vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-default.md41
-rw-r--r--vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-escape.md74
-rw-r--r--vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-from-charset.md19
-rw-r--r--vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-indent.md62
-rw-r--r--vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-lower.md33
-rw-r--r--vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-nl2br.md35
-rw-r--r--vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-regex-replace.md51
-rw-r--r--vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-replace.md40
-rw-r--r--vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-spacify.md40
-rw-r--r--vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-string-format.md39
-rw-r--r--vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-strip-tags.md41
-rw-r--r--vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-strip.md40
-rw-r--r--vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-to-charset.md19
-rw-r--r--vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-truncate.md52
-rw-r--r--vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-unescape.md39
-rw-r--r--vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-upper.md31
-rw-r--r--vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-wordwrap.md69
-rw-r--r--vendor/smarty/smarty/docs/designers/language-variables.md37
-rw-r--r--vendor/smarty/smarty/docs/designers/language-variables/language-assigned-variables.md142
-rw-r--r--vendor/smarty/smarty/docs/designers/language-variables/language-config-variables.md83
-rw-r--r--vendor/smarty/smarty/docs/designers/language-variables/language-variable-scopes.md61
-rw-r--r--vendor/smarty/smarty/docs/designers/language-variables/language-variables-smarty.md176
-rw-r--r--vendor/smarty/smarty/docs/features.md152
-rw-r--r--vendor/smarty/smarty/docs/getting-started.md169
-rw-r--r--vendor/smarty/smarty/docs/index.md50
-rw-r--r--vendor/smarty/smarty/docs/philosophy.md108
-rw-r--r--vendor/smarty/smarty/docs/programmers/advanced-features.md14
-rw-r--r--vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-objects.md99
-rw-r--r--vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-outputfilters.md43
-rw-r--r--vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-postfilters.md40
-rw-r--r--vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-prefilters.md36
-rw-r--r--vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-security.md168
-rw-r--r--vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-static-classes.md27
-rw-r--r--vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-streams.md15
-rw-r--r--vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-template-inheritance.md128
-rw-r--r--vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-template-settings.md32
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions.md64
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-add-config-dir.md49
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-add-plugins-dir.md42
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-add-template-dir.md49
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-append-by-ref.md46
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-append.md61
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-assign-by-ref.md42
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-assign.md84
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-clear-all-assign.md34
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-clear-all-cache.md37
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-clear-assign.md32
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-clear-cache.md60
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-clear-compiled-tpl.md44
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-clear-config.md35
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-compile-all-config.md61
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-compile-all-templates.md71
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-config-load.md47
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-create-data.md52
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-create-template.md99
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-disable-security.md15
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-display.md82
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-enable-security.md41
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-fetch.md91
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-get-cache-dir.md23
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-get-compile-dir.md23
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-get-config-dir.md40
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-get-config-vars.md37
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-get-plugins-dir.md31
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-get-registered-object.md36
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-get-tags.md40
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-get-template-dir.md40
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-get-template-vars.md37
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-is-cached.md81
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-load-filter.md42
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-mute-expected-errors.md21
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-register-cacheresource.md40
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-register-class.md65
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-register-default-plugin-handler.md93
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-register-filter.md45
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-register-object.md44
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-register-plugin.md110
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-register-resource.md46
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-set-cache-dir.md32
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-set-compile-dir.md32
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-set-config-dir.md47
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-set-plugins-dir.md46
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-set-template-dir.md46
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-template-exists.md59
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-test-install.md22
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-cacheresource.md28
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-filter.md23
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-object.md17
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-plugin.md36
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-resource.md28
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables.md64
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-allow-php-templates.md18
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-auto-literal.md17
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-autoload-filters.md21
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-dir.md35
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-id.md11
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-lifetime.md30
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-locking.md11
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-modified-check.md12
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-caching-type.md9
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-caching.md38
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-check.md27
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-dir.md29
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-id.md44
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-locking.md7
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-compiler-class.md6
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-config-booleanize.md8
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-config-dir.md23
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-config-overwrite.md40
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-config-read-hidden.md8
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-debug-template.md9
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-debugging-ctrl.md20
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-debugging.md17
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-default-config-handler-func.md50
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-default-config-type.md7
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-default-modifiers.md8
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-default-resource-type.md7
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-default-template-handler-func.md50
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-direct-access-security.md13
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-error-reporting.md17
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-escape-html.md21
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-force-cache.md6
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-force-compile.md9
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-left-delimiter.md8
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-locking-timeout.md7
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-merge-compiled-includes.md27
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-php-handling.md21
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-plugins-dir.md28
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-right-delimiter.md8
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-smarty-debug-id.md9
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-template-dir.md36
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-trusted-dir.md8
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-use-include-path.md49
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-use-sub-dirs.md31
-rw-r--r--vendor/smarty/smarty/docs/programmers/caching.md24
-rw-r--r--vendor/smarty/smarty/docs/programmers/caching/caching-cacheable.md176
-rw-r--r--vendor/smarty/smarty/docs/programmers/caching/caching-custom.md296
-rw-r--r--vendor/smarty/smarty/docs/programmers/caching/caching-groups.md60
-rw-r--r--vendor/smarty/smarty/docs/programmers/caching/caching-multiple-caches.md87
-rw-r--r--vendor/smarty/smarty/docs/programmers/caching/caching-setting-up.md153
-rw-r--r--vendor/smarty/smarty/docs/programmers/charset.md43
-rw-r--r--vendor/smarty/smarty/docs/programmers/plugins.md44
-rw-r--r--vendor/smarty/smarty/docs/programmers/plugins/plugins-block-functions.md95
-rw-r--r--vendor/smarty/smarty/docs/programmers/plugins/plugins-compiler-functions.md66
-rw-r--r--vendor/smarty/smarty/docs/programmers/plugins/plugins-functions.md94
-rw-r--r--vendor/smarty/smarty/docs/programmers/plugins/plugins-howto.md18
-rw-r--r--vendor/smarty/smarty/docs/programmers/plugins/plugins-inserts.md48
-rw-r--r--vendor/smarty/smarty/docs/programmers/plugins/plugins-modifiers.md86
-rw-r--r--vendor/smarty/smarty/docs/programmers/plugins/plugins-naming-conventions.md51
-rw-r--r--vendor/smarty/smarty/docs/programmers/plugins/plugins-outputfilters.md48
-rw-r--r--vendor/smarty/smarty/docs/programmers/plugins/plugins-prefilters-postfilters.md89
-rw-r--r--vendor/smarty/smarty/docs/programmers/plugins/plugins-resources.md128
-rw-r--r--vendor/smarty/smarty/docs/programmers/plugins/plugins-writing.md36
-rw-r--r--vendor/smarty/smarty/docs/programmers/resources.md19
-rw-r--r--vendor/smarty/smarty/docs/programmers/resources/resources-custom.md111
-rw-r--r--vendor/smarty/smarty/docs/programmers/resources/resources-extends.md36
-rw-r--r--vendor/smarty/smarty/docs/programmers/resources/resources-file.md160
-rw-r--r--vendor/smarty/smarty/docs/programmers/resources/resources-streams.md27
-rw-r--r--vendor/smarty/smarty/docs/programmers/resources/resources-string.md73
-rw-r--r--vendor/smarty/smarty/docs/programmers/resources/template-resources.md130
-rw-r--r--vendor/smarty/smarty/docs/programmers/smarty-constants.md27
-rw-r--r--vendor/smarty/smarty/libs/Smarty.class.php8
-rw-r--r--vendor/smarty/smarty/libs/plugins/function.math.php2
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifier.escape.php3
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifier.truncate.php6
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.escape.php20
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block.php4
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_function.php8
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_include.php4
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_insert.php2
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_config_file_compiler.php10
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_codeframe.php9
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php4
-rw-r--r--vendor/symfony/polyfill-ctype/Ctype.php232
-rw-r--r--vendor/symfony/polyfill-ctype/LICENSE19
-rw-r--r--vendor/symfony/polyfill-ctype/README.md12
-rw-r--r--vendor/symfony/polyfill-ctype/bootstrap.php50
-rw-r--r--vendor/symfony/polyfill-ctype/bootstrap80.php46
-rw-r--r--vendor/symfony/polyfill-ctype/composer.json41
-rw-r--r--vendor/symfony/polyfill-php80/LICENSE19
-rw-r--r--vendor/symfony/polyfill-php80/Php80.php105
-rw-r--r--vendor/symfony/polyfill-php80/README.md24
-rw-r--r--vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php22
-rw-r--r--vendor/symfony/polyfill-php80/Resources/stubs/Stringable.php11
-rw-r--r--vendor/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php7
-rw-r--r--vendor/symfony/polyfill-php80/Resources/stubs/ValueError.php7
-rw-r--r--vendor/symfony/polyfill-php80/bootstrap.php42
-rw-r--r--vendor/symfony/polyfill-php80/composer.json40
-rw-r--r--view/css/conversation.css4
-rw-r--r--view/pdl/mod_articles.pdl14
-rw-r--r--view/pdl/mod_cards.pdl13
-rw-r--r--view/pdl/mod_wiki.pdl11
-rw-r--r--view/theme/redbasic/css/style.css2
-rw-r--r--view/theme/redbasic/schema/Focus-Boxy.css9
-rw-r--r--view/tpl/cards.tpl4
-rw-r--r--view/tpl/wiki.tpl475
-rw-r--r--view/tpl/wiki_page_history.tpl59
-rw-r--r--view/tpl/wiki_page_list.tpl90
-rw-r--r--view/tpl/wiki_page_not_found.tpl34
-rw-r--r--view/tpl/wikilist.tpl101
-rw-r--r--view/tpl/wikilist_widget.tpl8
435 files changed, 3357 insertions, 20857 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 23033eb9f..bfeab32d2 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,17 @@
+Hubzilla 7.2.2 (2022-04-26)
+ - Fix item_verified not set due to data structure changes
+
+
+Hubzilla 7.2.1 (2022-04-25)
+ - Fix changing profile image from new member widget - issue #1671
+ - Fix regression with incoming poll answers from activitypub introduced in 7.2
+ - Fix addons not removed from the DB when removed from the filesystem
+ - Fix regression in attaching images for activitypub introduced in 7.2
+ - Move activitypub addressing from core to the pubcrawl addon
+ - Fix hub re-install issues
+ - Fediwordle: slightly improved algorithm
+
+
Hubzilla 7.2 (2022-03-29)
- Streamline comment policy with downstream project
- Add new function is_local_url()
diff --git a/Zotlabs/Lib/Activity.php b/Zotlabs/Lib/Activity.php
index 0c25605e7..8e24dde41 100644
--- a/Zotlabs/Lib/Activity.php
+++ b/Zotlabs/Lib/Activity.php
@@ -530,71 +530,18 @@ class Activity {
$ret['attachment'] = $a;
}
- $public = (($i['item_private']) ? false : true);
- $top_level = (($i['mid'] === $i['parent_mid']) ? true : false);
-
- if ($public) {
-
+ if (intval($i['item_private']) === 0) {
$ret['to'] = [ACTIVITY_PUBLIC_INBOX];
- $ret['cc'] = [z_root() . '/followers/' . substr($i['author']['xchan_addr'], 0, strpos($i['author']['xchan_addr'], '@'))];
}
- else {
- // private activity
-
- if ($top_level) {
- $ret['to'] = self::map_acl($i);
- }
- else {
- $ret['to'] = [];
- if ($ret['tag']) {
- foreach ($ret['tag'] as $mention) {
- if (is_array($mention) && array_key_exists('href', $mention) && $mention['href']) {
- $h = q("select * from hubloc where hubloc_id_url = '%s' limit 1",
- dbesc($mention['href'])
- );
- if ($h) {
- if ($h[0]['hubloc_network'] === 'activitypub') {
- $addr = $h[0]['hubloc_hash'];
- }
- else {
- $addr = $h[0]['hubloc_id_url'];
- }
- if (!in_array($addr, $ret['to'])) {
- $ret['to'][] = $addr;
- }
- }
- }
- }
- }
- $d = q("select hubloc.* from hubloc left join item on hubloc_hash = owner_xchan where item.id = %d limit 1",
- intval($i['parent'])
- );
- if ($d) {
- if ($d[0]['hubloc_network'] === 'activitypub') {
- $addr = $d[0]['hubloc_hash'];
- }
- else {
- $addr = $d[0]['hubloc_id_url'];
- }
- if (!in_array($addr, $ret['to'])) {
- $ret['cc'][] = $addr;
- }
- }
- }
- }
+ $hookinfo = [
+ 'item' => $i,
+ 'encoded' => $ret
+ ];
- $mentions = self::map_mentions($i);
- if (count($mentions) > 0) {
- if (!$ret['to']) {
- $ret['to'] = $mentions;
- }
- else {
- $ret['to'] = array_values(array_unique(array_merge($ret['to'], $mentions)));
- }
- }
+ call_hooks('encode_item', $hookinfo);
- return $ret;
+ return $hookinfo['encoded'];
}
@@ -723,24 +670,36 @@ class Activity {
return $ret;
}
- static function decode_attachment($item) {
+ public static function decode_attachment($item) {
$ret = [];
if (array_key_exists('attachment', $item) && is_array($item['attachment'])) {
- foreach ($item['attachment'] as $att) {
+ $ptr = $item['attachment'];
+ if (!array_key_exists(0, $ptr)) {
+ $ptr = [$ptr];
+ }
+ foreach ($ptr as $att) {
$entry = [];
- if (array_key_exists('href', $att))
+ if (array_key_exists('href', $att) && $att['href']) {
$entry['href'] = $att['href'];
- elseif (array_key_exists('url', $att))
+ } elseif (array_key_exists('url', $att) && $att['url']) {
$entry['href'] = $att['url'];
- if (array_key_exists('mediaType', $att))
+ }
+ if (array_key_exists('mediaType', $att) && $att['mediaType']) {
$entry['type'] = $att['mediaType'];
- elseif (array_key_exists('type', $att) && $att['type'] === 'Image')
+ } elseif (array_key_exists('type', $att) && $att['type'] === 'Image') {
$entry['type'] = 'image/jpeg';
- if ($entry)
+ }
+ if (array_key_exists('name', $att) && $att['name']) {
+ $entry['name'] = html2plain(purify_html($att['name']), 256);
+ }
+ if ($entry) {
$ret[] = $entry;
+ }
}
+ } elseif (isset($item['attachment']) && is_string($item['attachment'])) {
+ btlogger('not an array: ' . $item['attachment']);
}
return $ret;
@@ -941,73 +900,18 @@ class Activity {
$ret['attachment'] = $a;
}
- // addressing madness
-
- $public = (($i['item_private']) ? false : true);
- $top_level = (($reply) ? false : true);
-
- if ($public) {
+ if (intval($i['item_private']) === 0) {
$ret['to'] = [ACTIVITY_PUBLIC_INBOX];
- $ret['cc'] = [z_root() . '/followers/' . substr($i['author']['xchan_addr'], 0, strpos($i['author']['xchan_addr'], '@'))];
}
- else {
-
- // private activity
- if ($top_level) {
- $ret['to'] = self::map_acl($i);
- }
- else {
- $ret['to'] = [];
- if ($ret['tag']) {
- foreach ($ret['tag'] as $mention) {
- if (is_array($mention) && array_key_exists('href', $mention) && $mention['href']) {
- $h = q("select * from hubloc where hubloc_id_url = '%s' limit 1",
- dbesc($mention['href'])
- );
- if ($h) {
- if ($h[0]['hubloc_network'] === 'activitypub') {
- $addr = $h[0]['hubloc_hash'];
- }
- else {
- $addr = $h[0]['hubloc_id_url'];
- }
- if (!in_array($addr, $ret['to'])) {
- $ret['to'][] = $addr;
- }
- }
- }
- }
- }
+ $hookinfo = [
+ 'item' => $i,
+ 'encoded' => $ret
+ ];
- $d = q("select hubloc.* from hubloc left join item on hubloc_hash = owner_xchan where item.id = %d limit 1",
- intval($i['parent'])
- );
- if ($d) {
- if ($d[0]['hubloc_network'] === 'activitypub') {
- $addr = $d[0]['hubloc_hash'];
- }
- else {
- $addr = $d[0]['hubloc_id_url'];
- }
- if (!in_array($addr, $ret['to'])) {
- $ret['cc'][] = $addr;
- }
- }
- }
- }
+ call_hooks('encode_activity', $hookinfo);
- $mentions = self::map_mentions($i);
- if (count($mentions) > 0) {
- if (!$ret['to']) {
- $ret['to'] = $mentions;
- }
- else {
- $ret['to'] = array_values(array_unique(array_merge($ret['to'], $mentions)));
- }
- }
-
- return $ret;
+ return $hookinfo['encoded'];
}
// Returns an array of URLS for any mention tags found in the item array $i.
@@ -1121,7 +1025,7 @@ class Activity {
'type' => 'Image',
'mediaType' => (($p['xchan_photo_mimetype']) ? $p['xchan_photo_mimetype'] : 'image/png'),
'updated' => datetime_convert('UTC', 'UTC', $p['xchan_photo_date'], ATOM_TIME),
- 'url' => $p['xchan_photo_l'],
+ 'url' => $p['xchan_photo_l'] . '?rev=' . strtotime($p['xchan_photo_date']),
'height' => 300,
'width' => 300,
];
@@ -2303,20 +2207,20 @@ class Activity {
$s['created'] = datetime_convert('UTC', 'UTC', $act->data['published']);
$s['commented'] = $s['created'];
}
- elseif (array_key_exists('published', $act->obj)) {
+ elseif (is_array($act->obj) && array_key_exists('published', $act->obj)) {
$s['created'] = datetime_convert('UTC', 'UTC', $act->obj['published']);
$s['commented'] = $s['created'];
}
if (array_key_exists('updated', $act->data)) {
$s['edited'] = datetime_convert('UTC', 'UTC', $act->data['updated']);
}
- elseif (array_key_exists('updated', $act->obj)) {
+ elseif (is_array($act->obj) && array_key_exists('updated', $act->obj)) {
$s['edited'] = datetime_convert('UTC', 'UTC', $act->obj['updated']);
}
if (array_key_exists('expires', $act->data)) {
$s['expires'] = datetime_convert('UTC', 'UTC', $act->data['expires']);
}
- elseif (array_key_exists('expires', $act->obj)) {
+ elseif (is_array($act->obj) && array_key_exists('expires', $act->obj)) {
$s['expires'] = datetime_convert('UTC', 'UTC', $act->obj['expires']);
}
@@ -2378,9 +2282,18 @@ class Activity {
$s['mid'] = $act->obj['id'];
$s['parent_mid'] = $act->obj['id'];
}
+
if ($act->type === 'emojiReaction') {
$content['content'] = (($act->tgt && $act->tgt['type'] === 'Image') ? '[img=32x32]' . $act->tgt['url'] . '[/img]' : '&#x' . $act->tgt['name'] . ';');
}
+
+ if (in_array($act->type, ['EmojiReaction', 'EmojiReact'])) {
+ // Pleroma reactions
+ $t = trim(self::get_textfield($act->data, 'content'));
+ if (mb_strlen($t) === 1) {
+ $content['content'] = $t;
+ }
+ }
}
$s['item_thread_top'] = 0;
@@ -2516,7 +2429,6 @@ class Activity {
}
}
}
-
}
$a = self::decode_attachment($act->obj);
@@ -2531,8 +2443,11 @@ class Activity {
if (array_key_exists('type', $act->obj)) {
- if ($act->obj['type'] === 'Note' && $s['attach']) {
- $s['body'] = self::bb_attach($s['attach'], $s['body']) . $s['body'];
+ // Objects that might have media attachments which aren't already provided in the content element.
+ // We'll check specific media objects separately.
+
+ if (in_array($act->obj['type'], ['Article', 'Document', 'Event', 'Note', 'Page', 'Place', 'Question']) && isset($s['attach']) && $s['attach']) {
+ $s = self::bb_attach($s);
}
if ($act->obj['type'] === 'Question' && in_array($act->type, ['Create', 'Update'])) {
@@ -2621,13 +2536,13 @@ class Activity {
usort($mps,[ '\Zotlabs\Lib\Activity', 'vid_sort' ]);
foreach ($mps as $m) {
if (intval($m['height']) < 500 && Activity::media_not_in_body($m['href'],$s['body'])) {
- $s['body'] = $tag . $m['href'] . '[/video]' . "\n\n" . $s['body'];
+ $s['body'] = $tag . $m['href'] . '[/video]' . "\r\n" . $s['body'];
break;
}
}
}
elseif (is_string($act->obj['url']) && Activity::media_not_in_body($act->obj['url'],$s['body'])) {
- $s['body'] = $tag . $act->obj['url'] . '[/video]' . "\n\n" . $s['body'];
+ $s['body'] = $tag . $act->obj['url'] . '[/video]' . "\r\n" . $s['body'];
}
}
@@ -2653,13 +2568,13 @@ class Activity {
}
foreach ($ptr as $vurl) {
if (in_array($vurl['mediaType'], $atypes) && self::media_not_in_body($vurl['href'], $s['body'])) {
- $s['body'] = '[audio]' . $vurl['href'] . '[/audio]' . "\n\n" . $s['body'];
+ $s['body'] = '[audio]' . $vurl['href'] . '[/audio]' . "\r\n" . $s['body'];
break;
}
}
}
elseif (is_string($act->obj['url']) && self::media_not_in_body($act->obj['url'], $s['body'])) {
- $s['body'] = '[audio]' . $act->obj['url'] . '[/audio]' . "\n\n" . $s['body'];
+ $s['body'] = '[audio]' . $act->obj['url'] . '[/audio]' . "\r\n" . $s['body'];
}
}
@@ -2679,7 +2594,7 @@ class Activity {
}
foreach ($ptr as $vurl) {
if (strpos($s['body'], $vurl['href']) === false) {
- $bb_imgs = '[zmg]' . $vurl['href'] . '[/zmg]' . "\n\n";
+ $bb_imgs = '[zmg]' . $vurl['href'] . '[/zmg]' . "\r\n";
break;
}
}
@@ -2687,7 +2602,7 @@ class Activity {
}
elseif (is_string($act->obj['url'])) {
if (strpos($s['body'], $act->obj['url']) === false) {
- $s['body'] .= '[zmg]' . $act->obj['url'] . '[/zmg]' . "\n\n" . $s['body'];
+ $s['body'] .= '[zmg]' . $act->obj['url'] . '[/zmg]' . "\r\n" . $s['body'];
}
}
}
@@ -2724,10 +2639,10 @@ class Activity {
if ($purl) {
$li = z_fetch_url(z_root() . '/linkinfo?binurl=' . bin2hex($purl));
if ($li['success'] && $li['body']) {
- $s['body'] .= "\n" . $li['body'];
+ $s['body'] .= "\r\n" . $li['body'];
}
else {
- $s['body'] .= "\n\n" . $purl;
+ $s['body'] .= "\r\n" . $purl;
}
}
}
@@ -2942,7 +2857,7 @@ class Activity {
}
if ($p && $p[0]['obj_type'] === 'Question') {
- if ($item['obj_type'] === 'Note' && $item['title'] && (!$item['content'])) {
+ if ($item['obj_type'] === ACTIVITY_OBJ_COMMENT && $item['title'] && (!$item['body'])) {
$item['obj_type'] = 'Answer';
}
}
@@ -3682,38 +3597,76 @@ class Activity {
return;
}
- static function bb_attach($attach, $body) {
+ public static function bb_attach($item) {
$ret = false;
- foreach ($attach as $a) {
+ if (!(is_array($item['attach']) && $item['attach'])) {
+ return $item;
+ }
+
+ foreach ($item['attach'] as $a) {
+
if (array_key_exists('type', $a) && stripos($a['type'], 'image') !== false) {
- if (self::media_not_in_body($a['href'], $body)) {
- $ret .= "\n\n" . '[img]' . $a['href'] . '[/img]';
+ // don't add inline image if it's an svg and we already have an inline svg
+ if ($a['type'] === 'image/svg+xml' && strpos($item['body'], '[/svg]')) {
+ continue;
+ }
+ if (self::media_not_in_body($a['href'], $item['body'])) {
+ if (isset($a['name']) && $a['name']) {
+ $alt = htmlspecialchars($a['name'], ENT_QUOTES);
+ $item['body'] = '[img=' . $a['href'] . ']' . $alt . '[/img]' . "\r\n" . $item['body'];
+ } else {
+ $item['body'] = '[img]' . $a['href'] . '[/img]' . "\r\n" . $item['body'];
+ }
}
}
+
if (array_key_exists('type', $a) && stripos($a['type'], 'video') !== false) {
- if (self::media_not_in_body($a['href'], $body)) {
- $ret .= "\n\n" . '[video]' . $a['href'] . '[/video]';
+ if (self::media_not_in_body($a['href'], $item['body'])) {
+ $item['body'] = '[video]' . $a['href'] . '[/video]' . "\r\n" . $item['body'];
}
}
if (array_key_exists('type', $a) && stripos($a['type'], 'audio') !== false) {
- if (self::media_not_in_body($a['href'], $body)) {
- $ret .= "\n\n" . '[audio]' . $a['href'] . '[/audio]';
+ if (self::media_not_in_body($a['href'], $item['body'])) {
+ $item['body'] = '[audio]' . $a['href'] . '[/audio]' . "\r\n" . $item['body'];
}
}
+ //if (array_key_exists('type', $a) && stripos($a['type'], 'activity') !== false) {
+ //if (self::media_not_in_body($a['href'], $item['body'])) {
+ //$item = self::get_quote($a['href'], $item);
+ //}
+ //}
}
- return $ret;
+ return $item;
}
+
// check for the existence of existing media link in body
- static function media_not_in_body($s, $body) {
- if ((strpos($body, ']' . $s . '[/img]') === false) &&
+ public static function media_not_in_body($s, $body) {
+
+ $s_alt = htmlspecialchars($s, ENT_QUOTES, 'UTF-8');
+
+ if (
+ (strpos($body, ']' . $s . '[/img]') === false) &&
+ (strpos($body, '[img=' . $s . ']') === false) &&
(strpos($body, ']' . $s . '[/zmg]') === false) &&
+ (strpos($body, '[zmg=' . $s . ']') === false) &&
(strpos($body, ']' . $s . '[/video]') === false) &&
- (strpos($body, ']' . $s . '[/audio]') === false)) {
+ (strpos($body, ']' . $s . '[/zvideo]') === false) &&
+ (strpos($body, ']' . $s . '[/audio]') === false) &&
+ (strpos($body, ']' . $s . '[/zaudio]') === false) &&
+ (strpos($body, ']' . $s_alt . '[/img]') === false) &&
+ (strpos($body, '[img=' . $s_alt . ']') === false) &&
+ (strpos($body, ']' . $s_alt . '[/zmg]') === false) &&
+ (strpos($body, '[zmg=' . $s_alt . ']') === false) &&
+ (strpos($body, ']' . $s_alt . '[/video]') === false) &&
+ (strpos($body, ']' . $s_alt . '[/zvideo]') === false) &&
+ (strpos($body, ']' . $s_alt . '[/audio]') === false) &&
+ (strpos($body, ']' . $s_alt . '[/zaudio]') === false)
+ ) {
return true;
}
return false;
diff --git a/Zotlabs/Lib/Enotify.php b/Zotlabs/Lib/Enotify.php
index 1421c72ae..59e4d9a4e 100644
--- a/Zotlabs/Lib/Enotify.php
+++ b/Zotlabs/Lib/Enotify.php
@@ -256,8 +256,8 @@ class Enotify {
$itemlink = $params['link'];
- if (array_key_exists('item',$params) && activity_match($params['item']['verb'],ACTIVITY_LIKE)) {
- if(! $always_show_in_notices || !($vnotify & VNOTIFY_LIKE)) {
+ if (array_key_exists('item',$params) && (activity_match($params['item']['verb'], ACTIVITY_LIKE) || activity_match($params['item']['verb'], ACTIVITY_DISLIKE))) {
+ if(! $always_show_in_notices || !($vnotify & VNOTIFY_LIKE) || !feature_enabled($recip['channel_id'], 'dislike')) {
logger('notification: not a visible activity. Ignoring.');
pop_lang();
return;
@@ -291,22 +291,29 @@ class Enotify {
);
}
+ if (!$p) {
+ pop_lang();
+ return;
+ }
+
xchan_query($p);
-//@@FIXME $p can be null (line 285)
$item_post_type = item_post_type($p[0]);
// $private = $p[0]['item_private'];
$parent_id = $p[0]['id'];
$parent_item = $p[0];
+ $verb = ((activity_match($params['item']['verb'], ACTIVITY_DISLIKE)) ? t('disliked') : t('liked'));
// "your post"
if($p[0]['owner']['xchan_name'] === $p[0]['author']['xchan_name'] && intval($p[0]['item_wall']))
- $dest_str = sprintf(t('%1$s liked [zrl=%2$s]your %3$s[/zrl]'),
+ $dest_str = sprintf(t('%1$s %2$s [zrl=%3$s]your %4$s[/zrl]'),
'[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]',
+ $verb,
$itemlink,
- $item_post_type);
+ $item_post_type
+ );
else {
pop_lang();
return;
@@ -824,6 +831,14 @@ class Enotify {
$itemem_text = sprintf( t('repeated %s\'s post'), '[bdi]' . $item['author']['xchan_name'] . '[/bdi]');
}
+ if($item['verb'] === ACTIVITY_LIKE) {
+ $itemem_text = sprintf( t('liked %s\'s post'), '[bdi]' . $item['author']['xchan_name'] . '[/bdi]');
+ }
+
+ if($item['verb'] === ACTIVITY_DISLIKE) {
+ $itemem_text = sprintf( t('disliked %s\'s post'), '[bdi]' . $item['author']['xchan_name'] . '[/bdi]');
+ }
+
if(in_array($item['obj_type'], ['Document', 'Video', 'Audio', 'Image'])) {
$itemem_text = t('shared a file with you');
}
diff --git a/Zotlabs/Lib/Libzot.php b/Zotlabs/Lib/Libzot.php
index 2ed18d10b..8eb5ce647 100644
--- a/Zotlabs/Lib/Libzot.php
+++ b/Zotlabs/Lib/Libzot.php
@@ -1292,7 +1292,7 @@ class Libzot {
}
}
- if ($AS->data['hubloc']) {
+ if ($AS->meta['hubloc']) {
$arr['item_verified'] = true;
}
@@ -1627,7 +1627,7 @@ class Libzot {
// doesn't exist.
if ($perm === 'send_stream') {
- if ($force || get_pconfig($channel['channel_id'], 'system', 'hyperdrive', false) || $arr['verb'] === ACTIVITY_SHARE) {
+ if ($force || get_pconfig($channel['channel_id'], 'system', 'hyperdrive', false)) {
$allowed = true;
}
}
@@ -1673,6 +1673,10 @@ class Libzot {
$DR->update('comment parent not found');
$result[] = $DR->get();
+ if ($relay || $request || $local_public) {
+ continue;
+ }
+
// We don't seem to have a copy of this conversation or at least the parent
// - so request a copy of the entire conversation to date.
// Don't do this if it's a relay post as we're the ones who are supposed to
@@ -1684,10 +1688,10 @@ class Libzot {
// the top level post is unlikely to be imported and
// this is just an exercise in futility.
- if ((!$relay) && (!$request) && (!$local_public)
- && perm_is_allowed($channel['channel_id'], $sender, 'send_stream')) {
+ if (perm_is_allowed($channel['channel_id'], $sender, 'send_stream')) {
self::fetch_conversation($channel, $arr['parent_mid']);
}
+
continue;
}
@@ -2010,7 +2014,7 @@ class Libzot {
$arr['owner_xchan'] = $a['signature']['signer'];
}
- if ($AS->data['hubloc'] || $arr['author_xchan'] === $arr['owner_xchan']) {
+ if ($AS->meta['hubloc'] || $arr['author_xchan'] === $arr['owner_xchan']) {
$arr['item_verified'] = true;
}
diff --git a/Zotlabs/Lib/MessageFilter.php b/Zotlabs/Lib/MessageFilter.php
index 95721e7c7..70b0188c4 100644
--- a/Zotlabs/Lib/MessageFilter.php
+++ b/Zotlabs/Lib/MessageFilter.php
@@ -8,7 +8,7 @@ class MessageFilter {
public static function evaluate($item, $incl, $excl) {
- $text = prepare_text($item['body'],((isset($item['mimetype'])) ? $item['mimetype'] : 'text/x-multicode'));
+ $text = prepare_text($item['body'],((isset($item['mimetype'])) ? $item['mimetype'] : 'text/bbcode'));
$text = html2plain(($item['title']) ? $item['title'] . ' ' . $text : $text);
$lang = null;
diff --git a/Zotlabs/Lib/NativeWiki.php b/Zotlabs/Lib/NativeWiki.php
deleted file mode 100644
index bf4ac8e87..000000000
--- a/Zotlabs/Lib/NativeWiki.php
+++ /dev/null
@@ -1,322 +0,0 @@
-<?php
-
-namespace Zotlabs\Lib;
-
-use Zotlabs\Lib\Libsync;
-
-define ( 'NWIKI_ITEM_RESOURCE_TYPE', 'nwiki' );
-
-class NativeWiki {
-
-
- public static function listwikis($channel, $observer_hash) {
-
- $sql_extra = item_permissions_sql($channel['channel_id'], $observer_hash);
- $wikis = q("SELECT * FROM item
- WHERE resource_type = '%s' AND mid = parent_mid AND uid = %d AND item_deleted = 0 $sql_extra",
- dbesc(NWIKI_ITEM_RESOURCE_TYPE),
- intval($channel['channel_id'])
- );
-
- if($wikis) {
- foreach($wikis as &$w) {
-
- $w['json_allow_cid'] = acl2json($w['allow_cid']);
- $w['json_allow_gid'] = acl2json($w['allow_gid']);
- $w['json_deny_cid'] = acl2json($w['deny_cid']);
- $w['json_deny_gid'] = acl2json($w['deny_gid']);
-
- $w['rawName'] = get_iconfig($w, 'wiki', 'rawName');
- $w['htmlName'] = escape_tags($w['rawName']);
- //$w['urlName'] = urlencode(urlencode($w['rawName']));
- $w['urlName'] = self::name_encode($w['rawName']);
- $w['mimeType'] = get_iconfig($w, 'wiki', 'mimeType');
- $w['typelock'] = get_iconfig($w, 'wiki', 'typelock');
- $w['lockstate'] = (($w['allow_cid'] || $w['allow_gid'] || $w['deny_cid'] || $w['deny_gid']) ? 'lock' : 'unlock');
- }
- }
- // TODO: query db for wikis the observer can access. Return with two lists, for read and write access
- return array('wikis' => $wikis);
- }
-
-
- public static function create_wiki($channel, $observer_hash, $wiki, $acl) {
-
- $resource_id = new_uuid();
- $uuid = new_uuid();
-
- $ac = $acl->get();
- $mid = z_root() . '/item/' . $uuid;
-
- $arr = array(); // Initialize the array of parameters for the post
- $item_hidden = ((intval($wiki['postVisible']) === 0) ? 1 : 0);
- $wiki_url = z_root() . '/wiki/' . $channel['channel_address'] . '/' . $wiki['urlName'];
- $arr['aid'] = $channel['channel_account_id'];
- $arr['uuid'] = $uuid;
- $arr['uid'] = $channel['channel_id'];
- $arr['mid'] = $mid;
- $arr['parent_mid'] = $mid;
- $arr['item_hidden'] = $item_hidden;
- $arr['resource_type'] = NWIKI_ITEM_RESOURCE_TYPE;
- $arr['resource_id'] = $resource_id;
- $arr['owner_xchan'] = $channel['channel_hash'];
- $arr['author_xchan'] = $observer_hash;
- $arr['plink'] = $mid;
- $arr['llink'] = z_root() . '/display/' . gen_link_id($mid);
- $arr['title'] = $wiki['htmlName']; // name of new wiki;
- $arr['allow_cid'] = $ac['allow_cid'];
- $arr['allow_gid'] = $ac['allow_gid'];
- $arr['deny_cid'] = $ac['deny_cid'];
- $arr['deny_gid'] = $ac['deny_gid'];
- $arr['item_wall'] = 1;
- $arr['item_origin'] = 1;
- $arr['item_thread_top'] = 1;
- $arr['item_private'] = intval($acl->is_private());
- $arr['verb'] = ACTIVITY_CREATE;
- $arr['obj_type'] = 'Document';
- $arr['body'] = '[table][tr][td][h1]New Wiki[/h1][/td][/tr][tr][td][zrl=' . $wiki_url . ']' . $wiki['htmlName'] . '[/zrl][/td][/tr][/table]';
-
- $arr['public_policy'] = map_scope(\Zotlabs\Access\PermissionLimits::Get($channel['channel_id'],'view_wiki'),true);
-
- // Save the wiki name information using iconfig. This is shareable.
- if(! set_iconfig($arr, 'wiki', 'rawName', $wiki['rawName'], true)) {
- return array('item' => null, 'success' => false);
- }
- if(! set_iconfig($arr, 'wiki', 'mimeType', $wiki['mimeType'], true)) {
- return array('item' => null, 'success' => false);
- }
-
- set_iconfig($arr,'wiki','typelock',$wiki['typelock'],true);
-
- $post = item_store($arr);
-
- $item_id = $post['item_id'];
-
- if($item_id) {
- \Zotlabs\Daemon\Master::Summon(array('Notifier', 'activity', $item_id));
- return array('item' => $post['item'], 'item_id' => $item_id, 'success' => true);
- }
- else {
- return array('item' => null, 'success' => false);
- }
- }
-
-
- public static function update_wiki($channel_id, $observer_hash, $arr, $acl) {
-
- $w = self::get_wiki($channel_id, $observer_hash, $arr['resource_id']);
- $item = $w['wiki'];
-
- if(! $item) {
- return array('item' => null, 'success' => false);
- }
-
- $x = $acl->get();
-
- $item['allow_cid'] = $x['allow_cid'];
- $item['allow_gid'] = $x['allow_gid'];
- $item['deny_cid'] = $x['deny_cid'];
- $item['deny_gid'] = $x['deny_gid'];
- $item['item_private'] = intval($acl->is_private());
-
- $update_title = false;
-
- if($item['title'] !== $arr['updateRawName']) {
- $update_title = true;
- $item['title'] = $arr['updateRawName'];
- }
-
- $update = item_store_update($item);
-
- $item_id = $update['item_id'];
-
- // update acl for any existing wiki pages
-
- q("update item set allow_cid = '%s', allow_gid = '%s', deny_cid = '%s', deny_gid = '%s', item_private = %d where resource_type = 'nwikipage' and resource_id = '%s'",
- dbesc($item['allow_cid']),
- dbesc($item['allow_gid']),
- dbesc($item['deny_cid']),
- dbesc($item['deny_gid']),
- dbesc($item['item_private']),
- dbesc($arr['resource_id'])
- );
-
-
- if($update['item_id']) {
- info( t('Wiki updated successfully'));
- if($update_title) {
- // Update the wiki name information using iconfig.
- if(! set_iconfig($update['item_id'], 'wiki', 'rawName', $arr['updateRawName'], true)) {
- return array('item' => null, 'success' => false);
- }
- }
- return array('item' => $update['item'], 'item_id' => $update['item_id'], 'success' => $update['success']);
- }
- else {
- return array('item' => null, 'success' => false);
- }
- }
-
-
- public static function sync_a_wiki_item($uid,$id,$resource_id) {
-
- $r = q("SELECT * from item WHERE uid = %d AND ( id = %d OR ( resource_type = '%s' and resource_id = '%s' )) ",
- intval($uid),
- intval($id),
- dbesc(NWIKI_ITEM_RESOURCE_TYPE),
- dbesc($resource_id)
- );
- if($r) {
-
- $q = q("select * from item where resource_type = 'nwikipage' and resource_id = '%s'",
- dbesc($r[0]['resource_id'])
- );
- if($q) {
- $r = array_merge($r,$q);
- }
- xchan_query($r);
- $sync_item = fetch_post_tags($r);
- if($sync_item) {
- $pkt = [];
- foreach($sync_item as $w) {
- $pkt[] = encode_item($w,true);
- }
- Libsync::build_sync_packet($uid,array('wiki' => $pkt));
- }
- }
- }
-
-
- public static function delete_wiki($channel_id,$observer_hash,$resource_id) {
-
- $w = self::get_wiki($channel_id,$observer_hash,$resource_id);
- if(! $w['wiki']) {
- return [ 'success' => false ];
- }
- else {
-
- $r = q("SELECT id FROM item WHERE uid = %s AND resource_id = '%s'",
- intval($channel_id),
- dbesc($resource_id)
- );
-
- $ids = array_column($r, 'id');
- drop_items($ids, true, DROPITEM_PHASE1);
-
- info(t('Wiki files deleted successfully'));
-
- return [ 'success' => true ];
- }
- }
-
-
- public static function get_wiki($channel_id, $observer_hash, $resource_id) {
-
- $sql_extra = item_permissions_sql($channel_id,$observer_hash);
-
- $item = q("SELECT * FROM item WHERE uid = %d AND resource_type = '%s' AND resource_id = '%s' AND item_deleted = 0
- $sql_extra ORDER BY id LIMIT 1",
- intval($channel_id),
- dbesc(NWIKI_ITEM_RESOURCE_TYPE),
- dbesc($resource_id)
- );
- if(! $item) {
- return [ 'wiki' => null ];
- }
- else {
-
- $w = $item[0]; // wiki item table record
- // Get wiki metadata
- $rawName = get_iconfig($w, 'wiki', 'rawName');
- $mimeType = get_iconfig($w, 'wiki', 'mimeType');
- $typelock = get_iconfig($w, 'wiki', 'typelock');
-
- return array(
- 'wiki' => $w,
- 'rawName' => $rawName,
- 'htmlName' => escape_tags($rawName),
- //'urlName' => urlencode(urlencode($rawName)),
- 'urlName' => self::name_encode($rawName),
- 'mimeType' => $mimeType,
- 'typelock' => $typelock
- );
- }
- }
-
-
- public static function exists_by_name($uid, $urlName) {
-
- $sql_extra = item_permissions_sql($uid);
-
- $item = q("SELECT item.id, resource_id FROM item left join iconfig on iconfig.iid = item.id
- WHERE resource_type = '%s' AND iconfig.v = '%s' AND uid = %d
- AND item_deleted = 0 $sql_extra limit 1",
- dbesc(NWIKI_ITEM_RESOURCE_TYPE),
- //dbesc(urldecode($urlName)),
- dbesc(self::name_decode($urlName)),
- intval($uid)
- );
-
- if($item) {
- return array('id' => $item[0]['id'], 'resource_id' => $item[0]['resource_id']);
- }
- else {
- return array('id' => null, 'resource_id' => null);
- }
- }
-
-
- public static function get_permissions($resource_id, $owner_id, $observer_hash) {
-
- // TODO: For now, only the owner can edit
- $sql_extra = item_permissions_sql($owner_id, $observer_hash);
-
- if(local_channel() && local_channel() == $owner_id) {
- return [ 'read' => true, 'write' => true, 'success' => true ];
- }
-
- $r = q("SELECT * FROM item WHERE uid = %d and resource_type = '%s' AND resource_id = '%s' $sql_extra LIMIT 1",
- intval($owner_id),
- dbesc(NWIKI_ITEM_RESOURCE_TYPE),
- dbesc($resource_id)
- );
-
- if(! $r) {
- return array('read' => false, 'write' => false, 'success' => true);
- }
- else {
- $write = perm_is_allowed($owner_id, $observer_hash,'write_wiki');
- return array('read' => true, 'write' => $write, 'success' => true);
- }
- }
-
-
- public static function name_encode ($string) {
-
- $string = html_entity_decode($string);
- $encoding = mb_internal_encoding();
- mb_internal_encoding("UTF-8");
- $ret = mb_ereg_replace_callback ('[^A-Za-z0-9\-\_\.\~]',function ($char) {
- $charhex = unpack('H*',$char[0]);
- $ret = '('.$charhex[1].')';
- return $ret;
- }
- ,$string);
- mb_internal_encoding($encoding);
- return $ret;
- }
-
-
- public static function name_decode ($string) {
-
- $encoding = mb_internal_encoding();
- mb_internal_encoding("UTF-8");
- $ret = mb_ereg_replace_callback ('(\(([0-9a-f]+)\))',function ($chars) {
- return pack('H*',$chars[2]);
- }
- ,$string);
- mb_internal_encoding($encoding);
- return $ret;
- }
-
-}
diff --git a/Zotlabs/Lib/NativeWikiPage.php b/Zotlabs/Lib/NativeWikiPage.php
deleted file mode 100644
index 1e944f7ac..000000000
--- a/Zotlabs/Lib/NativeWikiPage.php
+++ /dev/null
@@ -1,725 +0,0 @@
-<?php
-
-namespace Zotlabs\Lib;
-
-use App;
-use Zotlabs\Access\PermissionLimits;
-
-class NativeWikiPage {
-
- static public function page_list($channel_id, $observer_hash, $resource_id) {
-
- // TODO: Create item table records for pages so that metadata like title can be applied
- $w = NativeWiki::get_wiki($channel_id, $observer_hash, $resource_id);
-
- $pages[] = [
- 'resource_id' => '',
- 'title' => 'Home',
- 'url' => 'Home',
- 'link_id' => 'id_wiki_home_0'
- ];
-
- $sql_extra = item_permissions_sql($channel_id, $observer_hash);
-
- $r = q("select * from item where resource_type = 'nwikipage' and resource_id = '%s' and uid = %d and item_deleted = 0
- $sql_extra order by title asc",
- dbesc($resource_id),
- intval($channel_id)
- );
- if ($r) {
- $x = [];
- $y = [];
-
- foreach ($r as $rv) {
- if (!in_array($rv['mid'], $x)) {
- $y[] = $rv;
- $x[] = $rv['mid'];
- }
- }
-
- $items = fetch_post_tags($y, true);
-
- foreach ($items as $page_item) {
- $title = get_iconfig($page_item['id'], 'nwikipage', 'pagetitle', t('(No Title)'));
- if (urldecode($title) !== 'Home') {
- $pages[] = [
- 'resource_id' => $resource_id,
- 'title' => escape_tags($title),
- //'url' => str_replace('%2F','/',urlencode(str_replace('%2F','/',urlencode($title)))),
- 'url' => NativeWiki::name_encode($title),
- 'link_id' => 'id_' . substr($resource_id, 0, 10) . '_' . $page_item['id']
- ];
- }
- }
- }
-
- return ['pages' => $pages, 'wiki' => $w];
- }
-
-
- static public function create_page($channel, $observer_hash, $name, $resource_id, $mimetype = 'text/bbcode') {
-
- logger('mimetype: ' . $mimetype);
-
- if (!in_array($mimetype, ['text/markdown', 'text/bbcode', 'text/plain', 'text/html']))
- $mimetype = 'text/markdown';
-
- $w = NativeWiki::get_wiki($channel['channel_id'], $observer_hash, $resource_id);
-
- if (!$w['wiki']) {
- return ['content' => null, 'message' => 'Error reading wiki', 'success' => false];
- }
-
- // backslashes won't work well in the javascript functions
- $name = str_replace('\\', '', $name);
-
- $uuid = new_uuid();
- $mid = z_root() . '/item/' . $uuid;
-
- // create an empty activity
- $arr = [];
- $arr['aid'] = $channel['channel_account_id'];
- $arr['uid'] = $channel['channel_id'];
- $arr['mid'] = $mid;
- $arr['parent_mid'] = $w['wiki']['mid'];
- $arr['parent'] = $w['wiki']['parent'];
- $arr['uuid'] = $uuid;
- $arr['item_hidden'] = $w['wiki']['item_hidden'];
- $arr['plink'] = $mid;
- $arr['llink'] = z_root() . '/display/' . gen_link_id($mid);
- $arr['author_xchan'] = $observer_hash;
- $arr['mimetype'] = $mimetype;
- $arr['title'] = $name;
- $arr['resource_type'] = 'nwikipage';
- $arr['resource_id'] = $resource_id;
- $arr['allow_cid'] = $w['wiki']['allow_cid'];
- $arr['allow_gid'] = $w['wiki']['allow_gid'];
- $arr['deny_cid'] = $w['wiki']['deny_cid'];
- $arr['deny_gid'] = $w['wiki']['deny_gid'];
- $arr['item_private'] = $w['wiki']['item_private'];
- $arr['item_wall'] = 1;
- $arr['item_origin'] = 1;
- $arr['item_thread_top'] = 1;
- $arr['verb'] = ACTIVITY_CREATE;
- $arr['obj_type'] = 'Document';
- // TODO: add an object?
- $arr['public_policy'] = map_scope(PermissionLimits::Get($channel['channel_id'], 'view_wiki'), true);
-
- // We may wish to change this some day.
- $arr['item_unpublished'] = 1;
-
- set_iconfig($arr, 'nwikipage', 'pagetitle', (($name) ? $name : t('(No Title)')), true);
- $p = item_store($arr, false, false);
-
- if ($p['item_id']) {
- $page = [
- 'rawName' => $name,
- 'htmlName' => escape_tags($name),
- //'urlName' => urlencode($name),
- 'urlName' => NativeWiki::name_encode($name)
-
- ];
-
- return ['page' => $page, 'item_id' => $p['item_id'], 'item' => $p['activity'], 'wiki' => $w, 'message' => '', 'success' => true];
- }
- return ['success' => false, 'message' => t('Wiki page create failed.')];
- }
-
-
- static public function rename_page($arr) {
-
- $pageUrlName = ((array_key_exists('pageUrlName', $arr)) ? $arr['pageUrlName'] : '');
- $pageNewName = ((array_key_exists('pageNewName', $arr)) ? $arr['pageNewName'] : '');
- $resource_id = ((array_key_exists('resource_id', $arr)) ? $arr['resource_id'] : '');
- $observer_hash = ((array_key_exists('observer_hash', $arr)) ? $arr['observer_hash'] : '');
- $channel_id = ((array_key_exists('channel_id', $arr)) ? $arr['channel_id'] : 0);
-
- $w = NativeWiki::get_wiki($channel_id, $observer_hash, $resource_id);
- if (!$w['wiki']) {
- return ['message' => t('Wiki not found.'), 'success' => false];
- }
-
-
- $ic = q("select * from iconfig left join item on iconfig.iid = item.id
- where uid = %d and cat = 'nwikipage' and k = 'pagetitle' and v = '%s'",
- intval($channel_id),
- dbesc($pageNewName)
- );
-
- if ($ic) {
- return ['success' => false, 'message' => t('Destination name already exists')];
- }
-
-
- $ids = [];
-
- $ic = q("select *, item.id as item_id from iconfig left join item on iconfig.iid = item.id
- where uid = %d and cat = 'nwikipage' and k = 'pagetitle' and v = '%s'",
- intval($channel_id),
- dbesc($pageUrlName)
- );
-
- if ($ic) {
- foreach ($ic as $c) {
- set_iconfig($c['item_id'], 'nwikipage', 'pagetitle', $pageNewName);
- $ids[] = $c['item_id'];
- }
-
- $str_ids = implode(',', $ids);
- q("update item set title = '%s' where id in ($str_ids)",
- dbesc($pageNewName)
- );
-
- $page = [
- 'rawName' => $pageNewName,
- 'htmlName' => escape_tags($pageNewName),
- //'urlName' => urlencode(escape_tags($pageNewName))
- 'urlName' => NativeWiki::name_encode($pageNewName)
- ];
-
- return ['success' => true, 'page' => $page];
- }
-
- return ['success' => false, 'message' => t('Page not found')];
-
- }
-
-
- static public function get_page_content($arr) {
-
- $resource_id = ((array_key_exists('resource_id', $arr)) ? $arr['resource_id'] : '');
- $observer_hash = ((array_key_exists('observer_hash', $arr)) ? $arr['observer_hash'] : '');
- $channel_id = ((array_key_exists('channel_id', $arr)) ? intval($arr['channel_id']) : 0);
-
- $w = NativeWiki::get_wiki($channel_id, $observer_hash, $resource_id);
- if (!$w['wiki']) {
- return ['content' => null, 'message' => 'Error reading wiki', 'success' => false];
- }
-
- $item = self::load_page($arr);
-
- if ($item) {
- $content = $item['body'];
-
- return [
- 'content' => $content,
- 'mimeType' => $w['mimeType'],
- 'pageMimeType' => $item['mimetype'],
- 'message' => '',
- 'success' => true
- ];
- }
-
- return ['content' => null, 'message' => t('Error reading page content'), 'success' => false];
-
- }
-
-
- static public function page_history($arr) {
-
- $resource_id = ((array_key_exists('resource_id', $arr)) ? $arr['resource_id'] : '');
- $observer_hash = ((array_key_exists('observer_hash', $arr)) ? $arr['observer_hash'] : '');
- $channel_id = ((array_key_exists('channel_id', $arr)) ? $arr['channel_id'] : 0);
-
- $w = NativeWiki::get_wiki($channel_id, $observer_hash, $resource_id);
- if (!$w['wiki']) {
- return ['history' => null, 'message' => 'Error reading wiki', 'success' => false];
- }
-
- $items = self::load_page_history($arr);
-
- $history = [];
-
- if ($items) {
- $processed = 0;
- foreach ($items as $item) {
- if ($processed > 1000)
- break;
- $processed++;
- $history[] = [
- 'revision' => $item['revision'],
- 'date' => datetime_convert('UTC', date_default_timezone_get(), $item['edited']),
- 'name' => $item['author']['xchan_name'],
- 'title' => get_iconfig($item, 'nwikipage', 'commit_msg')
- ];
-
- }
-
- return ['success' => true, 'history' => $history];
- }
-
- return ['success' => false];
-
- }
-
-
- static public function load_page($arr) {
-
- $pageUrlName = ((array_key_exists('pageUrlName', $arr)) ? $arr['pageUrlName'] : '');
- $resource_id = ((array_key_exists('resource_id', $arr)) ? $arr['resource_id'] : '');
- $observer_hash = ((array_key_exists('observer_hash', $arr)) ? $arr['observer_hash'] : '');
- $channel_id = ((array_key_exists('channel_id', $arr)) ? $arr['channel_id'] : 0);
- $revision = ((array_key_exists('revision', $arr)) ? $arr['revision'] : (-1));
-
- $w = NativeWiki::get_wiki($channel_id, $observer_hash, $resource_id);
-
- if (!$w['wiki']) {
- return ['content' => null, 'message' => 'Error reading wiki', 'success' => false];
- }
-
- $ids = '';
-
- $ic = q("select * from iconfig left join item on iconfig.iid = item.id where uid = %d and cat = 'nwikipage' and k = 'pagetitle' and v = '%s'",
- intval($channel_id),
- dbesc($pageUrlName)
- );
-
- if ($ic) {
- foreach ($ic as $c) {
- if ($ids)
- $ids .= ',';
- $ids .= intval($c['iid']);
- }
- }
-
- $sql_extra = item_permissions_sql($channel_id, $observer_hash);
-
- if ($revision == (-1))
- $sql_extra .= " order by revision desc ";
- elseif ($revision)
- $sql_extra .= " and revision = " . intval($revision) . " ";
-
- $r = null;
-
-
- if ($ids) {
- $r = q("select * from item where resource_type = 'nwikipage' and resource_id = '%s' and uid = %d and id in ( $ids ) $sql_extra limit 1",
- dbesc($resource_id),
- intval($channel_id)
- );
-
- if ($r) {
- $items = fetch_post_tags($r, true);
- return $items[0];
- }
- }
-
- return null;
- }
-
-
- static public function load_page_history($arr) {
-
- $pageUrlName = ((array_key_exists('pageUrlName', $arr)) ? $arr['pageUrlName'] : '');
- $resource_id = ((array_key_exists('resource_id', $arr)) ? $arr['resource_id'] : '');
- $observer_hash = ((array_key_exists('observer_hash', $arr)) ? $arr['observer_hash'] : '');
- $channel_id = ((array_key_exists('channel_id', $arr)) ? $arr['channel_id'] : 0);
-
- $w = NativeWiki::get_wiki($channel_id, $observer_hash, $resource_id);
- if (!$w['wiki']) {
- return ['content' => null, 'message' => 'Error reading wiki', 'success' => false];
- }
-
- $ids = '';
-
- $ic = q("select * from iconfig left join item on iconfig.iid = item.id where uid = %d and cat = 'nwikipage' and k = 'pagetitle' and v = '%s'",
- intval($channel_id),
- dbesc($pageUrlName)
- );
-
- if ($ic) {
- foreach ($ic as $c) {
- if ($ids)
- $ids .= ',';
- $ids .= intval($c['iid']);
- }
- }
-
- $sql_extra = item_permissions_sql($channel_id, $observer_hash);
-
- $sql_extra .= " order by revision desc ";
-
- $r = null;
- if ($ids) {
- $r = q("select * from item where resource_type = 'nwikipage' and resource_id = '%s' and uid = %d and id in ( $ids ) and item_deleted = 0 $sql_extra",
- dbesc($resource_id),
- intval($channel_id)
- );
- if ($r) {
- xchan_query($r);
- $items = fetch_post_tags($r, true);
- return $items;
- }
- }
-
- return null;
- }
-
-
- static public function save_page($arr) {
- $pageUrlName = ((array_key_exists('pageUrlName', $arr)) ? $arr['pageUrlName'] : '');
- $content = ((array_key_exists('content', $arr)) ? $arr['content'] : '');
- $resource_id = ((array_key_exists('resource_id', $arr)) ? $arr['resource_id'] : '');
- $observer_hash = ((array_key_exists('observer_hash', $arr)) ? $arr['observer_hash'] : '');
- $channel_id = ((array_key_exists('channel_id', $arr)) ? $arr['channel_id'] : 0);
-
- $w = NativeWiki::get_wiki($channel_id, $observer_hash, $resource_id);
-
- if (!$w['wiki']) {
- return ['message' => t('Error reading wiki'), 'success' => false];
- }
-
-
- // fetch the most recently saved revision.
-
- $item = self::load_page($arr);
-
- if (!$item) {
- return ['message' => t('Page not found'), 'success' => false];
- }
-
- $mimetype = $item['mimetype'];
-
- // change just the fields we need to change to create a revision;
-
- unset($item['id']);
- unset($item['author']);
- $item['parent'] = 0;
- $item['body'] = $content;
- $item['author_xchan'] = $observer_hash;
- $item['revision'] = (($arr['revision']) ? intval($arr['revision']) + 1 : intval($item['revision']) + 1);
- $item['edited'] = datetime_convert();
- $item['mimetype'] = $mimetype;
-
- if ($item['iconfig'] && is_array($item['iconfig']) && count($item['iconfig'])) {
- for ($x = 0; $x < count($item['iconfig']); $x++) {
- unset($item['iconfig'][$x]['id']);
- unset($item['iconfig'][$x]['iid']);
- }
- }
-
- $ret = item_store($item, false, false);
-
- if ($ret['item_id'])
- return ['message' => '', 'item_id' => $ret['item_id'], 'filename' => $pageUrlName, 'success' => true];
- else
- return ['message' => t('Page update failed.'), 'success' => false];
- }
-
-
- static public function delete_page($arr) {
-
- $pageUrlName = (array_key_exists('pageUrlName', $arr) ? $arr['pageUrlName'] : '');
- $resource_id = (array_key_exists('resource_id', $arr) ? $arr['resource_id'] : '');
- $observer_hash = (array_key_exists('observer_hash', $arr) ? $arr['observer_hash'] : '');
- $channel_id = (array_key_exists('channel_id', $arr) ? $arr['channel_id'] : 0);
-
- $w = NativeWiki::get_wiki($channel_id, $observer_hash, $resource_id);
- if (!$w['wiki']) {
- return ['success' => false, 'message' => t('Error reading wiki')];
- }
-
- $ids = [];
-
- $ic = q("select * from iconfig left join item on iconfig.iid = item.id
- where uid = %d and cat = 'nwikipage' and k = 'pagetitle' and v = '%s'",
- intval($channel_id),
- dbesc($pageUrlName)
- );
-
- if ($ic) {
- foreach ($ic as $c) {
- $ids[] = intval($c['iid']);
- }
- }
-
- if ($ids) {
- drop_items($ids, true, DROPITEM_PHASE1);
- return ['success' => true];
- }
-
- return ['success' => false, 'message' => t('Nothing deleted')];
- }
-
-
- static public function revert_page($arr) {
-
- $resource_id = ((array_key_exists('resource_id', $arr)) ? $arr['resource_id'] : '');
- $commitHash = ((array_key_exists('commitHash', $arr)) ? $arr['commitHash'] : null);
- $observer_hash = ((array_key_exists('observer_hash', $arr)) ? $arr['observer_hash'] : '');
- $channel_id = ((array_key_exists('channel_id', $arr)) ? $arr['channel_id'] : 0);
-
- if (!$commitHash) {
- return ['message' => 'No commit was provided', 'success' => false];
- }
-
- $w = NativeWiki::get_wiki($channel_id, $observer_hash, $resource_id);
- if (!$w['wiki']) {
- return ['message' => 'Error reading wiki', 'success' => false];
- }
-
- $x = $arr;
-
- if (intval($commitHash) > 0) {
- unset($x['commitHash']);
- $x['revision'] = intval($commitHash) - 1;
- $loaded = self::load_page($x);
-
- if ($loaded) {
- $content = $loaded['body'];
- return ['content' => $content, 'success' => true];
- }
- return ['success' => false];
- }
- }
-
-
- static public function compare_page($arr) {
-
- $resource_id = ((array_key_exists('resource_id', $arr)) ? $arr['resource_id'] : '');
- $compareCommit = ((array_key_exists('compareCommit', $arr)) ? $arr['compareCommit'] : 0);
- $observer_hash = ((array_key_exists('observer_hash', $arr)) ? $arr['observer_hash'] : '');
- $channel_id = ((array_key_exists('channel_id', $arr)) ? $arr['channel_id'] : 0);
-
- $w = NativeWiki::get_wiki($channel_id, $observer_hash, $resource_id);
-
- if (!$w['wiki']) {
- return ['message' => t('Error reading wiki'), 'success' => false];
- }
-
- $x = $arr;
- $x['revision'] = (-1);
-
- $currpage = self::load_page($x);
- if ($currpage)
- $currentContent = $currpage['body'];
-
- $x['revision'] = $compareCommit;
- $comppage = self::load_page($x);
- if ($comppage)
- $compareContent = $comppage['body'];
-
- if ($currpage && $comppage) {
- require_once('library/class.Diff.php');
- $diff = \Diff::toTable(\Diff::compare($currentContent, $compareContent));
-
- return ['success' => true, 'diff' => $diff];
- }
- return ['success' => false, 'message' => t('Compare: object not found.')];
-
- }
-
-
- static public function commit($arr) {
-
- $commit_msg = ((array_key_exists('commit_msg', $arr)) ? $arr['commit_msg'] : t('Page updated'));
- $observer_hash = ((array_key_exists('observer_hash', $arr)) ? $arr['observer_hash'] : '');
- $channel_id = ((array_key_exists('channel_id', $arr)) ? $arr['channel_id'] : 0);
-
- if (array_key_exists('resource_id', $arr)) {
- $resource_id = $arr['resource_id'];
- }
- else {
- return ['message' => t('Wiki resource_id required for git commit'), 'success' => false];
- }
-
- $w = NativeWiki::get_wiki($channel_id, $observer_hash, $resource_id);
- if (!$w['wiki']) {
- return ['message' => t('Error reading wiki'), 'success' => false];
- }
-
-
- $page = self::load_page($arr);
-
- if ($page) {
- set_iconfig($page['id'], 'nwikipage', 'commit_msg', escape_tags($commit_msg), true);
- return ['success' => true, 'item_id' => $page['id'], 'page' => $page];
- }
-
- return ['success' => false, 'message' => t('Page not found.')];
-
- }
-
- static public function convert_links($s, $wikiURL) {
-
- if (strpos($s, '[[') !== false) {
- preg_match_all("/\[\[(.*?)\]\]/", $s, $match);
- $pages = $pageURLs = [];
- foreach ($match[1] as $m) {
- // TODO: Why do we need to double urlencode for this to work?
- //$pageURLs[] = urlencode(urlencode(escape_tags($m)));
- $titleUri = explode('|', $m);
- $page = $titleUri[0] ?? '';
- $title = $titleUri[1] ?? $page;
- $pageURLs[] = NativeWiki::name_encode(escape_tags($page));
- $pages[] = $title;
- }
- $idx = 0;
- while (strpos($s, '[[') !== false) {
- $replace = '<a href="' . $wikiURL . '/' . $pageURLs[$idx] . '">' . $pages[$idx] . '</a>';
- $s = preg_replace("/\[\[(.*?)\]\]/", $replace, $s, 1);
- $idx++;
- }
- }
- return $s;
- }
-
- static public function render_page_history($arr) {
-
- $pageUrlName = ((array_key_exists('pageUrlName', $arr)) ? $arr['pageUrlName'] : '');
- $resource_id = ((array_key_exists('resource_id', $arr)) ? $arr['resource_id'] : '');
-
- $pageHistory = self::page_history([
- 'channel_id' => App::$profile_uid,
- 'observer_hash' => get_observer_hash(),
- 'resource_id' => $resource_id,
- 'pageUrlName' => $pageUrlName
- ]);
-
- return replace_macros(get_markup_template('nwiki_page_history.tpl'), [
- '$pageHistory' => $pageHistory['history'],
- '$permsWrite' => $arr['permsWrite'],
- '$name_lbl' => t('Name'),
- '$msg_label' => t('Message', 'wiki_history'),
- '$date_lbl' => t('Date'),
- '$revert_btn' => t('Revert'),
- '$compare_btn' => t('Compare')
- ]);
-
- }
-
-
- /**
- * Replace the instances of the string [toc] with a list element that will be populated by
- * a table of contents by the JavaScript library
- * @param string $s
- * @return string
- */
- static public function generate_toc($s) {
- if (strpos($s, '[toc]') !== false) {
- //$toc_md = wiki_toc($s); // Generate Markdown-formatted list prior to HTML render
- $toc_md = '<ul id="wiki-toc"></ul>'; // use the available jQuery plugin http://ndabas.github.io/toc/
- $s = preg_replace("/\[toc\]/", $toc_md, $s, -1);
- }
- return $s;
- }
-
-
- /**
- * Converts a select set of bbcode tags. Much of the code is copied from include/bbcode.php
- * @param string $s
- * @return string
- */
- static public function bbcode($s) {
-
- $s = str_replace(['[baseurl]', '[sitename]'], [z_root(), get_config('system', 'sitename')], $s);
-
- $s = preg_replace_callback("/\[observer\.language\=(.*?)\](.*?)\[\/observer\]/ism", 'oblanguage_callback', $s);
-
- $s = preg_replace_callback("/\[observer\.language\!\=(.*?)\](.*?)\[\/observer\]/ism", 'oblanguage_necallback', $s);
-
-
- $observer = App::get_observer();
- if ($observer) {
- $s1 = '<span class="bb_observer" title="' . t('Different viewers will see this text differently') . '">';
- $s2 = '</span>';
- $obsBaseURL = $observer['xchan_connurl'];
- $obsBaseURL = preg_replace("/\/poco\/.*$/", '', $obsBaseURL);
- $s = str_replace('[observer.baseurl]', $obsBaseURL, $s);
- $s = str_replace('[observer.url]', $observer['xchan_url'], $s);
- $s = str_replace('[observer.name]', $s1 . $observer['xchan_name'] . $s2, $s);
- $s = str_replace('[observer.address]', $s1 . $observer['xchan_addr'] . $s2, $s);
- $s = str_replace('[observer.webname]', substr($observer['xchan_addr'], 0, strpos($observer['xchan_addr'], '@')), $s);
- $s = str_replace('[observer.photo]', '', $s);
- }
- else {
- $s = str_replace('[observer.baseurl]', '', $s);
- $s = str_replace('[observer.url]', '', $s);
- $s = str_replace('[observer.name]', '', $s);
- $s = str_replace('[observer.address]', '', $s);
- $s = str_replace('[observer.webname]', '', $s);
- $s = str_replace('[observer.photo]', '', $s);
- }
-
- return $s;
- }
-
-
- static public function get_file_ext($arr) {
-
- if ($arr['mimetype'] === 'text/bbcode')
- return '.bb';
- elseif ($arr['mimetype'] === 'text/markdown')
- return '.md';
- elseif ($arr['mimetype'] === 'text/plain')
- return '.txt';
-
- }
-
- // This function is derived from
- // http://stackoverflow.com/questions/32068537/generate-table-of-contents-from-markdown-in-php
- static public function toc($content) {
- // ensure using only "\n" as line-break
- $source = str_replace(["\r\n", "\r"], "\n", $content);
-
- // look for markdown TOC items
- preg_match_all(
- '/^(?:=|-|#).*$/m',
- $source,
- $matches,
- PREG_PATTERN_ORDER | PREG_OFFSET_CAPTURE
- );
-
- // preprocess: iterate matched lines to create an array of items
- // where each item is an array(level, text)
- $file_size = strlen($source);
- foreach ($matches[0] as $item) {
- $found_mark = substr($item[0], 0, 1);
- if ($found_mark == '#') {
- // text is the found item
- $item_text = $item[0];
- $item_level = strrpos($item_text, '#') + 1;
- $item_text = substr($item_text, $item_level);
- }
- else {
- // text is the previous line (empty if <hr>)
- $item_offset = $item[1];
- $prev_line_offset = strrpos($source, "\n", -($file_size - $item_offset + 2));
- $item_text =
- substr($source, $prev_line_offset, $item_offset - $prev_line_offset - 1);
- $item_text = trim($item_text);
- $item_level = $found_mark == '=' ? 1 : 2;
- }
- if (!trim($item_text) or strpos($item_text, '|') !== FALSE) {
- // item is an horizontal separator or a table header, don't mind
- continue;
- }
- $raw_toc[] = ['level' => $item_level, 'text' => trim($item_text)];
- }
- $o = '';
- foreach ($raw_toc as $t) {
- $level = intval($t['level']);
- $text = $t['text'];
- switch ($level) {
- case 1:
- $li = '* ';
- break;
- case 2:
- $li = ' * ';
- break;
- case 3:
- $li = ' * ';
- break;
- case 4:
- $li = ' * ';
- break;
- default:
- $li = '* ';
- break;
- }
- $o .= $li . $text . "\n";
- }
- return $o;
- }
-
-}
diff --git a/Zotlabs/Lib/Queue.php b/Zotlabs/Lib/Queue.php
index e03816f05..246b42667 100644
--- a/Zotlabs/Lib/Queue.php
+++ b/Zotlabs/Lib/Queue.php
@@ -202,7 +202,7 @@ class Queue {
if($channel && $base) {
$h = q("SELECT hubloc_sitekey, site_crypto FROM hubloc LEFT JOIN site ON hubloc_url = site_url
- WHERE site_url = '%s' AND hubloc_network = 'zot6' ORDER BY hubloc_id DESC LIMIT 1",
+ WHERE site_url = '%s' AND hubloc_network = 'zot6' AND hubloc_deleted = 0 ORDER BY hubloc_primary DESC, hubloc_id DESC LIMIT 1",
dbesc($base)
);
if($h) {
diff --git a/Zotlabs/Lib/ThreadItem.php b/Zotlabs/Lib/ThreadItem.php
index 8d20935a1..a02c1415e 100644
--- a/Zotlabs/Lib/ThreadItem.php
+++ b/Zotlabs/Lib/ThreadItem.php
@@ -162,24 +162,11 @@ class ThreadItem {
$mode = $conv->get_mode();
- switch($item['item_type']) {
- case ITEM_TYPE_CARD:
- $edlink = 'card_edit';
- break;
- case ITEM_TYPE_ARTICLE:
- $edlink = 'article_edit';
- break;
- default:
- $edlink = 'editpost';
- break;
- }
-
if(local_channel() && $observer['xchan_hash'] === $item['author_xchan'])
- $edpost = array(z_root() . '/' . $edlink . '/' . $item['id'], t('Edit'));
+ $edpost = array(z_root() . '/editpost/' . $item['id'], t('Edit'));
else
$edpost = false;
-
if($observer && $observer['xchan_hash']
&& ($observer['xchan_hash'] == $this->get_data_value('author_xchan')
|| $observer['xchan_hash'] == $this->get_data_value('owner_xchan')
@@ -297,7 +284,7 @@ class ThreadItem {
if($this->is_toplevel()) {
// FIXME check this permission
- if(($conv->get_profile_owner() == local_channel()) && (! array_key_exists('real_uid',$item))) {
+ if($conv->get_profile_owner() === local_channel() || intval($item['item_private']) === 0) {
$star = array(
'toggle' => t("Toggle Star Status"),
diff --git a/Zotlabs/Lib/ThreadStream.php b/Zotlabs/Lib/ThreadStream.php
index 7fe8fcc2e..2ad24a690 100644
--- a/Zotlabs/Lib/ThreadStream.php
+++ b/Zotlabs/Lib/ThreadStream.php
@@ -69,12 +69,12 @@ class ThreadStream {
case 'cards':
$this->profile_owner = \App::$profile['profile_uid'];
$this->writable = perm_is_allowed($this->profile_owner,$ob_hash,'post_comments');
- $this->reload = $_SESSION['return_url'];
+ //$this->reload = $_SESSION['return_url'];
break;
case 'articles':
$this->profile_owner = \App::$profile['profile_uid'];
$this->writable = perm_is_allowed($this->profile_owner,$ob_hash,'post_comments');
- $this->reload = $_SESSION['return_url'];
+ //$this->reload = $_SESSION['return_url'];
break;
case 'display':
// in this mode we set profile_owner after initialisation (from conversation()) and then
diff --git a/Zotlabs/Module/Article_edit.php b/Zotlabs/Module/Article_edit.php
deleted file mode 100644
index 97c87f2ba..000000000
--- a/Zotlabs/Module/Article_edit.php
+++ /dev/null
@@ -1,138 +0,0 @@
-<?php
-namespace Zotlabs\Module;
-
-require_once('include/channel.php');
-require_once('include/acl_selectors.php');
-require_once('include/conversation.php');
-
-class Article_edit extends \Zotlabs\Web\Controller {
-
-
- function get() {
-
- // Figure out which post we're editing
- $post_id = ((argc() > 1) ? intval(argv(1)) : 0);
-
- if(! $post_id) {
- notice( t('Item not found') . EOL);
- return;
- }
-
- $itm = q("SELECT * FROM item WHERE id = %d and item_type = %d LIMIT 1",
- intval($post_id),
- intval(ITEM_TYPE_ARTICLE)
- );
- if($itm) {
- $item_id = q("select * from iconfig where cat = 'system' and k = 'ARTICLE' and iid = %d limit 1",
- intval($itm[0]['id'])
- );
- if($item_id)
- $card_title = $item_id[0]['v'];
- }
- else {
- notice( t('Item not found') . EOL);
- return;
- }
-
- $owner = $itm[0]['uid'];
- $uid = local_channel();
-
- $observer = \App::get_observer();
-
- $channel = channelx_by_n($owner);
- if(! $channel) {
- notice( t('Channel not found.') . EOL);
- return;
- }
-
- $ob_hash = (($observer) ? $observer['xchan_hash'] : '');
-
- if(! perm_is_allowed($owner,$ob_hash,'write_pages')) {
- notice( t('Permission denied.') . EOL);
- return;
- }
-
- $is_owner = (($uid && $uid == $owner) ? true : false);
-
- $o = '';
-
-
-
- $category = '';
- $catsenabled = ((feature_enabled($owner,'categories')) ? 'categories' : '');
-
- if ($catsenabled){
- $itm = fetch_post_tags($itm);
-
- $cats = get_terms_oftype($itm[0]['term'], TERM_CATEGORY);
-
- foreach ($cats as $cat) {
- if (strlen($category))
- $category .= ', ';
- $category .= $cat['term'];
- }
- }
-
- if($itm[0]['attach']) {
- $j = json_decode($itm[0]['attach'],true);
- if($j) {
- foreach($j as $jj) {
- $itm[0]['body'] .= "\n" . '[attachment]' . basename($jj['href']) . ',' . $jj['revision'] . '[/attachment]' . "\n";
- }
- }
- }
-
-
- $mimetype = $itm[0]['mimetype'];
-
- $content = $itm[0]['body'];
-
- $rp = 'articles/' . $channel['channel_address'];
-
- $x = array(
- 'nickname' => $channel['channel_address'],
- 'bbco_autocomplete'=> 'bbcode',
- 'return_path' => $rp,
- 'webpage' => ITEM_TYPE_ARTICLE,
- 'button' => t('Edit'),
- 'writefiles' => perm_is_allowed($owner, get_observer_hash(), 'write_pages'),
- 'weblink' => t('Insert web link'),
- 'hide_voting' => false,
- 'hide_future' => false,
- 'hide_location' => false,
- 'hide_expire' => false,
- 'showacl' => true,
- 'acl' => populate_acl($itm[0],false,\Zotlabs\Lib\PermissionDescription::fromGlobalPermission('view_pages')),
- 'permissions' => $itm[0],
- 'lockstate' => (($itm[0]['allow_cid'] || $itm[0]['allow_gid'] || $itm[0]['deny_cid'] || $itm[0]['deny_gid']) ? 'lock' : 'unlock'),
- 'ptyp' => $itm[0]['type'],
- 'mimeselect' => false,
- 'mimetype' => $itm[0]['mimetype'],
- 'body' => undo_post_tagging($content),
- 'post_id' => $post_id,
- 'visitor' => true,
- 'title' => htmlspecialchars($itm[0]['title'],ENT_COMPAT,'UTF-8'),
- 'summary' => htmlspecialchars($itm[0]['summary'],ENT_COMPAT,'UTF-8'),
- 'placeholdertitle' => t('Title (optional)'),
- 'pagetitle' => $card_title,
- 'profile_uid' => (intval($channel['channel_id'])),
- 'catsenabled' => $catsenabled,
- 'category' => $category,
- 'bbcode' => (($mimetype == 'text/bbcode') ? true : false)
- );
-
- $editor = status_editor($a, $x, false, 'Article_edit');
-
- $o .= replace_macros(get_markup_template('edpost_head.tpl'), array(
- '$title' => t('Edit Article'),
- '$delete' => ((($itm[0]['author_xchan'] === $ob_hash) || ($itm[0]['owner_xchan'] === $ob_hash)) ? t('Delete') : false),
- '$id' => $itm[0]['id'],
- '$cancel' => t('Cancel'),
- '$editor' => $editor
- ));
-
- return $o;
-
- }
-
-}
diff --git a/Zotlabs/Module/Articles.php b/Zotlabs/Module/Articles.php
deleted file mode 100644
index 0db098a31..000000000
--- a/Zotlabs/Module/Articles.php
+++ /dev/null
@@ -1,232 +0,0 @@
-<?php
-namespace Zotlabs\Module;
-
-use App;
-use Zotlabs\Lib\Apps;
-use Zotlabs\Web\Controller;
-use Zotlabs\Lib\PermissionDescription;
-
-require_once('include/channel.php');
-require_once('include/conversation.php');
-require_once('include/acl_selectors.php');
-require_once('include/opengraph.php');
-
-
-class Articles extends Controller {
-
- function init() {
-
- if(argc() > 1)
- $which = argv(1);
-
- if(! $which) {
- if(local_channel()) {
- $channel = App::get_channel();
- if($channel && $channel['channel_address'])
- $which = $channel['channel_address'];
- } else {
- return;
- }
- }
-
- profile_load($which);
-
- }
-
- function get($update = 0, $load = false) {
-
- if(observer_prohibited(true)) {
- return login();
- }
-
- if(! App::$profile) {
- notice( t('Requested profile is not available.') . EOL );
- App::$error = 404;
- return;
- }
-
- if(! Apps::system_app_installed(App::$profile_uid, 'Articles')) {
- //Do not display any associated widgets at this point
- App::$pdl = '';
- $papp = Apps::get_papp('Articles');
- return Apps::app_render($papp, 'module');
- }
-
- nav_set_selected('Articles');
-
- head_add_link([
- 'rel' => 'alternate',
- 'type' => 'application/json+oembed',
- 'href' => z_root() . '/oep?f=&url=' . urlencode(z_root() . '/' . App::$query_string),
- 'title' => 'oembed'
- ]);
-
-
- $category = (($_REQUEST['cat']) ? escape_tags(trim($_REQUEST['cat'])) : '');
-
- if($category) {
- $sql_extra2 .= protect_sprintf(term_item_parent_query(App::$profile['profile_uid'],'item', $category, TERM_CATEGORY));
- }
-
- $datequery = ((x($_GET,'dend') && is_a_date_arg($_GET['dend'])) ? notags($_GET['dend']) : '');
- $datequery2 = ((x($_GET,'dbegin') && is_a_date_arg($_GET['dbegin'])) ? notags($_GET['dbegin']) : '');
-
- $which = argv(1);
-
- $selected_card = ((argc() > 2) ? argv(2) : '');
-
- $_SESSION['return_url'] = App::$query_string;
-
- $uid = local_channel();
- $owner = App::$profile_uid;
- $observer = App::get_observer();
-
- $ob_hash = (($observer) ? $observer['xchan_hash'] : '');
-
- if(! perm_is_allowed($owner,$ob_hash,'view_pages')) {
- notice( t('Permission denied.') . EOL);
- return;
- }
-
- $is_owner = ($uid && $uid == $owner);
-
- $channel = channelx_by_n($owner);
-
- if($channel) {
- $channel_acl = array(
- 'allow_cid' => $channel['channel_allow_cid'],
- 'allow_gid' => $channel['channel_allow_gid'],
- 'deny_cid' => $channel['channel_deny_cid'],
- 'deny_gid' => $channel['channel_deny_gid']
- );
- }
- else {
- $channel_acl = [ 'allow_cid' => '', 'allow_gid' => '', 'deny_cid' => '', 'deny_gid' => '' ];
- }
-
-
-
- if(perm_is_allowed($owner,$ob_hash,'write_pages')) {
-
- $x = [
- 'webpage' => ITEM_TYPE_ARTICLE,
- 'is_owner' => true,
- 'content_label' => t('Add Article'),
- 'button' => t('Save'),
- 'nickname' => $channel['channel_address'],
- 'lockstate' => (($channel['channel_allow_cid'] || $channel['channel_allow_gid']
- || $channel['channel_deny_cid'] || $channel['channel_deny_gid']) ? 'lock' : 'unlock'),
- 'acl' => (($is_owner) ? populate_acl($channel_acl, false,
- PermissionDescription::fromGlobalPermission('view_pages')) : ''),
- 'permissions' => $channel_acl,
- 'showacl' => (($is_owner) ? true : false),
- 'visitor' => true,
- 'hide_location' => false,
- 'hide_voting' => false,
- 'profile_uid' => intval($owner),
- 'mimetype' => 'text/bbcode',
- 'mimeselect' => false,
- 'layoutselect' => false,
- 'expanded' => false,
- 'novoting' => false,
- 'catsenabled' => feature_enabled($owner,'categories'),
- 'bbco_autocomplete' => 'bbcode',
- 'bbcode' => true
- ];
-
- if($_REQUEST['title'])
- $x['title'] = $_REQUEST['title'];
- if($_REQUEST['body'])
- $x['body'] = $_REQUEST['body'];
- $editor = status_editor($a,$x,false,'Articles');
-
- }
- else {
- $editor = '';
- }
-
- $itemspage = get_pconfig(local_channel(),'system','itemspage');
- App::set_pager_itemspage(((intval($itemspage)) ? $itemspage : 10));
- $pager_sql = sprintf(" LIMIT %d OFFSET %d ", intval(App::$pager['itemspage']), intval(App::$pager['start']));
-
-
- $sql_extra = item_permissions_sql($owner);
- $sql_item = '';
-
- if($selected_card) {
- $r = q("select * from iconfig where iconfig.cat = 'system' and iconfig.k = 'ARTICLE' and iconfig.v = '%s' limit 1",
- dbesc($selected_card)
- );
- if($r) {
- $sql_item = "and item.id = " . intval($r[0]['iid']) . " ";
- }
- }
- if($datequery) {
- $sql_extra2 .= protect_sprintf(sprintf(" AND item.created <= '%s' ", dbesc(datetime_convert(date_default_timezone_get(),'',$datequery))));
- $order = 'post';
- }
- if($datequery2) {
- $sql_extra2 .= protect_sprintf(sprintf(" AND item.created >= '%s' ", dbesc(datetime_convert(date_default_timezone_get(),'',$datequery2))));
- }
-
- if($datequery || $datequery2) {
- $sql_extra2 .= " and item.item_thread_top != 0 ";
- }
-
- $r = q("select * from item
- where item.uid = %d and item_type = %d
- $sql_extra $sql_extra2 $sql_item order by item.created desc $pager_sql",
- intval($owner),
- intval(ITEM_TYPE_ARTICLE)
- );
-
- $item_normal = " and item.item_hidden = 0 and item.item_type in (0,7) and item.item_deleted = 0
- and item.item_unpublished = 0 and item.item_delayed = 0 and item.item_pending_remove = 0
- and item.item_blocked = 0 ";
-
- if($r) {
-
- $pager_total = count($r);
-
- $parents_str = ids_to_querystr($r,'id');
-
- $r = q("SELECT item.*, item.id AS item_id
- FROM item
- WHERE item.uid = %d $item_normal
- AND item.parent IN ( %s )
- $sql_extra $sql_extra2 ",
- intval(App::$profile['profile_uid']),
- dbesc($parents_str)
- );
- if($r) {
- xchan_query($r);
- $items = fetch_post_tags($r, true);
- $items = conv_sort($items,'updated');
- }
- else
- $items = [];
- }
-
- // Add Opengraph markup
- opengraph_add_meta((! empty($items) ? $r[0] : []), $channel);
-
- $mode = 'articles';
-
- if(get_pconfig(local_channel(),'system','articles_list_mode') && (! $selected_card))
- $page_mode = 'pager_list';
- else
- $page_mode = 'traditional';
-
- $content = conversation($items,$mode,false,$page_mode);
-
- $o = replace_macros(get_markup_template('cards.tpl'), [
- '$title' => t('Articles'),
- '$editor' => $editor,
- '$content' => $content,
- '$pager' => alt_pager($pager_total)
- ]);
-
- return $o;
- }
-
-}
diff --git a/Zotlabs/Module/Card_edit.php b/Zotlabs/Module/Card_edit.php
deleted file mode 100644
index c57a0f043..000000000
--- a/Zotlabs/Module/Card_edit.php
+++ /dev/null
@@ -1,140 +0,0 @@
-<?php
-namespace Zotlabs\Module;
-
-require_once('include/channel.php');
-require_once('include/acl_selectors.php');
-require_once('include/conversation.php');
-
-class Card_edit extends \Zotlabs\Web\Controller {
-
-
- function get() {
-
- // Figure out which post we're editing
- $post_id = ((argc() > 1) ? intval(argv(1)) : 0);
-
- if(! $post_id) {
- notice( t('Item not found') . EOL);
- return;
- }
-
- $itm = q("SELECT * FROM item WHERE id = %d and item_type = %d LIMIT 1",
- intval($post_id),
- intval(ITEM_TYPE_CARD)
- );
- if($itm) {
- $item_id = q("select * from iconfig where cat = 'system' and k = 'CARD' and iid = %d limit 1",
- intval($itm[0]['id'])
- );
- if($item_id)
- $card_title = $item_id[0]['v'];
- }
- else {
- notice( t('Item not found') . EOL);
- return;
- }
-
- $owner = $itm[0]['uid'];
- $uid = local_channel();
-
- $observer = \App::get_observer();
-
- $channel = channelx_by_n($owner);
- if(! $channel) {
- notice( t('Channel not found.') . EOL);
- return;
- }
-
- $ob_hash = (($observer) ? $observer['xchan_hash'] : '');
-
- if(! perm_is_allowed($owner,$ob_hash,'write_pages')) {
- notice( t('Permission denied.') . EOL);
- return;
- }
-
- $is_owner = (($uid && $uid == $owner) ? true : false);
-
- $o = '';
-
-
-
- $category = '';
- $catsenabled = ((feature_enabled($owner,'categories')) ? 'categories' : '');
-
- if ($catsenabled){
- $itm = fetch_post_tags($itm);
-
- $cats = get_terms_oftype($itm[0]['term'], TERM_CATEGORY);
-
- foreach ($cats as $cat) {
- if (strlen($category))
- $category .= ', ';
- $category .= $cat['term'];
- }
- }
-
- if($itm[0]['attach']) {
- $j = json_decode($itm[0]['attach'],true);
- if($j) {
- foreach($j as $jj) {
- $itm[0]['body'] .= "\n" . '[attachment]' . basename($jj['href']) . ',' . $jj['revision'] . '[/attachment]' . "\n";
- }
- }
- }
-
-
- $mimetype = $itm[0]['mimetype'];
-
- $content = $itm[0]['body'];
-
-
-
- $rp = 'cards/' . $channel['channel_address'];
-
- $x = array(
- 'nickname' => $channel['channel_address'],
- 'bbco_autocomplete'=> 'bbcode',
- 'return_path' => $rp,
- 'webpage' => ITEM_TYPE_CARD,
- 'button' => t('Edit'),
- 'writefiles' => perm_is_allowed($owner, get_observer_hash(), 'write_pages'),
- 'weblink' => t('Insert web link'),
- 'hide_voting' => false,
- 'hide_future' => false,
- 'hide_location' => false,
- 'hide_expire' => false,
- 'showacl' => true,
- 'acl' => populate_acl($itm[0],false,\Zotlabs\Lib\PermissionDescription::fromGlobalPermission('view_pages')),
- 'permissions' => $itm[0],
- 'lockstate' => (($itm[0]['allow_cid'] || $itm[0]['allow_gid'] || $itm[0]['deny_cid'] || $itm[0]['deny_gid']) ? 'lock' : 'unlock'),
- 'ptyp' => $itm[0]['type'],
- 'mimeselect' => false,
- 'mimetype' => $itm[0]['mimetype'],
- 'body' => undo_post_tagging($content),
- 'post_id' => $post_id,
- 'visitor' => true,
- 'title' => htmlspecialchars($itm[0]['title'],ENT_COMPAT,'UTF-8'),
- 'summary' => htmlspecialchars($itm[0]['summary'],ENT_COMPAT,'UTF-8'),
- 'placeholdertitle' => t('Title (optional)'),
- 'pagetitle' => $card_title,
- 'profile_uid' => (intval($channel['channel_id'])),
- 'catsenabled' => $catsenabled,
- 'category' => $category,
- 'bbcode' => (($mimetype == 'text/bbcode') ? true : false)
- );
-
- $editor = status_editor($a, $x, false, 'Card_edit');
-
- $o .= replace_macros(get_markup_template('edpost_head.tpl'), array(
- '$title' => t('Edit Card'),
- '$delete' => ((($itm[0]['author_xchan'] === $ob_hash) || ($itm[0]['owner_xchan'] === $ob_hash)) ? t('Delete') : false),
- '$id' => $itm[0]['id'],
- '$cancel' => t('Cancel'),
- '$editor' => $editor
- ));
-
- return $o;
-
- }
-
-}
diff --git a/Zotlabs/Module/Cards.php b/Zotlabs/Module/Cards.php
deleted file mode 100644
index b71af6044..000000000
--- a/Zotlabs/Module/Cards.php
+++ /dev/null
@@ -1,214 +0,0 @@
-<?php
-namespace Zotlabs\Module;
-
-use App;
-use Zotlabs\Lib\Apps;
-use Zotlabs\Web\Controller;
-use Zotlabs\Lib\PermissionDescription;
-
-require_once('include/channel.php');
-require_once('include/conversation.php');
-require_once('include/acl_selectors.php');
-
-/**
- * @brief Provides the Cards module.
- *
- */
-class Cards extends Controller {
-
- public function init() {
-
- if(argc() > 1)
- $which = argv(1);
- else
- return;
-
- profile_load($which);
- }
-
- /**
- * {@inheritDoc}
- * @see \\Zotlabs\\Web\\Controller::get()
- *
- * @return string Parsed HTML from template 'cards.tpl'
- */
- public function get($update = 0, $load = false) {
-
- if(observer_prohibited(true)) {
- return login();
- }
-
- if(! App::$profile) {
- notice( t('Requested profile is not available.') . EOL );
- App::$error = 404;
- return;
- }
-
- if(! Apps::system_app_installed(App::$profile_uid, 'Cards')) {
- //Do not display any associated widgets at this point
- App::$pdl = '';
- $papp = Apps::get_papp('Cards');
- return Apps::app_render($papp, 'module');
- }
-
- nav_set_selected('Cards');
-
- head_add_link([
- 'rel' => 'alternate',
- 'type' => 'application/json+oembed',
- 'href' => z_root() . '/oep?f=&url=' . urlencode(z_root() . '/' . App::$query_string),
- 'title' => 'oembed'
- ]);
-
-
- $category = (($_REQUEST['cat']) ? escape_tags(trim($_REQUEST['cat'])) : '');
-
- if($category) {
- $sql_extra2 .= protect_sprintf(term_item_parent_query(App::$profile['profile_uid'], 'item', $category, TERM_CATEGORY));
- }
-
-
- $which = argv(1);
-
- $selected_card = ((argc() > 2) ? argv(2) : '');
-
- $_SESSION['return_url'] = App::$query_string;
-
- $uid = local_channel();
- $owner = App::$profile_uid;
- $observer = App::get_observer();
-
- $ob_hash = (($observer) ? $observer['xchan_hash'] : '');
-
- if(! perm_is_allowed($owner, $ob_hash, 'view_pages')) {
- notice( t('Permission denied.') . EOL);
- return;
- }
-
- $is_owner = ($uid && $uid == $owner);
-
- $channel = channelx_by_n($owner);
-
- if($channel) {
- $channel_acl = [
- 'allow_cid' => $channel['channel_allow_cid'],
- 'allow_gid' => $channel['channel_allow_gid'],
- 'deny_cid' => $channel['channel_deny_cid'],
- 'deny_gid' => $channel['channel_deny_gid']
- ];
- }
- else {
- $channel_acl = [ 'allow_cid' => '', 'allow_gid' => '', 'deny_cid' => '', 'deny_gid' => '' ];
- }
-
-
- if(perm_is_allowed($owner, $ob_hash, 'write_pages')) {
-
- $x = [
- 'webpage' => ITEM_TYPE_CARD,
- 'is_owner' => true,
- 'content_label' => t('Add Card'),
- 'button' => t('Save'),
- 'nickname' => $channel['channel_address'],
- 'lockstate' => (($channel['channel_allow_cid'] || $channel['channel_allow_gid']
- || $channel['channel_deny_cid'] || $channel['channel_deny_gid']) ? 'lock' : 'unlock'),
- 'acl' => (($is_owner) ? populate_acl($channel_acl, false,
- PermissionDescription::fromGlobalPermission('view_pages')) : ''),
- 'permissions' => $channel_acl,
- 'showacl' => (($is_owner) ? true : false),
- 'visitor' => true,
- 'hide_location' => false,
- 'hide_voting' => false,
- 'profile_uid' => intval($owner),
- 'mimetype' => 'text/bbcode',
- 'mimeselect' => false,
- 'layoutselect' => false,
- 'expanded' => false,
- 'novoting' => false,
- 'catsenabled' => feature_enabled($owner, 'categories'),
- 'bbco_autocomplete' => 'bbcode',
- 'bbcode' => true
- ];
-
- if($_REQUEST['title'])
- $x['title'] = $_REQUEST['title'];
- if($_REQUEST['body'])
- $x['body'] = $_REQUEST['body'];
-
- $editor = status_editor($a, $x, false, 'Cards');
- }
- else {
- $editor = '';
- }
-
-
- $itemspage = get_pconfig(local_channel(),'system','itemspage');
- App::set_pager_itemspage(((intval($itemspage)) ? $itemspage : 10));
- $pager_sql = sprintf(" LIMIT %d OFFSET %d ", intval(App::$pager['itemspage']), intval(App::$pager['start']));
-
-
- $sql_extra = item_permissions_sql($owner);
- $sql_item = '';
-
- if($selected_card) {
- $r = q("select * from iconfig where iconfig.cat = 'system' and iconfig.k = 'CARD' and iconfig.v = '%s' limit 1",
- dbesc($selected_card)
- );
- if($r) {
- $sql_item = "and item.id = " . intval($r[0]['iid']) . " ";
- }
- }
-
- $r = q("select * from item
- where uid = %d and item_type = %d
- $sql_extra $sql_item order by item.created desc $pager_sql",
- intval($owner),
- intval(ITEM_TYPE_CARD)
- );
-
- $item_normal = " and item.item_hidden = 0 and item.item_type in (0,6) and item.item_deleted = 0
- and item.item_unpublished = 0 and item.item_delayed = 0 and item.item_pending_remove = 0
- and item.item_blocked = 0 ";
-
- $items_result = [];
- if($r) {
-
- $pager_total = count($r);
-
- $parents_str = ids_to_querystr($r, 'id');
-
- $items = q("SELECT item.*, item.id AS item_id
- FROM item
- WHERE item.uid = %d $item_normal
- AND item.parent IN ( %s )
- $sql_extra $sql_extra2 ",
- intval(App::$profile['profile_uid']),
- dbesc($parents_str)
- );
- if($items) {
- xchan_query($items);
- $items = fetch_post_tags($items, true);
- $items_result = conv_sort($items, 'updated');
- }
- }
-
- $mode = 'cards';
-
- if(get_pconfig(local_channel(),'system','articles_list_mode') && (! $selected_card))
- $page_mode = 'pager_list';
- else
- $page_mode = 'traditional';
-
- $content = conversation($items_result, $mode, false, $page_mode);
-
- $o = replace_macros(get_markup_template('cards.tpl'), [
- '$title' => t('Cards'),
- '$editor' => $editor,
- '$content' => $content,
- '$pager' => alt_pager($pager_total)
- ]);
-
- return $o;
- }
-
-}
diff --git a/Zotlabs/Module/Display.php b/Zotlabs/Module/Display.php
index 02a79f854..0d29c3451 100644
--- a/Zotlabs/Module/Display.php
+++ b/Zotlabs/Module/Display.php
@@ -143,48 +143,8 @@ class Display extends \Zotlabs\Web\Controller {
return '';
}
}
- if($target_item['item_type'] == ITEM_TYPE_ARTICLE) {
- $x = q("select * from channel where channel_id = %d limit 1",
- intval($target_item['uid'])
- );
- $y = q("select * from iconfig left join item on iconfig.iid = item.id
- where item.uid = %d and iconfig.cat = 'system' and iconfig.k = 'ARTICLE' and item.id = %d limit 1",
- intval($target_item['uid']),
- intval($target_item['parent'])
- );
- if($x && $y) {
- goaway(z_root() . '/articles/' . $x[0]['channel_address'] . '/' . $y[0]['v']);
- }
- else {
- notice( t('Page not found.') . EOL);
- return '';
- }
- }
- if($target_item['item_type'] == ITEM_TYPE_CARD) {
- $x = q("select * from channel where channel_id = %d limit 1",
- intval($target_item['uid'])
- );
-
- $y = q("select * from iconfig left join item on iconfig.iid = item.id
- where item.uid = %d and iconfig.cat = 'system' and iconfig.k = 'CARD' and item.id = %d limit 1",
- intval($target_item['uid']),
- intval($target_item['parent'])
- );
-
- if($x && $y) {
- goaway(z_root() . '/cards/' . $x[0]['channel_address'] . '/' . $y[0]['v']);
- }
- else {
- notice( t('Page not found.') . EOL);
- return '';
- }
- }
- if ($target_item['item_type'] == ITEM_TYPE_CUSTOM) {
- call_hooks('item_custom_display',$target_item);
- notice( t('Page not found.') . EOL);
- return '';
- }
+ call_hooks('item_custom_display', $target_item);
$simple_update = '';
if($update && $_SESSION['loadtime'])
diff --git a/Zotlabs/Module/Item.php b/Zotlabs/Module/Item.php
index 574a90c1a..e1ba2b2f0 100644
--- a/Zotlabs/Module/Item.php
+++ b/Zotlabs/Module/Item.php
@@ -743,6 +743,8 @@ class Item extends Controller {
$webpage = $parent_item['item_type'];
}
+
+
if ((!$allow_empty) && (!strlen($body))) {
if ($preview)
killme();
@@ -807,7 +809,6 @@ class Item extends Controller {
$post_tags = [];
-
if ($mimetype === 'text/bbcode') {
require_once('include/text.php');
@@ -919,15 +920,7 @@ class Item extends Controller {
$cats = explode(',', $categories);
foreach ($cats as $cat) {
- if ($webpage == ITEM_TYPE_CARD) {
- $catlink = z_root() . '/cards/' . $channel['channel_address'] . '?f=&cat=' . urlencode(trim($cat));
- }
- elseif ($webpage == ITEM_TYPE_ARTICLE) {
- $catlink = z_root() . '/articles/' . $channel['channel_address'] . '?f=&cat=' . urlencode(trim($cat));
- }
- else {
- $catlink = $owner_xchan['xchan_url'] . '?f=&cat=' . urlencode(trim($cat));
- }
+ $catlink = $owner_xchan['xchan_url'] . '?f=&cat=' . urlencode(trim($cat));
$post_tags[] = [
'uid' => $profile_uid,
@@ -1040,7 +1033,7 @@ class Item extends Controller {
$parent_mid = $parent_item['mid'];
- // Fallback so that we alway have a thr_parent
+ // Fallback so that we always have a thr_parent
if (!$thr_parent)
$thr_parent = $mid;
@@ -1048,36 +1041,7 @@ class Item extends Controller {
$item_thread_top = ((!$parent) ? 1 : 0);
-
- // fix permalinks for cards
-
- if ($webpage == ITEM_TYPE_CARD) {
- $plink = z_root() . '/cards/' . $channel['channel_address'] . '/' . (($pagetitle) ? $pagetitle : $uuid);
- }
- if (($parent_item) && ($parent_item['item_type'] == ITEM_TYPE_CARD)) {
- $r = q("select v from iconfig where iconfig.cat = 'system' and iconfig.k = 'CARD' and iconfig.iid = %d limit 1",
- intval($parent_item['id'])
- );
- if ($r) {
- $plink = z_root() . '/cards/' . $channel['channel_address'] . '/' . $r[0]['v'];
- }
- }
-
- if ($webpage == ITEM_TYPE_ARTICLE) {
- $plink = z_root() . '/articles/' . $channel['channel_address'] . '/' . (($pagetitle) ? $pagetitle : $uuid);
- }
- if (($parent_item) && ($parent_item['item_type'] == ITEM_TYPE_ARTICLE)) {
- $r = q("select v from iconfig where iconfig.cat = 'system' and iconfig.k = 'ARTICLE' and iconfig.iid = %d limit 1",
- intval($parent_item['id'])
- );
- if ($r) {
- $plink = z_root() . '/articles/' . $channel['channel_address'] . '/' . $r[0]['v'];
- }
- }
-
if ((!$plink) && ($item_thread_top)) {
- // $plink = z_root() . '/channel/' . $channel['channel_address'] . '/?f=&mid=' . gen_link_id($mid);
- // $plink = substr($plink,0,190);
$plink = $mid;
}
diff --git a/Zotlabs/Module/Profile_photo.php b/Zotlabs/Module/Profile_photo.php
index 022efc2cd..a5e87bbe2 100644
--- a/Zotlabs/Module/Profile_photo.php
+++ b/Zotlabs/Module/Profile_photo.php
@@ -403,6 +403,10 @@ class Profile_photo extends Controller {
foreach ($r as $rr) {
if ($rr['is_default']) {
$default_profile_id = intval($rr['id']);
+
+ if (!$profile_id) {
+ $profile_id = $default_profile_id;
+ }
}
if ($profile_id === intval($rr['id'])) {
diff --git a/Zotlabs/Module/Search.php b/Zotlabs/Module/Search.php
index fdc251b07..efea7bbdd 100644
--- a/Zotlabs/Module/Search.php
+++ b/Zotlabs/Module/Search.php
@@ -177,49 +177,46 @@ class Search extends Controller {
}
- $item_normal = item_normal_search();
- $pub_sql = public_permissions_sql($observer_hash);
-
- require_once('include/channel.php');
-
- $sys = get_sys_channel();
-
if (($update) && ($load)) {
$itemspage = get_pconfig(local_channel(), 'system', 'itemspage');
App::set_pager_itemspage(((intval($itemspage)) ? $itemspage : 10));
$pager_sql = sprintf(" LIMIT %d OFFSET %d ", intval(App::$pager['itemspage']), intval(App::$pager['start']));
- // in case somebody turned off public access to sys channel content with permissions
+ $item_normal = item_normal_search();
+ $pub_sql = item_permissions_sql(0, $observer_hash);
- if (!perm_is_allowed($sys['channel_id'], $observer_hash, 'view_stream'))
- $sys['xchan_hash'] .= 'disabled';
+ $sys = get_sys_channel();
+
+ // in case somebody turned off public access to sys channel content using permissions
+ // make that content unsearchable by ensuring the owner uid can't match
+ $sys_id = perm_is_allowed($sys['channel_id'], $observer_hash, 'view_stream') ? $sys['channel_id'] : 0;
if ($load) {
$r = null;
if (local_channel()) {
- $r = q("SELECT mid, MAX(id) as item_id from item
- WHERE ((( item.allow_cid = '' AND item.allow_gid = '' AND item.deny_cid = '' AND item.deny_gid = '' AND item_private = 0 )
- OR ( item.uid = %d )) OR item.owner_xchan = '%s' )
+ $r = q("SELECT mid, MAX(id) AS item_id FROM item
+ WHERE (( item.allow_cid = '' AND item.allow_gid = '' AND item.deny_cid = '' AND item.deny_gid = '' AND item.item_private = 0 )
+ OR ( item.uid = %d ))
$item_normal
$sql_extra
- group by mid, created order by created desc $pager_sql ",
- intval(local_channel()),
- dbesc($sys['xchan_hash'])
+ GROUP BY mid, created ORDER BY created DESC $pager_sql ",
+ intval(local_channel())
);
}
- if ($r === null) {
- $r = q("SELECT mid, MAX(id) as item_id from item
- WHERE (((( item.allow_cid = '' AND item.allow_gid = '' AND item.deny_cid = ''
- AND item.deny_gid = '' AND item_private = 0 )
- and owner_xchan in ( " . stream_perms_xchans(($observer) ? (PERMS_NETWORK | PERMS_PUBLIC) : PERMS_PUBLIC) . " ))
- $pub_sql ) OR owner_xchan = '%s')
+
+ if (!$r) {
+ $r = q("SELECT mid, MAX(id) AS item_id FROM item
+ WHERE (((( item.allow_cid = '' AND item.allow_gid = '' AND item.deny_cid = '' AND item.deny_gid = '' AND item.item_private = 0 )
+ AND item.uid IN ( " . stream_perms_api_uids(($observer_hash) ? (PERMS_NETWORK | PERMS_PUBLIC) : PERMS_PUBLIC) . " ))
+ $pub_sql ) OR item.uid = %d)
$item_normal
$sql_extra
- group by mid, created order by created desc $pager_sql",
- dbesc($sys['xchan_hash'])
+ GROUP BY mid, created ORDER BY created DESC $pager_sql",
+ intval($sys_id)
);
}
+
if ($r) {
$str = ids_to_querystr($r, 'item_id');
$r = dbq("select *, id as item_id from item where id in ( " . $str . ") order by created desc");
@@ -232,13 +229,12 @@ class Search extends Controller {
}
+ $items = [];
+
if ($r) {
xchan_query($r);
$items = fetch_post_tags($r, true);
}
- else {
- $items = [];
- }
if ($format === 'json') {
$result = [];
diff --git a/Zotlabs/Module/Sse_bs.php b/Zotlabs/Module/Sse_bs.php
index 3a13b0a6f..ad9be0938 100644
--- a/Zotlabs/Module/Sse_bs.php
+++ b/Zotlabs/Module/Sse_bs.php
@@ -160,8 +160,12 @@ class Sse_bs extends Controller {
$offset = self::$offset;
$sql_extra = '';
- if(! (self::$vnotify & VNOTIFY_LIKE))
+ if (!(self::$vnotify & VNOTIFY_LIKE)) {
$sql_extra = " AND verb NOT IN ('" . dbesc(ACTIVITY_LIKE) . "', '" . dbesc(ACTIVITY_DISLIKE) . "') ";
+ }
+ elseif (!feature_enabled(self::$uid, 'dislike')) {
+ $sql_extra = " AND verb NOT IN ('" . dbesc(ACTIVITY_DISLIKE) . "') ";
+ }
$sql_extra2 = '';
if(self::$xchans)
@@ -236,8 +240,12 @@ class Sse_bs extends Controller {
$offset = self::$offset;
$sql_extra = '';
- if(! (self::$vnotify & VNOTIFY_LIKE))
+ if (!(self::$vnotify & VNOTIFY_LIKE)) {
$sql_extra = " AND verb NOT IN ('" . dbesc(ACTIVITY_LIKE) . "', '" . dbesc(ACTIVITY_DISLIKE) . "') ";
+ }
+ elseif (!feature_enabled(self::$uid, 'dislike')) {
+ $sql_extra = " AND verb NOT IN ('" . dbesc(ACTIVITY_DISLIKE) . "') ";
+ }
$sql_extra2 = '';
if(self::$xchans)
@@ -311,8 +319,12 @@ class Sse_bs extends Controller {
$offset = self::$offset;
$sql_extra = '';
- if(! (self::$vnotify & VNOTIFY_LIKE))
+ if (!(self::$vnotify & VNOTIFY_LIKE)) {
$sql_extra = " AND verb NOT IN ('" . dbesc(ACTIVITY_LIKE) . "', '" . dbesc(ACTIVITY_DISLIKE) . "') ";
+ }
+ elseif (!feature_enabled(self::$uid, 'dislike')) {
+ $sql_extra = " AND verb NOT IN ('" . dbesc(ACTIVITY_DISLIKE) . "') ";
+ }
$sql_extra2 = '';
if(self::$xchans)
@@ -398,8 +410,12 @@ class Sse_bs extends Controller {
$sys = get_sys_channel();
$sql_extra = '';
- if(! (self::$vnotify & VNOTIFY_LIKE))
+ if (!(self::$vnotify & VNOTIFY_LIKE)) {
$sql_extra = " AND verb NOT IN ('" . dbesc(ACTIVITY_LIKE) . "', '" . dbesc(ACTIVITY_DISLIKE) . "') ";
+ }
+ elseif (!feature_enabled(self::$uid, 'dislike')) {
+ $sql_extra = " AND verb NOT IN ('" . dbesc(ACTIVITY_DISLIKE) . "') ";
+ }
$sql_extra2 = '';
if(self::$xchans)
diff --git a/Zotlabs/Module/Starred.php b/Zotlabs/Module/Starred.php
index 2d7063669..a9542f590 100644
--- a/Zotlabs/Module/Starred.php
+++ b/Zotlabs/Module/Starred.php
@@ -1,31 +1,46 @@
<?php
namespace Zotlabs\Module;
+use App;
use Zotlabs\Lib\Libsync;
-
class Starred extends \Zotlabs\Web\Controller {
function init() {
-
+
$starred = 0;
-
+
if(! local_channel())
killme();
if(argc() > 1)
$message_id = intval(argv(1));
if(! $message_id)
killme();
-
- $r = q("SELECT item_starred FROM item WHERE uid = %d AND id = %d LIMIT 1",
+
+ $sys = get_sys_channel();
+
+ $r = q("SELECT * FROM item WHERE (uid = %d OR uid = %d) AND id = %d
+ and item_type in (0,6,7) and item_deleted = 0 and item_unpublished = 0
+ and item_delayed = 0 and item_pending_remove = 0 and item_blocked = 0 LIMIT 1",
intval(local_channel()),
+ intval($sys['channel_id']),
intval($message_id)
);
- if(! count($r))
+
+ if ($r) {
+ if ($r[0]['uid'] === $sys['channel_id']) {
+ $r = [ copy_of_pubitem(App::get_channel(), $r[0]['mid']) ];
+ }
+ }
+
+ if(!$r)
killme();
-
+
+ // reset $message_id to the fetched copy of message if applicable
+ $message_id = $r[0]['id'];
+
$item_starred = (intval($r[0]['item_starred']) ? 0 : 1);
-
+
$r = q("UPDATE item SET item_starred = %d WHERE uid = %d and id = %d",
intval($item_starred),
intval(local_channel()),
@@ -38,8 +53,8 @@ class Starred extends \Zotlabs\Web\Controller {
if($r) {
xchan_query($r);
$sync_item = fetch_post_tags($r);
- Libsync::build_sync_packet(local_channel(),[
- 'item' => [
+ Libsync::build_sync_packet(local_channel(),[
+ 'item' => [
encode_item($sync_item[0],true)
]
]);
@@ -49,5 +64,5 @@ class Starred extends \Zotlabs\Web\Controller {
echo json_encode(array('result' => $item_starred));
killme();
}
-
+
}
diff --git a/Zotlabs/Module/Wiki.php b/Zotlabs/Module/Wiki.php
deleted file mode 100644
index 3d0c07492..000000000
--- a/Zotlabs/Module/Wiki.php
+++ /dev/null
@@ -1,873 +0,0 @@
-<?php /** @file */
-
-namespace Zotlabs\Module;
-
-use App;
-use Zotlabs\Web\Controller;
-use Zotlabs\Lib\Apps;
-use Zotlabs\Lib\PermissionDescription;
-use Zotlabs\Lib\NativeWiki;
-use Zotlabs\Lib\NativeWikiPage;
-use Zotlabs\Lib\MarkdownSoap;
-use Michelf\MarkdownExtra;
-
-require_once('include/acl_selectors.php');
-require_once('include/conversation.php');
-require_once('include/bbcode.php');
-
-class Wiki extends Controller {
-
- private $wiki = null;
-
- function init() {
- // Determine which channel's wikis to display to the observer
- $nick = null;
- if (argc() > 1)
- $nick = argv(1); // if the channel name is in the URL, use that
- if (! $nick && local_channel()) { // if no channel name was provided, assume the current logged in channel
- $channel = \App::get_channel();
- if ($channel && $channel['channel_address']) {
- $nick = $channel['channel_address'];
- goaway(z_root() . '/wiki/' . $nick);
- }
- }
- if (! $nick) {
- notice( t('Profile Unavailable.') . EOL);
- goaway(z_root());
- }
-
- profile_load($nick);
- }
-
- function get() {
-
- if(observer_prohibited(true)) {
- return login();
- }
-
- if(! Apps::system_app_installed(App::$profile_uid, 'Wiki')) {
- //Do not display any associated widgets at this point
- App::$pdl = '';
- $papp = Apps::get_papp('Wiki');
- return Apps::app_render($papp, 'module');
- }
-
-
- if(! perm_is_allowed(\App::$profile_uid,get_observer_hash(),'view_wiki')) {
- notice( t('Permission denied.') . EOL);
- return;
- }
-
- // TODO: Combine the interface configuration into a unified object
- // Something like $interface = array('new_page_button' => false, 'new_wiki_button' => false, ...)
-
- $wiki_owner = false;
- $showNewWikiButton = false;
- $pageHistory = array();
- $local_observer = null;
- $resource_id = '';
-
- // init() should have forced the URL to redirect to /wiki/channel so assume argc() > 1
-
- $nick = argv(1);
- $owner = channelx_by_nick($nick); // The channel who owns the wikis being viewed
- if(! $owner) {
- notice( t('Invalid channel') . EOL);
- goaway('/' . argv(0));
- }
-
- $observer_hash = get_observer_hash();
-
- // Determine if the observer is the channel owner so the ACL dialog can be populated
- if (local_channel() === intval($owner['channel_id'])) {
-
- $wiki_owner = true;
-
- nav_set_selected('Wiki');
-
- // Obtain the default permission settings of the channel
- $owner_acl = array(
- 'allow_cid' => $owner['channel_allow_cid'],
- 'allow_gid' => $owner['channel_allow_gid'],
- 'deny_cid' => $owner['channel_deny_cid'],
- 'deny_gid' => $owner['channel_deny_gid']
- );
-
- // Initialize the ACL to the channel default permissions
-
- $x = array(
- 'lockstate' => (( $owner['channel_allow_cid'] ||
- $owner['channel_allow_gid'] ||
- $owner['channel_deny_cid'] ||
- $owner['channel_deny_gid'])
- ? 'lock' : 'unlock'
- ),
- 'acl' => populate_acl($owner_acl, false, PermissionDescription::fromGlobalPermission('view_wiki')),
- 'allow_cid' => acl2json($owner_acl['allow_cid']),
- 'allow_gid' => acl2json($owner_acl['allow_gid']),
- 'deny_cid' => acl2json($owner_acl['deny_cid']),
- 'deny_gid' => acl2json($owner_acl['deny_gid']),
- 'bang' => ''
- );
- }
- else {
- // Not the channel owner
- $owner_acl = $x = array();
- }
-
- $is_owner = ((local_channel()) && (local_channel() == \App::$profile['profile_uid']) ? true : false);
-
- $o = '';
-
- // Download a wiki
-
- if((argc() > 3) && (argv(2) === 'download') && (argv(3) === 'wiki')) {
-
- $resource_id = argv(4);
- $w = NativeWiki::get_wiki($owner['channel_id'],$observer_hash,$resource_id);
-// $w = NativeWiki::get_wiki($owner,$observer_hash,$resource_id);
- if(! $w['htmlName']) {
- notice(t('Error retrieving wiki') . EOL);
- }
-
- $zip_folder_name = random_string(10);
- $zip_folderpath = '/tmp/' . $zip_folder_name;
- if(!mkdir($zip_folderpath, 0770, false)) {
- logger('Error creating zip file export folder: ' . $zip_folderpath, LOGGER_NORMAL);
- notice(t('Error creating zip file export folder') . EOL);
- }
-
- $zip_filename = $w['urlName'];
- $zip_filepath = '/tmp/' . $zip_folder_name . '/' . $zip_filename;
-
-
- // Generate the zip file
-
- $zip = new \ZipArchive;
- $r = $zip->open($zip_filepath, \ZipArchive::CREATE);
- if($r === true) {
- $pages = [];
- $i = q("select * from item where resource_type = 'nwikipage' and resource_id = '%s' order by revision desc",
- dbesc($resource_id)
- );
-
- if($i) {
- foreach($i as $iv) {
- if(in_array($iv['mid'],$pages))
- continue;
-
- if($iv['mimetype'] === 'text/plain') {
- $content = html_entity_decode($iv['body'],ENT_COMPAT,'UTF-8');
- }
- elseif($iv['mimetype'] === 'text/bbcode') {
- $content = html_entity_decode($iv['body'],ENT_COMPAT,'UTF-8');
- }
- elseif($iv['mimetype'] === 'text/markdown') {
- $content = html_entity_decode(MarkdownSoap::unescape($iv['body']),ENT_COMPAT,'UTF-8');
- }
- $fname = get_iconfig($iv['id'],'nwikipage','pagetitle') . NativeWikiPage::get_file_ext($iv);
- $zip->addFromString($fname,$content);
- $pages[] = $iv['mid'];
- }
-
-
- }
-
- }
- $zip->close();
-
- // Output the file for download
-
- header('Content-disposition: attachment; filename="' . $zip_filename . '.zip"');
- header('Content-Type: application/zip');
-
- $success = readfile($zip_filepath);
-
- if(!$success) {
- logger('Error downloading wiki: ' . $resource_id);
- notice(t('Error downloading wiki: ' . $resource_id) . EOL);
- }
-
- // delete temporary files
- rrmdir($zip_folderpath);
- killme();
-
- }
-
- switch(argc()) {
- case 2:
- $wikis = NativeWiki::listwikis($owner, get_observer_hash());
-
- if($wikis) {
- $o .= replace_macros(get_markup_template('wikilist.tpl'), array(
- '$header' => t('Wikis'),
- '$channel' => $owner['channel_address'],
- '$wikis' => $wikis['wikis'],
- // If the observer is the local channel owner, show the wiki controls
- '$owner' => ((local_channel() && local_channel() === intval(\App::$profile['uid'])) ? true : false),
- '$edit' => t('Edit'),
- '$download' => t('Download'),
- '$view' => t('View'),
- '$create' => t('Create New'),
- '$submit' => t('Submit'),
- '$wikiName' => array('wikiName', t('Wiki name')),
- '$mimeType' => array('mimeType', t('Content type'), '', '', ['text/markdown' => t('Markdown'), 'text/bbcode' => t('BBcode'), 'text/plain' => t('Text') ]),
- '$name' => t('Name'),
- '$type' => t('Type'),
- '$unlocked' => t('Any&nbsp;type'),
- '$lockstate' => (x($x,'lockstate') ? $x['lockstate'] : ''),
- '$acl' => (x($x,'acl') ? $x['acl'] : ''),
- '$allow_cid' => (x($x,'allow_cid') ? $x['allow_cid'] : ''),
- '$allow_gid' => (x($x,'allow_gid') ? $x['allow_gid'] : ''),
- '$deny_cid' => (x($x,'deny_cid') ? $x['deny_cid'] : ''),
- '$deny_gid' => (x($x,'deny_gid') ? $x['deny_gid'] : ''),
- '$typelock' => array('typelock', t('Lock content type'), '', '', array(t('No'), t('Yes'))),
- '$notify' => array('postVisible', t('Create a status post for this wiki'), '', '', array(t('No'), t('Yes'))),
- '$edit_wiki_name' => t('Edit Wiki Name')
- ));
-
- return $o;
- }
- break;
-
- case 3:
-
- // /wiki/channel/wiki -> No page was specified, so redirect to Home.md
-
- //$wikiUrlName = urlencode(argv(2));
- $wikiUrlName = NativeWiki::name_encode(argv(2));
- goaway(z_root() . '/' . argv(0) . '/' . argv(1) . '/' . $wikiUrlName . '/Home');
-
- case 4:
- default:
-
- // GET /wiki/channel/wiki/page
- // Fetch the wiki info and determine observer permissions
-
- //$wikiUrlName = urldecode(argv(2));
- $wikiUrlName = NativeWiki::name_decode(argv(2));
-
- $page_name = '';
- $ignore_language = false;
-
- for($x = 3; $x < argc(); $x ++) {
- if($page_name === '' && argv($x) === '-') {
- $ignore_language = true;
- continue;
- }
- if($page_name) {
- $page_name .= '/';
- }
- $page_name .= argv($x);
- }
-
- //$pageUrlName = urldecode($page_name);
- $pageUrlName = NativeWiki::name_decode($page_name);
- $langPageUrlName = \App::$language . '/' . $pageUrlName;
-
- $w = NativeWiki::exists_by_name($owner['channel_id'], $wikiUrlName);
-
- if(! $w['resource_id']) {
- notice(t('Wiki not found') . EOL);
- goaway(z_root() . '/' . argv(0) . '/' . argv(1));
- }
-
- $resource_id = $w['resource_id'];
-
- if(! $wiki_owner) {
- // Check for observer permissions
- $observer_hash = get_observer_hash();
- $perms = NativeWiki::get_permissions($resource_id, intval($owner['channel_id']), $observer_hash);
- if(! $perms['read']) {
- notice(t('Permission denied.') . EOL);
- goaway(z_root() . '/' . argv(0) . '/' . argv(1));
- return; //not reached
- }
- $wiki_editor = (($perms['write']) ? true : false);
- }
- else {
- $wiki_editor = true;
- }
-
- //$wikiheaderName = urldecode($wikiUrlName);
- $wikiheaderName = escape_tags(NativeWiki::name_decode($wikiUrlName));
- //$wikiheaderPage = urldecode($pageUrlName);
- $wikiheaderPage = escape_tags(NativeWiki::name_decode($pageUrlName));
-
- $renamePage = (($wikiheaderPage === 'Home') ? '' : t('Rename page'));
- $sharePage = t('Share');
-
- $p = [];
-
- if(! $ignore_language) {
- $p = NativeWikiPage::get_page_content(array('channel_id' => $owner['channel_id'], 'observer_hash' => $observer_hash, 'resource_id' => $resource_id, 'pageUrlName' => $langPageUrlName));
- }
- if(! ($p && $p['success'])) {
- $p = NativeWikiPage::get_page_content(array('channel_id' => $owner['channel_id'], 'observer_hash' => $observer_hash, 'resource_id' => $resource_id, 'pageUrlName' => $pageUrlName));
- }
- if(! ($p && $p['success'])) {
- $x = new \Zotlabs\Widget\Wiki_pages();
-
- $html = $x->create_missing_page([
- 'resource_id' => $resource_id,
- 'channel_id' => $owner['channel_id'],
- 'channel_address' => $owner['channel_address'],
- 'refresh' => true
- ]);
- //json_return_and_die(array('pages' => $page_list_html, 'message' => '', 'success' => true));
- notice( t('Error retrieving page content') . EOL);
- //goaway(z_root() . '/' . argv(0) . '/' . argv(1) );
- $renderedContent = NativeWikiPage::convert_links($html, argv(0) . '/' . argv(1) . '/' . NativeWiki::name_encode($wikiUrlName));
- $showPageControls = $wiki_editor;
- }
- else {
- $mimeType = $p['pageMimeType'];
-
- $sampleContent = (($mimeType == 'text/bbcode') ? '[h3]' . t('New page') . '[/h3]' : '### ' . t('New page'));
- if($mimeType === 'text/plain')
- $sampleContent = t('New page');
-
- $content = (($p['content'] == '') ? $sampleContent : $p['content']);
-
- $hookinfo = ['content' => $content, 'mimetype' => $mimeType];
- call_hooks('wiki_preprocess',$hookinfo);
- $content = $hookinfo['content'];
-
- // Render the Markdown-formatted page content in HTML
- if($mimeType == 'text/bbcode') {
- $renderedContent = zidify_links(smilies(bbcode($content)));
- $renderedContent = NativeWikiPage::convert_links($renderedContent,argv(0) . '/' . argv(1) . '/' . NativeWiki::name_encode($wikiUrlName));
- }
- elseif($mimeType === 'text/plain') {
- $renderedContent = str_replace(["\n",' ',"\t"],[EOL,'&nbsp;','&nbsp;&nbsp;&nbsp;&nbsp;'],htmlentities($content,ENT_COMPAT,'UTF-8',false));
- }
- elseif($mimeType === 'text/markdown') {
- $content = MarkdownSoap::unescape($content);
- //$html = NativeWikiPage::generate_toc(zidify_text(MarkdownExtra::defaultTransform(NativeWikiPage::bbcode($content))));
- //$renderedContent = NativeWikiPage::convert_links($html, argv(0) . '/' . argv(1) . '/' . $wikiUrlName);
- $html = NativeWikiPage::convert_links($content, argv(0) . '/' . argv(1) . '/' . NativeWiki::name_encode($wikiUrlName));
- $renderedContent = NativeWikiPage::generate_toc(zidify_text(MarkdownExtra::defaultTransform(NativeWikiPage::bbcode($html))));
- }
- $showPageControls = $wiki_editor;
- }
- break;
-// default: // Strip the extraneous URL components
-// goaway('/' . argv(0) . '/' . argv(1) . '/' . NativeWiki::name_encode($wikiUrlName) . '/' . $pageUrlName);
- }
-
-
- $wikiModalID = random_string(3);
-
- $wikiModal = replace_macros(get_markup_template('generic_modal.tpl'), array(
- '$id' => $wikiModalID,
- '$title' => t('Revision Comparison'),
- '$ok' => (($showPageControls) ? t('Revert') : ''),
- '$cancel' => t('Cancel')
- ));
-
- $types = [ 'text/bbcode' => t('BBcode'), 'text/markdown' => t('Markdown'), 'text/plain' => 'Text' ];
- $currenttype = $types[$mimeType];
-
- $placeholder = t('Short description of your changes (optional)');
-
- $zrl = z_root() . '/wiki/' . argv(1) . '/' . NativeWiki::name_encode($wikiUrlName) . '/' . NativeWiki::name_encode($pageUrlName);
- $o .= replace_macros(get_markup_template('wiki.tpl'),array(
- '$wikiheaderName' => $wikiheaderName,
- '$wikiheaderPage' => $wikiheaderPage,
- '$renamePage' => $renamePage,
- '$sharePage' => $sharePage,
- '$shareLink' => urlencode('#^[zrl=' . $zrl . ']' . '[ ' . $owner['channel_name'] . ' ] ' . $wikiheaderName . ' - ' . $wikiheaderPage . '[/zrl]'),
- '$showPageControls' => $showPageControls,
- '$editOrSourceLabel' => (($showPageControls) ? t('Edit') : t('Source')),
- '$tools_label' => 'Page Tools',
- '$channel_address' => $owner['channel_address'],
- '$channel_id' => $owner['channel_id'],
- '$resource_id' => $resource_id,
- '$page' => $pageUrlName,
- '$mimeType' => $mimeType,
- '$typename' => $currenttype,
- '$content' => $content,
- '$renderedContent' => $renderedContent,
- '$pageRename' => array('pageRename', t('New page name'), '', ''),
- '$commitMsg' => array('commitMsg', '', '', '', '', 'placeholder="' . $placeholder . '"'),
- '$wikiModal' => $wikiModal,
- '$wikiModalID' => $wikiModalID,
- '$commit' => 'HEAD',
- '$embedPhotos' => t('Embed image from photo albums'),
- '$embedPhotosModalTitle' => t('Embed an image from your albums'),
- '$embedPhotosModalCancel' => t('Cancel'),
- '$embedPhotosModalOK' => t('OK'),
- '$modalchooseimages' => t('Choose images to embed'),
- '$modalchoosealbum' => t('Choose an album'),
- '$modaldiffalbum' => t('Choose a different album'),
- '$modalerrorlist' => t('Error getting album list'),
- '$modalerrorlink' => t('Error getting photo link'),
- '$modalerroralbum' => t('Error getting album'),
- '$view_lbl' => t('View'),
- '$history_lbl' => t('History')
- ));
-
- if($p['pageMimeType'] === 'text/markdown')
- head_add_js('/library/ace/ace.js'); // Ace Code Editor
-
- return $o;
- }
-
- function post() {
-
- require_once('include/bbcode.php');
-
- $nick = argv(1);
- $owner = channelx_by_nick($nick);
- $observer_hash = get_observer_hash();
-
- if(! $owner) {
- notice( t('Permission denied.') . EOL);
- return;
- }
-
- // /wiki/channel/preview
- // Render mardown-formatted text in HTML for preview
- if((argc() > 2) && (argv(2) === 'preview')) {
- $content = $_POST['content'];
- $resource_id = $_POST['resource_id'];
-
- $w = NativeWiki::get_wiki($owner['channel_id'],$observer_hash,$resource_id);
-
- $wikiURL = argv(0) . '/' . argv(1) . '/' . $w['urlName'];
-
- $mimeType = $_POST['mimetype'];
-
- if($mimeType === 'text/bbcode') {
- $html = zidify_links(smilies(bbcode($content)));
- $html = NativeWikiPage::convert_links($html,$wikiURL);
- }
- elseif($mimeType === 'text/markdown') {
- $linkconverted = NativeWikiPage::convert_links($content,$wikiURL);
- $bb = NativeWikiPage::bbcode($linkconverted);
- $x = new MarkdownSoap($bb);
- $md = $x->clean();
- $md = MarkdownSoap::unescape($md);
- $html = MarkdownExtra::defaultTransform($md);
- $html = NativeWikiPage::generate_toc(zidify_text($html));
- }
- elseif($mimeType === 'text/plain') {
- $html = str_replace(["\n",' ',"\t"],[EOL,'&nbsp;','&nbsp;&nbsp;&nbsp;&nbsp;'],htmlentities($content,ENT_COMPAT,'UTF-8',false));
- }
- json_return_and_die(array('html' => $html, 'success' => true));
- }
-
- // Create a new wiki
- // /wiki/channel/create/wiki
- if ((argc() > 3) && (argv(2) === 'create') && (argv(3) === 'wiki')) {
-
- // Only the channel owner can create a wiki, at least until we create a
- // more detail permissions framework
-
- if (local_channel() !== intval($owner['channel_id'])) {
- goaway('/' . argv(0) . '/' . $nick . '/');
- }
- $wiki = array();
-
- // backslashes won't work well in the javascript functions
- $name = str_replace('\\','',$_POST['wikiName']);
-
- // Generate new wiki info from input name
- $wiki['postVisible'] = ((intval($_POST['postVisible'])) ? 1 : 0);
- $wiki['rawName'] = $name;
- $wiki['htmlName'] = escape_tags($name);
- //$wiki['urlName'] = urlencode(urlencode($name));
- $wiki['urlName'] = NativeWiki::name_encode($name);
- $wiki['mimeType'] = $_POST['mimeType'];
- $wiki['typelock'] = $_POST['typelock'];
-
- if($wiki['urlName'] === '') {
- notice( t('Error creating wiki. Invalid name.') . EOL);
- goaway('/wiki');
- return; //not reached
- }
-
- $exists = NativeWiki::exists_by_name($owner['channel_id'], $wiki['urlName']);
- if($exists['id']) {
- notice( t('A wiki with this name already exists.') . EOL);
- goaway('/wiki');
- return; //not reached
- }
-
- // Get ACL for permissions
- $acl = new \Zotlabs\Access\AccessList($owner);
- $acl->set_from_array($_POST);
- $r = NativeWiki::create_wiki($owner, $observer_hash, $wiki, $acl);
- if($r['success']) {
- NativeWiki::sync_a_wiki_item($owner['channel_id'],$r['item_id'],$r['item']['resource_id']);
- $homePage = NativeWikiPage::create_page($owner, $observer_hash, 'Home', $r['item']['resource_id'], $wiki['mimeType']);
- if(! $homePage['success']) {
- notice( t('Wiki created, but error creating Home page.'));
- goaway(z_root() . '/wiki/' . $nick . '/' . NativeWiki::name_encode($wiki['urlName']));
- }
- NativeWiki::sync_a_wiki_item($owner['channel_id'], $homePage['item_id'], $r['item']['resource_id']);
- goaway(z_root() . '/wiki/' . $nick . '/' . NativeWiki::name_encode($wiki['urlName']) . '/' . NativeWiki::name_encode($homePage['page']['urlName']));
- }
- else {
- notice( t('Error creating wiki'));
- goaway(z_root() . '/wiki');
- }
- }
-
- // Update a wiki
- // /wiki/channel/update/wiki
- if ((argc() > 3) && (argv(2) === 'update') && (argv(3) === 'wiki')) {
- // Only the channel owner can update a wiki, at least until we create a
- // more detail permissions framework
-
- if (local_channel() !== intval($owner['channel_id'])) {
- goaway('/' . argv(0) . '/' . $nick . '/');
- }
-
- $arr = [];
-
- //$arr['urlName'] = urlencode(urlencode($_POST['origRawName']));
- $arr['urlName'] = NativeWiki::name_encode($_POST['origRawName']);
-
- if($_POST['updateRawName'])
- $arr['updateRawName'] = $_POST['updateRawName'];
-
- if(($arr['urlName'] || $arr['updateRawName']) === '') {
- notice( t('Error updating wiki. Invalid name.') . EOL);
- goaway('/wiki');
- return; //not reached
- }
-
- $wiki = NativeWiki::exists_by_name($owner['channel_id'], $arr['urlName']);
- if($wiki['resource_id']) {
-
- $arr['resource_id'] = $wiki['resource_id'];
-
- $acl = new \Zotlabs\Access\AccessList($owner);
- $acl->set_from_array($_POST);
-
- $r = NativeWiki::update_wiki($owner['channel_id'], $observer_hash, $arr, $acl);
- if($r['success']) {
- NativeWiki::sync_a_wiki_item($owner['channel_id'], $r['item_id'], $r['item']['resource_id']);
- goaway(z_root() . '/wiki/' . $nick);
- }
- else {
- notice( t('Error updating wiki'));
- goaway(z_root() . '/wiki');
- }
-
- }
- goaway(z_root() . '/wiki');
- }
-
- // Delete a wiki
- if ((argc() > 3) && (argv(2) === 'delete') && (argv(3) === 'wiki')) {
-
- // Only the channel owner can delete a wiki, at least until we create a
- // more detail permissions framework
- if (local_channel() !== intval($owner['channel_id'])) {
- logger('Wiki delete permission denied.');
- json_return_and_die(array('message' => t('Wiki delete permission denied.'), 'success' => false));
- }
- $resource_id = $_POST['resource_id'];
- $deleted = NativeWiki::delete_wiki($owner['channel_id'],$observer_hash,$resource_id);
- if ($deleted['success']) {
- NativeWiki::sync_a_wiki_item($owner['channel_id'], 0, $resource_id);
- json_return_and_die(array('message' => '', 'success' => true));
- }
- else {
- logger('Error deleting wiki: ' . $resource_id . ' ' . $deleted['message']);
- json_return_and_die(array('message' => t('Error deleting wiki'), 'success' => false));
- }
- }
-
-
- // Create a page
- if ((argc() === 4) && (argv(2) === 'create') && (argv(3) === 'page')) {
-
- $mimetype = $_POST['mimetype'];
-
- $resource_id = $_POST['resource_id'];
- // Determine if observer has permission to create a page
-
-
- $perms = NativeWiki::get_permissions($resource_id, intval($owner['channel_id']), $observer_hash);
- if(! $perms['write']) {
- logger('Wiki write permission denied. ' . EOL);
- json_return_and_die(array('success' => false));
- }
-
- $name = isset($_POST['pageName']) ? $_POST['pageName'] : $_POST['missingPageName']; //Get new page name
-
- // backslashes won't work well in the javascript functions
- $name = str_replace('\\','',$name);
-
- if(NativeWiki::name_encode(escape_tags($name)) === '') {
- json_return_and_die(array('message' => 'Error creating page. Invalid name (' . print_r($_POST,true) . ').', 'success' => false));
- }
-
- $page = NativeWikiPage::create_page($owner, $observer_hash, $name, $resource_id, $mimetype);
- if($page['item_id']) {
-
- $commit = NativeWikiPage::commit([
- 'commit_msg' => t('New page created'),
- 'resource_id' => $resource_id,
- 'channel_id' => $owner['channel_id'],
- 'observer_hash' => $observer_hash,
- 'pageUrlName' => $name
- ]);
- if($commit['success']) {
- NativeWiki::sync_a_wiki_item($owner['channel_id'], $commit['item_id'], $resource_id);
- //json_return_and_die(array('url' => '/' . argv(0) . '/' . argv(1) . '/' . urlencode($page['wiki']['urlName']) . '/' . urlencode($page['page']['urlName']), 'success' => true));
- json_return_and_die(array('url' => '/' . argv(0) . '/' . argv(1) . '/' . $page['wiki']['urlName'] . '/' . $page['page']['urlName'], 'success' => true));
- }
- else {
- json_return_and_die(array('message' => 'Error making git commit','url' => '/' . argv(0) . '/' . argv(1) . '/' . NativeWiki::name_encode($page['wiki']['urlName']) . '/' . NativeWiki::name_encode($page['page']['urlName']),'success' => false));
- }
-
-
- }
- else {
- logger('Error creating page');
- json_return_and_die(array('message' => 'Error creating page.', 'success' => false));
- }
- }
-
- // Fetch page list for a wiki
- if((argc() === 5) && (argv(2) === 'get') && (argv(3) === 'page') && (argv(4) === 'list')) {
- $resource_id = $_POST['resource_id']; // resource_id for wiki in db
-
- $perms = NativeWiki::get_permissions($resource_id, intval($owner['channel_id']), $observer_hash);
- if(!$perms['read']) {
- logger('Wiki read permission denied.' . EOL);
- json_return_and_die(array('pages' => null, 'message' => 'Permission denied.', 'success' => false));
- }
-
- // @FIXME - we shouldn't invoke this if it isn't in the PDL or has been over-ridden
-
- $x = new \Zotlabs\Widget\Wiki_pages();
-
- $page_list_html = $x->widget([
- 'resource_id' => $resource_id,
- 'channel_id' => $owner['channel_id'],
- 'channel_address' => $owner['channel_address'],
- 'refresh' => true
- ]);
- json_return_and_die(array('pages' => $page_list_html, 'message' => '', 'success' => true));
- }
-
- // Save a page
- if ((argc() === 4) && (argv(2) === 'save') && (argv(3) === 'page')) {
-
- $resource_id = $_POST['resource_id'];
- $pageUrlName = $_POST['name'];
- $pageHtmlName = escape_tags($_POST['name']);
- $content = $_POST['content']; //Get new content
- $commitMsg = $_POST['commitMsg'];
- if ($commitMsg === '') {
- $commitMsg = 'Updated ' . $pageHtmlName;
- }
-
- // Determine if observer has permission to save content
- $perms = NativeWiki::get_permissions($resource_id, intval($owner['channel_id']), $observer_hash);
- if(! $perms['write']) {
- logger('Wiki write permission denied. ' . EOL);
- json_return_and_die(array('success' => false));
- }
-
- $saved = NativeWikiPage::save_page([
- 'channel_id' => $owner['channel_id'],
- 'observer_hash' => $observer_hash,
- 'resource_id' => $resource_id,
- 'pageUrlName' => $pageUrlName,
- 'content' => $content
- ]);
- if($saved['success']) {
-
- $commit = NativeWikiPage::commit([
- 'commit_msg' => $commitMsg,
- 'pageUrlName' => $pageUrlName,
- 'resource_id' => $resource_id,
- 'channel_id' => $owner['channel_id'],
- 'observer_hash' => $observer_hash,
- 'revision' => (-1)
- ]);
- if($commit['success']) {
- NativeWiki::sync_a_wiki_item($owner['channel_id'], $commit['item_id'], $resource_id);
- json_return_and_die(array('message' => 'Wiki git repo commit made', 'success' => true , 'content' => $content));
- }
- else {
- json_return_and_die(array('message' => 'Error making git commit','success' => false));
- }
- }
- else {
- json_return_and_die(array('message' => 'Error saving page', 'success' => false));
- }
- }
-
- // Update page history
- // /wiki/channel/history/page
- if ((argc() === 4) && (argv(2) === 'history') && (argv(3) === 'page')) {
-
- $resource_id = $_POST['resource_id'];
- $pageUrlName = $_POST['name'];
-
- // Determine if observer has permission to read content
-
- $perms = NativeWiki::get_permissions($resource_id, intval($owner['channel_id']), $observer_hash);
- if(! $perms['read']) {
- logger('Wiki read permission denied.' . EOL);
- json_return_and_die(array('historyHTML' => '', 'message' => 'Permission denied.', 'success' => false));
- }
-
- $historyHTML = \Zotlabs\Lib\NativeWikiPage::render_page_history(array(
- 'resource_id' => $resource_id,
- 'pageUrlName' => $pageUrlName,
- 'permsWrite' => $perms['write']
- ));
-
- json_return_and_die(array('historyHTML' => $historyHTML, 'message' => '', 'success' => true));
- }
-
- // Delete a page
- if ((argc() === 4) && (argv(2) === 'delete') && (argv(3) === 'page')) {
-
- $resource_id = $_POST['resource_id'];
- $pageUrlName = $_POST['name'];
-
- if ($pageUrlName === 'Home') {
- json_return_and_die(array('message' => t('Cannot delete Home'),'success' => false));
- }
-
- // Determine if observer has permission to delete pages
- // currently just allow page owner
- if((! local_channel()) || (local_channel() != $owner['channel_id'])) {
- logger('Wiki write permission denied. ' . EOL);
- json_return_and_die(array('success' => false));
- }
-
- $perms = NativeWiki::get_permissions($resource_id, intval($owner['channel_id']), $observer_hash);
- if(! $perms['write']) {
- logger('Wiki write permission denied. ' . EOL);
- json_return_and_die(array('success' => false));
- }
-
- $deleted = NativeWikiPage::delete_page([
- 'channel_id' => $owner['channel_id'],
- 'observer_hash' => $observer_hash,
- 'resource_id' => $resource_id,
- 'pageUrlName' => $pageUrlName
- ]);
- if($deleted['success']) {
- NativeWiki::sync_a_wiki_item($owner['channel_id'], 0, $resource_id);
- json_return_and_die(array('message' => 'Wiki git repo commit made', 'success' => true));
- }
- else {
- json_return_and_die(array('message' => 'Error deleting page', 'success' => false));
- }
- }
-
- // Revert a page
- if ((argc() === 4) && (argv(2) === 'revert') && (argv(3) === 'page')) {
-
- $resource_id = $_POST['resource_id'];
- $pageUrlName = $_POST['name'];
- $commitHash = $_POST['commitHash'];
-
- // Determine if observer has permission to revert pages
- $perms = NativeWiki::get_permissions($resource_id, intval($owner['channel_id']), $observer_hash);
- if(! $perms['write']) {
- logger('Wiki write permission denied.' . EOL);
- json_return_and_die(array('success' => false));
- }
-
- $reverted = NativeWikiPage::revert_page([
- 'channel_id' => $owner['channel_id'],
- 'observer_hash' => $observer_hash,
- 'commitHash' => $commitHash,
- 'resource_id' => $resource_id,
- 'pageUrlName' => $pageUrlName
- ]);
- if($reverted['success']) {
- json_return_and_die(array('content' => $reverted['content'], 'message' => '', 'success' => true));
- }
- else {
- json_return_and_die(array('content' => '', 'message' => 'Error reverting page', 'success' => false));
- }
- }
-
- // Compare page revisions
- if ((argc() === 4) && (argv(2) === 'compare') && (argv(3) === 'page')) {
- $resource_id = $_POST['resource_id'];
- $pageUrlName = $_POST['name'];
- $compareCommit = $_POST['compareCommit'];
- $currentCommit = $_POST['currentCommit'];
- // Determine if observer has permission to revert pages
-
- $perms = NativeWiki::get_permissions($resource_id, intval($owner['channel_id']), $observer_hash);
- if(!$perms['read']) {
- logger('Wiki read permission denied.' . EOL);
- json_return_and_die(array('success' => false));
- }
-
- $compare = NativeWikiPage::compare_page(array('channel_id' => $owner['channel_id'], 'observer_hash' => $observer_hash, 'currentCommit' => $currentCommit, 'compareCommit' => $compareCommit, 'resource_id' => $resource_id, 'pageUrlName' => $pageUrlName));
- if($compare['success']) {
- $diffHTML = '<table class="text-center" width="100%"><tr><td class="lead" width="50%">' . t('Current Revision') . '</td><td class="lead" width="50%">' . t('Selected Revision') . '</td></tr></table>' . $compare['diff'];
- json_return_and_die(array('diff' => $diffHTML, 'message' => '', 'success' => true));
- } else {
- json_return_and_die(array('diff' => '', 'message' => 'Error comparing page', 'success' => false));
- }
- }
-
- // Rename a page
- if ((argc() === 4) && (argv(2) === 'rename') && (argv(3) === 'page')) {
- $resource_id = $_POST['resource_id'];
- $pageUrlName = $_POST['oldName'];
- $pageNewName = str_replace('\\','',$_POST['newName']);
- if ($pageUrlName === 'Home') {
- json_return_and_die(array('message' => 'Cannot rename Home','success' => false));
- }
- if(NativeWiki::name_encode(escape_tags($pageNewName)) === '') {
- json_return_and_die(array('message' => 'Error renaming page. Invalid name.', 'success' => false));
- }
- // Determine if observer has permission to rename pages
-
- $perms = NativeWiki::get_permissions($resource_id, intval($owner['channel_id']), $observer_hash);
- if(! $perms['write']) {
- logger('Wiki write permission denied. ' . EOL);
- json_return_and_die(array('success' => false));
- }
-
- $renamed = NativeWikiPage::rename_page([
- 'channel_id' => $owner['channel_id'],
- 'observer_hash' => $observer_hash,
- 'resource_id' => $resource_id,
- 'pageUrlName' => $pageUrlName,
- 'pageNewName' => $pageNewName
- ]);
- if($renamed['success']) {
- $commit = NativeWikiPage::commit([
- 'channel_id' => $owner['channel_id'],
- 'commit_msg' => 'Renamed ' . NativeWiki::name_decode($pageUrlName) . ' to ' . $renamed['page']['htmlName'],
- 'resource_id' => $resource_id,
- 'observer_hash' => $observer_hash,
- 'pageUrlName' => $pageNewName
- ]);
- if($commit['success']) {
- NativeWiki::sync_a_wiki_item($owner['channel_id'], $commit['item_id'], $resource_id);
- json_return_and_die(array('name' => $renamed['page'], 'message' => 'Wiki git repo commit made', 'success' => true));
- }
- else {
- json_return_and_die(array('message' => 'Error making git commit','success' => false));
- }
- }
- else {
- json_return_and_die(array('message' => 'Error renaming page', 'success' => false));
- }
- }
-
- //notice( t('You must be authenticated.'));
- json_return_and_die(array('message' => t('You must be authenticated.'), 'success' => false));
-
- }
-}
diff --git a/Zotlabs/Module/Zot_probe.php b/Zotlabs/Module/Zot_probe.php
index 7585affdf..bdd9506eb 100644
--- a/Zotlabs/Module/Zot_probe.php
+++ b/Zotlabs/Module/Zot_probe.php
@@ -8,21 +8,21 @@ use Zotlabs\Web\HTTPSig;
class Zot_probe extends \Zotlabs\Web\Controller {
function get() {
-
+
$o .= '<h3>Zot6 Probe Diagnostic</h3>';
-
+
$o .= '<form action="zot_probe" method="get">';
$o .= 'Lookup URI: <input type="text" style="width: 250px;" name="addr" value="' . $_GET['addr'] .'" /><br>';
- $o .= '<input type="submit" name="submit" value="Submit" /></form>';
-
+ $o .= '<input type="submit" name="submit" value="Submit" /></form>';
+
$o .= '<br /><br />';
-
+
if(x($_GET,'addr')) {
$addr = $_GET['addr'];
$x = Zotfinger::exec($addr);
-
+
$o .= '<pre>' . htmlspecialchars(print_array($x)) . '</pre>';
$headers = 'Accept: application/x-zot+json, application/jrd+json, application/json';
@@ -38,10 +38,10 @@ class Zot_probe extends \Zotlabs\Web\Controller {
$o .= '<pre>' . htmlspecialchars(json_encode(json_decode($x['body']),JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES)) . '</pre>' . EOL;
- }
+ }
}
return $o;
}
-
+
}
diff --git a/Zotlabs/Update/_1253.php b/Zotlabs/Update/_1253.php
new file mode 100644
index 000000000..3b0e6899a
--- /dev/null
+++ b/Zotlabs/Update/_1253.php
@@ -0,0 +1,23 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1253 {
+
+ function run() {
+
+ dbq("START TRANSACTION");
+
+ $r = dbq("DELETE FROM app WHERE app_name IN ('Wiki', 'Cards', 'Articles') AND app_plugin = ''");
+
+ if($r) {
+ dbq("COMMIT");
+ return UPDATE_SUCCESS;
+ }
+
+ dbq("ROLLBACK");
+ return UPDATE_FAILED;
+
+ }
+
+}
diff --git a/Zotlabs/Web/HTTPSig.php b/Zotlabs/Web/HTTPSig.php
index 4177477a1..cb41c2b7d 100644
--- a/Zotlabs/Web/HTTPSig.php
+++ b/Zotlabs/Web/HTTPSig.php
@@ -502,8 +502,11 @@ class HTTPSig {
$x = self::sign($head, $prvkey, $alg);
- // TODO: should we default to hs2019?
- // $headerval = 'keyId="' . $keyid . '",algorithm="' . (($algorithm === 'rsa-sha256') ? 'hs2019' : $algorithm) . '",headers="' . $x['headers'] . '",signature="' . $x['signature'] . '"';
+ // TODO: should we default to hs2019? cavage-http-signatures-12 is not very wide spread yet
+
+ if (get_config('system', 'use_hs2019', false) && $algorithm === 'rsa-sha256') {
+ $algorithm = 'hs2019';
+ }
$headerval = 'keyId="' . $keyid . '",algorithm="' . $algorithm . '",headers="' . $x['headers'] . '",signature="' . $x['signature'] . '"';
diff --git a/Zotlabs/Widget/Categories.php b/Zotlabs/Widget/Categories.php
index 0c6996d55..0a1c80061 100644
--- a/Zotlabs/Widget/Categories.php
+++ b/Zotlabs/Widget/Categories.php
@@ -17,36 +17,22 @@ class Categories {
function widget($arr) {
- $cards = ((array_key_exists('cards',$arr) && $arr['cards']) ? true : false);
-
- if(($cards) && (! Apps::system_app_installed(App::$profile['profile_uid'], 'Cards')))
- return '';
-
- $articles = ((array_key_exists('articles',$arr) && $arr['articles']) ? true : false);
-
- if(($articles) && (! Apps::system_app_installed(App::$profile['profile_uid'],'Articles')))
- return '';
-
$files = ((array_key_exists('files',$arr) && $arr['files']) ? true : false);
- if((! App::$profile['profile_uid'])
- || (! perm_is_allowed(App::$profile['profile_uid'],get_observer_hash(),(($cards || $articles) ? 'view_pages' : 'view_stream')))) {
+ if(!App::$profile['profile_uid'] || !perm_is_allowed(App::$profile['profile_uid'], get_observer_hash(), 'view_stream')) {
return '';
}
- $cat = ((x($_REQUEST,'cat')) ? htmlspecialchars($_REQUEST['cat'],ENT_COMPAT,'UTF-8') : '');
- $srchurl = (($cards) ? App::$argv[0] . '/' . App::$argv[1] : App::$query_string);
- $srchurl = rtrim(preg_replace('/cat\=[^\&].*?(\&|$)/is','',$srchurl),'&');
- $srchurl = str_replace(array('?f=','&f=', '/?'),array('', '', ''),$srchurl);
+ $cat = ((x($_REQUEST, 'cat')) ? htmlspecialchars($_REQUEST['cat'], ENT_COMPAT, 'UTF-8') : '');
+ $srchurl = App::$query_string;
+ $srchurl = rtrim(preg_replace('/cat\=[^\&].*?(\&|$)/is', '', $srchurl), '&');
+ $srchurl = str_replace(['?f=','&f=', '/?'], ['', '', ''], $srchurl);
- if($cards)
- return cardcategories_widget($srchurl, $cat);
- elseif($articles)
- return articlecategories_widget($srchurl, $cat);
- elseif($files)
+ if($files) {
return filecategories_widget($srchurl, $cat);
- else
- return categories_widget($srchurl, $cat);
+ }
+
+ return categories_widget($srchurl, $cat);
}
}
diff --git a/Zotlabs/Widget/Notes.php b/Zotlabs/Widget/Notes.php
index 2e8e04e93..c9d08c6b7 100644
--- a/Zotlabs/Widget/Notes.php
+++ b/Zotlabs/Widget/Notes.php
@@ -10,6 +10,7 @@
namespace Zotlabs\Widget;
+use App;
use Zotlabs\Lib\Apps;
class Notes {
@@ -18,6 +19,9 @@ class Notes {
if(! local_channel())
return EMPTY_STR;
+ if(App::$profile_uid !== local_channel())
+ return EMPTY_STR;
+
if(! Apps::system_app_installed(local_channel(), 'Notes'))
return EMPTY_STR;
diff --git a/Zotlabs/Widget/Tasklist.php b/Zotlabs/Widget/Tasklist.php
index 5ecfd5a27..96b70af15 100644
--- a/Zotlabs/Widget/Tasklist.php
+++ b/Zotlabs/Widget/Tasklist.php
@@ -7,12 +7,17 @@
namespace Zotlabs\Widget;
+use App;
+
class Tasklist {
function widget($arr) {
- if (! local_channel())
- return;
+ if(! local_channel())
+ return EMPTY_STR;
+
+ if(App::$profile_uid !== local_channel())
+ return EMPTY_STR;
$o .= '<script>var tasksShowAll = 0; $(document).ready(function() { tasksFetch(); $("#tasklist-new-form").submit(function(event) { event.preventDefault(); $.post( "tasks/new", $("#tasklist-new-form").serialize(), function(data) { tasksFetch(); $("#tasklist-new-summary").val(""); } ); return false; } )});</script>';
$o .= '<script>function taskComplete(id) { $.post("tasks/complete/"+id, function(data) { tasksFetch();}); }
diff --git a/Zotlabs/Widget/Wiki_list.php b/Zotlabs/Widget/Wiki_list.php
deleted file mode 100644
index 217ab8706..000000000
--- a/Zotlabs/Widget/Wiki_list.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-/**
- * * Name: Wiki list
- * * Description: A list of existing wikis
- */
-
-namespace Zotlabs\Widget;
-
-class Wiki_list {
-
- function widget($arr) {
-
- $channel = channelx_by_n(\App::$profile_uid);
-
- $wikis = \Zotlabs\Lib\NativeWiki::listwikis($channel,get_observer_hash());
-
- if($wikis) {
- return replace_macros(get_markup_template('wikilist_widget.tpl'), array(
- '$header' => t('Wikis'),
- '$channel' => $channel['channel_address'],
- '$wikis' => $wikis['wikis']
- ));
- }
- return '';
- }
-
-}
diff --git a/Zotlabs/Widget/Wiki_page_history.php b/Zotlabs/Widget/Wiki_page_history.php
deleted file mode 100644
index 3c9f5ed1a..000000000
--- a/Zotlabs/Widget/Wiki_page_history.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-/**
- * * Name: Wiki page history
- * * Description: History of an existing wiki page
- * * Requires: wiki
- */
-
-namespace Zotlabs\Widget;
-
-class Wiki_page_history {
-
- function widget($arr) {
-
- $pageUrlName = ((array_key_exists('pageUrlName', $arr)) ? $arr['pageUrlName'] : '');
- $resource_id = ((array_key_exists('resource_id', $arr)) ? $arr['resource_id'] : '');
-
- $pageHistory = \Zotlabs\Lib\NativeWikiPage::page_history([
- 'channel_id' => \App::$profile_uid,
- 'observer_hash' => get_observer_hash(),
- 'resource_id' => $resource_id,
- 'pageUrlName' => $pageUrlName
- ]);
-
- return replace_macros(get_markup_template('nwiki_page_history.tpl'), array(
- '$pageHistory' => $pageHistory['history'],
- '$permsWrite' => $arr['permsWrite'],
- '$name_lbl' => t('Name'),
- '$msg_label' => t('Message','wiki_history'),
- '$date_lbl' => t('Date'),
- '$revert_btn' => t('Revert'),
- '$compare_btn' => t('Compare')
- ));
-
- }
-}
diff --git a/Zotlabs/Widget/Wiki_pages.php b/Zotlabs/Widget/Wiki_pages.php
deleted file mode 100644
index ece712334..000000000
--- a/Zotlabs/Widget/Wiki_pages.php
+++ /dev/null
@@ -1,110 +0,0 @@
-<?php
-
-/**
- * * Name: Wiki pages
- * * Description: A list of existing pages of a wiki
- * * Requires: wiki
- */
-
-namespace Zotlabs\Widget;
-
-use Zotlabs\Lib\NativeWiki;
-
-class Wiki_pages {
-
- function create_missing_page($arr) {
- if(argc() < 4)
- return;
-
- $c = channelx_by_nick(argv(1));
- $w = \Zotlabs\Lib\NativeWiki::exists_by_name($c['channel_id'],NativeWiki::name_decode(argv(2)));
- $arr = array(
- 'resource_id' => $w['resource_id'],
- 'channel_id' => $c['channel_id'],
- 'channel_address' => $c['channel_address'],
- 'refresh' => false
- );
-
- $can_create = perm_is_allowed(\App::$profile['uid'],get_observer_hash(),'write_wiki');
-
- $can_delete = ((local_channel() && (local_channel() == \App::$profile['uid'])) ? true : false);
- $pageName = NativeWiki::name_decode(escape_tags(argv(3)));
-
- $wikiname = $w['urlName'];
- return replace_macros(get_markup_template('wiki_page_not_found.tpl'), array(
- '$resource_id' => $arr['resource_id'],
- '$channel_address' => $arr['channel_address'],
- '$wikiname' => $wikiname,
- '$canadd' => $can_create,
- '$candel' => $can_delete,
- '$addnew' => t('Add new page'),
- '$typelock' => $typelock,
- '$lockedtype' => $w['mimeType'],
- '$mimetype' => mimetype_select(0,$w['mimeType'],
- [ 'text/markdown' => t('Markdown'), 'text/bbcode' => t('BBcode'), 'text/plain' => t('Text') ]),
- '$pageName' => array('missingPageName', 'Create Page' , $pageName),
- '$refresh' => $arr['refresh'],
- '$options' => t('Options'),
- '$submit' => t('Submit')
- ));
- }
-
- function widget($arr) {
-
- if(argc() < 3)
- return;
-
- if(! $arr['resource_id']) {
- $c = channelx_by_nick(argv(1));
- $w = \Zotlabs\Lib\NativeWiki::exists_by_name($c['channel_id'],NativeWiki::name_decode(argv(2)));
- $arr = array(
- 'resource_id' => $w['resource_id'],
- 'channel_id' => $c['channel_id'],
- 'channel_address' => $c['channel_address'],
- 'refresh' => false
- );
- }
-
- $wikiname = '';
-
- $pages = array();
-
- $p = \Zotlabs\Lib\NativeWikiPage::page_list($arr['channel_id'],get_observer_hash(),$arr['resource_id']);
-
- if($p['pages']) {
- $pages = $p['pages'];
- $w = $p['wiki'];
- // Wiki item record is $w['wiki']
- $wikiname = $w['urlName'];
- if (!$wikiname) {
- $wikiname = '';
- }
- $typelock = $w['typelock'];
- }
-
- $can_create = perm_is_allowed(\App::$profile['uid'],get_observer_hash(),'write_wiki');
-
- $can_delete = ((local_channel() && (local_channel() == \App::$profile['uid'])) ? true : false);
-
- return replace_macros(get_markup_template('wiki_page_list.tpl'), array(
- '$resource_id' => $arr['resource_id'],
- '$header' => t('Wiki Pages'),
- '$channel_address' => $arr['channel_address'],
- '$wikiname' => $wikiname,
- '$pages' => $pages,
- '$canadd' => $can_create,
- '$candel' => $can_delete,
- '$addnew' => t('Add new page'),
- '$typelock' => $typelock,
- '$lockedtype' => $w['mimeType'],
- '$mimetype' => mimetype_select(0,$w['mimeType'],
- [ 'text/markdown' => t('Markdown'), 'text/bbcode' => t('BBcode'), 'text/plain' => t('Text') ]),
- '$pageName' => array('pageName', t('Page name')),
- '$refresh' => $arr['refresh'],
- '$options' => t('Options'),
- '$submit' => t('Submit')
- ));
- }
-}
-
-
diff --git a/app/articles.apd b/app/articles.apd
deleted file mode 100644
index 5ef849dfb..000000000
--- a/app/articles.apd
+++ /dev/null
@@ -1,7 +0,0 @@
-version: 3
-url: $baseurl/articles/$nick
-name: Articles
-requires: local_channel
-photo: icon:file-text-o
-categories: nav_featured_app, Productivity
-desc: Create interactive articles
diff --git a/app/cards.apd b/app/cards.apd
deleted file mode 100644
index 00cfa05a8..000000000
--- a/app/cards.apd
+++ /dev/null
@@ -1,7 +0,0 @@
-version: 3
-url: $baseurl/cards/$nick
-name: Cards
-requires: local_channel
-photo: icon:list
-categories: nav_featured_app, Productivity
-desc: Create interactive personal planning cards.
diff --git a/app/wiki.apd b/app/wiki.apd
deleted file mode 100644
index d59bdd8a4..000000000
--- a/app/wiki.apd
+++ /dev/null
@@ -1,7 +0,0 @@
-version: 3
-url: $baseurl/wiki/$nick
-requires: local_channel
-name: Wiki
-photo: icon:pencil-square-o
-categories: nav_featured_app, Productivity
-desc: A simple yet powerful wiki for your channel.
diff --git a/boot.php b/boot.php
index ee1cd7990..d7c39d1a7 100644
--- a/boot.php
+++ b/boot.php
@@ -60,10 +60,10 @@ require_once('include/bbcode.php');
require_once('include/items.php');
define('PLATFORM_NAME', 'hubzilla');
-define('STD_VERSION', '7.3');
+define('STD_VERSION', '7.3.3');
define('ZOT_REVISION', '6.0');
-define('DB_UPDATE_VERSION', 1252);
+define('DB_UPDATE_VERSION', 1253);
define('PROJECT_BASE', __DIR__);
@@ -698,7 +698,7 @@ function startup() {
error_reporting(E_ALL & ~E_NOTICE);
if (version_compare(PHP_VERSION, '8.0.0') >= 0) {
- error_reporting(E_ALL & ~E_WARNING & ~E_NOTICE);
+ error_reporting(E_ALL & ~E_WARNING & ~E_NOTICE & ~E_DEPRECATED);
}
// Some hosting providers block/disable this
diff --git a/composer.lock b/composer.lock
index 31d6f1403..3a60477f8 100644
--- a/composer.lock
+++ b/composer.lock
@@ -133,28 +133,29 @@
},
{
"name": "bshaffer/oauth2-server-php",
- "version": "v1.11.1",
+ "version": "v1.12.0",
"source": {
"type": "git",
"url": "https://github.com/bshaffer/oauth2-server-php.git",
- "reference": "5a0c8000d4763b276919e2106f54eddda6bc50fa"
+ "reference": "60254fc7fbb08ce56164faae9e075068adf914ef"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/bshaffer/oauth2-server-php/zipball/5a0c8000d4763b276919e2106f54eddda6bc50fa",
- "reference": "5a0c8000d4763b276919e2106f54eddda6bc50fa",
+ "url": "https://api.github.com/repos/bshaffer/oauth2-server-php/zipball/60254fc7fbb08ce56164faae9e075068adf914ef",
+ "reference": "60254fc7fbb08ce56164faae9e075068adf914ef",
"shasum": ""
},
"require": {
- "php": ">=5.3.9"
+ "php": ">=7.1"
},
"require-dev": {
- "aws/aws-sdk-php": "~2.8",
- "firebase/php-jwt": "~2.2",
+ "aws/aws-sdk-php": "^2.8",
+ "firebase/php-jwt": "^2.2",
"mongodb/mongodb": "^1.1",
- "phpunit/phpunit": "^4.0",
- "predis/predis": "dev-master",
- "thobbs/phpcassa": "dev-master"
+ "phpunit/phpunit": "^7.5||^8.0",
+ "predis/predis": "^1.1",
+ "thobbs/phpcassa": "dev-master",
+ "yoast/phpunit-polyfills": "^1.0"
},
"suggest": {
"aws/aws-sdk-php": "~2.8 is required to use DynamoDB storage",
@@ -189,9 +190,9 @@
],
"support": {
"issues": "https://github.com/bshaffer/oauth2-server-php/issues",
- "source": "https://github.com/bshaffer/oauth2-server-php/tree/master"
+ "source": "https://github.com/bshaffer/oauth2-server-php/tree/v1.12.0"
},
- "time": "2018-12-04T00:29:32+00:00"
+ "time": "2022-04-19T17:09:11+00:00"
},
{
"name": "commerceguys/intl",
@@ -638,16 +639,16 @@
},
{
"name": "phpseclib/phpseclib",
- "version": "2.0.36",
+ "version": "2.0.37",
"source": {
"type": "git",
"url": "https://github.com/phpseclib/phpseclib.git",
- "reference": "a97547126396548c224703a267a30af1592be146"
+ "reference": "c812fbb4d6b4d7f30235ab7298a12f09ba13b37c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/a97547126396548c224703a267a30af1592be146",
- "reference": "a97547126396548c224703a267a30af1592be146",
+ "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/c812fbb4d6b4d7f30235ab7298a12f09ba13b37c",
+ "reference": "c812fbb4d6b4d7f30235ab7298a12f09ba13b37c",
"shasum": ""
},
"require": {
@@ -727,7 +728,7 @@
],
"support": {
"issues": "https://github.com/phpseclib/phpseclib/issues",
- "source": "https://github.com/phpseclib/phpseclib/tree/2.0.36"
+ "source": "https://github.com/phpseclib/phpseclib/tree/2.0.37"
},
"funding": [
{
@@ -743,7 +744,7 @@
"type": "tidelift"
}
],
- "time": "2022-01-30T08:48:36+00:00"
+ "time": "2022-04-04T04:57:45+00:00"
},
{
"name": "psr/log",
@@ -876,25 +877,24 @@
},
{
"name": "ramsey/uuid",
- "version": "4.2.3",
+ "version": "4.3.1",
"source": {
"type": "git",
"url": "https://github.com/ramsey/uuid.git",
- "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df"
+ "reference": "8505afd4fea63b81a85d3b7b53ac3cb8dc347c28"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df",
- "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df",
+ "url": "https://api.github.com/repos/ramsey/uuid/zipball/8505afd4fea63b81a85d3b7b53ac3cb8dc347c28",
+ "reference": "8505afd4fea63b81a85d3b7b53ac3cb8dc347c28",
"shasum": ""
},
"require": {
"brick/math": "^0.8 || ^0.9",
+ "ext-ctype": "*",
"ext-json": "*",
- "php": "^7.2 || ^8.0",
- "ramsey/collection": "^1.0",
- "symfony/polyfill-ctype": "^1.8",
- "symfony/polyfill-php80": "^1.14"
+ "php": "^8.0",
+ "ramsey/collection": "^1.0"
},
"replace": {
"rhumsaa/uuid": "self.version"
@@ -931,9 +931,6 @@
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-main": "4.x-dev"
- },
"captainhook": {
"force-install": true
}
@@ -958,7 +955,7 @@
],
"support": {
"issues": "https://github.com/ramsey/uuid/issues",
- "source": "https://github.com/ramsey/uuid/tree/4.2.3"
+ "source": "https://github.com/ramsey/uuid/tree/4.3.1"
},
"funding": [
{
@@ -970,7 +967,7 @@
"type": "tidelift"
}
],
- "time": "2021-09-25T23:10:38+00:00"
+ "time": "2022-03-27T21:42:02+00:00"
},
{
"name": "sabre/dav",
@@ -1419,16 +1416,16 @@
},
{
"name": "simplepie/simplepie",
- "version": "1.5.8",
+ "version": "1.6.0",
"source": {
"type": "git",
"url": "https://github.com/simplepie/simplepie.git",
- "reference": "d1d80f37264c9f1ed7fa3434eca14d179cb689b1"
+ "reference": "2bdbc51ed1010941c9c5f2cddca433e79665bfe1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/simplepie/simplepie/zipball/d1d80f37264c9f1ed7fa3434eca14d179cb689b1",
- "reference": "d1d80f37264c9f1ed7fa3434eca14d179cb689b1",
+ "url": "https://api.github.com/repos/simplepie/simplepie/zipball/2bdbc51ed1010941c9c5f2cddca433e79665bfe1",
+ "reference": "2bdbc51ed1010941c9c5f2cddca433e79665bfe1",
"shasum": ""
},
"require": {
@@ -1449,10 +1446,18 @@
},
"type": "library",
"autoload": {
+ "psr-4": {
+ "SimplePie\\": "src"
+ },
"psr-0": {
"SimplePie": "library"
}
},
+ "autoload-dev": {
+ "psr-4": {
+ "SimplePie\\Tests\\Unit\\": "tests/Unit"
+ }
+ },
"scripts": {
"test": [
"phpunit"
@@ -1487,23 +1492,23 @@
"rss"
],
"support": {
- "source": "https://github.com/simplepie/simplepie/tree/1.5.8",
+ "source": "https://github.com/simplepie/simplepie/tree/1.6.0",
"issues": "https://github.com/simplepie/simplepie/issues"
},
- "time": "2021-12-24T02:53:50+00:00"
+ "time": "2022-04-21T11:05:19+00:00"
},
{
"name": "smarty/smarty",
- "version": "v4.1.0",
+ "version": "v4.1.1",
"source": {
"type": "git",
"url": "https://github.com/smarty-php/smarty.git",
- "reference": "9e0536de18b53ba193364291ef0303b0ab9903e1"
+ "reference": "71036be8be02bf93735c47b0b745f722efbc729f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/smarty-php/smarty/zipball/9e0536de18b53ba193364291ef0303b0ab9903e1",
- "reference": "9e0536de18b53ba193364291ef0303b0ab9903e1",
+ "url": "https://api.github.com/repos/smarty-php/smarty/zipball/71036be8be02bf93735c47b0b745f722efbc729f",
+ "reference": "71036be8be02bf93735c47b0b745f722efbc729f",
"shasum": ""
},
"require": {
@@ -1554,178 +1559,13 @@
"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/v4.1.0"
+ "source": "https://github.com/smarty-php/smarty/tree/v4.1.1"
},
- "time": "2022-02-06T20:34:27+00:00"
- },
- {
- "name": "symfony/polyfill-ctype",
- "version": "v1.24.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-ctype.git",
- "reference": "30885182c981ab175d4d034db0f6f469898070ab"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab",
- "reference": "30885182c981ab175d4d034db0f6f469898070ab",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1"
- },
- "provide": {
- "ext-ctype": "*"
- },
- "suggest": {
- "ext-ctype": "For best performance"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.23-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "autoload": {
- "files": [
- "bootstrap.php"
- ],
- "psr-4": {
- "Symfony\\Polyfill\\Ctype\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Gert de Pagter",
- "email": "BackEndTea@gmail.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill for ctype functions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "ctype",
- "polyfill",
- "portable"
- ],
- "support": {
- "source": "https://github.com/symfony/polyfill-ctype/tree/v1.24.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": "2021-10-20T20:35:02+00:00"
- },
- {
- "name": "symfony/polyfill-php80",
- "version": "v1.24.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-php80.git",
- "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9",
- "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.23-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "autoload": {
- "files": [
- "bootstrap.php"
- ],
- "psr-4": {
- "Symfony\\Polyfill\\Php80\\": ""
- },
- "classmap": [
- "Resources/stubs"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Ion Bazan",
- "email": "ion.bazan@gmail.com"
- },
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "polyfill",
- "portable",
- "shim"
- ],
- "support": {
- "source": "https://github.com/symfony/polyfill-php80/tree/v1.24.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": "2021-09-13T13:58:33+00:00"
+ "time": "2022-05-17T12:56:28+00:00"
},
{
"name": "symfony/polyfill-php81",
- "version": "v1.24.0",
+ "version": "v1.25.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php81.git",
@@ -1784,7 +1624,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php81/tree/v1.24.0"
+ "source": "https://github.com/symfony/polyfill-php81/tree/v1.25.0"
},
"funding": [
{
@@ -2127,31 +1967,29 @@
},
{
"name": "behat/mink",
- "version": "v1.9.0",
+ "version": "v1.10.0",
"source": {
"type": "git",
"url": "https://github.com/minkphp/Mink.git",
- "reference": "e35f4695de8800fc776af34ebf665ad58ebdd996"
+ "reference": "19e58905632e7cfdc5b2bafb9b950a3521af32c5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/minkphp/Mink/zipball/e35f4695de8800fc776af34ebf665ad58ebdd996",
- "reference": "e35f4695de8800fc776af34ebf665ad58ebdd996",
+ "url": "https://api.github.com/repos/minkphp/Mink/zipball/19e58905632e7cfdc5b2bafb9b950a3521af32c5",
+ "reference": "19e58905632e7cfdc5b2bafb9b950a3521af32c5",
"shasum": ""
},
"require": {
- "php": ">=5.4",
- "symfony/css-selector": "^2.7|^3.0|^4.0|^5.0"
+ "php": ">=7.2",
+ "symfony/css-selector": "^4.4 || ^5.0 || ^6.0"
},
"require-dev": {
- "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5 || ^9.5",
- "symfony/debug": "^2.7|^3.0|^4.0|^5.0",
- "symfony/phpunit-bridge": "^3.4.38 || ^4.4 || ^5.0.5",
- "yoast/phpunit-polyfills": "^1.0"
+ "phpunit/phpunit": "^8.5.22 || ^9.5.11",
+ "symfony/error-handler": "^4.4 || ^5.0 || ^6.0",
+ "symfony/phpunit-bridge": "^5.4 || ^6.0"
},
"suggest": {
- "behat/mink-browserkit-driver": "extremely fast headless driver for Symfony\\Kernel-based apps (Sf2, Silex)",
- "behat/mink-goutte-driver": "fast headless driver for any app without JS emulation",
+ "behat/mink-browserkit-driver": "fast headless driver for any app without JS emulation",
"behat/mink-selenium2-driver": "slow, but JS-enabled driver for any app (requires Selenium2)",
"behat/mink-zombie-driver": "fast and JS-enabled headless driver for any app (requires node.js)",
"dmore/chrome-mink-driver": "fast and JS-enabled driver for any app (requires chromium or google chrome)"
@@ -2187,37 +2025,37 @@
],
"support": {
"issues": "https://github.com/minkphp/Mink/issues",
- "source": "https://github.com/minkphp/Mink/tree/v1.9.0"
+ "source": "https://github.com/minkphp/Mink/tree/v1.10.0"
},
- "time": "2021-10-11T11:58:47+00:00"
+ "time": "2022-03-28T14:22:43+00:00"
},
{
"name": "behat/mink-browserkit-driver",
- "version": "v2.0.0",
+ "version": "v2.1.0",
"source": {
"type": "git",
"url": "https://github.com/minkphp/MinkBrowserKitDriver.git",
- "reference": "0d3d9c3b375be6f3d44fd6d1e08ed28c104b3bd4"
+ "reference": "d2768e6c17b293d86d8fcff54cbb9e6ad938fee1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/minkphp/MinkBrowserKitDriver/zipball/0d3d9c3b375be6f3d44fd6d1e08ed28c104b3bd4",
- "reference": "0d3d9c3b375be6f3d44fd6d1e08ed28c104b3bd4",
+ "url": "https://api.github.com/repos/minkphp/MinkBrowserKitDriver/zipball/d2768e6c17b293d86d8fcff54cbb9e6ad938fee1",
+ "reference": "d2768e6c17b293d86d8fcff54cbb9e6ad938fee1",
"shasum": ""
},
"require": {
"behat/mink": "^1.9.0@dev",
"php": ">=7.2",
- "symfony/browser-kit": "^4.4 || ^5.0",
- "symfony/dom-crawler": "^4.4 || ^5.0"
+ "symfony/browser-kit": "^4.4 || ^5.0 || ^6.0",
+ "symfony/dom-crawler": "^4.4 || ^5.0 || ^6.0"
},
"require-dev": {
"mink/driver-testsuite": "dev-master",
"phpunit/phpunit": "^8.5 || ^9.5",
- "symfony/error-handler": "^4.4 || ^5.0",
- "symfony/http-client": "^4.4 || ^5.0",
- "symfony/http-kernel": "^4.4 || ^5.0",
- "symfony/mime": "^4.4 || ^5.0",
+ "symfony/error-handler": "^4.4 || ^5.0 || ^6.0",
+ "symfony/http-client": "^4.4 || ^5.0 || ^6.0",
+ "symfony/http-kernel": "^4.4 || ^5.0 || ^6.0",
+ "symfony/mime": "^4.4 || ^5.0 || ^6.0",
"yoast/phpunit-polyfills": "^1.0"
},
"type": "mink-driver",
@@ -2252,9 +2090,9 @@
],
"support": {
"issues": "https://github.com/minkphp/MinkBrowserKitDriver/issues",
- "source": "https://github.com/minkphp/MinkBrowserKitDriver/tree/v2.0.0"
+ "source": "https://github.com/minkphp/MinkBrowserKitDriver/tree/v2.1.0"
},
- "time": "2021-12-13T10:31:49+00:00"
+ "time": "2022-03-28T14:33:51+00:00"
},
{
"name": "behat/mink-extension",
@@ -2380,30 +2218,30 @@
},
{
"name": "behat/transliterator",
- "version": "v1.3.0",
+ "version": "v1.5.0",
"source": {
"type": "git",
"url": "https://github.com/Behat/Transliterator.git",
- "reference": "3c4ec1d77c3d05caa1f0bf8fb3aae4845005c7fc"
+ "reference": "baac5873bac3749887d28ab68e2f74db3a4408af"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Behat/Transliterator/zipball/3c4ec1d77c3d05caa1f0bf8fb3aae4845005c7fc",
- "reference": "3c4ec1d77c3d05caa1f0bf8fb3aae4845005c7fc",
+ "url": "https://api.github.com/repos/Behat/Transliterator/zipball/baac5873bac3749887d28ab68e2f74db3a4408af",
+ "reference": "baac5873bac3749887d28ab68e2f74db3a4408af",
"shasum": ""
},
"require": {
- "php": ">=5.3.3"
+ "php": ">=7.2"
},
"require-dev": {
"chuyskywalker/rolling-curl": "^3.1",
"php-yaoi/php-yaoi": "^1.0",
- "phpunit/phpunit": "^4.8.36|^6.3"
+ "phpunit/phpunit": "^8.5.25 || ^9.5.19"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.2-dev"
+ "dev-master": "1.x-dev"
}
},
"autoload": {
@@ -2423,36 +2261,36 @@
],
"support": {
"issues": "https://github.com/Behat/Transliterator/issues",
- "source": "https://github.com/Behat/Transliterator/tree/v1.3.0"
+ "source": "https://github.com/Behat/Transliterator/tree/v1.5.0"
},
- "time": "2020-01-14T16:39:13+00:00"
+ "time": "2022-03-30T09:27:43+00:00"
},
{
"name": "composer/pcre",
- "version": "1.0.1",
+ "version": "3.0.0",
"source": {
"type": "git",
"url": "https://github.com/composer/pcre.git",
- "reference": "67a32d7d6f9f560b726ab25a061b38ff3a80c560"
+ "reference": "e300eb6c535192decd27a85bc72a9290f0d6b3bd"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/pcre/zipball/67a32d7d6f9f560b726ab25a061b38ff3a80c560",
- "reference": "67a32d7d6f9f560b726ab25a061b38ff3a80c560",
+ "url": "https://api.github.com/repos/composer/pcre/zipball/e300eb6c535192decd27a85bc72a9290f0d6b3bd",
+ "reference": "e300eb6c535192decd27a85bc72a9290f0d6b3bd",
"shasum": ""
},
"require": {
- "php": "^5.3.2 || ^7.0 || ^8.0"
+ "php": "^7.4 || ^8.0"
},
"require-dev": {
"phpstan/phpstan": "^1.3",
"phpstan/phpstan-strict-rules": "^1.1",
- "symfony/phpunit-bridge": "^4.2 || ^5"
+ "symfony/phpunit-bridge": "^5"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.x-dev"
+ "dev-main": "3.x-dev"
}
},
"autoload": {
@@ -2480,7 +2318,7 @@
],
"support": {
"issues": "https://github.com/composer/pcre/issues",
- "source": "https://github.com/composer/pcre/tree/1.0.1"
+ "source": "https://github.com/composer/pcre/tree/3.0.0"
},
"funding": [
{
@@ -2496,31 +2334,31 @@
"type": "tidelift"
}
],
- "time": "2022-01-21T20:24:37+00:00"
+ "time": "2022-02-25T20:21:48+00:00"
},
{
"name": "composer/xdebug-handler",
- "version": "2.0.5",
+ "version": "3.0.3",
"source": {
"type": "git",
"url": "https://github.com/composer/xdebug-handler.git",
- "reference": "9e36aeed4616366d2b690bdce11f71e9178c579a"
+ "reference": "ced299686f41dce890debac69273b47ffe98a40c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/9e36aeed4616366d2b690bdce11f71e9178c579a",
- "reference": "9e36aeed4616366d2b690bdce11f71e9178c579a",
+ "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ced299686f41dce890debac69273b47ffe98a40c",
+ "reference": "ced299686f41dce890debac69273b47ffe98a40c",
"shasum": ""
},
"require": {
- "composer/pcre": "^1",
- "php": "^5.3.2 || ^7.0 || ^8.0",
+ "composer/pcre": "^1 || ^2 || ^3",
+ "php": "^7.2.5 || ^8.0",
"psr/log": "^1 || ^2 || ^3"
},
"require-dev": {
"phpstan/phpstan": "^1.0",
"phpstan/phpstan-strict-rules": "^1.1",
- "symfony/phpunit-bridge": "^4.2 || ^5.0 || ^6.0"
+ "symfony/phpunit-bridge": "^6.0"
},
"type": "library",
"autoload": {
@@ -2546,7 +2384,7 @@
"support": {
"irc": "irc://irc.freenode.org/composer",
"issues": "https://github.com/composer/xdebug-handler/issues",
- "source": "https://github.com/composer/xdebug-handler/tree/2.0.5"
+ "source": "https://github.com/composer/xdebug-handler/tree/3.0.3"
},
"funding": [
{
@@ -2562,7 +2400,7 @@
"type": "tidelift"
}
],
- "time": "2022-02-24T20:20:32+00:00"
+ "time": "2022-02-25T21:32:43+00:00"
},
{
"name": "dms/phpunit-arraysubset-asserts",
@@ -2611,29 +2449,30 @@
},
{
"name": "doctrine/instantiator",
- "version": "1.4.0",
+ "version": "1.4.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/instantiator.git",
- "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b"
+ "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b",
- "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b",
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc",
+ "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc",
"shasum": ""
},
"require": {
"php": "^7.1 || ^8.0"
},
"require-dev": {
- "doctrine/coding-standard": "^8.0",
+ "doctrine/coding-standard": "^9",
"ext-pdo": "*",
"ext-phar": "*",
- "phpbench/phpbench": "^0.13 || 1.0.0-alpha2",
- "phpstan/phpstan": "^0.12",
- "phpstan/phpstan-phpunit": "^0.12",
- "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
+ "phpbench/phpbench": "^0.16 || ^1",
+ "phpstan/phpstan": "^1.4",
+ "phpstan/phpstan-phpunit": "^1",
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
+ "vimeo/psalm": "^4.22"
},
"type": "library",
"autoload": {
@@ -2660,7 +2499,7 @@
],
"support": {
"issues": "https://github.com/doctrine/instantiator/issues",
- "source": "https://github.com/doctrine/instantiator/tree/1.4.0"
+ "source": "https://github.com/doctrine/instantiator/tree/1.4.1"
},
"funding": [
{
@@ -2676,7 +2515,7 @@
"type": "tidelift"
}
],
- "time": "2020-11-10T18:47:58+00:00"
+ "time": "2022-03-03T08:28:38+00:00"
},
{
"name": "fabpot/goutte",
@@ -2735,16 +2574,16 @@
},
{
"name": "myclabs/deep-copy",
- "version": "1.10.3",
+ "version": "1.11.0",
"source": {
"type": "git",
"url": "https://github.com/myclabs/DeepCopy.git",
- "reference": "c6a951b75d684fd43fbbd69617488e1e2e8924ba"
+ "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/c6a951b75d684fd43fbbd69617488e1e2e8924ba",
- "reference": "c6a951b75d684fd43fbbd69617488e1e2e8924ba",
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614",
+ "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614",
"shasum": ""
},
"require": {
@@ -2782,7 +2621,7 @@
],
"support": {
"issues": "https://github.com/myclabs/DeepCopy/issues",
- "source": "https://github.com/myclabs/DeepCopy/tree/1.10.3"
+ "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0"
},
"funding": [
{
@@ -2790,7 +2629,7 @@
"type": "tidelift"
}
],
- "time": "2022-03-02T14:16:47+00:00"
+ "time": "2022-03-03T13:19:32+00:00"
},
{
"name": "nikic/php-parser",
@@ -3318,16 +3157,16 @@
},
{
"name": "phpdocumentor/type-resolver",
- "version": "1.6.0",
+ "version": "1.6.1",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/TypeResolver.git",
- "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706"
+ "reference": "77a32518733312af16a44300404e945338981de3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706",
- "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3",
+ "reference": "77a32518733312af16a44300404e945338981de3",
"shasum": ""
},
"require": {
@@ -3362,28 +3201,28 @@
"description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
"support": {
"issues": "https://github.com/phpDocumentor/TypeResolver/issues",
- "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.0"
+ "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1"
},
- "time": "2022-01-04T19:58:01+00:00"
+ "time": "2022-03-15T21:29:03+00:00"
},
{
"name": "phpmd/phpmd",
- "version": "2.11.1",
+ "version": "2.12.0",
"source": {
"type": "git",
"url": "https://github.com/phpmd/phpmd.git",
- "reference": "08b60a2eb7e14c23f46ff8865b510ae08b75d0fd"
+ "reference": "c0b678ba71902f539c27c14332aa0ddcf14388ec"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpmd/phpmd/zipball/08b60a2eb7e14c23f46ff8865b510ae08b75d0fd",
- "reference": "08b60a2eb7e14c23f46ff8865b510ae08b75d0fd",
+ "url": "https://api.github.com/repos/phpmd/phpmd/zipball/c0b678ba71902f539c27c14332aa0ddcf14388ec",
+ "reference": "c0b678ba71902f539c27c14332aa0ddcf14388ec",
"shasum": ""
},
"require": {
- "composer/xdebug-handler": "^1.0 || ^2.0",
+ "composer/xdebug-handler": "^1.0 || ^2.0 || ^3.0",
"ext-xml": "*",
- "pdepend/pdepend": "^2.10.2",
+ "pdepend/pdepend": "^2.10.3",
"php": ">=5.3.9"
},
"require-dev": {
@@ -3439,7 +3278,7 @@
"support": {
"irc": "irc://irc.freenode.org/phpmd",
"issues": "https://github.com/phpmd/phpmd/issues",
- "source": "https://github.com/phpmd/phpmd/tree/2.11.1"
+ "source": "https://github.com/phpmd/phpmd/tree/2.12.0"
},
"funding": [
{
@@ -3447,7 +3286,7 @@
"type": "tidelift"
}
],
- "time": "2021-12-17T11:25:43+00:00"
+ "time": "2022-03-24T13:33:01+00:00"
},
{
"name": "phpspec/prophecy",
@@ -3518,16 +3357,16 @@
},
{
"name": "phpunit/php-code-coverage",
- "version": "9.2.14",
+ "version": "9.2.15",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "9f4d60b6afe5546421462b76cd4e633ebc364ab4"
+ "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/9f4d60b6afe5546421462b76cd4e633ebc364ab4",
- "reference": "9f4d60b6afe5546421462b76cd4e633ebc364ab4",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2e9da11878c4202f97915c1cb4bb1ca318a63f5f",
+ "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f",
"shasum": ""
},
"require": {
@@ -3583,7 +3422,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
- "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.14"
+ "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.15"
},
"funding": [
{
@@ -3591,7 +3430,7 @@
"type": "github"
}
],
- "time": "2022-02-28T12:38:02+00:00"
+ "time": "2022-03-07T09:28:20+00:00"
},
{
"name": "phpunit/php-file-iterator",
@@ -3836,16 +3675,16 @@
},
{
"name": "phpunit/phpunit",
- "version": "9.5.16",
+ "version": "9.5.20",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "5ff8c545a50226c569310a35f4fa89d79f1ddfdc"
+ "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/5ff8c545a50226c569310a35f4fa89d79f1ddfdc",
- "reference": "5ff8c545a50226c569310a35f4fa89d79f1ddfdc",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/12bc8879fb65aef2138b26fc633cb1e3620cffba",
+ "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba",
"shasum": ""
},
"require": {
@@ -3875,7 +3714,7 @@
"sebastian/global-state": "^5.0.1",
"sebastian/object-enumerator": "^4.0.3",
"sebastian/resource-operations": "^3.0.3",
- "sebastian/type": "^2.3.4",
+ "sebastian/type": "^3.0",
"sebastian/version": "^3.0.2"
},
"require-dev": {
@@ -3923,7 +3762,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
- "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.16"
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.20"
},
"funding": [
{
@@ -3935,7 +3774,7 @@
"type": "github"
}
],
- "time": "2022-02-23T17:10:58+00:00"
+ "time": "2022-04-01T12:37:26+00:00"
},
{
"name": "psr/container",
@@ -4401,16 +4240,16 @@
},
{
"name": "sebastian/environment",
- "version": "5.1.3",
+ "version": "5.1.4",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/environment.git",
- "reference": "388b6ced16caa751030f6a69e588299fa09200ac"
+ "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac",
- "reference": "388b6ced16caa751030f6a69e588299fa09200ac",
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7",
+ "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7",
"shasum": ""
},
"require": {
@@ -4452,7 +4291,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/environment/issues",
- "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3"
+ "source": "https://github.com/sebastianbergmann/environment/tree/5.1.4"
},
"funding": [
{
@@ -4460,7 +4299,7 @@
"type": "github"
}
],
- "time": "2020-09-28T05:52:38+00:00"
+ "time": "2022-04-03T09:37:03+00:00"
},
{
"name": "sebastian/exporter",
@@ -4892,28 +4731,28 @@
},
{
"name": "sebastian/type",
- "version": "2.3.4",
+ "version": "3.0.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/type.git",
- "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914"
+ "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914",
- "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914",
+ "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b233b84bc4465aff7b57cf1c4bc75c86d00d6dad",
+ "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad",
"shasum": ""
},
"require": {
"php": ">=7.3"
},
"require-dev": {
- "phpunit/phpunit": "^9.3"
+ "phpunit/phpunit": "^9.5"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.3-dev"
+ "dev-master": "3.0-dev"
}
},
"autoload": {
@@ -4936,7 +4775,7 @@
"homepage": "https://github.com/sebastianbergmann/type",
"support": {
"issues": "https://github.com/sebastianbergmann/type/issues",
- "source": "https://github.com/sebastianbergmann/type/tree/2.3.4"
+ "source": "https://github.com/sebastianbergmann/type/tree/3.0.0"
},
"funding": [
{
@@ -4944,7 +4783,7 @@
"type": "github"
}
],
- "time": "2021-06-15T12:49:02+00:00"
+ "time": "2022-03-15T09:54:48+00:00"
},
{
"name": "sebastian/version",
@@ -5057,28 +4896,27 @@
},
{
"name": "symfony/browser-kit",
- "version": "v5.4.3",
+ "version": "v6.0.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/browser-kit.git",
- "reference": "18e73179c6a33d520de1b644941eba108dd811ad"
+ "reference": "0ec66df981406fd2c9e41acbb526249bd18a0123"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/browser-kit/zipball/18e73179c6a33d520de1b644941eba108dd811ad",
- "reference": "18e73179c6a33d520de1b644941eba108dd811ad",
+ "url": "https://api.github.com/repos/symfony/browser-kit/zipball/0ec66df981406fd2c9e41acbb526249bd18a0123",
+ "reference": "0ec66df981406fd2c9e41acbb526249bd18a0123",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/dom-crawler": "^4.4|^5.0|^6.0",
- "symfony/polyfill-php80": "^1.16"
+ "php": ">=8.0.2",
+ "symfony/dom-crawler": "^5.4|^6.0"
},
"require-dev": {
- "symfony/css-selector": "^4.4|^5.0|^6.0",
- "symfony/http-client": "^4.4|^5.0|^6.0",
- "symfony/mime": "^4.4|^5.0|^6.0",
- "symfony/process": "^4.4|^5.0|^6.0"
+ "symfony/css-selector": "^5.4|^6.0",
+ "symfony/http-client": "^5.4|^6.0",
+ "symfony/mime": "^5.4|^6.0",
+ "symfony/process": "^5.4|^6.0"
},
"suggest": {
"symfony/process": ""
@@ -5109,7 +4947,7 @@
"description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/browser-kit/tree/v5.4.3"
+ "source": "https://github.com/symfony/browser-kit/tree/v6.0.3"
},
"funding": [
{
@@ -5125,20 +4963,20 @@
"type": "tidelift"
}
],
- "time": "2022-01-02T09:53:40+00:00"
+ "time": "2022-01-02T09:55:41+00:00"
},
{
"name": "symfony/config",
- "version": "v4.4.37",
+ "version": "v4.4.41",
"source": {
"type": "git",
"url": "https://github.com/symfony/config.git",
- "reference": "e8c2d2c951ddedecb6d28954d336cb7d2e852d0e"
+ "reference": "9d031eb2d4292aed117b0f7fafd5c436dcf3dfd7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/config/zipball/e8c2d2c951ddedecb6d28954d336cb7d2e852d0e",
- "reference": "e8c2d2c951ddedecb6d28954d336cb7d2e852d0e",
+ "url": "https://api.github.com/repos/symfony/config/zipball/9d031eb2d4292aed117b0f7fafd5c436dcf3dfd7",
+ "reference": "9d031eb2d4292aed117b0f7fafd5c436dcf3dfd7",
"shasum": ""
},
"require": {
@@ -5187,7 +5025,7 @@
"description": "Helps you find, load, combine, autofill and validate configuration values of any kind",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/config/tree/v4.4.37"
+ "source": "https://github.com/symfony/config/tree/v4.4.41"
},
"funding": [
{
@@ -5203,20 +5041,20 @@
"type": "tidelift"
}
],
- "time": "2022-01-03T09:46:22+00:00"
+ "time": "2022-04-12T15:19:55+00:00"
},
{
"name": "symfony/console",
- "version": "v5.4.5",
+ "version": "v5.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "d8111acc99876953f52fe16d4c50eb60940d49ad"
+ "reference": "ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/d8111acc99876953f52fe16d4c50eb60940d49ad",
- "reference": "d8111acc99876953f52fe16d4c50eb60940d49ad",
+ "url": "https://api.github.com/repos/symfony/console/zipball/ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b",
+ "reference": "ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b",
"shasum": ""
},
"require": {
@@ -5286,7 +5124,7 @@
"terminal"
],
"support": {
- "source": "https://github.com/symfony/console/tree/v5.4.5"
+ "source": "https://github.com/symfony/console/tree/v5.4.8"
},
"funding": [
{
@@ -5302,25 +5140,24 @@
"type": "tidelift"
}
],
- "time": "2022-02-24T12:45:35+00:00"
+ "time": "2022-04-12T16:02:29+00:00"
},
{
"name": "symfony/css-selector",
- "version": "v5.4.3",
+ "version": "v6.0.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/css-selector.git",
- "reference": "b0a190285cd95cb019237851205b8140ef6e368e"
+ "reference": "1955d595c12c111629cc814d3f2a2ff13580508a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/css-selector/zipball/b0a190285cd95cb019237851205b8140ef6e368e",
- "reference": "b0a190285cd95cb019237851205b8140ef6e368e",
+ "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a",
+ "reference": "1955d595c12c111629cc814d3f2a2ff13580508a",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/polyfill-php80": "^1.16"
+ "php": ">=8.0.2"
},
"type": "library",
"autoload": {
@@ -5352,7 +5189,7 @@
"description": "Converts CSS selectors to XPath expressions",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/css-selector/tree/v5.4.3"
+ "source": "https://github.com/symfony/css-selector/tree/v6.0.3"
},
"funding": [
{
@@ -5368,20 +5205,20 @@
"type": "tidelift"
}
],
- "time": "2022-01-02T09:53:40+00:00"
+ "time": "2022-01-02T09:55:41+00:00"
},
{
"name": "symfony/dependency-injection",
- "version": "v4.4.38",
+ "version": "v4.4.41",
"source": {
"type": "git",
"url": "https://github.com/symfony/dependency-injection.git",
- "reference": "f6d1ca0eb363cd8c729e45cff419fb34158afec5"
+ "reference": "74c7f55de0eced4d3c9654809b1871870386a577"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/f6d1ca0eb363cd8c729e45cff419fb34158afec5",
- "reference": "f6d1ca0eb363cd8c729e45cff419fb34158afec5",
+ "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/74c7f55de0eced4d3c9654809b1871870386a577",
+ "reference": "74c7f55de0eced4d3c9654809b1871870386a577",
"shasum": ""
},
"require": {
@@ -5438,7 +5275,7 @@
"description": "Allows you to standardize and centralize the way objects are constructed in your application",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/dependency-injection/tree/v4.4.38"
+ "source": "https://github.com/symfony/dependency-injection/tree/v4.4.41"
},
"funding": [
{
@@ -5454,20 +5291,20 @@
"type": "tidelift"
}
],
- "time": "2022-02-24T08:43:20+00:00"
+ "time": "2022-04-12T15:19:55+00:00"
},
{
"name": "symfony/deprecation-contracts",
- "version": "v3.0.0",
+ "version": "v3.0.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/deprecation-contracts.git",
- "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced"
+ "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced",
- "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/26954b3d62a6c5fd0ea8a2a00c0353a14978d05c",
+ "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c",
"shasum": ""
},
"require": {
@@ -5505,7 +5342,7 @@
"description": "A generic function and convention to trigger deprecation notices",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/deprecation-contracts/tree/v3.0.0"
+ "source": "https://github.com/symfony/deprecation-contracts/tree/v3.0.1"
},
"funding": [
{
@@ -5521,35 +5358,33 @@
"type": "tidelift"
}
],
- "time": "2021-11-01T23:48:49+00:00"
+ "time": "2022-01-02T09:55:41+00:00"
},
{
"name": "symfony/dom-crawler",
- "version": "v5.4.5",
+ "version": "v6.0.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/dom-crawler.git",
- "reference": "50777f44e7dc37e16959ca65041df2acd6a65775"
+ "reference": "9b4126901a6146c151d95af3868b1e0e30519ea6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/50777f44e7dc37e16959ca65041df2acd6a65775",
- "reference": "50777f44e7dc37e16959ca65041df2acd6a65775",
+ "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/9b4126901a6146c151d95af3868b1e0e30519ea6",
+ "reference": "9b4126901a6146c151d95af3868b1e0e30519ea6",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/deprecation-contracts": "^2.1|^3",
+ "php": ">=8.0.2",
"symfony/polyfill-ctype": "~1.8",
- "symfony/polyfill-mbstring": "~1.0",
- "symfony/polyfill-php80": "^1.16"
+ "symfony/polyfill-mbstring": "~1.0"
},
"conflict": {
"masterminds/html5": "<2.6"
},
"require-dev": {
"masterminds/html5": "^2.6",
- "symfony/css-selector": "^4.4|^5.0|^6.0"
+ "symfony/css-selector": "^5.4|^6.0"
},
"suggest": {
"symfony/css-selector": ""
@@ -5580,7 +5415,7 @@
"description": "Eases DOM navigation for HTML and XML documents",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/dom-crawler/tree/v5.4.5"
+ "source": "https://github.com/symfony/dom-crawler/tree/v6.0.6"
},
"funding": [
{
@@ -5596,7 +5431,7 @@
"type": "tidelift"
}
],
- "time": "2022-01-31T16:08:03+00:00"
+ "time": "2022-03-02T12:58:14+00:00"
},
{
"name": "symfony/event-dispatcher",
@@ -5685,16 +5520,16 @@
},
{
"name": "symfony/event-dispatcher-contracts",
- "version": "v3.0.0",
+ "version": "v3.0.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher-contracts.git",
- "reference": "aa5422287b75594b90ee9cd807caf8f0df491385"
+ "reference": "7bc61cc2db649b4637d331240c5346dcc7708051"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385",
- "reference": "aa5422287b75594b90ee9cd807caf8f0df491385",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/7bc61cc2db649b4637d331240c5346dcc7708051",
+ "reference": "7bc61cc2db649b4637d331240c5346dcc7708051",
"shasum": ""
},
"require": {
@@ -5744,7 +5579,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.0.0"
+ "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.0.1"
},
"funding": [
{
@@ -5760,20 +5595,20 @@
"type": "tidelift"
}
],
- "time": "2021-07-15T12:33:35+00:00"
+ "time": "2022-01-02T09:55:41+00:00"
},
{
"name": "symfony/filesystem",
- "version": "v5.4.5",
+ "version": "v5.4.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
- "reference": "797680071ea8f71b94eb958680c50d0e002638f5"
+ "reference": "3a4442138d80c9f7b600fb297534ac718b61d37f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/filesystem/zipball/797680071ea8f71b94eb958680c50d0e002638f5",
- "reference": "797680071ea8f71b94eb958680c50d0e002638f5",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/3a4442138d80c9f7b600fb297534ac718b61d37f",
+ "reference": "3a4442138d80c9f7b600fb297534ac718b61d37f",
"shasum": ""
},
"require": {
@@ -5808,7 +5643,7 @@
"description": "Provides basic utilities for the filesystem",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/filesystem/tree/v5.4.5"
+ "source": "https://github.com/symfony/filesystem/tree/v5.4.7"
},
"funding": [
{
@@ -5824,20 +5659,20 @@
"type": "tidelift"
}
],
- "time": "2022-02-27T10:31:47+00:00"
+ "time": "2022-04-01T12:33:59+00:00"
},
{
"name": "symfony/http-client",
- "version": "v6.0.5",
+ "version": "v6.0.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-client.git",
- "reference": "a8f87328930932c455cffd048f965d1223d91915"
+ "reference": "d347895193283e08b4c3ebf2f2974a1df3e1f670"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-client/zipball/a8f87328930932c455cffd048f965d1223d91915",
- "reference": "a8f87328930932c455cffd048f965d1223d91915",
+ "url": "https://api.github.com/repos/symfony/http-client/zipball/d347895193283e08b4c3ebf2f2974a1df3e1f670",
+ "reference": "d347895193283e08b4c3ebf2f2974a1df3e1f670",
"shasum": ""
},
"require": {
@@ -5892,7 +5727,7 @@
"description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/http-client/tree/v6.0.5"
+ "source": "https://github.com/symfony/http-client/tree/v6.0.8"
},
"funding": [
{
@@ -5908,20 +5743,20 @@
"type": "tidelift"
}
],
- "time": "2022-02-27T08:47:28+00:00"
+ "time": "2022-04-12T16:11:42+00:00"
},
{
"name": "symfony/http-client-contracts",
- "version": "v3.0.0",
+ "version": "v3.0.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-client-contracts.git",
- "reference": "265f03fed057044a8e4dc159aa33596d0f48ed3f"
+ "reference": "f7525778c712be78ad5b6ca31f47fdcfd404c280"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/265f03fed057044a8e4dc159aa33596d0f48ed3f",
- "reference": "265f03fed057044a8e4dc159aa33596d0f48ed3f",
+ "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/f7525778c712be78ad5b6ca31f47fdcfd404c280",
+ "reference": "f7525778c712be78ad5b6ca31f47fdcfd404c280",
"shasum": ""
},
"require": {
@@ -5970,7 +5805,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/http-client-contracts/tree/v3.0.0"
+ "source": "https://github.com/symfony/http-client-contracts/tree/v3.0.1"
},
"funding": [
{
@@ -5986,20 +5821,20 @@
"type": "tidelift"
}
],
- "time": "2021-11-03T13:44:55+00:00"
+ "time": "2022-03-13T20:10:05+00:00"
},
{
"name": "symfony/mime",
- "version": "v6.0.3",
+ "version": "v6.0.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/mime.git",
- "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a"
+ "reference": "c1701e88ad0ca49fc6ad6cdf360bc0e1209fb5e1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a",
- "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a",
+ "url": "https://api.github.com/repos/symfony/mime/zipball/c1701e88ad0ca49fc6ad6cdf360bc0e1209fb5e1",
+ "reference": "c1701e88ad0ca49fc6ad6cdf360bc0e1209fb5e1",
"shasum": ""
},
"require": {
@@ -6051,7 +5886,7 @@
"mime-type"
],
"support": {
- "source": "https://github.com/symfony/mime/tree/v6.0.3"
+ "source": "https://github.com/symfony/mime/tree/v6.0.8"
},
"funding": [
{
@@ -6067,11 +5902,93 @@
"type": "tidelift"
}
],
- "time": "2022-01-02T09:55:41+00:00"
+ "time": "2022-04-12T16:11:42+00:00"
+ },
+ {
+ "name": "symfony/polyfill-ctype",
+ "version": "v1.25.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-ctype.git",
+ "reference": "30885182c981ab175d4d034db0f6f469898070ab"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab",
+ "reference": "30885182c981ab175d4d034db0f6f469898070ab",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "provide": {
+ "ext-ctype": "*"
+ },
+ "suggest": {
+ "ext-ctype": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Ctype\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Gert de Pagter",
+ "email": "BackEndTea@gmail.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for ctype functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "ctype",
+ "polyfill",
+ "portable"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.25.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": "2021-10-20T20:35:02+00:00"
},
{
"name": "symfony/polyfill-intl-grapheme",
- "version": "v1.24.0",
+ "version": "v1.25.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-grapheme.git",
@@ -6132,7 +6049,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.24.0"
+ "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.25.0"
},
"funding": [
{
@@ -6152,7 +6069,7 @@
},
{
"name": "symfony/polyfill-intl-idn",
- "version": "v1.24.0",
+ "version": "v1.25.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-idn.git",
@@ -6219,7 +6136,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.24.0"
+ "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.25.0"
},
"funding": [
{
@@ -6239,7 +6156,7 @@
},
{
"name": "symfony/polyfill-intl-normalizer",
- "version": "v1.24.0",
+ "version": "v1.25.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
@@ -6303,7 +6220,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.24.0"
+ "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.25.0"
},
"funding": [
{
@@ -6323,7 +6240,7 @@
},
{
"name": "symfony/polyfill-mbstring",
- "version": "v1.24.0",
+ "version": "v1.25.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
@@ -6386,7 +6303,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.24.0"
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.25.0"
},
"funding": [
{
@@ -6406,7 +6323,7 @@
},
{
"name": "symfony/polyfill-php72",
- "version": "v1.24.0",
+ "version": "v1.25.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php72.git",
@@ -6462,7 +6379,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php72/tree/v1.24.0"
+ "source": "https://github.com/symfony/polyfill-php72/tree/v1.25.0"
},
"funding": [
{
@@ -6482,7 +6399,7 @@
},
{
"name": "symfony/polyfill-php73",
- "version": "v1.24.0",
+ "version": "v1.25.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php73.git",
@@ -6541,7 +6458,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php73/tree/v1.24.0"
+ "source": "https://github.com/symfony/polyfill-php73/tree/v1.25.0"
},
"funding": [
{
@@ -6560,22 +6477,106 @@
"time": "2021-06-05T21:20:04+00:00"
},
{
+ "name": "symfony/polyfill-php80",
+ "version": "v1.25.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php80.git",
+ "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c",
+ "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Php80\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ion Bazan",
+ "email": "ion.bazan@gmail.com"
+ },
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php80/tree/v1.25.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": "2022-03-04T08:16:47+00:00"
+ },
+ {
"name": "symfony/service-contracts",
- "version": "v2.4.1",
+ "version": "v2.5.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/service-contracts.git",
- "reference": "d664541b99d6fb0247ec5ff32e87238582236204"
+ "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d664541b99d6fb0247ec5ff32e87238582236204",
- "reference": "d664541b99d6fb0247ec5ff32e87238582236204",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/24d9dc654b83e91aa59f9d167b131bc3b5bea24c",
+ "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
- "psr/container": "^1.1"
+ "psr/container": "^1.1",
+ "symfony/deprecation-contracts": "^2.1|^3"
},
"conflict": {
"ext-psr": "<1.1|>=2"
@@ -6586,7 +6587,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "2.4-dev"
+ "dev-main": "2.5-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -6623,7 +6624,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/service-contracts/tree/v2.4.1"
+ "source": "https://github.com/symfony/service-contracts/tree/v2.5.1"
},
"funding": [
{
@@ -6639,20 +6640,20 @@
"type": "tidelift"
}
],
- "time": "2021-11-04T16:37:19+00:00"
+ "time": "2022-03-13T20:07:29+00:00"
},
{
"name": "symfony/string",
- "version": "v6.0.3",
+ "version": "v6.0.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
- "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2"
+ "reference": "ac0aa5c2282e0de624c175b68d13f2c8f2e2649d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2",
- "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2",
+ "url": "https://api.github.com/repos/symfony/string/zipball/ac0aa5c2282e0de624c175b68d13f2c8f2e2649d",
+ "reference": "ac0aa5c2282e0de624c175b68d13f2c8f2e2649d",
"shasum": ""
},
"require": {
@@ -6708,7 +6709,7 @@
"utf8"
],
"support": {
- "source": "https://github.com/symfony/string/tree/v6.0.3"
+ "source": "https://github.com/symfony/string/tree/v6.0.8"
},
"funding": [
{
@@ -6724,20 +6725,20 @@
"type": "tidelift"
}
],
- "time": "2022-01-02T09:55:41+00:00"
+ "time": "2022-04-22T08:18:02+00:00"
},
{
"name": "symfony/translation",
- "version": "v4.4.37",
+ "version": "v4.4.41",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation.git",
- "reference": "4ce00d6875230b839f5feef82e51971f6c886e00"
+ "reference": "dcb67eae126e74507e0b4f0b9ac6ef35b37c3331"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation/zipball/4ce00d6875230b839f5feef82e51971f6c886e00",
- "reference": "4ce00d6875230b839f5feef82e51971f6c886e00",
+ "url": "https://api.github.com/repos/symfony/translation/zipball/dcb67eae126e74507e0b4f0b9ac6ef35b37c3331",
+ "reference": "dcb67eae126e74507e0b4f0b9ac6ef35b37c3331",
"shasum": ""
},
"require": {
@@ -6797,7 +6798,7 @@
"description": "Provides tools to internationalize your application",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/translation/tree/v4.4.37"
+ "source": "https://github.com/symfony/translation/tree/v4.4.41"
},
"funding": [
{
@@ -6813,20 +6814,20 @@
"type": "tidelift"
}
],
- "time": "2022-01-02T09:41:36+00:00"
+ "time": "2022-04-21T07:22:34+00:00"
},
{
"name": "symfony/translation-contracts",
- "version": "v2.5.0",
+ "version": "v2.5.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation-contracts.git",
- "reference": "d28150f0f44ce854e942b671fc2620a98aae1b1e"
+ "reference": "1211df0afa701e45a04253110e959d4af4ef0f07"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/d28150f0f44ce854e942b671fc2620a98aae1b1e",
- "reference": "d28150f0f44ce854e942b671fc2620a98aae1b1e",
+ "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1211df0afa701e45a04253110e959d4af4ef0f07",
+ "reference": "1211df0afa701e45a04253110e959d4af4ef0f07",
"shasum": ""
},
"require": {
@@ -6875,7 +6876,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/translation-contracts/tree/v2.5.0"
+ "source": "https://github.com/symfony/translation-contracts/tree/v2.5.1"
},
"funding": [
{
@@ -6891,7 +6892,7 @@
"type": "tidelift"
}
],
- "time": "2021-08-17T14:20:01+00:00"
+ "time": "2022-01-02T09:53:40+00:00"
},
{
"name": "symfony/yaml",
@@ -7095,5 +7096,5 @@
"ext-posix": "*"
},
"platform-dev": [],
- "plugin-api-version": "2.2.0"
+ "plugin-api-version": "2.3.0"
}
diff --git a/include/contact_widgets.php b/include/contact_widgets.php
index 1ae8b17c5..182f674ca 100644
--- a/include/contact_widgets.php
+++ b/include/contact_widgets.php
@@ -59,7 +59,6 @@ function fileas_widget($baseurl,$selected = '') {
));
}
-
function categories_widget($baseurl,$selected = '') {
if(! feature_enabled(App::$profile['profile_uid'],'categories'))
@@ -124,96 +123,6 @@ function categories_widget($baseurl,$selected = '') {
return '';
}
-
-function cardcategories_widget($baseurl,$selected = '') {
-
- if(! feature_enabled(App::$profile['profile_uid'],'categories'))
- return '';
-
- $sql_extra = item_permissions_sql(App::$profile['profile_uid']);
-
- $item_normal = "and item.item_hidden = 0 and item.item_type = 6 and item.item_deleted = 0
- and item.item_unpublished = 0 and item.item_delayed = 0 and item.item_pending_remove = 0
- and item.item_blocked = 0 ";
-
- $terms = array();
- $r = q("select distinct(term.term)
- from term join item on term.oid = item.id
- where item.uid = %d
- and term.uid = item.uid
- and term.ttype = %d
- and term.otype = %d
- and item.owner_xchan = '%s'
- $item_normal
- $sql_extra
- order by term.term asc",
- intval(App::$profile['profile_uid']),
- intval(TERM_CATEGORY),
- intval(TERM_OBJ_POST),
- dbesc(App::$profile['channel_hash'])
- );
- if($r && count($r)) {
- foreach($r as $rr)
- $terms[] = array('name' => $rr['term'], 'selected' => (($selected == $rr['term']) ? 'selected' : ''));
-
- return replace_macros(get_markup_template('categories_widget.tpl'),array(
- '$title' => t('Categories'),
- '$desc' => '',
- '$sel_all' => (($selected == '') ? 'selected' : ''),
- '$all' => t('Everything'),
- '$terms' => $terms,
- '$base' => $baseurl,
- ));
- }
-
- return '';
-}
-
-
-function articlecategories_widget($baseurl,$selected = '') {
-
- if(! feature_enabled(App::$profile['profile_uid'],'categories'))
- return '';
-
- $sql_extra = item_permissions_sql(App::$profile['profile_uid']);
-
- $item_normal = "and item.item_hidden = 0 and item.item_type = 7 and item.item_deleted = 0
- and item.item_unpublished = 0 and item.item_delayed = 0 and item.item_pending_remove = 0
- and item.item_blocked = 0 ";
-
- $terms = array();
- $r = q("select distinct(term.term)
- from term join item on term.oid = item.id
- where item.uid = %d
- and term.uid = item.uid
- and term.ttype = %d
- and term.otype = %d
- and item.owner_xchan = '%s'
- $item_normal
- $sql_extra
- order by term.term asc",
- intval(App::$profile['profile_uid']),
- intval(TERM_CATEGORY),
- intval(TERM_OBJ_POST),
- dbesc(App::$profile['channel_hash'])
- );
- if($r && count($r)) {
- foreach($r as $rr)
- $terms[] = array('name' => $rr['term'], 'selected' => (($selected == $rr['term']) ? 'selected' : ''));
-
- return replace_macros(get_markup_template('categories_widget.tpl'),array(
- '$title' => t('Categories'),
- '$desc' => '',
- '$sel_all' => (($selected == '') ? 'selected' : ''),
- '$all' => t('Everything'),
- '$terms' => $terms,
- '$base' => $baseurl,
- ));
- }
-
- return '';
-}
-
function filecategories_widget($baseurl,$selected = '') {
$perms = permissions_sql(App::$profile['profile_uid']);
diff --git a/include/conversation.php b/include/conversation.php
index c0238b8ae..1d6295df7 100644
--- a/include/conversation.php
+++ b/include/conversation.php
@@ -773,7 +773,7 @@ function conversation($items, $mode, $update, $page_mode = 'traditional', $prepa
$conv_link_module = 'hq';
}
- $conv_link = ((in_array($item['item_type'],[ ITEM_TYPE_CARD, ITEM_TYPE_ARTICLE] )) ? $item['plink'] : z_root() . '/' . $conv_link_module . '/' . gen_link_id($conv_link_mid));
+ $conv_link = z_root() . '/' . $conv_link_module . '/' . gen_link_id($conv_link_mid);
$contact = [];
diff --git a/include/event.php b/include/event.php
index 3d3dda035..f62c22792 100644
--- a/include/event.php
+++ b/include/event.php
@@ -85,7 +85,7 @@ function format_event_obj($jobject) {
'startTime' => (($arr['adjust']) ? datetime_convert('UTC','UTC',$arr['dtstart'], ATOM_TIME) : datetime_convert('UTC','UTC',$arr['dtstart'],'Y-m-d\\TH:i:s-00:00')),
'content' => bbcode($arr['description']),
'location' => [ 'type' => 'Place', 'content' => $arr['location'] ],
- 'source' => [ 'content' => format_event_bbcode($arr), 'mediaType' => 'text/x-multicode' ],
+ 'source' => [ 'content' => format_event_bbcode($arr), 'mediaType' => 'text/bbcode' ],
'url' => [ [ 'mediaType' => 'text/calendar', 'href' => z_root() . '/events/ical/' . $event['event_hash'] ] ],
'actor' => Activity::encode_person($r[0],false),
];
@@ -141,8 +141,15 @@ function format_event_obj($jobject) {
'$event_tz' => ['label' => t('Timezone'), 'value' => (($tz === date_default_timezone_get()) ? '' : $tz)]
));
+
+ $description = [];
+
+ if (strpos($object['source']['content'], '[/event-description]') !== false) {
+ preg_match("/\[event\-description\](.*?)\[\/event\-description\]/ism", $object['source']['content'], $description);
+ }
+
$event['content'] = replace_macros(get_markup_template('event_item_content.tpl'), array(
- '$description' => $object['content'],
+ '$description' => ((isset($description[1]))? zidify_links(smilies(bbcode($description[1]))) : EMPTY_STR),
'$location_label' => t('Location:'),
'$location' => ((array_path_exists('location/name', $object)) ? zidify_links(smilies(bbcode($object['location']['name']))) : EMPTY_STR)
));
@@ -1215,7 +1222,7 @@ function event_store_item($arr, $event) {
'startTime' => (($arr['adjust']) ? datetime_convert('UTC', 'UTC', $arr['dtstart'], ATOM_TIME) : datetime_convert('UTC', 'UTC', $arr['dtstart'], 'Y-m-d\\TH:i:s-00:00')),
'content' => bbcode($arr['description']),
'location' => [ 'type' => 'Place', 'name' => $arr['location'] ],
- 'source' => [ 'content' => format_event_bbcode($arr), 'mediaType' => 'text/x-multicode' ],
+ 'source' => [ 'content' => format_event_bbcode($arr), 'mediaType' => 'text/bbcode' ],
'url' => [ [ 'mediaType' => 'text/calendar', 'href' => z_root() . '/events/ical/' . $event['event_hash'] ] ],
'actor' => Activity::encode_person($r[0], false),
'attachment' => Activity::encode_attachment($r[0]),
@@ -1375,7 +1382,7 @@ function event_store_item($arr, $event) {
'startTime' => (($arr['adjust']) ? datetime_convert('UTC', 'UTC', $arr['dtstart'], ATOM_TIME) : datetime_convert('UTC', 'UTC', $arr['dtstart'], 'Y-m-d\\TH:i:s-00:00')),
'content' => bbcode($arr['description']),
'location' => [ 'type' => 'Place', 'name' => bbcode($arr['location']) ],
- 'source' => [ 'content' => format_event_bbcode($arr), 'mediaType' => 'text/x-multicode' ],
+ 'source' => [ 'content' => format_event_bbcode($arr), 'mediaType' => 'text/bbcode' ],
'url' => [ [ 'mediaType' => 'text/calendar', 'href' => z_root() . '/events/ical/' . $event['event_hash'] ] ],
'actor' => Activity::encode_person($z, false),
'attachment' => Activity::encode_attachment($item_arr),
diff --git a/include/features.php b/include/features.php
index 584d9cdfb..e57859aa8 100644
--- a/include/features.php
+++ b/include/features.php
@@ -373,6 +373,14 @@ function get_features($filtered = true, $level = (-1)) {
t('If location data is available on uploaded photos, link this to a map.'),
false,
get_config('feature_lock','photo_location'),
+ ],
+
+ [
+ 'adult_photo_flagging',
+ t('Flag Adult Photos'),
+ t('Provide photo edit option to hide inappropriate photos from default album view'),
+ false,
+ get_config('feature_lock','adult_photo_flagging'),
]
],
diff --git a/include/html2bbcode.php b/include/html2bbcode.php
index cc67a5666..0aa067371 100644
--- a/include/html2bbcode.php
+++ b/include/html2bbcode.php
@@ -87,7 +87,7 @@ function deletenode(&$doc, $node)
function html2bbcode($message)
{
- if(!is_string($message) && !$message)
+ if(!is_string($message))
return;
$message = str_replace("\r", "", $message);
@@ -104,11 +104,14 @@ function html2bbcode($message)
$message = preg_replace('=<(\w+):(.+?)>=', '<removeme>', $message);
$message = preg_replace('=</(\w+):(.+?)>=', '</removeme>', $message);
+ $message = mb_convert_encoding($message, 'HTML-ENTITIES', "UTF-8");
+
+ if(!$message)
+ return;
+
$doc = new DOMDocument();
$doc->preserveWhiteSpace = false;
- $message = mb_convert_encoding($message, 'HTML-ENTITIES', "UTF-8");
-
@$doc->loadHTML($message);
deletenode($doc, 'style');
diff --git a/include/items.php b/include/items.php
index 8a2faa623..d4c27ab28 100644
--- a/include/items.php
+++ b/include/items.php
@@ -3219,6 +3219,7 @@ function start_delivery_chain($channel, $item, $item_id, $parent, $group = false
}
+ $arr['title'] = $item['title'];
$arr['tgt_type'] = $item['tgt_type'];
$arr['target'] = $item['target'];
@@ -4830,7 +4831,10 @@ function fix_attached_photo_permissions($uid,$xchan_hash,$body,
$match = null;
// match img and zmg image links
if(preg_match_all("/\[[zi]mg(.*?)\](.*?)\[\/[zi]mg\]/",$body,$match)) {
- $images = $match[2];
+
+ // The URI can be in both places
+ $images = array_merge($match[1], $match[2]);
+
if($images) {
foreach($images as $image) {
if(! stristr($image,z_root() . '/photo/'))
@@ -4848,6 +4852,7 @@ function fix_attached_photo_permissions($uid,$xchan_hash,$body,
dbesc($image_uri),
intval($uid)
);
+
if($r && $r[0]['folder']) {
$f = q("select * from attach where hash = '%s' and is_dir = 1 and uid = %d limit 1",
dbesc($r[0]['folder']),
diff --git a/include/nav.php b/include/nav.php
index b9b24e34c..c2c87232b 100644
--- a/include/nav.php
+++ b/include/nav.php
@@ -83,7 +83,8 @@ function nav($template = 'default') {
if ($observer) {
$userinfo = [
'icon' => $observer['xchan_photo_m'] . '?rev=' . strtotime($observer['xchan_photo_date']),
- 'name' => $observer['xchan_addr'],
+ 'addr' => $observer['xchan_addr'],
+ 'name' => $observer['xchan_name'],
];
}
@@ -499,29 +500,6 @@ function channel_apps($is_owner = false, $nickname = null) {
];
}
- if ($p['view_pages'] && Apps::system_app_installed($uid, 'Cards')) {
- $tabs[] = [
- 'label' => t('Cards'),
- 'url' => z_root() . '/cards/' . $nickname,
- 'sel' => ((argv(0) == 'cards') ? 'active' : ''),
- 'title' => t('View Cards'),
- 'id' => 'cards-tab',
- 'icon' => 'list'
- ];
- }
-
- if ($p['view_pages'] && Apps::system_app_installed($uid, 'Articles')) {
- $tabs[] = [
- 'label' => t('Articles'),
- 'url' => z_root() . '/articles/' . $nickname,
- 'sel' => ((argv(0) == 'articles') ? 'active' : ''),
- 'title' => t('View Articles'),
- 'id' => 'articles-tab',
- 'icon' => 'file-text-o'
- ];
- }
-
-
if ($has_webpages && Apps::system_app_installed($uid, 'Webpages')) {
$tabs[] = [
'label' => t('Webpages'),
@@ -533,7 +511,6 @@ function channel_apps($is_owner = false, $nickname = null) {
];
}
-
if ($p['view_wiki'] && Apps::system_app_installed($uid, 'Wiki')) {
$tabs[] = [
'label' => t('Wikis'),
diff --git a/include/photos.php b/include/photos.php
index 5bceb516d..9e4e8923d 100644
--- a/include/photos.php
+++ b/include/photos.php
@@ -359,13 +359,13 @@ function photo_upload($channel, $observer, $args) {
$scale = 1;
$width = $url[1]['width'];
$height = $url[1]['height'];
- $tag = (($r1) ? '[zmg=' . $width . 'x' . $height . ']' : '[zmg]');
+ $tag = (($r1) ? '[zmg=' . $url[1]['href'] . ']' : '[zmg]');
}
else {
$scale = 2;
$width = $url[2]['width'];
$height = $url[2]['height'];
- $tag = (($r2) ? '[zmg=' . $width . 'x' . $height . ']' : '[zmg]');
+ $tag = (($r2) ? '[zmg=' .$url[2]['href'] . ']' : '[zmg]');
}
$author_link = '[zrl=' . z_root() . '/channel/' . $channel['channel_address'] . ']' . $channel['channel_name'] . '[/zrl]';
@@ -379,7 +379,7 @@ function photo_upload($channel, $observer, $args) {
$summary = (($args['body']) ? $args['body'] : '') . '[footer]' . $activity_format . '[/footer]';
$obj_body = '[zrl=' . z_root() . '/photos/' . $channel['channel_address'] . '/image/' . $photo_hash . ']'
- . $tag . z_root() . "/photo/{$photo_hash}-{$scale}." . $ph->getExt() . '[/zmg]'
+ . $tag . $filename . '[/zmg]'
. '[/zrl]';
$url[] = [
diff --git a/include/plugin.php b/include/plugin.php
index f9cee7ed6..a17f5761d 100644
--- a/include/plugin.php
+++ b/include/plugin.php
@@ -275,13 +275,16 @@ function plugins_sync() {
if(! array_walk($plugins_arr,'array_trim'))
return;
- App::$plugins = $plugins_arr;
-
$installed_arr = [];
if(count($installed)) {
foreach($installed as $i) {
- if(! in_array($i, $plugins_arr)) {
+ if (! file_exists('addon/' . $i . '/' . $i . '.php')) {
+ q("DELETE FROM addon WHERE aname = '%s' ",
+ dbesc($i)
+ );
+ }
+ elseif(! in_array($i, $plugins_arr)) {
unload_plugin($i);
}
else {
@@ -298,6 +301,8 @@ function plugins_sync() {
}
}
+ App::$plugins = $installed_arr;
+
}
diff --git a/vendor/autoload.php b/vendor/autoload.php
index 8b4926c3d..5f506ac21 100644
--- a/vendor/autoload.php
+++ b/vendor/autoload.php
@@ -2,6 +2,11 @@
// autoload.php @generated by Composer
+if (PHP_VERSION_ID < 50600) {
+ echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
+ exit(1);
+}
+
require_once __DIR__ . '/composer/autoload_real.php';
return ComposerAutoloaderInit7b34d7e50a62201ec5d5e526a5b8b35d::getLoader();
diff --git a/vendor/bshaffer/oauth2-server-php/.github/workflows/tests.yml b/vendor/bshaffer/oauth2-server-php/.github/workflows/tests.yml
new file mode 100644
index 000000000..958f65765
--- /dev/null
+++ b/vendor/bshaffer/oauth2-server-php/.github/workflows/tests.yml
@@ -0,0 +1,55 @@
+name: Test Suite
+on:
+ push:
+ branches:
+ - master
+ pull_request:
+jobs:
+ test:
+ runs-on: ubuntu-latest
+ services:
+ redis:
+ image: redis
+ ports:
+ - 6379:6379
+ options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
+ mongodb:
+ image: mongo
+ ports:
+ - 27017:27017
+ myriadb:
+ image: mariadb
+ env:
+ MYSQL_ROOT_PASSWORD: root
+ ports:
+ - 3808:3808
+ - 3306:3306
+ postgres:
+ image: postgres
+ env:
+ POSTGRES_DB: oauth2_server_php
+ POSTGRES_USER: postgres
+ POSTGRES_PASSWORD: postgres
+ ports:
+ - 5432:5432
+ options: --health-cmd="pg_isready -h localhost" --health-interval=10s --health-timeout=5s --health-retries=5
+ strategy:
+ matrix:
+ php: [ 7.1, 7.2, 7.3, 7.4, "8.0", 8.1 ]
+ name: "PHP ${{ matrix.php }} Unit Test"
+ steps:
+ - uses: actions/checkout@v2
+ - uses: codecov/codecov-action@v1
+ - name: Setup PHP
+ uses: shivammathur/setup-php@v2
+ with:
+ php-version: ${{ matrix.php }}
+ extensions: mongodb, mbstring, intl, redis, pdo_mysql
+ - name: Install composer dependencies
+ uses: nick-invision/retry@v1
+ with:
+ timeout_minutes: 10
+ max_attempts: 3
+ command: composer install
+ - name: Run PHPUnit
+ run: vendor/bin/phpunit -v
diff --git a/vendor/bshaffer/oauth2-server-php/composer.json b/vendor/bshaffer/oauth2-server-php/composer.json
index 272d20027..5b763a6f1 100644
--- a/vendor/bshaffer/oauth2-server-php/composer.json
+++ b/vendor/bshaffer/oauth2-server-php/composer.json
@@ -16,15 +16,16 @@
"psr-0": { "OAuth2": "src/" }
},
"require":{
- "php":">=5.3.9"
+ "php":">=7.1"
},
"require-dev": {
- "phpunit/phpunit": "^4.0",
- "aws/aws-sdk-php": "~2.8",
- "firebase/php-jwt": "~2.2",
- "predis/predis": "dev-master",
+ "phpunit/phpunit": "^7.5||^8.0",
+ "aws/aws-sdk-php": "^2.8",
+ "firebase/php-jwt": "^2.2",
+ "predis/predis": "^1.1",
"thobbs/phpcassa": "dev-master",
- "mongodb/mongodb": "^1.1"
+ "mongodb/mongodb": "^1.1",
+ "yoast/phpunit-polyfills": "^1.0"
},
"suggest": {
"predis/predis": "Required to use Redis storage",
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/CouchbaseDB.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/CouchbaseDB.php
index 9e8148b6b..9e8148b6b 100644..100755
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/CouchbaseDB.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/CouchbaseDB.php
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/Controller/AuthorizeControllerTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Controller/AuthorizeControllerTest.php
index fe3553b23..88f0d0da0 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/Controller/AuthorizeControllerTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Controller/AuthorizeControllerTest.php
@@ -133,7 +133,7 @@ class AuthorizeControllerTest extends TestCase
$server->handleAuthorizeRequest($request, $response = new Response(), true);
$this->assertEquals($response->getStatusCode(), 302);
- $this->assertNotContains('error', $response->getHttpHeader('Location'));
+ $this->assertStringNotContainsString('error', $response->getHttpHeader('Location'));
}
public function testEnforceScope()
@@ -161,7 +161,7 @@ class AuthorizeControllerTest extends TestCase
$server->handleAuthorizeRequest($request, $response = new Response(), true);
$this->assertEquals($response->getStatusCode(), 302);
- $this->assertNotContains('error', $response->getHttpHeader('Location'));
+ $this->assertStringNotContainsString('error', $response->getHttpHeader('Location'));
}
public function testInvalidRedirectUri()
@@ -227,7 +227,7 @@ class AuthorizeControllerTest extends TestCase
$server->handleAuthorizeRequest($request, $response = new Response(), true);
$this->assertEquals($response->getStatusCode(), 302);
- $this->assertContains('code', $response->getHttpHeader('Location'));
+ $this->assertStringContainsString('code', $response->getHttpHeader('Location'));
}
public function testRedirectUriWithDifferentQueryAndExactMatchRequired()
@@ -263,7 +263,7 @@ class AuthorizeControllerTest extends TestCase
$server->handleAuthorizeRequest($request, $response = new Response(), true);
$this->assertEquals($response->getStatusCode(), 302);
- $this->assertContains('code', $response->getHttpHeader('Location'));
+ $this->assertStringContainsString('code', $response->getHttpHeader('Location'));
}
public function testMultipleRedirectUris()
@@ -278,14 +278,14 @@ class AuthorizeControllerTest extends TestCase
$server->handleAuthorizeRequest($request, $response = new Response(), true);
$this->assertEquals($response->getStatusCode(), 302);
- $this->assertContains('code', $response->getHttpHeader('Location'));
+ $this->assertStringContainsString('code', $response->getHttpHeader('Location'));
// call again with different (but still valid) redirect URI
$request->query['redirect_uri'] = 'http://morehazards.com';
$server->handleAuthorizeRequest($request, $response = new Response(), true);
$this->assertEquals($response->getStatusCode(), 302);
- $this->assertContains('code', $response->getHttpHeader('Location'));
+ $this->assertStringContainsString('code', $response->getHttpHeader('Location'));
}
/**
@@ -303,7 +303,7 @@ class AuthorizeControllerTest extends TestCase
$server->handleAuthorizeRequest($request, $response = new Response(), true);
$this->assertEquals($response->getStatusCode(), 302);
- $this->assertContains('state', $response->getHttpHeader('Location'));
+ $this->assertStringContainsString('state', $response->getHttpHeader('Location'));
$this->assertStringStartsWith('http://brentertainment.com?code=', $response->getHttpHeader('Location'));
$parts = parse_url($response->getHttpHeader('Location'));
@@ -421,7 +421,7 @@ class AuthorizeControllerTest extends TestCase
$this->assertEquals($response->getStatusCode(), 302);
$location = $response->getHttpHeader('Location');
- $this->assertNotContains('error', $location);
+ $this->assertStringNotContainsString('error', $location);
$parts = parse_url($location);
$this->assertFalse(isset($parts['fake']));
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/Encryption/FirebaseJwtTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Encryption/FirebaseJwtTest.php
index c7e92c053..63a5d4036 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/Encryption/FirebaseJwtTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Encryption/FirebaseJwtTest.php
@@ -9,7 +9,7 @@ class FirebaseJwtTest extends TestCase
{
private $privateKey;
- public function setUp()
+ public function setUp(): void
{
$this->privateKey = <<<EOD
-----BEGIN RSA PRIVATE KEY-----
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/Encryption/JwtTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Encryption/JwtTest.php
index d73b4c923..376a922b1 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/Encryption/JwtTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Encryption/JwtTest.php
@@ -9,7 +9,7 @@ class JwtTest extends TestCase
{
private $privateKey;
- public function setUp()
+ public function setUp(): void
{
$this->privateKey = <<<EOD
-----BEGIN RSA PRIVATE KEY-----
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/JwtBearerTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/JwtBearerTest.php
index e60023b3c..4f6d67b2c 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/JwtBearerTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/JwtBearerTest.php
@@ -13,7 +13,7 @@ class JwtBearerTest extends TestCase
{
private $privateKey;
- public function setUp()
+ public function setUp(): void
{
$this->privateKey = <<<EOD
-----BEGIN RSA PRIVATE KEY-----
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/ResponseType/CodeIdTokenTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/ResponseType/CodeIdTokenTest.php
index 7b892c946..f08322bd4 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/ResponseType/CodeIdTokenTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/ResponseType/CodeIdTokenTest.php
@@ -29,7 +29,7 @@ class CodeIdTokenTest extends TestCase
$this->assertEquals($response->getStatusCode(), 302);
$location = $response->getHttpHeader('Location');
- $this->assertNotContains('error', $location);
+ $this->assertStringNotContainsString('error', $location);
$parts = parse_url($location);
$this->assertArrayHasKey('query', $parts);
@@ -87,7 +87,7 @@ class CodeIdTokenTest extends TestCase
$this->assertEquals($response->getStatusCode(), 302);
$location = $response->getHttpHeader('Location');
- $this->assertNotContains('error', $location);
+ $this->assertStringNotContainsString('error', $location);
$parts = parse_url($location);
$this->assertArrayHasKey('query', $parts);
@@ -133,7 +133,7 @@ class CodeIdTokenTest extends TestCase
$this->assertEquals($response->getStatusCode(), 302);
$location = $response->getHttpHeader('Location');
- $this->assertNotContains('error', $location);
+ $this->assertStringNotContainsString('error', $location);
$parts = parse_url($location);
$this->assertArrayHasKey('query', $parts);
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/ResponseType/IdTokenTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/ResponseType/IdTokenTest.php
index a0df3a936..85f8abc86 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/ResponseType/IdTokenTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/ResponseType/IdTokenTest.php
@@ -52,7 +52,7 @@ class IdTokenTest extends TestCase
$this->assertEquals($response->getStatusCode(), 302);
$location = $response->getHttpHeader('Location');
- $this->assertNotContains('error', $location);
+ $this->assertStringNotContainsString('error', $location);
$parts = parse_url($location);
$this->assertArrayHasKey('fragment', $parts);
@@ -110,7 +110,7 @@ class IdTokenTest extends TestCase
{
$this->assertEquals($response->getStatusCode(), 302);
$location = $response->getHttpHeader('Location');
- $this->assertNotContains('error', $location);
+ $this->assertStringNotContainsString('error', $location);
$parts = parse_url($location);
$this->assertArrayHasKey('fragment', $parts);
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/ResponseType/IdTokenTokenTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/ResponseType/IdTokenTokenTest.php
index 0573a9866..6d4cb14c3 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/ResponseType/IdTokenTokenTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/ResponseType/IdTokenTokenTest.php
@@ -31,7 +31,7 @@ class IdTokenTokenTest extends TestCase
$this->assertEquals($response->getStatusCode(), 302);
$location = $response->getHttpHeader('Location');
- $this->assertNotContains('error', $location);
+ $this->assertStringNotContainsString('error', $location);
$parts = parse_url($location);
$this->assertArrayHasKey('fragment', $parts);
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseTest.php
index 172bc88fd..338f5cc93 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseTest.php
@@ -14,7 +14,7 @@ class ResponseTest extends TestCase
));
$string = $response->getResponseBody('xml');
- $this->assertContains('<response><foo>bar</foo><halland>oates</halland></response>', $string);
+ $this->assertStringContainsString('<response><foo>bar</foo><halland>oates</halland></response>', $string);
}
public function testSetRedirect()
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/ServerTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/ServerTest.php
index 3106961e2..fab526a6f 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/ServerTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/ServerTest.php
@@ -6,27 +6,26 @@ use OAuth2\Request\TestRequest;
use OAuth2\ResponseType\AuthorizationCode;
use OAuth2\Storage\Bootstrap;
use PHPUnit\Framework\TestCase;
+use Yoast\PHPUnitPolyfills\Polyfills\ExpectPHPException;
class ServerTest extends TestCase
{
- /**
- * @expectedException LogicException OAuth2\Storage\ClientInterface
- **/
+ use ExpectPHPException;
+
public function testGetAuthorizeControllerWithNoClientStorageThrowsException()
{
+ $this->expectExceptionMessage('OAuth2\Storage\ClientInterface');
// must set Client Storage
$server = new Server();
$server->getAuthorizeController();
}
- /**
- * @expectedException LogicException OAuth2\Storage\AccessTokenInterface
- **/
public function testGetAuthorizeControllerWithNoAccessTokenStorageThrowsException()
{
+ $this->expectExceptionMessage('OAuth2\Storage\AccessTokenInterface');
// must set AccessToken or AuthorizationCode
$server = new Server();
- $server->addStorage($this->getMock('OAuth2\Storage\ClientInterface'));
+ $server->addStorage($this->createMock('OAuth2\Storage\ClientInterface'));
$server->getAuthorizeController();
}
@@ -34,8 +33,8 @@ class ServerTest extends TestCase
{
// must set AccessToken or AuthorizationCode
$server = new Server();
- $server->addStorage($this->getMock('OAuth2\Storage\ClientInterface'));
- $server->addResponseType($this->getMock('OAuth2\ResponseType\AccessTokenInterface'));
+ $server->addStorage($this->createMock('OAuth2\Storage\ClientInterface'));
+ $server->addResponseType($this->createMock('OAuth2\ResponseType\AccessTokenInterface'));
$this->assertNotNull($server->getAuthorizeController());
}
@@ -44,21 +43,19 @@ class ServerTest extends TestCase
{
// must set AccessToken or AuthorizationCode
$server = new Server();
- $server->addStorage($this->getMock('OAuth2\Storage\ClientInterface'));
- $server->addResponseType($this->getMock('OAuth2\ResponseType\AuthorizationCodeInterface'));
+ $server->addStorage($this->createMock('OAuth2\Storage\ClientInterface'));
+ $server->addResponseType($this->createMock('OAuth2\ResponseType\AuthorizationCodeInterface'));
$this->assertNotNull($server->getAuthorizeController());
}
- /**
- * @expectedException LogicException allow_implicit
- **/
public function testGetAuthorizeControllerWithClientStorageAndAccessTokenStorageThrowsException()
{
// must set AuthorizationCode or AccessToken / implicit
+ $this->expectExceptionMessage('allow_implicit');
$server = new Server();
- $server->addStorage($this->getMock('OAuth2\Storage\ClientInterface'));
- $server->addStorage($this->getMock('OAuth2\Storage\AccessTokenInterface'));
+ $server->addStorage($this->createMock('OAuth2\Storage\ClientInterface'));
+ $server->addStorage($this->createMock('OAuth2\Storage\AccessTokenInterface'));
$this->assertNotNull($server->getAuthorizeController());
}
@@ -67,8 +64,8 @@ class ServerTest extends TestCase
{
// must set AuthorizationCode or AccessToken / implicit
$server = new Server(array(), array('allow_implicit' => true));
- $server->addStorage($this->getMock('OAuth2\Storage\ClientInterface'));
- $server->addStorage($this->getMock('OAuth2\Storage\AccessTokenInterface'));
+ $server->addStorage($this->createMock('OAuth2\Storage\ClientInterface'));
+ $server->addStorage($this->createMock('OAuth2\Storage\AccessTokenInterface'));
$this->assertNotNull($server->getAuthorizeController());
}
@@ -77,63 +74,55 @@ class ServerTest extends TestCase
{
// must set AccessToken or AuthorizationCode
$server = new Server();
- $server->addStorage($this->getMock('OAuth2\Storage\ClientInterface'));
- $server->addStorage($this->getMock('OAuth2\Storage\AuthorizationCodeInterface'));
+ $server->addStorage($this->createMock('OAuth2\Storage\ClientInterface'));
+ $server->addStorage($this->createMock('OAuth2\Storage\AuthorizationCodeInterface'));
$this->assertNotNull($server->getAuthorizeController());
}
- /**
- * @expectedException LogicException grant_types
- **/
public function testGetTokenControllerWithGrantTypeStorageThrowsException()
{
+ $this->expectExceptionMessage('grant_types');
$server = new Server();
$server->getTokenController();
}
- /**
- * @expectedException LogicException OAuth2\Storage\ClientCredentialsInterface
- **/
public function testGetTokenControllerWithNoClientCredentialsStorageThrowsException()
{
+ $this->expectExceptionMessage('OAuth2\Storage\ClientCredentialsInterface');
$server = new Server();
- $server->addStorage($this->getMock('OAuth2\Storage\UserCredentialsInterface'));
+ $server->addStorage($this->createMock('OAuth2\Storage\UserCredentialsInterface'));
$server->getTokenController();
}
- /**
- * @expectedException LogicException OAuth2\Storage\AccessTokenInterface
- **/
public function testGetTokenControllerWithNoAccessTokenStorageThrowsException()
{
+ $this->expectExceptionMessage('OAuth2\Storage\AccessTokenInterface');
$server = new Server();
- $server->addStorage($this->getMock('OAuth2\Storage\ClientCredentialsInterface'));
+ $server->addStorage($this->createMock('OAuth2\Storage\ClientCredentialsInterface'));
$server->getTokenController();
}
public function testGetTokenControllerWithAccessTokenAndClientCredentialsStorage()
{
$server = new Server();
- $server->addStorage($this->getMock('OAuth2\Storage\AccessTokenInterface'));
- $server->addStorage($this->getMock('OAuth2\Storage\ClientCredentialsInterface'));
+ $server->addStorage($this->createMock('OAuth2\Storage\AccessTokenInterface'));
+ $server->addStorage($this->createMock('OAuth2\Storage\ClientCredentialsInterface'));
$server->getTokenController();
}
public function testGetTokenControllerAccessTokenStorageAndClientCredentialsStorageAndGrantTypes()
{
$server = new Server();
- $server->addStorage($this->getMock('OAuth2\Storage\AccessTokenInterface'));
- $server->addStorage($this->getMock('OAuth2\Storage\ClientCredentialsInterface'));
- $server->addGrantType($this->getMockBuilder('OAuth2\GrantType\AuthorizationCode')->disableOriginalConstructor()->getMock());
+ $server->addStorage($this->createMock('OAuth2\Storage\AccessTokenInterface'));
+ $server->addStorage($this->createMock('OAuth2\Storage\ClientCredentialsInterface'));
+ $server->addGrantType($this->createMock('OAuth2\GrantType\AuthorizationCode'));
$server->getTokenController();
}
- /**
- * @expectedException LogicException OAuth2\Storage\AccessTokenInterface
- **/
public function testGetResourceControllerWithNoAccessTokenStorageThrowsException()
{
+ $this->expectExceptionMessage('OAuth2\Storage\AccessTokenInterface');
$server = new Server();
$server->getResourceController();
}
@@ -141,41 +130,35 @@ class ServerTest extends TestCase
public function testGetResourceControllerWithAccessTokenStorage()
{
$server = new Server();
- $server->addStorage($this->getMock('OAuth2\Storage\AccessTokenInterface'));
+ $server->addStorage($this->createMock('OAuth2\Storage\AccessTokenInterface'));
$server->getResourceController();
}
- /**
- * @expectedException InvalidArgumentException OAuth2\Storage\AccessTokenInterface
- **/
public function testAddingStorageWithInvalidClass()
{
+ $this->expectExceptionMessage('OAuth2\Storage\AccessTokenInterface');
$server = new Server();
$server->addStorage(new \StdClass());
}
- /**
- * @expectedException InvalidArgumentException access_token
- **/
public function testAddingStorageWithInvalidKey()
{
+ $this->expectExceptionMessage('access_token');
$server = new Server();
- $server->addStorage($this->getMock('OAuth2\Storage\AccessTokenInterface'), 'nonexistant_storage');
+ $server->addStorage($this->createMock('OAuth2\Storage\AccessTokenInterface'), 'nonexistant_storage');
}
- /**
- * @expectedException InvalidArgumentException OAuth2\Storage\AuthorizationCodeInterface
- **/
public function testAddingStorageWithInvalidKeyStorageCombination()
{
+ $this->expectExceptionMessage('OAuth2\Storage\AuthorizationCodeInterface');
$server = new Server();
- $server->addStorage($this->getMock('OAuth2\Storage\AccessTokenInterface'), 'authorization_code');
+ $server->addStorage($this->createMock('OAuth2\Storage\AccessTokenInterface'), 'authorization_code');
}
public function testAddingStorageWithValidKeyOnlySetsThatKey()
{
$server = new Server();
- $server->addStorage($this->getMock('OAuth2\Storage\Memory'), 'access_token');
+ $server->addStorage($this->createMock('OAuth2\Storage\Memory'), 'access_token');
$reflection = new \ReflectionClass($server);
$prop = $reflection->getProperty('storages');
@@ -191,7 +174,7 @@ class ServerTest extends TestCase
public function testAddingClientStorageSetsClientCredentialsStorageByDefault()
{
$server = new Server();
- $memory = $this->getMock('OAuth2\Storage\Memory');
+ $memory = $this->createMock('OAuth2\Storage\Memory');
$server->addStorage($memory, 'client');
$client_credentials = $server->getStorage('client_credentials');
@@ -202,7 +185,7 @@ class ServerTest extends TestCase
public function testAddStorageWithNullValue()
{
- $memory = $this->getMock('OAuth2\Storage\Memory');
+ $memory = $this->createMock('OAuth2\Storage\Memory');
$server = new Server($memory);
$server->addStorage(null, 'refresh_token');
@@ -218,7 +201,7 @@ class ServerTest extends TestCase
public function testNewServerWithNullStorageValue()
{
- $memory = $this->getMock('OAuth2\Storage\Memory');
+ $memory = $this->createMock('OAuth2\Storage\Memory');
$server = new Server(array(
'client_credentials' => $memory,
'refresh_token' => null,
@@ -237,7 +220,7 @@ class ServerTest extends TestCase
public function testAddingClientCredentialsStorageSetsClientStorageByDefault()
{
$server = new Server();
- $memory = $this->getMock('OAuth2\Storage\Memory');
+ $memory = $this->createMock('OAuth2\Storage\Memory');
$server->addStorage($memory, 'client_credentials');
$client = $server->getStorage('client');
@@ -249,10 +232,9 @@ class ServerTest extends TestCase
public function testSettingClientStorageByDefaultDoesNotOverrideSetStorage()
{
$server = new Server();
- $pdo = $this->getMockBuilder('OAuth2\Storage\Pdo')
- ->disableOriginalConstructor()->getMock();
+ $pdo = $this->createMock('OAuth2\Storage\Pdo');
- $memory = $this->getMock('OAuth2\Storage\Memory');
+ $memory = $this->createMock('OAuth2\Storage\Memory');
$server->addStorage($pdo, 'client');
$server->addStorage($memory, 'client_credentials');
@@ -266,7 +248,7 @@ class ServerTest extends TestCase
public function testAddingResponseType()
{
- $storage = $this->getMock('OAuth2\Storage\Memory');
+ $storage = $this->createMock('OAuth2\Storage\Memory');
$storage
->expects($this->any())
->method('getClientDetails')
@@ -323,7 +305,7 @@ class ServerTest extends TestCase
'code' => 'testcode',
));
// verify the mock clientAssertionType was called as expected
- $clientAssertionType = $this->getMock('OAuth2\ClientAssertionType\ClientAssertionTypeInterface', array('validateRequest', 'getClientId'));
+ $clientAssertionType = $this->createMock('OAuth2\ClientAssertionType\ClientAssertionTypeInterface');
$clientAssertionType
->expects($this->once())
->method('validateRequest')
@@ -420,98 +402,84 @@ class ServerTest extends TestCase
$this->assertFalse($used_token, 'the refresh token used is no longer valid');
}
- /**
- * @expectedException InvalidArgumentException OAuth2\ResponseType\AuthorizationCodeInterface
- **/
public function testAddingUnknownResponseTypeThrowsException()
{
+ $this->expectExceptionMessage('OAuth2\ResponseType\AuthorizationCodeInterface');
$server = new Server();
- $server->addResponseType($this->getMock('OAuth2\ResponseType\ResponseTypeInterface'));
+ $server->addResponseType($this->createMock('OAuth2\ResponseType\ResponseTypeInterface'));
}
- /**
- * @expectedException LogicException OAuth2\Storage\PublicKeyInterface
- **/
public function testUsingJwtAccessTokensWithoutPublicKeyStorageThrowsException()
{
+ $this->expectExceptionMessage('OAuth2\Storage\PublicKeyInterface');
$server = new Server(array(), array('use_jwt_access_tokens' => true));
- $server->addGrantType($this->getMock('OAuth2\GrantType\GrantTypeInterface'));
- $server->addStorage($this->getMock('OAuth2\Storage\ClientCredentialsInterface'));
- $server->addStorage($this->getMock('OAuth2\Storage\ClientCredentialsInterface'));
+ $server->addGrantType($this->createMock('OAuth2\GrantType\GrantTypeInterface'));
+ $server->addStorage($this->createMock('OAuth2\Storage\ClientCredentialsInterface'));
+ $server->addStorage($this->createMock('OAuth2\Storage\ClientCredentialsInterface'));
$server->getTokenController();
}
public function testUsingJustJwtAccessTokenStorageWithResourceControllerIsOkay()
{
- $pubkey = $this->getMock('OAuth2\Storage\PublicKeyInterface');
+ $pubkey = $this->createMock('OAuth2\Storage\PublicKeyInterface');
$server = new Server(array($pubkey), array('use_jwt_access_tokens' => true));
$this->assertNotNull($server->getResourceController());
$this->assertInstanceOf('OAuth2\Storage\PublicKeyInterface', $server->getStorage('public_key'));
}
- /**
- * @expectedException LogicException OAuth2\Storage\ClientInterface
- **/
public function testUsingJustJwtAccessTokenStorageWithAuthorizeControllerThrowsException()
{
- $pubkey = $this->getMock('OAuth2\Storage\PublicKeyInterface');
+ $this->expectExceptionMessage('OAuth2\Storage\ClientInterface');
+ $pubkey = $this->createMock('OAuth2\Storage\PublicKeyInterface');
$server = new Server(array($pubkey), array('use_jwt_access_tokens' => true));
$this->assertNotNull($server->getAuthorizeController());
}
- /**
- * @expectedException LogicException grant_types
- **/
public function testUsingJustJwtAccessTokenStorageWithTokenControllerThrowsException()
{
- $pubkey = $this->getMock('OAuth2\Storage\PublicKeyInterface');
+ $this->expectExceptionMessage('grant_types');
+ $pubkey = $this->createMock('OAuth2\Storage\PublicKeyInterface');
$server = new Server(array($pubkey), array('use_jwt_access_tokens' => true));
$server->getTokenController();
}
public function testUsingJwtAccessTokenAndClientStorageWithAuthorizeControllerIsOkay()
{
- $pubkey = $this->getMock('OAuth2\Storage\PublicKeyInterface');
- $client = $this->getMock('OAuth2\Storage\ClientInterface');
+ $pubkey = $this->createMock('OAuth2\Storage\PublicKeyInterface');
+ $client = $this->createMock('OAuth2\Storage\ClientInterface');
$server = new Server(array($pubkey, $client), array('use_jwt_access_tokens' => true, 'allow_implicit' => true));
$this->assertNotNull($server->getAuthorizeController());
$this->assertInstanceOf('OAuth2\ResponseType\JwtAccessToken', $server->getResponseType('token'));
}
- /**
- * @expectedException LogicException UserClaims
- **/
public function testUsingOpenIDConnectWithoutUserClaimsThrowsException()
{
- $client = $this->getMock('OAuth2\Storage\ClientInterface');
+ $this->expectExceptionMessage('UserClaims');
+ $client = $this->createMock('OAuth2\Storage\ClientInterface');
$server = new Server($client, array('use_openid_connect' => true));
$server->getAuthorizeController();
}
- /**
- * @expectedException LogicException PublicKeyInterface
- **/
public function testUsingOpenIDConnectWithoutPublicKeyThrowsException()
{
- $client = $this->getMock('OAuth2\Storage\ClientInterface');
- $userclaims = $this->getMock('OAuth2\OPenID\Storage\UserClaimsInterface');
+ $this->expectExceptionMessage('PublicKeyInterface');
+ $client = $this->createMock('OAuth2\Storage\ClientInterface');
+ $userclaims = $this->createMock('OAuth2\OPenID\Storage\UserClaimsInterface');
$server = new Server(array($client, $userclaims), array('use_openid_connect' => true));
$server->getAuthorizeController();
}
- /**
- * @expectedException LogicException issuer
- **/
public function testUsingOpenIDConnectWithoutIssuerThrowsException()
{
- $client = $this->getMock('OAuth2\Storage\ClientInterface');
- $userclaims = $this->getMock('OAuth2\OpenID\Storage\UserClaimsInterface');
- $pubkey = $this->getMock('OAuth2\Storage\PublicKeyInterface');
+ $this->expectExceptionMessage('issuer');
+ $client = $this->createMock('OAuth2\Storage\ClientInterface');
+ $userclaims = $this->createMock('OAuth2\OpenID\Storage\UserClaimsInterface');
+ $pubkey = $this->createMock('OAuth2\Storage\PublicKeyInterface');
$server = new Server(array($client, $userclaims, $pubkey), array('use_openid_connect' => true));
$server->getAuthorizeController();
@@ -519,9 +487,9 @@ class ServerTest extends TestCase
public function testUsingOpenIDConnectWithIssuerPublicKeyAndUserClaimsIsOkay()
{
- $client = $this->getMock('OAuth2\Storage\ClientInterface');
- $userclaims = $this->getMock('OAuth2\OpenID\Storage\UserClaimsInterface');
- $pubkey = $this->getMock('OAuth2\Storage\PublicKeyInterface');
+ $client = $this->createMock('OAuth2\Storage\ClientInterface');
+ $userclaims = $this->createMock('OAuth2\OpenID\Storage\UserClaimsInterface');
+ $pubkey = $this->createMock('OAuth2\Storage\PublicKeyInterface');
$server = new Server(array($client, $userclaims, $pubkey), array(
'use_openid_connect' => true,
'issuer' => 'someguy',
@@ -533,14 +501,12 @@ class ServerTest extends TestCase
$this->assertNull($server->getResponseType('id_token token'));
}
- /**
- * @expectedException LogicException OAuth2\ResponseType\AccessTokenInterface
- **/
public function testUsingOpenIDConnectWithAllowImplicitWithoutTokenStorageThrowsException()
{
- $client = $this->getMock('OAuth2\Storage\ClientInterface');
- $userclaims = $this->getMock('OAuth2\OpenID\Storage\UserClaimsInterface');
- $pubkey = $this->getMock('OAuth2\Storage\PublicKeyInterface');
+ $this->expectErrorMessage('OAuth2\ResponseType\AccessTokenInterface');
+ $client = $this->createMock('OAuth2\Storage\ClientInterface');
+ $userclaims = $this->createMock('OAuth2\OpenID\Storage\UserClaimsInterface');
+ $pubkey = $this->createMock('OAuth2\Storage\PublicKeyInterface');
$server = new Server(array($client, $userclaims, $pubkey), array(
'use_openid_connect' => true,
'issuer' => 'someguy',
@@ -552,9 +518,9 @@ class ServerTest extends TestCase
public function testUsingOpenIDConnectWithAllowImplicitAndUseJwtAccessTokensIsOkay()
{
- $client = $this->getMock('OAuth2\Storage\ClientInterface');
- $userclaims = $this->getMock('OAuth2\OpenID\Storage\UserClaimsInterface');
- $pubkey = $this->getMock('OAuth2\Storage\PublicKeyInterface');
+ $client = $this->createMock('OAuth2\Storage\ClientInterface');
+ $userclaims = $this->createMock('OAuth2\OpenID\Storage\UserClaimsInterface');
+ $pubkey = $this->createMock('OAuth2\Storage\PublicKeyInterface');
$server = new Server(array($client, $userclaims, $pubkey), array(
'use_openid_connect' => true,
'issuer' => 'someguy',
@@ -570,10 +536,10 @@ class ServerTest extends TestCase
public function testUsingOpenIDConnectWithAllowImplicitAndAccessTokenStorageIsOkay()
{
- $client = $this->getMock('OAuth2\Storage\ClientInterface');
- $userclaims = $this->getMock('OAuth2\OpenID\Storage\UserClaimsInterface');
- $pubkey = $this->getMock('OAuth2\Storage\PublicKeyInterface');
- $token = $this->getMock('OAuth2\Storage\AccessTokenInterface');
+ $client = $this->createMock('OAuth2\Storage\ClientInterface');
+ $userclaims = $this->createMock('OAuth2\OpenID\Storage\UserClaimsInterface');
+ $pubkey = $this->createMock('OAuth2\Storage\PublicKeyInterface');
+ $token = $this->createMock('OAuth2\Storage\AccessTokenInterface');
$server = new Server(array($client, $userclaims, $pubkey, $token), array(
'use_openid_connect' => true,
'issuer' => 'someguy',
@@ -588,17 +554,17 @@ class ServerTest extends TestCase
public function testUsingOpenIDConnectWithAllowImplicitAndAccessTokenResponseTypeIsOkay()
{
- $client = $this->getMock('OAuth2\Storage\ClientInterface');
- $userclaims = $this->getMock('OAuth2\OpenID\Storage\UserClaimsInterface');
- $pubkey = $this->getMock('OAuth2\Storage\PublicKeyInterface');
- // $token = $this->getMock('OAuth2\Storage\AccessTokenInterface');
+ $client = $this->createMock('OAuth2\Storage\ClientInterface');
+ $userclaims = $this->createMock('OAuth2\OpenID\Storage\UserClaimsInterface');
+ $pubkey = $this->createMock('OAuth2\Storage\PublicKeyInterface');
+ // $token = $this->createMock('OAuth2\Storage\AccessTokenInterface');
$server = new Server(array($client, $userclaims, $pubkey), array(
'use_openid_connect' => true,
'issuer' => 'someguy',
'allow_implicit' => true,
));
- $token = $this->getMock('OAuth2\ResponseType\AccessTokenInterface');
+ $token = $this->createMock('OAuth2\ResponseType\AccessTokenInterface');
$server->addResponseType($token, 'token');
$server->getAuthorizeController();
@@ -607,17 +573,15 @@ class ServerTest extends TestCase
$this->assertInstanceOf('OAuth2\OpenID\ResponseType\IdTokenTokenInterface', $server->getResponseType('id_token token'));
}
- /**
- * @expectedException LogicException OAuth2\OpenID\Storage\AuthorizationCodeInterface
- **/
public function testUsingOpenIDConnectWithAuthorizationCodeStorageThrowsException()
{
- $client = $this->getMock('OAuth2\Storage\ClientCredentialsInterface');
- $userclaims = $this->getMock('OAuth2\OpenID\Storage\UserClaimsInterface');
- $pubkey = $this->getMock('OAuth2\Storage\PublicKeyInterface');
- $token = $this->getMock('OAuth2\Storage\AccessTokenInterface');
- $authcode = $this->getMock('OAuth2\Storage\AuthorizationCodeInterface');
+ $client = $this->createMock('OAuth2\Storage\ClientCredentialsInterface');
+ $userclaims = $this->createMock('OAuth2\OpenID\Storage\UserClaimsInterface');
+ $pubkey = $this->createMock('OAuth2\Storage\PublicKeyInterface');
+ $token = $this->createMock('OAuth2\Storage\AccessTokenInterface');
+ $authcode = $this->createMock('OAuth2\Storage\AuthorizationCodeInterface');
+ $this->expectErrorMessage('OAuth2\OpenID\Storage\AuthorizationCodeInterface');
$server = new Server(array($client, $userclaims, $pubkey, $token, $authcode), array(
'use_openid_connect' => true,
'issuer' => 'someguy'
@@ -630,11 +594,11 @@ class ServerTest extends TestCase
public function testUsingOpenIDConnectWithOpenIDAuthorizationCodeStorageCreatesOpenIDAuthorizationCodeGrantType()
{
- $client = $this->getMock('OAuth2\Storage\ClientCredentialsInterface');
- $userclaims = $this->getMock('OAuth2\OpenID\Storage\UserClaimsInterface');
- $pubkey = $this->getMock('OAuth2\Storage\PublicKeyInterface');
- $token = $this->getMock('OAuth2\Storage\AccessTokenInterface');
- $authcode = $this->getMock('OAuth2\OpenID\Storage\AuthorizationCodeInterface');
+ $client = $this->createMock('OAuth2\Storage\ClientCredentialsInterface');
+ $userclaims = $this->createMock('OAuth2\OpenID\Storage\UserClaimsInterface');
+ $pubkey = $this->createMock('OAuth2\Storage\PublicKeyInterface');
+ $token = $this->createMock('OAuth2\Storage\AccessTokenInterface');
+ $authcode = $this->createMock('OAuth2\OpenID\Storage\AuthorizationCodeInterface');
$server = new Server(array($client, $userclaims, $pubkey, $token, $authcode), array(
'use_openid_connect' => true,
@@ -648,7 +612,7 @@ class ServerTest extends TestCase
public function testMultipleValuedResponseTypeOrderDoesntMatter()
{
- $responseType = $this->getMock('OAuth2\OpenID\ResponseType\IdTokenTokenInterface');
+ $responseType = $this->createMock('OAuth2\OpenID\ResponseType\IdTokenTokenInterface');
$server = new Server(array(), array(), array(), array(
'token id_token' => $responseType,
));
@@ -659,7 +623,7 @@ class ServerTest extends TestCase
public function testAddGrantTypeWithoutKey()
{
$server = new Server();
- $server->addGrantType(new \OAuth2\GrantType\AuthorizationCode($this->getMock('OAuth2\Storage\AuthorizationCodeInterface')));
+ $server->addGrantType(new \OAuth2\GrantType\AuthorizationCode($this->createMock('OAuth2\Storage\AuthorizationCodeInterface')));
$grantTypes = $server->getGrantTypes();
$this->assertEquals('authorization_code', key($grantTypes));
@@ -668,7 +632,7 @@ class ServerTest extends TestCase
public function testAddGrantTypeWithKey()
{
$server = new Server();
- $server->addGrantType(new \OAuth2\GrantType\AuthorizationCode($this->getMock('OAuth2\Storage\AuthorizationCodeInterface')), 'ac');
+ $server->addGrantType(new \OAuth2\GrantType\AuthorizationCode($this->createMock('OAuth2\Storage\AuthorizationCodeInterface')), 'ac');
$grantTypes = $server->getGrantTypes();
$this->assertEquals('ac', key($grantTypes));
@@ -677,7 +641,7 @@ class ServerTest extends TestCase
public function testAddGrantTypeWithKeyNotString()
{
$server = new Server();
- $server->addGrantType(new \OAuth2\GrantType\AuthorizationCode($this->getMock('OAuth2\Storage\AuthorizationCodeInterface')), 42);
+ $server->addGrantType(new \OAuth2\GrantType\AuthorizationCode($this->createMock('OAuth2\Storage\AuthorizationCodeInterface')), 42);
$grantTypes = $server->getGrantTypes();
$this->assertEquals('authorization_code', key($grantTypes));
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/Storage/PdoTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Storage/PdoTest.php
index 4599f69bf..9a7630423 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/Storage/PdoTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Storage/PdoTest.php
@@ -2,8 +2,12 @@
namespace OAuth2\Storage;
+use Yoast\PHPUnitPolyfills\Polyfills\ExpectPHPException;
+
class PdoTest extends BaseTest
{
+ use ExpectPHPException;
+
public function testCreatePdoStorageUsingPdoClass()
{
$dsn = sprintf('sqlite:%s', Bootstrap::getInstance()->getSqliteDir());
@@ -30,11 +34,9 @@ class PdoTest extends BaseTest
$this->assertNotNull($storage->getClientDetails('oauth_test_client'));
}
- /**
- * @expectedException InvalidArgumentException dsn
- */
public function testCreatePdoStorageWithoutDSNThrowsException()
{
+ $this->expectErrorMessage('dsn');
$config = array('username' => 'brent', 'password' => 'brentisaballer');
$storage = new Pdo($config);
}
diff --git a/vendor/bshaffer/oauth2-server-php/test/cleanup.php b/vendor/bshaffer/oauth2-server-php/test/cleanup.php
deleted file mode 100644
index 8663a901b..000000000
--- a/vendor/bshaffer/oauth2-server-php/test/cleanup.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-
-require_once(dirname(__FILE__).'/../src/OAuth2/Autoloader.php');
-OAuth2\Autoloader::register();
-
-// register test classes
-OAuth2\Autoloader::register(dirname(__FILE__).'/lib');
-
-// register vendors if possible
-if (file_exists(__DIR__.'/../vendor/autoload.php')) {
- require_once(__DIR__.'/../vendor/autoload.php');
-}
-
-// remove the dynamoDB database that was created for this build
-OAuth2\Storage\Bootstrap::getInstance()->cleanupTravisDynamoDb();
diff --git a/vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Storage/BaseTest.php b/vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Storage/BaseTest.php
index e841d3ad2..e841d3ad2 100644..100755
--- a/vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Storage/BaseTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Storage/BaseTest.php
diff --git a/vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Storage/Bootstrap.php b/vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Storage/Bootstrap.php
index 8e428f9b5..66c93ae5b 100644..100755
--- a/vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Storage/Bootstrap.php
+++ b/vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Storage/Bootstrap.php
@@ -68,7 +68,7 @@ class Bootstrap
public function getPostgresDriver()
{
try {
- $pdo = new \PDO('pgsql:host=localhost;dbname=oauth2_server_php', 'postgres');
+ $pdo = new \PDO('pgsql:host=localhost;dbname=oauth2_server_php', 'postgres', 'postgres');
return $pdo;
} catch (\PDOException $e) {
@@ -118,7 +118,7 @@ class Bootstrap
if (!$this->mysql) {
$pdo = null;
try {
- $pdo = new \PDO('mysql:host=localhost;', 'root');
+ $pdo = new \PDO('mysql:host=localhost;', 'root', 'root');
} catch (\PDOException $e) {
$this->mysql = new NullStorage('MySQL', 'Unable to connect to MySQL on root@localhost');
}
@@ -352,11 +352,11 @@ class Bootstrap
private function createPostgresDb()
{
- if (!`psql postgres -tAc "SELECT 1 FROM pg_roles WHERE rolname='postgres'"`) {
- `createuser -s -r postgres`;
+ if (!`PGPASSWORD=postgres psql postgres -tAc "SELECT 1 FROM pg_roles WHERE rolname='postgres'" -h localhost -U postgres`) {
+ `PGPASSWORD=postgres createuser -s -r postgres -h localhost -U postgres`;
}
- `createdb -O postgres oauth2_server_php`;
+ `PGPASSWORD=postgres createdb -O postgres oauth2_server_php -h localhost -U postgres`;
}
private function populatePostgresDb(\PDO $pdo)
@@ -366,8 +366,8 @@ class Bootstrap
private function removePostgresDb()
{
- if (trim(`psql -l | grep oauth2_server_php | wc -l`)) {
- `dropdb oauth2_server_php`;
+ if (trim(`PGPASSWORD=postgres psql -l -h localhost -U postgres | grep oauth2_server_php | wc -l`)) {
+ `PGPASSWORD=postgres dropdb oauth2_server_php -h localhost -U postgres`;
}
}
@@ -945,21 +945,6 @@ class Bootstrap
));
}
- public function cleanupTravisDynamoDb($prefix = null)
- {
- if (is_null($prefix)) {
- // skip this when not applicable
- if (!$this->getEnvVar('TRAVIS') || self::DYNAMODB_PHP_VERSION != $this->getEnvVar('TRAVIS_PHP_VERSION')) {
- return;
- }
-
- $prefix = sprintf('build_%s_', $this->getEnvVar('TRAVIS_JOB_NUMBER'));
- }
-
- $client = $this->getDynamoDbClient();
- $this->deleteDynamoDb($client, $prefix);
- }
-
private function getEnvVar($var, $default = null)
{
return isset($_SERVER[$var]) ? $_SERVER[$var] : (getenv($var) ?: $default);
diff --git a/vendor/composer/InstalledVersions.php b/vendor/composer/InstalledVersions.php
index d50e0c9fc..41bc143c1 100644
--- a/vendor/composer/InstalledVersions.php
+++ b/vendor/composer/InstalledVersions.php
@@ -21,6 +21,8 @@ use Composer\Semver\VersionParser;
* See also https://getcomposer.org/doc/07-runtime.md#installed-versions
*
* To require its presence, you can require `composer-runtime-api ^2.0`
+ *
+ * @final
*/
class InstalledVersions
{
diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php
index 09137bb42..27745d2c2 100644
--- a/vendor/composer/autoload_classmap.php
+++ b/vendor/composer/autoload_classmap.php
@@ -2,11 +2,10 @@
// autoload_classmap.php @generated by Composer
-$vendorDir = dirname(dirname(__FILE__));
+$vendorDir = dirname(__DIR__);
$baseDir = dirname($vendorDir);
return array(
- 'Attribute' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Attribute.php',
'Brick\\Math\\BigDecimal' => $vendorDir . '/brick/math/src/BigDecimal.php',
'Brick\\Math\\BigInteger' => $vendorDir . '/brick/math/src/BigInteger.php',
'Brick\\Math\\BigNumber' => $vendorDir . '/brick/math/src/BigNumber.php',
@@ -873,6 +872,39 @@ return array(
'Sabre\\Xml\\XmlDeserializable' => $vendorDir . '/sabre/xml/lib/XmlDeserializable.php',
'Sabre\\Xml\\XmlSerializable' => $vendorDir . '/sabre/xml/lib/XmlSerializable.php',
'SimplePie' => $vendorDir . '/simplepie/simplepie/library/SimplePie.php',
+ 'SimplePie\\Author' => $vendorDir . '/simplepie/simplepie/src/Author.php',
+ 'SimplePie\\Cache' => $vendorDir . '/simplepie/simplepie/src/Cache.php',
+ 'SimplePie\\Cache\\Base' => $vendorDir . '/simplepie/simplepie/src/Cache/Base.php',
+ 'SimplePie\\Cache\\DB' => $vendorDir . '/simplepie/simplepie/src/Cache/DB.php',
+ 'SimplePie\\Cache\\File' => $vendorDir . '/simplepie/simplepie/src/Cache/File.php',
+ 'SimplePie\\Cache\\Memcache' => $vendorDir . '/simplepie/simplepie/src/Cache/Memcache.php',
+ 'SimplePie\\Cache\\Memcached' => $vendorDir . '/simplepie/simplepie/src/Cache/Memcached.php',
+ 'SimplePie\\Cache\\MySQL' => $vendorDir . '/simplepie/simplepie/src/Cache/MySQL.php',
+ 'SimplePie\\Cache\\Redis' => $vendorDir . '/simplepie/simplepie/src/Cache/Redis.php',
+ 'SimplePie\\Caption' => $vendorDir . '/simplepie/simplepie/src/Caption.php',
+ 'SimplePie\\Category' => $vendorDir . '/simplepie/simplepie/src/Category.php',
+ 'SimplePie\\Content\\Type\\Sniffer' => $vendorDir . '/simplepie/simplepie/src/Content/Type/Sniffer.php',
+ 'SimplePie\\Copyright' => $vendorDir . '/simplepie/simplepie/src/Copyright.php',
+ 'SimplePie\\Credit' => $vendorDir . '/simplepie/simplepie/src/Credit.php',
+ 'SimplePie\\Enclosure' => $vendorDir . '/simplepie/simplepie/src/Enclosure.php',
+ 'SimplePie\\Exception' => $vendorDir . '/simplepie/simplepie/src/Exception.php',
+ 'SimplePie\\File' => $vendorDir . '/simplepie/simplepie/src/File.php',
+ 'SimplePie\\Gzdecode' => $vendorDir . '/simplepie/simplepie/src/Gzdecode.php',
+ 'SimplePie\\HTTP\\Parser' => $vendorDir . '/simplepie/simplepie/src/HTTP/Parser.php',
+ 'SimplePie\\IRI' => $vendorDir . '/simplepie/simplepie/src/IRI.php',
+ 'SimplePie\\Item' => $vendorDir . '/simplepie/simplepie/src/Item.php',
+ 'SimplePie\\Locator' => $vendorDir . '/simplepie/simplepie/src/Locator.php',
+ 'SimplePie\\Misc' => $vendorDir . '/simplepie/simplepie/src/Misc.php',
+ 'SimplePie\\Net\\IPv6' => $vendorDir . '/simplepie/simplepie/src/Net/IPv6.php',
+ 'SimplePie\\Parse\\Date' => $vendorDir . '/simplepie/simplepie/src/Parse/Date.php',
+ 'SimplePie\\Parser' => $vendorDir . '/simplepie/simplepie/src/Parser.php',
+ 'SimplePie\\Rating' => $vendorDir . '/simplepie/simplepie/src/Rating.php',
+ 'SimplePie\\Registry' => $vendorDir . '/simplepie/simplepie/src/Registry.php',
+ 'SimplePie\\Restriction' => $vendorDir . '/simplepie/simplepie/src/Restriction.php',
+ 'SimplePie\\Sanitize' => $vendorDir . '/simplepie/simplepie/src/Sanitize.php',
+ 'SimplePie\\SimplePie' => $vendorDir . '/simplepie/simplepie/src/SimplePie.php',
+ 'SimplePie\\Source' => $vendorDir . '/simplepie/simplepie/src/Source.php',
+ 'SimplePie\\XML\\Declaration\\Parser' => $vendorDir . '/simplepie/simplepie/src/XML/Declaration/Parser.php',
'SimplePie_Author' => $vendorDir . '/simplepie/simplepie/library/SimplePie/Author.php',
'SimplePie_Cache' => $vendorDir . '/simplepie/simplepie/library/SimplePie/Cache.php',
'SimplePie_Cache_Base' => $vendorDir . '/simplepie/simplepie/library/SimplePie/Cache/Base.php',
@@ -1074,9 +1106,6 @@ return array(
'Smarty_Template_Source' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_template_source.php',
'Smarty_Undefined_Variable' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_undefined_variable.php',
'Smarty_Variable' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_variable.php',
- 'Stringable' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Stringable.php',
- 'Symfony\\Polyfill\\Ctype\\Ctype' => $vendorDir . '/symfony/polyfill-ctype/Ctype.php',
- 'Symfony\\Polyfill\\Php80\\Php80' => $vendorDir . '/symfony/polyfill-php80/Php80.php',
'Symfony\\Polyfill\\Php81\\Php81' => $vendorDir . '/symfony/polyfill-php81/Php81.php',
'TPC_yyStackEntry' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_configfileparser.php',
'TP_yyStackEntry' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_templateparser.php',
@@ -1085,9 +1114,7 @@ return array(
'Text_LanguageDetect_ISO639' => $vendorDir . '/pear/text_languagedetect/Text/LanguageDetect/ISO639.php',
'Text_LanguageDetect_Parser' => $vendorDir . '/pear/text_languagedetect/Text/LanguageDetect/Parser.php',
'URLify' => $vendorDir . '/jbroadway/urlify/URLify.php',
- 'UnhandledMatchError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php',
'UploadHandler' => $vendorDir . '/blueimp/jquery-file-upload/server/php/UploadHandler.php',
- 'ValueError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/ValueError.php',
'Zotlabs\\Access\\AccessList' => $baseDir . '/Zotlabs/Access/AccessList.php',
'Zotlabs\\Access\\PermissionLimits' => $baseDir . '/Zotlabs/Access/PermissionLimits.php',
'Zotlabs\\Access\\PermissionRoles' => $baseDir . '/Zotlabs/Access/PermissionRoles.php',
@@ -1157,8 +1184,6 @@ return array(
'Zotlabs\\Lib\\Libzotdir' => $baseDir . '/Zotlabs/Lib/Libzotdir.php',
'Zotlabs\\Lib\\MarkdownSoap' => $baseDir . '/Zotlabs/Lib/MarkdownSoap.php',
'Zotlabs\\Lib\\MessageFilter' => $baseDir . '/Zotlabs/Lib/MessageFilter.php',
- 'Zotlabs\\Lib\\NativeWiki' => $baseDir . '/Zotlabs/Lib/NativeWiki.php',
- 'Zotlabs\\Lib\\NativeWikiPage' => $baseDir . '/Zotlabs/Lib/NativeWikiPage.php',
'Zotlabs\\Lib\\PConfig' => $baseDir . '/Zotlabs/Lib/PConfig.php',
'Zotlabs\\Lib\\Permcat' => $baseDir . '/Zotlabs/Lib/Permcat.php',
'Zotlabs\\Lib\\PermissionDescription' => $baseDir . '/Zotlabs/Lib/PermissionDescription.php',
@@ -1200,8 +1225,6 @@ return array(
'Zotlabs\\Module\\Apporder' => $baseDir . '/Zotlabs/Module/Apporder.php',
'Zotlabs\\Module\\Apps' => $baseDir . '/Zotlabs/Module/Apps.php',
'Zotlabs\\Module\\Apschema' => $baseDir . '/Zotlabs/Module/Apschema.php',
- 'Zotlabs\\Module\\Article_edit' => $baseDir . '/Zotlabs/Module/Article_edit.php',
- 'Zotlabs\\Module\\Articles' => $baseDir . '/Zotlabs/Module/Articles.php',
'Zotlabs\\Module\\Attach' => $baseDir . '/Zotlabs/Module/Attach.php',
'Zotlabs\\Module\\Attach_edit' => $baseDir . '/Zotlabs/Module/Attach_edit.php',
'Zotlabs\\Module\\Authorize' => $baseDir . '/Zotlabs/Module/Authorize.php',
@@ -1211,8 +1234,6 @@ return array(
'Zotlabs\\Module\\Bookmarks' => $baseDir . '/Zotlabs/Module/Bookmarks.php',
'Zotlabs\\Module\\Branchtopic' => $baseDir . '/Zotlabs/Module/Branchtopic.php',
'Zotlabs\\Module\\Cal' => $baseDir . '/Zotlabs/Module/Cal.php',
- 'Zotlabs\\Module\\Card_edit' => $baseDir . '/Zotlabs/Module/Card_edit.php',
- 'Zotlabs\\Module\\Cards' => $baseDir . '/Zotlabs/Module/Cards.php',
'Zotlabs\\Module\\Cdav' => $baseDir . '/Zotlabs/Module/Cdav.php',
'Zotlabs\\Module\\Changeaddr' => $baseDir . '/Zotlabs/Module/Changeaddr.php',
'Zotlabs\\Module\\Channel' => $baseDir . '/Zotlabs/Module/Channel.php',
@@ -1391,7 +1412,6 @@ return array(
'Zotlabs\\Module\\Webpages' => $baseDir . '/Zotlabs/Module/Webpages.php',
'Zotlabs\\Module\\Well_known' => $baseDir . '/Zotlabs/Module/Well_known.php',
'Zotlabs\\Module\\Wfinger' => $baseDir . '/Zotlabs/Module/Wfinger.php',
- 'Zotlabs\\Module\\Wiki' => $baseDir . '/Zotlabs/Module/Wiki.php',
'Zotlabs\\Module\\Xchan' => $baseDir . '/Zotlabs/Module/Xchan.php',
'Zotlabs\\Module\\Xpoco' => $baseDir . '/Zotlabs/Module/Xpoco.php',
'Zotlabs\\Module\\Xrd' => $baseDir . '/Zotlabs/Module/Xrd.php',
@@ -1675,6 +1695,7 @@ return array(
'Zotlabs\\Update\\_1250' => $baseDir . '/Zotlabs/Update/_1250.php',
'Zotlabs\\Update\\_1251' => $baseDir . '/Zotlabs/Update/_1251.php',
'Zotlabs\\Update\\_1252' => $baseDir . '/Zotlabs/Update/_1252.php',
+ 'Zotlabs\\Update\\_1253' => $baseDir . '/Zotlabs/Update/_1253.php',
'Zotlabs\\Web\\Controller' => $baseDir . '/Zotlabs/Web/Controller.php',
'Zotlabs\\Web\\HTTPHeaders' => $baseDir . '/Zotlabs/Web/HTTPHeaders.php',
'Zotlabs\\Web\\HTTPSig' => $baseDir . '/Zotlabs/Web/HTTPSig.php',
@@ -1743,9 +1764,6 @@ return array(
'Zotlabs\\Widget\\Tokens' => $baseDir . '/Zotlabs/Widget/Tokens.php',
'Zotlabs\\Widget\\Vcard' => $baseDir . '/Zotlabs/Widget/Vcard.php',
'Zotlabs\\Widget\\Website_portation_tools' => $baseDir . '/Zotlabs/Widget/Website_portation_tools.php',
- 'Zotlabs\\Widget\\Wiki_list' => $baseDir . '/Zotlabs/Widget/Wiki_list.php',
- 'Zotlabs\\Widget\\Wiki_page_history' => $baseDir . '/Zotlabs/Widget/Wiki_page_history.php',
- 'Zotlabs\\Widget\\Wiki_pages' => $baseDir . '/Zotlabs/Widget/Wiki_pages.php',
'Zotlabs\\Widget\\Zcard' => $baseDir . '/Zotlabs/Widget/Zcard.php',
'Zotlabs\\Zot6\\IHandler' => $baseDir . '/Zotlabs/Zot6/IHandler.php',
'Zotlabs\\Zot6\\Receiver' => $baseDir . '/Zotlabs/Zot6/Receiver.php',
diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php
index 9f126fa7e..65808f1eb 100644
--- a/vendor/composer/autoload_files.php
+++ b/vendor/composer/autoload_files.php
@@ -2,7 +2,7 @@
// autoload_files.php @generated by Composer
-$vendorDir = dirname(dirname(__FILE__));
+$vendorDir = dirname(__DIR__);
$baseDir = dirname($vendorDir);
return array(
@@ -14,8 +14,6 @@ return array(
'93aa591bc4ca510c520999e34229ee79' => $vendorDir . '/sabre/xml/lib/Serializer/functions.php',
'23c18046f52bef3eea034657bafda50f' => $vendorDir . '/symfony/polyfill-php81/bootstrap.php',
'ebdb698ed4152ae445614b69b5e4bb6a' => $vendorDir . '/sabre/http/lib/functions.php',
- '320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php',
- 'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php',
'2cffec82183ee1cea088009cef9a6fc3' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier.composer.php',
'decc78cc4436b1292c6c0d151b19445c' => $vendorDir . '/phpseclib/phpseclib/phpseclib/bootstrap.php',
'e39a8b23c42d4e1452234d762b03835a' => $vendorDir . '/ramsey/uuid/src/functions.php',
diff --git a/vendor/composer/autoload_namespaces.php b/vendor/composer/autoload_namespaces.php
index d6d43282e..0876acc5f 100644
--- a/vendor/composer/autoload_namespaces.php
+++ b/vendor/composer/autoload_namespaces.php
@@ -2,7 +2,7 @@
// autoload_namespaces.php @generated by Composer
-$vendorDir = dirname(dirname(__FILE__));
+$vendorDir = dirname(__DIR__);
$baseDir = dirname($vendorDir);
return array(
diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php
index c99f72dbb..03b61bfa7 100644
--- a/vendor/composer/autoload_psr4.php
+++ b/vendor/composer/autoload_psr4.php
@@ -2,7 +2,7 @@
// autoload_psr4.php @generated by Composer
-$vendorDir = dirname(dirname(__FILE__));
+$vendorDir = dirname(__DIR__);
$baseDir = dirname($vendorDir);
return array(
@@ -10,8 +10,7 @@ return array(
'phpseclib\\' => array($vendorDir . '/phpseclib/phpseclib/phpseclib'),
'Zotlabs\\' => array($baseDir . '/Zotlabs'),
'Symfony\\Polyfill\\Php81\\' => array($vendorDir . '/symfony/polyfill-php81'),
- 'Symfony\\Polyfill\\Php80\\' => array($vendorDir . '/symfony/polyfill-php80'),
- 'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'),
+ 'SimplePie\\' => array($vendorDir . '/simplepie/simplepie/src'),
'Sabre\\Xml\\' => array($vendorDir . '/sabre/xml/lib'),
'Sabre\\VObject\\' => array($vendorDir . '/sabre/vobject/lib'),
'Sabre\\Uri\\' => array($vendorDir . '/sabre/uri/lib'),
diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php
index 602c3d547..1ee0b18ee 100644
--- a/vendor/composer/autoload_real.php
+++ b/vendor/composer/autoload_real.php
@@ -23,42 +23,19 @@ class ComposerAutoloaderInit7b34d7e50a62201ec5d5e526a5b8b35d
}
spl_autoload_register(array('ComposerAutoloaderInit7b34d7e50a62201ec5d5e526a5b8b35d', 'loadClassLoader'), true, true);
- self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
+ self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
spl_autoload_unregister(array('ComposerAutoloaderInit7b34d7e50a62201ec5d5e526a5b8b35d', 'loadClassLoader'));
$includePaths = require __DIR__ . '/include_paths.php';
$includePaths[] = get_include_path();
set_include_path(implode(PATH_SEPARATOR, $includePaths));
- $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
- if ($useStaticLoader) {
- require __DIR__ . '/autoload_static.php';
-
- call_user_func(\Composer\Autoload\ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d::getInitializer($loader));
- } else {
- $map = require __DIR__ . '/autoload_namespaces.php';
- foreach ($map as $namespace => $path) {
- $loader->set($namespace, $path);
- }
-
- $map = require __DIR__ . '/autoload_psr4.php';
- foreach ($map as $namespace => $path) {
- $loader->setPsr4($namespace, $path);
- }
-
- $classMap = require __DIR__ . '/autoload_classmap.php';
- if ($classMap) {
- $loader->addClassMap($classMap);
- }
- }
+ require __DIR__ . '/autoload_static.php';
+ call_user_func(\Composer\Autoload\ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d::getInitializer($loader));
$loader->register(true);
- if ($useStaticLoader) {
- $includeFiles = Composer\Autoload\ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d::$files;
- } else {
- $includeFiles = require __DIR__ . '/autoload_files.php';
- }
+ $includeFiles = \Composer\Autoload\ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d::$files;
foreach ($includeFiles as $fileIdentifier => $file) {
composerRequire7b34d7e50a62201ec5d5e526a5b8b35d($fileIdentifier, $file);
}
diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php
index 6a5ddf6d4..73eb5014a 100644
--- a/vendor/composer/autoload_static.php
+++ b/vendor/composer/autoload_static.php
@@ -15,8 +15,6 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'93aa591bc4ca510c520999e34229ee79' => __DIR__ . '/..' . '/sabre/xml/lib/Serializer/functions.php',
'23c18046f52bef3eea034657bafda50f' => __DIR__ . '/..' . '/symfony/polyfill-php81/bootstrap.php',
'ebdb698ed4152ae445614b69b5e4bb6a' => __DIR__ . '/..' . '/sabre/http/lib/functions.php',
- '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php',
- 'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php',
'2cffec82183ee1cea088009cef9a6fc3' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier.composer.php',
'decc78cc4436b1292c6c0d151b19445c' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/bootstrap.php',
'e39a8b23c42d4e1452234d762b03835a' => __DIR__ . '/..' . '/ramsey/uuid/src/functions.php',
@@ -38,8 +36,7 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'S' =>
array (
'Symfony\\Polyfill\\Php81\\' => 23,
- 'Symfony\\Polyfill\\Php80\\' => 23,
- 'Symfony\\Polyfill\\Ctype\\' => 23,
+ 'SimplePie\\' => 10,
'Sabre\\Xml\\' => 10,
'Sabre\\VObject\\' => 14,
'Sabre\\Uri\\' => 10,
@@ -103,13 +100,9 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
array (
0 => __DIR__ . '/..' . '/symfony/polyfill-php81',
),
- 'Symfony\\Polyfill\\Php80\\' =>
+ 'SimplePie\\' =>
array (
- 0 => __DIR__ . '/..' . '/symfony/polyfill-php80',
- ),
- 'Symfony\\Polyfill\\Ctype\\' =>
- array (
- 0 => __DIR__ . '/..' . '/symfony/polyfill-ctype',
+ 0 => __DIR__ . '/..' . '/simplepie/simplepie/src',
),
'Sabre\\Xml\\' =>
array (
@@ -224,7 +217,6 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
);
public static $classMap = array (
- 'Attribute' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Attribute.php',
'Brick\\Math\\BigDecimal' => __DIR__ . '/..' . '/brick/math/src/BigDecimal.php',
'Brick\\Math\\BigInteger' => __DIR__ . '/..' . '/brick/math/src/BigInteger.php',
'Brick\\Math\\BigNumber' => __DIR__ . '/..' . '/brick/math/src/BigNumber.php',
@@ -1091,6 +1083,39 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Sabre\\Xml\\XmlDeserializable' => __DIR__ . '/..' . '/sabre/xml/lib/XmlDeserializable.php',
'Sabre\\Xml\\XmlSerializable' => __DIR__ . '/..' . '/sabre/xml/lib/XmlSerializable.php',
'SimplePie' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie.php',
+ 'SimplePie\\Author' => __DIR__ . '/..' . '/simplepie/simplepie/src/Author.php',
+ 'SimplePie\\Cache' => __DIR__ . '/..' . '/simplepie/simplepie/src/Cache.php',
+ 'SimplePie\\Cache\\Base' => __DIR__ . '/..' . '/simplepie/simplepie/src/Cache/Base.php',
+ 'SimplePie\\Cache\\DB' => __DIR__ . '/..' . '/simplepie/simplepie/src/Cache/DB.php',
+ 'SimplePie\\Cache\\File' => __DIR__ . '/..' . '/simplepie/simplepie/src/Cache/File.php',
+ 'SimplePie\\Cache\\Memcache' => __DIR__ . '/..' . '/simplepie/simplepie/src/Cache/Memcache.php',
+ 'SimplePie\\Cache\\Memcached' => __DIR__ . '/..' . '/simplepie/simplepie/src/Cache/Memcached.php',
+ 'SimplePie\\Cache\\MySQL' => __DIR__ . '/..' . '/simplepie/simplepie/src/Cache/MySQL.php',
+ 'SimplePie\\Cache\\Redis' => __DIR__ . '/..' . '/simplepie/simplepie/src/Cache/Redis.php',
+ 'SimplePie\\Caption' => __DIR__ . '/..' . '/simplepie/simplepie/src/Caption.php',
+ 'SimplePie\\Category' => __DIR__ . '/..' . '/simplepie/simplepie/src/Category.php',
+ 'SimplePie\\Content\\Type\\Sniffer' => __DIR__ . '/..' . '/simplepie/simplepie/src/Content/Type/Sniffer.php',
+ 'SimplePie\\Copyright' => __DIR__ . '/..' . '/simplepie/simplepie/src/Copyright.php',
+ 'SimplePie\\Credit' => __DIR__ . '/..' . '/simplepie/simplepie/src/Credit.php',
+ 'SimplePie\\Enclosure' => __DIR__ . '/..' . '/simplepie/simplepie/src/Enclosure.php',
+ 'SimplePie\\Exception' => __DIR__ . '/..' . '/simplepie/simplepie/src/Exception.php',
+ 'SimplePie\\File' => __DIR__ . '/..' . '/simplepie/simplepie/src/File.php',
+ 'SimplePie\\Gzdecode' => __DIR__ . '/..' . '/simplepie/simplepie/src/Gzdecode.php',
+ 'SimplePie\\HTTP\\Parser' => __DIR__ . '/..' . '/simplepie/simplepie/src/HTTP/Parser.php',
+ 'SimplePie\\IRI' => __DIR__ . '/..' . '/simplepie/simplepie/src/IRI.php',
+ 'SimplePie\\Item' => __DIR__ . '/..' . '/simplepie/simplepie/src/Item.php',
+ 'SimplePie\\Locator' => __DIR__ . '/..' . '/simplepie/simplepie/src/Locator.php',
+ 'SimplePie\\Misc' => __DIR__ . '/..' . '/simplepie/simplepie/src/Misc.php',
+ 'SimplePie\\Net\\IPv6' => __DIR__ . '/..' . '/simplepie/simplepie/src/Net/IPv6.php',
+ 'SimplePie\\Parse\\Date' => __DIR__ . '/..' . '/simplepie/simplepie/src/Parse/Date.php',
+ 'SimplePie\\Parser' => __DIR__ . '/..' . '/simplepie/simplepie/src/Parser.php',
+ 'SimplePie\\Rating' => __DIR__ . '/..' . '/simplepie/simplepie/src/Rating.php',
+ 'SimplePie\\Registry' => __DIR__ . '/..' . '/simplepie/simplepie/src/Registry.php',
+ 'SimplePie\\Restriction' => __DIR__ . '/..' . '/simplepie/simplepie/src/Restriction.php',
+ 'SimplePie\\Sanitize' => __DIR__ . '/..' . '/simplepie/simplepie/src/Sanitize.php',
+ 'SimplePie\\SimplePie' => __DIR__ . '/..' . '/simplepie/simplepie/src/SimplePie.php',
+ 'SimplePie\\Source' => __DIR__ . '/..' . '/simplepie/simplepie/src/Source.php',
+ 'SimplePie\\XML\\Declaration\\Parser' => __DIR__ . '/..' . '/simplepie/simplepie/src/XML/Declaration/Parser.php',
'SimplePie_Author' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie/Author.php',
'SimplePie_Cache' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie/Cache.php',
'SimplePie_Cache_Base' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie/Cache/Base.php',
@@ -1292,9 +1317,6 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Smarty_Template_Source' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_template_source.php',
'Smarty_Undefined_Variable' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_undefined_variable.php',
'Smarty_Variable' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_variable.php',
- 'Stringable' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Stringable.php',
- 'Symfony\\Polyfill\\Ctype\\Ctype' => __DIR__ . '/..' . '/symfony/polyfill-ctype/Ctype.php',
- 'Symfony\\Polyfill\\Php80\\Php80' => __DIR__ . '/..' . '/symfony/polyfill-php80/Php80.php',
'Symfony\\Polyfill\\Php81\\Php81' => __DIR__ . '/..' . '/symfony/polyfill-php81/Php81.php',
'TPC_yyStackEntry' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_configfileparser.php',
'TP_yyStackEntry' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_templateparser.php',
@@ -1303,9 +1325,7 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Text_LanguageDetect_ISO639' => __DIR__ . '/..' . '/pear/text_languagedetect/Text/LanguageDetect/ISO639.php',
'Text_LanguageDetect_Parser' => __DIR__ . '/..' . '/pear/text_languagedetect/Text/LanguageDetect/Parser.php',
'URLify' => __DIR__ . '/..' . '/jbroadway/urlify/URLify.php',
- 'UnhandledMatchError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php',
'UploadHandler' => __DIR__ . '/..' . '/blueimp/jquery-file-upload/server/php/UploadHandler.php',
- 'ValueError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/ValueError.php',
'Zotlabs\\Access\\AccessList' => __DIR__ . '/../..' . '/Zotlabs/Access/AccessList.php',
'Zotlabs\\Access\\PermissionLimits' => __DIR__ . '/../..' . '/Zotlabs/Access/PermissionLimits.php',
'Zotlabs\\Access\\PermissionRoles' => __DIR__ . '/../..' . '/Zotlabs/Access/PermissionRoles.php',
@@ -1375,8 +1395,6 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Zotlabs\\Lib\\Libzotdir' => __DIR__ . '/../..' . '/Zotlabs/Lib/Libzotdir.php',
'Zotlabs\\Lib\\MarkdownSoap' => __DIR__ . '/../..' . '/Zotlabs/Lib/MarkdownSoap.php',
'Zotlabs\\Lib\\MessageFilter' => __DIR__ . '/../..' . '/Zotlabs/Lib/MessageFilter.php',
- 'Zotlabs\\Lib\\NativeWiki' => __DIR__ . '/../..' . '/Zotlabs/Lib/NativeWiki.php',
- 'Zotlabs\\Lib\\NativeWikiPage' => __DIR__ . '/../..' . '/Zotlabs/Lib/NativeWikiPage.php',
'Zotlabs\\Lib\\PConfig' => __DIR__ . '/../..' . '/Zotlabs/Lib/PConfig.php',
'Zotlabs\\Lib\\Permcat' => __DIR__ . '/../..' . '/Zotlabs/Lib/Permcat.php',
'Zotlabs\\Lib\\PermissionDescription' => __DIR__ . '/../..' . '/Zotlabs/Lib/PermissionDescription.php',
@@ -1418,8 +1436,6 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Zotlabs\\Module\\Apporder' => __DIR__ . '/../..' . '/Zotlabs/Module/Apporder.php',
'Zotlabs\\Module\\Apps' => __DIR__ . '/../..' . '/Zotlabs/Module/Apps.php',
'Zotlabs\\Module\\Apschema' => __DIR__ . '/../..' . '/Zotlabs/Module/Apschema.php',
- 'Zotlabs\\Module\\Article_edit' => __DIR__ . '/../..' . '/Zotlabs/Module/Article_edit.php',
- 'Zotlabs\\Module\\Articles' => __DIR__ . '/../..' . '/Zotlabs/Module/Articles.php',
'Zotlabs\\Module\\Attach' => __DIR__ . '/../..' . '/Zotlabs/Module/Attach.php',
'Zotlabs\\Module\\Attach_edit' => __DIR__ . '/../..' . '/Zotlabs/Module/Attach_edit.php',
'Zotlabs\\Module\\Authorize' => __DIR__ . '/../..' . '/Zotlabs/Module/Authorize.php',
@@ -1429,8 +1445,6 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Zotlabs\\Module\\Bookmarks' => __DIR__ . '/../..' . '/Zotlabs/Module/Bookmarks.php',
'Zotlabs\\Module\\Branchtopic' => __DIR__ . '/../..' . '/Zotlabs/Module/Branchtopic.php',
'Zotlabs\\Module\\Cal' => __DIR__ . '/../..' . '/Zotlabs/Module/Cal.php',
- 'Zotlabs\\Module\\Card_edit' => __DIR__ . '/../..' . '/Zotlabs/Module/Card_edit.php',
- 'Zotlabs\\Module\\Cards' => __DIR__ . '/../..' . '/Zotlabs/Module/Cards.php',
'Zotlabs\\Module\\Cdav' => __DIR__ . '/../..' . '/Zotlabs/Module/Cdav.php',
'Zotlabs\\Module\\Changeaddr' => __DIR__ . '/../..' . '/Zotlabs/Module/Changeaddr.php',
'Zotlabs\\Module\\Channel' => __DIR__ . '/../..' . '/Zotlabs/Module/Channel.php',
@@ -1609,7 +1623,6 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Zotlabs\\Module\\Webpages' => __DIR__ . '/../..' . '/Zotlabs/Module/Webpages.php',
'Zotlabs\\Module\\Well_known' => __DIR__ . '/../..' . '/Zotlabs/Module/Well_known.php',
'Zotlabs\\Module\\Wfinger' => __DIR__ . '/../..' . '/Zotlabs/Module/Wfinger.php',
- 'Zotlabs\\Module\\Wiki' => __DIR__ . '/../..' . '/Zotlabs/Module/Wiki.php',
'Zotlabs\\Module\\Xchan' => __DIR__ . '/../..' . '/Zotlabs/Module/Xchan.php',
'Zotlabs\\Module\\Xpoco' => __DIR__ . '/../..' . '/Zotlabs/Module/Xpoco.php',
'Zotlabs\\Module\\Xrd' => __DIR__ . '/../..' . '/Zotlabs/Module/Xrd.php',
@@ -1893,6 +1906,7 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Zotlabs\\Update\\_1250' => __DIR__ . '/../..' . '/Zotlabs/Update/_1250.php',
'Zotlabs\\Update\\_1251' => __DIR__ . '/../..' . '/Zotlabs/Update/_1251.php',
'Zotlabs\\Update\\_1252' => __DIR__ . '/../..' . '/Zotlabs/Update/_1252.php',
+ 'Zotlabs\\Update\\_1253' => __DIR__ . '/../..' . '/Zotlabs/Update/_1253.php',
'Zotlabs\\Web\\Controller' => __DIR__ . '/../..' . '/Zotlabs/Web/Controller.php',
'Zotlabs\\Web\\HTTPHeaders' => __DIR__ . '/../..' . '/Zotlabs/Web/HTTPHeaders.php',
'Zotlabs\\Web\\HTTPSig' => __DIR__ . '/../..' . '/Zotlabs/Web/HTTPSig.php',
@@ -1961,9 +1975,6 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Zotlabs\\Widget\\Tokens' => __DIR__ . '/../..' . '/Zotlabs/Widget/Tokens.php',
'Zotlabs\\Widget\\Vcard' => __DIR__ . '/../..' . '/Zotlabs/Widget/Vcard.php',
'Zotlabs\\Widget\\Website_portation_tools' => __DIR__ . '/../..' . '/Zotlabs/Widget/Website_portation_tools.php',
- 'Zotlabs\\Widget\\Wiki_list' => __DIR__ . '/../..' . '/Zotlabs/Widget/Wiki_list.php',
- 'Zotlabs\\Widget\\Wiki_page_history' => __DIR__ . '/../..' . '/Zotlabs/Widget/Wiki_page_history.php',
- 'Zotlabs\\Widget\\Wiki_pages' => __DIR__ . '/../..' . '/Zotlabs/Widget/Wiki_pages.php',
'Zotlabs\\Widget\\Zcard' => __DIR__ . '/../..' . '/Zotlabs/Widget/Zcard.php',
'Zotlabs\\Zot6\\IHandler' => __DIR__ . '/../..' . '/Zotlabs/Zot6/IHandler.php',
'Zotlabs\\Zot6\\Receiver' => __DIR__ . '/../..' . '/Zotlabs/Zot6/Receiver.php',
diff --git a/vendor/composer/include_paths.php b/vendor/composer/include_paths.php
index 4b72402c9..91c7403d0 100644
--- a/vendor/composer/include_paths.php
+++ b/vendor/composer/include_paths.php
@@ -2,7 +2,7 @@
// include_paths.php @generated by Composer
-$vendorDir = dirname(dirname(__FILE__));
+$vendorDir = dirname(__DIR__);
$baseDir = dirname($vendorDir);
return array(
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index f4ab53044..38ca5fe16 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -133,29 +133,30 @@
},
{
"name": "bshaffer/oauth2-server-php",
- "version": "v1.11.1",
- "version_normalized": "1.11.1.0",
+ "version": "v1.12.0",
+ "version_normalized": "1.12.0.0",
"source": {
"type": "git",
"url": "https://github.com/bshaffer/oauth2-server-php.git",
- "reference": "5a0c8000d4763b276919e2106f54eddda6bc50fa"
+ "reference": "60254fc7fbb08ce56164faae9e075068adf914ef"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/bshaffer/oauth2-server-php/zipball/5a0c8000d4763b276919e2106f54eddda6bc50fa",
- "reference": "5a0c8000d4763b276919e2106f54eddda6bc50fa",
+ "url": "https://api.github.com/repos/bshaffer/oauth2-server-php/zipball/60254fc7fbb08ce56164faae9e075068adf914ef",
+ "reference": "60254fc7fbb08ce56164faae9e075068adf914ef",
"shasum": ""
},
"require": {
- "php": ">=5.3.9"
+ "php": ">=7.1"
},
"require-dev": {
- "aws/aws-sdk-php": "~2.8",
- "firebase/php-jwt": "~2.2",
+ "aws/aws-sdk-php": "^2.8",
+ "firebase/php-jwt": "^2.2",
"mongodb/mongodb": "^1.1",
- "phpunit/phpunit": "^4.0",
- "predis/predis": "dev-master",
- "thobbs/phpcassa": "dev-master"
+ "phpunit/phpunit": "^7.5||^8.0",
+ "predis/predis": "^1.1",
+ "thobbs/phpcassa": "dev-master",
+ "yoast/phpunit-polyfills": "^1.0"
},
"suggest": {
"aws/aws-sdk-php": "~2.8 is required to use DynamoDB storage",
@@ -164,7 +165,7 @@
"predis/predis": "Required to use Redis storage",
"thobbs/phpcassa": "Required to use Cassandra storage"
},
- "time": "2018-12-04T00:29:32+00:00",
+ "time": "2022-04-19T17:09:11+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -190,6 +191,10 @@
"oauth",
"oauth2"
],
+ "support": {
+ "issues": "https://github.com/bshaffer/oauth2-server-php/issues",
+ "source": "https://github.com/bshaffer/oauth2-server-php/tree/v1.12.0"
+ },
"install-path": "../bshaffer/oauth2-server-php"
},
{
@@ -653,17 +658,17 @@
},
{
"name": "phpseclib/phpseclib",
- "version": "2.0.36",
- "version_normalized": "2.0.36.0",
+ "version": "2.0.37",
+ "version_normalized": "2.0.37.0",
"source": {
"type": "git",
"url": "https://github.com/phpseclib/phpseclib.git",
- "reference": "a97547126396548c224703a267a30af1592be146"
+ "reference": "c812fbb4d6b4d7f30235ab7298a12f09ba13b37c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/a97547126396548c224703a267a30af1592be146",
- "reference": "a97547126396548c224703a267a30af1592be146",
+ "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/c812fbb4d6b4d7f30235ab7298a12f09ba13b37c",
+ "reference": "c812fbb4d6b4d7f30235ab7298a12f09ba13b37c",
"shasum": ""
},
"require": {
@@ -680,7 +685,7 @@
"ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.",
"ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations."
},
- "time": "2022-01-30T08:48:36+00:00",
+ "time": "2022-04-04T04:57:45+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -745,7 +750,7 @@
],
"support": {
"issues": "https://github.com/phpseclib/phpseclib/issues",
- "source": "https://github.com/phpseclib/phpseclib/tree/2.0.36"
+ "source": "https://github.com/phpseclib/phpseclib/tree/2.0.37"
},
"funding": [
{
@@ -900,26 +905,25 @@
},
{
"name": "ramsey/uuid",
- "version": "4.2.3",
- "version_normalized": "4.2.3.0",
+ "version": "4.3.1",
+ "version_normalized": "4.3.1.0",
"source": {
"type": "git",
"url": "https://github.com/ramsey/uuid.git",
- "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df"
+ "reference": "8505afd4fea63b81a85d3b7b53ac3cb8dc347c28"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df",
- "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df",
+ "url": "https://api.github.com/repos/ramsey/uuid/zipball/8505afd4fea63b81a85d3b7b53ac3cb8dc347c28",
+ "reference": "8505afd4fea63b81a85d3b7b53ac3cb8dc347c28",
"shasum": ""
},
"require": {
"brick/math": "^0.8 || ^0.9",
+ "ext-ctype": "*",
"ext-json": "*",
- "php": "^7.2 || ^8.0",
- "ramsey/collection": "^1.0",
- "symfony/polyfill-ctype": "^1.8",
- "symfony/polyfill-php80": "^1.14"
+ "php": "^8.0",
+ "ramsey/collection": "^1.0"
},
"replace": {
"rhumsaa/uuid": "self.version"
@@ -954,24 +958,21 @@
"paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter",
"ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type."
},
- "time": "2021-09-25T23:10:38+00:00",
+ "time": "2022-03-27T21:42:02+00:00",
"type": "library",
"extra": {
- "branch-alias": {
- "dev-main": "4.x-dev"
- },
"captainhook": {
"force-install": true
}
},
"installation-source": "dist",
"autoload": {
- "psr-4": {
- "Ramsey\\Uuid\\": "src/"
- },
"files": [
"src/functions.php"
- ]
+ ],
+ "psr-4": {
+ "Ramsey\\Uuid\\": "src/"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -985,7 +986,7 @@
],
"support": {
"issues": "https://github.com/ramsey/uuid/issues",
- "source": "https://github.com/ramsey/uuid/tree/4.2.3"
+ "source": "https://github.com/ramsey/uuid/tree/4.3.1"
},
"funding": [
{
@@ -1464,17 +1465,17 @@
},
{
"name": "simplepie/simplepie",
- "version": "1.5.8",
- "version_normalized": "1.5.8.0",
+ "version": "1.6.0",
+ "version_normalized": "1.6.0.0",
"source": {
"type": "git",
"url": "https://github.com/simplepie/simplepie.git",
- "reference": "d1d80f37264c9f1ed7fa3434eca14d179cb689b1"
+ "reference": "2bdbc51ed1010941c9c5f2cddca433e79665bfe1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/simplepie/simplepie/zipball/d1d80f37264c9f1ed7fa3434eca14d179cb689b1",
- "reference": "d1d80f37264c9f1ed7fa3434eca14d179cb689b1",
+ "url": "https://api.github.com/repos/simplepie/simplepie/zipball/2bdbc51ed1010941c9c5f2cddca433e79665bfe1",
+ "reference": "2bdbc51ed1010941c9c5f2cddca433e79665bfe1",
"shasum": ""
},
"require": {
@@ -1493,14 +1494,22 @@
"ext-mbstring": "",
"mf2/mf2": "Microformat module that allows for parsing HTML for microformats"
},
- "time": "2021-12-24T02:53:50+00:00",
+ "time": "2022-04-21T11:05:19+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
+ "psr-4": {
+ "SimplePie\\": "src"
+ },
"psr-0": {
"SimplePie": "library"
}
},
+ "autoload-dev": {
+ "psr-4": {
+ "SimplePie\\Tests\\Unit\\": "tests/Unit"
+ }
+ },
"scripts": {
"test": [
"phpunit"
@@ -1535,24 +1544,24 @@
"rss"
],
"support": {
- "source": "https://github.com/simplepie/simplepie/tree/1.5.8",
+ "source": "https://github.com/simplepie/simplepie/tree/1.6.0",
"issues": "https://github.com/simplepie/simplepie/issues"
},
"install-path": "../simplepie/simplepie"
},
{
"name": "smarty/smarty",
- "version": "v4.1.0",
- "version_normalized": "4.1.0.0",
+ "version": "v4.1.1",
+ "version_normalized": "4.1.1.0",
"source": {
"type": "git",
"url": "https://github.com/smarty-php/smarty.git",
- "reference": "9e0536de18b53ba193364291ef0303b0ab9903e1"
+ "reference": "71036be8be02bf93735c47b0b745f722efbc729f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/smarty-php/smarty/zipball/9e0536de18b53ba193364291ef0303b0ab9903e1",
- "reference": "9e0536de18b53ba193364291ef0303b0ab9903e1",
+ "url": "https://api.github.com/repos/smarty-php/smarty/zipball/71036be8be02bf93735c47b0b745f722efbc729f",
+ "reference": "71036be8be02bf93735c47b0b745f722efbc729f",
"shasum": ""
},
"require": {
@@ -1562,7 +1571,7 @@
"phpunit/phpunit": "^8.5 || ^7.5",
"smarty/smarty-lexer": "^3.1"
},
- "time": "2022-02-06T20:34:27+00:00",
+ "time": "2022-05-17T12:56:28+00:00",
"type": "library",
"extra": {
"branch-alias": {
@@ -1605,185 +1614,14 @@
"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/v4.1.0"
+ "source": "https://github.com/smarty-php/smarty/tree/v4.1.1"
},
"install-path": "../smarty/smarty"
},
{
- "name": "symfony/polyfill-ctype",
- "version": "v1.24.0",
- "version_normalized": "1.24.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-ctype.git",
- "reference": "30885182c981ab175d4d034db0f6f469898070ab"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab",
- "reference": "30885182c981ab175d4d034db0f6f469898070ab",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1"
- },
- "provide": {
- "ext-ctype": "*"
- },
- "suggest": {
- "ext-ctype": "For best performance"
- },
- "time": "2021-10-20T20:35:02+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.23-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Ctype\\": ""
- },
- "files": [
- "bootstrap.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Gert de Pagter",
- "email": "BackEndTea@gmail.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill for ctype functions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "ctype",
- "polyfill",
- "portable"
- ],
- "support": {
- "source": "https://github.com/symfony/polyfill-ctype/tree/v1.24.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"
- }
- ],
- "install-path": "../symfony/polyfill-ctype"
- },
- {
- "name": "symfony/polyfill-php80",
- "version": "v1.24.0",
- "version_normalized": "1.24.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-php80.git",
- "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9",
- "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1"
- },
- "time": "2021-09-13T13:58:33+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.23-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "files": [
- "bootstrap.php"
- ],
- "psr-4": {
- "Symfony\\Polyfill\\Php80\\": ""
- },
- "classmap": [
- "Resources/stubs"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Ion Bazan",
- "email": "ion.bazan@gmail.com"
- },
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "polyfill",
- "portable",
- "shim"
- ],
- "support": {
- "source": "https://github.com/symfony/polyfill-php80/tree/v1.24.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"
- }
- ],
- "install-path": "../symfony/polyfill-php80"
- },
- {
"name": "symfony/polyfill-php81",
- "version": "v1.24.0",
- "version_normalized": "1.24.0.0",
+ "version": "v1.25.0",
+ "version_normalized": "1.25.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php81.git",
@@ -1844,7 +1682,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php81/tree/v1.24.0"
+ "source": "https://github.com/symfony/polyfill-php81/tree/v1.25.0"
},
"funding": [
{
diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php
index e0123da64..1b026f54d 100644
--- a/vendor/composer/installed.php
+++ b/vendor/composer/installed.php
@@ -5,7 +5,7 @@
'type' => 'application',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
- 'reference' => '6930c4e23b8b24f7436c0e265d751460bed9b1d2',
+ 'reference' => '8ba47450970bab036664f03a558917c13d8c1574',
'name' => 'zotlabs/hubzilla',
'dev' => false,
),
@@ -29,12 +29,12 @@
'dev_requirement' => false,
),
'bshaffer/oauth2-server-php' => array(
- 'pretty_version' => 'v1.11.1',
- 'version' => '1.11.1.0',
+ 'pretty_version' => 'v1.12.0',
+ 'version' => '1.12.0.0',
'type' => 'library',
'install_path' => __DIR__ . '/../bshaffer/oauth2-server-php',
'aliases' => array(),
- 'reference' => '5a0c8000d4763b276919e2106f54eddda6bc50fa',
+ 'reference' => '60254fc7fbb08ce56164faae9e075068adf914ef',
'dev_requirement' => false,
),
'commerceguys/intl' => array(
@@ -110,12 +110,12 @@
'dev_requirement' => false,
),
'phpseclib/phpseclib' => array(
- 'pretty_version' => '2.0.36',
- 'version' => '2.0.36.0',
+ 'pretty_version' => '2.0.37',
+ 'version' => '2.0.37.0',
'type' => 'library',
'install_path' => __DIR__ . '/../phpseclib/phpseclib',
'aliases' => array(),
- 'reference' => 'a97547126396548c224703a267a30af1592be146',
+ 'reference' => 'c812fbb4d6b4d7f30235ab7298a12f09ba13b37c',
'dev_requirement' => false,
),
'psr/log' => array(
@@ -137,18 +137,18 @@
'dev_requirement' => false,
),
'ramsey/uuid' => array(
- 'pretty_version' => '4.2.3',
- 'version' => '4.2.3.0',
+ 'pretty_version' => '4.3.1',
+ 'version' => '4.3.1.0',
'type' => 'library',
'install_path' => __DIR__ . '/../ramsey/uuid',
'aliases' => array(),
- 'reference' => 'fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df',
+ 'reference' => '8505afd4fea63b81a85d3b7b53ac3cb8dc347c28',
'dev_requirement' => false,
),
'rhumsaa/uuid' => array(
'dev_requirement' => false,
'replaced' => array(
- 0 => '4.2.3',
+ 0 => '4.3.1',
),
),
'sabre/dav' => array(
@@ -206,44 +206,26 @@
'dev_requirement' => false,
),
'simplepie/simplepie' => array(
- 'pretty_version' => '1.5.8',
- 'version' => '1.5.8.0',
+ 'pretty_version' => '1.6.0',
+ 'version' => '1.6.0.0',
'type' => 'library',
'install_path' => __DIR__ . '/../simplepie/simplepie',
'aliases' => array(),
- 'reference' => 'd1d80f37264c9f1ed7fa3434eca14d179cb689b1',
+ 'reference' => '2bdbc51ed1010941c9c5f2cddca433e79665bfe1',
'dev_requirement' => false,
),
'smarty/smarty' => array(
- 'pretty_version' => 'v4.1.0',
- 'version' => '4.1.0.0',
+ 'pretty_version' => 'v4.1.1',
+ 'version' => '4.1.1.0',
'type' => 'library',
'install_path' => __DIR__ . '/../smarty/smarty',
'aliases' => array(),
- 'reference' => '9e0536de18b53ba193364291ef0303b0ab9903e1',
- 'dev_requirement' => false,
- ),
- 'symfony/polyfill-ctype' => array(
- 'pretty_version' => 'v1.24.0',
- 'version' => '1.24.0.0',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../symfony/polyfill-ctype',
- 'aliases' => array(),
- 'reference' => '30885182c981ab175d4d034db0f6f469898070ab',
- 'dev_requirement' => false,
- ),
- 'symfony/polyfill-php80' => array(
- 'pretty_version' => 'v1.24.0',
- 'version' => '1.24.0.0',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../symfony/polyfill-php80',
- 'aliases' => array(),
- 'reference' => '57b712b08eddb97c762a8caa32c84e037892d2e9',
+ 'reference' => '71036be8be02bf93735c47b0b745f722efbc729f',
'dev_requirement' => false,
),
'symfony/polyfill-php81' => array(
- 'pretty_version' => 'v1.24.0',
- 'version' => '1.24.0.0',
+ 'pretty_version' => 'v1.25.0',
+ 'version' => '1.25.0.0',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/polyfill-php81',
'aliases' => array(),
@@ -289,7 +271,7 @@
'type' => 'application',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
- 'reference' => '6930c4e23b8b24f7436c0e265d751460bed9b1d2',
+ 'reference' => '8ba47450970bab036664f03a558917c13d8c1574',
'dev_requirement' => false,
),
),
diff --git a/vendor/phpseclib/phpseclib/BACKERS.md b/vendor/phpseclib/phpseclib/BACKERS.md
index 87e3fd2bd..558293b55 100644
--- a/vendor/phpseclib/phpseclib/BACKERS.md
+++ b/vendor/phpseclib/phpseclib/BACKERS.md
@@ -5,6 +5,7 @@ phpseclib ongoing development is made possible by [Tidelift](https://tidelift.co
## Backers
- Allan Simon
+- [ChargeOver](https://chargeover.com/)
- Raghu Veer Dendukuri
- Zane Hooper
- [Setasign](https://www.setasign.com/)
diff --git a/vendor/phpseclib/phpseclib/README.md b/vendor/phpseclib/phpseclib/README.md
index 61cc09907..9be5517e6 100644
--- a/vendor/phpseclib/phpseclib/README.md
+++ b/vendor/phpseclib/phpseclib/README.md
@@ -68,9 +68,10 @@ Need Support?
## Special Thanks
-Special Thanks to our Patreon sponsors!:
+Special Thanks to our $50+ sponsors!:
- Allan Simon
+- [ChargeOver](https://chargeover.com/)
## Contributing
diff --git a/vendor/phpseclib/phpseclib/phpseclib/Crypt/Base.php b/vendor/phpseclib/phpseclib/phpseclib/Crypt/Base.php
index 6335a2484..2c143940b 100644
--- a/vendor/phpseclib/phpseclib/phpseclib/Crypt/Base.php
+++ b/vendor/phpseclib/phpseclib/phpseclib/Crypt/Base.php
@@ -156,7 +156,7 @@ abstract class Base
* @var string
* @access private
*/
- var $iv;
+ var $iv = '';
/**
* A "sliding" Initialization Vector
@@ -779,6 +779,7 @@ abstract class Base
}
return $ciphertext;
case self::MODE_OFB8:
+ // OpenSSL has built in support for cfb8 but not ofb8
$ciphertext = '';
$len = strlen($plaintext);
$iv = $this->encryptIV;
@@ -795,8 +796,6 @@ abstract class Base
break;
case self::MODE_OFB:
return $this->_openssl_ofb_process($plaintext, $this->encryptIV, $this->enbuffer);
- case self::MODE_OFB8:
- // OpenSSL has built in support for cfb8 but not ofb8
}
}
@@ -918,8 +917,8 @@ abstract class Base
$block = substr($plaintext, $i, $block_size);
if (strlen($block) > strlen($buffer['ciphertext'])) {
$buffer['ciphertext'].= $this->_encryptBlock($xor);
+ $this->_increment_str($xor);
}
- $this->_increment_str($xor);
$key = $this->_string_shift($buffer['ciphertext'], $block_size);
$ciphertext.= $block ^ $key;
}
@@ -2079,6 +2078,13 @@ abstract class Base
*/
function _increment_str(&$var)
{
+ if (function_exists('sodium_increment')) {
+ $var = strrev($var);
+ sodium_increment($var);
+ $var = strrev($var);
+ return;
+ }
+
for ($i = 4; $i <= strlen($var); $i+= 4) {
$temp = substr($var, -$i, 4);
switch ($temp) {
diff --git a/vendor/phpseclib/phpseclib/phpseclib/Crypt/RSA.php b/vendor/phpseclib/phpseclib/phpseclib/Crypt/RSA.php
index 59999d706..122d281a8 100644
--- a/vendor/phpseclib/phpseclib/phpseclib/Crypt/RSA.php
+++ b/vendor/phpseclib/phpseclib/phpseclib/Crypt/RSA.php
@@ -1405,11 +1405,18 @@ class RSA
unset($xml);
return isset($this->components['modulus']) && isset($this->components['publicExponent']) ? $this->components : false;
- // from PuTTY's SSHPUBK.C
+ // see PuTTY's SSHPUBK.C and https://tartarus.org/~simon/putty-snapshots/htmldoc/AppendixC.html
case self::PRIVATE_FORMAT_PUTTY:
$components = array();
$key = preg_split('#\r\n|\r|\n#', $key);
- $type = trim(preg_replace('#PuTTY-User-Key-File-2: (.+)#', '$1', $key[0]));
+ if ($this->_string_shift($key[0], strlen('PuTTY-User-Key-File-')) != 'PuTTY-User-Key-File-') {
+ return false;
+ }
+ $version = (int) $this->_string_shift($key[0], 3); // should be either "2: " or "3: 0" prior to int casting
+ if ($version != 2 && $version != 3) {
+ return false;
+ }
+ $type = rtrim($key[0]);
if ($type != 'ssh-rsa') {
return false;
}
@@ -1424,23 +1431,55 @@ class RSA
extract(unpack('Nlength', $this->_string_shift($public, 4)));
$components['modulus'] = new BigInteger($this->_string_shift($public, $length), -256);
- $privateLength = trim(preg_replace('#Private-Lines: (\d+)#', '$1', $key[$publicLength + 4]));
- $private = base64_decode(implode('', array_map('trim', array_slice($key, $publicLength + 5, $privateLength))));
-
+ $offset = $publicLength + 4;
switch ($encryption) {
case 'aes256-cbc':
- $symkey = '';
- $sequence = 0;
- while (strlen($symkey) < 32) {
- $temp = pack('Na*', $sequence++, $this->password);
- $symkey.= pack('H*', sha1($temp));
- }
- $symkey = substr($symkey, 0, 32);
$crypto = new AES();
+ switch ($version) {
+ case 3:
+ if (!function_exists('sodium_crypto_pwhash')) {
+ return false;
+ }
+ $flavour = trim(preg_replace('#Key-Derivation: (.*)#', '$1', $key[$offset++]));
+ switch ($flavour) {
+ case 'Argon2i':
+ $flavour = SODIUM_CRYPTO_PWHASH_ALG_ARGON2I13;
+ break;
+ case 'Argon2id':
+ $flavour = SODIUM_CRYPTO_PWHASH_ALG_ARGON2ID13;
+ break;
+ default:
+ return false;
+ }
+ $memory = trim(preg_replace('#Argon2-Memory: (\d+)#', '$1', $key[$offset++]));
+ $passes = trim(preg_replace('#Argon2-Passes: (\d+)#', '$1', $key[$offset++]));
+ $parallelism = trim(preg_replace('#Argon2-Parallelism: (\d+)#', '$1', $key[$offset++]));
+ $salt = pack('H*', trim(preg_replace('#Argon2-Salt: ([0-9a-f]+)#', '$1', $key[$offset++])));
+
+ $length = 80; // keylen + ivlen + mac_keylen
+ $temp = sodium_crypto_pwhash($length, $this->password, $salt, $passes, $memory << 10, $flavour);
+
+ $symkey = substr($temp, 0, 32);
+ $symiv = substr($temp, 32, 16);
+ break;
+ case 2:
+ $symkey = '';
+ $sequence = 0;
+ while (strlen($symkey) < 32) {
+ $temp = pack('Na*', $sequence++, $this->password);
+ $symkey.= pack('H*', sha1($temp));
+ }
+ $symkey = substr($symkey, 0, 32);
+ $symiv = str_repeat("\0", 16);
+ }
}
+ $privateLength = trim(preg_replace('#Private-Lines: (\d+)#', '$1', $key[$offset++]));
+ $private = base64_decode(implode('', array_map('trim', array_slice($key, $offset, $privateLength))));
+
if ($encryption != 'none') {
$crypto->setKey($symkey);
+ $crypto->setIV($symiv);
$crypto->disablePadding();
$private = $crypto->decrypt($private);
if ($private === false) {
diff --git a/vendor/phpseclib/phpseclib/phpseclib/System/SSH/Agent.php b/vendor/phpseclib/phpseclib/phpseclib/System/SSH/Agent.php
index 2b25250bd..f65b587cb 100644
--- a/vendor/phpseclib/phpseclib/phpseclib/System/SSH/Agent.php
+++ b/vendor/phpseclib/phpseclib/phpseclib/System/SSH/Agent.php
@@ -234,11 +234,10 @@ class Agent
* Signal that agent forwarding should
* be requested when a channel is opened
*
- * @param Net_SSH2 $ssh
* @return bool
* @access public
*/
- function startSSHForwarding($ssh)
+ function startSSHForwarding()
{
if ($this->forward_status == self::FORWARD_NONE) {
$this->forward_status = self::FORWARD_REQUEST;
diff --git a/vendor/ramsey/uuid/LICENSE b/vendor/ramsey/uuid/LICENSE
index 5e06cf43b..2e8ef166d 100644
--- a/vendor/ramsey/uuid/LICENSE
+++ b/vendor/ramsey/uuid/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2012-2021 Ben Ramsey <ben@benramsey.com>
+Copyright (c) 2012-2022 Ben Ramsey <ben@benramsey.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/vendor/ramsey/uuid/composer.json b/vendor/ramsey/uuid/composer.json
index 3f3b5ac42..112fabf10 100644
--- a/vendor/ramsey/uuid/composer.json
+++ b/vendor/ramsey/uuid/composer.json
@@ -1,23 +1,19 @@
{
"name": "ramsey/uuid",
- "type": "library",
"description": "A PHP library for generating and working with universally unique identifiers (UUIDs).",
+ "license": "MIT",
+ "type": "library",
"keywords": [
"uuid",
"identifier",
"guid"
],
- "license": "MIT",
"require": {
- "php": "^7.2 || ^8.0",
+ "php": "^8.0",
+ "ext-ctype": "*",
"ext-json": "*",
"brick/math": "^0.8 || ^0.9",
- "ramsey/collection": "^1.0",
- "symfony/polyfill-ctype": "^1.8",
- "symfony/polyfill-php80": "^1.14"
- },
- "replace": {
- "rhumsaa/uuid": "self.version"
+ "ramsey/collection": "^1.0"
},
"require-dev": {
"captainhook/captainhook": "^5.10",
@@ -41,6 +37,9 @@
"squizlabs/php_codesniffer": "^3.5",
"vimeo/psalm": "^4.9"
},
+ "replace": {
+ "rhumsaa/uuid": "self.version"
+ },
"suggest": {
"ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.",
"ext-ctype": "Enables faster processing of character classification using ctype functions.",
@@ -49,17 +48,8 @@
"paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter",
"ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type."
},
- "config": {
- "sort-packages": true
- },
- "extra": {
- "branch-alias": {
- "dev-main": "4.x-dev"
- },
- "captainhook": {
- "force-install": true
- }
- },
+ "minimum-stability": "dev",
+ "prefer-stable": true,
"autoload": {
"psr-4": {
"Ramsey\\Uuid\\": "src/"
@@ -75,8 +65,20 @@
"Ramsey\\Uuid\\Test\\": "tests/"
}
},
- "minimum-stability": "dev",
- "prefer-stable": true,
+ "config": {
+ "allow-plugins": {
+ "captainhook/plugin-composer": true,
+ "ergebnis/composer-normalize": true,
+ "phpstan/extension-installer": true,
+ "dealerdirect/phpcodesniffer-composer-installer": true
+ },
+ "sort-packages": true
+ },
+ "extra": {
+ "captainhook": {
+ "force-install": true
+ }
+ },
"scripts": {
"analyze": [
"@phpstan",
diff --git a/vendor/ramsey/uuid/src/Builder/BuilderCollection.php b/vendor/ramsey/uuid/src/Builder/BuilderCollection.php
index 89fa1e3c8..9df3110fd 100644
--- a/vendor/ramsey/uuid/src/Builder/BuilderCollection.php
+++ b/vendor/ramsey/uuid/src/Builder/BuilderCollection.php
@@ -27,6 +27,11 @@ use Traversable;
/**
* A collection of UuidBuilderInterface objects
*
+ * @deprecated this class has been deprecated, and will be removed in 5.0.0. The use-case for this class comes from
+ * a pre-`phpstan/phpstan` and pre-`vimeo/psalm` ecosystem, in which type safety had to be mostly enforced
+ * at runtime: that is no longer necessary, now that you can safely verify your code to be correct, and use
+ * more generic types like `iterable<T>` instead.
+ *
* @extends AbstractCollection<UuidBuilderInterface>
*/
class BuilderCollection extends AbstractCollection
diff --git a/vendor/ramsey/uuid/src/Builder/FallbackBuilder.php b/vendor/ramsey/uuid/src/Builder/FallbackBuilder.php
index 470d2f755..8ab438a19 100644
--- a/vendor/ramsey/uuid/src/Builder/FallbackBuilder.php
+++ b/vendor/ramsey/uuid/src/Builder/FallbackBuilder.php
@@ -28,14 +28,14 @@ use Ramsey\Uuid\UuidInterface;
class FallbackBuilder implements UuidBuilderInterface
{
/**
- * @var BuilderCollection
+ * @var iterable<UuidBuilderInterface>
*/
private $builders;
/**
- * @param BuilderCollection $builders An array of UUID builders
+ * @param iterable<UuidBuilderInterface> $builders An array of UUID builders
*/
- public function __construct(BuilderCollection $builders)
+ public function __construct(iterable $builders)
{
$this->builders = $builders;
}
diff --git a/vendor/ramsey/uuid/src/FeatureSet.php b/vendor/ramsey/uuid/src/FeatureSet.php
index a8ab2fdbb..668366601 100644
--- a/vendor/ramsey/uuid/src/FeatureSet.php
+++ b/vendor/ramsey/uuid/src/FeatureSet.php
@@ -14,7 +14,6 @@ declare(strict_types=1);
namespace Ramsey\Uuid;
-use Ramsey\Uuid\Builder\BuilderCollection;
use Ramsey\Uuid\Builder\FallbackBuilder;
use Ramsey\Uuid\Builder\UuidBuilderInterface;
use Ramsey\Uuid\Codec\CodecInterface;
@@ -43,7 +42,6 @@ use Ramsey\Uuid\Nonstandard\UuidBuilder as NonstandardUuidBuilder;
use Ramsey\Uuid\Provider\Dce\SystemDceSecurityProvider;
use Ramsey\Uuid\Provider\DceSecurityProviderInterface;
use Ramsey\Uuid\Provider\Node\FallbackNodeProvider;
-use Ramsey\Uuid\Provider\Node\NodeProviderCollection;
use Ramsey\Uuid\Provider\Node\RandomNodeProvider;
use Ramsey\Uuid\Provider\Node\SystemNodeProvider;
use Ramsey\Uuid\Provider\NodeProviderInterface;
@@ -350,10 +348,10 @@ class FeatureSet
return new RandomNodeProvider();
}
- return new FallbackNodeProvider(new NodeProviderCollection([
+ return new FallbackNodeProvider([
new SystemNodeProvider(),
new RandomNodeProvider(),
- ]));
+ ]);
}
/**
@@ -432,11 +430,10 @@ class FeatureSet
return new GuidBuilder($this->numberConverter, $this->timeConverter);
}
- /** @psalm-suppress ImpureArgument */
- return new FallbackBuilder(new BuilderCollection([
+ return new FallbackBuilder([
new Rfc4122UuidBuilder($this->numberConverter, $this->timeConverter),
new NonstandardUuidBuilder($this->numberConverter, $this->timeConverter),
- ]));
+ ]);
}
/**
diff --git a/vendor/ramsey/uuid/src/Generator/CombGenerator.php b/vendor/ramsey/uuid/src/Generator/CombGenerator.php
index 49b09381d..25b7988ec 100644
--- a/vendor/ramsey/uuid/src/Generator/CombGenerator.php
+++ b/vendor/ramsey/uuid/src/Generator/CombGenerator.php
@@ -87,7 +87,7 @@ class CombGenerator implements RandomGeneratorInterface
*/
public function generate(int $length): string
{
- if ($length < self::TIMESTAMP_BYTES || $length < 0) {
+ if ($length < self::TIMESTAMP_BYTES) {
throw new InvalidArgumentException(
'Length must be a positive integer greater than or equal to ' . self::TIMESTAMP_BYTES
);
diff --git a/vendor/ramsey/uuid/src/Generator/RandomLibAdapter.php b/vendor/ramsey/uuid/src/Generator/RandomLibAdapter.php
index 24ed56920..793ccd5a4 100644
--- a/vendor/ramsey/uuid/src/Generator/RandomLibAdapter.php
+++ b/vendor/ramsey/uuid/src/Generator/RandomLibAdapter.php
@@ -21,6 +21,10 @@ use RandomLib\Generator;
* RandomLibAdapter generates strings of random binary data using the
* paragonie/random-lib library
*
+ * @deprecated This class will be removed in 5.0.0. Use the default
+ * RandomBytesGenerator or implement your own generator that implements
+ * RandomGeneratorInterface.
+ *
* @link https://packagist.org/packages/paragonie/random-lib paragonie/random-lib
*/
class RandomLibAdapter implements RandomGeneratorInterface
diff --git a/vendor/ramsey/uuid/src/Provider/Dce/SystemDceSecurityProvider.php b/vendor/ramsey/uuid/src/Provider/Dce/SystemDceSecurityProvider.php
index 6d6240b7a..7ff407648 100644
--- a/vendor/ramsey/uuid/src/Provider/Dce/SystemDceSecurityProvider.php
+++ b/vendor/ramsey/uuid/src/Provider/Dce/SystemDceSecurityProvider.php
@@ -229,6 +229,6 @@ class SystemDceSecurityProvider implements DceSecurityProviderInterface
return '';
}
- return trim((string) substr($sid, $lastHyphen + 1));
+ return trim(substr($sid, $lastHyphen + 1));
}
}
diff --git a/vendor/ramsey/uuid/src/Provider/Node/FallbackNodeProvider.php b/vendor/ramsey/uuid/src/Provider/Node/FallbackNodeProvider.php
index cad01045c..fe890cc4d 100644
--- a/vendor/ramsey/uuid/src/Provider/Node/FallbackNodeProvider.php
+++ b/vendor/ramsey/uuid/src/Provider/Node/FallbackNodeProvider.php
@@ -25,14 +25,14 @@ use Ramsey\Uuid\Type\Hexadecimal;
class FallbackNodeProvider implements NodeProviderInterface
{
/**
- * @var NodeProviderCollection
+ * @var iterable<NodeProviderInterface>
*/
private $nodeProviders;
/**
- * @param NodeProviderCollection $providers Array of node providers
+ * @param iterable<NodeProviderInterface> $providers Array of node providers
*/
- public function __construct(NodeProviderCollection $providers)
+ public function __construct(iterable $providers)
{
$this->nodeProviders = $providers;
}
diff --git a/vendor/ramsey/uuid/src/Provider/Node/NodeProviderCollection.php b/vendor/ramsey/uuid/src/Provider/Node/NodeProviderCollection.php
index 536cb6034..1b979faee 100644
--- a/vendor/ramsey/uuid/src/Provider/Node/NodeProviderCollection.php
+++ b/vendor/ramsey/uuid/src/Provider/Node/NodeProviderCollection.php
@@ -21,6 +21,11 @@ use Ramsey\Uuid\Type\Hexadecimal;
/**
* A collection of NodeProviderInterface objects
*
+ * @deprecated this class has been deprecated, and will be removed in 5.0.0. The use-case for this class comes from
+ * a pre-`phpstan/phpstan` and pre-`vimeo/psalm` ecosystem, in which type safety had to be mostly enforced
+ * at runtime: that is no longer necessary, now that you can safely verify your code to be correct, and use
+ * more generic types like `iterable<T>` instead.
+ *
* @extends AbstractCollection<NodeProviderInterface>
*/
class NodeProviderCollection extends AbstractCollection
diff --git a/vendor/ramsey/uuid/src/Uuid.php b/vendor/ramsey/uuid/src/Uuid.php
index 945480ba4..5f0922b9c 100644
--- a/vendor/ramsey/uuid/src/Uuid.php
+++ b/vendor/ramsey/uuid/src/Uuid.php
@@ -476,10 +476,11 @@ class Uuid implements UuidInterface
*/
public static function fromString(string $uuid): UuidInterface
{
+ $uuid = strtolower($uuid);
if (! self::$factoryReplaced && preg_match(LazyUuidFromString::VALID_REGEX, $uuid) === 1) {
assert($uuid !== '');
- return new LazyUuidFromString(strtolower($uuid));
+ return new LazyUuidFromString($uuid);
}
return self::getFactory()->fromString($uuid);
diff --git a/vendor/simplepie/simplepie/.editorconfig b/vendor/simplepie/simplepie/.editorconfig
new file mode 100644
index 000000000..ba48d7f1d
--- /dev/null
+++ b/vendor/simplepie/simplepie/.editorconfig
@@ -0,0 +1,20 @@
+# https://EditorConfig.org
+
+[*]
+charset = utf-8
+end_of_line = lf
+insert_final_newline = true
+trim_trailing_whitespace = true
+
+[*.{css,html,js,json,php,sql}]
+indent_style = tab
+
+[*.{markdown,md}]
+indent_size = 4
+indent_style = space
+max_line_length = off
+trim_trailing_whitespace = false
+
+[*.{yaml,yml}]
+indent_size = 2
+indent_style = space
diff --git a/vendor/simplepie/simplepie/CHANGELOG.md b/vendor/simplepie/simplepie/CHANGELOG.md
index c9efdb476..800c8b385 100644
--- a/vendor/simplepie/simplepie/CHANGELOG.md
+++ b/vendor/simplepie/simplepie/CHANGELOG.md
@@ -5,7 +5,37 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
-## [Unreleased](https://github.com/simplepie/simplepie/compare/1.5.7...master)
+## [Unreleased](https://github.com/simplepie/simplepie/compare/1.6.0...master)
+
+## [1.6.0](https://github.com/simplepie/simplepie/compare/1.5.8...1.6.0) - 2022-04-21
+
+### Added
+
+- New methods `SimplePie::rename_attributes()` and `SimplePie_Sanitize::rename_attributes()` allow renaming attributes by @math-GH in [#717](https://github.com/simplepie/simplepie/pull/717)
+- Add audio, video @src elements/attribute for URL resolution by @rdalverny in [#716](https://github.com/simplepie/simplepie/pull/716)
+- Added new namespaced aliases and PSR-4 support for every class by @Art4 in [#711](https://github.com/simplepie/simplepie/pull/711)
+- Add .editorconfig by @Alkarex in [#724](https://github.com/simplepie/simplepie/pull/724)
+- Upload compiled file as release asset by @Art4 in [#725](https://github.com/simplepie/simplepie/pull/725)
+
+### Changed
+
+- GH Actions: version update for ramsey/composer-install by @jrfnl in [#713](https://github.com/simplepie/simplepie/pull/713)
+
+### Fixed
+
+- Bugfix in MySQL cache by @Art4 in [#720](https://github.com/simplepie/simplepie/pull/720)
+- Re-enable xml:base for all supported RSS formats by @Alkarex in [#723](https://github.com/simplepie/simplepie/pull/723)
+
+## [1.5.8](https://github.com/simplepie/simplepie/compare/1.5.7...1.5.8) - 2021-12-24
+
+### Changed
+
+- Update CHANGELOG.md, follow keepachangelog format by @Art4 in [#709](https://github.com/simplepie/simplepie/pull/709)
+
+### Fixed
+
+- Fix a small typo in the error() function Docblock by @audrasjb in [#712](https://github.com/simplepie/simplepie/pull/712)
+- Fix/708 version bump for constant `SIMPLEPIE_VERSION` for 1.5.8 release by @faisal-alvi in [#710](https://github.com/simplepie/simplepie/pull/710)
## [1.5.7](https://github.com/simplepie/simplepie/compare/1.5.6...1.5.7) - 2021-12-19
@@ -41,7 +71,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
* PHP 7.4/8.0: curly brace array access deprecated & removed [#655](https://github.com/simplepie/simplepie/pull/655)
* PHP 8.0: required parameters are no longer allowed after optional parameters [#656](https://github.com/simplepie/simplepie/pull/656)
* Fix permanent_url for HTTP 301 [#660](https://github.com/simplepie/simplepie/pull/660)
-* Fix typo in MIME type in Content_Type_Sniffer [#661](https://github.com/simplepie/simplepie/pull/661)
+* Fix typo in MIME type in Content_Type_Sniffer [#661](https://github.com/simplepie/simplepie/pull/661)
## [1.5.5](https://github.com/simplepie/simplepie/compare/1.5.4...1.5.5) - 2020-05-01
@@ -118,13 +148,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
* Use the latest HHVM version in testing (3.15.2). [#480](https://github.com/simplepie/simplepie/pull/480)
* Added PHPUnit as a `dev-dependency` in Composer. [#463](https://github.com/simplepie/simplepie/pull/463)
* Added `mf2/mf2` as a suggestion in Composer for use with microformats. [#491](https://github.com/simplepie/simplepie/pull/491)
-* Fixed misspelled occurrences of "separated". [#459](https://github.com/simplepie/simplepie/pull/459)
+* Fixed misspelled occurrences of "separated". [#459](https://github.com/simplepie/simplepie/pull/459)
* Improvements to the compatibility test and error messages. [#488](https://github.com/simplepie/simplepie/pull/488)
## [1.4.2](https://github.com/simplepie/simplepie/compare/1.4.1...1.4.2) - 2016-06-14
* Fixed a bug with IRI parsing.
-* More cleanly separates discovery of microformats and parsing when php-mf2 is not present.
+* More cleanly separates discovery of microformats and parsing when php-mf2 is not present.
## [1.4.1](https://github.com/simplepie/simplepie/compare/1.4.0...1.4.1) - 2016-06-02
@@ -147,7 +177,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
* Added support for `application/x-rss+xml` in `SimplePie_Locator`. [#348](https://github.com/simplepie/simplepie/pull/348)
* Added photo de-duping in microformats. [#348](https://github.com/simplepie/simplepie/pull/348)
* Added decoding for special characters in MAYBE_HTML. [#400](https://github.com/simplepie/simplepie/pull/400)
-* Added `SimplePie_Exception` for internally reporting errors. Also, use this to show an error when trying to load the class instead of causing a failure. [#241](https://github.com/simplepie/simplepie/pull/241)
+* Added `SimplePie_Exception` for internally reporting errors. Also, use this to show an error when trying to load the class instead of causing a failure. [#241](https://github.com/simplepie/simplepie/pull/241)
* Added sanitization of the `</html>` and `</body>` tags. [#348](https://github.com/simplepie/simplepie/pull/348)
* Added support for media thumbnails through `SimplePie_Item->get_thumbnail()`. [#348](https://github.com/simplepie/simplepie/pull/348)
* Added the `feed_url` to a returned error message. [#348](https://github.com/simplepie/simplepie/pull/348)
@@ -170,7 +200,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
* Fixed an error caused when trying to instantiate a `SimplePie_File` object with a bad URI. [#272](https://github.com/simplepie/simplepie/pull/272)
* Fixed a PHP notice that occurs when a date starts with `(`. [#348](https://github.com/simplepie/simplepie/pull/348)
* Fixed uninitialized string offeset PHP notices. [#353](https://github.com/simplepie/simplepie/pull/353)
-* Fixed call to non-existent property in Memcache. [#311](https://github.com/simplepie/simplepie/pull/311)
+* Fixed call to non-existent property in Memcache. [#311](https://github.com/simplepie/simplepie/pull/311)
* Fixed a bug where MySQL statements were not being passed thorugh `prepare()`. [#348](https://github.com/simplepie/simplepie/pull/348)
* Fixed an instance where an error message in `SimplePie` was not being triggered correctly. [#348](https://github.com/simplepie/simplepie/pull/348)
* Fixed a bug with Russian feeds. [#348](https://github.com/simplepie/simplepie/pull/348)
diff --git a/vendor/simplepie/simplepie/README.markdown b/vendor/simplepie/simplepie/README.markdown
index 5522b7b72..f54b07736 100644
--- a/vendor/simplepie/simplepie/README.markdown
+++ b/vendor/simplepie/simplepie/README.markdown
@@ -38,8 +38,9 @@ What comes in the package?
Since SimplePie 1.3, we've split the classes into separate files to make it easier
to maintain and use.
-If you'd like a single monolithic file, you can run `php build/compile.php` to
-generate `SimplePie.compiled.php`.
+If you'd like a single monolithic file, see the assets in the
+[releases](https://github.com/simplepie/simplepie/releases), or you can
+run `php build/compile.php` to generate `SimplePie.compiled.php` yourself.
To start the demo
-----------------
diff --git a/vendor/simplepie/simplepie/composer.json b/vendor/simplepie/simplepie/composer.json
index 83efa2d82..ca9ec8363 100644
--- a/vendor/simplepie/simplepie/composer.json
+++ b/vendor/simplepie/simplepie/composer.json
@@ -40,10 +40,18 @@
"mf2/mf2": "Microformat module that allows for parsing HTML for microformats"
},
"autoload": {
+ "psr-4": {
+ "SimplePie\\": "src"
+ },
"psr-0": {
"SimplePie": "library"
}
},
+ "autoload-dev": {
+ "psr-4": {
+ "SimplePie\\Tests\\Unit\\": "tests/Unit"
+ }
+ },
"config": {
"bin-dir": "bin"
},
diff --git a/vendor/simplepie/simplepie/library/SimplePie.php b/vendor/simplepie/simplepie/library/SimplePie.php
index 29c8ece01..2ae78c359 100755
--- a/vendor/simplepie/simplepie/library/SimplePie.php
+++ b/vendor/simplepie/simplepie/library/SimplePie.php
@@ -33,7 +33,7 @@
* POSSIBILITY OF SUCH DAMAGE.
*
* @package SimplePie
- * @version 1.5.8
+ * @version 1.6.0
* @copyright 2004-2017 Ryan Parman, Sam Sneddon, Ryan McCue
* @author Ryan Parman
* @author Sam Sneddon
@@ -50,7 +50,7 @@ define('SIMPLEPIE_NAME', 'SimplePie');
/**
* SimplePie Version
*/
-define('SIMPLEPIE_VERSION', '1.5.8');
+define('SIMPLEPIE_VERSION', '1.6.0');
/**
* SimplePie Build
@@ -651,6 +651,13 @@ class SimplePie
public $strip_htmltags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'iframe', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style');
/**
+ * @var array Stores the default attributes to be renamed by rename_attributes().
+ * @see SimplePie::rename_attributes()
+ * @access private
+ */
+ public $rename_attributes = array();
+
+ /**
* @var bool Should we throw exceptions, or use the old-style error property?
* @access private
*/
@@ -1223,6 +1230,15 @@ class SimplePie
$this->sanitize->encode_instead_of_strip($enable);
}
+ public function rename_attributes($attribs = '')
+ {
+ if ($attribs === '')
+ {
+ $attribs = $this->rename_attributes;
+ }
+ $this->sanitize->rename_attributes($attribs);
+ }
+
public function strip_attributes($attribs = '')
{
if ($attribs === '')
@@ -2199,7 +2215,7 @@ class SimplePie
*/
public function get_base($element = array())
{
- if (!($this->get_type() & SIMPLEPIE_TYPE_RSS_SYNDICATION) && !empty($element['xml_base_explicit']) && isset($element['xml_base']))
+ if (!empty($element['xml_base_explicit']) && isset($element['xml_base']))
{
return $element['xml_base'];
}
@@ -3316,3 +3332,5 @@ class SimplePie
}
}
}
+
+class_alias('SimplePie', 'SimplePie\SimplePie', false);
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Author.php b/vendor/simplepie/simplepie/library/SimplePie/Author.php
index 563932f4c..3baadee62 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Author.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Author.php
@@ -147,3 +147,5 @@ class SimplePie_Author
return null;
}
}
+
+class_alias('SimplePie_Author', 'SimplePie\Author', false);
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Cache.php b/vendor/simplepie/simplepie/library/SimplePie/Cache.php
index 9c5577d95..88d811660 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Cache.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Cache.php
@@ -132,3 +132,5 @@ class SimplePie_Cache
return $params;
}
}
+
+class_alias('SimplePie_Cache', 'SimplePie\Cache', false);
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Cache/Base.php b/vendor/simplepie/simplepie/library/SimplePie/Cache/Base.php
index 522ff7e10..29eb0594b 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Cache/Base.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Cache/Base.php
@@ -111,3 +111,5 @@ interface SimplePie_Cache_Base
*/
public function unlink();
}
+
+class_alias('SimplePie_Cache_Base', 'SimplePie\Cache\Base', false);
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Cache/DB.php b/vendor/simplepie/simplepie/library/SimplePie/Cache/DB.php
index 74d57b8da..3dca8e5db 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Cache/DB.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Cache/DB.php
@@ -134,3 +134,5 @@ abstract class SimplePie_Cache_DB implements SimplePie_Cache_Base
return array(serialize($data->data), $items_by_id);
}
}
+
+class_alias('SimplePie_Cache_DB', 'SimplePie\Cache\DB', false);
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Cache/File.php b/vendor/simplepie/simplepie/library/SimplePie/Cache/File.php
index 03758e923..db30e7a0f 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Cache/File.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Cache/File.php
@@ -162,3 +162,5 @@ class SimplePie_Cache_File implements SimplePie_Cache_Base
return false;
}
}
+
+class_alias('SimplePie_Cache_File', 'SimplePie\Cache\File', false);
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Cache/Memcache.php b/vendor/simplepie/simplepie/library/SimplePie/Cache/Memcache.php
index caf785275..2cc37f907 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Cache/Memcache.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Cache/Memcache.php
@@ -178,3 +178,5 @@ class SimplePie_Cache_Memcache implements SimplePie_Cache_Base
return $this->cache->delete($this->name, 0);
}
}
+
+class_alias('SimplePie_Cache_Memcache', 'SimplePie\Cache\Memcache', false);
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Cache/Memcached.php b/vendor/simplepie/simplepie/library/SimplePie/Cache/Memcached.php
index 0b40d87c8..32a53eb7b 100755
--- a/vendor/simplepie/simplepie/library/SimplePie/Cache/Memcached.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Cache/Memcached.php
@@ -164,3 +164,5 @@ class SimplePie_Cache_Memcached implements SimplePie_Cache_Base
return false;
}
}
+
+class_alias('SimplePie_Cache_Memcached', 'SimplePie\Cache\Memcached', false);
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Cache/MySQL.php b/vendor/simplepie/simplepie/library/SimplePie/Cache/MySQL.php
index a684eb833..d21e2b6e4 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Cache/MySQL.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Cache/MySQL.php
@@ -278,7 +278,7 @@ class SimplePie_Cache_MySQL extends SimplePie_Cache_DB
$query->bindValue(':data', serialize($data));
$query->bindValue(':time', time());
$query->bindValue(':feed', $this->id);
- if ($this->execute())
+ if ($query->execute())
{
return true;
}
@@ -438,3 +438,5 @@ class SimplePie_Cache_MySQL extends SimplePie_Cache_DB
return $query->execute() && $query2->execute();
}
}
+
+class_alias('SimplePie_Cache_MySQL', 'SimplePie\Cache\MySQL', false);
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Cache/Redis.php b/vendor/simplepie/simplepie/library/SimplePie/Cache/Redis.php
index a5925bec2..82d759b01 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Cache/Redis.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Cache/Redis.php
@@ -170,3 +170,5 @@ class SimplePie_Cache_Redis implements SimplePie_Cache_Base {
}
}
+
+class_alias('SimplePie_Cache_Redis', 'SimplePie\Cache\Redis', false);
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Caption.php b/vendor/simplepie/simplepie/library/SimplePie/Caption.php
index 3d7bfdd71..355ab52f3 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Caption.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Caption.php
@@ -196,3 +196,5 @@ class SimplePie_Caption
return null;
}
}
+
+class_alias('SimplePie_Caption', 'SimplePie\Caption', false);
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Category.php b/vendor/simplepie/simplepie/library/SimplePie/Category.php
index e4dabed8b..02cb76482 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Category.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Category.php
@@ -79,7 +79,7 @@ class SimplePie_Category
/**
* Category type
- *
+ *
* category for <category>
* subject for <dc:subject>
*
@@ -161,3 +161,4 @@ class SimplePie_Category
}
}
+class_alias('SimplePie_Category', 'SimplePie\Category', false);
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Content/Type/Sniffer.php b/vendor/simplepie/simplepie/library/SimplePie/Content/Type/Sniffer.php
index 027e131ef..b3a8cf378 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Content/Type/Sniffer.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Content/Type/Sniffer.php
@@ -316,3 +316,5 @@ class SimplePie_Content_Type_Sniffer
return 'text/html';
}
}
+
+class_alias('SimplePie_Content_Type_Sniffer', 'SimplePie\Content\Type\Sniffer', false);
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Copyright.php b/vendor/simplepie/simplepie/library/SimplePie/Copyright.php
index 92f9b0947..e043ced8b 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Copyright.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Copyright.php
@@ -122,3 +122,5 @@ class SimplePie_Copyright
return null;
}
}
+
+class_alias('SimplePie_Copyright', 'SimplePie\Copyright', false);
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Credit.php b/vendor/simplepie/simplepie/library/SimplePie/Credit.php
index d6ff07eba..347902e02 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Credit.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Credit.php
@@ -146,3 +146,5 @@ class SimplePie_Credit
return null;
}
}
+
+class_alias('SimplePie_Credit', 'SimplePie\Credit', false);
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Enclosure.php b/vendor/simplepie/simplepie/library/SimplePie/Enclosure.php
index 8a4cffa30..71cdd7d45 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Enclosure.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Enclosure.php
@@ -1307,3 +1307,5 @@ class SimplePie_Enclosure
return $type;
}
}
+
+class_alias('SimplePie_Enclosure', 'SimplePie\Enclosure', false);
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Exception.php b/vendor/simplepie/simplepie/library/SimplePie/Exception.php
index 7a04c560c..715cefc72 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Exception.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Exception.php
@@ -48,4 +48,6 @@
*/
class SimplePie_Exception extends Exception
{
-} \ No newline at end of file
+}
+
+class_alias('SimplePie_Exception', 'SimplePie\Exception', false);
diff --git a/vendor/simplepie/simplepie/library/SimplePie/File.php b/vendor/simplepie/simplepie/library/SimplePie/File.php
index c2d368b3b..7f894fb59 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/File.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/File.php
@@ -299,3 +299,5 @@ class SimplePie_File
}
}
}
+
+class_alias('SimplePie_File', 'SimplePie\File', false);
diff --git a/vendor/simplepie/simplepie/library/SimplePie/HTTP/Parser.php b/vendor/simplepie/simplepie/library/SimplePie/HTTP/Parser.php
index a4c48ddb7..b0f0f4a8b 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/HTTP/Parser.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/HTTP/Parser.php
@@ -518,3 +518,5 @@ class SimplePie_HTTP_Parser
return $data;
}
}
+
+class_alias('SimplePie_HTTP_Parser', 'SimplePie\HTTP\Parser', false);
diff --git a/vendor/simplepie/simplepie/library/SimplePie/IRI.php b/vendor/simplepie/simplepie/library/SimplePie/IRI.php
index a02de682c..6cd27ddba 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/IRI.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/IRI.php
@@ -1234,3 +1234,5 @@ class SimplePie_IRI
return $iauthority;
}
}
+
+class_alias('SimplePie_IRI', 'SimplePie\IRI', false);
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Item.php b/vendor/simplepie/simplepie/library/SimplePie/Item.php
index 3ac4fa882..02f158bfc 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Item.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Item.php
@@ -2965,3 +2965,5 @@ class SimplePie_Item
return null;
}
}
+
+class_alias('SimplePie_Item', 'SimplePie\Item', false);
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Locator.php b/vendor/simplepie/simplepie/library/SimplePie/Locator.php
index c5fae0579..12961dd3d 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Locator.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Locator.php
@@ -430,3 +430,5 @@ class SimplePie_Locator
return null;
}
}
+
+class_alias('SimplePie_Locator', 'SimplePie\Locator', false);
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Misc.php b/vendor/simplepie/simplepie/library/SimplePie/Misc.php
index ce3cf0f54..4318573ba 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Misc.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Misc.php
@@ -2271,3 +2271,5 @@ function embed_wmedia(width, height, link) {
return preg_replace('#^(https?://)[^/:@]+:[^/:@]+@#i', '$1', $url);
}
}
+
+class_alias('SimplePie_Misc', 'SimplePie\Misc', false);
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Net/IPv6.php b/vendor/simplepie/simplepie/library/SimplePie/Net/IPv6.php
index 25c992bd1..c7e466a54 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Net/IPv6.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Net/IPv6.php
@@ -267,3 +267,5 @@ class SimplePie_Net_IPv6
return self::check_ipv6($ip);
}
}
+
+class_alias('SimplePie_Net_IPv6', 'SimplePie\Net\IPv6', false);
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Parse/Date.php b/vendor/simplepie/simplepie/library/SimplePie/Parse/Date.php
index cf57437d2..fe7e3ea49 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Parse/Date.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Parse/Date.php
@@ -1023,3 +1023,5 @@ class SimplePie_Parse_Date
return $strtotime;
}
}
+
+class_alias('SimplePie_Parse_Date', 'SimplePie\Parse\Date', false);
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Parser.php b/vendor/simplepie/simplepie/library/SimplePie/Parser.php
index 3813b74b2..65f32d72a 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Parser.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Parser.php
@@ -677,3 +677,5 @@ class SimplePie_Parser
return '<!DOCTYPE html [ <!ENTITY nbsp "&#x00A0;"> <!ENTITY iexcl "&#x00A1;"> <!ENTITY cent "&#x00A2;"> <!ENTITY pound "&#x00A3;"> <!ENTITY curren "&#x00A4;"> <!ENTITY yen "&#x00A5;"> <!ENTITY brvbar "&#x00A6;"> <!ENTITY sect "&#x00A7;"> <!ENTITY uml "&#x00A8;"> <!ENTITY copy "&#x00A9;"> <!ENTITY ordf "&#x00AA;"> <!ENTITY laquo "&#x00AB;"> <!ENTITY not "&#x00AC;"> <!ENTITY shy "&#x00AD;"> <!ENTITY reg "&#x00AE;"> <!ENTITY macr "&#x00AF;"> <!ENTITY deg "&#x00B0;"> <!ENTITY plusmn "&#x00B1;"> <!ENTITY sup2 "&#x00B2;"> <!ENTITY sup3 "&#x00B3;"> <!ENTITY acute "&#x00B4;"> <!ENTITY micro "&#x00B5;"> <!ENTITY para "&#x00B6;"> <!ENTITY middot "&#x00B7;"> <!ENTITY cedil "&#x00B8;"> <!ENTITY sup1 "&#x00B9;"> <!ENTITY ordm "&#x00BA;"> <!ENTITY raquo "&#x00BB;"> <!ENTITY frac14 "&#x00BC;"> <!ENTITY frac12 "&#x00BD;"> <!ENTITY frac34 "&#x00BE;"> <!ENTITY iquest "&#x00BF;"> <!ENTITY Agrave "&#x00C0;"> <!ENTITY Aacute "&#x00C1;"> <!ENTITY Acirc "&#x00C2;"> <!ENTITY Atilde "&#x00C3;"> <!ENTITY Auml "&#x00C4;"> <!ENTITY Aring "&#x00C5;"> <!ENTITY AElig "&#x00C6;"> <!ENTITY Ccedil "&#x00C7;"> <!ENTITY Egrave "&#x00C8;"> <!ENTITY Eacute "&#x00C9;"> <!ENTITY Ecirc "&#x00CA;"> <!ENTITY Euml "&#x00CB;"> <!ENTITY Igrave "&#x00CC;"> <!ENTITY Iacute "&#x00CD;"> <!ENTITY Icirc "&#x00CE;"> <!ENTITY Iuml "&#x00CF;"> <!ENTITY ETH "&#x00D0;"> <!ENTITY Ntilde "&#x00D1;"> <!ENTITY Ograve "&#x00D2;"> <!ENTITY Oacute "&#x00D3;"> <!ENTITY Ocirc "&#x00D4;"> <!ENTITY Otilde "&#x00D5;"> <!ENTITY Ouml "&#x00D6;"> <!ENTITY times "&#x00D7;"> <!ENTITY Oslash "&#x00D8;"> <!ENTITY Ugrave "&#x00D9;"> <!ENTITY Uacute "&#x00DA;"> <!ENTITY Ucirc "&#x00DB;"> <!ENTITY Uuml "&#x00DC;"> <!ENTITY Yacute "&#x00DD;"> <!ENTITY THORN "&#x00DE;"> <!ENTITY szlig "&#x00DF;"> <!ENTITY agrave "&#x00E0;"> <!ENTITY aacute "&#x00E1;"> <!ENTITY acirc "&#x00E2;"> <!ENTITY atilde "&#x00E3;"> <!ENTITY auml "&#x00E4;"> <!ENTITY aring "&#x00E5;"> <!ENTITY aelig "&#x00E6;"> <!ENTITY ccedil "&#x00E7;"> <!ENTITY egrave "&#x00E8;"> <!ENTITY eacute "&#x00E9;"> <!ENTITY ecirc "&#x00EA;"> <!ENTITY euml "&#x00EB;"> <!ENTITY igrave "&#x00EC;"> <!ENTITY iacute "&#x00ED;"> <!ENTITY icirc "&#x00EE;"> <!ENTITY iuml "&#x00EF;"> <!ENTITY eth "&#x00F0;"> <!ENTITY ntilde "&#x00F1;"> <!ENTITY ograve "&#x00F2;"> <!ENTITY oacute "&#x00F3;"> <!ENTITY ocirc "&#x00F4;"> <!ENTITY otilde "&#x00F5;"> <!ENTITY ouml "&#x00F6;"> <!ENTITY divide "&#x00F7;"> <!ENTITY oslash "&#x00F8;"> <!ENTITY ugrave "&#x00F9;"> <!ENTITY uacute "&#x00FA;"> <!ENTITY ucirc "&#x00FB;"> <!ENTITY uuml "&#x00FC;"> <!ENTITY yacute "&#x00FD;"> <!ENTITY thorn "&#x00FE;"> <!ENTITY yuml "&#x00FF;"> <!ENTITY OElig "&#x0152;"> <!ENTITY oelig "&#x0153;"> <!ENTITY Scaron "&#x0160;"> <!ENTITY scaron "&#x0161;"> <!ENTITY Yuml "&#x0178;"> <!ENTITY fnof "&#x0192;"> <!ENTITY circ "&#x02C6;"> <!ENTITY tilde "&#x02DC;"> <!ENTITY Alpha "&#x0391;"> <!ENTITY Beta "&#x0392;"> <!ENTITY Gamma "&#x0393;"> <!ENTITY Epsilon "&#x0395;"> <!ENTITY Zeta "&#x0396;"> <!ENTITY Eta "&#x0397;"> <!ENTITY Theta "&#x0398;"> <!ENTITY Iota "&#x0399;"> <!ENTITY Kappa "&#x039A;"> <!ENTITY Lambda "&#x039B;"> <!ENTITY Mu "&#x039C;"> <!ENTITY Nu "&#x039D;"> <!ENTITY Xi "&#x039E;"> <!ENTITY Omicron "&#x039F;"> <!ENTITY Pi "&#x03A0;"> <!ENTITY Rho "&#x03A1;"> <!ENTITY Sigma "&#x03A3;"> <!ENTITY Tau "&#x03A4;"> <!ENTITY Upsilon "&#x03A5;"> <!ENTITY Phi "&#x03A6;"> <!ENTITY Chi "&#x03A7;"> <!ENTITY Psi "&#x03A8;"> <!ENTITY Omega "&#x03A9;"> <!ENTITY alpha "&#x03B1;"> <!ENTITY beta "&#x03B2;"> <!ENTITY gamma "&#x03B3;"> <!ENTITY delta "&#x03B4;"> <!ENTITY epsilon "&#x03B5;"> <!ENTITY zeta "&#x03B6;"> <!ENTITY eta "&#x03B7;"> <!ENTITY theta "&#x03B8;"> <!ENTITY iota "&#x03B9;"> <!ENTITY kappa "&#x03BA;"> <!ENTITY lambda "&#x03BB;"> <!ENTITY mu "&#x03BC;"> <!ENTITY nu "&#x03BD;"> <!ENTITY xi "&#x03BE;"> <!ENTITY omicron "&#x03BF;"> <!ENTITY pi "&#x03C0;"> <!ENTITY rho "&#x03C1;"> <!ENTITY sigmaf "&#x03C2;"> <!ENTITY sigma "&#x03C3;"> <!ENTITY tau "&#x03C4;"> <!ENTITY upsilon "&#x03C5;"> <!ENTITY phi "&#x03C6;"> <!ENTITY chi "&#x03C7;"> <!ENTITY psi "&#x03C8;"> <!ENTITY omega "&#x03C9;"> <!ENTITY thetasym "&#x03D1;"> <!ENTITY upsih "&#x03D2;"> <!ENTITY piv "&#x03D6;"> <!ENTITY ensp "&#x2002;"> <!ENTITY emsp "&#x2003;"> <!ENTITY thinsp "&#x2009;"> <!ENTITY zwnj "&#x200C;"> <!ENTITY zwj "&#x200D;"> <!ENTITY lrm "&#x200E;"> <!ENTITY rlm "&#x200F;"> <!ENTITY ndash "&#x2013;"> <!ENTITY mdash "&#x2014;"> <!ENTITY lsquo "&#x2018;"> <!ENTITY rsquo "&#x2019;"> <!ENTITY sbquo "&#x201A;"> <!ENTITY ldquo "&#x201C;"> <!ENTITY rdquo "&#x201D;"> <!ENTITY bdquo "&#x201E;"> <!ENTITY dagger "&#x2020;"> <!ENTITY Dagger "&#x2021;"> <!ENTITY bull "&#x2022;"> <!ENTITY hellip "&#x2026;"> <!ENTITY permil "&#x2030;"> <!ENTITY prime "&#x2032;"> <!ENTITY Prime "&#x2033;"> <!ENTITY lsaquo "&#x2039;"> <!ENTITY rsaquo "&#x203A;"> <!ENTITY oline "&#x203E;"> <!ENTITY frasl "&#x2044;"> <!ENTITY euro "&#x20AC;"> <!ENTITY image "&#x2111;"> <!ENTITY weierp "&#x2118;"> <!ENTITY real "&#x211C;"> <!ENTITY trade "&#x2122;"> <!ENTITY alefsym "&#x2135;"> <!ENTITY larr "&#x2190;"> <!ENTITY uarr "&#x2191;"> <!ENTITY rarr "&#x2192;"> <!ENTITY darr "&#x2193;"> <!ENTITY harr "&#x2194;"> <!ENTITY crarr "&#x21B5;"> <!ENTITY lArr "&#x21D0;"> <!ENTITY uArr "&#x21D1;"> <!ENTITY rArr "&#x21D2;"> <!ENTITY dArr "&#x21D3;"> <!ENTITY hArr "&#x21D4;"> <!ENTITY forall "&#x2200;"> <!ENTITY part "&#x2202;"> <!ENTITY exist "&#x2203;"> <!ENTITY empty "&#x2205;"> <!ENTITY nabla "&#x2207;"> <!ENTITY isin "&#x2208;"> <!ENTITY notin "&#x2209;"> <!ENTITY ni "&#x220B;"> <!ENTITY prod "&#x220F;"> <!ENTITY sum "&#x2211;"> <!ENTITY minus "&#x2212;"> <!ENTITY lowast "&#x2217;"> <!ENTITY radic "&#x221A;"> <!ENTITY prop "&#x221D;"> <!ENTITY infin "&#x221E;"> <!ENTITY ang "&#x2220;"> <!ENTITY and "&#x2227;"> <!ENTITY or "&#x2228;"> <!ENTITY cap "&#x2229;"> <!ENTITY cup "&#x222A;"> <!ENTITY int "&#x222B;"> <!ENTITY there4 "&#x2234;"> <!ENTITY sim "&#x223C;"> <!ENTITY cong "&#x2245;"> <!ENTITY asymp "&#x2248;"> <!ENTITY ne "&#x2260;"> <!ENTITY equiv "&#x2261;"> <!ENTITY le "&#x2264;"> <!ENTITY ge "&#x2265;"> <!ENTITY sub "&#x2282;"> <!ENTITY sup "&#x2283;"> <!ENTITY nsub "&#x2284;"> <!ENTITY sube "&#x2286;"> <!ENTITY supe "&#x2287;"> <!ENTITY oplus "&#x2295;"> <!ENTITY otimes "&#x2297;"> <!ENTITY perp "&#x22A5;"> <!ENTITY sdot "&#x22C5;"> <!ENTITY lceil "&#x2308;"> <!ENTITY rceil "&#x2309;"> <!ENTITY lfloor "&#x230A;"> <!ENTITY rfloor "&#x230B;"> <!ENTITY lang "&#x2329;"> <!ENTITY rang "&#x232A;"> <!ENTITY loz "&#x25CA;"> <!ENTITY spades "&#x2660;"> <!ENTITY clubs "&#x2663;"> <!ENTITY hearts "&#x2665;"> <!ENTITY diams "&#x2666;"> ]>';
}
}
+
+class_alias('SimplePie_Parser', 'SimplePie\Parser', false);
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Rating.php b/vendor/simplepie/simplepie/library/SimplePie/Rating.php
index 599f75acb..eae6718a7 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Rating.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Rating.php
@@ -122,3 +122,5 @@ class SimplePie_Rating
return null;
}
}
+
+class_alias('SimplePie_Rating', 'SimplePie\Rating', false);
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Registry.php b/vendor/simplepie/simplepie/library/SimplePie/Registry.php
index 1aac51d07..2486f3c69 100755
--- a/vendor/simplepie/simplepie/library/SimplePie/Registry.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Registry.php
@@ -223,3 +223,5 @@ class SimplePie_Registry
return $result;
}
}
+
+class_alias('SimplePie_Registry', 'SimplePie\Registry', false);
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Restriction.php b/vendor/simplepie/simplepie/library/SimplePie/Restriction.php
index 950017fae..0a168bbbe 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Restriction.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Restriction.php
@@ -146,3 +146,5 @@ class SimplePie_Restriction
return null;
}
}
+
+class_alias('SimplePie_Restriction', 'SimplePie\Restriction', false);
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Sanitize.php b/vendor/simplepie/simplepie/library/SimplePie/Sanitize.php
index d421c8307..1f202ecc0 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Sanitize.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Sanitize.php
@@ -61,6 +61,7 @@ class SimplePie_Sanitize
var $strip_htmltags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'iframe', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style');
var $encode_instead_of_strip = false;
var $strip_attributes = array('bgsound', 'expr', 'id', 'style', 'onclick', 'onerror', 'onfinish', 'onmouseover', 'onmouseout', 'onfocus', 'onblur', 'lowsrc', 'dynsrc');
+ var $rename_attributes = array();
var $add_attributes = array('audio' => array('preload' => 'none'), 'iframe' => array('sandbox' => 'allow-scripts allow-same-origin'), 'video' => array('preload' => 'none'));
var $strip_comments = false;
var $output_encoding = 'UTF-8';
@@ -169,6 +170,25 @@ class SimplePie_Sanitize
$this->encode_instead_of_strip = (bool) $encode;
}
+ public function rename_attributes($attribs = array())
+ {
+ if ($attribs)
+ {
+ if (is_array($attribs))
+ {
+ $this->rename_attributes = $attribs;
+ }
+ else
+ {
+ $this->rename_attributes = explode(',', $attribs);
+ }
+ }
+ else
+ {
+ $this->rename_attributes = false;
+ }
+ }
+
public function strip_attributes($attribs = array('bgsound', 'expr', 'id', 'style', 'onclick', 'onerror', 'onfinish', 'onmouseover', 'onmouseout', 'onfocus', 'onblur', 'lowsrc', 'dynsrc'))
{
if ($attribs)
@@ -221,9 +241,9 @@ class SimplePie_Sanitize
* Set element/attribute key/value pairs of HTML attributes
* containing URLs that need to be resolved relative to the feed
*
- * Defaults to |a|@href, |area|@href, |blockquote|@cite, |del|@cite,
- * |form|@action, |img|@longdesc, |img|@src, |input|@src, |ins|@cite,
- * |q|@cite
+ * Defaults to |a|@href, |area|@href, |audio|@src, |blockquote|@cite,
+ * |del|@cite, |form|@action, |img|@longdesc, |img|@src, |input|@src,
+ * |ins|@cite, |q|@cite, |source|@src, |video|@src
*
* @since 1.0
* @param array|null $element_attribute Element/attribute key/value pairs, null for default
@@ -235,6 +255,7 @@ class SimplePie_Sanitize
$element_attribute = array(
'a' => 'href',
'area' => 'href',
+ 'audio' => 'src',
'blockquote' => 'cite',
'del' => 'cite',
'form' => 'action',
@@ -244,7 +265,12 @@ class SimplePie_Sanitize
),
'input' => 'src',
'ins' => 'cite',
- 'q' => 'cite'
+ 'q' => 'cite',
+ 'source' => 'src',
+ 'video' => array(
+ 'poster',
+ 'src'
+ )
);
}
$this->replace_url_attributes = (array) $element_attribute;
@@ -374,6 +400,14 @@ class SimplePie_Sanitize
}
}
+ if ($this->rename_attributes)
+ {
+ foreach ($this->rename_attributes as $attrib)
+ {
+ $this->rename_attr($attrib, $xpath);
+ }
+ }
+
if ($this->strip_attributes)
{
foreach ($this->strip_attributes as $attrib)
@@ -447,6 +481,8 @@ class SimplePie_Sanitize
{
$data = preg_replace('/^<div' . SIMPLEPIE_PCRE_XML_ATTRIBUTE . '>/', '<div>', $data);
}
+
+ $data = str_replace('</source>', '', $data);
}
if ($type & SIMPLEPIE_CONSTRUCT_IRI)
@@ -642,6 +678,17 @@ class SimplePie_Sanitize
}
}
+ protected function rename_attr($attrib, $xpath)
+ {
+ $elements = $xpath->query('//*[@' . $attrib . ']');
+
+ foreach ($elements as $element)
+ {
+ $element->setAttribute('data-sanitized-' . $attrib, $element->getAttribute($attrib));
+ $element->removeAttribute($attrib);
+ }
+ }
+
protected function add_attr($tag, $valuePairs, $document)
{
$elements = $document->getElementsByTagName($tag);
@@ -654,3 +701,5 @@ class SimplePie_Sanitize
}
}
}
+
+class_alias('SimplePie_Sanitize', 'SimplePie\Sanitize', false);
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Source.php b/vendor/simplepie/simplepie/library/SimplePie/Source.php
index f14e5b220..9e7ddf04d 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Source.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Source.php
@@ -575,3 +575,5 @@ class SimplePie_Source
return null;
}
}
+
+class_alias('SimplePie_Source', 'SimplePie\Source', false);
diff --git a/vendor/simplepie/simplepie/library/SimplePie/XML/Declaration/Parser.php b/vendor/simplepie/simplepie/library/SimplePie/XML/Declaration/Parser.php
index 0c857a586..9ac088704 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/XML/Declaration/Parser.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/XML/Declaration/Parser.php
@@ -357,3 +357,5 @@ class SimplePie_XML_Declaration_Parser
}
}
}
+
+class_alias('SimplePie_XML_Declaration_Parser', 'SimplePie\XML\Declaration\Parser', false);
diff --git a/vendor/simplepie/simplepie/library/SimplePie/gzdecode.php b/vendor/simplepie/simplepie/library/SimplePie/gzdecode.php
index 9c54f8833..030a230d0 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/gzdecode.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/gzdecode.php
@@ -364,3 +364,5 @@ class SimplePie_gzdecode
return false;
}
}
+
+class_alias('SimplePie_gzdecode', 'SimplePie\Gzdecode', false);
diff --git a/vendor/simplepie/simplepie/src/Author.php b/vendor/simplepie/simplepie/src/Author.php
new file mode 100644
index 000000000..19e92498e
--- /dev/null
+++ b/vendor/simplepie/simplepie/src/Author.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Please note: This file is automatically generated by a build script. The
+ * full original source is always available from http://simplepie.org/
+ *
+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ * to endorse or promote products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Sam Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+namespace SimplePie;
+
+class_exists('SimplePie_Author');
+
+if (\false) {
+ class Author extends \SimplePie_Author
+ {
+ }
+}
diff --git a/vendor/simplepie/simplepie/src/Cache.php b/vendor/simplepie/simplepie/src/Cache.php
new file mode 100644
index 000000000..b1a38d8b4
--- /dev/null
+++ b/vendor/simplepie/simplepie/src/Cache.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Please note: This file is automatically generated by a build script. The
+ * full original source is always available from http://simplepie.org/
+ *
+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ * to endorse or promote products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Sam Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+namespace SimplePie;
+
+class_exists('SimplePie_Cache');
+
+if (\false) {
+ class Cache extends \SimplePie_Cache
+ {
+ }
+}
diff --git a/vendor/simplepie/simplepie/src/Cache/Base.php b/vendor/simplepie/simplepie/src/Cache/Base.php
new file mode 100644
index 000000000..c097906ff
--- /dev/null
+++ b/vendor/simplepie/simplepie/src/Cache/Base.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Please note: This file is automatically generated by a build script. The
+ * full original source is always available from http://simplepie.org/
+ *
+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ * to endorse or promote products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Sam Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+namespace SimplePie\Cache;
+
+interface_exists('SimplePie_Cache_Base');
+
+if (\false) {
+ interface Base extends \SimplePie_Cache_Base
+ {
+ }
+}
diff --git a/vendor/simplepie/simplepie/src/Cache/DB.php b/vendor/simplepie/simplepie/src/Cache/DB.php
new file mode 100644
index 000000000..14bfa41bd
--- /dev/null
+++ b/vendor/simplepie/simplepie/src/Cache/DB.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Please note: This file is automatically generated by a build script. The
+ * full original source is always available from http://simplepie.org/
+ *
+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ * to endorse or promote products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Sam Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+namespace SimplePie\Cache;
+
+class_exists('SimplePie_Cache_DB');
+
+if (\false) {
+ class DB extends \SimplePie_Cache_DB
+ {
+ }
+}
diff --git a/vendor/simplepie/simplepie/src/Cache/File.php b/vendor/simplepie/simplepie/src/Cache/File.php
new file mode 100644
index 000000000..f679190f4
--- /dev/null
+++ b/vendor/simplepie/simplepie/src/Cache/File.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Please note: This file is automatically generated by a build script. The
+ * full original source is always available from http://simplepie.org/
+ *
+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ * to endorse or promote products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Sam Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+namespace SimplePie\Cache;
+
+class_exists('SimplePie_Cache_File');
+
+if (\false) {
+ class File extends \SimplePie_Cache_File
+ {
+ }
+}
diff --git a/vendor/simplepie/simplepie/src/Cache/Memcache.php b/vendor/simplepie/simplepie/src/Cache/Memcache.php
new file mode 100644
index 000000000..c468f2c0f
--- /dev/null
+++ b/vendor/simplepie/simplepie/src/Cache/Memcache.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Please note: This file is automatically generated by a build script. The
+ * full original source is always available from http://simplepie.org/
+ *
+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ * to endorse or promote products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Sam Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+namespace SimplePie\Cache;
+
+class_exists('SimplePie_Cache_Memcache');
+
+if (\false) {
+ class Memcache extends \SimplePie_Cache_Memcache
+ {
+ }
+}
diff --git a/vendor/simplepie/simplepie/src/Cache/Memcached.php b/vendor/simplepie/simplepie/src/Cache/Memcached.php
new file mode 100644
index 000000000..16fd2b177
--- /dev/null
+++ b/vendor/simplepie/simplepie/src/Cache/Memcached.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Please note: This file is automatically generated by a build script. The
+ * full original source is always available from http://simplepie.org/
+ *
+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ * to endorse or promote products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Sam Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+namespace SimplePie\Cache;
+
+class_exists('SimplePie_Cache_Memcached');
+
+if (\false) {
+ class Memcached extends \SimplePie_Cache_Memcached
+ {
+ }
+}
diff --git a/vendor/simplepie/simplepie/src/Cache/MySQL.php b/vendor/simplepie/simplepie/src/Cache/MySQL.php
new file mode 100644
index 000000000..2ffe18a37
--- /dev/null
+++ b/vendor/simplepie/simplepie/src/Cache/MySQL.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Please note: This file is automatically generated by a build script. The
+ * full original source is always available from http://simplepie.org/
+ *
+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ * to endorse or promote products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Sam Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+namespace SimplePie\Cache;
+
+class_exists('SimplePie_Cache_MySQL');
+
+if (\false) {
+ class MySQL extends \SimplePie_Cache_MySQL
+ {
+ }
+}
diff --git a/vendor/simplepie/simplepie/src/Cache/Redis.php b/vendor/simplepie/simplepie/src/Cache/Redis.php
new file mode 100644
index 000000000..e203b6c1b
--- /dev/null
+++ b/vendor/simplepie/simplepie/src/Cache/Redis.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Please note: This file is automatically generated by a build script. The
+ * full original source is always available from http://simplepie.org/
+ *
+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ * to endorse or promote products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Sam Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+namespace SimplePie\Cache;
+
+class_exists('SimplePie_Cache_Redis');
+
+if (\false) {
+ class Redis extends \SimplePie_Cache_Redis
+ {
+ }
+}
diff --git a/vendor/simplepie/simplepie/src/Caption.php b/vendor/simplepie/simplepie/src/Caption.php
new file mode 100644
index 000000000..f0cf271de
--- /dev/null
+++ b/vendor/simplepie/simplepie/src/Caption.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Please note: This file is automatically generated by a build script. The
+ * full original source is always available from http://simplepie.org/
+ *
+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ * to endorse or promote products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Sam Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+namespace SimplePie;
+
+class_exists('SimplePie_Caption');
+
+if (\false) {
+ class Caption extends \SimplePie_Caption
+ {
+ }
+}
diff --git a/vendor/simplepie/simplepie/src/Category.php b/vendor/simplepie/simplepie/src/Category.php
new file mode 100644
index 000000000..895b79a0d
--- /dev/null
+++ b/vendor/simplepie/simplepie/src/Category.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Please note: This file is automatically generated by a build script. The
+ * full original source is always available from http://simplepie.org/
+ *
+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ * to endorse or promote products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Sam Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+namespace SimplePie;
+
+class_exists('SimplePie_Category');
+
+if (\false) {
+ class Category extends \SimplePie_Category
+ {
+ }
+}
diff --git a/vendor/simplepie/simplepie/src/Content/Type/Sniffer.php b/vendor/simplepie/simplepie/src/Content/Type/Sniffer.php
new file mode 100644
index 000000000..574912e8e
--- /dev/null
+++ b/vendor/simplepie/simplepie/src/Content/Type/Sniffer.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Please note: This file is automatically generated by a build script. The
+ * full original source is always available from http://simplepie.org/
+ *
+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ * to endorse or promote products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Sam Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+namespace SimplePie\Content\Type;
+
+class_exists('SimplePie_Content_Type_Sniffer');
+
+if (\false) {
+ class Sniffer extends \SimplePie_Content_Type_Sniffer
+ {
+ }
+}
diff --git a/vendor/simplepie/simplepie/src/Copyright.php b/vendor/simplepie/simplepie/src/Copyright.php
new file mode 100644
index 000000000..ec4933eb4
--- /dev/null
+++ b/vendor/simplepie/simplepie/src/Copyright.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Please note: This file is automatically generated by a build script. The
+ * full original source is always available from http://simplepie.org/
+ *
+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ * to endorse or promote products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Sam Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+namespace SimplePie;
+
+class_exists('SimplePie_Copyright');
+
+if (\false) {
+ class Copyright extends \SimplePie_Copyright
+ {
+ }
+}
diff --git a/vendor/simplepie/simplepie/src/Credit.php b/vendor/simplepie/simplepie/src/Credit.php
new file mode 100644
index 000000000..9350845c9
--- /dev/null
+++ b/vendor/simplepie/simplepie/src/Credit.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Please note: This file is automatically generated by a build script. The
+ * full original source is always available from http://simplepie.org/
+ *
+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ * to endorse or promote products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Sam Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+namespace SimplePie;
+
+class_exists('SimplePie_Credit');
+
+if (\false) {
+ class Credit extends \SimplePie_Credit
+ {
+ }
+}
diff --git a/vendor/simplepie/simplepie/src/Enclosure.php b/vendor/simplepie/simplepie/src/Enclosure.php
new file mode 100644
index 000000000..dd41f24d2
--- /dev/null
+++ b/vendor/simplepie/simplepie/src/Enclosure.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Please note: This file is automatically generated by a build script. The
+ * full original source is always available from http://simplepie.org/
+ *
+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ * to endorse or promote products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Sam Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+namespace SimplePie;
+
+class_exists('SimplePie_Enclosure');
+
+if (\false) {
+ class Enclosure extends \SimplePie_Enclosure
+ {
+ }
+}
diff --git a/vendor/simplepie/simplepie/src/Exception.php b/vendor/simplepie/simplepie/src/Exception.php
new file mode 100644
index 000000000..9068dc036
--- /dev/null
+++ b/vendor/simplepie/simplepie/src/Exception.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Please note: This file is automatically generated by a build script. The
+ * full original source is always available from http://simplepie.org/
+ *
+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ * to endorse or promote products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Sam Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+namespace SimplePie;
+
+class_exists('SimplePie_Exception');
+
+if (\false) {
+ class Exception extends \SimplePie_Exception
+ {
+ }
+}
diff --git a/vendor/simplepie/simplepie/src/File.php b/vendor/simplepie/simplepie/src/File.php
new file mode 100644
index 000000000..25d3f7300
--- /dev/null
+++ b/vendor/simplepie/simplepie/src/File.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Please note: This file is automatically generated by a build script. The
+ * full original source is always available from http://simplepie.org/
+ *
+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ * to endorse or promote products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Sam Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+namespace SimplePie;
+
+class_exists('SimplePie_File');
+
+if (\false) {
+ class File extends \SimplePie_File
+ {
+ }
+}
diff --git a/vendor/simplepie/simplepie/src/Gzdecode.php b/vendor/simplepie/simplepie/src/Gzdecode.php
new file mode 100644
index 000000000..503e52126
--- /dev/null
+++ b/vendor/simplepie/simplepie/src/Gzdecode.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Please note: This file is automatically generated by a build script. The
+ * full original source is always available from http://simplepie.org/
+ *
+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ * to endorse or promote products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Sam Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+namespace SimplePie;
+
+class_exists('SimplePie_gzdecode');
+
+if (\false) {
+ class Gzdecode extends \SimplePie_gzdecode
+ {
+ }
+}
diff --git a/vendor/simplepie/simplepie/src/HTTP/Parser.php b/vendor/simplepie/simplepie/src/HTTP/Parser.php
new file mode 100644
index 000000000..dd34bb9de
--- /dev/null
+++ b/vendor/simplepie/simplepie/src/HTTP/Parser.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Please note: This file is automatically generated by a build script. The
+ * full original source is always available from http://simplepie.org/
+ *
+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ * to endorse or promote products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Sam Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+namespace SimplePie\HTTP;
+
+class_exists('SimplePie_HTTP_Parser');
+
+if (\false) {
+ class Parser extends \SimplePie_HTTP_Parser
+ {
+ }
+}
diff --git a/vendor/simplepie/simplepie/src/IRI.php b/vendor/simplepie/simplepie/src/IRI.php
new file mode 100644
index 000000000..07d783117
--- /dev/null
+++ b/vendor/simplepie/simplepie/src/IRI.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Please note: This file is automatically generated by a build script. The
+ * full original source is always available from http://simplepie.org/
+ *
+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ * to endorse or promote products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Sam Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+namespace SimplePie;
+
+class_exists('SimplePie_IRI');
+
+if (\false) {
+ class IRI extends \SimplePie_IRI
+ {
+ }
+}
diff --git a/vendor/simplepie/simplepie/src/Item.php b/vendor/simplepie/simplepie/src/Item.php
new file mode 100644
index 000000000..d3250d5b5
--- /dev/null
+++ b/vendor/simplepie/simplepie/src/Item.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Please note: This file is automatically generated by a build script. The
+ * full original source is always available from http://simplepie.org/
+ *
+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ * to endorse or promote products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Sam Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+namespace SimplePie;
+
+class_exists('SimplePie_Item');
+
+if (\false) {
+ class Item extends \SimplePie_Item
+ {
+ }
+}
diff --git a/vendor/simplepie/simplepie/src/Locator.php b/vendor/simplepie/simplepie/src/Locator.php
new file mode 100644
index 000000000..1696937d4
--- /dev/null
+++ b/vendor/simplepie/simplepie/src/Locator.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Please note: This file is automatically generated by a build script. The
+ * full original source is always available from http://simplepie.org/
+ *
+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ * to endorse or promote products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Sam Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+namespace SimplePie;
+
+class_exists('SimplePie_Locator');
+
+if (\false) {
+ class Locator extends \SimplePie_Locator
+ {
+ }
+}
diff --git a/vendor/simplepie/simplepie/src/Misc.php b/vendor/simplepie/simplepie/src/Misc.php
new file mode 100644
index 000000000..de649fddb
--- /dev/null
+++ b/vendor/simplepie/simplepie/src/Misc.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Please note: This file is automatically generated by a build script. The
+ * full original source is always available from http://simplepie.org/
+ *
+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ * to endorse or promote products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Sam Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+namespace SimplePie;
+
+class_exists('SimplePie_Misc');
+
+if (\false) {
+ class Misc extends \SimplePie_Misc
+ {
+ }
+}
diff --git a/vendor/simplepie/simplepie/src/Net/IPv6.php b/vendor/simplepie/simplepie/src/Net/IPv6.php
new file mode 100644
index 000000000..6dee821e0
--- /dev/null
+++ b/vendor/simplepie/simplepie/src/Net/IPv6.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Please note: This file is automatically generated by a build script. The
+ * full original source is always available from http://simplepie.org/
+ *
+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ * to endorse or promote products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Sam Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+namespace SimplePie\Net;
+
+class_exists('SimplePie_Net_IPv6');
+
+if (\false) {
+ class IPv6 extends \SimplePie_Net_IPv6
+ {
+ }
+}
diff --git a/vendor/simplepie/simplepie/src/Parse/Date.php b/vendor/simplepie/simplepie/src/Parse/Date.php
new file mode 100644
index 000000000..978e4f6b1
--- /dev/null
+++ b/vendor/simplepie/simplepie/src/Parse/Date.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Please note: This file is automatically generated by a build script. The
+ * full original source is always available from http://simplepie.org/
+ *
+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ * to endorse or promote products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Sam Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+namespace SimplePie\Parse;
+
+class_exists('SimplePie_Parse_Date');
+
+if (\false) {
+ class Date extends \SimplePie_Parse_Date
+ {
+ }
+}
diff --git a/vendor/simplepie/simplepie/src/Parser.php b/vendor/simplepie/simplepie/src/Parser.php
new file mode 100644
index 000000000..2b38fe3a0
--- /dev/null
+++ b/vendor/simplepie/simplepie/src/Parser.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Please note: This file is automatically generated by a build script. The
+ * full original source is always available from http://simplepie.org/
+ *
+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ * to endorse or promote products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Sam Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+namespace SimplePie;
+
+class_exists('SimplePie_Parser');
+
+if (\false) {
+ class Parser extends \SimplePie_Parser
+ {
+ }
+}
diff --git a/vendor/simplepie/simplepie/src/Rating.php b/vendor/simplepie/simplepie/src/Rating.php
new file mode 100644
index 000000000..10bf261cd
--- /dev/null
+++ b/vendor/simplepie/simplepie/src/Rating.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Please note: This file is automatically generated by a build script. The
+ * full original source is always available from http://simplepie.org/
+ *
+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ * to endorse or promote products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Sam Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+namespace SimplePie;
+
+class_exists('SimplePie_Rating');
+
+if (\false) {
+ class Rating extends \SimplePie_Rating
+ {
+ }
+}
diff --git a/vendor/simplepie/simplepie/src/Registry.php b/vendor/simplepie/simplepie/src/Registry.php
new file mode 100644
index 000000000..7aba9ca8e
--- /dev/null
+++ b/vendor/simplepie/simplepie/src/Registry.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Please note: This file is automatically generated by a build script. The
+ * full original source is always available from http://simplepie.org/
+ *
+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ * to endorse or promote products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Sam Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+namespace SimplePie;
+
+class_exists('SimplePie_Registry');
+
+if (\false) {
+ class Registry extends \SimplePie_Registry
+ {
+ }
+}
diff --git a/vendor/simplepie/simplepie/src/Restriction.php b/vendor/simplepie/simplepie/src/Restriction.php
new file mode 100644
index 000000000..2822bc3ec
--- /dev/null
+++ b/vendor/simplepie/simplepie/src/Restriction.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Please note: This file is automatically generated by a build script. The
+ * full original source is always available from http://simplepie.org/
+ *
+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ * to endorse or promote products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Sam Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+namespace SimplePie;
+
+class_exists('SimplePie_Restriction');
+
+if (\false) {
+ class Restriction extends \SimplePie_Restriction
+ {
+ }
+}
diff --git a/vendor/simplepie/simplepie/src/Sanitize.php b/vendor/simplepie/simplepie/src/Sanitize.php
new file mode 100644
index 000000000..2af0c01d6
--- /dev/null
+++ b/vendor/simplepie/simplepie/src/Sanitize.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Please note: This file is automatically generated by a build script. The
+ * full original source is always available from http://simplepie.org/
+ *
+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ * to endorse or promote products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Sam Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+namespace SimplePie;
+
+class_exists('SimplePie_Sanitize');
+
+if (\false) {
+ class Sanitize extends \SimplePie_Sanitize
+ {
+ }
+}
diff --git a/vendor/simplepie/simplepie/src/SimplePie.php b/vendor/simplepie/simplepie/src/SimplePie.php
new file mode 100644
index 000000000..e3a849474
--- /dev/null
+++ b/vendor/simplepie/simplepie/src/SimplePie.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Please note: This file is automatically generated by a build script. The
+ * full original source is always available from http://simplepie.org/
+ *
+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ * to endorse or promote products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Sam Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+namespace SimplePie;
+
+class_exists('SimplePie');
+
+if (\false) {
+ class SimplePie extends \SimplePie
+ {
+ }
+}
diff --git a/vendor/simplepie/simplepie/src/Source.php b/vendor/simplepie/simplepie/src/Source.php
new file mode 100644
index 000000000..b66b32c61
--- /dev/null
+++ b/vendor/simplepie/simplepie/src/Source.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Please note: This file is automatically generated by a build script. The
+ * full original source is always available from http://simplepie.org/
+ *
+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ * to endorse or promote products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Sam Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+namespace SimplePie;
+
+class_exists('SimplePie_Source');
+
+if (\false) {
+ class Source extends \SimplePie_Source
+ {
+ }
+}
diff --git a/vendor/simplepie/simplepie/src/XML/Declaration/Parser.php b/vendor/simplepie/simplepie/src/XML/Declaration/Parser.php
new file mode 100644
index 000000000..10e651d0c
--- /dev/null
+++ b/vendor/simplepie/simplepie/src/XML/Declaration/Parser.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Please note: This file is automatically generated by a build script. The
+ * full original source is always available from http://simplepie.org/
+ *
+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ * to endorse or promote products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Sam Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+namespace SimplePie\XML\Declaration;
+
+class_exists('SimplePie_XML_Declaration_Parser');
+
+if (\false) {
+ class Parser extends \SimplePie_XML_Declaration_Parser
+ {
+ }
+}
diff --git a/vendor/smarty/smarty/.github/workflows/ci.yml b/vendor/smarty/smarty/.github/workflows/ci.yml
deleted file mode 100644
index e27b60bfc..000000000
--- a/vendor/smarty/smarty/.github/workflows/ci.yml
+++ /dev/null
@@ -1,77 +0,0 @@
-# https://help.github.com/en/categories/automating-your-workflow-with-github-actions
-
-on:
- - pull_request
- - push
-
-name: CI
-
-jobs:
- tests:
- name: Tests
-
- runs-on: ${{ matrix.os }}
-
- env:
- PHP_EXTENSIONS: dom, json, libxml, mbstring, pdo_sqlite, soap, xml, xmlwriter
- PHP_INI_VALUES: assert.exception=1, zend.assertions=1
-
- strategy:
- fail-fast: false
- matrix:
- os:
- - ubuntu-latest
-
- php-version:
- - "7.1"
- - "7.2"
- - "7.3"
- - "7.4"
- - "8.0"
- - "8.1"
-
- compiler:
- - default
-
- include:
- - os: ubuntu-latest
- php-version: "8.0"
- compiler: jit
- - os: ubuntu-latest
- php-version: "8.1"
- compiler: jit
-
- steps:
- - name: Checkout
- uses: actions/checkout@v2
-
- - name: Override PHP ini values for JIT compiler
- if: matrix.compiler == 'jit'
- run: echo "PHP_INI_VALUES::assert.exception=1, zend.assertions=1, opcache.enable=1, opcache.enable_cli=1, opcache.optimization_level=-1, opcache.jit=1255, opcache.jit_buffer_size=32M" >> $GITHUB_ENV
-
- - name: Install PHP with extensions
- uses: shivammathur/setup-php@v2
- with:
- php-version: ${{ matrix.php-version }}
- coverage: pcov
- extensions: ${{ env.PHP_EXTENSIONS }}
- ini-values: ${{ env.PHP_INI_VALUES }}
-
- - name: Validate composer.json and composer.lock
- run: composer validate
-
- - name: Cache Composer packages
- id: composer-cache
- uses: actions/cache@v2
- with:
- path: vendor
- key: ${{ runner.os }}-php-${{ matrix.php-version }}-${{ hashFiles('**/composer.lock') }}
- restore-keys: |
- ${{ runner.os }}-php-${{ matrix.php-version }}-
-
- - name: Install dependencies
- if: steps.composer-cache.outputs.cache-hit != 'true'
- run: composer install --prefer-dist --no-progress --no-suggest
-
- - name: Run tests with phpunit
- run: ./phpunit.sh
diff --git a/vendor/smarty/smarty/CHANGELOG.md b/vendor/smarty/smarty/CHANGELOG.md
index 39e834837..784cc09f5 100644
--- a/vendor/smarty/smarty/CHANGELOG.md
+++ b/vendor/smarty/smarty/CHANGELOG.md
@@ -6,6 +6,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+## [4.1.1] - 2022-05-17
+
+### Security
+- Prevent PHP injection through malicious block name or include file name. This addresses CVE-2022-
+
+### Fixed
+- Exclude docs and demo from export and composer [#751](https://github.com/smarty-php/smarty/pull/751)
+- PHP 8.1 deprecation notices in demo/plugins/cacheresource.pdo.php [#706](https://github.com/smarty-php/smarty/issues/706)
+- PHP 8.1 deprecation notices in truncate modifier [#699](https://github.com/smarty-php/smarty/issues/699)
+- Math equation `max(x, y)` didn't work anymore [#721](https://github.com/smarty-php/smarty/issues/721)
+- Fix PHP 8.1 deprecated warning when calling rtrim [#743](https://github.com/smarty-php/smarty/pull/743)
+- PHP 8.1: fix deprecation in escape modifier [#727](https://github.com/smarty-php/smarty/pull/727)
+
## [4.1.0] - 2022-02-06
### Added
diff --git a/vendor/smarty/smarty/demo/configs/test.conf b/vendor/smarty/smarty/demo/configs/test.conf
deleted file mode 100644
index 5eac748ec..000000000
--- a/vendor/smarty/smarty/demo/configs/test.conf
+++ /dev/null
@@ -1,5 +0,0 @@
-title = Welcome to Smarty!
-cutoff_size = 40
-
-[setup]
-bold = true
diff --git a/vendor/smarty/smarty/demo/index.php b/vendor/smarty/smarty/demo/index.php
deleted file mode 100644
index 3aed37168..000000000
--- a/vendor/smarty/smarty/demo/index.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-/**
- * Example Application
- *
- * @package Example-application
- */
-require '../libs/Smarty.class.php';
-$smarty = new Smarty;
-//$smarty->force_compile = true;
-$smarty->debugging = true;
-$smarty->caching = true;
-$smarty->cache_lifetime = 120;
-$smarty->assign("Name", "Fred Irving Johnathan Bradley Peppergill", true);
-$smarty->assign("FirstName", array("John", "Mary", "James", "Henry"));
-$smarty->assign("LastName", array("Doe", "Smith", "Johnson", "Case"));
-$smarty->assign(
- "Class",
- array(
- array("A", "B", "C", "D"),
- array("E", "F", "G", "H"),
- array("I", "J", "K", "L"),
- array("M", "N", "O", "P")
- )
-);
-$smarty->assign(
- "contacts",
- array(
- array("phone" => "1", "fax" => "2", "cell" => "3"),
- array("phone" => "555-4444", "fax" => "555-3333", "cell" => "760-1234")
- )
-);
-$smarty->assign("option_values", array("NY", "NE", "KS", "IA", "OK", "TX"));
-$smarty->assign("option_output", array("New York", "Nebraska", "Kansas", "Iowa", "Oklahoma", "Texas"));
-$smarty->assign("option_selected", "NE");
-$smarty->display('index.tpl');
diff --git a/vendor/smarty/smarty/demo/plugins/cacheresource.apc.php b/vendor/smarty/smarty/demo/plugins/cacheresource.apc.php
deleted file mode 100644
index 7867cc598..000000000
--- a/vendor/smarty/smarty/demo/plugins/cacheresource.apc.php
+++ /dev/null
@@ -1,85 +0,0 @@
-<?php
-
-/**
- * APC CacheResource
- * CacheResource Implementation based on the KeyValueStore API to use
- * memcache as the storage resource for Smarty's output caching.
- * *
- *
- * @package CacheResource-examples
- * @author Uwe Tews
- */
-class Smarty_CacheResource_Apc extends Smarty_CacheResource_KeyValueStore
-{
- /**
- * Smarty_CacheResource_Apc constructor.
- *
- * @throws \Exception
- */
- public function __construct()
- {
- // test if APC is present
- if (!function_exists('apc_cache_info')) {
- throw new Exception('APC Template Caching Error: APC is not installed');
- }
- }
-
- /**
- * Read values for a set of keys from cache
- *
- * @param array $keys list of keys to fetch
- *
- * @return array list of values with the given keys used as indexes
- * @return boolean true on success, false on failure
- */
- protected function read(array $keys)
- {
- $_res = array();
- $res = apc_fetch($keys);
- foreach ($res as $k => $v) {
- $_res[ $k ] = $v;
- }
- return $_res;
- }
-
- /**
- * Save values for a set of keys to cache
- *
- * @param array $keys list of values to save
- * @param int $expire expiration time
- *
- * @return boolean true on success, false on failure
- */
- protected function write(array $keys, $expire = null)
- {
- foreach ($keys as $k => $v) {
- apc_store($k, $v, $expire);
- }
- return true;
- }
-
- /**
- * Remove values from cache
- *
- * @param array $keys list of keys to delete
- *
- * @return boolean true on success, false on failure
- */
- protected function delete(array $keys)
- {
- foreach ($keys as $k) {
- apc_delete($k);
- }
- return true;
- }
-
- /**
- * Remove *all* values from cache
- *
- * @return boolean true on success, false on failure
- */
- protected function purge()
- {
- return apc_clear_cache('user');
- }
-}
diff --git a/vendor/smarty/smarty/demo/plugins/cacheresource.memcache.php b/vendor/smarty/smarty/demo/plugins/cacheresource.memcache.php
deleted file mode 100644
index 71fe9d3f1..000000000
--- a/vendor/smarty/smarty/demo/plugins/cacheresource.memcache.php
+++ /dev/null
@@ -1,99 +0,0 @@
-<?php
-
-/**
- * Memcache CacheResource
- * CacheResource Implementation based on the KeyValueStore API to use
- * memcache as the storage resource for Smarty's output caching.
- * Note that memcache has a limitation of 256 characters per cache-key.
- * To avoid complications all cache-keys are translated to a sha1 hash.
- *
- * @package CacheResource-examples
- * @author Rodney Rehm
- */
-class Smarty_CacheResource_Memcache extends Smarty_CacheResource_KeyValueStore
-{
- /**
- * memcache instance
- *
- * @var Memcache
- */
- protected $memcache = null;
-
- /**
- * Smarty_CacheResource_Memcache constructor.
- */
- public function __construct()
- {
- if (class_exists('Memcached')) {
- $this->memcache = new Memcached();
- } else {
- $this->memcache = new Memcache();
- }
- $this->memcache->addServer('127.0.0.1', 11211);
- }
-
- /**
- * Read values for a set of keys from cache
- *
- * @param array $keys list of keys to fetch
- *
- * @return array list of values with the given keys used as indexes
- * @return boolean true on success, false on failure
- */
- protected function read(array $keys)
- {
- $res = array();
- foreach ($keys as $key) {
- $k = sha1($key);
- $res[$key] = $this->memcache->get($k);
- }
- return $res;
- }
-
- /**
- * Save values for a set of keys to cache
- *
- * @param array $keys list of values to save
- * @param int $expire expiration time
- *
- * @return boolean true on success, false on failure
- */
- protected function write(array $keys, $expire = null)
- {
- foreach ($keys as $k => $v) {
- $k = sha1($k);
- if (class_exists('Memcached')) {
- $this->memcache->set($k, $v, $expire);
- } else {
- $this->memcache->set($k, $v, 0, $expire);
- }
- }
- return true;
- }
-
- /**
- * Remove values from cache
- *
- * @param array $keys list of keys to delete
- *
- * @return boolean true on success, false on failure
- */
- protected function delete(array $keys)
- {
- foreach ($keys as $k) {
- $k = sha1($k);
- $this->memcache->delete($k);
- }
- return true;
- }
-
- /**
- * Remove *all* values from cache
- *
- * @return boolean true on success, false on failure
- */
- protected function purge()
- {
- return $this->memcache->flush();
- }
-}
diff --git a/vendor/smarty/smarty/demo/plugins/cacheresource.mysql.php b/vendor/smarty/smarty/demo/plugins/cacheresource.mysql.php
deleted file mode 100644
index c5037eb13..000000000
--- a/vendor/smarty/smarty/demo/plugins/cacheresource.mysql.php
+++ /dev/null
@@ -1,183 +0,0 @@
-<?php
-
-/**
- * MySQL CacheResource
- * CacheResource Implementation based on the Custom API to use
- * MySQL as the storage resource for Smarty's output caching.
- * Table definition:
- * <pre>CREATE TABLE IF NOT EXISTS `output_cache` (
- * `id` CHAR(40) NOT NULL COMMENT 'sha1 hash',
- * `name` VARCHAR(250) NOT NULL,
- * `cache_id` VARCHAR(250) NULL DEFAULT NULL,
- * `compile_id` VARCHAR(250) NULL DEFAULT NULL,
- * `modified` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
- * `content` LONGTEXT NOT NULL,
- * PRIMARY KEY (`id`),
- * INDEX(`name`),
- * INDEX(`cache_id`),
- * INDEX(`compile_id`),
- * INDEX(`modified`)
- * ) ENGINE = InnoDB;</pre>
- *
- * @package CacheResource-examples
- * @author Rodney Rehm
- */
-class Smarty_CacheResource_Mysql extends Smarty_CacheResource_Custom
-{
- /**
- * @var \PDO
- */
- protected $db;
-
- /**
- * @var \PDOStatement
- */
- protected $fetch;
-
- /**
- * @var \PDOStatement
- */
- protected $fetchTimestamp;
-
- /**
- * @var \PDOStatement
- */
- protected $save;
-
- /**
- * Smarty_CacheResource_Mysql constructor.
- *
- * @throws \SmartyException
- */
- public function __construct()
- {
- try {
- $this->db = new PDO("mysql:dbname=test;host=127.0.0.1", "smarty");
- } catch (PDOException $e) {
- throw new SmartyException('Mysql Resource failed: ' . $e->getMessage());
- }
- $this->fetch = $this->db->prepare('SELECT modified, content FROM output_cache WHERE id = :id');
- $this->fetchTimestamp = $this->db->prepare('SELECT modified FROM output_cache WHERE id = :id');
- $this->save = $this->db->prepare(
- 'REPLACE INTO output_cache (id, name, cache_id, compile_id, content)
- VALUES (:id, :name, :cache_id, :compile_id, :content)'
- );
- }
-
- /**
- * fetch cached content and its modification time from data source
- *
- * @param string $id unique cache content identifier
- * @param string $name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param string $content cached content
- * @param integer $mtime cache modification timestamp (epoch)
- *
- * @return void
- */
- protected function fetch($id, $name, $cache_id, $compile_id, &$content, &$mtime)
- {
- $this->fetch->execute(array('id' => $id));
- $row = $this->fetch->fetch();
- $this->fetch->closeCursor();
- if ($row) {
- $content = $row[ 'content' ];
- $mtime = strtotime($row[ 'modified' ]);
- } else {
- $content = null;
- $mtime = null;
- }
- }
-
- /**
- * Fetch cached content's modification timestamp from data source
- *
- * @note implementing this method is optional. Only implement it if modification times can be accessed faster than
- * loading the complete cached content.
- *
- * @param string $id unique cache content identifier
- * @param string $name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- *
- * @return integer|boolean timestamp (epoch) the template was modified, or false if not found
- */
- protected function fetchTimestamp($id, $name, $cache_id, $compile_id)
- {
- $this->fetchTimestamp->execute(array('id' => $id));
- $mtime = strtotime($this->fetchTimestamp->fetchColumn());
- $this->fetchTimestamp->closeCursor();
- return $mtime;
- }
-
- /**
- * Save content to cache
- *
- * @param string $id unique cache content identifier
- * @param string $name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param integer|null $exp_time seconds till expiration time in seconds or null
- * @param string $content content to cache
- *
- * @return boolean success
- */
- protected function save($id, $name, $cache_id, $compile_id, $exp_time, $content)
- {
- $this->save->execute(
- array('id' => $id,
- 'name' => $name,
- 'cache_id' => $cache_id,
- 'compile_id' => $compile_id,
- 'content' => $content,)
- );
- return !!$this->save->rowCount();
- }
-
- /**
- * Delete content from cache
- *
- * @param string $name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param integer|null $exp_time seconds till expiration or null
- *
- * @return integer number of deleted caches
- */
- protected function delete($name, $cache_id, $compile_id, $exp_time)
- {
- // delete the whole cache
- if ($name === null && $cache_id === null && $compile_id === null && $exp_time === null) {
- // returning the number of deleted caches would require a second query to count them
- $query = $this->db->query('TRUNCATE TABLE output_cache');
- return -1;
- }
- // build the filter
- $where = array();
- // equal test name
- if ($name !== null) {
- $where[] = 'name = ' . $this->db->quote($name);
- }
- // equal test compile_id
- if ($compile_id !== null) {
- $where[] = 'compile_id = ' . $this->db->quote($compile_id);
- }
- // range test expiration time
- if ($exp_time !== null) {
- $where[] = 'modified < DATE_SUB(NOW(), INTERVAL ' . intval($exp_time) . ' SECOND)';
- }
- // equal test cache_id and match sub-groups
- if ($cache_id !== null) {
- $where[] =
- '(cache_id = ' .
- $this->db->quote($cache_id) .
- ' OR cache_id LIKE ' .
- $this->db->quote($cache_id . '|%') .
- ')';
- }
- // run delete query
- $query = $this->db->query('DELETE FROM output_cache WHERE ' . join(' AND ', $where));
- return $query->rowCount();
- }
-}
diff --git a/vendor/smarty/smarty/demo/plugins/cacheresource.pdo.php b/vendor/smarty/smarty/demo/plugins/cacheresource.pdo.php
deleted file mode 100644
index a80cd698e..000000000
--- a/vendor/smarty/smarty/demo/plugins/cacheresource.pdo.php
+++ /dev/null
@@ -1,346 +0,0 @@
-<?php
-
-/**
- * PDO Cache Handler
- * Allows you to store Smarty Cache files into your db.
- * Example table :
- * CREATE TABLE `smarty_cache` (
- * `id` char(40) NOT NULL COMMENT 'sha1 hash',
- * `name` varchar(250) NOT NULL,
- * `cache_id` varchar(250) DEFAULT NULL,
- * `compile_id` varchar(250) DEFAULT NULL,
- * `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
- * `expire` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
- * `content` mediumblob NOT NULL,
- * PRIMARY KEY (`id`),
- * KEY `name` (`name`),
- * KEY `cache_id` (`cache_id`),
- * KEY `compile_id` (`compile_id`),
- * KEY `modified` (`modified`),
- * KEY `expire` (`expire`)
- * ) ENGINE=InnoDB
- * Example usage :
- * $cnx = new PDO("mysql:host=localhost;dbname=mydb", "username", "password");
- * $smarty->setCachingType('pdo');
- * $smarty->loadPlugin('Smarty_CacheResource_Pdo');
- * $smarty->registerCacheResource('pdo', new Smarty_CacheResource_Pdo($cnx, 'smarty_cache'));
- *
- * @author Beno!t POLASZEK - 2014
- */
-class Smarty_CacheResource_Pdo extends Smarty_CacheResource_Custom
-{
- /**
- * @var string[]
- */
- protected $fetchStatements = array('default' => 'SELECT %2$s
- FROM %1$s
- WHERE 1
- AND id = :id
- AND cache_id IS NULL
- AND compile_id IS NULL',
- 'withCacheId' => 'SELECT %2$s
- FROM %1$s
- WHERE 1
- AND id = :id
- AND cache_id = :cache_id
- AND compile_id IS NULL',
- 'withCompileId' => 'SELECT %2$s
- FROM %1$s
- WHERE 1
- AND id = :id
- AND compile_id = :compile_id
- AND cache_id IS NULL',
- 'withCacheIdAndCompileId' => 'SELECT %2$s
- FROM %1$s
- WHERE 1
- AND id = :id
- AND cache_id = :cache_id
- AND compile_id = :compile_id');
-
- /**
- * @var string
- */
- protected $insertStatement = 'INSERT INTO %s
-
- SET id = :id,
- name = :name,
- cache_id = :cache_id,
- compile_id = :compile_id,
- modified = CURRENT_TIMESTAMP,
- expire = DATE_ADD(CURRENT_TIMESTAMP, INTERVAL :expire SECOND),
- content = :content
-
- ON DUPLICATE KEY UPDATE
- name = :name,
- cache_id = :cache_id,
- compile_id = :compile_id,
- modified = CURRENT_TIMESTAMP,
- expire = DATE_ADD(CURRENT_TIMESTAMP, INTERVAL :expire SECOND),
- content = :content';
-
- /**
- * @var string
- */
- protected $deleteStatement = 'DELETE FROM %1$s WHERE %2$s';
-
- /**
- * @var string
- */
- protected $truncateStatement = 'TRUNCATE TABLE %s';
-
- /**
- * @var string
- */
- protected $fetchColumns = 'modified, content';
-
- /**
- * @var string
- */
- protected $fetchTimestampColumns = 'modified';
-
- /**
- * @var \PDO
- */
- protected $pdo;
-
- /**
- * @var
- */
- protected $table;
-
- /**
- * @var null
- */
- protected $database;
-
- /**
- * Constructor
- *
- * @param PDO $pdo PDO : active connection
- * @param string $table : table (or view) name
- * @param string $database : optional - if table is located in another db
- *
- * @throws \SmartyException
- */
- public function __construct(PDO $pdo, $table, $database = null)
- {
- if (is_null($table)) {
- throw new SmartyException("Table name for caching can't be null");
- }
- $this->pdo = $pdo;
- $this->table = $table;
- $this->database = $database;
- $this->fillStatementsWithTableName();
- }
-
- /**
- * Fills the table name into the statements.
- *
- * @return $this Current Instance
- * @access protected
- */
- protected function fillStatementsWithTableName()
- {
- foreach ($this->fetchStatements as &$statement) {
- $statement = sprintf($statement, $this->getTableName(), '%s');
- }
- $this->insertStatement = sprintf($this->insertStatement, $this->getTableName());
- $this->deleteStatement = sprintf($this->deleteStatement, $this->getTableName(), '%s');
- $this->truncateStatement = sprintf($this->truncateStatement, $this->getTableName());
- return $this;
- }
-
- /**
- * Gets the fetch statement, depending on what you specify
- *
- * @param string $columns : the column(s) name(s) you want to retrieve from the database
- * @param string $id unique cache content identifier
- * @param string|null $cache_id cache id
- * @param string|null $compile_id compile id
- *
- * @access protected
- * @return \PDOStatement
- */
- protected function getFetchStatement($columns, $id, $cache_id = null, $compile_id = null)
- {
- $args = array();
- if (!is_null($cache_id) && !is_null($compile_id)) {
- $query = $this->fetchStatements[ 'withCacheIdAndCompileId' ] and
- $args = array('id' => $id, 'cache_id' => $cache_id, 'compile_id' => $compile_id);
- } elseif (is_null($cache_id) && !is_null($compile_id)) {
- $query = $this->fetchStatements[ 'withCompileId' ] and
- $args = array('id' => $id, 'compile_id' => $compile_id);
- } elseif (!is_null($cache_id) && is_null($compile_id)) {
- $query = $this->fetchStatements[ 'withCacheId' ] and $args = array('id' => $id, 'cache_id' => $cache_id);
- } else {
- $query = $this->fetchStatements[ 'default' ] and $args = array('id' => $id);
- }
- $query = sprintf($query, $columns);
- $stmt = $this->pdo->prepare($query);
- foreach ($args as $key => $value) {
- $stmt->bindValue($key, $value);
- }
- return $stmt;
- }
-
- /**
- * fetch cached content and its modification time from data source
- *
- * @param string $id unique cache content identifier
- * @param string $name template name
- * @param string|null $cache_id cache id
- * @param string|null $compile_id compile id
- * @param string $content cached content
- * @param integer $mtime cache modification timestamp (epoch)
- *
- * @return void
- * @access protected
- */
- protected function fetch($id, $name, $cache_id = null, $compile_id = null, &$content, &$mtime)
- {
- $stmt = $this->getFetchStatement($this->fetchColumns, $id, $cache_id, $compile_id);
- $stmt->execute();
- $row = $stmt->fetch();
- $stmt->closeCursor();
- if ($row) {
- $content = $this->outputContent($row[ 'content' ]);
- $mtime = strtotime($row[ 'modified' ]);
- } else {
- $content = null;
- $mtime = null;
- }
- }
-
- /**
- * Fetch cached content's modification timestamp from data source
- * {@internal implementing this method is optional.
- * Only implement it if modification times can be accessed faster than loading the complete cached content.}}
- *
- * @param string $id unique cache content identifier
- * @param string $name template name
- * @param string|null $cache_id cache id
- * @param string|null $compile_id compile id
- *
- * @return integer|boolean timestamp (epoch) the template was modified, or false if not found
- * @access protected
- */
- // protected function fetchTimestamp($id, $name, $cache_id = null, $compile_id = null) {
- // $stmt = $this->getFetchStatement($this->fetchTimestampColumns, $id, $cache_id, $compile_id);
- // $stmt -> execute();
- // $mtime = strtotime($stmt->fetchColumn());
- // $stmt -> closeCursor();
- // return $mtime;
- // }
- /**
- * Save content to cache
- *
- * @param string $id unique cache content identifier
- * @param string $name template name
- * @param string|null $cache_id cache id
- * @param string|null $compile_id compile id
- * @param integer|null $exp_time seconds till expiration time in seconds or null
- * @param string $content content to cache
- *
- * @return boolean success
- * @access protected
- */
- protected function save($id, $name, $cache_id = null, $compile_id = null, $exp_time, $content)
- {
- $stmt = $this->pdo->prepare($this->insertStatement);
- $stmt->bindValue('id', $id);
- $stmt->bindValue('name', $name);
- $stmt->bindValue('cache_id', $cache_id, (is_null($cache_id)) ? PDO::PARAM_NULL : PDO::PARAM_STR);
- $stmt->bindValue('compile_id', $compile_id, (is_null($compile_id)) ? PDO::PARAM_NULL : PDO::PARAM_STR);
- $stmt->bindValue('expire', (int)$exp_time, PDO::PARAM_INT);
- $stmt->bindValue('content', $this->inputContent($content));
- $stmt->execute();
- return !!$stmt->rowCount();
- }
-
- /**
- * Encodes the content before saving to database
- *
- * @param string $content
- *
- * @return string $content
- * @access protected
- */
- protected function inputContent($content)
- {
- return $content;
- }
-
- /**
- * Decodes the content before saving to database
- *
- * @param string $content
- *
- * @return string $content
- * @access protected
- */
- protected function outputContent($content)
- {
- return $content;
- }
-
- /**
- * Delete content from cache
- *
- * @param string|null $name template name
- * @param string|null $cache_id cache id
- * @param string|null $compile_id compile id
- * @param integer|null|-1 $exp_time seconds till expiration or null
- *
- * @return integer number of deleted caches
- * @access protected
- */
- protected function delete($name = null, $cache_id = null, $compile_id = null, $exp_time = null)
- {
- // delete the whole cache
- if ($name === null && $cache_id === null && $compile_id === null && $exp_time === null) {
- // returning the number of deleted caches would require a second query to count them
- $this->pdo->query($this->truncateStatement);
- return -1;
- }
- // build the filter
- $where = array();
- // equal test name
- if ($name !== null) {
- $where[] = 'name = ' . $this->pdo->quote($name);
- }
- // equal test cache_id and match sub-groups
- if ($cache_id !== null) {
- $where[] =
- '(cache_id = ' .
- $this->pdo->quote($cache_id) .
- ' OR cache_id LIKE ' .
- $this->pdo->quote($cache_id . '|%') .
- ')';
- }
- // equal test compile_id
- if ($compile_id !== null) {
- $where[] = 'compile_id = ' . $this->pdo->quote($compile_id);
- }
- // for clearing expired caches
- if ($exp_time === Smarty::CLEAR_EXPIRED) {
- $where[] = 'expire < CURRENT_TIMESTAMP';
- } // range test expiration time
- elseif ($exp_time !== null) {
- $where[] = 'modified < DATE_SUB(NOW(), INTERVAL ' . intval($exp_time) . ' SECOND)';
- }
- // run delete query
- $query = $this->pdo->query(sprintf($this->deleteStatement, join(' AND ', $where)));
- return $query->rowCount();
- }
-
- /**
- * Gets the formatted table name
- *
- * @return string
- * @access protected
- */
- protected function getTableName()
- {
- return (is_null($this->database)) ? "`{$this->table}`" : "`{$this->database}`.`{$this->table}`";
- }
-}
diff --git a/vendor/smarty/smarty/demo/plugins/cacheresource.pdo_gzip.php b/vendor/smarty/smarty/demo/plugins/cacheresource.pdo_gzip.php
deleted file mode 100644
index 5560b9e39..000000000
--- a/vendor/smarty/smarty/demo/plugins/cacheresource.pdo_gzip.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-require_once 'cacheresource.pdo.php';
-
-/**
- * PDO Cache Handler with GZIP support
- * Example usage :
- * $cnx = new PDO("mysql:host=localhost;dbname=mydb", "username", "password");
- * $smarty->setCachingType('pdo_gzip');
- * $smarty->loadPlugin('Smarty_CacheResource_Pdo_Gzip');
- * $smarty->registerCacheResource('pdo_gzip', new Smarty_CacheResource_Pdo_Gzip($cnx, 'smarty_cache'));
- *
- * @require Smarty_CacheResource_Pdo class
- * @author Beno!t POLASZEK - 2014
- */
-class Smarty_CacheResource_Pdo_Gzip extends Smarty_CacheResource_Pdo
-{
- /**
- * Encodes the content before saving to database
- *
- * @param string $content
- *
- * @return string $content
- * @access protected
- */
- protected function inputContent($content)
- {
- return gzdeflate($content);
- }
-
- /**
- * Decodes the content before saving to database
- *
- * @param string $content
- *
- * @return string $content
- * @access protected
- */
- protected function outputContent($content)
- {
- return gzinflate($content);
- }
-}
diff --git a/vendor/smarty/smarty/demo/plugins/resource.extendsall.php b/vendor/smarty/smarty/demo/plugins/resource.extendsall.php
deleted file mode 100644
index a547d41db..000000000
--- a/vendor/smarty/smarty/demo/plugins/resource.extendsall.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-
-/**
- * Extends All Resource
- * Resource Implementation modifying the extends-Resource to walk
- * through the template_dirs and inherit all templates of the same name
- *
- * @package Resource-examples
- * @author Rodney Rehm
- */
-class Smarty_Resource_Extendsall extends Smarty_Internal_Resource_Extends
-{
- /**
- * populate Source Object with meta data from Resource
- *
- * @param Smarty_Template_Source $source source object
- * @param Smarty_Internal_Template $_template template object
- *
- * @return void
- */
- public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
- {
- $uid = '';
- $sources = array();
- $timestamp = 0;
- foreach ($source->smarty->getTemplateDir() as $key => $directory) {
- try {
- $s = Smarty_Resource::source(null, $source->smarty, 'file:' . '[' . $key . ']' . $source->name);
- if (!$s->exists) {
- continue;
- }
- $sources[ $s->uid ] = $s;
- $uid .= $s->filepath;
- $timestamp = $s->timestamp > $timestamp ? $s->timestamp : $timestamp;
- } catch (SmartyException $e) {
- }
- }
- if (!$sources) {
- $source->exists = false;
- return;
- }
- $sources = array_reverse($sources, true);
- reset($sources);
- $s = current($sources);
- $source->components = $sources;
- $source->filepath = $s->filepath;
- $source->uid = sha1($uid . $source->smarty->_joined_template_dir);
- $source->exists = true;
- $source->timestamp = $timestamp;
- }
-
- /**
- * Disable timestamp checks for extendsall resource.
- * The individual source components will be checked.
- *
- * @return bool false
- */
- public function checkTimestamps()
- {
- return false;
- }
-}
diff --git a/vendor/smarty/smarty/demo/plugins/resource.mysql.php b/vendor/smarty/smarty/demo/plugins/resource.mysql.php
deleted file mode 100644
index 95a3c2baf..000000000
--- a/vendor/smarty/smarty/demo/plugins/resource.mysql.php
+++ /dev/null
@@ -1,101 +0,0 @@
-<?php
-
-/**
- * MySQL Resource
- * Resource Implementation based on the Custom API to use
- * MySQL as the storage resource for Smarty's templates and configs.
- * Table definition:
- * <pre>CREATE TABLE IF NOT EXISTS `templates` (
- * `name` varchar(100) NOT NULL,
- * `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
- * `source` text,
- * PRIMARY KEY (`name`)
- * ) ENGINE=InnoDB DEFAULT CHARSET=utf8;</pre>
- * Demo data:
- * <pre>INSERT INTO `templates` (`name`, `modified`, `source`) VALUES ('test.tpl', "2010-12-25 22:00:00", '{$x="hello
- * world"}{$x}');</pre>
- *
- *
- * @package Resource-examples
- * @author Rodney Rehm
- */
-class Smarty_Resource_Mysql extends Smarty_Resource_Custom
-{
- /**
- * PDO instance
- *
- * @var \PDO
- */
- protected $db;
-
- /**
- * prepared fetch() statement
- *
- * @var \PDOStatement
- */
- protected $fetch;
-
- /**
- * prepared fetchTimestamp() statement
- *
- * @var \PDOStatement
- */
- protected $mtime;
-
- /**
- * Smarty_Resource_Mysql constructor.
- *
- * @throws \SmartyException
- */
- public function __construct()
- {
- try {
- $this->db = new PDO("mysql:dbname=test;host=127.0.0.1", "smarty");
- } catch (PDOException $e) {
- throw new SmartyException('Mysql Resource failed: ' . $e->getMessage());
- }
- $this->fetch = $this->db->prepare('SELECT modified, source FROM templates WHERE name = :name');
- $this->mtime = $this->db->prepare('SELECT modified FROM templates WHERE name = :name');
- }
-
- /**
- * Fetch a template and its modification time from database
- *
- * @param string $name template name
- * @param string $source template source
- * @param integer $mtime template modification timestamp (epoch)
- *
- * @return void
- */
- protected function fetch($name, &$source, &$mtime)
- {
- $this->fetch->execute(array('name' => $name));
- $row = $this->fetch->fetch();
- $this->fetch->closeCursor();
- if ($row) {
- $source = $row[ 'source' ];
- $mtime = strtotime($row[ 'modified' ]);
- } else {
- $source = null;
- $mtime = null;
- }
- }
-
- /**
- * Fetch a template's modification time from database
- *
- * @note implementing this method is optional. Only implement it if modification times can be accessed faster than
- * loading the comple template source.
- *
- * @param string $name template name
- *
- * @return integer timestamp (epoch) the template was modified
- */
- protected function fetchTimestamp($name)
- {
- $this->mtime->execute(array('name' => $name));
- $mtime = $this->mtime->fetchColumn();
- $this->mtime->closeCursor();
- return strtotime($mtime);
- }
-}
diff --git a/vendor/smarty/smarty/demo/plugins/resource.mysqls.php b/vendor/smarty/smarty/demo/plugins/resource.mysqls.php
deleted file mode 100644
index 148a8dd61..000000000
--- a/vendor/smarty/smarty/demo/plugins/resource.mysqls.php
+++ /dev/null
@@ -1,77 +0,0 @@
-<?php
-
-/**
- * MySQL Resource
- * Resource Implementation based on the Custom API to use
- * MySQL as the storage resource for Smarty's templates and configs.
- * Note that this MySQL implementation fetches the source and timestamps in
- * a single database query, instead of two separate like resource.mysql.php does.
- * Table definition:
- * <pre>CREATE TABLE IF NOT EXISTS `templates` (
- * `name` varchar(100) NOT NULL,
- * `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
- * `source` text,
- * PRIMARY KEY (`name`)
- * ) ENGINE=InnoDB DEFAULT CHARSET=utf8;</pre>
- * Demo data:
- * <pre>INSERT INTO `templates` (`name`, `modified`, `source`) VALUES ('test.tpl', "2010-12-25 22:00:00", '{$x="hello
- * world"}{$x}');</pre>
- *
- *
- * @package Resource-examples
- * @author Rodney Rehm
- */
-class Smarty_Resource_Mysqls extends Smarty_Resource_Custom
-{
- /**
- * PDO instance
- *
- * @var \PDO
- */
- protected $db;
-
- /**
- * prepared fetch() statement
- *
- * @var \PDOStatement
- */
- protected $fetch;
-
- /**
- * Smarty_Resource_Mysqls constructor.
- *
- * @throws \SmartyException
- */
- public function __construct()
- {
- try {
- $this->db = new PDO("mysql:dbname=test;host=127.0.0.1", "smarty");
- } catch (PDOException $e) {
- throw new SmartyException('Mysql Resource failed: ' . $e->getMessage());
- }
- $this->fetch = $this->db->prepare('SELECT modified, source FROM templates WHERE name = :name');
- }
-
- /**
- * Fetch a template and its modification time from database
- *
- * @param string $name template name
- * @param string $source template source
- * @param integer $mtime template modification timestamp (epoch)
- *
- * @return void
- */
- protected function fetch($name, &$source, &$mtime)
- {
- $this->fetch->execute(array('name' => $name));
- $row = $this->fetch->fetch();
- $this->fetch->closeCursor();
- if ($row) {
- $source = $row[ 'source' ];
- $mtime = strtotime($row[ 'modified' ]);
- } else {
- $source = null;
- $mtime = null;
- }
- }
-}
diff --git a/vendor/smarty/smarty/demo/templates/footer.tpl b/vendor/smarty/smarty/demo/templates/footer.tpl
deleted file mode 100644
index e04310fdd..000000000
--- a/vendor/smarty/smarty/demo/templates/footer.tpl
+++ /dev/null
@@ -1,2 +0,0 @@
-</BODY>
-</HTML>
diff --git a/vendor/smarty/smarty/demo/templates/header.tpl b/vendor/smarty/smarty/demo/templates/header.tpl
deleted file mode 100644
index 783210a18..000000000
--- a/vendor/smarty/smarty/demo/templates/header.tpl
+++ /dev/null
@@ -1,5 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>{$title} - {$Name}</TITLE>
-</HEAD>
-<BODY bgcolor="#ffffff">
diff --git a/vendor/smarty/smarty/demo/templates/index.tpl b/vendor/smarty/smarty/demo/templates/index.tpl
deleted file mode 100644
index 1fbb6d379..000000000
--- a/vendor/smarty/smarty/demo/templates/index.tpl
+++ /dev/null
@@ -1,87 +0,0 @@
-{config_load file="test.conf" section="setup"}
-{include file="header.tpl" title=foo}
-
-<PRE>
-
-{* bold and title are read from the config file *}
- {if #bold#}<b>{/if}
- {* capitalize the first letters of each word of the title *}
- Title: {#title#|capitalize}
- {if #bold#}</b>{/if}
-
- The current date and time is {$smarty.now|date_format:"%Y-%m-%d %H:%M:%S"}
-
- The value of global assigned variable $SCRIPT_NAME is {$SCRIPT_NAME}
-
- Example of accessing server environment variable SERVER_NAME: {$smarty.server.SERVER_NAME}
-
- The value of {ldelim}$Name{rdelim} is <b>{$Name}</b>
-
-variable modifier example of {ldelim}$Name|upper{rdelim}
-
-<b>{$Name|upper}</b>
-
-
-An example of a section loop:
-
- {section name=outer
- loop=$FirstName}
- {if $smarty.section.outer.index is odd by 2}
- {$smarty.section.outer.rownum} . {$FirstName[outer]} {$LastName[outer]}
- {else}
- {$smarty.section.outer.rownum} * {$FirstName[outer]} {$LastName[outer]}
- {/if}
- {sectionelse}
- none
- {/section}
-
- An example of section looped key values:
-
- {section name=sec1 loop=$contacts}
- phone: {$contacts[sec1].phone}
- <br>
-
- fax: {$contacts[sec1].fax}
- <br>
-
- cell: {$contacts[sec1].cell}
- <br>
- {/section}
- <p>
-
- testing strip tags
- {strip}
-<table border=0>
- <tr>
- <td>
- <A HREF="{$SCRIPT_NAME}">
- <font color="red">This is a test </font>
- </A>
- </td>
- </tr>
-</table>
- {/strip}
-
-</PRE>
-
-This is an example of the html_select_date function:
-
-<form>
- {html_select_date start_year=1998 end_year=2010}
-</form>
-
-This is an example of the html_select_time function:
-
-<form>
- {html_select_time use_24_hours=false}
-</form>
-
-This is an example of the html_options function:
-
-<form>
- <select name=states>
- {html_options values=$option_values selected=$option_selected output=$option_output}
- </select>
-</form>
-
-{include file="footer.tpl"}
diff --git a/vendor/smarty/smarty/docs/_config.yml b/vendor/smarty/smarty/docs/_config.yml
deleted file mode 100644
index 2f7efbeab..000000000
--- a/vendor/smarty/smarty/docs/_config.yml
+++ /dev/null
@@ -1 +0,0 @@
-theme: jekyll-theme-minimal \ No newline at end of file
diff --git a/vendor/smarty/smarty/docs/appendixes/tips.md b/vendor/smarty/smarty/docs/appendixes/tips.md
deleted file mode 100644
index b0ea40cc7..000000000
--- a/vendor/smarty/smarty/docs/appendixes/tips.md
+++ /dev/null
@@ -1,332 +0,0 @@
-Tips & Tricks {#tips}
-=============
-
-Blank Variable Handling {#tips.blank.var.handling}
-=======================
-
-There may be times when you want to print a default value for an empty
-variable instead of printing nothing, such as printing `&nbsp;` so that
-html table backgrounds work properly. Many would use an
-[`{if}`](#language.function.if) statement to handle this, but there is a
-shorthand way with Smarty, using the
-[`default`](#language.modifier.default) variable modifier.
-
-> **Note**
->
-> "Undefined variable" errors will show an E\_NOTICE if not disabled in
-> PHP\'s [`error_reporting()`](&url.php-manual;error_reporting) level or
-> Smarty\'s [`$error_reporting`](#variable.error.reporting) property and
-> a variable had not been assigned to Smarty.
-
-
- {* the long way *}
- {if $title eq ''}
- &nbsp;
- {else}
- {$title}
- {/if}
-
- {* the short way *}
- {$title|default:'&nbsp;'}
-
-
-
-See also [`default`](#language.modifier.default) modifier and [default
-variable handling](#tips.default.var.handling).
-
-Default Variable Handling {#tips.default.var.handling}
-=========================
-
-If a variable is used frequently throughout your templates, applying the
-[`default`](#language.modifier.default) modifier every time it is
-mentioned can get a bit ugly. You can remedy this by assigning the
-variable its default value with the
-[`{assign}`](#language.function.assign) function.
-
-
- {* do this somewhere at the top of your template *}
- {assign var='title' value=$title|default:'no title'}
-
- {* if $title was empty, it now contains the value "no title" when you use it *}
- {$title}
-
-
-
-See also [`default`](#language.modifier.default) modifier and [blank
-variable handling](#tips.blank.var.handling).
-
-Passing variable title to header template {#tips.passing.vars}
-=========================================
-
-When the majority of your templates use the same headers and footers, it
-is common to split those out into their own templates and
-[`{include}`](#language.function.include) them. But what if the header
-needs to have a different title, depending on what page you are coming
-from? You can pass the title to the header as an
-[attribute](#language.syntax.attributes) when it is included.
-
-`mainpage.tpl` - When the main page is drawn, the title of "Main Page"
-is passed to the `header.tpl`, and will subsequently be used as the
-title.
-
-
- {include file='header.tpl' title='Main Page'}
- {* template body goes here *}
- {include file='footer.tpl'}
-
-
-
-`archives.tpl` - When the archives page is drawn, the title will be
-"Archives". Notice in the archive example, we are using a variable from
-the `archives_page.conf` file instead of a hard coded variable.
-
-
- {config_load file='archive_page.conf'}
-
- {include file='header.tpl' title=#archivePageTitle#}
- {* template body goes here *}
- {include file='footer.tpl'}
-
-
-
-`header.tpl` - Notice that "Smarty News" is printed if the `$title`
-variable is not set, using the [`default`](#language.modifier.default)
-variable modifier.
-
-
- <html>
- <head>
- <title>{$title|default:'Smarty News'}</title>
- </head>
- <body>
-
-
-
-`footer.tpl`
-
-
- </body>
- </html>
-
-
-
-Dates {#tips.dates}
-=====
-
-As a rule of thumb, always pass dates to Smarty as
-[timestamps](&url.php-manual;time). This allows template designers to
-use the [`date_format`](#language.modifier.date.format) modifier for
-full control over date formatting, and also makes it easy to compare
-dates if necessary.
-
-
- {$startDate|date_format}
-
-
-
-This will output:
-
-
- Jan 4, 2009
-
-
-
-
- {$startDate|date_format:"%Y/%m/%d"}
-
-
-
-This will output:
-
-
- 2009/01/04
-
-
-
-Dates can be compared in the template by timestamps with:
-
-
- {if $order_date < $invoice_date}
- ...do something..
- {/if}
-
-
-
-When using [`{html_select_date}`](#language.function.html.select.date)
-in a template, the programmer will most likely want to convert the
-output from the form back into timestamp format. Here is a function to
-help you with that.
-
-
- <?php
-
- // this assumes your form elements are named
- // startDate_Day, startDate_Month, startDate_Year
-
- $startDate = makeTimeStamp($startDate_Year, $startDate_Month, $startDate_Day);
-
- function makeTimeStamp($year='', $month='', $day='')
- {
- if(empty($year)) {
- $year = strftime('%Y');
- }
- if(empty($month)) {
- $month = strftime('%m');
- }
- if(empty($day)) {
- $day = strftime('%d');
- }
-
- return mktime(0, 0, 0, $month, $day, $year);
- }
- ?>
-
-
-
-See also [`{html_select_date}`](#language.function.html.select.date),
-[`{html_select_time}`](#language.function.html.select.time),
-[`date_format`](#language.modifier.date.format) and
-[`$smarty.now`](#language.variables.smarty.now),
-
-WAP/WML {#tips.wap}
-=======
-
-WAP/WML templates require a php [Content-Type
-header](&url.php-manual;header) to be passed along with the template.
-The easist way to do this would be to write a custom function that
-prints the header. If you are using [caching](#caching), that won\'t
-work so we\'ll do it using the [`{insert}`](#language.function.insert)
-tag; remember `{insert}` tags are not cached! Be sure that there is
-nothing output to the browser before the template, or else the header
-may fail.
-
-
- <?php
-
- // be sure apache is configure for the .wml extensions!
- // put this function somewhere in your application, or in Smarty.addons.php
- function insert_header($params)
- {
- // this function expects $content argument
- if (empty($params['content'])) {
- return;
- }
- header($params['content']);
- return;
- }
-
- ?>
-
-
-
-your Smarty template *must* begin with the insert tag :
-
-
- {insert name=header content="Content-Type: text/vnd.wap.wml"}
-
- <?xml version="1.0"?>
- <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
-
- <!-- begin new wml deck -->
- <wml>
- <!-- begin first card -->
- <card>
- <do type="accept">
- <go href="#two"/>
- </do>
- <p>
- Welcome to WAP with Smarty!
- Press OK to continue...
- </p>
- </card>
- <!-- begin second card -->
- <card id="two">
- <p>
- Pretty easy isn't it?
- </p>
- </card>
- </wml>
-
-
-
-Componentized Templates {#tips.componentized.templates}
-=======================
-
-Traditionally, programming templates into your applications goes as
-follows: First, you accumulate your variables within your PHP
-application, (maybe with database queries.) Then, you instantiate your
-Smarty object, [`assign()`](#api.assign) the variables and
-[`display()`](#api.display) the template. So lets say for example we
-have a stock ticker on our template. We would collect the stock data in
-our application, then assign these variables in the template and display
-it. Now wouldn\'t it be nice if you could add this stock ticker to any
-application by merely including the template, and not worry about
-fetching the data up front?
-
-You can do this by writing a custom plugin for fetching the content and
-assigning it to a template variable.
-
-`function.load_ticker.php` - drop file in
-[`$plugins directory`](#variable.plugins.dir)
-
-
- <?php
-
- // setup our function for fetching stock data
- function fetch_ticker($symbol)
- {
- // put logic here that fetches $ticker_info
- // from some ticker resource
- return $ticker_info;
- }
-
- function smarty_function_load_ticker($params, $smarty)
- {
- // call the function
- $ticker_info = fetch_ticker($params['symbol']);
-
- // assign template variable
- $smarty->assign($params['assign'], $ticker_info);
- }
- ?>
-
-
-
-`index.tpl`
-
-
- {load_ticker symbol='SMARTY' assign='ticker'}
-
- Stock Name: {$ticker.name} Stock Price: {$ticker.price}
-
-
-
-See also [`{include_php}`](#language.function.include.php),
-[`{include}`](#language.function.include) and
-[`{php}`](#language.function.php).
-
-Obfuscating E-mail Addresses {#tips.obfuscating.email}
-============================
-
-Do you ever wonder how your email address gets on so many spam mailing
-lists? One way spammers collect email addresses is from web pages. To
-help combat this problem, you can make your email address show up in
-scrambled javascript in the HTML source, yet it it will look and work
-correctly in the browser. This is done with the
-[`{mailto}`](#language.function.mailto) plugin.
-
-
- <div id="contact">Send inquiries to
- {mailto address=$EmailAddress encode='javascript' subject='Hello'}
- </div>
-
-
-
-> **Note**
->
-> This method isn\'t 100% foolproof. A spammer could conceivably program
-> his e-mail collector to decode these values, but not likely\....
-> hopefully..yet \... wheres that quantum computer :-?.
-
-See also [`escape`](#language.modifier.escape) modifier and
-[`{mailto}`](#language.function.mailto).
diff --git a/vendor/smarty/smarty/docs/appendixes/troubleshooting.md b/vendor/smarty/smarty/docs/appendixes/troubleshooting.md
deleted file mode 100644
index fe012c12c..000000000
--- a/vendor/smarty/smarty/docs/appendixes/troubleshooting.md
+++ /dev/null
@@ -1,120 +0,0 @@
-Troubleshooting
-===============
-
-Smarty/PHP errors {#smarty.php.errors}
-=================
-
-Smarty can catch many errors such as missing tag attributes or malformed
-variable names. If this happens, you will see an error similar to the
-following:
-
-
- Warning: Smarty: [in index.tpl line 4]: syntax error: unknown tag - '%blah'
- in /path/to/smarty/Smarty.class.php on line 1041
-
- Fatal error: Smarty: [in index.tpl line 28]: syntax error: missing section name
- in /path/to/smarty/Smarty.class.php on line 1041
-
-
-
-Smarty shows you the template name, the line number and the error. After
-that, the error consists of the actual line number in the Smarty class
-that the error occurred.
-
-There are certain errors that Smarty cannot catch, such as missing close
-tags. These types of errors usually end up in PHP compile-time parsing
-errors.
-
-
- Parse error: parse error in /path/to/smarty/templates_c/index.tpl.php on line 75
-
-
-
-When you encounter a PHP parsing error, the error line number will
-correspond to the compiled PHP script, NOT the template itself. Usually
-you can look at the template and spot the syntax error. Here are some
-common things to look for: missing close tags for
-[`{if}{/if}`](#language.function.if) or
-[`{section}{/section}`](#language.function.if), or syntax of logic
-within an `{if}` tag. If you can\'t find the error, you might have to
-open the compiled PHP file and go to the line number to figure out where
-the corresponding error is in the template.
-
-
- Warning: Smarty error: unable to read resource: "index.tpl" in...
- or
- Warning: Smarty error: unable to read resource: "site.conf" in...
-
-- The [`$template_dir`](#variable.template.dir) is incorrect, doesn\'t
- exist or the file `index.tpl` is not in the `templates/` directory
-
-- A [`{config_load}`](#language.function.config.load) function is
- within a template (or [`configLoad()`](#api.config.load) has been
- called) and either [`$config_dir`](#variable.config.dir) is
- incorrect, does not exist or `site.conf` is not in the directory.
-
-<!-- -->
-
-
- Fatal error: Smarty error: the $compile_dir 'templates_c' does not exist,
- or is not a directory...
-
-
-
-- Either the [`$compile_dir`](#variable.compile.dir)is incorrectly
- set, the directory does not exist, or `templates_c` is a file and
- not a directory.
-
-<!-- -->
-
-
- Fatal error: Smarty error: unable to write to $compile_dir '....
-
-
-
-- The [`$compile_dir`](#variable.compile.dir) is not writable by the
- web server. See the bottom of the [installing
- smarty](#installing.smarty.basic) page for more about permissions.
-
-<!-- -->
-
-
- Fatal error: Smarty error: the $cache_dir 'cache' does not exist,
- or is not a directory. in /..
-
-
-
-- This means that [`$caching`](#variable.caching) is enabled and
- either; the [`$cache_dir`](#variable.cache.dir) is incorrectly set,
- the directory does not exist, or `cache/` is a file and not a
- directory.
-
-<!-- -->
-
-
- Fatal error: Smarty error: unable to write to $cache_dir '/...
-
-
-
-- This means that [`$caching`](#variable.caching) is enabled and the
- [`$cache_dir`](#variable.cache.dir) is not writable by the web
- server. See the bottom of the [installing
- smarty](#installing.smarty.basic) page for permissions.
-
-<!-- -->
-
-
- Warning: filemtime(): stat failed for /path/to/smarty/cache/3ab50a623e65185c49bf17c63c90cc56070ea85c.one.tpl.php
- in /path/to/smarty/libs/sysplugins/smarty_resource.php
-
-
-
-- This means that your application registered a custom error hander
- (using [set\_error\_handler()](&url.php-manual;set_error_handler))
- which is not respecting the given `$errno` as it should. If, for
- whatever reason, this is the desired behaviour of your custom error
- handler, please call
- [`muteExpectedErrors()`](#api.mute.expected.errors) after you\'ve
- registered your custom error handler.
-
-See also [debugging](#chapter.debugging.console).
diff --git a/vendor/smarty/smarty/docs/designers/chapter-debugging-console.md b/vendor/smarty/smarty/docs/designers/chapter-debugging-console.md
deleted file mode 100644
index 6429b4876..000000000
--- a/vendor/smarty/smarty/docs/designers/chapter-debugging-console.md
+++ /dev/null
@@ -1,41 +0,0 @@
-Debugging Console {#chapter.debugging.console}
-=================
-
-There is a debugging console included with Smarty. The console informs
-you of all the [included](./language-builtin-functions/language-function-include.md) templates,
-[assigned](../programmers/api-functions/api-assign.md) variables and
-[config](./language-variables/language-config-variables.md) file variables for the current
-invocation of the template. A template file named `debug.tpl` is
-included with the distribution of Smarty which controls the formatting
-of the console.
-
-Set [`$debugging`](../programmers/api-variables/variable-debugging.md) to TRUE in Smarty, and if needed
-set [`$debug_tpl`](../programmers/api-variables/variable-debug-template.md) to the template resource
-path to `debug.tpl` (this is in [`SMARTY_DIR`](../programmers/smarty-constants.md) by
-default). When you load the page, a Javascript console window will pop
-up and give you the names of all the included templates and assigned
-variables for the current page.
-
-To see the available variables for a particular template, see the
-[`{debug}`](./language-builtin-functions/language-function-debug.md) template function. To disable the
-debugging console, set [`$debugging`](../programmers/api-variables/variable-debugging.md) to FALSE. You
-can also temporarily turn on the debugging console by putting
-`SMARTY_DEBUG` in the URL if you enable this option with
-[`$debugging_ctrl`](../programmers/api-variables/variable-debugging-ctrl.md).
-
-> **Note**
->
-> The debugging console does not work when you use the
-> [`fetch()`](../programmers/api-functions/api-fetch.md) API, only when using
-> [`display()`](../programmers/api-functions/api-display.md). It is a set of javascript statements
-> added to the very bottom of the generated template. If you do not like
-> javascript, you can edit the `debug.tpl` template to format the output
-> however you like. Debug data is not cached and `debug.tpl` info is not
-> included in the output of the debug console.
-
-> **Note**
->
-> The load times of each template and config file are in seconds, or
-> fractions thereof.
-
-See also [troubleshooting](../appendixes/troubleshooting.md).
diff --git a/vendor/smarty/smarty/docs/designers/config-files.md b/vendor/smarty/smarty/docs/designers/config-files.md
deleted file mode 100644
index c840e3a67..000000000
--- a/vendor/smarty/smarty/docs/designers/config-files.md
+++ /dev/null
@@ -1,77 +0,0 @@
-Config Files {#config.files}
-============
-
-Config files are handy for designers to manage global template variables
-from one file. One example is template colors. Normally if you wanted to
-change the color scheme of an application, you would have to go through
-each and every template file and change the colors. With a config file,
-the colors can be kept in one place, and only one file needs to be
-updated.
-
-
- # global variables
- pageTitle = "Main Menu"
- bodyBgColor = #000000
- tableBgColor = #000000
- rowBgColor = #00ff00
-
- [Customer]
- pageTitle = "Customer Info"
-
- [Login]
- pageTitle = "Login"
- focus = "username"
- Intro = """This is a value that spans more
- than one line. you must enclose
- it in triple quotes."""
-
- # hidden section
- [.Database]
- host=my.example.com
- db=ADDRESSBOOK
- user=php-user
- pass=foobar
-
-
-
-Values of [config file variables](./language-variables/language-config-variables.md) can be in
-quotes, but not necessary. You can use either single or double quotes.
-If you have a value that spans more than one line, enclose the entire
-value with triple quotes (\"\"\"). You can put comments into config
-files by any syntax that is not a valid config file syntax. We recommend
-using a `
- #` (hash) at the beginning of the line.
-
-The example config file above has two sections. Section names are
-enclosed in \[brackets\]. Section names can be arbitrary strings not
-containing `[` or `]` symbols. The four variables at the top are global
-variables, or variables not within a section. These variables are always
-loaded from the config file. If a particular section is loaded, then the
-global variables and the variables from that section are also loaded. If
-a variable exists both as a global and in a section, the section
-variable is used. If you name two variables the same within a section,
-the last one will be used unless
-[`$config_overwrite`](../programmers/api-variables/variable-config-overwrite.md) is disabled.
-
-Config files are loaded into templates with the built-in template
-function [`
- {config_load}`](./language-builtin-functions/language-function-config-load.md) or the API
-[`configLoad()`](../programmers/api-functions/api-config-load.md) function.
-
-You can hide variables or entire sections by prepending the variable
-name or section name with a period(.) eg `[.hidden]`. This is useful if
-your application reads the config files and gets sensitive data from
-them that the template engine does not need. If you have third parties
-doing template editing, you can be certain that they cannot read
-sensitive data from the config file by loading it into the template.
-
-Config files (or resources) are loaded by the same resource facilities
-as templates. That means that a config file can also be loaded from a db
-`$smarty->configLoad("db:my.conf")`.
-
-See also [`{config_load}`](./language-builtin-functions/language-function-config-load.md),
-[`$config_overwrite`](../programmers/api-variables/variable-config-overwrite.md),
-[`$default_config_handler_func`](../programmers/api-variables/variable-default-config-handler-func.md),
-[`getConfigVars()`](../programmers/api-functions/api-get-config-vars.md),
-[`clearConfig()`](../programmers/api-functions/api-clear-config.md) and
-[`configLoad()`](../programmers/api-functions/api-config-load.md)
diff --git a/vendor/smarty/smarty/docs/designers/language-basic-syntax.md b/vendor/smarty/smarty/docs/designers/language-basic-syntax.md
deleted file mode 100644
index 2509857c3..000000000
--- a/vendor/smarty/smarty/docs/designers/language-basic-syntax.md
+++ /dev/null
@@ -1,33 +0,0 @@
-Basic Syntax
-============
-
-A simple Smarty template could look like this:
-```html
-<h1>{$title|escape}</h1>
-<ul>
- {foreach $cities as $city}
- <li>{$city.name|escape} ({$city.population})</li>
- {foreachelse}
- <li>no cities found</li>
- {/foreach}
-</ul>
-```
-
-All Smarty template tags are enclosed within delimiters. By default
-these are `{` and `}`, but they can be
-[changed](../programmers/api-variables/variable-left-delimiter.md).
-
-For the examples in this manual, we will assume that you are using the
-default delimiters. In Smarty, all content outside of delimiters is
-displayed as static content, or unchanged. When Smarty encounters
-template tags, it attempts to interpret them, and displays the
-appropriate output in their place.
-
-The basis components of the Smarty syntax are:
-- [Comments](./language-basic-syntax/language-syntax-comments.md)
-- [Variables](./language-basic-syntax/language-syntax-variables.md)
-- [Functions](./language-basic-syntax/language-syntax-functions.md)
-- [Attributes](./language-basic-syntax/language-syntax-attributes.md)
-- [Quotes](./language-basic-syntax/language-syntax-quotes.md)
-- [Math](./language-basic-syntax/language-math.md)
-- [Escaping](./language-basic-syntax/language-escaping.md)
diff --git a/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-escaping.md b/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-escaping.md
deleted file mode 100644
index a62e7de89..000000000
--- a/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-escaping.md
+++ /dev/null
@@ -1,84 +0,0 @@
-Escaping Smarty Parsing {#language.escaping}
-=======================
-
-It is sometimes desirable or even necessary to have Smarty ignore
-sections it would otherwise parse. A classic example is embedding
-Javascript or CSS code in a template. The problem arises as those
-languages use the { and } characters which are also the default
-[delimiters](#language.function.ldelim) for Smarty.
-
-> **Note**
->
-> A good practice for avoiding escapement altogether is by separating
-> your Javascript/CSS into their own files and use standard HTML methods
-> to access them. This will also take advantage of browser script
-> caching. When you need to embed Smarty variables/functions into your
-> Javascript/CSS, then the following applies.
-
-In Smarty templates, the { and } braces will be ignored so long as they
-are surrounded by white space. This behavior can be disabled by setting
-the Smarty class variable [`$auto_literal`](#variable.auto.literal) to
-false.
-
-
- <script>
- // the following braces are ignored by Smarty
- // since they are surrounded by whitespace
- function foobar {
- alert('foobar!');
- }
- // this one will need literal escapement
- {literal}
- function bazzy {alert('foobar!');}
- {/literal}
- </script>
-
-
-
-[`{literal}..{/literal}`](#language.function.literal) blocks are used
-for escaping blocks of template logic. You can also escape the braces
-individually with
-[`{ldelim}`](#language.function.ldelim),[`{rdelim}`](#language.function.ldelim)
-tags or
-[`{$smarty.ldelim}`,`{$smarty.rdelim}`](#language.variables.smarty.ldelim)
-variables.
-
-Smarty\'s default delimiters { and } cleanly represent presentational
-content. However if another set of delimiters suit your needs better,
-you can change them with Smarty\'s
-[`$left_delimiter`](#variable.left.delimiter) and
-[`$right_delimiter`](#variable.right.delimiter) values.
-
-> **Note**
->
-> Changing delimiters affects ALL template syntax and escapement. Be
-> sure to clear out cache and compiled files if you decide to change
-> them.
-
-
- <?php
-
- $smarty->left_delimiter = '<!--{';
- $smarty->right_delimiter = '}-->';
-
- $smarty->assign('foo', 'bar');
- $smarty->assign('name', 'Albert');
- $smarty->display('example.tpl');
-
- ?>
-
-
-
-Where the template is:
-
-
- Welcome <!--{$name}--> to Smarty
- <script language="javascript">
- var foo = <!--{$foo}-->;
- function dosomething() {
- alert("foo is " + foo);
- }
- dosomething();
- </script>
-
-
diff --git a/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-math.md b/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-math.md
deleted file mode 100644
index dc78a3512..000000000
--- a/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-math.md
+++ /dev/null
@@ -1,29 +0,0 @@
-Math {#language.math}
-====
-
-Math can be applied directly to variable values.
-
-
- {$foo+1}
-
- {$foo*$bar}
-
- {* some more complicated examples *}
-
- {$foo->bar-$bar[1]*$baz->foo->bar()-3*7}
-
- {if ($foo+$bar.test%$baz*134232+10+$b+10)}
-
- {$foo|truncate:"`$fooTruncCount/$barTruncFactor-1`"}
-
- {assign var="foo" value="`$foo+$bar`"}
-
-
-
-> **Note**
->
-> Although Smarty can handle some very complex expressions and syntax,
-> it is a good rule of thumb to keep the template syntax minimal and
-> focused on presentation. If you find your template syntax getting too
-> complex, it may be a good idea to move the bits that do not deal
-> explicitly with presentation to PHP by way of plugins or modifiers.
diff --git a/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-attributes.md b/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-attributes.md
deleted file mode 100644
index 0fa7c7734..000000000
--- a/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-attributes.md
+++ /dev/null
@@ -1,50 +0,0 @@
-Attributes {#language.syntax.attributes}
-==========
-
-Most of the [functions](#language.syntax.functions) take attributes that
-specify or modify their behavior. Attributes to Smarty functions are
-much like HTML attributes. Static values don\'t have to be enclosed in
-quotes, but it is required for literal strings. Variables with or
-without modifiers may also be used, and should not be in quotes. You can
-even use PHP function results, plugin results and complex expressions.
-
-Some attributes require boolean values (TRUE or FALSE). These can be
-specified as `true` and `false`. If an attribute has no value assigned
-it gets the default boolean value of true.
-
-
- {include file="header.tpl"}
-
- {include file="header.tpl" nocache} // is equivalent to nocache=true
-
- {include file="header.tpl" attrib_name="attrib value"}
-
- {include file=$includeFile}
-
- {include file=#includeFile# title="My Title"}
-
- {assign var=foo value={counter}} // plugin result
-
- {assign var=foo value=substr($bar,2,5)} // PHP function result
-
- {assign var=foo value=$bar|strlen} // using modifier
-
- {assign var=foo value=$buh+$bar|strlen} // more complex expression
-
- {html_select_date display_days=true}
-
- {mailto address="smarty@example.com"}
-
- <select name="company_id">
- {html_options options=$companies selected=$company_id}
- </select>
-
-
-
-> **Note**
->
-> Although Smarty can handle some very complex expressions and syntax,
-> it is a good rule of thumb to keep the template syntax minimal and
-> focused on presentation. If you find your template syntax getting too
-> complex, it may be a good idea to move the bits that do not deal
-> explicitly with presentation to PHP by way of plugins or modifiers.
diff --git a/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-comments.md b/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-comments.md
deleted file mode 100644
index 43104dbb6..000000000
--- a/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-comments.md
+++ /dev/null
@@ -1,71 +0,0 @@
-Comments {#language.syntax.comments}
-========
-
-Template comments are surrounded by asterisks, and that is surrounded by
-the [delimiter](#variable.left.delimiter) tags like so:
-
-::: {.informalexample}
-
- {* this is a comment *}
-
-
-:::
-
-Smarty comments are NOT displayed in the final output of the template,
-unlike `<!-- HTML comments -->`. These are useful for making internal
-notes in the templates which no one will see ;-)
-
-
- {* I am a Smarty comment, I don't exist in the compiled output *}
- <html>
- <head>
- <title>{$title}</title>
- </head>
- <body>
-
- {* another single line smarty comment *}
- <!-- HTML comment that is sent to the browser -->
-
- {* this multiline smarty
- comment is
- not sent to browser
- *}
-
- {*********************************************************
- Multi line comment block with credits block
- @ author: bg@example.com
- @ maintainer: support@example.com
- @ para: var that sets block style
- @ css: the style output
- **********************************************************}
-
- {* The header file with the main logo and stuff *}
- {include file='header.tpl'}
-
-
- {* Dev note: the $includeFile var is assigned in foo.php script *}
- <!-- Displays main content block -->
- {include file=$includeFile}
-
- {* this <select> block is redundant *}
- {*
- <select name="company">
- {html_options options=$vals selected=$selected_id}
- </select>
- *}
-
- <!-- Show header from affiliate is disabled -->
- {* $affiliate|upper *}
-
- {* you cannot nest comments *}
- {*
- <select name="company">
- {* <option value="0">-- none -- </option> *}
- {html_options options=$vals selected=$selected_id}
- </select>
- *}
-
- </body>
- </html>
-
-
diff --git a/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-functions.md b/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-functions.md
deleted file mode 100644
index 9c8c94049..000000000
--- a/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-functions.md
+++ /dev/null
@@ -1,40 +0,0 @@
-Functions {#language.syntax.functions}
-=========
-
-Every Smarty tag either prints a [variable](#language.variables) or
-invokes some sort of function. These are processed and displayed by
-enclosing the function and its [attributes](#language.syntax.attributes)
-within delimiters like so: `{funcname attr1="val1" attr2="val2"}`.
-
-
- {config_load file="colors.conf"}
-
- {include file="header.tpl"}
- {insert file="banner_ads.tpl" title="My Site"}
-
- {if $logged_in}
- Welcome, <span style="color:{#fontColor#}">{$name}!</span>
- {else}
- hi, {$name}
- {/if}
-
- {include file="footer.tpl"}
-
-
-
-- Both [built-in functions](#language.builtin.functions) and [custom
- functions](#language.custom.functions) have the same syntax within
- templates.
-
-- Built-in functions are the **inner** workings of Smarty, such as
- [`{if}`](#language.function.if),
- [`{section}`](#language.function.section) and
- [`{strip}`](#language.function.strip). There should be no need to
- change or modify them.
-
-- Custom functions are **additional** functions implemented via
- [plugins](#plugins). They can be modified to your liking, or you can
- create new ones. [`{html_options}`](#language.function.html.options)
- is an example of a custom function.
-
-See also [`registerPlugin()`](#api.register.plugin)
diff --git a/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-quotes.md b/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-quotes.md
deleted file mode 100644
index 6fe185c97..000000000
--- a/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-quotes.md
+++ /dev/null
@@ -1,61 +0,0 @@
-Embedding Vars in Double Quotes {#language.syntax.quotes}
-===============================
-
-- Smarty will recognize [assigned](#api.assign)
- [variables](#language.syntax.variables) embedded in \"double
- quotes\" so long as the variable name contains only numbers, letters
- and under\_scores. See [naming](&url.php-manual;language.variables)
- for more detail.
-
-- With any other characters, for example a period(.) or
- `$object->reference`, then the variable must be surrounded by
- `` `backticks` ``.
-
-- In addition Smarty3 does allow embedded Smarty tags in double quoted
- strings. This is useful if you want to include variables with
- modifiers, plugin or PHP function results.
-
-<!-- -->
-
-
- {func var="test $foo test"} // sees $foo
- {func var="test $foo_bar test"} // sees $foo_bar
- {func var="test `$foo[0]` test"} // sees $foo[0]
- {func var="test `$foo[bar]` test"} // sees $foo[bar]
- {func var="test $foo.bar test"} // sees $foo (not $foo.bar)
- {func var="test `$foo.bar` test"} // sees $foo.bar
- {func var="test `$foo.bar` test"|escape} // modifiers outside quotes!
- {func var="test {$foo|escape} test"} // modifiers inside quotes!
- {func var="test {time()} test"} // PHP function result
- {func var="test {counter} test"} // plugin result
- {func var="variable foo is {if !$foo}not {/if} defined"} // Smarty block function
-
-
-
-
- {* will replace $tpl_name with value *}
- {include file="subdir/$tpl_name.tpl"}
-
- {* does NOT replace $tpl_name *}
- {include file='subdir/$tpl_name.tpl'} // vars require double quotes!
-
- {* must have backticks as it contains a dot "." *}
- {cycle values="one,two,`$smarty.config.myval`"}
-
- {* must have backticks as it contains a dot "." *}
- {include file="`$module.contact`.tpl"}
-
- {* can use variable with dot syntax *}
- {include file="`$module.$view`.tpl"}
-
-
-
-> **Note**
->
-> Although Smarty can handle some very complex expressions and syntax,
-> it is a good rule of thumb to keep the template syntax minimal and
-> focused on presentation. If you find your template syntax getting too
-> complex, it may be a good idea to move the bits that do not deal
-> explicitly with presentation to PHP by way of plugins or modifiers.
-
-See also [`escape`](#language.modifier.escape).
diff --git a/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-variables.md b/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-variables.md
deleted file mode 100644
index 671ad8bb8..000000000
--- a/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-variables.md
+++ /dev/null
@@ -1,111 +0,0 @@
-Variables {#language.syntax.variables}
-=========
-
-Template variables start with the \$dollar sign. They can contain
-numbers, letters and underscores, much like a [PHP
-variable](&url.php-manual;language.variables). You can reference arrays
-by index numerically or non-numerically. Also reference object
-properties and methods.
-
-[Config file variables](#language.config.variables) are an exception to
-the \$dollar syntax and are instead referenced with surrounding
-\#hashmarks\#, or via the
-[`$smarty.config`](#language.variables.smarty.config) variable.
-
-
- {$foo} <-- displaying a simple variable (non array/object)
- {$foo[4]} <-- display the 5th element of a zero-indexed array
- {$foo.bar} <-- display the "bar" key value of an array, similar to PHP $foo['bar']
- {$foo.$bar} <-- display variable key value of an array, similar to PHP $foo[$bar]
- {$foo->bar} <-- display the object property "bar"
- {$foo->bar()} <-- display the return value of object method "bar"
- {#foo#} <-- display the config file variable "foo"
- {$smarty.config.foo} <-- synonym for {#foo#}
- {$foo[bar]} <-- syntax only valid in a section loop, see {section}
- {assign var=foo value='baa'}{$foo} <-- displays "baa", see {assign}
-
- Many other combinations are allowed
-
- {$foo.bar.baz}
- {$foo.$bar.$baz}
- {$foo[4].baz}
- {$foo[4].$baz}
- {$foo.bar.baz[4]}
- {$foo->bar($baz,2,$bar)} <-- passing parameters
- {"foo"} <-- static values are allowed
-
- {* display the server variable "SERVER_NAME" ($_SERVER['SERVER_NAME'])*}
- {$smarty.server.SERVER_NAME}
-
- Math and embedding tags:
-
- {$x+$y} // will output the sum of x and y.
- {assign var=foo value=$x+$y} // in attributes
- {$foo[$x+3]} // as array index
- {$foo={counter}+3} // tags within tags
- {$foo="this is message {counter}"} // tags within double quoted strings
-
- Defining Arrays:
-
- {assign var=foo value=[1,2,3]}
- {assign var=foo value=['y'=>'yellow','b'=>'blue']}
- {assign var=foo value=[1,[9,8],3]} // can be nested
-
- Short variable assignment:
-
- {$foo=$bar+2}
- {$foo = strlen($bar)} // function in assignment
- {$foo = myfunct( ($x+$y)*3 )} // as function parameter
- {$foo.bar=1} // assign to specific array element
- {$foo.bar.baz=1}
- {$foo[]=1} // appending to an array
-
- Smarty "dot" syntax (note: embedded {} are used to address ambiguities):
-
- {$foo.a.b.c} => $foo['a']['b']['c']
- {$foo.a.$b.c} => $foo['a'][$b]['c'] // with variable index
- {$foo.a.{$b+4}.c} => $foo['a'][$b+4]['c'] // with expression as index
- {$foo.a.{$b.c}} => $foo['a'][$b['c']] // with nested index
-
- PHP-like syntax, alternative to "dot" syntax:
-
- {$foo[1]} // normal access
- {$foo['bar']}
- {$foo['bar'][1]}
- {$foo[$x+$x]} // index may contain any expression
- {$foo[$bar[1]]} // nested index
- {$foo[section_name]} // smarty {section} access, not array access!
-
- Variable variables:
-
- $foo // normal variable
- $foo_{$bar} // variable name containing other variable
- $foo_{$x+$y} // variable name containing expressions
- $foo_{$bar}_buh_{$blar} // variable name with multiple segments
- {$foo_{$x}} // will output the variable $foo_1 if $x has a value of 1.
-
- Object chaining:
-
- {$object->method1($x)->method2($y)}
-
- Direct PHP function access:
-
- {time()}
-
-
-
-
-> **Note**
->
-> Although Smarty can handle some very complex expressions and syntax,
-> it is a good rule of thumb to keep the template syntax minimal and
-> focused on presentation. If you find your template syntax getting too
-> complex, it may be a good idea to move the bits that do not deal
-> explicitly with presentation to PHP by way of plugins or modifiers.
-
-Request variables such as `$_GET`, `$_SESSION`, etc are available via
-the reserved [`$smarty`](#language.variables.smarty) variable.
-
-See also [`$smarty`](#language.variables.smarty), [config
-variables](#language.config.variables)
-[`{assign}`](#language.function.assign) and [`assign()`](#api.assign).
diff --git a/vendor/smarty/smarty/docs/designers/language-builtin-functions.md b/vendor/smarty/smarty/docs/designers/language-builtin-functions.md
deleted file mode 100644
index 6c0879d6c..000000000
--- a/vendor/smarty/smarty/docs/designers/language-builtin-functions.md
+++ /dev/null
@@ -1,39 +0,0 @@
-Built-in Functions {#language.builtin.functions}
-==================
-
-## Table of contents
-- [{$var=...}](./language-builtin-functions/language-function-shortform-assign.md)
-- [{append}](./language-builtin-functions/language-function-append.md)
-- [{assign}](./language-builtin-functions/language-function-assign.md)
-- [{block}](./language-builtin-functions/language-function-block.md)
-- [{call}](./language-builtin-functions/language-function-call.md)
-- [{capture}](./language-builtin-functions/language-function-capture.md)
-- [{config_load}](./language-builtin-functions/language-function-config.load)
-- [{debug}](./language-builtin-functions/language-function-debug.md)
-- [{extends}](./language-builtin-functions/language-function-extends.md)
-- [{for}](./language-builtin-functions/language-function-for.md)
-- [{foreach},{foreachelse}](./language-builtin-functions/language-function-foreach.md)
-- [{function}](./language-builtin-functions/language-function-function.md)
-- [{if},{elseif},{else}](./language-builtin-functions/language-function-if.md)
-- [{include}](./language-builtin-functions/language-function-include.md)
-- [{include_php}](./language-builtin-functions/language-function-include.php)
-- [{insert}](./language-builtin-functions/language-function-insert.md)
-- [{ldelim},{rdelim}](./language-builtin-functions/language-function-ldelim.md)
-- [{literal}](./language-builtin-functions/language-function-literal.md)
-- [{nocache}](./language-builtin-functions/language-function-nocache.md)
-- [{section},{sectionelse}](./language-builtin-functions/language-function-section.md)
-- [{setfilter}](./language-builtin-functions/language-function-setfilter.md)
-- [{strip}](./language-builtin-functions/language-function-strip.md)
-- [{while}](./language-builtin-functions/language-function-while.md)
-
-Smarty comes with several built-in functions. These built-in functions
-are the integral part of the smarty template engine. They are compiled
-into corresponding inline PHP code for maximum performance.
-
-You cannot create your own [custom
-functions](./language-custom-functions.md) with the same name; and you
-should not need to modify the built-in functions.
-
-A few of these functions have an `assign` attribute which collects the
-result the function to a named template variable instead of being
-output; much like the [`{assign}`](./language-builtin-functions/language-function-assign.md) function.
diff --git a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-append.md b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-append.md
deleted file mode 100644
index 62f2c7e19..000000000
--- a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-append.md
+++ /dev/null
@@ -1,49 +0,0 @@
-{append} {#language.function.append}
-========
-
-`{append}` is used for creating or appending template variable arrays
-**during the execution of a template**.
-
-> **Note**
->
-> Assignment of variables in-template is essentially placing application
-> logic into the presentation that may be better handled in PHP. Use at
-> your own discretion.
-
-**Attributes:**
-
- Attribute Name Type Required Default Description
- ---------------- -------- ---------- --------- ----------------------------------------------------------------------------------------------------
- var string Yes *n/a* The name of the variable being assigned
- value string Yes *n/a* The value being assigned
- index string No *n/a* The index for the new array element. If not specified the value is append to the end of the array.
- scope string No *n/a* The scope of the assigned variable: \'parent\',\'root\' or \'global\'
-
-**Option Flags:**
-
- Name Description
- --------- -----------------------------------------------------
- nocache Assigns the variable with the \'nocache\' attribute
-
-
- {append var='name' value='Bob' index='first'}
- {append var='name' value='Meyer' index='last'}
- // or
- {append 'name' 'Bob' index='first'} {* short-hand *}
- {append 'name' 'Meyer' index='last'} {* short-hand *}
-
- The first name is {$name.first}.<br>
- The last name is {$name.last}.
-
-
-
-The above example will output:
-
-
- The first name is Bob.
- The last name is Meyer.
-
-
-
-See also [`append()`](#api.append) and
-[`getTemplateVars()`](#api.get.template.vars).
diff --git a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-assign.md b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-assign.md
deleted file mode 100644
index 3d3615bff..000000000
--- a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-assign.md
+++ /dev/null
@@ -1,149 +0,0 @@
-{assign} {#language.function.assign}
-========
-
-`{assign}` is used for assigning template variables **during the
-execution of a template**.
-
-> **Note**
->
-> Assignment of variables in-template is essentially placing application
-> logic into the presentation that may be better handled in PHP. Use at
-> your own discretion.
-
-> **Note**
->
-> See also the [`short-form`](#language.function.shortform.assign)
-> method of assigning template vars.
-
-**Attributes:**
-
- Attribute Name Type Required Default Description
- ---------------- -------- ---------- --------- -----------------------------------------------------------------------
- var string Yes *n/a* The name of the variable being assigned
- value string Yes *n/a* The value being assigned
- scope string No *n/a* The scope of the assigned variable: \'parent\',\'root\' or \'global\'
-
-**Option Flags:**
-
- Name Description
- --------- -----------------------------------------------------
- nocache Assigns the variable with the \'nocache\' attribute
-
-
- {assign var="name" value="Bob"}
- {assign "name" "Bob"} {* short-hand *}
-
- The value of $name is {$name}.
-
-
-
-The above example will output:
-
-
- The value of $name is Bob.
-
-
-
-
- {assign var="name" value="Bob" nocache}
- {assign "name" "Bob" nocache} {* short-hand *}
-
- The value of $name is {$name}.
-
-
-
-The above example will output:
-
-
- The value of $name is Bob.
-
-
-
-
- {assign var=running_total value=$running_total+$some_array[$row].some_value}
-
-
-
-Variables assigned in the included template will be seen in the
-including template.
-
-
- {include file="sub_template.tpl"}
- ...
- {* display variable assigned in sub_template *}
- {$foo}<br>
- ...
-
-
-
-The template above includes the example `sub_template.tpl` below
-
-
- ...
- {* foo will be known also in the including template *}
- {assign var="foo" value="something" scope=parent}
- {* bar is assigned only local in the including template *}
- {assign var="bar" value="value"}
- ...
-
-You can assign a variable to root of the current root tree. The variable
-is seen by all templates using the same root tree.
-
-
- {assign var=foo value="bar" scope="root"}
-
-
-
-A global variable is seen by all templates.
-
-
- {assign var=foo value="bar" scope="global"}
- {assign "foo" "bar" scope="global"} {* short-hand *}
-
-
-
-To access `{assign}` variables from a php script use
-[`getTemplateVars()`](#api.get.template.vars). Here\'s the template that
-creates the variable `$foo`.
-
-
- {assign var="foo" value="Smarty"}
-
-The template variables are only available after/during template
-execution as in the following script.
-
-
- <?php
-
- // this will output nothing as the template has not been executed
- echo $smarty->getTemplateVars('foo');
-
- // fetch the template to a variable
- $whole_page = $smarty->fetch('index.tpl');
-
- // this will output 'smarty' as the template has been executed
- echo $smarty->getTemplateVars('foo');
-
- $smarty->assign('foo','Even smarter');
-
- // this will output 'Even smarter'
- echo $smarty->getTemplateVars('foo');
-
- ?>
-
-The following functions can also *optionally* assign template variables.
-
-[`{capture}`](#language.function.capture),
-[`{include}`](#language.function.include),
-[`{include_php}`](#language.function.include.php),
-[`{insert}`](#language.function.insert),
-[`{counter}`](#language.function.counter),
-[`{cycle}`](#language.function.cycle),
-[`{eval}`](#language.function.eval),
-[`{fetch}`](#language.function.fetch),
-[`{math}`](#language.function.math),
-[`{textformat}`](#language.function.textformat)
-
-See also [`{$var=...}`](#language.function.shortform.assign),
-[`assign()`](#api.assign) and
-[`getTemplateVars()`](#api.get.template.vars).
diff --git a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-block.md b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-block.md
deleted file mode 100644
index 941997a55..000000000
--- a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-block.md
+++ /dev/null
@@ -1,191 +0,0 @@
-{block} {#language.function.block}
-=======
-
-`{block}` is used to define a named area of template source for template
-inheritance. For details see section of [Template
-Interitance](#advanced.features.template.inheritance).
-
-The `{block}` template source area of a child template will replace the
-correponding areas in the parent template(s).
-
-Optionally `{block}` areas of child and parent templates can be merged
-into each other. You can append or prepend the parent `{block}` content
-by using the `append` or `prepend` option flag with the childs `{block}`
-definition. With the {\$smarty.block.parent} the `{block}` content of
-the parent template can be inserted at any location of the child
-`{block}` content. {\$smarty.block.child} inserts the `{block}` content
-of the child template at any location of the parent `{block}`.
-
-`{blocks}'s` can be nested.
-
-**Attributes:**
-
- Attribute Name Type Required Default Description
- ---------------- -------- ---------- --------- ---------------------------------------
- name string Yes *n/a* The name of the template source block
-
-**Option Flags (in child templates only):**
-
- Name Description
- --------- -------------------------------------------------------------------------------------------
- append The `{block}` content will be be appended to the content of the parent template `{block}`
- prepend The `{block}` content will be prepended to the content of the parent template `{block}`
- hide Ignore the block content if no child block of same name is existing.
- nocache Disables caching of the `{block}` content
-
-parent.tpl
-
-
- <html>
- <head>
- <title>{block name="title"}Default Title{/block}</title>
- <title>{block "title"}Default Title{/block}</title> {* short-hand *}
- </head>
- </html>
-
-
-
-child.tpl
-
-
- {extends file="parent.tpl"}
- {block name="title"}
- Page Title
- {/block}
-
-
-
-The result would look like
-
-
- <html>
- <head>
- <title>Page Title</title>
- </head>
- </html>
-
-parent.tpl
-
-
- <html>
- <head>
- <title>{block name="title"}Title - {/block}</title>
- </head>
- </html>
-
-
-
-child.tpl
-
-
- {extends file="parent.tpl"}
- {block name="title" prepend}
- Page Title
- {/block}
-
-
-
-The result would look like
-
-
- <html>
- <head>
- <title>Title - Page Title</title>
- </head>
- </html>
-
-parent.tpl
-
-
- <html>
- <head>
- <title>{block name="title"} is my title{/block}</title>
- </head>
- </html>
-
-
-
-child.tpl
-
-
- {extends file="parent.tpl"}
- {block name="title" append}
- Page Title
- {/block}
-
-
-
-The result would look like
-
-
- <html>
- <head>
- <title>Page title is my titel</title>
- </head>
- </html>
-
-parent.tpl
-
-
- <html>
- <head>
- <title>{block name="title"}The {$smarty.block.child} was inserted here{/block}</title>
- </head>
- </html>
-
-
-
-child.tpl
-
-
- {extends file="parent.tpl"}
- {block name="title"}
- Child Title
- {/block}
-
-
-
-The result would look like
-
-
- <html>
- <head>
- <title>The Child Title was inserted here</title>
- </head>
- </html>
-
-parent.tpl
-
-
- <html>
- <head>
- <title>{block name="title"}Parent Title{/block}</title>
- </head>
- </html>
-
-
-
-child.tpl
-
-
- {extends file="parent.tpl"}
- {block name="title"}
- You will see now - {$smarty.block.parent} - here
- {/block}
-
-
-
-The result would look like
-
-
- <html>
- <head>
- <title>You will see now - Parent Title - here</title>
- </head>
- </html>
-
-See also [Template
-Inheritance](#advanced.features.template.inheritance),
-[`$smarty.block.parent`](#language.variables.smarty.block.parent),
-[`$smarty.block.child`](#language.variables.smarty.block.child), and
-[`{extends}`](#language.function.extends)
diff --git a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-call.md b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-call.md
deleted file mode 100644
index 786f0c10c..000000000
--- a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-call.md
+++ /dev/null
@@ -1,76 +0,0 @@
-{call} {#language.function.call}
-======
-
-`{call}` is used to call a template function defined by the
-[`{function}`](#language.function.function) tag just like a plugin
-function.
-
-> **Note**
->
-> Template functions are defined global. Since the Smarty compiler is a
-> single-pass compiler, The [`{call}`](#language.function.call) tag must
-> be used to call a template function defined externally from the given
-> template. Otherwise you can directly use the function as
-> `{funcname ...}` in the template.
-
-- The `{call}` tag must have the `name` attribute which contains the
- the name of the template function.
-
-- Values for variables can be passed to the template function as
- [attributes](#language.syntax.attributes).
-
-**Attributes:**
-
- Attribute Name Type Required Default Description
- ---------------- -------------- ---------- --------- ------------------------------------------------------------------------------------------
- name string Yes *n/a* The name of the template function
- assign string No *n/a* The name of the variable that the output of called template function will be assigned to
- \[var \...\] \[var type\] No *n/a* variable to pass local to template function
-
-**Option Flags:**
-
- Name Description
- --------- --------------------------------------------
- nocache Call the template function in nocache mode
-
-
- {* define the function *}
- {function name=menu level=0}
- <ul class="level{$level}">
- {foreach $data as $entry}
- {if is_array($entry)}
- <li>{$entry@key}</li>
- {call name=menu data=$entry level=$level+1}
- {else}
- <li>{$entry}</li>
- {/if}
- {/foreach}
- </ul>
- {/function}
-
- {* create an array to demonstrate *}
- {$menu = ['item1','item2','item3' => ['item3-1','item3-2','item3-3' =>
- ['item3-3-1','item3-3-2']],'item4']}
-
- {* run the array through the function *}
- {call name=menu data=$menu}
- {call menu data=$menu} {* short-hand *}
-
-
-
-Will generate the following output
-
-
- * item1
- * item2
- * item3
- o item3-1
- o item3-2
- o item3-3
- + item3-3-1
- + item3-3-2
- * item4
-
-
-
-See also [`{function}`](#language.function.function)
diff --git a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-capture.md b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-capture.md
deleted file mode 100644
index 9121b2874..000000000
--- a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-capture.md
+++ /dev/null
@@ -1,82 +0,0 @@
-{capture} {#language.function.capture}
-=========
-
-`{capture}` is used to collect the output of the template between the
-tags into a variable instead of displaying it. Any content between
-`{capture name='foo'}` and `{/capture}` is collected into the variable
-specified in the `name` attribute.
-
-The captured content can be used in the template from the variable
-[`$smarty.capture.foo`](#language.variables.smarty.capture) where "foo"
-is the value passed in the `name` attribute. If you do not supply the
-`name` attribute, then "default" will be used as the name ie
-`$smarty.capture.default`.
-
-`{capture}'s` can be nested.
-
-**Attributes:**
-
- Attribute Name Type Required Default Description
- ---------------- -------- ---------- --------- ----------------------------------------------------------------------
- name string Yes *n/a* The name of the captured block
- assign string No *n/a* The variable name where to assign the captured output to
- append string No *n/a* The name of an array variable where to append the captured output to
-
-**Option Flags:**
-
- Name Description
- --------- -----------------------------------------
- nocache Disables caching of this captured block
-
-> **Note**
->
-> Be careful when capturing [`{insert}`](#language.function.insert)
-> output. If you have [`$caching`](#caching) enabled and you have
-> [`{insert}`](#language.function.insert) commands that you expect to
-> run within cached content, do not capture this content.
-
-
- {* we don't want to print a div tag unless content is displayed *}
- {capture name="banner"}
- {capture "banner"} {* short-hand *}
- {include file="get_banner.tpl"}
- {/capture}
-
- {if $smarty.capture.banner ne ""}
- <div id="banner">{$smarty.capture.banner}</div>
- {/if}
-
-
-
-This example demonstrates the capture function.
-
-
- {capture name=some_content assign=popText}
- {capture some_content assign=popText} {* short-hand *}
- The server is {$my_server_name|upper} at {$my_server_addr}<br>
- Your ip is {$my_ip}.
- {/capture}
- <a href="#">{$popText}</a>
-
-
-
-This example also demonstrates how multiple calls of capture can be used
-to create an array with captured content.
-
-
- {capture append="foo"}hello{/capture}I say just {capture append="foo"}world{/capture}
- {foreach $foo as $text}{$text} {/foreach}
-
-
-
-The above example will output:
-
-
- I say just hello world
-
-
-
-See also [`$smarty.capture`](#language.variables.smarty.capture),
-[`{eval}`](#language.function.eval),
-[`{fetch}`](#language.function.fetch), [`fetch()`](#api.fetch) and
-[`{assign}`](#language.function.assign).
diff --git a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-config-load.md b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-config-load.md
deleted file mode 100644
index 750f337c4..000000000
--- a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-config-load.md
+++ /dev/null
@@ -1,91 +0,0 @@
-{config\_load} {#language.function.config.load}
-==============
-
-`{config_load}` is used for loading config
-[`#variables#`](#language.config.variables) from a [configuration
-file](#config.files) into the template.
-
-**Attributes:**
-
- Attribute Name Type Required Default Description
- ---------------- -------- ---------- --------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- file string Yes *n/a* The name of the config file to include
- section string No *n/a* The name of the section to load
- scope string no *local* How the scope of the loaded variables are treated, which must be one of local, parent or global. local means variables are loaded into the local template context. parent means variables are loaded into both the local context and the parent template that called it. global means variables are available to all templates.
-
-The `example.conf` file.
-
-
- #this is config file comment
-
- # global variables
- pageTitle = "Main Menu"
- bodyBgColor = #000000
- tableBgColor = #000000
- rowBgColor = #00ff00
-
- #customer variables section
- [Customer]
- pageTitle = "Customer Info"
-
-
-
-and the template
-
-
- {config_load file="example.conf"}
- {config_load "example.conf"} {* short-hand *}
-
- <html>
- <title>{#pageTitle#|default:"No title"}</title>
- <body bgcolor="{#bodyBgColor#}">
- <table border="{#tableBorderSize#}" bgcolor="{#tableBgColor#}">
- <tr bgcolor="{#rowBgColor#}">
- <td>First</td>
- <td>Last</td>
- <td>Address</td>
- </tr>
- </table>
- </body>
- </html>
-
-
-
-[Config Files](#config.files) may also contain sections. You can load
-variables from within a section with the added attribute `section`. Note
-that global config variables are always loaded along with section
-variables, and same-named section variables overwrite the globals.
-
-> **Note**
->
-> Config file *sections* and the built-in template function called
-> [`{section}`](#language.function.section) have nothing to do with each
-> other, they just happen to share a common naming convention.
-
-
- {config_load file='example.conf' section='Customer'}
- {config_load 'example.conf' 'Customer'} {* short-hand *}
-
- <html>
- <title>{#pageTitle#}</title>
- <body bgcolor="{#bodyBgColor#}">
- <table border="{#tableBorderSize#}" bgcolor="{#tableBgColor#}">
- <tr bgcolor="{#rowBgColor#}">
- <td>First</td>
- <td>Last</td>
- <td>Address</td>
- </tr>
- </table>
- </body>
- </html>
-
-
-
-See [`$config_overwrite`](#variable.config.overwrite) to create arrays
-of config file variables.
-
-See also the [config files](#config.files) page, [config
-variables](#language.config.variables) page,
-[`$config_dir`](#variable.config.dir),
-[`getConfigVars()`](#api.get.config.vars) and
-[`configLoad()`](#api.config.load).
diff --git a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-debug.md b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-debug.md
deleted file mode 100644
index fbaae1944..000000000
--- a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-debug.md
+++ /dev/null
@@ -1,18 +0,0 @@
-{debug} {#language.function.debug}
-=======
-
-`{debug}` dumps the debug console to the page. This works regardless of
-the [debug](#chapter.debugging.console) settings in the php script.
-Since this gets executed at runtime, this is only able to show the
-[assigned](#api.assign) variables; not the templates that are in use.
-However, you can see all the currently available variables within the
-scope of a template.
-
-If caching is enabled and a page is loaded from cache `{debug}` does
-show only the variables which assigned for the cached page.
-
-In order to see also the variables which have been locally assigned
-within the template it does make sense to place the `{debug}` tag at the
-end of the template.
-
-See also the [debugging console page](#chapter.debugging.console).
diff --git a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-extends.md b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-extends.md
deleted file mode 100644
index 9559e7c5e..000000000
--- a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-extends.md
+++ /dev/null
@@ -1,37 +0,0 @@
-{extends} {#language.function.extends}
-=========
-
-`{extends}` tags are used in child templates in template inheritance for
-extending parent templates. For details see section of [Template
-Interitance](#advanced.features.template.inheritance).
-
-- The `{extends}` tag must be on the first line of the template.
-
-- If a child template extends a parent template with the `{extends}`
- tag it may contain only `{block}` tags. Any other template content
- is ignored.
-
-- Use the syntax for [template resources](#resources) to extend files
- outside of the [`$template_dir`](#variable.template.dir) directory.
-
-> **Note**
->
-> When extending a variable parent like `{extends file=$parent_file}`,
-> make sure you include `$parent_file` in the
-> [`$compile_id`](#variable.compile.id). Otherwise Smarty cannot
-> distinguish between different `$parent_file`s.
-
-**Attributes:**
-
- Attribute Name Type Required Default Description
- ---------------- -------- ---------- --------- -------------------------------------------------
- file string Yes *n/a* The name of the template file which is extended
-
-
- {extends file='parent.tpl'}
- {extends 'parent.tpl'} {* short-hand *}
-
-
-
-See also [Template Interitance](#advanced.features.template.inheritance)
-and [`{block}`](#language.function.block).
diff --git a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-for.md b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-for.md
deleted file mode 100644
index 0545c1729..000000000
--- a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-for.md
+++ /dev/null
@@ -1,97 +0,0 @@
-{for} {#language.function.for}
-=====
-
-The `{for}{forelse}` tag is used to create simple loops. The following
-different formarts are supported:
-
-- `{for $var=$start to $end}` simple loop with step size of 1.
-
-- `{for $var=$start to $end step $step}` loop with individual step
- size.
-
-`{forelse}` is executed when the loop is not iterated.
-
-**Attributes:**
-
- Attribute Name Shorthand Type Required Default Description
- ---------------- ----------- --------- ---------- --------- --------------------------------
- max n/a integer No *n/a* Limit the number of iterations
-
-**Option Flags:**
-
- Name Description
- --------- --------------------------------------
- nocache Disables caching of the `{for}` loop
-
-
- <ul>
- {for $foo=1 to 3}
- <li>{$foo}</li>
- {/for}
- </ul>
-
-
-
-The above example will output:
-
-
- <ul>
- <li>1</li>
- <li>2</li>
- <li>3</li>
- </ul>
-
-
-
-
- $smarty->assign('to',10);
-
-
-
-
- <ul>
- {for $foo=3 to $to max=3}
- <li>{$foo}</li>
- {/for}
- </ul>
-
-
-
-The above example will output:
-
-
- <ul>
- <li>3</li>
- <li>4</li>
- <li>5</li>
- </ul>
-
-
-
-
- $smarty->assign('start',10);
- $smarty->assign('to',5);
-
-
-
-
- <ul>
- {for $foo=$start to $to}
- <li>{$foo}</li>
- {forelse}
- no iteration
- {/for}
- </ul>
-
-
-
-The above example will output:
-
-
- no iteration
-
-
-
-See also [`{foreach}`](#language.function.foreach),
-[`{section}`](#language.function.section) and
-[`{while}`](#language.function.while)
diff --git a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-foreach.md b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-foreach.md
deleted file mode 100644
index fdd740148..000000000
--- a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-foreach.md
+++ /dev/null
@@ -1,407 +0,0 @@
-{foreach},{foreachelse} {#language.function.foreach}
-=======================
-
-`{foreach}` is used for looping over arrays of data. `{foreach}` has a
-simpler and cleaner syntax than the
-[`{section}`](#language.function.section) loop, and can also loop over
-associative arrays.
-
-`{foreach $arrayvar as $itemvar}`
-
-`{foreach $arrayvar as $keyvar=>$itemvar}`
-
-> **Note**
->
-> This foreach syntax does not accept any named attributes. This syntax
-> is new to Smarty 3, however the Smarty 2.x syntax
-> `{foreach from=$myarray key="mykey" item="myitem"}` is still
-> supported.
-
-- `{foreach}` loops can be nested.
-
-- The `array` variable, usually an array of values, determines the
- number of times `{foreach}` will loop. You can also pass an integer
- for arbitrary loops.
-
-- `{foreachelse}` is executed when there are no values in the `array`
- variable.
-
-- `{foreach}` properties are [`@index`](#foreach.property.index),
- [`@iteration`](#foreach.property.iteration),
- [`@first`](#foreach.property.first),
- [`@last`](#foreach.property.last),
- [`@show`](#foreach.property.show),
- [`@total`](#foreach.property.total).
-
-- `{foreach}` constructs are [`{break}`](#foreach.construct.break),
- [`{continue}`](#foreach.construct.continue).
-
-- Instead of specifying the `key` variable you can access the current
- key of the loop item by `{$item@key}` (see examples below).
-
-> **Note**
->
-> The `$var@property` syntax is new to Smarty 3, however when using the
-> Smarty 2 `{foreach from=$myarray key="mykey" item="myitem"}` style
-> syntax, the `$smarty.foreach.name.property` syntax is still supported.
-
-> **Note**
->
-> Although you can retrieve the array key with the syntax
-> `{foreach $myArray as $myKey => $myValue}`, the key is always
-> available as `$myValue@key` within the foreach loop.
-
-**Option Flags:**
-
- Name Description
- --------- ------------------------------------------
- nocache Disables caching of the `{foreach}` loop
-
-
- <?php
- $arr = array('red', 'green', 'blue');
- $smarty->assign('myColors', $arr);
- ?>
-
-
-
-Template to output `$myColors` in an un-ordered list
-
-
- <ul>
- {foreach $myColors as $color}
- <li>{$color}</li>
- {/foreach}
- </ul>
-
-
-
-The above example will output:
-
-
- <ul>
- <li>red</li>
- <li>green</li>
- <li>blue</li>
- </ul>
-
-
-
-
- <?php
- $people = array('fname' => 'John', 'lname' => 'Doe', 'email' => 'j.doe@example.com');
- $smarty->assign('myPeople', $people);
- ?>
-
-
-
-Template to output `$myArray` as key/value pairs.
-
-
- <ul>
- {foreach $myPeople as $value}
- <li>{$value@key}: {$value}</li>
- {/foreach}
- </ul>
-
-
-
-The above example will output:
-
-
- <ul>
- <li>fname: John</li>
- <li>lname: Doe</li>
- <li>email: j.doe@example.com</li>
- </ul>
-
-
-
-Assign an array to Smarty, the key contains the key for each looped
-value.
-
-
- <?php
- $smarty->assign('contacts', array(
- array('phone' => '555-555-1234',
- 'fax' => '555-555-5678',
- 'cell' => '555-555-0357'),
- array('phone' => '800-555-4444',
- 'fax' => '800-555-3333',
- 'cell' => '800-555-2222')
- ));
- ?>
-
-
-
-The template to output `$contact`.
-
-
- {* key always available as a property *}
- {foreach $contacts as $contact}
- {foreach $contact as $value}
- {$value@key}: {$value}
- {/foreach}
- {/foreach}
-
- {* accessing key the PHP syntax alternate *}
- {foreach $contacts as $contact}
- {foreach $contact as $key => $value}
- {$key}: {$value}
- {/foreach}
- {/foreach}
-
-
-
-Either of the above examples will output:
-
-
- phone: 555-555-1234
- fax: 555-555-5678
- cell: 555-555-0357
- phone: 800-555-4444
- fax: 800-555-3333
- cell: 800-555-2222
-
-
-
-A database (PDO) example of looping over search results. This example is
-looping over a PHP iterator instead of an array().
-
-
- <?php
- include('Smarty.class.php');
-
- $smarty = new Smarty;
-
- $dsn = 'mysql:host=localhost;dbname=test';
- $login = 'test';
- $passwd = 'test';
-
- // setting PDO to use buffered queries in mysql is
- // important if you plan on using multiple result cursors
- // in the template.
-
- $db = new PDO($dsn, $login, $passwd, array(
- PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true));
-
- $res = $db->prepare("select * from users");
- $res->execute();
- $res->setFetchMode(PDO::FETCH_LAZY);
-
- // assign to smarty
- $smarty->assign('res',$res);
-
- $smarty->display('index.tpl');?>
- ?>
-
-
-
-
- {foreach $res as $r}
- {$r.id}
- {$r.name}
- {foreachelse}
- .. no results ..
- {/foreach}
-
-
-
-The above is assuming the results contain the columns named `id` and
-`name`.
-
-What is the advantage of an iterator vs. looping over a plain old array?
-With an array, all the results are accumulated into memory before being
-looped. With an iterator, each result is loaded/released within the
-loop. This saves processing time and memory, especially for very large
-result sets.
-
-\@index {#foreach.property.index}
--------
-
-`index` contains the current array index, starting with zero.
-
-
- {* output empty row on the 4th iteration (when index is 3) *}
- <table>
- {foreach $items as $i}
- {if $i@index eq 3}
- {* put empty table row *}
- <tr><td>nbsp;</td></tr>
- {/if}
- <tr><td>{$i.label}</td></tr>
- {/foreach}
- </table>
-
-
-
-\@iteration {#foreach.property.iteration}
------------
-
-`iteration` contains the current loop iteration and always starts at
-one, unlike [`index`](#foreach.property.index). It is incremented by one
-on each iteration.
-
-The *\"is div by\"* operator can be used to detect a specific iteration.
-Here we bold-face the name every 4th iteration.
-
-
- {foreach $myNames as $name}
- {if $name@iteration is div by 4}
- <b>{$name}</b>
- {/if}
- {$name}
- {/foreach}
-
-The *\"is even by\"* and *\"is odd by\"* operators can be used to
-alternate something every so many iterations. Choosing between even or
-odd rotates which one starts. Here we switch the font color every 3rd
-iteration.
-
-
- {foreach $myNames as $name}
- {if $name@iteration is even by 3}
- <span style="color: #000">{$name}</span>
- {else}
- <span style="color: #eee">{$name}</span>
- {/if}
- {/foreach}
-
-
-
-This will output something similar to this:
-
-
- <span style="color: #000">...</span>
- <span style="color: #000">...</span>
- <span style="color: #000">...</span>
- <span style="color: #eee">...</span>
- <span style="color: #eee">...</span>
- <span style="color: #eee">...</span>
- <span style="color: #000">...</span>
- <span style="color: #000">...</span>
- <span style="color: #000">...</span>
- <span style="color: #eee">...</span>
- <span style="color: #eee">...</span>
- <span style="color: #eee">...</span>
- ...
-
-
-
-\@first {#foreach.property.first}
--------
-
-`first` is TRUE if the current `{foreach}` iteration is the initial one.
-Here we display a table header row on the first iteration.
-
-
- {* show table header at first iteration *}
- <table>
- {foreach $items as $i}
- {if $i@first}
- <tr>
- <th>key</td>
- <th>name</td>
- </tr>
- {/if}
- <tr>
- <td>{$i@key}</td>
- <td>{$i.name}</td>
- </tr>
- {/foreach}
- </table>
-
-
-
-\@last {#foreach.property.last}
-------
-
-`last` is set to TRUE if the current `{foreach}` iteration is the final
-one. Here we display a horizontal rule on the last iteration.
-
-
- {* Add horizontal rule at end of list *}
- {foreach $items as $item}
- <a href="#{$item.id}">{$item.name}</a>{if $item@last}<hr>{else},{/if}
- {foreachelse}
- ... no items to loop ...
- {/foreach}
-
-
-
-\@show {#foreach.property.show}
-------
-
-The show `show` property can be used after the execution of a
-`{foreach}` loop to detect if data has been displayed or not. `show` is
-a boolean value.
-
-
- <ul>
- {foreach $myArray as $name}
- <li>{$name}</li>
- {/foreach}
- </ul>
- {if $name@show} do something here if the array contained data {/if}
-
-\@total {#foreach.property.total}
--------
-
-`total` contains the number of iterations that this `{foreach}` will
-loop. This can be used inside or after the `{foreach}`.
-
-
- {* show number of rows at end *}
- {foreach $items as $item}
- {$item.name}<hr/>
- {if $item@last}
- <div id="total">{$item@total} items</div>
- {/if}
- {foreachelse}
- ... no items to loop ...
- {/foreach}
-
-See also [`{section}`](#language.function.section),
-[`{for}`](#language.function.for) and
-[`{while}`](#language.function.while)
-
-{break} {#foreach.construct.break}
--------
-
-`{break}` aborts the iteration of the array
-
-
- {$data = [1,2,3,4,5]}
- {foreach $data as $value}
- {if $value == 3}
- {* abort iterating the array *}
- {break}
- {/if}
- {$value}
- {/foreach}
- {*
- prints: 1 2
- *}
-
-
-
-{continue} {#foreach.construct.continue}
-----------
-
-`{continue}` leaves the current iteration and begins with the next
-iteration.
-
-
- {$data = [1,2,3,4,5]}
- {foreach $data as $value}
- {if $value == 3}
- {* skip this iteration *}
- {continue}
- {/if}
- {$value}
- {/foreach}
- {*
- prints: 1 2 4 5
- *}
-
-
diff --git a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-function.md b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-function.md
deleted file mode 100644
index 647e4bfc8..000000000
--- a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-function.md
+++ /dev/null
@@ -1,88 +0,0 @@
-{function} {#language.function.function}
-==========
-
-`{function}` is used to create functions within a template and call them
-just like a plugin function. Instead of writing a plugin that generates
-presentational content, keeping it in the template is often a more
-manageable choice. It also simplifies data traversal, such as deeply
-nested menus.
-
-> **Note**
->
-> Template functions are defined global. Since the Smarty compiler is a
-> single-pass compiler, The [`{call}`](#language.function.call) tag must
-> be used to call a template function defined externally from the given
-> template. Otherwise you can directly use the function as
-> `{funcname ...}` in the template.
-
-- The `{function}` tag must have the `name` attribute which contains
- the the name of the template function. A tag with this name can be
- used to call the template function.
-
-- Default values for variables can be passed to the template function
- as [attributes](#language.syntax.attributes). Like in PHP function
- declarations you can only use scalar values as default. The default
- values can be overwritten when the template function is being
- called.
-
-- You can use all variables from the calling template inside the
- template function. Changes to variables or new created variables
- inside the template function have local scope and are not visible
- inside the calling template after the template function is executed.
-
-**Attributes:**
-
- Attribute Name Type Required Default Description
- ---------------- -------------- ---------- --------- ---------------------------------------------------------------
- name string Yes *n/a* The name of the template function
- \[var \...\] \[var type\] No *n/a* default variable value to pass local to the template function
-
-> **Note**
->
-> You can pass any number of parameter to the template function when it
-> is called. The parameter variables must not be declared in the
-> `{funcname ...}` tag unless you what to use default values. Default
-> values must be scalar and can not be variable. Variables must be
-> passed when the template is called.
-
-
- {* define the function *}
- {function name=menu level=0}
- {function menu level=0} {* short-hand *}
- <ul class="level{$level}">
- {foreach $data as $entry}
- {if is_array($entry)}
- <li>{$entry@key}</li>
- {menu data=$entry level=$level+1}
- {else}
- <li>{$entry}</li>
- {/if}
- {/foreach}
- </ul>
- {/function}
-
- {* create an array to demonstrate *}
- {$menu = ['item1','item2','item3' => ['item3-1','item3-2','item3-3' =>
- ['item3-3-1','item3-3-2']],'item4']}
-
- {* run the array through the function *}
- {menu data=$menu}
-
-
-
-Will generate the following output
-
-
- * item1
- * item2
- * item3
- o item3-1
- o item3-2
- o item3-3
- + item3-3-1
- + item3-3-2
- * item4
-
-
-
-See also [`{call}`](#language.function.call)
diff --git a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-if.md b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-if.md
deleted file mode 100644
index 2c1d68eea..000000000
--- a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-if.md
+++ /dev/null
@@ -1,121 +0,0 @@
-{if},{elseif},{else} {#language.function.if}
-====================
-
-`{if}` statements in Smarty have much the same flexibility as PHP
-[if](&url.php-manual;if) statements, with a few added features for the
-template engine. Every `{if}` must be paired with a matching `{/if}`.
-`{else}` and `{elseif}` are also permitted. All PHP conditionals and
-functions are recognized, such as *\|\|*, *or*, *&&*, *and*,
-*is\_array()*, etc.
-
-If securty is enabled, only PHP functions from `$php_functions` property
-of the securty policy are allowed. See the
-[Security](#advanced.features.security) section for details.
-
-The following is a list of recognized qualifiers, which must be
-separated from surrounding elements by spaces. Note that items listed in
-\[brackets\] are optional. PHP equivalents are shown where applicable.
-
- Qualifier Alternates Syntax Example Meaning PHP Equivalent
- -------------------- ------------ ------------------------ -------------------------------- ----------------------
- == eq \$a eq \$b equals ==
- != ne, neq \$a neq \$b not equals !=
- \> gt \$a gt \$b greater than \>
- \< lt \$a lt \$b less than \<
- \>= gte, ge \$a ge \$b greater than or equal \>=
- \<= lte, le \$a le \$b less than or equal \<=
- === \$a === 0 check for identity ===
- ! not not \$a negation (unary) !
- \% mod \$a mod \$b modulous \%
- is \[not\] div by \$a is not div by 4 divisible by \$a % \$b == 0
- is \[not\] even \$a is not even \[not\] an even number (unary) \$a % 2 == 0
- is \[not\] even by \$a is not even by \$b grouping level \[not\] even (\$a / \$b) % 2 == 0
- is \[not\] odd \$a is not odd \[not\] an odd number (unary) \$a % 2 != 0
- is \[not\] odd by \$a is not odd by \$b \[not\] an odd grouping (\$a / \$b) % 2 != 0
-
-
- {if $name eq 'Fred'}
- Welcome Sir.
- {elseif $name eq 'Wilma'}
- Welcome Ma'am.
- {else}
- Welcome, whatever you are.
- {/if}
-
- {* an example with "or" logic *}
- {if $name eq 'Fred' or $name eq 'Wilma'}
- ...
- {/if}
-
- {* same as above *}
- {if $name == 'Fred' || $name == 'Wilma'}
- ...
- {/if}
-
-
- {* parenthesis are allowed *}
- {if ( $amount < 0 or $amount > 1000 ) and $volume >= #minVolAmt#}
- ...
- {/if}
-
-
- {* you can also embed php function calls *}
- {if count($var) gt 0}
- ...
- {/if}
-
- {* check for array. *}
- {if is_array($foo) }
- .....
- {/if}
-
- {* check for not null. *}
- {if isset($foo) }
- .....
- {/if}
-
-
- {* test if values are even or odd *}
- {if $var is even}
- ...
- {/if}
- {if $var is odd}
- ...
- {/if}
- {if $var is not odd}
- ...
- {/if}
-
-
- {* test if var is divisible by 4 *}
- {if $var is div by 4}
- ...
- {/if}
-
-
- {*
- test if var is even, grouped by two. i.e.,
- 0=even, 1=even, 2=odd, 3=odd, 4=even, 5=even, etc.
- *}
- {if $var is even by 2}
- ...
- {/if}
-
- {* 0=even, 1=even, 2=even, 3=odd, 4=odd, 5=odd, etc. *}
- {if $var is even by 3}
- ...
- {/if}
-
-
-
-
- {if isset($name) && $name == 'Blog'}
- {* do something *}
- {elseif $name == $foo}
- {* do something *}
- {/if}
-
- {if is_array($foo) && count($foo) > 0}
- {* do a foreach loop *}
- {/if}
-
diff --git a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-include-php.md b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-include-php.md
deleted file mode 100644
index 8fc074a2b..000000000
--- a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-include-php.md
+++ /dev/null
@@ -1,74 +0,0 @@
-{include\_php} {#language.function.include.php}
-==============
-
-> **Note**
->
-> `{include_php}` is deprecated from Smarty, use registered plugins to
-> properly insulate presentation from the application code. As of Smarty
-> 3.1 the `{include_php}` tags are only available from [SmartyBC](#bc).
-
- Attribute Name Type Required Default Description
- ---------------- --------- ---------- --------- ----------------------------------------------------------------------------------
- file string Yes *n/a* The name of the php file to include as absolute path
- once boolean No *TRUE* whether or not to include the php file more than once if included multiple times
- assign string No *n/a* The name of the variable that the output of include\_php will be assigned to
-
-**Option Flags:**
-
- Name Description
- --------- ----------------------------------------
- nocache Disables caching of inluded PHP script
-
-`{include_php}` tags are used to include a php script in your template.
-The path of the attribute `file` can be either absolute, or relative to
-[`$trusted_dir`](#variable.trusted.dir). If security is enabled, then
-the script must be located in the `$trusted_dir` path of the securty
-policy. See the [Security](#advanced.features.security) section for
-details.
-
-By default, php files are only included once even if called multiple
-times in the template. You can specify that it should be included every
-time with the `once` attribute. Setting once to FALSE will include the
-php script each time it is included in the template.
-
-You can optionally pass the `assign` attribute, which will specify a
-template variable name that the output of `{include_php}` will be
-assigned to instead of displayed.
-
-The smarty object is available as `$_smarty_tpl->smarty` within the PHP
-script that you include.
-
-The `load_nav.php` file:
-
-
- <?php
-
- // load in variables from a mysql db and assign them to the template
- require_once('database.class.php');
- $db = new Db();
- $db->query('select url, name from navigation order by name');
- $this->assign('navigation', $db->getRows());
-
- ?>
-
-
-
-where the template is:
-
-
- {* absolute path, or relative to $trusted_dir *}
- {include_php file='/path/to/load_nav.php'}
- {include_php '/path/to/load_nav.php'} {* short-hand *}
-
- {foreach item='nav' from=$navigation}
- <a href="{$nav.url}">{$nav.name}</a><br />
- {/foreach}
-
-
-
-See also [`{include}`](#language.function.include),
-[`$trusted_dir`](#variable.trusted.dir),
-[`{php}`](#language.function.php),
-[`{capture}`](#language.function.capture), [template
-resources](#resources) and [componentized
-templates](#tips.componentized.templates)
diff --git a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-include.md b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-include.md
deleted file mode 100644
index 956d893e6..000000000
--- a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-include.md
+++ /dev/null
@@ -1,194 +0,0 @@
-{include} {#language.function.include}
-=========
-
-`{include}` tags are used for including other templates in the current
-template. Any variables available in the current template are also
-available within the included template.
-
-- The `{include}` tag must have the `file` attribute which contains
- the template resource path.
-
-- Setting the optional `assign` attribute specifies the template
- variable that the output of `{include}` is assigned to, instead of
- being displayed. Similar to [`{assign}`](#language.function.assign).
-
-- Variables can be passed to included templates as
- [attributes](#language.syntax.attributes). Any variables explicitly
- passed to an included template are only available within the scope
- of the included file. Attribute variables override current template
- variables, in the case when they are named the same.
-
-- You can use all variables from the including template inside the
- included template. But changes to variables or new created variables
- inside the included template have local scope and are not visible
- inside the including template after the `{include}` statement. This
- default behaviour can be changed for all variables assigned in the
- included template by using the scope attribute at the `{include}`
- statement or for individual variables by using the scope attribute
- at the [`{assign}`](#language.function.assign) statement. The later
- is useful to return values from the included template to the
- including template.
-
-- Use the syntax for [template resources](#resources) to `{include}`
- files outside of the [`$template_dir`](#variable.template.dir)
- directory.
-
-**Attributes:**
-
- Attribute Name Type Required Default Description
- ----------------- ---------------- ---------- --------- --------------------------------------------------------------------------------------------------
- file string Yes *n/a* The name of the template file to include
- assign string No *n/a* The name of the variable that the output of include will be assigned to
- cache\_lifetime integer No *n/a* Enable caching of this subtemplate with an individual cache lifetime
- compile\_id string/integer No *n/a* Compile this subtemplate with an individual compile\_id
- cache\_id string/integer No *n/a* Enable caching of this subtemplate with an individual cache\_id
- scope string No *n/a* Define the scope of all in the subtemplate assigned variables: \'parent\',\'root\' or \'global\'
- \[var \...\] \[var type\] No *n/a* variable to pass local to template
-
-**Option Flags:**
-
- Name Description
- --------- -------------------------------------------------------------------------------------
- nocache Disables caching of this subtemplate
- caching Enable caching of this subtemplate
- inline If set merge the compile code of the subtemplate into the compiled calling template
-
-
- <html>
- <head>
- <title>{$title}</title>
- </head>
- <body>
- {include file='page_header.tpl'}
-
- {* body of template goes here, the $tpl_name variable
- is replaced with a value eg 'contact.tpl'
- *}
- {include file="$tpl_name.tpl"}
-
- {* using shortform file attribute *}
- {include 'page_footer.tpl'}
- </body>
- </html>
-
-
-
-
- {include 'links.tpl' title='Newest links' links=$link_array}
- {* body of template goes here *}
- {include 'footer.tpl' foo='bar'}
-
-
-
-The template above includes the example `links.tpl` below
-
-
- <div id="box">
- <h3>{$title}{/h3>
- <ul>
- {foreach from=$links item=l}
- .. do stuff ...
- </foreach}
- </ul>
- </div>
-
-Variables assigned in the included template will be seen in the
-including template.
-
-
- {include 'sub_template.tpl' scope=parent}
- ...
- {* display variables assigned in sub_template *}
- {$foo}<br>
- {$bar}<br>
- ...
-
-
-
-The template above includes the example `sub_template.tpl` below
-
-
- ...
- {assign var=foo value='something'}
- {assign var=bar value='value'}
- ...
-
-The included template will not be cached.
-
-
- {include 'sub_template.tpl' nocache}
- ...
-
-
-
-In this example included template will be cached with an individual
-cache lifetime of 500 seconds.
-
-
- {include 'sub_template.tpl' cache_lifetime=500}
- ...
-
-
-
-In this example included template will be cached independent of the
-global cahing setting.
-
-
- {include 'sub_template.tpl' caching}
- ...
-
-
-
-This example assigns the contents of `nav.tpl` to the `$navbar`
-variable, which is then output at both the top and bottom of the page.
-
-
- <body>
- {include 'nav.tpl' assign=navbar}
- {include 'header.tpl' title='Smarty is cool'}
- {$navbar}
- {* body of template goes here *}
- {$navbar}
- {include 'footer.tpl'}
- </body>
-
-
-
-This example includes another template relative to the directory of the
-current template.
-
-
- {include 'template-in-a-template_dir-directory.tpl'}
- {include './template-in-same-directory.tpl'}
- {include '../template-in-parent-directory.tpl'}
-
-
-
-
- {* absolute filepath *}
- {include file='/usr/local/include/templates/header.tpl'}
-
- {* absolute filepath (same thing) *}
- {include file='file:/usr/local/include/templates/header.tpl'}
-
- {* windows absolute filepath (MUST use "file:" prefix) *}
- {include file='file:C:/www/pub/templates/header.tpl'}
-
- {* include from template resource named "db" *}
- {include file='db:header.tpl'}
-
- {* include a $variable template - eg $module = 'contacts' *}
- {include file="$module.tpl"}
-
- {* wont work as its single quotes ie no variable substitution *}
- {include file='$module.tpl'}
-
- {* include a multi $variable template - eg amber/links.view.tpl *}
- {include file="$style_dir/$module.$view.tpl"}
-
-
-
-See also [`{include_php}`](#language.function.include.php),
-[`{insert}`](#language.function.insert),
-[`{php}`](#language.function.php), [template resources](#resources) and
-[componentized templates](#tips.componentized.templates).
diff --git a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-insert.md b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-insert.md
deleted file mode 100644
index e37c73890..000000000
--- a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-insert.md
+++ /dev/null
@@ -1,86 +0,0 @@
-{insert} {#language.function.insert}
-========
-
-> **Note**
->
-> `{insert}` tags are deprecated from Smarty, and should not be used.
-> Put your PHP logic in PHP scripts or plugin functions instead.
-
-> **Note**
->
-> As of Smarty 3.1 the `{insert}` tags are only available from
-> [SmartyBC](#bc).
-
-`{insert}` tags work much like [`{include}`](#language.function.include)
-tags, except that `{insert}` tags are NOT cached when template
-[caching](#caching) is enabled. They will be executed on every
-invocation of the template.
-
- Attribute Name Type Required Default Description
- ---------------- -------------- ---------- --------- ----------------------------------------------------------------------------------
- name string Yes *n/a* The name of the insert function (insert\_`name`) or insert plugin
- assign string No *n/a* The name of the template variable the output will be assigned to
- script string No *n/a* The name of the php script that is included before the insert function is called
- \[var \...\] \[var type\] No *n/a* variable to pass to insert function
-
-Let\'s say you have a template with a banner slot at the top of the
-page. The banner can contain any mixture of HTML, images, flash, etc. so
-we can\'t just use a static link here, and we don\'t want this contents
-cached with the page. In comes the {insert} tag: the template knows
-\#banner\_location\_id\# and \#site\_id\# values (gathered from a
-[config file](#config.files)), and needs to call a function to get the
-banner contents.
-
- {* example of fetching a banner *}
- {insert name="getBanner" lid=#banner_location_id# sid=#site_id#}
- {insert "getBanner" lid=#banner_location_id# sid=#site_id#} {* short-hand *}
-
-In this example, we are using the name "getBanner" and passing the
-parameters \#banner\_location\_id\# and \#site\_id\#. Smarty will look
-for a function named insert\_getBanner() in your PHP application,
-passing the values of \#banner\_location\_id\# and \#site\_id\# as the
-first argument in an associative array. All {insert} function names in
-your application must be prepended with \"insert\_\" to remedy possible
-function name-space conflicts. Your insert\_getBanner() function should
-do something with the passed values and return the results. These
-results are then displayed in the template in place of the {insert} tag.
-In this example, Smarty would call this function:
-insert\_getBanner(array(\"lid\" =\> \"12345\",\"sid\" =\> \"67890\"));
-and display the returned results in place of the {insert} tag.
-
-- If you supply the `assign` attribute, the output of the `{insert}`
- tag will be assigned to this template variable instead of being
- output to the template.
-
- > **Note**
- >
- > Assigning the output to a template variable isn\'t too useful with
- > [caching](#variable.caching) enabled.
-
-- If you supply the `script` attribute, this php script will be
- included (only once) before the `{insert}` function is executed.
- This is the case where the insert function may not exist yet, and a
- php script must be included first to make it work.
-
- The path can be either absolute, or relative to
- [`$trusted_dir`](#variable.trusted.dir). If security is enabled,
- then the script must be located in the `$trusted_dir` path of the
- securty policy. See the [Security](#advanced.features.security)
- section for details.
-
-The Smarty object is passed as the second argument. This way you can
-reference and modify information in the Smarty object from within the
-`{insert}` function.
-
-If no PHP script can be found Smarty is looking for a corresponding
-insert plugin.
-
-> **Note**
->
-> It is possible to have portions of the template not cached. If you
-> have [caching](#caching) turned on, `{insert}` tags will not be
-> cached. They will run dynamically every time the page is created, even
-> within cached pages. This works good for things like banners, polls,
-> live weather, search results, user feedback areas, etc.
-
-See also [`{include}`](#language.function.include)
diff --git a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-ldelim.md b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-ldelim.md
deleted file mode 100644
index 2afda031a..000000000
--- a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-ldelim.md
+++ /dev/null
@@ -1,55 +0,0 @@
-{ldelim},{rdelim} {#language.function.ldelim}
-=================
-
-`{ldelim}` and `{rdelim}` are used for [escaping](#language.escaping)
-template delimiters, by default **{** and **}**. You can also use
-[`{literal}{/literal}`](#language.function.literal) to escape blocks of
-text eg Javascript or CSS. See also the complementary
-[`{$smarty.ldelim}`](#language.variables.smarty.ldelim).
-
-
- {* this will print literal delimiters out of the template *}
-
- {ldelim}funcname{rdelim} is how functions look in Smarty!
-
-
-
-The above example will output:
-
-
- {funcname} is how functions look in Smarty!
-
-
-
-Another example with some Javascript
-
-
- <script language="JavaScript">
- function foo() {ldelim}
- ... code ...
- {rdelim}
- </script>
-
-
-
-will output
-
-
- <script language="JavaScript">
- function foo() {
- .... code ...
- }
- </script>
-
-
-
-
- <script language="JavaScript" type="text/javascript">
- function myJsFunction(){ldelim}
- alert("The server name\n{$smarty.server.SERVER_NAME}\n{$smarty.server.SERVER_ADDR}");
- {rdelim}
- </script>
- <a href="javascript:myJsFunction()">Click here for Server Info</a>
-
-See also [`{literal}`](#language.function.literal) and [escaping Smarty
-parsing](#language.escaping).
diff --git a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-literal.md b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-literal.md
deleted file mode 100644
index 27ebb3ff4..000000000
--- a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-literal.md
+++ /dev/null
@@ -1,36 +0,0 @@
-{literal} {#language.function.literal}
-=========
-
-`{literal}` tags allow a block of data to be taken literally. This is
-typically used around Javascript or stylesheet blocks where {curly
-braces} would interfere with the template
-[delimiter](#variable.left.delimiter) syntax. Anything within
-`{literal}{/literal}` tags is not interpreted, but displayed as-is. If
-you need template tags embedded in a `{literal}` block, consider using
-[`{ldelim}{rdelim}`](#language.function.ldelim) to escape the individual
-delimiters instead.
-
-> **Note**
->
-> `{literal}{/literal}` tags are normally not necessary, as Smarty
-> ignores delimiters that are surrounded by whitespace. Be sure your
-> javascript and CSS curly braces are surrounded by whitespace. This is
-> new behavior to Smarty 3.
-
-
- <script>
- // the following braces are ignored by Smarty
- // since they are surrounded by whitespace
- function myFoo {
- alert('Foo!');
- }
- // this one will need literal escapement
- {literal}
- function myBar {alert('Bar!');}
- {/literal}
- </script>
-
-
-
-See also [`{ldelim} {rdelim}`](#language.function.ldelim) and the
-[escaping Smarty parsing](#language.escaping) page.
diff --git a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-nocache.md b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-nocache.md
deleted file mode 100644
index a5922f838..000000000
--- a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-nocache.md
+++ /dev/null
@@ -1,23 +0,0 @@
-{nocache} {#language.function.nocache}
-=========
-
-`{nocache}` is used to disable caching of a template section. Every
-`{nocache}` must be paired with a matching `{/nocache}`.
-
-> **Note**
->
-> Be sure any variables used within a non-cached section are also
-> assigned from PHP when the page is loaded from the cache.
-
-
-
- Today's date is
- {nocache}
- {$smarty.now|date_format}
- {/nocache}
-
-
-
-The above code will output the current date on a cached page.
-
-See also the [caching section](#caching).
diff --git a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-section.md b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-section.md
deleted file mode 100644
index 0bab5c715..000000000
--- a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-section.md
+++ /dev/null
@@ -1,644 +0,0 @@
-{section},{sectionelse} {#language.function.section}
-=======================
-
-A `{section}` is for looping over **sequentially indexed arrays of
-data**, unlike [`{foreach}`](#language.function.foreach) which is used
-to loop over a **single associative array**. Every `{section}` tag must
-be paired with a closing `{/section}` tag.
-
-> **Note**
->
-> The [`{foreach}`](#language.function.foreach) loop can do everything a
-> {section} loop can do, and has a simpler and easier syntax. It is
-> usually preferred over the {section} loop.
-
-> **Note**
->
-> {section} loops cannot loop over associative arrays, they must be
-> numerically indexed, and sequential (0,1,2,\...). For associative
-> arrays, use the [`{foreach}`](#language.function.foreach) loop.
-
- Attribute Name Type Required Default Description
- ---------------- --------- ---------- --------- -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- name string Yes *n/a* The name of the section
- loop mixed Yes *n/a* Value to determine the number of loop iterations
- start integer No *0* The index position that the section will begin looping. If the value is negative, the start position is calculated from the end of the array. For example, if there are seven values in the loop array and start is -2, the start index is 5. Invalid values (values outside of the length of the loop array) are automatically truncated to the closest valid value.
- step integer No *1* The step value that will be used to traverse the loop array. For example, step=2 will loop on index 0,2,4, etc. If step is negative, it will step through the array backwards.
- max integer No *n/a* Sets the maximum number of times the section will loop.
- show boolean No *TRUE* Determines whether or not to show this section
-
-**Option Flags:**
-
- Name Description
- --------- ------------------------------------------
- nocache Disables caching of the `{section}` loop
-
-- Required attributes are `name` and `loop`.
-
-- The `name` of the `{section}` can be anything you like, made up of
- letters, numbers and underscores, like [PHP
- variables](&url.php-manual;language.variables).
-
-- {section}\'s can be nested, and the nested `{section}` names must be
- unique from each other.
-
-- The `loop` attribute, usually an array of values, determines the
- number of times the `{section}` will loop. You can also pass an
- integer as the loop value.
-
-- When printing a variable within a `{section}`, the `{section}`
- `name` must be given next to variable name within \[brackets\].
-
-- `{sectionelse}` is executed when there are no values in the loop
- variable.
-
-- A `{section}` also has its own variables that handle `{section}`
- properties. These properties are accessible as:
- [`{$smarty.section.name.property}`](#language.variables.smarty.loops)
- where "name" is the attribute `name`.
-
-- `{section}` properties are [`index`](#section.property.index),
- [`index_prev`](#section.property.index.prev),
- [`index_next`](#section.property.index.next),
- [`iteration`](#section.property.iteration),
- [`first`](#section.property.first),
- [`last`](#section.property.last),
- [`rownum`](#section.property.rownum),
- [`loop`](#section.property.loop), [`show`](#section.property.show),
- [`total`](#section.property.total).
-
-[`assign()`](#api.assign) an array to Smarty
-
-
- <?php
- $data = array(1000,1001,1002);
- $smarty->assign('custid',$data);
- ?>
-
-The template that outputs the array
-
-
- {* this example will print out all the values of the $custid array *}
- {section name=customer loop=$custid}
- {section customer $custid} {* short-hand *}
- id: {$custid[customer]}<br />
- {/section}
- <hr />
- {* print out all the values of the $custid array reversed *}
- {section name=foo loop=$custid step=-1}
- {section foo $custid step=-1} {* short-hand *}
- {$custid[foo]}<br />
- {/section}
-
-
-
-The above example will output:
-
-
- id: 1000<br />
- id: 1001<br />
- id: 1002<br />
- <hr />
- id: 1002<br />
- id: 1001<br />
- id: 1000<br />
-
-
-
-
- {section name=foo start=10 loop=20 step=2}
- {$smarty.section.foo.index}
- {/section}
- <hr />
- {section name=bar loop=21 max=6 step=-2}
- {$smarty.section.bar.index}
- {/section}
-
-The above example will output:
-
-
- 10 12 14 16 18
- <hr />
- 20 18 16 14 12 10
-
-
-
-The `name` of the `{section}` can be anything you like, see [PHP
-variables](&url.php-manual;language.variables). It is used to reference
-the data within the `{section}`.
-
-
- {section name=anything loop=$myArray}
- {$myArray[anything].foo}
- {$name[anything]}
- {$address[anything].bar}
- {/section}
-
-
-
-This is an example of printing an associative array of data with a
-`{section}`. Following is the php script to assign the `$contacts` array
-to Smarty.
-
-
- <?php
- $data = array(
- array('name' => 'John Smith', 'home' => '555-555-5555',
- 'cell' => '666-555-5555', 'email' => 'john@myexample.com'),
- array('name' => 'Jack Jones', 'home' => '777-555-5555',
- 'cell' => '888-555-5555', 'email' => 'jack@myexample.com'),
- array('name' => 'Jane Munson', 'home' => '000-555-5555',
- 'cell' => '123456', 'email' => 'jane@myexample.com')
- );
- $smarty->assign('contacts',$data);
- ?>
-
-
-
-The template to output `$contacts`
-
-
- {section name=customer loop=$contacts}
- <p>
- name: {$contacts[customer].name}<br />
- home: {$contacts[customer].home}<br />
- cell: {$contacts[customer].cell}<br />
- e-mail: {$contacts[customer].email}
- </p>
- {/section}
-
-
-
-The above example will output:
-
-
- <p>
- name: John Smith<br />
- home: 555-555-5555<br />
- cell: 666-555-5555<br />
- e-mail: john@myexample.com
- </p>
- <p>
- name: Jack Jones<br />
- home phone: 777-555-5555<br />
- cell phone: 888-555-5555<br />
- e-mail: jack@myexample.com
- </p>
- <p>
- name: Jane Munson<br />
- home phone: 000-555-5555<br />
- cell phone: 123456<br />
- e-mail: jane@myexample.com
- </p>
-
-
-
-This example assumes that `$custid`, `$name` and `$address` are all
-arrays containing the same number of values. First the php script that
-assign\'s the arrays to Smarty.
-
-
- <?php
-
- $id = array(1001,1002,1003);
- $smarty->assign('custid',$id);
-
- $fullnames = array('John Smith','Jack Jones','Jane Munson');
- $smarty->assign('name',$fullnames);
-
- $addr = array('253 Abbey road', '417 Mulberry ln', '5605 apple st');
- $smarty->assign('address',$addr);
-
- ?>
-
-The `loop` variable only determines the number of times to loop. You can
-access ANY variable from the template within the `{section}`. This is
-useful for looping multiple arrays. You can pass an array which will
-determine the loop count by the array size, or you can pass an integer
-to specify the number of loops.
-
-
- {section name=customer loop=$custid}
- <p>
- id: {$custid[customer]}<br />
- name: {$name[customer]}<br />
- address: {$address[customer]}
- </p>
- {/section}
-
-
-
-The above example will output:
-
-
- <p>
- id: 1000<br />
- name: John Smith<br />
- address: 253 Abbey road
- </p>
- <p>
- id: 1001<br />
- name: Jack Jones<br />
- address: 417 Mulberry ln
- </p>
- <p>
- id: 1002<br />
- name: Jane Munson<br />
- address: 5605 apple st
- </p>
-
-
-
-{section}\'s can be nested as deep as you like. With nested
-{section}\'s, you can access complex data structures, such as
-multi-dimensional arrays. This is an example `.php` script thats
-assign\'s the arrays.
-
-
- <?php
-
- $id = array(1001,1002,1003);
- $smarty->assign('custid',$id);
-
- $fullnames = array('John Smith','Jack Jones','Jane Munson');
- $smarty->assign('name',$fullnames);
-
- $addr = array('253 N 45th', '417 Mulberry ln', '5605 apple st');
- $smarty->assign('address',$addr);
-
- $types = array(
- array( 'home phone', 'cell phone', 'e-mail'),
- array( 'home phone', 'web'),
- array( 'cell phone')
- );
- $smarty->assign('contact_type', $types);
-
- $info = array(
- array('555-555-5555', '666-555-5555', 'john@myexample.com'),
- array( '123-456-4', 'www.example.com'),
- array( '0457878')
- );
- $smarty->assign('contact_info', $info);
-
- ?>
-
-
-In this template, *\$contact\_type\[customer\]* is an array of contact
-types for the current customer.
-
-
- {section name=customer loop=$custid}
- <hr>
- id: {$custid[customer]}<br />
- name: {$name[customer]}<br />
- address: {$address[customer]}<br />
- {section name=contact loop=$contact_type[customer]}
- {$contact_type[customer][contact]}: {$contact_info[customer][contact]}<br />
- {/section}
- {/section}
-
-
-
-The above example will output:
-
-
- <hr>
- id: 1000<br />
- name: John Smith<br />
- address: 253 N 45th<br />
- home phone: 555-555-5555<br />
- cell phone: 666-555-5555<br />
- e-mail: john@myexample.com<br />
- <hr>
- id: 1001<br />
- name: Jack Jones<br />
- address: 417 Mulberry ln<br />
- home phone: 123-456-4<br />
- web: www.example.com<br />
- <hr>
- id: 1002<br />
- name: Jane Munson<br />
- address: 5605 apple st<br />
- cell phone: 0457878<br />
-
-
-
-Results of a database search (eg ADODB or PEAR) are assigned to Smarty
-
-
- <?php
- $sql = 'select id, name, home, cell, email from contacts '
- ."where name like '$foo%' ";
- $smarty->assign('contacts', $db->getAll($sql));
- ?>
-
-The template to output the database result in a HTML table
-
-
- <table>
- <tr><th>&nbsp;</th><th>Name></th><th>Home</th><th>Cell</th><th>Email</th></tr>
- {section name=co loop=$contacts}
- <tr>
- <td><a href="view.php?id={$contacts[co].id}">view<a></td>
- <td>{$contacts[co].name}</td>
- <td>{$contacts[co].home}</td>
- <td>{$contacts[co].cell}</td>
- <td>{$contacts[co].email}</td>
- <tr>
- {sectionelse}
- <tr><td colspan="5">No items found</td></tr>
- {/section}
- </table>
-
-.index {#section.property.index}
-------
-
-`index` contains the current array index, starting with zero or the
-`start` attribute if given. It increments by one or by the `step`
-attribute if given.
-
-> **Note**
->
-> If the `step` and `start` properties are not modified, then this works
-> the same as the [`iteration`](#section.property.iteration) property,
-> except it starts at zero instead of one.
-
-> **Note**
->
-> `$custid[customer.index]` and `$custid[customer]` are identical.
-
-
- {section name=customer loop=$custid}
- {$smarty.section.customer.index} id: {$custid[customer]}<br />
- {/section}
-
-
-
-The above example will output:
-
-
- 0 id: 1000<br />
- 1 id: 1001<br />
- 2 id: 1002<br />
-
-
-
-.index\_prev {#section.property.index.prev}
-------------
-
-`index_prev` is the previous loop index. On the first loop, this is set
-to -1.
-
-.index\_next {#section.property.index.next}
-------------
-
-`index_next` is the next loop index. On the last loop, this is still one
-more than the current index, respecting the setting of the `step`
-attribute, if given.
-
-
- <?php
- $data = array(1001,1002,1003,1004,1005);
- $smarty->assign('rows',$data);
- ?>
-
-Template to output the above array in a table
-
-
- {* $rows[row.index] and $rows[row] are identical in meaning *}
- <table>
- <tr>
- <th>index</th><th>id</th>
- <th>index_prev</th><th>prev_id</th>
- <th>index_next</th><th>next_id</th>
- </tr>
- {section name=row loop=$rows}
- <tr>
- <td>{$smarty.section.row.index}</td><td>{$rows[row]}</td>
- <td>{$smarty.section.row.index_prev}</td><td>{$rows[row.index_prev]}</td>
- <td>{$smarty.section.row.index_next}</td><td>{$rows[row.index_next]}</td>
- </tr>
- {/section}
- </table>
-
-
-
-The above example will output a table containing the following:
-
-
- index id index_prev prev_id index_next next_id
- 0 1001 -1 1 1002
- 1 1002 0 1001 2 1003
- 2 1003 1 1002 3 1004
- 3 1004 2 1003 4 1005
- 4 1005 3 1004 5
-
-
-
-.iteration {#section.property.iteration}
-----------
-
-`iteration` contains the current loop iteration and starts at one.
-
-> **Note**
->
-> This is not affected by the `{section}` properties `start`, `step` and
-> `max`, unlike the [`index`](#section.property.index) property.
-> `iteration` also starts with one instead of zero unlike `index`.
-> [`rownum`](#section.property.rownum) is an alias to `iteration`, they
-> are identical.
-
-
- <?php
- // array of 3000 to 3015
- $id = range(3000,3015);
- $smarty->assign('arr',$id);
- ?>
-
-Template to output every other element of the `$arr` array as `step=2`
-
-
- {section name=cu loop=$arr start=5 step=2}
- iteration={$smarty.section.cu.iteration}
- index={$smarty.section.cu.index}
- id={$custid[cu]}<br />
- {/section}
-
-
-
-The above example will output:
-
-
- iteration=1 index=5 id=3005<br />
- iteration=2 index=7 id=3007<br />
- iteration=3 index=9 id=3009<br />
- iteration=4 index=11 id=3011<br />
- iteration=5 index=13 id=3013<br />
- iteration=6 index=15 id=3015<br />
-
-
-
-Another example that uses the `iteration` property to output a table
-header block every five rows.
-
-
- <table>
- {section name=co loop=$contacts}
- {if $smarty.section.co.iteration is div by 5}
- <tr><th>&nbsp;</th><th>Name></th><th>Home</th><th>Cell</th><th>Email</th></tr>
- {/if}
- <tr>
- <td><a href="view.php?id={$contacts[co].id}">view<a></td>
- <td>{$contacts[co].name}</td>
- <td>{$contacts[co].home}</td>
- <td>{$contacts[co].cell}</td>
- <td>{$contacts[co].email}</td>
- <tr>
- {/section}
- </table>
-
-
-
-An that uses the `iteration` property to alternate a text color every
-third row.
-
-
- <table>
- {section name=co loop=$contacts}
- {if $smarty.section.co.iteration is even by 3}
- <span style="color: #ffffff">{$contacts[co].name}</span>
- {else}
- <span style="color: #dddddd">{$contacts[co].name}</span>
- {/if}
- {/section}
- </table>
-
-
-
-> **Note**
->
-> The *\"is div by\"* syntax is a simpler alternative to the PHP mod
-> operator syntax. The mod operator is allowed:
-> `{if $smarty.section.co.iteration % 5 == 1}` will work just the same.
-
-> **Note**
->
-> You can also use *\"is odd by\"* to reverse the alternating.
-
-.first {#section.property.first}
-------
-
-`first` is set to TRUE if the current `{section}` iteration is the
-initial one.
-
-.last {#section.property.last}
------
-
-`last` is set to TRUE if the current section iteration is the final one.
-
-This example loops the `$customers` array, outputs a header block on the
-first iteration and on the last outputs the footer block. Also uses the
-[`total`](#section.property.total) property.
-
-
- {section name=customer loop=$customers}
- {if $smarty.section.customer.first}
- <table>
- <tr><th>id</th><th>customer</th></tr>
- {/if}
-
- <tr>
- <td>{$customers[customer].id}}</td>
- <td>{$customers[customer].name}</td>
- </tr>
-
- {if $smarty.section.customer.last}
- <tr><td></td><td>{$smarty.section.customer.total} customers</td></tr>
- </table>
- {/if}
- {/section}
-
-
-
-.rownum {#section.property.rownum}
--------
-
-`rownum` contains the current loop iteration, starting with one. It is
-an alias to [`iteration`](#section.property.iteration), they work
-identically.
-
-.loop {#section.property.loop}
------
-
-`loop` contains the last index number that this {section} looped. This
-can be used inside or after the `{section}`.
-
-
- {section name=customer loop=$custid}
- {$smarty.section.customer.index} id: {$custid[customer]}<br />
- {/section}
- There are {$smarty.section.customer.loop} customers shown above.
-
-
-
-The above example will output:
-
-
- 0 id: 1000<br />
- 1 id: 1001<br />
- 2 id: 1002<br />
- There are 3 customers shown above.
-
-
-
-.show {#section.property.show}
------
-
-`show` is used as a parameter to section and is a boolean value. If
-FALSE, the section will not be displayed. If there is a `{sectionelse}`
-present, that will be alternately displayed.
-
-Boolean `$show_customer_info` has been passed from the PHP application,
-to regulate whether or not this section shows.
-
-
- {section name=customer loop=$customers show=$show_customer_info}
- {$smarty.section.customer.rownum} id: {$customers[customer]}<br />
- {/section}
-
- {if $smarty.section.customer.show}
- the section was shown.
- {else}
- the section was not shown.
- {/if}
-
-
-
-The above example will output:
-
-
- 1 id: 1000<br />
- 2 id: 1001<br />
- 3 id: 1002<br />
-
- the section was shown.
-
-
-
-.total {#section.property.total}
-------
-
-`total` contains the number of iterations that this `{section}` will
-loop. This can be used inside or after a `{section}`.
-
-
- {section name=customer loop=$custid step=2}
- {$smarty.section.customer.index} id: {$custid[customer]}<br />
- {/section}
- There are {$smarty.section.customer.total} customers shown above.
-
-
-
-See also [`{foreach}`](#language.function.foreach),
-[`{for}`](#language.function.for), [`{while}`](#language.function.while)
-and [`$smarty.section`](#language.variables.smarty.loops).
diff --git a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-setfilter.md b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-setfilter.md
deleted file mode 100644
index 381c191a2..000000000
--- a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-setfilter.md
+++ /dev/null
@@ -1,42 +0,0 @@
-{setfilter} {#language.function.setfilter}
-===========
-
-The `{setfilter}...{/setfilter}` block tag allows the definition of
-template instance\'s variable filters.
-
-SYNTAX: {setfilter filter1\|filter2\|filter3\....}\...{/setfilter}
-
-The filter can be:
-
-- A variable filter plugin specified by it\'s name.
-
-- A modidier specified by it\'s name and optional additional
- parameter.
-
-`{setfilter}...{/setfilter}` blocks can be nested. The filter definition
-of inner blocks does replace the definition of the outer block.
-
-Template instance filters run in addition to other modifiers and
-filters. They run in the following order: modifier, default\_modifier,
-\$escape\_html, registered variable filters, autoloaded variable
-filters, template instance\'s variable filters. Everything after
-default\_modifier can be disabled with the `nofilter` flag.
-
-
- <script>
- {setfilter filter1}
- {$foo} {* filter1 runs on output of $foo *}
- {setfilter filter2|mod:true}
- {$bar} {* filter2 and modifier mod runs on output of $bar *}
- {/setfilter}
- {$buh} {* filter1 runs on output of $buh *}
- {/setfilter}
- {$blar} {* no template instance filter runs on output of $blar}
- </script>
-
-
-
-> **Note**
->
-> The setting of template instance filters does not effect the output of
-> included subtemplates.
diff --git a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-shortform-assign.md b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-shortform-assign.md
deleted file mode 100644
index d6a9e9798..000000000
--- a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-shortform-assign.md
+++ /dev/null
@@ -1,84 +0,0 @@
-{\$var=\...} {#language.function.shortform.assign}
-============
-
-This is a short-hand version of the {assign} function. You can assign
-values directly to the template, or assign values to array elements too.
-
-> **Note**
->
-> Assignment of variables in-template is essentially placing application
-> logic into the presentation that may be better handled in PHP. Use at
-> your own discretion.
-
-The following attributes can be added to the tag:
-
-**Attributes:**
-
- Attribute Name Shorthand Type Required Default Description
- ---------------- ----------- -------- ---------- --------- -----------------------------------------------------------------------
- scope n/a string No *n/a* The scope of the assigned variable: \'parent\',\'root\' or \'global\'
-
-**Option Flags:**
-
- Name Description
- --------- -----------------------------------------------------
- nocache Assigns the variable with the \'nocache\' attribute
-
-
- {$name='Bob'}
-
- The value of $name is {$name}.
-
-
-
-The above example will output:
-
-
- The value of $name is Bob.
-
-
-
-
- {$running_total=$running_total+$some_array[row].some_value}
-
-
-
-
- {$user.name="Bob"}
-
-
-
-
- {$user.name.first="Bob"}
-
-
-
-
- {$users[]="Bob"}
-
-
-
-Variables assigned in the included template will be seen in the
-including template.
-
-
- {include file="sub_template.tpl"}
- ...
- {* display variable assigned in sub_template *}
- {$foo}<br>
- ...
-
-
-
-The template above includes the example `sub_template.tpl` below
-
-
- ...
- {* foo will be known also in the including template *}
- {$foo="something" scope=parent}
- {* bar is assigned only local in the including template *}
- {$bar="value"}
- ...
-
-See also [`{assign}`](#language.function.assign) and
-[`{append}`](#language.function.append)
diff --git a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-strip.md b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-strip.md
deleted file mode 100644
index d40646e5f..000000000
--- a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-strip.md
+++ /dev/null
@@ -1,48 +0,0 @@
-{strip} {#language.function.strip}
-=======
-
-Many times web designers run into the issue where white space and
-carriage returns affect the output of the rendered HTML (browser
-\"features\"), so you must run all your tags together in the template to
-get the desired results. This usually ends up in unreadable or
-unmanageable templates.
-
-Anything within `{strip}{/strip}` tags are stripped of the extra spaces
-or carriage returns at the beginnings and ends of the lines before they
-are displayed. This way you can keep your templates readable, and not
-worry about extra white space causing problems.
-
-> **Note**
->
-> `{strip}{/strip}` does not affect the contents of template variables,
-> see the [strip modifier](#language.modifier.strip) instead.
-
-
- {* the following will be all run into one line upon output *}
- {strip}
- <table border='0'>
- <tr>
- <td>
- <a href="{$url}">
- <font color="red">This is a test</font>
- </a>
- </td>
- </tr>
- </table>
- {/strip}
-
-
-
-The above example will output:
-
-
- <table border='0'><tr><td><a href="http://. snipped...</a></td></tr></table>
-
-
-
-Notice that in the above example, all the lines begin and end with HTML
-tags. Be aware that all the lines are run together. If you have plain
-text at the beginning or end of any line, they will be run together, and
-may not be desired results.
-
-See also the [`strip`](#language.modifier.strip) modifier.
diff --git a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-while.md b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-while.md
deleted file mode 100644
index 755c091f6..000000000
--- a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-while.md
+++ /dev/null
@@ -1,43 +0,0 @@
-{while} {#language.function.while}
-=======
-
-`{while}` loops in Smarty have much the same flexibility as PHP
-[while](&url.php-manual;while) statements, with a few added features for
-the template engine. Every `{while}` must be paired with a matching
-`{/while}`. All PHP conditionals and functions are recognized, such as
-*\|\|*, *or*, *&&*, *and*, *is\_array()*, etc.
-
-The following is a list of recognized qualifiers, which must be
-separated from surrounding elements by spaces. Note that items listed in
-\[brackets\] are optional. PHP equivalents are shown where applicable.
-
- Qualifier Alternates Syntax Example Meaning PHP Equivalent
- -------------------- ------------ ------------------------ -------------------------------- ----------------------
- == eq \$a eq \$b equals ==
- != ne, neq \$a neq \$b not equals !=
- \> gt \$a gt \$b greater than \>
- \< lt \$a lt \$b less than \<
- \>= gte, ge \$a ge \$b greater than or equal \>=
- \<= lte, le \$a le \$b less than or equal \<=
- === \$a === 0 check for identity ===
- ! not not \$a negation (unary) !
- \% mod \$a mod \$b modulous \%
- is \[not\] div by \$a is not div by 4 divisible by \$a % \$b == 0
- is \[not\] even \$a is not even \[not\] an even number (unary) \$a % 2 == 0
- is \[not\] even by \$a is not even by \$b grouping level \[not\] even (\$a / \$b) % 2 == 0
- is \[not\] odd \$a is not odd \[not\] an odd number (unary) \$a % 2 != 0
- is \[not\] odd by \$a is not odd by \$b \[not\] an odd grouping (\$a / \$b) % 2 != 0
-
-
-
- {while $foo > 0}
- {$foo--}
- {/while}
-
-
-
-The above example will count down the value of \$foo until 1 is reached.
-
-See also [`{foreach}`](#language.function.foreach),
-[`{for}`](#language.function.for) and
-[`{section}`](#language.function.section).
diff --git a/vendor/smarty/smarty/docs/designers/language-combining-modifiers.md b/vendor/smarty/smarty/docs/designers/language-combining-modifiers.md
deleted file mode 100644
index edf1a83ea..000000000
--- a/vendor/smarty/smarty/docs/designers/language-combining-modifiers.md
+++ /dev/null
@@ -1,35 +0,0 @@
-Combining Modifiers {#language.combining.modifiers}
-===================
-
-You can apply any number of modifiers to a variable. They will be
-applied in the order they are combined, from left to right. They must be
-separated with a `|` (pipe) character.
-
-
- <?php
-
- $smarty->assign('articleTitle', 'Smokers are Productive, but Death Cuts Efficiency.');
-
- ?>
-
-where template is:
-
-
- {$articleTitle}
- {$articleTitle|upper|spacify}
- {$articleTitle|lower|spacify|truncate}
- {$articleTitle|lower|truncate:30|spacify}
- {$articleTitle|lower|spacify|truncate:30:". . ."}
-
-
-
-The above example will output:
-
-
- Smokers are Productive, but Death Cuts Efficiency.
- S M O K E R S A R ....snip.... H C U T S E F F I C I E N C Y .
- s m o k e r s a r ....snip.... b u t d e a t h c u t s...
- s m o k e r s a r e p r o d u c t i v e , b u t . . .
- s m o k e r s a r e p. . .
-
-
diff --git a/vendor/smarty/smarty/docs/designers/language-custom-functions.md b/vendor/smarty/smarty/docs/designers/language-custom-functions.md
deleted file mode 100644
index 20ad54e99..000000000
--- a/vendor/smarty/smarty/docs/designers/language-custom-functions.md
+++ /dev/null
@@ -1,21 +0,0 @@
-Custom Functions {#language.custom.functions}
-================
-
-Smarty comes with several custom plugin functions that you can use in
-the templates.
-
-## Table of contents
-- [{counter}](./language-custom-functions/language-function-counter.md)
-- [{cycle}](./language-custom-functions/language-function-cycle.md)
-- [{eval}](./language-custom-functions/language-function-eval.md)
-- [{fetch}](./language-custom-functions/language-function-fetch.md)
-- [{html_checkboxes}](./language-custom-functions/language-function-html-checkboxes.md)
-- [{html_image}](./language-custom-functions/language-function-html-image.md)
-- [{html_options}](./language-custom-functions/language-function-html-options.md)
-- [{html_radios}](./language-custom-functions/language-function-html-radios.md)
-- [{html_select_date}](./language-custom-functions/language-function-html-select-date.md)
-- [{html_select_time}](./language-custom-functions/language-function-html-select-time.md)
-- [{html_table}](./language-custom-functions/language-function-html-table.md)
-- [{mailto}](./language-custom-functions/language-function-mailto.md)
-- [{math}](./language-custom-functions/language-function-math.md)
-- [{textformat}](./language-custom-functions/language-function-textformat.md)
diff --git a/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-counter.md b/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-counter.md
deleted file mode 100644
index cc1ac08f2..000000000
--- a/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-counter.md
+++ /dev/null
@@ -1,41 +0,0 @@
-{counter} {#language.function.counter}
-=========
-
-`{counter}` is used to print out a count. `{counter}` will remember the
-count on each iteration. You can adjust the number, the interval and the
-direction of the count, as well as determine whether or not to print the
-value. You can run multiple counters concurrently by supplying a unique
-name for each one. If you do not supply a name, the name "default" will
-be used.
-
-If you supply the `assign` attribute, the output of the `{counter}`
-function will be assigned to this template variable instead of being
-output to the template.
-
- Attribute Name Type Required Default Description
- ---------------- --------- ---------- ----------- ------------------------------------------------------
- name string No *default* The name of the counter
- start number No *1* The initial number to start counting from
- skip number No *1* The interval to count by
- direction string No *up* The direction to count (up/down)
- print boolean No *TRUE* Whether or not to print the value
- assign string No *n/a* the template variable the output will be assigned to
-
-
- {* initialize the count *}
- {counter start=0 skip=2}<br />
- {counter}<br />
- {counter}<br />
- {counter}<br />
-
-
-
-this will output:
-
-
- 0<br />
- 2<br />
- 4<br />
- 6<br />
-
-
diff --git a/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-cycle.md b/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-cycle.md
deleted file mode 100644
index 5986e6322..000000000
--- a/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-cycle.md
+++ /dev/null
@@ -1,57 +0,0 @@
-{cycle} {#language.function.cycle}
-=======
-
-`{cycle}` is used to alternate a set of values. This makes it easy to
-for example, alternate between two or more colors in a table, or cycle
-through an array of values.
-
- Attribute Name Type Required Default Description
- ---------------- --------- ---------- ----------- -------------------------------------------------------------------------------------------------------------
- name string No *default* The name of the cycle
- values mixed Yes *N/A* The values to cycle through, either a comma delimited list (see delimiter attribute), or an array of values
- print boolean No *TRUE* Whether to print the value or not
- advance boolean No *TRUE* Whether or not to advance to the next value
- delimiter string No *,* The delimiter to use in the values attribute
- assign string No *n/a* The template variable the output will be assigned to
- reset boolean No *FALSE* The cycle will be set to the first value and not advanced
-
-- You can `{cycle}` through more than one set of values in a template
- by supplying a `name` attribute. Give each `{cycle}` an unique
- `name`.
-
-- You can force the current value not to print with the `print`
- attribute set to FALSE. This would be useful for silently skipping a
- value.
-
-- The `advance` attribute is used to repeat a value. When set to
- FALSE, the next call to `{cycle}` will print the same value.
-
-- If you supply the `assign` attribute, the output of the `{cycle}`
- function will be assigned to a template variable instead of being
- output to the template.
-
-<!-- -->
-
-
- {section name=rows loop=$data}
- <tr class="{cycle values="odd,even"}">
- <td>{$data[rows]}</td>
- </tr>
- {/section}
-
-
-
-The above template would output:
-
-
- <tr class="odd">
- <td>1</td>
- </tr>
- <tr class="even">
- <td>2</td>
- </tr>
- <tr class="odd">
- <td>3</td>
- </tr>
-
-
diff --git a/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-debug.md b/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-debug.md
deleted file mode 100644
index 79b3477c1..000000000
--- a/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-debug.md
+++ /dev/null
@@ -1,15 +0,0 @@
-{debug} {#language.function.debug}
-=======
-
-`{debug}` dumps the debug console to the page. This works regardless of
-the [debug](#chapter.debugging.console) settings in the php script.
-Since this gets executed at runtime, this is only able to show the
-[assigned](#api.assign) variables; not the templates that are in use.
-However, you can see all the currently available variables within the
-scope of a template.
-
- Attribute Name Type Required Default Description
- ---------------- -------- ---------- -------------- ---------------------------------
- output string No *javascript* output type, html or javascript
-
-See also the [debugging console page](#chapter.debugging.console).
diff --git a/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-eval.md b/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-eval.md
deleted file mode 100644
index e11f57e3e..000000000
--- a/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-eval.md
+++ /dev/null
@@ -1,84 +0,0 @@
-{eval} {#language.function.eval}
-======
-
-`{eval}` is used to evaluate a variable as a template. This can be used
-for things like embedding template tags/variables into variables or
-tags/variables into config file variables.
-
-If you supply the `assign` attribute, the output of the `{eval}`
-function will be assigned to this template variable instead of being
-output to the template.
-
- Attribute Name Type Required Default Description
- ---------------- -------- ---------- --------- ------------------------------------------------------
- var mixed Yes *n/a* Variable (or string) to evaluate
- assign string No *n/a* The template variable the output will be assigned to
-
-> **Note**
->
-> - Evaluated variables are treated the same as templates. They follow
-> the same escapement and security features just as if they were
-> templates.
->
-> - Evaluated variables are compiled on every invocation, the compiled
-> versions are not saved! However if you have [caching](#caching)
-> enabled, the output will be cached with the rest of the template.
->
-> - If the content to evaluate doesn\'t change often, or is used
-> repeatedly, consider using
-> `{include file="string:{$template_code}"}` instead. This may cache
-> the compiled state and thus doesn\'t have to run the (comparably
-> slow) compiler on every invocation.
->
-The contents of the config file, `setup.conf`.
-
-
- emphstart = <strong>
- emphend = </strong>
- title = Welcome to {$company}'s home page!
- ErrorCity = You must supply a {#emphstart#}city{#emphend#}.
- ErrorState = You must supply a {#emphstart#}state{#emphend#}.
-
-
-
-Where the template is:
-
-
- {config_load file='setup.conf'}
-
- {eval var=$foo}
- {eval var=#title#}
- {eval var=#ErrorCity#}
- {eval var=#ErrorState# assign='state_error'}
- {$state_error}
-
-
-
-The above template will output:
-
-
- This is the contents of foo.
- Welcome to Foobar Pub & Grill's home page!
- You must supply a <strong>city</strong>.
- You must supply a <strong>state</strong>.
-
-
-
-This outputs the server name (in uppercase) and IP. The assigned
-variable `$str` could be from a database query.
-
-
- <?php
- $str = 'The server name is {$smarty.server.SERVER_NAME|upper} '
- .'at {$smarty.server.SERVER_ADDR}';
- $smarty->assign('foo',$str);
- ?>
-
-
-
-Where the template is:
-
-
- {eval var=$foo}
-
-
diff --git a/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-fetch.md b/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-fetch.md
deleted file mode 100644
index 2277f5056..000000000
--- a/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-fetch.md
+++ /dev/null
@@ -1,59 +0,0 @@
-{fetch} {#language.function.fetch}
-=======
-
-`{fetch}` is used to retrieve files from the local file system, http, or
-ftp and display the contents.
-
-- If the file name begins with `http://`, the web site page will be
- fetched and displayed.
-
- > **Note**
- >
- > This will not support http redirects, be sure to include a
- > trailing slash on your web page fetches where necessary.
-
-- If the file name begins with `ftp://`, the file will be downloaded
- from the ftp server and displayed.
-
-- For local files, either a full system file path must be given, or a
- path relative to the executed php script.
-
- > **Note**
- >
- > If security is enabled and you are fetching a file from the local
- > file system, `{fetch}` will only allow files from within the
- > `$secure_dir` path of the securty policy. See the
- > [Security](#advanced.features.security) section for details.
-
-- If the `assign` attribute is set, the output of the `{fetch}`
- function will be assigned to this template variable instead of being
- output to the template.
-
- Attribute Name Type Required Default Description
- ---------------- -------- ---------- --------- ------------------------------------------------------
- file string Yes *n/a* The file, http or ftp site to fetch
- assign string No *n/a* The template variable the output will be assigned to
-
-
- {* include some javascript in your template *}
- {fetch file='/export/httpd/www.example.com/docs/navbar.js'}
-
- {* embed some weather text in your template from another web site *}
- {fetch file='http://www.myweather.com/68502/'}
-
- {* fetch a news headline file via ftp *}
- {fetch file='ftp://user:password@ftp.example.com/path/to/currentheadlines.txt'}
- {* as above but with variables *}
- {fetch file="ftp://`$user`:`$password`@`$server`/`$path`"}
-
- {* assign the fetched contents to a template variable *}
- {fetch file='http://www.myweather.com/68502/' assign='weather'}
- {if $weather ne ''}
- <div id="weather">{$weather}</div>
- {/if}
-
-
-
-See also [`{capture}`](#language.function.capture),
-[`{eval}`](#language.function.eval),
-[`{assign}`](#language.function.assign) and [`fetch()`](#api.fetch).
diff --git a/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-checkboxes.md b/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-checkboxes.md
deleted file mode 100644
index 23af713b7..000000000
--- a/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-checkboxes.md
+++ /dev/null
@@ -1,113 +0,0 @@
-{html\_checkboxes} {#language.function.html.checkboxes}
-==================
-
-`{html_checkboxes}` is a [custom function](#language.custom.functions)
-that creates an html checkbox group with provided data. It takes care of
-which item(s) are selected by default as well.
-
- Attribute Name Type Required Default Description
- ---------------- ------------------- ------------------------------------- ------------ -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- name string No *checkbox* Name of checkbox list
- values array Yes, unless using options attribute *n/a* An array of values for checkbox buttons
- output array Yes, unless using options attribute *n/a* An array of output for checkbox buttons
- selected string/array No *empty* The selected checkbox element(s)
- options associative array Yes, unless using values and output *n/a* An associative array of values and output
- separator string No *empty* String of text to separate each checkbox item
- assign string No *empty* Assign checkbox tags to an array instead of output
- labels boolean No *TRUE* Add \<label\>-tags to the output
- label\_ids boolean No *FALSE* Add id-attributes to \<label\> and \<input\> to the output
- escape boolean No *TRUE* Escape the output / content (values are always escaped)
- strict boolean No *FALSE* Will make the \"extra\" attributes *disabled* and *readonly* only be set, if they were supplied with either boolean *TRUE* or string *\"disabled\"* and *\"readonly\"* respectively
-
-- Required attributes are `values` and `output`, unless you use
- `options` instead.
-
-- All output is XHTML compliant.
-
-- All parameters that are not in the list above are printed as
- name/value-pairs inside each of the created \<input\>-tags.
-
-<!-- -->
-
-
- <?php
-
- $smarty->assign('cust_ids', array(1000,1001,1002,1003));
- $smarty->assign('cust_names', array(
- 'Joe Schmoe',
- 'Jack Smith',
- 'Jane Johnson',
- 'Charlie Brown')
- );
- $smarty->assign('customer_id', 1001);
-
- ?>
-
-
-
-where template is
-
-
- {html_checkboxes name='id' values=$cust_ids output=$cust_names
- selected=$customer_id separator='<br />'}
-
-
-
-or where PHP code is:
-
-
- <?php
-
- $smarty->assign('cust_checkboxes', array(
- 1000 => 'Joe Schmoe',
- 1001 => 'Jack Smith',
- 1002 => 'Jane Johnson',
- 1003 => 'Charlie Brown')
- );
- $smarty->assign('customer_id', 1001);
-
- ?>
-
-
-
-and the template is
-
-
- {html_checkboxes name='id' options=$cust_checkboxes
- selected=$customer_id separator='<br />'}
-
-
-
-both examples will output:
-
-
- <label><input type="checkbox" name="id[]" value="1000" />Joe Schmoe</label><br />
- <label><input type="checkbox" name="id[]" value="1001" checked="checked" />Jack Smith</label>
- <br />
- <label><input type="checkbox" name="id[]" value="1002" />Jane Johnson</label><br />
- <label><input type="checkbox" name="id[]" value="1003" />Charlie Brown</label><br />
-
-
-
-
- <?php
-
- $sql = 'select type_id, types from contact_types order by type';
- $smarty->assign('contact_types',$db->getAssoc($sql));
-
- $sql = 'select contact_id, contact_type_id, contact '
- .'from contacts where contact_id=12';
- $smarty->assign('contact',$db->getRow($sql));
-
- ?>
-
-
-
-The results of the database queries above would be output with.
-
-
- {html_checkboxes name='contact_type_id' options=$contact_types
- selected=$contact.contact_type_id separator='<br />'}
-
-See also [`{html_radios}`](#language.function.html.radios) and
-[`{html_options}`](#language.function.html.options)
diff --git a/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-image.md b/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-image.md
deleted file mode 100644
index 76740a1fe..000000000
--- a/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-image.md
+++ /dev/null
@@ -1,56 +0,0 @@
-{html\_image} {#language.function.html.image}
-=============
-
-`{html_image}` is a [custom function](#language.custom.functions) that
-generates an HTML `<img>` tag. The `height` and `width` are
-automatically calculated from the image file if they are not supplied.
-
- Attribute Name Type Required Default Description
- ---------------- -------- ---------- ----------------------- ---------------------------------------
- file string Yes *n/a* name/path to image
- height string No *actual image height* Height to display image
- width string No *actual image width* Width to display image
- basedir string no *web server doc root* Directory to base relative paths from
- alt string no *""* Alternative description of the image
- href string no *n/a* href value to link the image to
- path\_prefix string no *n/a* Prefix for output path
-
-- `basedir` is the base directory that relative image paths are based
- from. If not given, the web server\'s document root
- `$_ENV['DOCUMENT_ROOT']` is used as the base. If security is
- enabled, then the image must be located in the `$secure_dir` path of
- the securty policy. See the [Security](#advanced.features.security)
- section for details.
-
-- `href` is the href value to link the image to. If link is supplied,
- an `<a href="LINKVALUE"><a>` tag is placed around the image tag.
-
-- `path_prefix` is an optional prefix string you can give the output
- path. This is useful if you want to supply a different server name
- for the image.
-
-- All parameters that are not in the list above are printed as
- name/value-pairs inside the created `<img>` tag.
-
-> **Note**
->
-> `{html_image}` requires a hit to the disk to read the image and
-> calculate the height and width. If you don\'t use template
-> [caching](#caching), it is generally better to avoid `{html_image}`
-> and leave image tags static for optimal performance.
-
-
- {html_image file='pumpkin.jpg'}
- {html_image file='/path/from/docroot/pumpkin.jpg'}
- {html_image file='../path/relative/to/currdir/pumpkin.jpg'}
-
-
-
-Example output of the above template would be:
-
-
- <img src="pumpkin.jpg" alt="" width="44" height="68" />
- <img src="/path/from/docroot/pumpkin.jpg" alt="" width="44" height="68" />
- <img src="../path/relative/to/currdir/pumpkin.jpg" alt="" width="44" height="68" />
-
-
diff --git a/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-options.md b/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-options.md
deleted file mode 100644
index b7c04e940..000000000
--- a/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-options.md
+++ /dev/null
@@ -1,155 +0,0 @@
-{html\_options} {#language.function.html.options}
-===============
-
-`{html_options}` is a [custom function](#language.custom.functions) that
-creates the html `<select><option>` group with the assigned data. It
-takes care of which item(s) are selected by default as well.
-
- Attribute Name Type Required Default Description
- ---------------- ------------------- ------------------------------------- --------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- values array Yes, unless using options attribute *n/a* An array of values for dropdown
- output array Yes, unless using options attribute *n/a* An array of output for dropdown
- selected string/array No *empty* The selected option element(s)
- options associative array Yes, unless using values and output *n/a* An associative array of values and output
- name string No *empty* Name of select group
- strict boolean No *FALSE* Will make the \"extra\" attributes *disabled* and *readonly* only be set, if they were supplied with either boolean *TRUE* or string *\"disabled\"* and *\"readonly\"* respectively
-
-- Required attributes are `values` and `output`, unless you use the
- combined `options` instead.
-
-- If the optional `name` attribute is given, the `<select></select>`
- tags are created, otherwise ONLY the `<option>` list is generated.
-
-- If a given value is an array, it will treat it as an html
- `<optgroup>`, and display the groups. Recursion is supported with
- `<optgroup>`.
-
-- All parameters that are not in the list above are printed as
- name/value-pairs inside the `<select>` tag. They are ignored if the
- optional `name` is not given.
-
-- All output is XHTML compliant.
-
-<!-- -->
-
-
- <?php
- $smarty->assign('myOptions', array(
- 1800 => 'Joe Schmoe',
- 9904 => 'Jack Smith',
- 2003 => 'Charlie Brown')
- );
- $smarty->assign('mySelect', 9904);
- ?>
-
-
-
-The following template will generate a drop-down list. Note the presence
-of the `name` attribute which creates the `<select>` tags.
-
-
- {html_options name=foo options=$myOptions selected=$mySelect}
-
-
-
-Output of the above example would be:
-
-
- <select name="foo">
- <option value="1800">Joe Schmoe</option>
- <option value="9904" selected="selected">Jack Smith</option>
- <option value="2003">Charlie Brown</option>
- </select>
-
-
- <?php
- $smarty->assign('cust_ids', array(56,92,13));
- $smarty->assign('cust_names', array(
- 'Joe Schmoe',
- 'Jane Johnson',
- 'Charlie Brown'));
- $smarty->assign('customer_id', 92);
- ?>
-
-
-
-The above arrays would be output with the following template (note the
-use of the php [`count()`](&url.php-manual;function.count) function as a
-modifier to set the select size).
-
-
- <select name="customer_id" size="{$cust_names|@count}">
- {html_options values=$cust_ids output=$cust_names selected=$customer_id}
- </select>
-
-
-
-The above example would output:
-
-
- <select name="customer_id" size="3">
- <option value="56">Joe Schmoe</option>
- <option value="92" selected="selected">Jane Johnson</option>
- <option value="13">Charlie Brown</option>
- </select>
-
-
-
-
-
- <?php
-
- $sql = 'select type_id, types from contact_types order by type';
- $smarty->assign('contact_types',$db->getAssoc($sql));
-
- $sql = 'select contact_id, name, email, contact_type_id
- from contacts where contact_id='.$contact_id;
- $smarty->assign('contact',$db->getRow($sql));
-
- ?>
-
-Where a template could be as follows. Note the use of the
-[`truncate`](#language.modifier.truncate) modifier.
-
-
- <select name="type_id">
- <option value='null'>-- none --</option>
- {html_options options=$contact_types|truncate:20 selected=$contact.type_id}
- </select>
-
-
-
-
- <?php
- $arr['Sport'] = array(6 => 'Golf', 9 => 'Cricket',7 => 'Swim');
- $arr['Rest'] = array(3 => 'Sauna',1 => 'Massage');
- $smarty->assign('lookups', $arr);
- $smarty->assign('fav', 7);
- ?>
-
-
-
-The script above and the following template
-
-
- {html_options name=foo options=$lookups selected=$fav}
-
-
-
-would output:
-
-
- <select name="foo">
- <optgroup label="Sport">
- <option value="6">Golf</option>
- <option value="9">Cricket</option>
- <option value="7" selected="selected">Swim</option>
- </optgroup>
- <optgroup label="Rest">
- <option value="3">Sauna</option>
- <option value="1">Massage</option>
- </optgroup>
- </select>
-
-See also [`{html_checkboxes}`](#language.function.html.checkboxes) and
-[`{html_radios}`](#language.function.html.radios)
diff --git a/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-radios.md b/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-radios.md
deleted file mode 100644
index 992adaeaf..000000000
--- a/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-radios.md
+++ /dev/null
@@ -1,112 +0,0 @@
-{html\_radios} {#language.function.html.radios}
-==============
-
-`{html_radios}` is a [custom function](#language.custom.functions) that
-creates a HTML radio button group. It also takes care of which item is
-selected by default as well.
-
- Attribute Name Type Required Default Description
- ---------------- ------------------- ------------------------------------- --------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- name string No *radio* Name of radio list
- values array Yes, unless using options attribute *n/a* An array of values for radio buttons
- output array Yes, unless using options attribute *n/a* An array of output for radio buttons
- selected string No *empty* The selected radio element
- options associative array Yes, unless using values and output *n/a* An associative array of values and output
- separator string No *empty* String of text to separate each radio item
- assign string No *empty* Assign radio tags to an array instead of output
- labels boolean No *TRUE* Add \<label\>-tags to the output
- label\_ids boolean No *FALSE* Add id-attributes to \<label\> and \<input\> to the output
- escape boolean No *TRUE* Escape the output / content (values are always escaped)
- strict boolean No *FALSE* Will make the \"extra\" attributes *disabled* and *readonly* only be set, if they were supplied with either boolean *TRUE* or string *\"disabled\"* and *\"readonly\"* respectively
-
-- Required attributes are `values` and `output`, unless you use
- `options` instead.
-
-- All output is XHTML compliant.
-
-- All parameters that are not in the list above are output as
- name/value-pairs inside each of the created `<input>`-tags.
-
-<!-- -->
-
-
- <?php
-
- $smarty->assign('cust_ids', array(1000,1001,1002,1003));
- $smarty->assign('cust_names', array(
- 'Joe Schmoe',
- 'Jack Smith',
- 'Jane Johnson',
- 'Charlie Brown')
- );
- $smarty->assign('customer_id', 1001);
-
- ?>
-
-
-
-Where template is:
-
-
- {html_radios name='id' values=$cust_ids output=$cust_names
- selected=$customer_id separator='<br />'}
-
-
-
-
- <?php
-
- $smarty->assign('cust_radios', array(
- 1000 => 'Joe Schmoe',
- 1001 => 'Jack Smith',
- 1002 => 'Jane Johnson',
- 1003 => 'Charlie Brown'));
- $smarty->assign('customer_id', 1001);
-
- ?>
-
-
-
-Where template is:
-
-
- {html_radios name='id' options=$cust_radios
- selected=$customer_id separator='<br />'}
-
-
-
-Both examples will output:
-
-
- <label><input type="radio" name="id" value="1000" />Joe Schmoe</label><br />
- <label><input type="radio" name="id" value="1001" checked="checked" />Jack Smith</label><br />
- <label><input type="radio" name="id" value="1002" />Jane Johnson</label><br />
- <label><input type="radio" name="id" value="1003" />Charlie Brown</label><br />
-
-
-
-
- <?php
-
- $sql = 'select type_id, types from contact_types order by type';
- $smarty->assign('contact_types',$db->getAssoc($sql));
-
- $sql = 'select contact_id, name, email, contact_type_id '
- .'from contacts where contact_id='.$contact_id;
- $smarty->assign('contact',$db->getRow($sql));
-
- ?>
-
-
-
-The variable assigned from the database above would be output with the
-template:
-
-
- {html_radios name='contact_type_id' options=$contact_types
- selected=$contact.contact_type_id separator='<br />'}
-
-
-
-See also [`{html_checkboxes}`](#language.function.html.checkboxes) and
-[`{html_options}`](#language.function.html.options)
diff --git a/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-select-date.md b/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-select-date.md
deleted file mode 100644
index b46eb0419..000000000
--- a/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-select-date.md
+++ /dev/null
@@ -1,119 +0,0 @@
-{html\_select\_date} {#language.function.html.select.date}
-====================
-
-`{html_select_date}` is a [custom function](#language.custom.functions)
-that creates date dropdowns. It can display any or all of year, month,
-and day. All parameters that are not in the list below are printed as
-name/value-pairs inside the `<select>` tags of day, month and year.
-
- Attribute Name Type Required Default Description
- ---------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------- ---------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- prefix string No Date\_ What to prefix the var name with
- time [timestamp](&url.php-manual;function.time), [DateTime](&url.php-manual;class.DateTime), mysql timestamp or any string parsable by [`strtotime()`](&url.php-manual;strtotime), arrays as produced by this function if field\_array is set. No current [timestamp](&url.php-manual;function.time) What date/time to pre-select. If an array is given, the attributes field\_array and prefix are used to identify the array elements to extract year, month and day from. Omitting this parameter or supplying a falsy value will select the current date. To prevent date selection, pass in NULL
- start\_year string No current year The first year in the dropdown, either year number, or relative to current year (+/- N)
- end\_year string No same as start\_year The last year in the dropdown, either year number, or relative to current year (+/- N)
- display\_days boolean No TRUE Whether to display days or not
- display\_months boolean No TRUE Whether to display months or not
- display\_years boolean No TRUE Whether to display years or not
- month\_names array No null List of strings to display for months. array(1 =\> \'Jan\', ..., 12 =\> \'Dec\')
- month\_format string No \%B What format the month should be in (strftime)
- day\_format string No \%02d What format the day output should be in (sprintf)
- day\_value\_format string No \%d What format the day value should be in (sprintf)
- year\_as\_text boolean No FALSE Whether or not to display the year as text
- reverse\_years boolean No FALSE Display years in reverse order
- field\_array string No null If a name is given, the select boxes will be drawn such that the results will be returned to PHP in the form of name\[Day\], name\[Year\], name\[Month\].
- day\_size string No null Adds size attribute to select tag if given
- month\_size string No null Adds size attribute to select tag if given
- year\_size string No null Adds size attribute to select tag if given
- all\_extra string No null Adds extra attributes to all select/input tags if given
- day\_extra string No null Adds extra attributes to select/input tags if given
- month\_extra string No null Adds extra attributes to select/input tags if given
- year\_extra string No null Adds extra attributes to select/input tags if given
- all\_id string No null Adds id-attribute to all select/input tags if given
- day\_id string No null Adds id-attribute to select/input tags if given
- month\_id string No null Adds id-attribute to select/input tags if given
- year\_id string No null Adds id-attribute to select/input tags if given
- field\_order string No MDY The order in which to display the fields
- field\_separator string No \\n String printed between different fields
- month\_value\_format string No \%m strftime() format of the month values, default is %m for month numbers.
- all\_empty string No null If supplied then the first element of any select-box has this value as it\'s label and "" as it\'s value. This is useful to make the select-boxes read "Please select" for example.
- year\_empty string No null If supplied then the first element of the year\'s select-box has this value as it\'s label and "" as it\'s value. This is useful to make the select-box read "Please select a year" for example. Note that you can use values like "-MM-DD" as time-attribute to indicate an unselected year.
- month\_empty string No null If supplied then the first element of the month\'s select-box has this value as it\'s label and "" as it\'s value. . Note that you can use values like "YYYY\--DD" as time-attribute to indicate an unselected month.
- day\_empty string No null If supplied then the first element of the day\'s select-box has this value as it\'s label and "" as it\'s value. Note that you can use values like "YYYY-MM-" as time-attribute to indicate an unselected day.
-
-> **Note**
->
-> There is an useful php function on the [date tips page](#tips.dates)
-> for converting `{html_select_date}` form values to a timestamp.
-
-Template code
-
-
- {html_select_date}
-
-
-
-This will output:
-
-
- <select name="Date_Month">
- <option value="1">January</option>
- <option value="2">February</option>
- <option value="3">March</option>
- ..... snipped .....
- <option value="10">October</option>
- <option value="11">November</option>
- <option value="12" selected="selected">December</option>
- </select>
- <select name="Date_Day">
- <option value="1">01</option>
- <option value="2">02</option>
- <option value="3">03</option>
- ..... snipped .....
- <option value="11">11</option>
- <option value="12">12</option>
- <option value="13" selected="selected">13</option>
- <option value="14">14</option>
- <option value="15">15</option>
- ..... snipped .....
- <option value="29">29</option>
- <option value="30">30</option>
- <option value="31">31</option>
- </select>
- <select name="Date_Year">
- <option value="2006" selected="selected">2006</option>
- </select>
-
-
-
-
- {* start and end year can be relative to current year *}
- {html_select_date prefix='StartDate' time=$time start_year='-5'
- end_year='+1' display_days=false}
-
-
-
-With 2000 as the current year the output:
-
-
- <select name="StartDateMonth">
- <option value="1">January</option>
- <option value="2">February</option>
- .... snipped ....
- <option value="11">November</option>
- <option value="12" selected="selected">December</option>
- </select>
- <select name="StartDateYear">
- <option value="1995">1995</option>
- .... snipped ....
- <option value="1999">1999</option>
- <option value="2000" selected="selected">2000</option>
- <option value="2001">2001</option>
- </select>
-
-
-
-See also [`{html_select_time}`](#language.function.html.select.time),
-[`date_format`](#language.modifier.date.format),
-[`$smarty.now`](#language.variables.smarty.now) and the [date tips
-page](#tips.dates).
diff --git a/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-select-time.md b/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-select-time.md
deleted file mode 100644
index 6ccc59907..000000000
--- a/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-select-time.md
+++ /dev/null
@@ -1,98 +0,0 @@
-{html\_select\_time} {#language.function.html.select.time}
-====================
-
-`{html_select_time}` is a [custom function](#language.custom.functions)
-that creates time dropdowns for you. It can display any or all of hour,
-minute, second and meridian.
-
-The `time` attribute can have different formats. It can be a unique
-timestamp, a string of the format `YYYYMMDDHHMMSS` or a string that is
-parseable by PHP\'s [`strtotime()`](&url.php-manual;strtotime).
-
- Attribute Name Type Required Default Description
- ----------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------- ---------------------------------------------------- -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- prefix string No Time\_ What to prefix the var name with
- time [timestamp](&url.php-manual;function.time), [DateTime](&url.php-manual;class.DateTime), mysql timestamp or any string parsable by [`strtotime()`](&url.php-manual;strtotime), arrays as produced by this function if field\_array is set. No current [timestamp](&url.php-manual;function.time) What date/time to pre-select. If an array is given, the attributes field\_array and prefix are used to identify the array elements to extract hour, minute, second and meridian from.
- display\_hours boolean No TRUE Whether or not to display hours
- display\_minutes boolean No TRUE Whether or not to display minutes
- display\_seconds boolean No TRUE Whether or not to display seconds
- display\_meridian boolean No TRUE Whether or not to display meridian (am/pm)
- use\_24\_hours boolean No TRUE Whether or not to use 24 hour clock
- minute\_interval integer No 1 Number interval in minute dropdown
- second\_interval integer No 1 Number interval in second dropdown
- hour\_format string No \%02d What format the hour label should be in (sprintf)
- hour\_value\_format string No \%20d What format the hour value should be in (sprintf)
- minute\_format string No \%02d What format the minute label should be in (sprintf)
- minute\_value\_format string No \%20d What format the minute value should be in (sprintf)
- second\_format string No \%02d What format the second label should be in (sprintf)
- second\_value\_format string No \%20d What format the second value should be in (sprintf)
- field\_array string No n/a Outputs values to array of this name
- all\_extra string No null Adds extra attributes to select/input tags if given
- hour\_extra string No null Adds extra attributes to select/input tags if given
- minute\_extra string No null Adds extra attributes to select/input tags if given
- second\_extra string No null Adds extra attributes to select/input tags if given
- meridian\_extra string No null Adds extra attributes to select/input tags if given
- field\_separator string No \\n String printed between different fields
- option\_separator string No \\n String printed between different options of a field
- all\_id string No null Adds id-attribute to all select/input tags if given
- hour\_id string No null Adds id-attribute to select/input tags if given
- minute\_id string No null Adds id-attribute to select/input tags if given
- second\_id string No null Adds id-attribute to select/input tags if given
- meridian\_id string No null Adds id-attribute to select/input tags if given
- all\_empty string No null If supplied then the first element of any select-box has this value as it\'s label and "" as it\'s value. This is useful to make the select-boxes read "Please select" for example.
- hour\_empty string No null If supplied then the first element of the hour\'s select-box has this value as it\'s label and "" as it\'s value. This is useful to make the select-box read "Please select an hour" for example.
- minute\_empty string No null If supplied then the first element of the minute\'s select-box has this value as it\'s label and "" as it\'s value. This is useful to make the select-box read "Please select an minute" for example.
- second\_empty string No null If supplied then the first element of the second\'s select-box has this value as it\'s label and "" as it\'s value. This is useful to make the select-box read "Please select an second" for example.
- meridian\_empty string No null If supplied then the first element of the meridian\'s select-box has this value as it\'s label and "" as it\'s value. This is useful to make the select-box read "Please select an meridian" for example.
-
-
- {html_select_time use_24_hours=true}
-
-
-
-At 9:20 and 23 seconds in the morning the template above would output:
-
-
- <select name="Time_Hour">
- <option value="00">00</option>
- <option value="01">01</option>
- ... snipped ....
- <option value="08">08</option>
- <option value="09" selected>09</option>
- <option value="10">10</option>
- ... snipped ....
- <option value="22">22</option>
- <option value="23">23</option>
- </select>
- <select name="Time_Minute">
- <option value="00">00</option>
- <option value="01">01</option>
- ... snipped ....
- <option value="19">19</option>
- <option value="20" selected>20</option>
- <option value="21">21</option>
- ... snipped ....
- <option value="58">58</option>
- <option value="59">59</option>
- </select>
- <select name="Time_Second">
- <option value="00">00</option>
- <option value="01">01</option>
- ... snipped ....
- <option value="22">22</option>
- <option value="23" selected>23</option>
- <option value="24">24</option>
- ... snipped ....
- <option value="58">58</option>
- <option value="59">59</option>
- </select>
- <select name="Time_Meridian">
- <option value="am" selected>AM</option>
- <option value="pm">PM</option>
- </select>
-
-
-
-See also [`$smarty.now`](#language.variables.smarty.now),
-[`{html_select_date}`](#language.function.html.select.date) and the
-[date tips page](#tips.dates).
diff --git a/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-table.md b/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-table.md
deleted file mode 100644
index fed4ae4d7..000000000
--- a/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-table.md
+++ /dev/null
@@ -1,89 +0,0 @@
-{html\_table} {#language.function.html.table}
-=============
-
-`{html_table}` is a [custom function](#language.custom.functions) that
-dumps an array of data into an HTML `<table>`.
-
- Attribute Name Type Required Default Description
- ---------------- --------- ---------- ---------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- loop array Yes *n/a* Array of data to loop through
- cols mixed No *3* Number of columns in the table or a comma-separated list of column heading names or an array of column heading names.if the cols-attribute is empty, but rows are given, then the number of cols is computed by the number of rows and the number of elements to display to be just enough cols to display all elements. If both, rows and cols, are omitted cols defaults to 3. if given as a list or array, the number of columns is computed from the number of elements in the list or array.
- rows integer No *empty* Number of rows in the table. if the rows-attribute is empty, but cols are given, then the number of rows is computed by the number of cols and the number of elements to display to be just enough rows to display all elements.
- inner string No *cols* Direction of consecutive elements in the loop-array to be rendered. *cols* means elements are displayed col-by-col. *rows* means elements are displayed row-by-row.
- caption string No *empty* Text to be used for the `<caption>` element of the table
- table\_attr string No *border=\"1\"* Attributes for `<table>` tag
- th\_attr string No *empty* Attributes for `<th>` tag (arrays are cycled)
- tr\_attr string No *empty* attributes for `<tr>` tag (arrays are cycled)
- td\_attr string No *empty* Attributes for `<td>` tag (arrays are cycled)
- trailpad string No *&nbsp;* Value to pad the trailing cells on last row with (if any)
- hdir string No *right* Direction of each row to be rendered. possible values: *right* (left-to-right), and *left* (right-to-left)
- vdir string No *down* Direction of each column to be rendered. possible values: *down* (top-to-bottom), *up* (bottom-to-top)
-
-- The `cols` attribute determines how many columns will be in the
- table.
-
-- The `table_attr`, `tr_attr` and `td_attr` values determine the
- attributes given to the `<table>`, `<tr>` and `<td>` tags.
-
-- If `tr_attr` or `td_attr` are arrays, they will be cycled through.
-
-- `trailpad` is the value put into the trailing cells on the last
- table row if there are any present.
-
-<!-- -->
-
-
- <?php
- $smarty->assign( 'data', array(1,2,3,4,5,6,7,8,9) );
- $smarty->assign( 'tr', array('bgcolor="#eeeeee"','bgcolor="#dddddd"') );
- $smarty->display('index.tpl');
- ?>
-
-
-
-The variables assigned from php could be displayed as these three
-examples demonstrate. Each example shows the template followed by
-output.
-
-
- {**** Example One ****}
- {html_table loop=$data}
-
- <table border="1">
- <tbody>
- <tr><td>1</td><td>2</td><td>3</td></tr>
- <tr><td>4</td><td>5</td><td>6</td></tr>
- <tr><td>7</td><td>8</td><td>9</td></tr>
- </tbody>
- </table>
-
-
- {**** Example Two ****}
- {html_table loop=$data cols=4 table_attr='border="0"'}
-
- <table border="0">
- <tbody>
- <tr><td>1</td><td>2</td><td>3</td><td>4</td></tr>
- <tr><td>5</td><td>6</td><td>7</td><td>8</td></tr>
- <tr><td>9</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
- </tbody>
- </table>
-
-
- {**** Example Three ****}
- {html_table loop=$data cols="first,second,third,fourth" tr_attr=$tr}
-
- <table border="1">
- <thead>
- <tr>
- <th>first</th><th>second</th><th>third</th><th>fourth</th>
- </tr>
- </thead>
- <tbody>
- <tr bgcolor="#eeeeee"><td>1</td><td>2</td><td>3</td><td>4</td></tr>
- <tr bgcolor="#dddddd"><td>5</td><td>6</td><td>7</td><td>8</td></tr>
- <tr bgcolor="#eeeeee"><td>9</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
- </tbody>
- </table>
-
-
diff --git a/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-mailto.md b/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-mailto.md
deleted file mode 100644
index cc5bf6968..000000000
--- a/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-mailto.md
+++ /dev/null
@@ -1,56 +0,0 @@
-{mailto} {#language.function.mailto}
-========
-
-`{mailto}` automates the creation of a `mailto:` anchor links and
-optionally encodes them. Encoding emails makes it more difficult for web
-spiders to lift email addresses off of a site.
-
-> **Note**
->
-> Javascript is probably the most thorough form of encoding, although
-> you can use hex encoding too.
-
- Attribute Name Type Required Default Description
- ---------------- -------- ---------- --------- -----------------------------------------------------------------------------------------------
- address string Yes *n/a* The e-mail address
- text string No *n/a* The text to display, default is the e-mail address
- encode string No *none* How to encode the e-mail. Can be one of `none`, `hex`, `javascript` or `javascript_charcode`.
- cc string No *n/a* Email addresses to carbon copy, separate entries by a comma.
- bcc string No *n/a* Email addresses to blind carbon copy, separate entries by a comma
- subject string No *n/a* Email subject
- newsgroups string No *n/a* Newsgroups to post to, separate entries by a comma.
- followupto string No *n/a* Addresses to follow up to, separate entries by a comma.
- extra string No *n/a* Any extra information you want passed to the link, such as style sheet classes
-
-
- {mailto address="me@example.com"}
- <a href="mailto:me@example.com" >me@example.com</a>
-
- {mailto address="me@example.com" text="send me some mail"}
- <a href="mailto:me@example.com" >send me some mail</a>
-
- {mailto address="me@example.com" encode="javascript"}
- <script type="text/javascript" language="javascript">
- eval(unescape('%64%6f% ... snipped ...%61%3e%27%29%3b'))
- </script>
-
- {mailto address="me@example.com" encode="hex"}
- <a href="mailto:%6d%65.. snipped..3%6f%6d">&#x6d;&..snipped...#x6f;&#x6d;</a>
-
- {mailto address="me@example.com" subject="Hello to you!"}
- <a href="mailto:me@example.com?subject=Hello%20to%20you%21" >me@example.com</a>
-
- {mailto address="me@example.com" cc="you@example.com,they@example.com"}
- <a href="mailto:me@example.com?cc=you@example.com,they@example.com" >me@example.com</a>
-
- {mailto address="me@example.com" extra='class="email"'}
- <a href="mailto:me@example.com" class="email">me@example.com</a>
-
- {mailto address="me@example.com" encode="javascript_charcode"}
- <script type="text/javascript" language="javascript">
- {document.write(String.fromCharCode(60,97, ... snipped ....60,47,97,62))}
- </script>
-
-See also [`escape`](#language.modifier.escape),
-[`{textformat}`](#language.function.textformat) and [obfuscating email
-addresses](#tips.obfuscating.email).
diff --git a/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-math.md b/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-math.md
deleted file mode 100644
index 9adfd1c5a..000000000
--- a/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-math.md
+++ /dev/null
@@ -1,104 +0,0 @@
-{math} {#language.function.math}
-======
-
-`{math}` allows the template designer to do math equations in the
-template.
-
-- Any numeric template variables may be used in the equations, and the
- result is printed in place of the tag.
-
-- The variables used in the equation are passed as parameters, which
- can be template variables or static values.
-
-- +, -, /, \*, abs, ceil, cos, exp, floor, log, log10, max, min, pi,
- pow, rand, round, sin, sqrt, srans and tan are all valid operators.
- Check the PHP documentation for further information on these
- [math](&url.php-manual;eval) functions.
-
-- If you supply the `assign` attribute, the output of the `{math}`
- function will be assigned to this template variable instead of being
- output to the template.
-
-> **Note**
->
-> `{math}` is an expensive function in performance due to its use of the
-> php [`eval()`](&url.php-manual;eval) function. Doing the math in PHP
-> is much more efficient, so whenever possible do the math calculations
-> in the script and [`assign()`](#api.assign) the results to the
-> template. Definitely avoid repetitive `{math}` function calls, eg
-> within [`{section}`](#language.function.section) loops.
-
- Attribute Name Type Required Default Description
- ---------------- --------- ---------- --------- --------------------------------------------------
- equation string Yes *n/a* The equation to execute
- format string No *n/a* The format of the result (sprintf)
- var numeric Yes *n/a* Equation variable value
- assign string No *n/a* Template variable the output will be assigned to
- \[var \...\] numeric Yes *n/a* Equation variable value
-
-**Example a:**
-
-
- {* $height=4, $width=5 *}
-
- {math equation="x + y" x=$height y=$width}
-
-
-
-The above example will output:
-
-
- 9
-
-
-
-**Example b:**
-
-
- {* $row_height = 10, $row_width = 20, #col_div# = 2, assigned in template *}
-
- {math equation="height * width / division"
- height=$row_height
- width=$row_width
- division=#col_div#}
-
-
-
-The above example will output:
-
-
- 100
-
-
-
-**Example c:**
-
-
- {* you can use parenthesis *}
-
- {math equation="(( x + y ) / z )" x=2 y=10 z=2}
-
-
-
-The above example will output:
-
-
- 6
-
-
-
-**Example d:**
-
-
- {* you can supply a format parameter in sprintf format *}
-
- {math equation="x + y" x=4.4444 y=5.0000 format="%.2f"}
-
-
-
-The above example will output:
-
-
- 9.44
-
-
diff --git a/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-textformat.md b/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-textformat.md
deleted file mode 100644
index d0cd4cfc8..000000000
--- a/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-textformat.md
+++ /dev/null
@@ -1,190 +0,0 @@
-{textformat} {#language.function.textformat}
-============
-
-`{textformat}` is a [block function](#plugins.block.functions) used to
-format text. It basically cleans up spaces and special characters, and
-formats paragraphs by wrapping at a boundary and indenting lines.
-
-You can set the parameters explicitly, or use a preset style. Currently
-"email" is the only available style.
-
- Attribute Name Type Required Default Description
- ---------------- --------- ---------- ------------------ ----------------------------------------------------------------------------------------
- style string No *n/a* Preset style
- indent number No *0* The number of chars to indent every line
- indent\_first number No *0* The number of chars to indent the first line
- indent\_char string No *(single space)* The character (or string of chars) to indent with
- wrap number No *80* How many characters to wrap each line to
- wrap\_char string No *\\n* The character (or string of chars) to break each line with
- wrap\_cut boolean No *FALSE* If TRUE, wrap will break the line at the exact character instead of at a word boundary
- assign string No *n/a* The template variable the output will be assigned to
-
-
- {textformat wrap=40}
-
- This is foo.
- This is foo.
- This is foo.
- This is foo.
- This is foo.
- This is foo.
-
- This is bar.
-
- bar foo bar foo foo.
- bar foo bar foo foo.
- bar foo bar foo foo.
- bar foo bar foo foo.
- bar foo bar foo foo.
- bar foo bar foo foo.
- bar foo bar foo foo.
-
- {/textformat}
-
-
-
-
-The above example will output:
-
-
-
- This is foo. This is foo. This is foo.
- This is foo. This is foo. This is foo.
-
- This is bar.
-
- bar foo bar foo foo. bar foo bar foo
- foo. bar foo bar foo foo. bar foo bar
- foo foo. bar foo bar foo foo. bar foo
- bar foo foo. bar foo bar foo foo.
-
-
-
-
- {textformat wrap=40 indent=4}
-
- This is foo.
- This is foo.
- This is foo.
- This is foo.
- This is foo.
- This is foo.
-
- This is bar.
-
- bar foo bar foo foo.
- bar foo bar foo foo.
- bar foo bar foo foo.
- bar foo bar foo foo.
- bar foo bar foo foo.
- bar foo bar foo foo.
- bar foo bar foo foo.
-
- {/textformat}
-
-
-
-
-The above example will output:
-
-
-
- This is foo. This is foo. This is
- foo. This is foo. This is foo. This
- is foo.
-
- This is bar.
-
- bar foo bar foo foo. bar foo bar foo
- foo. bar foo bar foo foo. bar foo
- bar foo foo. bar foo bar foo foo.
- bar foo bar foo foo. bar foo bar
- foo foo.
-
-
-
-
- {textformat wrap=40 indent=4 indent_first=4}
-
- This is foo.
- This is foo.
- This is foo.
- This is foo.
- This is foo.
- This is foo.
-
- This is bar.
-
- bar foo bar foo foo.
- bar foo bar foo foo.
- bar foo bar foo foo.
- bar foo bar foo foo.
- bar foo bar foo foo.
- bar foo bar foo foo.
- bar foo bar foo foo.
-
- {/textformat}
-
-
-
-The above example will output:
-
-
-
- This is foo. This is foo. This
- is foo. This is foo. This is foo.
- This is foo.
-
- This is bar.
-
- bar foo bar foo foo. bar foo bar
- foo foo. bar foo bar foo foo. bar
- foo bar foo foo. bar foo bar foo
- foo. bar foo bar foo foo. bar foo
- bar foo foo.
-
-
-
-
- {textformat style="email"}
-
- This is foo.
- This is foo.
- This is foo.
- This is foo.
- This is foo.
- This is foo.
-
- This is bar.
-
- bar foo bar foo foo.
- bar foo bar foo foo.
- bar foo bar foo foo.
- bar foo bar foo foo.
- bar foo bar foo foo.
- bar foo bar foo foo.
- bar foo bar foo foo.
-
- {/textformat}
-
-
-
-
-The above example will output:
-
-
-
- This is foo. This is foo. This is foo. This is foo. This is foo. This is
- foo.
-
- This is bar.
-
- bar foo bar foo foo. bar foo bar foo foo. bar foo bar foo foo. bar foo
- bar foo foo. bar foo bar foo foo. bar foo bar foo foo. bar foo bar foo
- foo.
-
-
-
-
-See also [`{strip}`](#language.function.strip) and
-[`wordwrap`](#language.modifier.wordwrap).
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers.md b/vendor/smarty/smarty/docs/designers/language-modifiers.md
deleted file mode 100644
index 4cb69cd1e..000000000
--- a/vendor/smarty/smarty/docs/designers/language-modifiers.md
+++ /dev/null
@@ -1,123 +0,0 @@
-Variable Modifiers {#language.modifiers}
-==================
-
-## Table of contents
-- [capitalize](./language-modifiers/language-modifier-capitalize.md)
-- [cat](./language-modifiers/language-modifier-cat.md)
-- [count_characters](./language-modifiers/language-modifier-count-characters.md)
-- [count_paragraphs](./language-modifiers/language-modifier-count-paragraphs.md)
-- [count_sentences](./language-modifiers/language-modifier-count-sentences.md)
-- [count_words](./language-modifiers/language-modifier-count-words.md)
-- [date_format](./language-modifiers/language-modifier-date-format.md)
-- [default](./language-modifiers/language-modifier-default.md)
-- [escape](./language-modifiers/language-modifier-escape.md)
-- [from_charset](./language-modifiers/language-modifier-from-charset.md)
-- [indent](./language-modifiers/language-modifier-indent.md)
-- [lower](./language-modifiers/language-modifier-lower.md)
-- [nl2br](./language-modifiers/language-modifier-nl2br.md)
-- [regex_replace](./language-modifiers/language-modifier-regex-replace.md)
-- [replace](./language-modifiers/language-modifier-replace.md)
-- [spacify](./language-modifiers/language-modifier-spacify.md)
-- [string_format](./language-modifiers/language-modifier-string-format.md)
-- [strip](./language-modifiers/language-modifier-strip.md)
-- [strip_tags](./language-modifiers/language-modifier-strip-tags.md)
-- [to_charset](./language-modifiers/language-modifier-to-charset.md)
-- [truncate](./language-modifiers/language-modifier-truncate.md)
-- [unescape](./language-modifiers/language-modifier-unescape.md)
-- [upper](./language-modifiers/language-modifier-upper.md)
-- [wordwrap](./language-modifiers/language-modifier-wordwrap.md)
-
-Variable modifiers can be applied to
-[variables](./language-variables.md), [custom
-functions](./language-custom-functions.md) or strings. To apply a modifier,
-specify the value followed by a `|` (pipe) and the modifier name. A
-modifier may accept additional parameters that affect its behavior.
-These parameters follow the modifier name and are separated by a `:`
-(colon). Also, *all php-functions can be used as modifiers implicitly*
-(more below) and modifiers can be
-[combined](./language-combining-modifiers.md).
-
-
- {* apply modifier to a variable *}
- {$title|upper}
-
- {* modifier with parameters *}
- {$title|truncate:40:"..."}
-
- {* apply modifier to a function parameter *}
- {html_table loop=$myvar|upper}
-
- {* with parameters *}
- {html_table loop=$myvar|truncate:40:"..."}
-
- {* apply modifier to literal string *}
- {"foobar"|upper}
-
- {* using date_format to format the current date *}
- {$smarty.now|date_format:"%Y/%m/%d"}
-
- {* apply modifier to a custom function *}
- {mailto|upper address="smarty@example.com"}
-
- {* using php's str_repeat *}
- {"="|str_repeat:80}
-
- {* php's count *}
- {$myArray|@count}
-
- {* this will uppercase and truncate the whole array *}
- <select name="name_id">
- {html_options output=$my_array|upper|truncate:20}
- </select>
-
-
-
-- Modifiers can be applied to any type of variables, including arrays
- and objects.
-
- > **Note**
- >
- > The default behavior was changed with Smarty 3. In Smarty 2.x, you
- > had to use an \"`@`\" symbol to apply a modifier to an array, such
- > as `{$articleTitle|@count}`. With Smarty 3, the \"`@`\" is no
- > longer necessary, and is ignored.
- >
- > If you want a modifier to apply to each individual item of an
- > array, you will either need to loop the array in the template, or
- > provide for this functionality inside your modifier function.
-
- > **Note**
- >
- > Second, in Smarty 2.x, modifiers were applied to the result of
- > math expressions like `{8+2}`, meaning that
- > `{8+2|count_characters}` would give `2`, as 8+2=10 and 10 is two
- > characters long. With Smarty 3, modifiers are applied to the
- > variables or atomic expressions before executing the calculations,
- > so since 2 is one character long, `{8+2|count_characters}`
- > gives 9. To get the old result use parentheses like
- > `{(8+2)|count_characters}`.
-
-- Modifiers are autoloaded from the
- [`$plugins_dir`](../programmers/api-variables/variable-plugins-dir.md) or can be registered
- explicitly with the [`registerPlugin()`](../programmers/api-functions/api-register-plugin.md)
- function. The later is useful for sharing a function between php
- scripts and smarty templates.
-
-- All php-functions can be used as modifiers implicitly, as
- demonstrated in the example above. However, using php-functions as
- modifiers has two little pitfalls:
-
- - First - sometimes the order of the function-parameters is not
- the desirable one. Formatting `$foo` with
- `{"%2.f"|sprintf:$foo}` actually works, but asks for the more
- intuitive, like `{$foo|string_format:"%2.f"}` that is provided
- by the Smarty distribution.
-
- - Secondly - if security is enabled, all php-functions that are to
- be used as modifiers have to be declared trusted in the
- `$modifiers` property of the securty policy. See the
- [Security](../programmers/advanced-features/advanced-features-security.md) section for details.
-
-See also [`registerPlugin()`](../programmers/api-functions/api-register-plugin.md), [combining
-modifiers](./language-combining-modifiers.md). and [extending smarty with
-plugins](../programmers/plugins.md)
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-capitalize.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-capitalize.md
deleted file mode 100644
index 015bb3bc0..000000000
--- a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-capitalize.md
+++ /dev/null
@@ -1,41 +0,0 @@
-capitalize {#language.modifier.capitalize}
-==========
-
-This is used to capitalize the first letter of all words in a variable.
-This is similar to the PHP [`ucwords()`](&url.php-manual;ucwords)
-function.
-
- Parameter Position Type Required Default Description
- -------------------- --------- ---------- --------- -----------------------------------------------------------------------------------------------------------
- 1 boolean No FALSE This determines whether or not words with digits will be uppercased
- 2 boolean No FALSE This determines whether or not Capital letters within words should be lowercased, e.g. \"aAa\" to \"Aaa\"
-
-
- <?php
-
- $smarty->assign('articleTitle', 'next x-men film, x3, delayed.');
-
- ?>
-
-
-
-Where the template is:
-
-
- {$articleTitle}
- {$articleTitle|capitalize}
- {$articleTitle|capitalize:true}
-
-
-
-Will output:
-
-
- next x-men film, x3, delayed.
- Next X-Men Film, x3, Delayed.
- Next X-Men Film, X3, Delayed.
-
-
-
-See also [`lower`](#language.modifier.lower) and
-[`upper`](#language.modifier.upper)
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-cat.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-cat.md
deleted file mode 100644
index 1f43ae177..000000000
--- a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-cat.md
+++ /dev/null
@@ -1,31 +0,0 @@
-cat {#language.modifier.cat}
-===
-
-This value is concatenated to the given variable.
-
- Parameter Position Type Required Default Description
- -------------------- -------- ---------- --------- -----------------------------------------------
- 1 string No *empty* This value to catenate to the given variable.
-
-
- <?php
-
- $smarty->assign('articleTitle', "Psychics predict world didn't end");
-
- ?>
-
-
-
-Where template is:
-
-
- {$articleTitle|cat:' yesterday.'}
-
-
-
-Will output:
-
-
- Psychics predict world didn't end yesterday.
-
-
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count-characters.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count-characters.md
deleted file mode 100644
index 23bc00d51..000000000
--- a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count-characters.md
+++ /dev/null
@@ -1,39 +0,0 @@
-count\_characters {#language.modifier.count.characters}
-=================
-
-This is used to count the number of characters in a variable.
-
- Parameter Position Type Required Default Description
- -------------------- --------- ---------- --------- -------------------------------------------------------------------------------
- 1 boolean No FALSE This determines whether or not to include whitespace characters in the count.
-
-
- <?php
-
- $smarty->assign('articleTitle', 'Cold Wave Linked to Temperatures.');
-
- ?>
-
-
-
-Where template is:
-
-
- {$articleTitle}
- {$articleTitle|count_characters}
- {$articleTitle|count_characters:true}
-
-
-
-Will output:
-
-
- Cold Wave Linked to Temperatures.
- 29
- 33
-
-
-
-See also [`count_words`](#language.modifier.count.words),
-[`count_sentences`](#language.modifier.count.sentences) and
-[`count_paragraphs`](#language.modifier.count.paragraphs).
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count-paragraphs.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count-paragraphs.md
deleted file mode 100644
index 02c474e6b..000000000
--- a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count-paragraphs.md
+++ /dev/null
@@ -1,38 +0,0 @@
-count\_paragraphs {#language.modifier.count.paragraphs}
-=================
-
-This is used to count the number of paragraphs in a variable.
-
-
- <?php
-
- $smarty->assign('articleTitle',
- "War Dims Hope for Peace. Child's Death Ruins Couple's Holiday.\n\n
- Man is Fatally Slain. Death Causes Loneliness, Feeling of Isolation."
- );
-
- ?>
-
-
-
-Where template is:
-
-
- {$articleTitle}
- {$articleTitle|count_paragraphs}
-
-
-
-Will output:
-
-
- War Dims Hope for Peace. Child's Death Ruins Couple's Holiday.
-
- Man is Fatally Slain. Death Causes Loneliness, Feeling of Isolation.
- 2
-
-
-
-See also [`count_characters`](#language.modifier.count.characters),
-[`count_sentences`](#language.modifier.count.sentences) and
-[`count_words`](#language.modifier.count.words).
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count-sentences.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count-sentences.md
deleted file mode 100644
index 0a77ab82a..000000000
--- a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count-sentences.md
+++ /dev/null
@@ -1,37 +0,0 @@
-count\_sentences {#language.modifier.count.sentences}
-================
-
-This is used to count the number of sentences in a variable. A sentence
-being delimited by a dot, question- or exclamation-mark (.?!).
-
-
- <?php
-
- $smarty->assign('articleTitle',
- 'Two Soviet Ships Collide - One Dies.
- Enraged Cow Injures Farmer with Axe.'
- );
-
- ?>
-
-
-
-Where template is:
-
-
- {$articleTitle}
- {$articleTitle|count_sentences}
-
-
-
-Will output:
-
-
- Two Soviet Ships Collide - One Dies. Enraged Cow Injures Farmer with Axe.
- 2
-
-
-
-See also [`count_characters`](#language.modifier.count.characters),
-[`count_paragraphs`](#language.modifier.count.paragraphs) and
-[`count_words`](#language.modifier.count.words).
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count-words.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count-words.md
deleted file mode 100644
index d25fbd5b8..000000000
--- a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count-words.md
+++ /dev/null
@@ -1,33 +0,0 @@
-count\_words {#language.modifier.count.words}
-============
-
-This is used to count the number of words in a variable.
-
-
- <?php
-
- $smarty->assign('articleTitle', 'Dealers Will Hear Car Talk at Noon.');
-
- ?>
-
-
-
-Where template is:
-
-
- {$articleTitle}
- {$articleTitle|count_words}
-
-
-
-This will output:
-
-
- Dealers Will Hear Car Talk at Noon.
- 7
-
-
-
-See also [`count_characters`](#language.modifier.count.characters),
-[`count_paragraphs`](#language.modifier.count.paragraphs) and
-[`count_sentences`](#language.modifier.count.sentences).
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-date-format.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-date-format.md
deleted file mode 100644
index edd81937b..000000000
--- a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-date-format.md
+++ /dev/null
@@ -1,175 +0,0 @@
-date\_format {#language.modifier.date.format}
-============
-
-This formats a date and time into the given
-[`strftime()`](&url.php-manual;strftime) format. Dates can be passed to
-Smarty as unix [timestamps](&url.php-manual;function.time), [DateTime
-objects](&url.php-manual;class.DateTime), mysql timestamps or any string
-made up of month day year, parsable by php\'s
-[`strtotime()`](&url.php-manual;strtotime). Designers can then use
-`date_format` to have complete control of the formatting of the date. If
-the date passed to `date_format` is empty and a second parameter is
-passed, that will be used as the date to format.
-
- Parameter Position Type Required Default Description
- -------------------- -------- ---------- ------------ -------------------------------------------------
- 1 string No \%b %e, %Y This is the format for the outputted date.
- 2 string No n/a This is the default date if the input is empty.
-
-> **Note**
->
-> Since Smarty-2.6.10 numeric values passed to `date_format` are
-> *always* (except for mysql timestamps, see below) interpreted as a
-> unix timestamp.
->
-> Before Smarty-2.6.10 numeric strings that where also parsable by
-> `strtotime()` in php (like `YYYYMMDD`) where sometimes (depending on
-> the underlying implementation of `strtotime()`) interpreted as date
-> strings and NOT as timestamps.
->
-> The only exception are mysql timestamps: They are also numeric only
-> and 14 characters long (`YYYYMMDDHHMMSS`), mysql timestamps have
-> precedence over unix timestamps.
-
-> **Note**
->
-> `date_format` is essentially a wrapper to PHP\'s
-> [`strftime()`](&url.php-manual;strftime) function. You may have more
-> or less conversion specifiers available depending on your system\'s
-> [`strftime()`](&url.php-manual;strftime) function where PHP was
-> compiled. Check your system\'s manpage for a full list of valid
-> specifiers. However, a few of the specifiers are emulated on Windows.
-> These are: %D, %e, %h, %l, %n, %r, %R, %t, %T.
-
-
- <?php
-
- $config['date'] = '%I:%M %p';
- $config['time'] = '%H:%M:%S';
- $smarty->assign('config', $config);
- $smarty->assign('yesterday', strtotime('-1 day'));
-
- ?>
-
-
-
-This template uses [`$smarty.now`](#language.variables.smarty.now) to
-get the current time:
-
-
- {$smarty.now|date_format}
- {$smarty.now|date_format:"%D"}
- {$smarty.now|date_format:$config.date}
- {$yesterday|date_format}
- {$yesterday|date_format:"%A, %B %e, %Y"}
- {$yesterday|date_format:$config.time}
-
-
-
-This above will output:
-
-
- Jan 1, 2022
- 01/01/22
- 02:33 pm
- Dec 31, 2021
- Monday, December 1, 2021
- 14:33:00
-
-
-
-`date_format` conversion specifiers:
-
-- \%a - abbreviated weekday name according to the current locale
-
-- \%A - full weekday name according to the current locale
-
-- \%b - abbreviated month name according to the current locale
-
-- \%B - full month name according to the current locale
-
-- \%c - preferred date and time representation for the current locale
-
-- \%C - century number (the year divided by 100 and truncated to an
- integer, range 00 to 99)
-
-- \%d - day of the month as a decimal number (range 01 to 31)
-
-- \%D - same as %m/%d/%y
-
-- \%e - day of the month as a decimal number, a single digit is
- preceded by a space (range 1 to 31)
-
-- \%g - Week-based year within century \[00,99\]
-
-- \%G - Week-based year, including the century \[0000,9999\]
-
-- \%h - same as %b
-
-- \%H - hour as a decimal number using a 24-hour clock (range 00
- to 23)
-
-- \%I - hour as a decimal number using a 12-hour clock (range 01
- to 12)
-
-- \%j - day of the year as a decimal number (range 001 to 366)
-
-- \%k - Hour (24-hour clock) single digits are preceded by a blank.
- (range 0 to 23)
-
-- \%l - hour as a decimal number using a 12-hour clock, single digits
- preceded by a space (range 1 to 12)
-
-- \%m - month as a decimal number (range 01 to 12)
-
-- \%M - minute as a decimal number
-
-- \%n - newline character
-
-- \%p - either \`am\' or \`pm\' according to the given time value, or
- the corresponding strings for the current locale
-
-- \%r - time in a.m. and p.m. notation
-
-- \%R - time in 24 hour notation
-
-- \%S - second as a decimal number
-
-- \%t - tab character
-
-- \%T - current time, equal to %H:%M:%S
-
-- \%u - weekday as a decimal number \[1,7\], with 1 representing
- Monday
-
-- \%U - week number of the current year as a decimal number, starting
- with the first Sunday as the first day of the first week
-
-- \%V - The ISO 8601:1988 week number of the current year as a decimal
- number, range 01 to 53, where week 1 is the first week that has at
- least 4 days in the current year, and with Monday as the first day
- of the week.
-
-- \%w - day of the week as a decimal, Sunday being 0
-
-- \%W - week number of the current year as a decimal number, starting
- with the first Monday as the first day of the first week
-
-- \%x - preferred date representation for the current locale without
- the time
-
-- \%X - preferred time representation for the current locale without
- the date
-
-- \%y - year as a decimal number without a century (range 00 to 99)
-
-- \%Y - year as a decimal number including the century
-
-- \%Z - time zone or name or abbreviation
-
-- \%% - a literal \`%\' character
-
-See also [`$smarty.now`](#language.variables.smarty.now),
-[`strftime()`](&url.php-manual;strftime),
-[`{html_select_date}`](#language.function.html.select.date) and the
-[date tips](#tips.dates) page.
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-default.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-default.md
deleted file mode 100644
index ce08e96ef..000000000
--- a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-default.md
+++ /dev/null
@@ -1,41 +0,0 @@
-default {#language.modifier.default}
-=======
-
-This is used to set a default value for a variable. If the variable is
-unset or an empty string, the given default value is printed instead.
-Default takes the one argument.
-
- Parameter Position Type Required Default Description
- -------------------- -------- ---------- --------- ---------------------------------------------------------------
- 1 string No *empty* This is the default value to output if the variable is empty.
-
-
- <?php
-
- $smarty->assign('articleTitle', 'Dealers Will Hear Car Talk at Noon.');
- $smarty->assign('email', '');
-
- ?>
-
-
-
-Where template is:
-
-
- {$articleTitle|default:'no title'}
- {$myTitle|default:'no title'}
- {$email|default:'No email address available'}
-
-
-
-Will output:
-
-
- Dealers Will Hear Car Talk at Noon.
- no title
- No email address available
-
-
-
-See also the [default variable handling](#tips.default.var.handling) and
-the [blank variable handling](#tips.blank.var.handling) pages.
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-escape.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-escape.md
deleted file mode 100644
index 37c71dde9..000000000
--- a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-escape.md
+++ /dev/null
@@ -1,74 +0,0 @@
-escape {#language.modifier.escape}
-======
-
-`escape` is used to encode or escape a variable to `html`, `url`,
-`single quotes`, `hex`, `hexentity`, `javascript` and `mail`. By default
-its `html`.
-
- Parameter Position Type Required Possible Values Default Description
- -------------------- --------- ---------- ------------------------------------------------------------------------------------------------------------ --------- -------------------------------------------------------------------------------------
- 1 string No `html`, `htmlall`, `url`, `urlpathinfo`, `quotes`, `hex`, `hexentity`, `javascript`, `mail` `html` This is the escape format to use.
- 2 string No `ISO-8859-1`, `UTF-8`, and any character set supported by [`htmlentities()`](&url.php-manual;htmlentities) `UTF-8` The character set encoding passed to htmlentities() et. al.
- 3 boolean No FALSE TRUE Double encode entites from &amp; to &amp;amp; (applys to `html` and `htmlall` only)
-
-
- <?php
-
- $smarty->assign('articleTitle',
- "'Stiff Opposition Expected to Casketless Funeral Plan'"
- );
- $smarty->assign('EmailAddress','smarty@example.com');
-
- ?>
-
-
-
-These are example `escape` template lines followed by the output
-
-
- {$articleTitle}
- 'Stiff Opposition Expected to Casketless Funeral Plan'
-
- {$articleTitle|escape}
- &#039;Stiff Opposition Expected to Casketless Funeral Plan&#039;
-
- {$articleTitle|escape:'html'} {* escapes & " ' < > *}
- &#039;Stiff Opposition Expected to Casketless Funeral Plan&#039;
-
- {$articleTitle|escape:'htmlall'} {* escapes ALL html entities *}
- &#039;Stiff Opposition Expected to Casketless Funeral Plan&#039;
-
- <a href="?title={$articleTitle|escape:'url'}">click here</a>
- <a
- href="?title=%27Stiff%20Opposition%20Expected%20to%20Casketless%20Funeral%20Plan%27">click here</a>
-
- {$articleTitle|escape:'quotes'}
- \'Stiff Opposition Expected to Casketless Funeral Plan\'
-
- <a href="mailto:{$EmailAddress|escape:"hex"}">{$EmailAddress|escape:"hexentity"}</a>
- {$EmailAddress|escape:'mail'} {* this converts to email to text *}
- <a href="mailto:%62%6f%..snip..%65%74">&#x62;&#x6f;&#x62..snip..&#x65;&#x74;</a>
-
- {'mail@example.com'|escape:'mail'}
- smarty [AT] example [DOT] com
-
-
-
-
- {* the "rewind" parameter registers the current location *}
- <a href="$my_path?page=foo&rewind=$my_uri|urlencode}">click here</a>
-
-
-
-This snippet is useful for emails, but see also
-[`{mailto}`](#language.function.mailto)
-
-
- {* email address mangled *}
- <a href="mailto:{$EmailAddress|escape:'hex'}">{$EmailAddress|escape:'mail'}</a>
-
-
-
-See also [escaping smarty parsing](#language.escaping),
-[`{mailto}`](#language.function.mailto) and the [obfuscating email
-addresses](#tips.obfuscating.email) page.
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-from-charset.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-from-charset.md
deleted file mode 100644
index 8b7fdd50f..000000000
--- a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-from-charset.md
+++ /dev/null
@@ -1,19 +0,0 @@
-from\_charset {#language.modifier.from_charset}
-=============
-
-`from_charset` is used to transcode a string from a given charset to the
-internal charset. This is the exact opposite of the [to\_charset
-modifier](#language.modifier.to_charset).
-
- Parameter Position Type Required Possible Values Default Description
- -------------------- -------- ---------- -------------------------------------------------------------------------------------------------------------------------- -------------- ---------------------------------------------------------------
- 1 string No `ISO-8859-1`, `UTF-8`, and any character set supported by [`mb_convert_encoding()`](&url.php-manual;mb_convert_encoding) `ISO-8859-1` The charset encoding the value is supposed to be decoded from
-
-> **Note**
->
-> Charset encoding should be handled by the application itself. This
-> modifier should only be used in cases where the application cannot
-> anticipate that a certain string is required in another encoding.
-
-See also [Charset Enconding](#charset), [from\_charset
-modifier](#language.modifier.from_charset).
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-indent.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-indent.md
deleted file mode 100644
index d0264dca3..000000000
--- a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-indent.md
+++ /dev/null
@@ -1,62 +0,0 @@
-indent {#language.modifier.indent}
-======
-
-This indents a string on each line, default is 4. As an optional
-parameter, you can specify the number of characters to indent. As an
-optional second parameter, you can specify the character to use to
-indent with eg use `"\t"` for a tab.
-
- Parameter Position Type Required Default Description
- -------------------- --------- ---------- ------------- ---------------------------------------------------
- 1 integer No 4 This determines how many characters to indent to.
- 2 string No (one space) This is the character used to indent with.
-
-
- <?php
-
- $smarty->assign('articleTitle',
- 'NJ judge to rule on nude beach.
- Sun or rain expected today, dark tonight.
- Statistics show that teen pregnancy drops off significantly after 25.'
- );
- ?>
-
-
-
-Where template is:
-
-
- {$articleTitle}
-
- {$articleTitle|indent}
-
- {$articleTitle|indent:10}
-
- {$articleTitle|indent:1:"\t"}
-
-
-
-Will output:
-
-
- NJ judge to rule on nude beach.
- Sun or rain expected today, dark tonight.
- Statistics show that teen pregnancy drops off significantly after 25.
-
- NJ judge to rule on nude beach.
- Sun or rain expected today, dark tonight.
- Statistics show that teen pregnancy drops off significantly after 25.
-
- NJ judge to rule on nude beach.
- Sun or rain expected today, dark tonight.
- Statistics show that teen pregnancy drops off significantly after 25.
-
- NJ judge to rule on nude beach.
- Sun or rain expected today, dark tonight.
- Statistics show that teen pregnancy drops off significantly after 25.
-
-
-
-See also [`strip`](#language.modifier.strip),
-[`wordwrap`](#language.modifier.wordwrap) and
-[`spacify`](#language.modifier.spacify).
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-lower.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-lower.md
deleted file mode 100644
index 90122e9e4..000000000
--- a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-lower.md
+++ /dev/null
@@ -1,33 +0,0 @@
-lower {#language.modifier.lower}
-=====
-
-This is used to lowercase a variable. This is equivalent to the PHP
-[`strtolower()`](&url.php-manual;strtolower) function.
-
-
- <?php
-
- $smarty->assign('articleTitle', 'Two Convicts Evade Noose, Jury Hung.');
-
- ?>
-
-
-
-Where template is:
-
-
- {$articleTitle}
- {$articleTitle|lower}
-
-
-
-This will output:
-
-
- Two Convicts Evade Noose, Jury Hung.
- two convicts evade noose, jury hung.
-
-
-
-See also [`upper`](#language.modifier.upper) and
-[`capitalize`](#language.modifier.capitalize).
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-nl2br.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-nl2br.md
deleted file mode 100644
index 541233c8b..000000000
--- a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-nl2br.md
+++ /dev/null
@@ -1,35 +0,0 @@
-nl2br {#language.modifier.nl2br}
-=====
-
-All `"\n"` line breaks will be converted to html `<br />` tags in the
-given variable. This is equivalent to the PHP\'s
-[`nl2br()`](&url.php-manual;nl2br) function.
-
-
- <?php
-
- $smarty->assign('articleTitle',
- "Sun or rain expected\ntoday, dark tonight"
- );
-
- ?>
-
-
-
-Where the template is:
-
-
- {$articleTitle|nl2br}
-
-
-
-Will output:
-
-
- Sun or rain expected<br />today, dark tonight
-
-
-
-See also [`word_wrap`](#language.modifier.wordwrap),
-[`count_paragraphs`](#language.modifier.count.paragraphs) and
-[`count_sentences`](#language.modifier.count.sentences).
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-regex-replace.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-regex-replace.md
deleted file mode 100644
index 6fcb33fad..000000000
--- a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-regex-replace.md
+++ /dev/null
@@ -1,51 +0,0 @@
-regex\_replace {#language.modifier.regex.replace}
-==============
-
-A regular expression search and replace on a variable. Use the
-[`preg_replace()`](&url.php-manual;preg_replace) syntax from the PHP
-manual.
-
-> **Note**
->
-> Although Smarty supplies this regex convenience modifier, it is
-> usually better to apply regular expressions in PHP, either via custom
-> functions or modifiers. Regular expressions are considered application
-> code and are not part of presentation logic.
-
-Parameters
-
- Parameter Position Type Required Default Description
- -------------------- -------- ---------- --------- ------------------------------------------------
- 1 string Yes *n/a* This is the regular expression to be replaced.
- 2 string Yes *n/a* This is the string of text to replace with.
-
-
- <?php
-
- $smarty->assign('articleTitle', "Infertility unlikely to\nbe passed on, experts say.");
-
- ?>
-
-
-
-Where template is:
-
-
- {* replace each carriage return, tab and new line with a space *}
-
- {$articleTitle}
- {$articleTitle|regex_replace:"/[\r\t\n]/":" "}
-
-
-
-Will output:
-
-
- Infertility unlikely to
- be passed on, experts say.
- Infertility unlikely to be passed on, experts say.
-
-
-
-See also [`replace`](#language.modifier.replace) and
-[`escape`](#language.modifier.escape).
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-replace.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-replace.md
deleted file mode 100644
index c7c2903ea..000000000
--- a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-replace.md
+++ /dev/null
@@ -1,40 +0,0 @@
-replace {#language.modifier.replace}
-=======
-
-A simple search and replace on a variable. This is equivalent to the
-PHP\'s [`str_replace()`](&url.php-manual;str_replace) function.
-
- Parameter Position Type Required Default Description
- -------------------- -------- ---------- --------- ---------------------------------------------
- 1 string Yes *n/a* This is the string of text to be replaced.
- 2 string Yes *n/a* This is the string of text to replace with.
-
-
- <?php
-
- $smarty->assign('articleTitle', "Child's Stool Great for Use in Garden.");
-
- ?>
-
-
-
-Where template is:
-
-
- {$articleTitle}
- {$articleTitle|replace:'Garden':'Vineyard'}
- {$articleTitle|replace:' ':' '}
-
-
-
-Will output:
-
-
- Child's Stool Great for Use in Garden.
- Child's Stool Great for Use in Vineyard.
- Child's Stool Great for Use in Garden.
-
-
-
-See also [`regex_replace`](#language.modifier.regex.replace) and
-[`escape`](#language.modifier.escape).
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-spacify.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-spacify.md
deleted file mode 100644
index 8856dab43..000000000
--- a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-spacify.md
+++ /dev/null
@@ -1,40 +0,0 @@
-spacify {#language.modifier.spacify}
-=======
-
-`spacify` is a way to insert a space between every character of a
-variable. You can optionally pass a different character or string to
-insert.
-
- Parameter Position Type Required Default Description
- -------------------- -------- ---------- ------------- -----------------------------------------------------------------
- 1 string No *one space* This what gets inserted between each character of the variable.
-
-
- <?php
-
- $smarty->assign('articleTitle', 'Something Went Wrong in Jet Crash, Experts Say.');
-
- ?>
-
-
-
-Where template is:
-
-
- {$articleTitle}
- {$articleTitle|spacify}
- {$articleTitle|spacify:"^^"}
-
-
-
-Will output:
-
-
- Something Went Wrong in Jet Crash, Experts Say.
- S o m e t h i n g W .... snip .... s h , E x p e r t s S a y .
- S^^o^^m^^e^^t^^h^^i^^n^^g^^ .... snip .... ^^e^^r^^t^^s^^ ^^S^^a^^y^^.
-
-
-
-See also [`wordwrap`](#language.modifier.wordwrap) and
-[`nl2br`](#language.modifier.nl2br).
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-string-format.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-string-format.md
deleted file mode 100644
index 754014e2d..000000000
--- a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-string-format.md
+++ /dev/null
@@ -1,39 +0,0 @@
-string\_format {#language.modifier.string.format}
-==============
-
-This is a way to format strings, such as decimal numbers and such. Use
-the syntax for [`sprintf()`](&url.php-manual;sprintf) for the
-formatting.
-
- Parameter Position Type Required Default Description
- -------------------- -------- ---------- --------- ---------------------------------------
- 1 string Yes *n/a* This is what format to use. (sprintf)
-
-
- <?php
-
- $smarty->assign('number', 23.5787446);
-
- ?>
-
-
-
-Where template is:
-
-
- {$number}
- {$number|string_format:"%.2f"}
- {$number|string_format:"%d"}
-
-
-
-Will output:
-
-
- 23.5787446
- 23.58
- 23
-
-
-
-See also [`date_format`](#language.modifier.date.format).
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-strip-tags.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-strip-tags.md
deleted file mode 100644
index 4a019767b..000000000
--- a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-strip-tags.md
+++ /dev/null
@@ -1,41 +0,0 @@
-strip\_tags {#language.modifier.strip.tags}
-===========
-
-This strips out markup tags, basically anything between `<` and `>`.
-
- Parameter Position Type Required Default Description
- -------------------- ------ ---------- --------- ----------------------------------------------------------------
- 1 bool No TRUE This determines whether the tags are replaced by \' \' or \'\'
-
-
- <?php
-
- $smarty->assign('articleTitle',
- "Blind Woman Gets <font face=\"helvetica\">New
- Kidney</font> from Dad she Hasn't Seen in <b>years</b>."
- );
-
- ?>
-
-
-
-Where template is:
-
-
- {$articleTitle}
- {$articleTitle|strip_tags} {* same as {$articleTitle|strip_tags:true} *}
- {$articleTitle|strip_tags:false}
-
-
-
-Will output:
-
-
- Blind Woman Gets <font face="helvetica">New Kidney</font> from Dad she Hasn't Seen in <b>years</b>.
- Blind Woman Gets New Kidney from Dad she Hasn't Seen in years .
- Blind Woman Gets New Kidney from Dad she Hasn't Seen in years.
-
-
-
-See also [`replace`](#language.modifier.replace) and
-[`regex_replace`](#language.modifier.regex.replace).
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-strip.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-strip.md
deleted file mode 100644
index 7027e0313..000000000
--- a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-strip.md
+++ /dev/null
@@ -1,40 +0,0 @@
-strip {#language.modifier.strip}
-=====
-
-This replaces all spaces, newlines and tabs with a single space, or with
-the supplied string.
-
-> **Note**
->
-> If you want to strip blocks of template text, use the built-in
-> [`{strip}`](#language.function.strip) function.
-
-
- <?php
- $smarty->assign('articleTitle', "Grandmother of\neight makes\t hole in one.");
- $smarty->display('index.tpl');
- ?>
-
-
-
-Where template is:
-
-
- {$articleTitle}
- {$articleTitle|strip}
- {$articleTitle|strip:'&nbsp;'}
-
-
-
-Will output:
-
-
- Grandmother of
- eight makes hole in one.
- Grandmother of eight makes hole in one.
- Grandmother&nbsp;of&nbsp;eight&nbsp;makes&nbsp;hole&nbsp;in&nbsp;one.
-
-
-
-See also [`{strip}`](#language.function.strip) and
-[`truncate`](#language.modifier.truncate).
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-to-charset.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-to-charset.md
deleted file mode 100644
index 6c53232c2..000000000
--- a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-to-charset.md
+++ /dev/null
@@ -1,19 +0,0 @@
-to\_charset {#language.modifier.to_charset}
-===========
-
-`to_charset` is used to transcode a string from the internal charset to
-a given charset. This is the exact opposite of the [from\_charset
-modifier](#language.modifier.from_charset).
-
- Parameter Position Type Required Possible Values Default Description
- -------------------- -------- ---------- -------------------------------------------------------------------------------------------------------------------------- -------------- -------------------------------------------------------------
- 1 string No `ISO-8859-1`, `UTF-8`, and any character set supported by [`mb_convert_encoding()`](&url.php-manual;mb_convert_encoding) `ISO-8859-1` The charset encoding the value is supposed to be encoded to
-
-> **Note**
->
-> Charset encoding should be handled by the application itself. This
-> modifier should only be used in cases where the application cannot
-> anticipate that a certain string is required in another encoding.
-
-See also [Charset Enconding](#charset), [from\_charset
-modifier](#language.modifier.from_charset).
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-truncate.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-truncate.md
deleted file mode 100644
index 2303a5432..000000000
--- a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-truncate.md
+++ /dev/null
@@ -1,52 +0,0 @@
-truncate {#language.modifier.truncate}
-========
-
-This truncates a variable to a character length, the default is 80. As
-an optional second parameter, you can specify a string of text to
-display at the end if the variable was truncated. The characters in the
-string are included with the original truncation length. By default,
-`truncate` will attempt to cut off at a word boundary. If you want to
-cut off at the exact character length, pass the optional third parameter
-of TRUE.
-
- Parameter Position Type Required Default Description
- -------------------- --------- ---------- --------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- 1 integer No 80 This determines how many characters to truncate to.
- 2 string No \... This is a text string that replaces the truncated text. Its length is included in the truncation length setting.
- 3 boolean No FALSE This determines whether or not to truncate at a word boundary with FALSE, or at the exact character with TRUE.
- 4 boolean No FALSE This determines whether the truncation happens at the end of the string with FALSE, or in the middle of the string with TRUE. Note that if this setting is TRUE, then word boundaries are ignored.
-
-
- <?php
- $smarty->assign('articleTitle', 'Two Sisters Reunite after Eighteen Years at Checkout Counter.');
- ?>
-
-
-
-where template is:
-
-
- {$articleTitle}
- {$articleTitle|truncate}
- {$articleTitle|truncate:30}
- {$articleTitle|truncate:30:""}
- {$articleTitle|truncate:30:"---"}
- {$articleTitle|truncate:30:"":true}
- {$articleTitle|truncate:30:"...":true}
- {$articleTitle|truncate:30:'..':true:true}
-
-
-
-This will output:
-
-
- Two Sisters Reunite after Eighteen Years at Checkout Counter.
- Two Sisters Reunite after Eighteen Years at Checkout Counter.
- Two Sisters Reunite after...
- Two Sisters Reunite after
- Two Sisters Reunite after---
- Two Sisters Reunite after Eigh
- Two Sisters Reunite after E...
- Two Sisters Re..ckout Counter.
-
-
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-unescape.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-unescape.md
deleted file mode 100644
index 58d0b3f75..000000000
--- a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-unescape.md
+++ /dev/null
@@ -1,39 +0,0 @@
-unescape {#language.modifier.unescape}
-========
-
-`unescape` is used to decode `entity`, `html` and `htmlall`. It counters
-the effects of the [escape modifier](#language.modifier.escape) for the
-given types.
-
- Parameter Position Type Required Possible Values Default Description
- -------------------- -------- ---------- ------------------------------------------------------------------------------------------------------------ --------- ------------------------------------------------------------------------------------------------------------------------------
- 1 string No `html`, `htmlall`, `entity`, `html` This is the escape format to use.
- 2 string No `ISO-8859-1`, `UTF-8`, and any character set supported by [`htmlentities()`](&url.php-manual;htmlentities) `UTF-8` The character set encoding passed to html\_entity\_decode() or htmlspecialchars\_decode() or mb\_convert\_encoding() et. al.
-
-
- <?php
-
- $smarty->assign('articleTitle',
- "Germans use &quot;&Uuml;mlauts&quot; and pay in &euro;uro"
- );
-
- ?>
-
-
-
-These are example `unescape` template lines followed by the output
-
-
- {$articleTitle}
- Germans use &quot;&Uuml;mlauts&quot; and pay in &euro;uro
-
- {$articleTitle|unescape:"html"}
- Germans use "&Uuml;mlauts" and pay in &euro;uro
-
- {$articleTitle|unescape:"htmlall"}
- Germans use "Ümlauts" and pay in €uro
-
-
-
-See also [escaping smarty parsing](#language.escaping), [escape
-modifier](#language.modifier.escape).
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-upper.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-upper.md
deleted file mode 100644
index 9240f42d6..000000000
--- a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-upper.md
+++ /dev/null
@@ -1,31 +0,0 @@
-upper {#language.modifier.upper}
-=====
-
-This is used to uppercase a variable. This is equivalent to the PHP
-[`strtoupper()`](&url.php-manual;strtoupper) function.
-
-
- <?php
- $smarty->assign('articleTitle', "If Strike isn't Settled Quickly it may Last a While.");
- ?>
-
-
-
-Where template is:
-
-
- {$articleTitle}
- {$articleTitle|upper}
-
-
-
-Will output:
-
-
- If Strike isn't Settled Quickly it may Last a While.
- IF STRIKE ISN'T SETTLED QUICKLY IT MAY LAST A WHILE.
-
-
-
-See also [`lower`](#language.modifier.lower) and
-[`capitalize`](#language.modifier.capitalize).
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-wordwrap.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-wordwrap.md
deleted file mode 100644
index 97cd774f7..000000000
--- a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-wordwrap.md
+++ /dev/null
@@ -1,69 +0,0 @@
-wordwrap {#language.modifier.wordwrap}
-========
-
-Wraps a string to a column width, the default is 80. As an optional
-second parameter, you can specify a string of text to wrap the text to
-the next line, the default is a carriage return `"\n"`. By default,
-`wordwrap` will attempt to wrap at a word boundary. If you want to cut
-off at the exact character length, pass the optional third parameter as
-TRUE. This is equivalent to the PHP
-[`wordwrap()`](&url.php-manual;wordwrap) function.
-
- Parameter Position Type Required Default Description
- -------------------- --------- ---------- --------- ------------------------------------------------------------------------------------------------------
- 1 integer No 80 This determines how many columns to wrap to.
- 2 string No \\n This is the string used to wrap words with.
- 3 boolean No FALSE This determines whether or not to wrap at a word boundary (FALSE), or at the exact character (TRUE).
-
-
- <?php
-
- $smarty->assign('articleTitle',
- "Blind woman gets new kidney from dad she hasn't seen in years."
- );
-
- ?>
-
-
-
-Where template is
-
-
- {$articleTitle}
-
- {$articleTitle|wordwrap:30}
-
- {$articleTitle|wordwrap:20}
-
- {$articleTitle|wordwrap:30:"<br />\n"}
-
- {$articleTitle|wordwrap:26:"\n":true}
-
-
-
-Will output:
-
-
- Blind woman gets new kidney from dad she hasn't seen in years.
-
- Blind woman gets new kidney
- from dad she hasn't seen in
- years.
-
- Blind woman gets new
- kidney from dad she
- hasn't seen in
- years.
-
- Blind woman gets new kidney<br />
- from dad she hasn't seen in<br />
- years.
-
- Blind woman gets new kidn
- ey from dad she hasn't se
- en in years.
-
-
-
-See also [`nl2br`](#language.modifier.nl2br) and
-[`{textformat}`](#language.function.textformat).
diff --git a/vendor/smarty/smarty/docs/designers/language-variables.md b/vendor/smarty/smarty/docs/designers/language-variables.md
deleted file mode 100644
index 3950d0baf..000000000
--- a/vendor/smarty/smarty/docs/designers/language-variables.md
+++ /dev/null
@@ -1,37 +0,0 @@
-Variables
-=========
-
-## Table of contents
-- [Variables assigned from PHP](./language-variables/language-assigned-variables.md)
-- [Variable scopes](./language-variables/language-variable-scopes.md)
-- [Variables loaded from config files](./language-variables/language-config-variables.md)
-- [{$smarty} reserved variable](./language-variables/language-variables-smarty.md)
-
-
-Smarty has several different types of variables. The type of the
-variable depends on what symbol it is prefixed or enclosed within.
-
-Variables in Smarty can be either displayed directly or used as
-arguments for [functions](./language-basic-syntax/language-syntax-functions.md),
-[attributes](./language-basic-syntax/language-syntax-attributes.md) and
-[modifiers](./language-modifiers.md), inside conditional expressions, etc.
-To print a variable, simply enclose it in the
-[delimiters](../programmers/api-variables/variable-left-delimiter.md) so that it is the only thing
-contained between them.
-
-
- {$Name}
-
- {$product.part_no} <b>{$product.description}</b>
-
- {$Contacts[row].Phone}
-
- <body bgcolor="{#bgcolor#}">
-
-
-
-> **Note**
->
-> An easy way to examine assigned Smarty variables is with the
-> [debugging console](./chapter-debugging-console.md).
-
diff --git a/vendor/smarty/smarty/docs/designers/language-variables/language-assigned-variables.md b/vendor/smarty/smarty/docs/designers/language-variables/language-assigned-variables.md
deleted file mode 100644
index 005dea4a9..000000000
--- a/vendor/smarty/smarty/docs/designers/language-variables/language-assigned-variables.md
+++ /dev/null
@@ -1,142 +0,0 @@
-Variables assigned from PHP {#language.assigned.variables}
-===========================
-
-Assigned variables that are referenced by preceding them with a dollar
-(`$`) sign.
-
-PHP code
-
-
- <?php
-
- $smarty = new Smarty();
-
- $smarty->assign('firstname', 'Doug');
- $smarty->assign('lastname', 'Evans');
- $smarty->assign('meetingPlace', 'New York');
-
- $smarty->display('index.tpl');
-
- ?>
-
-`index.tpl` source:
-
-
- Hello {$firstname} {$lastname}, glad to see you can make it.
- <br />
- {* this will not work as $variables are case sensitive *}
- This weeks meeting is in {$meetingplace}.
- {* this will work *}
- This weeks meeting is in {$meetingPlace}.
-
-
-
-This above would output:
-
-
- Hello Doug Evans, glad to see you can make it.
- <br />
- This weeks meeting is in .
- This weeks meeting is in New York.
-
-
-
-Associative arrays {#language.variables.assoc.arrays}
-------------------
-
-You can also reference associative array variables by specifying the key
-after a dot \".\" symbol.
-
-
- <?php
- $smarty->assign('Contacts',
- array('fax' => '555-222-9876',
- 'email' => 'zaphod@slartibartfast.example.com',
- 'phone' => array('home' => '555-444-3333',
- 'cell' => '555-111-1234')
- )
- );
- $smarty->display('index.tpl');
- ?>
-
-
-
-`index.tpl` source:
-
-
- {$Contacts.fax}<br />
- {$Contacts.email}<br />
- {* you can print arrays of arrays as well *}
- {$Contacts.phone.home}<br />
- {$Contacts.phone.cell}<br />
-
-
-
-this will output:
-
-
- 555-222-9876<br />
- zaphod@slartibartfast.example.com<br />
- 555-444-3333<br />
- 555-111-1234<br />
-
-
-
-Array indexes {#language.variables.array.indexes}
--------------
-
-You can reference arrays by their index, much like native PHP syntax.
-
-
- <?php
- $smarty->assign('Contacts', array(
- '555-222-9876',
- 'zaphod@slartibartfast.example.com',
- array('555-444-3333',
- '555-111-1234')
- ));
- $smarty->display('index.tpl');
- ?>
-
-
-
-`index.tpl` source:
-
-
- {$Contacts[0]}<br />
- {$Contacts[1]}<br />
- {* you can print arrays of arrays as well *}
- {$Contacts[2][0]}<br />
- {$Contacts[2][1]}<br />
-
-
-
-This will output:
-
-
- 555-222-9876<br />
- zaphod@slartibartfast.example.com<br />
- 555-444-3333<br />
- 555-111-1234<br />
-
-
-
-Objects {#language.variables.objects}
--------
-
-Properties of [objects](#advanced.features.objects) assigned from PHP
-can be referenced by specifying the property name after the `->` symbol.
-
-
- name: {$person->name}<br />
- email: {$person->email}<br />
-
-
-
-this will output:
-
-
- name: Zaphod Beeblebrox<br />
- email: zaphod@slartibartfast.example.com<br />
-
-
diff --git a/vendor/smarty/smarty/docs/designers/language-variables/language-config-variables.md b/vendor/smarty/smarty/docs/designers/language-variables/language-config-variables.md
deleted file mode 100644
index a3683d99b..000000000
--- a/vendor/smarty/smarty/docs/designers/language-variables/language-config-variables.md
+++ /dev/null
@@ -1,83 +0,0 @@
-Variables loaded from config files {#language.config.variables}
-==================================
-
-Variables that are loaded from the [config files](#config.files) are
-referenced by enclosing them within `#hash_marks#`, or with the smarty
-variable [`$smarty.config`](#language.variables.smarty.config). The
-later syntax is useful for embedding into quoted attribute values, or
-accessing variable values such as \$smarty.config.\$foo.
-
-Example config file - `foo.conf`:
-
-
- pageTitle = "This is mine"
- bodyBgColor = '#eeeeee'
- tableBorderSize = 3
- tableBgColor = "#bbbbbb"
- rowBgColor = "#cccccc"
-
-
-
-A template demonstrating the `#hash#` method:
-
-
- {config_load file='foo.conf'}
- <html>
- <title>{#pageTitle#}</title>
- <body bgcolor="{#bodyBgColor#}">
- <table border="{#tableBorderSize#}" bgcolor="{#tableBgColor#}">
- <tr bgcolor="{#rowBgColor#}">
- <td>First</td>
- <td>Last</td>
- <td>Address</td>
- </tr>
- </table>
- </body>
- </html>
-
-
-
-A template demonstrating the
-[`$smarty.config`](#language.variables.smarty.config) method:
-
-
- {config_load file='foo.conf'}
- <html>
- <title>{$smarty.config.pageTitle}</title>
- <body bgcolor="{$smarty.config.bodyBgColor}">
- <table border="{$smarty.config.tableBorderSize}" bgcolor="{$smarty.config.tableBgColor}">
- <tr bgcolor="{$smarty.config.rowBgColor}">
- <td>First</td>
- <td>Last</td>
- <td>Address</td>
- </tr>
- </table>
- </body>
- </html>
-
-
-
-Both examples would output:
-
-
- <html>
- <title>This is mine</title>
- <body bgcolor="#eeeeee">
- <table border="3" bgcolor="#bbbbbb">
- <tr bgcolor="#cccccc">
- <td>First</td>
- <td>Last</td>
- <td>Address</td>
- </tr>
- </table>
- </body>
- </html>
-
-
-
-Config file variables cannot be used until after they are loaded in from
-a config file. This procedure is explained later in this document under
-[`{config_load}`](#language.function.config.load).
-
-See also [variables](#language.syntax.variables) and [\$smarty reserved
-variables](#language.variables.smarty)
diff --git a/vendor/smarty/smarty/docs/designers/language-variables/language-variable-scopes.md b/vendor/smarty/smarty/docs/designers/language-variables/language-variable-scopes.md
deleted file mode 100644
index 2ba3f026b..000000000
--- a/vendor/smarty/smarty/docs/designers/language-variables/language-variable-scopes.md
+++ /dev/null
@@ -1,61 +0,0 @@
-Variable scopes {#language.variable.scopes}
-===============
-
-You have the choice to assign variables to the scope of the main Smarty
-object, data objects created with [`createData()`](#api.create.data),
-and template objects created with
-[`createTemplate()`](#api.create.template). These objects can be
-chained. A template sees all the variables of its own object and all
-variables assigned to the objects in its chain of parent objects.
-
-By default templates which are rendered by
-[`$smarty->display(...)`](#api.display) or
-[`$smarty->fetch(...)`](#api.fetch) calls are automatically linked to
-the Smarty object variable scope.
-
-By assigning variables to individual data or template objects you have
-full control which variables can be seen by a template.
-
-
-
- // assign variable to Smarty object scope
- $smarty->assign('foo','smarty');
-
- // assign variables to data object scope
- $data = $smarty->createData();
- $data->assign('foo','data');
- $data->assign('bar','bar-data');
-
- // assign variables to other data object scope
- $data2 = $smarty->createData($data);
- $data2->assign('bar','bar-data2');
-
- // assign variable to template object scope
- $tpl = $smarty->createTemplate('index.tpl');
- $tpl->assign('bar','bar-template');
-
- // assign variable to template object scope with link to Smarty object
- $tpl2 = $smarty->createTemplate('index.tpl',$smarty);
- $tpl2->assign('bar','bar-template2');
-
- // This display() does see $foo='smarty' from the $smarty object
- $smarty->display('index.tpl');
-
- // This display() does see $foo='data' and $bar='bar-data' from the data object $data
- $smarty->display('index.tpl',$data);
-
- // This display() does see $foo='data' from the data object $data
- // and $bar='bar-data2' from the data object $data2
- $smarty->display('index.tpl',$data2);
-
- // This display() does see $bar='bar-template' from the template object $tpl
- $tpl->display(); // or $smarty->display($tpl);
-
- // This display() does see $bar='bar-template2' from the template object $tpl2
- // and $foo='smarty' form the Smarty object $foo
- $tpl2->display(); // or $smarty->display($tpl2);
-
-
-
-See also [`assign()`](#api.assign), [`createData()`](#api.create.data)
-and [`createTemplate()`](#api.create.template).
diff --git a/vendor/smarty/smarty/docs/designers/language-variables/language-variables-smarty.md b/vendor/smarty/smarty/docs/designers/language-variables/language-variables-smarty.md
deleted file mode 100644
index f9aa2330a..000000000
--- a/vendor/smarty/smarty/docs/designers/language-variables/language-variables-smarty.md
+++ /dev/null
@@ -1,176 +0,0 @@
-{\$smarty} reserved variable {#language.variables.smarty}
-============================
-
-The PHP reserved `{$smarty}` variable can be used to access several
-environment and request variables. The full list of them follows.
-
-Request variables {#language.variables.smarty.request}
------------------
-
-The [request variables](&url.php-manual;reserved.variables) such as
-`$_GET`, `$_POST`, `$_COOKIE`, `$_SERVER`, `$_ENV` and `$_SESSION` can
-be accessed as demonstrated in the examples below:
-
-
- {* display value of page from URL ($_GET) http://www.example.com/index.php?page=foo *}
- {$smarty.get.page}
-
- {* display the variable "page" from a form ($_POST['page']) *}
- {$smarty.post.page}
-
- {* display the value of the cookie "username" ($_COOKIE['username']) *}
- {$smarty.cookies.username}
-
- {* display the server variable "SERVER_NAME" ($_SERVER['SERVER_NAME'])*}
- {$smarty.server.SERVER_NAME}
-
- {* display the system environment variable "PATH" *}
- {$smarty.env.PATH}
-
- {* display the php session variable "id" ($_SESSION['id']) *}
- {$smarty.session.id}
-
- {* display the variable "username" from merged get/post/cookies/server/env *}
- {$smarty.request.username}
-
-
-
-> **Note**
->
-> For historical reasons `{$SCRIPT_NAME}` is short-hand for
-> `{$smarty.server.SCRIPT_NAME}`.
->
->
-> <a href="{$SCRIPT_NAME}?page=smarty">click me</a>
-> <a href="{$smarty.server.SCRIPT_NAME}?page=smarty">click me</a>
-
-> **Note**
->
-> Although Smarty provides direct access to PHP super globals for
-> convenience, it should be used with caution. Directly accessing super
-> globals mixes underlying application code structure with templates. A
-> good practice is to assign specific needed values to template vars.
-
-{\$smarty.now} {#language.variables.smarty.now}
---------------
-
-The current [timestamp](&url.php-manual;function.time) can be accessed
-with `{$smarty.now}`. The value reflects the number of seconds passed
-since the so-called Epoch on January 1, 1970, and can be passed directly
-to the [`date_format`](#language.modifier.date.format) modifier for
-display. Note that [`time()`](&url.php-manual;function.time) is called
-on each invocation; eg a script that takes three seconds to execute with
-a call to `$smarty.now` at start and end will show the three second
-difference.
-
-::: {.informalexample}
-
- {* use the date_format modifier to show current date and time *}
- {$smarty.now|date_format:'%Y-%m-%d %H:%M:%S'}
-
-
-:::
-
-{\$smarty.const} {#language.variables.smarty.const}
-----------------
-
-You can access PHP constant values directly. See also [smarty
-constants](#smarty.constants).
-
-::: {.informalexample}
-
- <?php
- // the constant defined in php
- define('MY_CONST_VAL','CHERRIES');
- ?>
-:::
-
-Output the constant in a template with
-
-::: {.informalexample}
-
- {$smarty.const.MY_CONST_VAL}
-:::
-
-> **Note**
->
-> Although Smarty provides direct access to PHP constants for
-> convenience, it is typically avoided as this is mixing underlying
-> application code structure into the templates. A good practice is to
-> assign specific needed values to template vars.
-
-{\$smarty.capture} {#language.variables.smarty.capture}
-------------------
-
-Template output captured via the built-in
-[`{capture}..{/capture}`](#language.function.capture) function can be
-accessed using the `{$smarty.capture}` variable. See the
-[`{capture}`](#language.function.capture) page for more information.
-
-{\$smarty.config} {#language.variables.smarty.config}
------------------
-
-`{$smarty.config}` variable can be used to refer to loaded [config
-variables](#language.config.variables). `{$smarty.config.foo}` is a
-synonym for `{#foo#}`. See the
-[{config\_load}](#language.function.config.load) page for more info.
-
-{\$smarty.section} {#language.variables.smarty.loops}
-------------------
-
-The `{$smarty.section}` variables can be used to refer to
-[`{section}`](#language.function.section) loop properties. These have
-some very useful values such as `.first`, `.index`, etc.
-
-> **Note**
->
-> The `{$smarty.foreach}` variable is no longer used with the new
-> [`{foreach}`](#language.function.foreach) syntax, but is still
-> supported with Smarty 2.x style foreach syntax.
-
-{\$smarty.template} {#language.variables.smarty.template}
--------------------
-
-Returns the name of the current template being processed (without the
-directory).
-
-{\$smarty.template\_object} {#language.variables.smarty.template_object}
----------------------------
-
-Returns the template object of the current template being processed.
-
-{\$smarty.current\_dir} {#language.variables.smarty.current_dir}
------------------------
-
-Returns the name of the directory for the current template being
-processed.
-
-{\$smarty.version} {#language.variables.smarty.version}
-------------------
-
-Returns the version of Smarty the template was compiled with.
-
-
- <div id="footer">Powered by Smarty {$smarty.version}</div>
-
-{\$smarty.block.child} {#language.variables.smarty.block.child}
-----------------------
-
-Returns block text from child template. See [Template
-interitance](#advanced.features.template.inheritance).
-
-{\$smarty.block.parent} {#language.variables.smarty.block.parent}
------------------------
-
-Returns block text from parent template. See [Template
-interitance](#advanced.features.template.inheritance)
-
-{\$smarty.ldelim}, {\$smarty.rdelim} {#language.variables.smarty.ldelim}
-------------------------------------
-
-These variables are used for printing the left-delimiter and
-right-delimiter value literally, the same as
-[`{ldelim},{rdelim}`](#language.function.ldelim).
-
-See also [assigned variables](#language.assigned.variables) and [config
-variables](#language.config.variables)
diff --git a/vendor/smarty/smarty/docs/features.md b/vendor/smarty/smarty/docs/features.md
deleted file mode 100644
index 8405b46eb..000000000
--- a/vendor/smarty/smarty/docs/features.md
+++ /dev/null
@@ -1,152 +0,0 @@
-Features
-=======
-
-Some of Smarty's features:
-- It is extremely fast.
-- It is efficient since the PHP parser does the dirty work.
-- No template parsing overhead, only compiles once.
-- It is smart about [recompiling](#variable.compile.check) only the
- template files that have changed.
-- You can easily create your own custom
- [functions](#language.custom.functions) and [variable
- modifiers](#language.modifiers), so the template language is
- extremely extensible.
-- Configurable template [{delimiter}](#variable.left.delimiter) tag
- syntax, so you can use `{$foo}`, `{{$foo}}`, `<!--{$foo}-->`, etc.
-- The [`{if}..{elseif}..{else}..{/if}`](#language.function.if)
- constructs are passed to the PHP parser, so the `{if...}` expression
- syntax can be as simple or as complex an evaluation as you like.
-- Allows unlimited nesting of
- [`sections`](#language.function.section), `if's` etc.
-- Built-in [caching](#caching) support
-- Arbitrary [template](#resources) sources
-- [Template Inheritance](#advanced.features.template.inheritance) for
- easy management of template content.
-- [Plugin](#plugins) architecture
-
-## Separation of presentation from application code
-- This means templates can certainly contain logic under the condition
- that it is for presentation only. Things such as
- [including](./designers/language-builtin-functions/language-function-include.md) other templates,
- [alternating](./designers/language-custom-functions/language-function-cycle.md) table row colors,
- [upper-casing](./designers/language-modifiers/language-modifier-upper.md) a variable,
- [looping](./designers/language-builtin-functions/language-function-foreach.md) over an array of data and
- rendering it are examples of presentation logic.
-- This does not mean however that Smarty forces a separation of
- business and presentation logic. Smarty has no knowledge of which is
- which, so placing business logic in the template is your own doing.
-- Also, if you desire *no* logic in your templates you certainly can
- do so by boiling the content down to text and variables only.
-
-## How does it work?
-
-Under the hood, Smarty "compiles" (basically copies and converts) the
-templates into PHP scripts. This happens once when each template is
-first invoked, and then the compiled versions are used from that point
-forward. Smarty takes care of this for you, so the template designer
-just edits the Smarty templates and never has to manage the compiled
-versions. This approach keeps the templates easy to maintain, and yet
-keeps execution times extremely fast since the compiled code is just
-PHP. And of course, all PHP scripts take advantage of PHP op-code caches
-such as APC.
-
-## Template Inheritance
-
-Template inheritance was introduced in Smarty 3. Before template
-inheritance, we managed our templates in
-pieces such as header and footer templates. This organization lends
-itself to many problems that require some hoop-jumping, such as managing
-content within the header/footer on a per-page basis. With template
-inheritance, instead of including other templates we maintain our
-templates as single pages. We can then manipulate blocks of content
-within by inheriting them. This makes templates intuitive, efficient and
-easy to manage. See
-[Template Inheritance](./programmers/advanced-features/advanced-features-template-inheritance.md)
-for more info.
-
-## Why not use XML/XSLT syntax?
-There are a couple of good reasons. First, Smarty can be used for more
-than just XML/HTML based templates, such as generating emails,
-javascript, CSV, and PDF documents. Second, XML/XSLT syntax is even more
-verbose and fragile than PHP code! It is perfect for computers, but
-horrible for humans. Smarty is about being easy to read, understand and
-maintain.
-
-## Template Security
-Although Smarty insulates you from PHP, you still have the option to use
-it in certain ways if you wish. Template security forces the restriction
-of PHP (and select Smarty functions.) This is useful if you have third
-parties editing templates, and you don't want to unleash the full power
-of PHP or Smarty to them.
-
-## Integration
-Sometimes Smarty gets compared to Model-View-Controller (MVC)
-frameworks. Smarty is not an MVC, it is just the presentation layer,
-much like the View (V) part of an MVC. As a matter of fact, Smarty can
-easily be integrated as the view layer of an MVC. Many of the more
-popular ones have integration instructions for Smarty, or you may find
-some help here in the forums and documentation.
-
-## Other Template Engines
-Smarty is not the only engine following the *"Separate Programming Code
-from Presentation"* philosophy. For instance, Python has template
-engines built around the same principles such as Django Templates and
-CheetahTemplate. *Note: Languages such as Python do not mix with HTML
-natively, which give them the advantage of proper programming code
-separation from the outset. There are libraries available to mix Python
-with HTML, but they are typically avoided.*
-
-## What Smarty is Not
-
-Smarty is not an application development framework. Smarty is not an
-MVC. Smarty is not an alternative to Laravel, Symfony, CodeIgniter,
-or any of the other application development frameworks for PHP.
-
-Smarty is a template engine, and works as the (V)iew component of your
-application. Smarty can easily be coupled to any of the engines listed
-above as the view component. No different than any other software,
-Smarty has a learning curve. Smarty does not guarantee good application
-design or proper separation of presentation, this still needs to be
-addressed by a competent developer and web designer.
-
-## Is Smarty Right for Me?
-
-Smarty is not meant to be a tool for every job. The important thing is
-to identify if Smarty fits your needs. There are some important
-questions to ask yourself:
-
-### Template Syntax
-Are you content with PHP tags mixed with HTML? Are your
-web designers comfortable with PHP? Would your web designers prefer a
-tag-based syntax designed for presentation? Some experience working with
-both Smarty and PHP helps answer these questions.
-
-### The Business Case
-Is there a requirement to insulate the templates from
-PHP? Do you have untrusted parties editing templates that you do not
-wish to unleash the power of PHP to? Do you need to programmatically
-control what is and is not available within the templates? Smarty
-supplies these capabilities by design.
-
-## Feature set
-Does Smarty's features such as caching, template
-inheritance and plugin architecture save development cycles writing code
-that would be needed otherwise? Does the codebase or framework you plan
-on using have the features you need for the presentation component?
-
-## Sites using Smarty
-Many well-known PHP projects make use of Smarty such as XOOPS CMS, CMS Made Simple, Tiki
-CMS/Groupware and X-Cart to name a few.
-
-## Summary
-Whether you are using Smarty for a small website or massive enterprise
-solution, it can accommodate your needs. There are numerous features
-that make Smarty a great choice:
-
-- separation of PHP from HTML/CSS just makes sense
-- readability for organization and management
-- security for 3rd party template access
-- feature completeness, and easily extendable to your own needs
-- massive user base, Smarty is here to stay
-- LGPL license for commercial use
-- 100% free to use, open source project
diff --git a/vendor/smarty/smarty/docs/getting-started.md b/vendor/smarty/smarty/docs/getting-started.md
deleted file mode 100644
index de55ffe8e..000000000
--- a/vendor/smarty/smarty/docs/getting-started.md
+++ /dev/null
@@ -1,169 +0,0 @@
-What is Smarty?
-==============
-
-## Requirements
-Smarty can be run with PHP 7.1 to PHP 8.1.
-
-## Installation
-Smarty versions 3.1.11 or later can be installed with [Composer](https://getcomposer.org/).
-
-To get the latest stable version of Smarty use:
-```bash
-composer require smarty/smarty
-````
-
-To get the latest, unreleased version, use:
-```bash
-composer require smarty/smarty:dev-master
-````
-
-To get the previous stable version of Smarty, Smarty 3, use:
-```bash
-composer require smarty/smarty:^3
-````
-
-Here's how you create an instance of Smarty in your PHP scripts:
-```php
-<?php
-
-require 'vendor/autoload.php';
-$smarty = new Smarty();
-```
-
-Now that the library files are in place, it's time to setup the Smarty
-directories for your application.
-
-Smarty requires four directories which are by default named
- [`templates`](./programmers/api-variables/variable-template-dir.md),
- [`configs`](./programmers/api-variables/variable-config-dir.md),
- [`templates_c`](./programmers/api-variables/variable-compile-dir.md)
- and
- [`cache`](./programmers/api-variables/variable-cache-dir.md)
- relative to the current working directory.
-
-The defaults can be changed as follows:
-```php
-$smarty = new Smarty();
-$smarty->setTemplateDir('/some/template/dir');
-$smarty->setConfigDir('/some/config/dir');
-$smarty->setCompileDir('/some/compile/dir');
-$smarty->setCacheDir('/some/cache/dir');
-```
-
-The compile dir and cache dir need to be writable for the user running the PHP script.
-
-> **Note**
->
-> This is usually user "nobody" and group "nobody". For OS X users, the
-> default is user "www" and group "www". If you are using Apache, you
-> can look in your `httpd.conf` file to see what user and group are
-> being used.
-
-```bash
-chown nobody:nobody /web/www.example.com/guestbook/templates_c/
-chmod 770 /web/www.example.com/guestbook/templates_c/
-
-chown nobody:nobody /web/www.example.com/guestbook/cache/
-chmod 770 /web/www.example.com/guestbook/cache/
-```
-
-You can verify if your system has the correct access rights for
- these directories with [`testInstall()`](./programmers/api-functions/api-test-install.md):
-
-```php
-$smarty = new Smarty();
-$smarty->setTemplateDir('/some/template/dir');
-$smarty->setConfigDir('/some/config/dir');
-$smarty->setCompileDir('/some/compile/dir');
-$smarty->setCacheDir('/some/cache/dir');
-$smarty->testInstall();
-```
-
-Now, let's create the `index.tpl` file that Smarty will display. This
-needs to be located in the [`$template_dir`](./programmers/api-variables/variable-template-dir.md).
-
-```html
-{* Smarty *}
-Hello {$name}, welcome to Smarty!
-```
-
-> **Note**
->
-> `{* Smarty *}` is a template [comment](./designers/language-basic-syntax/language-syntax-comments.md). It
-> is not required, but it is good practice to start all your template
-> files with this comment. It makes the file easy to recognize
-> regardless of the file extension. For example, text editors could
-> recognize the file and turn on special syntax highlighting.
-
-Now lets edit our php file. We'll create an instance of Smarty,
-[`assign()`](./programmers/api-functions/api-assign.md) a template variable and
-[`display()`](./programmers/api-functions/api-display.md) the `index.tpl` file.
-
-```php
-<?php
-
-require 'vendor/autoload.php';
-
-$smarty = new Smarty();
-
-$smarty->setTemplateDir('/web/www.example.com/guestbook/templates/');
-$smarty->setCompileDir('/web/www.example.com/guestbook/templates_c/');
-$smarty->setConfigDir('/web/www.example.com/guestbook/configs/');
-$smarty->setCacheDir('/web/www.example.com/guestbook/cache/');
-
-$smarty->assign('name', 'Ned');
-$smarty->display('index.tpl');
-
-```
-
-> **Note**
->
-> In our example, we are setting absolute paths to all of the Smarty
-> directories. If `/web/www.example.com/guestbook/` is within your PHP
-> include\_path, then these settings are not necessary. However, it is
-> more efficient and (from experience) less error-prone to set them to
-> absolute paths. This ensures that Smarty is getting files from the
-> directories you intended.
-
-Now, run your PHP file. You should see *\"Hello Ned, welcome to Smarty!\"*
-
-You have completed the basic setup for Smarty!
-
-## Extended Setup {#installing.smarty.extended}
-==============
-
-This is a continuation of the [basic
-installation](#installing.smarty.basic), please read that first!
-
-A slightly more flexible way to setup Smarty is to extend the Smarty
-class and initialize your Smarty
-environment. So instead of repeatedly setting directory paths, assigning
-the same vars, etc., we can do that in one place.
-
-```php
-<?php
-
-class Smarty_GuestBook extends Smarty {
-
- public function __construct()
- {
- parent::__construct();
-
- $this->setTemplateDir('/web/www.example.com/guestbook/templates/');
- $this->setCompileDir('/web/www.example.com/guestbook/templates_c/');
- $this->setConfigDir('/web/www.example.com/guestbook/configs/');
- $this->setCacheDir('/web/www.example.com/guestbook/cache/');
-
- $this->caching = Smarty::CACHING_LIFETIME_CURRENT;
- $this->assign('app_name', 'Guest Book');
- }
-
-}
-```
-
-Now, we can use `Smarty_GuestBook` instead of `Smarty` in our scripts:
-```php
-$smarty = new Smarty_GuestBook();
-$smarty->assign('name','Ned');
-$smarty->display('index.tpl');
-```
diff --git a/vendor/smarty/smarty/docs/index.md b/vendor/smarty/smarty/docs/index.md
deleted file mode 100644
index cf2b2ddcd..000000000
--- a/vendor/smarty/smarty/docs/index.md
+++ /dev/null
@@ -1,50 +0,0 @@
-# Smarty 4 Documentation
-Smarty is a template engine for PHP, facilitating the separation of presentation (HTML/CSS) from application logic.
-
-It allows you to write **templates**, using **variables**, **modifiers**, **functions** and **comments**, like this:
-```html
-<h1>{$title|escape}</h1>
-
-<p>
- The number of pixels is: {math equation="x * y" x=$height y=$width}.
-</p>
-```
-
-When this template is rendered, with the value "Hello world" for the variable $title, 640 for $width,
-and 480 for $height, the result is:
-```html
-<h1>Hello world</h1>
-
-<p>
- The number of pixels is: 307200.
-</p>
-```
-
-## Introduction
-- [Philosophy](./philosophy.md) - or "Why do I need a template engine?"
-- [Features](./features.md) - or "Why do I want Smarty?"
-- [Getting Started](./getting-started.md)
-
-## Smarty for template designers
-- [Basic Syntax](./designers/language-basic-syntax.md)
-- [Variables](./designers/language-variables.md)
-- [Variable Modifiers](./designers/language-modifiers.md)
-- [Combining Modifiers](./designers/language-combining-modifiers.md)
-- [Built-in Functions](./designers/language-builtin-functions.md)
-- [Custom Functions](./designers/language-custom-functions.md)
-- [Config Files](./designers/config-files.md)
-- [Debugging Console](./designers/chapter-debugging-console.md)
-
-## Smarty for php developers
-- [Charset Encoding](./programmers/charset.md)
-- [Constants](./programmers/smarty-constants.md)
-- [Smarty Class Variables](./programmers/api-variables.md)
-- [Smarty Class Methods](./programmers/api-functions.md)
-- [Caching](./programmers/caching.md)
-- [Resources](./programmers/resources.md)
-- [Advanced Features](./programmers/advanced-features.md)
-- [Extending Smarty With Plugins](./programmers/plugins.md)
-
-## Other
-- [Some random tips & tricks](./appendixes/tips.md)
-- [Troubleshooting](./appendixes/troubleshooting.md)
diff --git a/vendor/smarty/smarty/docs/philosophy.md b/vendor/smarty/smarty/docs/philosophy.md
deleted file mode 100644
index 86f6c46ed..000000000
--- a/vendor/smarty/smarty/docs/philosophy.md
+++ /dev/null
@@ -1,108 +0,0 @@
-Philosophy
-=======
-
-## What is Smarty?
-
-Smarty is a template engine for PHP. More specifically, it facilitates a
-manageable way to separate application logic and content from its
-presentation. This is best described in a situation where the
-application programmer and the template designer play different roles,
-or in most cases are not the same person.
-
-For example, let\'s say you are creating a web page that is displaying a
-newspaper article.
-
-- The article `$headline`, `$tagline`, `$author` and `$body` are
- content elements, they contain no information about how they will be
- presented. They are [passed](#api.assign) into Smarty by the
- application.
-
-- Then the template designer edits the templates and uses a
- combination of HTML tags and [template tags](#language.basic.syntax)
- to format the presentation of these
- [variables](#language.syntax.variables) with elements such as
- tables, div\'s, background colors, font sizes, style sheets, svg
- etc.
-
-- One day the programmer needs to change the way the article content
- is retrieved, ie a change in application logic. This change does not
- affect the template designer, the content will still arrive in the
- template exactly the same.
-
-- Likewise, if the template designer wants to completely redesign the
- templates, this would require no change to the application logic.
-
-- Therefore, the programmer can make changes to the application logic
- without the need to restructure templates, and the template designer
- can make changes to templates without breaking application logic.
-
-## Goals
-
-The Smarty design was largely driven by these goals:
-- clean separation of presentation from application code
-- PHP backend, Smarty template frontend
-- complement PHP, not replace it
-- fast development/deployment for programmers and designers
-- quick and easy to maintain
-- syntax easy to understand, no PHP knowledge necessary
-- flexibility for custom development
-- security: insulation from PHP
-- free, open source
-
-
-
-## Two camps of thought
-
-When it comes to templating in PHP, there are basically two camps of
-thought. The first camp exclaims that \"PHP is a template engine\". This
-approach simply mixes PHP code with HTML. Although this approach is
-fastest from a pure script-execution point of view, many would argue
-that the PHP syntax is messy and complicated when mixed with tagged
-markup such as HTML.
-
-The second camp exclaims that presentation should be void of all
-programming code, and instead use simple tags to indicate where
-application content is revealed. This approach is common with other
-template engines (even in other programming languages), and is also the
-approach that Smarty takes. The idea is to keep the templates focused
-squarely on presentation, void of application code, and with as little
-overhead as possible.
-
-## Why is separating PHP from templates important?
-
-Two major benefits:
-
-- SYNTAX: Templates typically consist of semantic markup such as HTML.
- PHP syntax works well for application code, but quickly degenerates
- when mixed with HTML. Smarty\'s simple {tag} syntax is designed
- specifically to express presentation. Smarty focuses your templates
- on presentation and less on \"code\". This lends to quicker template
- deployment and easier maintenance. Smarty syntax requires no working
- knowledge of PHP, and is intuitive for programmers and
- non-programmers alike.
-
-- INSULATION: When PHP is mixed with templates, there are no
- restrictions on what type of logic can be injected into a template.
- Smarty insulates the templates from PHP, creating a controlled
- separation of presentation from business logic. Smarty also has
- security features that can further enforce restrictions on
- templates.
-
-## Web designers and PHP
-
-A common question: "Web designers have to learn a syntax anyway, why
-not PHP?" Of course web designers can learn PHP, and they may already
-be familiar with it. The issue isn't their ability to learn PHP, it is
-about the consequences of mixing PHP with HTML. If designers use PHP, it
-is too easy to add code into templates that doesn't belong there (you
-just handed them a swiss-army knife when they just needed a knife.) You
-can teach them the rules of application design, but this is probably
-something they don't really need to learn (now they are developers!)
-The PHP manual is also an overwhelming pile of information to sift
-through. It is like handing the owner of a car the factory assembly
-manual when all they need is the owners manual. Smarty gives web
-designers exactly the tools they need, and gives developers fine-grained
-control over those tools. The simplicity of the tag-based syntax is also
-a huge welcome for designers, it helps them streamline the organization
-and management of templates.
-
diff --git a/vendor/smarty/smarty/docs/programmers/advanced-features.md b/vendor/smarty/smarty/docs/programmers/advanced-features.md
deleted file mode 100644
index 60d4416b5..000000000
--- a/vendor/smarty/smarty/docs/programmers/advanced-features.md
+++ /dev/null
@@ -1,14 +0,0 @@
-Advanced Features {#advanced.features}
-=================
-
-## Table of contents
-
-- [Security](./advanced-features/advanced-features-security.md)
-- [Changing settings by template](./advanced-features/advanced-features-template-settings.md)
-- [Template Inheritance](./advanced-features/advanced-features-template-inheritance.md)
-- [Streams](./advanced-features/advanced-features-streams.md)
-- [Objects](./advanced-features/advanced-features-objects.md)
-- [Static Classes](./advanced-features/advanced-features-static-classes.md)
-- [Prefilters](./advanced-features/advanced-features-prefilters.md)
-- [Postfilters](./advanced-features/advanced-features-postfilters.md)
-- [Output Filters](./advanced-features/advanced-features-outputfilters.md)
diff --git a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-objects.md b/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-objects.md
deleted file mode 100644
index 6b4870b51..000000000
--- a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-objects.md
+++ /dev/null
@@ -1,99 +0,0 @@
-Objects {#advanced.features.objects}
-=======
-
-Smarty allows access to PHP [objects](&url.php-manual;object) through
-the templates.
-
-> **Note**
->
-> When you assign/register objects to templates, be sure that all
-> properties and methods accessed from the template are for presentation
-> purposes only. It is very easy to inject application logic through
-> objects, and this leads to poor designs that are difficult to manage.
-> See the Best Practices section of the Smarty website.
-
-There are two ways to access them.
-
-- One way is to [register objects](#api.register.object) to the
- template, then use access them via syntax similar to [custom
- functions](#language.custom.functions).
-
-- The other way is to [`assign()`](#api.assign) objects to the
- templates and access them much like any other assigned variable.
-
-The first method has a much nicer template syntax. It is also more
-secure, as a registered object can be restricted to certain methods or
-properties. However, **a registered object cannot be looped over or
-assigned in arrays of objects**, etc. The method you choose will be
-determined by your needs, but use the first method whenever possible to
-keep template syntax to a minimum.
-
-If security is enabled, no private methods or functions can be accessed
-(beginningwith \'\_\'). If a method and property of the same name exist,
-the method will be used.
-
-You can restrict the methods and properties that can be accessed by
-listing them in an array as the third registration parameter.
-
-By default, parameters passed to objects through the templates are
-passed the same way [custom functions](#language.custom.functions) get
-them. An associative array is passed as the first parameter, and the
-smarty object as the second. If you want the parameters passed one at a
-time for each argument like traditional object parameter passing, set
-the fourth registration parameter to FALSE.
-
-The optional fifth parameter has only effect with `format` being TRUE
-and contains a list of methods that should be treated as blocks. That
-means these methods have a closing tag in the template
-(`{foobar->meth2}...{/foobar->meth2}`) and the parameters to the methods
-have the same synopsis as the parameters for
-[`block-function-plugins`](#plugins.block.functions): They get the four
-parameters `$params`, `$content`, `$smarty` and `&$repeat` and they also
-behave like block-function-plugins.
-
-
- <?php
- // the object
-
- class My_Object {
- function meth1($params, $smarty_obj) {
- return 'this is my meth1';
- }
- }
-
- $myobj = new My_Object;
-
- // registering the object (will be by reference)
- $smarty->registerObject('foobar',$myobj);
-
- // if we want to restrict access to certain methods or properties, list them
- $smarty->registerObject('foobar',$myobj,array('meth1','meth2','prop1'));
-
- // if you want to use the traditional object parameter format, pass a boolean of false
- $smarty->registerObject('foobar',$myobj,null,false);
-
- // We can also assign objects. assign_by_ref when possible.
- $smarty->assign_by_ref('myobj', $myobj);
-
- $smarty->display('index.tpl');
- ?>
-
-
-
-And here\'s how to access your objects in `index.tpl`:
-
-
- {* access our registered object *}
- {foobar->meth1 p1='foo' p2=$bar}
-
- {* you can also assign the output *}
- {foobar->meth1 p1='foo' p2=$bar assign='output'}
- the output was {$output}
-
- {* access our assigned object *}
- {$myobj->meth1('foo',$bar)}
-
-
-
-See also [`registerObject()`](#api.register.object) and
-[`assign()`](#api.assign).
diff --git a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-outputfilters.md b/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-outputfilters.md
deleted file mode 100644
index 393d7da23..000000000
--- a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-outputfilters.md
+++ /dev/null
@@ -1,43 +0,0 @@
-Output Filters {#advanced.features.outputfilters}
-==============
-
-When the template is invoked via [`display()`](#api.display) or
-[`fetch()`](#api.fetch), its output can be sent through one or more
-output filters. This differs from
-[`postfilters`](#advanced.features.postfilters) because postfilters
-operate on compiled templates before they are saved to the disk, whereas
-output filters operate on the template output when it is executed.
-
-Output filters can be either [registered](#api.register.filter) or
-loaded from the [plugins directory](#variable.plugins.dir) by using the
-[`loadFilter()`](#api.load.filter) method or by setting the
-[`$autoload_filters`](#variable.autoload.filters) variable. Smarty will
-pass the template output as the first argument, and expect the function
-to return the result of the processing.
-
-
- <?php
- // put this in your application
- function protect_email($tpl_output, Smarty_Internal_Template $template)
- {
- $tpl_output =
- preg_replace('!(\S+)@([a-zA-Z0-9\.\-]+\.([a-zA-Z]{2,3}|[0-9]{1,3}))!',
- '$1%40$2', $tpl_output);
- return $tpl_output;
- }
-
- // register the outputfilter
- $smarty->registerFilter("output","protect_email");
- $smarty->display("index.tpl');
-
- // now any occurrence of an email address in the template output will have
- // a simple protection against spambots
- ?>
-
-
-
-See also [`registerFilter()`](#api.register.filter),
-[`loadFilter()`](#api.load.filter),
-[`$autoload_filters`](#variable.autoload.filters),
-[postfilters](#advanced.features.postfilters) and
-[`$plugins_dir`](#variable.plugins.dir).
diff --git a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-postfilters.md b/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-postfilters.md
deleted file mode 100644
index d3bad546a..000000000
--- a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-postfilters.md
+++ /dev/null
@@ -1,40 +0,0 @@
-Postfilters {#advanced.features.postfilters}
-===========
-
-Template postfilters are PHP functions that your templates are ran
-through *after they are compiled*. Postfilters can be either
-[registered](#api.register.filter) or loaded from the [plugins
-directory](#variable.plugins.dir) by using the
-[`loadFilter()`](#api.load.filter) function or by setting the
-[`$autoload_filters`](#variable.autoload.filters) variable. Smarty will
-pass the compiled template code as the first argument, and expect the
-function to return the result of the processing.
-
-
- <?php
- // put this in your application
- function add_header_comment($tpl_source, Smarty_Internal_Template $template)
- {
- return "<?php echo \"<!-- Created by Smarty! -->\n\"; ?>\n".$tpl_source;
- }
-
- // register the postfilter
- $smarty->registerFilter('post','add_header_comment');
- $smarty->display('index.tpl');
- ?>
-
-
-
-The postfilter above will make the compiled Smarty template `index.tpl`
-look like:
-
-
- <!-- Created by Smarty! -->
- {* rest of template content... *}
-
-
-
-See also [`registerFilter()`](#api.register.filter),
-[prefilters](#advanced.features.prefilters),
-[outputfilters](#advanced.features.outputfilters), and
-[`loadFilter()`](#api.load.filter).
diff --git a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-prefilters.md b/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-prefilters.md
deleted file mode 100644
index 76229e633..000000000
--- a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-prefilters.md
+++ /dev/null
@@ -1,36 +0,0 @@
-Prefilters {#advanced.features.prefilters}
-==========
-
-Template prefilters are PHP functions that your templates are ran
-through *before they are compiled*. This is good for preprocessing your
-templates to remove unwanted comments, keeping an eye on what people are
-putting in their templates, etc.
-
-Prefilters can be either [registered](#api.register.filter) or loaded
-from the [plugins directory](#variable.plugins.dir) by using
-[`loadFilter()`](#api.load.filter) function or by setting the
-[`$autoload_filters`](#variable.autoload.filters) variable.
-
-Smarty will pass the template source code as the first argument, and
-expect the function to return the resulting template source code.
-
-This will remove all the html comments in the template source.
-
-
- <?php
- // put this in your application
- function remove_dw_comments($tpl_source, Smarty_Internal_Template $template)
- {
- return preg_replace("/<!--#.*-->/U",'',$tpl_source);
- }
-
- // register the prefilter
- $smarty->registerFilter('pre','remove_dw_comments');
- $smarty->display('index.tpl');
- ?>
-
-
-
-See also [`registerFilter()`](#api.register.filter),
-[postfilters](#advanced.features.postfilters) and
-[`loadFilter()`](#api.load.filter).
diff --git a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-security.md b/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-security.md
deleted file mode 100644
index 98817a433..000000000
--- a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-security.md
+++ /dev/null
@@ -1,168 +0,0 @@
-Security {#advanced.features.security}
-========
-
-Security is good for situations when you have untrusted parties editing
-the templates eg via ftp, and you want to reduce the risk of system
-security compromises through the template language.
-
-The settings of the security policy are defined by properties of an
-instance of the Smarty\_Security class. These are the possible settings:
-
-- `$php_handling` determines how Smarty to handle PHP code embedded in
- templates. Possible values are:
-
- - Smarty::PHP\_PASSTHRU -\> echo PHP tags as they are
-
- - Smarty::PHP\_QUOTE -\> escape tags as entities
-
- - Smarty::PHP\_REMOVE -\> remove php tags
-
- - Smarty::PHP\_ALLOW -\> execute php tags
-
- The default value is Smarty::PHP\_PASSTHRU.
-
- If security is enabled the [`$php_handling`](#variable.php.handling)
- setting of the Smarty object is not checked for security.
-
-- `$secure_dir` is an array of template directories that are
- considered secure. [`$template_dir`](#variable.template.dir)
- concidered secure implicitly. The default is an empty array.
-
-- `$trusted_dir` is an array of all directories that are considered
- trusted. Trusted directories are where you keep php scripts that are
- executed directly from the templates with
- [`{include_php}`](#language.function.include.php). The default is an
- empty array.
-
-- `$trusted_uri` is an array of regular expressions matching URIs that
- are considered trusted. This security directive used by
- [`{fetch}`](#language.function.fetch) and
- [`{html_image}`](#language.function.html.image). URIs passed to
- these functions are reduced to `{$PROTOCOL}://{$HOSTNAME}` to allow
- simple regular expressions (without having to deal with edge cases
- like authentication-tokens).
-
- The expression `'#https?://.*smarty.net$#i'` would allow accessing
- the follwing URIs:
-
- - `http://smarty.net/foo`
-
- - `http://smarty.net/foo`
-
- - `http://www.smarty.net/foo`
-
- - `http://smarty.net/foo`
-
- - `https://foo.bar.www.smarty.net/foo/bla?blubb=1`
-
- but deny access to these URIs:
-
- - `http://smarty.com/foo` (not matching top-level domain \"com\")
-
- - `ftp://www.smarty.net/foo` (not matching protocol \"ftp\")
-
- - `http://www.smarty.net.otherdomain.com/foo` (not matching end of
- domain \"smarty.net\")
-
-- `$static_classes` is an array of classes that are considered
- trusted. The default is an empty array which allows access to all
- static classes. To disable access to all static classes set
- \$static\_classes = null.
-
-- `$php_functions` is an array of PHP functions that are considered
- trusted and can be used from within template. To disable access to
- all PHP functions set \$php\_functions = null. An empty array (
- \$php\_functions = array() ) will allow all PHP functions. The
- default is array(\'isset\', \'empty\', \'count\', \'sizeof\',
- \'in\_array\', \'is\_array\',\'time\',\'nl2br\').
-
-- `$php_modifiers` is an array of PHP functions that are considered
- trusted and can be used from within template as modifier. To disable
- access to all PHP modifier set \$php\_modifier = null. An empty
- array ( \$php\_modifier = array() ) will allow all PHP functions.
- The default is array(\'escape\',\'count\').
-
-- `$streams` is an array of streams that are considered trusted and
- can be used from within template. To disable access to all streams
- set \$streams = null. An empty array ( \$streams = array() ) will
- allow all streams. The default is array(\'file\').
-
-- `$allowed_modifiers` is an array of (registered / autoloaded)
- modifiers that should be accessible to the template. If this array
- is non-empty, only the herein listed modifiers may be used. This is
- a whitelist.
-
-- `$disabled_modifiers` is an array of (registered / autoloaded)
- modifiers that may not be accessible to the template.
-
-- `$allowed_tags` is a boolean flag which controls if constants can
- function-, block and filter plugins that should be accessible to the
- template. If this array is non-empty, only the herein listed
- modifiers may be used. This is a whitelist.
-
-- `$disabled_tags` is an array of (registered / autoloaded) function-,
- block and filter plugins that may not be accessible to the template.
-
-- `$allow_constants` is a boolean flag which controls if constants can
- be accessed by the template. The default is \"true\".
-
-- `$allow_super_globals` is a boolean flag which controls if the PHP
- super globals can be accessed by the template. The default is
- \"true\".
-
-- `$allow_php_tag` is a boolean flag which controls if {php} and
- {include\_php} tags can be used by the template. The default is
- \"false\".
-
-If security is enabled, no private methods, functions or properties of
-static classes or assigned objects can be accessed (beginningwith
-\'\_\') by the template.
-
-To customize the security policy settings you can extend the
-Smarty\_Security class or create an instance of it.
-
-
- <?php
- require 'Smarty.class.php';
-
- class My_Security_Policy extends Smarty_Security {
- // disable all PHP functions
- public $php_functions = null;
- // remove PHP tags
- public $php_handling = Smarty::PHP_REMOVE;
- // allow everthing as modifier
- public $php_modifiers = array();
- }
- $smarty = new Smarty();
- // enable security
- $smarty->enableSecurity('My_Security_Policy');
- ?>
-
-
- <?php
- require 'Smarty.class.php';
- $smarty = new Smarty();
- $my_security_policy = new Smarty_Security($smarty);
- // disable all PHP functions
- $my_security_policy->php_functions = null;
- // remove PHP tags
- $my_security_policy->php_handling = Smarty::PHP_REMOVE;
- // allow everthing as modifier
- $my_security_policy->php_modifiers = array();
- // enable security
- $smarty->enableSecurity($my_security_policy);
- ?>
-
-
- <?php
- require 'Smarty.class.php';
- $smarty = new Smarty();
- // enable default security
- $smarty->enableSecurity();
- ?>
-
-> **Note**
->
-> Most security policy settings are only checked when the template gets
-> compiled. For that reasion you should delete all cached and compiled
-> template files when you change your security settings.
diff --git a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-static-classes.md b/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-static-classes.md
deleted file mode 100644
index 8ef79113c..000000000
--- a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-static-classes.md
+++ /dev/null
@@ -1,27 +0,0 @@
-Static Classes {#advanced.features.static.classes}
-==============
-
-You can directly access static classes. The syntax is the same as in
-PHP.
-
-> **Note**
->
-> Direct access to PHP classes is not recommended. This ties the
-> underlying application code structure directly to the presentation,
-> and also complicates template syntax. It is recommended to register
-> plugins which insulate templates from PHP classes/objects. Use at your
-> own discretion. See the Best Practices section of the Smarty website.
-
-
- {assign var=foo value=myclass::BAR} <--- class constant BAR
-
- {assign var=foo value=myclass::method()} <--- method result
-
- {assign var=foo value=myclass::method1()->method2} <--- method chaining
-
- {assign var=foo value=myclass::$bar} <--- property bar of class myclass
-
- {assign var=foo value=$bar::method} <--- using Smarty variable bar as class name
-
-
-
diff --git a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-streams.md b/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-streams.md
deleted file mode 100644
index d6f7a0de5..000000000
--- a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-streams.md
+++ /dev/null
@@ -1,15 +0,0 @@
-Streams {#advanced.features.streams}
-=======
-
-You can also use streams to call variables. *{\$foo:bar}* will use the
-*foo://bar* stream to get the template variable.
-
-Using a PHP stream for a template variable resource from within a
-template.
-
-
- {$foo:bar}
-
-
-
-See also [`Template Resources`](#resources)
diff --git a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-template-inheritance.md b/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-template-inheritance.md
deleted file mode 100644
index 25295c38d..000000000
--- a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-template-inheritance.md
+++ /dev/null
@@ -1,128 +0,0 @@
-Template Inheritance {#advanced.features.template.inheritance}
-====================
-
-Inheritance brings the concept of Object Oriented Programming to
-templates, allowing you to define one (or more) base templates that can
-be extended by child templates. Extending means that the child template
-can override all or some of the parent named block areas.
-
-- The inheritance tree can be as deep as you want, meaning you can
- extend a file that extends another one that extends another one and
- so on.
-
-- The child templates can not define any content besides what\'s
- inside [`{block}`](#language.function.block) tags they override.
- Anything outside of [`{block}`](#language.function.block) tags will
- be removed.
-
-- The content of [`{block}`](#language.function.block) tags from child
- and parent templates can be merged by the `append` or `prepend`
- [`{block}`](#language.function.block) tag option flags and
- `{$smarty.block.parent}` or `{$smarty.block.child}` placeholders.
-
-- Template inheritance is a compile time process which creates a
- single compiled template file. Compared to corresponding solutions
- based on subtemplates included with the
- [`{include}`](#language.function.include) tag it does have much
- better performance when rendering.
-
-- The child template extends its parent defined with the
- [`{extends}`](#language.function.extends) tag, which must be the
- first line in the child template. Instead of using the
- [`{extends}`](#language.function.extends) tags in the template files
- you can define the whole template inheritance tree in the PHP script
- when you are calling [`fetch()`](#api.fetch) or
- [`display()`](#api.display) with the `extends:` template resource
- type. The later provides even more flexibillity.
-
-> **Note**
->
-> When `$compile_check` is enabled, all files in the inheritance tree
-> are checked for modifications upon each invocation. You may want to
-> disable `$compile_check` on production servers for this reason.
-
-> **Note**
->
-> If you have a subtemplate which is included with
-> [`{include}`](#language.function.include) and it contains
-> [`{block}`](#language.function.block) areas it works only if the
-> [`{include}`](#language.function.include) itself is called from within
-> a surrounding [`{block}`](#language.function.block). In the final
-> parent template you may need a dummy
-> [`{block}`](#language.function.block) for it.
-
-layout.tpl (parent)
-
-
- <html>
- <head>
- <title>{block name=title}Default Page Title{/block}</title>
- {block name=head}{/block}
- </head>
- <body>
- {block name=body}{/block}
- </body>
- </html>
-
-
-
-myproject.tpl (child)
-
-
- {extends file='layout.tpl'}
- {block name=head}
- <link href="/css/mypage.css" rel="stylesheet" type="text/css"/>
- <script src="/js/mypage.js"></script>
- {/block}
-
-
-
-
-mypage.tpl (grandchild)
-
-
- {extends file='myproject.tpl'}
- {block name=title}My Page Title{/block}
- {block name=head}
- <link href="/css/mypage.css" rel="stylesheet" type="text/css"/>
- <script src="/js/mypage.js"></script>
- {/block}
- {block name=body}My HTML Page Body goes here{/block}
-
-
-
-To render the above use
-
-
- $smarty->display('mypage.tpl');
-
-The resulting output is
-
-
- <html>
- <head>
- <title>My Page Title</title>
- <link href="/css/mypage.css" rel="stylesheet" type="text/css"/>
- <script src="/js/mypage.js"></script>
- </head>
- <body>
- My HTML Page Body goes here
- </body>
- </html>
-
-Instead of using [`{extends}`](#language.function.extends) tags in the
-template files you can define the inheritance tree in your PHP script by
-using the [`extends:` resource](#resources.extends) type.
-
-The code below will return same result as the example above.
-
-
- <?php
- $smarty->display('extends:layout.tpl|myproject.tpl|mypage.tpl');
- ?>
-
-
-
-See also [`{block}`](#language.function.block),
-[`{extends}`](#language.function.extends) and [`extends:`
-resource](#resources.extends)
diff --git a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-template-settings.md b/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-template-settings.md
deleted file mode 100644
index df1f86a8c..000000000
--- a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-template-settings.md
+++ /dev/null
@@ -1,32 +0,0 @@
-Changing settings by template {#advanced.features.template.settings}
-=============================
-
-Normally you configure the Smarty settings by modifying the
-[`Smarty class variables`](#api.variables). Furthermore you can register
-plugins, filters etc. with [`Smarty functions`](#api.functions).
-Modifications done to the Smarty object will be global for all
-templates.
-
-However the Smarty class variables and functions can be accessed or
-called by induvidual template objects. Modification done to a template
-object will apply only for that template and its included subtemplates.
-
-
- <?php
- $tpl = $smarty->createTemplate('index.tpl);
- $tpl->cache_lifetime = 600;
- //or
- $tpl->setCacheLifetime(600);
- $smarty->display($tpl);
- ?>
-
-
-
-
- <?php
- $tpl = $smarty->createTemplate('index.tpl);
- $tpl->registerPlugin('modifier','mymodifier');
- $smarty->display($tpl);
- ?>
-
-
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions.md b/vendor/smarty/smarty/docs/programmers/api-functions.md
deleted file mode 100644
index 6f120fa9a..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions.md
+++ /dev/null
@@ -1,64 +0,0 @@
-Smarty Class Methods {#api.functions}
-====================
-
-## Table of contents
-
-- [addConfigDir()](./api-functions/api-add-config-dir.md) — add a directory to the list of directories where config files are stored
-- [addPluginsDir()](./api-functions/api-add-plugins-dir.md) — add a directory to the list of directories where plugins are stored
-- [addTemplateDir()](./api-functions/api-add-template-dir.md) — add a directory to the list of directories where templates are stored
-- [append()](./api-functions/api-append.md) — append an element to an assigned array
-- [appendByRef()](./api-functions/api-append-by-ref.md) — append values by reference
-- [assign()](./api-functions/api-assign.md) — assign variables/objects to the templates
-- [assignByRef()](./api-functions/api-assign-by-ref.md) — assign values by reference
-- [clearAllAssign()](./api-functions/api-clear-all-assign.md) — clears the values of all assigned variables
-- [clearAllCache()](./api-functions/api-clear-all-cache.md) — clears the entire template cache
-- [clearAssign()](./api-functions/api-clear-assign.md) — clears the value of an assigned variable
-- [clearCache()](./api-functions/api-clear-cache.md) — clears the cache for a specific template
-- [clearCompiledTemplate()](./api-functions/api-clear-compiled-tpl.md) — clears the compiled version of the specified template resource
-- [clearConfig()](./api-functions/api-clear-config.md) — clears assigned config variables
-- [compileAllConfig()](./api-functions/api-compile-all-config.md) — compiles all known config files
-- [compileAllTemplates()](./api-functions/api-compile-all-templates.md) — compiles all known templates
-- [configLoad()](./api-functions/api-config-load.md) — loads config file data and assigns it to the template
-- [createData()](./api-functions/api-create-data.md) — creates a data object
-- [createTemplate()](./api-functions/api-create-template.md) — returns a template object
-- [disableSecurity()](./api-functions/api-disable-security.md) — disables template security
-- [display()](./api-functions/api-display.md) — displays the template
-- [enableSecurity()](./api-functions/api-enable-security.md) — enables template security
-- [fetch()](./api-functions/api-fetch.md) — returns the template output
-- [getCacheDir()](./api-functions/api-get-cache-dir.md) — return the directory where the rendered template's output is stored
-- [getCompileDir()](./api-functions/api-get-compile-dir.md) — returns the directory where compiled templates are stored
-- [getConfigDir()](./api-functions/api-get-config-dir.md) — return the directory where config files are stored
-- [getConfigVars()](./api-functions/api-get-config-vars.md) — returns the given loaded config variable value
-- [getPluginsDir()](./api-functions/api-get-plugins-dir.md) — return the directory where plugins are stored
-- [getRegisteredObject()](./api-functions/api-get-registered-object.md) — returns a reference to a registered object
-- [getTags()](./api-functions/api-get-tags.md) — return tags used by template
-- [getTemplateDir()](./api-functions/api-get-template-dir.md) — return the directory where templates are stored
-- [getTemplateVars()](./api-functions/api-get-template-vars.md) — returns assigned variable value(s)
-- [isCached()](./api-functions/api-is-cached.md) — returns true if there is a valid cache for this template
-- [loadFilter()](./api-functions/api-load-filter.md) — load a filter plugin
-- [muteExpectedErrors()](./api-functions/api-mute-expected-errors.md) — mutes expected warnings and notices deliberately generated by Smarty
-- [registerCacheResource()](./api-functions/api-register-cacheresource.md) — dynamically register CacheResources
-- [registerClass()](./api-functions/api-register-class.md) — register a class for use in the templates
-- [registerDefaultPluginHandler()](./api-functions/api-register-default-plugin-handler.md) — register a function which gets called on undefined tags
-- [registerFilter()](./api-functions/api-register-filter.md) — dynamically register filters
-- [registerPlugin()](./api-functions/api-register-plugin.md) — dynamically register plugins
-- [registerObject()](./api-functions/api-register-object.md) — register an object for use in the templates
-- [registerResource()](./api-functions/api-register-resource.md) — dynamically register resources
-- [setCacheDir()](./api-functions/api-set-cache-dir.md) — set the directory where the rendered template's output is stored
-- [setCompileDir()](./api-functions/api-set-compile-dir.md) — set the directory where compiled templates are stored
-- [setConfigDir()](./api-functions/api-set-config-dir.md) — set the directories where config files are stored
-- [setPluginsDir()](./api-functions/api-set-plugins-dir.md) — set the directories where plugins are stored
-- [setTemplateDir()](./api-functions/api-set-template-dir.md) — set the directories where templates are stored
-- [templateExists()](./api-functions/api-template-exists.md) — checks whether the specified template exists
-- [unregisterCacheResource()](./api-functions/api-unregister-cacheresource.md) — dynamically unregister a CacheResource plugin
-- [unregisterFilter()](./api-functions/api-unregister-filter.md) — dynamically unregister a filter
-- [unregisterPlugin()](./api-functions/api-unregister-plugin.md) — dynamically unregister plugins
-- [unregisterObject()](./api-functions/api-unregister-object.md) — dynamically unregister an object
-- [unregisterResource()](./api-functions/api-unregister-resource.md) — dynamically unregister a resource plugin
-- [testInstall()](./api-functions/api-test-install.md) — checks Smarty installation
-
-> **Note**
->
-> See
-> [`Changing settings by template`](./advanced-features/advanced-features-template-settings.md)
-> section for how to use the functions for individual templates.
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-add-config-dir.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-add-config-dir.md
deleted file mode 100644
index 6c8b54e41..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-add-config-dir.md
+++ /dev/null
@@ -1,49 +0,0 @@
-addConfigDir()
-
-add a directory to the list of directories where config files are stored
-
-Description
-===========
-
-Smarty
-
-addConfigDir
-
-string\|array
-
-config\_dir
-
-string
-
-key
-
-
- <?php
-
- // add directory where config files are stored
- $smarty->addConigDir('./config_1');
-
- // add directory where config files are stored and specify array-key
- $smarty->addConfigDir('./config_1', 'one');
-
- // add multiple directories where config files are stored and specify array-keys
- $smarty->addTemplateDir(array(
- 'two' => './config_2',
- 'three' => './config_3',
- ));
-
- // view the template dir chain
- var_dump($smarty->getConfigDir());
-
- // chaining of method calls
- $smarty->setConfigDir('./config')
- ->addConfigDir('./config_1', 'one')
- ->addConfigDir('./config_2', 'two');
-
- ?>
-
-
-
-See also [`getConfigDir()`](#api.get.config.dir),
-[`setConfigDir()`](#api.set.config.dir) and
-[`$config_dir`](#variable.config.dir).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-add-plugins-dir.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-add-plugins-dir.md
deleted file mode 100644
index ec9741b6e..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-add-plugins-dir.md
+++ /dev/null
@@ -1,42 +0,0 @@
-addPluginsDir()
-
-add a directory to the list of directories where plugins are stored
-
-Description
-===========
-
-Smarty
-
-addPluginsDir
-
-string\|array
-
-plugins\_dir
-
-
- <?php
-
- // add directory where plugins are stored
- $smarty->addPluginsDir('./plugins_1');
-
- // add multiple directories where plugins are stored
- $smarty->setPluginsDir(array(
- './plugins_2',
- './plugins_3',
- ));
-
- // view the plugins dir chain
- var_dump($smarty->getPluginsDir());
-
- // chaining of method calls
- $smarty->setPluginsDir('./plugins')
- ->addPluginsDir('./plugins_1')
- ->addPluginsDir('./plugins_2');
-
- ?>
-
-
-
-See also [`getPluginsDir()`](#api.get.plugins.dir),
-[`setPluginsDir()`](#api.set.plugins.dir) and
-[`$plugins_dir`](#variable.plugins.dir).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-add-template-dir.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-add-template-dir.md
deleted file mode 100644
index e0d24564c..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-add-template-dir.md
+++ /dev/null
@@ -1,49 +0,0 @@
-addTemplateDir()
-
-add a directory to the list of directories where templates are stored
-
-Description
-===========
-
-Smarty
-
-addTemplateDir
-
-string\|array
-
-template\_dir
-
-string
-
-key
-
-
- <?php
-
- // add directory where templates are stored
- $smarty->addTemplateDir('./templates_1');
-
- // add directory where templates are stored and specify array-key
- $smarty->addTemplateDir('./templates_1', 'one');
-
- // add multiple directories where templates are stored and specify array-keys
- $smarty->addTemplateDir(array(
- 'two' => './templates_2',
- 'three' => './templates_3',
- ));
-
- // view the template dir chain
- var_dump($smarty->getTemplateDir());
-
- // chaining of method calls
- $smarty->setTemplateDir('./templates')
- ->addTemplateDir('./templates_1', 'one')
- ->addTemplateDir('./templates_2', 'two');
-
- ?>
-
-
-
-See also [`getTemplateDir()`](#api.get.template.dir),
-[`setTemplateDir()`](#api.set.template.dir) and
-[`$template_dir`](#variable.template.dir).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-append-by-ref.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-append-by-ref.md
deleted file mode 100644
index cd396d9cc..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-append-by-ref.md
+++ /dev/null
@@ -1,46 +0,0 @@
-appendByRef()
-
-append values by reference
-
-Description
-===========
-
-void
-
-appendByRef
-
-string
-
-varname
-
-mixed
-
-var
-
-bool
-
-merge
-
-This is used to [`append()`](#api.append) values to the templates by
-reference.
-
-> **Note**
->
-> With the introduction of PHP5, `appendByRef()` is not necessary for
-> most intents and purposes. `appendByRef()` is useful if you want a PHP
-> array index value to be affected by its reassignment from a template.
-> Assigned object properties behave this way by default.
-
-NOTE.PARAMETER.MERGE
-
-
- <?php
- // appending name/value pairs
- $smarty->appendByRef('Name', $myname);
- $smarty->appendByRef('Address', $address);
- ?>
-
-
-
-See also [`append()`](#api.append), [`assign()`](#api.assign) and
-[`getTemplateVars()`](#api.get.template.vars).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-append.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-append.md
deleted file mode 100644
index b94586417..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-append.md
+++ /dev/null
@@ -1,61 +0,0 @@
-append()
-
-append an element to an assigned array
-
-Description
-===========
-
-void
-
-append
-
-mixed
-
-var
-
-void
-
-append
-
-string
-
-varname
-
-mixed
-
-var
-
-bool
-
-merge
-
-If you append to a string value, it is converted to an array value and
-then appended to. You can explicitly pass name/value pairs, or
-associative arrays containing the name/value pairs. If you pass the
-optional third parameter of TRUE, the value will be merged with the
-current array instead of appended.
-
-NOTE.PARAMETER.MERGE
-
-
- <?php
- // This is effectively the same as assign()
- $smarty->append('foo', 'Fred');
- // After this line, foo will now be seen as an array in the template
- $smarty->append('foo', 'Albert');
-
- $array = array(1 => 'one', 2 => 'two');
- $smarty->append('X', $array);
- $array2 = array(3 => 'three', 4 => 'four');
- // The following line will add a second element to the X array
- $smarty->append('X', $array2);
-
- // passing an associative array
- $smarty->append(array('city' => 'Lincoln', 'state' => 'Nebraska'));
- ?>
-
-
-
-See also [`appendByRef()`](#api.append.by.ref),
-[`assign()`](#api.assign) and
-[`getTemplateVars()`](#api.get.template.vars)
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-assign-by-ref.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-assign-by-ref.md
deleted file mode 100644
index 7c42b4836..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-assign-by-ref.md
+++ /dev/null
@@ -1,42 +0,0 @@
-assignByRef()
-
-assign values by reference
-
-Description
-===========
-
-void
-
-assignByRef
-
-string
-
-varname
-
-mixed
-
-var
-
-This is used to [`assign()`](#api.assign) values to the templates by
-reference.
-
-> **Note**
->
-> With the introduction of PHP5, `assignByRef()` is not necessary for
-> most intents and purposes. `assignByRef()` is useful if you want a PHP
-> array index value to be affected by its reassignment from a template.
-> Assigned object properties behave this way by default.
-
-
- <?php
- // passing name/value pairs
- $smarty->assignByRef('Name', $myname);
- $smarty->assignByRef('Address', $address);
- ?>
-
-
-
-See also [`assign()`](#api.assign),
-[`clearAllAssign()`](#api.clear.all.assign), [`append()`](#api.append),
-[`{assign}`](#language.function.assign) and
-[`getTemplateVars()`](#api.get.template.vars).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-assign.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-assign.md
deleted file mode 100644
index c3b9985d4..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-assign.md
+++ /dev/null
@@ -1,84 +0,0 @@
-assign()
-
-assign variables/objects to the templates
-
-Description
-===========
-
-void
-
-assign
-
-mixed
-
-var
-
-void
-
-assign
-
-string
-
-varname
-
-mixed
-
-var
-
-bool
-
-nocache
-
-You can explicitly pass name/value pairs, or associative arrays
-containing the name/value pairs.
-
-If you pass the optional third `nocache` parameter of TRUE, the variable
-is assigned as nocache variable. See
-[`Cacheability of Variables`](#cacheability.variables) for details.
-
-> **Note**
->
-> When you assign/register objects to templates, be sure that all
-> properties and methods accessed from the template are for presentation
-> purposes only. It is very easy to inject application logic through
-> objects, and this leads to poor designs that are difficult to manage.
-> See the Best Practices section of the Smarty website.
-
-
- <?php
- // passing name/value pairs
- $smarty->assign('Name', 'Fred');
- $smarty->assign('Address', $address);
-
- // passing an associative array
- $smarty->assign(array('city' => 'Lincoln', 'state' => 'Nebraska'));
-
- // passing an array
- $myArray = array('no' => 10, 'label' => 'Peanuts');
- $smarty->assign('foo',$myArray);
-
- // passing a row from a database (eg adodb)
- $sql = 'select id, name, email from contacts where contact ='.$id;
- $smarty->assign('contact', $db->getRow($sql));
- ?>
-
-These are accessed in the template with
-
-
- {* note the vars are case sensitive like php *}
- {$Name}
- {$Address}
- {$city}
- {$state}
-
- {$foo.no}, {$foo.label}
- {$contact.id}, {$contact.name},{$contact.email}
-
-To access more complex array assignments see
-[`{foreach}`](#language.function.foreach) and
-[`{section}`](#language.function.section)
-
-See also [`assignByRef()`](#api.assign.by.ref),
-[`getTemplateVars()`](#api.get.template.vars),
-[`clearAssign()`](#api.clear.assign), [`append()`](#api.append) and
-[`{assign}`](#language.function.assign)
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-all-assign.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-all-assign.md
deleted file mode 100644
index cc75fad0f..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-all-assign.md
+++ /dev/null
@@ -1,34 +0,0 @@
-clearAllAssign()
-
-clears the values of all assigned variables
-
-Description
-===========
-
-void
-
-clearAllAssign
-
-
- <?php
- // passing name/value pairs
- $smarty->assign('Name', 'Fred');
- $smarty->assign('Address', $address);
-
- // will output above
- print_r( $smarty->getTemplateVars() );
-
- // clear all assigned variables
- $smarty->clearAllAssign();
-
- // will output nothing
- print_r( $smarty->getTemplateVars() );
-
- ?>
-
-
-
-See also [`clearAssign()`](#api.clear.assign),
-[`clearConfig()`](#api.clear.config),
-[`getTemplateVars()`](#api.get.template.vars), [`assign()`](#api.assign)
-and [`append()`](#api.append)
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-all-cache.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-all-cache.md
deleted file mode 100644
index 55cbe5795..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-all-cache.md
+++ /dev/null
@@ -1,37 +0,0 @@
-clearAllCache()
-
-clears the entire template cache
-
-Description
-===========
-
-void
-
-clearAllCache
-
-int
-
-expire\_time
-
-As an optional parameter, you can supply a minimum age in seconds the
-cache files must be before they will get cleared.
-
-> **Note**
->
-> Since Smarty version 3.1.14 it is possible to delete cache files by
-> their individual expiration time at creation by passing constant
-> SMARTY::CLEAR\_EXPIRED as `expire_time` parameter.
-
-
- <?php
- // clear the entire cache
- $smarty->clearAllCache();
-
- // clears all files over one hour old
- $smarty->clearAllCache(3600);
- ?>
-
-
-
-See also [`clearCache()`](#api.clear.cache),
-[`isCached()`](#api.is.cached) and the [caching](#caching) page.
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-assign.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-assign.md
deleted file mode 100644
index ac0731e86..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-assign.md
+++ /dev/null
@@ -1,32 +0,0 @@
-clearAssign()
-
-clears the value of an assigned variable
-
-Description
-===========
-
-void
-
-clearAssign
-
-mixed
-
-var
-
-This can be a single value, or an array of values.
-
-
- <?php
- // clear a single variable
- $smarty->clearAssign('Name');
-
- // clears multiple variables
- $smarty->clearAssign(array('Name', 'Address', 'Zip'));
- ?>
-
-
-
-See also [`clearAllAssign()`](#api.clear.all.assign),
-[`clearConfig()`](#api.clear.config),
-[`getTemplateVars()`](#api.get.template.vars), [`assign()`](#api.assign)
-and [`append()`](#api.append)
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-cache.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-cache.md
deleted file mode 100644
index 3e17d80c8..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-cache.md
+++ /dev/null
@@ -1,60 +0,0 @@
-clearCache()
-
-clears the cache for a specific template
-
-Description
-===========
-
-void
-
-clearCache
-
-string
-
-template
-
-string
-
-cache\_id
-
-string
-
-compile\_id
-
-int
-
-expire\_time
-
-- If you have [multiple caches](#caching.multiple.caches) for a
- template, you can clear a specific cache by supplying the `cache_id`
- as the second parameter.
-
-- You can also pass a [`$compile_id`](#variable.compile.id) as a third
- parameter. You can [group templates together](#caching.groups) so
- they can be removed as a group, see the [caching section](#caching)
- for more information.
-
-- As an optional fourth parameter, you can supply a minimum age in
- seconds the cache file must be before it will get cleared.
-
- > **Note**
- >
- > Since Smarty version 3.1.14 it is possible to delete cache files
- > by their individual expiration time at creation by passing
- > constant SMARTY::CLEAR\_EXPIRED as fourth parameter.
-
-<!-- -->
-
-
- <?php
- // clear the cache for a template
- $smarty->clearCache('index.tpl');
-
- // clear the cache for a particular cache id in an multiple-cache template
- $smarty->clearCache('index.tpl', 'MY_CACHE_ID');
- ?>
-
-
-
-See also [`clearAllCache()`](#api.clear.all.cache) and
-[`caching`](#caching) section.
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-compiled-tpl.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-compiled-tpl.md
deleted file mode 100644
index dfa688eb6..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-compiled-tpl.md
+++ /dev/null
@@ -1,44 +0,0 @@
-clearCompiledTemplate()
-
-clears the compiled version of the specified template resource
-
-Description
-===========
-
-void
-
-clearCompiledTemplate
-
-string
-
-tpl\_file
-
-string
-
-compile\_id
-
-int
-
-exp\_time
-
-This clears the compiled version of the specified template resource, or
-all compiled template files if one is not specified. If you pass a
-[`$compile_id`](#variable.compile.id) only the compiled template for
-this specific [`$compile_id`](#variable.compile.id) is cleared. If you
-pass an exp\_time, then only compiled templates older than `exp_time`
-seconds are cleared, by default all compiled templates are cleared
-regardless of their age. This function is for advanced use only, not
-normally needed.
-
-
- <?php
- // clear a specific template resource
- $smarty->clearCompiledTemplate('index.tpl');
-
- // clear entire compile directory
- $smarty->clearCompiledTemplate();
- ?>
-
-
-
-See also [`clearCache()`](#api.clear.cache).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-config.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-config.md
deleted file mode 100644
index 43e86be17..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-config.md
+++ /dev/null
@@ -1,35 +0,0 @@
-clearConfig()
-
-clears assigned config variables
-
-Description
-===========
-
-void
-
-clearConfig
-
-string
-
-var
-
-This clears all assigned [config variables](#language.config.variables).
-If a variable name is supplied, only that variable is cleared.
-
-
- <?php
- // clear all assigned config variables.
- $smarty->clearConfig();
-
- // clear one variable
- $smarty->clearConfig('foobar');
- ?>
-
-
-
-See also [`getConfigVars()`](#api.get.config.vars),
-[`config variables`](#language.config.variables),
-[`config files`](#config.files),
-[`{config_load}`](#language.function.config.load),
-[`configLoad()`](#api.config.load) and
-[`clearAssign()`](#api.clear.assign).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-compile-all-config.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-compile-all-config.md
deleted file mode 100644
index a102fc97e..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-compile-all-config.md
+++ /dev/null
@@ -1,61 +0,0 @@
-compileAllConfig()
-
-compiles all known config files
-
-Description
-===========
-
-string
-
-compileAllConfig
-
-string
-
-extension
-
-boolean
-
-force
-
-integer
-
-timelimit
-
-integer
-
-maxerror
-
-This function compiles config files found in the
-[`$config_dir`](#variable.config.dir) folder. It uses the following
-parameters:
-
-- `extension` is an optional string which defines the file extension
- for the config files. The default is \".conf\".
-
-- `force` is an optional boolean which controls if only modified
- (false) or all (true) config files shall be compiled. The default is
- \"false\".
-
-- `timelimit` is an optional integer to set a runtime limit in seconds
- for the compilation process. The default is no limit.
-
-- `maxerror` is an optional integer to set an error limit. If more
- config files failed to compile the function will be aborted. The
- default is no limit.
-
-> **Note**
->
-> This function may not create desired results in all configurations.
-> Use is on own risk.
-
-
- <?php
- include('Smarty.class.php');
- $smarty = new Smarty;
-
- // force compilation of all config files
- $smarty->compileAllConfig('.config',true);
-
- ?>
-
-
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-compile-all-templates.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-compile-all-templates.md
deleted file mode 100644
index 53a021da8..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-compile-all-templates.md
+++ /dev/null
@@ -1,71 +0,0 @@
-compileAllTemplates()
-
-compiles all known templates
-
-Description
-===========
-
-string
-
-compileAllTemplates
-
-string
-
-extension
-
-boolean
-
-force
-
-integer
-
-timelimit
-
-integer
-
-maxerror
-
-This function compiles template files found in the
-[`$template_dir`](#variable.template.dir) folder. It uses the following
-parameters:
-
-- `extension` is an optional string which defines the file extension
- for the template files. The default is \".tpl\".
-
-- `force` is an optional boolean which controls if only modified
- (false) or all (true) templates shall be compiled. The default is
- \"false\".
-
-- `timelimit` is an optional integer to set a runtime limit in seconds
- for the compilation process. The default is no limit.
-
-- `maxerror` is an optional integer to set an error limit. If more
- templates failed to compile the function will be aborted. The
- default is no limit.
-
-> **Note**
->
-> This function may not create desired results in all configurations.
-> Use is on own risk.
-
-> **Note**
->
-> If any template requires registered plugins, filters or objects you
-> must register all of them before running this function.
-
-> **Note**
->
-> If you are using template inheritance this function will create
-> compiled files of parent templates which will never be used.
-
-
- <?php
- include('Smarty.class.php');
- $smarty = new Smarty;
-
- // force compilation of all template files
- $smarty->compileAllTemplates('.tpl',true);
-
- ?>
-
-
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-config-load.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-config-load.md
deleted file mode 100644
index bf6001fa4..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-config-load.md
+++ /dev/null
@@ -1,47 +0,0 @@
-configLoad()
-
-loads config file data and assigns it to the template
-
-Description
-===========
-
-void
-
-configLoad
-
-string
-
-file
-
-string
-
-section
-
-This loads [config file](#config.files) data and assigns it to the
-template. This works identically to the template
-[`{config_load}`](#language.function.config.load) function.
-
-> **Note**
->
-> As of Smarty 2.4.0, assigned template variables are kept across
-> invocations of [`fetch()`](#api.fetch) and
-> [`display()`](#api.display). Config vars loaded from `configLoad()`
-> are always global in scope. Config files are also compiled for faster
-> execution, and respect the [`$force_compile`](#variable.force.compile)
-> and [`$compile_check`](#variable.compile.check) settings.
-
-
- <?php
- // load config variables and assign them
- $smarty->configLoad('my.conf');
-
- // load a section
- $smarty->configLoad('my.conf', 'foobar');
- ?>
-
-
-
-See also [`{config_load}`](#language.function.config.load),
-[`getConfigVars()`](#api.get.config.vars),
-[`clearConfig()`](#api.clear.config), and
-[`config variables`](#language.config.variables)
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-create-data.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-create-data.md
deleted file mode 100644
index 2d9f281b3..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-create-data.md
+++ /dev/null
@@ -1,52 +0,0 @@
-createData()
-
-creates a data object
-
-Description
-===========
-
-string
-
-createData
-
-object
-
-parent
-
-string
-
-createData
-
-This creates a data object which will hold assigned variables. It uses
-the following parameters:
-
-- `parent` is an optional parameter. It is an uplink to the main
- Smarty object, a another user-created data object or to user-created
- template object. These objects can be chained. Templates can access
- variables assigned to any of the objects in it\'s parent chain.
-
-Data objects are used to create scopes for assigned variables. They can
-be used to have controll which variables are seen by which templates.
-
-
- <?php
- include('Smarty.class.php');
- $smarty = new Smarty;
-
- // create data object with its private variable scope
- $data = $smarty->createData();
-
- // assign variable to data scope
- $data->assign('foo','bar');
-
- // create template object which will use variables from data object
- $tpl = $smarty->createTemplate('index.tpl',$data);
-
- // display the template
- $tpl->display();
- ?>
-
-
-
-See also [`display()`](#api.display), and
-[`createTemplate()`](#api.create.template),
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-create-template.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-create-template.md
deleted file mode 100644
index 5129406d4..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-create-template.md
+++ /dev/null
@@ -1,99 +0,0 @@
-createTemplate()
-
-returns a template object
-
-Description
-===========
-
-Smarty\_Internal\_Template
-
-createTemplate
-
-string
-
-template
-
-object
-
-parent
-
-Smarty\_Internal\_Template
-
-createTemplate
-
-string
-
-template
-
-array
-
-data
-
-Smarty\_Internal\_Template
-
-createTemplate
-
-string
-
-template
-
-string
-
-cache\_id
-
-string
-
-compile\_id
-
-object
-
-parent
-
-Smarty\_Internal\_Template
-
-createTemplate
-
-string
-
-template
-
-string
-
-cache\_id
-
-string
-
-compile\_id
-
-array
-
-data
-
-This creates a template object which later can be rendered by the
-[display](#api.display) or [fetch](#api.fetch) method. It uses the
-following parameters:
-
-- `template` must be a valid [template resource](#resources) type and
- path.
-
-<!-- -->
-
-
- <?php
- include('Smarty.class.php');
- $smarty = new Smarty;
-
- // create template object with its private variable scope
- $tpl = $smarty->createTemplate('index.tpl');
-
- // assign variable to template scope
- $tpl->assign('foo','bar');
-
- // display the template
- $tpl->display();
- ?>
-
-
-
-See also [`display()`](#api.display), and
-[`templateExists()`](#api.template.exists).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-disable-security.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-disable-security.md
deleted file mode 100644
index efbaa3559..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-disable-security.md
+++ /dev/null
@@ -1,15 +0,0 @@
-disableSecurity()
-
-disables template security
-
-Description
-===========
-
-string
-
-disableSecurity
-
-This disables securty checking on templates.
-
-See also [`enableSecurity()`](#api.enable.security), and
-[Security](#advanced.features.security).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-display.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-display.md
deleted file mode 100644
index 59726195e..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-display.md
+++ /dev/null
@@ -1,82 +0,0 @@
-display()
-
-displays the template
-
-Description
-===========
-
-void
-
-display
-
-string
-
-template
-
-string
-
-cache\_id
-
-string
-
-compile\_id
-
-This displays the contents of a template. To return the contents of a
-template into a variable, use [`fetch()`](#api.fetch). Supply a valid
-[template resource](#resources) type and path. As an optional second
-parameter, you can pass a `$cache_id`, see the [caching
-section](#caching) for more information.
-
-PARAMETER.COMPILEID
-
-
- <?php
- include(SMARTY_DIR.'Smarty.class.php');
- $smarty = new Smarty();
- $smarty->setCaching(true);
-
- // only do db calls if cache doesn't exist
- if(!$smarty->isCached('index.tpl')) {
-
- // dummy up some data
- $address = '245 N 50th';
- $db_data = array(
- 'City' => 'Lincoln',
- 'State' => 'Nebraska',
- 'Zip' => '68502'
- );
-
- $smarty->assign('Name', 'Fred');
- $smarty->assign('Address', $address);
- $smarty->assign('data', $db_data);
-
- }
-
- // display the output
- $smarty->display('index.tpl');
- ?>
-
-
-
-Use the syntax for [template resources](#resources) to display files
-outside of the [`$template_dir`](#variable.template.dir) directory.
-
-
- <?php
- // absolute filepath
- $smarty->display('/usr/local/include/templates/header.tpl');
-
- // absolute filepath (same thing)
- $smarty->display('file:/usr/local/include/templates/header.tpl');
-
- // windows absolute filepath (MUST use "file:" prefix)
- $smarty->display('file:C:/www/pub/templates/header.tpl');
-
- // include from template resource named "db"
- $smarty->display('db:header.tpl');
- ?>
-
-
-
-See also [`fetch()`](#api.fetch) and
-[`templateExists()`](#api.template.exists).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-enable-security.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-enable-security.md
deleted file mode 100644
index 3326900d5..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-enable-security.md
+++ /dev/null
@@ -1,41 +0,0 @@
-enableSecurity()
-
-enables template security
-
-Description
-===========
-
-string
-
-enableSecurity
-
-string
-
-securityclass
-
-string
-
-enableSecurity
-
-object
-
-securityobject
-
-string
-
-enableSecurity
-
-This enables securty checking on templates. It uses the following
-parameters:
-
-- `securityclass` is an optional parameter. It\'s the name of the
- class with defines the security policy parameters.
-
-- `securityobject` is an optional parameter. It\'s the object with
- defines the security policy parameters.
-
-For the details how to setup a security policy see the
-[Security](#advanced.features.security) section.
-
-See also [`disableSecurity()`](#api.disable.security), and
-[Security](#advanced.features.security).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-fetch.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-fetch.md
deleted file mode 100644
index a0c1676aa..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-fetch.md
+++ /dev/null
@@ -1,91 +0,0 @@
-fetch()
-
-returns the template output
-
-Description
-===========
-
-string
-
-fetch
-
-string
-
-template
-
-string
-
-cache\_id
-
-string
-
-compile\_id
-
-This returns the template output instead of [displaying](#api.display)
-it. Supply a valid [template resource](#resources) type and path. As an
-optional second parameter, you can pass a `$cache id`, see the [caching
-section](#caching) for more information.
-
-PARAMETER.COMPILEID
-
-
- <?php
- include('Smarty.class.php');
- $smarty = new Smarty;
-
- $smarty->setCaching(true);
-
- // set a separate cache_id for each unique URL
- $cache_id = md5($_SERVER['REQUEST_URI']);
-
- // capture the output
- $output = $smarty->fetch('index.tpl', $cache_id);
-
- // do something with $output here
- echo $output;
- ?>
-
-
-
-The `email_body.tpl` template
-
-
- Dear {$contact_info.name},
-
- Welcome and thank you for signing up as a member of our user group.
-
- Click on the link below to login with your user name
- of '{$contact_info.username}' so you can post in our forums.
-
- {$login_url}
-
- List master
-
- {textformat wrap=40}
- This is some long-winded disclaimer text that would automatically get wrapped
- at 40 characters. This helps make the text easier to read in mail programs that
- do not wrap sentences for you.
- {/textformat}
-
-
-
-The php script using the PHP [`mail()`](&url.php-manual;function.mail)
-function
-
-
- <?php
-
- // get $contact_info from db or other resource here
-
- $smarty->assign('contact_info',$contact_info);
- $smarty->assign('login_url',"http://{$_SERVER['SERVER_NAME']}/login");
-
- mail($contact_info['email'], 'Thank You', $smarty->fetch('email_body.tpl'));
-
- ?>
-
-
-
-See also [`{fetch}`](#language.function.fetch)
-[`display()`](#api.display), [`{eval}`](#language.function.eval), and
-[`templateExists()`](#api.template.exists).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-get-cache-dir.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-get-cache-dir.md
deleted file mode 100644
index 9e55d8d0b..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-get-cache-dir.md
+++ /dev/null
@@ -1,23 +0,0 @@
-getCacheDir()
-
-return the directory where the rendered template\'s output is stored
-
-Description
-===========
-
-string
-
-getCacheDir
-
-
- <?php
-
- // get directory where compiled templates are stored
- $cacheDir = $smarty->getCacheDir();
-
- ?>
-
-
-
-See also [`setCacheDir()`](#api.set.cache.dir) and
-[`$cache_dir`](#variable.cache.dir).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-get-compile-dir.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-get-compile-dir.md
deleted file mode 100644
index 3bfae7306..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-get-compile-dir.md
+++ /dev/null
@@ -1,23 +0,0 @@
-getCompileDir()
-
-returns the directory where compiled templates are stored
-
-Description
-===========
-
-string
-
-getCompileDir
-
-
- <?php
-
- // get directory where compiled templates are stored
- $compileDir = $smarty->getCompileDir();
-
- ?>
-
-
-
-See also [`setCompileDir()`](#api.set.compile.dir) and
-[`$compile_dir`](#variable.compile.dir).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-get-config-dir.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-get-config-dir.md
deleted file mode 100644
index f41472ca4..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-get-config-dir.md
+++ /dev/null
@@ -1,40 +0,0 @@
-getConfigDir()
-
-return the directory where config files are stored
-
-Description
-===========
-
-string\|array
-
-getConfigDir
-
-string
-
-key
-
-
- <?php
-
- // set some config directories
- $smarty->setConfigDir(array(
- 'one' => './config',
- 'two' => './config_2',
- 'three' => './config_3',
- ));
-
- // get all directories where config files are stored
- $config_dir = $smarty->getConfigDir();
- var_dump($config_dir); // array
-
- // get directory identified by key
- $config_dir = $smarty->getConfigDir('one');
- var_dump($config_dir); // string
-
- ?>
-
-
-
-See also [`setConfigDir()`](#api.set.config.dir),
-[`addConfigDir()`](#api.add.config.dir) and
-[`$config_dir`](#variable.config.dir).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-get-config-vars.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-get-config-vars.md
deleted file mode 100644
index f252e8674..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-get-config-vars.md
+++ /dev/null
@@ -1,37 +0,0 @@
-getConfigVars()
-
-returns the given loaded config variable value
-
-Description
-===========
-
-array
-
-getConfigVars
-
-string
-
-varname
-
-If no parameter is given, an array of all loaded [config
-variables](#language.config.variables) is returned.
-
-
- <?php
-
- // get loaded config template var #foo#
- $myVar = $smarty->getConfigVars('foo');
-
- // get all loaded config template vars
- $all_config_vars = $smarty->getConfigVars();
-
- // take a look at them
- print_r($all_config_vars);
- ?>
-
-
-
-See also [`clearConfig()`](#api.clear.config),
-[`{config_load}`](#language.function.config.load),
-[`configLoad()`](#api.config.load) and
-[`getTemplateVars()`](#api.get.template.vars).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-get-plugins-dir.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-get-plugins-dir.md
deleted file mode 100644
index aa6035549..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-get-plugins-dir.md
+++ /dev/null
@@ -1,31 +0,0 @@
-getPluginsDir()
-
-return the directory where plugins are stored
-
-Description
-===========
-
-array
-
-getPluginsDir
-
-
- <?php
-
- // set some plugins directories
- $smarty->setPluginsDir(array(
- './plugins',
- './plugins_2',
- ));
-
- // get all directories where plugins are stored
- $config_dir = $smarty->getPluginsDir();
- var_dump($config_dir); // array
-
- ?>
-
-
-
-See also [`setPluginsDir()`](#api.set.plugins.dir),
-[`addPluginsDir()`](#api.add.plugins.dir) and
-[`$plugins_dir`](#variable.plugins.dir).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-get-registered-object.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-get-registered-object.md
deleted file mode 100644
index a7c920e14..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-get-registered-object.md
+++ /dev/null
@@ -1,36 +0,0 @@
-getRegisteredObject()
-
-returns a reference to a registered object
-
-Description
-===========
-
-array
-
-getRegisteredObject
-
-string
-
-object\_name
-
-This is useful from within a custom function when you need direct access
-to a [registered object](#api.register.object). See the
-[objects](#advanced.features.objects) page for more info.
-
-
- <?php
- function smarty_block_foo($params, $smarty)
- {
- if (isset($params['object'])) {
- // get reference to registered object
- $obj_ref = $smarty->getRegisteredObject($params['object']);
- // use $obj_ref is now a reference to the object
- }
- }
- ?>
-
-
-
-See also [`registerObject()`](#api.register.object),
-[`unregisterObject()`](#api.unregister.object) and [objects
-page](#advanced.features.objects)
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-get-tags.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-get-tags.md
deleted file mode 100644
index 7729b468b..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-get-tags.md
+++ /dev/null
@@ -1,40 +0,0 @@
-getTags()
-
-return tags used by template
-
-Description
-===========
-
-string
-
-getTags
-
-object
-
-template
-
-This function returns an array of tagname/attribute pairs for all tags
-used by the template. It uses the following parameters:
-
-- `template` is the template object.
-
-> **Note**
->
-> This function is experimental.
-
-
- <?php
- include('Smarty.class.php');
- $smarty = new Smarty;
-
- // create template object
- $tpl = $smarty->createTemplate('index.tpl');
-
- // get tags
- $tags = $smarty->getTags($tpl);
-
- print_r($tags);
-
- ?>
-
-
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-get-template-dir.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-get-template-dir.md
deleted file mode 100644
index 42c75908b..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-get-template-dir.md
+++ /dev/null
@@ -1,40 +0,0 @@
-getTemplateDir()
-
-return the directory where templates are stored
-
-Description
-===========
-
-string\|array
-
-getTemplateDir
-
-string
-
-key
-
-
- <?php
-
- // set some template directories
- $smarty->setTemplateDir(array(
- 'one' => './templates',
- 'two' => './templates_2',
- 'three' => './templates_3',
- ));
-
- // get all directories where templates are stored
- $template_dir = $smarty->getTemplateDir();
- var_dump($template_dir); // array
-
- // get directory identified by key
- $template_dir = $smarty->getTemplateDir('one');
- var_dump($template_dir); // string
-
- ?>
-
-
-
-See also [`setTemplateDir()`](#api.set.template.dir),
-[`addTemplateDir()`](#api.add.template.dir) and
-[`$template_dir`](#variable.template.dir).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-get-template-vars.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-get-template-vars.md
deleted file mode 100644
index 27882eef4..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-get-template-vars.md
+++ /dev/null
@@ -1,37 +0,0 @@
-getTemplateVars()
-
-returns assigned variable value(s)
-
-Description
-===========
-
-array
-
-getTemplateVars
-
-string
-
-varname
-
-If no parameter is given, an array of all [assigned](#api.assign)
-variables are returned.
-
-
- <?php
- // get assigned template var 'foo'
- $myVar = $smarty->getTemplateVars('foo');
-
- // get all assigned template vars
- $all_tpl_vars = $smarty->getTemplateVars();
-
- // take a look at them
- print_r($all_tpl_vars);
- ?>
-
-
-
-See also [`assign()`](#api.assign),
-[`{assign}`](#language.function.assign), [`append()`](#api.append),
-[`clearAssign()`](#api.clear.assign),
-[`clearAllAssign()`](#api.clear.all.assign) and
-[`getConfigVars()`](#api.get.config.vars)
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-is-cached.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-is-cached.md
deleted file mode 100644
index 0c41bf04a..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-is-cached.md
+++ /dev/null
@@ -1,81 +0,0 @@
-isCached()
-
-returns true if there is a valid cache for this template
-
-Description
-===========
-
-bool
-
-isCached
-
-string
-
-template
-
-string
-
-cache\_id
-
-string
-
-compile\_id
-
-- This only works if [`$caching`](#variable.caching) is set to one of
- `Smarty::CACHING_LIFETIME_CURRENT` or
- `Smarty::CACHING_LIFETIME_SAVED` to enable caching. See the [caching
- section](#caching) for more info.
-
-- You can also pass a `$cache_id` as an optional second parameter in
- case you want [multiple caches](#caching.multiple.caches) for the
- given template.
-
-- You can supply a [`$compile id`](#variable.compile.id) as an
- optional third parameter. If you omit that parameter the persistent
- [`$compile_id`](#variable.compile.id) is used if its set.
-
-- If you do not want to pass a `$cache_id` but want to pass a
- [`$compile_id`](#variable.compile.id) you have to pass NULL as a
- `$cache_id`.
-
-> **Note**
->
-> If `isCached()` returns TRUE it actually loads the cached output and
-> stores it internally. Any subsequent call to
-> [`display()`](#api.display) or [`fetch()`](#api.fetch) will return
-> this internally stored output and does not try to reload the cache
-> file. This prevents a race condition that may occur when a second
-> process clears the cache between the calls to `isCached()` and to
-> [`display()`](#api.display) in the example above. This also means
-> calls to [`clearCache()`](#api.clear.cache) and other changes of the
-> cache-settings may have no effect after `isCached()` returned TRUE.
-
-
- <?php
- $smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT);
-
- if(!$smarty->isCached('index.tpl')) {
- // do database calls, assign vars here
- }
-
- $smarty->display('index.tpl');
- ?>
-
-
-
-
- <?php
- $smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT);
-
- if(!$smarty->isCached('index.tpl', 'FrontPage')) {
- // do database calls, assign vars here
- }
-
- $smarty->display('index.tpl', 'FrontPage');
- ?>
-
-
-
-See also [`clearCache()`](#api.clear.cache),
-[`clearAllCache()`](#api.clear.all.cache), and [caching
-section](#caching).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-load-filter.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-load-filter.md
deleted file mode 100644
index 19286ee33..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-load-filter.md
+++ /dev/null
@@ -1,42 +0,0 @@
-loadFilter()
-
-load a filter plugin
-
-Description
-===========
-
-void
-
-loadFilter
-
-string
-
-type
-
-string
-
-name
-
-The first argument specifies the type of the filter to load and can be
-one of the following: `pre`, `post` or `output`. The second argument
-specifies the `name` of the filter plugin.
-
-
- <?php
-
- // load prefilter named 'trim'
- $smarty->loadFilter('pre', 'trim');
-
- // load another prefilter named 'datefooter'
- $smarty->loadFilter('pre', 'datefooter');
-
- // load output filter named 'compress'
- $smarty->loadFilter('output', 'compress');
-
- ?>
-
-
-
-See also [`registerFilter()`](#api.register.filter),
-[`$autoload_filters`](#variable.autoload.filters) and [advanced
-features](#advanced.features).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-mute-expected-errors.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-mute-expected-errors.md
deleted file mode 100644
index 1ce45d493..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-mute-expected-errors.md
+++ /dev/null
@@ -1,21 +0,0 @@
-Smarty::muteExpectedErrors()
-
-mutes expected warnings and notices deliberately generated by Smarty
-
-Description
-===========
-
-string
-
-muteExpectedErrors
-
-muteExpectedErrors() registers a custom error handler using
-[set\_error\_handler()](&url.php-manual;set_error_handler). The error
-handler merely inspects `$errno` and `$errfile` to determine if the
-given error was produced deliberately and must be ignored, or should be
-passed on to the next error handler.
-
-`Smarty::unmuteExpectedErrors()` removes the current error handler.
-Please note, that if you\'ve registerd any custom error handlers after
-the muteExpectedErrors() call, the unmute will not remove Smarty\'s
-muting error handler, but the one registered last.
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-register-cacheresource.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-register-cacheresource.md
deleted file mode 100644
index 60ae60308..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-register-cacheresource.md
+++ /dev/null
@@ -1,40 +0,0 @@
-registerCacheResource()
-
-dynamically register CacheResources
-
-Description
-===========
-
-void
-
-registerCacheResource
-
-string
-
-name
-
-Smarty\_CacheResource
-
-resource\_handler
-
-Use this to dynamically register a [CacheResource
-plugin](#caching.custom) with Smarty. Pass in the `name` of the
-CacheResource and the object extending Smarty\_CacheResource. See
-[Custom Cache Implementation](#caching.custom) for more information on
-how to create custom CacheResources.
-
-> **Note**
->
-> In Smarty2 this used to be a callback function called
-> `$cache_handler_func`. Smarty3 replaced this callback by the
-> `Smarty_CacheResource` module.
-
-
- <?php
- $smarty->registerCacheResource('mysql', new Smarty_CacheResource_Mysql());
- ?>
-
-
-
-See also [`unregisterCacheResource()`](#api.unregister.cacheresource)
-and the [Custom CacheResource Implementation](#caching.custom) section.
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-register-class.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-register-class.md
deleted file mode 100644
index ee339cadb..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-register-class.md
+++ /dev/null
@@ -1,65 +0,0 @@
-registerClass()
-
-register a class for use in the templates
-
-Description
-===========
-
-void
-
-registerClass
-
-string
-
-class\_name
-
-string
-
-class\_impl
-
-Smarty allows you to access static classes from templates as long as the
-[Security Policy](#advanced.features.security) does not tell it
-otherwise. If security is enabled, classes registered with
-`registerClass()` are accessible to templates.
-
-
- <?php
-
- class Bar {
- $property = "hello world";
- }
-
- $smarty = new Smarty();
- $smarty->registerClass("Foo", "Bar");
-
-
-
-
- {* Smarty will access this class as long as it's not prohibited by security *}
- {Bar::$property}
- {* Foo translates to the real class Bar *}
- {Foo::$property}
-
-
-
-
- <?php
- namespace my\php\application {
- class Bar {
- $property = "hello world";
- }
- }
-
- $smarty = new Smarty();
- $smarty->registerClass("Foo", "\my\php\application\Bar");
-
-
-
-
- {* Foo translates to the real class \my\php\application\Bar *}
- {Foo::$property}
-
-
-
-See also [`registerObject()`](#api.register.object), and
-[Security](#advanced.features.security).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-register-default-plugin-handler.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-register-default-plugin-handler.md
deleted file mode 100644
index 9447d9620..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-register-default-plugin-handler.md
+++ /dev/null
@@ -1,93 +0,0 @@
-registerDefaultPluginHandler()
-
-register a function which gets called on undefined tags
-
-Description
-===========
-
-void
-
-registerDefaultPluginHandler
-
-mixed
-
-callback
-
-Register a default plugin handler which gets called if the compiler can
-not find a definition for a tag otherwise. It uses the following
-parameters:
-
-If during compilation Smarty encounters tag which is not defined
-internal, registered or loacted in the plugins folder it tries to
-resolve it by calling the registered default plugin handler. The handler
-may be called several times for same undefined tag looping over valid
-plugin types.
-
-
- <?php
-
- $smarty = new Smarty();
- $smarty->registerDefaultPluginHandler('my_plugin_handler');
-
- /**
- * Default Plugin Handler
- *
- * called when Smarty encounters an undefined tag during compilation
- *
- * @param string $name name of the undefined tag
- * @param string $type tag type (e.g. Smarty::PLUGIN_FUNCTION, Smarty::PLUGIN_BLOCK,
- Smarty::PLUGIN_COMPILER, Smarty::PLUGIN_MODIFIER, Smarty::PLUGIN_MODIFIERCOMPILER)
- * @param Smarty_Internal_Template $template template object
- * @param string &$callback returned function name
- * @param string &$script optional returned script filepath if function is external
- * @param bool &$cacheable true by default, set to false if plugin is not cachable (Smarty >= 3.1.8)
- * @return bool true if successfull
- */
- function my_plugin_handler ($name, $type, $template, &$callback, &$script, &$cacheable)
- {
- switch ($type) {
- case Smarty::PLUGIN_FUNCTION:
- switch ($name) {
- case 'scriptfunction':
- $script = './scripts/script_function_tag.php';
- $callback = 'default_script_function_tag';
- return true;
- case 'localfunction':
- $callback = 'default_local_function_tag';
- return true;
- default:
- return false;
- }
- case Smarty::PLUGIN_COMPILER:
- switch ($name) {
- case 'scriptcompilerfunction':
- $script = './scripts/script_compiler_function_tag.php';
- $callback = 'default_script_compiler_function_tag';
- return true;
- default:
- return false;
- }
- case Smarty::PLUGIN_BLOCK:
- switch ($name) {
- case 'scriptblock':
- $script = './scripts/script_block_tag.php';
- $callback = 'default_script_block_tag';
- return true;
- default:
- return false;
- }
- default:
- return false;
- }
- }
-
- ?>
-
-
-
-> **Note**
->
-> The return callback must be static; a function name or an array of
-> class and method name.
->
-> Dynamic callbacks like objects methods are not supported.
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-register-filter.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-register-filter.md
deleted file mode 100644
index fd91d2661..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-register-filter.md
+++ /dev/null
@@ -1,45 +0,0 @@
-registerFilter()
-
-dynamically register filters
-
-Description
-===========
-
-void
-
-registerFilter
-
-string
-
-type
-
-mixed
-
-callback
-
-Use this to dynamically register filters to operate on a templates. It
-uses the following parameters:
-
-NOTE.PARAMETER.FUNCTION
-
-A [prefilter](#plugins.prefilters.postfilters) runs through the template
-source before it gets compiled. See [template
-prefilters](#advanced.features.prefilters) for more information on how
-to setup a prefiltering function.
-
-A [postfilter](#plugins.prefilters.postfilters) runs through the
-template code after it was compiled to PHP. See [template
-postfilters](#advanced.features.postfilters) for more information on how
-to setup a postfiltering function.
-
-A [outputfilter](#plugins.outputfilters) operates on a template\'s
-output before it is [displayed](#api.display). See [template output
-filters](#advanced.features.outputfilters) for more information on how
-to set up an output filter function.
-
-See also [`unregisterFilter()`](#api.unregister.filter),
-[`loadFilter()`](#api.load.filter),
-[`$autoload_filters`](#variable.autoload.filters), [template pre
-filters](#advanced.features.prefilters) [template post
-filters](#advanced.features.postfilters) [template output
-filters](#advanced.features.outputfilters) section.
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-register-object.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-register-object.md
deleted file mode 100644
index c310e8c2a..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-register-object.md
+++ /dev/null
@@ -1,44 +0,0 @@
-registerObject()
-
-register an object for use in the templates
-
-Description
-===========
-
-void
-
-registerObject
-
-string
-
-object\_name
-
-object
-
-object
-
-array
-
-allowed\_methods\_properties
-
-boolean
-
-format
-
-array
-
-block\_methods
-
-> **Note**
->
-> When you register/assign objects to templates, be sure that all
-> properties and methods accessed from the template are for presentation
-> purposes only. It is very easy to inject application logic through
-> objects, and this leads to poor designs that are difficult to manage.
-> See the Best Practices section of the Smarty website.
-
-See the [objects section](#advanced.features.objects) for more
-information.
-
-See also [`getRegisteredObject()`](#api.get.registered.object), and
-[`unregisterObject()`](#api.unregister.object).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-register-plugin.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-register-plugin.md
deleted file mode 100644
index 6eb433810..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-register-plugin.md
+++ /dev/null
@@ -1,110 +0,0 @@
-registerPlugin()
-
-dynamically register plugins
-
-Description
-===========
-
-void
-
-registerPlugin
-
-string
-
-type
-
-string
-
-name
-
-mixed
-
-callback
-
-bool
-
-cacheable
-
-mixed
-
-cache\_attrs
-
-This method registers functions or methods defined in your script as
-plugin. It uses the following parameters:
-
-- `cacheable` and `cache_attrs` can be omitted in most cases. See
- [controlling cacheability of plugins output](#caching.cacheable) on
- how to use them properly.
-
-<!-- -->
-
-
- <?php
- $smarty->registerPlugin("function","date_now", "print_current_date");
-
- function print_current_date($params, $smarty)
- {
- if(empty($params["format"])) {
- $format = "%b %e, %Y";
- } else {
- $format = $params["format"];
- }
- return strftime($format,time());
- }
- ?>
-
-
-
-And in the template
-
-
- {date_now}
-
- {* or to format differently *}
- {date_now format="%Y/%m/%d"}
-
-
- <?php
- // function declaration
- function do_translation ($params, $content, $smarty, &$repeat, $template)
- {
- if (isset($content)) {
- $lang = $params["lang"];
- // do some translation with $content
- return $translation;
- }
- }
-
- // register with smarty
- $smarty->registerPlugin("block","translate", "do_translation");
- ?>
-
-
-
-Where the template is:
-
-
- {translate lang="br"}Hello, world!{/translate}
-
-
-
-
- <?php
-
- // let's map PHP's stripslashes function to a Smarty modifier.
- $smarty->registerPlugin("modifier","ss", "stripslashes");
-
- ?>
-
-In the template, use `ss` to strip slashes.
-
-
- <?php
- {$var|ss}
- ?>
-
-See also [`unregisterPlugin()`](#api.unregister.plugin), [plugin
-functions](#plugins.functions), [plugin block
-functions](#plugins.block.functions), [plugin compiler
-functions](#plugins.compiler.functions), and the [creating plugin
-modifiers](#plugins.modifiers) section.
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-register-resource.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-register-resource.md
deleted file mode 100644
index ca4005460..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-register-resource.md
+++ /dev/null
@@ -1,46 +0,0 @@
-registerResource()
-
-dynamically register resources
-
-Description
-===========
-
-void
-
-registerResource
-
-string
-
-name
-
-Smarty\_resource
-
-resource\_handler
-
-Use this to dynamically register a [Resource plugin](#resources) with
-Smarty. Pass in the `name` of the Resource and the object extending
-Smarty\_Resource. See [template resources](#resources) for more
-information on how to setup a function for fetching templates.
-
-> **Note**
->
-> A resource name must be at least two characters in length. One
-> character resource names will be ignored and used as part of the file
-> path, such as `$smarty->display('c:/path/to/index.tpl');`
-
-> **Note**
->
-> Prior to Smarty 3.1 `registerResource()` accepted an array of callback
-> functions. While this is still possible for backward compatibility
-> reasons, it is strongly discouraged as callback functions have been
-> deprecated as of Smarty 3.1.
-
-
- <?php
- $smarty->registerResource('mysql', new Smarty_Resource_Mysql());
- ?>
-
-
-
-See also [`unregisterResource()`](#api.unregister.resource) and the
-[template resources](#resources) section.
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-set-cache-dir.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-set-cache-dir.md
deleted file mode 100644
index 7f7c4b60d..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-set-cache-dir.md
+++ /dev/null
@@ -1,32 +0,0 @@
-setCacheDir()
-
-set the directory where the rendered template\'s output is stored
-
-Description
-===========
-
-Smarty
-
-setCacheDir
-
-string
-
-cache\_dir
-
-
- <?php
-
- // set directory where rendered template's output is stored
- $smarty->setCacheDir('./cache');
-
- // chaining of method calls
- $smarty->setTemplateDir('./templates')
- ->setCompileDir('./templates_c')
- ->setCacheDir('./cache');
-
- ?>
-
-
-
-See also [`getCacheDir()`](#api.get.cache.dir) and
-[`$cache_dir`](#variable.cache.dir).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-set-compile-dir.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-set-compile-dir.md
deleted file mode 100644
index bfeb55a53..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-set-compile-dir.md
+++ /dev/null
@@ -1,32 +0,0 @@
-setCompileDir()
-
-set the directory where compiled templates are stored
-
-Description
-===========
-
-Smarty
-
-setCompileDir
-
-string
-
-compile\_dir
-
-
- <?php
-
- // set directory where compiled templates are stored
- $smarty->setCompileDir('./templates_c');
-
- // chaining of method calls
- $smarty->setTemplateDir('./templates')
- ->setCompileDir('./templates_c')
- ->setCacheDir('./cache');
-
- ?>
-
-
-
-See also [`getCompileDir()`](#api.get.compile.dir) and
-[`$compile_dir`](#variable.compile.dir).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-set-config-dir.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-set-config-dir.md
deleted file mode 100644
index 97a6ae977..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-set-config-dir.md
+++ /dev/null
@@ -1,47 +0,0 @@
-setConfigDir()
-
-set the directories where config files are stored
-
-Description
-===========
-
-Smarty
-
-setConfigDir
-
-string\|array
-
-config\_dir
-
-
- <?php
-
- // set a single directory where the config files are stored
- $smarty->setConfigDir('./config');
-
- // view the config dir chain
- var_dump($smarty->getConfigDir());
-
- // set multiple directoríes where config files are stored
- $smarty->setConfigDir(array(
- 'one' => './config',
- 'two' => './config_2',
- 'three' => './config_3',
- ));
-
- // view the config dir chain
- var_dump($smarty->getConfigDir());
-
- // chaining of method calls
- $smarty->setTemplateDir('./templates')
- ->setConfigDir('./config')
- ->setCompileDir('./templates_c')
- ->setCacheDir('./cache');
-
- ?>
-
-
-
-See also [`getConfigDir()`](#api.get.config.dir),
-[`addConfigDir()`](#api.add.config.dir) and
-[`$config_dir`](#variable.config.dir).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-set-plugins-dir.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-set-plugins-dir.md
deleted file mode 100644
index 25b0567b1..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-set-plugins-dir.md
+++ /dev/null
@@ -1,46 +0,0 @@
-setPluginsDir()
-
-set the directories where plugins are stored
-
-Description
-===========
-
-Smarty
-
-setPluginsDir
-
-string\|array
-
-plugins\_dir
-
-
- <?php
-
- // set a single directory where the plugins are stored
- $smarty->setPluginsDir('./plugins');
-
- // view the plugins dir chain
- var_dump($smarty->getPluginsDir());
-
- // set multiple directoríes where plugins are stored
- $smarty->setPluginsDir(array(
- './plugins',
- './plugins_2',
- ));
-
- // view the plugins dir chain
- var_dump($smarty->getPluginsDir());
-
- // chaining of method calls
- $smarty->setTemplateDir('./templates')
- ->setPluginsDir('./plugins')
- ->setCompileDir('./templates_c')
- ->setCacheDir('./cache');
-
- ?>
-
-
-
-See also [`getPluginsDir()`](#api.get.plugins.dir),
-[`addPluginsDir()`](#api.add.plugins.dir) and
-[`$plugins_dir`](#variable.plugins.dir).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-set-template-dir.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-set-template-dir.md
deleted file mode 100644
index 2de23309b..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-set-template-dir.md
+++ /dev/null
@@ -1,46 +0,0 @@
-setTemplateDir()
-
-set the directories where templates are stored
-
-Description
-===========
-
-Smarty
-
-setTemplateDir
-
-string\|array
-
-template\_dir
-
-
- <?php
-
- // set a single directory where the templates are stored
- $smarty->setTemplateDir('./cache');
-
- // view the template dir chain
- var_dump($smarty->getTemplateDir());
-
- // set multiple directoríes where templates are stored
- $smarty->setTemplateDir(array(
- 'one' => './templates',
- 'two' => './templates_2',
- 'three' => './templates_3',
- ));
-
- // view the template dir chain
- var_dump($smarty->getTemplateDir());
-
- // chaining of method calls
- $smarty->setTemplateDir('./templates')
- ->setCompileDir('./templates_c')
- ->setCacheDir('./cache');
-
- ?>
-
-
-
-See also [`getTemplateDir()`](#api.get.template.dir),
-[`addTemplateDir()`](#api.add.template.dir) and
-[`$template_dir`](#variable.template.dir).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-template-exists.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-template-exists.md
deleted file mode 100644
index 07f61b12e..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-template-exists.md
+++ /dev/null
@@ -1,59 +0,0 @@
-templateExists()
-
-checks whether the specified template exists
-
-Description
-===========
-
-bool
-
-templateExists
-
-string
-
-template
-
-It can accept either a path to the template on the filesystem or a
-resource string specifying the template.
-
-This example uses `$_GET['page']` to
-[`{include}`](#language.function.include) a content template. If the
-template does not exist then an error page is displayed instead. First
-the `page_container.tpl`
-
-
- <html>
- <head><title>{$title}</title></head>
- <body>
- {include file='page_top.tpl'}
-
- {* include middle content page *}
- {include file=$content_template}
-
- {include file='page_footer.tpl'}
- </body>
-
-
-
-And the php script
-
-
- <?php
-
- // set the filename eg index.inc.tpl
- $mid_template = $_GET['page'].'.inc.tpl';
-
- if( !$smarty->templateExists($mid_template) ){
- $mid_template = 'page_not_found.tpl';
- }
- $smarty->assign('content_template', $mid_template);
-
- $smarty->display('page_container.tpl');
-
- ?>
-
-
-
-See also [`display()`](#api.display), [`fetch()`](#api.fetch),
-[`{include}`](#language.function.include) and
-[`{insert}`](#language.function.insert)
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-test-install.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-test-install.md
deleted file mode 100644
index 3afe5ec1d..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-test-install.md
+++ /dev/null
@@ -1,22 +0,0 @@
-testInstall()
-
-checks Smarty installation
-
-Description
-===========
-
-void
-
-testInstall
-
-This function verifies that all required working folders of the Smarty
-installation can be accessed. It does output a corresponding protocoll.
-
-
- <?php
- require_once('Smarty.class.php');
- $smarty = new Smarty();
- $smarty->testInstall();
- ?>
-
-
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-cacheresource.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-cacheresource.md
deleted file mode 100644
index d097519db..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-cacheresource.md
+++ /dev/null
@@ -1,28 +0,0 @@
-unregisterCacheResource()
-
-dynamically unregister a CacheResource plugin
-
-Description
-===========
-
-void
-
-unregisterCacheResource
-
-string
-
-name
-
-Pass in the `name` of the CacheResource.
-
-
- <?php
-
- $smarty->unregisterCacheResource('mysql');
-
- ?>
-
-
-
-See also [`registerCacheResource()`](#api.register.cacheresource) and
-the [Custom CacheResource Implementation](#caching.custom) section.
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-filter.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-filter.md
deleted file mode 100644
index 44020eb40..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-filter.md
+++ /dev/null
@@ -1,23 +0,0 @@
-unregisterFilter()
-
-dynamically unregister a filter
-
-Description
-===========
-
-void
-
-unregisterFilter
-
-string
-
-type
-
-string\|array
-
-callback
-
-Use this to dynamically unregister filters. It uses the following
-parameters:
-
-See also [`registerFilter()`](#api.register.filter).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-object.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-object.md
deleted file mode 100644
index c012581f9..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-object.md
+++ /dev/null
@@ -1,17 +0,0 @@
-unregisterObject()
-
-dynamically unregister an object
-
-Description
-===========
-
-void
-
-unregisterObject
-
-string
-
-object\_name
-
-See also [`registerObject()`](#api.register.object) and [objects
-section](#advanced.features.objects)
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-plugin.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-plugin.md
deleted file mode 100644
index c692ac60f..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-plugin.md
+++ /dev/null
@@ -1,36 +0,0 @@
-unregisterPlugin
-
-dynamically unregister plugins
-
-Description
-===========
-
-void
-
-unregisterPlugin
-
-string
-
-type
-
-string
-
-name
-
-This method unregisters plugins which previously have been registered by
-[registerPlugin()](#api.register.plugin), It uses the following
-parameters:
-
-<!-- -->
-
-
- <?php
-
- // we don't want template designers to have access to function plugin "date_now"
- $smarty->unregisterPlugin("function","date_now");
-
- ?>
-
-
-
-See also [`registerPlugin()`](#api.register.plugin).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-resource.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-resource.md
deleted file mode 100644
index 1a6067bd2..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-resource.md
+++ /dev/null
@@ -1,28 +0,0 @@
-unregisterResource()
-
-dynamically unregister a resource plugin
-
-Description
-===========
-
-void
-
-unregisterResource
-
-string
-
-name
-
-Pass in the `name` of the resource.
-
-
- <?php
-
- $smarty->unregisterResource('db');
-
- ?>
-
-
-
-See also [`registerResource()`](#api.register.resource) and [template
-resources](#resources)
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables.md b/vendor/smarty/smarty/docs/programmers/api-variables.md
deleted file mode 100644
index 2fcf6e217..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables.md
+++ /dev/null
@@ -1,64 +0,0 @@
-Smarty Class Variables {#api.variables}
-======================
-
-These are all of the available Smarty class variables. You can access
-them directly, or use the corresponding setter/getter methods.
-
-- [$allow_php_templates](./api-variables/variable-allow-php-templates.md)
-- [$auto_literal](./api-variables/variable-auto-literal.md)
-- [$autoload_filters](./api-variables/variable-autoload-filters.md)
-- [$cache_dir](./api-variables/variable-cache-dir.md)
-- [$cache_id](./api-variables/variable-cache-id.md)
-- [$cache_lifetime](./api-variables/variable-cache-lifetime.md)
-- [$cache_locking](./api-variables/variable-cache-locking.md)
-- [$cache_modified_check](./api-variables/variable-cache-modified-check.md)
-- [$caching](./api-variables/variable-caching.md)
-- [$caching_type](./api-variables/variable-caching-type.md)
-- [$compile_check](./api-variables/variable-compile-check.md)
-- [$compile_dir](./api-variables/variable-compile-dir.md)
-- [$compile_id](./api-variables/variable-compile-id.md)
-- [$compile_locking](./api-variables/variable-compile-locking.md)
-- [$compiler_class](./api-variables/variable-compiler-class.md)
-- [$config_booleanize](./api-variables/variable-config-booleanize.md)
-- [$config_dir](./api-variables/variable-config-dir.md)
-- [$config_overwrite](./api-variables/variable-config-overwrite.md)
-- [$config_read_hidden](./api-variables/variable-config-read-hidden.md)
-- [$debug_tpl](./api-variables/variable-debug-template.md)
-- [$debugging](./api-variables/variable-debugging.md)
-- [$debugging_ctrl](./api-variables/variable-debugging-ctrl.md)
-- [$default_config_type](./api-variables/variable-default-config-type.md)
-- [$default_modifiers](./api-variables/variable-default-modifiers.md)
-- [$default_resource_type](./api-variables/variable-default-resource-type.md)
-- [$default_config_handler_func](./api-variables/variable-default-config-handler-func.md)
-- [$default_template_handler_func](./api-variables/variable-default-template-handler-func.md)
-- [$direct_access_security](./api-variables/variable-direct-access-security.md)
-- [$error_reporting](./api-variables/variable-error-reporting.md)
-- [$escape_html](./api-variables/variable-escape-html.md)
-- [$force_cache](./api-variables/variable-force-cache.md)
-- [$force_compile](./api-variables/variable-force-compile.md)
-- [$left_delimiter](./api-variables/variable-left-delimiter.md)
-- [$locking_timeout](./api-variables/variable-locking-timeout.md)
-- [$merge_compiled_includes](./api-variables/variable-merge-compiled-includes.md)
-- [$php_handling](./api-variables/variable-php-handling.md)
-- [$plugins_dir](./api-variables/variable-plugins-dir.md)
-- [$right_delimiter](./api-variables/variable-right-delimiter.md)
-- [$smarty_debug_id](./api-variables/variable-smarty-debug-id.md)
-- [$template_dir](./api-variables/variable-template-dir.md)
-- [$trusted_dir](./api-variables/variable-trusted-dir.md)
-- [$use_include_path](./api-variables/variable-use-include-path.md)
-- [$use_sub_dirs](./api-variables/variable-use-sub-dirs.md)
-
-> **Note**
->
-> All class variables have magic setter/getter methods available.
-> setter/getter methods are camelCaseFormat, unlike the variable itself.
-> So for example, you can set and get the \$smarty-\>template\_dir
-> variable with \$smarty-\>setTemplateDir(\$dir) and \$dir =
-> \$smarty-\>getTemplateDir() respectively.
-
-> **Note**
->
-> See
-> [`Changing settings by template`](./advanced-features/advanced-features-template-settings.md)
-> section for how to change Smarty class variables for individual
-> templates.
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-allow-php-templates.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-allow-php-templates.md
deleted file mode 100644
index e15520e2d..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-allow-php-templates.md
+++ /dev/null
@@ -1,18 +0,0 @@
-\$allow\_php\_templates {#variable.allow.php.templates}
-=======================
-
-By default the PHP template file resource is disabled. Setting
-`$allow_php_templates` to TRUE will enable PHP template files.
-
-::: {.informalexample}
-
- <?php
- $smarty->allow_php_templates = true;
- ?>
-
-
-:::
-
-> **Note**
->
-> The PHP template file resource is an undocumented deprecated feature.
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-auto-literal.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-auto-literal.md
deleted file mode 100644
index e5ddb34fc..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-auto-literal.md
+++ /dev/null
@@ -1,17 +0,0 @@
-\$auto\_literal {#variable.auto.literal}
-===============
-
-The Smarty delimiter tags { and } will be ignored so long as they are
-surrounded by white space. This behavior can be disabled by setting
-auto\_literal to false.
-
-::: {.informalexample}
-
- <?php
- $smarty->auto_literal = false;
- ?>
-
-
-:::
-
-See also [Escaping Smarty Parsing](#language.escaping),
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-autoload-filters.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-autoload-filters.md
deleted file mode 100644
index 8a300b065..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-autoload-filters.md
+++ /dev/null
@@ -1,21 +0,0 @@
-\$autoload\_filters {#variable.autoload.filters}
-===================
-
-If there are some filters that you wish to load on every template
-invocation, you can specify them using this variable and Smarty will
-automatically load them for you. The variable is an associative array
-where keys are filter types and values are arrays of the filter names.
-For example:
-
-::: {.informalexample}
-
- <?php
- $smarty->autoload_filters = array('pre' => array('trim', 'stamp'),
- 'output' => array('convert'));
- ?>
-
-
-:::
-
-See also [`registerFilter()`](#api.register.filter) and
-[`loadFilter()`](#api.load.filter)
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-dir.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-dir.md
deleted file mode 100644
index 6cb2b5559..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-dir.md
+++ /dev/null
@@ -1,35 +0,0 @@
-\$cache\_dir {#variable.cache.dir}
-============
-
-This is the name of the directory where template caches are stored. By
-default this is `./cache`, meaning that Smarty will look for the
-`cache/` directory in the same directory as the executing php script.
-**This directory must be writeable by the web server**, [see
-install](#installing.smarty.basic) for more info.
-
-You can also use your own [custom cache implementation](#caching.custom)
-to control cache files, which will ignore this setting. See also
-[`$use_sub_dirs`](#variable.use.sub.dirs).
-
-> **Note**
->
-> This setting must be either a relative or absolute path. include\_path
-> is not used for writing files.
-
-> **Note**
->
-> It is not recommended to put this directory under the web server
-> document root.
-
-> **Note**
->
-> As of Smarty 3.1 the attribute \$cache\_dir is no longer accessible
-> directly. Use [`getCacheDir()`](#api.get.cache.dir) and
-> [`setCacheDir()`](#api.set.cache.dir) instead.
-
-See also [`getCacheDir()`](#api.get.cache.dir),
-[`setCacheDir()`](#api.set.cache.dir), [`$caching`](#variable.caching),
-[`$use_sub_dirs`](#variable.use.sub.dirs),
-[`$cache_lifetime`](#variable.cache.lifetime),
-[`$cache_modified_check`](#variable.cache.modified.check) and the
-[caching section](#caching).
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-id.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-id.md
deleted file mode 100644
index c27fae921..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-id.md
+++ /dev/null
@@ -1,11 +0,0 @@
-\$cache\_id {#variable.cache.id}
-===========
-
-Persistent cache\_id identifier. As an alternative to passing the same
-`$cache_id` to each and every function call, you can set this
-`$cache_id` and it will be used implicitly thereafter.
-
-With a `$cache_id` you can have multiple cache files for a single call
-to [`display()`](#api.display) or [`fetch()`](#api.fetch) depending for
-example from different content of the same template. See the [caching
-section](#caching) for more information.
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-lifetime.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-lifetime.md
deleted file mode 100644
index c9624b556..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-lifetime.md
+++ /dev/null
@@ -1,30 +0,0 @@
-\$cache\_lifetime {#variable.cache.lifetime}
-=================
-
-This is the length of time in seconds that a template cache is valid.
-Once this time has expired, the cache will be regenerated.
-
-- `$caching` must be turned on (either
- Smarty::CACHING\_LIFETIME\_CURRENT or
- Smarty::CACHING\_LIFETIME\_SAVED) for `$cache_lifetime` to have any
- purpose.
-
-- A `$cache_lifetime` value of -1 will force the cache to never
- expire.
-
-- A value of 0 will cause the cache to always regenerate (good for
- testing only, to disable caching a more efficient method is to set
- [`$caching`](#variable.caching) = Smarty::CACHING\_OFF).
-
-- If you want to give certain templates their own cache lifetime, you
- could do this by setting [`$caching`](#variable.caching) =
- Smarty::CACHING\_LIFETIME\_SAVED, then set `$cache_lifetime` to a
- unique value just before calling [`display()`](#api.display) or
- [`fetch()`](#api.fetch).
-
-If [`$force_compile`](#variable.force.compile) is enabled, the cache
-files will be regenerated every time, effectively disabling caching. You
-can clear all the cache files with the
-[`clear_all_cache()`](#api.clear.all.cache) function, or individual
-cache files (or groups) with the [`clear_cache()`](#api.clear.cache)
-function.
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-locking.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-locking.md
deleted file mode 100644
index 6dca30c7b..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-locking.md
+++ /dev/null
@@ -1,11 +0,0 @@
-\$cache\_locking {#variable.cache.locking}
-================
-
-Cache locking avoids concurrent cache generation. This means resource
-intensive pages can be generated only once, even if they\'ve been
-requested multiple times in the same moment.
-
-Cache locking is disabled by default. To enable it set `$cache_locking`
-to TRUE.
-
-See also [`$locking_timeout`](#variable.locking.timeout)
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-modified-check.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-modified-check.md
deleted file mode 100644
index 05e00bb91..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-modified-check.md
+++ /dev/null
@@ -1,12 +0,0 @@
-\$cache\_modified\_check {#variable.cache.modified.check}
-========================
-
-If set to TRUE, Smarty will respect the If-Modified-Since header sent
-from the client. If the cached file timestamp has not changed since the
-last visit, then a `'304: Not Modified'` header will be sent instead of
-the content. This works only on cached content without
-[`{insert}`](#language.function.insert) tags.
-
-See also [`$caching`](#variable.caching),
-[`$cache_lifetime`](#variable.cache.lifetime), and the [caching
-section](#caching).
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-caching-type.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-caching-type.md
deleted file mode 100644
index 22b88cf6a..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-caching-type.md
+++ /dev/null
@@ -1,9 +0,0 @@
-\$caching\_type {#variable.caching.type}
-===============
-
-This property specifies the name of the caching handler to use. It
-defaults to `file`, enabling the internal filesystem based cache
-handler.
-
-See [Custom Cache Implementation](#caching.custom) for pointers on
-setting up your own cache handler.
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-caching.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-caching.md
deleted file mode 100644
index 9377e3b6d..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-caching.md
+++ /dev/null
@@ -1,38 +0,0 @@
-\$caching {#variable.caching}
-=========
-
-This tells Smarty whether or not to cache the output of the templates to
-the [`$cache_dir`](#variable.cache.dir). By default this is set to the
-constant Smarty::CACHING\_OFF. If your templates consistently generate
-the same content, it is advisable to turn on `$caching`, as this may
-result in significant performance gains.
-
-You can also have [multiple](#caching.multiple.caches) caches for the
-same template.
-
-- A constant value of Smarty::CACHING\_LIFETIME\_CURRENT or
- Smarty::CACHING\_LIFETIME\_SAVED enables caching.
-
-- A value of Smarty::CACHING\_LIFETIME\_CURRENT tells Smarty to use
- the current [`$cache_lifetime`](#variable.cache.lifetime) variable
- to determine if the cache has expired.
-
-- A value of Smarty::CACHING\_LIFETIME\_SAVED tells Smarty to use the
- [`$cache_lifetime`](#variable.cache.lifetime) value at the time the
- cache was generated. This way you can set the
- [`$cache_lifetime`](#variable.cache.lifetime) just before
- [fetching](#api.fetch) the template to have granular control over
- when that particular cache expires. See also
- [`isCached()`](#api.is.cached).
-
-- If [`$compile_check`](#variable.compile.check) is enabled, the
- cached content will be regenerated if any of the templates or config
- files that are part of this cache are changed.
-
-- If [`$force_compile`](#variable.force.compile) is enabled, the
- cached content will always be regenerated.
-
-See also [`$cache_dir`](#variable.cache.dir),
-[`$cache_lifetime`](#variable.cache.lifetime),
-[`$cache_modified_check`](#variable.cache.modified.check),
-[`is_cached()`](#api.is.cached) and the [caching section](#caching).
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-check.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-check.md
deleted file mode 100644
index c0582d4d4..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-check.md
+++ /dev/null
@@ -1,27 +0,0 @@
-\$compile\_check {#variable.compile.check}
-================
-
-Upon each invocation of the PHP application, Smarty tests to see if the
-current template has changed (different timestamp) since the last time
-it was compiled. If it has changed, it recompiles that template. If the
-template has yet not been compiled at all, it will compile regardless of
-this setting. By default this variable is set to TRUE.
-
-Once an application is put into production (ie the templates won\'t be
-changing), the compile check step is no longer needed. Be sure to set
-`$compile_check` to FALSE for maximum performance. Note that if you
-change this to FALSE and a template file is changed, you will \*not\*
-see the change since the template will not get recompiled.
-
-If [`$caching`](#variable.caching) is enabled and `$compile_check` is
-enabled, then the cache files will get regenerated if an involved
-template file or config file was updated.
-
-As of Smarty 3.1 `$compile_check` can be set to the value
-`Smarty::COMPILECHECK_CACHEMISS`. This enables Smarty to revalidate the
-compiled template, once a cache file is regenerated. So if there was a
-cached template, but it\'s expired, Smarty will run a single
-compile\_check before regenerating the cache.
-
-See [`$force_compile`](#variable.force.compile) and
-[`clearCompiledTemplate()`](#api.clear.compiled.tpl).
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-dir.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-dir.md
deleted file mode 100644
index c18c9acba..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-dir.md
+++ /dev/null
@@ -1,29 +0,0 @@
-\$compile\_dir {#variable.compile.dir}
-==============
-
-This is the name of the directory where compiled templates are located.
-By default this is `./templates_c`, meaning that Smarty will look for
-the `templates_c/` directory in the same directory as the executing php
-script. **This directory must be writeable by the web server**, [see
-install](#installing.smarty.basic) for more info.
-
-> **Note**
->
-> This setting must be either a relative or absolute path. include\_path
-> is not used for writing files.
-
-> **Note**
->
-> It is not recommended to put this directory under the web server
-> document root.
-
-> **Note**
->
-> As of Smarty 3.1 the attribute \$compile\_dir is no longer accessible
-> directly. Use [`getCompileDir()`](#api.get.compile.dir) and
-> [`setCompileDir()`](#api.set.compile.dir) instead.
-
-See also [`getCompileDir()`](#api.get.compile.dir),
-[`setCompileDir()`](#api.set.compile.dir),
-[`$compile_id`](#variable.compile.id) and
-[`$use_sub_dirs`](#variable.use.sub.dirs).
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-id.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-id.md
deleted file mode 100644
index c63f75ab9..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-id.md
+++ /dev/null
@@ -1,44 +0,0 @@
-\$compile\_id {#variable.compile.id}
-=============
-
-Persistant compile identifier. As an alternative to passing the same
-`$compile_id` to each and every function call, you can set this
-`$compile_id` and it will be used implicitly thereafter.
-
-If you use the same template with different [pre- and/or
-post-filters](#plugins.prefilters.postfilters) you must use a unique
-`$compile_id` to keep the compiled template files separated.
-
-For example a [prefilter](#plugins.prefilters.postfilters) that
-localizes your templates (that is: translates language dependend parts)
-at compile time, then you could use the current language as
-`$compile_id` and you will get a set of compiled templates for each
-language you use.
-
-
- <?php
- $smarty->compile_id = 'en';
- ?>
-
-
-
-Another application would be to use the same compile directory across
-multiple domains / multiple virtual hosts.
-
-
- <?php
-
- $smarty->compile_id = $_SERVER['SERVER_NAME'];
- $smarty->compile_dir = '/path/to/shared_compile_dir';
-
- ?>
-
-
-
-> **Note**
->
-> In Smarty 3 a `$compile_id` is no longer required to keep templates
-> with same name in different [`$template_dir`
-> folders](#variable.template.dir) separated. The [`$template_dir` file
-> path](#variable.template.dir) is encoded in the file name of compiled
-> and cached template files.
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-locking.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-locking.md
deleted file mode 100644
index ff7a66f3a..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-locking.md
+++ /dev/null
@@ -1,7 +0,0 @@
-\$compile\_locking {#variable.compile.locking}
-==================
-
-Compile locking avoids concurrent compilation of the same template.
-
-Compile locking is enabled by default. To disable it set
-`$compile_locking` to FALSE.
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-compiler-class.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-compiler-class.md
deleted file mode 100644
index 32ea982d6..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-compiler-class.md
+++ /dev/null
@@ -1,6 +0,0 @@
-\$compiler\_class {#variable.compiler.class}
-=================
-
-Specifies the name of the compiler class that Smarty will use to compile
-the templates. The default is \'Smarty\_Compiler\'. For advanced users
-only.
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-config-booleanize.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-config-booleanize.md
deleted file mode 100644
index 4ba555f84..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-config-booleanize.md
+++ /dev/null
@@ -1,8 +0,0 @@
-\$config\_booleanize {#variable.config.booleanize}
-====================
-
-If set to TRUE, [config files](#config.files) values of `on/true/yes`
-and `off/false/no` get converted to boolean values automatically. This
-way you can use the values in the template like so:
-`{if #foobar#}...{/if}`. If foobar was `on`, `true` or `yes`, the `{if}`
-statement will execute. Defaults to TRUE.
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-config-dir.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-config-dir.md
deleted file mode 100644
index d73f3274f..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-config-dir.md
+++ /dev/null
@@ -1,23 +0,0 @@
-\$config\_dir {#variable.config.dir}
-=============
-
-This is the directory used to store [config files](#config.files) used
-in the templates. Default is `./configs`, meaning that Smarty will look
-for the `configs/` directory in the same directory as the executing php
-script.
-
-> **Note**
->
-> It is not recommended to put this directory under the web server
-> document root.
-
-> **Note**
->
-> As of Smarty 3.1 the attribute \$config\_dir is no longer accessible
-> directly. Use [`getConfigDir()`](#api.get.config.dir),
-> [`setConfigDir()`](#api.set.config.dir) and
-> [`addConfigDir()`](#api.add.config.dir) instead.
-
-See also [`getConfigDir()`](#api.get.config.dir),
-[`setConfigDir()`](#api.set.config.dir) and
-[`addConfigDir()`](#api.add.config.dir).
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-config-overwrite.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-config-overwrite.md
deleted file mode 100644
index 0b8968374..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-config-overwrite.md
+++ /dev/null
@@ -1,40 +0,0 @@
-\$config\_overwrite {#variable.config.overwrite}
-===================
-
-If set to TRUE, the default then variables read in from [config
-files](#config.files) will overwrite each other. Otherwise, the
-variables will be pushed onto an array. This is helpful if you want to
-store arrays of data in config files, just list each element multiple
-times.
-
-This examples uses [`{cycle}`](#language.function.cycle) to output a
-table with alternating red/green/blue row colors with
-`$config_overwrite` = FALSE.
-
-The config file.
-
-
- # row colors
- rowColors = #FF0000
- rowColors = #00FF00
- rowColors = #0000FF
-
-
-
-The template with a [`{section}`](#language.function.section) loop.
-
-
- <table>
- {section name=r loop=$rows}
- <tr bgcolor="{cycle values=#rowColors#}">
- <td> ....etc.... </td>
- </tr>
- {/section}
- </table>
-
-
-
-See also [`{config_load}`](#language.function.config.load),
-[`getConfigVars()`](#api.get.config.vars),
-[`clearConfig()`](#api.clear.config), [`configLoad()`](#api.config.load)
-and the [config files section](#config.files).
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-config-read-hidden.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-config-read-hidden.md
deleted file mode 100644
index 19cde68bd..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-config-read-hidden.md
+++ /dev/null
@@ -1,8 +0,0 @@
-\$config\_read\_hidden {#variable.config.read.hidden}
-======================
-
-If set to TRUE, hidden sections ie section names beginning with a
-period(.) in [config files](#config.files) can be read from templates.
-Typically you would leave this FALSE, that way you can store sensitive
-data in the config files such as database parameters and not worry about
-the template loading them. FALSE by default.
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-debug-template.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-debug-template.md
deleted file mode 100644
index faec0e171..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-debug-template.md
+++ /dev/null
@@ -1,9 +0,0 @@
-\$debug\_tpl {#variable.debug_template}
-============
-
-This is the name of the template file used for the debugging console. By
-default, it is named `debug.tpl` and is located in the
-[`SMARTY_DIR`](#constant.smarty.dir).
-
-See also [`$debugging`](#variable.debugging) and the [debugging
-console](#chapter.debugging.console) section.
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-debugging-ctrl.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-debugging-ctrl.md
deleted file mode 100644
index a9355c0a2..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-debugging-ctrl.md
+++ /dev/null
@@ -1,20 +0,0 @@
-\$debugging\_ctrl {#variable.debugging.ctrl}
-=================
-
-This allows alternate ways to enable debugging. `NONE` means no
-alternate methods are allowed. `URL` means when the keyword
-`SMARTY_DEBUG` is found in the `QUERY_STRING`, debugging is enabled for
-that invocation of the script. If [`$debugging`](#variable.debugging) is
-TRUE, this value is ignored.
-
-
- <?php
- // shows debug console only on localhost ie
- // http://localhost/script.php?foo=bar&SMARTY_DEBUG
- $smarty->debugging = false; // the default
- $smarty->debugging_ctrl = ($_SERVER['SERVER_NAME'] == 'localhost') ? 'URL' : 'NONE';
- ?>
-
-See also [debugging console](#chapter.debugging.console) section,
-[`$debugging`](#variable.debugging) and
-[`$smarty_debug_id`](#variable.smarty.debug.id).
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-debugging.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-debugging.md
deleted file mode 100644
index 4473e0c8d..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-debugging.md
+++ /dev/null
@@ -1,17 +0,0 @@
-\$debugging {#variable.debugging}
-===========
-
-This enables the [debugging console](#chapter.debugging.console). The
-console is a javascript popup window that informs you of the
-[included](#language.function.include) templates, variables
-[assigned](#api.assign) from php and [config file
-variables](#language.config.variables) for the current script. It does
-not show variables assigned within a template with the
-[`{assign}`](#language.function.assign) function.
-
-The console can also be enabled from the url with
-[`$debugging_ctrl`](#variable.debugging.ctrl).
-
-See also [`{debug}`](#language.function.debug),
-[`$debug_tpl`](#variable.debug_template), and
-[`$debugging_ctrl`](#variable.debugging.ctrl).
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-config-handler-func.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-config-handler-func.md
deleted file mode 100644
index 0d6ec5e0d..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-config-handler-func.md
+++ /dev/null
@@ -1,50 +0,0 @@
-\$default\_config\_handler\_func {#variable.default.config.handler.func}
-================================
-
-This function is called when a config file cannot be obtained from its
-resource.
-
-> **Note**
->
-> The default handler is currently only invoked for file resources. It
-> is not triggered when the resource itself cannot be found, in which
-> case a SmartyException is thrown.
-
-
- <?php
-
- $smarty = new Smarty();
- $smarty->default_config_handler_func = 'my_default_config_handler_func';
-
- /**
- * Default Config Handler
- *
- * called when Smarty's file: resource is unable to load a requested file
- *
- * @param string $type resource type (e.g. "file", "string", "eval", "resource")
- * @param string $name resource name (e.g. "foo/bar.tpl")
- * @param string &$content config's content
- * @param integer &$modified config's modification time
- * @param Smarty $smarty Smarty instance
- * @return string|boolean path to file or boolean true if $content and $modified
- * have been filled, boolean false if no default config
- * could be loaded
- */
- function my_default_config_handler_func($type, $name, &$content, &$modified, Smarty $smarty) {
- if (false) {
- // return corrected filepath
- return "/tmp/some/foobar.tpl";
- } elseif (false) {
- // return a config directly
- $content = 'someVar = "the config source"';
- $modified = time();
- return true;
- } else {
- // tell smarty that we failed
- return false;
- }
- }
-
- ?>
-
-
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-config-type.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-config-type.md
deleted file mode 100644
index 60bf9f1ea..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-config-type.md
+++ /dev/null
@@ -1,7 +0,0 @@
-\$default\_config\_type {#variable.default.config.type}
-=======================
-
-This tells smarty what resource type to use for config files. The
-default value is `file`, meaning that `$smarty->configLoad('test.conf')`
-and `$smarty->configLoad('file:test.conf')` are identical in meaning.
-See the [resource](#resources) chapter for more details.
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-modifiers.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-modifiers.md
deleted file mode 100644
index c6b73eb12..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-modifiers.md
+++ /dev/null
@@ -1,8 +0,0 @@
-\$default\_modifiers {#variable.default.modifiers}
-====================
-
-This is an array of modifiers to implicitly apply to every variable in a
-template. For example, to HTML-escape every variable by default, use
-`array('escape:"htmlall"')`. To make a variable exempt from default
-modifiers, add the \'nofilter\' attribute to the output tag such as
-`{$var nofilter}`.
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-resource-type.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-resource-type.md
deleted file mode 100644
index e8a803178..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-resource-type.md
+++ /dev/null
@@ -1,7 +0,0 @@
-\$default\_resource\_type {#variable.default.resource.type}
-=========================
-
-This tells smarty what resource type to use implicitly. The default
-value is `file`, meaning that `$smarty->display('index.tpl')` and
-`$smarty->display('file:index.tpl')` are identical in meaning. See the
-[resource](#resources) chapter for more details.
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-template-handler-func.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-template-handler-func.md
deleted file mode 100644
index d8fcbb1ad..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-template-handler-func.md
+++ /dev/null
@@ -1,50 +0,0 @@
-\$default\_template\_handler\_func {#variable.default.template.handler.func}
-==================================
-
-This function is called when a template cannot be obtained from its
-resource.
-
-> **Note**
->
-> The default handler is currently only invoked for file resources. It
-> is not triggered when the resource itself cannot be found, in which
-> case a SmartyException is thrown.
-
-
- <?php
-
- $smarty = new Smarty();
- $smarty->default_template_handler_func = 'my_default_template_handler_func';
-
- /**
- * Default Template Handler
- *
- * called when Smarty's file: resource is unable to load a requested file
- *
- * @param string $type resource type (e.g. "file", "string", "eval", "resource")
- * @param string $name resource name (e.g. "foo/bar.tpl")
- * @param string &$content template's content
- * @param integer &$modified template's modification time
- * @param Smarty $smarty Smarty instance
- * @return string|boolean path to file or boolean true if $content and $modified
- * have been filled, boolean false if no default template
- * could be loaded
- */
- function my_default_template_handler_func($type, $name, &$content, &$modified, Smarty $smarty) {
- if (false) {
- // return corrected filepath
- return "/tmp/some/foobar.tpl";
- } elseif (false) {
- // return a template directly
- $content = "the template source";
- $modified = time();
- return true;
- } else {
- // tell smarty that we failed
- return false;
- }
- }
-
- ?>
-
-
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-direct-access-security.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-direct-access-security.md
deleted file mode 100644
index f471f5de0..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-direct-access-security.md
+++ /dev/null
@@ -1,13 +0,0 @@
-\$direct\_access\_security {#variable.direct.access.security}
-==========================
-
-Direct access security inhibits direct browser access to compiled or
-cached template files.
-
-Direct access security is enabled by default. To disable it set
-`$direct_access_security` to FALSE.
-
-> **Note**
->
-> This is a compile time option. If you change the setting you must make
-> sure that the templates get recompiled.
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-error-reporting.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-error-reporting.md
deleted file mode 100644
index eec7894da..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-error-reporting.md
+++ /dev/null
@@ -1,17 +0,0 @@
-\$error\_reporting {#variable.error.reporting}
-==================
-
-When this value is set to a non-null-value it\'s value is used as php\'s
-[`error_reporting`](&url.php-manual;error_reporting) level inside of
-[`display()`](#api.display) and [`fetch()`](#api.fetch).
-
-Smarty 3.1.2 introduced the
-[`muteExpectedErrors()`](#api.mute.expected.errors) function. Calling
-`Smarty::muteExpectedErrors();` after setting up custom error handling
-will ensure that warnings and notices (deliberately) produced by Smarty
-will not be passed to other custom error handlers. If your error logs
-are filling up with warnings regarding `filemtime()` or `unlink()`
-calls, please enable Smarty\'s error muting.
-
-See also [debugging](#chapter.debugging.console) and
-[troubleshooting](#troubleshooting).
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-escape-html.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-escape-html.md
deleted file mode 100644
index 39ff28027..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-escape-html.md
+++ /dev/null
@@ -1,21 +0,0 @@
-\$escape\_html {#variable.escape.html}
-==============
-
-Setting `$escape_html` to TRUE will escape all template variable output
-by wrapping it in
-`htmlspecialchars({$output}, ENT_QUOTES, SMARTY_RESOURCE_CHAR_SET);`,
-which is the same as `{$variable|escape:"html"}`.
-
-Template designers can choose to selectively disable this feature by
-adding the `nofilter` flag: `{$variable nofilter}`.
-
-Modifiers and Filters are run in the following order: modifier,
-default\_modifier, \$escape\_html, registered variable filters,
-autoloaded variable filters, template instance\'s variable filters.
-Everything except the individual modifier can be disabled with the
-`nofilter` flag.
-
-> **Note**
->
-> This is a compile time option. If you change the setting you must make
-> sure that the templates get recompiled.
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-force-cache.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-force-cache.md
deleted file mode 100644
index de0c0c15a..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-force-cache.md
+++ /dev/null
@@ -1,6 +0,0 @@
-\$force\_cache {#variable.force.cache}
-==============
-
-This forces Smarty to (re)cache templates on every invocation. It does
-not override the [`$caching`](#variable.caching) level, but merely
-pretends the template has never been cached before.
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-force-compile.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-force-compile.md
deleted file mode 100644
index 73f1e792d..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-force-compile.md
+++ /dev/null
@@ -1,9 +0,0 @@
-\$force\_compile {#variable.force.compile}
-================
-
-This forces Smarty to (re)compile templates on every invocation. This
-setting overrides [`$compile_check`](#variable.compile.check). By
-default this is FALSE. This is handy for development and
-[debugging](#chapter.debugging.console). It should never be used in a
-production environment. If [`$caching`](#variable.caching) is enabled,
-the cache file(s) will be regenerated every time.
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-left-delimiter.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-left-delimiter.md
deleted file mode 100644
index bcc13f0e5..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-left-delimiter.md
+++ /dev/null
@@ -1,8 +0,0 @@
-\$left\_delimiter {#variable.left.delimiter}
-=================
-
-This is the left delimiter used by the template language. Default is
-`{`.
-
-See also [`$right_delimiter`](#variable.right.delimiter) and [escaping
-smarty parsing](#language.escaping) .
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-locking-timeout.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-locking-timeout.md
deleted file mode 100644
index fdfdc087e..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-locking-timeout.md
+++ /dev/null
@@ -1,7 +0,0 @@
-\$locking\_timeout {#variable.locking.timeout}
-==================
-
-This is maximum time in seconds a cache lock is valid to avoid dead
-locks. The deafult value is 10 seconds.
-
-See also [`$cache_locking`](#variable.cache.locking)
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-merge-compiled-includes.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-merge-compiled-includes.md
deleted file mode 100644
index 8220c442b..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-merge-compiled-includes.md
+++ /dev/null
@@ -1,27 +0,0 @@
-\$merge\_compiled\_includes {#variable.merge.compiled.includes}
-===========================
-
-By setting `$merge_compiled_includes` to TRUE Smarty will merge the
-compiled template code of subtemplates into the compiled code of the
-main template. This increases rendering speed of templates using a many
-different sub-templates.
-
-Individual sub-templates can be merged by setting the `inline` option
-flag within the `{include}` tag. `$merge_compiled_includes` does not
-have to be enabled for the `inline` merge.
-
-::: {.informalexample}
-
- <?php
- $smarty->merge_compiled_includes = true;
- ?>
-
-
-:::
-
-> **Note**
->
-> This is a compile time option. If you change the setting you must make
-> sure that the templates get recompiled.
-
-See also [`{include}`](#language.function.include) tag
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-php-handling.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-php-handling.md
deleted file mode 100644
index 574ea6d55..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-php-handling.md
+++ /dev/null
@@ -1,21 +0,0 @@
-\$php\_handling {#variable.php.handling}
-===============
-
-This tells Smarty how to handle PHP code embedded in the templates.
-There are four possible settings, the default being
-`Smarty::PHP_PASSTHRU`. Note that this does NOT affect php code within
-[`{php}{/php}`](#language.function.php) tags in the template.
-
-- `Smarty::PHP_PASSTHRU` - Smarty echos tags as-is.
-
-- `Smarty::PHP_QUOTE` - Smarty quotes the tags as html entities.
-
-- `Smarty::PHP_REMOVE` - Smarty removes the tags from the templates.
-
-- `Smarty::PHP_ALLOW` - Smarty will execute the tags as PHP code.
-
-> **Note**
->
-> Embedding PHP code into templates is highly discouraged. Use [custom
-> functions](#plugins.functions) or [modifiers](#plugins.modifiers)
-> instead.
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-plugins-dir.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-plugins-dir.md
deleted file mode 100644
index 8a7cfcdb2..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-plugins-dir.md
+++ /dev/null
@@ -1,28 +0,0 @@
-\$plugins\_dir {#variable.plugins.dir}
-==============
-
-This is the directory or directories where Smarty will look for the
-plugins that it needs. Default is `plugins/` under the
-[`SMARTY_DIR`](#constant.smarty.dir). If you supply a relative path,
-Smarty will first look under the [`SMARTY_DIR`](#constant.smarty.dir),
-then relative to the current working directory, then relative to the PHP
-include\_path. If `$plugins_dir` is an array of directories, Smarty will
-search for your plugin in each plugin directory **in the order they are
-given**.
-
-> **Note**
->
-> For best performance, do not setup your `$plugins_dir` to have to use
-> the PHP include path. Use an absolute pathname, or a path relative to
-> `SMARTY_DIR` or the current working directory.
-
-> **Note**
->
-> As of Smarty 3.1 the attribute \$plugins\_dir is no longer accessible
-> directly. Use [`getPluginsDir()`](#api.get.plugins.dir),
-> [`setPluginsDir()`](#api.set.plugins.dir) and
-> [`addPluginsDir()`](#api.add.plugins.dir) instead.
-
-See also [`getPluginsDir()`](#api.get.plugins.dir),
-[`setPluginsDir()`](#api.set.plugins.dir) and
-[`addPluginsDir()`](#api.add.plugins.dir).
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-right-delimiter.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-right-delimiter.md
deleted file mode 100644
index 14a9b568e..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-right-delimiter.md
+++ /dev/null
@@ -1,8 +0,0 @@
-\$right\_delimiter {#variable.right.delimiter}
-==================
-
-This is the right delimiter used by the template language. Default is
-`}`.
-
-See also [`$left_delimiter`](#variable.left.delimiter) and [escaping
-smarty parsing](#language.escaping).
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-smarty-debug-id.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-smarty-debug-id.md
deleted file mode 100644
index 0733ed518..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-smarty-debug-id.md
+++ /dev/null
@@ -1,9 +0,0 @@
-\$smarty\_debug\_id {#variable.smarty.debug.id}
-===================
-
-The value of `$smarty_debug_id` defines the URL keyword to enable
-debugging at browser level. The default value is `SMARTY_DEBUG`.
-
-See also [debugging console](#chapter.debugging.console) section,
-[`$debugging`](#variable.debugging) and
-[`$debugging_ctrl`](#variable.debugging.ctrl).
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-template-dir.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-template-dir.md
deleted file mode 100644
index e49578b1b..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-template-dir.md
+++ /dev/null
@@ -1,36 +0,0 @@
-\$template\_dir {#variable.template.dir}
-===============
-
-This is the name of the default template directory. If you do not supply
-a resource type when including files, they will be found here. By
-default this is `./templates`, meaning that Smarty will look for the
-`templates/` directory in the same directory as the executing php
-script. \$template\_dir can also be an array of directory paths: Smarty
-will traverse the directories and stop on the first matching template
-found.
-
-> **Note**
->
-> It is not recommended to put this directory under the web server
-> document root.
-
-> **Note**
->
-> If the directories known to `$template_dir` are relative to
-> directories known to the
-> [include\_path](&url.php-manual;ini.core.php#ini.include-path) you
-> need to activate the [`$use_include_path`](#variable.use.include.path)
-> option.
-
-> **Note**
->
-> As of Smarty 3.1 the attribute \$template\_dir is no longer accessible
-> directly. Use [`getTemplateDir()`](#api.get.template.dir),
-> [`setTemplateDir()`](#api.set.template.dir) and
-> [`addTemplateDir()`](#api.add.template.dir) instead.
-
-See also [`Template Resources`](#resources),
-[`$use_include_path`](#variable.use.include.path),
-[`getTemplateDir()`](#api.get.template.dir),
-[`setTemplateDir()`](#api.set.template.dir) and
-[`addTemplateDir()`](#api.add.template.dir).
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-trusted-dir.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-trusted-dir.md
deleted file mode 100644
index 3d1a308fa..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-trusted-dir.md
+++ /dev/null
@@ -1,8 +0,0 @@
-\$trusted\_dir {#variable.trusted.dir}
-==============
-
-`$trusted_dir` is only for use when security is enabled. This is an
-array of all directories that are considered trusted. Trusted
-directories are where you keep php scripts that are executed directly
-from the templates with
-[`{include_php}`](#language.function.include.php).
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-use-include-path.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-use-include-path.md
deleted file mode 100644
index 103a9767d..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-use-include-path.md
+++ /dev/null
@@ -1,49 +0,0 @@
-\$use\_include\_path {#variable.use.include.path}
-====================
-
-This tells smarty to respect the
-[include\_path](&url.php-manual;ini.core.php#ini.include-path) within
-the [`File Template Resource`](#resources.file) handler and the plugin
-loader to resolve the directories known to
-[`$template_dir`](#variable.template.dir). The flag also makes the
-plugin loader check the include\_path for
-[`$plugins_dir`](#variable.plugins.dir).
-
-> **Note**
->
-> You should not design your applications to rely on the include\_path,
-> as this may - depending on your implementation - slow down your system
-> (and Smarty) considerably.
-
-If use\_include\_path is enabled, file discovery for
-[`$template_dir`](#variable.template.dir) and
-[`$plugins_dir`](#variable.plugins.dir) work as follows.
-
-- For each element `$directory` in array (\$template\_dir or
- \$plugins\_dir) do
-
-- Test if requested file is in `$directory` relative to the [current
- working directory](&url.php-manual;function.getcwd.php). If file
- found, return it.
-
-- For each `$path` in include\_path do
-
-- Test if requested file is in `$directory` relative to the `$path`
- (possibly relative to the [current working
- directory](&url.php-manual;function.getcwd.php)). If file found,
- return it.
-
-- Try default\_handler or fail.
-
-This means that whenever a directory/file relative to the current
-working directory is encountered, it is preferred over anything
-potentially accessible through the include\_path.
-
-> **Note**
->
-> Smarty does not filter elements of the include\_path. That means a
-> \".:\" within your include path will trigger the current working
-> directory lookup twice.
-
-See also [`Template Resources`](#resources) and
-[`$template_dir`](#variable.template.dir)
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-use-sub-dirs.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-use-sub-dirs.md
deleted file mode 100644
index a95ac4159..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-use-sub-dirs.md
+++ /dev/null
@@ -1,31 +0,0 @@
-\$use\_sub\_dirs {#variable.use.sub.dirs}
-================
-
-Smarty will create subdirectories under the [compiled
-templates](#variable.compile.dir) and [cache](#variable.cache.dir)
-directories if `$use_sub_dirs` is set to TRUE, default is FALSE. In an
-environment where there are potentially tens of thousands of files
-created, this may help the filesystem speed. On the other hand, some
-environments do not allow PHP processes to create directories, so this
-must be disabled which is the default.
-
-Sub directories are more efficient, so use them if you can.
-Theoretically you get much better perfomance on a filesystem with 10
-directories each having 100 files, than with 1 directory having 1000
-files. This was certainly the case with Solaris 7 (UFS)\... with newer
-filesystems such as ext3 and especially reiserfs, the difference is
-almost nothing.
-
-> **Note**
->
-> - `$use_sub_dirs=true` doesn\'t work with
-> [safe\_mode=On](&url.php-manual;features.safe-mode), that\'s why
-> it\'s switchable and why it\'s off by default.
->
-> - `$use_sub_dirs=true` on Windows can cause problems.
->
-> - Safe\_mode is being deprecated in PHP6.
->
-See also [`$compile_id`](#variable.compile.id),
-[`$cache_dir`](#variable.cache.dir), and
-[`$compile_dir`](#variable.compile.dir).
diff --git a/vendor/smarty/smarty/docs/programmers/caching.md b/vendor/smarty/smarty/docs/programmers/caching.md
deleted file mode 100644
index 5656b71b5..000000000
--- a/vendor/smarty/smarty/docs/programmers/caching.md
+++ /dev/null
@@ -1,24 +0,0 @@
-Caching
-=======
-
-Caching is used to speed up a call to [`display()`](./api-functions/api-display.md) or
-[`fetch()`](./api-functions/api-fetch.md) by saving its output to a file. If a cached
-version of the call is available, that is displayed instead of
-regenerating the output. Caching can speed things up tremendously,
-especially templates with longer computation times. Since the output of
-[`display()`](./api-functions/api-display.md) or [`fetch()`](./api-functions/api-fetch.md) is cached, one
-cache file could conceivably be made up of several template files,
-config files, etc.
-
-Since templates are dynamic, it is important to be careful what you are
-caching and for how long. For instance, if you are displaying the front
-page of your website that does not change its content very often, it
-might work well to cache this page for an hour or more. On the other
-hand, if you are displaying a page with a timetable containing new
-information by the minute, it would not make sense to cache this page.
-
-## Table of contents
-- [Setting Up Caching](./caching/caching-setting-up.md)
-- [Multiple Caches Per Page](./caching/caching-multiple-caches.md)
-- [Controlling Cacheability of Output](./caching/caching-groups.md)
-- [Custom Cache Implementation](./caching/caching-custom.md)
diff --git a/vendor/smarty/smarty/docs/programmers/caching/caching-cacheable.md b/vendor/smarty/smarty/docs/programmers/caching/caching-cacheable.md
deleted file mode 100644
index ee9b60090..000000000
--- a/vendor/smarty/smarty/docs/programmers/caching/caching-cacheable.md
+++ /dev/null
@@ -1,176 +0,0 @@
-Controlling Cacheability of Output {#caching.cacheable}
-==================================
-
-If caching is enabled normally the whole final output of the page gets
-cached. However Smarty3 offers several options how to exclude sections
-of your output from caching.
-
-> **Note**
->
-> Be sure any variables used within a non-cached section are also
-> assigned from PHP when the page is loaded from the cache.
-
-Cacheability of Template Section {#cacheability.sections}
---------------------------------
-
-A larger section of your template can easily excluded from caching by
-using the [`{nocache}`](#language.function.nocache) and
-[`{/nocache}`](#language.function.nocache) tags.
-
-
-
- Today's date is
- {nocache}
- {$smarty.now|date_format}
- {/nocache}
-
-
-
-The above code will output the current date on a cached page.
-
-Cacheability of Tags {#cacheability.tags}
---------------------
-
-Caching for an individual tag can be disabled by adding the \"nocache\"
-option flag to the tag.
-
-
- Today's date is
- {$smarty.now|date_format nocache}
-
-
-
-Cacheability of Variables {#cacheability.variables}
--------------------------
-
-You can [`assign()`](#api.assign) variables as not cachable. Any tag
-which uses such variable will be automatically executed in nocache mode.
-
-> **Note**
->
-> If a tag is executed in nocache mode you must make sure that all other
-> variables used by that tag are also assigned from PHP when the page is
-> loaded from the cache.
-
-> **Note**
->
-> The nocache status of an assigned variable will effect the compiled
-> template code. If you change the status you must manually delete
-> existing compiled and cached template files to force a recompile.
-
-
- // assign $foo as nocahe variable
- $smarty->assign('foo',time(),true);
-
-
- Dynamic time value is {$foo}
-
-
-
-Cacheability of Plugins {#cacheability.plugins}
------------------------
-
-The cacheability of plugins can be declared when registering them. The
-third parameter to [`registerPlugin()`](#api.register.plugin) is called
-`$cacheable` and defaults to TRUE.
-
-When registering a plugin with `$cacheable=false` the plugin is called
-everytime the page is displayed, even if the page comes from the cache.
-The plugin function behaves a little like an
-[`{insert}`](#plugins.inserts) function.
-
-> **Note**
->
-> The `$cacheable` status will effect the compiled template code. If you
-> change the status you must manually delete existing compiled and
-> cached template files to force a recompile.
-
-In contrast to [`{insert}`](#plugins.inserts) the attributes to the
-plugins are not cached by default. They can be declared to be cached
-with the fourth parameter `$cache_attrs`. `$cache_attrs` is an array of
-attribute-names that should be cached, so the plugin-function get value
-as it was the time the page was written to cache everytime it is fetched
-from the cache.
-
-
- <?php
- $smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT);
-
- function remaining_seconds($params, $smarty) {
- $remain = $params['endtime'] - time();
- if($remain >= 0){
- return $remain . ' second(s)';
- }else{
- return 'done';
- }
- }
-
- $smarty->registerPlugin('function','remaining', 'remaining_seconds', false, array('endtime'));
-
- if (!$smarty->isCached('index.tpl')) {
- // fetch $obj from db and assign...
- $smarty->assignByRef('obj', $obj);
- }
-
- $smarty->display('index.tpl');
- ?>
-
-
-
-where `index.tpl` is:
-
-
- Time Remaining: {remaining endtime=$obj->endtime}
-
-
-
-The number of seconds till the endtime of `$obj` is reached changes on
-each display of the page, even if the page is cached. Since the endtime
-attribute is cached the object only has to be pulled from the database
-when page is written to the cache but not on subsequent requests of the
-page.
-
-
- index.php:
-
- <?php
- $smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT);
-
- function smarty_block_dynamic($param, $content, $smarty) {
- return $content;
- }
- $smarty->registerPlugin('block','dynamic', 'smarty_block_dynamic', false);
-
- $smarty->display('index.tpl');
- ?>
-
-
-
-where `index.tpl` is:
-
-
- Page created: {'0'|date_format:'%D %H:%M:%S'}
-
- {dynamic}
-
- Now is: {'0'|date_format:'%D %H:%M:%S'}
-
- ... do other stuff ...
-
- {/dynamic}
-
-
-
-When reloading the page you will notice that both dates differ. One is
-"dynamic" one is "static". You can do everything between
-`{dynamic}...{/dynamic}` and be sure it will not be cached like the rest
-of the page.
-
-> **Note**
->
-> The above example shall just demonstrate how a dynamic block plugins
-> works. See
-> [`Cacheability of Template Section`](#cacheability.sections) on how to
-> disable caching of a template section by the built-in
-> [`{nocache}`](#language.function.nocache) and
-> [`{/nocache}`](#language.function.nocache) tags.
diff --git a/vendor/smarty/smarty/docs/programmers/caching/caching-custom.md b/vendor/smarty/smarty/docs/programmers/caching/caching-custom.md
deleted file mode 100644
index 77d2ce7b3..000000000
--- a/vendor/smarty/smarty/docs/programmers/caching/caching-custom.md
+++ /dev/null
@@ -1,296 +0,0 @@
-Custom Cache Implementation {#caching.custom}
-===========================
-
-As an alternative to using the default file-based caching mechanism, you
-can specify a custom cache implementation that will be used to read,
-write and clear cached files.
-
-> **Note**
->
-> In Smarty2 this used to be a callback function called
-> `$cache_handler_func`. Smarty3 replaced this callback by the
-> `Smarty_CacheResource` module.
-
-With a custom cache implementation you\'re likely trying to achieve at
-least one of the following goals: replace the slow filesystem by a
-faster storage engine, centralize the cache to be accessible to multiple
-servers.
-
-Smarty allows CacheResource implementations to use one of the APIs
-`Smarty_CacheResource_Custom` or `Smarty_CacheResource_KeyValueStore`.
-`Smarty_CacheResource_Custom` is a simple API directing all read, write,
-clear calls to your implementation. This API allows you to store
-wherever and however you deem fit. The
-`Smarty_CacheResource_KeyValueStore` API allows you to turn any \"dumb\"
-KeyValue-Store (like APC, Memcache, ...) into a full-featured
-CacheResource implementation. That is, everything around deep
-cache-groups like \"a\|b\|c\" is being handled for you in way that
-allows clearing the cache-group \"a\" and all nested groups are cleared
-as well - even though KeyValue-Stores don\'t allow this kind of
-hierarchy by nature.
-
-Custom CacheResources may be put in a file `cacheresource.foobarxyz.php`
-within your [`$plugins_dir`](#variable.plugins.dir), or registered on
-runtime with [`registerCacheResource()`](#api.register.cacheresource).
-In either case you need to set [`$caching_type`](#variable.caching.type)
-to invoke your custom CacheResource implementation.
-
-
- <?php
-
- require_once 'libs/Smarty.class.php';
- $smarty = new Smarty();
- $smarty->caching_type = 'mysql';
-
- /**
- * MySQL CacheResource
- *
- * CacheResource Implementation based on the Custom API to use
- * MySQL as the storage resource for Smarty's output caching.
- *
- * Table definition:
- * <pre>CREATE TABLE IF NOT EXISTS `output_cache` (
- * `id` CHAR(40) NOT NULL COMMENT 'sha1 hash',
- * `name` VARCHAR(250) NOT NULL,
- * `cache_id` VARCHAR(250) NULL DEFAULT NULL,
- * `compile_id` VARCHAR(250) NULL DEFAULT NULL,
- * `modified` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
- * `content` LONGTEXT NOT NULL,
- * PRIMARY KEY (`id`),
- * INDEX(`name`),
- * INDEX(`cache_id`),
- * INDEX(`compile_id`),
- * INDEX(`modified`)
- * ) ENGINE = InnoDB;</pre>
- *
- * @package CacheResource-examples
- * @author Rodney Rehm
- */
- class Smarty_CacheResource_Mysql extends Smarty_CacheResource_Custom {
- // PDO instance
- protected $db;
- protected $fetch;
- protected $fetchTimestamp;
- protected $save;
-
- public function __construct() {
- try {
- $this->db = new PDO("mysql:dbname=test;host=127.0.0.1", "smarty", "smarty");
- } catch (PDOException $e) {
- throw new SmartyException('Mysql Resource failed: ' . $e->getMessage());
- }
- $this->fetch = $this->db->prepare('SELECT modified, content FROM output_cache WHERE id = :id');
- $this->fetchTimestamp = $this->db->prepare('SELECT modified FROM output_cache WHERE id = :id');
- $this->save = $this->db->prepare('REPLACE INTO output_cache (id, name, cache_id, compile_id, content)
- VALUES (:id, :name, :cache_id, :compile_id, :content)');
- }
-
- /**
- * fetch cached content and its modification time from data source
- *
- * @param string $id unique cache content identifier
- * @param string $name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param string $content cached content
- * @param integer $mtime cache modification timestamp (epoch)
- * @return void
- */
- protected function fetch($id, $name, $cache_id, $compile_id, &$content, &$mtime)
- {
- $this->fetch->execute(array('id' => $id));
- $row = $this->fetch->fetch();
- $this->fetch->closeCursor();
- if ($row) {
- $content = $row['content'];
- $mtime = strtotime($row['modified']);
- } else {
- $content = null;
- $mtime = null;
- }
- }
-
- /**
- * Fetch cached content's modification timestamp from data source
- *
- * @note implementing this method is optional. Only implement it if modification times can be accessed faster than loading the complete cached content.
- * @param string $id unique cache content identifier
- * @param string $name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @return integer|boolean timestamp (epoch) the template was modified, or false if not found
- */
- protected function fetchTimestamp($id, $name, $cache_id, $compile_id)
- {
- $this->fetchTimestamp->execute(array('id' => $id));
- $mtime = strtotime($this->fetchTimestamp->fetchColumn());
- $this->fetchTimestamp->closeCursor();
- return $mtime;
- }
-
- /**
- * Save content to cache
- *
- * @param string $id unique cache content identifier
- * @param string $name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param integer|null $exp_time seconds till expiration time in seconds or null
- * @param string $content content to cache
- * @return boolean success
- */
- protected function save($id, $name, $cache_id, $compile_id, $exp_time, $content)
- {
- $this->save->execute(array(
- 'id' => $id,
- 'name' => $name,
- 'cache_id' => $cache_id,
- 'compile_id' => $compile_id,
- 'content' => $content,
- ));
- return !!$this->save->rowCount();
- }
-
- /**
- * Delete content from cache
- *
- * @param string $name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param integer|null $exp_time seconds till expiration or null
- * @return integer number of deleted caches
- */
- protected function delete($name, $cache_id, $compile_id, $exp_time)
- {
- // delete the whole cache
- if ($name === null && $cache_id === null && $compile_id === null && $exp_time === null) {
- // returning the number of deleted caches would require a second query to count them
- $query = $this->db->query('TRUNCATE TABLE output_cache');
- return -1;
- }
- // build the filter
- $where = array();
- // equal test name
- if ($name !== null) {
- $where[] = 'name = ' . $this->db->quote($name);
- }
- // equal test compile_id
- if ($compile_id !== null) {
- $where[] = 'compile_id = ' . $this->db->quote($compile_id);
- }
- // range test expiration time
- if ($exp_time !== null) {
- $where[] = 'modified < DATE_SUB(NOW(), INTERVAL ' . intval($exp_time) . ' SECOND)';
- }
- // equal test cache_id and match sub-groups
- if ($cache_id !== null) {
- $where[] = '(cache_id = '. $this->db->quote($cache_id)
- . ' OR cache_id LIKE '. $this->db->quote($cache_id .'|%') .')';
- }
- // run delete query
- $query = $this->db->query('DELETE FROM output_cache WHERE ' . join(' AND ', $where));
- return $query->rowCount();
- }
- }
-
-
-
-
- <?php
-
- require_once 'libs/Smarty.class.php';
- $smarty = new Smarty();
- $smarty->caching_type = 'memcache';
-
- /**
- * Memcache CacheResource
- *
- * CacheResource Implementation based on the KeyValueStore API to use
- * memcache as the storage resource for Smarty's output caching.
- *
- * Note that memcache has a limitation of 256 characters per cache-key.
- * To avoid complications all cache-keys are translated to a sha1 hash.
- *
- * @package CacheResource-examples
- * @author Rodney Rehm
- */
- class Smarty_CacheResource_Memcache extends Smarty_CacheResource_KeyValueStore {
- /**
- * memcache instance
- * @var Memcache
- */
- protected $memcache = null;
-
- public function __construct()
- {
- $this->memcache = new Memcache();
- $this->memcache->addServer( '127.0.0.1', 11211 );
- }
-
- /**
- * Read values for a set of keys from cache
- *
- * @param array $keys list of keys to fetch
- * @return array list of values with the given keys used as indexes
- * @return boolean true on success, false on failure
- */
- protected function read(array $keys)
- {
- $_keys = $lookup = array();
- foreach ($keys as $k) {
- $_k = sha1($k);
- $_keys[] = $_k;
- $lookup[$_k] = $k;
- }
- $_res = array();
- $res = $this->memcache->get($_keys);
- foreach ($res as $k => $v) {
- $_res[$lookup[$k]] = $v;
- }
- return $_res;
- }
-
- /**
- * Save values for a set of keys to cache
- *
- * @param array $keys list of values to save
- * @param int $expire expiration time
- * @return boolean true on success, false on failure
- */
- protected function write(array $keys, $expire=null)
- {
- foreach ($keys as $k => $v) {
- $k = sha1($k);
- $this->memcache->set($k, $v, 0, $expire);
- }
- return true;
- }
-
- /**
- * Remove values from cache
- *
- * @param array $keys list of keys to delete
- * @return boolean true on success, false on failure
- */
- protected function delete(array $keys)
- {
- foreach ($keys as $k) {
- $k = sha1($k);
- $this->memcache->delete($k);
- }
- return true;
- }
-
- /**
- * Remove *all* values from cache
- *
- * @return boolean true on success, false on failure
- */
- protected function purge()
- {
- return $this->memcache->flush();
- }
- }
-
-
-
diff --git a/vendor/smarty/smarty/docs/programmers/caching/caching-groups.md b/vendor/smarty/smarty/docs/programmers/caching/caching-groups.md
deleted file mode 100644
index 98e5d45c1..000000000
--- a/vendor/smarty/smarty/docs/programmers/caching/caching-groups.md
+++ /dev/null
@@ -1,60 +0,0 @@
-Cache Groups {#caching.groups}
-============
-
-You can do more elaborate grouping by setting up `$cache_id` groups.
-This is accomplished by separating each sub-group with a vertical bar
-`|` in the `$cache_id` value. You can have as many sub-groups as you
-like.
-
-- You can think of cache groups like a directory hierarchy. For
- instance, a cache group of `'a|b|c'` could be thought of as the
- directory structure `'/a/b/c/'`.
-
-- `clearCache(null,'a|b|c')` would be like removing the files
- `'/a/b/c/*'`. `clearCache(null,'a|b')` would be like removing the
- files `'/a/b/*'`.
-
-- If you specify a [`$compile_id`](#variable.compile.id) such as
- `clearCache(null,'a|b','foo')` it is treated as an appended cache
- group `'/a/b/c/foo/'`.
-
-- If you specify a template name such as
- `clearCache('foo.tpl','a|b|c')` then Smarty will attempt to remove
- `'/a/b/c/foo.tpl'`.
-
-- You CANNOT remove a specified template name under multiple cache
- groups such as `'/a/b/*/foo.tpl'`, the cache grouping works
- left-to-right ONLY. You will need to group your templates under a
- single cache group heirarchy to be able to clear them as a group.
-
-Cache grouping should not be confused with your template directory
-heirarchy, the cache grouping has no knowledge of how your templates are
-structured. So for example, if you have a template structure like
-`themes/blue/index.tpl` and you want to be able to clear all the cache
-files for the "blue" theme, you will need to create a cache group
-structure that mimics your template file structure, such as
-`display('themes/blue/index.tpl','themes|blue')`, then clear them with
-`clearCache(null,'themes|blue')`.
-
-
- <?php
- require('Smarty.class.php');
- $smarty = new Smarty;
-
- $smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT);
-
- // clear all caches with 'sports|basketball' as the first two cache_id groups
- $smarty->clearCache(null,'sports|basketball');
-
- // clear all caches with "sports" as the first cache_id group. This would
- // include "sports|basketball", or "sports|(anything)|(anything)|(anything)|..."
- $smarty->clearCache(null,'sports');
-
- // clear the foo.tpl cache file with "sports|basketball" as the cache_id
- $smarty->clearCache('foo.tpl','sports|basketball');
-
-
- $smarty->display('index.tpl','sports|basketball');
- ?>
-
-
diff --git a/vendor/smarty/smarty/docs/programmers/caching/caching-multiple-caches.md b/vendor/smarty/smarty/docs/programmers/caching/caching-multiple-caches.md
deleted file mode 100644
index 40fffc3d7..000000000
--- a/vendor/smarty/smarty/docs/programmers/caching/caching-multiple-caches.md
+++ /dev/null
@@ -1,87 +0,0 @@
-Multiple Caches Per Page {#caching.multiple.caches}
-========================
-
-You can have multiple cache files for a single call to
-[`display()`](#api.display) or [`fetch()`](#api.fetch). Let\'s say that
-a call to `display('index.tpl')` may have several different output
-contents depending on some condition, and you want separate caches for
-each one. You can do this by passing a `$cache_id` as the second
-parameter to the function call.
-
-
- <?php
- require('Smarty.class.php');
- $smarty = new Smarty;
-
- $smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT);
-
- $my_cache_id = $_GET['article_id'];
-
- $smarty->display('index.tpl', $my_cache_id);
- ?>
-
-
-
-Above, we are passing the variable `$my_cache_id` to
-[`display()`](#api.display) as the `$cache_id`. For each unique value of
-`$my_cache_id`, a separate cache will be generated for `index.tpl`. In
-this example, `article_id` was passed in the URL and is used as the
-`$cache_id`.
-
-> **Note**
->
-> Be very cautious when passing values from a client (web browser) into
-> Smarty or any PHP application. Although the above example of using the
-> article\_id from the URL looks handy, it could have bad consequences.
-> The `$cache_id` is used to create a directory on the file system, so
-> if the user decided to pass an extremely large value for article\_id,
-> or write a script that sends random article\_id\'s at a rapid pace,
-> this could possibly cause problems at the server level. Be sure to
-> sanitize any data passed in before using it. In this instance, maybe
-> you know the article\_id has a length of ten characters and is made up
-> of alpha-numerics only, and must be a valid article\_id in the
-> database. Check for this!
-
-Be sure to pass the same `$cache_id` as the second parameter to
-[`isCached()`](#api.is.cached) and [`clearCache()`](#api.clear.cache).
-
-
- <?php
- require('Smarty.class.php');
- $smarty = new Smarty;
-
- $smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT);
-
- $my_cache_id = $_GET['article_id'];
-
- if(!$smarty->isCached('index.tpl',$my_cache_id)) {
- // No cache available, do variable assignments here.
- $contents = get_database_contents();
- $smarty->assign($contents);
- }
-
- $smarty->display('index.tpl',$my_cache_id);
- ?>
-
-
-
-You can clear all caches for a particular `$cache_id` by passing NULL as
-the first parameter to [`clearCache()`](#api.clear.cache).
-
-
- <?php
- require('Smarty.class.php');
- $smarty = new Smarty;
-
- $smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT);
-
- // clear all caches with "sports" as the $cache_id
- $smarty->clearCache(null,'sports');
-
- $smarty->display('index.tpl','sports');
- ?>
-
-
-
-In this manner, you can "group" your caches together by giving them the
-same `$cache_id`.
diff --git a/vendor/smarty/smarty/docs/programmers/caching/caching-setting-up.md b/vendor/smarty/smarty/docs/programmers/caching/caching-setting-up.md
deleted file mode 100644
index bc9d2ad9e..000000000
--- a/vendor/smarty/smarty/docs/programmers/caching/caching-setting-up.md
+++ /dev/null
@@ -1,153 +0,0 @@
-Setting Up Caching {#caching.setting.up}
-==================
-
-The first thing to do is enable caching by setting
-[`$caching`](#variable.caching) to one of
-`Smarty::CACHING_LIFETIME_CURRENT` or `Smarty::CACHING_LIFETIME_SAVED`.
-
-
- <?php
- require('Smarty.class.php');
- $smarty = new Smarty;
-
- // uses the value of $smarty->cacheLifetime() to determine
- // the number of seconds a cache is good for
- $smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT);
-
- $smarty->display('index.tpl');
- ?>
-
-
-
-With caching enabled, the function call to `display('index.tpl')` will
-render the template as usual, but also saves a copy of its output to a
-file (a cached copy) in the [`$cache_dir`](#variable.cache.dir). On the
-next call to `display('index.tpl')`, the cached copy will be used
-instead of rendering the template again.
-
-> **Note**
->
-> The files in the [`$cache_dir`](#variable.cache.dir) are named similar
-> to the template name. Although they end in the `.php` extension, they
-> are not intended to be directly executable. Do not edit these files!
-
-Each cached page has a limited lifetime determined by
-[`$cache_lifetime`](#variable.cache.lifetime). The default value is 3600
-seconds, or one hour. After that time expires, the cache is regenerated.
-It is possible to give individual caches their own expiration time by
-setting [`$caching`](#variable.caching) to
-`Smarty::CACHING_LIFETIME_SAVED`. See
-[`$cache_lifetime`](#variable.cache.lifetime) for more details.
-
-
- <?php
- require('Smarty.class.php');
- $smarty = new Smarty;
-
- // retain current cache lifetime for each specific display call
- $smarty->setCaching(Smarty::CACHING_LIFETIME_SAVED);
-
- // set the cache_lifetime for index.tpl to 5 minutes
- $smarty->setCacheLifetime(300);
- $smarty->display('index.tpl');
-
- // set the cache_lifetime for home.tpl to 1 hour
- $smarty->setCacheLifetime(3600);
- $smarty->display('home.tpl');
-
- // NOTE: the following $cache_lifetime setting will not work when $caching
- // is set to Smarty::CACHING_LIFETIME_SAVED.
- // The cache lifetime for home.tpl has already been set
- // to 1 hour, and will no longer respect the value of $cache_lifetime.
- // The home.tpl cache will still expire after 1 hour.
- $smarty->setCacheLifetime(30); // 30 seconds
- $smarty->display('home.tpl');
- ?>
-
-
-
-If [`$compile_check`](#variable.compile.check) is enabled (default),
-every template file and config file that is involved with the cache file
-is checked for modification. If any of the files have been modified
-since the cache was generated, the cache is immediately regenerated.
-This is a computational overhead, so for optimum performance set
-[`$compile_check`](#variable.compile.check) to FALSE.
-
-
- <?php
- require('Smarty.class.php');
- $smarty = new Smarty;
-
- $smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT);
- $smarty->setCompileCheck(false);
-
- $smarty->display('index.tpl');
- ?>
-
-
-
-If [`$force_compile`](#variable.force.compile) is enabled, the cache
-files will always be regenerated. This effectively disables caching,
-however this also seriously degrades performance.
-[`$force_compile`](#variable.force.compile) is meant to be used for
-[debugging](#chapter.debugging.console) purposes. The appropriate way to
-disable caching is to set [`$caching`](#variable.caching) to
-Smarty::CACHING\_OFF.
-
-The [`isCached()`](#api.is.cached) function can be used to test if a
-template has a valid cache or not. If you have a cached template that
-requires something like a database fetch, you can use this to skip that
-process.
-
-
- <?php
- require('Smarty.class.php');
- $smarty = new Smarty;
-
- $smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT);
-
- if(!$smarty->isCached('index.tpl')) {
- // No cache available, do variable assignments here.
- $contents = get_database_contents();
- $smarty->assign($contents);
- }
-
- $smarty->display('index.tpl');
- ?>
-
-
-
-You can keep parts of a page dynamic (disable caching) with the
-[`{nocache}{/nocache}`](#language.function.nocache) block function, the
-[`{insert}`](#language.function.insert) function, or by using the
-`nocache` parameter for most template functions.
-
-Let\'s say the whole page can be cached except for a banner that is
-displayed down the side of the page. By using the
-[`{insert}`](#language.function.insert) function for the banner, you can
-keep this element dynamic within the cached content. See the
-documentation on [`{insert}`](#language.function.insert) for more
-details and examples.
-
-You can clear all the cache files with the
-[`clearAllCache()`](#api.clear.all.cache) function, or individual cache
-files [and groups](#caching.groups) with the
-[`clearCache()`](#api.clear.cache) function.
-
-
- <?php
- require('Smarty.class.php');
- $smarty = new Smarty;
-
- $smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT);
-
- // clear only cache for index.tpl
- $smarty->clearCache('index.tpl');
-
- // clear out all cache files
- $smarty->clearAllCache();
-
- $smarty->display('index.tpl');
- ?>
-
-
diff --git a/vendor/smarty/smarty/docs/programmers/charset.md b/vendor/smarty/smarty/docs/programmers/charset.md
deleted file mode 100644
index 72842b3f7..000000000
--- a/vendor/smarty/smarty/docs/programmers/charset.md
+++ /dev/null
@@ -1,43 +0,0 @@
-Charset Encoding {#charset}
-================
-
-Charset Encoding {#charset.encoding}
-================
-
-There are a variety of encodings for textual data, ISO-8859-1 (Latin1)
-and UTF-8 being the most popular. Unless specified otherwise with the
-`SMARTY_RESOURCE_CHAR_SET` constant, Smarty recognizes `UTF-8` as the
-internal charset if [Multibyte String](https://www.php.net/mbstring) is
-available, `ISO-8859-1` if not.
-
-> **Note**
->
-> `ISO-8859-1` has been PHP\'s default internal charset since the
-> beginning. Unicode has been evolving since 1991. Since then it has
-> become the one charset to conquer them all, as it is capable of
-> encoding most of the known characters even accross different character
-> systems (latin, cyrillic, japanese, ...). `UTF-8` is unicode\'s most
-> used encoding, as it allows referencing the thousands of character
-> with the smallest size overhead possible.
->
-> Since unicode and UTF-8 are very wide spread nowadays, their use is
-> strongly encouraged.
-
-> **Note**
->
-> Smarty\'s internals and core plugins are truly UTF-8 compatible since
-> Smarty 3.1. To achieve unicode compatibility, the [Multibyte
-> String](https://www.php.net/mbstring) PECL is required. Unless your PHP
-> environment offers this package, Smarty will not be able to offer
-> full-scale UTF-8 compatibility.
-
-
- // use japanese character encoding
- if (function_exists('mb_internal_charset')) {
- mb_internal_charset('EUC-JP');
- }
- define('SMARTY_RESOURCE_CHAR_SET', 'EUC-JP');
- require_once 'libs/Smarty.class.php';
- $smarty = new Smarty();
-
-
diff --git a/vendor/smarty/smarty/docs/programmers/plugins.md b/vendor/smarty/smarty/docs/programmers/plugins.md
deleted file mode 100644
index 41a7ea0c4..000000000
--- a/vendor/smarty/smarty/docs/programmers/plugins.md
+++ /dev/null
@@ -1,44 +0,0 @@
-Extending Smarty With Plugins {#plugins}
-=============================
-
-## Table of contents
-
-- [How Plugins Work](./plugins/plugins-howto.md)
-- [Naming Conventions](./plugins/plugins-naming-conventions.md)
-- [Writing Plugins](./plugins/plugins-writing.md)
-- [Template Functions](./plugins/plugins-functions.md)
-- [Modifiers](./plugins/plugins-modifiers.md)
-- [Block Functions](./plugins/plugins-block-functions.md)
-- [Compiler Functions](./plugins/plugins-compiler-functions.md)
-- [Prefilters/Postfilters](./plugins/plugins-prefilters-postfilters.md)
-- [Output Filters](./plugins/plugins-outputfilters.md)
-- [Resources](./plugins/plugins-resources.md)
-- [Inserts](./plugins/plugins-inserts.md)
-
-Version 2.0 introduced the plugin architecture that is used for almost
-all the customizable functionality of Smarty. This includes:
-
-- functions
-
-- modifiers
-
-- block functions
-
-- compiler functions
-
-- prefilters
-
-- postfilters
-
-- outputfilters
-
-- resources
-
-- inserts
-
-With the exception of resources, backwards compatibility with the old
-way of registering handler functions via register\_\* API is preserved.
-If you did not use the API but instead modified the class variables
-`$custom_funcs`, `$custom_mods`, and other ones directly, then you will
-need to adjust your scripts to either use the API or convert your custom
-functionality into plugins.
diff --git a/vendor/smarty/smarty/docs/programmers/plugins/plugins-block-functions.md b/vendor/smarty/smarty/docs/programmers/plugins/plugins-block-functions.md
deleted file mode 100644
index 47281fef5..000000000
--- a/vendor/smarty/smarty/docs/programmers/plugins/plugins-block-functions.md
+++ /dev/null
@@ -1,95 +0,0 @@
-Block Functions {#plugins.block.functions}
-===============
-
-void
-
-smarty\_block\_
-
-name
-
-array
-
-\$params
-
-mixed
-
-\$content
-
-object
-
-\$template
-
-boolean
-
-&\$repeat
-
-Block functions are functions of the form: `{func} .. {/func}`. In other
-words, they enclose a template block and operate on the contents of this
-block. Block functions take precedence over [custom
-functions](#language.custom.functions) of the same name, that is, you
-cannot have both custom function `{func}` and block function
-`{func}..{/func}`.
-
-- By default your function implementation is called twice by Smarty:
- once for the opening tag, and once for the closing tag. (See
- `$repeat` below on how to change this.)
-
-- Starting with Smarty 3.1 the returned value of the opening tag call
- is displayed as well.
-
-- Only the opening tag of the block function may have
- [attributes](#language.syntax.attributes). All attributes passed to
- template functions from the template are contained in the `$params`
- variable as an associative array. The opening tag attributes are
- also accessible to your function when processing the closing tag.
-
-- The value of the `$content` variable depends on whether your
- function is called for the opening or closing tag. In case of the
- opening tag, it will be NULL, and in case of the closing tag it will
- be the contents of the template block. Note that the template block
- will have already been processed by Smarty, so all you will receive
- is the template output, not the template source.
-
-- The parameter `$repeat` is passed by reference to the function
- implementation and provides a possibility for it to control how many
- times the block is displayed. By default `$repeat` is TRUE at the
- first call of the block-function (the opening tag) and FALSE on all
- subsequent calls to the block function (the block\'s closing tag).
- Each time the function implementation returns with `$repeat` being
- TRUE, the contents between `{func}...{/func}` are evaluated and the
- function implementation is called again with the new block contents
- in the parameter `$content`.
-
-If you have nested block functions, it\'s possible to find out what the
-parent block function is by accessing `$smarty->_tag_stack` variable.
-Just do a [`var_dump()`](&url.php-manual;var_dump) on it and the
-structure should be apparent.
-
-
- <?php
- /*
- * Smarty plugin
- * -------------------------------------------------------------
- * File: block.translate.php
- * Type: block
- * Name: translate
- * Purpose: translate a block of text
- * -------------------------------------------------------------
- */
- function smarty_block_translate($params, $content, Smarty_Internal_Template $template, &$repeat)
- {
- // only output on the closing tag
- if(!$repeat){
- if (isset($content)) {
- $lang = $params['lang'];
- // do some intelligent translation thing here with $content
- return $translation;
- }
- }
- }
- ?>
-
-
-
-See also: [`registerPlugin()`](#api.register.plugin),
-[`unregisterPlugin()`](#api.unregister.plugin).
diff --git a/vendor/smarty/smarty/docs/programmers/plugins/plugins-compiler-functions.md b/vendor/smarty/smarty/docs/programmers/plugins/plugins-compiler-functions.md
deleted file mode 100644
index ef2454e8a..000000000
--- a/vendor/smarty/smarty/docs/programmers/plugins/plugins-compiler-functions.md
+++ /dev/null
@@ -1,66 +0,0 @@
-Compiler Functions {#plugins.compiler.functions}
-==================
-
-Compiler functions are called only during compilation of the template.
-They are useful for injecting PHP code or time-sensitive static content
-into the template. If there is both a compiler function and a [custom
-function](#language.custom.functions) registered under the same name,
-the compiler function has precedence.
-
-mixed
-
-smarty\_compiler\_
-
-name
-
-array
-
-\$params
-
-object
-
-\$smarty
-
-The compiler function is passed two parameters: the params array which
-contains precompiled strings for the attribute values and the Smarty
-object. It\'s supposed to return the code to be injected into the
-compiled template including the surrounding PHP tags.
-
-
- <?php
- /*
- * Smarty plugin
- * -------------------------------------------------------------
- * File: compiler.tplheader.php
- * Type: compiler
- * Name: tplheader
- * Purpose: Output header containing the source file name and
- * the time it was compiled.
- * -------------------------------------------------------------
- */
- function smarty_compiler_tplheader($params, Smarty $smarty)
- {
- return "<?php\necho '" . $smarty->_current_file . " compiled at " . date('Y-m-d H:M'). "';\n?>";
- }
- ?>
-
-This function can be called from the template as:
-
-
- {* this function gets executed at compile time only *}
- {tplheader}
-
-
-
-The resulting PHP code in the compiled template would be something like
-this:
-
-
- <?php
- echo 'index.tpl compiled at 2002-02-20 20:02';
- ?>
-
-
-
-See also [`registerPlugin()`](#api.register.plugin),
-[`unregisterPlugin()`](#api.unregister.plugin).
diff --git a/vendor/smarty/smarty/docs/programmers/plugins/plugins-functions.md b/vendor/smarty/smarty/docs/programmers/plugins/plugins-functions.md
deleted file mode 100644
index 067b93826..000000000
--- a/vendor/smarty/smarty/docs/programmers/plugins/plugins-functions.md
+++ /dev/null
@@ -1,94 +0,0 @@
-Template Functions {#plugins.functions}
-==================
-
-void
-
-smarty\_function\_
-
-name
-
-array
-
-\$params
-
-object
-
-\$template
-
-All [attributes](#language.syntax.attributes) passed to template
-functions from the template are contained in the `$params` as an
-associative array.
-
-The output (return value) of the function will be substituted in place
-of the function tag in the template, eg the
-[`{fetch}`](#language.function.fetch) function. Alternatively, the
-function can simply perform some other task without any output, eg the
-[`{assign}`](#language.function.assign) function.
-
-If the function needs to assign some variables to the template or use
-some other Smarty-provided functionality, it can use the supplied
-`$template` object to do so eg `$template->foo()`.
-
-
- <?php
- /*
- * Smarty plugin
- * -------------------------------------------------------------
- * File: function.eightball.php
- * Type: function
- * Name: eightball
- * Purpose: outputs a random magic answer
- * -------------------------------------------------------------
- */
- function smarty_function_eightball($params, Smarty_Internal_Template $template)
- {
- $answers = array('Yes',
- 'No',
- 'No way',
- 'Outlook not so good',
- 'Ask again soon',
- 'Maybe in your reality');
-
- $result = array_rand($answers);
- return $answers[$result];
- }
- ?>
-
-which can be used in the template as:
-
- Question: Will we ever have time travel?
- Answer: {eightball}.
-
-
-
- <?php
- /*
- * Smarty plugin
- * -------------------------------------------------------------
- * File: function.assign.php
- * Type: function
- * Name: assign
- * Purpose: assign a value to a template variable
- * -------------------------------------------------------------
- */
- function smarty_function_assign($params, Smarty_Internal_Template $template)
- {
- if (empty($params['var'])) {
- trigger_error("assign: missing 'var' parameter");
- return;
- }
-
- if (!in_array('value', array_keys($params))) {
- trigger_error("assign: missing 'value' parameter");
- return;
- }
-
- $template->assign($params['var'], $params['value']);
-
- }
- ?>
-
-
-
-See also: [`registerPlugin()`](#api.register.plugin),
-[`unregisterPlugin()`](#api.unregister.plugin).
diff --git a/vendor/smarty/smarty/docs/programmers/plugins/plugins-howto.md b/vendor/smarty/smarty/docs/programmers/plugins/plugins-howto.md
deleted file mode 100644
index 5738c3fcb..000000000
--- a/vendor/smarty/smarty/docs/programmers/plugins/plugins-howto.md
+++ /dev/null
@@ -1,18 +0,0 @@
-How Plugins Work {#plugins.howto}
-================
-
-Plugins are always loaded on demand. Only the specific modifiers,
-functions, resources, etc invoked in the templates scripts will be
-loaded. Moreover, each plugin is loaded only once, even if you have
-several different instances of Smarty running within the same request.
-
-Pre/postfilters and output filters are a bit of a special case. Since
-they are not mentioned in the templates, they must be registered or
-loaded explicitly via API functions before the template is processed.
-The order in which multiple filters of the same type are executed
-depends on the order in which they are registered or loaded.
-
-The [plugins directory](#variable.plugins.dir) can be a string
-containing a path or an array containing multiple paths. To install a
-plugin, simply place it in one of the directories and Smarty will use it
-automatically.
diff --git a/vendor/smarty/smarty/docs/programmers/plugins/plugins-inserts.md b/vendor/smarty/smarty/docs/programmers/plugins/plugins-inserts.md
deleted file mode 100644
index 370a97bd0..000000000
--- a/vendor/smarty/smarty/docs/programmers/plugins/plugins-inserts.md
+++ /dev/null
@@ -1,48 +0,0 @@
-Inserts {#plugins.inserts}
-=======
-
-Insert plugins are used to implement functions that are invoked by
-[`{insert}`](#language.function.insert) tags in the template.
-
-string
-
-smarty\_insert\_
-
-name
-
-array
-
-\$params
-
-object
-
-\$template
-
-The first parameter to the function is an associative array of
-attributes passed to the insert.
-
-The insert function is supposed to return the result which will be
-substituted in place of the `{insert}` tag in the template.
-
-
- <?php
- /*
- * Smarty plugin
- * -------------------------------------------------------------
- * File: insert.time.php
- * Type: time
- * Name: time
- * Purpose: Inserts current date/time according to format
- * -------------------------------------------------------------
- */
- function smarty_insert_time($params, Smarty_Internal_Template $template)
- {
- if (empty($params['format'])) {
- trigger_error("insert time: missing 'format' parameter");
- return;
- }
- return strftime($params['format']);
- }
- ?>
-
-
diff --git a/vendor/smarty/smarty/docs/programmers/plugins/plugins-modifiers.md b/vendor/smarty/smarty/docs/programmers/plugins/plugins-modifiers.md
deleted file mode 100644
index b089821a6..000000000
--- a/vendor/smarty/smarty/docs/programmers/plugins/plugins-modifiers.md
+++ /dev/null
@@ -1,86 +0,0 @@
-Modifiers {#plugins.modifiers}
-=========
-
-[Modifiers](#language.modifiers) are little functions that are applied
-to a variable in the template before it is displayed or used in some
-other context. Modifiers can be chained together.
-
-mixed
-
-smarty\_modifier\_
-
-name
-
-mixed
-
-\$value
-
-\[mixed
-
-\$param1
-
-, \...\]
-
-The first parameter to the modifier plugin is the value on which the
-modifier is to operate. The rest of the parameters are optional,
-depending on what kind of operation is to be performed.
-
-The modifier has to [return](&url.php-manual;return) the result of its
-processing.
-
-This plugin basically aliases one of the built-in PHP functions. It does
-not have any additional parameters.
-
-
- <?php
- /*
- * Smarty plugin
- * -------------------------------------------------------------
- * File: modifier.capitalize.php
- * Type: modifier
- * Name: capitalize
- * Purpose: capitalize words in the string
- * -------------------------------------------------------------
- */
- function smarty_modifier_capitalize($string)
- {
- return ucwords($string);
- }
- ?>
-
-
- <?php
- /*
- * Smarty plugin
- * -------------------------------------------------------------
- * File: modifier.truncate.php
- * Type: modifier
- * Name: truncate
- * Purpose: Truncate a string to a certain length if necessary,
- * optionally splitting in the middle of a word, and
- * appending the $etc string.
- * -------------------------------------------------------------
- */
- function smarty_modifier_truncate($string, $length = 80, $etc = '...',
- $break_words = false)
- {
- if ($length == 0)
- return '';
-
- if (strlen($string) > $length) {
- $length -= strlen($etc);
- $fragment = substr($string, 0, $length+1);
- if ($break_words)
- $fragment = substr($fragment, 0, -1);
- else
- $fragment = preg_replace('/\s+(\S+)?$/', '', $fragment);
- return $fragment.$etc;
- } else
- return $string;
- }
- ?>
-
-
-
-See also [`registerPlugin()`](#api.register.plugin),
-[`unregisterPlugin()`](#api.unregister.plugin).
diff --git a/vendor/smarty/smarty/docs/programmers/plugins/plugins-naming-conventions.md b/vendor/smarty/smarty/docs/programmers/plugins/plugins-naming-conventions.md
deleted file mode 100644
index 28bbcfde8..000000000
--- a/vendor/smarty/smarty/docs/programmers/plugins/plugins-naming-conventions.md
+++ /dev/null
@@ -1,51 +0,0 @@
-Naming Conventions {#plugins.naming.conventions}
-==================
-
-Plugin files and functions must follow a very specific naming convention
-in order to be located by Smarty.
-
-**plugin files** must be named as follows:
-
-> `
-> type.name.php
-> `
-
-- Where `type` is one of these plugin types:
-
- - function
-
- - modifier
-
- - block
-
- - compiler
-
- - prefilter
-
- - postfilter
-
- - outputfilter
-
- - resource
-
- - insert
-
-- And `name` should be a valid identifier; letters, numbers, and
- underscores only, see [php
- variables](&url.php-manual;language.variables).
-
-- Some examples: `function.html_select_date.php`, `resource.db.php`,
- `modifier.spacify.php`.
-
-**plugin functions** inside the PHP files must be named as follows:
-
-> `smarty_type_name`
-
-- The meanings of `type` and `name` are the same as above.
-
-- An example modifier name `foo` would be
- `function smarty_modifier_foo()`.
-
-Smarty will output appropriate error messages if the plugin file it
-needs is not found, or if the file or the plugin function are named
-improperly.
diff --git a/vendor/smarty/smarty/docs/programmers/plugins/plugins-outputfilters.md b/vendor/smarty/smarty/docs/programmers/plugins/plugins-outputfilters.md
deleted file mode 100644
index 4e34ab7eb..000000000
--- a/vendor/smarty/smarty/docs/programmers/plugins/plugins-outputfilters.md
+++ /dev/null
@@ -1,48 +0,0 @@
-Output Filters {#plugins.outputfilters}
-==============
-
-Output filter plugins operate on a template\'s output, after the
-template is loaded and executed, but before the output is displayed.
-
-string
-
-smarty\_outputfilter\_
-
-name
-
-string
-
-\$template\_output
-
-object
-
-\$template
-
-The first parameter to the output filter function is the template output
-that needs to be processed, and the second parameter is the instance of
-Smarty invoking the plugin. The plugin is supposed to do the processing
-and return the results.
-
-
- <?php
- /*
- * Smarty plugin
- * -------------------------------------------------------------
- * File: outputfilter.protect_email.php
- * Type: outputfilter
- * Name: protect_email
- * Purpose: Converts @ sign in email addresses to %40 as
- * a simple protection against spambots
- * -------------------------------------------------------------
- */
- function smarty_outputfilter_protect_email($output, Smarty_Internal_Template $template)
- {
- return preg_replace('!(\S+)@([a-zA-Z0-9\.\-]+\.([a-zA-Z]{2,3}|[0-9]{1,3}))!',
- '$1%40$2', $output);
- }
- ?>
-
-
-
-See also [`registerFilter()`](#api.register.filter),
-[`unregisterFilter()`](#api.unregister.filter).
diff --git a/vendor/smarty/smarty/docs/programmers/plugins/plugins-prefilters-postfilters.md b/vendor/smarty/smarty/docs/programmers/plugins/plugins-prefilters-postfilters.md
deleted file mode 100644
index 39467cbcb..000000000
--- a/vendor/smarty/smarty/docs/programmers/plugins/plugins-prefilters-postfilters.md
+++ /dev/null
@@ -1,89 +0,0 @@
-Prefilters/Postfilters {#plugins.prefilters.postfilters}
-======================
-
-Prefilter and postfilter plugins are very similar in concept; where they
-differ is in the execution \-- more precisely the time of their
-execution.
-
-string
-
-smarty\_prefilter\_
-
-name
-
-string
-
-\$source
-
-object
-
-\$template
-
-Prefilters are used to process the source of the template immediately
-before compilation. The first parameter to the prefilter function is the
-template source, possibly modified by some other prefilters. The plugin
-is supposed to return the modified source. Note that this source is not
-saved anywhere, it is only used for compilation.
-
-string
-
-smarty\_postfilter\_
-
-name
-
-string
-
-\$compiled
-
-object
-
-\$template
-
-Postfilters are used to process the compiled output of the template (the
-PHP code) immediately after the compilation is done but before the
-compiled template is saved to the filesystem. The first parameter to the
-postfilter function is the compiled template code, possibly modified by
-other postfilters. The plugin is supposed to return the modified version
-of this code.
-
-
- <?php
- /*
- * Smarty plugin
- * -------------------------------------------------------------
- * File: prefilter.pre01.php
- * Type: prefilter
- * Name: pre01
- * Purpose: Convert html tags to be lowercase.
- * -------------------------------------------------------------
- */
- function smarty_prefilter_pre01($source, Smarty_Internal_Template $template)
- {
- return preg_replace('!<(\w+)[^>]+>!e', 'strtolower("$1")', $source);
- }
- ?>
-
-
-
-
- <?php
- /*
- * Smarty plugin
- * -------------------------------------------------------------
- * File: postfilter.post01.php
- * Type: postfilter
- * Name: post01
- * Purpose: Output code that lists all current template vars.
- * -------------------------------------------------------------
- */
- function smarty_postfilter_post01($compiled, Smarty_Internal_Template $template)
- {
- $compiled = "<pre>\n<?php print_r(\$template->getTemplateVars()); ?>\n</pre>" . $compiled;
- return $compiled;
- }
- ?>
-
-
-
-See also [`registerFilter()`](#api.register.filter) and
-[`unregisterFilter()`](#api.unregister.filter).
diff --git a/vendor/smarty/smarty/docs/programmers/plugins/plugins-resources.md b/vendor/smarty/smarty/docs/programmers/plugins/plugins-resources.md
deleted file mode 100644
index 1b1fdf0ab..000000000
--- a/vendor/smarty/smarty/docs/programmers/plugins/plugins-resources.md
+++ /dev/null
@@ -1,128 +0,0 @@
-Resources {#plugins.resources}
-=========
-
-Resource plugins are meant as a generic way of providing template
-sources or PHP script components to Smarty. Some examples of resources:
-databases, LDAP, shared memory, sockets, and so on.
-
-Custom Resources may be put in a file `resource.foobarxyz.php` within
-your [`$plugins_dir`](#variable.plugins.dir), or registered on runtime
-with [`registerResource()`](#api.register.resource). In either case you
-will be able to access that resource by prepending its name to the
-template you\'re addressing: `foobarxyz:yourtemplate.tpl`.
-
-If a Resource\'s templates should not be run through the Smarty
-compiler, the Custom Resource may extend `Smarty_Resource_Uncompiled`.
-The Resource Handler must then implement the function
-`renderUncompiled(Smarty_Internal_Template $_template)`. `$_template` is
-a reference to the current template and contains all assigned variables
-which the implementor can access via
-`$_template->smarty->getTemplateVars()`. These Resources simply echo
-their rendered content to the output stream. The rendered output will be
-output-cached if the Smarty instance was configured accordingly. See
-`libs/sysplugins/smarty_internal_resource_php.php` for an example.
-
-If the Resource\'s compiled templates should not be cached on disk, the
-Custom Resource may extend `Smarty_Resource_Recompiled`. These Resources
-are compiled every time they are accessed. This may be an expensive
-overhead. See `libs/sysplugins/smarty_internal_resource_eval.php` for an
-example.
-
-
- <?php
-
- /**
- * MySQL Resource
- *
- * Resource Implementation based on the Custom API to use
- * MySQL as the storage resource for Smarty's templates and configs.
- *
- * Table definition:
- * <pre>CREATE TABLE IF NOT EXISTS `templates` (
- * `name` varchar(100) NOT NULL,
- * `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
- * `source` text,
- * PRIMARY KEY (`name`)
- * ) ENGINE=InnoDB DEFAULT CHARSET=utf8;</pre>
- *
- * Demo data:
- * <pre>INSERT INTO `templates` (`name`, `modified`, `source`) VALUES ('test.tpl', "2010-12-25 22:00:00", '{$x="hello world"}{$x}');</pre>
- *
- * @package Resource-examples
- * @author Rodney Rehm
- */
- class Smarty_Resource_Mysql extends Smarty_Resource_Custom {
- // PDO instance
- protected $db;
- // prepared fetch() statement
- protected $fetch;
- // prepared fetchTimestamp() statement
- protected $mtime;
-
- public function __construct() {
- try {
- $this->db = new PDO("mysql:dbname=test;host=127.0.0.1", "smarty", "smarty");
- } catch (PDOException $e) {
- throw new SmartyException('Mysql Resource failed: ' . $e->getMessage());
- }
- $this->fetch = $this->db->prepare('SELECT modified, source FROM templates WHERE name = :name');
- $this->mtime = $this->db->prepare('SELECT modified FROM templates WHERE name = :name');
- }
-
- /**
- * Fetch a template and its modification time from database
- *
- * @param string $name template name
- * @param string $source template source
- * @param integer $mtime template modification timestamp (epoch)
- * @return void
- */
- protected function fetch($name, &$source, &$mtime)
- {
- $this->fetch->execute(array('name' => $name));
- $row = $this->fetch->fetch();
- $this->fetch->closeCursor();
- if ($row) {
- $source = $row['source'];
- $mtime = strtotime($row['modified']);
- } else {
- $source = null;
- $mtime = null;
- }
- }
-
- /**
- * Fetch a template's modification time from database
- *
- * @note implementing this method is optional. Only implement it if modification times can be accessed faster than loading the comple template source.
- * @param string $name template name
- * @return integer timestamp (epoch) the template was modified
- */
- protected function fetchTimestamp($name) {
- $this->mtime->execute(array('name' => $name));
- $mtime = $this->mtime->fetchColumn();
- $this->mtime->closeCursor();
- return strtotime($mtime);
- }
- }
-
-
- require_once 'libs/Smarty.class.php';
- $smarty = new Smarty();
- $smarty->registerResource('mysql', new Smarty_Resource_Mysql());
-
- // using resource from php script
- $smarty->display("mysql:index.tpl");
- ?>
-
-
-
-And from within Smarty template:
-
-
- {include file='mysql:extras/navigation.tpl'}
-
-
-
-See also [`registerResource()`](#api.register.resource),
-[`unregisterResource()`](#api.unregister.resource).
diff --git a/vendor/smarty/smarty/docs/programmers/plugins/plugins-writing.md b/vendor/smarty/smarty/docs/programmers/plugins/plugins-writing.md
deleted file mode 100644
index 972911d97..000000000
--- a/vendor/smarty/smarty/docs/programmers/plugins/plugins-writing.md
+++ /dev/null
@@ -1,36 +0,0 @@
-Writing Plugins {#plugins.writing}
-===============
-
-Plugins can be either loaded by Smarty automatically from the filesystem
-or they can be registered at runtime via one of the register\_\* API
-functions. They can also be unregistered by using unregister\_\* API
-functions.
-
-For the plugins that are registered at runtime, the name of the plugin
-function(s) does not have to follow the naming convention.
-
-If a plugin depends on some functionality provided by another plugin (as
-is the case with some plugins bundled with Smarty), then the proper way
-to load the needed plugin is this:
-
-
- <?php
- function smarty_function_yourPlugin(array $params, Smarty_Internal_Template $template)
- {
- // load plugin depended upon
- $template->smarty->loadPlugin('smarty_shared_make_timestamp');
- // plugin code
- }
- ?>
-
-
-
-As a general rule, the currently evaluated template\'s
-Smarty\_Internal\_Template object is always passed to the plugins as the
-last parameter with two exceptions:
-
-- modifiers do not get passed the Smarty\_Internal\_Template object at
- all
-
-- blocks get passed `$repeat` after the Smarty\_Internal\_Template
- object to keep backwards compatibility to older versions of Smarty.
diff --git a/vendor/smarty/smarty/docs/programmers/resources.md b/vendor/smarty/smarty/docs/programmers/resources.md
deleted file mode 100644
index 239690061..000000000
--- a/vendor/smarty/smarty/docs/programmers/resources.md
+++ /dev/null
@@ -1,19 +0,0 @@
-Resources
-=========
-
-The templates may come from a variety of sources. When you
-[`display()`](./api-functions/api-display.md) or [`fetch()`](./api-functions/api-fetch.md) a template, or
-when you include a template from within another template, you supply a
-resource type, followed by the appropriate path and template name. If a
-resource is not explicitly given, the value of
-[`$default_resource_type`](./api-variables/variable-default-resource-type.md) (default:
-\"file\") is assumed.
-
-## Table of contents
-
-- [File Template Resources](./resources/resources-file.md)
-- [String Template Resources](./resources/resources-string.md)
-- [Stream Template Resources](./resources/resources-streams.md)
-- [Extends Template Resources](./resources/resources-extends.md)
-- [Custom Template Resources](./resources/resources-custom.md)
-
diff --git a/vendor/smarty/smarty/docs/programmers/resources/resources-custom.md b/vendor/smarty/smarty/docs/programmers/resources/resources-custom.md
deleted file mode 100644
index d679afcb1..000000000
--- a/vendor/smarty/smarty/docs/programmers/resources/resources-custom.md
+++ /dev/null
@@ -1,111 +0,0 @@
-Custom Template Resources {#resources.custom}
-=========================
-
-You can retrieve templates using whatever possible source you can access
-with PHP: databases, sockets, files, etc. You do this by writing
-resource plugin functions and registering them with Smarty.
-
-See [resource plugins](#plugins.resources) section for more information
-on the functions you are supposed to provide.
-
-> **Note**
->
-> Note that you cannot override the built-in `file:` resource, but you
-> can provide a resource that fetches templates from the file system in
-> some other way by registering under another resource name.
-
-
- <?php
-
- /**
- * MySQL Resource
- *
- * Resource Implementation based on the Custom API to use
- * MySQL as the storage resource for Smarty's templates and configs.
- *
- * Table definition:
- * <pre>CREATE TABLE IF NOT EXISTS `templates` (
- * `name` varchar(100) NOT NULL,
- * `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
- * `source` text,
- * PRIMARY KEY (`name`)
- * ) ENGINE=InnoDB DEFAULT CHARSET=utf8;</pre>
- *
- * Demo data:
- * <pre>INSERT INTO `templates` (`name`, `modified`, `source`) VALUES ('test.tpl', "2010-12-25 22:00:00", '{$x="hello world"}{$x}');</pre>
- *
- * @package Resource-examples
- * @author Rodney Rehm
- */
- class Smarty_Resource_Mysql extends Smarty_Resource_Custom {
- // PDO instance
- protected $db;
- // prepared fetch() statement
- protected $fetch;
- // prepared fetchTimestamp() statement
- protected $mtime;
-
- public function __construct() {
- try {
- $this->db = new PDO("mysql:dbname=test;host=127.0.0.1", "smarty", "smarty");
- } catch (PDOException $e) {
- throw new SmartyException('Mysql Resource failed: ' . $e->getMessage());
- }
- $this->fetch = $this->db->prepare('SELECT modified, source FROM templates WHERE name = :name');
- $this->mtime = $this->db->prepare('SELECT modified FROM templates WHERE name = :name');
- }
-
- /**
- * Fetch a template and its modification time from database
- *
- * @param string $name template name
- * @param string $source template source
- * @param integer $mtime template modification timestamp (epoch)
- * @return void
- */
- protected function fetch($name, &$source, &$mtime)
- {
- $this->fetch->execute(array('name' => $name));
- $row = $this->fetch->fetch();
- $this->fetch->closeCursor();
- if ($row) {
- $source = $row['source'];
- $mtime = strtotime($row['modified']);
- } else {
- $source = null;
- $mtime = null;
- }
- }
-
- /**
- * Fetch a template's modification time from database
- *
- * @note implementing this method is optional. Only implement it if modification times can be accessed faster than loading the comple template source.
- * @param string $name template name
- * @return integer timestamp (epoch) the template was modified
- */
- protected function fetchTimestamp($name) {
- $this->mtime->execute(array('name' => $name));
- $mtime = $this->mtime->fetchColumn();
- $this->mtime->closeCursor();
- return strtotime($mtime);
- }
- }
-
-
- require_once 'libs/Smarty.class.php';
- $smarty = new Smarty();
- $smarty->registerResource('mysql', new Smarty_Resource_Mysql());
-
- // using resource from php script
- $smarty->display("mysql:index.tpl");
- ?>
-
-
-
-And from within Smarty template:
-
-
- {include file='mysql:extras/navigation.tpl'}
-
-
diff --git a/vendor/smarty/smarty/docs/programmers/resources/resources-extends.md b/vendor/smarty/smarty/docs/programmers/resources/resources-extends.md
deleted file mode 100644
index ad2e8f5d8..000000000
--- a/vendor/smarty/smarty/docs/programmers/resources/resources-extends.md
+++ /dev/null
@@ -1,36 +0,0 @@
-Extends Template Resources {#resources.extends}
-==========================
-
-The `extends:` resource is used to define child/parent relationships for
-template inheritance from the PHP script. For details see section of
-[Template Interitance](#advanced.features.template.inheritance).
-
-As of Smarty 3.1 the `extends:` resource may use any available [template
-resource](#resources), including `string:` and `eval:`. When [templates
-from strings](#resources.string) are used, make sure they are properly
-(url or base64) encoded. Is an `eval:` resource found within an
-inheritance chain, its \"don\'t save a compile file\" property is
-superseeded by the `extends:` resource. The templates within an
-inheritance chain are not compiled separately, though. Only a single
-compiled template will be generated.
-
-> **Note**
->
-> Use this when inheritance is required programatically. When inheriting
-> within PHP, it is not obvious from the child template what inheritance
-> took place. If you have a choice, it is normally more flexible and
-> intuitive to handle inheritance chains from within the templates.
-
-
- <?php
- $smarty->display('extends:parent.tpl|child.tpl|grandchild.tpl');
-
- // inheritance from multiple template sources
- $smarty->display('extends:db:parent.tpl|file:child.tpl|grandchild.tpl|eval:{block name="fooBazVar_"}hello world{/block}');
- ?>
-
-
-
-See also [Template Inheritance](#advanced.features.template.inheritance)
-[`{block}`](#language.function.block) and
-[`{extends}`](#language.function.extends).
diff --git a/vendor/smarty/smarty/docs/programmers/resources/resources-file.md b/vendor/smarty/smarty/docs/programmers/resources/resources-file.md
deleted file mode 100644
index 986cfffca..000000000
--- a/vendor/smarty/smarty/docs/programmers/resources/resources-file.md
+++ /dev/null
@@ -1,160 +0,0 @@
-File Template Resources {#resources.file}
-=======================
-
-Smarty ships with a built-in template resource for the filesystem. The
-`file:` is the default resource. The resource key `file:` must only be
-specified, if the
-[`$default_resource_type`](#variable.default.resource.type) has been
-changed.
-
-If the file resource cannot find the requested template, the
-[`$default_template_handler_func`](#variable.default.template.handler.func)
-is invoked.
-
-> **Note**
->
-> As of Smarty 3.1 the file resource no longer walks through the
-> [include\_path](&url.php-manual;ini.core.php#ini.include-path) unless
-> [`$use_include_path` is activated](#variable.use.include.path)
-
-Templates from \$template\_dir {#templates.from.template.dir}
-------------------------------
-
-The file resource pulls templates source files from the directories
-specified in [`$template_dir`](#variable.template.dir). The list of
-directories is traversed in the order they appear in the array. The
-first template found is the one to process.
-
-
- <?php
- $smarty->display('index.tpl');
- $smarty->display('file:index.tpl'); // same as above
- ?>
-
-
-
-From within a Smarty template
-
-
- {include file='index.tpl'}
- {include file='file:index.tpl'} {* same as above *}
-
-
-
-Templates from a specific \$template\_dir {#templates.from.specified.template.dir}
------------------------------------------
-
-Smarty 3.1 introduced the bracket-syntax for specifying an element from
-[`$template_dir`](#variable.template.dir). This allows websites
-employing multiple sets of templates better control over which template
-to acces.
-
-The bracket-syntax can be used from anywhere you can specify the `file:`
-resource type.
-
-
- <?php
-
- // setup template directories
- $smarty->setTemplateDir(array(
- './templates', // element: 0, index: 0
- './templates_2', // element: 1, index: 1
- '10' => 'templates_10', // element: 2, index: '10'
- 'foo' => 'templates_foo', // element: 3, index: 'foo'
- ));
-
- /*
- assume the template structure
- ./templates/foo.tpl
- ./templates_2/foo.tpl
- ./templates_2/bar.tpl
- ./templates_10/foo.tpl
- ./templates_10/bar.tpl
- ./templates_foo/foo.tpl
- */
-
- // regular access
- $smarty->display('file:foo.tpl');
- // will load ./templates/foo.tpl
-
- // using numeric index
- $smarty->display('file:[1]foo.tpl');
- // will load ./templates_2/foo.tpl
-
- // using numeric string index
- $smarty->display('file:[10]foo.tpl');
- // will load ./templates_10/foo.tpl
-
- // using string index
- $smarty->display('file:[foo]foo.tpl');
- // will load ./templates_foo/foo.tpl
-
- // using "unknown" numeric index (using element number)
- $smarty->display('file:[2]foo.tpl');
- // will load ./templates_10/foo.tpl
-
- ?>
-
-
-
-From within a Smarty template
-
-
- {include file="file:foo.tpl"}
- {* will load ./templates/foo.tpl *}
-
- {include file="file:[1]foo.tpl"}
- {* will load ./templates_2/foo.tpl *}
-
- {include file="file:[foo]foo.tpl"}
- {* will load ./templates_foo/foo.tpl *}
-
-
-
-Templates from any directory {#templates.from.any.dir}
-----------------------------
-
-Templates outside of the [`$template_dir`](#variable.template.dir)
-require the `file:` template resource type, followed by the absolute
-path to the template (with leading slash.)
-
-> **Note**
->
-> With [`Security`](#advanced.features.security) enabled, access to
-> templates outside of the [`$template_dir`](#variable.template.dir) is
-> not allowed unless you list those directories in `$secure_dir`.
-
-
- <?php
- $smarty->display('file:/export/templates/index.tpl');
- $smarty->display('file:/path/to/my/templates/menu.tpl');
- ?>
-
-
-
-And from within a Smarty template:
-
-
- {include file='file:/usr/local/share/templates/navigation.tpl'}
-
-
-
-Windows Filepaths {#templates.windows.filepath}
------------------
-
-If you are using a Windows machine, filepaths usually include a drive
-letter (C:) at the beginning of the pathname. Be sure to use `file:` in
-the path to avoid namespace conflicts and get the desired results.
-
-
- <?php
- $smarty->display('file:C:/export/templates/index.tpl');
- $smarty->display('file:F:/path/to/my/templates/menu.tpl');
- ?>
-
-
-
-And from within Smarty template:
-
-
- {include file='file:D:/usr/local/share/templates/navigation.tpl'}
diff --git a/vendor/smarty/smarty/docs/programmers/resources/resources-streams.md b/vendor/smarty/smarty/docs/programmers/resources/resources-streams.md
deleted file mode 100644
index e0596f591..000000000
--- a/vendor/smarty/smarty/docs/programmers/resources/resources-streams.md
+++ /dev/null
@@ -1,27 +0,0 @@
-Stream Template Resources {#resources.streams}
-=========================
-
-Streams allow you to use PHP streams as a template resource. The syntax
-is much the same a traditional template resource names.
-
-Smarty will first look for a registered template resource. If nothing is
-found, it will check if a PHP stream is available. If a stream is
-available, Smarty will use it to fetch the template.
-
-> **Note**
->
-> You can further define allowed streams with security enabled.
-
-Using a PHP stream for a template resource from the display() function.
-
-
- $smarty->display('foo:bar.tpl');
-
-
-
-Using a PHP stream for a template resource from within a template.
-
-
- {include file="foo:bar.tpl"}
-
-
diff --git a/vendor/smarty/smarty/docs/programmers/resources/resources-string.md b/vendor/smarty/smarty/docs/programmers/resources/resources-string.md
deleted file mode 100644
index 4b19d8e32..000000000
--- a/vendor/smarty/smarty/docs/programmers/resources/resources-string.md
+++ /dev/null
@@ -1,73 +0,0 @@
-String Template Resources {#resources.string}
-=========================
-
-Smarty can render templates from a string by using the `string:` or
-`eval:` resource.
-
-- The `string:` resource behaves much the same as a template file. The
- template source is compiled from a string and stores the compiled
- template code for later reuse. Each unique template string will
- create a new compiled template file. If your template strings are
- accessed frequently, this is a good choice. If you have frequently
- changing template strings (or strings with low reuse value), the
- `eval:` resource may be a better choice, as it doesn\'t save
- compiled templates to disk.
-
-- The `eval:` resource evaluates the template source every time a page
- is rendered. This is a good choice for strings with low reuse value.
- If the same string is accessed frequently, the `string:` resource
- may be a better choice.
-
-> **Note**
->
-> With a `string:` resource type, each unique string generates a
-> compiled file. Smarty cannot detect a string that has changed, and
-> therefore will generate a new compiled file for each unique string. It
-> is important to choose the correct resource so that you do not fill
-> your disk space with wasted compiled strings.
-
-
- <?php
- $smarty->assign('foo','value');
- $template_string = 'display {$foo} here';
- $smarty->display('string:'.$template_string); // compiles for later reuse
- $smarty->display('eval:'.$template_string); // compiles every time
- ?>
-
-
-
-From within a Smarty template
-
-
- {include file="string:$template_string"} {* compiles for later reuse *}
- {include file="eval:$template_string"} {* compiles every time *}
-
-
-
-
-Both `string:` and `eval:` resources may be encoded with
-[`urlencode()`](&url.php-manual;urlencode) or
-[`base64_encode()`](&url.php-manual;urlencode). This is not necessary
-for the usual use of `string:` and `eval:`, but is required when using
-either of them in conjunction with
-[`Extends Template Resource`](#resources.extends)
-
-
- <?php
- $smarty->assign('foo','value');
- $template_string_urlencode = urlencode('display {$foo} here');
- $template_string_base64 = base64_encode('display {$foo} here');
- $smarty->display('eval:urlencode:'.$template_string_urlencode); // will decode string using urldecode()
- $smarty->display('eval:base64:'.$template_string_base64); // will decode string using base64_decode()
- ?>
-
-
-
-From within a Smarty template
-
-
- {include file="string:urlencode:$template_string_urlencode"} {* will decode string using urldecode() *}
- {include file="eval:base64:$template_string_base64"} {* will decode string using base64_decode() *}
-
-
-
diff --git a/vendor/smarty/smarty/docs/programmers/resources/template-resources.md b/vendor/smarty/smarty/docs/programmers/resources/template-resources.md
deleted file mode 100644
index 7bb5d752e..000000000
--- a/vendor/smarty/smarty/docs/programmers/resources/template-resources.md
+++ /dev/null
@@ -1,130 +0,0 @@
-Resources {#resasdources}
-=========
-
-The templates may come from a variety of sources. When you
-[`display()`](#api.display) or [`fetch()`](#api.fetch) a template, or
-when you include a template from within another template, you supply a
-resource type, followed by the appropriate path and template name. If a
-resource is not explicitly given, the value of
-[`$default_resource_type`](#variable.default.resource.type) is assumed.
-
-Templates from other sources {#templates.from.elsewhere}
-----------------------------
-
-You can retrieve templates using whatever possible source you can access
-with PHP: databases, sockets, files, etc. You do this by writing
-resource plugin functions and registering them with Smarty.
-
-See [resource plugins](#plugins.resources) section for more information
-on the functions you are supposed to provide.
-
-> **Note**
->
-> Note that you cannot override the built-in `file:` resource, but you
-> can provide a resource that fetches templates from the file system in
-> some other way by registering under another resource name.
-
-
- <?php
-
- /**
- * MySQL Resource
- *
- * Resource Implementation based on the Custom API to use
- * MySQL as the storage resource for Smarty's templates and configs.
- *
- * Table definition:
- * <pre>CREATE TABLE IF NOT EXISTS `templates` (
- * `name` varchar(100) NOT NULL,
- * `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
- * `source` text,
- * PRIMARY KEY (`name`)
- * ) ENGINE=InnoDB DEFAULT CHARSET=utf8;</pre>
- *
- * Demo data:
- * <pre>INSERT INTO `templates` (`name`, `modified`, `source`) VALUES ('test.tpl', "2010-12-25 22:00:00", '{$x="hello world"}{$x}');</pre>
- *
- * @package Resource-examples
- * @author Rodney Rehm
- */
- class Smarty_Resource_Mysql extends Smarty_Resource_Custom {
- // PDO instance
- protected $db;
- // prepared fetch() statement
- protected $fetch;
- // prepared fetchTimestamp() statement
- protected $mtime;
-
- public function __construct() {
- try {
- $this->db = new PDO("mysql:dbname=test;host=127.0.0.1", "smarty", "smarty");
- } catch (PDOException $e) {
- throw new SmartyException('Mysql Resource failed: ' . $e->getMessage());
- }
- $this->fetch = $this->db->prepare('SELECT modified, source FROM templates WHERE name = :name');
- $this->mtime = $this->db->prepare('SELECT modified FROM templates WHERE name = :name');
- }
-
- /**
- * Fetch a template and its modification time from database
- *
- * @param string $name template name
- * @param string $source template source
- * @param integer $mtime template modification timestamp (epoch)
- * @return void
- */
- protected function fetch($name, &$source, &$mtime)
- {
- $this->fetch->execute(array('name' => $name));
- $row = $this->fetch->fetch();
- $this->fetch->closeCursor();
- if ($row) {
- $source = $row['source'];
- $mtime = strtotime($row['modified']);
- } else {
- $source = null;
- $mtime = null;
- }
- }
-
- /**
- * Fetch a template's modification time from database
- *
- * @note implementing this method is optional. Only implement it if modification times can be accessed faster than loading the comple template source.
- * @param string $name template name
- * @return integer timestamp (epoch) the template was modified
- */
- protected function fetchTimestamp($name) {
- $this->mtime->execute(array('name' => $name));
- $mtime = $this->mtime->fetchColumn();
- $this->mtime->closeCursor();
- return strtotime($mtime);
- }
- }
-
-
- require_once 'libs/Smarty.class.php';
- $smarty = new Smarty();
- $smarty->registerResource('mysql', new Smarty_Resource_Mysql());
-
- // using resource from php script
- $smarty->display("mysql:index.tpl");
- ?>
-
-
-
-And from within Smarty template:
-
-
- {include file='mysql:extras/navigation.tpl'}
-
-
-
-Default template handler function {#default.template.handler.function}
----------------------------------
-
-You can specify a function that is used to retrieve template contents in
-the event the template cannot be retrieved from its resource. One use of
-this is to create templates that do not exist on-the-fly.
-
-See also [`Streams`](#advanced.features.streams)
diff --git a/vendor/smarty/smarty/docs/programmers/smarty-constants.md b/vendor/smarty/smarty/docs/programmers/smarty-constants.md
deleted file mode 100644
index 042ea5e38..000000000
--- a/vendor/smarty/smarty/docs/programmers/smarty-constants.md
+++ /dev/null
@@ -1,27 +0,0 @@
-Constants {#smarty.constants}
-=========
-
-SMARTY\_DIR {#constant.smarty.dir}
-===========
-
-This is the **full system path** to the location of the Smarty class
-files. If this is not defined in your script, then Smarty will attempt
-to determine the appropriate value automatically. If defined, the path
-**must end with a trailing slash/**.
-
-
- <?php
- // set path to Smarty directory *nix style
- define('SMARTY_DIR', '/usr/local/lib/php/Smarty-v.e.r/libs/');
-
- // path to Smarty windows style
- define('SMARTY_DIR', 'c:/webroot/libs/Smarty-v.e.r/libs/');
-
- // include the smarty class, note 'S' is upper case
- require_once(SMARTY_DIR . 'Smarty.class.php');
- ?>
-
-
-
-See also [`$smarty.const`](../designers/language-variables/language-variables-smarty.md) and
-[`$php_handling constants`](./api-variables/variable-php-handling.md)
diff --git a/vendor/smarty/smarty/libs/Smarty.class.php b/vendor/smarty/smarty/libs/Smarty.class.php
index 0abbe6a7d..820a1ebde 100644
--- a/vendor/smarty/smarty/libs/Smarty.class.php
+++ b/vendor/smarty/smarty/libs/Smarty.class.php
@@ -98,7 +98,7 @@ class Smarty extends Smarty_Internal_TemplateBase
/**
* smarty version
*/
- const SMARTY_VERSION = '4.1.0';
+ const SMARTY_VERSION = '4.1.1';
/**
* define variable scopes
*/
@@ -867,7 +867,7 @@ class Smarty extends Smarty_Internal_TemplateBase
$this->plugins_dir = (array)$this->plugins_dir;
}
foreach ($this->plugins_dir as $k => $v) {
- $this->plugins_dir[ $k ] = $this->_realpath(rtrim($v, '/\\') . DIRECTORY_SEPARATOR, true);
+ $this->plugins_dir[ $k ] = $this->_realpath(rtrim($v ?? '', '/\\') . DIRECTORY_SEPARATOR, true);
}
$this->_cache[ 'plugin_files' ] = array();
$this->_pluginsDirNormalized = true;
@@ -1345,7 +1345,7 @@ class Smarty extends Smarty_Internal_TemplateBase
*/
private function _normalizeDir($dirName, $dir)
{
- $this->{$dirName} = $this->_realpath(rtrim($dir, "/\\") . DIRECTORY_SEPARATOR, true);
+ $this->{$dirName} = $this->_realpath(rtrim($dir ?? '', "/\\") . DIRECTORY_SEPARATOR, true);
}
/**
@@ -1367,7 +1367,7 @@ class Smarty extends Smarty_Internal_TemplateBase
}
foreach ($dir as $k => $v) {
if (!isset($processed[ $k ])) {
- $dir[ $k ] = $v = $this->_realpath(rtrim($v, "/\\") . DIRECTORY_SEPARATOR, true);
+ $dir[ $k ] = $v = $this->_realpath(rtrim($v ?? '', "/\\") . DIRECTORY_SEPARATOR, true);
$processed[ $k ] = true;
}
}
diff --git a/vendor/smarty/smarty/libs/plugins/function.math.php b/vendor/smarty/smarty/libs/plugins/function.math.php
index fd5b3d166..8560e9441 100644
--- a/vendor/smarty/smarty/libs/plugins/function.math.php
+++ b/vendor/smarty/smarty/libs/plugins/function.math.php
@@ -69,7 +69,7 @@ function smarty_function_math($params, $template)
// Adapted from https://www.php.net/manual/en/function.eval.php#107377
$number = '(?:\d+(?:[,.]\d+)?|pi|Ï€)'; // What is a number
$functionsOrVars = '((?:0x[a-fA-F0-9]+)|([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*))';
- $operators = '[+\/*\^%-]'; // Allowed math operators
+ $operators = '[,+\/*\^%-]'; // Allowed math operators
$regexp = '/^(('.$number.'|'.$functionsOrVars.'|('.$functionsOrVars.'\s*\((?1)+\)|\((?1)+\)))(?:'.$operators.'(?1))?)+$/';
if (!preg_match($regexp, $equation)) {
diff --git a/vendor/smarty/smarty/libs/plugins/modifier.escape.php b/vendor/smarty/smarty/libs/plugins/modifier.escape.php
index 47489aa98..3ce483827 100644
--- a/vendor/smarty/smarty/libs/plugins/modifier.escape.php
+++ b/vendor/smarty/smarty/libs/plugins/modifier.escape.php
@@ -29,6 +29,9 @@ function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $
if (!$char_set) {
$char_set = Smarty::$_CHARSET;
}
+
+ $string = (string)$string;
+
switch ($esc_type) {
case 'html':
if ($_double_encode) {
diff --git a/vendor/smarty/smarty/libs/plugins/modifier.truncate.php b/vendor/smarty/smarty/libs/plugins/modifier.truncate.php
index 33e7e53aa..80dcdb531 100644
--- a/vendor/smarty/smarty/libs/plugins/modifier.truncate.php
+++ b/vendor/smarty/smarty/libs/plugins/modifier.truncate.php
@@ -42,8 +42,8 @@ function smarty_modifier_truncate($string, $length = 80, $etc = '...', $break_wo
if (!$middle) {
return mb_substr($string, 0, $length, Smarty::$_CHARSET) . $etc;
}
- return mb_substr($string, 0, $length / 2, Smarty::$_CHARSET) . $etc .
- mb_substr($string, -$length / 2, $length, Smarty::$_CHARSET);
+ return mb_substr($string, 0, intval($length / 2), Smarty::$_CHARSET) . $etc .
+ mb_substr($string, -intval($length / 2), $length, Smarty::$_CHARSET);
}
return $string;
}
@@ -56,7 +56,7 @@ function smarty_modifier_truncate($string, $length = 80, $etc = '...', $break_wo
if (!$middle) {
return substr($string, 0, $length) . $etc;
}
- return substr($string, 0, $length / 2) . $etc . substr($string, -$length / 2);
+ return substr($string, 0, intval($length / 2)) . $etc . substr($string, -intval($length / 2));
}
return $string;
}
diff --git a/vendor/smarty/smarty/libs/plugins/modifiercompiler.escape.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.escape.php
index 70b95cc9d..1fc5e7817 100644
--- a/vendor/smarty/smarty/libs/plugins/modifiercompiler.escape.php
+++ b/vendor/smarty/smarty/libs/plugins/modifiercompiler.escape.php
@@ -42,10 +42,10 @@ function smarty_modifiercompiler_escape($params, Smarty_Internal_TemplateCompile
switch ($esc_type) {
case 'html':
if ($_double_encode) {
- return 'htmlspecialchars(' . $params[ 0 ] . ', ENT_QUOTES, ' . var_export($char_set, true) . ', ' .
+ return 'htmlspecialchars((string)' . $params[ 0 ] . ', ENT_QUOTES, ' . var_export($char_set, true) . ', ' .
var_export($double_encode, true) . ')';
} elseif ($double_encode) {
- return 'htmlspecialchars(' . $params[ 0 ] . ', ENT_QUOTES, ' . var_export($char_set, true) . ')';
+ return 'htmlspecialchars((string)' . $params[ 0 ] . ', ENT_QUOTES, ' . var_export($char_set, true) . ')';
} else {
// fall back to modifier.escape.php
}
@@ -54,12 +54,12 @@ function smarty_modifiercompiler_escape($params, Smarty_Internal_TemplateCompile
if (Smarty::$_MBSTRING) {
if ($_double_encode) {
// php >=5.2.3 - go native
- return 'mb_convert_encoding(htmlspecialchars(' . $params[ 0 ] . ', ENT_QUOTES, ' .
+ return 'mb_convert_encoding(htmlspecialchars((string)' . $params[ 0 ] . ', ENT_QUOTES, ' .
var_export($char_set, true) . ', ' . var_export($double_encode, true) .
'), "HTML-ENTITIES", ' . var_export($char_set, true) . ')';
} elseif ($double_encode) {
// php <5.2.3 - only handle double encoding
- return 'mb_convert_encoding(htmlspecialchars(' . $params[ 0 ] . ', ENT_QUOTES, ' .
+ return 'mb_convert_encoding(htmlspecialchars((string)' . $params[ 0 ] . ', ENT_QUOTES, ' .
var_export($char_set, true) . '), "HTML-ENTITIES", ' . var_export($char_set, true) . ')';
} else {
// fall back to modifier.escape.php
@@ -68,26 +68,26 @@ function smarty_modifiercompiler_escape($params, Smarty_Internal_TemplateCompile
// no MBString fallback
if ($_double_encode) {
// php >=5.2.3 - go native
- return 'htmlentities(' . $params[ 0 ] . ', ENT_QUOTES, ' . var_export($char_set, true) . ', ' .
+ return 'htmlentities((string)' . $params[ 0 ] . ', ENT_QUOTES, ' . var_export($char_set, true) . ', ' .
var_export($double_encode, true) . ')';
} elseif ($double_encode) {
// php <5.2.3 - only handle double encoding
- return 'htmlentities(' . $params[ 0 ] . ', ENT_QUOTES, ' . var_export($char_set, true) . ')';
+ return 'htmlentities((string)' . $params[ 0 ] . ', ENT_QUOTES, ' . var_export($char_set, true) . ')';
} else {
// fall back to modifier.escape.php
}
// no break
case 'url':
- return 'rawurlencode(' . $params[ 0 ] . ')';
+ return 'rawurlencode((string)' . $params[ 0 ] . ')';
case 'urlpathinfo':
- return 'str_replace("%2F", "/", rawurlencode(' . $params[ 0 ] . '))';
+ return 'str_replace("%2F", "/", rawurlencode((string)' . $params[ 0 ] . '))';
case 'quotes':
// escape unescaped single quotes
- return 'preg_replace("%(?<!\\\\\\\\)\'%", "\\\'",' . $params[ 0 ] . ')';
+ return 'preg_replace("%(?<!\\\\\\\\)\'%", "\\\'", (string)' . $params[ 0 ] . ')';
case 'javascript':
// escape quotes and backslashes, newlines, etc.
// see https://html.spec.whatwg.org/multipage/scripting.html#restrictions-for-contents-of-script-elements
- return 'strtr(' .
+ return 'strtr((string)' .
$params[ 0 ] .
', array("\\\\" => "\\\\\\\\", "\'" => "\\\\\'", "\"" => "\\\\\"", "\\r" => "\\\\r", "\\n" => "\\\n", "</" => "<\/", "<!--" => "<\!--", "<s" => "<\s", "<S" => "<\S" ))';
}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block.php
index 8ff15d8e5..cbaccd2b3 100644
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block.php
@@ -125,7 +125,7 @@ class Smarty_Internal_Compile_Blockclose extends Smarty_Internal_Compile_Shared_
// setup buffer for template function code
$compiler->parser->current_buffer = new Smarty_Internal_ParseTree_Template();
$output = "<?php\n";
- $output .= "/* {block {$_name}} */\n";
+ $output .= $compiler->cStyleComment(" {block {$_name}} ") . "\n";
$output .= "class {$_className} extends Smarty_Internal_Block\n";
$output .= "{\n";
foreach ($_block as $property => $value) {
@@ -155,7 +155,7 @@ class Smarty_Internal_Compile_Blockclose extends Smarty_Internal_Compile_Shared_
}
$output .= "}\n";
$output .= "}\n";
- $output .= "/* {/block {$_name}} */\n\n";
+ $output .= $compiler->cStyleComment(" {/block {$_name}} ") . "\n\n";
$output .= "?>\n";
$compiler->parser->current_buffer->append_subtree(
$compiler->parser,
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_function.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_function.php
index 84e9584d9..b05a82b74 100644
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_function.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_function.php
@@ -134,7 +134,7 @@ class Smarty_Internal_Compile_Functionclose extends Smarty_Internal_CompileBase
if ($compiler->template->compiled->has_nocache_code) {
$compiler->parent_compiler->tpl_function[ $_name ][ 'call_name_caching' ] = $_funcNameCaching;
$output = "<?php\n";
- $output .= "/* {$_funcNameCaching} */\n";
+ $output .= $compiler->cStyleComment(" {$_funcNameCaching} ") . "\n";
$output .= "if (!function_exists('{$_funcNameCaching}')) {\n";
$output .= "function {$_funcNameCaching} (Smarty_Internal_Template \$_smarty_tpl,\$params) {\n";
$output .= "ob_start();\n";
@@ -159,7 +159,7 @@ class Smarty_Internal_Compile_Functionclose extends Smarty_Internal_CompileBase
$output .= "/*/%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%*/\";\n?>";
$output .= "<?php echo str_replace('{$compiler->template->compiled->nocache_hash}', \$_smarty_tpl->compiled->nocache_hash ?? '', ob_get_clean());\n";
$output .= "}\n}\n";
- $output .= "/*/ {$_funcName}_nocache */\n\n";
+ $output .= $compiler->cStyleComment("/ {$_funcName}_nocache ") . "\n\n";
$output .= "?>\n";
$compiler->parser->current_buffer->append_subtree(
$compiler->parser,
@@ -179,7 +179,7 @@ class Smarty_Internal_Compile_Functionclose extends Smarty_Internal_CompileBase
}
$compiler->parent_compiler->tpl_function[ $_name ][ 'call_name' ] = $_funcName;
$output = "<?php\n";
- $output .= "/* {$_funcName} */\n";
+ $output .= $compiler->cStyleComment(" {$_funcName} ") . "\n";
$output .= "if (!function_exists('{$_funcName}')) {\n";
$output .= "function {$_funcName}(Smarty_Internal_Template \$_smarty_tpl,\$params) {\n";
$output .= $_paramsCode;
@@ -196,7 +196,7 @@ class Smarty_Internal_Compile_Functionclose extends Smarty_Internal_CompileBase
);
$compiler->parser->current_buffer->append_subtree($compiler->parser, $_functionCode);
$output = "<?php\n}}\n";
- $output .= "/*/ {$_funcName} */\n\n";
+ $output .= $compiler->cStyleComment("/ {$_funcName} ") . "\n\n";
$output .= "?>\n";
$compiler->parser->current_buffer->append_subtree(
$compiler->parser,
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_include.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_include.php
index 716c91d49..bf62461bc 100644
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_include.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_include.php
@@ -318,14 +318,14 @@ class Smarty_Internal_Compile_Include extends Smarty_Internal_CompileBase
}
// get compiled code
$compiled_code = "<?php\n\n";
- $compiled_code .= "/* Start inline template \"{$sourceInfo}\" =============================*/\n";
+ $compiled_code .= $compiler->cStyleComment(" Start inline template \"{$sourceInfo}\" =============================") . "\n";
$compiled_code .= "function {$tpl->compiled->unifunc} (Smarty_Internal_Template \$_smarty_tpl) {\n";
$compiled_code .= "?>\n" . $tpl->compiler->compileTemplateSource($tpl, null, $compiler->parent_compiler);
$compiled_code .= "<?php\n";
$compiled_code .= "}\n?>\n";
$compiled_code .= $tpl->compiler->postFilter($tpl->compiler->blockOrFunctionCode);
$compiled_code .= "<?php\n\n";
- $compiled_code .= "/* End inline template \"{$sourceInfo}\" =============================*/\n";
+ $compiled_code .= $compiler->cStyleComment(" End inline template \"{$sourceInfo}\" =============================") . "\n";
$compiled_code .= '?>';
unset($tpl->compiler);
if ($tpl->compiled->has_nocache_code) {
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_insert.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_insert.php
index c91ff62cb..29031d910 100644
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_insert.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_insert.php
@@ -93,7 +93,7 @@ class Smarty_Internal_Compile_Insert extends Smarty_Internal_CompileBase
}
if (!empty($_dir)) {
foreach ((array)$_dir as $_script_dir) {
- $_script_dir = rtrim($_script_dir, '/\\') . DIRECTORY_SEPARATOR;
+ $_script_dir = rtrim($_script_dir ?? '', '/\\') . DIRECTORY_SEPARATOR;
if (file_exists($_script_dir . $_script)) {
$_filepath = $_script_dir . $_script;
break;
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_config_file_compiler.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_config_file_compiler.php
index a9b940e5a..469b9667a 100644
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_config_file_compiler.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_config_file_compiler.php
@@ -157,10 +157,12 @@ class Smarty_Internal_Config_File_Compiler
$this->smarty->_debug->end_compile($this->template);
}
// template header code
- $template_header =
- "<?php /* Smarty version " . Smarty::SMARTY_VERSION . ", created on " . date("Y-m-d H:i:s") .
- "\n";
- $template_header .= " compiled from '{$this->template->source->filepath}' */ ?>\n";
+ $template_header = sprintf(
+ "<?php /* Smarty version %s, created on %s\n compiled from '%s' */ ?>\n",
+ Smarty::SMARTY_VERSION,
+ date("Y-m-d H:i:s"),
+ str_replace('*/', '* /' , $this->template->source->filepath)
+ );
$code = '<?php $_smarty_tpl->smarty->ext->configLoad->_loadConfigVars($_smarty_tpl, ' .
var_export($this->config_data, true) . '); ?>';
return $template_header . $this->template->smarty->ext->_codeFrame->create($this->template, $code);
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_codeframe.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_codeframe.php
index b5361c9bb..d0ca751e2 100644
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_codeframe.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_codeframe.php
@@ -44,9 +44,12 @@ class Smarty_Internal_Runtime_CodeFrame
$properties[ 'file_dependency' ] = $_template->cached->file_dependency;
$properties[ 'cache_lifetime' ] = $_template->cache_lifetime;
}
- $output = "<?php\n";
- $output .= "/* Smarty version {$properties[ 'version' ]}, created on " . date("Y-m-d H:i:s") .
- "\n from '" . str_replace('*/', '* /', $_template->source->filepath) . "' */\n\n";
+ $output = sprintf(
+ "<?php\n/* Smarty version %s, created on %s\n from '%s' */\n\n",
+ $properties[ 'version' ],
+ date("Y-m-d H:i:s"),
+ str_replace('*/', '* /', $_template->source->filepath)
+ );
$output .= "/* @var Smarty_Internal_Template \$_smarty_tpl */\n";
$dec = "\$_smarty_tpl->_decodeProperties(\$_smarty_tpl, " . var_export($properties, true) . ',' .
($cache ? 'true' : 'false') . ')';
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php
index 272616148..bd500abe4 100644
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php
@@ -1439,6 +1439,10 @@ abstract class Smarty_Internal_TemplateCompilerBase
*/
abstract protected function doCompile($_content, $isTemplateSource = false);
+ public function cStyleComment($string) {
+ return '/*' . str_replace('*/', '* /' , $string) . '*/';
+ }
+
/**
* Compile Tag
*
diff --git a/vendor/symfony/polyfill-ctype/Ctype.php b/vendor/symfony/polyfill-ctype/Ctype.php
deleted file mode 100644
index ba75a2c95..000000000
--- a/vendor/symfony/polyfill-ctype/Ctype.php
+++ /dev/null
@@ -1,232 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Polyfill\Ctype;
-
-/**
- * Ctype implementation through regex.
- *
- * @internal
- *
- * @author Gert de Pagter <BackEndTea@gmail.com>
- */
-final class Ctype
-{
- /**
- * Returns TRUE if every character in text is either a letter or a digit, FALSE otherwise.
- *
- * @see https://php.net/ctype-alnum
- *
- * @param mixed $text
- *
- * @return bool
- */
- public static function ctype_alnum($text)
- {
- $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
-
- return \is_string($text) && '' !== $text && !preg_match('/[^A-Za-z0-9]/', $text);
- }
-
- /**
- * Returns TRUE if every character in text is a letter, FALSE otherwise.
- *
- * @see https://php.net/ctype-alpha
- *
- * @param mixed $text
- *
- * @return bool
- */
- public static function ctype_alpha($text)
- {
- $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
-
- return \is_string($text) && '' !== $text && !preg_match('/[^A-Za-z]/', $text);
- }
-
- /**
- * Returns TRUE if every character in text is a control character from the current locale, FALSE otherwise.
- *
- * @see https://php.net/ctype-cntrl
- *
- * @param mixed $text
- *
- * @return bool
- */
- public static function ctype_cntrl($text)
- {
- $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
-
- return \is_string($text) && '' !== $text && !preg_match('/[^\x00-\x1f\x7f]/', $text);
- }
-
- /**
- * Returns TRUE if every character in the string text is a decimal digit, FALSE otherwise.
- *
- * @see https://php.net/ctype-digit
- *
- * @param mixed $text
- *
- * @return bool
- */
- public static function ctype_digit($text)
- {
- $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
-
- return \is_string($text) && '' !== $text && !preg_match('/[^0-9]/', $text);
- }
-
- /**
- * Returns TRUE if every character in text is printable and actually creates visible output (no white space), FALSE otherwise.
- *
- * @see https://php.net/ctype-graph
- *
- * @param mixed $text
- *
- * @return bool
- */
- public static function ctype_graph($text)
- {
- $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
-
- return \is_string($text) && '' !== $text && !preg_match('/[^!-~]/', $text);
- }
-
- /**
- * Returns TRUE if every character in text is a lowercase letter.
- *
- * @see https://php.net/ctype-lower
- *
- * @param mixed $text
- *
- * @return bool
- */
- public static function ctype_lower($text)
- {
- $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
-
- return \is_string($text) && '' !== $text && !preg_match('/[^a-z]/', $text);
- }
-
- /**
- * Returns TRUE if every character in text will actually create output (including blanks). Returns FALSE if text contains control characters or characters that do not have any output or control function at all.
- *
- * @see https://php.net/ctype-print
- *
- * @param mixed $text
- *
- * @return bool
- */
- public static function ctype_print($text)
- {
- $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
-
- return \is_string($text) && '' !== $text && !preg_match('/[^ -~]/', $text);
- }
-
- /**
- * Returns TRUE if every character in text is printable, but neither letter, digit or blank, FALSE otherwise.
- *
- * @see https://php.net/ctype-punct
- *
- * @param mixed $text
- *
- * @return bool
- */
- public static function ctype_punct($text)
- {
- $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
-
- return \is_string($text) && '' !== $text && !preg_match('/[^!-\/\:-@\[-`\{-~]/', $text);
- }
-
- /**
- * Returns TRUE if every character in text creates some sort of white space, FALSE otherwise. Besides the blank character this also includes tab, vertical tab, line feed, carriage return and form feed characters.
- *
- * @see https://php.net/ctype-space
- *
- * @param mixed $text
- *
- * @return bool
- */
- public static function ctype_space($text)
- {
- $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
-
- return \is_string($text) && '' !== $text && !preg_match('/[^\s]/', $text);
- }
-
- /**
- * Returns TRUE if every character in text is an uppercase letter.
- *
- * @see https://php.net/ctype-upper
- *
- * @param mixed $text
- *
- * @return bool
- */
- public static function ctype_upper($text)
- {
- $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
-
- return \is_string($text) && '' !== $text && !preg_match('/[^A-Z]/', $text);
- }
-
- /**
- * Returns TRUE if every character in text is a hexadecimal 'digit', that is a decimal digit or a character from [A-Fa-f] , FALSE otherwise.
- *
- * @see https://php.net/ctype-xdigit
- *
- * @param mixed $text
- *
- * @return bool
- */
- public static function ctype_xdigit($text)
- {
- $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
-
- return \is_string($text) && '' !== $text && !preg_match('/[^A-Fa-f0-9]/', $text);
- }
-
- /**
- * Converts integers to their char versions according to normal ctype behaviour, if needed.
- *
- * If an integer between -128 and 255 inclusive is provided,
- * it is interpreted as the ASCII value of a single character
- * (negative values have 256 added in order to allow characters in the Extended ASCII range).
- * Any other integer is interpreted as a string containing the decimal digits of the integer.
- *
- * @param mixed $int
- * @param string $function
- *
- * @return mixed
- */
- private static function convert_int_to_char_for_ctype($int, $function)
- {
- if (!\is_int($int)) {
- return $int;
- }
-
- if ($int < -128 || $int > 255) {
- return (string) $int;
- }
-
- if (\PHP_VERSION_ID >= 80100) {
- @trigger_error($function.'(): Argument of type int will be interpreted as string in the future', \E_USER_DEPRECATED);
- }
-
- if ($int < 0) {
- $int += 256;
- }
-
- return \chr($int);
- }
-}
diff --git a/vendor/symfony/polyfill-ctype/LICENSE b/vendor/symfony/polyfill-ctype/LICENSE
deleted file mode 100644
index 3f853aaf3..000000000
--- a/vendor/symfony/polyfill-ctype/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2018-2019 Fabien Potencier
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/symfony/polyfill-ctype/README.md b/vendor/symfony/polyfill-ctype/README.md
deleted file mode 100644
index 8add1ab00..000000000
--- a/vendor/symfony/polyfill-ctype/README.md
+++ /dev/null
@@ -1,12 +0,0 @@
-Symfony Polyfill / Ctype
-========================
-
-This component provides `ctype_*` functions to users who run php versions without the ctype extension.
-
-More information can be found in the
-[main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md).
-
-License
-=======
-
-This library is released under the [MIT license](LICENSE).
diff --git a/vendor/symfony/polyfill-ctype/bootstrap.php b/vendor/symfony/polyfill-ctype/bootstrap.php
deleted file mode 100644
index d54524b31..000000000
--- a/vendor/symfony/polyfill-ctype/bootstrap.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Symfony\Polyfill\Ctype as p;
-
-if (\PHP_VERSION_ID >= 80000) {
- return require __DIR__.'/bootstrap80.php';
-}
-
-if (!function_exists('ctype_alnum')) {
- function ctype_alnum($text) { return p\Ctype::ctype_alnum($text); }
-}
-if (!function_exists('ctype_alpha')) {
- function ctype_alpha($text) { return p\Ctype::ctype_alpha($text); }
-}
-if (!function_exists('ctype_cntrl')) {
- function ctype_cntrl($text) { return p\Ctype::ctype_cntrl($text); }
-}
-if (!function_exists('ctype_digit')) {
- function ctype_digit($text) { return p\Ctype::ctype_digit($text); }
-}
-if (!function_exists('ctype_graph')) {
- function ctype_graph($text) { return p\Ctype::ctype_graph($text); }
-}
-if (!function_exists('ctype_lower')) {
- function ctype_lower($text) { return p\Ctype::ctype_lower($text); }
-}
-if (!function_exists('ctype_print')) {
- function ctype_print($text) { return p\Ctype::ctype_print($text); }
-}
-if (!function_exists('ctype_punct')) {
- function ctype_punct($text) { return p\Ctype::ctype_punct($text); }
-}
-if (!function_exists('ctype_space')) {
- function ctype_space($text) { return p\Ctype::ctype_space($text); }
-}
-if (!function_exists('ctype_upper')) {
- function ctype_upper($text) { return p\Ctype::ctype_upper($text); }
-}
-if (!function_exists('ctype_xdigit')) {
- function ctype_xdigit($text) { return p\Ctype::ctype_xdigit($text); }
-}
diff --git a/vendor/symfony/polyfill-ctype/bootstrap80.php b/vendor/symfony/polyfill-ctype/bootstrap80.php
deleted file mode 100644
index ab2f8611d..000000000
--- a/vendor/symfony/polyfill-ctype/bootstrap80.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Symfony\Polyfill\Ctype as p;
-
-if (!function_exists('ctype_alnum')) {
- function ctype_alnum(mixed $text): bool { return p\Ctype::ctype_alnum($text); }
-}
-if (!function_exists('ctype_alpha')) {
- function ctype_alpha(mixed $text): bool { return p\Ctype::ctype_alpha($text); }
-}
-if (!function_exists('ctype_cntrl')) {
- function ctype_cntrl(mixed $text): bool { return p\Ctype::ctype_cntrl($text); }
-}
-if (!function_exists('ctype_digit')) {
- function ctype_digit(mixed $text): bool { return p\Ctype::ctype_digit($text); }
-}
-if (!function_exists('ctype_graph')) {
- function ctype_graph(mixed $text): bool { return p\Ctype::ctype_graph($text); }
-}
-if (!function_exists('ctype_lower')) {
- function ctype_lower(mixed $text): bool { return p\Ctype::ctype_lower($text); }
-}
-if (!function_exists('ctype_print')) {
- function ctype_print(mixed $text): bool { return p\Ctype::ctype_print($text); }
-}
-if (!function_exists('ctype_punct')) {
- function ctype_punct(mixed $text): bool { return p\Ctype::ctype_punct($text); }
-}
-if (!function_exists('ctype_space')) {
- function ctype_space(mixed $text): bool { return p\Ctype::ctype_space($text); }
-}
-if (!function_exists('ctype_upper')) {
- function ctype_upper(mixed $text): bool { return p\Ctype::ctype_upper($text); }
-}
-if (!function_exists('ctype_xdigit')) {
- function ctype_xdigit(mixed $text): bool { return p\Ctype::ctype_xdigit($text); }
-}
diff --git a/vendor/symfony/polyfill-ctype/composer.json b/vendor/symfony/polyfill-ctype/composer.json
deleted file mode 100644
index ccb8e5703..000000000
--- a/vendor/symfony/polyfill-ctype/composer.json
+++ /dev/null
@@ -1,41 +0,0 @@
-{
- "name": "symfony/polyfill-ctype",
- "type": "library",
- "description": "Symfony polyfill for ctype functions",
- "keywords": ["polyfill", "compatibility", "portable", "ctype"],
- "homepage": "https://symfony.com",
- "license": "MIT",
- "authors": [
- {
- "name": "Gert de Pagter",
- "email": "BackEndTea@gmail.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "require": {
- "php": ">=7.1"
- },
- "provide": {
- "ext-ctype": "*"
- },
- "autoload": {
- "psr-4": { "Symfony\\Polyfill\\Ctype\\": "" },
- "files": [ "bootstrap.php" ]
- },
- "suggest": {
- "ext-ctype": "For best performance"
- },
- "minimum-stability": "dev",
- "extra": {
- "branch-alias": {
- "dev-main": "1.23-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- }
-}
diff --git a/vendor/symfony/polyfill-php80/LICENSE b/vendor/symfony/polyfill-php80/LICENSE
deleted file mode 100644
index 5593b1d84..000000000
--- a/vendor/symfony/polyfill-php80/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2020 Fabien Potencier
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/symfony/polyfill-php80/Php80.php b/vendor/symfony/polyfill-php80/Php80.php
deleted file mode 100644
index 5fef51184..000000000
--- a/vendor/symfony/polyfill-php80/Php80.php
+++ /dev/null
@@ -1,105 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Polyfill\Php80;
-
-/**
- * @author Ion Bazan <ion.bazan@gmail.com>
- * @author Nico Oelgart <nicoswd@gmail.com>
- * @author Nicolas Grekas <p@tchwork.com>
- *
- * @internal
- */
-final class Php80
-{
- public static function fdiv(float $dividend, float $divisor): float
- {
- return @($dividend / $divisor);
- }
-
- public static function get_debug_type($value): string
- {
- switch (true) {
- case null === $value: return 'null';
- case \is_bool($value): return 'bool';
- case \is_string($value): return 'string';
- case \is_array($value): return 'array';
- case \is_int($value): return 'int';
- case \is_float($value): return 'float';
- case \is_object($value): break;
- case $value instanceof \__PHP_Incomplete_Class: return '__PHP_Incomplete_Class';
- default:
- if (null === $type = @get_resource_type($value)) {
- return 'unknown';
- }
-
- if ('Unknown' === $type) {
- $type = 'closed';
- }
-
- return "resource ($type)";
- }
-
- $class = \get_class($value);
-
- if (false === strpos($class, '@')) {
- return $class;
- }
-
- return (get_parent_class($class) ?: key(class_implements($class)) ?: 'class').'@anonymous';
- }
-
- public static function get_resource_id($res): int
- {
- if (!\is_resource($res) && null === @get_resource_type($res)) {
- throw new \TypeError(sprintf('Argument 1 passed to get_resource_id() must be of the type resource, %s given', get_debug_type($res)));
- }
-
- return (int) $res;
- }
-
- public static function preg_last_error_msg(): string
- {
- switch (preg_last_error()) {
- case \PREG_INTERNAL_ERROR:
- return 'Internal error';
- case \PREG_BAD_UTF8_ERROR:
- return 'Malformed UTF-8 characters, possibly incorrectly encoded';
- case \PREG_BAD_UTF8_OFFSET_ERROR:
- return 'The offset did not correspond to the beginning of a valid UTF-8 code point';
- case \PREG_BACKTRACK_LIMIT_ERROR:
- return 'Backtrack limit exhausted';
- case \PREG_RECURSION_LIMIT_ERROR:
- return 'Recursion limit exhausted';
- case \PREG_JIT_STACKLIMIT_ERROR:
- return 'JIT stack limit exhausted';
- case \PREG_NO_ERROR:
- return 'No error';
- default:
- return 'Unknown error';
- }
- }
-
- public static function str_contains(string $haystack, string $needle): bool
- {
- return '' === $needle || false !== strpos($haystack, $needle);
- }
-
- public static function str_starts_with(string $haystack, string $needle): bool
- {
- return 0 === strncmp($haystack, $needle, \strlen($needle));
- }
-
- public static function str_ends_with(string $haystack, string $needle): bool
- {
- return '' === $needle || ('' !== $haystack && 0 === substr_compare($haystack, $needle, -\strlen($needle)));
- }
-}
diff --git a/vendor/symfony/polyfill-php80/README.md b/vendor/symfony/polyfill-php80/README.md
deleted file mode 100644
index 10b8ee49a..000000000
--- a/vendor/symfony/polyfill-php80/README.md
+++ /dev/null
@@ -1,24 +0,0 @@
-Symfony Polyfill / Php80
-========================
-
-This component provides features added to PHP 8.0 core:
-
-- `Stringable` interface
-- [`fdiv`](https://php.net/fdiv)
-- `ValueError` class
-- `UnhandledMatchError` class
-- `FILTER_VALIDATE_BOOL` constant
-- [`get_debug_type`](https://php.net/get_debug_type)
-- [`preg_last_error_msg`](https://php.net/preg_last_error_msg)
-- [`str_contains`](https://php.net/str_contains)
-- [`str_starts_with`](https://php.net/str_starts_with)
-- [`str_ends_with`](https://php.net/str_ends_with)
-- [`get_resource_id`](https://php.net/get_resource_id)
-
-More information can be found in the
-[main Polyfill README](https://github.com/symfony/polyfill/blob/main/README.md).
-
-License
-=======
-
-This library is released under the [MIT license](LICENSE).
diff --git a/vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php b/vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php
deleted file mode 100644
index 7ea6d2772..000000000
--- a/vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-#[Attribute(Attribute::TARGET_CLASS)]
-final class Attribute
-{
- public const TARGET_CLASS = 1;
- public const TARGET_FUNCTION = 2;
- public const TARGET_METHOD = 4;
- public const TARGET_PROPERTY = 8;
- public const TARGET_CLASS_CONSTANT = 16;
- public const TARGET_PARAMETER = 32;
- public const TARGET_ALL = 63;
- public const IS_REPEATABLE = 64;
-
- /** @var int */
- public $flags;
-
- public function __construct(int $flags = self::TARGET_ALL)
- {
- $this->flags = $flags;
- }
-}
diff --git a/vendor/symfony/polyfill-php80/Resources/stubs/Stringable.php b/vendor/symfony/polyfill-php80/Resources/stubs/Stringable.php
deleted file mode 100644
index 77e037cb5..000000000
--- a/vendor/symfony/polyfill-php80/Resources/stubs/Stringable.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-if (\PHP_VERSION_ID < 80000) {
- interface Stringable
- {
- /**
- * @return string
- */
- public function __toString();
- }
-}
diff --git a/vendor/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php b/vendor/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php
deleted file mode 100644
index 37937cbfa..000000000
--- a/vendor/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-
-if (\PHP_VERSION_ID < 80000) {
- class UnhandledMatchError extends Error
- {
- }
-}
diff --git a/vendor/symfony/polyfill-php80/Resources/stubs/ValueError.php b/vendor/symfony/polyfill-php80/Resources/stubs/ValueError.php
deleted file mode 100644
index a3a9b88b0..000000000
--- a/vendor/symfony/polyfill-php80/Resources/stubs/ValueError.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-
-if (\PHP_VERSION_ID < 80000) {
- class ValueError extends Error
- {
- }
-}
diff --git a/vendor/symfony/polyfill-php80/bootstrap.php b/vendor/symfony/polyfill-php80/bootstrap.php
deleted file mode 100644
index e5f7dbc1a..000000000
--- a/vendor/symfony/polyfill-php80/bootstrap.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Symfony\Polyfill\Php80 as p;
-
-if (\PHP_VERSION_ID >= 80000) {
- return;
-}
-
-if (!defined('FILTER_VALIDATE_BOOL') && defined('FILTER_VALIDATE_BOOLEAN')) {
- define('FILTER_VALIDATE_BOOL', \FILTER_VALIDATE_BOOLEAN);
-}
-
-if (!function_exists('fdiv')) {
- function fdiv(float $num1, float $num2): float { return p\Php80::fdiv($num1, $num2); }
-}
-if (!function_exists('preg_last_error_msg')) {
- function preg_last_error_msg(): string { return p\Php80::preg_last_error_msg(); }
-}
-if (!function_exists('str_contains')) {
- function str_contains(?string $haystack, ?string $needle): bool { return p\Php80::str_contains($haystack ?? '', $needle ?? ''); }
-}
-if (!function_exists('str_starts_with')) {
- function str_starts_with(?string $haystack, ?string $needle): bool { return p\Php80::str_starts_with($haystack ?? '', $needle ?? ''); }
-}
-if (!function_exists('str_ends_with')) {
- function str_ends_with(?string $haystack, ?string $needle): bool { return p\Php80::str_ends_with($haystack ?? '', $needle ?? ''); }
-}
-if (!function_exists('get_debug_type')) {
- function get_debug_type($value): string { return p\Php80::get_debug_type($value); }
-}
-if (!function_exists('get_resource_id')) {
- function get_resource_id($resource): int { return p\Php80::get_resource_id($resource); }
-}
diff --git a/vendor/symfony/polyfill-php80/composer.json b/vendor/symfony/polyfill-php80/composer.json
deleted file mode 100644
index 5fe679db3..000000000
--- a/vendor/symfony/polyfill-php80/composer.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "name": "symfony/polyfill-php80",
- "type": "library",
- "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
- "keywords": ["polyfill", "shim", "compatibility", "portable"],
- "homepage": "https://symfony.com",
- "license": "MIT",
- "authors": [
- {
- "name": "Ion Bazan",
- "email": "ion.bazan@gmail.com"
- },
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "require": {
- "php": ">=7.1"
- },
- "autoload": {
- "psr-4": { "Symfony\\Polyfill\\Php80\\": "" },
- "files": [ "bootstrap.php" ],
- "classmap": [ "Resources/stubs" ]
- },
- "minimum-stability": "dev",
- "extra": {
- "branch-alias": {
- "dev-main": "1.23-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- }
-}
diff --git a/view/css/conversation.css b/view/css/conversation.css
index 9ea668963..b6d47e3c3 100644
--- a/view/css/conversation.css
+++ b/view/css/conversation.css
@@ -104,11 +104,11 @@
.wall-item-info {
display: block;
float: left;
- margin-right: 10px;
+ margin-right: .75rem;
}
.wall-item-wrapper {
- margin-left:10px;
+ margin-left: .75rem;
}
.wall-item-photo-wrapper {
diff --git a/view/pdl/mod_articles.pdl b/view/pdl/mod_articles.pdl
deleted file mode 100644
index 051e89278..000000000
--- a/view/pdl/mod_articles.pdl
+++ /dev/null
@@ -1,14 +0,0 @@
-[region=aside]
-[widget=profile][/widget]
-[widget=archive][var=articles]1[/var][/widget]
-[widget=categories][var=articles]1[/var][/widget]
-[widget=tasklist][/widget]
-[widget=notes][/widget]
-[/region]
-[region=content]
-$content
-[/region]
-[region=right_aside]
-[widget=notifications][/widget]
-[widget=newmember][/widget]
-[/region]
diff --git a/view/pdl/mod_cards.pdl b/view/pdl/mod_cards.pdl
deleted file mode 100644
index 2252659a3..000000000
--- a/view/pdl/mod_cards.pdl
+++ /dev/null
@@ -1,13 +0,0 @@
-[region=aside]
-[widget=profile][/widget]
-[widget=categories][var=cards]1[/var][/widget]
-[widget=tasklist][/widget]
-[widget=notes][/widget]
-[/region]
-[region=content]
-$content
-[/region]
-[region=right_aside]
-[widget=notifications][/widget]
-[widget=newmember][/widget]
-[/region]
diff --git a/view/pdl/mod_wiki.pdl b/view/pdl/mod_wiki.pdl
deleted file mode 100644
index e650e364e..000000000
--- a/view/pdl/mod_wiki.pdl
+++ /dev/null
@@ -1,11 +0,0 @@
-[region=aside]
-[widget=profile][/widget]
-[widget=wiki_pages][/widget]
-[/region]
-[region=content]
-$content
-[/region]
-[region=right_aside]
-[widget=notifications][/widget]
-[widget=newmember][/widget]
-[/region]
diff --git a/view/theme/redbasic/css/style.css b/view/theme/redbasic/css/style.css
index ebbc1aaa3..3b2370b7f 100644
--- a/view/theme/redbasic/css/style.css
+++ b/view/theme/redbasic/css/style.css
@@ -845,7 +845,7 @@ div.jGrowl div.jGrowl-notification {
.shared_header img {
border-radius: $radius;
- margin-right: 10px;
+ margin-right: .75rem;
}
.tag1 {
diff --git a/view/theme/redbasic/schema/Focus-Boxy.css b/view/theme/redbasic/schema/Focus-Boxy.css
index 90fd51b02..1b09137a9 100644
--- a/view/theme/redbasic/schema/Focus-Boxy.css
+++ b/view/theme/redbasic/schema/Focus-Boxy.css
@@ -1,11 +1,16 @@
.comment .wall-item-body {
- padding-left: 42px;
+ padding-left: 3rem;
}
-.wall-item-content-wrapper.comment {
+.wall-item-content-wrapper {
border-bottom: 1px solid rgba(0,0,0,.125);
}
+.hide-comments-outer,
+.hide-comments-outer:hover {
+ border: 0;
+}
+
.widget {
border: 1px solid rgba(0,0,0,.125);
}
diff --git a/view/tpl/cards.tpl b/view/tpl/cards.tpl
deleted file mode 100644
index 60e6163ae..000000000
--- a/view/tpl/cards.tpl
+++ /dev/null
@@ -1,4 +0,0 @@
-<div id="live-cards"></div>
-{{$editor}}
-{{$content}}
-{{$pager}}
diff --git a/view/tpl/wiki.tpl b/view/tpl/wiki.tpl
deleted file mode 100644
index 640678ae8..000000000
--- a/view/tpl/wiki.tpl
+++ /dev/null
@@ -1,475 +0,0 @@
-<div class="generic-content-wrapper">
- <div class="section-title-wrapper">
- <div class="float-end">
- <span class="text-muted wiki-typename">[{{$typename}}]&nbsp;</span>
- {{if $showPageControls}}
- <div id="page-tools" class="btn-group" style="display: none;">
- <button type="button" class="btn btn-outline-secondary btn-sm dropdown-toggle" data-bs-toggle="dropdown">
- <i class="fa fa-cog"></i>&nbsp;{{$tools_label}}
- </button>
- <div class="dropdown-menu dropdown-menu-end">
- {{if $renamePage}}
- <a class="dropdown-item rename-page" href="#"><i class="fa fa-fw fa-edit"></i>&nbsp;{{$renamePage}}</a>
- {{/if}}
- <a id="embed-image" class="dropdown-item" href="#"><i class="fa fa-fw fa-picture-o"></i>&nbsp;Embed Image</a>
- </div>
- </div>
- {{/if}}
- <button type="button" class="btn btn-outline-secondary btn-sm" title="{{$sharePage}}" onclick="window.location.href='rpost?f=&body={{$shareLink}}';"><i class="fa fa-fw fa-share"></i></button>
- <button id="fullscreen-btn" type="button" class="btn btn-outline-secondary btn-sm" onclick="makeFullScreen(); adjustFullscreenEditorHeight();"><i class="fa fa-expand"></i></button>
- <button id="inline-btn" type="button" class="btn btn-outline-secondary btn-sm" onclick="makeFullScreen(false); adjustInlineEditorHeight()"><i class="fa fa-compress"></i></button>
- </div>
- <h2>
- <span id="wiki-header-name">{{$wikiheaderName}}</span>:
- <span id="wiki-header-page">{{$wikiheaderPage}}</span>
- </h2>
- <div class="clear"></div>
- </div>
- <div id="rename-page-form-wrapper" class="section-content-tools-wrapper" style="display:none;">
- <form id="rename-page-form" action="wiki/rename/page" method="post" >
- {{include file="field_input.tpl" field=$pageRename}}
- <div class="mb-3">
- <div class="float-end">
- <button id="rename-page-submit" class="btn btn-primary" type="submit" name="submit">Submit</button>
- </div>
- <div>
- <button class="btn btn-outline-secondary rename-page" type="button">Cancel</button>
- </div>
- <div class="clear"></div>
- </div>
- </form>
- </div>
- <div id="wiki-content-container" class="section-content-wrapper">
- <ul class="nav nav-tabs" id="wiki-nav-tabs">
- <li class="nav-item" id="edit-pane-tab"><a class="nav-link" data-bs-toggle="tab" href="#edit-pane">{{$editOrSourceLabel}}</a></li>
- <li class="nav-item"><a class="nav-link active" data-bs-toggle="tab" href="#preview-pane" id="wiki-get-preview">{{$view_lbl}}</a></li>
- <li class="nav-item"><a class="nav-link" data-bs-toggle="tab" href="#page-history-pane" id="wiki-get-history">{{$history_lbl}}</a></li>
- </ul>
- <div class="tab-content" id="wiki-page-tabs">
- <div id="edit-pane" class="tab-pane">
- {{if !$mimeType || $mimeType == 'text/markdown'}}
- <div id="ace-editor"></div>
- {{else}}
- <div id="editor-wrapper">
- <textarea id="editor">{{$content}}</textarea>
- </div>
- {{/if}}
- </div>
- <div id="preview-pane" class="tab-pane active">
- <div id="wiki-preview">
- {{$renderedContent}}
- </div>
- </div>
- <div id="page-history-pane" class="tab-pane">
- <div id="page-history-list"></div>
- </div>
- {{if $showPageControls}}
- <div id="id_{{$commitMsg.0}}_wrapper" class="field input" style="display: none">
- <div class="input-group">
- <input class="form-control" name="{{$commitMsg.0}}" id="id_{{$commitMsg.0}}" type="text" value="{{$commitMsg.2}}"{{if $commitMsg.5}} {{$commitMsg.5}}{{/if}}>
- <button id="save-page" type="button" class="btn btn-primary disabled">Save</button>
- </div>
- </div>
- {{/if}}
- </div>
- </div>
-</div>
-
-{{$wikiModal}}
-
-<div class="modal" id="embedPhotoModal" tabindex="-1" role="dialog" aria-labelledby="embedPhotoLabel" aria-hidden="true">
- <div class="modal-dialog">
- <div class="modal-content">
- <div class="modal-header">
- <h4 class="modal-title" id="embedPhotoModalLabel">{{$embedPhotosModalTitle}}</h4>
- <button type="button" class="btn-close" data-bs-dismiss="modal" aria-hidden="true"></button>
- </div>
- <div class="modal-body" id="embedPhotoModalBody" >
- <div id="embedPhotoModalBodyAlbumListDialog" class="d-none">
- <div id="embedPhotoModalBodyAlbumList"></div>
- </div>
- <div id="embedPhotoModalBodyAlbumDialog" class="d-none"></div>
- </div>
- </div><!-- /.modal-content -->
- </div><!-- /.modal-dialog -->
-</div><!-- /.modal -->
-
-<script>
- window.wiki_resource_id = '{{$resource_id}}';
- window.wiki_page_name = '{{$page|escape:'javascript'}}';
- window.wiki_page_content = '{{$content|escape:'javascript'}}';
- window.wiki_page_commit = '{{$commit}}';
- window.saved = true;
-
- $("#generic-modal-ok-{{$wikiModalID}}").removeClass('btn-primary');
- $("#generic-modal-ok-{{$wikiModalID}}").addClass('btn-danger');
-
- $('.rename-page').click(function (ev) {
- $('#rename-page-form-wrapper').toggle();
- ev.preventDefault();
- });
-
- $( "#rename-page-form" ).submit(function( event ) {
- $.post("wiki/{{$channel_address}}/rename/page",
- {
- oldName: window.wiki_page_name,
- newName: $('#id_pageRename').val(),
- resource_id: window.wiki_resource_id
- },
- function (data) {
- if (data.success) {
- $('#rename-page-form-wrapper').hide();
- window.console.log('data: ' + JSON.stringify(data));
- window.wiki_page_name = data.name.htmlName;
- $('#wiki-header-page').html(data.name.htmlName);
- wiki_refresh_page_list();
- } else {
- window.console.log('Error renaming page.');
- }
- }, 'json');
- event.preventDefault();
- });
-
- {{if !$mimeType || $mimeType == 'text/markdown'}}
- var editor = ace.edit("ace-editor");
- editor.setOptions({
- theme: "ace/theme/github",
- mode: "ace/mode/markdown",
-
- maxLines: Infinity,
- minLines: 30,
-
- wrap: true,
-
- printMargin: false
- });
-
- editor.getSession().setValue(window.wiki_page_content);
- window.editor = editor; // Store the editor in the window object so the anonymous function can use it.
- {{else}}
- window.editor = editor = $('#editor');
- {{/if}}
-
- {{if !$showPageControls}}
- {{if !$mimeType || $mimeType == 'text/markdown'}}
- editor.setReadOnly(true); // Disable editing if the viewer lacks edit permission
- {{else}}
- editor.prop('readonly', true);
- {{/if}}
- {{/if}}
-
- $('#edit-pane-tab').click(function (ev) {
- setTimeout(function() {
- window.editor.focus();
- if($('main').hasClass('fullscreen')) {
- adjustFullscreenEditorHeight();
- }
- else {
- adjustInlineEditorHeight();
- }
- }, 500); // Return the focus to the editor allowing immediate text entry
- $('#page-tools, #id_{{$commitMsg.0}}_wrapper').show();
- });
-
- $('#wiki-get-preview').click(function (ev) {
- if(window.saved) {
- $('#page-tools, #id_{{$commitMsg.0}}_wrapper').hide();
- }
- else {
- $('#page-tools').hide();
- }
- $.post("wiki/{{$channel_address}}/preview", {
- {{if !$mimeType || $mimeType == 'text/markdown'}}
- content: editor.getValue(),
- {{else}}
- content: editor.val(),
- {{/if}}
- resource_id: window.wiki_resource_id,
- mimetype: '{{$mimeType}}'
- },
- function (data) {
- if (data.success) {
- $('#wiki-preview').html(data.html);
- {{if !$mimeType || $mimeType == 'text/markdown'}}
- $("#wiki-toc").toc({content: "#wiki-preview", headings: "h1,h2,h3,h4"});
- {{/if}}
- } else {
- window.console.log('Error previewing page.');
- }
- }, 'json');
- ev.preventDefault();
- });
-
- $('#wiki-get-history').click(function (ev) {
- if(window.saved) {
- $('#page-tools, #id_{{$commitMsg.0}}_wrapper').hide();
- }
- else {
- $('#page-tools').hide();
- }
- $.post("wiki/{{$channel_address}}/history/page", {name: window.wiki_page_name, resource_id: window.wiki_resource_id}, function (data) {
- if (data.success) {
- $('#page-history-list').html(data.historyHTML);
- } else {
- window.console.log('Error getting page history.');
- }
- }, 'json');
- ev.preventDefault();
- });
-
- function wiki_refresh_page_list() {
- if (window.wiki_resource_id === '') {
- return false;
- }
- $.post("wiki/{{$channel_address}}/get/page/list/", {channel_id: '{{$channel_id}}', resource_id: window.wiki_resource_id}, function (data) {
- if (data.success) {
- $('#wiki_page_list').html(data.pages);
- } else {
- alert('Error fetching page list!');
- window.console.log('Error fetching page list!');
- }
- }, 'json');
- return false;
- }
-
- $('#save-page').click(function (ev) {
- if (window.wiki_resource_id === '' || window.wiki_page_name === '') {
- window.console.log('You must have a wiki page open in order to edit pages.');
- ev.preventDefault();
- return false;
- }
- {{if !$mimeType || $mimeType == 'text/markdown'}}
- var currentContent = editor.getValue();
- {{else}}
- var currentContent = editor.val();
- {{/if}}
-
- if (window.wiki_page_content === currentContent) {
- $('#save-page').addClass('disabled'); // Disable the save button
- window.console.log('No edits to save.');
- ev.preventDefault();
- return false;
- }
- $.post("wiki/{{$channel_address}}/save/page", {
- content: currentContent,
- commitMsg: $('#id_commitMsg').val(),
- name: window.wiki_page_name,
- resource_id: window.wiki_resource_id
- },
- function (data) {
- if (data.success) {
- window.saved = true;
- window.console.log('Page saved successfully.');
- //window.wiki_page_content = currentContent;
- window.wiki_page_content = data.content;
- $('#id_commitMsg').val(''); // Clear the commit message box
- $('#save-page').addClass('disabled'); // Disable the save button
- {{if !$mimeType || $mimeType == 'text/markdown'}}
- window.editor.getSession().getUndoManager().markClean(); // Reset the undo history for the editor
- {{/if}}
-
- window.editor.focus(); // Return focus to the editor for continued editing
- // $('#wiki-get-history').click();
- } else {
- alert('Error saving page.'); // TODO: Replace alerts with auto-timeout popups
- window.console.log('Error saving page.');
- }
- }, 'json');
- ev.preventDefault();
- });
-
- function wiki_revert_page(commitHash) {
- if (window.wiki_resource_id === '' || window.wiki_page_name === '') {
- window.console.log('You must have a wiki page open in order to revert pages.');
- return false;
- }
- $.post("wiki/{{$channel_address}}/revert/page", {commitHash: commitHash, name: window.wiki_page_name, resource_id: window.wiki_resource_id},
- function (data) {
- if (data.success) {
- $('button[id^=revert-]').removeClass('btn-success');
- $('button[id^=revert-]').addClass('btn-danger');
- $('button[id^=revert-]').html('Revert');
- $('#revert-'+commitHash).removeClass('btn-danger');
- $('#revert-'+commitHash).addClass('btn-success');
- $('#revert-'+commitHash).html('Page reverted<br>but not saved');
- window.wiki_page_commit = commitHash;
- // put contents in editor
- editor.getSession().setValue(data.content);
- } else {
- window.console.log('Error reverting page.');
- }
- }, 'json');
- }
-
- function wiki_compare_page(compareCommit) {
- if (window.wiki_resource_id === '' || window.wiki_page_name === '' || window.wiki_page_commit === '') {
- window.console.log('You must have a wiki page open in order to revert pages.');
- return false;
- }
- $.post("wiki/{{$channel_address}}/compare/page", {
- compareCommit: compareCommit,
- currentCommit: window.wiki_page_commit,
- name: window.wiki_page_name,
- resource_id: window.wiki_resource_id
- },
- function (data) {
- console.log(data);
- if (data.success) {
- var modalBody = $('#generic-modal-body-{{$wikiModalID}}');
- modalBody.html('<div class="descriptive-text">'+data.diff+'</div>');
- $('.modal-dialog').addClass('modal-lg');
- $("#generic-modal-ok-{{$wikiModalID}}").off('click');
- $("#generic-modal-ok-{{$wikiModalID}}").click(function () {
- wiki_revert_page(compareCommit);
- $('#generic-modal-{{$wikiModalID}}').modal('hide');
- });
- $('#generic-modal-{{$wikiModalID}}').modal('show');
- } else {
- window.console.log('Error comparing page.');
- }
- }, 'json');
- }
-
- function adjustFullscreenEditorHeight() {
- $('#editor, #ace-editor').height($(window).height() - $('#id_commitMsg_wrapper').outerHeight(true) - $('.section-title-wrapper').outerHeight(true) - $('#wiki-nav-tabs').outerHeight(true) - 17);
- {{if !$mimeType || $mimeType == 'text/markdown'}}
- editor.setOptions({
- maxLines: null,
- minLines: null
- });
- editor.resize();
- {{/if}}
- }
-
- function adjustInlineEditorHeight() {
- {{if !$mimeType || $mimeType == 'text/markdown'}}
- editor.setOptions({
- maxLines: Infinity,
- minLines: 30
- });
- editor.resize();
- {{else}}
- editor.height(editor[0].scrollHeight);
- {{/if}}
- }
-
- $('#embed-image').click(function (ev) {
- initializeEmbedPhotoDialog();
- ev.preventDefault();
- });
-
- var initializeEmbedPhotoDialog = function () {
- $('.embed-photo-selected-photo').each(function (index) {
- $(this).removeClass('embed-photo-selected-photo');
- });
- getPhotoAlbumList();
- $('#embedPhotoModalBodyAlbumDialog').off('click');
- $('#embedPhotoModal').modal('show');
- };
-
- var choosePhotoFromAlbum = function (album) {
- $.post("embedphotos/album", {name: album},
- function(data) {
- if (data['status']) {
- $('#embedPhotoModalLabel').html("{{$modalchooseimages}}");
- $('#embedPhotoModalBodyAlbumDialog').html('\
- <div><ul class="nav nav-pills flex-column">\n\
- <li class="nav-item"><a class="nav-link" href="#" onclick="initializeEmbedPhotoDialog();return false;">\n\
- <i class="fa fa-chevron-left"></i>&nbsp;\n\
- {{$modaldiffalbum}}\n\
- </a>\n\
- </li>\n\
- </ul><br></div>')
- $('#embedPhotoModalBodyAlbumDialog').append(data['content']);
- $('#embedPhotoModalBodyAlbumDialog').click(function (evt) {
- evt.preventDefault();
- var image = document.getElementById(evt.target.id);
- if (typeof($(image).parent()[0]) !== 'undefined') {
- var imageparent = document.getElementById($(image).parent()[0].id);
- $(imageparent).toggleClass('embed-photo-selected-photo');
- var href = $(imageparent).attr('href');
- $.post("embedphotos/photolink", {href: href},
- function(ddata) {
- if (ddata['status']) {
- {{if !$mimeType || $mimeType == 'text/markdown'}}
- var imgURL = ddata['photolink'].replace( /\[.*\]\[.*\](.*)\[.*\]\[.*\]/, '\n![image]($1)' )
- editor.getSession().insert(editor.getCursorPosition(), imgURL)
- {{else}}
- var currentContent = $('#editor').val();
- $('#editor').val(currentContent + ddata['photolink']);
- {{/if}}
- } else {
- window.console.log("{{$modalerrorlink}}" + ':' + ddata['errormsg']);
- }
- return false;
- },
- 'json');
- $('#embedPhotoModalBodyAlbumDialog').html('');
- $('#embedPhotoModalBodyAlbumDialog').off('click');
- $('#embedPhotoModal').modal('hide');
- }
- });
-
- $('#embedPhotoModalBodyAlbumListDialog').addClass('d-none');
- $('#embedPhotoModalBodyAlbumDialog').removeClass('d-none');
- } else {
- window.console.log("{{$modalerroralbum}} " + JSON.stringify(album) + ':' + data['errormsg']);
- }
- return false;
- },
- 'json');
- };
-
- var getPhotoAlbumList = function () {
- $.post("embedphotos/albumlist", {},
- function(data) {
- if (data['status']) {
- var albums = data['albumlist']; //JSON.parse(data['albumlist']);
- $('#embedPhotoModalLabel').html("{{$modalchoosealbum}}");
- $('#embedPhotoModalBodyAlbumList').html('<ul class="nav nav-pills flex-column"></ul>');
- for(var i = 0; i < albums.length; i++) {
- var albumName = albums[i].text;
- var jsAlbumName = albums[i].jstext;
- var albumLink = '<li class="nav-item">';
- albumLink += '<a class="nav-link" href="#" onclick="choosePhotoFromAlbum(\'' + jsAlbumName + '\'); return false;">' + albumName + '</a>';
- albumLink += '</li>';
- $('#embedPhotoModalBodyAlbumList').find('ul').append(albumLink);
- }
- $('#embedPhotoModalBodyAlbumDialog').addClass('d-none');
- $('#embedPhotoModalBodyAlbumListDialog').removeClass('d-none');
- } else {
- window.console.log("{{$modalerrorlist}}" + ':' + data['errormsg']);
- }
- return false;
- },
- 'json');
- };
-
- $(document).ready(function () {
- {{if !$mimeType || $mimeType == 'text/markdown'}}
- $("#wiki-toc").toc({content: "#wiki-preview", headings: "h1,h2,h3,h4"});
- window.editor.on("input", function() {
- window.saved = false;
- if(window.editor.getSession().getUndoManager().isClean()) {
- $('#save-page').addClass('disabled');
- } else {
- $('#save-page').removeClass('disabled');
- }
- });
- {{else}}
- window.editor.on("input", function() {
- window.saved = false;
- $('#save-page').removeClass('disabled');
- });
- {{if $mimeType == 'text/bbcode'}}
- window.editor.bbco_autocomplete('bbcode');
- {{/if}}
- {{/if}}
- });
-
- $(window).resize(function () {
- if($('main').hasClass('fullscreen')) {
- adjustFullscreenEditorHeight();
- }
- });
-</script>
diff --git a/view/tpl/wiki_page_history.tpl b/view/tpl/wiki_page_history.tpl
deleted file mode 100644
index 9e5ba0f9c..000000000
--- a/view/tpl/wiki_page_history.tpl
+++ /dev/null
@@ -1,59 +0,0 @@
-<style>
- .diff {
- width:100%;
- word-break: break-all;
- }
-
- .diff td{
- padding:0 0.667em;
- vertical-align:top;
- white-space:pre;
- white-space:pre-wrap;
- font-family:Consolas,'Courier New',Courier,monospace;
- font-size:1.0em;
- line-height:1.333;
- }
-
- .diff span{
- display:block;
- min-height:1.333em;
- margin-top:-1px;
- padding:0 3px;
- }
-
- * html .diff span{
- height:1.333em;
- }
-
- .diff span:first-child{
- margin-top:0;
- }
-
- .diffDeleted span{
- border:1px solid rgb(255,192,192);
- background:rgb(255,224,224);
- }
-
- .diffInserted span{
- border:1px solid rgb(192,255,192);
- background:rgb(224,255,224);
- }
-</style>
-<table class="table-striped table-responsive table-hover" style="width: 100%;">
- {{foreach $pageHistory as $commit}}
- <tr><td>
- <table id="rev-{{$commit.hash}}" onclick="$('#details-{{$commit.hash}}').show()" width="100%">
- <tr><td width="10%">Date</td><td width="70%">{{$commit.date}}</td>
- <td rowspan="3" width="20%" align="right">
- {{if $permsWrite}}
- <button id="revert-{{$commit.hash}}" class="btn btn-danger btn-sm" onclick="wiki_revert_page('{{$commit.hash}}')">Revert</button>
- <br><br>
- {{/if}}
- <button id="compare-{{$commit.hash}}" class="btn btn-warning btn-sm" onclick="wiki_compare_page('{{$commit.hash}}')">Compare</button>
- </td></tr>
- <tr><td>Name</td><td>{{$commit.name}} &lt;{{$commit.email}}&gt;</td></tr>
- <tr><td>Message</td><td>{{$commit.title}}</td></tr>
- </table>
- </td></tr>
- {{/foreach}}
-</table>
diff --git a/view/tpl/wiki_page_list.tpl b/view/tpl/wiki_page_list.tpl
deleted file mode 100644
index 4f99587c2..000000000
--- a/view/tpl/wiki_page_list.tpl
+++ /dev/null
@@ -1,90 +0,0 @@
-{{if ! $refresh}}
-<div id="wiki_page_list" class="widget" >
-{{/if}}
- <h3>{{$header}}</h3>
- <ul class="nav nav-pills flex-column">
- {{if $pages}}
- {{foreach $pages as $page}}
- <li class="nav-item nav-item-hack" id="{{$page.link_id}}">
- {{if $page.resource_id && $candel}}
- <i class="nav-link widget-nav-pills-icons fa fa-trash-o drop-icons" onclick="wiki_delete_page('{{$page.title|escape:'javascript'}}', '{{$page.title|escape:'javascript'}}', '{{$page.resource_id}}', '{{$page.link_id}}')"></i>
- {{/if}}
- <a class="nav-link" href="/wiki/{{$channel_address}}/{{$wikiname}}/{{$page.url}}">{{$page.title}}</a>
- </li>
- {{/foreach}}
- {{/if}}
- {{if $canadd}}
- <li class="nav-item"><a class="nav-link" href="#" onclick="wiki_show_new_page_form(); return false;"><i class="fa fa-plus-circle"></i>&nbsp;{{$addnew}}</a></li>
- {{/if}}
- {{if $canadd}}
- <div id="new-page-form-wrapper" class="clearfix sub-menu" style="display:none;">
- <form id="new-page-form" action="wiki/{{$channel_address}}/create/page" method="post" >
- <input type="hidden" name="resource_id" value="{{$resource_id}}">
- {{include file="field_input.tpl" field=$pageName}}
- {{if $typelock}}
- <input id="id_mimetype" type="hidden" name="mimetype" value="{{$lockedtype}}">
- {{else}}
- <div id="wiki_page_options" style="display: none">
- {{$mimetype}}
- </div>
- <div class="float-end fakelink" onClick="openClose('wiki_page_options')">
- {{$options}}
- </div>
- {{/if}}
- <button id="new-page-submit" class="btn btn-primary" type="submit" name="submit" >{{$submit}}</button>
- </form>
- </div>
- {{/if}}
- </ul>
-{{if ! $refresh}}
-</div>
-{{/if}}
-
-{{if $canadd}}
-<script>
- $('#new-page-submit').click(function (ev) {
- $.post("wiki/{{$channel_address}}/create/page", {pageName: $('#id_pageName').val(), resource_id: window.wiki_resource_id, mimetype: $('#id_mimetype').val() },
- function(data) {
- if(data.success) {
- window.location = data.url;
- } else {
- window.console.log('Error creating page.');
- }
- }, 'json');
- ev.preventDefault();
- });
-
- function wiki_delete_page(wiki_page_name, wiki_page_url, wiki_resource_id, wiki_link_id) {
- if(!confirm('Are you sure you want to delete the page: ' + wiki_page_name)) {
- return;
- }
- $.post("wiki/{{$channel_address}}/delete/page", {name: wiki_page_url, resource_id: wiki_resource_id},
- function (data) {
- if (data.success) {
- window.console.log('Page deleted successfully.');
- if(wiki_page_url == window.wiki_page_name) {
- var url = window.location.href;
- if(url.substr(-1) == '/')
- url = url.substr(0, url.length - 2);
- url = url.split('/');
- url.pop();
- window.location = url.join('/');
- }
- else {
- $('#' + wiki_link_id).remove();
- }
- } else {
- alert('Error deleting page.'); // TODO: Replace alerts with auto-timeout popups
- window.console.log('Error deleting page.');
- }
- }, 'json');
- return false;
- }
-
- function wiki_show_new_page_form() {
- $('#new-page-form-wrapper').toggle();
- $('#id_pageName').focus();
- return false;
- }
-</script>
-{{/if}}
diff --git a/view/tpl/wiki_page_not_found.tpl b/view/tpl/wiki_page_not_found.tpl
deleted file mode 100644
index 8fdee4596..000000000
--- a/view/tpl/wiki_page_not_found.tpl
+++ /dev/null
@@ -1,34 +0,0 @@
- <h3>Page does not exist</h3>
- <br /><br /><br />
- {{if $canadd}}
- <form id="new-page-form" action="/wiki/{{$channel_address}}/create/page" method="post" >
- <input type="hidden" name="resource_id" value="{{$resource_id}}">
- {{include file="field_input.tpl" field=$pageName}}
- {{if $typelock}}
- <input id="id_mimetype" type="hidden" name="mimetype" value="{{$lockedtype}}">
- {{else}}
- <div id="wiki_missing_page_options" style="display: none">
- {{$mimetype}}
- </div>
- <div class="float-end fakelink" onClick="openClose('wiki_missing_page_options')">
- {{$options}}
- </div>
- {{/if}}
- <button id="create-missing-page-submit" class="btn btn-primary" type="submit" name="submit" >{{$submit}}</button>
- </form>
-
-<script>
- $('#create-missing-page-submit').click(function (ev) {
- $.post("wiki/{{$channel_address}}/create/page", {pageName: $('#id_missingPageName').val(), resource_id: window.wiki_resource_id, mimetype: $('#id_mimetype').val() },
- function(data) {
- if(data.success) {
- window.location = data.url;
- } else {
- window.console.log('Error creating page. ('+data.message+')');
- }
- }, 'json');
- ev.preventDefault();
- });
-
-</script>
-{{/if}}
diff --git a/view/tpl/wikilist.tpl b/view/tpl/wikilist.tpl
deleted file mode 100644
index bc8461dac..000000000
--- a/view/tpl/wikilist.tpl
+++ /dev/null
@@ -1,101 +0,0 @@
-<div class="generic-content-wrapper">
- <div class="section-title-wrapper clearfix">
- {{if $owner}}
- <button type="button" class="btn btn-success btn-sm float-end acl-form-trigger" onclick="openClose('new-wiki-form-wrapper');" data-form_id="new-wiki-form"><i class="fa fa-plus-circle"></i>&nbsp;{{$create}}</button>
- {{/if}}
- <h2>{{$header}}</h2>
- </div>
- {{if $owner}}
- <div id="new-wiki-form-wrapper" class="section-content-tools-wrapper">
- <form id="new-wiki-form" action="wiki/{{$channel}}/create/wiki" method="post" class="acl-form" data-form_id="new-wiki-form" data-allow_cid='{{$allow_cid}}' data-allow_gid='{{$allow_gid}}' data-deny_cid='{{$deny_cid}}' data-deny_gid='{{$deny_gid}}'>
- {{include file="field_input.tpl" field=$wikiName}}
- {{include file="field_select.tpl" field=$mimeType}}
- {{include file="field_checkbox.tpl" field=$typelock}}
- {{include file="field_checkbox.tpl" field=$notify}}
- <div>
- <div class="btn-group float-end">
- <button id="dbtn-acl" class="btn btn-outline-secondary btn-sm" data-bs-toggle="modal" data-bs-target="#aclModal" title="Permission settings" onclick="return false;">
- <i id="jot-perms-icon" class="fa fa-{{$lockstate}} jot-icons"></i>
- </button>
- <button id="new-wiki-submit" class="btn btn-primary btn-sm" type="submit" name="submit" >{{$submit}}</button>
- </div>
- </div>
- </form>
- <div class="clear"></div>
- </div>
- {{/if}}
- <div class="section-content-wrapper-np">
- <table id="wikis-index">
- <tr>
- <th width="96%">{{$name}}</th>
- <th width="1%">{{$type}}</th>
- <th width="1%"></th>
- {{if $owner}}
- <th width="1%"></th>
- {{/if}}
- <th width="1%"></th>
- {{if $owner}}
- <th width="1%"></th>
- {{/if}}
- </tr>
- {{foreach $wikis as $wiki}}
- <tr class="wikis-index-row">
- <td><a href="/wiki/{{$channel}}/{{$wiki.urlName}}/Home" title="{{$view}}"{{if $wiki.active}} class="active"{{/if}}>{{$wiki.title}}</a></td>
- <td>{{if $wiki.typelock}}{{$wiki.mimeType}}{{else}}{{$unlocked}}{{/if}}</td>
- {{if $owner}}
- <td><i class="fa fa-pencil" onclick="openCloseTR('wikis-index-edit-{{$wiki.id}}')"></i></td>
- {{/if}}
- <td class="dropdown">
- {{if $wiki.lockstate == 'lock'}}
- <i class="fa fa-lock lockview" data-bs-toggle="dropdown" onclick="lockview('item',{{$wiki.id}});"></i>
- <ul id="panel-{{$wiki.id}}" class="lockview-panel dropdown-menu dropdown-menu-end"></ul>
- {{/if}}
- </td>
- <td><i class="fa fa-download" onclick="wiki_download_wiki('{{$wiki.resource_id}}'); return false;"></i></td>
- {{if $owner}}
- <td><i class="fa fa-trash-o drop-icons" onclick="wiki_delete_wiki('{{$wiki.title|escape:'javascript'}}', '{{$wiki.resource_id}}'); return false;"></i></td>
- {{/if}}
- </tr>
- {{if $owner}}
- <tr id="wikis-index-edit-{{$wiki.id}}" style="display:none">
- <td colspan="6">
- <form id="edit-wiki-form-{{$wiki.id}}" method="post" action="wiki/{{$channel}}/update/wiki" class="acl-form" data-form_id="edit-wiki-form-{{$wiki.id}}" data-allow_cid='{{$wiki.json_allow_cid}}' data-allow_gid='{{$wiki.json_allow_gid}}' data-deny_cid='{{$wiki.json_deny_cid}}' data-deny_gid='{{$wiki.json_deny_gid}}'>
- <input type="hidden" name="origRawName" value="{{$wiki.title}}">
- {{include file="field_input.tpl" field=['updateRawName', $edit_wiki_name, $wiki.title]}}
- <div class="btn-group float-end">
- <button class="btn btn-outline-secondary btn-sm" data-bs-toggle="modal" data-bs-target="#aclModal" type="button">
- <i class="jot-perms-icon fa fa-{{$wiki.lockstate}}"></i>
- </button>
- <button class="btn btn-primary btn-sm" type="submit" value="edit">Submit</button>
- </div>
- </form>
- </td>
- </tr>
- {{/if}}
- {{/foreach}}
- </table>
- </div>
-</div>
-{{$acl}}
-<script>
- {{if $owner}}
- function wiki_delete_wiki(wikiHtmlName, resource_id) {
- if(!confirm('Are you sure you want to delete the entire wiki: ' + JSON.stringify(wikiHtmlName))) {
- return;
- }
- $.post("wiki/{{$channel}}/delete/wiki", {resource_id: resource_id}, function (data) {
- if (data.success) {
- window.console.log('Wiki deleted');
- // Refresh list and redirect page as necessary
- window.location = 'wiki/{{$channel}}';
- } else {
- alert('Error deleting wiki!');
- window.console.log('Error deleting wiki.');
- }
- }, 'json');
- }
- {{/if}}
- function wiki_download_wiki(resource_id) {
- window.location = "wiki/{{$channel}}/download/wiki/" + resource_id;
- }
-</script>
diff --git a/view/tpl/wikilist_widget.tpl b/view/tpl/wikilist_widget.tpl
deleted file mode 100644
index 9853f9850..000000000
--- a/view/tpl/wikilist_widget.tpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<div id="wiki_list" class="widget">
- <h3>{{$header}}</h3>
- <ul class="nav nav-pills flex-column">
- {{foreach $wikis as $wiki}}
- <li class="nav-item"><a class="nav-link" href="/wiki/{{$channel}}/{{$wiki.urlName}}/Home" title="{{$view}}">{{$wiki.title}}</a></li>
- {{/foreach}}
- </ul>
-</div>