aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG114
-rw-r--r--Zotlabs/Module/Hq.php8
-rw-r--r--Zotlabs/Module/Ping.php4
-rwxr-xr-xZotlabs/Render/SmartyInterface.php2
-rw-r--r--composer.json8
-rw-r--r--composer.lock586
-rw-r--r--include/bbcode.php7
-rw-r--r--include/feedutils.php2
-rw-r--r--include/html2bbcode.php12
-rw-r--r--include/message.php2
-rw-r--r--library/Smarty/libs/plugins/function.counter.php78
-rw-r--r--library/Smarty/libs/plugins/function.math.php91
-rw-r--r--library/Smarty/libs/plugins/modifiercompiler.unescape.php50
-rw-r--r--library/Smarty/libs/plugins/shared.escape_special_chars.php53
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_assign.php98
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_block.php292
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_break.php77
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_continue.php77
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_if.php252
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_private_block_plugin.php89
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_private_object_block_function.php91
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_private_registered_block.php119
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_while.php108
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_extension_handler.php157
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_runtime_foreach.php47
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_runtime_hhvm.php30
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_runtime_inheritance.php233
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_runtime_subtemplate.php203
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_runtime_tplfunction.php97
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_runtime_updatescope.php55
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_runtime_validatecompiled.php86
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_runtime_var.php33
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_template.php376
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_templateparser.php2833
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_undefined.php48
-rw-r--r--library/Smarty/libs/sysplugins/smarty_resource_recompiled.php47
-rw-r--r--library/Smarty/libs/sysplugins/smarty_resource_uncompiled.php79
-rw-r--r--library/Smarty/libs/sysplugins/smarty_template_compiled.php297
-rw-r--r--library/Smarty/libs/sysplugins/smarty_template_config.php97
-rw-r--r--vendor/bshaffer/oauth2-server-php/CHANGELOG.md20
-rw-r--r--vendor/bshaffer/oauth2-server-php/README.md2
-rw-r--r--vendor/bshaffer/oauth2-server-php/composer.json4
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Autoloader.php12
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/ClientAssertionType/ClientAssertionTypeInterface.php13
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/ClientAssertionType/HttpBasic.php48
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/AuthorizeController.php139
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/AuthorizeControllerInterface.php37
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/ResourceController.php49
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/ResourceControllerInterface.php29
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/TokenController.php74
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/TokenControllerInterface.php27
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Encryption/EncryptionInterface.php23
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Encryption/Jwt.php58
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/AuthorizationCode.php48
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/ClientCredentials.php35
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/GrantTypeInterface.php41
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/JwtBearer.php47
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/RefreshToken.php63
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/UserCredentials.php46
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/AuthorizeController.php39
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/AuthorizeControllerInterface.php2
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/UserInfoController.php40
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/UserInfoControllerInterface.php21
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/GrantType/AuthorizationCode.php10
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/AuthorizationCode.php30
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/AuthorizationCodeInterface.php14
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/CodeIdToken.php16
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/IdToken.php58
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/IdTokenInterface.php13
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/IdTokenToken.php18
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Storage/AuthorizationCodeInterface.php14
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Storage/UserClaimsInterface.php9
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Request.php70
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/RequestInterface.php23
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Response.php134
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseInterface.php31
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AccessToken.php64
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AccessTokenInterface.php11
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AuthorizationCode.php5
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AuthorizationCodeInterface.php12
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/JwtAccessToken.php79
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/ResponseTypeInterface.php5
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Scope.php40
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/ScopeInterface.php19
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Server.php283
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/AccessTokenInterface.php33
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/AuthorizationCodeInterface.php12
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/Cassandra.php230
-rw-r--r--[-rwxr-xr-x]vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/CouchbaseDB.php2
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/DynamoDB.php2
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/JwtAccessToken.php3
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/Memory.php2
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/Pdo.php318
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/PublicKeyInterface.php16
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/UserCredentialsInterface.php16
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/AutoloadTest.php4
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/Controller/AuthorizeControllerTest.php3
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/Controller/ResourceControllerTest.php3
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/Controller/TokenControllerTest.php45
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/Encryption/FirebaseJwtTest.php3
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/Encryption/JwtTest.php3
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/AuthorizationCodeTest.php3
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/ClientCredentialsTest.php3
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/ImplicitTest.php3
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/JwtBearerTest.php3
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/RefreshTokenTest.php3
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/UserCredentialsTest.php3
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/Controller/AuthorizeControllerTest.php3
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/Controller/UserInfoControllerTest.php3
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/GrantType/AuthorizationCodeTest.php3
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/ResponseType/CodeIdTokenTest.php3
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/ResponseType/IdTokenTest.php3
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/ResponseType/IdTokenTokenTest.php3
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/RequestTest.php3
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseTest.php4
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseType/AccessTokenTest.php3
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseType/JwtAccessTokenTest.php3
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/ScopeTest.php3
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/ServerTest.php3
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/TokenType/BearerTest.php3
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Request/TestRequest.php7
-rw-r--r--[-rwxr-xr-x]vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Storage/BaseTest.php4
-rw-r--r--[-rwxr-xr-x]vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Storage/Bootstrap.php0
-rw-r--r--vendor/composer/autoload_classmap.php18
-rw-r--r--vendor/composer/autoload_files.php5
-rw-r--r--vendor/composer/autoload_static.php23
-rw-r--r--vendor/composer/installed.json895
-rw-r--r--vendor/league/html-to-markdown/CHANGELOG.md15
-rw-r--r--vendor/league/html-to-markdown/README.md8
-rw-r--r--vendor/league/html-to-markdown/composer.json2
-rw-r--r--vendor/league/html-to-markdown/src/Converter/ListItemConverter.php26
-rw-r--r--vendor/league/html-to-markdown/src/Converter/ParagraphConverter.php3
-rw-r--r--vendor/league/html-to-markdown/src/HtmlConverter.php3
-rw-r--r--vendor/sabre/vobject/.travis.yml4
-rw-r--r--vendor/sabre/vobject/CHANGELOG.md9
-rw-r--r--vendor/sabre/vobject/README.md12
-rw-r--r--[-rwxr-xr-x]vendor/sabre/vobject/bin/bench.php0
-rw-r--r--[-rwxr-xr-x]vendor/sabre/vobject/bin/fetch_windows_zones.php0
-rw-r--r--[-rwxr-xr-x]vendor/sabre/vobject/bin/generateicalendardata.php0
-rw-r--r--[-rwxr-xr-x]vendor/sabre/vobject/bin/mergeduplicates.php0
-rw-r--r--vendor/sabre/vobject/composer.json2
-rw-r--r--vendor/sabre/vobject/lib/Component.php17
-rw-r--r--vendor/sabre/vobject/lib/Component/VCard.php5
-rw-r--r--vendor/sabre/vobject/lib/Version.php2
-rw-r--r--vendor/sabre/vobject/lib/timezonedata/exchangezones.php1
-rw-r--r--vendor/simplepie/simplepie/.travis.yml21
-rw-r--r--[-rwxr-xr-x]vendor/simplepie/simplepie/library/SimplePie.php58
-rw-r--r--[-rwxr-xr-x]vendor/simplepie/simplepie/library/SimplePie/Cache/Memcached.php0
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/File.php3
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/HTTP/Parser.php21
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Item.php30
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Parser.php63
-rw-r--r--[-rwxr-xr-x]vendor/simplepie/simplepie/library/SimplePie/Registry.php0
-rw-r--r--vendor/smarty/smarty/COMPOSER_RELEASE_NOTES.txt29
-rw-r--r--vendor/smarty/smarty/INHERITANCE_RELEASE_NOTES.txt87
-rw-r--r--vendor/smarty/smarty/LICENSE (renamed from library/Smarty/COPYING.lib)16
-rw-r--r--vendor/smarty/smarty/NEW_FEATURES.txt (renamed from library/Smarty/NEW_FEATURES.txt)116
-rw-r--r--vendor/smarty/smarty/README (renamed from library/Smarty/README)0
-rw-r--r--vendor/smarty/smarty/README.md65
-rw-r--r--vendor/smarty/smarty/SMARTY_2_BC_NOTES.txt109
-rw-r--r--vendor/smarty/smarty/SMARTY_3.0_BC_NOTES.txt24
-rw-r--r--vendor/smarty/smarty/SMARTY_3.1_NOTES.txt306
-rw-r--r--vendor/smarty/smarty/change_log.txt (renamed from library/Smarty/change_log.txt)343
-rw-r--r--vendor/smarty/smarty/demo/configs/test.conf5
-rw-r--r--vendor/smarty/smarty/demo/index.php30
-rw-r--r--vendor/smarty/smarty/demo/plugins/cacheresource.apc.php83
-rw-r--r--vendor/smarty/smarty/demo/plugins/cacheresource.memcache.php101
-rw-r--r--vendor/smarty/smarty/demo/plugins/cacheresource.mysql.php160
-rw-r--r--vendor/smarty/smarty/demo/plugins/cacheresource.pdo.php327
-rw-r--r--vendor/smarty/smarty/demo/plugins/cacheresource.pdo_gzip.php43
-rw-r--r--vendor/smarty/smarty/demo/plugins/resource.extendsall.php65
-rw-r--r--vendor/smarty/smarty/demo/plugins/resource.mysql.php83
-rw-r--r--vendor/smarty/smarty/demo/plugins/resource.mysqls.php63
-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/libs/Autoloader.php (renamed from library/Smarty/libs/Autoloader.php)54
-rw-r--r--vendor/smarty/smarty/libs/Smarty.class.php (renamed from library/Smarty/libs/Smarty.class.php)549
-rw-r--r--vendor/smarty/smarty/libs/SmartyBC.class.php (renamed from library/Smarty/libs/SmartyBC.class.php)28
-rw-r--r--vendor/smarty/smarty/libs/bootstrap.php17
-rw-r--r--vendor/smarty/smarty/libs/debug.tpl (renamed from library/Smarty/libs/debug.tpl)0
-rw-r--r--vendor/smarty/smarty/libs/plugins/block.textformat.php (renamed from library/Smarty/libs/plugins/block.textformat.php)8
-rw-r--r--vendor/smarty/smarty/libs/plugins/function.counter.php73
-rw-r--r--vendor/smarty/smarty/libs/plugins/function.cycle.php (renamed from library/Smarty/libs/plugins/function.cycle.php)50
-rw-r--r--vendor/smarty/smarty/libs/plugins/function.fetch.php (renamed from library/Smarty/libs/plugins/function.fetch.php)50
-rw-r--r--vendor/smarty/smarty/libs/plugins/function.html_checkboxes.php (renamed from library/Smarty/libs/plugins/function.html_checkboxes.php)48
-rw-r--r--vendor/smarty/smarty/libs/plugins/function.html_image.php (renamed from library/Smarty/libs/plugins/function.html_image.php)37
-rw-r--r--vendor/smarty/smarty/libs/plugins/function.html_options.php (renamed from library/Smarty/libs/plugins/function.html_options.php)32
-rw-r--r--vendor/smarty/smarty/libs/plugins/function.html_radios.php (renamed from library/Smarty/libs/plugins/function.html_radios.php)41
-rw-r--r--vendor/smarty/smarty/libs/plugins/function.html_select_date.php (renamed from library/Smarty/libs/plugins/function.html_select_date.php)97
-rw-r--r--vendor/smarty/smarty/libs/plugins/function.html_select_time.php (renamed from library/Smarty/libs/plugins/function.html_select_time.php)109
-rw-r--r--vendor/smarty/smarty/libs/plugins/function.html_table.php (renamed from library/Smarty/libs/plugins/function.html_table.php)14
-rw-r--r--vendor/smarty/smarty/libs/plugins/function.mailto.php (renamed from library/Smarty/libs/plugins/function.mailto.php)42
-rw-r--r--vendor/smarty/smarty/libs/plugins/function.math.php109
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifier.capitalize.php (renamed from library/Smarty/libs/plugins/modifier.capitalize.php)39
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifier.date_format.php (renamed from library/Smarty/libs/plugins/modifier.date_format.php)6
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifier.debug_print_var.php (renamed from library/Smarty/libs/plugins/modifier.debug_print_var.php)22
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifier.escape.php (renamed from library/Smarty/libs/plugins/modifier.escape.php)29
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifier.regex_replace.php (renamed from library/Smarty/libs/plugins/modifier.regex_replace.php)8
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifier.replace.php (renamed from library/Smarty/libs/plugins/modifier.replace.php)5
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifier.spacify.php (renamed from library/Smarty/libs/plugins/modifier.spacify.php)0
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifier.truncate.php (renamed from library/Smarty/libs/plugins/modifier.truncate.php)8
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.cat.php (renamed from library/Smarty/libs/plugins/modifiercompiler.cat.php)0
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.count_characters.php (renamed from library/Smarty/libs/plugins/modifiercompiler.count_characters.php)8
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.count_paragraphs.php (renamed from library/Smarty/libs/plugins/modifiercompiler.count_paragraphs.php)2
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.count_sentences.php (renamed from library/Smarty/libs/plugins/modifiercompiler.count_sentences.php)2
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.count_words.php (renamed from library/Smarty/libs/plugins/modifiercompiler.count_words.php)5
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.default.php (renamed from library/Smarty/libs/plugins/modifiercompiler.default.php)6
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.escape.php (renamed from library/Smarty/libs/plugins/modifiercompiler.escape.php)65
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.from_charset.php (renamed from library/Smarty/libs/plugins/modifiercompiler.from_charset.php)8
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.indent.php (renamed from library/Smarty/libs/plugins/modifiercompiler.indent.php)10
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.lower.php (renamed from library/Smarty/libs/plugins/modifiercompiler.lower.php)4
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.noprint.php (renamed from library/Smarty/libs/plugins/modifiercompiler.noprint.php)0
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.string_format.php (renamed from library/Smarty/libs/plugins/modifiercompiler.string_format.php)2
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.strip.php (renamed from library/Smarty/libs/plugins/modifiercompiler.strip.php)4
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.strip_tags.php (renamed from library/Smarty/libs/plugins/modifiercompiler.strip_tags.php)4
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.to_charset.php (renamed from library/Smarty/libs/plugins/modifiercompiler.to_charset.php)8
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.unescape.php50
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.upper.php (renamed from library/Smarty/libs/plugins/modifiercompiler.upper.php)4
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.wordwrap.php (renamed from library/Smarty/libs/plugins/modifiercompiler.wordwrap.php)26
-rw-r--r--vendor/smarty/smarty/libs/plugins/outputfilter.trimwhitespace.php (renamed from library/Smarty/libs/plugins/outputfilter.trimwhitespace.php)45
-rw-r--r--vendor/smarty/smarty/libs/plugins/shared.escape_special_chars.php34
-rw-r--r--vendor/smarty/smarty/libs/plugins/shared.literal_compiler_param.php (renamed from library/Smarty/libs/plugins/shared.literal_compiler_param.php)9
-rw-r--r--vendor/smarty/smarty/libs/plugins/shared.make_timestamp.php (renamed from library/Smarty/libs/plugins/shared.make_timestamp.php)8
-rw-r--r--vendor/smarty/smarty/libs/plugins/shared.mb_str_replace.php (renamed from library/Smarty/libs/plugins/shared.mb_str_replace.php)2
-rw-r--r--vendor/smarty/smarty/libs/plugins/shared.mb_unicode.php (renamed from library/Smarty/libs/plugins/shared.mb_unicode.php)0
-rw-r--r--vendor/smarty/smarty/libs/plugins/shared.mb_wordwrap.php (renamed from library/Smarty/libs/plugins/shared.mb_wordwrap.php)8
-rw-r--r--vendor/smarty/smarty/libs/plugins/variablefilter.htmlspecialchars.php (renamed from library/Smarty/libs/plugins/variablefilter.htmlspecialchars.php)0
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource.php (renamed from library/Smarty/libs/sysplugins/smarty_cacheresource.php)43
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource_custom.php (renamed from library/Smarty/libs/sysplugins/smarty_cacheresource_custom.php)50
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource_keyvaluestore.php (renamed from library/Smarty/libs/sysplugins/smarty_cacheresource_keyvaluestore.php)80
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_data.php (renamed from library/Smarty/libs/sysplugins/smarty_data.php)2
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_block.php90
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_cacheresource_file.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_cacheresource_file.php)87
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_append.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_compile_append.php)13
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_assign.php94
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block.php202
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block_child.php54
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block_parent.php73
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_break.php110
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_call.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_compile_call.php)8
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_capture.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_compile_capture.php)75
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_config_load.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_compile_config_load.php)50
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_continue.php42
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_debug.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_compile_debug.php)3
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_eval.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_compile_eval.php)11
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_extends.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_compile_extends.php)36
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_for.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_compile_for.php)43
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_foreach.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_compile_foreach.php)245
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_function.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_compile_function.php)88
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_if.php211
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_include.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_compile_include.php)206
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_include_php.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_compile_include_php.php)12
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_insert.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_compile_insert.php)34
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_ldelim.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_compile_ldelim.php)2
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_make_nocache.php64
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_nocache.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_compile_nocache.php)0
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_block_plugin.php122
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_foreachsection.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_compile_private_foreachsection.php)17
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_function_plugin.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_compile_private_function_plugin.php)32
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_modifier.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_compile_private_modifier.php)62
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_object_block_function.php42
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_object_function.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_compile_private_object_function.php)46
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_php.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_compile_private_php.php)85
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_print_expression.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_compile_private_print_expression.php)74
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_registered_block.php72
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_registered_function.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_compile_private_registered_function.php)43
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php)8
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_rdelim.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_compile_rdelim.php)7
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_section.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_compile_section.php)283
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_setfilter.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_compile_setfilter.php)12
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_shared_inheritance.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_compile_shared_inheritance.php)8
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_while.php100
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compilebase.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_compilebase.php)80
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_config_file_compiler.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_config_file_compiler.php)53
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_configfilelexer.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_configfilelexer.php)189
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_configfileparser.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_configfileparser.php)328
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_data.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_data.php)77
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_debug.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_debug.php)124
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_extension_handler.php171
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_addautoloadfilters.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_addautoloadfilters.php)15
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_adddefaultmodifiers.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_adddefaultmodifiers.php)4
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_append.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_append.php)20
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_appendbyref.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_appendbyref.php)16
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_assignbyref.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_assignbyref.php)8
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_assignglobal.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_assignglobal.php)14
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearallassign.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_clearallassign.php)0
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearallcache.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_clearallcache.php)2
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearassign.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_clearassign.php)4
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearcache.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_clearcache.php)5
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearcompiledtemplate.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_clearcompiledtemplate.php)46
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearconfig.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_clearconfig.php)2
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_compileallconfig.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_compileallconfig.php)7
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_compilealltemplates.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_compilealltemplates.php)24
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_configload.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_configload.php)121
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_createdata.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_createdata.php)2
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getautoloadfilters.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_getautoloadfilters.php)4
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getconfigvariable.php34
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getconfigvars.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_getconfigvars.php)4
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getdebugtemplate.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_getdebugtemplate.php)4
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getdefaultmodifiers.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_getdefaultmodifiers.php)2
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getglobal.php47
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getregisteredobject.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_getregisteredobject.php)8
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getstreamvariable.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_getstreamvariable.php)0
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_gettags.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_gettags.php)12
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_gettemplatevars.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_gettemplatevars.php)28
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_loadfilter.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_loadfilter.php)8
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_loadplugin.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_loadplugin.php)32
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_mustcompile.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_mustcompile.php)10
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registercacheresource.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_registercacheresource.php)7
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerclass.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_registerclass.php)4
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaultconfighandler.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_registerdefaultconfighandler.php)2
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaultpluginhandler.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_registerdefaultpluginhandler.php)2
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaulttemplatehandler.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_registerdefaulttemplatehandler.php)24
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerfilter.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_registerfilter.php)10
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerobject.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_registerobject.php)9
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerplugin.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_registerplugin.php)9
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerresource.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_registerresource.php)6
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setautoloadfilters.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_setautoloadfilters.php)6
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setdebugtemplate.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_setdebugtemplate.php)2
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setdefaultmodifiers.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_setdefaultmodifiers.php)2
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unloadfilter.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_unloadfilter.php)12
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregistercacheresource.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_unregistercacheresource.php)14
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterfilter.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_unregisterfilter.php)12
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterobject.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_unregisterobject.php)6
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterplugin.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_unregisterplugin.php)12
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterresource.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_unregisterresource.php)10
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_nocache_insert.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_nocache_insert.php)8
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_parsetree.php)0
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_code.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_parsetree_code.php)0
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_dq.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_parsetree_dq.php)15
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_dqcontent.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_parsetree_dqcontent.php)0
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_tag.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_parsetree_tag.php)2
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_template.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_parsetree_template.php)26
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_text.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_parsetree_text.php)0
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_eval.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_resource_eval.php)3
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_extends.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_resource_extends.php)7
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_file.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_resource_file.php)45
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_php.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_resource_php.php)20
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_registered.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_resource_registered.php)14
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_stream.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_resource_stream.php)3
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_string.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_resource_string.php)16
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_cachemodify.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_runtime_cachemodify.php)21
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_cacheresourcefile.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_extension_clear.php)42
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_capture.php161
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_codeframe.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_runtime_codeframe.php)36
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_filterhandler.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_runtime_filterhandler.php)10
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_foreach.php149
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_getincludepath.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_runtime_getincludepath.php)38
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_inheritance.php241
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_make_nocache.php56
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_tplfunction.php171
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_updatecache.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_runtime_updatecache.php)29
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_updatescope.php115
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_writefile.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_runtime_writefile.php)7
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_smartytemplatecompiler.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_smartytemplatecompiler.php)13
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_template.php692
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatebase.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_templatebase.php)107
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php)335
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatelexer.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_templatelexer.php)242
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_templateparser.php2831
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_testinstall.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_testinstall.php)332
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_undefined.php68
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_resource.php (renamed from library/Smarty/libs/sysplugins/smarty_resource.php)72
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_resource_custom.php (renamed from library/Smarty/libs/sysplugins/smarty_resource_custom.php)0
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_resource_recompiled.php92
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_resource_uncompiled.php49
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_security.php (renamed from library/Smarty/libs/sysplugins/smarty_security.php)145
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_template_cached.php (renamed from library/Smarty/libs/sysplugins/smarty_template_cached.php)14
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_template_compiled.php255
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_template_config.php99
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_template_resource_base.php (renamed from library/Smarty/libs/sysplugins/smarty_template_resource_base.php)57
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_template_source.php (renamed from library/Smarty/libs/sysplugins/smarty_template_source.php)115
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_undefined_variable.php (renamed from library/Smarty/libs/sysplugins/smarty_undefined_variable.php)0
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_variable.php (renamed from library/Smarty/libs/sysplugins/smarty_variable.php)1
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smartycompilerexception.php (renamed from library/Smarty/libs/sysplugins/smartycompilerexception.php)3
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smartyexception.php (renamed from library/Smarty/libs/sysplugins/smartyexception.php)1
-rw-r--r--view/de/hmessages.po2922
-rw-r--r--view/de/hstrings.php116
-rw-r--r--view/es-es/hmessages.po2899
-rw-r--r--view/es-es/hstrings.php84
-rw-r--r--view/js/autocomplete.js2
-rwxr-xr-xview/tpl/navbar_default.tpl2
-rw-r--r--view/tpl/notifications_widget.tpl3
384 files changed, 18872 insertions, 13370 deletions
diff --git a/CHANGELOG b/CHANGELOG
index f6fc163c5..dce497983 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,117 @@
+Hubzilla 3.0 (????-??-??)
+ - Don't zidify all permalinks, only zot permalinks
+ - Make remote homelink link to the home host and not to the home channel
+ - Auto promote beginner (techlevel 0) accounts to level 1 after they show signs of active participation.
+ - Go back to including the photo thumbnail data in the export file.
+ - Improvements to file import/export
+ - Default value for xlink_rating_text
+ - Implement IMoveTarget and recursive file/directory move/rename - github issue #680
+ - Synchronise an attach_move operation to clones
+ - Provide a themed page with an error notification on errors instead of an obtuse XML error structure in mod cloud
+ - Disallow backslashes in wiki and wiki-page names
+ - We only require one update module. The rest are superfluous.
+ - Render installable elements as buttons instead of links
+ - Implement chunked uploads for photos page
+ - Remove warning for large files on cloud upload
+ - Add a filter for notification to show new posts only
+ - Implement chunked uploads for cloud
+ - Use httpsig auth for getfile
+ - Load the profile images in the custom acl selector only if we actually need them
+ - Rework liveUpdate() and notificationsUpdate() (aka ping) to first do the liveUpdate and when this is done only do the ping once.
+ - Don't include invisible "update activities" in category widget
+ - Default profile assign
+ - Provide system config option for minimum registration age.
+ - Remove deprecated $a argument from advanced_profile()
+ - Change to bbcode calling parameters
+ - Extra checking of server headers in upload functions
+ - Provide a handler for chunked uploads in mod file_upload
+ - Optional divider between item header and body
+ - Allow toggle to SMBC scaling mode.
+ - Add thumbnail hook
+ - Implement SVG thumbnails and expose security setting
+ - Implement video thumbnail generator
+ - Implement pdf thumbnails
+ - Implement thumbnail generator for epubs
+ - Make browser history buttons work with ajax calls in mod display and hq
+ - Implement tile view for mod cloud (read only)
+ - Add mp3 audio thumbnail generator
+ - Set display_path for photo_upload from the DAV File interface
+ - Provide a generalised interface for thumbnail generators to support various content types
+ - Add ID3Parser library.
+ - Text thumbnails in cloud tile mode
+ - Revisit media breakpoints - do not switch to mobile view to early.
+ - Add French to help pages language dropdown selector
+ - Inroduce the HQ module - an alternative landing page for hubzilla
+ - Strip author name from notify messages in notifications - github issue #911
+ - Remove column item.diaspora_meta
+ - Provide ability to pin apps to navbar from mod apps
+ - Add private forums to forum widget
+ - Move notifications style to widgets.css
+ - Sort out a few more large image upload issues
+ - Move notifications full-screen handling to notifications widget
+ - Move mailhost settings from plugin to core
+ - Sort combined private mail conversations by latest updated conversation instead of created parent
+ - Filter atokens on acl search
+ - Allow a site to block (public) the directory separately from other resources.
+ - Improve removed_channel final cleanup - github issue #386
+ - Cleanup of upload_to_comments(
+ - Dedicate the first click to slideup the cover again but make sure the nav buttons remain functional
+ - Set os_syspath in DAV file put operation so that photos will scale correctly.
+ - Unit tests for Zotlabs\Access classes
+ - Bring back tabindex to submit comments
+ - attach.php minor cleanup and doc
+ - Allow cloud filenames to include ampersands without messing up auth tokens (zid, owt, and zat, and the constant placeholder 'f=')
+ - Provide short localised summary for likes that will end up in displayed notifications
+ - Improving Doxygen documentation.
+ - Update item_normal() to not include ACTIVITY_OBJ_FILE obj_type
+ - Sort out issues with pubstream item interactions
+ - Don't perform zot_refresh on dead sites unless $force is set
+ - Do not send message_list responses to dead sites (this delivery method bypassed the notifier)
+ - Support for netselect query
+ - Add another delivery control parameter (queue threshold)
+ - Add some documentation about shareable widgets
+ - Allow plugin class widgets
+ - Some more work on unit tests
+ - Encrypt the owa token
+ - Bring back the markdown post feature
+ - We call Theme:url() statically, make it also static.
+ - Table structure for pseudo or proxy channels (pchan)
+
+ Bugfixes
+ - Fix issue with long filenames in mod cloud
+ - Fix misc. issues with new 'insert photo from photo album' github issue #475
+ - Fix regression in channel sources delivery
+ - Fix loading of theme-specific widgets
+ - Fix unable to add wiki pages with spaces
+ - Fix mod display and others that require a non-zero profile_uid for updates
+ - Fix various PHP 7.2 issues
+ - Fix typo in HTTPSig
+ - Fix pagetitle lost importing a pdl element from conversation
+ - Fix js warning - getelementbyid (id doesn't exist)
+ - Fix some pubstream on/off weirdness
+ - Fix default addressbook has no name - github issue #921
+ - Fix double html ids in caldav widget if more than one sharee
+ - Fix regression in cdav calendar widget
+ - Fix sync packet not generated when deleting a file using the web browser interface
+ - Fix album cover thumb generator
+ - Fix like-button for images - github issue #826
+ - Fix typo - github issue #910
+ - Fix issue with group_rmv()
+ - Fix php warnings on photo delete
+ - Fix some conflicts between private tags and forum tags
+ - Fix some schema issues
+ - Fix wiki pages not updating after creating new page
+ - Fix a PHP warning in Permissions::FilledPerms()
+ - Fix unicode characters in urls tripping up url regexes - github issue #901
+ - Fix second half of github issue #893
+ - Fix common connections on suggestion page showing wildly different results than remote profile, and is consistently off by one
+ - Fix cloud redirects with owt tokens
+ - Fix issues with diaspora xchans
+ - Fix memory overflow trying to delete a connection with a very high noise to signal ratio
+ - Fix sql error in page module
+ - Fix unstar
+
+
Hubzilla 2.8.1 (2017-11-11)
- Rename channel app events to calendar and add nav_set_selected() to /cal
- Load notifications links to /display via ajax if we are already in /display
diff --git a/Zotlabs/Module/Hq.php b/Zotlabs/Module/Hq.php
index 073b67b92..1e46a6353 100644
--- a/Zotlabs/Module/Hq.php
+++ b/Zotlabs/Module/Hq.php
@@ -98,6 +98,8 @@ class Hq extends \Zotlabs\Web\Controller {
$sys = get_sys_channel();
$sql_extra = item_permissions_sql($sys['channel_id']);
+ $sys_item = false;
+
}
if(! $update) {
@@ -215,6 +217,8 @@ class Hq extends \Zotlabs\Web\Controller {
}
if(!$r) {
+ $sys_item = true;
+
$r = q("SELECT item.id AS item_id FROM item
LEFT JOIN abook ON item.author_xchan = abook.abook_xchan
WHERE mid = '%s' AND item.uid = %d $item_normal
@@ -243,6 +247,8 @@ class Hq extends \Zotlabs\Web\Controller {
}
if(!$r) {
+ $sys_item = true;
+
$r = q("SELECT item.parent AS item_id FROM item
LEFT JOIN abook ON item.author_xchan = abook.abook_xchan
WHERE mid = '%s' AND item.uid = %d $item_normal_update $simple_update
@@ -268,7 +274,7 @@ class Hq extends \Zotlabs\Web\Controller {
dbesc($parents_str)
);
- xchan_query($items,true,local_channel());
+ xchan_query($items,true,(($sys_item) ? local_channel() : 0));
$items = fetch_post_tags($items,true);
$items = conv_sort($items,'created');
}
diff --git a/Zotlabs/Module/Ping.php b/Zotlabs/Module/Ping.php
index c1bce0d51..a3f6cdfec 100644
--- a/Zotlabs/Module/Ping.php
+++ b/Zotlabs/Module/Ping.php
@@ -279,8 +279,8 @@ class Ping extends \Zotlabs\Web\Controller {
'photo' => $tt['photo'],
'when' => relative_date($tt['created']),
'hclass' => (($tt['seen']) ? 'notify-seen' : 'notify-unseen'),
- 'b64mid' => $b64mid,
- 'notify_id' => (($tt['otype'] == 'item') ? $tt['id'] : ''),
+ 'b64mid' => (($tt['otype'] == 'item') ? $b64mid : 'undefined'),
+ 'notify_id' => (($tt['otype'] == 'item') ? $tt['id'] : 'undefined'),
'message' => $message
);
}
diff --git a/Zotlabs/Render/SmartyInterface.php b/Zotlabs/Render/SmartyInterface.php
index 0e3a47c2f..9c9a501c0 100755
--- a/Zotlabs/Render/SmartyInterface.php
+++ b/Zotlabs/Render/SmartyInterface.php
@@ -2,8 +2,6 @@
namespace Zotlabs\Render;
-require_once('library/Smarty/libs/Smarty.class.php');
-
class SmartyInterface extends \Smarty {
public $filename;
diff --git a/composer.json b/composer.json
index d35548f94..f89fb15b2 100644
--- a/composer.json
+++ b/composer.json
@@ -36,15 +36,17 @@
"league/html-to-markdown": "^4.4",
"pear/text_languagedetect": "^1.0",
"commerceguys/intl": "~0.7",
- "lukasreschke/id3parser": "^0.0.1"
+ "lukasreschke/id3parser": "^0.0.1",
+ "smarty/smarty": "~3.1"
},
"require-dev" : {
"php" : ">=7.0",
- "phpunit/phpunit" : "^6.1",
+ "phpunit/phpunit" : "~6.4.4",
"behat/behat" : "@stable",
"behat/mink-extension": "@stable",
"behat/mink-goutte-driver": "@stable",
- "php-mock/php-mock-phpunit": "^2.0"
+ "php-mock/php-mock-phpunit": "^2.0",
+ "phpunit/dbunit": "^3.0"
},
"autoload" : {
"psr-4" : {
diff --git a/composer.lock b/composer.lock
index bcf6b41b4..ea76e9d6e 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,20 +4,20 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
- "content-hash": "9c45792f04ea3e30f312f5eef0bdad86",
+ "content-hash": "73ca170baa6ded94a989b8a1066e6a98",
"packages": [
{
"name": "bshaffer/oauth2-server-php",
- "version": "v1.9.0",
+ "version": "v1.10.0",
"source": {
"type": "git",
"url": "https://github.com/bshaffer/oauth2-server-php.git",
- "reference": "8856aed1a98d6da596ae3f9b8095b5c7a1581697"
+ "reference": "d158878425392fe5a0cc34f15dbaf46315ae0ed9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/bshaffer/oauth2-server-php/zipball/8856aed1a98d6da596ae3f9b8095b5c7a1581697",
- "reference": "8856aed1a98d6da596ae3f9b8095b5c7a1581697",
+ "url": "https://api.github.com/repos/bshaffer/oauth2-server-php/zipball/d158878425392fe5a0cc34f15dbaf46315ae0ed9",
+ "reference": "d158878425392fe5a0cc34f15dbaf46315ae0ed9",
"shasum": ""
},
"require": {
@@ -27,12 +27,14 @@
"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"
},
"suggest": {
"aws/aws-sdk-php": "~2.8 is required to use DynamoDB storage",
- "firebase/php-jwt": "~1.1 is required to use MondoDB storage",
+ "firebase/php-jwt": "~2.2 is required to use JWT features",
+ "mongodb/mongodb": "^1.1 is required to use MongoDB storage",
"predis/predis": "Required to use Redis storage",
"thobbs/phpcassa": "Required to use Cassandra storage"
},
@@ -60,7 +62,7 @@
"oauth",
"oauth2"
],
- "time": "2017-01-06T23:20:00+00:00"
+ "time": "2017-11-15T01:41:02+00:00"
},
{
"name": "commerceguys/intl",
@@ -155,16 +157,16 @@
},
{
"name": "league/html-to-markdown",
- "version": "4.4.1",
+ "version": "4.6.0",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/html-to-markdown.git",
- "reference": "82ea375b5b2b1da1da222644c0565c695bf88186"
+ "reference": "9022e648bc40e44cb3b18438d97ed8715ecbc49b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/html-to-markdown/zipball/82ea375b5b2b1da1da222644c0565c695bf88186",
- "reference": "82ea375b5b2b1da1da222644c0565c695bf88186",
+ "url": "https://api.github.com/repos/thephpleague/html-to-markdown/zipball/9022e648bc40e44cb3b18438d97ed8715ecbc49b",
+ "reference": "9022e648bc40e44cb3b18438d97ed8715ecbc49b",
"shasum": ""
},
"require": {
@@ -183,7 +185,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.5-dev"
+ "dev-master": "4.7-dev"
}
},
"autoload": {
@@ -215,7 +217,7 @@
"html",
"markdown"
],
- "time": "2017-03-16T00:45:59+00:00"
+ "time": "2017-10-24T02:45:05+00:00"
},
{
"name": "lukasreschke/id3parser",
@@ -643,16 +645,16 @@
},
{
"name": "sabre/vobject",
- "version": "4.1.2",
+ "version": "4.1.3",
"source": {
"type": "git",
"url": "https://github.com/sabre-io/vobject.git",
- "reference": "d0fde2fafa2a3dad1f559c2d1c2591d4fd75ae3c"
+ "reference": "df9916813d1d83e4f761c4cba13361ee74196fac"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sabre-io/vobject/zipball/d0fde2fafa2a3dad1f559c2d1c2591d4fd75ae3c",
- "reference": "d0fde2fafa2a3dad1f559c2d1c2591d4fd75ae3c",
+ "url": "https://api.github.com/repos/sabre-io/vobject/zipball/df9916813d1d83e4f761c4cba13361ee74196fac",
+ "reference": "df9916813d1d83e4f761c4cba13361ee74196fac",
"shasum": ""
},
"require": {
@@ -661,7 +663,7 @@
"sabre/xml": ">=1.5 <3.0"
},
"require-dev": {
- "phpunit/phpunit": "*",
+ "phpunit/phpunit": "> 4.8, <6.0.0",
"sabre/cs": "^1.0.0"
},
"suggest": {
@@ -736,7 +738,7 @@
"xCal",
"xCard"
],
- "time": "2016-12-06T04:14:09+00:00"
+ "time": "2017-10-18T08:29:40+00:00"
},
{
"name": "sabre/xml",
@@ -803,16 +805,16 @@
},
{
"name": "simplepie/simplepie",
- "version": "1.5",
+ "version": "1.5.1",
"source": {
"type": "git",
"url": "https://github.com/simplepie/simplepie.git",
- "reference": "5de5551953f95feef12cf355a7a26a70f94aa3ab"
+ "reference": "db9fff27b6d49eed3d4047cd3211ec8dba2f5d6e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/simplepie/simplepie/zipball/5de5551953f95feef12cf355a7a26a70f94aa3ab",
- "reference": "5de5551953f95feef12cf355a7a26a70f94aa3ab",
+ "url": "https://api.github.com/repos/simplepie/simplepie/zipball/db9fff27b6d49eed3d4047cd3211ec8dba2f5d6e",
+ "reference": "db9fff27b6d49eed3d4047cd3211ec8dba2f5d6e",
"shasum": ""
},
"require": {
@@ -859,25 +861,78 @@
"rss"
],
"support": {
- "source": "https://github.com/simplepie/simplepie/tree/1.5",
+ "source": "https://github.com/simplepie/simplepie/tree/1.5.1",
"issues": "https://github.com/simplepie/simplepie/issues"
},
- "time": "2017-04-17T07:29:31+00:00"
+ "time": "2017-11-12T02:03:34+00:00"
+ },
+ {
+ "name": "smarty/smarty",
+ "version": "v3.1.31",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/smarty-php/smarty.git",
+ "reference": "c7d42e4a327c402897dd587871434888fde1e7a9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/smarty-php/smarty/zipball/c7d42e4a327c402897dd587871434888fde1e7a9",
+ "reference": "c7d42e4a327c402897dd587871434888fde1e7a9",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.1.x-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "libs/bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "LGPL-3.0"
+ ],
+ "authors": [
+ {
+ "name": "Monte Ohrt",
+ "email": "monte@ohrt.com"
+ },
+ {
+ "name": "Uwe Tews",
+ "email": "uwe.tews@googlemail.com"
+ },
+ {
+ "name": "Rodney Rehm",
+ "email": "rodney.rehm@medialize.de"
+ }
+ ],
+ "description": "Smarty - the compiling PHP template engine",
+ "homepage": "http://www.smarty.net",
+ "keywords": [
+ "templating"
+ ],
+ "time": "2016-12-14T21:57:25+00:00"
}
],
"packages-dev": [
{
"name": "behat/behat",
- "version": "v3.4.1",
+ "version": "v3.4.3",
"source": {
"type": "git",
"url": "https://github.com/Behat/Behat.git",
- "reference": "cb51d4b0b11ea6d3897f3589a871a63a33632692"
+ "reference": "d60b161bff1b95ec4bb80bb8cb210ccf890314c2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Behat/Behat/zipball/cb51d4b0b11ea6d3897f3589a871a63a33632692",
- "reference": "cb51d4b0b11ea6d3897f3589a871a63a33632692",
+ "url": "https://api.github.com/repos/Behat/Behat/zipball/d60b161bff1b95ec4bb80bb8cb210ccf890314c2",
+ "reference": "d60b161bff1b95ec4bb80bb8cb210ccf890314c2",
"shasum": ""
},
"require": {
@@ -887,18 +942,18 @@
"ext-mbstring": "*",
"php": ">=5.3.3",
"psr/container": "^1.0",
- "symfony/class-loader": "~2.1||~3.0",
- "symfony/config": "~2.3||~3.0",
- "symfony/console": "~2.5||~3.0",
- "symfony/dependency-injection": "~2.1||~3.0",
- "symfony/event-dispatcher": "~2.1||~3.0",
- "symfony/translation": "~2.3||~3.0",
- "symfony/yaml": "~2.1||~3.0"
+ "symfony/class-loader": "~2.1||~3.0||~4.0",
+ "symfony/config": "~2.3||~3.0||~4.0",
+ "symfony/console": "~2.5||~3.0||~4.0",
+ "symfony/dependency-injection": "~2.1||~3.0||~4.0",
+ "symfony/event-dispatcher": "~2.1||~3.0||~4.0",
+ "symfony/translation": "~2.3||~3.0||~4.0",
+ "symfony/yaml": "~2.1||~3.0||~4.0"
},
"require-dev": {
"herrera-io/box": "~1.6.1",
- "phpunit/phpunit": "~4.5",
- "symfony/process": "~2.5|~3.0"
+ "phpunit/phpunit": "^4.8.36|^6.3",
+ "symfony/process": "~2.5|~3.0|~4.0"
},
"suggest": {
"behat/mink-extension": "for integration with Mink testing framework",
@@ -947,7 +1002,7 @@
"symfony",
"testing"
],
- "time": "2017-09-18T11:10:28+00:00"
+ "time": "2017-11-27T10:37:56+00:00"
},
{
"name": "behat/gherkin",
@@ -1124,27 +1179,27 @@
},
{
"name": "behat/mink-extension",
- "version": "v2.2",
+ "version": "2.3.0",
"source": {
"type": "git",
"url": "https://github.com/Behat/MinkExtension.git",
- "reference": "5b4bda64ff456104564317e212c823e45cad9d59"
+ "reference": "badc565b7a1d05c4a4bf49c789045bcf7af6c6de"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Behat/MinkExtension/zipball/5b4bda64ff456104564317e212c823e45cad9d59",
- "reference": "5b4bda64ff456104564317e212c823e45cad9d59",
+ "url": "https://api.github.com/repos/Behat/MinkExtension/zipball/badc565b7a1d05c4a4bf49c789045bcf7af6c6de",
+ "reference": "badc565b7a1d05c4a4bf49c789045bcf7af6c6de",
"shasum": ""
},
"require": {
- "behat/behat": "~3.0,>=3.0.5",
- "behat/mink": "~1.5",
+ "behat/behat": "^3.0.5",
+ "behat/mink": "^1.5",
"php": ">=5.3.2",
- "symfony/config": "~2.2|~3.0"
+ "symfony/config": "^2.7|^3.0|^4.0"
},
"require-dev": {
- "behat/mink-goutte-driver": "~1.1",
- "phpspec/phpspec": "~2.0"
+ "behat/mink-goutte-driver": "^1.1",
+ "phpspec/phpspec": "^2.0"
},
"type": "behat-extension",
"extra": {
@@ -1179,7 +1234,7 @@
"test",
"web"
],
- "time": "2016-02-15T07:55:18+00:00"
+ "time": "2017-11-24T19:30:49+00:00"
},
{
"name": "behat/mink-goutte-driver",
@@ -1367,24 +1422,27 @@
},
{
"name": "fabpot/goutte",
- "version": "v3.2.1",
+ "version": "v3.2.2",
"source": {
"type": "git",
"url": "https://github.com/FriendsOfPHP/Goutte.git",
- "reference": "db5c28f4a010b4161d507d5304e28a7ebf211638"
+ "reference": "395f61d7c2e15a813839769553a4de16fa3b3c96"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/FriendsOfPHP/Goutte/zipball/db5c28f4a010b4161d507d5304e28a7ebf211638",
- "reference": "db5c28f4a010b4161d507d5304e28a7ebf211638",
+ "url": "https://api.github.com/repos/FriendsOfPHP/Goutte/zipball/395f61d7c2e15a813839769553a4de16fa3b3c96",
+ "reference": "395f61d7c2e15a813839769553a4de16fa3b3c96",
"shasum": ""
},
"require": {
"guzzlehttp/guzzle": "^6.0",
"php": ">=5.5.0",
- "symfony/browser-kit": "~2.1|~3.0",
- "symfony/css-selector": "~2.1|~3.0",
- "symfony/dom-crawler": "~2.1|~3.0"
+ "symfony/browser-kit": "~2.1|~3.0|~4.0",
+ "symfony/css-selector": "~2.1|~3.0|~4.0",
+ "symfony/dom-crawler": "~2.1|~3.0|~4.0"
+ },
+ "require-dev": {
+ "symfony/phpunit-bridge": "^3.3 || ^4"
},
"type": "application",
"extra": {
@@ -1395,7 +1453,10 @@
"autoload": {
"psr-4": {
"Goutte\\": "Goutte"
- }
+ },
+ "exclude-from-classmap": [
+ "Goutte/Tests"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -1412,7 +1473,7 @@
"keywords": [
"scraper"
],
- "time": "2017-01-03T13:21:43+00:00"
+ "time": "2017-11-19T08:45:40+00:00"
},
{
"name": "guzzlehttp/guzzle",
@@ -1858,22 +1919,22 @@
},
{
"name": "php-mock/php-mock-phpunit",
- "version": "2.0.0",
+ "version": "2.0.1",
"source": {
"type": "git",
"url": "https://github.com/php-mock/php-mock-phpunit.git",
- "reference": "173781abdc632c59200253e12e2b991ae6a4574f"
+ "reference": "b42fc41ecb7538564067527f6c30b8854f149d32"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-mock/php-mock-phpunit/zipball/173781abdc632c59200253e12e2b991ae6a4574f",
- "reference": "173781abdc632c59200253e12e2b991ae6a4574f",
+ "url": "https://api.github.com/repos/php-mock/php-mock-phpunit/zipball/b42fc41ecb7538564067527f6c30b8854f149d32",
+ "reference": "b42fc41ecb7538564067527f6c30b8854f149d32",
"shasum": ""
},
"require": {
"php": ">=7",
"php-mock/php-mock-integration": "^2",
- "phpunit/phpunit": "^6"
+ "phpunit/phpunit": "^6 <6.5"
},
"type": "library",
"autoload": {
@@ -1905,20 +1966,20 @@
"test",
"test double"
],
- "time": "2017-02-17T22:44:38+00:00"
+ "time": "2017-12-02T09:49:02+00:00"
},
{
"name": "phpdocumentor/reflection-common",
- "version": "1.0",
+ "version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/ReflectionCommon.git",
- "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c"
+ "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/144c307535e82c8fdcaacbcfc1d6d8eeb896687c",
- "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
+ "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
"shasum": ""
},
"require": {
@@ -1959,33 +2020,39 @@
"reflection",
"static analysis"
],
- "time": "2015-12-27T11:43:31+00:00"
+ "time": "2017-09-11T18:02:19+00:00"
},
{
"name": "phpdocumentor/reflection-docblock",
- "version": "3.1.1",
+ "version": "4.2.0",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
- "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e"
+ "reference": "66465776cfc249844bde6d117abff1d22e06c2da"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/8331b5efe816ae05461b7ca1e721c01b46bafb3e",
- "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/66465776cfc249844bde6d117abff1d22e06c2da",
+ "reference": "66465776cfc249844bde6d117abff1d22e06c2da",
"shasum": ""
},
"require": {
- "php": ">=5.5",
- "phpdocumentor/reflection-common": "^1.0@dev",
- "phpdocumentor/type-resolver": "^0.2.0",
+ "php": "^7.0",
+ "phpdocumentor/reflection-common": "^1.0.0",
+ "phpdocumentor/type-resolver": "^0.4.0",
"webmozart/assert": "^1.0"
},
"require-dev": {
- "mockery/mockery": "^0.9.4",
- "phpunit/phpunit": "^4.4"
+ "doctrine/instantiator": "~1.0.5",
+ "mockery/mockery": "^1.0",
+ "phpunit/phpunit": "^6.4"
},
"type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.x-dev"
+ }
+ },
"autoload": {
"psr-4": {
"phpDocumentor\\Reflection\\": [
@@ -2004,24 +2071,24 @@
}
],
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
- "time": "2016-09-30T07:12:33+00:00"
+ "time": "2017-11-27T17:38:31+00:00"
},
{
"name": "phpdocumentor/type-resolver",
- "version": "0.2.1",
+ "version": "0.4.0",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/TypeResolver.git",
- "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb"
+ "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb",
- "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7",
+ "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7",
"shasum": ""
},
"require": {
- "php": ">=5.5",
+ "php": "^5.5 || ^7.0",
"phpdocumentor/reflection-common": "^1.0"
},
"require-dev": {
@@ -2051,37 +2118,37 @@
"email": "me@mikevanriel.com"
}
],
- "time": "2016-11-25T06:54:22+00:00"
+ "time": "2017-07-14T14:27:02+00:00"
},
{
"name": "phpspec/prophecy",
- "version": "v1.7.0",
+ "version": "1.7.3",
"source": {
"type": "git",
"url": "https://github.com/phpspec/prophecy.git",
- "reference": "93d39f1f7f9326d746203c7c056f300f7f126073"
+ "reference": "e4ed002c67da8eceb0eb8ddb8b3847bb53c5c2bf"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpspec/prophecy/zipball/93d39f1f7f9326d746203c7c056f300f7f126073",
- "reference": "93d39f1f7f9326d746203c7c056f300f7f126073",
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/e4ed002c67da8eceb0eb8ddb8b3847bb53c5c2bf",
+ "reference": "e4ed002c67da8eceb0eb8ddb8b3847bb53c5c2bf",
"shasum": ""
},
"require": {
"doctrine/instantiator": "^1.0.2",
"php": "^5.3|^7.0",
- "phpdocumentor/reflection-docblock": "^2.0|^3.0.2",
+ "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0",
"sebastian/comparator": "^1.1|^2.0",
"sebastian/recursion-context": "^1.0|^2.0|^3.0"
},
"require-dev": {
"phpspec/phpspec": "^2.5|^3.2",
- "phpunit/phpunit": "^4.8 || ^5.6.5"
+ "phpunit/phpunit": "^4.8.35 || ^5.7"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.6.x-dev"
+ "dev-master": "1.7.x-dev"
}
},
"autoload": {
@@ -2114,20 +2181,72 @@
"spy",
"stub"
],
- "time": "2017-03-02T20:05:34+00:00"
+ "time": "2017-11-24T13:59:53+00:00"
+ },
+ {
+ "name": "phpunit/dbunit",
+ "version": "3.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/dbunit.git",
+ "reference": "403350339b6aca748ee0067d027d85621992e21f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/dbunit/zipball/403350339b6aca748ee0067d027d85621992e21f",
+ "reference": "403350339b6aca748ee0067d027d85621992e21f",
+ "shasum": ""
+ },
+ "require": {
+ "ext-pdo": "*",
+ "ext-simplexml": "*",
+ "php": "^7.0",
+ "phpunit/phpunit": "^6.0",
+ "symfony/yaml": "^3.0 || ^4.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "PHPUnit extension for database interaction testing",
+ "homepage": "https://github.com/sebastianbergmann/dbunit/",
+ "keywords": [
+ "database",
+ "testing",
+ "xunit"
+ ],
+ "time": "2017-11-18T17:40:34+00:00"
},
{
"name": "phpunit/php-code-coverage",
- "version": "5.2.2",
+ "version": "5.3.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "8ed1902a57849e117b5651fc1a5c48110946c06b"
+ "reference": "661f34d0bd3f1a7225ef491a70a020ad23a057a1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/8ed1902a57849e117b5651fc1a5c48110946c06b",
- "reference": "8ed1902a57849e117b5651fc1a5c48110946c06b",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/661f34d0bd3f1a7225ef491a70a020ad23a057a1",
+ "reference": "661f34d0bd3f1a7225ef491a70a020ad23a057a1",
"shasum": ""
},
"require": {
@@ -2136,14 +2255,13 @@
"php": "^7.0",
"phpunit/php-file-iterator": "^1.4.2",
"phpunit/php-text-template": "^1.2.1",
- "phpunit/php-token-stream": "^1.4.11 || ^2.0",
+ "phpunit/php-token-stream": "^2.0.1",
"sebastian/code-unit-reverse-lookup": "^1.0.1",
"sebastian/environment": "^3.0",
"sebastian/version": "^2.0.1",
"theseer/tokenizer": "^1.1"
},
"require-dev": {
- "ext-xdebug": "^2.5",
"phpunit/phpunit": "^6.0"
},
"suggest": {
@@ -2152,7 +2270,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "5.2.x-dev"
+ "dev-master": "5.3.x-dev"
}
},
"autoload": {
@@ -2167,7 +2285,7 @@
"authors": [
{
"name": "Sebastian Bergmann",
- "email": "sb@sebastian-bergmann.de",
+ "email": "sebastian@phpunit.de",
"role": "lead"
}
],
@@ -2178,20 +2296,20 @@
"testing",
"xunit"
],
- "time": "2017-08-03T12:40:43+00:00"
+ "time": "2017-12-06T09:29:45+00:00"
},
{
"name": "phpunit/php-file-iterator",
- "version": "1.4.2",
+ "version": "1.4.5",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-file-iterator.git",
- "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5"
+ "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3cc8f69b3028d0f96a9078e6295d86e9bf019be5",
- "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4",
+ "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4",
"shasum": ""
},
"require": {
@@ -2225,7 +2343,7 @@
"filesystem",
"iterator"
],
- "time": "2016-10-03T07:40:28+00:00"
+ "time": "2017-11-27T13:52:08+00:00"
},
{
"name": "phpunit/php-text-template",
@@ -2319,16 +2437,16 @@
},
{
"name": "phpunit/php-token-stream",
- "version": "2.0.1",
+ "version": "2.0.2",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-token-stream.git",
- "reference": "9a02332089ac48e704c70f6cefed30c224e3c0b0"
+ "reference": "791198a2c6254db10131eecfe8c06670700904db"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/9a02332089ac48e704c70f6cefed30c224e3c0b0",
- "reference": "9a02332089ac48e704c70f6cefed30c224e3c0b0",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db",
+ "reference": "791198a2c6254db10131eecfe8c06670700904db",
"shasum": ""
},
"require": {
@@ -2364,20 +2482,20 @@
"keywords": [
"tokenizer"
],
- "time": "2017-08-20T05:47:52+00:00"
+ "time": "2017-11-27T05:48:46+00:00"
},
{
"name": "phpunit/phpunit",
- "version": "6.4.3",
+ "version": "6.4.4",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "06b28548fd2b4a20c3cd6e247dc86331a7d4db13"
+ "reference": "562f7dc75d46510a4ed5d16189ae57fbe45a9932"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/06b28548fd2b4a20c3cd6e247dc86331a7d4db13",
- "reference": "06b28548fd2b4a20c3cd6e247dc86331a7d4db13",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/562f7dc75d46510a4ed5d16189ae57fbe45a9932",
+ "reference": "562f7dc75d46510a4ed5d16189ae57fbe45a9932",
"shasum": ""
},
"require": {
@@ -2448,7 +2566,7 @@
"testing",
"xunit"
],
- "time": "2017-10-16T13:18:59+00:00"
+ "time": "2017-11-08T11:26:09+00:00"
},
{
"name": "phpunit/phpunit-mock-objects",
@@ -2655,30 +2773,30 @@
},
{
"name": "sebastian/comparator",
- "version": "2.0.2",
+ "version": "2.1.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/comparator.git",
- "reference": "ae068fede81d06e7bb9bb46a367210a3d3e1fe6a"
+ "reference": "1174d9018191e93cb9d719edec01257fc05f8158"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/ae068fede81d06e7bb9bb46a367210a3d3e1fe6a",
- "reference": "ae068fede81d06e7bb9bb46a367210a3d3e1fe6a",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1174d9018191e93cb9d719edec01257fc05f8158",
+ "reference": "1174d9018191e93cb9d719edec01257fc05f8158",
"shasum": ""
},
"require": {
"php": "^7.0",
"sebastian/diff": "^2.0",
- "sebastian/exporter": "^3.0"
+ "sebastian/exporter": "^3.1"
},
"require-dev": {
- "phpunit/phpunit": "^6.0"
+ "phpunit/phpunit": "^6.4"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.0.x-dev"
+ "dev-master": "2.1.x-dev"
}
},
"autoload": {
@@ -2709,13 +2827,13 @@
}
],
"description": "Provides the functionality to compare PHP values for equality",
- "homepage": "http://www.github.com/sebastianbergmann/comparator",
+ "homepage": "https://github.com/sebastianbergmann/comparator",
"keywords": [
"comparator",
"compare",
"equality"
],
- "time": "2017-08-03T07:14:59+00:00"
+ "time": "2017-11-03T07:16:52+00:00"
},
{
"name": "sebastian/diff",
@@ -3169,25 +3287,25 @@
},
{
"name": "symfony/browser-kit",
- "version": "v3.3.10",
+ "version": "v3.4.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/browser-kit.git",
- "reference": "317d5bdf0127f06db7ea294186132b4f5b036839"
+ "reference": "f761b4ecdd23a451c2cae6fba704d8b207cbb045"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/browser-kit/zipball/317d5bdf0127f06db7ea294186132b4f5b036839",
- "reference": "317d5bdf0127f06db7ea294186132b4f5b036839",
+ "url": "https://api.github.com/repos/symfony/browser-kit/zipball/f761b4ecdd23a451c2cae6fba704d8b207cbb045",
+ "reference": "f761b4ecdd23a451c2cae6fba704d8b207cbb045",
"shasum": ""
},
"require": {
"php": "^5.5.9|>=7.0.8",
- "symfony/dom-crawler": "~2.8|~3.0"
+ "symfony/dom-crawler": "~2.8|~3.0|~4.0"
},
"require-dev": {
- "symfony/css-selector": "~2.8|~3.0",
- "symfony/process": "~2.8|~3.0"
+ "symfony/css-selector": "~2.8|~3.0|~4.0",
+ "symfony/process": "~2.8|~3.0|~4.0"
},
"suggest": {
"symfony/process": ""
@@ -3195,7 +3313,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.3-dev"
+ "dev-master": "3.4-dev"
}
},
"autoload": {
@@ -3222,27 +3340,27 @@
],
"description": "Symfony BrowserKit Component",
"homepage": "https://symfony.com",
- "time": "2017-10-02T06:42:24+00:00"
+ "time": "2017-12-11T22:06:16+00:00"
},
{
"name": "symfony/class-loader",
- "version": "v3.3.10",
+ "version": "v3.4.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/class-loader.git",
- "reference": "7572c904b209fa9907c69a6a9a68243c265a4d01"
+ "reference": "e8d36a7b5568d232f5c3f8ef92665836b9f1e038"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/class-loader/zipball/7572c904b209fa9907c69a6a9a68243c265a4d01",
- "reference": "7572c904b209fa9907c69a6a9a68243c265a4d01",
+ "url": "https://api.github.com/repos/symfony/class-loader/zipball/e8d36a7b5568d232f5c3f8ef92665836b9f1e038",
+ "reference": "e8d36a7b5568d232f5c3f8ef92665836b9f1e038",
"shasum": ""
},
"require": {
"php": "^5.5.9|>=7.0.8"
},
"require-dev": {
- "symfony/finder": "~2.8|~3.0",
+ "symfony/finder": "~2.8|~3.0|~4.0",
"symfony/polyfill-apcu": "~1.1"
},
"suggest": {
@@ -3251,7 +3369,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.3-dev"
+ "dev-master": "3.4-dev"
}
},
"autoload": {
@@ -3278,34 +3396,34 @@
],
"description": "Symfony ClassLoader Component",
"homepage": "https://symfony.com",
- "time": "2017-10-02T06:42:24+00:00"
+ "time": "2017-11-05T16:10:10+00:00"
},
{
"name": "symfony/config",
- "version": "v3.3.10",
+ "version": "v3.4.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/config.git",
- "reference": "4ab62407bff9cd97c410a7feaef04c375aaa5cfd"
+ "reference": "e57211b88aa889fefac1cb36866db04100b0f21c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/config/zipball/4ab62407bff9cd97c410a7feaef04c375aaa5cfd",
- "reference": "4ab62407bff9cd97c410a7feaef04c375aaa5cfd",
+ "url": "https://api.github.com/repos/symfony/config/zipball/e57211b88aa889fefac1cb36866db04100b0f21c",
+ "reference": "e57211b88aa889fefac1cb36866db04100b0f21c",
"shasum": ""
},
"require": {
"php": "^5.5.9|>=7.0.8",
- "symfony/filesystem": "~2.8|~3.0"
+ "symfony/filesystem": "~2.8|~3.0|~4.0"
},
"conflict": {
"symfony/dependency-injection": "<3.3",
"symfony/finder": "<3.3"
},
"require-dev": {
- "symfony/dependency-injection": "~3.3",
- "symfony/finder": "~3.3",
- "symfony/yaml": "~3.0"
+ "symfony/dependency-injection": "~3.3|~4.0",
+ "symfony/finder": "~3.3|~4.0",
+ "symfony/yaml": "~3.0|~4.0"
},
"suggest": {
"symfony/yaml": "To use the yaml reference dumper"
@@ -3313,7 +3431,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.3-dev"
+ "dev-master": "3.4-dev"
}
},
"autoload": {
@@ -3340,48 +3458,49 @@
],
"description": "Symfony Config Component",
"homepage": "https://symfony.com",
- "time": "2017-10-04T18:56:58+00:00"
+ "time": "2017-12-14T19:40:10+00:00"
},
{
"name": "symfony/console",
- "version": "v3.3.10",
+ "version": "v3.4.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "116bc56e45a8e5572e51eb43ab58c769a352366c"
+ "reference": "9f21adfb92a9315b73ae2ed43138988ee4913d4e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/116bc56e45a8e5572e51eb43ab58c769a352366c",
- "reference": "116bc56e45a8e5572e51eb43ab58c769a352366c",
+ "url": "https://api.github.com/repos/symfony/console/zipball/9f21adfb92a9315b73ae2ed43138988ee4913d4e",
+ "reference": "9f21adfb92a9315b73ae2ed43138988ee4913d4e",
"shasum": ""
},
"require": {
"php": "^5.5.9|>=7.0.8",
- "symfony/debug": "~2.8|~3.0",
+ "symfony/debug": "~2.8|~3.0|~4.0",
"symfony/polyfill-mbstring": "~1.0"
},
"conflict": {
- "symfony/dependency-injection": "<3.3"
+ "symfony/dependency-injection": "<3.4",
+ "symfony/process": "<3.3"
},
"require-dev": {
"psr/log": "~1.0",
- "symfony/config": "~3.3",
- "symfony/dependency-injection": "~3.3",
- "symfony/event-dispatcher": "~2.8|~3.0",
- "symfony/filesystem": "~2.8|~3.0",
- "symfony/process": "~2.8|~3.0"
+ "symfony/config": "~3.3|~4.0",
+ "symfony/dependency-injection": "~3.4|~4.0",
+ "symfony/event-dispatcher": "~2.8|~3.0|~4.0",
+ "symfony/lock": "~3.4|~4.0",
+ "symfony/process": "~3.3|~4.0"
},
"suggest": {
"psr/log": "For using the console logger",
"symfony/event-dispatcher": "",
- "symfony/filesystem": "",
+ "symfony/lock": "",
"symfony/process": ""
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.3-dev"
+ "dev-master": "3.4-dev"
}
},
"autoload": {
@@ -3408,20 +3527,20 @@
],
"description": "Symfony Console Component",
"homepage": "https://symfony.com",
- "time": "2017-10-02T06:42:24+00:00"
+ "time": "2017-12-14T19:40:10+00:00"
},
{
"name": "symfony/css-selector",
- "version": "v3.3.10",
+ "version": "v3.4.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/css-selector.git",
- "reference": "07447650225ca9223bd5c97180fe7c8267f7d332"
+ "reference": "eac760b414cf1f64362c3dd047b989e4db121332"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/css-selector/zipball/07447650225ca9223bd5c97180fe7c8267f7d332",
- "reference": "07447650225ca9223bd5c97180fe7c8267f7d332",
+ "url": "https://api.github.com/repos/symfony/css-selector/zipball/eac760b414cf1f64362c3dd047b989e4db121332",
+ "reference": "eac760b414cf1f64362c3dd047b989e4db121332",
"shasum": ""
},
"require": {
@@ -3430,7 +3549,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.3-dev"
+ "dev-master": "3.4-dev"
}
},
"autoload": {
@@ -3461,20 +3580,20 @@
],
"description": "Symfony CssSelector Component",
"homepage": "https://symfony.com",
- "time": "2017-10-02T06:42:24+00:00"
+ "time": "2017-12-14T19:40:10+00:00"
},
{
"name": "symfony/debug",
- "version": "v3.3.10",
+ "version": "v3.4.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/debug.git",
- "reference": "eb95d9ce8f18dcc1b3dfff00cb624c402be78ffd"
+ "reference": "543deab3ffff94402440b326fc94153bae2dfa7a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/debug/zipball/eb95d9ce8f18dcc1b3dfff00cb624c402be78ffd",
- "reference": "eb95d9ce8f18dcc1b3dfff00cb624c402be78ffd",
+ "url": "https://api.github.com/repos/symfony/debug/zipball/543deab3ffff94402440b326fc94153bae2dfa7a",
+ "reference": "543deab3ffff94402440b326fc94153bae2dfa7a",
"shasum": ""
},
"require": {
@@ -3485,12 +3604,12 @@
"symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
},
"require-dev": {
- "symfony/http-kernel": "~2.8|~3.0"
+ "symfony/http-kernel": "~2.8|~3.0|~4.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.3-dev"
+ "dev-master": "3.4-dev"
}
},
"autoload": {
@@ -3517,20 +3636,20 @@
],
"description": "Symfony Debug Component",
"homepage": "https://symfony.com",
- "time": "2017-10-02T06:42:24+00:00"
+ "time": "2017-12-12T08:27:14+00:00"
},
{
"name": "symfony/dependency-injection",
- "version": "v3.3.10",
+ "version": "v3.4.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/dependency-injection.git",
- "reference": "8ebad929aee3ca185b05f55d9cc5521670821ad1"
+ "reference": "5f81907ea43bfa971ac2c7fbac593ebe7cd7d333"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/8ebad929aee3ca185b05f55d9cc5521670821ad1",
- "reference": "8ebad929aee3ca185b05f55d9cc5521670821ad1",
+ "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/5f81907ea43bfa971ac2c7fbac593ebe7cd7d333",
+ "reference": "5f81907ea43bfa971ac2c7fbac593ebe7cd7d333",
"shasum": ""
},
"require": {
@@ -3538,17 +3657,18 @@
"psr/container": "^1.0"
},
"conflict": {
- "symfony/config": "<3.3.1",
+ "symfony/config": "<3.3.7",
"symfony/finder": "<3.3",
- "symfony/yaml": "<3.3"
+ "symfony/proxy-manager-bridge": "<3.4",
+ "symfony/yaml": "<3.4"
},
"provide": {
"psr/container-implementation": "1.0"
},
"require-dev": {
- "symfony/config": "~3.3",
- "symfony/expression-language": "~2.8|~3.0",
- "symfony/yaml": "~3.3"
+ "symfony/config": "~3.3|~4.0",
+ "symfony/expression-language": "~2.8|~3.0|~4.0",
+ "symfony/yaml": "~3.4|~4.0"
},
"suggest": {
"symfony/config": "",
@@ -3560,7 +3680,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.3-dev"
+ "dev-master": "3.4-dev"
}
},
"autoload": {
@@ -3587,20 +3707,20 @@
],
"description": "Symfony DependencyInjection Component",
"homepage": "https://symfony.com",
- "time": "2017-10-04T17:15:30+00:00"
+ "time": "2017-12-14T19:40:10+00:00"
},
{
"name": "symfony/dom-crawler",
- "version": "v3.3.10",
+ "version": "v3.4.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/dom-crawler.git",
- "reference": "40dafd42d5dad7fe5ad4e958413d92a207522ac1"
+ "reference": "dc847845c66fa68ad4522ed27e62b9b9dd12ab3b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/40dafd42d5dad7fe5ad4e958413d92a207522ac1",
- "reference": "40dafd42d5dad7fe5ad4e958413d92a207522ac1",
+ "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/dc847845c66fa68ad4522ed27e62b9b9dd12ab3b",
+ "reference": "dc847845c66fa68ad4522ed27e62b9b9dd12ab3b",
"shasum": ""
},
"require": {
@@ -3608,7 +3728,7 @@
"symfony/polyfill-mbstring": "~1.0"
},
"require-dev": {
- "symfony/css-selector": "~2.8|~3.0"
+ "symfony/css-selector": "~2.8|~3.0|~4.0"
},
"suggest": {
"symfony/css-selector": ""
@@ -3616,7 +3736,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.3-dev"
+ "dev-master": "3.4-dev"
}
},
"autoload": {
@@ -3643,20 +3763,20 @@
],
"description": "Symfony DomCrawler Component",
"homepage": "https://symfony.com",
- "time": "2017-10-02T06:42:24+00:00"
+ "time": "2017-12-14T19:40:10+00:00"
},
{
"name": "symfony/event-dispatcher",
- "version": "v3.3.10",
+ "version": "v3.4.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "d7ba037e4b8221956ab1e221c73c9e27e05dd423"
+ "reference": "b869cbf8a15ca6261689de2c28a7d7f2d0706835"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d7ba037e4b8221956ab1e221c73c9e27e05dd423",
- "reference": "d7ba037e4b8221956ab1e221c73c9e27e05dd423",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b869cbf8a15ca6261689de2c28a7d7f2d0706835",
+ "reference": "b869cbf8a15ca6261689de2c28a7d7f2d0706835",
"shasum": ""
},
"require": {
@@ -3667,10 +3787,10 @@
},
"require-dev": {
"psr/log": "~1.0",
- "symfony/config": "~2.8|~3.0",
- "symfony/dependency-injection": "~3.3",
- "symfony/expression-language": "~2.8|~3.0",
- "symfony/stopwatch": "~2.8|~3.0"
+ "symfony/config": "~2.8|~3.0|~4.0",
+ "symfony/dependency-injection": "~3.3|~4.0",
+ "symfony/expression-language": "~2.8|~3.0|~4.0",
+ "symfony/stopwatch": "~2.8|~3.0|~4.0"
},
"suggest": {
"symfony/dependency-injection": "",
@@ -3679,7 +3799,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.3-dev"
+ "dev-master": "3.4-dev"
}
},
"autoload": {
@@ -3706,20 +3826,20 @@
],
"description": "Symfony EventDispatcher Component",
"homepage": "https://symfony.com",
- "time": "2017-10-02T06:42:24+00:00"
+ "time": "2017-12-14T19:40:10+00:00"
},
{
"name": "symfony/filesystem",
- "version": "v3.3.10",
+ "version": "v3.4.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
- "reference": "90bc45abf02ae6b7deb43895c1052cb0038506f1"
+ "reference": "25b135bea251829e3db6a77d773643408b575ed4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/filesystem/zipball/90bc45abf02ae6b7deb43895c1052cb0038506f1",
- "reference": "90bc45abf02ae6b7deb43895c1052cb0038506f1",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/25b135bea251829e3db6a77d773643408b575ed4",
+ "reference": "25b135bea251829e3db6a77d773643408b575ed4",
"shasum": ""
},
"require": {
@@ -3728,7 +3848,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.3-dev"
+ "dev-master": "3.4-dev"
}
},
"autoload": {
@@ -3755,7 +3875,7 @@
],
"description": "Symfony Filesystem Component",
"homepage": "https://symfony.com",
- "time": "2017-10-03T13:33:10+00:00"
+ "time": "2017-12-14T19:40:10+00:00"
},
{
"name": "symfony/polyfill-mbstring",
@@ -3818,16 +3938,16 @@
},
{
"name": "symfony/translation",
- "version": "v3.3.10",
+ "version": "v3.4.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation.git",
- "reference": "409bf229cd552bf7e3faa8ab7e3980b07672073f"
+ "reference": "4c5d5582baf2829751a5207659329c1f52eedeb6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation/zipball/409bf229cd552bf7e3faa8ab7e3980b07672073f",
- "reference": "409bf229cd552bf7e3faa8ab7e3980b07672073f",
+ "url": "https://api.github.com/repos/symfony/translation/zipball/4c5d5582baf2829751a5207659329c1f52eedeb6",
+ "reference": "4c5d5582baf2829751a5207659329c1f52eedeb6",
"shasum": ""
},
"require": {
@@ -3836,13 +3956,16 @@
},
"conflict": {
"symfony/config": "<2.8",
- "symfony/yaml": "<3.3"
+ "symfony/dependency-injection": "<3.4",
+ "symfony/yaml": "<3.4"
},
"require-dev": {
"psr/log": "~1.0",
- "symfony/config": "~2.8|~3.0",
- "symfony/intl": "^2.8.18|^3.2.5",
- "symfony/yaml": "~3.3"
+ "symfony/config": "~2.8|~3.0|~4.0",
+ "symfony/dependency-injection": "~3.4|~4.0",
+ "symfony/finder": "~2.8|~3.0|~4.0",
+ "symfony/intl": "^2.8.18|^3.2.5|~4.0",
+ "symfony/yaml": "~3.4|~4.0"
},
"suggest": {
"psr/log": "To use logging capability in translator",
@@ -3852,7 +3975,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.3-dev"
+ "dev-master": "3.4-dev"
}
},
"autoload": {
@@ -3879,27 +4002,30 @@
],
"description": "Symfony Translation Component",
"homepage": "https://symfony.com",
- "time": "2017-10-02T06:42:24+00:00"
+ "time": "2017-12-12T08:27:14+00:00"
},
{
"name": "symfony/yaml",
- "version": "v3.3.10",
+ "version": "v3.4.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
- "reference": "8c7bf1e7d5d6b05a690b715729cb4cd0c0a99c46"
+ "reference": "afe0cd38486505c9703707707d91450cfc1bd536"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/8c7bf1e7d5d6b05a690b715729cb4cd0c0a99c46",
- "reference": "8c7bf1e7d5d6b05a690b715729cb4cd0c0a99c46",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/afe0cd38486505c9703707707d91450cfc1bd536",
+ "reference": "afe0cd38486505c9703707707d91450cfc1bd536",
"shasum": ""
},
"require": {
"php": "^5.5.9|>=7.0.8"
},
+ "conflict": {
+ "symfony/console": "<3.4"
+ },
"require-dev": {
- "symfony/console": "~2.8|~3.0"
+ "symfony/console": "~3.4|~4.0"
},
"suggest": {
"symfony/console": "For validating YAML files using the lint command"
@@ -3907,7 +4033,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.3-dev"
+ "dev-master": "3.4-dev"
}
},
"autoload": {
@@ -3934,7 +4060,7 @@
],
"description": "Symfony Yaml Component",
"homepage": "https://symfony.com",
- "time": "2017-10-05T14:43:42+00:00"
+ "time": "2017-12-11T20:38:23+00:00"
},
{
"name": "theseer/tokenizer",
diff --git a/include/bbcode.php b/include/bbcode.php
index ed34bc5d6..775a91f9a 100644
--- a/include/bbcode.php
+++ b/include/bbcode.php
@@ -941,27 +941,34 @@ function bbcode($Text, $options = []) {
// Check for h1
if (strpos($Text,'[h1]') !== false) {
$Text = preg_replace("(\[h1\](.*?)\[\/h1\])ism",'<h1>$1</h1>',$Text);
+ $Text = str_replace('</h1><br />', '</h1>', $Text);
}
// Check for h2
if (strpos($Text,'[h2]') !== false) {
$Text = preg_replace("(\[h2\](.*?)\[\/h2\])ism",'<h2>$1</h2>',$Text);
+ $Text = str_replace('</h2><br />', '</h2>', $Text);
}
// Check for h3
if (strpos($Text,'[h3]') !== false) {
$Text = preg_replace("(\[h3\](.*?)\[\/h3\])ism",'<h3>$1</h3>',$Text);
+ $Text = str_replace('</h3><br />', '</h3>', $Text);
}
// Check for h4
if (strpos($Text,'[h4]') !== false) {
$Text = preg_replace("(\[h4\](.*?)\[\/h4\])ism",'<h4>$1</h4>',$Text);
+ $Text = str_replace('</h4><br />', '</h4>', $Text);
}
// Check for h5
if (strpos($Text,'[h5]') !== false) {
$Text = preg_replace("(\[h5\](.*?)\[\/h5\])ism",'<h5>$1</h5>',$Text);
+ $Text = str_replace('</h5><br />', '</h5>', $Text);
}
// Check for h6
if (strpos($Text,'[h6]') !== false) {
$Text = preg_replace("(\[h6\](.*?)\[\/h6\])ism",'<h6>$1</h6>',$Text);
+ $Text = str_replace('</h6><br />', '</h6>', $Text);
}
+
// Check for table of content without params
while(strpos($Text,'[toc]') !== false) {
$toc_id = 'toc-' . random_string(10);
diff --git a/include/feedutils.php b/include/feedutils.php
index 8f2c5d988..4638ef66a 100644
--- a/include/feedutils.php
+++ b/include/feedutils.php
@@ -1305,7 +1305,7 @@ function consume_feed($xml, $importer, &$contact, $pass = 0) {
// allow likes of comments
- if($item_parent_mid && activity_match($datarray['verb'],ACTVITY_LIKE)) {
+ if($item_parent_mid && activity_match($datarray['verb'],ACTIVITY_LIKE)) {
$datarray['thr_parent'] = $item_parent_mid[0]['parent_mid'];
}
diff --git a/include/html2bbcode.php b/include/html2bbcode.php
index d7fbd8660..f67231847 100644
--- a/include/html2bbcode.php
+++ b/include/html2bbcode.php
@@ -196,12 +196,12 @@ function html2bbcode($message)
//node2bbcode($doc, 'tr', array(), "[tr]", "[/tr]");
//node2bbcode($doc, 'td', array(), "[td]", "[/td]");
- node2bbcode($doc, 'h1', array(), "\n\n[size=xx-large][b]", "[/b][/size]\n");
- node2bbcode($doc, 'h2', array(), "\n\n[size=x-large][b]", "[/b][/size]\n");
- node2bbcode($doc, 'h3', array(), "\n\n[size=large][b]", "[/b][/size]\n");
- node2bbcode($doc, 'h4', array(), "\n\n[size=medium][b]", "[/b][/size]\n");
- node2bbcode($doc, 'h5', array(), "\n\n[size=small][b]", "[/b][/size]\n");
- node2bbcode($doc, 'h6', array(), "\n\n[size=x-small][b]", "[/b][/size]\n");
+ node2bbcode($doc, 'h1', array(), "\n\n[h1]", "[/h1]\n");
+ node2bbcode($doc, 'h2', array(), "\n\n[h2]", "[/h2]\n");
+ node2bbcode($doc, 'h3', array(), "\n\n[h3]", "[/h3]\n");
+ node2bbcode($doc, 'h4', array(), "\n\n[h4]", "[/h4]\n");
+ node2bbcode($doc, 'h5', array(), "\n\n[h5]", "[/h5]\n");
+ node2bbcode($doc, 'h6', array(), "\n\n[h6]", "[/h6]\n");
node2bbcode($doc, 'a', array('href'=>'/(.+)/'), '[url=$1]', '[/url]');
diff --git a/include/message.php b/include/message.php
index b57d2e068..4a673b961 100644
--- a/include/message.php
+++ b/include/message.php
@@ -215,7 +215,7 @@ function send_message($uid = 0, $recipient = '', $body = '', $subject = '', $rep
return $ret;
}
- if(count($images)) {
+ if($images) {
foreach($images as $image) {
if(! stristr($image,z_root() . '/photo/'))
continue;
diff --git a/library/Smarty/libs/plugins/function.counter.php b/library/Smarty/libs/plugins/function.counter.php
deleted file mode 100644
index 4da85a14e..000000000
--- a/library/Smarty/libs/plugins/function.counter.php
+++ /dev/null
@@ -1,78 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsFunction
- */
-
-/**
- * Smarty {counter} function plugin
- * Type: function<br>
- * Name: counter<br>
- * Purpose: print out a counter value
- *
- * @author Monte Ohrt <monte at ohrt dot com>
- * @link http://www.smarty.net/manual/en/language.function.counter.php {counter}
- * (Smarty online manual)
- *
- * @param array $params parameters
- * @param Smarty_Internal_Template $template template object
- *
- * @return string|null
- */
-function smarty_function_counter($params, $template)
-{
- static $counters = array();
-
- $name = (isset($params['name'])) ? $params['name'] : 'default';
- if (!isset($counters[$name])) {
- $counters[$name] = array(
- 'start' => 1,
- 'skip' => 1,
- 'direction' => 'up',
- 'count' => 1
- );
- }
- $counter =& $counters[$name];
-
- if (isset($params['start'])) {
- $counter['start'] = $counter['count'] = (int) $params['start'];
- }
-
- if (!empty($params['assign'])) {
- $counter['assign'] = $params['assign'];
- }
-
- if (isset($counter['assign'])) {
- $template->assign($counter['assign'], $counter['count']);
- }
-
- if (isset($params['print'])) {
- $print = (bool) $params['print'];
- } else {
- $print = empty($counter['assign']);
- }
-
- if ($print) {
- $retval = $counter['count'];
- } else {
- $retval = null;
- }
-
- if (isset($params['skip'])) {
- $counter['skip'] = $params['skip'];
- }
-
- if (isset($params['direction'])) {
- $counter['direction'] = $params['direction'];
- }
-
- if ($counter['direction'] == "down") {
- $counter['count'] -= $counter['skip'];
- } else {
- $counter['count'] += $counter['skip'];
- }
-
- return $retval;
-}
diff --git a/library/Smarty/libs/plugins/function.math.php b/library/Smarty/libs/plugins/function.math.php
deleted file mode 100644
index aba76e825..000000000
--- a/library/Smarty/libs/plugins/function.math.php
+++ /dev/null
@@ -1,91 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * This plugin is only for Smarty2 BC
- *
- * @package Smarty
- * @subpackage PluginsFunction
- */
-
-/**
- * Smarty {math} function plugin
- * Type: function<br>
- * Name: math<br>
- * Purpose: handle math computations in template
- *
- * @link http://www.smarty.net/manual/en/language.function.math.php {math}
- * (Smarty online manual)
- * @author Monte Ohrt <monte at ohrt dot com>
- *
- * @param array $params parameters
- * @param Smarty_Internal_Template $template template object
- *
- * @return string|null
- */
-function smarty_function_math($params, $template)
-{
- static $_allowed_funcs = array(
- 'int' => true, 'abs' => true, 'ceil' => true, 'cos' => true, 'exp' => true, 'floor' => true,
- 'log' => true, 'log10' => true, 'max' => true, 'min' => true, 'pi' => true, 'pow' => true,
- 'rand' => true, 'round' => true, 'sin' => true, 'sqrt' => true, 'srand' => true, 'tan' => true
- );
- // be sure equation parameter is present
- if (empty($params['equation'])) {
- trigger_error("math: missing equation parameter", E_USER_WARNING);
-
- return;
- }
-
- $equation = $params['equation'];
-
- // make sure parenthesis are balanced
- if (substr_count($equation, "(") != substr_count($equation, ")")) {
- trigger_error("math: unbalanced parenthesis", E_USER_WARNING);
-
- return;
- }
-
- // match all vars in equation, make sure all are passed
- preg_match_all("!(?:0x[a-fA-F0-9]+)|([a-zA-Z][a-zA-Z0-9_]*)!", $equation, $match);
-
- foreach ($match[1] as $curr_var) {
- if ($curr_var && !isset($params[$curr_var]) && !isset($_allowed_funcs[$curr_var])) {
- trigger_error("math: function call $curr_var not allowed", E_USER_WARNING);
-
- return;
- }
- }
-
- foreach ($params as $key => $val) {
- if ($key != "equation" && $key != "format" && $key != "assign") {
- // make sure value is not empty
- if (strlen($val) == 0) {
- trigger_error("math: parameter $key is empty", E_USER_WARNING);
-
- return;
- }
- if (!is_numeric($val)) {
- trigger_error("math: parameter $key: is not numeric", E_USER_WARNING);
-
- return;
- }
- $equation = preg_replace("/\b$key\b/", " \$params['$key'] ", $equation);
- }
- }
- $smarty_math_result = null;
- eval("\$smarty_math_result = " . $equation . ";");
-
- if (empty($params['format'])) {
- if (empty($params['assign'])) {
- return $smarty_math_result;
- } else {
- $template->assign($params['assign'], $smarty_math_result);
- }
- } else {
- if (empty($params['assign'])) {
- printf($params['format'], $smarty_math_result);
- } else {
- $template->assign($params['assign'], sprintf($params['format'], $smarty_math_result));
- }
- }
-}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.unescape.php b/library/Smarty/libs/plugins/modifiercompiler.unescape.php
deleted file mode 100644
index 3b17ea2e1..000000000
--- a/library/Smarty/libs/plugins/modifiercompiler.unescape.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-
-/**
- * Smarty unescape modifier plugin
- * Type: modifier<br>
- * Name: unescape<br>
- * Purpose: unescape html entities
- *
- * @author Rodney Rehm
- *
- * @param array $params parameters
- *
- * @return string with compiled code
- */
-function smarty_modifiercompiler_unescape($params)
-{
- if (!isset($params[1])) {
- $params[1] = 'html';
- }
- if (!isset($params[2])) {
- $params[2] = '\'' . addslashes(Smarty::$_CHARSET) . '\'';
- } else {
- $params[2] = "'" . $params[2] . "'";
- }
-
- switch (trim($params[1], '"\'')) {
- case 'entity':
- case 'htmlall':
- if (Smarty::$_MBSTRING) {
- return 'mb_convert_encoding(' . $params[0] . ', ' . $params[2] . ', \'HTML-ENTITIES\')';
- }
-
- return 'html_entity_decode(' . $params[0] . ', ENT_NOQUOTES, ' . $params[2] . ')';
-
- case 'html':
- return 'htmlspecialchars_decode(' . $params[0] . ', ENT_QUOTES)';
-
- case 'url':
- return 'rawurldecode(' . $params[0] . ')';
-
- default:
- return $params[0];
- }
-}
diff --git a/library/Smarty/libs/plugins/shared.escape_special_chars.php b/library/Smarty/libs/plugins/shared.escape_special_chars.php
deleted file mode 100644
index d3bd756b1..000000000
--- a/library/Smarty/libs/plugins/shared.escape_special_chars.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php
-/**
- * Smarty shared plugin
- *
- * @package Smarty
- * @subpackage PluginsShared
- */
-
-if (version_compare(PHP_VERSION, '5.2.3', '>=')) {
- /**
- * escape_special_chars common function
- * Function: smarty_function_escape_special_chars<br>
- * Purpose: used by other smarty functions to escape
- * special chars except for already escaped ones
- *
- * @author Monte Ohrt <monte at ohrt dot com>
- *
- * @param string $string text that should by escaped
- *
- * @return string
- */
- function smarty_function_escape_special_chars($string)
- {
- if (!is_array($string)) {
- $string = htmlspecialchars($string, ENT_COMPAT, Smarty::$_CHARSET, false);
- }
-
- return $string;
- }
-} else {
- /**
- * escape_special_chars common function
- * Function: smarty_function_escape_special_chars<br>
- * Purpose: used by other smarty functions to escape
- * special chars except for already escaped ones
- *
- * @author Monte Ohrt <monte at ohrt dot com>
- *
- * @param string $string text that should by escaped
- *
- * @return string
- */
- function smarty_function_escape_special_chars($string)
- {
- if (!is_array($string)) {
- $string = preg_replace('!&(#?\w+);!', '%%%SMARTY_START%%%\\1%%%SMARTY_END%%%', $string);
- $string = htmlspecialchars($string);
- $string = str_replace(array('%%%SMARTY_START%%%', '%%%SMARTY_END%%%'), array('&', ';'), $string);
- }
-
- return $string;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_assign.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_assign.php
deleted file mode 100644
index 5e3fce3cc..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_assign.php
+++ /dev/null
@@ -1,98 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Assign
- * Compiles the {assign} tag
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Assign Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Assign extends Smarty_Internal_CompileBase
-{
- /**
- * Valid scope names
- *
- * @var array
- */
- public $valid_scopes = array('local' => true, 'parent' => true, 'root' => true, 'global' => true,
- 'smarty' => true, 'tpl_root' => true);
-
- /**
- * Compiles code for the {assign} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return string compiled code
- * @throws \SmartyCompilerException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- // the following must be assigned at runtime because it will be overwritten in Smarty_Internal_Compile_Append
- $this->required_attributes = array('var', 'value');
- $this->shorttag_order = array('var', 'value');
- $this->optional_attributes = array('scope', 'bubble_up');
- $_nocache = 'null';
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- // nocache ?
- if ($compiler->tag_nocache || $compiler->nocache) {
- $_nocache = 'true';
- // create nocache var to make it know for further compiling
- if (isset($compiler->template->tpl_vars[trim($_attr['var'], "'")])) {
- $compiler->template->tpl_vars[trim($_attr['var'], "'")]->nocache = true;
- } else {
- $compiler->template->tpl_vars[trim($_attr['var'], "'")] = new Smarty_Variable(null, true);
- }
- }
- // scope setup
- $_scope = Smarty::SCOPE_LOCAL;
- if (isset($_attr['scope'])) {
- $_attr['scope'] = trim($_attr['scope'], "'\"");
- if (!isset($this->valid_scopes[$_attr['scope']])) {
- $compiler->trigger_template_error("illegal value '{$_attr['scope']}' for \"scope\" attribute", null, true);
- }
- if ($_attr['scope'] != 'local') {
- if ($_attr['scope'] == 'parent') {
- $_scope = Smarty::SCOPE_PARENT;
- } elseif ($_attr['scope'] == 'root') {
- $_scope = Smarty::SCOPE_ROOT;
- } elseif ($_attr['scope'] == 'global') {
- $_scope = Smarty::SCOPE_GLOBAL;
- } elseif ($_attr['scope'] == 'smarty') {
- $_scope = Smarty::SCOPE_SMARTY;
- } elseif ($_attr['scope'] == 'tpl_root') {
- $_scope = Smarty::SCOPE_TPL_ROOT;
- }
- $_scope += (isset($_attr['bubble_up']) && $_attr['bubble_up'] == 'false') ? 0 : Smarty::SCOPE_BUBBLE_UP;
- }
- }
- // compiled output
- if (isset($parameter['smarty_internal_index'])) {
- $output =
- "<?php \$_smarty_tpl->smarty->ext->_var->createLocalArrayVariable(\$_smarty_tpl, $_attr[var], $_nocache);\n\$_smarty_tpl->tpl_vars[$_attr[var]]->value$parameter[smarty_internal_index] = $_attr[value];";
- } else {
- // implement Smarty2's behaviour of variables assigned by reference
- if ($compiler->template->smarty instanceof SmartyBC) {
- $output =
- "<?php if (isset(\$_smarty_tpl->tpl_vars[$_attr[var]])) {\$_smarty_tpl->tpl_vars[$_attr[var]] = clone \$_smarty_tpl->tpl_vars[$_attr[var]];";
- $output .= "\n\$_smarty_tpl->tpl_vars[$_attr[var]]->value = $_attr[value]; \$_smarty_tpl->tpl_vars[$_attr[var]]->nocache = $_nocache;";
- $output .= "\n} else \$_smarty_tpl->tpl_vars[$_attr[var]] = new Smarty_Variable($_attr[value], $_nocache);";
- } else {
- $output = "<?php \$_smarty_tpl->tpl_vars[$_attr[var]] = new Smarty_Variable($_attr[value], $_nocache);";
- }
- }
- $output .= "\n\$_smarty_tpl->ext->_updateScope->updateScope(\$_smarty_tpl, $_attr[var], $_scope);";
- $output .= '?>';
-
- return $output;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_block.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_block.php
deleted file mode 100644
index ab1fc6e00..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_block.php
+++ /dev/null
@@ -1,292 +0,0 @@
-<?php
-/*
- * This file is part of Smarty.
- *
- * (c) 2015 Uwe Tews
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Smarty Internal Plugin Compile Block Class
- *
- * @author Uwe Tews <uwe.tews@googlemail.com>
- */
-class Smarty_Internal_Compile_Block extends Smarty_Internal_Compile_Shared_Inheritance
-{
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $required_attributes = array('name');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $shorttag_order = array('name');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $option_flags = array('hide', 'nocache');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('assign');
-
- /**
- * nesting level of block tags
- *
- * @var int
- */
- public static $blockTagNestingLevel = 0;
-
- /**
- * Saved compiler object
- *
- * @var Smarty_Internal_TemplateCompilerBase
- */
- public $compiler = null;
-
- /**
- * Compiles code for the {block} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return bool true
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- if (!isset($compiler->_cache['blockNesting'])) {
- $compiler->_cache['blockNesting'] = 0;
- }
- if ($compiler->_cache['blockNesting'] == 0) {
- // make sure that inheritance gets initialized in template code
- $this->registerInit($compiler);
- $this->option_flags = array('hide', 'nocache', 'append', 'prepend');
- } else {
- $this->option_flags = array('hide', 'nocache');
- }
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- $compiler->_cache['blockNesting'] ++;
- $compiler->_cache['blockName'][$compiler->_cache['blockNesting']] = $_attr['name'];
- $compiler->_cache['blockParams'][$compiler->_cache['blockNesting']][0] = 'block_' . preg_replace('![^\w]+!', '_', uniqid(rand(), true));
- $compiler->_cache['blockParams'][$compiler->_cache['blockNesting']][1] = false;
- $this->openTag($compiler, 'block', array($_attr, $compiler->nocache, $compiler->parser->current_buffer,
- $compiler->template->compiled->has_nocache_code,
- $compiler->template->caching));
- // must whole block be nocache ?
- if ($compiler->tag_nocache) {
- $i = 0;
- }
- $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
- // $compiler->suppressNocacheProcessing = true;
- if ($_attr['nocache'] === true) {
- //$compiler->trigger_template_error('nocache option not allowed', $compiler->parser->lex->taglineno);
- }
- $compiler->parser->current_buffer = new Smarty_Internal_ParseTree_Template();
- $compiler->template->compiled->has_nocache_code = false;
- $compiler->suppressNocacheProcessing = true;
- }
-
- /**
- * Compile saved child block source
- *
- * @param \Smarty_Internal_TemplateCompilerBase compiler object
- * @param string $_name optional name of child block
- *
- * @return string compiled code of child block
- */
- static function compileChildBlock(Smarty_Internal_TemplateCompilerBase $compiler, $_name = null)
- {
- if (!isset($compiler->_cache['blockNesting'])) {
- $compiler->trigger_template_error(' tag {$smarty.block.child} used outside {block} tags ',
- $compiler->parser->lex->taglineno);
- }
- $compiler->has_code = true;
- $compiler->suppressNocacheProcessing = true;
- $compiler->_cache['blockParams'][$compiler->_cache['blockNesting']][1] = true;
- $output = "<?php \n\$_smarty_tpl->ext->_inheritance->processBlock(\$_smarty_tpl, 2, {$compiler->_cache['blockName'][$compiler->_cache['blockNesting']]}, null, \$_blockParentStack);\n?>\n";
- return $output;
- }
-
- /**
- * Compile $smarty.block.parent
- *
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param string $_name optional name of child block
- *
- * @return string compiled code of child block
- */
- static function compileParentBlock(Smarty_Internal_TemplateCompilerBase $compiler, $_name = null)
- {
- if (!isset($compiler->_cache['blockNesting'])) {
- $compiler->trigger_template_error(' tag {$smarty.block.parent} used outside {block} tags ',
- $compiler->parser->lex->taglineno);
- }
- $compiler->suppressNocacheProcessing = true;
- $compiler->has_code = true;
- $output = "<?php \n\$_smarty_tpl->ext->_inheritance->processBlock(\$_smarty_tpl, 4, {$compiler->_cache['blockName'][$compiler->_cache['blockNesting']]}, null, \$_blockParentStack);\n?>\n";
- return $output;
- }
-}
-
-/**
- * Smarty Internal Plugin Compile BlockClose Class
- *
- */
-class Smarty_Internal_Compile_Blockclose extends Smarty_Internal_Compile_Shared_Inheritance
-{
- /**
- * Compiles code for the {/block} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return bool true
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- list($_attr, $_nocache, $_buffer, $_has_nocache_code, $_caching) = $this->closeTag($compiler, array('block'));
- // init block parameter
- $_block = $compiler->_cache['blockParams'][$compiler->_cache['blockNesting']];
- unset($compiler->_cache['blockParams'][$compiler->_cache['blockNesting']]);
- $_block[2] = $_block[3] = 0;
- $_name = trim($_attr['name'], "'\"");
- $_assign = isset($_attr['assign']) ? $_attr['assign'] : null;
- unset($_attr['assign'], $_attr['name']);
- foreach ($_attr as $name => $stat) {
- if ((is_bool($stat) && $stat !== false) || (!is_bool($stat) && $stat != 'false')) {
- $_block[$name] = is_string($stat) ? trim($stat, "'\"") : $stat;
- }
- }
- $_funcName = $_block[0];
- // get compiled block code
- $_functionCode = $compiler->parser->current_buffer;
- // setup buffer for template function code
- $compiler->parser->current_buffer = new Smarty_Internal_ParseTree_Template();
-
- if ($compiler->template->compiled->has_nocache_code) {
- // $compiler->parent_compiler->template->tpl_function[$_name]['call_name_caching'] = $_funcNameCaching;
- $_block[6] = $_funcNameCaching = $_funcName . '_nocache';
- $output = "<?php\n";
- $output .= "/* {block '{$_name}'} {$compiler->template->source->type}:{$compiler->template->source->name} */\n";
- $output .= "function {$_funcNameCaching} (\$_smarty_tpl, \$_blockParentStack) {\n";
- $output .= "/*/%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%*/\n";
- $output .= "\$_smarty_tpl->cached->hashes['{$compiler->template->compiled->nocache_hash}'] = true;\n";
- if (isset($_assign)) {
- $output .= "ob_start();\n";
- }
- $output .= "?>\n";
- $compiler->parser->current_buffer->append_subtree($compiler->parser,
- new Smarty_Internal_ParseTree_Tag($compiler->parser,
- $output));
- $compiler->parser->current_buffer->append_subtree($compiler->parser, $_functionCode);
- $output = "<?php\n";
- if (isset($_assign)) {
- $output .= "\$_smarty_tpl->tpl_vars[{$_assign}] = new Smarty_Variable(ob_get_clean());\n";
- }
- $output .= "/*%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%*/\n";
- $output .= "}\n";
- $output .= "/* {/block '{$_name}'} */\n\n";
- $output .= "?>\n";
- $compiler->parser->current_buffer->append_subtree($compiler->parser,
- new Smarty_Internal_ParseTree_Tag($compiler->parser,
- $output));
- $compiler->blockOrFunctionCode .= $f = $compiler->parser->current_buffer->to_smarty_php($compiler->parser);
- $compiler->parser->current_buffer = new Smarty_Internal_ParseTree_Template();
- $this->compiler = $compiler;
- $_functionCode = new Smarty_Internal_ParseTree_Tag($compiler->parser,
- preg_replace_callback("/((<\?php )?echo '\/\*%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%\*\/([\S\s]*?)\/\*\/%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%\*\/';(\?>\n)?)/",
- array($this, 'removeNocache'),
- $_functionCode->to_smarty_php($compiler->parser)));
- $this->compiler = null;
- }
- $output = "<?php\n";
- $output .= "/* {block '{$_name}'} {$compiler->template->source->type}:{$compiler->template->source->name} */\n";
- $output .= "function {$_funcName}(\$_smarty_tpl, \$_blockParentStack) {\n";
- if (isset($_assign)) {
- $output .= "ob_start();\n";
- }
- $output .= "?>\n";
- $compiler->parser->current_buffer->append_subtree($compiler->parser,
- new Smarty_Internal_ParseTree_Tag($compiler->parser,
- $output));
- $compiler->parser->current_buffer->append_subtree($compiler->parser, $_functionCode);
- $output = "<?php\n";
- if (isset($_assign)) {
- $output .= "\$_smarty_tpl->tpl_vars[{$_assign}] = new Smarty_Variable(ob_get_clean());\n";
- }
- $output .= "}\n";
- $output .= "/* {/block '{$_name}'} */\n\n";
- $output .= "?>\n";
- $compiler->parser->current_buffer->append_subtree($compiler->parser,
- new Smarty_Internal_ParseTree_Tag($compiler->parser,
- $output));
- $compiler->blockOrFunctionCode .= $compiler->parser->current_buffer->to_smarty_php($compiler->parser);
- // nocache plugins must be copied
- if (!empty($compiler->template->compiled->required_plugins['nocache'])) {
- foreach ($compiler->template->compiled->required_plugins['nocache'] as $plugin => $tmp) {
- foreach ($tmp as $type => $data) {
- $compiler->parent_compiler->template->compiled->required_plugins['compiled'][$plugin][$type] =
- $data;
- }
- }
- }
-
-
- // restore old status
- $compiler->template->compiled->has_nocache_code = $_has_nocache_code;
- $compiler->tag_nocache = $compiler->nocache;
- $compiler->nocache = $_nocache;
- $compiler->parser->current_buffer = $_buffer;
- $output = "<?php \n";
- if ($compiler->_cache['blockNesting'] == 1) {
- $output .= "\$_smarty_tpl->ext->_inheritance->processBlock(\$_smarty_tpl, 0, {$compiler->_cache['blockName'][$compiler->_cache['blockNesting']]}, " .
- var_export($_block, true) . ");\n";
- } else {
- $output .= "\$_smarty_tpl->ext->_inheritance->processBlock(\$_smarty_tpl, 0, {$compiler->_cache['blockName'][$compiler->_cache['blockNesting']]}, " .
- var_export($_block, true) . ", \$_blockParentStack);\n";
-
- }
- $output .= "?>\n";
- $compiler->_cache['blockNesting'] --;
- if ($compiler->_cache['blockNesting'] == 0) {
- unset($compiler->_cache['blockNesting']);
- }
- $compiler->has_code = true;
- $compiler->suppressNocacheProcessing = true;
- return $output;
- }
-
- /**
- * @param $match
- *
- * @return mixed
- */
- function removeNocache($match)
- {
- $code =
- preg_replace("/((<\?php )?echo '\/\*%%SmartyNocache:{$this->compiler->template->compiled->nocache_hash}%%\*\/)|(\/\*\/%%SmartyNocache:{$this->compiler->template->compiled->nocache_hash}%%\*\/';(\?>\n)?)/",
- '', $match[0]);
- $code = str_replace(array('\\\'', '\\\\\''), array('\'', '\\\''), $code);
- return $code;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_break.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_break.php
deleted file mode 100644
index cbc73d36a..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_break.php
+++ /dev/null
@@ -1,77 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Break
- * Compiles the {break} tag
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Break Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Break extends Smarty_Internal_CompileBase
-{
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('levels');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $shorttag_order = array('levels');
-
- /**
- * Compiles code for the {break} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return string compiled code
- * @throws \SmartyCompilerException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- static $_is_loopy = array('for' => true, 'foreach' => true, 'while' => true, 'section' => true);
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
-
- if ($_attr['nocache'] === true) {
- $compiler->trigger_template_error('nocache option not allowed', null, true);
- }
-
- if (isset($_attr['levels'])) {
- if (!is_numeric($_attr['levels'])) {
- $compiler->trigger_template_error('level attribute must be a numeric constant', null, true);
- }
- $_levels = $_attr['levels'];
- } else {
- $_levels = 1;
- }
- $level_count = $_levels;
- $stack_count = count($compiler->_tag_stack) - 1;
- while ($level_count > 0 && $stack_count >= 0) {
- if (isset($_is_loopy[$compiler->_tag_stack[$stack_count][0]])) {
- $level_count --;
- }
- $stack_count --;
- }
- if ($level_count != 0) {
- $compiler->trigger_template_error("cannot break {$_levels} level(s)", null, true);
- }
-
- return "<?php break {$_levels};?>";
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_continue.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_continue.php
deleted file mode 100644
index 2ee04c94e..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_continue.php
+++ /dev/null
@@ -1,77 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Continue
- * Compiles the {continue} tag
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Continue Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Continue extends Smarty_Internal_CompileBase
-{
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('levels');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $shorttag_order = array('levels');
-
- /**
- * Compiles code for the {continue} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return string compiled code
- * @throws \SmartyCompilerException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- static $_is_loopy = array('for' => true, 'foreach' => true, 'while' => true, 'section' => true);
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
-
- if ($_attr['nocache'] === true) {
- $compiler->trigger_template_error('nocache option not allowed', null, true);
- }
-
- if (isset($_attr['levels'])) {
- if (!is_numeric($_attr['levels'])) {
- $compiler->trigger_template_error('level attribute must be a numeric constant', null, true);
- }
- $_levels = $_attr['levels'];
- } else {
- $_levels = 1;
- }
- $level_count = $_levels;
- $stack_count = count($compiler->_tag_stack) - 1;
- while ($level_count > 0 && $stack_count >= 0) {
- if (isset($_is_loopy[$compiler->_tag_stack[$stack_count][0]])) {
- $level_count --;
- }
- $stack_count --;
- }
- if ($level_count != 0) {
- $compiler->trigger_template_error("cannot continue {$_levels} level(s)", null, true);
- }
-
- return "<?php continue {$_levels};?>";
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_if.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_if.php
deleted file mode 100644
index 541e21816..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_if.php
+++ /dev/null
@@ -1,252 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile If
- * Compiles the {if} {else} {elseif} {/if} tags
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile If Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_If extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for the {if} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return string compiled code
- * @throws \SmartyCompilerException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- $this->openTag($compiler, 'if', array(1, $compiler->nocache));
- // must whole block be nocache ?
- $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
-
- if (!array_key_exists("if condition", $parameter)) {
- $compiler->trigger_template_error("missing if condition", null, true);
- }
-
- if (is_array($parameter['if condition'])) {
- if ($compiler->nocache) {
- $_nocache = ',true';
- // create nocache var to make it know for further compiling
- if (is_array($parameter['if condition']['var'])) {
- $var = trim($parameter['if condition']['var']['var'], "'");
- } else {
- $var = trim($parameter['if condition']['var'], "'");
- }
- if (isset($compiler->template->tpl_vars[$var])) {
- $compiler->template->tpl_vars[$var]->nocache = true;
- } else {
- $compiler->template->tpl_vars[$var] = new Smarty_Variable(null, true);
- }
- } else {
- $_nocache = '';
- }
- if (is_array($parameter['if condition']['var'])) {
- $_output = "<?php if (!isset(\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] .
- "]) || !is_array(\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] .
- "]->value)) \$_smarty_tpl->smarty->ext->_var->createLocalArrayVariable(\$_smarty_tpl, " . $parameter['if condition']['var']['var'] .
- "$_nocache);\n";
- $_output .= "if (\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] . "]->value" .
- $parameter['if condition']['var']['smarty_internal_index'] . " = " .
- $parameter['if condition']['value'] . ") {?>";
- } else {
- $_output = "<?php if (!isset(\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] .
- "])) \$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] .
- "] = new Smarty_Variable(null{$_nocache});";
- $_output .= "if (\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] . "]->value = " .
- $parameter['if condition']['value'] . ") {?>";
- }
-
- return $_output;
- } else {
- return "<?php if ({$parameter['if condition']}) {?>";
- }
- }
-}
-
-/**
- * Smarty Internal Plugin Compile Else Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Else extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for the {else} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return string compiled code
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- list($nesting, $compiler->tag_nocache) = $this->closeTag($compiler, array('if', 'elseif'));
- $this->openTag($compiler, 'else', array($nesting, $compiler->tag_nocache));
-
- return "<?php } else { ?>";
- }
-}
-
-/**
- * Smarty Internal Plugin Compile ElseIf Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Elseif extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for the {elseif} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return string compiled code
- * @throws \SmartyCompilerException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
-
- list($nesting, $compiler->tag_nocache) = $this->closeTag($compiler, array('if', 'elseif'));
-
- if (!array_key_exists("if condition", $parameter)) {
- $compiler->trigger_template_error("missing elseif condition", null, true);
- }
-
- if (is_array($parameter['if condition'])) {
- $condition_by_assign = true;
- if ($compiler->nocache) {
- $_nocache = ',true';
- // create nocache var to make it know for further compiling
- if (is_array($parameter['if condition']['var'])) {
- $var = trim($parameter['if condition']['var']['var'], "'");
- } else {
- $var = trim($parameter['if condition']['var'], "'");
- }
- if (isset($compiler->template->tpl_vars[$var])) {
- $compiler->template->tpl_vars[$var]->nocache = true;
- } else {
- $compiler->template->tpl_vars[$var] = new Smarty_Variable(null, true);
- }
- } else {
- $_nocache = '';
- }
- } else {
- $condition_by_assign = false;
- }
-
- if (empty($compiler->prefix_code)) {
- if ($condition_by_assign) {
- $this->openTag($compiler, 'elseif', array($nesting + 1, $compiler->tag_nocache));
- if (is_array($parameter['if condition']['var'])) {
- $_output = "<?php } else { if (!isset(\$_smarty_tpl->tpl_vars[" .
- $parameter['if condition']['var']['var'] . "]) || !is_array(\$_smarty_tpl->tpl_vars[" .
- $parameter['if condition']['var']['var'] .
- "]->value)) \$_smarty_tpl->smarty->ext->_var->createLocalArrayVariable(\$_smarty_tpl, " .
- $parameter['if condition']['var']['var'] . "$_nocache);\n";
- $_output .= "if (\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] . "]->value" .
- $parameter['if condition']['var']['smarty_internal_index'] . " = " .
- $parameter['if condition']['value'] . ") {?>";
- } else {
- $_output = "<?php } else { if (!isset(\$_smarty_tpl->tpl_vars[" .
- $parameter['if condition']['var'] . "])) \$_smarty_tpl->tpl_vars[" .
- $parameter['if condition']['var'] . "] = new Smarty_Variable(null{$_nocache});";
- $_output .= "if (\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] . "]->value = " .
- $parameter['if condition']['value'] . ") {?>";
- }
-
- return $_output;
- } else {
- $this->openTag($compiler, 'elseif', array($nesting, $compiler->tag_nocache));
-
- return "<?php } elseif ({$parameter['if condition']}) {?>";
- }
- } else {
- $tmp = '';
- foreach ($compiler->prefix_code as $code) {
- $tmp = $compiler->appendCode($tmp, $code);
- }
- $compiler->prefix_code = array();
- $tmp = $compiler->appendCode("<?php } else {?>", $tmp);
- $this->openTag($compiler, 'elseif', array($nesting + 1, $compiler->tag_nocache));
- if ($condition_by_assign) {
- if (is_array($parameter['if condition']['var'])) {
- $_output = $compiler->appendCode($tmp, "<?php if (!isset(\$_smarty_tpl->tpl_vars[" .
- $parameter['if condition']['var']['var'] .
- "]) || !is_array(\$_smarty_tpl->tpl_vars[" .
- $parameter['if condition']['var']['var'] .
- "]->value)) \$_smarty_tpl->smarty->ext->_var->createLocalArrayVariable(\$_smarty_tpl, " .
- $parameter['if condition']['var']['var'] . "$_nocache);\n");
- $_output .= "if (\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] . "]->value" .
- $parameter['if condition']['var']['smarty_internal_index'] . " = " .
- $parameter['if condition']['value'] . ") {?>";
- } else {
- $_output = $compiler->appendCode($tmp, "<?php if (!isset(\$_smarty_tpl->tpl_vars[" .
- $parameter['if condition']['var'] .
- "])) \$_smarty_tpl->tpl_vars[" .
- $parameter['if condition']['var'] .
- "] = new Smarty_Variable(null{$_nocache});");
- $_output .= "if (\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] . "]->value = " .
- $parameter['if condition']['value'] . ") {?>";
- }
-
- return $_output;
- } else {
- return $compiler->appendCode($tmp, "<?php if ({$parameter['if condition']}) {?>");
- }
- }
- }
-}
-
-/**
- * Smarty Internal Plugin Compile Ifclose Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Ifclose extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for the {/if} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return string compiled code
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- // must endblock be nocache?
- if ($compiler->nocache) {
- $compiler->tag_nocache = true;
- }
- list($nesting, $compiler->nocache) = $this->closeTag($compiler, array('if', 'else', 'elseif'));
- $tmp = '';
- for ($i = 0; $i < $nesting; $i ++) {
- $tmp .= '}';
- }
-
- return "<?php {$tmp}?>";
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_block_plugin.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_private_block_plugin.php
deleted file mode 100644
index 9e2eea233..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_block_plugin.php
+++ /dev/null
@@ -1,89 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Block Plugin
- * Compiles code for the execution of block plugin
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Block Plugin Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Private_Block_Plugin extends Smarty_Internal_CompileBase
-{
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('_any');
-
- /**
- * Compiles code for the execution of block plugin
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- * @param string $tag name of block plugin
- * @param string $function PHP function name
- *
- * @return string compiled code
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter, $tag, $function)
- {
- if (!isset($tag[5]) || substr($tag, - 5) != 'close') {
- // opening tag of block plugin
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- if ($_attr['nocache'] === true) {
- $compiler->tag_nocache = true;
- }
- unset($_attr['nocache']);
- // convert attributes into parameter array string
- $_paramsArray = array();
- foreach ($_attr as $_key => $_value) {
- if (is_int($_key)) {
- $_paramsArray[] = "$_key=>$_value";
- } else {
- $_paramsArray[] = "'$_key'=>$_value";
- }
- }
- $_params = 'array(' . implode(",", $_paramsArray) . ')';
-
- $this->openTag($compiler, $tag, array($_params, $compiler->nocache));
- // maybe nocache because of nocache variables or nocache plugin
- $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
- // compile code
- $output = "<?php \$_smarty_tpl->smarty->_cache['tag_stack'][] = array('{$tag}', {$_params}); \$_block_repeat=true; echo {$function}({$_params}, null, \$_smarty_tpl, \$_block_repeat);while (\$_block_repeat) { ob_start();?>";
- } else {
- // must endblock be nocache?
- if ($compiler->nocache) {
- $compiler->tag_nocache = true;
- }
- // closing tag of block plugin, restore nocache
- list($_params, $compiler->nocache) = $this->closeTag($compiler, substr($tag, 0, - 5));
- // This tag does create output
- $compiler->has_output = true;
- // compile code
- if (!isset($parameter['modifier_list'])) {
- $mod_pre = $mod_post = '';
- } else {
- $mod_pre = ' ob_start(); ';
- $mod_post = 'echo ' .
- $compiler->compileTag('private_modifier', array(), array('modifierlist' => $parameter['modifier_list'],
- 'value' => 'ob_get_clean()')) . ';';
- }
- $output = "<?php \$_block_content = ob_get_clean(); \$_block_repeat=false;" . $mod_pre .
- " echo {$function}({$_params}, \$_block_content, \$_smarty_tpl, \$_block_repeat); " . $mod_post .
- " } array_pop(\$_smarty_tpl->smarty->_cache['tag_stack']);?>";
- }
-
- return $output . "\n";
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_object_block_function.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_private_object_block_function.php
deleted file mode 100644
index d2bc5d60c..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_object_block_function.php
+++ /dev/null
@@ -1,91 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Object Block Function
- * Compiles code for registered objects as block function
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Object Block Function Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Private_Object_Block_Function extends Smarty_Internal_CompileBase
-{
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('_any');
-
- /**
- * Compiles code for the execution of block plugin
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- * @param string $tag name of block object
- * @param string $method name of method to call
- *
- * @return string compiled code
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter, $tag, $method)
- {
- if (!isset($tag[5]) || substr($tag, - 5) != 'close') {
- // opening tag of block plugin
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- if ($_attr['nocache'] === true) {
- $compiler->tag_nocache = true;
- }
- unset($_attr['nocache']);
- // convert attributes into parameter array string
- $_paramsArray = array();
- foreach ($_attr as $_key => $_value) {
- if (is_int($_key)) {
- $_paramsArray[] = "$_key=>$_value";
- } else {
- $_paramsArray[] = "'$_key'=>$_value";
- }
- }
- $_params = 'array(' . implode(",", $_paramsArray) . ')';
-
- $this->openTag($compiler, $tag . '->' . $method, array($_params, $compiler->nocache));
- // maybe nocache because of nocache variables or nocache plugin
- $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
- // compile code
- $output =
- "<?php \$_smarty_tpl->smarty->_cache['tag_stack'][] = array('{$tag}->{$method}', {$_params}); \$_block_repeat=true; echo \$_smarty_tpl->smarty->registered_objects['{$tag}'][0]->{$method}({$_params}, null, \$_smarty_tpl, \$_block_repeat);while (\$_block_repeat) { ob_start();?>";
- } else {
- $base_tag = substr($tag, 0, - 5);
- // must endblock be nocache?
- if ($compiler->nocache) {
- $compiler->tag_nocache = true;
- }
- // closing tag of block plugin, restore nocache
- list($_params, $compiler->nocache) = $this->closeTag($compiler, $base_tag . '->' . $method);
- // This tag does create output
- $compiler->has_output = true;
- // compile code
- if (!isset($parameter['modifier_list'])) {
- $mod_pre = $mod_post = '';
- } else {
- $mod_pre = ' ob_start(); ';
- $mod_post = 'echo ' . $compiler->compileTag('private_modifier', array(),
- array('modifierlist' => $parameter['modifier_list'],
- 'value' => 'ob_get_clean()')) . ';';
- }
- $output = "<?php \$_block_content = ob_get_clean(); \$_block_repeat=false;" . $mod_pre .
- " echo \$_smarty_tpl->smarty->registered_objects['{$base_tag}'][0]->{$method}({$_params}, \$_block_content, \$_smarty_tpl, \$_block_repeat); " .
- $mod_post . " } array_pop(\$_smarty_tpl->smarty->_cache['tag_stack']);?>";
- }
-
- return $output . "\n";
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_registered_block.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_private_registered_block.php
deleted file mode 100644
index 78d95f720..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_registered_block.php
+++ /dev/null
@@ -1,119 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Registered Block
- * Compiles code for the execution of a registered block function
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Registered Block Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Private_Registered_Block extends Smarty_Internal_CompileBase
-{
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('_any');
-
- /**
- * Compiles code for the execution of a block function
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- * @param string $tag name of block function
- *
- * @return string compiled code
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter, $tag)
- {
- if (!isset($tag[5]) || substr($tag, - 5) != 'close') {
- // opening tag of block plugin
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- if ($_attr['nocache']) {
- $compiler->tag_nocache = true;
- }
- unset($_attr['nocache']);
- if (isset($compiler->smarty->registered_plugins[Smarty::PLUGIN_BLOCK][$tag])) {
- $tag_info = $compiler->smarty->registered_plugins[Smarty::PLUGIN_BLOCK][$tag];
- } else {
- $tag_info = $compiler->default_handler_plugins[Smarty::PLUGIN_BLOCK][$tag];
- }
- // convert attributes into parameter array string
- $_paramsArray = array();
- foreach ($_attr as $_key => $_value) {
- if (is_int($_key)) {
- $_paramsArray[] = "$_key=>$_value";
- } elseif ($compiler->template->caching && in_array($_key, $tag_info[2])) {
- $_value = str_replace("'", "^#^", $_value);
- $_paramsArray[] = "'$_key'=>^#^.var_export($_value,true).^#^";
- } else {
- $_paramsArray[] = "'$_key'=>$_value";
- }
- }
- $_params = 'array(' . implode(",", $_paramsArray) . ')';
-
- $this->openTag($compiler, $tag, array($_params, $compiler->nocache));
- // maybe nocache because of nocache variables or nocache plugin
- $compiler->nocache = !$tag_info[1] | $compiler->nocache | $compiler->tag_nocache;
- $function = $tag_info[0];
- // compile code
- if (!is_array($function)) {
- $output = "<?php \$_smarty_tpl->smarty->_cache['tag_stack'][] = array('{$tag}', {$_params}); \$_block_repeat=true; echo {$function}({$_params}, null, \$_smarty_tpl, \$_block_repeat);while (\$_block_repeat) { ob_start();?>";
- } elseif (is_object($function[0])) {
- $output = "<?php \$_smarty_tpl->smarty->_cache['tag_stack'][] = array('{$tag}', {$_params}); \$_block_repeat=true; echo \$_smarty_tpl->smarty->registered_plugins['block']['{$tag}'][0][0]->{$function[1]}({$_params}, null, \$_smarty_tpl, \$_block_repeat);while (\$_block_repeat) { ob_start();?>";
- } else {
- $output = "<?php \$_smarty_tpl->smarty->_cache['tag_stack'][] = array('{$tag}', {$_params}); \$_block_repeat=true; echo {$function[0]}::{$function[1]}({$_params}, null, \$_smarty_tpl, \$_block_repeat);while (\$_block_repeat) { ob_start();?>";
- }
- } else {
- // must endblock be nocache?
- if ($compiler->nocache) {
- $compiler->tag_nocache = true;
- }
- $base_tag = substr($tag, 0, - 5);
- // closing tag of block plugin, restore nocache
- list($_params, $compiler->nocache) = $this->closeTag($compiler, $base_tag);
- // This tag does create output
- $compiler->has_output = true;
- if (isset($compiler->smarty->registered_plugins[Smarty::PLUGIN_BLOCK][$base_tag])) {
- $function = $compiler->smarty->registered_plugins[Smarty::PLUGIN_BLOCK][$base_tag][0];
- } else {
- $function = $compiler->default_handler_plugins[Smarty::PLUGIN_BLOCK][$base_tag][0];
- }
- // compile code
- if (!isset($parameter['modifier_list'])) {
- $mod_pre = $mod_post = '';
- } else {
- $mod_pre = ' ob_start(); ';
- $mod_post = 'echo ' .
- $compiler->compileTag('private_modifier', array(), array('modifierlist' => $parameter['modifier_list'],
- 'value' => 'ob_get_clean()')) . ';';
- }
- if (!is_array($function)) {
- $output = "<?php \$_block_content = ob_get_clean(); \$_block_repeat=false;" . $mod_pre .
- " echo {$function}({$_params}, \$_block_content, \$_smarty_tpl, \$_block_repeat);" . $mod_post .
- " } array_pop(\$_smarty_tpl->smarty->_cache['tag_stack']);?>";
- } elseif (is_object($function[0])) {
- $output = "<?php \$_block_content = ob_get_clean(); \$_block_repeat=false;" . $mod_pre .
- " echo \$_smarty_tpl->smarty->registered_plugins['block']['{$base_tag}'][0][0]->{$function[1]}({$_params}, \$_block_content, \$_smarty_tpl, \$_block_repeat); " .
- $mod_post . "} array_pop(\$_smarty_tpl->smarty->_cache['tag_stack']);?>";
- } else {
- $output = "<?php \$_block_content = ob_get_clean(); \$_block_repeat=false;" . $mod_pre .
- " echo {$function[0]}::{$function[1]}({$_params}, \$_block_content, \$_smarty_tpl, \$_block_repeat); " .
- $mod_post . "} array_pop(\$_smarty_tpl->smarty->_cache['tag_stack']);?>";
- }
- }
-
- return $output . "\n";
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_while.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_while.php
deleted file mode 100644
index bd31f6671..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_while.php
+++ /dev/null
@@ -1,108 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile While
- * Compiles the {while} tag
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile While Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_While extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for the {while} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return string compiled code
- * @throws \SmartyCompilerException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- $compiler->loopNesting++;
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- $this->openTag($compiler, 'while', $compiler->nocache);
-
- if (!array_key_exists("if condition", $parameter)) {
- $compiler->trigger_template_error("missing while condition", null, true);
- }
-
- // maybe nocache because of nocache variables
- $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
- $_output = "<?php\n";
- if (is_array($parameter['if condition'])) {
- if ($compiler->nocache) {
- $_nocache = ',true';
- // create nocache var to make it know for further compiling
- if (is_array($parameter['if condition']['var'])) {
- $var = trim($parameter['if condition']['var']['var'], "'");
- } else {
- $var = trim($parameter['if condition']['var'], "'");
- }
- if (isset($compiler->template->tpl_vars[$var])) {
- $compiler->template->tpl_vars[$var]->nocache = true;
- } else {
- $compiler->template->tpl_vars[$var] = new Smarty_Variable(null, true);
- }
- } else {
- $_nocache = '';
- }
- if (is_array($parameter['if condition']['var'])) {
- $_output .= "if (!isset(\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] .
- "]) || !is_array(\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] .
- "]->value)) \$_smarty_tpl->smarty->ext->_var->createLocalArrayVariable(\$_smarty_tpl, " . $parameter['if condition']['var']['var'] .
- "$_nocache);\n";
- $_output .= "while (\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] . "]->value" .
- $parameter['if condition']['var']['smarty_internal_index'] . " = " .
- $parameter['if condition']['value'] . ") {?>";
- } else {
- $_output .= "if (!isset(\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] .
- "])) \$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] .
- "] = new Smarty_Variable(null{$_nocache});";
- $_output .= "while (\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] . "]->value = " .
- $parameter['if condition']['value'] . ") {?>";
- }
- } else {
- $_output .= "while ({$parameter['if condition']}) {?>";
- }
- return $_output;
- }
-}
-
-/**
- * Smarty Internal Plugin Compile Whileclose Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Whileclose extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for the {/while} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- *
- * @return string compiled code
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
- {
- $compiler->loopNesting--;
- // must endblock be nocache?
- if ($compiler->nocache) {
- $compiler->tag_nocache = true;
- }
- $compiler->nocache = $this->closeTag($compiler, array('while'));
- return "<?php }?>\n";
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_extension_handler.php b/library/Smarty/libs/sysplugins/smarty_internal_extension_handler.php
deleted file mode 100644
index 68012d86f..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_extension_handler.php
+++ /dev/null
@@ -1,157 +0,0 @@
-<?php
-
-/**
- * Smarty Extension handler
- *
- * Load extensions dynamically
- *
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- *
- * @property Smarty_Internal_Runtime_Inheritance $_inheritance
- * @property Smarty_Internal_Runtime_SubTemplate $_subTemplate
- * @property Smarty_Internal_Runtime_TplFunction $_tplFunction
- * @property Smarty_Internal_Runtime_Var $_var
- * @property Smarty_Internal_Runtime_Config $_config
- * @property Smarty_Internal_Runtime_Foreach $_foreach
- * @property Smarty_Internal_Runtime_Hhvm $_hhvm
- * @property Smarty_Internal_Runtime_WriteFile $_writeFile
- * @property Smarty_Internal_Runtime_ValidateCompiled $_validateCompiled
- * @property Smarty_Internal_Runtime_CodeFrame $_codeFrame
- * @property Smarty_Internal_Runtime_FilterHandler $_filterHandler
- * @property Smarty_Internal_Runtime_GetIncludePath $_getIncludePath
- * @property Smarty_Internal_Runtime_UpdateScope $_updateScope
- * @property Smarty_Internal_Runtime_IsCached $_isCached
- * @property Smarty_Internal_Runtime_CacheModify $_cacheModify
- * @property Smarty_Internal_Runtime_UpdateCache $_updateCache
- * @property Smarty_Internal_Method_GetTemplateVars $getTemplateVars
- * @property Smarty_Internal_Method_Append $append
- * @property Smarty_Internal_Method_AppendByRef $appendByRef
- * @property Smarty_Internal_Method_AssignGlobal $assignGlobal
- * @property Smarty_Internal_Method_AssignByRef $assignByRef
- * @property Smarty_Internal_Method_LoadFilter $loadFilter
- * @property Smarty_Internal_Method_LoadPlugin $loadPlugin
- * @property Smarty_Internal_Method_RegisterFilter $registerFilter
- * @property Smarty_Internal_Method_RegisterObject $registerObject
- * @property Smarty_Internal_Method_RegisterPlugin $registerPlugin
- */
-class Smarty_Internal_Extension_Handler
-{
-
- public $objType = null;
-
- /**
- * Cache for property information from generic getter/setter
- * Preloaded with names which should not use with generic getter/setter
- *
- * @var array
- */
- private $_property_info = array('AutoloadFilters' => 0, 'DefaultModifiers' => 0, 'ConfigVars' => 0,
- 'DebugTemplate' => 0, 'RegisteredObject' => 0, 'StreamVariable' => 0,
- 'TemplateVars' => 0,);#
-
- private $resolvedProperties = array();
-
- /**
- * Call external Method
- *
- * @param \Smarty_Internal_Data $data
- * @param string $name external method names
- * @param array $args argument array
- *
- * @return mixed
- * @throws SmartyException
- */
- public function _callExternalMethod(Smarty_Internal_Data $data, $name, $args)
- {
- /* @var Smarty $data ->smarty */
- $smarty = isset($data->smarty) ? $data->smarty : $data;
- if (!isset($smarty->ext->$name)) {
- $class = 'Smarty_Internal_Method_' . ucfirst($name);
- if (preg_match('/^(set|get)([A-Z].*)$/', $name, $match)) {
- if (!isset($this->_property_info[$prop = $match[2]])) {
- // convert camel case to underscored name
- $this->resolvedProperties[$prop] = $pn = strtolower(join('_',
- preg_split('/([A-Z][^A-Z]*)/', $prop, - 1,
- PREG_SPLIT_NO_EMPTY |
- PREG_SPLIT_DELIM_CAPTURE)));
- $this->_property_info[$prop] = property_exists($data, $pn) ? 1 :
- ($data->_objType == 2 && property_exists($smarty, $pn) ? 2 : 0);
- }
- if ($this->_property_info[$prop]) {
- $pn = $this->resolvedProperties[$prop];
- if ($match[1] == 'get') {
- return $this->_property_info[$prop] == 1 ? $data->$pn : $data->smarty->$pn;
- } else {
- return $this->_property_info[$prop] == 1 ? $data->$pn = $args[0] :
- $data->smarty->$pn = $args[0];
- }
- } elseif (!class_exists($class)) {
- throw new SmartyException("property '$pn' does not exist.");
- }
- }
- if (class_exists($class)) {
- $callback = array($smarty->ext->$name = new $class(), $name);
- }
- } else {
- $callback = array($smarty->ext->$name, $name);
- }
- array_unshift($args, $data);
- if (isset($callback) && $callback[0]->objMap | $data->_objType) {
- return call_user_func_array($callback, $args);
- }
- return call_user_func_array(array(new Smarty_Internal_Undefined(), $name), $args);
- }
-
- /**
- * set extension property
- *
- * @param string $property_name property name
- * @param mixed $value value
- *
- * @throws SmartyException
- */
- public function __set($property_name, $value)
- {
- $this->$property_name = $value;
- }
-
- /**
- * get extension object
- *
- * @param string $property_name property name
- *
- * @return mixed|Smarty_Template_Cached
- * @throws SmartyException
- */
- public function __get($property_name)
- {
- // object properties of runtime template extensions will start with '_'
- if ($property_name[0] == '_') {
- $class = 'Smarty_Internal_Runtime_' . ucfirst(substr($property_name, 1));
- } else {
- $class = 'Smarty_Internal_Method_' . ucfirst($property_name);
- }
- if (class_exists($class)) {
- return $this->$property_name = new $class();
- }
- return $this;
- }
-
- /**
- * Call error handler for undefined method
- *
- * @param string $name unknown method-name
- * @param array $args argument array
- *
- * @return mixed
- * @throws SmartyException
- */
- public function __call($name, $args)
- {
- return call_user_func_array(array(new Smarty_Internal_Undefined(), $name), $args);
- }
-
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_runtime_foreach.php b/library/Smarty/libs/sysplugins/smarty_internal_runtime_foreach.php
deleted file mode 100644
index 689636adb..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_runtime_foreach.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-
-/**
- * Foreach Runtime Methods count
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- *
- **/
-class Smarty_Internal_Runtime_Foreach
-{
- /**
- * [util function] counts an array, arrayAccess/traversable or PDOStatement object
- *
- * @param mixed $value
- *
- * @return int the count for arrays and objects that implement countable, 1 for other objects that don't, and 0
- * for empty elements
- */
- public function count($value)
- {
- if (is_array($value) === true || $value instanceof Countable) {
- return count($value);
- } elseif ($value instanceof IteratorAggregate) {
- // Note: getIterator() returns a Traversable, not an Iterator
- // thus rewind() and valid() methods may not be present
- return iterator_count($value->getIterator());
- } elseif ($value instanceof Iterator) {
- if ($value instanceof Generator) {
- return 1;
- }
- return iterator_count($value);
- } elseif ($value instanceof PDOStatement) {
- return $value->rowCount();
- } elseif ($value instanceof Traversable) {
- return iterator_count($value);
- } elseif ($value instanceof ArrayAccess) {
- if ($value->offsetExists(0)) {
- return 1;
- }
- } elseif (is_object($value)) {
- return count($value);
- }
- return 0;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_runtime_hhvm.php b/library/Smarty/libs/sysplugins/smarty_internal_runtime_hhvm.php
deleted file mode 100644
index 117cd8166..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_runtime_hhvm.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-/**
- * Runtime Extension Hhvm
- *
- * include patch for modified compiled or cached templates
- * HHVM does not check if file was modified when including same file multiple times
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Runtime_Hhvm
-{
- /**
- * @param \Smarty_Internal_Template $_template
- * @param string $file file name
- *
- * @return mixed
- */
- static function includeHhvm(Smarty_Internal_Template $_template, $file)
- {
- $_smarty_tpl = $_template;
- $tmp_file = $file . preg_replace('![^\w]+!', '_', uniqid(rand(), true)) . '.php';
- file_put_contents($tmp_file, file_get_contents($file));
- $result = @include $tmp_file;
- @unlink($tmp_file);
- return $result;
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_runtime_inheritance.php b/library/Smarty/libs/sysplugins/smarty_internal_runtime_inheritance.php
deleted file mode 100644
index 08a560606..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_runtime_inheritance.php
+++ /dev/null
@@ -1,233 +0,0 @@
-<?php
-
-/**
- * Inheritance Runtime Methods processBlock, endChild, init
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- *
- **/
-class Smarty_Internal_Runtime_Inheritance
-{
-
- /**
- * State machine
- * - 0 idle next extends will create a new inheritance tree
- * - 1 processing child template
- * - 2 wait for next inheritance template
- * - 3 assume parent template, if child will loaded goto state 1
- * a call to a sub template resets the state to 0
- *
- * @var int
- */
- public $state = 0;
-
- /**
- * Array of block parameter of known {block} tags
- *
- * @var array
- */
- public $blockParameter = array();
-
- /**
- * inheritance template nesting level
- *
- * @var int
- */
- public $inheritanceLevel = 0;
-
- /**
- * inheritance template index
- *
- * @var int
- */
- public $tplIndex = - 1;
-
- /**
- * Array of compiled template file path
- * - key template index
- * only used when caching is enabled
- *
- * @var []string
- */
- public $compiledFilePath = array();
-
- /**
- * Current {block} nesting level
- *
- * @var int
- */
- public $blockNesting = 0;
-
- /**
- * Initialize inheritance
- *
- * @param \Smarty_Internal_Template $tpl template object of caller
- * @param bool $initChild if true init for child template
- * @param array $blockNames outer level block name
- *
- */
- public function init(Smarty_Internal_Template $tpl, $initChild, $blockNames = array())
- {
- // if template was from an inner block or template is a parent template create new inheritance root
- if ($initChild && ($this->blockNesting || $this->state == 3)) {
- $tpl->ext->_inheritance = new Smarty_Internal_Runtime_Inheritance();
- $tpl->ext->_inheritance->init($tpl, $initChild, $blockNames);
- return;
- }
- // start of child sub template(s)
- if ($initChild) {
- $this->state = 1;
- if (!$this->inheritanceLevel) {
- //grab any output of child templates
- ob_start();
- }
- $this->inheritanceLevel ++;
- }
- // in parent state {include} will not increment template index
- if ($this->state != 3) {
- $this->tplIndex ++;
- }
- // if state was waiting for parent change state to parent
- if ($this->state == 2) {
- $this->state = 3;
- }
- }
-
- /**
- * End of child template(s)
- * - if outer level is reached flush output buffer and switch to wait for parent template state
- *
- * @param \Smarty_Internal_Template $tpl template object of caller
- */
- public function endChild(Smarty_Internal_Template $tpl)
- {
- $this->inheritanceLevel --;
- if (!$this->inheritanceLevel) {
- ob_end_clean();
- $this->state = 2;
- }
- }
-
- /**
- * Process inheritance {block} tag
- *
- * $type 0 = {block}:
- * - search in inheritance template hierarchy for child blocks
- * if found call it, otherwise call current block
- * - ignored for outer level blocks in child templates
- *
- * $type 1 = {block}:
- * - nested {block}
- * - search in inheritance template hierarchy for child blocks
- * if found call it, otherwise call current block
- *
- * $type 2 = {$smarty.block.child}:
- * - search in inheritance template hierarchy for child blocks
- * if found call it, otherwise ignore
- *
- * $type 3 = {block append} {block prepend}:
- * - call parent block
- *
- * $type 4 = {$smarty.block.parent}:
- * - call parent block
- *
- * @param \Smarty_Internal_Template $tpl template object of caller
- * @param int $type call type see above
- * @param string $name block name
- * @param array $block block parameter
- * @param array $callStack call stack with block parameters
- *
- * @throws \SmartyException
- */
- public function processBlock(Smarty_Internal_Template $tpl, $type = 0, $name, $block, $callStack = array())
- {
- if (!isset($this->blockParameter[ $name ])) {
- $this->blockParameter[ $name ] = array();
- }
- if ($this->state == 1) {
- $block[ 2 ] = count($this->blockParameter[ $name ]);
- $block[ 3 ] = $this->tplIndex;
- $this->blockParameter[ $name ][] = $block;
- return;
- }
- if ($type == 3) {
- if (!empty($callStack)) {
- $block = array_shift($callStack);
- } else {
- return;
- }
- } elseif ($type == 4) {
- if (!empty($callStack)) {
- array_shift($callStack);
- if (empty($callStack)) {
- throw new SmartyException("inheritance: tag {\$smarty.block.parent} used in parent template block '{$name}'");
- }
- $block = array_shift($callStack);
- } else {
- return;
- }
- } else {
- $index = 0;
- $blockParameter = &$this->blockParameter[ $name ];
- if ($type == 0) {
- $index = $block[ 2 ] = count($blockParameter);
- $block[ 3 ] = $this->tplIndex;
- $callStack = array(&$block);
- } elseif ($type == 1) {
- $block[ 3 ] = $callStack[ 0 ][ 3 ];
- for ($i = 0; $i < count($blockParameter); $i ++) {
- if ($blockParameter[ $i ][ 3 ] <= $block[ 3 ]) {
- $index = $blockParameter[ $i ][ 2 ];
- }
- }
- $block[ 2 ] = $index;
- $callStack = array(&$block);
- } elseif ($type == 2) {
- $index = $callStack[ 0 ][ 2 ];
- if ($index == 0) {
- return;
- }
- $callStack = $block = array(1 => false);
- }
- $index --;
- // find lowest level child block
- while ($index >= 0 && ($type || !$block[ 1 ])) {
- $block = &$blockParameter[ $index ];
- array_unshift($callStack, $block);
- if ($block[ 1 ]) {
- break;
- }
- $index --;
- }
- if (isset($block[ 'hide' ]) && $index <= 0) {
- return;
- }
- }
- $this->blockNesting ++;
- // {block append} ?
- if (isset($block[ 'append' ])) {
- $appendStack = $callStack;
- if ($type == 0) {
- array_shift($appendStack);
- }
- $this->processBlock($tpl, 3, $name, null, $appendStack);
- }
- // call block of current stack level
- if (isset($block[6])) {
- $block[6]($tpl, $callStack);
- } else {
- $block[0]($tpl, $callStack);
- }
- // {block prepend} ?
- if (isset($block[ 'prepend' ])) {
- $prependStack = $callStack;
- if ($type == 0) {
- array_shift($prependStack);
- }
- $this->processBlock($tpl, 3, $name, null, $prependStack);
- }
- $this->blockNesting --;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_runtime_subtemplate.php b/library/Smarty/libs/sysplugins/smarty_internal_runtime_subtemplate.php
deleted file mode 100644
index 2c7623f93..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_runtime_subtemplate.php
+++ /dev/null
@@ -1,203 +0,0 @@
-<?php
-
-/**
- * Sub Template Runtime Methods render, setupSubTemplate
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- *
- **/
-class Smarty_Internal_Runtime_SubTemplate
-{
-
- /**
- * Subtemplate template object cache
- *
- * @var Smarty_Internal_Template[]
- */
- public $tplObjects = array();
-
- /**
- * Subtemplate call count
- *
- * @var int[]
- */
- public $subTplInfo = array();
-
- /**
- * Runtime function to render subtemplate
- *
- * @param \Smarty_Internal_Template $parent
- * @param string $template template name
- * @param mixed $cache_id cache id
- * @param mixed $compile_id compile id
- * @param integer $caching cache mode
- * @param integer $cache_lifetime life time of cache data
- * @param array $data passed parameter template variables
- * @param int $scope scope in which {include} should execute
- * @param bool $forceTplCache cache template object
- * @param string $uid file dependency uid
- * @param string $content_func function name
- *
- */
- public function render(Smarty_Internal_Template $parent, $template, $cache_id, $compile_id, $caching,
- $cache_lifetime, $data, $scope, $forceTplCache, $uid = null, $content_func = null)
- {
- // if there are cached template objects calculate $templateID
- $_templateId =
- !empty($this->tplObjects) ? $parent->smarty->_getTemplateId($template, $cache_id, $compile_id, $caching) :
- null;
- // already in template cache?
- /* @var Smarty_Internal_Template $tpl */
- if (isset($_templateId) && isset($this->tplObjects[$_templateId])) {
- // clone cached template object because of possible recursive call
- $tpl = clone $this->tplObjects[$_templateId];
- $tpl->parent = $parent;
- // if $caching mode changed the compiled resource is invalid
- if ((bool) $tpl->caching !== (bool) $caching) {
- unset($tpl->compiled);
- }
- // get variables from calling scope
- $tpl->tpl_vars = $parent->tpl_vars;
- $tpl->config_vars = $parent->config_vars;
- // get template functions
- $tpl->tpl_function = $parent->tpl_function;
- // copy inheritance object?
- if (isset($parent->ext->_inheritance)) {
- $tpl->ext->_inheritance = $parent->ext->_inheritance;
- } else {
- unset($tpl->ext->_inheritance);
- }
- } else {
- $tpl = clone $parent;
- $tpl->parent = $parent;
- if (!isset($tpl->templateId) || $tpl->templateId !== $_templateId) {
- $tpl->templateId = $_templateId;
- $tpl->template_resource = $template;
- $tpl->cache_id = $cache_id;
- $tpl->compile_id = $compile_id;
- if (isset($uid)) {
- // for inline templates we can get all resource information from file dependency
- if (isset($tpl->compiled->file_dependency[$uid])) {
- list($filepath, $timestamp, $resource) = $tpl->compiled->file_dependency[$uid];
- $tpl->source =
- new Smarty_Template_Source(isset($tpl->smarty->_cache['resource_handlers'][$resource]) ?
- $tpl->smarty->_cache['resource_handlers'][$resource] :
- Smarty_Resource::load($tpl->smarty, $resource), $tpl->smarty,
- $filepath, $resource, $filepath);
- $tpl->source->filepath = $filepath;
- $tpl->source->timestamp = $timestamp;
- $tpl->source->exists = true;
- $tpl->source->uid = $uid;
- } else {
- $tpl->source = null;
- }
- } else {
- $tpl->source = null;
- }
- if (!isset($tpl->source)) {
- $tpl->source = Smarty_Template_Source::load($tpl);
- unset($tpl->compiled);
- }
- unset($tpl->cached);
- }
- }
- $tpl->caching = $caching;
- $tpl->cache_lifetime = $cache_lifetime;
- if ($caching == 9999) {
- $tpl->cached = $parent->cached;
- }
- // set template scope
- $tpl->scope = $scope;
- $scopePtr = false;
- if ($scope & ~Smarty::SCOPE_BUBBLE_UP) {
- if ($scope == Smarty::SCOPE_GLOBAL) {
- $tpl->tpl_vars = Smarty::$global_tpl_vars;
- $tpl->config_vars = $tpl->smarty->config_vars;
- $scopePtr = true;
- } else {
- if ($scope == Smarty::SCOPE_PARENT) {
- $scopePtr = $parent;
- } elseif ($scope == Smarty::SCOPE_SMARTY) {
- $scopePtr = $tpl->smarty;
- } else {
- $scopePtr = $tpl;
- while (isset($scopePtr->parent)) {
- if ($scopePtr->parent->_objType != 2 && $scope & Smarty::SCOPE_TPL_ROOT) {
- break;
- }
- $scopePtr = $scopePtr->parent;
- }
- }
- $tpl->tpl_vars = $scopePtr->tpl_vars;
- $tpl->config_vars = $scopePtr->config_vars;
- }
- }
-
- if (!isset($this->tplObjects[$tpl->_getTemplateId()]) && !$tpl->source->handler->recompiled) {
- // if template is called multiple times set flag to to cache template objects
- $forceTplCache = $forceTplCache ||
- (isset($this->subTplInfo[$tpl->template_resource]) && $this->subTplInfo[$tpl->template_resource] > 1);
- // check if template object should be cached
- if ($tpl->parent->_objType == 2 && isset($this->tplObjects[$tpl->parent->templateId]) ||
- ($forceTplCache && $tpl->smarty->resource_cache_mode & Smarty::RESOURCE_CACHE_AUTOMATIC) ||
- ($tpl->smarty->resource_cache_mode & Smarty::RESOURCE_CACHE_ON)
- ) {
- $this->tplObjects[$tpl->_getTemplateId()] = $tpl;
- }
- }
-
- if (!empty($data)) {
- // set up variable values
- foreach ($data as $_key => $_val) {
- $tpl->tpl_vars[$_key] = new Smarty_Variable($_val);
- }
- }
- if (isset($uid)) {
- if ($parent->smarty->debugging) {
- $parent->smarty->_debug->start_template($tpl);
- $parent->smarty->_debug->start_render($tpl);
- }
- $tpl->compiled->getRenderedTemplateCode($tpl, $content_func);
- if ($parent->smarty->debugging) {
- $parent->smarty->_debug->end_template($tpl);
- $parent->smarty->_debug->end_render($tpl);
- }
- if ($tpl->caching == 9999 && $tpl->compiled->has_nocache_code) {
- $parent->cached->hashes[$tpl->compiled->nocache_hash] = true;
- }
- } else {
- if (isset($tpl->compiled)) {
- $tpl->compiled->render($tpl);
- } else {
- $tpl->render();
- }
- }
- if ($scopePtr) {
- if ($scope == Smarty::SCOPE_GLOBAL) {
- Smarty::$global_tpl_vars = $tpl->tpl_vars;
- $tpl->smarty->config_vars = $tpl->config_vars;
- } else {
- $scopePtr->tpl_vars = $tpl->tpl_vars;
- $scopePtr->config_vars = $tpl->config_vars;
- }
- }
- }
-
- /**
- * Get called subtemplates from compiled template and save call count
- *
- * @param \Smarty_Internal_Template $tpl
- */
- public function registerSubTemplates(Smarty_Internal_Template $tpl)
- {
- foreach ($tpl->compiled->includes as $name => $count) {
- if (isset($this->subTplInfo[$name])) {
- $this->subTplInfo[$name] += $count;
- } else {
- $this->subTplInfo[$name] = $count;
- }
- }
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_runtime_tplfunction.php b/library/Smarty/libs/sysplugins/smarty_internal_runtime_tplfunction.php
deleted file mode 100644
index 634ed5dc6..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_runtime_tplfunction.php
+++ /dev/null
@@ -1,97 +0,0 @@
-<?php
-
-/**
- * Tplfunc Runtime Methods callTemplateFunction
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- *
- **/
-class Smarty_Internal_Runtime_TplFunction
-{
- /**
- * Call template function
- *
- * @param \Smarty_Internal_Template $tpl template object
- * @param string $name template function name
- * @param array $params parameter array
- * @param bool $nocache true if called nocache
- *
- * @throws \SmartyException
- */
- public function callTemplateFunction(Smarty_Internal_Template $tpl, $name, $params, $nocache)
- {
- if (isset($tpl->tpl_function[$name])) {
- if (!$tpl->caching || ($tpl->caching && $nocache)) {
- $function = $tpl->tpl_function[$name]['call_name'];
- } else {
- if (isset($tpl->tpl_function[$name]['call_name_caching'])) {
- $function = $tpl->tpl_function[$name]['call_name_caching'];
- } else {
- $function = $tpl->tpl_function[$name]['call_name'];
- }
- }
- if (function_exists($function)) {
- $function ($tpl, $params);
- return;
- }
- // try to load template function dynamically
- if ($this->addTplFuncToCache($tpl, $name, $function)) {
- $function ($tpl, $params);
- return;
- }
- }
- throw new SmartyException("Unable to find template function '{$name}'");
- }
-
- /**
- *
- * Add template function to cache file for nocache calls
- *
- * @param Smarty_Internal_Template $tpl
- * @param string $_name template function name
- * @param string $_function PHP function name
- *
- * @return bool
- */
- public function addTplFuncToCache(Smarty_Internal_Template $tpl, $_name, $_function)
- {
- $funcParam = $tpl->tpl_function[$_name];
- if (is_file($funcParam['compiled_filepath'])) {
- // read compiled file
- $code = file_get_contents($funcParam['compiled_filepath']);
- // grab template function
- if (preg_match("/\/\* {$_function} \*\/([\S\s]*?)\/\*\/ {$_function} \*\//", $code, $match)) {
- // grab source info from file dependency
- preg_match("/\s*'{$funcParam['uid']}'([\S\s]*?)\),/", $code, $match1);
- unset($code);
- // make PHP function known
- eval($match[0]);
- if (function_exists($_function)) {
- // search cache file template
- $tplPtr = $tpl;
- while (!isset($tplPtr->cached) && isset($tplPtr->parent)) {
- $tplPtr = $tplPtr->parent;
- }
- // add template function code to cache file
- if (isset($tplPtr->cached)) {
- $cache = $tplPtr->cached;
- $content = $cache->read($tplPtr);
- if ($content) {
- // check if we must update file dependency
- if (!preg_match("/'{$funcParam['uid']}'(.*?)'nocache_hash'/", $content, $match2)) {
- $content = preg_replace("/('file_dependency'(.*?)\()/", "\\1{$match1[0]}", $content);
- }
- $tplPtr->smarty->ext->_updateCache->write($cache, $tplPtr, preg_replace('/\s*\?>\s*$/', "\n", $content) . "\n" .
- preg_replace(array('/^\s*<\?php\s+/', '/\s*\?>\s*$/'), "\n",
- $match[0]));
- }
- }
- return true;
- }
- }
- }
- return false;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_runtime_updatescope.php b/library/Smarty/libs/sysplugins/smarty_internal_runtime_updatescope.php
deleted file mode 100644
index 5a125a4a7..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_runtime_updatescope.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-
-/**
- * Runtime Methods updateScope
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- *
- **/
-class Smarty_Internal_Runtime_UpdateScope
-{
- /**
- * Update new assigned template variable in other effected scopes
- *
- * @param \Smarty_Internal_Template $tpl template object
- * @param string $varName variable name
- * @param int $scope scope to which bubble up variable value
- */
- public function updateScope(Smarty_Internal_Template $tpl, $varName, $scope = Smarty::SCOPE_LOCAL)
- {
- if (!$scope && !$tpl->scope) {
- return;
- }
- foreach (array($scope, $tpl->scope) as $s) {
- $s = ($bubble_up = $s >= Smarty::SCOPE_BUBBLE_UP) ? $s - Smarty::SCOPE_BUBBLE_UP : $s;
- if ($bubble_up && $s) {
- $ptr = $tpl->parent;
- if (isset($ptr)) {
- $ptr->tpl_vars[$varName] = $tpl->tpl_vars[$varName];
- $ptr = $ptr->parent;
- }
- if ($s == Smarty::SCOPE_PARENT) {
- continue;
- }
- while (isset($ptr) && $ptr->_objType == 2) {
- $ptr->tpl_vars[$varName] = $tpl->tpl_vars[$varName];
- $ptr = $ptr->parent;
- }
- if ($s == Smarty::SCOPE_TPL_ROOT) {
- continue;
- } elseif ($s == Smarty::SCOPE_SMARTY) {
- $tpl->smarty->tpl_vars[$varName] = $tpl->tpl_vars[$varName];
- } elseif ($s == Smarty::SCOPE_GLOBAL) {
- Smarty::$global_tpl_vars[$varName] = $tpl->tpl_vars[$varName];
- } elseif ($s == Smarty::SCOPE_ROOT) {
- while (isset($ptr->parent)) {
- $ptr = $ptr->parent;
- }
- $ptr->tpl_vars[$varName] = $tpl->tpl_vars[$varName];
- }
- }
- }
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_runtime_validatecompiled.php b/library/Smarty/libs/sysplugins/smarty_internal_runtime_validatecompiled.php
deleted file mode 100644
index 7defd6c92..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_runtime_validatecompiled.php
+++ /dev/null
@@ -1,86 +0,0 @@
-<?php
-
-/**
- * Runtime Methods decodeProperties
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- *
- **/
-class Smarty_Internal_Runtime_ValidateCompiled
-{
- /**
- * This function is executed automatically when a compiled or cached template file is included
- * - Decode saved properties from compiled template and cache files
- * - Check if compiled or cache file is valid
- *
- * @param array $properties special template properties
- * @param bool $cache flag if called from cache file
- *
- * @return bool flag if compiled or cache file is valid
- */
- public function decodeProperties(Smarty_Internal_Template $tpl, $properties, $cache = false)
- {
- $is_valid = true;
- if (Smarty::SMARTY_VERSION != $properties['version']) {
- // new version must rebuild
- $is_valid = false;
- } elseif ($is_valid && !empty($properties['file_dependency']) &&
- ((!$cache && $tpl->smarty->compile_check) || $tpl->smarty->compile_check == 1)
- ) {
- // check file dependencies at compiled code
- foreach ($properties['file_dependency'] as $_file_to_check) {
- if ($_file_to_check[2] == 'file' || $_file_to_check[2] == 'extends' || $_file_to_check[2] == 'php') {
- if ($tpl->source->filepath == $_file_to_check[0]) {
- // do not recheck current template
- continue;
- //$mtime = $tpl->source->getTimeStamp();
- } else {
- // file and php types can be checked without loading the respective resource handlers
- $mtime = is_file($_file_to_check[0]) ? filemtime($_file_to_check[0]) : false;
- }
- } elseif ($_file_to_check[2] == 'string') {
- continue;
- } else {
- $handler = Smarty_Resource::load($tpl->smarty, $_file_to_check[2]);
- if ($handler->checkTimestamps()) {
- $source = Smarty_Template_Source::load($tpl, $tpl->smarty, $_file_to_check[ 0 ]);
- $mtime = $source->getTimeStamp();
- } else {
- continue;
- }
- }
- if (!$mtime || $mtime > $_file_to_check[1]) {
- $is_valid = false;
- break;
- }
- }
- }
- if ($cache) {
- // CACHING_LIFETIME_SAVED cache expiry has to be validated here since otherwise we'd define the unifunc
- if ($tpl->caching === Smarty::CACHING_LIFETIME_SAVED && $properties['cache_lifetime'] >= 0 &&
- (time() > ($tpl->cached->timestamp + $properties['cache_lifetime']))
- ) {
- $is_valid = false;
- }
- $tpl->cached->cache_lifetime = $properties['cache_lifetime'];
- $tpl->cached->valid = $is_valid;
- $resource = $tpl->cached;
- } else {
- $tpl->mustCompile = !$is_valid;
- $resource = $tpl->compiled;
- $resource->includes = isset($properties['includes']) ? $properties['includes'] : array();
- }
- if ($is_valid) {
- $resource->unifunc = $properties['unifunc'];
- $resource->has_nocache_code = $properties['has_nocache_code'];
- // $tpl->compiled->nocache_hash = $properties['nocache_hash'];
- $resource->file_dependency = $properties['file_dependency'];
- if (isset($properties['tpl_function'])) {
- $tpl->tpl_function = $properties['tpl_function'];
- }
- }
- return $is_valid && !function_exists($properties['unifunc']);
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_runtime_var.php b/library/Smarty/libs/sysplugins/smarty_internal_runtime_var.php
deleted file mode 100644
index 8e09108fe..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_runtime_var.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-/**
- * Runtime Methods createLocalArrayVariable
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- *
- **/
-class Smarty_Internal_Runtime_Var
-{
- /**
- * Template code runtime function to create a local Smarty variable for array assignments
- *
- * @param \Smarty_Internal_Template $tpl template object
- * @param string $varName template variable name
- * @param bool $nocache cache mode of variable
- */
- public function createLocalArrayVariable(Smarty_Internal_Template $tpl, $varName, $nocache = false)
- {
- if (!isset($tpl->tpl_vars[$varName])) {
- $tpl->tpl_vars[$varName] = new Smarty_Variable(array(), $nocache);
- } else {
- $tpl->tpl_vars[$varName] = clone $tpl->tpl_vars[$varName];
- if (!(is_array($tpl->tpl_vars[$varName]->value) ||
- $tpl->tpl_vars[$varName]->value instanceof ArrayAccess)
- ) {
- settype($tpl->tpl_vars[$varName]->value, 'array');
- }
- }
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_template.php b/library/Smarty/libs/sysplugins/smarty_internal_template.php
deleted file mode 100644
index 7c16a53db..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_template.php
+++ /dev/null
@@ -1,376 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Template
- * This file contains the Smarty template engine
- *
- * @package Smarty
- * @subpackage Template
- * @author Uwe Tews
- */
-
-/**
- * Main class with template data structures and methods
- *
- * @package Smarty
- * @subpackage Template
- *
- * @property Smarty_Template_Source|Smarty_Template_Config $source
- * @property Smarty_Template_Compiled $compiled
- * @property Smarty_Template_Cached $cached
- * @method bool mustCompile()
- */
-class Smarty_Internal_Template extends Smarty_Internal_TemplateBase
-{
- /**
- * This object type (Smarty = 1, template = 2, data = 4)
- *
- * @var int
- */
- public $_objType = 2;
-
- /**
- * Global smarty instance
- *
- * @var Smarty
- */
- public $smarty = null;
-
- /**
- * Source instance
- *
- * @var Smarty_Template_Source|Smarty_Template_Config
- */
- public $source = null;
-
- /**
- * Template resource
- *
- * @var string
- */
- public $template_resource = null;
-
- /**
- * flag if compiled template is invalid and must be (re)compiled
- *
- * @var bool
- */
- public $mustCompile = null;
-
- /**
- * Template Id
- *
- * @var null|string
- */
- public $templateId = null;
-
- /**
- * Known template functions
- *
- * @var array
- */
- public $tpl_function = array();
-
- /**
- * Scope in which template is rendered
- *
- * @var int
- */
- public $scope = 0;
-
- /**
- * Create template data object
- * Some of the global Smarty settings copied to template scope
- * It load the required template resources and caching plugins
- *
- * @param string $template_resource template resource string
- * @param Smarty $smarty Smarty instance
- * @param \Smarty_Internal_Template|\Smarty|\Smarty_Internal_Data $_parent back pointer to parent object
- * with variables or null
- * @param mixed $_cache_id cache id or null
- * @param mixed $_compile_id compile id or null
- * @param bool $_caching use caching?
- * @param int $_cache_lifetime cache life-time in seconds
- *
- * @throws \SmartyException
- */
- public function __construct($template_resource, Smarty $smarty, Smarty_Internal_Data $_parent = null,
- $_cache_id = null, $_compile_id = null, $_caching = null, $_cache_lifetime = null)
- {
- $this->smarty = &$smarty;
- // Smarty parameter
- $this->cache_id = $_cache_id === null ? $this->smarty->cache_id : $_cache_id;
- $this->compile_id = $_compile_id === null ? $this->smarty->compile_id : $_compile_id;
- $this->caching = $_caching === null ? $this->smarty->caching : $_caching;
- if ($this->caching === true) {
- $this->caching = Smarty::CACHING_LIFETIME_CURRENT;
- }
- $this->cache_lifetime = $_cache_lifetime === null ? $this->smarty->cache_lifetime : $_cache_lifetime;
- $this->parent = $_parent;
- // Template resource
- $this->template_resource = $template_resource;
- $this->source = Smarty_Template_Source::load($this);
- parent::__construct();
- }
-
- /**
- * render template
- *
- * @param bool $merge_tpl_vars if true parent template variables merged in to local scope
- * @param bool $no_output_filter if true do not run output filter
- * @param bool $display true: display, false: fetch null: subtemplate
- *
- * @throws Exception
- * @throws SmartyException
- * @return string rendered template output
- */
- public function render($no_output_filter = true, $display = null)
- {
- $parentIsTpl = isset($this->parent) && $this->parent->_objType == 2;
- if ($this->smarty->debugging) {
- $this->smarty->_debug->start_template($this, $display);
- }
- // checks if template exists
- if (!$this->source->exists) {
- if ($parentIsTpl) {
- $parent_resource = " in '{$this->parent->template_resource}'";
- } else {
- $parent_resource = '';
- }
- throw new SmartyException("Unable to load template {$this->source->type} '{$this->source->name}'{$parent_resource}");
- }
- // disable caching for evaluated code
- if ($this->source->handler->recompiled) {
- $this->caching = false;
- }
- // read from cache or render
- $isCacheTpl =
- $this->caching == Smarty::CACHING_LIFETIME_CURRENT || $this->caching == Smarty::CACHING_LIFETIME_SAVED;
- if ($isCacheTpl) {
- if (!isset($this->cached)) {
- $this->loadCached();
- }
- $this->cached->render($this, $no_output_filter);
- } elseif ($this->source->handler->uncompiled) {
- $this->source->render($this);
- } else {
- if (!isset($this->compiled)) {
- $this->loadCompiled();
- }
- $this->compiled->render($this);
- }
-
- // display or fetch
- if ($display) {
- if ($this->caching && $this->smarty->cache_modified_check) {
- $this->smarty->ext->_cachemodify->cacheModifiedCheck($this->cached, $this,
- isset($content) ? $content : ob_get_clean());
- } else {
- if ((!$this->caching || $this->cached->has_nocache_code || $this->source->handler->recompiled) &&
- !$no_output_filter && (isset($this->smarty->autoload_filters['output']) ||
- isset($this->smarty->registered_filters['output']))
- ) {
- echo $this->smarty->ext->_filterHandler->runFilter('output', ob_get_clean(), $this);
- } else {
- ob_end_flush();
- flush();
- }
- }
- if ($this->smarty->debugging) {
- $this->smarty->_debug->end_template($this);
- // debug output
- $this->smarty->_debug->display_debug($this, true);
- }
- return '';
- } else {
- if ($this->smarty->debugging) {
- $this->smarty->_debug->end_template($this);
- if ($this->smarty->debugging === 2 && $display === false) {
- $this->smarty->_debug->display_debug($this, true);
- }
- }
- if ($parentIsTpl) {
- if (!empty($this->tpl_function)) {
- $this->parent->tpl_function = array_merge($this->parent->tpl_function, $this->tpl_function);
- }
- foreach ($this->compiled->required_plugins as $code => $tmp1) {
- foreach ($tmp1 as $name => $tmp) {
- foreach ($tmp as $type => $data) {
- $this->parent->compiled->required_plugins[$code][$name][$type] = $data;
- }
- }
- }
- }
- if (!$no_output_filter &&
- (!$this->caching || $this->cached->has_nocache_code || $this->source->handler->recompiled) &&
- (isset($this->smarty->autoload_filters['output']) || isset($this->smarty->registered_filters['output']))
- ) {
- return $this->smarty->ext->_filterHandler->runFilter('output', ob_get_clean(), $this);
- }
- // return cache content
- return null;
- }
- }
-
- /**
- * Compiles the template
- * If the template is not evaluated the compiled template is saved on disk
- */
- public function compileTemplateSource()
- {
- return $this->compiled->compileTemplateSource($this);
- }
-
- /**
- * Writes the content to cache resource
- *
- * @param string $content
- *
- * @return bool
- */
- public function writeCachedContent($content)
- {
- return $this->smarty->ext->_updateCache->writeCachedContent($this->cached, $this, $content);
- }
-
- /**
- * Get unique template id
- *
- * @return string
- */
- public function _getTemplateId()
- {
- return isset($this->templateId) ? $this->templateId : $this->templateId =
- $this->smarty->_getTemplateId($this->template_resource, $this->cache_id, $this->compile_id);
- }
-
- /**
- * runtime error not matching capture tags
- */
- public function capture_error()
- {
- throw new SmartyException("Not matching {capture} open/close in \"{$this->template_resource}\"");
- }
-
- /**
- * Load compiled object
- *
- */
- public function loadCompiled()
- {
- if (!isset($this->compiled)) {
- $this->compiled = Smarty_Template_Compiled::load($this);
- }
- }
-
- /**
- * Load cached object
- *
- */
- public function loadCached()
- {
- if (!isset($this->cached)) {
- $this->cached = Smarty_Template_Cached::load($this);
- }
- }
-
- /**
- * Load compiler object
- *
- * @throws \SmartyException
- */
- public function loadCompiler()
- {
- if (!class_exists($this->source->handler->compiler_class)) {
- $this->smarty->loadPlugin($this->source->handler->compiler_class);
- }
- $this->compiler = new $this->source->handler->compiler_class($this->source->handler->template_lexer_class,
- $this->source->handler->template_parser_class,
- $this->smarty);
- }
-
- /**
- * Handle unknown class methods
- *
- * @param string $name unknown method-name
- * @param array $args argument array
- *
- * @return mixed
- * @throws SmartyException
- */
- public function __call($name, $args)
- {
- // method of Smarty object?
- if (method_exists($this->smarty, $name)) {
- return call_user_func_array(array($this->smarty, $name), $args);
- }
- // parent
- return parent::__call($name, $args);
- }
-
- /**
- * set Smarty property in template context
- *
- * @param string $property_name property name
- * @param mixed $value value
- *
- * @throws SmartyException
- */
- public function __set($property_name, $value)
- {
- switch ($property_name) {
- case 'compiled':
- case 'cached':
- case 'compiler':
- $this->$property_name = $value;
- return;
- default:
- // Smarty property ?
- if (property_exists($this->smarty, $property_name)) {
- $this->smarty->$property_name = $value;
- return;
- }
- }
- throw new SmartyException("invalid template property '$property_name'.");
- }
-
- /**
- * get Smarty property in template context
- *
- * @param string $property_name property name
- *
- * @return mixed|Smarty_Template_Cached
- * @throws SmartyException
- */
- public function __get($property_name)
- {
- switch ($property_name) {
- case 'compiled':
- $this->loadCompiled();
- return $this->compiled;
-
- case 'cached':
- $this->loadCached();
- return $this->cached;
-
- case 'compiler':
- $this->loadCompiler();
- return $this->compiler;
- default:
- // Smarty property ?
- if (property_exists($this->smarty, $property_name)) {
- return $this->smarty->$property_name;
- }
- }
- throw new SmartyException("template property '$property_name' does not exist.");
- }
-
- /**
- * Template data object destructor
- */
- public function __destruct()
- {
- if ($this->smarty->cache_locking && isset($this->cached) && $this->cached->is_locked) {
- $this->cached->handler->releaseLock($this->smarty, $this->cached);
- }
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_templateparser.php b/library/Smarty/libs/sysplugins/smarty_internal_templateparser.php
deleted file mode 100644
index a745d1dc2..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_templateparser.php
+++ /dev/null
@@ -1,2833 +0,0 @@
-<?php
-
-class TP_yyToken implements ArrayAccess
-{
- public $string = '';
-
- public $metadata = array();
-
- public function __construct($s, $m = array())
- {
- if ($s instanceof TP_yyToken) {
- $this->string = $s->string;
- $this->metadata = $s->metadata;
- } else {
- $this->string = (string) $s;
- if ($m instanceof TP_yyToken) {
- $this->metadata = $m->metadata;
- } elseif (is_array($m)) {
- $this->metadata = $m;
- }
- }
- }
-
- public function __toString()
- {
- return $this->string;
- }
-
- public function offsetExists($offset)
- {
- return isset($this->metadata[ $offset ]);
- }
-
- public function offsetGet($offset)
- {
- return $this->metadata[ $offset ];
- }
-
- public function offsetSet($offset, $value)
- {
- if ($offset === null) {
- if (isset($value[ 0 ])) {
- $x = ($value instanceof TP_yyToken) ? $value->metadata : $value;
- $this->metadata = array_merge($this->metadata, $x);
-
- return;
- }
- $offset = count($this->metadata);
- }
- if ($value === null) {
- return;
- }
- if ($value instanceof TP_yyToken) {
- if ($value->metadata) {
- $this->metadata[ $offset ] = $value->metadata;
- }
- } elseif ($value) {
- $this->metadata[ $offset ] = $value;
- }
- }
-
- public function offsetUnset($offset)
- {
- unset($this->metadata[ $offset ]);
- }
-}
-
-class TP_yyStackEntry
-{
- public $stateno; /* The state-number */
- public $major; /* The major token value. This is the code
- ** number for the token at this stack level */
- public $minor; /* The user-supplied minor token value. This
- ** is the value of the token */
-}
-
-;
-
-#line 11 "../smarty/lexer/smarty_internal_templateparser.y"
-
-/**
- * Smarty Template Parser Class
- *
- * This is the template parser.
- * It is generated from the smarty_internal_templateparser.y file
- *
- * @author Uwe Tews <uwe.tews@googlemail.com>
- */
-class Smarty_Internal_Templateparser
-{
- #line 23 "../smarty/lexer/smarty_internal_templateparser.y"
-
- const Err1 = "Security error: Call to private object member not allowed";
-
- const Err2 = "Security error: Call to dynamic object member not allowed";
-
- const Err3 = "PHP in template not allowed. Use SmartyBC to enable it";
-
- /**
- * result status
- *
- * @var bool
- */
- public $successful = true;
-
- /**
- * return value
- *
- * @var mixed
- */
- public $retvalue = 0;
-
- /**
- * counter for prefix code
- *
- * @var int
- */
- public static $prefix_number = 0;
-
- /**
- * @var
- */
- public $yymajor;
-
- /**
- * last index of array variable
- *
- * @var mixed
- */
- public $last_index;
-
- /**
- * last variable name
- *
- * @var string
- */
- public $last_variable;
-
- /**
- * root parse tree buffer
- *
- * @var Smarty_Internal_ParseTree
- */
- public $root_buffer;
-
- /**
- * current parse tree object
- *
- * @var Smarty_Internal_ParseTree
- */
- public $current_buffer;
-
- /**
- * lexer object
- *
- * @var Smarty_Internal_Templatelexer
- */
- public $lex;
-
- /**
- * internal error flag
- *
- * @var bool
- */
- private $internalError = false;
-
- /**
- * {strip} status
- *
- * @var bool
- */
- public $strip = false;
-
- /**
- * compiler object
- *
- * @var Smarty_Internal_TemplateCompilerBase
- */
- public $compiler = null;
-
- /**
- * smarty object
- *
- * @var Smarty
- */
- public $smarty = null;
-
- /**
- * template object
- *
- * @var Smarty_Internal_Template
- */
- public $template = null;
-
- /**
- * block nesting level
- *
- * @var int
- */
- public $block_nesting_level = 0;
-
- /**
- * security object
- *
- * @var Smarty_Security
- */
- public $security = null;
-
- /**
- * template prefix array
- *
- * @var \Smarty_Internal_ParseTree[]
- */
- public $template_prefix = array();
-
- /**
- * security object
- *
- * @var \Smarty_Internal_ParseTree[]
- */
- public $template_postfix = array();
-
- /**
- * constructor
- *
- * @param Smarty_Internal_Templatelexer $lex
- * @param Smarty_Internal_TemplateCompilerBase $compiler
- */
- function __construct(Smarty_Internal_Templatelexer $lex, Smarty_Internal_TemplateCompilerBase $compiler)
- {
- $this->lex = $lex;
- $this->compiler = $compiler;
- $this->template = $this->compiler->template;
- $this->smarty = $this->template->smarty;
- $this->security = isset($this->smarty->security_policy) ? $this->smarty->security_policy : false;
- $this->current_buffer = $this->root_buffer = new Smarty_Internal_ParseTree_Template();
- }
-
- /**
- * insert PHP code in current buffer
- *
- * @param string $code
- */
- public function insertPhpCode($code)
- {
- $this->current_buffer->append_subtree($this, new Smarty_Internal_ParseTree_Tag($this, $code));
- }
-
- /**
- * merge PHP code with prefix code and return parse tree tag object
- *
- * @param string $code
- *
- * @return Smarty_Internal_ParseTree_Tag
- */
- public function mergePrefixCode($code)
- {
- $tmp = '';
- foreach ($this->compiler->prefix_code as $preCode) {
- $tmp .= $preCode;
- }
- $this->compiler->prefix_code = array();
- $tmp .= $code;
- return new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode($tmp, true));
- }
-
- const TP_VERT = 1;
-
- const TP_COLON = 2;
-
- const TP_PHP = 3;
-
- const TP_NOCACHE = 4;
-
- const TP_TEXT = 5;
-
- const TP_STRIPON = 6;
-
- const TP_STRIPOFF = 7;
-
- const TP_LITERALSTART = 8;
-
- const TP_LITERALEND = 9;
-
- const TP_LITERAL = 10;
-
- const TP_RDEL = 11;
-
- const TP_SIMPELOUTPUT = 12;
-
- const TP_LDEL = 13;
-
- const TP_DOLLARID = 14;
-
- const TP_EQUAL = 15;
-
- const TP_SIMPLETAG = 16;
-
- const TP_ID = 17;
-
- const TP_PTR = 18;
-
- const TP_LDELIF = 19;
-
- const TP_LDELFOR = 20;
-
- const TP_SEMICOLON = 21;
-
- const TP_INCDEC = 22;
-
- const TP_TO = 23;
-
- const TP_STEP = 24;
-
- const TP_LDELFOREACH = 25;
-
- const TP_SPACE = 26;
-
- const TP_AS = 27;
-
- const TP_APTR = 28;
-
- const TP_LDELSETFILTER = 29;
-
- const TP_SMARTYBLOCKCHILDPARENT = 30;
-
- const TP_CLOSETAG = 31;
-
- const TP_LDELSLASH = 32;
-
- const TP_ATTR = 33;
-
- const TP_INTEGER = 34;
-
- const TP_COMMA = 35;
-
- const TP_OPENP = 36;
-
- const TP_CLOSEP = 37;
-
- const TP_MATH = 38;
-
- const TP_UNIMATH = 39;
-
- const TP_ISIN = 40;
-
- const TP_INSTANCEOF = 41;
-
- const TP_QMARK = 42;
-
- const TP_NOT = 43;
-
- const TP_TYPECAST = 44;
-
- const TP_HEX = 45;
-
- const TP_DOT = 46;
-
- const TP_SINGLEQUOTESTRING = 47;
-
- const TP_DOUBLECOLON = 48;
-
- const TP_NAMESPACE = 49;
-
- const TP_AT = 50;
-
- const TP_HATCH = 51;
-
- const TP_OPENB = 52;
-
- const TP_CLOSEB = 53;
-
- const TP_DOLLAR = 54;
-
- const TP_LOGOP = 55;
-
- const TP_TLOGOP = 56;
-
- const TP_SINGLECOND = 57;
-
- const TP_QUOTE = 58;
-
- const TP_BACKTICK = 59;
-
- const YY_NO_ACTION = 527;
-
- const YY_ACCEPT_ACTION = 526;
-
- const YY_ERROR_ACTION = 525;
-
- const YY_SZ_ACTTAB = 2021;
-
- static public $yy_action = array(242, 10, 131, 178, 255, 76, 157, 5, 83, 293, 12, 149, 152, 116, 292, 93, 331, 217,
- 284, 295, 221, 331, 226, 36, 21, 169, 35, 43, 308, 99, 26, 42, 39, 294, 235, 244,
- 30, 200, 187, 80, 1, 251, 320, 206, 442, 123, 53, 242, 10, 130, 98, 255, 194, 399,
- 5, 83, 442, 240, 298, 107, 116, 310, 174, 220, 217, 36, 295, 221, 399, 208, 135,
- 21, 26, 161, 43, 399, 8, 174, 42, 39, 294, 235, 218, 331, 200, 187, 80, 1, 312,
- 320, 11, 290, 313, 53, 242, 10, 133, 306, 255, 205, 187, 5, 83, 264, 266, 267, 211,
- 116, 353, 220, 52, 217, 298, 295, 221, 206, 226, 220, 21, 290, 290, 43, 321, 36,
- 249, 42, 39, 294, 235, 244, 26, 200, 206, 80, 1, 11, 320, 283, 52, 52, 53, 242, 10,
- 132, 248, 255, 205, 455, 5, 83, 84, 301, 151, 455, 116, 323, 92, 36, 217, 2, 295,
- 221, 331, 226, 26, 21, 290, 304, 43, 137, 36, 111, 42, 39, 294, 235, 244, 26, 200,
- 187, 80, 1, 225, 320, 320, 52, 123, 53, 242, 10, 133, 98, 255, 193, 175, 5, 83,
- 177, 280, 273, 234, 116, 310, 23, 278, 217, 13, 295, 221, 320, 203, 223, 21, 290,
- 442, 43, 138, 187, 326, 42, 39, 294, 235, 244, 216, 200, 442, 80, 1, 4, 320, 329,
- 52, 15, 53, 242, 10, 134, 91, 255, 205, 176, 5, 83, 293, 12, 16, 90, 116, 292, 300,
- 99, 217, 241, 295, 221, 320, 226, 215, 28, 213, 201, 43, 105, 187, 286, 42, 39,
- 294, 235, 244, 215, 200, 214, 80, 1, 105, 320, 11, 135, 285, 53, 242, 10, 133, 8,
- 255, 205, 164, 5, 83, 442, 215, 19, 239, 116, 99, 105, 331, 217, 6, 295, 221, 442,
- 192, 311, 21, 182, 289, 43, 308, 443, 32, 42, 39, 294, 235, 244, 296, 200, 17, 80,
- 1, 443, 320, 262, 107, 26, 53, 242, 10, 133, 122, 255, 191, 172, 5, 83, 183, 188,
- 148, 231, 116, 223, 168, 331, 217, 181, 295, 221, 331, 226, 206, 21, 331, 141, 43,
- 308, 206, 38, 42, 39, 294, 235, 244, 331, 200, 188, 80, 1, 187, 320, 155, 206, 308,
- 53, 242, 10, 133, 25, 255, 198, 188, 5, 83, 206, 145, 160, 308, 116, 228, 146, 206,
- 217, 180, 295, 221, 331, 226, 286, 21, 331, 359, 43, 179, 289, 38, 42, 39, 294,
- 235, 244, 250, 200, 271, 80, 1, 272, 320, 122, 94, 103, 53, 242, 10, 129, 3, 255,
- 205, 144, 5, 83, 185, 289, 170, 99, 116, 270, 322, 331, 217, 184, 295, 221, 331,
- 226, 99, 7, 171, 35, 43, 308, 89, 105, 42, 39, 294, 235, 244, 120, 200, 328, 80, 1,
- 187, 320, 82, 223, 4, 53, 242, 10, 134, 142, 255, 205, 107, 5, 83, 309, 324, 302,
- 20, 116, 316, 206, 291, 217, 290, 295, 221, 33, 226, 277, 28, 399, 243, 43, 257,
- 219, 189, 42, 39, 294, 235, 244, 110, 200, 140, 80, 399, 147, 320, 253, 327, 258,
- 53, 399, 14, 236, 220, 207, 154, 113, 65, 108, 319, 159, 238, 311, 98, 471, 471,
- 330, 237, 279, 471, 210, 325, 245, 299, 310, 86, 308, 143, 268, 263, 259, 260, 269,
- 177, 204, 287, 136, 242, 10, 150, 87, 255, 320, 139, 5, 83, 293, 12, 22, 195, 116,
- 292, 247, 258, 217, 153, 295, 221, 220, 207, 36, 126, 50, 104, 109, 112, 88, 26,
- 98, 246, 397, 330, 237, 85, 212, 210, 325, 245, 258, 310, 102, 299, 299, 220, 207,
- 397, 113, 65, 108, 320, 299, 134, 397, 98, 222, 442, 330, 237, 299, 299, 210, 325,
- 245, 258, 310, 299, 299, 442, 220, 207, 299, 126, 69, 108, 299, 288, 31, 299, 98,
- 299, 299, 330, 237, 299, 299, 210, 325, 245, 80, 310, 299, 320, 299, 258, 299, 299,
- 209, 299, 220, 207, 299, 126, 69, 108, 206, 299, 299, 455, 98, 299, 206, 330, 237,
- 455, 365, 210, 325, 245, 299, 310, 355, 227, 258, 299, 299, 299, 199, 220, 207, 36,
- 126, 64, 104, 299, 214, 36, 26, 98, 299, 442, 330, 237, 26, 299, 210, 325, 245,
- 258, 310, 471, 471, 442, 220, 207, 471, 126, 69, 108, 293, 12, 299, 299, 98, 292,
- 299, 330, 237, 299, 299, 210, 325, 245, 36, 310, 163, 299, 258, 299, 299, 26, 202,
- 220, 207, 299, 126, 44, 108, 471, 299, 299, 299, 98, 299, 299, 330, 237, 299, 299,
- 210, 325, 245, 299, 310, 299, 299, 258, 134, 299, 299, 252, 220, 207, 206, 126, 72,
- 108, 299, 299, 299, 299, 98, 299, 396, 330, 237, 299, 299, 210, 325, 245, 258, 310,
- 299, 299, 299, 220, 207, 396, 126, 74, 108, 254, 299, 80, 396, 98, 320, 299, 330,
- 237, 299, 297, 210, 325, 245, 299, 310, 299, 242, 9, 299, 299, 255, 299, 258, 5,
- 83, 299, 299, 220, 207, 116, 126, 68, 108, 217, 299, 295, 221, 98, 299, 299, 330,
- 237, 299, 299, 210, 325, 245, 299, 310, 299, 258, 299, 299, 299, 299, 220, 207,
- 299, 100, 70, 108, 299, 303, 29, 299, 98, 299, 299, 330, 237, 299, 297, 210, 325,
- 245, 299, 310, 299, 242, 9, 299, 299, 255, 299, 299, 5, 83, 299, 299, 299, 299,
- 116, 299, 299, 258, 217, 299, 295, 221, 220, 207, 299, 126, 66, 108, 299, 299, 299,
- 299, 98, 293, 12, 330, 237, 299, 292, 210, 325, 245, 299, 310, 258, 299, 299, 305,
- 29, 220, 207, 299, 126, 60, 108, 299, 293, 12, 299, 98, 299, 292, 330, 237, 299,
- 299, 210, 325, 245, 299, 310, 232, 299, 258, 299, 206, 299, 299, 220, 207, 299,
- 126, 49, 108, 299, 299, 299, 299, 98, 299, 299, 330, 237, 299, 230, 210, 325, 245,
- 299, 310, 258, 167, 299, 299, 299, 220, 207, 299, 126, 58, 108, 299, 41, 40, 37,
- 98, 299, 299, 330, 237, 299, 299, 210, 325, 245, 299, 310, 258, 299, 256, 275, 282,
- 220, 97, 299, 81, 45, 106, 299, 299, 299, 299, 98, 299, 299, 330, 237, 299, 299,
- 210, 325, 245, 299, 310, 299, 299, 258, 299, 206, 299, 299, 220, 207, 299, 126, 63,
- 108, 299, 186, 299, 299, 98, 299, 299, 330, 237, 299, 299, 210, 325, 245, 299, 310,
- 258, 299, 299, 299, 299, 220, 197, 299, 114, 59, 108, 299, 41, 40, 37, 98, 299,
- 299, 330, 237, 299, 299, 210, 325, 245, 299, 310, 258, 299, 256, 275, 282, 220,
- 207, 299, 126, 55, 108, 299, 299, 299, 299, 98, 299, 299, 330, 237, 299, 299, 210,
- 325, 245, 299, 310, 299, 299, 258, 299, 206, 299, 299, 220, 207, 299, 126, 57, 108,
- 299, 41, 40, 37, 98, 299, 299, 330, 237, 299, 299, 210, 325, 245, 299, 310, 258,
- 299, 256, 275, 282, 220, 95, 299, 81, 48, 106, 233, 41, 40, 37, 98, 299, 299, 330,
- 237, 299, 299, 210, 325, 245, 299, 310, 258, 299, 256, 275, 282, 220, 207, 299,
- 126, 78, 108, 299, 299, 299, 299, 98, 299, 299, 330, 237, 299, 299, 210, 325, 245,
- 299, 310, 299, 299, 258, 299, 206, 18, 299, 220, 207, 299, 96, 61, 108, 299, 299,
- 299, 299, 98, 299, 299, 330, 237, 299, 299, 210, 325, 245, 299, 310, 258, 299, 299,
- 299, 299, 220, 207, 299, 126, 47, 108, 299, 41, 40, 37, 98, 299, 299, 330, 237,
- 299, 299, 210, 325, 245, 299, 310, 258, 299, 256, 275, 282, 220, 207, 299, 126, 75,
- 108, 299, 299, 299, 299, 98, 299, 299, 330, 237, 299, 299, 210, 325, 245, 299, 310,
- 299, 299, 258, 299, 206, 299, 299, 220, 207, 299, 126, 64, 108, 299, 299, 299, 299,
- 98, 299, 299, 330, 237, 299, 299, 210, 325, 245, 299, 310, 258, 299, 299, 299, 299,
- 220, 207, 299, 126, 56, 108, 317, 41, 40, 37, 98, 299, 299, 330, 237, 299, 299,
- 210, 325, 245, 299, 310, 258, 299, 256, 275, 282, 220, 207, 299, 115, 46, 108, 299,
- 299, 299, 299, 98, 299, 299, 330, 237, 299, 299, 210, 325, 245, 299, 310, 299, 299,
- 258, 299, 206, 299, 299, 220, 207, 299, 126, 79, 108, 299, 190, 299, 299, 98, 299,
- 299, 330, 237, 299, 299, 210, 325, 245, 299, 310, 258, 299, 299, 299, 299, 220,
- 207, 299, 126, 62, 108, 299, 41, 40, 37, 98, 299, 299, 330, 237, 299, 299, 210,
- 325, 245, 299, 310, 258, 299, 256, 275, 282, 220, 207, 299, 126, 71, 108, 299, 299,
- 299, 299, 98, 299, 299, 330, 237, 299, 299, 210, 325, 245, 299, 310, 299, 299, 258,
- 299, 206, 299, 299, 220, 207, 299, 101, 67, 108, 299, 318, 299, 299, 98, 299, 299,
- 330, 237, 299, 299, 210, 325, 245, 299, 310, 258, 299, 299, 299, 299, 220, 207,
- 299, 126, 77, 108, 299, 41, 40, 37, 98, 299, 299, 330, 237, 299, 299, 210, 325,
- 245, 299, 310, 258, 299, 256, 275, 282, 220, 196, 299, 126, 54, 108, 299, 299, 299,
- 299, 98, 299, 299, 330, 237, 299, 299, 210, 325, 245, 299, 310, 299, 299, 258, 299,
- 206, 299, 299, 220, 207, 299, 126, 73, 108, 299, 274, 299, 299, 98, 299, 299, 330,
- 237, 299, 299, 210, 325, 245, 299, 310, 258, 299, 299, 299, 299, 220, 224, 299,
- 118, 299, 108, 299, 41, 40, 37, 98, 299, 299, 299, 261, 299, 299, 210, 325, 245,
- 299, 310, 258, 299, 256, 275, 282, 220, 224, 299, 128, 299, 108, 299, 299, 299,
- 299, 98, 299, 299, 229, 315, 206, 299, 210, 325, 245, 299, 310, 299, 471, 471, 307,
- 27, 299, 471, 455, 526, 51, 265, 266, 267, 211, 299, 299, 220, 299, 36, 299, 409,
- 409, 299, 299, 299, 26, 299, 299, 299, 299, 41, 40, 37, 206, 299, 455, 299, 455,
- 299, 471, 299, 455, 299, 299, 299, 299, 299, 256, 275, 282, 229, 299, 299, 117,
- 299, 442, 299, 409, 409, 409, 471, 471, 299, 299, 299, 471, 455, 442, 299, 299, 41,
- 40, 37, 299, 409, 409, 409, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 256,
- 275, 282, 299, 299, 299, 299, 455, 299, 455, 258, 471, 299, 455, 281, 220, 224,
- 299, 127, 299, 108, 299, 299, 299, 299, 98, 299, 299, 299, 299, 299, 299, 210, 325,
- 245, 258, 310, 206, 156, 299, 220, 224, 175, 121, 299, 108, 299, 299, 331, 299, 98,
- 23, 278, 299, 299, 299, 299, 210, 325, 245, 34, 310, 36, 299, 299, 187, 299, 299,
- 299, 26, 299, 299, 258, 299, 41, 40, 37, 220, 224, 299, 125, 299, 108, 299, 299,
- 299, 299, 98, 299, 299, 229, 256, 275, 282, 210, 325, 245, 299, 310, 299, 471, 471,
- 258, 31, 299, 471, 455, 220, 224, 299, 124, 299, 108, 299, 299, 299, 299, 98, 299,
- 299, 299, 299, 299, 299, 210, 325, 245, 258, 310, 206, 299, 299, 220, 224, 455,
- 119, 455, 108, 471, 299, 455, 299, 98, 299, 299, 229, 299, 299, 24, 210, 325, 245,
- 299, 310, 299, 471, 471, 299, 471, 471, 471, 455, 299, 471, 455, 206, 41, 40, 37,
- 299, 299, 299, 471, 471, 299, 299, 299, 471, 455, 299, 299, 276, 299, 256, 275,
- 282, 299, 299, 299, 455, 36, 455, 455, 471, 455, 455, 471, 26, 455, 299, 206, 403,
- 41, 40, 37, 206, 455, 299, 455, 299, 471, 403, 455, 403, 299, 299, 403, 299, 299,
- 256, 275, 282, 299, 403, 299, 403, 299, 403, 299, 299, 299, 299, 299, 299, 299,
- 299, 223, 41, 40, 37, 299, 299, 41, 40, 37, 299, 299, 299, 299, 299, 299, 299, 299,
- 173, 256, 275, 282, 175, 314, 256, 275, 282, 299, 331, 166, 299, 23, 278, 175, 162,
- 299, 299, 299, 175, 331, 299, 299, 23, 278, 331, 187, 299, 23, 278, 158, 299, 299,
- 299, 175, 299, 299, 187, 299, 299, 331, 165, 187, 23, 278, 175, 299, 299, 299, 299,
- 299, 331, 299, 299, 23, 278, 299, 187, 299, 299, 299, 299, 299, 299, 299, 299, 299,
- 299, 187,);
-
- static public $yy_lookahead = array(12, 13, 14, 80, 16, 17, 71, 19, 20, 12, 13, 71, 91, 25, 17, 75, 81, 29, 30, 31,
- 32, 81, 34, 26, 36, 28, 15, 39, 93, 18, 33, 43, 44, 45, 46, 47, 28, 49, 98, 51,
- 52, 70, 54, 1, 36, 74, 58, 12, 13, 14, 79, 16, 17, 11, 19, 20, 48, 86, 64, 48,
- 25, 90, 75, 69, 29, 26, 31, 32, 26, 34, 46, 36, 33, 71, 39, 33, 52, 75, 43, 44,
- 45, 46, 47, 81, 49, 98, 51, 52, 53, 54, 35, 22, 37, 58, 12, 13, 14, 103, 16, 17,
- 98, 19, 20, 63, 64, 65, 66, 25, 11, 69, 41, 29, 64, 31, 32, 1, 34, 69, 36, 22,
- 22, 39, 53, 26, 95, 43, 44, 45, 46, 47, 33, 49, 1, 51, 52, 35, 54, 37, 41, 41,
- 58, 12, 13, 14, 14, 16, 17, 46, 19, 20, 102, 103, 71, 52, 25, 11, 75, 26, 29,
- 36, 31, 32, 81, 34, 33, 36, 22, 17, 39, 14, 26, 48, 43, 44, 45, 46, 47, 33, 49,
- 98, 51, 52, 70, 54, 54, 41, 74, 58, 12, 13, 14, 79, 16, 17, 75, 19, 20, 8, 9,
- 10, 50, 25, 90, 84, 85, 29, 13, 31, 32, 54, 34, 46, 36, 22, 36, 39, 14, 98, 53,
- 43, 44, 45, 46, 47, 46, 49, 48, 51, 52, 36, 54, 53, 41, 21, 58, 12, 13, 14, 36,
- 16, 17, 75, 19, 20, 12, 13, 15, 35, 25, 17, 59, 18, 29, 22, 31, 32, 54, 34, 74,
- 36, 76, 77, 39, 79, 98, 99, 43, 44, 45, 46, 47, 74, 49, 76, 51, 52, 79, 54, 35,
- 46, 37, 58, 12, 13, 14, 52, 16, 17, 71, 19, 20, 36, 74, 15, 76, 25, 18, 79, 81,
- 29, 35, 31, 32, 48, 34, 92, 36, 94, 95, 39, 93, 36, 15, 43, 44, 45, 46, 47, 53,
- 49, 26, 51, 52, 48, 54, 89, 48, 33, 58, 12, 13, 14, 96, 16, 17, 71, 19, 20, 14,
- 98, 71, 17, 25, 46, 71, 81, 29, 75, 31, 32, 81, 34, 1, 36, 81, 71, 39, 93, 1, 2,
- 43, 44, 45, 46, 47, 81, 49, 98, 51, 52, 98, 54, 91, 1, 93, 58, 12, 13, 14, 28,
- 16, 17, 98, 19, 20, 1, 91, 71, 93, 25, 18, 71, 1, 29, 80, 31, 32, 81, 34, 99,
- 36, 81, 11, 39, 94, 95, 2, 43, 44, 45, 46, 47, 89, 49, 65, 51, 52, 68, 54, 96,
- 80, 79, 58, 12, 13, 14, 36, 16, 17, 71, 19, 20, 94, 95, 71, 18, 25, 53, 96, 81,
- 29, 75, 31, 32, 81, 34, 18, 36, 74, 15, 39, 93, 91, 79, 43, 44, 45, 46, 47, 17,
- 49, 17, 51, 52, 98, 54, 17, 46, 36, 58, 12, 13, 14, 51, 16, 17, 48, 19, 20, 17,
- 34, 17, 42, 25, 17, 1, 34, 29, 22, 31, 32, 23, 34, 37, 36, 11, 17, 39, 5, 17,
- 17, 43, 44, 45, 46, 47, 17, 49, 51, 51, 26, 27, 54, 11, 53, 64, 58, 33, 13, 14,
- 69, 70, 17, 72, 73, 74, 53, 91, 81, 92, 79, 12, 13, 82, 83, 9, 17, 86, 87, 88,
- 104, 90, 79, 93, 91, 3, 4, 5, 6, 7, 8, 100, 101, 79, 12, 13, 91, 79, 16, 54, 91,
- 19, 20, 12, 13, 13, 14, 25, 17, 17, 64, 29, 91, 31, 32, 69, 70, 26, 72, 73, 74,
- 78, 76, 79, 33, 79, 34, 11, 82, 83, 79, 15, 86, 87, 88, 64, 90, 67, 104, 104,
- 69, 70, 26, 72, 73, 74, 54, 104, 14, 33, 79, 17, 36, 82, 83, 104, 104, 86, 87,
- 88, 64, 90, 104, 104, 48, 69, 70, 104, 72, 73, 74, 104, 101, 15, 104, 79, 104,
- 104, 82, 83, 104, 104, 86, 87, 88, 51, 90, 104, 54, 104, 64, 104, 104, 97, 104,
- 69, 70, 104, 72, 73, 74, 1, 104, 104, 46, 79, 104, 1, 82, 83, 52, 11, 86, 87,
- 88, 104, 90, 11, 18, 64, 104, 104, 104, 97, 69, 70, 26, 72, 73, 74, 104, 76, 26,
- 33, 79, 104, 36, 82, 83, 33, 104, 86, 87, 88, 64, 90, 12, 13, 48, 69, 70, 17,
- 72, 73, 74, 12, 13, 104, 104, 79, 17, 104, 82, 83, 104, 104, 86, 87, 88, 26, 90,
- 28, 104, 64, 104, 104, 33, 97, 69, 70, 104, 72, 73, 74, 50, 104, 104, 104, 79,
- 104, 104, 82, 83, 104, 104, 86, 87, 88, 104, 90, 104, 104, 64, 14, 104, 104, 17,
- 69, 70, 1, 72, 73, 74, 104, 104, 104, 104, 79, 104, 11, 82, 83, 104, 104, 86,
- 87, 88, 64, 90, 104, 104, 104, 69, 70, 26, 72, 73, 74, 49, 104, 51, 33, 79, 54,
- 104, 82, 83, 104, 5, 86, 87, 88, 104, 90, 104, 12, 13, 14, 104, 16, 104, 64, 19,
- 20, 104, 104, 69, 70, 25, 72, 73, 74, 29, 104, 31, 32, 79, 104, 104, 82, 83,
- 104, 104, 86, 87, 88, 104, 90, 104, 64, 104, 104, 104, 104, 69, 70, 104, 72, 73,
- 74, 104, 58, 59, 104, 79, 104, 104, 82, 83, 104, 5, 86, 87, 88, 104, 90, 104,
- 12, 13, 14, 104, 16, 104, 104, 19, 20, 104, 104, 104, 104, 25, 104, 104, 64, 29,
- 104, 31, 32, 69, 70, 104, 72, 73, 74, 104, 104, 104, 104, 79, 12, 13, 82, 83,
- 104, 17, 86, 87, 88, 104, 90, 64, 104, 104, 58, 59, 69, 70, 104, 72, 73, 74,
- 104, 12, 13, 104, 79, 104, 17, 82, 83, 104, 104, 86, 87, 88, 104, 90, 50, 104,
- 64, 104, 1, 104, 104, 69, 70, 104, 72, 73, 74, 104, 104, 104, 104, 79, 104, 104,
- 82, 83, 104, 50, 86, 87, 88, 104, 90, 64, 27, 104, 104, 104, 69, 70, 104, 72,
- 73, 74, 104, 38, 39, 40, 79, 104, 104, 82, 83, 104, 104, 86, 87, 88, 104, 90,
- 64, 104, 55, 56, 57, 69, 70, 104, 72, 73, 74, 104, 104, 104, 104, 79, 104, 104,
- 82, 83, 104, 104, 86, 87, 88, 104, 90, 104, 104, 64, 104, 1, 104, 104, 69, 70,
- 104, 72, 73, 74, 104, 11, 104, 104, 79, 104, 104, 82, 83, 104, 104, 86, 87, 88,
- 104, 90, 64, 104, 104, 104, 104, 69, 70, 104, 72, 73, 74, 104, 38, 39, 40, 79,
- 104, 104, 82, 83, 104, 104, 86, 87, 88, 104, 90, 64, 104, 55, 56, 57, 69, 70,
- 104, 72, 73, 74, 104, 104, 104, 104, 79, 104, 104, 82, 83, 104, 104, 86, 87, 88,
- 104, 90, 104, 104, 64, 104, 1, 104, 104, 69, 70, 104, 72, 73, 74, 104, 38, 39,
- 40, 79, 104, 104, 82, 83, 104, 104, 86, 87, 88, 104, 90, 64, 104, 55, 56, 57,
- 69, 70, 104, 72, 73, 74, 37, 38, 39, 40, 79, 104, 104, 82, 83, 104, 104, 86, 87,
- 88, 104, 90, 64, 104, 55, 56, 57, 69, 70, 104, 72, 73, 74, 104, 104, 104, 104,
- 79, 104, 104, 82, 83, 104, 104, 86, 87, 88, 104, 90, 104, 104, 64, 104, 1, 2,
- 104, 69, 70, 104, 72, 73, 74, 104, 104, 104, 104, 79, 104, 104, 82, 83, 104,
- 104, 86, 87, 88, 104, 90, 64, 104, 104, 104, 104, 69, 70, 104, 72, 73, 74, 104,
- 38, 39, 40, 79, 104, 104, 82, 83, 104, 104, 86, 87, 88, 104, 90, 64, 104, 55,
- 56, 57, 69, 70, 104, 72, 73, 74, 104, 104, 104, 104, 79, 104, 104, 82, 83, 104,
- 104, 86, 87, 88, 104, 90, 104, 104, 64, 104, 1, 104, 104, 69, 70, 104, 72, 73,
- 74, 104, 104, 104, 104, 79, 104, 104, 82, 83, 104, 104, 86, 87, 88, 104, 90, 64,
- 104, 104, 104, 104, 69, 70, 104, 72, 73, 74, 37, 38, 39, 40, 79, 104, 104, 82,
- 83, 104, 104, 86, 87, 88, 104, 90, 64, 104, 55, 56, 57, 69, 70, 104, 72, 73, 74,
- 104, 104, 104, 104, 79, 104, 104, 82, 83, 104, 104, 86, 87, 88, 104, 90, 104,
- 104, 64, 104, 1, 104, 104, 69, 70, 104, 72, 73, 74, 104, 11, 104, 104, 79, 104,
- 104, 82, 83, 104, 104, 86, 87, 88, 104, 90, 64, 104, 104, 104, 104, 69, 70, 104,
- 72, 73, 74, 104, 38, 39, 40, 79, 104, 104, 82, 83, 104, 104, 86, 87, 88, 104,
- 90, 64, 104, 55, 56, 57, 69, 70, 104, 72, 73, 74, 104, 104, 104, 104, 79, 104,
- 104, 82, 83, 104, 104, 86, 87, 88, 104, 90, 104, 104, 64, 104, 1, 104, 104, 69,
- 70, 104, 72, 73, 74, 104, 11, 104, 104, 79, 104, 104, 82, 83, 104, 104, 86, 87,
- 88, 104, 90, 64, 104, 104, 104, 104, 69, 70, 104, 72, 73, 74, 104, 38, 39, 40,
- 79, 104, 104, 82, 83, 104, 104, 86, 87, 88, 104, 90, 64, 104, 55, 56, 57, 69,
- 70, 104, 72, 73, 74, 104, 104, 104, 104, 79, 104, 104, 82, 83, 104, 104, 86, 87,
- 88, 104, 90, 104, 104, 64, 104, 1, 104, 104, 69, 70, 104, 72, 73, 74, 104, 11,
- 104, 104, 79, 104, 104, 82, 83, 104, 104, 86, 87, 88, 104, 90, 64, 104, 104,
- 104, 104, 69, 70, 104, 72, 104, 74, 104, 38, 39, 40, 79, 104, 104, 104, 83, 104,
- 104, 86, 87, 88, 104, 90, 64, 104, 55, 56, 57, 69, 70, 104, 72, 104, 74, 104,
- 104, 104, 104, 79, 104, 104, 2, 83, 1, 104, 86, 87, 88, 104, 90, 104, 12, 13,
- 11, 15, 104, 17, 18, 61, 62, 63, 64, 65, 66, 104, 104, 69, 104, 26, 104, 1, 2,
- 104, 104, 104, 33, 104, 104, 104, 104, 38, 39, 40, 1, 104, 46, 104, 48, 104, 50,
- 104, 52, 104, 104, 104, 104, 104, 55, 56, 57, 2, 104, 104, 21, 104, 36, 104, 38,
- 39, 40, 12, 13, 104, 104, 104, 17, 18, 48, 104, 104, 38, 39, 40, 104, 55, 56,
- 57, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 55, 56, 57, 104, 104, 104,
- 104, 46, 104, 48, 64, 50, 104, 52, 53, 69, 70, 104, 72, 104, 74, 104, 104, 104,
- 104, 79, 104, 104, 104, 104, 104, 104, 86, 87, 88, 64, 90, 1, 71, 104, 69, 70,
- 75, 72, 104, 74, 104, 104, 81, 104, 79, 84, 85, 104, 104, 104, 104, 86, 87, 88,
- 24, 90, 26, 104, 104, 98, 104, 104, 104, 33, 104, 104, 64, 104, 38, 39, 40, 69,
- 70, 104, 72, 104, 74, 104, 104, 104, 104, 79, 104, 104, 2, 55, 56, 57, 86, 87,
- 88, 104, 90, 104, 12, 13, 64, 15, 104, 17, 18, 69, 70, 104, 72, 104, 74, 104,
- 104, 104, 104, 79, 104, 104, 104, 104, 104, 104, 86, 87, 88, 64, 90, 1, 104,
- 104, 69, 70, 46, 72, 48, 74, 50, 104, 52, 104, 79, 104, 104, 2, 104, 104, 2, 86,
- 87, 88, 104, 90, 104, 12, 13, 104, 12, 13, 17, 18, 104, 17, 18, 1, 38, 39, 40,
- 104, 104, 104, 12, 13, 104, 104, 104, 17, 18, 104, 104, 53, 104, 55, 56, 57,
- 104, 104, 104, 46, 26, 48, 46, 50, 48, 52, 50, 33, 52, 104, 1, 11, 38, 39, 40,
- 1, 46, 104, 48, 104, 50, 21, 52, 23, 104, 104, 26, 104, 104, 55, 56, 57, 104,
- 33, 104, 35, 104, 37, 104, 104, 104, 104, 104, 104, 104, 104, 46, 38, 39, 40,
- 104, 104, 38, 39, 40, 104, 104, 104, 104, 104, 104, 104, 104, 71, 55, 56, 57,
- 75, 59, 55, 56, 57, 104, 81, 71, 104, 84, 85, 75, 71, 104, 104, 104, 75, 81,
- 104, 104, 84, 85, 81, 98, 104, 84, 85, 71, 104, 104, 104, 75, 104, 104, 98, 104,
- 104, 81, 71, 98, 84, 85, 75, 104, 104, 104, 104, 104, 81, 104, 104, 84, 85, 104,
- 98, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 98,);
-
- const YY_SHIFT_USE_DFLT = - 13;
-
- const YY_SHIFT_MAX = 236;
-
- static public $yy_shift_ofst = array(542, 364, 82, 82, 82, 411, 364, 411, 35, - 12, - 12, 82, 82, 82, 82, 82, 82,
- 176, 82, 82, 129, 82, 82, 82, 317, 82, 82, 82, 82, 82, 82, 270, 82, 82, 82, 82,
- 176, 223, 223, 458, 458, 458, 458, 458, 1734, 1603, 1862, 1862, 1862, 1862,
- 1862, 542, 749, 803, 1897, 1448, 1531, 1199, 1643, 1826, 1365, 950, 1282, 1033,
- 1116, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 660,
- 1902, 1089, 1089, 594, 666, 131, 202, 865, - 3, 703, 551, 551, 233, 202, 202,
- 131, 131, 357, 97, 484, 144, 920, 505, 42, 768, 189, 232, 11, 232, 278, 324,
- 428, 39, 372, 324, 39, 351, 384, 391, 294, 155, 114, 114, 114, 114, 417, 417,
- 114, 114, 114, 114, - 13, 1786, 1659, 1600, 1844, 1841, 1858, 552, 897, 519,
- 618, 24, 101, 39, 101, 24, 39, 24, 39, 130, 39, 39, 24, 39, 24, 24, 193, 24,
- 39, 39, 39, 24, 39, 39, 39, 130, 39, 39, 39, 130, 39, 130, 39, 231, 39, 39,
- 114, 114, 114, 526, 404, 417, 404, 114, 417, 390, 114, 417, - 13, - 13, - 13,
- - 13, - 13, 1630, 1888, 576, 178, 694, 191, 69, 8, 100, 275, 212, 243, 297,
- 265, 255, 150, 98, 165, 55, 123, 493, 479, 468, 456, 434, 482, 483, 473, 461,
- 502, 489, 457, 452, 466, 422, 421, 449, 442, 444, 462, 432, 467, 440, 464, 446,
- 390,);
-
- const YY_REDUCE_USE_DFLT = - 80;
-
- const YY_REDUCE_MAX = 190;
-
- static public $yy_reduce_ofst = array(1558, 451, 556, 640, 586, 506, 531, 615, 995, 939, 1078, 723, 1244, 968, 856,
- 912, 1354, 1134, 1105, 1161, 1051, 1217, 1022, 1188, 1300, 1466, 1383, 1271,
- 1327, 1437, 1410, 757, 698, 669, 885, 829, 785, 1493, 1520, 1761, 1706, 1669,
- 1644, 1736, 1880, 1665, 1896, 1911, 1665, 1891, 1922, 40, - 29, 48, 119, 119,
- 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,
- 119, 119, 119, 119, 119, 81, 119, 119, 119, 112, 2, - 60, 184, - 6, 264, 358,
- - 65, 217, 213, 218, 197, 284, 269, 166, 363, - 13, 363, 295, 342, - 13, - 13,
- 349, 281, 310, 295, 310, 323, 310, 316, 272, 236, 273, - 13, - 13, - 13, 320,
- 374, - 13, - 13, 366, - 13, 338, 310, - 13, - 13, - 13, - 13, - 13, 465, 465,
- 465, 465, 465, 465, 474, 450, 465, 465, 437, 469, 447, 453, 437, 447, 437,
- 447, 463, 447, 447, 437, 447, 437, 437, 481, 437, 447, 447, 447, 437, 447,
- 447, 447, 478, 447, 447, 447, 511, 447, 504, 447, 503, 447, 447, 241, 241,
- 241, 530, 300, 29, 300, 241, 29, 361, 241, 29, - 79, - 77, 314, 340, 436,);
-
- static public $yyExpectedTokens = array(array(3, 4, 5, 6, 7, 8, 12, 13, 16, 19, 20, 25, 29, 31, 32,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 53, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 30, 31, 32, 34, 36, 39, 43, 44,
- 45, 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 30, 31, 32, 34, 36, 39, 43, 44,
- 45, 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 54, 58,),
- array(1, 24, 26, 33, 38, 39, 40, 55, 56, 57,),
- array(1, 11, 26, 33, 38, 39, 40, 55, 56, 57,),
- array(1, 26, 33, 38, 39, 40, 55, 56, 57,),
- array(1, 26, 33, 38, 39, 40, 55, 56, 57,),
- array(1, 26, 33, 38, 39, 40, 55, 56, 57,),
- array(1, 26, 33, 38, 39, 40, 55, 56, 57,),
- array(1, 26, 33, 38, 39, 40, 55, 56, 57,),
- array(3, 4, 5, 6, 7, 8, 12, 13, 16, 19, 20, 25, 29, 31, 32,),
- array(14, 17, 49, 51, 54,),
- array(5, 12, 13, 14, 16, 19, 20, 25, 29, 31, 32, 58, 59,),
- array(1, 38, 39, 40, 55, 56, 57, 59,),
- array(1, 11, 38, 39, 40, 55, 56, 57,),
- array(1, 11, 38, 39, 40, 55, 56, 57,), array(1, 2, 38, 39, 40, 55, 56, 57,),
- array(1, 21, 38, 39, 40, 55, 56, 57,),
- array(1, 38, 39, 40, 53, 55, 56, 57,),
- array(1, 11, 38, 39, 40, 55, 56, 57,),
- array(1, 27, 38, 39, 40, 55, 56, 57,),
- array(1, 37, 38, 39, 40, 55, 56, 57,),
- array(1, 11, 38, 39, 40, 55, 56, 57,),
- array(1, 37, 38, 39, 40, 55, 56, 57,), array(1, 38, 39, 40, 55, 56, 57,),
- array(1, 38, 39, 40, 55, 56, 57,), array(1, 38, 39, 40, 55, 56, 57,),
- array(1, 38, 39, 40, 55, 56, 57,), array(1, 38, 39, 40, 55, 56, 57,),
- array(1, 38, 39, 40, 55, 56, 57,), array(1, 38, 39, 40, 55, 56, 57,),
- array(1, 38, 39, 40, 55, 56, 57,), array(1, 38, 39, 40, 55, 56, 57,),
- array(1, 38, 39, 40, 55, 56, 57,), array(1, 38, 39, 40, 55, 56, 57,),
- array(1, 11, 18, 26, 33, 36, 48,), array(1, 38, 39, 40, 55, 56, 57,),
- array(38, 39, 40, 55, 56, 57,), array(38, 39, 40, 55, 56, 57,),
- array(14, 17, 51, 54,), array(1, 11, 26, 33,), array(1, 26, 33,),
- array(14, 36, 54,),
- array(5, 12, 13, 14, 16, 19, 20, 25, 29, 31, 32, 58, 59,),
- array(12, 13, 17, 26, 28, 33,), array(12, 13, 17, 26, 28, 33,),
- array(12, 13, 17, 26, 33,), array(12, 13, 17, 26, 33,), array(18, 46, 52,),
- array(14, 36, 54,), array(14, 36, 54,), array(1, 26, 33,),
- array(1, 26, 33,), array(1, 2,), array(11, 22, 26, 33, 41,),
- array(1, 11, 26, 27, 33,), array(11, 22, 26, 33, 41,),
- array(12, 13, 17, 50,), array(13, 14, 17, 54,), array(1, 11, 26, 33,),
- array(1, 11, 26, 33,), array(8, 9, 10,), array(12, 13, 17,),
- array(15, 18, 48,), array(12, 13, 17,), array(15, 18, 48,), array(14, 17,),
- array(18, 48,), array(26, 33,), array(1, 18,), array(14, 17,),
- array(26, 33,), array(1, 28,), array(1, 53,), array(1, 11,), array(26, 33,),
- array(14, 54,), array(1,), array(1,), array(1,), array(1,), array(18,),
- array(18,), array(1,), array(1,), array(1,), array(1,), array(),
- array(2, 12, 13, 15, 17, 18, 46, 48, 50, 52,),
- array(2, 12, 13, 17, 18, 46, 48, 50, 52, 53,),
- array(2, 12, 13, 15, 17, 18, 46, 48, 50, 52,),
- array(2, 12, 13, 17, 18, 46, 48, 50, 52,),
- array(2, 12, 13, 17, 18, 46, 48, 50, 52,),
- array(12, 13, 17, 18, 46, 48, 50, 52,), array(13, 14, 17, 34, 54,),
- array(12, 13, 17, 50,), array(12, 13, 17,), array(15, 46, 52,),
- array(46, 52,), array(46, 52,), array(26, 33,), array(46, 52,),
- array(46, 52,), array(26, 33,), array(46, 52,), array(26, 33,),
- array(14, 54,), array(26, 33,), array(26, 33,), array(46, 52,),
- array(26, 33,), array(46, 52,), array(46, 52,), array(13, 36,),
- array(46, 52,), array(26, 33,), array(26, 33,), array(26, 33,),
- array(46, 52,), array(26, 33,), array(26, 33,), array(26, 33,),
- array(14, 54,), array(26, 33,), array(26, 33,), array(26, 33,),
- array(14, 54,), array(26, 33,), array(14, 54,), array(26, 33,),
- array(15, 22,), array(26, 33,), array(26, 33,), array(1,), array(1,),
- array(1,), array(9,), array(2,), array(18,), array(2,), array(1,),
- array(18,), array(36,), array(1,), array(18,), array(), array(), array(),
- array(), array(), array(1, 2, 36, 38, 39, 40, 48, 55, 56, 57,),
- array(11, 21, 23, 26, 33, 35, 37, 46,), array(11, 15, 26, 33, 36, 48,),
- array(36, 46, 48, 53,), array(12, 13, 17, 50,), array(22, 41, 59,),
- array(22, 41, 53,), array(28, 36, 48,), array(35, 37,), array(36, 48,),
- array(21, 35,), array(35, 37,), array(15, 46,), array(35, 53,),
- array(36, 48,), array(17, 50,), array(22, 41,), array(46, 53,),
- array(35, 37,), array(36, 48,), array(5,), array(17,), array(23,),
- array(37,), array(15,), array(17,), array(17,), array(53,), array(53,),
- array(11,), array(17,), array(51,), array(34,), array(22,), array(51,),
- array(46,), array(17,), array(17,), array(17,), array(17,), array(36,),
- array(17,), array(42,), array(17,), array(34,), array(36,), array(),
- array(), array(), array(), array(), array(), array(), array(), array(),
- array(), array(), array(), array(), array(), array(), array(), array(),
- array(), array(), array(), array(), array(), array(), array(), array(),
- array(), array(), array(), array(), array(), array(), array(), array(),
- array(), array(), array(), array(), array(), array(), array(), array(),
- array(), array(), array(), array(), array(), array(), array(), array(),
- array(), array(), array(), array(), array(), array(), array(), array(),
- array(), array(), array(), array(), array(), array(), array(), array(),
- array(), array(), array(), array(), array(), array(), array(), array(),
- array(), array(), array(), array(), array(), array(), array(), array(),
- array(), array(), array(), array(), array(), array(), array(), array(),
- array(), array(), array(), array(), array(), array(),);
-
- static public $yy_default = array(335, 510, 490, 490, 490, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 393, 525, 360, 393,
- 357, 393, 369, 332, 525, 525, 525, 525, 525, 525, 525, 525, 525, 398, 525, 525,
- 525, 513, 405, 395, 404, 489, 398, 374, 400, 511, 488, 414, 432, 512, 421, 420,
- 525, 407, 393, 525, 525, 393, 393, 393, 393, 502, 525, 525, 393, 393, 383, 422,
- 407, 422, 455, 525, 407, 407, 525, 455, 445, 455, 445, 525, 445, 393, 387, 525,
- 371, 407, 407, 407, 393, 525, 417, 425, 389, 410, 499, 445, 423, 411, 407, 424,
- 497, 444, 444, 444, 444, 444, 444, 525, 457, 455, 471, 449, 448, 366, 450, 451,
- 379, 453, 378, 525, 368, 367, 452, 364, 483, 480, 455, 481, 358, 380, 362, 482,
- 373, 356, 361, 525, 382, 370, 377, 525, 372, 525, 354, 525, 381, 376, 439, 413,
- 384, 348, 492, 477, 491, 388, 503, 455, 390, 500, 455, 496, 496, 496, 455, 432,
- 428, 432, 432, 456, 422, 422, 432, 525, 440, 525, 525, 428, 525, 432, 525, 422,
- 428, 525, 525, 340, 525, 401, 525, 525, 525, 525, 435, 525, 525, 525, 525, 430,
- 422, 525, 428, 525, 525, 525, 525, 501, 525, 434, 525, 525, 471, 412, 391, 402,
- 418, 375, 352, 394, 435, 436, 460, 459, 471, 479, 437, 419, 442, 351, 443, 363,
- 504, 342, 438, 341, 343, 416, 441, 339, 334, 333, 336, 337, 338, 344, 468, 349,
- 347, 350, 476, 505, 469, 406, 415, 345, 346, 466, 506, 486, 385, 487, 495, 508,
- 509, 478, 426, 429, 474, 475, 427, 386, 507, 524, 523, 520, 518, 517, 493, 514,
- 494, 515, 516, 522, 473, 446, 447, 454, 470, 485, 519, 498, 458, 434, 461, 464,
- 472, 467, 484, 521, 431, 433, 465, 463, 409, 462, 408, 392,);
-
- const YYNOCODE = 105;
-
- const YYSTACKDEPTH = 500;
-
- const YYNSTATE = 332;
-
- const YYNRULE = 193;
-
- const YYERRORSYMBOL = 60;
-
- const YYERRSYMDT = 'yy0';
-
- const YYFALLBACK = 0;
-
- public static $yyFallback = array();
-
- public function Trace($TraceFILE, $zTracePrompt)
- {
- if (!$TraceFILE) {
- $zTracePrompt = 0;
- } elseif (!$zTracePrompt) {
- $TraceFILE = 0;
- }
- $this->yyTraceFILE = $TraceFILE;
- $this->yyTracePrompt = $zTracePrompt;
- }
-
- public function PrintTrace()
- {
- $this->yyTraceFILE = fopen('php://output', 'w');
- $this->yyTracePrompt = '<br>';
- }
-
- public $yyTraceFILE;
-
- public $yyTracePrompt;
-
- public $yyidx; /* Index of top element in stack */
- public $yyerrcnt; /* Shifts left before out of the error */
- public $yystack = array(); /* The parser's stack */
-
- public $yyTokenName = array('$', 'VERT', 'COLON', 'PHP', 'NOCACHE', 'TEXT', 'STRIPON', 'STRIPOFF', 'LITERALSTART',
- 'LITERALEND', 'LITERAL', 'RDEL', 'SIMPELOUTPUT', 'LDEL', 'DOLLARID', 'EQUAL',
- 'SIMPLETAG', 'ID', 'PTR', 'LDELIF', 'LDELFOR', 'SEMICOLON', 'INCDEC', 'TO', 'STEP',
- 'LDELFOREACH', 'SPACE', 'AS', 'APTR', 'LDELSETFILTER', 'SMARTYBLOCKCHILDPARENT',
- 'CLOSETAG', 'LDELSLASH', 'ATTR', 'INTEGER', 'COMMA', 'OPENP', 'CLOSEP', 'MATH',
- 'UNIMATH', 'ISIN', 'INSTANCEOF', 'QMARK', 'NOT', 'TYPECAST', 'HEX', 'DOT',
- 'SINGLEQUOTESTRING', 'DOUBLECOLON', 'NAMESPACE', 'AT', 'HATCH', 'OPENB', 'CLOSEB',
- 'DOLLAR', 'LOGOP', 'TLOGOP', 'SINGLECOND', 'QUOTE', 'BACKTICK', 'error', 'start',
- 'template', 'template_element', 'smartytag', 'literal', 'text_content',
- 'literal_elements', 'literal_element', 'tag', 'variable', 'attributes', 'value', 'expr',
- 'varindexed', 'modifierlist', 'statement', 'statements', 'foraction', 'varvar',
- 'modparameters', 'attribute', 'ternary', 'array', 'lop', 'scond', 'ns1', 'function',
- 'doublequoted_with_quotes', 'static_class_access', 'object', 'arrayindex', 'indexdef',
- 'varvarele', 'objectchain', 'objectelement', 'method', 'params', 'modifier',
- 'modparameter', 'arrayelements', 'arrayelement', 'doublequoted',
- 'doublequotedcontent',);
-
- public static $yyRuleName = array('start ::= template', 'template ::= template_element',
- 'template ::= template template_element', 'template ::=',
- 'template_element ::= smartytag', 'template_element ::= literal',
- 'template_element ::= PHP', 'template_element ::= NOCACHE',
- 'template_element ::= text_content', 'text_content ::= TEXT',
- 'text_content ::= text_content TEXT', 'template_element ::= STRIPON',
- 'template_element ::= STRIPOFF', 'literal ::= LITERALSTART LITERALEND',
- 'literal ::= LITERALSTART literal_elements LITERALEND',
- 'literal_elements ::= literal_elements literal_element', 'literal_elements ::=',
- 'literal_element ::= literal', 'literal_element ::= LITERAL',
- 'smartytag ::= tag RDEL', 'smartytag ::= SIMPELOUTPUT', 'tag ::= LDEL variable',
- 'tag ::= LDEL variable attributes', 'tag ::= LDEL value',
- 'tag ::= LDEL value attributes', 'tag ::= LDEL expr',
- 'tag ::= LDEL expr attributes', 'tag ::= LDEL DOLLARID EQUAL value',
- 'tag ::= LDEL DOLLARID EQUAL expr', 'tag ::= LDEL DOLLARID EQUAL expr attributes',
- 'tag ::= LDEL varindexed EQUAL expr attributes', 'smartytag ::= SIMPLETAG',
- 'tag ::= LDEL ID attributes', 'tag ::= LDEL ID',
- 'tag ::= LDEL ID modifierlist attributes', 'tag ::= LDEL ID PTR ID attributes',
- 'tag ::= LDEL ID PTR ID modifierlist attributes', 'tag ::= LDELIF expr',
- 'tag ::= LDELIF expr attributes', 'tag ::= LDELIF statement',
- 'tag ::= LDELIF statement attributes',
- 'tag ::= LDELFOR statements SEMICOLON expr SEMICOLON varindexed foraction attributes',
- 'foraction ::= EQUAL expr', 'foraction ::= INCDEC',
- 'tag ::= LDELFOR statement TO expr attributes',
- 'tag ::= LDELFOR statement TO expr STEP expr attributes',
- 'tag ::= LDELFOREACH attributes',
- 'tag ::= LDELFOREACH SPACE value AS varvar attributes',
- 'tag ::= LDELFOREACH SPACE value AS varvar APTR varvar attributes',
- 'tag ::= LDELFOREACH SPACE expr AS varvar attributes',
- 'tag ::= LDELFOREACH SPACE expr AS varvar APTR varvar attributes',
- 'tag ::= LDELSETFILTER ID modparameters',
- 'tag ::= LDELSETFILTER ID modparameters modifierlist',
- 'tag ::= LDEL SMARTYBLOCKCHILDPARENT', 'smartytag ::= CLOSETAG',
- 'tag ::= LDELSLASH ID', 'tag ::= LDELSLASH ID modifierlist',
- 'tag ::= LDELSLASH ID PTR ID', 'tag ::= LDELSLASH ID PTR ID modifierlist',
- 'attributes ::= attributes attribute', 'attributes ::= attribute',
- 'attributes ::=', 'attribute ::= SPACE ID EQUAL ID', 'attribute ::= ATTR expr',
- 'attribute ::= ATTR value', 'attribute ::= SPACE ID', 'attribute ::= SPACE expr',
- 'attribute ::= SPACE value', 'attribute ::= SPACE INTEGER EQUAL expr',
- 'statements ::= statement', 'statements ::= statements COMMA statement',
- 'statement ::= DOLLARID EQUAL INTEGER', 'statement ::= DOLLARID EQUAL expr',
- 'statement ::= varindexed EQUAL expr', 'statement ::= OPENP statement CLOSEP',
- 'expr ::= value', 'expr ::= ternary', 'expr ::= DOLLARID COLON ID',
- 'expr ::= expr MATH value', 'expr ::= expr UNIMATH value', 'expr ::= array',
- 'expr ::= expr modifierlist', 'expr ::= expr lop expr', 'expr ::= expr scond',
- 'expr ::= expr ISIN array', 'expr ::= expr ISIN value',
- 'expr ::= variable INSTANCEOF ns1', 'expr ::= variable INSTANCEOF variable',
- 'ternary ::= OPENP expr CLOSEP QMARK DOLLARID COLON expr',
- 'ternary ::= OPENP expr CLOSEP QMARK expr COLON expr', 'value ::= variable',
- 'value ::= UNIMATH value', 'value ::= NOT value', 'value ::= TYPECAST value',
- 'value ::= variable INCDEC', 'value ::= HEX', 'value ::= INTEGER',
- 'value ::= INTEGER DOT INTEGER', 'value ::= INTEGER DOT', 'value ::= DOT INTEGER',
- 'value ::= ID', 'value ::= function', 'value ::= OPENP expr CLOSEP',
- 'value ::= SINGLEQUOTESTRING', 'value ::= doublequoted_with_quotes',
- 'value ::= varindexed DOUBLECOLON static_class_access', 'value ::= smartytag',
- 'value ::= value modifierlist', 'value ::= NAMESPACE',
- 'value ::= ns1 DOUBLECOLON static_class_access', 'ns1 ::= ID',
- 'ns1 ::= NAMESPACE', 'variable ::= DOLLARID', 'variable ::= varindexed',
- 'variable ::= varvar AT ID', 'variable ::= object', 'variable ::= HATCH ID HATCH',
- 'variable ::= HATCH ID HATCH arrayindex', 'variable ::= HATCH variable HATCH',
- 'variable ::= HATCH variable HATCH arrayindex',
- 'varindexed ::= DOLLARID arrayindex', 'varindexed ::= varvar arrayindex',
- 'arrayindex ::= arrayindex indexdef', 'arrayindex ::=',
- 'indexdef ::= DOT DOLLARID', 'indexdef ::= DOT varvar',
- 'indexdef ::= DOT varvar AT ID', 'indexdef ::= DOT ID',
- 'indexdef ::= DOT INTEGER', 'indexdef ::= DOT LDEL expr RDEL',
- 'indexdef ::= OPENB ID CLOSEB', 'indexdef ::= OPENB ID DOT ID CLOSEB',
- 'indexdef ::= OPENB SINGLEQUOTESTRING CLOSEB',
- 'indexdef ::= OPENB INTEGER CLOSEB', 'indexdef ::= OPENB DOLLARID CLOSEB',
- 'indexdef ::= OPENB variable CLOSEB', 'indexdef ::= OPENB value CLOSEB',
- 'indexdef ::= OPENB expr CLOSEB', 'indexdef ::= OPENB CLOSEB',
- 'varvar ::= DOLLARID', 'varvar ::= DOLLAR', 'varvar ::= varvar varvarele',
- 'varvarele ::= ID', 'varvarele ::= SIMPELOUTPUT', 'varvarele ::= LDEL expr RDEL',
- 'object ::= varindexed objectchain', 'objectchain ::= objectelement',
- 'objectchain ::= objectchain objectelement',
- 'objectelement ::= PTR ID arrayindex', 'objectelement ::= PTR varvar arrayindex',
- 'objectelement ::= PTR LDEL expr RDEL arrayindex',
- 'objectelement ::= PTR ID LDEL expr RDEL arrayindex',
- 'objectelement ::= PTR method', 'function ::= ns1 OPENP params CLOSEP',
- 'method ::= ID OPENP params CLOSEP', 'method ::= DOLLARID OPENP params CLOSEP',
- 'params ::= params COMMA expr', 'params ::= expr', 'params ::=',
- 'modifierlist ::= modifierlist modifier modparameters',
- 'modifierlist ::= modifier modparameters', 'modifier ::= VERT AT ID',
- 'modifier ::= VERT ID', 'modparameters ::= modparameters modparameter',
- 'modparameters ::=', 'modparameter ::= COLON value',
- 'modparameter ::= COLON array', 'static_class_access ::= method',
- 'static_class_access ::= method objectchain', 'static_class_access ::= ID',
- 'static_class_access ::= DOLLARID arrayindex',
- 'static_class_access ::= DOLLARID arrayindex objectchain', 'lop ::= LOGOP',
- 'lop ::= TLOGOP', 'scond ::= SINGLECOND', 'array ::= OPENB arrayelements CLOSEB',
- 'arrayelements ::= arrayelement',
- 'arrayelements ::= arrayelements COMMA arrayelement', 'arrayelements ::=',
- 'arrayelement ::= value APTR expr', 'arrayelement ::= ID APTR expr',
- 'arrayelement ::= expr', 'doublequoted_with_quotes ::= QUOTE QUOTE',
- 'doublequoted_with_quotes ::= QUOTE doublequoted QUOTE',
- 'doublequoted ::= doublequoted doublequotedcontent',
- 'doublequoted ::= doublequotedcontent',
- 'doublequotedcontent ::= BACKTICK variable BACKTICK',
- 'doublequotedcontent ::= BACKTICK expr BACKTICK',
- 'doublequotedcontent ::= DOLLARID', 'doublequotedcontent ::= LDEL variable RDEL',
- 'doublequotedcontent ::= LDEL expr RDEL', 'doublequotedcontent ::= smartytag',
- 'doublequotedcontent ::= TEXT',);
-
- public function tokenName($tokenType)
- {
- if ($tokenType === 0) {
- return 'End of Input';
- }
- if ($tokenType > 0 && $tokenType < count($this->yyTokenName)) {
- return $this->yyTokenName[ $tokenType ];
- } else {
- return "Unknown";
- }
- }
-
- public static function yy_destructor($yymajor, $yypminor)
- {
- switch ($yymajor) {
- default:
- break; /* If no destructor action specified: do nothing */
- }
- }
-
- public function yy_pop_parser_stack()
- {
- if (empty($this->yystack)) {
- return;
- }
- $yytos = array_pop($this->yystack);
- if ($this->yyTraceFILE && $this->yyidx >= 0) {
- fwrite($this->yyTraceFILE, $this->yyTracePrompt . 'Popping ' . $this->yyTokenName[ $yytos->major ] . "\n");
- }
- $yymajor = $yytos->major;
- self::yy_destructor($yymajor, $yytos->minor);
- $this->yyidx --;
-
- return $yymajor;
- }
-
- public function __destruct()
- {
- while ($this->yystack !== Array()) {
- $this->yy_pop_parser_stack();
- }
- if (is_resource($this->yyTraceFILE)) {
- fclose($this->yyTraceFILE);
- }
- }
-
- public function yy_get_expected_tokens($token)
- {
- static $res3 = array();
- static $res4 = array();
- $state = $this->yystack[ $this->yyidx ]->stateno;
- $expected = self::$yyExpectedTokens[ $state ];
- if (isset($res3[ $state ][ $token ])) {
- if ($res3[ $state ][ $token ]) {
- return $expected;
- }
- } else {
- if ($res3[ $state ][ $token ] = in_array($token, self::$yyExpectedTokens[ $state ], true)) {
- return $expected;
- }
- }
- $stack = $this->yystack;
- $yyidx = $this->yyidx;
- do {
- $yyact = $this->yy_find_shift_action($token);
- if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
- // reduce action
- $done = 0;
- do {
- if ($done ++ == 100) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- // too much recursion prevents proper detection
- // so give up
- return array_unique($expected);
- }
- $yyruleno = $yyact - self::YYNSTATE;
- $this->yyidx -= self::$yyRuleInfo[ $yyruleno ][ 1 ];
- $nextstate = $this->yy_find_reduce_action($this->yystack[ $this->yyidx ]->stateno,
- self::$yyRuleInfo[ $yyruleno ][ 0 ]);
- if (isset(self::$yyExpectedTokens[ $nextstate ])) {
- $expected = array_merge($expected, self::$yyExpectedTokens[ $nextstate ]);
- if (isset($res4[ $nextstate ][ $token ])) {
- if ($res4[ $nextstate ][ $token ]) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- return array_unique($expected);
- }
- } else {
- if ($res4[ $nextstate ][ $token ] =
- in_array($token, self::$yyExpectedTokens[ $nextstate ], true)
- ) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- return array_unique($expected);
- }
- }
- }
- if ($nextstate < self::YYNSTATE) {
- // we need to shift a non-terminal
- $this->yyidx ++;
- $x = new TP_yyStackEntry;
- $x->stateno = $nextstate;
- $x->major = self::$yyRuleInfo[ $yyruleno ][ 0 ];
- $this->yystack[ $this->yyidx ] = $x;
- continue 2;
- } elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- // the last token was just ignored, we can't accept
- // by ignoring input, this is in essence ignoring a
- // syntax error!
- return array_unique($expected);
- } elseif ($nextstate === self::YY_NO_ACTION) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- // input accepted, but not shifted (I guess)
- return $expected;
- } else {
- $yyact = $nextstate;
- }
- } while (true);
- }
- break;
- } while (true);
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
-
- return array_unique($expected);
- }
-
- public function yy_is_expected_token($token)
- {
- static $res = array();
- static $res2 = array();
- if ($token === 0) {
- return true; // 0 is not part of this
- }
- $state = $this->yystack[ $this->yyidx ]->stateno;
- if (isset($res[ $state ][ $token ])) {
- if ($res[ $state ][ $token ]) {
- return true;
- }
- } else {
- if ($res[ $state ][ $token ] = in_array($token, self::$yyExpectedTokens[ $state ], true)) {
- return true;
- }
- }
- $stack = $this->yystack;
- $yyidx = $this->yyidx;
- do {
- $yyact = $this->yy_find_shift_action($token);
- if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
- // reduce action
- $done = 0;
- do {
- if ($done ++ == 100) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- // too much recursion prevents proper detection
- // so give up
- return true;
- }
- $yyruleno = $yyact - self::YYNSTATE;
- $this->yyidx -= self::$yyRuleInfo[ $yyruleno ][ 1 ];
- $nextstate = $this->yy_find_reduce_action($this->yystack[ $this->yyidx ]->stateno,
- self::$yyRuleInfo[ $yyruleno ][ 0 ]);
- if (isset($res2[ $nextstate ][ $token ])) {
- if ($res2[ $nextstate ][ $token ]) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- return true;
- }
- } else {
- if ($res2[ $nextstate ][ $token ] = (isset(self::$yyExpectedTokens[ $nextstate ]) &&
- in_array($token, self::$yyExpectedTokens[ $nextstate ], true))
- ) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- return true;
- }
- }
- if ($nextstate < self::YYNSTATE) {
- // we need to shift a non-terminal
- $this->yyidx ++;
- $x = new TP_yyStackEntry;
- $x->stateno = $nextstate;
- $x->major = self::$yyRuleInfo[ $yyruleno ][ 0 ];
- $this->yystack[ $this->yyidx ] = $x;
- continue 2;
- } elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- if (!$token) {
- // end of input: this is valid
- return true;
- }
- // the last token was just ignored, we can't accept
- // by ignoring input, this is in essence ignoring a
- // syntax error!
- return false;
- } elseif ($nextstate === self::YY_NO_ACTION) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- // input accepted, but not shifted (I guess)
- return true;
- } else {
- $yyact = $nextstate;
- }
- } while (true);
- }
- break;
- } while (true);
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
-
- return true;
- }
-
- public function yy_find_shift_action($iLookAhead)
- {
- $stateno = $this->yystack[ $this->yyidx ]->stateno;
-
- /* if ($this->yyidx < 0) return self::YY_NO_ACTION; */
- if (!isset(self::$yy_shift_ofst[ $stateno ])) {
- // no shift actions
- return self::$yy_default[ $stateno ];
- }
- $i = self::$yy_shift_ofst[ $stateno ];
- if ($i === self::YY_SHIFT_USE_DFLT) {
- return self::$yy_default[ $stateno ];
- }
- if ($iLookAhead == self::YYNOCODE) {
- return self::YY_NO_ACTION;
- }
- $i += $iLookAhead;
- if ($i < 0 || $i >= self::YY_SZ_ACTTAB || self::$yy_lookahead[ $i ] != $iLookAhead) {
- if (count(self::$yyFallback) && $iLookAhead < count(self::$yyFallback) &&
- ($iFallback = self::$yyFallback[ $iLookAhead ]) != 0
- ) {
- if ($this->yyTraceFILE) {
- fwrite($this->yyTraceFILE,
- $this->yyTracePrompt . "FALLBACK " . $this->yyTokenName[ $iLookAhead ] . " => " .
- $this->yyTokenName[ $iFallback ] . "\n");
- }
-
- return $this->yy_find_shift_action($iFallback);
- }
-
- return self::$yy_default[ $stateno ];
- } else {
- return self::$yy_action[ $i ];
- }
- }
-
- public function yy_find_reduce_action($stateno, $iLookAhead)
- {
- /* $stateno = $this->yystack[$this->yyidx]->stateno; */
-
- if (!isset(self::$yy_reduce_ofst[ $stateno ])) {
- return self::$yy_default[ $stateno ];
- }
- $i = self::$yy_reduce_ofst[ $stateno ];
- if ($i == self::YY_REDUCE_USE_DFLT) {
- return self::$yy_default[ $stateno ];
- }
- if ($iLookAhead == self::YYNOCODE) {
- return self::YY_NO_ACTION;
- }
- $i += $iLookAhead;
- if ($i < 0 || $i >= self::YY_SZ_ACTTAB || self::$yy_lookahead[ $i ] != $iLookAhead) {
- return self::$yy_default[ $stateno ];
- } else {
- return self::$yy_action[ $i ];
- }
- }
-
- public function yy_shift($yyNewState, $yyMajor, $yypMinor)
- {
- $this->yyidx ++;
- if ($this->yyidx >= self::YYSTACKDEPTH) {
- $this->yyidx --;
- if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%sStack Overflow!\n", $this->yyTracePrompt);
- }
- while ($this->yyidx >= 0) {
- $this->yy_pop_parser_stack();
- }
- #line 214 "../smarty/lexer/smarty_internal_templateparser.y"
-
- $this->internalError = true;
- $this->compiler->trigger_template_error("Stack overflow in template parser");
-
- return;
- }
- $yytos = new TP_yyStackEntry;
- $yytos->stateno = $yyNewState;
- $yytos->major = $yyMajor;
- $yytos->minor = $yypMinor;
- $this->yystack[] = $yytos;
- if ($this->yyTraceFILE && $this->yyidx > 0) {
- fprintf($this->yyTraceFILE, "%sShift %d\n", $this->yyTracePrompt, $yyNewState);
- fprintf($this->yyTraceFILE, "%sStack:", $this->yyTracePrompt);
- for ($i = 1; $i <= $this->yyidx; $i ++) {
- fprintf($this->yyTraceFILE, " %s", $this->yyTokenName[ $this->yystack[ $i ]->major ]);
- }
- fwrite($this->yyTraceFILE, "\n");
- }
- }
-
- public static $yyRuleInfo = array(array(0 => 61, 1 => 1), array(0 => 62, 1 => 1), array(0 => 62, 1 => 2),
- array(0 => 62, 1 => 0), array(0 => 63, 1 => 1), array(0 => 63, 1 => 1),
- array(0 => 63, 1 => 1), array(0 => 63, 1 => 1), array(0 => 63, 1 => 1),
- array(0 => 66, 1 => 1), array(0 => 66, 1 => 2), array(0 => 63, 1 => 1),
- array(0 => 63, 1 => 1), array(0 => 65, 1 => 2), array(0 => 65, 1 => 3),
- array(0 => 67, 1 => 2), array(0 => 67, 1 => 0), array(0 => 68, 1 => 1),
- array(0 => 68, 1 => 1), array(0 => 64, 1 => 2), array(0 => 64, 1 => 1),
- array(0 => 69, 1 => 2), array(0 => 69, 1 => 3), array(0 => 69, 1 => 2),
- array(0 => 69, 1 => 3), array(0 => 69, 1 => 2), array(0 => 69, 1 => 3),
- array(0 => 69, 1 => 4), array(0 => 69, 1 => 4), array(0 => 69, 1 => 5),
- array(0 => 69, 1 => 5), array(0 => 64, 1 => 1), array(0 => 69, 1 => 3),
- array(0 => 69, 1 => 2), array(0 => 69, 1 => 4), array(0 => 69, 1 => 5),
- array(0 => 69, 1 => 6), array(0 => 69, 1 => 2), array(0 => 69, 1 => 3),
- array(0 => 69, 1 => 2), array(0 => 69, 1 => 3), array(0 => 69, 1 => 8),
- array(0 => 78, 1 => 2), array(0 => 78, 1 => 1), array(0 => 69, 1 => 5),
- array(0 => 69, 1 => 7), array(0 => 69, 1 => 2), array(0 => 69, 1 => 6),
- array(0 => 69, 1 => 8), array(0 => 69, 1 => 6), array(0 => 69, 1 => 8),
- array(0 => 69, 1 => 3), array(0 => 69, 1 => 4), array(0 => 69, 1 => 2),
- array(0 => 64, 1 => 1), array(0 => 69, 1 => 2), array(0 => 69, 1 => 3),
- array(0 => 69, 1 => 4), array(0 => 69, 1 => 5), array(0 => 71, 1 => 2),
- array(0 => 71, 1 => 1), array(0 => 71, 1 => 0), array(0 => 81, 1 => 4),
- array(0 => 81, 1 => 2), array(0 => 81, 1 => 2), array(0 => 81, 1 => 2),
- array(0 => 81, 1 => 2), array(0 => 81, 1 => 2), array(0 => 81, 1 => 4),
- array(0 => 77, 1 => 1), array(0 => 77, 1 => 3), array(0 => 76, 1 => 3),
- array(0 => 76, 1 => 3), array(0 => 76, 1 => 3), array(0 => 76, 1 => 3),
- array(0 => 73, 1 => 1), array(0 => 73, 1 => 1), array(0 => 73, 1 => 3),
- array(0 => 73, 1 => 3), array(0 => 73, 1 => 3), array(0 => 73, 1 => 1),
- array(0 => 73, 1 => 2), array(0 => 73, 1 => 3), array(0 => 73, 1 => 2),
- array(0 => 73, 1 => 3), array(0 => 73, 1 => 3), array(0 => 73, 1 => 3),
- array(0 => 73, 1 => 3), array(0 => 82, 1 => 7), array(0 => 82, 1 => 7),
- array(0 => 72, 1 => 1), array(0 => 72, 1 => 2), array(0 => 72, 1 => 2),
- array(0 => 72, 1 => 2), array(0 => 72, 1 => 2), array(0 => 72, 1 => 1),
- array(0 => 72, 1 => 1), array(0 => 72, 1 => 3), array(0 => 72, 1 => 2),
- array(0 => 72, 1 => 2), array(0 => 72, 1 => 1), array(0 => 72, 1 => 1),
- array(0 => 72, 1 => 3), array(0 => 72, 1 => 1), array(0 => 72, 1 => 1),
- array(0 => 72, 1 => 3), array(0 => 72, 1 => 1), array(0 => 72, 1 => 2),
- array(0 => 72, 1 => 1), array(0 => 72, 1 => 3), array(0 => 86, 1 => 1),
- array(0 => 86, 1 => 1), array(0 => 70, 1 => 1), array(0 => 70, 1 => 1),
- array(0 => 70, 1 => 3), array(0 => 70, 1 => 1), array(0 => 70, 1 => 3),
- array(0 => 70, 1 => 4), array(0 => 70, 1 => 3), array(0 => 70, 1 => 4),
- array(0 => 74, 1 => 2), array(0 => 74, 1 => 2), array(0 => 91, 1 => 2),
- array(0 => 91, 1 => 0), array(0 => 92, 1 => 2), array(0 => 92, 1 => 2),
- array(0 => 92, 1 => 4), array(0 => 92, 1 => 2), array(0 => 92, 1 => 2),
- array(0 => 92, 1 => 4), array(0 => 92, 1 => 3), array(0 => 92, 1 => 5),
- array(0 => 92, 1 => 3), array(0 => 92, 1 => 3), array(0 => 92, 1 => 3),
- array(0 => 92, 1 => 3), array(0 => 92, 1 => 3), array(0 => 92, 1 => 3),
- array(0 => 92, 1 => 2), array(0 => 79, 1 => 1), array(0 => 79, 1 => 1),
- array(0 => 79, 1 => 2), array(0 => 93, 1 => 1), array(0 => 93, 1 => 1),
- array(0 => 93, 1 => 3), array(0 => 90, 1 => 2), array(0 => 94, 1 => 1),
- array(0 => 94, 1 => 2), array(0 => 95, 1 => 3), array(0 => 95, 1 => 3),
- array(0 => 95, 1 => 5), array(0 => 95, 1 => 6), array(0 => 95, 1 => 2),
- array(0 => 87, 1 => 4), array(0 => 96, 1 => 4), array(0 => 96, 1 => 4),
- array(0 => 97, 1 => 3), array(0 => 97, 1 => 1), array(0 => 97, 1 => 0),
- array(0 => 75, 1 => 3), array(0 => 75, 1 => 2), array(0 => 98, 1 => 3),
- array(0 => 98, 1 => 2), array(0 => 80, 1 => 2), array(0 => 80, 1 => 0),
- array(0 => 99, 1 => 2), array(0 => 99, 1 => 2), array(0 => 89, 1 => 1),
- array(0 => 89, 1 => 2), array(0 => 89, 1 => 1), array(0 => 89, 1 => 2),
- array(0 => 89, 1 => 3), array(0 => 84, 1 => 1), array(0 => 84, 1 => 1),
- array(0 => 85, 1 => 1), array(0 => 83, 1 => 3), array(0 => 100, 1 => 1),
- array(0 => 100, 1 => 3), array(0 => 100, 1 => 0), array(0 => 101, 1 => 3),
- array(0 => 101, 1 => 3), array(0 => 101, 1 => 1), array(0 => 88, 1 => 2),
- array(0 => 88, 1 => 3), array(0 => 102, 1 => 2), array(0 => 102, 1 => 1),
- array(0 => 103, 1 => 3), array(0 => 103, 1 => 3), array(0 => 103, 1 => 1),
- array(0 => 103, 1 => 3), array(0 => 103, 1 => 3), array(0 => 103, 1 => 1),
- array(0 => 103, 1 => 1),);
-
- public static $yyReduceMap = array(0 => 0, 1 => 1, 2 => 2, 4 => 4, 5 => 5, 6 => 6, 7 => 7, 8 => 8, 9 => 9,
- 17 => 9, 18 => 9, 43 => 9, 66 => 9, 67 => 9, 75 => 9, 76 => 9, 80 => 9, 90 => 9,
- 95 => 9, 96 => 9, 101 => 9, 103 => 9, 104 => 9, 108 => 9, 110 => 9, 115 => 9,
- 176 => 9, 181 => 9, 10 => 10, 11 => 11, 12 => 12, 13 => 13, 16 => 13, 14 => 14,
- 74 => 14, 15 => 15, 91 => 15, 93 => 15, 94 => 15, 122 => 15, 19 => 19, 20 => 20,
- 21 => 21, 23 => 21, 25 => 21, 22 => 22, 24 => 22, 26 => 22, 27 => 27, 28 => 27,
- 29 => 29, 30 => 30, 31 => 31, 32 => 32, 33 => 33, 34 => 34, 35 => 35, 36 => 36,
- 37 => 37, 38 => 38, 40 => 38, 39 => 39, 41 => 41, 42 => 42, 44 => 44, 45 => 45,
- 46 => 46, 47 => 47, 49 => 47, 48 => 48, 50 => 48, 51 => 51, 52 => 52, 53 => 53,
- 54 => 54, 55 => 55, 56 => 56, 57 => 57, 58 => 58, 59 => 59, 60 => 60, 69 => 60,
- 157 => 60, 161 => 60, 165 => 60, 166 => 60, 61 => 61, 158 => 61, 164 => 61,
- 62 => 62, 63 => 63, 64 => 63, 65 => 65, 142 => 65, 68 => 68, 70 => 70, 71 => 71,
- 72 => 71, 73 => 73, 77 => 77, 78 => 78, 79 => 78, 81 => 81, 107 => 81, 82 => 82,
- 83 => 83, 84 => 84, 85 => 85, 86 => 86, 87 => 86, 88 => 88, 89 => 89, 92 => 92,
- 97 => 97, 98 => 98, 99 => 99, 100 => 100, 102 => 102, 105 => 105, 106 => 106,
- 109 => 109, 111 => 111, 112 => 112, 113 => 113, 114 => 114, 116 => 116,
- 117 => 117, 118 => 118, 119 => 119, 120 => 120, 121 => 121, 123 => 123,
- 178 => 123, 124 => 124, 125 => 125, 126 => 126, 127 => 127, 128 => 128,
- 129 => 129, 137 => 129, 130 => 130, 131 => 131, 132 => 132, 133 => 132,
- 135 => 132, 136 => 132, 134 => 134, 138 => 138, 139 => 139, 140 => 140,
- 182 => 140, 141 => 141, 143 => 143, 144 => 144, 145 => 145, 146 => 146,
- 147 => 147, 148 => 148, 149 => 149, 150 => 150, 151 => 151, 152 => 152,
- 153 => 153, 154 => 154, 155 => 155, 156 => 156, 159 => 159, 160 => 160,
- 162 => 162, 163 => 163, 167 => 167, 168 => 168, 169 => 169, 170 => 170,
- 171 => 171, 172 => 172, 173 => 173, 174 => 174, 175 => 175, 177 => 177,
- 179 => 179, 180 => 180, 183 => 183, 184 => 184, 185 => 185, 186 => 186,
- 187 => 186, 189 => 186, 188 => 188, 190 => 190, 191 => 191, 192 => 192,);
-
- #line 225 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r0()
- {
- $this->root_buffer->prepend_array($this, $this->template_prefix);
- $this->root_buffer->append_array($this, $this->template_postfix);
- $this->_retvalue = $this->root_buffer->to_smarty_php($this);
- }
-
- #line 235 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r1()
- {
- if ($this->yystack[ $this->yyidx + 0 ]->minor != null) {
- $this->current_buffer->append_subtree($this, $this->yystack[ $this->yyidx + 0 ]->minor);
- }
- }
-
- #line 242 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r2()
- {
- if ($this->yystack[ $this->yyidx + 0 ]->minor != null) {
- // because of possible code injection
- $this->current_buffer->append_subtree($this, $this->yystack[ $this->yyidx + 0 ]->minor);
- }
- }
-
- #line 256 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r4()
- {
- if ($this->compiler->has_code) {
- $this->_retvalue = $this->mergePrefixCode($this->yystack[ $this->yyidx + 0 ]->minor);
- } else {
- $this->_retvalue = null;
- }
- $this->compiler->has_variable_string = false;
- $this->block_nesting_level = count($this->compiler->_tag_stack);
- }
-
- #line 267 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r5()
- {
- $this->_retvalue = new Smarty_Internal_ParseTree_Text($this->yystack[ $this->yyidx + 0 ]->minor);
- }
-
- #line 271 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r6()
- {
- $code = $this->compiler->compileTag('private_php',
- array(array('code' => $this->yystack[ $this->yyidx + 0 ]->minor),
- array('type' => $this->lex->phpType)), array());
- if ($this->compiler->has_code && !empty($code)) {
- $tmp = '';
- foreach ($this->compiler->prefix_code as $code) {
- $tmp .= $code;
- }
- $this->compiler->prefix_code = array();
- $this->_retvalue =
- new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode($tmp . $code, true));
- } else {
- $this->_retvalue = null;
- }
- }
-
- #line 282 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r7()
- {
- $this->compiler->tag_nocache = true;
- $save = $this->template->compiled->has_nocache_code;
- $this->_retvalue = new Smarty_Internal_ParseTree_Tag($this,
- $this->compiler->processNocacheCode("<?php echo '{$this->yystack[$this->yyidx + 0]->minor}';?>\n",
- $this->compiler,
- true));
- $this->template->compiled->has_nocache_code = $save;
- }
-
- #line 289 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r8()
- {
- $this->_retvalue = $this->compiler->processText($this->yystack[ $this->yyidx + 0 ]->minor);
- }
-
- #line 293 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r9()
- {
- $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- #line 297 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r10()
- {
- $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- #line 302 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r11()
- {
- $this->strip = true;
- }
-
- #line 306 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r12()
- {
- $this->strip = false;
- }
-
- #line 311 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r13()
- {
- $this->_retvalue = '';
- }
-
- #line 315 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r14()
- {
- $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor;
- }
-
- #line 319 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r15()
- {
- $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- #line 335 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r19()
- {
- $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor;
- }
-
- #line 341 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r20()
- {
- $var =
- trim(substr($this->yystack[ $this->yyidx + 0 ]->minor, $this->lex->ldel_length, - $this->lex->rdel_length),
- ' $');
- if (preg_match('/^(.*)(\s+nocache)$/', $var, $match)) {
- $this->_retvalue = $this->compiler->compileTag('private_print_expression', array('nocache'),
- array('value' => $this->compiler->compileVariable('\'' .
- $match[ 1 ] .
- '\'')));
- } else {
- $this->_retvalue = $this->compiler->compileTag('private_print_expression', array(),
- array('value' => $this->compiler->compileVariable('\'' .
- $var .
- '\'')));
- }
- }
-
- #line 351 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r21()
- {
- $this->_retvalue = $this->compiler->compileTag('private_print_expression', array(),
- array('value' => $this->yystack[ $this->yyidx + 0 ]->minor));
- }
-
- #line 355 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r22()
- {
- $this->_retvalue =
- $this->compiler->compileTag('private_print_expression', $this->yystack[ $this->yyidx + 0 ]->minor,
- array('value' => $this->yystack[ $this->yyidx + - 1 ]->minor));
- }
-
- #line 378 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r27()
- {
- $this->_retvalue = $this->compiler->compileTag('assign', array(array('value' => $this->yystack[ $this->yyidx +
- 0 ]->minor), array('var' => '\'' . substr($this->yystack[ $this->yyidx + - 2 ]->minor, 1) . '\'')));
- }
-
- #line 386 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r29()
- {
- $this->_retvalue = $this->compiler->compileTag('assign',
- array_merge(array(array('value' => $this->yystack[ $this->yyidx +
- - 1 ]->minor), array('var' => '\'' .
- substr($this->yystack[ $this->yyidx + - 3 ]->minor, 1) .
- '\'')), $this->yystack[ $this->yyidx + 0 ]->minor));
- }
-
- #line 390 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r30()
- {
- $this->_retvalue = $this->compiler->compileTag('assign',
- array_merge(array(array('value' => $this->yystack[ $this->yyidx +
- - 1 ]->minor), array('var' => $this->yystack[ $this->yyidx +
- - 3 ]->minor[ 'var' ])),
- $this->yystack[ $this->yyidx + 0 ]->minor),
- array('smarty_internal_index' => $this->yystack[ $this->yyidx +
- - 3 ]->minor[ 'smarty_internal_index' ]));
- }
-
- #line 395 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r31()
- {
- $tag =
- trim(substr($this->yystack[ $this->yyidx + 0 ]->minor, $this->lex->ldel_length, - $this->lex->rdel_length));
- if ($tag == 'strip') {
- $this->strip = true;
- $this->_retvalue = null;;
- } else {
- if (defined($tag)) {
- if ($this->security) {
- $this->security->isTrustedConstant($tag, $this->compiler);
- }
- $this->_retvalue =
- $this->compiler->compileTag('private_print_expression', array(), array('value' => $tag));
- } else {
- if (preg_match('/^(.*)(\s+nocache)$/', $tag, $match)) {
- $this->_retvalue = $this->compiler->compileTag($match[ 1 ], array("'nocache'"));
- } else {
- $this->_retvalue = $this->compiler->compileTag($tag, array());
- }
- }
- }
- }
-
- #line 417 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r32()
- {
- if (defined($this->yystack[ $this->yyidx + - 1 ]->minor)) {
- if ($this->security) {
- $this->security->isTrustedConstant($this->yystack[ $this->yyidx + - 1 ]->minor, $this->compiler);
- }
- $this->_retvalue =
- $this->compiler->compileTag('private_print_expression', $this->yystack[ $this->yyidx + 0 ]->minor,
- array('value' => $this->yystack[ $this->yyidx + - 1 ]->minor));
- } else {
- $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + - 1 ]->minor,
- $this->yystack[ $this->yyidx + 0 ]->minor);
- }
- }
-
- #line 427 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r33()
- {
- if (defined($this->yystack[ $this->yyidx + 0 ]->minor)) {
- if ($this->security) {
- $this->security->isTrustedConstant($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler);
- }
- $this->_retvalue = $this->compiler->compileTag('private_print_expression', array(),
- array('value' => $this->yystack[ $this->yyidx + 0 ]->minor));
- } else {
- $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + 0 ]->minor, array());
- }
- }
-
- #line 440 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r34()
- {
- if (defined($this->yystack[ $this->yyidx + - 2 ]->minor)) {
- if ($this->security) {
- $this->security->isTrustedConstant($this->yystack[ $this->yyidx + - 2 ]->minor, $this->compiler);
- }
- $this->_retvalue =
- $this->compiler->compileTag('private_print_expression', $this->yystack[ $this->yyidx + 0 ]->minor,
- array('value' => $this->yystack[ $this->yyidx + - 2 ]->minor,
- 'modifierlist' => $this->yystack[ $this->yyidx + - 1 ]->minor));
- } else {
- $this->_retvalue = '<?php ob_start();?>' .
- $this->compiler->compileTag($this->yystack[ $this->yyidx + - 2 ]->minor,
- $this->yystack[ $this->yyidx + 0 ]->minor) . '<?php echo ';
- $this->_retvalue .= $this->compiler->compileTag('private_modifier', array(),
- array('modifierlist' => $this->yystack[ $this->yyidx +
- - 1 ]->minor, 'value' => 'ob_get_clean()')) . ';?>';
- }
- }
-
- #line 453 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r35()
- {
- $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + - 3 ]->minor,
- $this->yystack[ $this->yyidx + 0 ]->minor,
- array('object_method' => $this->yystack[ $this->yyidx +
- - 1 ]->minor));
- }
-
- #line 458 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r36()
- {
- $this->_retvalue = '<?php ob_start();?>' .
- $this->compiler->compileTag($this->yystack[ $this->yyidx + - 4 ]->minor,
- $this->yystack[ $this->yyidx + 0 ]->minor,
- array('object_method' => $this->yystack[ $this->yyidx + - 2 ]->minor)) .
- '<?php echo ';
- $this->_retvalue .= $this->compiler->compileTag('private_modifier', array(),
- array('modifierlist' => $this->yystack[ $this->yyidx +
- - 1 ]->minor, 'value' => 'ob_get_clean()')) . ';?>';
- }
-
- #line 464 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r37()
- {
- $tag = trim(substr($this->yystack[ $this->yyidx + - 1 ]->minor, $this->lex->ldel_length));
- $this->_retvalue = $this->compiler->compileTag(($tag == 'else if') ? 'elseif' : $tag, array(),
- array('if condition' => $this->yystack[ $this->yyidx +
- 0 ]->minor));
- }
-
- #line 469 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r38()
- {
- $tag = trim(substr($this->yystack[ $this->yyidx + - 2 ]->minor, $this->lex->ldel_length));
- $this->_retvalue = $this->compiler->compileTag(($tag == 'else if') ? 'elseif' : $tag,
- $this->yystack[ $this->yyidx + 0 ]->minor,
- array('if condition' => $this->yystack[ $this->yyidx +
- - 1 ]->minor));
- }
-
- #line 474 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r39()
- {
- $tag = trim(substr($this->yystack[ $this->yyidx + - 1 ]->minor, $this->lex->ldel_length));
- $this->_retvalue = $this->compiler->compileTag(($tag == 'else if') ? 'elseif' : $tag, array(),
- array('if condition' => $this->yystack[ $this->yyidx +
- 0 ]->minor));
- }
-
- #line 485 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r41()
- {
- $this->_retvalue = $this->compiler->compileTag('for', array_merge($this->yystack[ $this->yyidx + 0 ]->minor,
- array(array('start' => $this->yystack[ $this->yyidx +
- - 6 ]->minor),
- array('ifexp' => $this->yystack[ $this->yyidx +
- - 4 ]->minor),
- array('var' => $this->yystack[ $this->yyidx +
- - 2 ]->minor),
- array('step' => $this->yystack[ $this->yyidx +
- - 1 ]->minor))), 1);
- }
-
- #line 489 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r42()
- {
- $this->_retvalue = '=' . $this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- #line 497 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r44()
- {
- $this->_retvalue = $this->compiler->compileTag('for', array_merge($this->yystack[ $this->yyidx + 0 ]->minor,
- array(array('start' => $this->yystack[ $this->yyidx +
- - 3 ]->minor),
- array('to' => $this->yystack[ $this->yyidx +
- - 1 ]->minor))), 0);
- }
-
- #line 501 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r45()
- {
- $this->_retvalue = $this->compiler->compileTag('for', array_merge($this->yystack[ $this->yyidx + 0 ]->minor,
- array(array('start' => $this->yystack[ $this->yyidx +
- - 5 ]->minor),
- array('to' => $this->yystack[ $this->yyidx +
- - 3 ]->minor),
- array('step' => $this->yystack[ $this->yyidx +
- - 1 ]->minor))), 0);
- }
-
- #line 506 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r46()
- {
- $this->_retvalue = $this->compiler->compileTag('foreach', $this->yystack[ $this->yyidx + 0 ]->minor);
- }
-
- #line 511 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r47()
- {
- $this->_retvalue = $this->compiler->compileTag('foreach', array_merge($this->yystack[ $this->yyidx + 0 ]->minor,
- array(array('from' => $this->yystack[ $this->yyidx +
- - 3 ]->minor),
- array('item' => $this->yystack[ $this->yyidx +
- - 1 ]->minor))));
- }
-
- #line 515 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r48()
- {
- $this->_retvalue = $this->compiler->compileTag('foreach', array_merge($this->yystack[ $this->yyidx + 0 ]->minor,
- array(array('from' => $this->yystack[ $this->yyidx +
- - 5 ]->minor),
- array('item' => $this->yystack[ $this->yyidx +
- - 1 ]->minor),
- array('key' => $this->yystack[ $this->yyidx +
- - 3 ]->minor))));
- }
-
- #line 528 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r51()
- {
- $this->_retvalue = $this->compiler->compileTag('setfilter', array(),
- array('modifier_list' => array(array_merge(array($this->yystack[ $this->yyidx +
- - 1 ]->minor), $this->yystack[ $this->yyidx + 0 ]->minor))));
- }
-
- #line 532 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r52()
- {
- $this->_retvalue = $this->compiler->compileTag('setfilter', array(),
- array('modifier_list' => array_merge(array(array_merge(array($this->yystack[ $this->yyidx +
- - 2 ]->minor), $this->yystack[ $this->yyidx + - 1 ]->minor)),
- $this->yystack[ $this->yyidx +
- 0 ]->minor)));
- }
-
- #line 537 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r53()
- {
- $j = strrpos($this->yystack[ $this->yyidx + 0 ]->minor, '.');
- if ($this->yystack[ $this->yyidx + 0 ]->minor[ $j + 1 ] == 'c') {
- // {$smarty.block.child}
- $this->_retvalue = SMARTY_INTERNAL_COMPILE_BLOCK::compileChildBlock($this->compiler);
- } else {
- // {$smarty.block.parent}
- $this->_retvalue = SMARTY_INTERNAL_COMPILE_BLOCK::compileParentBlock($this->compiler);
- }
- }
-
- #line 550 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r54()
- {
- $tag =
- trim(substr($this->yystack[ $this->yyidx + 0 ]->minor, $this->lex->ldel_length, - $this->lex->rdel_length),
- ' /');
- if ($tag == 'strip') {
- $this->strip = false;
- $this->_retvalue = null;
- } else {
- $this->_retvalue = $this->compiler->compileTag($tag . 'close', array());
- }
- }
-
- #line 559 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r55()
- {
- $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + 0 ]->minor . 'close', array());
- }
-
- #line 563 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r56()
- {
- $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + - 1 ]->minor . 'close', array(),
- array('modifier_list' => $this->yystack[ $this->yyidx +
- 0 ]->minor));
- }
-
- #line 568 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r57()
- {
- $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + - 2 ]->minor . 'close', array(),
- array('object_method' => $this->yystack[ $this->yyidx +
- 0 ]->minor));
- }
-
- #line 572 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r58()
- {
- $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + - 3 ]->minor . 'close', array(),
- array('object_method' => $this->yystack[ $this->yyidx +
- - 1 ]->minor, 'modifier_list' => $this->yystack[ $this->yyidx +
- 0 ]->minor));
- }
-
- #line 580 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r59()
- {
- $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor;
- $this->_retvalue[] = $this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- #line 586 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r60()
- {
- $this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor);
- }
-
- #line 591 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r61()
- {
- $this->_retvalue = array();
- }
-
- #line 596 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r62()
- {
- if (defined($this->yystack[ $this->yyidx + 0 ]->minor)) {
- if ($this->security) {
- $this->security->isTrustedConstant($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler);
- }
- $this->_retvalue =
- array($this->yystack[ $this->yyidx + - 2 ]->minor => $this->yystack[ $this->yyidx + 0 ]->minor);
- } else {
- $this->_retvalue =
- array($this->yystack[ $this->yyidx + - 2 ]->minor => '\'' . $this->yystack[ $this->yyidx + 0 ]->minor .
- '\'');
- }
- }
-
- #line 607 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r63()
- {
- $this->_retvalue =
- array(trim($this->yystack[ $this->yyidx + - 1 ]->minor, " =\n\r\t") => $this->yystack[ $this->yyidx +
- 0 ]->minor);
- }
-
- #line 615 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r65()
- {
- $this->_retvalue = '\'' . $this->yystack[ $this->yyidx + 0 ]->minor . '\'';
- }
-
- #line 627 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r68()
- {
- $this->_retvalue =
- array($this->yystack[ $this->yyidx + - 2 ]->minor => $this->yystack[ $this->yyidx + 0 ]->minor);
- }
-
- #line 640 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r70()
- {
- $this->yystack[ $this->yyidx + - 2 ]->minor[] = $this->yystack[ $this->yyidx + 0 ]->minor;
- $this->_retvalue = $this->yystack[ $this->yyidx + - 2 ]->minor;
- }
-
- #line 645 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r71()
- {
- $this->_retvalue = array('var' => '\'' . substr($this->yystack[ $this->yyidx + - 2 ]->minor, 1) . '\'',
- 'value' => $this->yystack[ $this->yyidx + 0 ]->minor);
- }
-
- #line 652 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r73()
- {
- $this->_retvalue = array('var' => $this->yystack[ $this->yyidx + - 2 ]->minor,
- 'value' => $this->yystack[ $this->yyidx + 0 ]->minor);
- }
-
- #line 676 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r77()
- {
- $this->_retvalue =
- '$_smarty_tpl->getStreamVariable(\'' . substr($this->yystack[ $this->yyidx + - 2 ]->minor, 1) . '://' .
- $this->yystack[ $this->yyidx + 0 ]->minor . '\')';
- }
-
- #line 681 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r78()
- {
- $this->_retvalue =
- $this->yystack[ $this->yyidx + - 2 ]->minor . trim($this->yystack[ $this->yyidx + - 1 ]->minor) .
- $this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- #line 695 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r81()
- {
- $this->_retvalue = $this->compiler->compileTag('private_modifier', array(),
- array('value' => $this->yystack[ $this->yyidx + - 1 ]->minor,
- 'modifierlist' => $this->yystack[ $this->yyidx +
- 0 ]->minor));
- }
-
- #line 701 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r82()
- {
- $this->_retvalue = (isset($this->yystack[ $this->yyidx + - 1 ]->minor[ 'pre' ]) ?
- $this->yystack[ $this->yyidx + - 1 ]->minor[ 'pre' ] : '') .
- $this->yystack[ $this->yyidx + - 2 ]->minor . $this->yystack[ $this->yyidx + - 1 ]->minor[ 'op' ] .
- $this->yystack[ $this->yyidx + 0 ]->minor .
- (isset($this->yystack[ $this->yyidx + - 1 ]->minor[ 'pre' ]) ? ')' : '');
- }
-
- #line 704 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r83()
- {
- $this->_retvalue =
- $this->yystack[ $this->yyidx + 0 ]->minor . $this->yystack[ $this->yyidx + - 1 ]->minor . ')';
- }
-
- #line 708 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r84()
- {
- $this->_retvalue = 'in_array(' . $this->yystack[ $this->yyidx + - 2 ]->minor . ',' .
- $this->yystack[ $this->yyidx + 0 ]->minor . ')';
- }
-
- #line 712 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r85()
- {
- $this->_retvalue = 'in_array(' . $this->yystack[ $this->yyidx + - 2 ]->minor . ',(array)' .
- $this->yystack[ $this->yyidx + 0 ]->minor . ')';
- }
-
- #line 716 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r86()
- {
- $this->_retvalue = $this->yystack[ $this->yyidx + - 2 ]->minor . $this->yystack[ $this->yyidx + - 1 ]->minor .
- $this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- #line 728 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r88()
- {
- $this->_retvalue = $this->yystack[ $this->yyidx + - 5 ]->minor . ' ? ' .
- $this->compiler->compileVariable('\'' . substr($this->yystack[ $this->yyidx + - 2 ]->minor, 1) . '\'') .
- ' : ' . $this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- #line 732 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r89()
- {
- $this->_retvalue =
- $this->yystack[ $this->yyidx + - 5 ]->minor . ' ? ' . $this->yystack[ $this->yyidx + - 2 ]->minor . ' : ' .
- $this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- #line 747 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r92()
- {
- $this->_retvalue = '!' . $this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- #line 768 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r97()
- {
- $this->_retvalue =
- $this->yystack[ $this->yyidx + - 2 ]->minor . '.' . $this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- #line 772 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r98()
- {
- $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor . '.';
- }
-
- #line 776 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r99()
- {
- $this->_retvalue = '.' . $this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- #line 781 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r100()
- {
- if (defined($this->yystack[ $this->yyidx + 0 ]->minor)) {
- if ($this->security) {
- $this->security->isTrustedConstant($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler);
- }
- $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor;
- } else {
- $this->_retvalue = '\'' . $this->yystack[ $this->yyidx + 0 ]->minor . '\'';
- }
- }
-
- #line 798 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r102()
- {
- $this->_retvalue = "(" . $this->yystack[ $this->yyidx + - 1 ]->minor . ")";
- }
-
- #line 813 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r105()
- {
- self::$prefix_number ++;
- if ($this->yystack[ $this->yyidx + - 2 ]->minor[ 'var' ] == '\'smarty\'') {
- $this->compiler->prefix_code[] = '<?php $_tmp' . self::$prefix_number . ' = ' .
- $this->compiler->compileTag('private_special_variable', array(),
- $this->yystack[ $this->yyidx + - 2 ]->minor[ 'smarty_internal_index' ]) .
- ';?>';
- } else {
- $this->compiler->prefix_code[] = '<?php $_tmp' . self::$prefix_number . ' = ' .
- $this->compiler->compileVariable($this->yystack[ $this->yyidx + - 2 ]->minor[ 'var' ]) .
- $this->yystack[ $this->yyidx + - 2 ]->minor[ 'smarty_internal_index' ] . ';?>';
- }
- $this->_retvalue = '$_tmp' . self::$prefix_number . '::' . $this->yystack[ $this->yyidx + 0 ]->minor[ 0 ] .
- $this->yystack[ $this->yyidx + 0 ]->minor[ 1 ];
- }
-
- #line 824 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r106()
- {
- self::$prefix_number ++;
- $tmp = $this->compiler->appendCode('<?php ob_start();?>', $this->yystack[ $this->yyidx + 0 ]->minor);
- $this->compiler->prefix_code[] =
- $this->compiler->appendCode($tmp, '<?php $_tmp' . self::$prefix_number . '=ob_get_clean();?>');
- $this->_retvalue = '$_tmp' . self::$prefix_number;
- }
-
- #line 841 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r109()
- {
- if (!in_array(strtolower($this->yystack[ $this->yyidx + - 2 ]->minor), array('self', 'parent')) &&
- (!$this->security ||
- $this->security->isTrustedStaticClassAccess($this->yystack[ $this->yyidx + - 2 ]->minor,
- $this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler))
- ) {
- if (isset($this->smarty->registered_classes[ $this->yystack[ $this->yyidx + - 2 ]->minor ])) {
- $this->_retvalue =
- $this->smarty->registered_classes[ $this->yystack[ $this->yyidx + - 2 ]->minor ] . '::' .
- $this->yystack[ $this->yyidx + 0 ]->minor[ 0 ] . $this->yystack[ $this->yyidx + 0 ]->minor[ 1 ];
- } else {
- $this->_retvalue = $this->yystack[ $this->yyidx + - 2 ]->minor . '::' .
- $this->yystack[ $this->yyidx + 0 ]->minor[ 0 ] . $this->yystack[ $this->yyidx + 0 ]->minor[ 1 ];
- }
- } else {
- $this->compiler->trigger_template_error("static class '" . $this->yystack[ $this->yyidx + - 2 ]->minor .
- "' is undefined or not allowed by security setting");
- }
- }
-
- #line 860 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r111()
- {
- $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- #line 871 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r112()
- {
- $this->_retvalue =
- $this->compiler->compileVariable('\'' . substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) . '\'');
- }
-
- #line 874 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r113()
- {
- if ($this->yystack[ $this->yyidx + 0 ]->minor[ 'var' ] == '\'smarty\'') {
- $smarty_var = $this->compiler->compileTag('private_special_variable', array(),
- $this->yystack[ $this->yyidx +
- 0 ]->minor[ 'smarty_internal_index' ]);
- $this->_retvalue = $smarty_var;
- } else {
- // used for array reset,next,prev,end,current
- $this->last_variable = $this->yystack[ $this->yyidx + 0 ]->minor[ 'var' ];
- $this->last_index = $this->yystack[ $this->yyidx + 0 ]->minor[ 'smarty_internal_index' ];
- $this->_retvalue = $this->compiler->compileVariable($this->yystack[ $this->yyidx + 0 ]->minor[ 'var' ]) .
- $this->yystack[ $this->yyidx + 0 ]->minor[ 'smarty_internal_index' ];
- }
- }
-
- #line 887 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r114()
- {
- $this->_retvalue = '$_smarty_tpl->tpl_vars[' . $this->yystack[ $this->yyidx + - 2 ]->minor . ']->' .
- $this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- #line 897 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r116()
- {
- $this->_retvalue =
- $this->compiler->compileConfigVariable("'" . $this->yystack[ $this->yyidx + - 1 ]->minor . "'");
- }
-
- #line 901 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r117()
- {
- $this->_retvalue = '(is_array($tmp = ' .
- $this->compiler->compileConfigVariable("'" . $this->yystack[ $this->yyidx + - 2 ]->minor . "'") .
- ') ? $tmp' . $this->yystack[ $this->yyidx + 0 ]->minor . ' :null)';
- }
-
- #line 905 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r118()
- {
- $this->_retvalue = $this->compiler->compileConfigVariable($this->yystack[ $this->yyidx + - 1 ]->minor);
- }
-
- #line 909 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r119()
- {
- $this->_retvalue =
- '(is_array($tmp = ' . $this->compiler->compileConfigVariable($this->yystack[ $this->yyidx + - 2 ]->minor) .
- ') ? $tmp' . $this->yystack[ $this->yyidx + 0 ]->minor . ' : null)';
- }
-
- #line 913 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r120()
- {
- $this->_retvalue = array('var' => '\'' . substr($this->yystack[ $this->yyidx + - 1 ]->minor, 1) . '\'',
- 'smarty_internal_index' => $this->yystack[ $this->yyidx + 0 ]->minor);
- }
-
- #line 916 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r121()
- {
- $this->_retvalue = array('var' => $this->yystack[ $this->yyidx + - 1 ]->minor,
- 'smarty_internal_index' => $this->yystack[ $this->yyidx + 0 ]->minor);
- }
-
- #line 929 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r123()
- {
- return;
- }
-
- #line 935 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r124()
- {
- $this->_retvalue =
- '[' . $this->compiler->compileVariable('\'' . substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) . '\'') .
- ']';
- }
-
- #line 938 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r125()
- {
- $this->_retvalue = '[' . $this->compiler->compileVariable($this->yystack[ $this->yyidx + 0 ]->minor) . ']';
- }
-
- #line 942 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r126()
- {
- $this->_retvalue = '[' . $this->compiler->compileVariable($this->yystack[ $this->yyidx + - 2 ]->minor) . '->' .
- $this->yystack[ $this->yyidx + 0 ]->minor . ']';
- }
-
- #line 946 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r127()
- {
- if (defined($this->yystack[ $this->yyidx + 0 ]->minor)) {
- if ($this->security) {
- $this->security->isTrustedConstant($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler);
- }
- $this->_retvalue = '[' . $this->yystack[ $this->yyidx + 0 ]->minor . ']';
- } else {
- $this->_retvalue = "['" . $this->yystack[ $this->yyidx + 0 ]->minor . "']";
- }
- }
-
- #line 957 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r128()
- {
- $this->_retvalue = '[' . $this->yystack[ $this->yyidx + 0 ]->minor . ']';
- }
-
- #line 962 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r129()
- {
- $this->_retvalue = '[' . $this->yystack[ $this->yyidx + - 1 ]->minor . ']';
- }
-
- #line 967 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r130()
- {
- $this->_retvalue = '[' . $this->compiler->compileTag('private_special_variable', array(), '[\'section\'][\'' .
- $this->yystack[ $this->yyidx +
- - 1 ]->minor .
- '\'][\'index\']') . ']';
- }
-
- #line 971 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r131()
- {
- $this->_retvalue = '[' . $this->compiler->compileTag('private_special_variable', array(), '[\'section\'][\'' .
- $this->yystack[ $this->yyidx +
- - 3 ]->minor . '\'][\'' .
- $this->yystack[ $this->yyidx +
- - 1 ]->minor . '\']') . ']';
- }
-
- #line 974 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r132()
- {
- $this->_retvalue = '[' . $this->yystack[ $this->yyidx + - 1 ]->minor . ']';
- }
-
- #line 980 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r134()
- {
- $this->_retvalue = '[' .
- $this->compiler->compileVariable('\'' . substr($this->yystack[ $this->yyidx + - 1 ]->minor, 1) . '\'') .
- ']';;
- }
-
- #line 996 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r138()
- {
- $this->_retvalue = '[]';
- }
-
- #line 1006 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r139()
- {
- $this->_retvalue = '\'' . substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) . '\'';
- }
-
- #line 1010 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r140()
- {
- $this->_retvalue = "''";
- }
-
- #line 1015 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r141()
- {
- $this->_retvalue =
- $this->yystack[ $this->yyidx + - 1 ]->minor . '.' . $this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- #line 1023 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r143()
- {
- $var =
- trim(substr($this->yystack[ $this->yyidx + 0 ]->minor, $this->lex->ldel_length, - $this->lex->rdel_length),
- ' $');
- $this->_retvalue = $this->compiler->compileVariable('\'' . $var . '\'');
- }
-
- #line 1029 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r144()
- {
- $this->_retvalue = '(' . $this->yystack[ $this->yyidx + - 1 ]->minor . ')';
- }
-
- #line 1036 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r145()
- {
- if ($this->yystack[ $this->yyidx + - 1 ]->minor[ 'var' ] == '\'smarty\'') {
- $this->_retvalue = $this->compiler->compileTag('private_special_variable', array(),
- $this->yystack[ $this->yyidx +
- - 1 ]->minor[ 'smarty_internal_index' ]) .
- $this->yystack[ $this->yyidx + 0 ]->minor;
- } else {
- $this->_retvalue = $this->compiler->compileVariable($this->yystack[ $this->yyidx + - 1 ]->minor[ 'var' ]) .
- $this->yystack[ $this->yyidx + - 1 ]->minor[ 'smarty_internal_index' ] .
- $this->yystack[ $this->yyidx + 0 ]->minor;
- }
- }
-
- #line 1045 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r146()
- {
- $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- #line 1050 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r147()
- {
- $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- #line 1055 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r148()
- {
- if ($this->security && substr($this->yystack[ $this->yyidx + - 1 ]->minor, 0, 1) == '_') {
- $this->compiler->trigger_template_error(self::Err1);
- }
- $this->_retvalue =
- '->' . $this->yystack[ $this->yyidx + - 1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- #line 1062 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r149()
- {
- if ($this->security) {
- $this->compiler->trigger_template_error(self::Err2);
- }
- $this->_retvalue = '->{' . $this->compiler->compileVariable($this->yystack[ $this->yyidx + - 1 ]->minor) .
- $this->yystack[ $this->yyidx + 0 ]->minor . '}';
- }
-
- #line 1069 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r150()
- {
- if ($this->security) {
- $this->compiler->trigger_template_error(self::Err2);
- }
- $this->_retvalue =
- '->{' . $this->yystack[ $this->yyidx + - 2 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor . '}';
- }
-
- #line 1076 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r151()
- {
- if ($this->security) {
- $this->compiler->trigger_template_error(self::Err2);
- }
- $this->_retvalue = '->{\'' . $this->yystack[ $this->yyidx + - 4 ]->minor . '\'.' .
- $this->yystack[ $this->yyidx + - 2 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor . '}';
- }
-
- #line 1084 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r152()
- {
- $this->_retvalue = '->' . $this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- #line 1092 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r153()
- {
- if (!$this->security ||
- $this->security->isTrustedPhpFunction($this->yystack[ $this->yyidx + - 3 ]->minor, $this->compiler)
- ) {
- if (strcasecmp($this->yystack[ $this->yyidx + - 3 ]->minor, 'isset') === 0 ||
- strcasecmp($this->yystack[ $this->yyidx + - 3 ]->minor, 'empty') === 0 ||
- strcasecmp($this->yystack[ $this->yyidx + - 3 ]->minor, 'array') === 0 ||
- is_callable($this->yystack[ $this->yyidx + - 3 ]->minor)
- ) {
- $func_name = strtolower($this->yystack[ $this->yyidx + - 3 ]->minor);
- if ($func_name == 'isset') {
- if (count($this->yystack[ $this->yyidx + - 1 ]->minor) == 0) {
- $this->compiler->trigger_template_error('Illegal number of paramer in "isset()"');
- }
- $par = implode(',', $this->yystack[ $this->yyidx + - 1 ]->minor);
- if (strncasecmp($par, '$_smarty_tpl->smarty->ext->_config->_getConfigVariable',
- strlen('$_smarty_tpl->smarty->ext->_config->_getConfigVariable')) === 0
- ) {
- self::$prefix_number ++;
- $this->compiler->prefix_code[] =
- '<?php $_tmp' . self::$prefix_number . '=' . str_replace(')', ', false)', $par) . ';?>';
- $isset_par = '$_tmp' . self::$prefix_number;
- } else {
- $isset_par = str_replace("')->value", "',null,true,false)->value", $par);
- }
- $this->_retvalue = $this->yystack[ $this->yyidx + - 3 ]->minor . "(" . $isset_par . ")";
- } elseif (in_array($func_name, array('empty', 'reset', 'current', 'end', 'prev', 'next'))) {
- if (count($this->yystack[ $this->yyidx + - 1 ]->minor) != 1) {
- $this->compiler->trigger_template_error('Illegal number of paramer in "empty()"');
- }
- if ($func_name == 'empty') {
- $this->_retvalue = $func_name . '(' . str_replace("')->value", "',null,true,false)->value",
- $this->yystack[ $this->yyidx +
- - 1 ]->minor[ 0 ]) . ')';
- } else {
- $this->_retvalue = $func_name . '(' . $this->yystack[ $this->yyidx + - 1 ]->minor[ 0 ] . ')';
- }
- } else {
- $this->_retvalue = $this->yystack[ $this->yyidx + - 3 ]->minor . "(" .
- implode(',', $this->yystack[ $this->yyidx + - 1 ]->minor) . ")";
- }
- } else {
- $this->compiler->trigger_template_error("unknown function \"" .
- $this->yystack[ $this->yyidx + - 3 ]->minor . "\"");
- }
- }
- }
-
- #line 1131 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r154()
- {
- if ($this->security && substr($this->yystack[ $this->yyidx + - 3 ]->minor, 0, 1) == '_') {
- $this->compiler->trigger_template_error(self::Err1);
- }
- $this->_retvalue = $this->yystack[ $this->yyidx + - 3 ]->minor . "(" .
- implode(',', $this->yystack[ $this->yyidx + - 1 ]->minor) . ")";
- }
-
- #line 1138 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r155()
- {
- if ($this->security) {
- $this->compiler->trigger_template_error(self::Err2);
- }
- self::$prefix_number ++;
- $this->compiler->prefix_code[] = '<?php $_tmp' . self::$prefix_number . '=' .
- $this->compiler->compileVariable('\'' . substr($this->yystack[ $this->yyidx + - 3 ]->minor, 1) . '\'') .
- ';?>';
- $this->_retvalue =
- '$_tmp' . self::$prefix_number . '(' . implode(',', $this->yystack[ $this->yyidx + - 1 ]->minor) . ')';
- }
-
- #line 1149 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r156()
- {
- $this->_retvalue =
- array_merge($this->yystack[ $this->yyidx + - 2 ]->minor, array($this->yystack[ $this->yyidx + 0 ]->minor));
- }
-
- #line 1166 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r159()
- {
- $this->_retvalue = array_merge($this->yystack[ $this->yyidx + - 2 ]->minor,
- array(array_merge($this->yystack[ $this->yyidx + - 1 ]->minor,
- $this->yystack[ $this->yyidx + 0 ]->minor)));
- }
-
- #line 1170 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r160()
- {
- $this->_retvalue =
- array(array_merge($this->yystack[ $this->yyidx + - 1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor));
- }
-
- #line 1178 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r162()
- {
- $this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor);
- }
-
- #line 1186 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r163()
- {
- $this->_retvalue =
- array_merge($this->yystack[ $this->yyidx + - 1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor);
- }
-
- #line 1205 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r167()
- {
- $this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor, '', 'method');
- }
-
- #line 1210 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r168()
- {
- $this->_retvalue =
- array($this->yystack[ $this->yyidx + - 1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor, 'method');
- }
-
- #line 1215 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r169()
- {
- $this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor, '');
- }
-
- #line 1220 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r170()
- {
- $this->_retvalue =
- array($this->yystack[ $this->yyidx + - 1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor, 'property');
- }
-
- #line 1225 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r171()
- {
- $this->_retvalue = array($this->yystack[ $this->yyidx + - 2 ]->minor,
- $this->yystack[ $this->yyidx + - 1 ]->minor .
- $this->yystack[ $this->yyidx + 0 ]->minor, 'property');
- }
-
- #line 1231 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r172()
- {
- $this->_retvalue[ 'op' ] = ' ' . trim($this->yystack[ $this->yyidx + 0 ]->minor) . ' ';
- }
-
- #line 1235 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r173()
- {
- static $lops = array('eq' => array('op' => ' == ', 'pre' => null),
- 'ne' => array('op' => ' != ', 'pre' => null),
- 'neq' => array('op' => ' != ', 'pre' => null),
- 'gt' => array('op' => ' > ', 'pre' => null),
- 'ge' => array('op' => ' >= ', 'pre' => null),
- 'gte' => array('op' => ' >= ', 'pre' => null),
- 'lt' => array('op' => ' < ', 'pre' => null),
- 'le' => array('op' => ' <= ', 'pre' => null),
- 'lte' => array('op' => ' <= ', 'pre' => null),
- 'mod' => array('op' => ' % ', 'pre' => null),
- 'and' => array('op' => ' && ', 'pre' => null),
- 'or' => array('op' => ' || ', 'pre' => null),
- 'xor' => array('op' => ' xor ', 'pre' => null),
- 'isdivby' => array('op' => ' % ', 'pre' => '!('),
- 'isnotdivby' => array('op' => ' % ', 'pre' => '('),
- 'isevenby' => array('op' => ' / ', 'pre' => '!(1 & '),
- 'isnotevenby' => array('op' => ' / ', 'pre' => '(1 & '),
- 'isoddby' => array('op' => ' / ', 'pre' => '(1 & '),
- 'isnotoddby' => array('op' => ' / ', 'pre' => '!(1 & '),);
- $op = strtolower(preg_replace('/\s*/', '', $this->yystack[ $this->yyidx + 0 ]->minor));
- $this->_retvalue = $lops[ $op ];
- }
-
- #line 1261 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r174()
- {
- static $scond =
- array('iseven' => '!(1 & ', 'isnoteven' => '(1 & ', 'isodd' => '(1 & ', 'isnotodd' => '!(1 & ',);
- $op = strtolower(str_replace(' ', '', $this->yystack[ $this->yyidx + 0 ]->minor));
- $this->_retvalue = $scond[ $op ];
- }
-
- #line 1275 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r175()
- {
- $this->_retvalue = 'array(' . $this->yystack[ $this->yyidx + - 1 ]->minor . ')';
- }
-
- #line 1283 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r177()
- {
- $this->_retvalue =
- $this->yystack[ $this->yyidx + - 2 ]->minor . ',' . $this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- #line 1291 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r179()
- {
- $this->_retvalue =
- $this->yystack[ $this->yyidx + - 2 ]->minor . '=>' . $this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- #line 1295 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r180()
- {
- $this->_retvalue =
- '\'' . $this->yystack[ $this->yyidx + - 2 ]->minor . '\'=>' . $this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- #line 1311 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r183()
- {
- $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor->to_smarty_php($this);
- }
-
- #line 1316 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r184()
- {
- $this->yystack[ $this->yyidx + - 1 ]->minor->append_subtree($this, $this->yystack[ $this->yyidx + 0 ]->minor);
- $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor;
- }
-
- #line 1321 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r185()
- {
- $this->_retvalue = new Smarty_Internal_ParseTree_Dq($this, $this->yystack[ $this->yyidx + 0 ]->minor);
- }
-
- #line 1325 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r186()
- {
- $this->_retvalue = new Smarty_Internal_ParseTree_Code('(string)' . $this->yystack[ $this->yyidx + - 1 ]->minor);
- }
-
- #line 1333 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r188()
- {
- $this->_retvalue = new Smarty_Internal_ParseTree_Code('(string)$_smarty_tpl->tpl_vars[\'' .
- substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) .
- '\']->value');
- }
-
- #line 1341 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r190()
- {
- $this->_retvalue =
- new Smarty_Internal_ParseTree_Code('(string)(' . $this->yystack[ $this->yyidx + - 1 ]->minor . ')');
- }
-
- #line 1345 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r191()
- {
- $this->_retvalue = new Smarty_Internal_ParseTree_Tag($this, $this->yystack[ $this->yyidx + 0 ]->minor);
- }
-
- #line 1349 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r192()
- {
- $this->_retvalue = new Smarty_Internal_ParseTree_DqContent($this->yystack[ $this->yyidx + 0 ]->minor);
- }
-
- private $_retvalue;
-
- public function yy_reduce($yyruleno)
- {
- if ($this->yyTraceFILE && $yyruleno >= 0 && $yyruleno < count(self::$yyRuleName)) {
- fprintf($this->yyTraceFILE, "%sReduce (%d) [%s].\n", $this->yyTracePrompt, $yyruleno,
- self::$yyRuleName[ $yyruleno ]);
- }
-
- $this->_retvalue = $yy_lefthand_side = null;
- if (isset(self::$yyReduceMap[ $yyruleno ])) {
- // call the action
- $this->_retvalue = null;
- $this->{'yy_r' . self::$yyReduceMap[ $yyruleno ]}();
- $yy_lefthand_side = $this->_retvalue;
- }
- $yygoto = self::$yyRuleInfo[ $yyruleno ][ 0 ];
- $yysize = self::$yyRuleInfo[ $yyruleno ][ 1 ];
- $this->yyidx -= $yysize;
- for ($i = $yysize; $i; $i --) {
- // pop all of the right-hand side parameters
- array_pop($this->yystack);
- }
- $yyact = $this->yy_find_reduce_action($this->yystack[ $this->yyidx ]->stateno, $yygoto);
- if ($yyact < self::YYNSTATE) {
- if (!$this->yyTraceFILE && $yysize) {
- $this->yyidx ++;
- $x = new TP_yyStackEntry;
- $x->stateno = $yyact;
- $x->major = $yygoto;
- $x->minor = $yy_lefthand_side;
- $this->yystack[ $this->yyidx ] = $x;
- } else {
- $this->yy_shift($yyact, $yygoto, $yy_lefthand_side);
- }
- } elseif ($yyact == self::YYNSTATE + self::YYNRULE + 1) {
- $this->yy_accept();
- }
- }
-
- public function yy_parse_failed()
- {
- if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%sFail!\n", $this->yyTracePrompt);
- }
- while ($this->yyidx >= 0) {
- $this->yy_pop_parser_stack();
- }
- }
-
- public function yy_syntax_error($yymajor, $TOKEN)
- {
- #line 207 "../smarty/lexer/smarty_internal_templateparser.y"
-
- $this->internalError = true;
- $this->yymajor = $yymajor;
- $this->compiler->trigger_template_error();
- }
-
- public function yy_accept()
- {
- if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%sAccept!\n", $this->yyTracePrompt);
- }
- while ($this->yyidx >= 0) {
- $this->yy_pop_parser_stack();
- }
- #line 200 "../smarty/lexer/smarty_internal_templateparser.y"
-
- $this->successful = !$this->internalError;
- $this->internalError = false;
- $this->retvalue = $this->_retvalue;
- }
-
- public function doParse($yymajor, $yytokenvalue)
- {
- $yyerrorhit = 0; /* True if yymajor has invoked an error */
-
- if ($this->yyidx === null || $this->yyidx < 0) {
- $this->yyidx = 0;
- $this->yyerrcnt = - 1;
- $x = new TP_yyStackEntry;
- $x->stateno = 0;
- $x->major = 0;
- $this->yystack = array();
- $this->yystack[] = $x;
- }
- $yyendofinput = ($yymajor == 0);
-
- if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%sInput %s\n", $this->yyTracePrompt, $this->yyTokenName[ $yymajor ]);
- }
-
- do {
- $yyact = $this->yy_find_shift_action($yymajor);
- if ($yymajor < self::YYERRORSYMBOL && !$this->yy_is_expected_token($yymajor)) {
- // force a syntax error
- $yyact = self::YY_ERROR_ACTION;
- }
- if ($yyact < self::YYNSTATE) {
- $this->yy_shift($yyact, $yymajor, $yytokenvalue);
- $this->yyerrcnt --;
- if ($yyendofinput && $this->yyidx >= 0) {
- $yymajor = 0;
- } else {
- $yymajor = self::YYNOCODE;
- }
- } elseif ($yyact < self::YYNSTATE + self::YYNRULE) {
- $this->yy_reduce($yyact - self::YYNSTATE);
- } elseif ($yyact == self::YY_ERROR_ACTION) {
- if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%sSyntax Error!\n", $this->yyTracePrompt);
- }
- if (self::YYERRORSYMBOL) {
- if ($this->yyerrcnt < 0) {
- $this->yy_syntax_error($yymajor, $yytokenvalue);
- }
- $yymx = $this->yystack[ $this->yyidx ]->major;
- if ($yymx == self::YYERRORSYMBOL || $yyerrorhit) {
- if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%sDiscard input token %s\n", $this->yyTracePrompt,
- $this->yyTokenName[ $yymajor ]);
- }
- $this->yy_destructor($yymajor, $yytokenvalue);
- $yymajor = self::YYNOCODE;
- } else {
- while ($this->yyidx >= 0 && $yymx != self::YYERRORSYMBOL &&
- ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE) {
- $this->yy_pop_parser_stack();
- }
- if ($this->yyidx < 0 || $yymajor == 0) {
- $this->yy_destructor($yymajor, $yytokenvalue);
- $this->yy_parse_failed();
- $yymajor = self::YYNOCODE;
- } elseif ($yymx != self::YYERRORSYMBOL) {
- $u2 = 0;
- $this->yy_shift($yyact, self::YYERRORSYMBOL, $u2);
- }
- }
- $this->yyerrcnt = 3;
- $yyerrorhit = 1;
- } else {
- if ($this->yyerrcnt <= 0) {
- $this->yy_syntax_error($yymajor, $yytokenvalue);
- }
- $this->yyerrcnt = 3;
- $this->yy_destructor($yymajor, $yytokenvalue);
- if ($yyendofinput) {
- $this->yy_parse_failed();
- }
- $yymajor = self::YYNOCODE;
- }
- } else {
- $this->yy_accept();
- $yymajor = self::YYNOCODE;
- }
- } while ($yymajor != self::YYNOCODE && $this->yyidx >= 0);
- }
-}
-
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_undefined.php b/library/Smarty/libs/sysplugins/smarty_internal_undefined.php
deleted file mode 100644
index 93fca8ec1..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_undefined.php
+++ /dev/null
@@ -1,48 +0,0 @@
-<?php
-
-/**
- * Smarty Method AppendByRef
- *
- * Smarty::appendByRef() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Undefined
-{
-
- /**
- * This function is executed automatically when a compiled or cached template file is included
- * - Decode saved properties from compiled template and cache files
- * - Check if compiled or cache file is valid
- *
- * @param array $properties special template properties
- * @param bool $cache flag if called from cache file
- *
- * @return bool flag if compiled or cache file is valid
- */
- public function decodeProperties($tpl, $properties, $cache = false)
- {
- if ($cache) {
- $tpl->cached->valid = false;
- } else {
- $tpl->mustCompile = true;
- }
- return false;
- }
-
- /**
- * Call error handler for undefined method
- *
- * @param string $name unknown method-name
- * @param array $args argument array
- *
- * @return mixed
- * @throws SmartyException
- */
- public function __call($name, $args)
- {
- throw new SmartyException(get_class($args[0]) . "->{$name}() undefined method");
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_resource_recompiled.php b/library/Smarty/libs/sysplugins/smarty_resource_recompiled.php
deleted file mode 100644
index cfd73401b..000000000
--- a/library/Smarty/libs/sysplugins/smarty_resource_recompiled.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-/**
- * Smarty Resource Plugin
- *
- * @package Smarty
- * @subpackage TemplateResources
- * @author Rodney Rehm
- */
-
-/**
- * Smarty Resource Plugin
- * Base implementation for resource plugins that don't compile cache
- *
- * @package Smarty
- * @subpackage TemplateResources
- */
-abstract class Smarty_Resource_Recompiled extends Smarty_Resource
-{
- /**
- * Flag that it's an recompiled resource
- *
- * @var bool
- */
- public $recompiled = true;
-
- /**
- * Resource does implement populateCompiledFilepath() method
- *
- * @var bool
- */
- public $hasCompiledHandler = true;
-
- /**
- * populate Compiled Object with compiled filepath
- *
- * @param Smarty_Template_Compiled $compiled compiled object
- * @param Smarty_Internal_Template $_template template object
- *
- * @return void
- */
- public function populateCompiledFilepath(Smarty_Template_Compiled $compiled, Smarty_Internal_Template $_template)
- {
- $compiled->filepath = false;
- $compiled->timestamp = false;
- $compiled->exists = false;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_resource_uncompiled.php b/library/Smarty/libs/sysplugins/smarty_resource_uncompiled.php
deleted file mode 100644
index 88d2bba81..000000000
--- a/library/Smarty/libs/sysplugins/smarty_resource_uncompiled.php
+++ /dev/null
@@ -1,79 +0,0 @@
-<?php
-/**
- * Smarty Resource Plugin
- *
- * @package Smarty
- * @subpackage TemplateResources
- * @author Rodney Rehm
- */
-
-/**
- * Smarty Resource Plugin
- * Base implementation for resource plugins that don't use the compiler
- *
- * @package Smarty
- * @subpackage TemplateResources
- */
-abstract class Smarty_Resource_Uncompiled extends Smarty_Resource
-{
- /**
- * Flag that it's an uncompiled resource
- *
- * @var bool
- */
- public $uncompiled = true;
-
- /**
- * Resource does implement populateCompiledFilepath() method
- *
- * @var bool
- */
- public $hasCompiledHandler = true;
-
- /**
- * Render and output the template (without using the compiler)
- *
- * @param Smarty_Template_Source $source source object
- * @param Smarty_Internal_Template $_template template object
- *
- * @throws SmartyException on failure
- */
- abstract public function renderUncompiled(Smarty_Template_Source $source, Smarty_Internal_Template $_template);
-
- /**
- * populate compiled object with compiled filepath
- *
- * @param Smarty_Template_Compiled $compiled compiled object
- * @param Smarty_Internal_Template $_template template object (is ignored)
- */
- public function populateCompiledFilepath(Smarty_Template_Compiled $compiled, Smarty_Internal_Template $_template)
- {
- $compiled->filepath = false;
- $compiled->timestamp = false;
- $compiled->exists = false;
- }
-
- /**
- * render compiled template code
- *
- * @param Smarty_Internal_Template $_template
- *
- * @return string
- * @throws Exception
- */
- public function render($_template)
- {
- $level = ob_get_level();
- ob_start();
- try {
- $this->renderUncompiled($_template->source, $_template);
- return ob_get_clean();
- }
- catch (Exception $e) {
- while (ob_get_level() > $level) {
- ob_end_clean();
- }
- throw $e;
- }
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_template_compiled.php b/library/Smarty/libs/sysplugins/smarty_template_compiled.php
deleted file mode 100644
index e7710f85e..000000000
--- a/library/Smarty/libs/sysplugins/smarty_template_compiled.php
+++ /dev/null
@@ -1,297 +0,0 @@
-<?php
-
-/**
- * Smarty Resource Data Object
- * Meta Data Container for Template Files
- *
- * @package Smarty
- * @subpackage TemplateResources
- * @author Rodney Rehm
- * @property string $content compiled content
- */
-class Smarty_Template_Compiled extends Smarty_Template_Resource_Base
-{
-
- /**
- * nocache hash
- *
- * @var string|null
- */
- public $nocache_hash = null;
-
- /**
- * get a Compiled Object of this source
- *
- * @param Smarty_Internal_Template $_template template object
- *
- * @return Smarty_Template_Compiled compiled object
- */
- static function load($_template)
- {
- // check runtime cache
- if (!$_template->source->handler->recompiled &&
- ($_template->smarty->resource_cache_mode & Smarty::RESOURCE_CACHE_ON)
- ) {
- $_cache_key = $_template->source->unique_resource . '#';
- if ($_template->caching) {
- $_cache_key .= 'caching#';
- }
- $_cache_key .= $_template->compile_id;
- if (isset($_template->source->compileds[$_cache_key])) {
- return $_template->source->compileds[$_cache_key];
- }
- }
- $compiled = new Smarty_Template_Compiled();
- if ($_template->source->handler->hasCompiledHandler) {
- $_template->source->handler->populateCompiledFilepath($compiled, $_template);
- } else {
- $compiled->populateCompiledFilepath($_template);
- }
- // runtime cache
- if (!$_template->source->handler->recompiled &&
- ($_template->smarty->resource_cache_mode & Smarty::RESOURCE_CACHE_ON)
- ) {
- $_template->source->compileds[$_cache_key] = $compiled;
- }
- return $compiled;
- }
-
- /**
- * populate Compiled Object with compiled filepath
- *
- * @param Smarty_Internal_Template $_template template object
- **/
- public function populateCompiledFilepath(Smarty_Internal_Template $_template)
- {
- $_compile_id = isset($_template->compile_id) ? preg_replace('![^\w]+!', '_', $_template->compile_id) : null;
- if ($_template->source->isConfig) {
- $_flag = '_' .
- ((int) $_template->smarty->config_read_hidden + (int) $_template->smarty->config_booleanize * 2 +
- (int) $_template->smarty->config_overwrite * 4);
- } else {
- $_flag =
- '_' . ((int) $_template->smarty->merge_compiled_includes + (int) $_template->smarty->escape_html * 2);
- }
- $_filepath = $_template->source->uid . $_flag;
- // if use_sub_dirs, break file into directories
- if ($_template->smarty->use_sub_dirs) {
- $_filepath = substr($_filepath, 0, 2) . DS . substr($_filepath, 2, 2) . DS . substr($_filepath, 4, 2) . DS .
- $_filepath;
- }
- $_compile_dir_sep = $_template->smarty->use_sub_dirs ? DS : '^';
- if (isset($_compile_id)) {
- $_filepath = $_compile_id . $_compile_dir_sep . $_filepath;
- }
- // caching token
- if ($_template->caching) {
- $_cache = '.cache';
- } else {
- $_cache = '';
- }
- $_compile_dir = $_template->smarty->getCompileDir();
- // set basename if not specified
- $_basename = $_template->source->handler->getBasename($_template->source);
- if ($_basename === null) {
- $_basename = basename(preg_replace('![^\w]+!', '_', $_template->source->name));
- }
- // separate (optional) basename by dot
- if ($_basename) {
- $_basename = '.' . $_basename;
- }
-
- $this->filepath = $_compile_dir . $_filepath . '.' . $_template->source->type . $_basename . $_cache . '.php';
- $this->exists = is_file($this->filepath);
- if (!$this->exists) {
- $this->timestamp = false;
- }
- }
-
- /**
- * load compiled template or compile from source
- *
- * @param Smarty_Internal_Template $_template
- *
- * @throws Exception
- */
- public function process(Smarty_Internal_Template $_template)
- {
- $_smarty_tpl = $_template;
- if ($_template->source->handler->recompiled || !$_template->compiled->exists ||
- $_template->smarty->force_compile || ($_template->smarty->compile_check &&
- $_template->source->getTimeStamp() > $_template->compiled->getTimeStamp())
- ) {
- $this->compileTemplateSource($_template);
- $compileCheck = $_template->smarty->compile_check;
- $_template->smarty->compile_check = false;
- if ($_template->source->handler->recompiled) {
- $level = ob_get_level();
- ob_start();
- try {
- eval("?>" . $this->content);
- }
- catch (Exception $e) {
- while (ob_get_level() > $level) {
- ob_end_clean();
- }
- throw $e;
- }
- ob_get_clean();
- $this->content = null;
- } else {
- $this->loadCompiledTemplate($_template);
- }
- $_template->smarty->compile_check = $compileCheck;
- } else {
- $_template->mustCompile = true;
- @include($_template->compiled->filepath);
- if ($_template->mustCompile) {
- $this->compileTemplateSource($_template);
- $compileCheck = $_template->smarty->compile_check;
- $_template->smarty->compile_check = false;
- $this->loadCompiledTemplate($_template);
- $_template->smarty->compile_check = $compileCheck;
- }
- }
- $_template->smarty->ext->_subTemplate->registerSubTemplates($_template);
-
- $this->processed = true;
- }
-
- /**
- * Load fresh compiled template by including the PHP file
- * HHVM requires a work around because of a PHP incompatibility
- *
- * @param \Smarty_Internal_Template $_template
- */
- private function loadCompiledTemplate(Smarty_Internal_Template $_template)
- {
- if (function_exists('opcache_invalidate')) {
- opcache_invalidate($_template->compiled->filepath);
- }
- $_smarty_tpl = $_template;
- if (defined('HHVM_VERSION')) {
- $_template->smarty->ext->_hhvm->includeHhvm($_template, $_template->compiled->filepath);
- } else {
- include($_template->compiled->filepath);
- }
- }
-
- /**
- * render compiled template code
- *
- * @param Smarty_Internal_Template $_template
- *
- * @return string
- * @throws Exception
- */
- public function render(Smarty_Internal_Template $_template)
- {
- if ($_template->smarty->debugging) {
- $_template->smarty->_debug->start_render($_template);
- }
- if (!$this->processed) {
- $this->process($_template);
- }
- if (isset($_template->cached)) {
- $_template->cached->file_dependency =
- array_merge($_template->cached->file_dependency, $this->file_dependency);
- }
- $this->getRenderedTemplateCode($_template);
- if ($_template->caching && $this->has_nocache_code) {
- $_template->cached->hashes[$this->nocache_hash] = true;
- }
- if (isset($_template->parent) && $_template->parent->_objType == 2 && !empty($_template->tpl_function)) {
- $_template->parent->tpl_function = array_merge($_template->parent->tpl_function, $_template->tpl_function);
- }
- if ($_template->smarty->debugging) {
- $_template->smarty->_debug->end_render($_template);
- }
- }
-
- /**
- * compile template from source
- *
- * @param Smarty_Internal_Template $_template
- *
- * @return string
- * @throws Exception
- */
- public function compileTemplateSource(Smarty_Internal_Template $_template)
- {
- $_template->source->compileds = array();
- $this->file_dependency = array();
- $this->tpl_function = array();
- $this->includes = array();
- $this->nocache_hash = null;
- $this->unifunc = null;
- // compile locking
- if (!$_template->source->handler->recompiled) {
- if ($saved_timestamp = $_template->compiled->getTimeStamp()) {
- touch($_template->compiled->filepath);
- }
- }
- // call compiler
- try {
- $_template->loadCompiler();
- $code = $_template->compiler->compileTemplate($_template);
- }
- catch (Exception $e) {
- // restore old timestamp in case of error
- if (!$_template->source->handler->recompiled && $saved_timestamp) {
- touch($_template->compiled->filepath, $saved_timestamp);
- }
- throw $e;
- }
- // compiling succeeded
- if ($_template->compiler->write_compiled_code) {
- // write compiled template
- $this->write($_template, $code);
- $code = '';
- }
- // release compiler object to free memory
- unset($_template->compiler);
- return $code;
- }
-
- /**
- * Write compiled code by handler
- *
- * @param Smarty_Internal_Template $_template template object
- * @param string $code compiled code
- *
- * @return boolean success
- */
- public function write(Smarty_Internal_Template $_template, $code)
- {
- if (!$_template->source->handler->recompiled) {
- if ($_template->smarty->ext->_writeFile->writeFile($this->filepath, $code, $_template->smarty) === true) {
- $this->timestamp = $this->exists = is_file($this->filepath);
- if ($this->exists) {
- $this->timestamp = filemtime($this->filepath);
- return true;
- }
- }
- return false;
- } else {
- $this->content = $code;
- }
- $this->timestamp = time();
- $this->exists = true;
- return true;
- }
-
- /**
- * Read compiled content from handler
- *
- * @param Smarty_Internal_Template $_template template object
- *
- * @return string content
- */
- public function read(Smarty_Internal_Template $_template)
- {
- if (!$_template->source->handler->recompiled) {
- return file_get_contents($this->filepath);
- }
- return isset($this->content) ? $this->content : false;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_template_config.php b/library/Smarty/libs/sysplugins/smarty_template_config.php
deleted file mode 100644
index f0fff5080..000000000
--- a/library/Smarty/libs/sysplugins/smarty_template_config.php
+++ /dev/null
@@ -1,97 +0,0 @@
-<?php
-/**
- * Smarty Config Source Plugin
- *
- * @package Smarty
- * @subpackage TemplateResources
- * @author Uwe Tews
- */
-
-/**
- * Smarty Connfig Resource Data Object
- * Meta Data Container for Template Files
- *
- * @package Smarty
- * @subpackage TemplateResources
- * @author Uwe Tews
- *
- */
-class Smarty_Template_Config extends Smarty_Template_Source
-{
- /**
- * array of section names, single section or null
- *
- * @var null|string|array
- */
- public $config_sections = null;
-
- /**
- * scope into which the config variables shall be loaded
- *
- * @var string
- */
- public $scope = 'local';
-
- /**
- * Flag that source is a config file
- *
- * @var bool
- */
- public $isConfig = true;
-
- /**
- * create Source Object container
- *
- * @param Smarty_Resource $handler Resource Handler this source object communicates with
- * @param Smarty $smarty Smarty instance this source object belongs to
- * @param string $resource full template_resource
- * @param string $type type of resource
- * @param string $name resource name
- */
- public function __construct(Smarty_Resource $handler, Smarty $smarty, $resource, $type, $name)
- {
- // must clone handler as we change class names
- $this->handler = clone $handler; // Note: prone to circular references
- $this->handler->compiler_class = 'Smarty_Internal_Config_File_Compiler';
- $this->handler->template_lexer_class = 'Smarty_Internal_Configfilelexer';
- $this->handler->template_parser_class = 'Smarty_Internal_Configfileparser';
- $this->resource = $resource;
- $this->type = $type;
- $this->name = $name;
- $this->smarty = $smarty;
- }
-
- /**
- * initialize Source Object for given resource
- * Either [$_template] or [$smarty, $template_resource] must be specified
- *
- * @param Smarty_Internal_Template $_template template object
- * @param Smarty $smarty smarty object
- * @param string $template_resource resource identifier
- *
- * @return Smarty_Template_Config Source Object
- * @throws SmartyException
- */
- public static function load(Smarty_Internal_Template $_template = null, Smarty $smarty = null, $template_resource = null)
- {
- static $_incompatible_resources = array('extends' => true, 'php' => true);
- $template_resource = $_template->template_resource;
- if (empty($template_resource)) {
- throw new SmartyException('Missing config name');
- }
- // parse resource_name, load resource handler
- list($name, $type) = Smarty_Resource::parseResourceName($template_resource, $_template->smarty->default_config_type);
- // make sure configs are not loaded via anything smarty can't handle
- if (isset($_incompatible_resources[$type])) {
- throw new SmartyException ("Unable to use resource '{$type}' for config");
- }
- $resource = Smarty_Resource::load($_template->smarty, $type);
- $source = new Smarty_Template_Config($resource, $_template->smarty, $template_resource, $type, $name);
- $resource->populate($source, $_template);
- if (!$source->exists && isset($_template->smarty->default_config_handler_func)) {
- Smarty_Internal_Method_RegisterDefaultTemplateHandler::_getDefaultTemplate($source);
- }
- $source->unique_resource = $resource->buildUniqueResourceName($_template->smarty, $name, true);
- return $source;
- }
-}
diff --git a/vendor/bshaffer/oauth2-server-php/CHANGELOG.md b/vendor/bshaffer/oauth2-server-php/CHANGELOG.md
index 4fddd72c9..7671b2396 100644
--- a/vendor/bshaffer/oauth2-server-php/CHANGELOG.md
+++ b/vendor/bshaffer/oauth2-server-php/CHANGELOG.md
@@ -8,6 +8,24 @@ To see the files changed for a given bug, go to https://github.com/bshaffer/oaut
To get the diff between two versions, go to https://github.com/bshaffer/oauth2-server-php/compare/v1.0...v1.1
To get the diff for a specific change, go to https://github.com/bshaffer/oauth2-server-php/commit/XXX where XXX is the change hash
+* 1.10.0 (2017-12-14)
+
+ PR: https://github.com/bshaffer/oauth2-server-php/pull/889
+
+ * #795 - [feature] added protected createPayload method to allow easier customization of JWT payload
+ * #807 - [refactor] simplifies UserInfoController constructor
+ * #814 - [docs] Adds https to README link
+ * #827 - [testing] Explicitly pulls in phpunit 4
+ * #828 - [docs] PHPDoc improvements and type hinting of variables.
+ * #829 - [bug] Fix CORS issue for revoking and requesting an access token
+ * #869 - [testing] Remove php 5.3 from travis and use vendored phpunit
+ * #834 - [feature] use random_bytes if available
+ * #851 - [docs] Fix PHPDoc
+ * #872 - [bug] Fix count() error on PHP 7.2
+ * #873 - [testing] adds php 7.2 to travis
+ * #794 - [docs] Fix typo in composer.json
+ * #885 - [testing] Use PHPUnit\Framework\TestCase instead of PHPUnit_Framework_TestCase
+
* 1.9.0 (2016-01-06)
PR: https://github.com/bshaffer/oauth2-server-php/pull/788
@@ -87,7 +105,7 @@ To get the diff for a specific change, go to https://github.com/bshaffer/oauth2-
* bug #346 Fixes open_basedir warning
* bug #351 Adds OpenID Connect support
* bug #355 Adds php 5.6 and HHVM to travis.ci testing
- * [BC] bug #358 Adds `getQuerystringIdentifier()` to the GrantType interface
+ * [BC] bug #358 Adds `getQueryStringIdentifier()` to the GrantType interface
* bug #363 Encryption\JWT - Allows for subclassing JWT Headers
* bug #349 Bearer Tokens - adds requestHasToken method for when access tokens are optional
* bug #301 Encryption\JWT - fixes urlSafeB64Encode(): ensures newlines are replaced as expected
diff --git a/vendor/bshaffer/oauth2-server-php/README.md b/vendor/bshaffer/oauth2-server-php/README.md
index 4ceda6cf9..f1788e9ce 100644
--- a/vendor/bshaffer/oauth2-server-php/README.md
+++ b/vendor/bshaffer/oauth2-server-php/README.md
@@ -5,4 +5,4 @@ oauth2-server-php
[![Total Downloads](https://poser.pugx.org/bshaffer/oauth2-server-php/downloads.png)](https://packagist.org/packages/bshaffer/oauth2-server-php)
-View the [complete documentation](http://bshaffer.github.io/oauth2-server-php-docs/) \ No newline at end of file
+View the [complete documentation](https://bshaffer.github.io/oauth2-server-php-docs/)
diff --git a/vendor/bshaffer/oauth2-server-php/composer.json b/vendor/bshaffer/oauth2-server-php/composer.json
index 561699f5e..272d20027 100644
--- a/vendor/bshaffer/oauth2-server-php/composer.json
+++ b/vendor/bshaffer/oauth2-server-php/composer.json
@@ -19,6 +19,7 @@
"php":">=5.3.9"
},
"require-dev": {
+ "phpunit/phpunit": "^4.0",
"aws/aws-sdk-php": "~2.8",
"firebase/php-jwt": "~2.2",
"predis/predis": "dev-master",
@@ -29,6 +30,7 @@
"predis/predis": "Required to use Redis storage",
"thobbs/phpcassa": "Required to use Cassandra storage",
"aws/aws-sdk-php": "~2.8 is required to use DynamoDB storage",
- "firebase/php-jwt": "~1.1 is required to use MondoDB storage"
+ "firebase/php-jwt": "~2.2 is required to use JWT features",
+ "mongodb/mongodb": "^1.1 is required to use MongoDB storage"
}
}
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Autoloader.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Autoloader.php
index ecfb6ba75..4ec08cbdd 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Autoloader.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Autoloader.php
@@ -10,8 +10,14 @@ namespace OAuth2;
*/
class Autoloader
{
+ /**
+ * @var string
+ */
private $dir;
+ /**
+ * @param string $dir
+ */
public function __construct($dir = null)
{
if (is_null($dir)) {
@@ -19,6 +25,7 @@ class Autoloader
}
$this->dir = $dir;
}
+
/**
* Registers OAuth2\Autoloader as an SPL autoloader.
*/
@@ -31,9 +38,8 @@ class Autoloader
/**
* Handles autoloading of classes.
*
- * @param string $class A class name.
- *
- * @return boolean Returns true if the class has been loaded
+ * @param string $class - A class name.
+ * @return boolean - Returns true if the class has been loaded
*/
public function autoload($class)
{
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/ClientAssertionType/ClientAssertionTypeInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ClientAssertionType/ClientAssertionTypeInterface.php
index 29c7171b5..6a167da90 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/ClientAssertionType/ClientAssertionTypeInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ClientAssertionType/ClientAssertionTypeInterface.php
@@ -10,6 +10,19 @@ use OAuth2\ResponseInterface;
*/
interface ClientAssertionTypeInterface
{
+ /**
+ * Validate the OAuth request
+ *
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
+ * @return mixed
+ */
public function validateRequest(RequestInterface $request, ResponseInterface $response);
+
+ /**
+ * Get the client id
+ *
+ * @return mixed
+ */
public function getClientId();
}
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/ClientAssertionType/HttpBasic.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ClientAssertionType/HttpBasic.php
index 0ecb7e18d..ef6120300 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/ClientAssertionType/HttpBasic.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ClientAssertionType/HttpBasic.php
@@ -5,6 +5,7 @@ namespace OAuth2\ClientAssertionType;
use OAuth2\Storage\ClientCredentialsInterface;
use OAuth2\RequestInterface;
use OAuth2\ResponseInterface;
+use LogicException;
/**
* Validate a client via Http Basic authentication
@@ -19,14 +20,16 @@ class HttpBasic implements ClientAssertionTypeInterface
protected $config;
/**
- * @param OAuth2\Storage\ClientCredentialsInterface $clientStorage REQUIRED Storage class for retrieving client credentials information
- * @param array $config OPTIONAL Configuration options for the server
- * <code>
- * $config = array(
- * 'allow_credentials_in_request_body' => true, // whether to look for credentials in the POST body in addition to the Authorize HTTP Header
- * 'allow_public_clients' => true // if true, "public clients" (clients without a secret) may be authenticated
- * );
- * </code>
+ * Config array $config should look as follows:
+ * @code
+ * $config = array(
+ * 'allow_credentials_in_request_body' => true, // whether to look for credentials in the POST body in addition to the Authorize HTTP Header
+ * 'allow_public_clients' => true // if true, "public clients" (clients without a secret) may be authenticated
+ * );
+ * @endcode
+ *
+ * @param ClientCredentialsInterface $storage Storage
+ * @param array $config Configuration options for the server
*/
public function __construct(ClientCredentialsInterface $storage, array $config = array())
{
@@ -37,6 +40,14 @@ class HttpBasic implements ClientAssertionTypeInterface
), $config);
}
+ /**
+ * Validate the OAuth request
+ *
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
+ * @return bool|mixed
+ * @throws LogicException
+ */
public function validateRequest(RequestInterface $request, ResponseInterface $response)
{
if (!$clientData = $this->getClientCredentials($request, $response)) {
@@ -44,7 +55,7 @@ class HttpBasic implements ClientAssertionTypeInterface
}
if (!isset($clientData['client_id'])) {
- throw new \LogicException('the clientData array must have "client_id" set');
+ throw new LogicException('the clientData array must have "client_id" set');
}
if (!isset($clientData['client_secret']) || $clientData['client_secret'] == '') {
@@ -70,6 +81,11 @@ class HttpBasic implements ClientAssertionTypeInterface
return true;
}
+ /**
+ * Get the client id
+ *
+ * @return mixed
+ */
public function getClientId()
{
return $this->clientData['client_id'];
@@ -82,13 +98,14 @@ class HttpBasic implements ClientAssertionTypeInterface
* According to the spec (draft 20), the client_id can be provided in
* the Basic Authorization header (recommended) or via GET/POST.
*
- * @return
- * A list containing the client identifier and password, for example
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
+ * @return array|null A list containing the client identifier and password, for example:
* @code
- * return array(
- * "client_id" => CLIENT_ID, // REQUIRED the client id
- * "client_secret" => CLIENT_SECRET, // OPTIONAL the client secret (may be omitted for public clients)
- * );
+ * return array(
+ * "client_id" => CLIENT_ID, // REQUIRED the client id
+ * "client_secret" => CLIENT_SECRET, // OPTIONAL the client secret (may be omitted for public clients)
+ * );
* @endcode
*
* @see http://tools.ietf.org/html/rfc6749#section-2.3.1
@@ -108,7 +125,6 @@ class HttpBasic implements ClientAssertionTypeInterface
* client_secret can be null if the client's password is an empty string
* @see http://tools.ietf.org/html/rfc6749#section-2.3.1
*/
-
return array('client_id' => $request->request('client_id'), 'client_secret' => $request->request('client_secret'));
}
}
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/AuthorizeController.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/AuthorizeController.php
index ea7f54a87..4bafb1d24 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/AuthorizeController.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/AuthorizeController.php
@@ -7,37 +7,76 @@ use OAuth2\ScopeInterface;
use OAuth2\RequestInterface;
use OAuth2\ResponseInterface;
use OAuth2\Scope;
+use InvalidArgumentException;
/**
- * @see OAuth2\Controller\AuthorizeControllerInterface
+ * @see AuthorizeControllerInterface
*/
class AuthorizeController implements AuthorizeControllerInterface
{
+ /**
+ * @var string
+ */
private $scope;
+
+ /**
+ * @var int
+ */
private $state;
+
+ /**
+ * @var mixed
+ */
private $client_id;
+
+ /**
+ * @var string
+ */
private $redirect_uri;
+
+ /**
+ * The response type
+ *
+ * @var string
+ */
private $response_type;
+ /**
+ * @var ClientInterface
+ */
protected $clientStorage;
+
+ /**
+ * @var array
+ */
protected $responseTypes;
+
+ /**
+ * @var array
+ */
protected $config;
+
+ /**
+ * @var ScopeInterface
+ */
protected $scopeUtil;
/**
- * @param OAuth2\Storage\ClientInterface $clientStorage REQUIRED Instance of OAuth2\Storage\ClientInterface to retrieve client information
- * @param array $responseTypes OPTIONAL Array of OAuth2\ResponseType\ResponseTypeInterface objects. Valid array
- * keys are "code" and "token"
- * @param array $config OPTIONAL Configuration options for the server
- * <code>
- * $config = array(
- * 'allow_implicit' => false, // if the controller should allow the "implicit" grant type
- * 'enforce_state' => true // if the controller should require the "state" parameter
- * 'require_exact_redirect_uri' => true, // if the controller should require an exact match on the "redirect_uri" parameter
- * 'redirect_status_code' => 302, // HTTP status code to use for redirect responses
- * );
- * </code>
- * @param OAuth2\ScopeInterface $scopeUtil OPTIONAL Instance of OAuth2\ScopeInterface to validate the requested scope
+ * Constructor
+ *
+ * @param ClientInterface $clientStorage REQUIRED Instance of OAuth2\Storage\ClientInterface to retrieve client information
+ * @param array $responseTypes OPTIONAL Array of OAuth2\ResponseType\ResponseTypeInterface objects. Valid array
+ * keys are "code" and "token"
+ * @param array $config OPTIONAL Configuration options for the server:
+ * @param ScopeInterface $scopeUtil OPTIONAL Instance of OAuth2\ScopeInterface to validate the requested scope
+ * @code
+ * $config = array(
+ * 'allow_implicit' => false, // if the controller should allow the "implicit" grant type
+ * 'enforce_state' => true // if the controller should require the "state" parameter
+ * 'require_exact_redirect_uri' => true, // if the controller should require an exact match on the "redirect_uri" parameter
+ * 'redirect_status_code' => 302, // HTTP status code to use for redirect responses
+ * );
+ * @endcode
*/
public function __construct(ClientInterface $clientStorage, array $responseTypes = array(), array $config = array(), ScopeInterface $scopeUtil = null)
{
@@ -56,10 +95,20 @@ class AuthorizeController implements AuthorizeControllerInterface
$this->scopeUtil = $scopeUtil;
}
+ /**
+ * Handle the authorization request
+ *
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
+ * @param boolean $is_authorized
+ * @param mixed $user_id
+ * @return mixed|void
+ * @throws InvalidArgumentException
+ */
public function handleAuthorizeRequest(RequestInterface $request, ResponseInterface $response, $is_authorized, $user_id = null)
{
if (!is_bool($is_authorized)) {
- throw new \InvalidArgumentException('Argument "is_authorized" must be a boolean. This method must know if the user has granted access to the client.');
+ throw new InvalidArgumentException('Argument "is_authorized" must be a boolean. This method must know if the user has granted access to the client.');
}
// We repeat this, because we need to re-validate. The request could be POSTed
@@ -101,6 +150,14 @@ class AuthorizeController implements AuthorizeControllerInterface
$response->setRedirect($this->config['redirect_status_code'], $uri);
}
+ /**
+ * Set not authorized response
+ *
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
+ * @param string $redirect_uri
+ * @param mixed $user_id
+ */
protected function setNotAuthorizedResponse(RequestInterface $request, ResponseInterface $response, $redirect_uri, $user_id = null)
{
$error = 'access_denied';
@@ -108,9 +165,16 @@ class AuthorizeController implements AuthorizeControllerInterface
$response->setRedirect($this->config['redirect_status_code'], $redirect_uri, $this->state, $error, $error_message);
}
- /*
+ /**
* We have made this protected so this class can be extended to add/modify
* these parameters
+ *
+ * @TODO: add dependency injection for the parameters in this method
+ *
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
+ * @param mixed $user_id
+ * @return array
*/
protected function buildAuthorizeParameters($request, $response, $user_id)
{
@@ -127,6 +191,8 @@ class AuthorizeController implements AuthorizeControllerInterface
}
/**
+ * Validate the OAuth request
+ *
* @param RequestInterface $request
* @param ResponseInterface $response
* @return bool
@@ -186,7 +252,7 @@ class AuthorizeController implements AuthorizeControllerInterface
$redirect_uri = $registered_redirect_uri;
}
- // Select the redirect URI
+ // Select the response type
$response_type = $request->query('response_type', $request->request('response_type'));
// for multiple-valued response types - make them alphabetical
@@ -281,10 +347,10 @@ class AuthorizeController implements AuthorizeControllerInterface
/**
* Build the absolute URI based on supplied URI and parameters.
*
- * @param $uri An absolute URI.
- * @param $params Parameters to be append as GET.
+ * @param string $uri An absolute URI.
+ * @param array $params Parameters to be append as GET.
*
- * @return
+ * @return string
* An absolute URI with supplied parameters.
*
* @ingroup oauth2_section_4
@@ -302,9 +368,9 @@ class AuthorizeController implements AuthorizeControllerInterface
}
}
- // Put humpty dumpty back together
+ // Put the uri back together
return
- ((isset($parse_url["scheme"])) ? $parse_url["scheme"] . "://" : "")
+ ((isset($parse_url["scheme"])) ? $parse_url["scheme"] . "://" : "")
. ((isset($parse_url["user"])) ? $parse_url["user"]
. ((isset($parse_url["pass"])) ? ":" . $parse_url["pass"] : "") . "@" : "")
. ((isset($parse_url["host"])) ? $parse_url["host"] : "")
@@ -326,10 +392,10 @@ class AuthorizeController implements AuthorizeControllerInterface
/**
* Internal method for validating redirect URI supplied
*
- * @param string $inputUri The submitted URI to be validated
+ * @param string $inputUri The submitted URI to be validated
* @param string $registeredUriString The allowed URI(s) to validate against. Can be a space-delimited string of URIs to
* allow for multiple URIs
- *
+ * @return bool
* @see http://tools.ietf.org/html/rfc6749#section-3.1.2
*/
protected function validateRedirectUri($inputUri, $registeredUriString)
@@ -363,29 +429,50 @@ class AuthorizeController implements AuthorizeControllerInterface
}
/**
- * Convenience methods to access the parameters derived from the validated request
+ * Convenience method to access the scope
+ *
+ * @return string
*/
-
public function getScope()
{
return $this->scope;
}
+ /**
+ * Convenience method to access the state
+ *
+ * @return int
+ */
public function getState()
{
return $this->state;
}
+ /**
+ * Convenience method to access the client id
+ *
+ * @return mixed
+ */
public function getClientId()
{
return $this->client_id;
}
+ /**
+ * Convenience method to access the redirect url
+ *
+ * @return string
+ */
public function getRedirectUri()
{
return $this->redirect_uri;
}
+ /**
+ * Convenience method to access the response type
+ *
+ * @return string
+ */
public function getResponseType()
{
return $this->response_type;
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/AuthorizeControllerInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/AuthorizeControllerInterface.php
index fa07ae8d2..f758f976a 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/AuthorizeControllerInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/AuthorizeControllerInterface.php
@@ -11,17 +11,18 @@ use OAuth2\ResponseInterface;
* authorization directly, this controller ensures the request is valid, but
* requires the application to determine the value of $is_authorized
*
- * ex:
- * > $user_id = $this->somehowDetermineUserId();
- * > $is_authorized = $this->somehowDetermineUserAuthorization();
- * > $response = new OAuth2\Response();
- * > $authorizeController->handleAuthorizeRequest(
- * > OAuth2\Request::createFromGlobals(),
- * > $response,
- * > $is_authorized,
- * > $user_id);
- * > $response->send();
- *
+ * @code
+ * $user_id = $this->somehowDetermineUserId();
+ * $is_authorized = $this->somehowDetermineUserAuthorization();
+ * $response = new OAuth2\Response();
+ * $authorizeController->handleAuthorizeRequest(
+ * OAuth2\Request::createFromGlobals(),
+ * $response,
+ * $is_authorized,
+ * $user_id
+ * );
+ * $response->send();
+ * @endcode
*/
interface AuthorizeControllerInterface
{
@@ -37,7 +38,21 @@ interface AuthorizeControllerInterface
const RESPONSE_TYPE_AUTHORIZATION_CODE = 'code';
const RESPONSE_TYPE_ACCESS_TOKEN = 'token';
+ /**
+ * Handle the OAuth request
+ *
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
+ * @param $is_authorized
+ * @param null $user_id
+ * @return mixed
+ */
public function handleAuthorizeRequest(RequestInterface $request, ResponseInterface $response, $is_authorized, $user_id = null);
+ /**
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
+ * @return bool
+ */
public function validateAuthorizeRequest(RequestInterface $request, ResponseInterface $response);
}
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/ResourceController.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/ResourceController.php
index 3cfaaaf12..926f90fda 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/ResourceController.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/ResourceController.php
@@ -10,17 +10,43 @@ use OAuth2\ResponseInterface;
use OAuth2\Scope;
/**
- * @see OAuth2\Controller\ResourceControllerInterface
+ * @see ResourceControllerInterface
*/
class ResourceController implements ResourceControllerInterface
{
+ /**
+ * @var array
+ */
private $token;
+ /**
+ * @var TokenTypeInterface
+ */
protected $tokenType;
+
+ /**
+ * @var AccessTokenInterface
+ */
protected $tokenStorage;
+
+ /**
+ * @var array
+ */
protected $config;
+
+ /**
+ * @var ScopeInterface
+ */
protected $scopeUtil;
+ /**
+ * Constructor
+ *
+ * @param TokenTypeInterface $tokenType
+ * @param AccessTokenInterface $tokenStorage
+ * @param array $config
+ * @param ScopeInterface $scopeUtil
+ */
public function __construct(TokenTypeInterface $tokenType, AccessTokenInterface $tokenStorage, $config = array(), ScopeInterface $scopeUtil = null)
{
$this->tokenType = $tokenType;
@@ -36,6 +62,14 @@ class ResourceController implements ResourceControllerInterface
$this->scopeUtil = $scopeUtil;
}
+ /**
+ * Verify the resource request
+ *
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
+ * @param null $scope
+ * @return bool
+ */
public function verifyResourceRequest(RequestInterface $request, ResponseInterface $response, $scope = null)
{
$token = $this->getAccessTokenData($request, $response);
@@ -71,6 +105,13 @@ class ResourceController implements ResourceControllerInterface
return (bool) $token;
}
+ /**
+ * Get access token data.
+ *
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
+ * @return array|null
+ */
public function getAccessTokenData(RequestInterface $request, ResponseInterface $response)
{
// Get the token parameter
@@ -103,7 +144,11 @@ class ResourceController implements ResourceControllerInterface
return null;
}
- // convenience method to allow retrieval of the token
+ /**
+ * convenience method to allow retrieval of the token.
+ *
+ * @return array
+ */
public function getToken()
{
return $this->token;
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/ResourceControllerInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/ResourceControllerInterface.php
index 611421935..0e847ca61 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/ResourceControllerInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/ResourceControllerInterface.php
@@ -10,17 +10,32 @@ use OAuth2\ResponseInterface;
* call verifyResourceRequest in order to determine if the request
* contains a valid token.
*
- * ex:
- * > if (!$resourceController->verifyResourceRequest(OAuth2\Request::createFromGlobals(), $response = new OAuth2\Response())) {
- * > $response->send(); // authorization failed
- * > die();
- * > }
- * > return json_encode($resource); // valid token! Send the stuff!
- *
+ * @code
+ * if (!$resourceController->verifyResourceRequest(OAuth2\Request::createFromGlobals(), $response = new OAuth2\Response())) {
+ * $response->send(); // authorization failed
+ * die();
+ * }
+ * return json_encode($resource); // valid token! Send the stuff!
+ * @endcode
*/
interface ResourceControllerInterface
{
+ /**
+ * Verify the resource request
+ *
+ * @param RequestInterface $request - Request object
+ * @param ResponseInterface $response - Response object
+ * @param string $scope
+ * @return mixed
+ */
public function verifyResourceRequest(RequestInterface $request, ResponseInterface $response, $scope = null);
+ /**
+ * Get access token data.
+ *
+ * @param RequestInterface $request - Request object
+ * @param ResponseInterface $response - Response object
+ * @return mixed
+ */
public function getAccessTokenData(RequestInterface $request, ResponseInterface $response);
}
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/TokenController.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/TokenController.php
index 5d2d731fe..7fdaf85a6 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/TokenController.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/TokenController.php
@@ -10,9 +10,12 @@ use OAuth2\Scope;
use OAuth2\Storage\ClientInterface;
use OAuth2\RequestInterface;
use OAuth2\ResponseInterface;
+use InvalidArgumentException;
+use LogicException;
+use RuntimeException;
/**
- * @see \OAuth2\Controller\TokenControllerInterface
+ * @see TokenControllerInterface
*/
class TokenController implements TokenControllerInterface
{
@@ -22,7 +25,7 @@ class TokenController implements TokenControllerInterface
protected $accessToken;
/**
- * @var array
+ * @var array<GrantTypeInterface>
*/
protected $grantTypes;
@@ -32,7 +35,7 @@ class TokenController implements TokenControllerInterface
protected $clientAssertionType;
/**
- * @var Scope|ScopeInterface
+ * @var ScopeInterface
*/
protected $scopeUtil;
@@ -41,12 +44,22 @@ class TokenController implements TokenControllerInterface
*/
protected $clientStorage;
+ /**
+ * Constructor
+ *
+ * @param AccessTokenInterface $accessToken
+ * @param ClientInterface $clientStorage
+ * @param array $grantTypes
+ * @param ClientAssertionTypeInterface $clientAssertionType
+ * @param ScopeInterface $scopeUtil
+ * @throws InvalidArgumentException
+ */
public function __construct(AccessTokenInterface $accessToken, ClientInterface $clientStorage, array $grantTypes = array(), ClientAssertionTypeInterface $clientAssertionType = null, ScopeInterface $scopeUtil = null)
{
if (is_null($clientAssertionType)) {
foreach ($grantTypes as $grantType) {
if (!$grantType instanceof ClientAssertionTypeInterface) {
- throw new \InvalidArgumentException('You must supply an instance of OAuth2\ClientAssertionType\ClientAssertionTypeInterface or only use grant types which implement OAuth2\ClientAssertionType\ClientAssertionTypeInterface');
+ throw new InvalidArgumentException('You must supply an instance of OAuth2\ClientAssertionType\ClientAssertionTypeInterface or only use grant types which implement OAuth2\ClientAssertionType\ClientAssertionTypeInterface');
}
}
}
@@ -63,6 +76,12 @@ class TokenController implements TokenControllerInterface
$this->scopeUtil = $scopeUtil;
}
+ /**
+ * Handle the token request.
+ *
+ * @param RequestInterface $request - Request object to grant access token
+ * @param ResponseInterface $response - Response object
+ */
public function handleTokenRequest(RequestInterface $request, ResponseInterface $response)
{
if ($token = $this->grantAccessToken($request, $response)) {
@@ -83,8 +102,10 @@ class TokenController implements TokenControllerInterface
* This would be called from the "/token" endpoint as defined in the spec.
* You can call your endpoint whatever you want.
*
- * @param RequestInterface $request Request object to grant access token
- * @param ResponseInterface $response
+ * @param RequestInterface $request - Request object to grant access token
+ * @param ResponseInterface $response - Response object
+ *
+ * @return bool|null|array
*
* @throws \InvalidArgumentException
* @throws \LogicException
@@ -97,9 +118,15 @@ class TokenController implements TokenControllerInterface
*/
public function grantAccessToken(RequestInterface $request, ResponseInterface $response)
{
- if (strtolower($request->server('REQUEST_METHOD')) != 'post') {
+ if (strtolower($request->server('REQUEST_METHOD')) === 'options') {
+ $response->addHttpHeaders(array('Allow' => 'POST, OPTIONS'));
+
+ return null;
+ }
+
+ if (strtolower($request->server('REQUEST_METHOD')) !== 'post') {
$response->setError(405, 'invalid_request', 'The request method must be POST when requesting an access token', '#section-3.2');
- $response->addHttpHeaders(array('Allow' => 'POST'));
+ $response->addHttpHeaders(array('Allow' => 'POST, OPTIONS'));
return null;
}
@@ -121,6 +148,7 @@ class TokenController implements TokenControllerInterface
return null;
}
+ /** @var GrantTypeInterface $grantType */
$grantType = $this->grantTypes[$grantTypeIdentifier];
/**
@@ -128,8 +156,8 @@ class TokenController implements TokenControllerInterface
* ClientAssertionTypes allow for grant types which also assert the client data
* in which case ClientAssertion is handled in the validateRequest method
*
- * @see OAuth2\GrantType\JWTBearer
- * @see OAuth2\GrantType\ClientCredentials
+ * @see \OAuth2\GrantType\JWTBearer
+ * @see \OAuth2\GrantType\ClientCredentials
*/
if (!$grantType instanceof ClientAssertionTypeInterface) {
if (!$this->clientAssertionType->validateRequest($request, $response)) {
@@ -178,7 +206,6 @@ class TokenController implements TokenControllerInterface
*
* @see http://tools.ietf.org/html/rfc6749#section-3.3
*/
-
$requestedScope = $this->scopeUtil->getScopeFromRequest($request);
$availableScope = $grantType->getScope();
@@ -225,20 +252,24 @@ class TokenController implements TokenControllerInterface
}
/**
- * addGrantType
+ * Add grant type
*
- * @param GrantTypeInterface $grantType the grant type to add for the specified identifier
- * @param string $identifier a string passed in as "grant_type" in the response that will call this grantType
+ * @param GrantTypeInterface $grantType - the grant type to add for the specified identifier
+ * @param string|null $identifier - a string passed in as "grant_type" in the response that will call this grantType
*/
public function addGrantType(GrantTypeInterface $grantType, $identifier = null)
{
if (is_null($identifier) || is_numeric($identifier)) {
- $identifier = $grantType->getQuerystringIdentifier();
+ $identifier = $grantType->getQueryStringIdentifier();
}
$this->grantTypes[$identifier] = $grantType;
}
+ /**
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
+ */
public function handleRevokeRequest(RequestInterface $request, ResponseInterface $response)
{
if ($this->revokeToken($request, $response)) {
@@ -257,13 +288,20 @@ class TokenController implements TokenControllerInterface
*
* @param RequestInterface $request
* @param ResponseInterface $response
+ * @throws RuntimeException
* @return bool|null
*/
public function revokeToken(RequestInterface $request, ResponseInterface $response)
{
- if (strtolower($request->server('REQUEST_METHOD')) != 'post') {
+ if (strtolower($request->server('REQUEST_METHOD')) === 'options') {
+ $response->addHttpHeaders(array('Allow' => 'POST, OPTIONS'));
+
+ return null;
+ }
+
+ if (strtolower($request->server('REQUEST_METHOD')) !== 'post') {
$response->setError(405, 'invalid_request', 'The request method must be POST when revoking an access token', '#section-3.2');
- $response->addHttpHeaders(array('Allow' => 'POST'));
+ $response->addHttpHeaders(array('Allow' => 'POST, OPTIONS'));
return null;
}
@@ -285,7 +323,7 @@ class TokenController implements TokenControllerInterface
// @todo remove this check for v2.0
if (!method_exists($this->accessToken, 'revokeToken')) {
$class = get_class($this->accessToken);
- throw new \RuntimeException("AccessToken {$class} does not implement required revokeToken method");
+ throw new RuntimeException("AccessToken {$class} does not implement required revokeToken method");
}
$this->accessToken->revokeToken($token, $token_type_hint);
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/TokenControllerInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/TokenControllerInterface.php
index 72d72570f..2f83ce4bd 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/TokenControllerInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/TokenControllerInterface.php
@@ -10,23 +10,30 @@ use OAuth2\ResponseInterface;
* it is called to handle all grant types the application supports.
* It also validates the client's credentials
*
- * ex:
- * > $tokenController->handleTokenRequest(OAuth2\Request::createFromGlobals(), $response = new OAuth2\Response());
- * > $response->send();
- *
+ * @code
+ * $tokenController->handleTokenRequest(OAuth2\Request::createFromGlobals(), $response = new OAuth2\Response());
+ * $response->send();
+ * @endcode
*/
interface TokenControllerInterface
{
/**
- * handleTokenRequest
- *
- * @param $request
- * OAuth2\RequestInterface - The current http request
- * @param $response
- * OAuth2\ResponseInterface - An instance of OAuth2\ResponseInterface to contain the response data
+ * Handle the token request
*
+ * @param RequestInterface $request - The current http request
+ * @param ResponseInterface $response - An instance of OAuth2\ResponseInterface to contain the response data
*/
public function handleTokenRequest(RequestInterface $request, ResponseInterface $response);
+ /**
+ * Grant or deny a requested access token.
+ * This would be called from the "/token" endpoint as defined in the spec.
+ * You can call your endpoint whatever you want.
+ *
+ * @param RequestInterface $request - Request object to grant access token
+ * @param ResponseInterface $response - Response object
+ *
+ * @return mixed
+ */
public function grantAccessToken(RequestInterface $request, ResponseInterface $response);
}
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Encryption/EncryptionInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Encryption/EncryptionInterface.php
index 2d336c664..8dc720a43 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Encryption/EncryptionInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Encryption/EncryptionInterface.php
@@ -4,8 +4,31 @@ namespace OAuth2\Encryption;
interface EncryptionInterface
{
+ /**
+ * @param $payload
+ * @param $key
+ * @param null $algorithm
+ * @return mixed
+ */
public function encode($payload, $key, $algorithm = null);
+
+ /**
+ * @param $payload
+ * @param $key
+ * @param null $algorithm
+ * @return mixed
+ */
public function decode($payload, $key, $algorithm = null);
+
+ /**
+ * @param $data
+ * @return mixed
+ */
public function urlSafeB64Encode($data);
+
+ /**
+ * @param $b64
+ * @return mixed
+ */
public function urlSafeB64Decode($b64);
}
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Encryption/Jwt.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Encryption/Jwt.php
index ee576e643..c258b8fc3 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Encryption/Jwt.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Encryption/Jwt.php
@@ -2,12 +2,21 @@
namespace OAuth2\Encryption;
+use Exception;
+use InvalidArgumentException;
+
/**
* @link https://github.com/F21/jwt
* @author F21
*/
class Jwt implements EncryptionInterface
{
+ /**
+ * @param $payload
+ * @param $key
+ * @param string $algo
+ * @return string
+ */
public function encode($payload, $key, $algo = 'HS256')
{
$header = $this->generateJwtHeader($payload, $algo);
@@ -25,6 +34,12 @@ class Jwt implements EncryptionInterface
return implode('.', $segments);
}
+ /**
+ * @param string $jwt
+ * @param null $key
+ * @param array|bool $allowedAlgorithms
+ * @return bool|mixed
+ */
public function decode($jwt, $key = null, $allowedAlgorithms = true)
{
if (!strpos($jwt, '.')) {
@@ -67,6 +82,14 @@ class Jwt implements EncryptionInterface
return $payload;
}
+ /**
+ * @param $signature
+ * @param $input
+ * @param $key
+ * @param string $algo
+ * @return bool
+ * @throws InvalidArgumentException
+ */
private function verifySignature($signature, $input, $key, $algo = 'HS256')
{
// use constants when possible, for HipHop support
@@ -89,10 +112,17 @@ class Jwt implements EncryptionInterface
return @openssl_verify($input, $signature, $key, defined('OPENSSL_ALGO_SHA512') ? OPENSSL_ALGO_SHA512 : 'sha512') === 1;
default:
- throw new \InvalidArgumentException("Unsupported or invalid signing algorithm.");
+ throw new InvalidArgumentException("Unsupported or invalid signing algorithm.");
}
}
+ /**
+ * @param $input
+ * @param $key
+ * @param string $algo
+ * @return string
+ * @throws Exception
+ */
private function sign($input, $key, $algo = 'HS256')
{
switch ($algo) {
@@ -115,19 +145,30 @@ class Jwt implements EncryptionInterface
return $this->generateRSASignature($input, $key, defined('OPENSSL_ALGO_SHA512') ? OPENSSL_ALGO_SHA512 : 'sha512');
default:
- throw new \Exception("Unsupported or invalid signing algorithm.");
+ throw new Exception("Unsupported or invalid signing algorithm.");
}
}
+ /**
+ * @param $input
+ * @param $key
+ * @param string $algo
+ * @return mixed
+ * @throws Exception
+ */
private function generateRSASignature($input, $key, $algo)
{
if (!openssl_sign($input, $signature, $key, $algo)) {
- throw new \Exception("Unable to sign data.");
+ throw new Exception("Unable to sign data.");
}
return $signature;
}
+ /**
+ * @param string $data
+ * @return string
+ */
public function urlSafeB64Encode($data)
{
$b64 = base64_encode($data);
@@ -138,6 +179,10 @@ class Jwt implements EncryptionInterface
return $b64;
}
+ /**
+ * @param string $b64
+ * @return mixed|string
+ */
public function urlSafeB64Decode($b64)
{
$b64 = str_replace(array('-', '_'),
@@ -158,6 +203,11 @@ class Jwt implements EncryptionInterface
);
}
+ /**
+ * @param string $a
+ * @param string $b
+ * @return bool
+ */
protected function hash_equals($a, $b)
{
if (function_exists('hash_equals')) {
@@ -170,4 +220,4 @@ class Jwt implements EncryptionInterface
return $diff === 0;
}
-}
+} \ No newline at end of file
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/AuthorizationCode.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/AuthorizationCode.php
index cae9f787d..784f6b3a3 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/AuthorizationCode.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/AuthorizationCode.php
@@ -6,29 +6,47 @@ use OAuth2\Storage\AuthorizationCodeInterface;
use OAuth2\ResponseType\AccessTokenInterface;
use OAuth2\RequestInterface;
use OAuth2\ResponseInterface;
+use Exception;
/**
- *
* @author Brent Shaffer <bshafs at gmail dot com>
*/
class AuthorizationCode implements GrantTypeInterface
{
+ /**
+ * @var AuthorizationCodeInterface
+ */
protected $storage;
+
+ /**
+ * @var array
+ */
protected $authCode;
/**
- * @param \OAuth2\Storage\AuthorizationCodeInterface $storage REQUIRED Storage class for retrieving authorization code information
+ * @param AuthorizationCodeInterface $storage - REQUIRED Storage class for retrieving authorization code information
*/
public function __construct(AuthorizationCodeInterface $storage)
{
$this->storage = $storage;
}
- public function getQuerystringIdentifier()
+ /**
+ * @return string
+ */
+ public function getQueryStringIdentifier()
{
return 'authorization_code';
}
+ /**
+ * Validate the OAuth request
+ *
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
+ * @return bool
+ * @throws Exception
+ */
public function validateRequest(RequestInterface $request, ResponseInterface $response)
{
if (!$request->request('code')) {
@@ -75,21 +93,45 @@ class AuthorizationCode implements GrantTypeInterface
return true;
}
+ /**
+ * Get the client id
+ *
+ * @return mixed
+ */
public function getClientId()
{
return $this->authCode['client_id'];
}
+ /**
+ * Get the scope
+ *
+ * @return string
+ */
public function getScope()
{
return isset($this->authCode['scope']) ? $this->authCode['scope'] : null;
}
+ /**
+ * Get the user id
+ *
+ * @return mixed
+ */
public function getUserId()
{
return isset($this->authCode['user_id']) ? $this->authCode['user_id'] : null;
}
+ /**
+ * Create access token
+ *
+ * @param AccessTokenInterface $accessToken
+ * @param mixed $client_id - client identifier related to the access token.
+ * @param mixed $user_id - user id associated with the access token
+ * @param string $scope - scopes to be stored in space-separated string.
+ * @return array
+ */
public function createAccessToken(AccessTokenInterface $accessToken, $client_id, $user_id, $scope)
{
$token = $accessToken->createAccessToken($client_id, $user_id, $scope);
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/ClientCredentials.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/ClientCredentials.php
index f953e4e8d..e135c2dd2 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/ClientCredentials.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/ClientCredentials.php
@@ -9,12 +9,19 @@ use OAuth2\Storage\ClientCredentialsInterface;
/**
* @author Brent Shaffer <bshafs at gmail dot com>
*
- * @see OAuth2\ClientAssertionType_HttpBasic
+ * @see HttpBasic
*/
class ClientCredentials extends HttpBasic implements GrantTypeInterface
{
+ /**
+ * @var array
+ */
private $clientData;
+ /**
+ * @param ClientCredentialsInterface $storage
+ * @param array $config
+ */
public function __construct(ClientCredentialsInterface $storage, array $config = array())
{
/**
@@ -27,11 +34,21 @@ class ClientCredentials extends HttpBasic implements GrantTypeInterface
parent::__construct($storage, $config);
}
- public function getQuerystringIdentifier()
+ /**
+ * Get query string identifier
+ *
+ * @return string
+ */
+ public function getQueryStringIdentifier()
{
return 'client_credentials';
}
+ /**
+ * Get scope
+ *
+ * @return string|null
+ */
public function getScope()
{
$this->loadClientData();
@@ -39,6 +56,11 @@ class ClientCredentials extends HttpBasic implements GrantTypeInterface
return isset($this->clientData['scope']) ? $this->clientData['scope'] : null;
}
+ /**
+ * Get user id
+ *
+ * @return mixed
+ */
public function getUserId()
{
$this->loadClientData();
@@ -46,6 +68,15 @@ class ClientCredentials extends HttpBasic implements GrantTypeInterface
return isset($this->clientData['user_id']) ? $this->clientData['user_id'] : null;
}
+ /**
+ * Create access token
+ *
+ * @param AccessTokenInterface $accessToken
+ * @param mixed $client_id - client identifier related to the access token.
+ * @param mixed $user_id - user id associated with the access token
+ * @param string $scope - scopes to be stored in space-separated string.
+ * @return array
+ */
public function createAccessToken(AccessTokenInterface $accessToken, $client_id, $user_id, $scope)
{
/**
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/GrantTypeInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/GrantTypeInterface.php
index 98489e9c1..f45786ff5 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/GrantTypeInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/GrantTypeInterface.php
@@ -11,10 +11,49 @@ use OAuth2\ResponseInterface;
*/
interface GrantTypeInterface
{
- public function getQuerystringIdentifier();
+ /**
+ * Get query string identifier
+ *
+ * @return string
+ */
+ public function getQueryStringIdentifier();
+
+ /**
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
+ * @return mixed
+ */
public function validateRequest(RequestInterface $request, ResponseInterface $response);
+
+ /**
+ * Get client id
+ *
+ * @return mixed
+ */
public function getClientId();
+
+ /**
+ * Get user id
+ *
+ * @return mixed
+ */
public function getUserId();
+
+ /**
+ * Get scope
+ *
+ * @return string|null
+ */
public function getScope();
+
+ /**
+ * Create access token
+ *
+ * @param AccessTokenInterface $accessToken
+ * @param mixed $client_id - client identifier related to the access token.
+ * @param mixed $user_id - user id associated with the access token
+ * @param string $scope - scopes to be stored in space-separated string.
+ * @return array
+ */
public function createAccessToken(AccessTokenInterface $accessToken, $client_id, $user_id, $scope);
}
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/JwtBearer.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/JwtBearer.php
index bb11a6954..62c1efabd 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/JwtBearer.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/JwtBearer.php
@@ -30,10 +30,12 @@ class JwtBearer implements GrantTypeInterface, ClientAssertionTypeInterface
/**
* Creates an instance of the JWT bearer grant type.
*
- * @param OAuth2\Storage\JWTBearerInterface|JwtBearerInterface $storage A valid storage interface that implements storage hooks for the JWT bearer grant type.
- * @param string $audience The audience to validate the token against. This is usually the full URI of the OAuth token requests endpoint.
- * @param EncryptionInterface|OAuth2\Encryption\JWT $jwtUtil OPTONAL The class used to decode, encode and verify JWTs.
- * @param array $config
+ * @param JwtBearerInterface $storage - A valid storage interface that implements storage hooks for the JWT
+ * bearer grant type.
+ * @param string $audience - The audience to validate the token against. This is usually the full
+ * URI of the OAuth token requests endpoint.
+ * @param EncryptionInterface|JWT $jwtUtil - OPTONAL The class used to decode, encode and verify JWTs.
+ * @param array $config
*/
public function __construct(JwtBearerInterface $storage, $audience, EncryptionInterface $jwtUtil = null, array $config = array())
{
@@ -56,12 +58,11 @@ class JwtBearer implements GrantTypeInterface, ClientAssertionTypeInterface
/**
* Returns the grant_type get parameter to identify the grant type request as JWT bearer authorization grant.
*
- * @return
- * The string identifier for grant_type.
+ * @return string - The string identifier for grant_type.
*
- * @see OAuth2\GrantType\GrantTypeInterface::getQuerystringIdentifier()
+ * @see GrantTypeInterface::getQueryStringIdentifier()
*/
- public function getQuerystringIdentifier()
+ public function getQueryStringIdentifier()
{
return 'urn:ietf:params:oauth:grant-type:jwt-bearer';
}
@@ -69,10 +70,9 @@ class JwtBearer implements GrantTypeInterface, ClientAssertionTypeInterface
/**
* Validates the data from the decoded JWT.
*
- * @return
- * TRUE if the JWT request is valid and can be decoded. Otherwise, FALSE is returned.
- *
- * @see OAuth2\GrantType\GrantTypeInterface::getTokenData()
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
+ * @return bool|mixed|null TRUE if the JWT request is valid and can be decoded. Otherwise, FALSE is returned.@see GrantTypeInterface::getTokenData()
*/
public function validateRequest(RequestInterface $request, ResponseInterface $response)
{
@@ -196,16 +196,31 @@ class JwtBearer implements GrantTypeInterface, ClientAssertionTypeInterface
return true;
}
+ /**
+ * Get client id
+ *
+ * @return mixed
+ */
public function getClientId()
{
return $this->jwt['iss'];
}
+ /**
+ * Get user id
+ *
+ * @return mixed
+ */
public function getUserId()
{
return $this->jwt['sub'];
}
+ /**
+ * Get scope
+ *
+ * @return null
+ */
public function getScope()
{
return null;
@@ -215,7 +230,13 @@ class JwtBearer implements GrantTypeInterface, ClientAssertionTypeInterface
* Creates an access token that is NOT associated with a refresh token.
* If a subject (sub) the name of the user/account we are accessing data on behalf of.
*
- * @see OAuth2\GrantType\GrantTypeInterface::createAccessToken()
+ * @see GrantTypeInterface::createAccessToken()
+ *
+ * @param AccessTokenInterface $accessToken
+ * @param mixed $client_id - client identifier related to the access token.
+ * @param mixed $user_id - user id associated with the access token
+ * @param string $scope - scopes to be stored in space-separated string.
+ * @return array
*/
public function createAccessToken(AccessTokenInterface $accessToken, $client_id, $user_id, $scope)
{
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/RefreshToken.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/RefreshToken.php
index e55385222..75c611f1d 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/RefreshToken.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/RefreshToken.php
@@ -8,25 +8,34 @@ use OAuth2\RequestInterface;
use OAuth2\ResponseInterface;
/**
- *
* @author Brent Shaffer <bshafs at gmail dot com>
*/
class RefreshToken implements GrantTypeInterface
{
+ /**
+ * @var array
+ */
private $refreshToken;
+ /**
+ * @var RefreshTokenInterface
+ */
protected $storage;
+
+ /**
+ * @var array
+ */
protected $config;
/**
- * @param OAuth2\Storage\RefreshTokenInterface $storage REQUIRED Storage class for retrieving refresh token information
- * @param array $config OPTIONAL Configuration options for the server
- * <code>
- * $config = array(
- * 'always_issue_new_refresh_token' => true, // whether to issue a new refresh token upon successful token request
- * 'unset_refresh_token_after_use' => true // whether to unset the refresh token after after using
- * );
- * </code>
+ * @param RefreshTokenInterface $storage - REQUIRED Storage class for retrieving refresh token information
+ * @param array $config - OPTIONAL Configuration options for the server
+ * @code
+ * $config = array(
+ * 'always_issue_new_refresh_token' => true, // whether to issue a new refresh token upon successful token request
+ * 'unset_refresh_token_after_use' => true // whether to unset the refresh token after after using
+ * );
+ * @endcode
*/
public function __construct(RefreshTokenInterface $storage, $config = array())
{
@@ -45,11 +54,21 @@ class RefreshToken implements GrantTypeInterface
$this->storage = $storage;
}
- public function getQuerystringIdentifier()
+ /**
+ * @return string
+ */
+ public function getQueryStringIdentifier()
{
return 'refresh_token';
}
+ /**
+ * Validate the OAuth request
+ *
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
+ * @return bool|mixed|null
+ */
public function validateRequest(RequestInterface $request, ResponseInterface $response)
{
if (!$request->request("refresh_token")) {
@@ -76,21 +95,45 @@ class RefreshToken implements GrantTypeInterface
return true;
}
+ /**
+ * Get client id
+ *
+ * @return mixed
+ */
public function getClientId()
{
return $this->refreshToken['client_id'];
}
+ /**
+ * Get user id
+ *
+ * @return mixed|null
+ */
public function getUserId()
{
return isset($this->refreshToken['user_id']) ? $this->refreshToken['user_id'] : null;
}
+ /**
+ * Get scope
+ *
+ * @return null|string
+ */
public function getScope()
{
return isset($this->refreshToken['scope']) ? $this->refreshToken['scope'] : null;
}
+ /**
+ * Create access token
+ *
+ * @param AccessTokenInterface $accessToken
+ * @param mixed $client_id - client identifier related to the access token.
+ * @param mixed $user_id - user id associated with the access token
+ * @param string $scope - scopes to be stored in space-separated string.
+ * @return array
+ */
public function createAccessToken(AccessTokenInterface $accessToken, $client_id, $user_id, $scope)
{
/*
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/UserCredentials.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/UserCredentials.php
index f165538ba..b10c2dd09 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/UserCredentials.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/UserCredentials.php
@@ -6,30 +6,46 @@ use OAuth2\Storage\UserCredentialsInterface;
use OAuth2\ResponseType\AccessTokenInterface;
use OAuth2\RequestInterface;
use OAuth2\ResponseInterface;
+use LogicException;
/**
- *
* @author Brent Shaffer <bshafs at gmail dot com>
*/
class UserCredentials implements GrantTypeInterface
{
+ /**
+ * @var array
+ */
private $userInfo;
+ /**
+ * @var UserCredentialsInterface
+ */
protected $storage;
/**
- * @param OAuth2\Storage\UserCredentialsInterface $storage REQUIRED Storage class for retrieving user credentials information
+ * @param UserCredentialsInterface $storage - REQUIRED Storage class for retrieving user credentials information
*/
public function __construct(UserCredentialsInterface $storage)
{
$this->storage = $storage;
}
- public function getQuerystringIdentifier()
+ /**
+ * @return string
+ */
+ public function getQueryStringIdentifier()
{
return 'password';
}
+ /**
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
+ * @return bool|mixed|null
+ *
+ * @throws LogicException
+ */
public function validateRequest(RequestInterface $request, ResponseInterface $response)
{
if (!$request->request("password") || !$request->request("username")) {
@@ -61,21 +77,45 @@ class UserCredentials implements GrantTypeInterface
return true;
}
+ /**
+ * Get client id
+ *
+ * @return mixed|null
+ */
public function getClientId()
{
return null;
}
+ /**
+ * Get user id
+ *
+ * @return mixed
+ */
public function getUserId()
{
return $this->userInfo['user_id'];
}
+ /**
+ * Get scope
+ *
+ * @return null|string
+ */
public function getScope()
{
return isset($this->userInfo['scope']) ? $this->userInfo['scope'] : null;
}
+ /**
+ * Create access token
+ *
+ * @param AccessTokenInterface $accessToken
+ * @param mixed $client_id - client identifier related to the access token.
+ * @param mixed $user_id - user id associated with the access token
+ * @param string $scope - scopes to be stored in space-separated string.
+ * @return array
+ */
public function createAccessToken(AccessTokenInterface $accessToken, $client_id, $user_id, $scope)
{
return $accessToken->createAccessToken($client_id, $user_id, $scope);
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/AuthorizeController.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/AuthorizeController.php
index c9b5c6af7..54c5f9a63 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/AuthorizeController.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/AuthorizeController.php
@@ -11,8 +11,19 @@ use OAuth2\ResponseInterface;
*/
class AuthorizeController extends BaseAuthorizeController implements AuthorizeControllerInterface
{
+ /**
+ * @var mixed
+ */
private $nonce;
+ /**
+ * Set not authorized response
+ *
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
+ * @param string $redirect_uri
+ * @param null $user_id
+ */
protected function setNotAuthorizedResponse(RequestInterface $request, ResponseInterface $response, $redirect_uri, $user_id = null)
{
$prompt = $request->query('prompt', 'consent');
@@ -32,6 +43,14 @@ class AuthorizeController extends BaseAuthorizeController implements AuthorizeCo
$response->setRedirect($this->config['redirect_status_code'], $redirect_uri, $this->getState(), $error, $error_message);
}
+ /**
+ * @TODO: add dependency injection for the parameters in this method
+ *
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
+ * @param mixed $user_id
+ * @return array
+ */
protected function buildAuthorizeParameters($request, $response, $user_id)
{
if (!$params = parent::buildAuthorizeParameters($request, $response, $user_id)) {
@@ -49,6 +68,11 @@ class AuthorizeController extends BaseAuthorizeController implements AuthorizeCo
return $params;
}
+ /**
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
+ * @return bool
+ */
public function validateAuthorizeRequest(RequestInterface $request, ResponseInterface $response)
{
if (!parent::validateAuthorizeRequest($request, $response)) {
@@ -69,6 +93,11 @@ class AuthorizeController extends BaseAuthorizeController implements AuthorizeCo
return true;
}
+ /**
+ * Array of valid response types
+ *
+ * @return array
+ */
protected function getValidResponseTypes()
{
return array(
@@ -87,11 +116,8 @@ class AuthorizeController extends BaseAuthorizeController implements AuthorizeCo
* method checks whether OpenID Connect is enabled in the server settings
* and whether the openid scope was requested.
*
- * @param $request_scope
- * A space-separated string of scopes.
- *
- * @return
- * TRUE if an id token is needed, FALSE otherwise.
+ * @param string $request_scope - A space-separated string of scopes.
+ * @return boolean - TRUE if an id token is needed, FALSE otherwise.
*/
public function needsIdToken($request_scope)
{
@@ -99,6 +125,9 @@ class AuthorizeController extends BaseAuthorizeController implements AuthorizeCo
return $this->scopeUtil->checkScope('openid', $request_scope);
}
+ /**
+ * @return mixed
+ */
public function getNonce()
{
return $this->nonce;
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/AuthorizeControllerInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/AuthorizeControllerInterface.php
index 1e231d844..b4967c317 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/AuthorizeControllerInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/AuthorizeControllerInterface.php
@@ -5,6 +5,8 @@ namespace OAuth2\OpenID\Controller;
interface AuthorizeControllerInterface
{
const RESPONSE_TYPE_ID_TOKEN = 'id_token';
+
const RESPONSE_TYPE_ID_TOKEN_TOKEN = 'id_token token';
+
const RESPONSE_TYPE_CODE_ID_TOKEN = 'code id_token';
}
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/UserInfoController.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/UserInfoController.php
index 30cb942d0..c489b7af3 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/UserInfoController.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/UserInfoController.php
@@ -16,30 +16,34 @@ use OAuth2\ResponseInterface;
*/
class UserInfoController extends ResourceController implements UserInfoControllerInterface
{
- private $token;
-
- protected $tokenType;
- protected $tokenStorage;
+ /**
+ * @var UserClaimsInterface
+ */
protected $userClaimsStorage;
- protected $config;
- protected $scopeUtil;
+ /**
+ * Constructor
+ *
+ * @param TokenTypeInterface $tokenType
+ * @param AccessTokenInterface $tokenStorage
+ * @param UserClaimsInterface $userClaimsStorage
+ * @param array $config
+ * @param ScopeInterface $scopeUtil
+ */
public function __construct(TokenTypeInterface $tokenType, AccessTokenInterface $tokenStorage, UserClaimsInterface $userClaimsStorage, $config = array(), ScopeInterface $scopeUtil = null)
{
- $this->tokenType = $tokenType;
- $this->tokenStorage = $tokenStorage;
- $this->userClaimsStorage = $userClaimsStorage;
-
- $this->config = array_merge(array(
- 'www_realm' => 'Service',
- ), $config);
+ parent::__construct($tokenType, $tokenStorage, $config, $scopeUtil);
- if (is_null($scopeUtil)) {
- $scopeUtil = new Scope();
- }
- $this->scopeUtil = $scopeUtil;
+ $this->userClaimsStorage = $userClaimsStorage;
}
+ /**
+ * Handle the user info request
+ *
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
+ * @return void
+ */
public function handleUserInfoRequest(RequestInterface $request, ResponseInterface $response)
{
if (!$this->verifyResourceRequest($request, $response, 'openid')) {
@@ -55,4 +59,4 @@ class UserInfoController extends ResourceController implements UserInfoControlle
);
$response->addParameters($claims);
}
-}
+} \ No newline at end of file
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/UserInfoControllerInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/UserInfoControllerInterface.php
index a89049d49..88e9228d0 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/UserInfoControllerInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/UserInfoControllerInterface.php
@@ -9,15 +9,22 @@ use OAuth2\ResponseInterface;
* This controller is called when the user claims for OpenID Connect's
* UserInfo endpoint should be returned.
*
- * ex:
- * > $response = new OAuth2\Response();
- * > $userInfoController->handleUserInfoRequest(
- * > OAuth2\Request::createFromGlobals(),
- * > $response;
- * > $response->send();
- *
+ * @code
+ * $response = new OAuth2\Response();
+ * $userInfoController->handleUserInfoRequest(
+ * OAuth2\Request::createFromGlobals(),
+ * $response
+ * );
+ * $response->send();
+ * @endcode
*/
interface UserInfoControllerInterface
{
+ /**
+ * Handle user info request
+ *
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
+ */
public function handleUserInfoRequest(RequestInterface $request, ResponseInterface $response);
}
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/GrantType/AuthorizationCode.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/GrantType/AuthorizationCode.php
index 8ed1edc26..ee113a0e5 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/GrantType/AuthorizationCode.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/GrantType/AuthorizationCode.php
@@ -6,11 +6,19 @@ use OAuth2\GrantType\AuthorizationCode as BaseAuthorizationCode;
use OAuth2\ResponseType\AccessTokenInterface;
/**
- *
* @author Brent Shaffer <bshafs at gmail dot com>
*/
class AuthorizationCode extends BaseAuthorizationCode
{
+ /**
+ * Create access token
+ *
+ * @param AccessTokenInterface $accessToken
+ * @param mixed $client_id - client identifier related to the access token.
+ * @param mixed $user_id - user id associated with the access token
+ * @param string $scope - scopes to be stored in space-separated string.
+ * @return array
+ */
public function createAccessToken(AccessTokenInterface $accessToken, $client_id, $user_id, $scope)
{
$includeRefreshToken = true;
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/AuthorizationCode.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/AuthorizationCode.php
index 8971954c5..b8ad41ffb 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/AuthorizationCode.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/AuthorizationCode.php
@@ -6,16 +6,26 @@ use OAuth2\ResponseType\AuthorizationCode as BaseAuthorizationCode;
use OAuth2\OpenID\Storage\AuthorizationCodeInterface as AuthorizationCodeStorageInterface;
/**
- *
* @author Brent Shaffer <bshafs at gmail dot com>
*/
class AuthorizationCode extends BaseAuthorizationCode implements AuthorizationCodeInterface
{
+ /**
+ * Constructor
+ *
+ * @param AuthorizationCodeStorageInterface $storage
+ * @param array $config
+ */
public function __construct(AuthorizationCodeStorageInterface $storage, array $config = array())
{
parent::__construct($storage, $config);
}
+ /**
+ * @param $params
+ * @param null $user_id
+ * @return array
+ */
public function getAuthorizeResponse($params, $user_id = null)
{
// build the URL to redirect to
@@ -35,18 +45,14 @@ class AuthorizationCode extends BaseAuthorizationCode implements AuthorizationCo
/**
* Handle the creation of the authorization code.
*
- * @param $client_id
- * Client identifier related to the authorization code
- * @param $user_id
- * User ID associated with the authorization code
- * @param $redirect_uri
- * An absolute URI to which the authorization server will redirect the
- * user-agent to when the end-user authorization step is completed.
- * @param $scope
- * (optional) Scopes to be stored in space-separated string.
- * @param $id_token
- * (optional) The OpenID Connect id_token.
+ * @param mixed $client_id - Client identifier related to the authorization code
+ * @param mixed $user_id - User ID associated with the authorization code
+ * @param string $redirect_uri - An absolute URI to which the authorization server will redirect the
+ * user-agent to when the end-user authorization step is completed.
+ * @param string $scope - OPTIONAL Scopes to be stored in space-separated string.
+ * @param string $id_token - OPTIONAL The OpenID Connect id_token.
*
+ * @return string
* @see http://tools.ietf.org/html/rfc6749#section-4
* @ingroup oauth2_section_4
*/
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/AuthorizationCodeInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/AuthorizationCodeInterface.php
index ea4779255..eb94ef077 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/AuthorizationCodeInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/AuthorizationCodeInterface.php
@@ -5,7 +5,6 @@ namespace OAuth2\OpenID\ResponseType;
use OAuth2\ResponseType\AuthorizationCodeInterface as BaseAuthorizationCodeInterface;
/**
- *
* @author Brent Shaffer <bshafs at gmail dot com>
*/
interface AuthorizationCodeInterface extends BaseAuthorizationCodeInterface
@@ -13,12 +12,13 @@ interface AuthorizationCodeInterface extends BaseAuthorizationCodeInterface
/**
* Handle the creation of the authorization code.
*
- * @param $client_id Client identifier related to the authorization code
- * @param $user_id User ID associated with the authorization code
- * @param $redirect_uri An absolute URI to which the authorization server will redirect the
- * user-agent to when the end-user authorization step is completed.
- * @param $scope OPTIONAL Scopes to be stored in space-separated string.
- * @param $id_token OPTIONAL The OpenID Connect id_token.
+ * @param mixed $client_id - Client identifier related to the authorization code
+ * @param mixed $user_id - User ID associated with the authorization code
+ * @param string $redirect_uri - An absolute URI to which the authorization server will redirect the
+ * user-agent to when the end-user authorization step is completed.
+ * @param string $scope - OPTIONAL Scopes to be stored in space-separated string.
+ * @param string $id_token - OPTIONAL The OpenID Connect id_token.
+ * @return string
*
* @see http://tools.ietf.org/html/rfc6749#section-4
* @ingroup oauth2_section_4
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/CodeIdToken.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/CodeIdToken.php
index ac7764d6c..2696ada37 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/CodeIdToken.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/CodeIdToken.php
@@ -4,15 +4,31 @@ namespace OAuth2\OpenID\ResponseType;
class CodeIdToken implements CodeIdTokenInterface
{
+ /**
+ * @var AuthorizationCodeInterface
+ */
protected $authCode;
+
+ /**
+ * @var IdTokenInterface
+ */
protected $idToken;
+ /**
+ * @param AuthorizationCodeInterface $authCode
+ * @param IdTokenInterface $idToken
+ */
public function __construct(AuthorizationCodeInterface $authCode, IdTokenInterface $idToken)
{
$this->authCode = $authCode;
$this->idToken = $idToken;
}
+ /**
+ * @param array $params
+ * @param mixed $user_id
+ * @return mixed
+ */
public function getAuthorizeResponse($params, $user_id = null)
{
$result = $this->authCode->getAuthorizeResponse($params, $user_id);
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/IdToken.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/IdToken.php
index 97777fbf2..55e446074 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/IdToken.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/IdToken.php
@@ -6,14 +6,38 @@ use OAuth2\Encryption\EncryptionInterface;
use OAuth2\Encryption\Jwt;
use OAuth2\Storage\PublicKeyInterface;
use OAuth2\OpenID\Storage\UserClaimsInterface;
+use LogicException;
class IdToken implements IdTokenInterface
{
+ /**
+ * @var UserClaimsInterface
+ */
protected $userClaimsStorage;
+ /**
+ * @var PublicKeyInterface
+ */
protected $publicKeyStorage;
+
+ /**
+ * @var array
+ */
protected $config;
+
+ /**
+ * @var EncryptionInterface
+ */
protected $encryptionUtil;
+ /**
+ * Constructor
+ *
+ * @param UserClaimsInterface $userClaimsStorage
+ * @param PublicKeyInterface $publicKeyStorage
+ * @param array $config
+ * @param EncryptionInterface $encryptionUtil
+ * @throws LogicException
+ */
public function __construct(UserClaimsInterface $userClaimsStorage, PublicKeyInterface $publicKeyStorage, array $config = array(), EncryptionInterface $encryptionUtil = null)
{
$this->userClaimsStorage = $userClaimsStorage;
@@ -24,13 +48,18 @@ class IdToken implements IdTokenInterface
$this->encryptionUtil = $encryptionUtil;
if (!isset($config['issuer'])) {
- throw new \LogicException('config parameter "issuer" must be set');
+ throw new LogicException('config parameter "issuer" must be set');
}
$this->config = array_merge(array(
'id_lifetime' => 3600,
), $config);
}
+ /**
+ * @param array $params
+ * @param null $userInfo
+ * @return array|mixed
+ */
public function getAuthorizeResponse($params, $userInfo = null)
{
// build the URL to redirect to
@@ -50,6 +79,16 @@ class IdToken implements IdTokenInterface
return array($params['redirect_uri'], $result);
}
+ /**
+ * Create id token
+ *
+ * @param string $client_id
+ * @param mixed $userInfo
+ * @param mixed $nonce
+ * @param mixed $userClaims
+ * @param mixed $access_token
+ * @return mixed|string
+ */
public function createIdToken($client_id, $userInfo, $nonce = null, $userClaims = null, $access_token = null)
{
// pull auth_time from user info if supplied
@@ -79,6 +118,11 @@ class IdToken implements IdTokenInterface
return $this->encodeToken($token, $client_id);
}
+ /**
+ * @param $access_token
+ * @param null $client_id
+ * @return mixed|string
+ */
protected function createAtHash($access_token, $client_id = null)
{
// maps HS256 and RS256 to sha256, etc.
@@ -90,6 +134,11 @@ class IdToken implements IdTokenInterface
return $this->encryptionUtil->urlSafeB64Encode($at_hash);
}
+ /**
+ * @param array $token
+ * @param null $client_id
+ * @return mixed|string
+ */
protected function encodeToken(array $token, $client_id = null)
{
$private_key = $this->publicKeyStorage->getPrivateKey($client_id);
@@ -98,6 +147,11 @@ class IdToken implements IdTokenInterface
return $this->encryptionUtil->encode($token, $private_key, $algorithm);
}
+ /**
+ * @param $userInfo
+ * @return array
+ * @throws LogicException
+ */
private function getUserIdAndAuthTime($userInfo)
{
$auth_time = null;
@@ -105,7 +159,7 @@ class IdToken implements IdTokenInterface
// support an array for user_id / auth_time
if (is_array($userInfo)) {
if (!isset($userInfo['user_id'])) {
- throw new \LogicException('if $user_id argument is an array, user_id index must be set');
+ throw new LogicException('if $user_id argument is an array, user_id index must be set');
}
$auth_time = isset($userInfo['auth_time']) ? $userInfo['auth_time'] : null;
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/IdTokenInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/IdTokenInterface.php
index 0bd2f8391..226a3bcbb 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/IdTokenInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/IdTokenInterface.php
@@ -15,12 +15,13 @@ interface IdTokenInterface extends ResponseTypeInterface
* If the Implicit Flow is used, the token and id_token are generated and
* returned together.
*
- * @param string $client_id The client id.
- * @param string $user_id The user id.
- * @param string $nonce OPTIONAL The nonce.
- * @param string $userClaims OPTIONAL Claims about the user.
- * @param string $access_token OPTIONAL The access token, if known.
- *
+ * @param string $client_id - The client id.
+ * @param mixed $userInfo - User info
+ * @param string $nonce - OPTIONAL The nonce.
+ * @param string $userClaims - OPTIONAL Claims about the user.
+ * @param string $access_token - OPTIONAL The access token, if known.
+
+ * @internal param string $user_id - The user id.
* @return string The ID Token represented as a JSON Web Token (JWT).
*
* @see http://openid.net/specs/openid-connect-core-1_0.html#IDToken
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/IdTokenToken.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/IdTokenToken.php
index f0c59799b..94c51ae4d 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/IdTokenToken.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/IdTokenToken.php
@@ -6,15 +6,33 @@ use OAuth2\ResponseType\AccessTokenInterface;
class IdTokenToken implements IdTokenTokenInterface
{
+ /**
+ * @var AccessTokenInterface
+ */
protected $accessToken;
+
+ /**
+ * @var IdTokenInterface
+ */
protected $idToken;
+ /**
+ * Constructor
+ *
+ * @param AccessTokenInterface $accessToken
+ * @param IdTokenInterface $idToken
+ */
public function __construct(AccessTokenInterface $accessToken, IdTokenInterface $idToken)
{
$this->accessToken = $accessToken;
$this->idToken = $idToken;
}
+ /**
+ * @param array $params
+ * @param mixed $user_id
+ * @return mixed
+ */
public function getAuthorizeResponse($params, $user_id = null)
{
$result = $this->accessToken->getAuthorizeResponse($params, $user_id);
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Storage/AuthorizationCodeInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Storage/AuthorizationCodeInterface.php
index 51dd867ec..446cec928 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Storage/AuthorizationCodeInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Storage/AuthorizationCodeInterface.php
@@ -23,13 +23,13 @@ interface AuthorizationCodeInterface extends BaseAuthorizationCodeInterface
*
* Required for OAuth2::GRANT_TYPE_AUTH_CODE.
*
- * @param $code authorization code to be stored.
- * @param $client_id client identifier to be stored.
- * @param $user_id user identifier to be stored.
- * @param string $redirect_uri redirect URI(s) to be stored in a space-separated string.
- * @param int $expires expiration to be stored as a Unix timestamp.
- * @param string $scope OPTIONAL scopes to be stored in space-separated string.
- * @param string $id_token OPTIONAL the OpenID Connect id_token.
+ * @param string $code - authorization code to be stored.
+ * @param mixed $client_id - client identifier to be stored.
+ * @param mixed $user_id - user identifier to be stored.
+ * @param string $redirect_uri - redirect URI(s) to be stored in a space-separated string.
+ * @param int $expires - expiration to be stored as a Unix timestamp.
+ * @param string $scope - OPTIONAL scopes to be stored in space-separated string.
+ * @param string $id_token - OPTIONAL the OpenID Connect id_token.
*
* @ingroup oauth2_section_4
*/
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Storage/UserClaimsInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Storage/UserClaimsInterface.php
index f230bef9e..9c5e7c8c4 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Storage/UserClaimsInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Storage/UserClaimsInterface.php
@@ -23,14 +23,11 @@ interface UserClaimsInterface
* Groups of claims are returned based on the requested scopes. No group
* is required, and no claim is required.
*
- * @param $user_id
- * The id of the user for which claims should be returned.
- * @param $scope
- * The requested scope.
+ * @param mixed $user_id - The id of the user for which claims should be returned.
+ * @param string $scope - The requested scope.
* Scopes with matching claims: profile, email, address, phone.
*
- * @return
- * An array in the claim => value format.
+ * @return array - An array in the claim => value format.
*
* @see http://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims
*/
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Request.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Request.php
index c92cee821..c96cb972f 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Request.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Request.php
@@ -2,6 +2,8 @@
namespace OAuth2;
+use LogicException;
+
/**
* OAuth2\Request
* This class is taken from the Symfony2 Framework and is part of the Symfony package.
@@ -21,13 +23,14 @@ class Request implements RequestInterface
/**
* Constructor.
*
- * @param array $query The GET parameters
- * @param array $request The POST parameters
- * @param array $attributes The request attributes (parameters parsed from the PATH_INFO, ...)
- * @param array $cookies The COOKIE parameters
- * @param array $files The FILES parameters
- * @param array $server The SERVER parameters
- * @param string $content The raw body data
+ * @param array $query - The GET parameters
+ * @param array $request - The POST parameters
+ * @param array $attributes - The request attributes (parameters parsed from the PATH_INFO, ...)
+ * @param array $cookies - The COOKIE parameters
+ * @param array $files - The FILES parameters
+ * @param array $server - The SERVER parameters
+ * @param string $content - The raw body data
+ * @param array $headers - The headers
*
* @api
*/
@@ -41,13 +44,14 @@ class Request implements RequestInterface
*
* This method also re-initializes all properties.
*
- * @param array $query The GET parameters
- * @param array $request The POST parameters
- * @param array $attributes The request attributes (parameters parsed from the PATH_INFO, ...)
- * @param array $cookies The COOKIE parameters
- * @param array $files The FILES parameters
- * @param array $server The SERVER parameters
- * @param string $content The raw body data
+ * @param array $query - The GET parameters
+ * @param array $request - The POST parameters
+ * @param array $attributes - The request attributes (parameters parsed from the PATH_INFO, ...)
+ * @param array $cookies - The COOKIE parameters
+ * @param array $files - The FILES parameters
+ * @param array $server - The SERVER parameters
+ * @param string $content - The raw body data
+ * @param array $headers - The headers
*
* @api
*/
@@ -63,21 +67,41 @@ class Request implements RequestInterface
$this->headers = is_null($headers) ? $this->getHeadersFromServer($this->server) : $headers;
}
+ /**
+ * @param string $name
+ * @param mixed $default
+ * @return mixed
+ */
public function query($name, $default = null)
{
return isset($this->query[$name]) ? $this->query[$name] : $default;
}
+ /**
+ * @param string $name
+ * @param mixed $default
+ * @return mixed
+ */
public function request($name, $default = null)
{
return isset($this->request[$name]) ? $this->request[$name] : $default;
}
+ /**
+ * @param string $name
+ * @param mixed $default
+ * @return mixed
+ */
public function server($name, $default = null)
{
return isset($this->server[$name]) ? $this->server[$name] : $default;
}
+ /**
+ * @param string $name
+ * @param mixed $default
+ * @return mixed
+ */
public function headers($name, $default = null)
{
$headers = array_change_key_case($this->headers);
@@ -86,6 +110,9 @@ class Request implements RequestInterface
return isset($headers[$name]) ? $headers[$name] : $default;
}
+ /**
+ * @return array
+ */
public function getAllQueryParameters()
{
return $this->query;
@@ -94,14 +121,15 @@ class Request implements RequestInterface
/**
* Returns the request body content.
*
- * @param Boolean $asResource If true, a resource will be returned
+ * @param boolean $asResource - If true, a resource will be returned
+ * @return string|resource - The request body content or a resource to read the body stream.
*
- * @return string|resource The request body content or a resource to read the body stream.
+ * @throws LogicException
*/
public function getContent($asResource = false)
{
if (false === $this->content || (true === $asResource && null !== $this->content)) {
- throw new \LogicException('getContent() can only be called once when using the resource return type.');
+ throw new LogicException('getContent() can only be called once when using the resource return type.');
}
if (true === $asResource) {
@@ -117,6 +145,10 @@ class Request implements RequestInterface
return $this->content;
}
+ /**
+ * @param array $server
+ * @return array
+ */
private function getHeadersFromServer($server)
{
$headers = array();
@@ -185,13 +217,15 @@ class Request implements RequestInterface
/**
* Creates a new request with values from PHP's super globals.
*
- * @return Request A new request
+ * @return Request - A new request
*
* @api
*/
public static function createFromGlobals()
{
$class = get_called_class();
+
+ /** @var Request $request */
$request = new $class($_GET, $_POST, array(), $_COOKIE, $_FILES, $_SERVER);
$contentType = $request->server('CONTENT_TYPE', '');
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/RequestInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/RequestInterface.php
index 8a70d5fad..1d036b735 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/RequestInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/RequestInterface.php
@@ -4,13 +4,36 @@ namespace OAuth2;
interface RequestInterface
{
+ /**
+ * @param string $name
+ * @param mixed $default
+ * @return mixed
+ */
public function query($name, $default = null);
+ /**
+ * @param string $name
+ * @param mixed $default
+ * @return mixed
+ */
public function request($name, $default = null);
+ /**
+ * @param string $name
+ * @param mixed $default
+ * @return mixed
+ */
public function server($name, $default = null);
+ /**
+ * @param string $name
+ * @param mixed $default
+ * @return mixed
+ */
public function headers($name, $default = null);
+ /**
+ * @return mixed
+ */
public function getAllQueryParameters();
}
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Response.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Response.php
index fc1e62a98..ccd797ae7 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Response.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Response.php
@@ -2,6 +2,8 @@
namespace OAuth2;
+use InvalidArgumentException;
+
/**
* Class to handle OAuth2 Responses in a graceful way. Use this interface
* to output the proper OAuth2 responses.
@@ -13,12 +15,34 @@ namespace OAuth2;
*/
class Response implements ResponseInterface
{
+ /**
+ * @var string
+ */
public $version;
+
+ /**
+ * @var int
+ */
protected $statusCode = 200;
+
+ /**
+ * @var string
+ */
protected $statusText;
+
+ /**
+ * @var array
+ */
protected $parameters = array();
+
+ /**
+ * @var array
+ */
protected $httpHeaders = array();
+ /**
+ * @var array
+ */
public static $statusTexts = array(
100 => 'Continue',
101 => 'Switching Protocols',
@@ -63,6 +87,11 @@ class Response implements ResponseInterface
505 => 'HTTP Version Not Supported',
);
+ /**
+ * @param array $parameters
+ * @param int $statusCode
+ * @param array $headers
+ */
public function __construct($parameters = array(), $statusCode = 200, $headers = array())
{
$this->setParameters($parameters);
@@ -102,76 +131,128 @@ class Response implements ResponseInterface
return sprintf("%s: %s\n", $name, $value);
}
+ /**
+ * @return int
+ */
public function getStatusCode()
{
return $this->statusCode;
}
+ /**
+ * @param int $statusCode
+ * @param string $text
+ * @throws InvalidArgumentException
+ */
public function setStatusCode($statusCode, $text = null)
{
$this->statusCode = (int) $statusCode;
if ($this->isInvalid()) {
- throw new \InvalidArgumentException(sprintf('The HTTP status code "%s" is not valid.', $statusCode));
+ throw new InvalidArgumentException(sprintf('The HTTP status code "%s" is not valid.', $statusCode));
}
$this->statusText = false === $text ? '' : (null === $text ? self::$statusTexts[$this->statusCode] : $text);
}
+ /**
+ * @return string
+ */
public function getStatusText()
{
return $this->statusText;
}
+ /**
+ * @return array
+ */
public function getParameters()
{
return $this->parameters;
}
+ /**
+ * @param array $parameters
+ */
public function setParameters(array $parameters)
{
$this->parameters = $parameters;
}
+ /**
+ * @param array $parameters
+ */
public function addParameters(array $parameters)
{
$this->parameters = array_merge($this->parameters, $parameters);
}
+ /**
+ * @param string $name
+ * @param mixed $default
+ * @return mixed
+ */
public function getParameter($name, $default = null)
{
return isset($this->parameters[$name]) ? $this->parameters[$name] : $default;
}
+ /**
+ * @param string $name
+ * @param mixed $value
+ */
public function setParameter($name, $value)
{
$this->parameters[$name] = $value;
}
+ /**
+ * @param array $httpHeaders
+ */
public function setHttpHeaders(array $httpHeaders)
{
$this->httpHeaders = $httpHeaders;
}
+ /**
+ * @param string $name
+ * @param mixed $value
+ */
public function setHttpHeader($name, $value)
{
$this->httpHeaders[$name] = $value;
}
+ /**
+ * @param array $httpHeaders
+ */
public function addHttpHeaders(array $httpHeaders)
{
$this->httpHeaders = array_merge($this->httpHeaders, $httpHeaders);
}
+ /**
+ * @return array
+ */
public function getHttpHeaders()
{
return $this->httpHeaders;
}
+ /**
+ * @param string $name
+ * @param mixed $default
+ * @return mixed
+ */
public function getHttpHeader($name, $default = null)
{
return isset($this->httpHeaders[$name]) ? $this->httpHeaders[$name] : $default;
}
+ /**
+ * @param string $format
+ * @return mixed
+ * @throws InvalidArgumentException
+ */
public function getResponseBody($format = 'json')
{
switch ($format) {
@@ -187,10 +268,13 @@ class Response implements ResponseInterface
return $xml->asXML();
}
- throw new \InvalidArgumentException(sprintf('The format %s is not supported', $format));
+ throw new InvalidArgumentException(sprintf('The format %s is not supported', $format));
}
+ /**
+ * @param string $format
+ */
public function send($format = 'json')
{
// headers have already been sent by the developer
@@ -215,6 +299,14 @@ class Response implements ResponseInterface
echo $this->getResponseBody($format);
}
+ /**
+ * @param int $statusCode
+ * @param string $error
+ * @param string $errorDescription
+ * @param string $errorUri
+ * @return mixed
+ * @throws InvalidArgumentException
+ */
public function setError($statusCode, $error, $errorDescription = null, $errorUri = null)
{
$parameters = array(
@@ -239,14 +331,24 @@ class Response implements ResponseInterface
$this->addHttpHeaders($httpHeaders);
if (!$this->isClientError() && !$this->isServerError()) {
- throw new \InvalidArgumentException(sprintf('The HTTP status code is not an error ("%s" given).', $statusCode));
+ throw new InvalidArgumentException(sprintf('The HTTP status code is not an error ("%s" given).', $statusCode));
}
}
+ /**
+ * @param int $statusCode
+ * @param string $url
+ * @param string $state
+ * @param string $error
+ * @param string $errorDescription
+ * @param string $errorUri
+ * @return mixed
+ * @throws InvalidArgumentException
+ */
public function setRedirect($statusCode, $url, $state = null, $error = null, $errorDescription = null, $errorUri = null)
{
if (empty($url)) {
- throw new \InvalidArgumentException('Cannot redirect to an empty URL.');
+ throw new InvalidArgumentException('Cannot redirect to an empty URL.');
}
$parameters = array();
@@ -271,15 +373,16 @@ class Response implements ResponseInterface
$this->addHttpHeaders(array('Location' => $url));
if (!$this->isRedirection()) {
- throw new \InvalidArgumentException(sprintf('The HTTP status code is not a redirect ("%s" given).', $statusCode));
+ throw new InvalidArgumentException(sprintf('The HTTP status code is not a redirect ("%s" given).', $statusCode));
}
}
- // http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
/**
* @return Boolean
*
* @api
+ *
+ * @see http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
*/
public function isInvalid()
{
@@ -336,8 +439,11 @@ class Response implements ResponseInterface
return $this->statusCode >= 500 && $this->statusCode < 600;
}
- /*
- * Functions from Symfony2 HttpFoundation - output pretty header
+ /**
+ * Function from Symfony2 HttpFoundation - output pretty header
+ *
+ * @param array $headers
+ * @return string
*/
private function getHttpHeadersAsString($headers)
{
@@ -357,11 +463,23 @@ class Response implements ResponseInterface
return $content;
}
+ /**
+ * Function from Symfony2 HttpFoundation - output pretty header
+ *
+ * @param string $name
+ * @return mixed
+ */
private function beautifyHeaderName($name)
{
return preg_replace_callback('/\-(.)/', array($this, 'beautifyCallback'), ucfirst($name));
}
+ /**
+ * Function from Symfony2 HttpFoundation - output pretty header
+ *
+ * @param array $match
+ * @return string
+ */
private function beautifyCallback($match)
{
return '-'.strtoupper($match[1]);
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseInterface.php
index c99b5f7d1..fe920864a 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseInterface.php
@@ -6,19 +6,48 @@ namespace OAuth2;
* Interface which represents an object response. Meant to handle and display the proper OAuth2 Responses
* for errors and successes
*
- * @see OAuth2\Response
+ * @see \OAuth2\Response
*/
interface ResponseInterface
{
+ /**
+ * @param array $parameters
+ */
public function addParameters(array $parameters);
+ /**
+ * @param array $httpHeaders
+ */
public function addHttpHeaders(array $httpHeaders);
+ /**
+ * @param int $statusCode
+ */
public function setStatusCode($statusCode);
+ /**
+ * @param int $statusCode
+ * @param string $name
+ * @param string $description
+ * @param string $uri
+ * @return mixed
+ */
public function setError($statusCode, $name, $description = null, $uri = null);
+ /**
+ * @param int $statusCode
+ * @param string $url
+ * @param string $state
+ * @param string $error
+ * @param string $errorDescription
+ * @param string $errorUri
+ * @return mixed
+ */
public function setRedirect($statusCode, $url, $state = null, $error = null, $errorDescription = null, $errorUri = null);
+ /**
+ * @param string $name
+ * @return mixed
+ */
public function getParameter($name);
}
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AccessToken.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AccessToken.php
index 98f51218f..e836a3447 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AccessToken.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AccessToken.php
@@ -4,28 +4,39 @@ namespace OAuth2\ResponseType;
use OAuth2\Storage\AccessTokenInterface as AccessTokenStorageInterface;
use OAuth2\Storage\RefreshTokenInterface;
+use RuntimeException;
/**
- *
* @author Brent Shaffer <bshafs at gmail dot com>
*/
class AccessToken implements AccessTokenInterface
{
+ /**
+ * @var AccessTokenInterface
+ */
protected $tokenStorage;
+
+ /**
+ * @var RefreshTokenInterface
+ */
protected $refreshStorage;
+
+ /**
+ * @var array
+ */
protected $config;
/**
- * @param OAuth2\Storage\AccessTokenInterface $tokenStorage REQUIRED Storage class for saving access token information
- * @param OAuth2\Storage\RefreshTokenInterface $refreshStorage OPTIONAL Storage class for saving refresh token information
- * @param array $config OPTIONAL Configuration options for the server
- * <code>
- * $config = array(
- * 'token_type' => 'bearer', // token type identifier
- * 'access_lifetime' => 3600, // time before access token expires
- * 'refresh_token_lifetime' => 1209600, // time before refresh token expires
- * );
- * </endcode>
+ * @param AccessTokenStorageInterface $tokenStorage - REQUIRED Storage class for saving access token information
+ * @param RefreshTokenInterface $refreshStorage - OPTIONAL Storage class for saving refresh token information
+ * @param array $config - OPTIONAL Configuration options for the server
+ * @code
+ * $config = array(
+ * 'token_type' => 'bearer', // token type identifier
+ * 'access_lifetime' => 3600, // time before access token expires
+ * 'refresh_token_lifetime' => 1209600, // time before refresh token expires
+ * );
+ * @endcode
*/
public function __construct(AccessTokenStorageInterface $tokenStorage, RefreshTokenInterface $refreshStorage = null, array $config = array())
{
@@ -39,6 +50,13 @@ class AccessToken implements AccessTokenInterface
), $config);
}
+ /**
+ * Get authorize response
+ *
+ * @param array $params
+ * @param mixed $user_id
+ * @return array
+ */
public function getAuthorizeResponse($params, $user_id = null)
{
// build the URL to redirect to
@@ -64,10 +82,11 @@ class AccessToken implements AccessTokenInterface
/**
* Handle the creation of access token, also issue refresh token if supported / desirable.
*
- * @param $client_id client identifier related to the access token.
- * @param $user_id user ID associated with the access token
- * @param $scope OPTIONAL scopes to be stored in space-separated string.
- * @param bool $includeRefreshToken if true, a new refresh_token will be added to the response
+ * @param mixed $client_id - client identifier related to the access token.
+ * @param mixed $user_id - user ID associated with the access token
+ * @param string $scope - OPTIONAL scopes to be stored in space-separated string.
+ * @param bool $includeRefreshToken - if true, a new refresh_token will be added to the response
+ * @return array
*
* @see http://tools.ietf.org/html/rfc6749#section-5
* @ingroup oauth2_section_5
@@ -107,13 +126,18 @@ class AccessToken implements AccessTokenInterface
* Implementing classes may want to override this function to implement
* other access token generation schemes.
*
- * @return
- * An unique access token.
+ * @return string - A unique access token.
*
* @ingroup oauth2_section_4
*/
protected function generateAccessToken()
{
+ if (function_exists('random_bytes')) {
+ $randomData = random_bytes(20);
+ if ($randomData !== false && strlen($randomData) === 20) {
+ return bin2hex($randomData);
+ }
+ }
if (function_exists('openssl_random_pseudo_bytes')) {
$randomData = openssl_random_pseudo_bytes(20);
if ($randomData !== false && strlen($randomData) === 20) {
@@ -144,8 +168,7 @@ class AccessToken implements AccessTokenInterface
* Implementing classes may want to override this function to implement
* other refresh token generation schemes.
*
- * @return
- * An unique refresh.
+ * @return string - A unique refresh token.
*
* @ingroup oauth2_section_4
* @see OAuth2::generateAccessToken()
@@ -162,6 +185,7 @@ class AccessToken implements AccessTokenInterface
*
* @param $token
* @param null $tokenTypeHint
+ * @throws RuntimeException
* @return boolean
*/
public function revokeToken($token, $tokenTypeHint = null)
@@ -174,7 +198,7 @@ class AccessToken implements AccessTokenInterface
/** @TODO remove in v2 */
if (!method_exists($this->tokenStorage, 'unsetAccessToken')) {
- throw new \RuntimeException(
+ throw new RuntimeException(
sprintf('Token storage %s must implement unsetAccessToken method', get_class($this->tokenStorage)
));
}
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AccessTokenInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AccessTokenInterface.php
index 4bd3928d8..0e576df52 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AccessTokenInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AccessTokenInterface.php
@@ -3,7 +3,6 @@
namespace OAuth2\ResponseType;
/**
- *
* @author Brent Shaffer <bshafs at gmail dot com>
*/
interface AccessTokenInterface extends ResponseTypeInterface
@@ -11,10 +10,10 @@ interface AccessTokenInterface extends ResponseTypeInterface
/**
* Handle the creation of access token, also issue refresh token if supported / desirable.
*
- * @param $client_id client identifier related to the access token.
- * @param $user_id user ID associated with the access token
- * @param $scope OPTONAL scopes to be stored in space-separated string.
- * @param bool $includeRefreshToken if true, a new refresh_token will be added to the response
+ * @param mixed $client_id - client identifier related to the access token.
+ * @param mixed $user_id - user ID associated with the access token
+ * @param string $scope - OPTONAL scopes to be stored in space-separated string.
+ * @param bool $includeRefreshToken - if true, a new refresh_token will be added to the response
*
* @see http://tools.ietf.org/html/rfc6749#section-5
* @ingroup oauth2_section_5
@@ -31,4 +30,4 @@ interface AccessTokenInterface extends ResponseTypeInterface
* @todo v2.0 include this method in interface. Omitted to maintain BC in v1.x
*/
//public function revokeToken($token, $tokenTypeHint);
-}
+} \ No newline at end of file
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AuthorizationCode.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AuthorizationCode.php
index 52aeb4be5..b92c73cda 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AuthorizationCode.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AuthorizationCode.php
@@ -5,7 +5,6 @@ namespace OAuth2\ResponseType;
use OAuth2\Storage\AuthorizationCodeInterface as AuthorizationCodeStorageInterface;
/**
- *
* @author Brent Shaffer <bshafs at gmail dot com>
*/
class AuthorizationCode implements AuthorizationCodeInterface
@@ -85,7 +84,9 @@ class AuthorizationCode implements AuthorizationCodeInterface
protected function generateAuthorizationCode()
{
$tokenLen = 40;
- if (function_exists('openssl_random_pseudo_bytes')) {
+ if (function_exists('random_bytes')) {
+ $randomData = random_bytes(100);
+ } elseif (function_exists('openssl_random_pseudo_bytes')) {
$randomData = openssl_random_pseudo_bytes(100);
} elseif (function_exists('mcrypt_create_iv')) {
$randomData = mcrypt_create_iv(100, MCRYPT_DEV_URANDOM);
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AuthorizationCodeInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AuthorizationCodeInterface.php
index df777e221..4f0a29df4 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AuthorizationCodeInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AuthorizationCodeInterface.php
@@ -3,7 +3,6 @@
namespace OAuth2\ResponseType;
/**
- *
* @author Brent Shaffer <bshafs at gmail dot com>
*/
interface AuthorizationCodeInterface extends ResponseTypeInterface
@@ -17,11 +16,12 @@ interface AuthorizationCodeInterface extends ResponseTypeInterface
/**
* Handle the creation of the authorization code.
*
- * @param $client_id client identifier related to the authorization code
- * @param $user_id user id associated with the authorization code
- * @param $redirect_uri an absolute URI to which the authorization server will redirect the
- * user-agent to when the end-user authorization step is completed.
- * @param $scope OPTIONAL scopes to be stored in space-separated string.
+ * @param mixed $client_id - Client identifier related to the authorization code
+ * @param mixed $user_id - User ID associated with the authorization code
+ * @param string $redirect_uri - An absolute URI to which the authorization server will redirect the
+ * user-agent to when the end-user authorization step is completed.
+ * @param string $scope - OPTIONAL Scopes to be stored in space-separated string.
+ * @return string
*
* @see http://tools.ietf.org/html/rfc6749#section-4
* @ingroup oauth2_section_4
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/JwtAccessToken.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/JwtAccessToken.php
index 3942fe41e..0af9705ff 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/JwtAccessToken.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/JwtAccessToken.php
@@ -10,7 +10,6 @@ use OAuth2\Storage\PublicKeyInterface;
use OAuth2\Storage\Memory;
/**
- *
* @author Brent Shaffer <bshafs at gmail dot com>
*/
class JwtAccessToken extends AccessToken
@@ -19,10 +18,13 @@ class JwtAccessToken extends AccessToken
protected $encryptionUtil;
/**
- * @param $config
- * - store_encrypted_token_string (bool true)
- * whether the entire encrypted string is stored,
- * or just the token ID is stored
+ * @param PublicKeyInterface $publicKeyStorage -
+ * @param AccessTokenStorageInterface $tokenStorage -
+ * @param RefreshTokenInterface $refreshStorage -
+ * @param array $config - array with key store_encrypted_token_string (bool true)
+ * whether the entire encrypted string is stored,
+ * or just the token ID is stored
+ * @param EncryptionInterface $encryptionUtil -
*/
public function __construct(PublicKeyInterface $publicKeyStorage = null, AccessTokenStorageInterface $tokenStorage = null, RefreshTokenInterface $refreshStorage = null, array $config = array(), EncryptionInterface $encryptionUtil = null)
{
@@ -45,46 +47,31 @@ class JwtAccessToken extends AccessToken
/**
* Handle the creation of access token, also issue refresh token if supported / desirable.
*
- * @param $client_id
- * Client identifier related to the access token.
- * @param $user_id
- * User ID associated with the access token
- * @param $scope
- * (optional) Scopes to be stored in space-separated string.
- * @param bool $includeRefreshToken
- * If true, a new refresh_token will be added to the response
+ * @param mixed $client_id - Client identifier related to the access token.
+ * @param mixed $user_id - User ID associated with the access token
+ * @param string $scope - (optional) Scopes to be stored in space-separated string.
+ * @param bool $includeRefreshToken - If true, a new refresh_token will be added to the response
+ * @return array - The access token
*
* @see http://tools.ietf.org/html/rfc6749#section-5
* @ingroup oauth2_section_5
*/
public function createAccessToken($client_id, $user_id, $scope = null, $includeRefreshToken = true)
{
- // token to encrypt
- $expires = time() + $this->config['access_lifetime'];
- $id = $this->generateAccessToken();
- $jwtAccessToken = array(
- 'id' => $id, // for BC (see #591)
- 'jti' => $id,
- 'iss' => $this->config['issuer'],
- 'aud' => $client_id,
- 'sub' => $user_id,
- 'exp' => $expires,
- 'iat' => time(),
- 'token_type' => $this->config['token_type'],
- 'scope' => $scope
- );
+ // payload to encrypt
+ $payload = $this->createPayload($client_id, $user_id, $scope);
/*
- * Encode the token data into a single access_token string
+ * Encode the payload data into a single JWT access_token string
*/
- $access_token = $this->encodeToken($jwtAccessToken, $client_id);
+ $access_token = $this->encodeToken($payload, $client_id);
/*
* Save the token to a secondary storage. This is implemented on the
* OAuth2\Storage\JwtAccessToken side, and will not actually store anything,
* if no secondary storage has been supplied
*/
- $token_to_store = $this->config['store_encrypted_token_string'] ? $access_token : $jwtAccessToken['id'];
+ $token_to_store = $this->config['store_encrypted_token_string'] ? $access_token : $payload['id'];
$this->tokenStorage->setAccessToken($token_to_store, $client_id, $user_id, $this->config['access_lifetime'] ? time() + $this->config['access_lifetime'] : null, $scope);
// token to return to the client
@@ -114,6 +101,11 @@ class JwtAccessToken extends AccessToken
return $token;
}
+ /**
+ * @param array $token
+ * @param mixed $client_id
+ * @return mixed
+ */
protected function encodeToken(array $token, $client_id = null)
{
$private_key = $this->publicKeyStorage->getPrivateKey($client_id);
@@ -121,4 +113,31 @@ class JwtAccessToken extends AccessToken
return $this->encryptionUtil->encode($token, $private_key, $algorithm);
}
+
+ /**
+ * This function can be used to create custom JWT payloads
+ *
+ * @param mixed $client_id - Client identifier related to the access token.
+ * @param mixed $user_id - User ID associated with the access token
+ * @param string $scope - (optional) Scopes to be stored in space-separated string.
+ * @return array - The access token
+ */
+ protected function createPayload($client_id, $user_id, $scope = null)
+ {
+ // token to encrypt
+ $expires = time() + $this->config['access_lifetime'];
+ $id = $this->generateAccessToken();
+
+ return array(
+ 'id' => $id, // for BC (see #591)
+ 'jti' => $id,
+ 'iss' => $this->config['issuer'],
+ 'aud' => $client_id,
+ 'sub' => $user_id,
+ 'exp' => $expires,
+ 'iat' => time(),
+ 'token_type' => $this->config['token_type'],
+ 'scope' => $scope
+ );
+ }
}
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/ResponseTypeInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/ResponseTypeInterface.php
index f8e26a5b0..a27156580 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/ResponseTypeInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/ResponseTypeInterface.php
@@ -4,5 +4,10 @@ namespace OAuth2\ResponseType;
interface ResponseTypeInterface
{
+ /**
+ * @param array $params
+ * @param mixed $user_id
+ * @return mixed
+ */
public function getAuthorizeResponse($params, $user_id = null);
}
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Scope.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Scope.php
index c44350bfd..3ba6e5328 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Scope.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Scope.php
@@ -2,19 +2,23 @@
namespace OAuth2;
+use InvalidArgumentException;
use OAuth2\Storage\Memory;
use OAuth2\Storage\ScopeInterface as ScopeStorageInterface;
/**
-* @see OAuth2\ScopeInterface
+* @see ScopeInterface
*/
class Scope implements ScopeInterface
{
protected $storage;
/**
- * @param mixed @storage
- * Either an array of supported scopes, or an instance of OAuth2\Storage\ScopeInterface
+ * Constructor
+ *
+ * @param mixed $storage - Either an array of supported scopes, or an instance of OAuth2\Storage\ScopeInterface
+ *
+ * @throws InvalidArgumentException
*/
public function __construct($storage = null)
{
@@ -23,7 +27,7 @@ class Scope implements ScopeInterface
}
if (!$storage instanceof ScopeStorageInterface) {
- throw new \InvalidArgumentException("Argument 1 to OAuth2\Scope must be null, an array, or instance of OAuth2\Storage\ScopeInterface");
+ throw new InvalidArgumentException("Argument 1 to OAuth2\Scope must be null, an array, or instance of OAuth2\Storage\ScopeInterface");
}
$this->storage = $storage;
@@ -32,12 +36,10 @@ class Scope implements ScopeInterface
/**
* Check if everything in required scope is contained in available scope.
*
- * @param $required_scope
- * A space-separated string of scopes.
- *
- * @return
- * TRUE if everything in required scope is contained in available scope,
- * and FALSE if it isn't.
+ * @param string $required_scope - A space-separated string of scopes.
+ * @param string $available_scope - A space-separated string of scopes.
+ * @return bool - TRUE if everything in required scope is contained in available scope and FALSE
+ * if it isn't.
*
* @see http://tools.ietf.org/html/rfc6749#section-7
*
@@ -54,11 +56,8 @@ class Scope implements ScopeInterface
/**
* Check if the provided scope exists in storage.
*
- * @param $scope
- * A space-separated string of scopes.
- *
- * @return
- * TRUE if it exists, FALSE otherwise.
+ * @param string $scope - A space-separated string of scopes.
+ * @return bool - TRUE if it exists, FALSE otherwise.
*/
public function scopeExists($scope)
{
@@ -76,12 +75,20 @@ class Scope implements ScopeInterface
}
}
+ /**
+ * @param RequestInterface $request
+ * @return string
+ */
public function getScopeFromRequest(RequestInterface $request)
{
// "scope" is valid if passed in either POST or QUERY
return $request->request('scope', $request->query('scope'));
}
+ /**
+ * @param null $client_id
+ * @return mixed
+ */
public function getDefaultScope($client_id = null)
{
return $this->storage->getDefaultScope($client_id);
@@ -93,8 +100,7 @@ class Scope implements ScopeInterface
* In case OpenID Connect is used, these scopes must include:
* 'openid', offline_access'.
*
- * @return
- * An array of reserved scopes.
+ * @return array - An array of reserved scopes.
*/
public function getReservedScopes()
{
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/ScopeInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ScopeInterface.php
index 5b60f9aee..f65cfa7bd 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/ScopeInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ScopeInterface.php
@@ -7,19 +7,17 @@ use OAuth2\Storage\ScopeInterface as ScopeStorageInterface;
/**
* Class to handle scope implementation logic
*
- * @see OAuth2\Storage\ScopeInterface
+ * @see \OAuth2\Storage\ScopeInterface
*/
interface ScopeInterface extends ScopeStorageInterface
{
/**
* Check if everything in required scope is contained in available scope.
*
- * @param $required_scope
- * A space-separated string of scopes.
- *
- * @return
- * TRUE if everything in required scope is contained in available scope,
- * and FALSE if it isn't.
+ * @param string $required_scope - A space-separated string of scopes.
+ * @param string $available_scope - A space-separated string of scopes.
+ * @return boolean - TRUE if everything in required scope is contained in available scope and FALSE
+ * if it isn't.
*
* @see http://tools.ietf.org/html/rfc6749#section-7
*
@@ -30,11 +28,8 @@ interface ScopeInterface extends ScopeStorageInterface
/**
* Return scope info from request
*
- * @param OAuth2\RequestInterface
- * Request object to check
- *
- * @return
- * string representation of requested scope
+ * @param RequestInterface $request - Request object to check
+ * @return string - representation of requested scope
*/
public function getScopeFromRequest(RequestInterface $request);
}
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Server.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Server.php
index 9cfcb83a5..62ae8970d 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Server.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Server.php
@@ -30,25 +30,28 @@ use OAuth2\GrantType\UserCredentials;
use OAuth2\GrantType\ClientCredentials;
use OAuth2\GrantType\RefreshToken;
use OAuth2\GrantType\AuthorizationCode;
+use OAuth2\Storage\ClientCredentialsInterface;
+use OAuth2\Storage\ClientInterface;
use OAuth2\Storage\JwtAccessToken as JwtAccessTokenStorage;
use OAuth2\Storage\JwtAccessTokenInterface;
+use InvalidArgumentException;
+use LogicException;
/**
* Server class for OAuth2
* This class serves as a convience class which wraps the other Controller classes
*
-* @see OAuth2\Controller\ResourceController
-* @see OAuth2\Controller\AuthorizeController
-* @see OAuth2\Controller\TokenController
+* @see \OAuth2\Controller\ResourceController
+* @see \OAuth2\Controller\AuthorizeController
+* @see \OAuth2\Controller\TokenController
*/
class Server implements ResourceControllerInterface,
AuthorizeControllerInterface,
TokenControllerInterface,
UserInfoControllerInterface
{
- // misc properties
/**
- * @var Response
+ * @var ResponseInterface
*/
protected $response;
@@ -62,7 +65,6 @@ class Server implements ResourceControllerInterface,
*/
protected $storages;
- // servers
/**
* @var AuthorizeControllerInterface
*/
@@ -83,17 +85,34 @@ class Server implements ResourceControllerInterface,
*/
protected $userInfoController;
- // config classes
- protected $grantTypes;
- protected $responseTypes;
+ /**
+ * @var array
+ */
+ protected $grantTypes = [];
+
+ /**
+ * @var array
+ */
+ protected $responseTypes = [];
+
+ /**
+ * @var TokenTypeInterface
+ */
protected $tokenType;
/**
* @var ScopeInterface
*/
protected $scopeUtil;
+
+ /**
+ * @var ClientAssertionTypeInterface
+ */
protected $clientAssertionType;
+ /**
+ * @var array
+ */
protected $storageMap = array(
'access_token' => 'OAuth2\Storage\AccessTokenInterface',
'authorization_code' => 'OAuth2\Storage\AuthorizationCodeInterface',
@@ -107,6 +126,9 @@ class Server implements ResourceControllerInterface,
'scope' => 'OAuth2\Storage\ScopeInterface',
);
+ /**
+ * @var array
+ */
protected $responseTypeMap = array(
'token' => 'OAuth2\ResponseType\AccessTokenInterface',
'code' => 'OAuth2\ResponseType\AuthorizationCodeInterface',
@@ -116,15 +138,15 @@ class Server implements ResourceControllerInterface,
);
/**
- * @param mixed $storage (array or OAuth2\Storage) - single object or array of objects implementing the
- * required storage types (ClientCredentialsInterface and AccessTokenInterface as a minimum)
- * @param array $config specify a different token lifetime, token header name, etc
- * @param array $grantTypes An array of OAuth2\GrantType\GrantTypeInterface to use for granting access tokens
- * @param array $responseTypes Response types to use. array keys should be "code" and and "token" for
- * Access Token and Authorization Code response types
- * @param \OAuth2\TokenType\TokenTypeInterface $tokenType The token type object to use. Valid token types are "bearer" and "mac"
- * @param \OAuth2\ScopeInterface $scopeUtil The scope utility class to use to validate scope
- * @param \OAuth2\ClientAssertionType\ClientAssertionTypeInterface $clientAssertionType The method in which to verify the client identity. Default is HttpBasic
+ * @param mixed $storage (array or OAuth2\Storage) - single object or array of objects implementing the
+ * required storage types (ClientCredentialsInterface and AccessTokenInterface as a minimum)
+ * @param array $config specify a different token lifetime, token header name, etc
+ * @param array $grantTypes An array of OAuth2\GrantType\GrantTypeInterface to use for granting access tokens
+ * @param array $responseTypes Response types to use. array keys should be "code" and "token" for
+ * Access Token and Authorization Code response types
+ * @param TokenTypeInterface $tokenType The token type object to use. Valid token types are "bearer" and "mac"
+ * @param ScopeInterface $scopeUtil The scope utility class to use to validate scope
+ * @param ClientAssertionTypeInterface $clientAssertionType The method in which to verify the client identity. Default is HttpBasic
*
* @ingroup oauth2_section_7
*/
@@ -172,6 +194,9 @@ class Server implements ResourceControllerInterface,
}
}
+ /**
+ * @return AuthorizeControllerInterface
+ */
public function getAuthorizeController()
{
if (is_null($this->authorizeController)) {
@@ -181,6 +206,9 @@ class Server implements ResourceControllerInterface,
return $this->authorizeController;
}
+ /**
+ * @return TokenController
+ */
public function getTokenController()
{
if (is_null($this->tokenController)) {
@@ -190,6 +218,9 @@ class Server implements ResourceControllerInterface,
return $this->tokenController;
}
+ /**
+ * @return ResourceControllerInterface
+ */
public function getResourceController()
{
if (is_null($this->resourceController)) {
@@ -199,6 +230,9 @@ class Server implements ResourceControllerInterface,
return $this->resourceController;
}
+ /**
+ * @return UserInfoControllerInterface
+ */
public function getUserInfoController()
{
if (is_null($this->userInfoController)) {
@@ -209,8 +243,6 @@ class Server implements ResourceControllerInterface,
}
/**
- * every getter deserves a setter
- *
* @param AuthorizeControllerInterface $authorizeController
*/
public function setAuthorizeController(AuthorizeControllerInterface $authorizeController)
@@ -219,8 +251,6 @@ class Server implements ResourceControllerInterface,
}
/**
- * every getter deserves a setter
- *
* @param TokenControllerInterface $tokenController
*/
public function setTokenController(TokenControllerInterface $tokenController)
@@ -229,8 +259,6 @@ class Server implements ResourceControllerInterface,
}
/**
- * every getter deserves a setter
- *
* @param ResourceControllerInterface $resourceController
*/
public function setResourceController(ResourceControllerInterface $resourceController)
@@ -239,8 +267,6 @@ class Server implements ResourceControllerInterface,
}
/**
- * every getter deserves a setter
- *
* @param UserInfoControllerInterface $userInfoController
*/
public function setUserInfoController(UserInfoControllerInterface $userInfoController)
@@ -252,12 +278,8 @@ class Server implements ResourceControllerInterface,
* Return claims about the authenticated end-user.
* This would be called from the "/UserInfo" endpoint as defined in the spec.
*
- * @param $request - \OAuth2\RequestInterface
- * Request object to grant access token
- *
- * @param $response - \OAuth2\ResponseInterface
- * Response object containing error messages (failure) or user claims (success)
- *
+ * @param RequestInterface $request - Request object to grant access token
+ * @param ResponseInterface $response - Response object containing error messages (failure) or user claims (success)
* @return ResponseInterface
*
* @throws \InvalidArgumentException
@@ -278,12 +300,8 @@ class Server implements ResourceControllerInterface,
* This would be called from the "/token" endpoint as defined in the spec.
* Obviously, you can call your endpoint whatever you want.
*
- * @param $request - \OAuth2\RequestInterface
- * Request object to grant access token
- *
- * @param $response - \OAuth2\ResponseInterface
- * Response object containing error messages (failure) or access token (success)
- *
+ * @param RequestInterface $request - Request object to grant access token
+ * @param ResponseInterface $response - Response object containing error messages (failure) or access token (success)
* @return ResponseInterface
*
* @throws \InvalidArgumentException
@@ -303,6 +321,11 @@ class Server implements ResourceControllerInterface,
return $this->response;
}
+ /**
+ * @param RequestInterface $request - Request object to grant access token
+ * @param ResponseInterface $response - Response object
+ * @return mixed
+ */
public function grantAccessToken(RequestInterface $request, ResponseInterface $response = null)
{
$this->response = is_null($response) ? new Response() : $response;
@@ -336,25 +359,18 @@ class Server implements ResourceControllerInterface,
* authorization server should call this function to redirect the user
* appropriately.
*
- * @param $request
- * The request should have the follow parameters set in the querystring:
- * - response_type: The requested response: an access token, an
- * authorization code, or both.
+ * @param RequestInterface $request - The request should have the follow parameters set in the querystring:
+ * - response_type: The requested response: an access token, an authorization code, or both.
* - client_id: The client identifier as described in Section 2.
- * - redirect_uri: An absolute URI to which the authorization server
- * will redirect the user-agent to when the end-user authorization
- * step is completed.
- * - scope: (optional) The scope of the resource request expressed as a
- * list of space-delimited strings.
- * - state: (optional) An opaque value used by the client to maintain
- * state between the request and callback.
- * @param ResponseInterface $response
- * @param $is_authorized
- * TRUE or FALSE depending on whether the user authorized the access.
- * @param $user_id
- * Identifier of user who authorized the client
+ * - redirect_uri: An absolute URI to which the authorization server will redirect the user-agent to when the
+ * end-user authorization step is completed.
+ * - scope: (optional) The scope of the resource request expressed as a list of space-delimited strings.
+ * - state: (optional) An opaque value used by the client to maintain state between the request and callback.
*
- * @return Response
+ * @param ResponseInterface $response - Response object
+ * @param bool $is_authorized - TRUE or FALSE depending on whether the user authorized the access.
+ * @param mixed $user_id - Identifier of user who authorized the client
+ * @return ResponseInterface
*
* @see http://tools.ietf.org/html/rfc6749#section-4
*
@@ -371,14 +387,17 @@ class Server implements ResourceControllerInterface,
/**
* Pull the authorization request data out of the HTTP request.
* - The redirect_uri is OPTIONAL as per draft 20. But your implementation can enforce it
- * by setting $config['enforce_redirect'] to true.
+ * by setting $config['enforce_redirect'] to true.
* - The state is OPTIONAL but recommended to enforce CSRF. Draft 21 states, however, that
- * CSRF protection is MANDATORY. You can enforce this by setting the $config['enforce_state'] to true.
+ * CSRF protection is MANDATORY. You can enforce this by setting the $config['enforce_state'] to true.
*
* The draft specifies that the parameters should be retrieved from GET, override the Response
* object to change this
*
- * @return
+ * @param RequestInterface $request - Request object
+ * @param ResponseInterface $response - Response object
+ * @return bool
+ *
* The authorization parameters so the authorization server can prompt
* the user for approval if valid.
*
@@ -395,6 +414,12 @@ class Server implements ResourceControllerInterface,
return $value;
}
+ /**
+ * @param RequestInterface $request - Request object
+ * @param ResponseInterface $response - Response object
+ * @param string $scope - Scope
+ * @return mixed
+ */
public function verifyResourceRequest(RequestInterface $request, ResponseInterface $response = null, $scope = null)
{
$this->response = is_null($response) ? new Response() : $response;
@@ -403,6 +428,11 @@ class Server implements ResourceControllerInterface,
return $value;
}
+ /**
+ * @param RequestInterface $request - Request object
+ * @param ResponseInterface $response - Response object
+ * @return mixed
+ */
public function getAccessTokenData(RequestInterface $request, ResponseInterface $response = null)
{
$this->response = is_null($response) ? new Response() : $response;
@@ -411,10 +441,14 @@ class Server implements ResourceControllerInterface,
return $value;
}
+ /**
+ * @param GrantTypeInterface $grantType
+ * @param mixed $identifier
+ */
public function addGrantType(GrantTypeInterface $grantType, $identifier = null)
{
if (!is_string($identifier)) {
- $identifier = $grantType->getQuerystringIdentifier();
+ $identifier = $grantType->getQueryStringIdentifier();
}
$this->grantTypes[$identifier] = $grantType;
@@ -428,11 +462,10 @@ class Server implements ResourceControllerInterface,
/**
* Set a storage object for the server
*
- * @param $storage
- * An object implementing one of the Storage interfaces
- * @param $key
- * If null, the storage is set to the key of each storage interface it implements
+ * @param object $storage - An object implementing one of the Storage interfaces
+ * @param mixed $key - If null, the storage is set to the key of each storage interface it implements
*
+ * @throws InvalidArgumentException
* @see storageMap
*/
public function addStorage($storage, $key = null)
@@ -446,11 +479,11 @@ class Server implements ResourceControllerInterface,
// special logic to handle "client" and "client_credentials" strangeness
if ($key === 'client' && !isset($this->storages['client_credentials'])) {
- if ($storage instanceof \OAuth2\Storage\ClientCredentialsInterface) {
+ if ($storage instanceof ClientCredentialsInterface) {
$this->storages['client_credentials'] = $storage;
}
} elseif ($key === 'client_credentials' && !isset($this->storages['client'])) {
- if ($storage instanceof \OAuth2\Storage\ClientInterface) {
+ if ($storage instanceof ClientInterface) {
$this->storages['client'] = $storage;
}
}
@@ -471,6 +504,12 @@ class Server implements ResourceControllerInterface,
}
}
+ /**
+ * @param ResponseTypeInterface $responseType
+ * @param mixed $key
+ *
+ * @throws InvalidArgumentException
+ */
public function addResponseType(ResponseTypeInterface $responseType, $key = null)
{
$key = $this->normalizeResponseType($key);
@@ -497,6 +536,9 @@ class Server implements ResourceControllerInterface,
}
}
+ /**
+ * @return ScopeInterface
+ */
public function getScopeUtil()
{
if (!$this->scopeUtil) {
@@ -508,8 +550,6 @@ class Server implements ResourceControllerInterface,
}
/**
- * every getter deserves a setter
- *
* @param ScopeInterface $scopeUtil
*/
public function setScopeUtil($scopeUtil)
@@ -517,6 +557,10 @@ class Server implements ResourceControllerInterface,
$this->scopeUtil = $scopeUtil;
}
+ /**
+ * @return AuthorizeControllerInterface
+ * @throws LogicException
+ */
protected function createDefaultAuthorizeController()
{
if (!isset($this->storages['client'])) {
@@ -541,6 +585,10 @@ class Server implements ResourceControllerInterface,
return new AuthorizeController($this->storages['client'], $this->responseTypes, $config, $this->getScopeUtil());
}
+ /**
+ * @return TokenControllerInterface
+ * @throws LogicException
+ */
protected function createDefaultTokenController()
{
if (0 == count($this->grantTypes)) {
@@ -562,7 +610,7 @@ class Server implements ResourceControllerInterface,
}
if (!isset($this->storages['client'])) {
- throw new \LogicException('You must supply a storage object implementing OAuth2\Storage\ClientInterface to use the token server');
+ throw new LogicException("You must supply a storage object implementing OAuth2\Storage\ClientInterface to use the token server");
}
$accessTokenResponseType = $this->getAccessTokenResponseType();
@@ -570,6 +618,10 @@ class Server implements ResourceControllerInterface,
return new TokenController($accessTokenResponseType, $this->storages['client'], $this->grantTypes, $this->clientAssertionType, $this->getScopeUtil());
}
+ /**
+ * @return ResourceControllerInterface
+ * @throws LogicException
+ */
protected function createDefaultResourceController()
{
if ($this->config['use_jwt_access_tokens']) {
@@ -590,6 +642,10 @@ class Server implements ResourceControllerInterface,
return new ResourceController($this->tokenType, $this->storages['access_token'], $config, $this->getScopeUtil());
}
+ /**
+ * @return UserInfoControllerInterface
+ * @throws LogicException
+ */
protected function createDefaultUserInfoController()
{
if ($this->config['use_jwt_access_tokens']) {
@@ -614,6 +670,9 @@ class Server implements ResourceControllerInterface,
return new UserInfoController($this->tokenType, $this->storages['access_token'], $this->storages['user_claims'], $config, $this->getScopeUtil());
}
+ /**
+ * @return Bearer
+ */
protected function getDefaultTokenType()
{
$config = array_intersect_key($this->config, array_flip(explode(' ', 'token_param_name token_bearer_header_name')));
@@ -621,6 +680,10 @@ class Server implements ResourceControllerInterface,
return new Bearer($config);
}
+ /**
+ * @return array
+ * @throws LogicException
+ */
protected function getDefaultResponseTypes()
{
$responseTypes = array();
@@ -656,6 +719,10 @@ class Server implements ResourceControllerInterface,
return $responseTypes;
}
+ /**
+ * @return array
+ * @throws LogicException
+ */
protected function getDefaultGrantTypes()
{
$grantTypes = array();
@@ -692,6 +759,9 @@ class Server implements ResourceControllerInterface,
return $grantTypes;
}
+ /**
+ * @return AccessToken
+ */
protected function getAccessTokenResponseType()
{
if (isset($this->responseTypes['token'])) {
@@ -705,6 +775,9 @@ class Server implements ResourceControllerInterface,
return $this->createDefaultAccessTokenResponseType();
}
+ /**
+ * @return IdToken
+ */
protected function getIdTokenResponseType()
{
if (isset($this->responseTypes['id_token'])) {
@@ -714,6 +787,9 @@ class Server implements ResourceControllerInterface,
return $this->createDefaultIdTokenResponseType();
}
+ /**
+ * @return IdTokenToken
+ */
protected function getIdTokenTokenResponseType()
{
if (isset($this->responseTypes['id_token token'])) {
@@ -725,6 +801,9 @@ class Server implements ResourceControllerInterface,
/**
* For Resource Controller
+ *
+ * @return JwtAccessTokenStorage
+ * @throws LogicException
*/
protected function createDefaultJwtAccessTokenStorage()
{
@@ -741,6 +820,9 @@ class Server implements ResourceControllerInterface,
/**
* For Authorize and Token Controllers
+ *
+ * @return JwtAccessToken
+ * @throws LogicException
*/
protected function createDefaultJwtAccessTokenResponseType()
{
@@ -763,10 +845,14 @@ class Server implements ResourceControllerInterface,
return new JwtAccessToken($this->storages['public_key'], $tokenStorage, $refreshStorage, $config);
}
+ /**
+ * @return AccessToken
+ * @throws LogicException
+ */
protected function createDefaultAccessTokenResponseType()
{
if (!isset($this->storages['access_token'])) {
- throw new \LogicException('You must supply a response type implementing OAuth2\ResponseType\AccessTokenInterface, or a storage object implementing OAuth2\Storage\AccessTokenInterface to use the token server');
+ throw new LogicException("You must supply a response type implementing OAuth2\ResponseType\AccessTokenInterface, or a storage object implementing OAuth2\Storage\AccessTokenInterface to use the token server");
}
$refreshStorage = null;
@@ -780,13 +866,17 @@ class Server implements ResourceControllerInterface,
return new AccessToken($this->storages['access_token'], $refreshStorage, $config);
}
+ /**
+ * @return IdToken
+ * @throws LogicException
+ */
protected function createDefaultIdTokenResponseType()
{
if (!isset($this->storages['user_claims'])) {
- throw new \LogicException('You must supply a storage object implementing OAuth2\OpenID\Storage\UserClaimsInterface to use openid connect');
+ throw new LogicException("You must supply a storage object implementing OAuth2\OpenID\Storage\UserClaimsInterface to use openid connect");
}
if (!isset($this->storages['public_key'])) {
- throw new \LogicException('You must supply a storage object implementing OAuth2\Storage\PublicKeyInterface to use openid connect');
+ throw new LogicException("You must supply a storage object implementing OAuth2\Storage\PublicKeyInterface to use openid connect");
}
$config = array_intersect_key($this->config, array_flip(explode(' ', 'issuer id_lifetime')));
@@ -794,11 +884,17 @@ class Server implements ResourceControllerInterface,
return new IdToken($this->storages['user_claims'], $this->storages['public_key'], $config);
}
+ /**
+ * @return IdTokenToken
+ */
protected function createDefaultIdTokenTokenResponseType()
{
return new IdTokenToken($this->getAccessTokenResponseType(), $this->getIdTokenResponseType());
}
+ /**
+ * @throws InvalidArgumentException
+ */
protected function validateOpenIdConnect()
{
$authCodeGrant = $this->getGrantType('authorization_code');
@@ -807,6 +903,10 @@ class Server implements ResourceControllerInterface,
}
}
+ /**
+ * @param string $name
+ * @return string
+ */
protected function normalizeResponseType($name)
{
// for multiple-valued response types - make them alphabetical
@@ -819,36 +919,60 @@ class Server implements ResourceControllerInterface,
return $name;
}
+ /**
+ * @return mixed
+ */
public function getResponse()
{
return $this->response;
}
+ /**
+ * @return array
+ */
public function getStorages()
{
return $this->storages;
}
+ /**
+ * @param string $name
+ * @return object|null
+ */
public function getStorage($name)
{
return isset($this->storages[$name]) ? $this->storages[$name] : null;
}
+ /**
+ * @return array
+ */
public function getGrantTypes()
{
return $this->grantTypes;
}
+ /**
+ * @param string $name
+ * @return object|null
+ */
public function getGrantType($name)
{
return isset($this->grantTypes[$name]) ? $this->grantTypes[$name] : null;
}
+ /**
+ * @return array
+ */
public function getResponseTypes()
{
return $this->responseTypes;
}
+ /**
+ * @param string $name
+ * @return object|null
+ */
public function getResponseType($name)
{
// for multiple-valued response types - make them alphabetical
@@ -857,23 +981,38 @@ class Server implements ResourceControllerInterface,
return isset($this->responseTypes[$name]) ? $this->responseTypes[$name] : null;
}
+ /**
+ * @return TokenTypeInterface
+ */
public function getTokenType()
{
return $this->tokenType;
}
+ /**
+ * @return ClientAssertionTypeInterface
+ */
public function getClientAssertionType()
{
return $this->clientAssertionType;
}
+ /**
+ * @param string $name
+ * @param mixed $value
+ */
public function setConfig($name, $value)
{
$this->config[$name] = $value;
}
+ /**
+ * @param string $name
+ * @param mixed $default
+ * @return mixed
+ */
public function getConfig($name, $default = null)
{
return isset($this->config[$name]) ? $this->config[$name] : $default;
}
-}
+} \ No newline at end of file
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/AccessTokenInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/AccessTokenInterface.php
index 1819158af..22428f2c8 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/AccessTokenInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/AccessTokenInterface.php
@@ -15,17 +15,18 @@ interface AccessTokenInterface
*
* We need to retrieve access token data as we create and verify tokens.
*
- * @param $oauth_token
- * oauth_token to be check with.
+ * @param string $oauth_token - oauth_token to be check with.
*
- * @return
- * An associative array as below, and return NULL if the supplied oauth_token
- * is invalid:
- * - expires: Stored expiration in unix timestamp.
- * - client_id: (optional) Stored client identifier.
- * - user_id: (optional) Stored user identifier.
- * - scope: (optional) Stored scope values in space-separated string.
- * - id_token: (optional) Stored id_token (if "use_openid_connect" is true).
+ * @return array|null - An associative array as below, and return NULL if the supplied oauth_token is invalid:
+ * @code
+ * array(
+ * 'expires' => $expires, // Stored expiration in unix timestamp.
+ * 'client_id' => $client_id, // (optional) Stored client identifier.
+ * 'user_id' => $user_id, // (optional) Stored user identifier.
+ * 'scope' => $scope, // (optional) Stored scope values in space-separated string.
+ * 'id_token' => $id_token // (optional) Stored id_token (if "use_openid_connect" is true).
+ * );
+ * @endcode
*
* @ingroup oauth2_section_7
*/
@@ -36,11 +37,11 @@ interface AccessTokenInterface
*
* We need to store access token data as we create and verify tokens.
*
- * @param $oauth_token oauth_token to be stored.
- * @param $client_id client identifier to be stored.
- * @param $user_id user identifier to be stored.
- * @param int $expires expiration to be stored as a Unix timestamp.
- * @param string $scope OPTIONAL Scopes to be stored in space-separated string.
+ * @param string $oauth_token - oauth_token to be stored.
+ * @param mixed $client_id - client identifier to be stored.
+ * @param mixed $user_id - user identifier to be stored.
+ * @param int $expires - expiration to be stored as a Unix timestamp.
+ * @param string $scope - OPTIONAL Scopes to be stored in space-separated string.
*
* @ingroup oauth2_section_4
*/
@@ -61,4 +62,4 @@ interface AccessTokenInterface
* @todo v2.0 include this method in interface. Omitted to maintain BC in v1.x
*/
//public function unsetAccessToken($access_token);
-}
+} \ No newline at end of file
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/AuthorizationCodeInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/AuthorizationCodeInterface.php
index edc7c70e5..2dbc138ac 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/AuthorizationCodeInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/AuthorizationCodeInterface.php
@@ -59,12 +59,12 @@ interface AuthorizationCodeInterface
*
* Required for OAuth2::GRANT_TYPE_AUTH_CODE.
*
- * @param string $code Authorization code to be stored.
- * @param mixed $client_id Client identifier to be stored.
- * @param mixed $user_id User identifier to be stored.
- * @param string $redirect_uri Redirect URI(s) to be stored in a space-separated string.
- * @param int $expires Expiration to be stored as a Unix timestamp.
- * @param string $scope OPTIONAL Scopes to be stored in space-separated string.
+ * @param string $code - Authorization code to be stored.
+ * @param mixed $client_id - Client identifier to be stored.
+ * @param mixed $user_id - User identifier to be stored.
+ * @param string $redirect_uri - Redirect URI(s) to be stored in a space-separated string.
+ * @param int $expires - Expiration to be stored as a Unix timestamp.
+ * @param string $scope - OPTIONAL Scopes to be stored in space-separated string.
*
* @ingroup oauth2_section_4
*/
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/Cassandra.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/Cassandra.php
index c5048c08d..e60e9d3ad 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/Cassandra.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/Cassandra.php
@@ -7,24 +7,25 @@ use phpcassa\ColumnSlice;
use phpcassa\Connection\ConnectionPool;
use OAuth2\OpenID\Storage\UserClaimsInterface;
use OAuth2\OpenID\Storage\AuthorizationCodeInterface as OpenIDAuthorizationCodeInterface;
+use InvalidArgumentException;
/**
* Cassandra storage for all storage types
*
- * To use, install "thobbs/phpcassa" via composer
+ * To use, install "thobbs/phpcassa" via composer:
* <code>
- * composer require thobbs/phpcassa:dev-master
+ * composer require thobbs/phpcassa:dev-master
* </code>
*
- * Once this is done, instantiate the
+ * Once this is done, instantiate the connection:
* <code>
- * $cassandra = new \phpcassa\Connection\ConnectionPool('oauth2_server', array('127.0.0.1:9160'));
+ * $cassandra = new \phpcassa\Connection\ConnectionPool('oauth2_server', array('127.0.0.1:9160'));
* </code>
*
* Then, register the storage client:
* <code>
- * $storage = new OAuth2\Storage\Cassandra($cassandra);
- * $storage->setClientDetails($client_id, $client_secret, $redirect_uri);
+ * $storage = new OAuth2\Storage\Cassandra($cassandra);
+ * $storage->setClientDetails($client_id, $client_secret, $redirect_uri);
* </code>
*
* @see test/lib/OAuth2/Storage/Bootstrap::getCassandraStorage
@@ -43,17 +44,23 @@ class Cassandra implements AuthorizationCodeInterface,
private $cache;
- /* The cassandra client */
+ /**
+ * @var ConnectionPool
+ */
protected $cassandra;
- /* Configuration array */
+ /**
+ * @var array
+ */
protected $config;
/**
* Cassandra Storage! uses phpCassa
*
- * @param \phpcassa\ConnectionPool $cassandra
- * @param array $config
+ * @param ConnectionPool|array $connection
+ * @param array $config
+ *
+ * @throws InvalidArgumentException
*/
public function __construct($connection = array(), array $config = array())
{
@@ -61,7 +68,7 @@ class Cassandra implements AuthorizationCodeInterface,
$this->cassandra = $connection;
} else {
if (!is_array($connection)) {
- throw new \InvalidArgumentException('First argument to OAuth2\Storage\Cassandra must be an instance of phpcassa\Connection\ConnectionPool or a configuration array');
+ throw new InvalidArgumentException('First argument to OAuth2\Storage\Cassandra must be an instance of phpcassa\Connection\ConnectionPool or a configuration array');
}
$connection = array_merge(array(
'keyspace' => 'oauth2',
@@ -87,6 +94,10 @@ class Cassandra implements AuthorizationCodeInterface,
), $config);
}
+ /**
+ * @param $key
+ * @return bool|mixed
+ */
protected function getValue($key)
{
if (isset($this->cache[$key])) {
@@ -104,6 +115,12 @@ class Cassandra implements AuthorizationCodeInterface,
return json_decode($value, true);
}
+ /**
+ * @param $key
+ * @param $value
+ * @param int $expire
+ * @return bool
+ */
protected function setValue($key, $value, $expire = 0)
{
$this->cache[$key] = $value;
@@ -131,6 +148,10 @@ class Cassandra implements AuthorizationCodeInterface,
return true;
}
+ /**
+ * @param $key
+ * @return bool
+ */
protected function expireValue($key)
{
unset($this->cache[$key]);
@@ -151,12 +172,25 @@ class Cassandra implements AuthorizationCodeInterface,
return false;
}
- /* AuthorizationCodeInterface */
+ /**
+ * @param string $code
+ * @return bool|mixed
+ */
public function getAuthorizationCode($code)
{
return $this->getValue($this->config['code_key'] . $code);
}
+ /**
+ * @param string $authorization_code
+ * @param mixed $client_id
+ * @param mixed $user_id
+ * @param string $redirect_uri
+ * @param int $expires
+ * @param string $scope
+ * @param string $id_token
+ * @return bool
+ */
public function setAuthorizationCode($authorization_code, $client_id, $user_id, $redirect_uri, $expires, $scope = null, $id_token = null)
{
return $this->setValue(
@@ -166,6 +200,10 @@ class Cassandra implements AuthorizationCodeInterface,
);
}
+ /**
+ * @param string $code
+ * @return bool
+ */
public function expireAuthorizationCode($code)
{
$key = $this->config['code_key'] . $code;
@@ -174,7 +212,11 @@ class Cassandra implements AuthorizationCodeInterface,
return $this->expireValue($key);
}
- /* UserCredentialsInterface */
+ /**
+ * @param string $username
+ * @param string $password
+ * @return bool
+ */
public function checkUserCredentials($username, $password)
{
if ($user = $this->getUser($username)) {
@@ -184,7 +226,13 @@ class Cassandra implements AuthorizationCodeInterface,
return false;
}
- // plaintext passwords are bad! Override this for your application
+ /**
+ * plaintext passwords are bad! Override this for your application
+ *
+ * @param array $user
+ * @param string $password
+ * @return bool
+ */
protected function checkPassword($user, $password)
{
return $user['password'] == $this->hashPassword($password);
@@ -196,11 +244,19 @@ class Cassandra implements AuthorizationCodeInterface,
return sha1($password);
}
+ /**
+ * @param string $username
+ * @return array|bool|false
+ */
public function getUserDetails($username)
{
return $this->getUser($username);
}
+ /**
+ * @param string $username
+ * @return array|bool
+ */
public function getUser($username)
{
if (!$userInfo = $this->getValue($this->config['user_key'] . $username)) {
@@ -213,6 +269,13 @@ class Cassandra implements AuthorizationCodeInterface,
), $userInfo);
}
+ /**
+ * @param string $username
+ * @param string $password
+ * @param string $first_name
+ * @param string $last_name
+ * @return bool
+ */
public function setUser($username, $password, $first_name = null, $last_name = null)
{
$password = $this->hashPassword($password);
@@ -223,7 +286,11 @@ class Cassandra implements AuthorizationCodeInterface,
);
}
- /* ClientCredentialsInterface */
+ /**
+ * @param mixed $client_id
+ * @param string $client_secret
+ * @return bool
+ */
public function checkClientCredentials($client_id, $client_secret = null)
{
if (!$client = $this->getClientDetails($client_id)) {
@@ -234,6 +301,10 @@ class Cassandra implements AuthorizationCodeInterface,
&& $client['client_secret'] == $client_secret;
}
+ /**
+ * @param $client_id
+ * @return bool
+ */
public function isPublicClient($client_id)
{
if (!$client = $this->getClientDetails($client_id)) {
@@ -243,12 +314,24 @@ class Cassandra implements AuthorizationCodeInterface,
return empty($client['client_secret']);
}
- /* ClientInterface */
+ /**
+ * @param $client_id
+ * @return array|bool|mixed
+ */
public function getClientDetails($client_id)
{
return $this->getValue($this->config['client_key'] . $client_id);
}
+ /**
+ * @param $client_id
+ * @param null $client_secret
+ * @param null $redirect_uri
+ * @param null $grant_types
+ * @param null $scope
+ * @param null $user_id
+ * @return bool
+ */
public function setClientDetails($client_id, $client_secret = null, $redirect_uri = null, $grant_types = null, $scope = null, $user_id = null)
{
return $this->setValue(
@@ -257,6 +340,11 @@ class Cassandra implements AuthorizationCodeInterface,
);
}
+ /**
+ * @param $client_id
+ * @param $grant_type
+ * @return bool
+ */
public function checkRestrictedGrantType($client_id, $grant_type)
{
$details = $this->getClientDetails($client_id);
@@ -270,12 +358,23 @@ class Cassandra implements AuthorizationCodeInterface,
return true;
}
- /* RefreshTokenInterface */
+ /**
+ * @param $refresh_token
+ * @return bool|mixed
+ */
public function getRefreshToken($refresh_token)
{
return $this->getValue($this->config['refresh_token_key'] . $refresh_token);
}
+ /**
+ * @param $refresh_token
+ * @param $client_id
+ * @param $user_id
+ * @param $expires
+ * @param null $scope
+ * @return bool
+ */
public function setRefreshToken($refresh_token, $client_id, $user_id, $expires, $scope = null)
{
return $this->setValue(
@@ -285,17 +384,32 @@ class Cassandra implements AuthorizationCodeInterface,
);
}
+ /**
+ * @param $refresh_token
+ * @return bool
+ */
public function unsetRefreshToken($refresh_token)
{
return $this->expireValue($this->config['refresh_token_key'] . $refresh_token);
}
- /* AccessTokenInterface */
+ /**
+ * @param string $access_token
+ * @return array|bool|mixed|null
+ */
public function getAccessToken($access_token)
{
return $this->getValue($this->config['access_token_key'].$access_token);
}
+ /**
+ * @param string $access_token
+ * @param mixed $client_id
+ * @param mixed $user_id
+ * @param int $expires
+ * @param null $scope
+ * @return bool
+ */
public function setAccessToken($access_token, $client_id, $user_id, $expires, $scope = null)
{
return $this->setValue(
@@ -305,12 +419,19 @@ class Cassandra implements AuthorizationCodeInterface,
);
}
+ /**
+ * @param $access_token
+ * @return bool
+ */
public function unsetAccessToken($access_token)
{
return $this->expireValue($this->config['access_token_key'] . $access_token);
}
- /* ScopeInterface */
+ /**
+ * @param $scope
+ * @return bool
+ */
public function scopeExists($scope)
{
$scope = explode(' ', $scope);
@@ -322,6 +443,10 @@ class Cassandra implements AuthorizationCodeInterface,
return (count(array_diff($scope, $supportedScope)) == 0);
}
+ /**
+ * @param null $client_id
+ * @return bool|mixed
+ */
public function getDefaultScope($client_id = null)
{
if (is_null($client_id) || !$result = $this->getValue($this->config['scope_key'].'default:'.$client_id)) {
@@ -331,6 +456,13 @@ class Cassandra implements AuthorizationCodeInterface,
return $result;
}
+ /**
+ * @param $scope
+ * @param null $client_id
+ * @param string $type
+ * @return bool
+ * @throws \InvalidArgumentException
+ */
public function setScope($scope, $client_id = null, $type = 'supported')
{
if (!in_array($type, array('default', 'supported'))) {
@@ -346,7 +478,11 @@ class Cassandra implements AuthorizationCodeInterface,
return $this->setValue($key, $scope);
}
- /*JWTBearerInterface */
+ /**
+ * @param $client_id
+ * @param $subject
+ * @return bool|null
+ */
public function getClientKey($client_id, $subject)
{
if (!$jwt = $this->getValue($this->config['jwt_key'] . $client_id)) {
@@ -360,6 +496,12 @@ class Cassandra implements AuthorizationCodeInterface,
return null;
}
+ /**
+ * @param $client_id
+ * @param $key
+ * @param null $subject
+ * @return bool
+ */
public function setClientKey($client_id, $key, $subject = null)
{
return $this->setValue($this->config['jwt_key'] . $client_id, array(
@@ -368,7 +510,10 @@ class Cassandra implements AuthorizationCodeInterface,
));
}
- /*ScopeInterface */
+ /**
+ * @param $client_id
+ * @return bool|null
+ */
public function getClientScope($client_id)
{
if (!$clientDetails = $this->getClientDetails($client_id)) {
@@ -382,19 +527,38 @@ class Cassandra implements AuthorizationCodeInterface,
return null;
}
+ /**
+ * @param $client_id
+ * @param $subject
+ * @param $audience
+ * @param $expiration
+ * @param $jti
+ * @throws \Exception
+ */
public function getJti($client_id, $subject, $audience, $expiration, $jti)
{
//TODO: Needs cassandra implementation.
throw new \Exception('getJti() for the Cassandra driver is currently unimplemented.');
}
+ /**
+ * @param $client_id
+ * @param $subject
+ * @param $audience
+ * @param $expiration
+ * @param $jti
+ * @throws \Exception
+ */
public function setJti($client_id, $subject, $audience, $expiration, $jti)
{
//TODO: Needs cassandra implementation.
throw new \Exception('setJti() for the Cassandra driver is currently unimplemented.');
}
- /* PublicKeyInterface */
+ /**
+ * @param string $client_id
+ * @return mixed
+ */
public function getPublicKey($client_id = '')
{
$public_key = $this->getValue($this->config['public_key_key'] . $client_id);
@@ -407,6 +571,10 @@ class Cassandra implements AuthorizationCodeInterface,
}
}
+ /**
+ * @param string $client_id
+ * @return mixed
+ */
public function getPrivateKey($client_id = '')
{
$public_key = $this->getValue($this->config['public_key_key'] . $client_id);
@@ -419,6 +587,10 @@ class Cassandra implements AuthorizationCodeInterface,
}
}
+ /**
+ * @param null $client_id
+ * @return mixed|string
+ */
public function getEncryptionAlgorithm($client_id = null)
{
$public_key = $this->getValue($this->config['public_key_key'] . $client_id);
@@ -433,7 +605,11 @@ class Cassandra implements AuthorizationCodeInterface,
return 'RS256';
}
- /* UserClaimsInterface */
+ /**
+ * @param mixed $user_id
+ * @param string $claims
+ * @return array|bool
+ */
public function getUserClaims($user_id, $claims)
{
$userDetails = $this->getUserDetails($user_id);
@@ -460,6 +636,11 @@ class Cassandra implements AuthorizationCodeInterface,
return $userClaims;
}
+ /**
+ * @param $claim
+ * @param $userDetails
+ * @return array
+ */
protected function getUserClaim($claim, $userDetails)
{
$userClaims = array();
@@ -476,5 +657,4 @@ class Cassandra implements AuthorizationCodeInterface,
return $userClaims;
}
-
-}
+} \ No newline at end of file
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 1eb55f027..9e8148b6b 100755..100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/CouchbaseDB.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/CouchbaseDB.php
@@ -328,4 +328,4 @@ class CouchbaseDB implements AuthorizationCodeInterface,
//TODO: Needs couchbase implementation.
throw new \Exception('setJti() for the Couchbase driver is currently unimplemented.');
}
-}
+} \ No newline at end of file
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/DynamoDB.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/DynamoDB.php
index 8347ab258..a54cb3712 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/DynamoDB.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/DynamoDB.php
@@ -537,4 +537,4 @@ class DynamoDB implements
{
return null !== $value && '' !== $value;
}
-}
+} \ No newline at end of file
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/JwtAccessToken.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/JwtAccessToken.php
index 75b49d301..6ccacd6d9 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/JwtAccessToken.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/JwtAccessToken.php
@@ -6,7 +6,6 @@ use OAuth2\Encryption\EncryptionInterface;
use OAuth2\Encryption\Jwt;
/**
- *
* @author Brent Shaffer <bshafs at gmail dot com>
*/
class JwtAccessToken implements JwtAccessTokenInterface
@@ -85,4 +84,4 @@ class JwtAccessToken implements JwtAccessTokenInterface
return $tokenData;
}
-}
+} \ No newline at end of file
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/Memory.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/Memory.php
index 42d833ccb..2c60b71ce 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/Memory.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/Memory.php
@@ -378,4 +378,4 @@ class Memory implements AuthorizationCodeInterface,
return 'RS256';
}
-}
+} \ No newline at end of file
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/Pdo.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/Pdo.php
index ae5107e29..074cee447 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/Pdo.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/Pdo.php
@@ -4,6 +4,7 @@ namespace OAuth2\Storage;
use OAuth2\OpenID\Storage\UserClaimsInterface;
use OAuth2\OpenID\Storage\AuthorizationCodeInterface as OpenIDAuthorizationCodeInterface;
+use InvalidArgumentException;
/**
* Simple PDO storage for all storage types
@@ -29,9 +30,22 @@ class Pdo implements
UserClaimsInterface,
OpenIDAuthorizationCodeInterface
{
+ /**
+ * @var \PDO
+ */
protected $db;
+
+ /**
+ * @var array
+ */
protected $config;
+ /**
+ * @param mixed $connection
+ * @param array $config
+ *
+ * @throws InvalidArgumentException
+ */
public function __construct($connection, $config = array())
{
if (!$connection instanceof \PDO) {
@@ -70,7 +84,11 @@ class Pdo implements
), $config);
}
- /* OAuth2\Storage\ClientCredentialsInterface */
+ /**
+ * @param string $client_id
+ * @param null|string $client_secret
+ * @return bool
+ */
public function checkClientCredentials($client_id, $client_secret = null)
{
$stmt = $this->db->prepare(sprintf('SELECT * from %s where client_id = :client_id', $this->config['client_table']));
@@ -81,6 +99,10 @@ class Pdo implements
return $result && $result['client_secret'] == $client_secret;
}
+ /**
+ * @param string $client_id
+ * @return bool
+ */
public function isPublicClient($client_id)
{
$stmt = $this->db->prepare(sprintf('SELECT * from %s where client_id = :client_id', $this->config['client_table']));
@@ -93,7 +115,10 @@ class Pdo implements
return empty($result['client_secret']);
}
- /* OAuth2\Storage\ClientInterface */
+ /**
+ * @param string $client_id
+ * @return array|mixed
+ */
public function getClientDetails($client_id)
{
$stmt = $this->db->prepare(sprintf('SELECT * from %s where client_id = :client_id', $this->config['client_table']));
@@ -102,6 +127,15 @@ class Pdo implements
return $stmt->fetch(\PDO::FETCH_ASSOC);
}
+ /**
+ * @param string $client_id
+ * @param null|string $client_secret
+ * @param null|string $redirect_uri
+ * @param null|array $grant_types
+ * @param null|string $scope
+ * @param null|string $user_id
+ * @return bool
+ */
public function setClientDetails($client_id, $client_secret = null, $redirect_uri = null, $grant_types = null, $scope = null, $user_id = null)
{
// if it exists, update it.
@@ -114,6 +148,11 @@ class Pdo implements
return $stmt->execute(compact('client_id', 'client_secret', 'redirect_uri', 'grant_types', 'scope', 'user_id'));
}
+ /**
+ * @param $client_id
+ * @param $grant_type
+ * @return bool
+ */
public function checkRestrictedGrantType($client_id, $grant_type)
{
$details = $this->getClientDetails($client_id);
@@ -127,7 +166,10 @@ class Pdo implements
return true;
}
- /* OAuth2\Storage\AccessTokenInterface */
+ /**
+ * @param string $access_token
+ * @return array|bool|mixed|null
+ */
public function getAccessToken($access_token)
{
$stmt = $this->db->prepare(sprintf('SELECT * from %s where access_token = :access_token', $this->config['access_token_table']));
@@ -141,6 +183,14 @@ class Pdo implements
return $token;
}
+ /**
+ * @param string $access_token
+ * @param mixed $client_id
+ * @param mixed $user_id
+ * @param int $expires
+ * @param string $scope
+ * @return bool
+ */
public function setAccessToken($access_token, $client_id, $user_id, $expires, $scope = null)
{
// convert expires to datestring
@@ -156,6 +206,10 @@ class Pdo implements
return $stmt->execute(compact('access_token', 'client_id', 'user_id', 'expires', 'scope'));
}
+ /**
+ * @param $access_token
+ * @return bool
+ */
public function unsetAccessToken($access_token)
{
$stmt = $this->db->prepare(sprintf('DELETE FROM %s WHERE access_token = :access_token', $this->config['access_token_table']));
@@ -166,6 +220,10 @@ class Pdo implements
}
/* OAuth2\Storage\AuthorizationCodeInterface */
+ /**
+ * @param string $code
+ * @return mixed
+ */
public function getAuthorizationCode($code)
{
$stmt = $this->db->prepare(sprintf('SELECT * from %s where authorization_code = :code', $this->config['code_table']));
@@ -179,6 +237,16 @@ class Pdo implements
return $code;
}
+ /**
+ * @param string $code
+ * @param mixed $client_id
+ * @param mixed $user_id
+ * @param string $redirect_uri
+ * @param int $expires
+ * @param string $scope
+ * @param string $id_token
+ * @return bool|mixed
+ */
public function setAuthorizationCode($code, $client_id, $user_id, $redirect_uri, $expires, $scope = null, $id_token = null)
{
if (func_num_args() > 6) {
@@ -199,6 +267,16 @@ class Pdo implements
return $stmt->execute(compact('code', 'client_id', 'user_id', 'redirect_uri', 'expires', 'scope'));
}
+ /**
+ * @param string $code
+ * @param mixed $client_id
+ * @param mixed $user_id
+ * @param string $redirect_uri
+ * @param string $expires
+ * @param string $scope
+ * @param string $id_token
+ * @return bool
+ */
private function setAuthorizationCodeWithIdToken($code, $client_id, $user_id, $redirect_uri, $expires, $scope = null, $id_token = null)
{
// convert expires to datestring
@@ -214,6 +292,10 @@ class Pdo implements
return $stmt->execute(compact('code', 'client_id', 'user_id', 'redirect_uri', 'expires', 'scope', 'id_token'));
}
+ /**
+ * @param string $code
+ * @return bool
+ */
public function expireAuthorizationCode($code)
{
$stmt = $this->db->prepare(sprintf('DELETE FROM %s WHERE authorization_code = :code', $this->config['code_table']));
@@ -221,7 +303,11 @@ class Pdo implements
return $stmt->execute(compact('code'));
}
- /* OAuth2\Storage\UserCredentialsInterface */
+ /**
+ * @param string $username
+ * @param string $password
+ * @return bool
+ */
public function checkUserCredentials($username, $password)
{
if ($user = $this->getUser($username)) {
@@ -231,12 +317,20 @@ class Pdo implements
return false;
}
+ /**
+ * @param string $username
+ * @return array|bool
+ */
public function getUserDetails($username)
{
return $this->getUser($username);
}
- /* UserClaimsInterface */
+ /**
+ * @param mixed $user_id
+ * @param string $claims
+ * @return array|bool
+ */
public function getUserClaims($user_id, $claims)
{
if (!$userDetails = $this->getUserDetails($user_id)) {
@@ -262,6 +356,11 @@ class Pdo implements
return $userClaims;
}
+ /**
+ * @param string $claim
+ * @param array $userDetails
+ * @return array
+ */
protected function getUserClaim($claim, $userDetails)
{
$userClaims = array();
@@ -275,7 +374,10 @@ class Pdo implements
return $userClaims;
}
- /* OAuth2\Storage\RefreshTokenInterface */
+ /**
+ * @param string $refresh_token
+ * @return bool|mixed
+ */
public function getRefreshToken($refresh_token)
{
$stmt = $this->db->prepare(sprintf('SELECT * FROM %s WHERE refresh_token = :refresh_token', $this->config['refresh_token_table']));
@@ -289,6 +391,14 @@ class Pdo implements
return $token;
}
+ /**
+ * @param string $refresh_token
+ * @param mixed $client_id
+ * @param mixed $user_id
+ * @param string $expires
+ * @param string $scope
+ * @return bool
+ */
public function setRefreshToken($refresh_token, $client_id, $user_id, $expires, $scope = null)
{
// convert expires to datestring
@@ -299,6 +409,10 @@ class Pdo implements
return $stmt->execute(compact('refresh_token', 'client_id', 'user_id', 'expires', 'scope'));
}
+ /**
+ * @param string $refresh_token
+ * @return bool
+ */
public function unsetRefreshToken($refresh_token)
{
$stmt = $this->db->prepare(sprintf('DELETE FROM %s WHERE refresh_token = :refresh_token', $this->config['refresh_token_table']));
@@ -308,7 +422,13 @@ class Pdo implements
return $stmt->rowCount() > 0;
}
- // plaintext passwords are bad! Override this for your application
+ /**
+ * plaintext passwords are bad! Override this for your application
+ *
+ * @param array $user
+ * @param string $password
+ * @return bool
+ */
protected function checkPassword($user, $password)
{
return $user['password'] == $this->hashPassword($password);
@@ -320,6 +440,10 @@ class Pdo implements
return sha1($password);
}
+ /**
+ * @param string $username
+ * @return array|bool
+ */
public function getUser($username)
{
$stmt = $this->db->prepare($sql = sprintf('SELECT * from %s where username=:username', $this->config['user_table']));
@@ -335,6 +459,15 @@ class Pdo implements
), $userInfo);
}
+ /**
+ * plaintext passwords are bad! Override this for your application
+ *
+ * @param string $username
+ * @param string $password
+ * @param string $firstName
+ * @param string $lastName
+ * @return bool
+ */
public function setUser($username, $password, $firstName = null, $lastName = null)
{
// do not store in plaintext
@@ -350,7 +483,10 @@ class Pdo implements
return $stmt->execute(compact('username', 'password', 'firstName', 'lastName'));
}
- /* ScopeInterface */
+ /**
+ * @param string $scope
+ * @return bool
+ */
public function scopeExists($scope)
{
$scope = explode(' ', $scope);
@@ -365,6 +501,10 @@ class Pdo implements
return false;
}
+ /**
+ * @param mixed $client_id
+ * @return null|string
+ */
public function getDefaultScope($client_id = null)
{
$stmt = $this->db->prepare(sprintf('SELECT scope FROM %s WHERE is_default=:is_default', $this->config['scope_table']));
@@ -381,7 +521,11 @@ class Pdo implements
return null;
}
- /* JWTBearerInterface */
+ /**
+ * @param mixed $client_id
+ * @param $subject
+ * @return string
+ */
public function getClientKey($client_id, $subject)
{
$stmt = $this->db->prepare($sql = sprintf('SELECT public_key from %s where client_id=:client_id AND subject=:subject', $this->config['jwt_table']));
@@ -391,6 +535,10 @@ class Pdo implements
return $stmt->fetchColumn();
}
+ /**
+ * @param mixed $client_id
+ * @return bool|null
+ */
public function getClientScope($client_id)
{
if (!$clientDetails = $this->getClientDetails($client_id)) {
@@ -404,6 +552,14 @@ class Pdo implements
return null;
}
+ /**
+ * @param mixed $client_id
+ * @param $subject
+ * @param $audience
+ * @param $expires
+ * @param $jti
+ * @return array|null
+ */
public function getJti($client_id, $subject, $audience, $expires, $jti)
{
$stmt = $this->db->prepare($sql = sprintf('SELECT * FROM %s WHERE issuer=:client_id AND subject=:subject AND audience=:audience AND expires=:expires AND jti=:jti', $this->config['jti_table']));
@@ -423,6 +579,14 @@ class Pdo implements
return null;
}
+ /**
+ * @param mixed $client_id
+ * @param $subject
+ * @param $audience
+ * @param $expires
+ * @param $jti
+ * @return bool
+ */
public function setJti($client_id, $subject, $audience, $expires, $jti)
{
$stmt = $this->db->prepare(sprintf('INSERT INTO %s (issuer, subject, audience, expires, jti) VALUES (:client_id, :subject, :audience, :expires, :jti)', $this->config['jti_table']));
@@ -430,7 +594,10 @@ class Pdo implements
return $stmt->execute(compact('client_id', 'subject', 'audience', 'expires', 'jti'));
}
- /* PublicKeyInterface */
+ /**
+ * @param mixed $client_id
+ * @return mixed
+ */
public function getPublicKey($client_id = null)
{
$stmt = $this->db->prepare($sql = sprintf('SELECT public_key FROM %s WHERE client_id=:client_id OR client_id IS NULL ORDER BY client_id IS NOT NULL DESC', $this->config['public_key_table']));
@@ -441,6 +608,10 @@ class Pdo implements
}
}
+ /**
+ * @param mixed $client_id
+ * @return mixed
+ */
public function getPrivateKey($client_id = null)
{
$stmt = $this->db->prepare($sql = sprintf('SELECT private_key FROM %s WHERE client_id=:client_id OR client_id IS NULL ORDER BY client_id IS NOT NULL DESC', $this->config['public_key_table']));
@@ -451,6 +622,10 @@ class Pdo implements
}
}
+ /**
+ * @param mixed $client_id
+ * @return string
+ */
public function getEncryptionAlgorithm($client_id = null)
{
$stmt = $this->db->prepare($sql = sprintf('SELECT encryption_algorithm FROM %s WHERE client_id=:client_id OR client_id IS NULL ORDER BY client_id IS NOT NULL DESC', $this->config['public_key_table']));
@@ -467,6 +642,9 @@ class Pdo implements
* DDL to create OAuth2 database and tables for PDO storage
*
* @see https://github.com/dsquier/oauth2-server-php-mysql
+ *
+ * @param string $dbName
+ * @return string
*/
public function getBuildSql($dbName = 'oauth2_server_php')
{
@@ -481,73 +659,73 @@ class Pdo implements
PRIMARY KEY (client_id)
);
- CREATE TABLE {$this->config['access_token_table']} (
- access_token VARCHAR(40) NOT NULL,
- client_id VARCHAR(80) NOT NULL,
- user_id VARCHAR(80),
- expires TIMESTAMP NOT NULL,
- scope VARCHAR(4000),
- PRIMARY KEY (access_token)
- );
+ CREATE TABLE {$this->config['access_token_table']} (
+ access_token VARCHAR(40) NOT NULL,
+ client_id VARCHAR(80) NOT NULL,
+ user_id VARCHAR(80),
+ expires TIMESTAMP NOT NULL,
+ scope VARCHAR(4000),
+ PRIMARY KEY (access_token)
+ );
- CREATE TABLE {$this->config['code_table']} (
- authorization_code VARCHAR(40) NOT NULL,
- client_id VARCHAR(80) NOT NULL,
- user_id VARCHAR(80),
- redirect_uri VARCHAR(2000),
- expires TIMESTAMP NOT NULL,
- scope VARCHAR(4000),
- id_token VARCHAR(1000),
- PRIMARY KEY (authorization_code)
- );
+ CREATE TABLE {$this->config['code_table']} (
+ authorization_code VARCHAR(40) NOT NULL,
+ client_id VARCHAR(80) NOT NULL,
+ user_id VARCHAR(80),
+ redirect_uri VARCHAR(2000),
+ expires TIMESTAMP NOT NULL,
+ scope VARCHAR(4000),
+ id_token VARCHAR(1000),
+ PRIMARY KEY (authorization_code)
+ );
- CREATE TABLE {$this->config['refresh_token_table']} (
- refresh_token VARCHAR(40) NOT NULL,
- client_id VARCHAR(80) NOT NULL,
- user_id VARCHAR(80),
- expires TIMESTAMP NOT NULL,
- scope VARCHAR(4000),
- PRIMARY KEY (refresh_token)
- );
+ CREATE TABLE {$this->config['refresh_token_table']} (
+ refresh_token VARCHAR(40) NOT NULL,
+ client_id VARCHAR(80) NOT NULL,
+ user_id VARCHAR(80),
+ expires TIMESTAMP NOT NULL,
+ scope VARCHAR(4000),
+ PRIMARY KEY (refresh_token)
+ );
- CREATE TABLE {$this->config['user_table']} (
- username VARCHAR(80),
- password VARCHAR(80),
- first_name VARCHAR(80),
- last_name VARCHAR(80),
- email VARCHAR(80),
- email_verified BOOLEAN,
- scope VARCHAR(4000)
- );
+ CREATE TABLE {$this->config['user_table']} (
+ username VARCHAR(80),
+ password VARCHAR(80),
+ first_name VARCHAR(80),
+ last_name VARCHAR(80),
+ email VARCHAR(80),
+ email_verified BOOLEAN,
+ scope VARCHAR(4000)
+ );
- CREATE TABLE {$this->config['scope_table']} (
- scope VARCHAR(80) NOT NULL,
- is_default BOOLEAN,
- PRIMARY KEY (scope)
- );
+ CREATE TABLE {$this->config['scope_table']} (
+ scope VARCHAR(80) NOT NULL,
+ is_default BOOLEAN,
+ PRIMARY KEY (scope)
+ );
- CREATE TABLE {$this->config['jwt_table']} (
- client_id VARCHAR(80) NOT NULL,
- subject VARCHAR(80),
- public_key VARCHAR(2000) NOT NULL
- );
+ CREATE TABLE {$this->config['jwt_table']} (
+ client_id VARCHAR(80) NOT NULL,
+ subject VARCHAR(80),
+ public_key VARCHAR(2000) NOT NULL
+ );
- CREATE TABLE {$this->config['jti_table']} (
- issuer VARCHAR(80) NOT NULL,
- subject VARCHAR(80),
- audience VARCHAR(80),
- expires TIMESTAMP NOT NULL,
- jti VARCHAR(2000) NOT NULL
- );
+ CREATE TABLE {$this->config['jti_table']} (
+ issuer VARCHAR(80) NOT NULL,
+ subject VARCHAR(80),
+ audiance VARCHAR(80),
+ expires TIMESTAMP NOT NULL,
+ jti VARCHAR(2000) NOT NULL
+ );
- CREATE TABLE {$this->config['public_key_table']} (
- client_id VARCHAR(80),
- public_key VARCHAR(2000),
- private_key VARCHAR(2000),
- encryption_algorithm VARCHAR(100) DEFAULT 'RS256'
- )
-";
+ CREATE TABLE {$this->config['public_key_table']} (
+ client_id VARCHAR(80),
+ public_key VARCHAR(2000),
+ private_key VARCHAR(2000),
+ encryption_algorithm VARCHAR(100) DEFAULT 'RS256'
+ )
+ ";
return $sql;
}
-}
+} \ No newline at end of file
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/PublicKeyInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/PublicKeyInterface.php
index 108418d3a..a6dc49fb5 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/PublicKeyInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/PublicKeyInterface.php
@@ -10,7 +10,21 @@ namespace OAuth2\Storage;
*/
interface PublicKeyInterface
{
+ /**
+ * @param mixed $client_id
+ * @return mixed
+ */
public function getPublicKey($client_id = null);
+
+ /**
+ * @param mixed $client_id
+ * @return mixed
+ */
public function getPrivateKey($client_id = null);
+
+ /**
+ * @param mixed $client_id
+ * @return mixed
+ */
public function getEncryptionAlgorithm($client_id = null);
-}
+} \ No newline at end of file
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/UserCredentialsInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/UserCredentialsInterface.php
index 6e0fd7bad..f550579e4 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/UserCredentialsInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/UserCredentialsInterface.php
@@ -37,15 +37,15 @@ interface UserCredentialsInterface
public function checkUserCredentials($username, $password);
/**
- * @return
- * ARRAY the associated "user_id" and optional "scope" values
- * This function MUST return FALSE if the requested user does not exist or is
- * invalid. "scope" is a space-separated list of restricted scopes.
+ * @param string $username - username to get details for
+ * @return array|false - the associated "user_id" and optional "scope" values
+ * This function MUST return FALSE if the requested user does not exist or is
+ * invalid. "scope" is a space-separated list of restricted scopes.
* @code
- * return array(
- * "user_id" => USER_ID, // REQUIRED user_id to be stored with the authorization code or access token
- * "scope" => SCOPE // OPTIONAL space-separated list of restricted scopes
- * );
+ * return array(
+ * "user_id" => USER_ID, // REQUIRED user_id to be stored with the authorization code or access token
+ * "scope" => SCOPE // OPTIONAL space-separated list of restricted scopes
+ * );
* @endcode
*/
public function getUserDetails($username);
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/AutoloadTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/AutoloadTest.php
index 5901bdc42..2cb292389 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/AutoloadTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/AutoloadTest.php
@@ -2,7 +2,9 @@
namespace OAuth2;
-class AutoloadTest extends \PHPUnit_Framework_TestCase
+use PHPUnit\Framework\TestCase;
+
+class AutoloadTest extends TestCase
{
public function testClassesExist()
{
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 3bfc760e4..fe3553b23 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/Controller/AuthorizeControllerTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Controller/AuthorizeControllerTest.php
@@ -10,8 +10,9 @@ use OAuth2\GrantType\AuthorizationCode;
use OAuth2\Request;
use OAuth2\Response;
use OAuth2\Request\TestRequest;
+use PHPUnit\Framework\TestCase;
-class AuthorizeControllerTest extends \PHPUnit_Framework_TestCase
+class AuthorizeControllerTest extends TestCase
{
public function testNoClientIdResponse()
{
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/Controller/ResourceControllerTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Controller/ResourceControllerTest.php
index b277514a5..cd54d239a 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/Controller/ResourceControllerTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Controller/ResourceControllerTest.php
@@ -7,8 +7,9 @@ use OAuth2\Server;
use OAuth2\GrantType\AuthorizationCode;
use OAuth2\Request;
use OAuth2\Response;
+use PHPUnit\Framework\TestCase;
-class ResourceControllerTest extends \PHPUnit_Framework_TestCase
+class ResourceControllerTest extends TestCase
{
public function testNoAccessToken()
{
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/Controller/TokenControllerTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Controller/TokenControllerTest.php
index 4a217bd55..d18eaa6d7 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/Controller/TokenControllerTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Controller/TokenControllerTest.php
@@ -10,8 +10,9 @@ use OAuth2\GrantType\UserCredentials;
use OAuth2\Scope;
use OAuth2\Request\TestRequest;
use OAuth2\Response;
+use PHPUnit\Framework\TestCase;
-class TokenControllerTest extends \PHPUnit_Framework_TestCase
+class TokenControllerTest extends TestCase
{
public function testNoGrantType()
{
@@ -271,6 +272,48 @@ class TokenControllerTest extends \PHPUnit_Framework_TestCase
$this->assertEquals($response->getParameter('error_description'), 'The request method must be POST when revoking an access token');
}
+ public function testCanUseCrossOriginRequestForRevoke()
+ {
+ $server = $this->getTestServer();
+
+ $request = new TestRequest();
+ $request->setMethod('OPTIONS');
+
+ $server->handleRevokeRequest($request, $response = new Response());
+ $this->assertTrue($response instanceof Response);
+ $this->assertEquals(200, $response->getStatusCode(), var_export($response, 1));
+ $this->assertEquals($response->getHttpHeader('Allow'), 'POST, OPTIONS');
+ }
+
+ public function testInvalidRequestMethodForAccessToken()
+ {
+ $server = $this->getTestServer();
+
+ $request = new TestRequest();
+ $request->setQuery(array(
+ 'token_type_hint' => 'access_token'
+ ));
+
+ $server->handleTokenRequest($request, $response = new Response());
+ $this->assertTrue($response instanceof Response);
+ $this->assertEquals(405, $response->getStatusCode(), var_export($response, 1));
+ $this->assertEquals($response->getParameter('error'), 'invalid_request');
+ $this->assertEquals($response->getParameter('error_description'), 'The request method must be POST when requesting an access token');
+ }
+
+ public function testCanUseCrossOriginRequestForAccessToken()
+ {
+ $server = $this->getTestServer();
+
+ $request = new TestRequest();
+ $request->setMethod('OPTIONS');
+
+ $server->handleTokenRequest($request, $response = new Response());
+ $this->assertTrue($response instanceof Response);
+ $this->assertEquals(200, $response->getStatusCode(), var_export($response, 1));
+ $this->assertEquals($response->getHttpHeader('Allow'), 'POST, OPTIONS');
+ }
+
public function testCreateController()
{
$storage = Bootstrap::getInstance()->getMemoryStorage();
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 d34136767..c7e92c053 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/Encryption/FirebaseJwtTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Encryption/FirebaseJwtTest.php
@@ -3,8 +3,9 @@
namespace OAuth2\Encryption;
use OAuth2\Storage\Bootstrap;
+use PHPUnit\Framework\TestCase;
-class FirebaseJwtTest extends \PHPUnit_Framework_TestCase
+class FirebaseJwtTest extends TestCase
{
private $privateKey;
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 214eebac8..d73b4c923 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/Encryption/JwtTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Encryption/JwtTest.php
@@ -3,8 +3,9 @@
namespace OAuth2\Encryption;
use OAuth2\Storage\Bootstrap;
+use PHPUnit\Framework\TestCase;
-class JwtTest extends \PHPUnit_Framework_TestCase
+class JwtTest extends TestCase
{
private $privateKey;
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/AuthorizationCodeTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/AuthorizationCodeTest.php
index 356b8e53c..b2314ffc6 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/AuthorizationCodeTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/AuthorizationCodeTest.php
@@ -6,8 +6,9 @@ use OAuth2\Storage\Bootstrap;
use OAuth2\Server;
use OAuth2\Request\TestRequest;
use OAuth2\Response;
+use PHPUnit\Framework\TestCase;
-class AuthorizationCodeTest extends \PHPUnit_Framework_TestCase
+class AuthorizationCodeTest extends TestCase
{
public function testNoCode()
{
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/ClientCredentialsTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/ClientCredentialsTest.php
index f0d46ccb3..2a7d0eb3d 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/ClientCredentialsTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/ClientCredentialsTest.php
@@ -7,8 +7,9 @@ use OAuth2\Server;
use OAuth2\Request\TestRequest;
use OAuth2\Request;
use OAuth2\Response;
+use PHPUnit\Framework\TestCase;
-class ClientCredentialsTest extends \PHPUnit_Framework_TestCase
+class ClientCredentialsTest extends TestCase
{
public function testInvalidCredentials()
{
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/ImplicitTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/ImplicitTest.php
index a47aae3e8..14bf980f1 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/ImplicitTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/ImplicitTest.php
@@ -6,8 +6,9 @@ use OAuth2\Storage\Bootstrap;
use OAuth2\Server;
use OAuth2\Request;
use OAuth2\Response;
+use PHPUnit\Framework\TestCase;
-class ImplicitTest extends \PHPUnit_Framework_TestCase
+class ImplicitTest extends TestCase
{
public function testImplicitNotAllowedResponse()
{
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 0a6c4b827..e60023b3c 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/JwtBearerTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/JwtBearerTest.php
@@ -7,8 +7,9 @@ use OAuth2\Server;
use OAuth2\Request\TestRequest;
use OAuth2\Response;
use OAuth2\Encryption\Jwt;
+use PHPUnit\Framework\TestCase;
-class JwtBearerTest extends \PHPUnit_Framework_TestCase
+class JwtBearerTest extends TestCase
{
private $privateKey;
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/RefreshTokenTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/RefreshTokenTest.php
index a458aad8a..c964c6bbd 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/RefreshTokenTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/RefreshTokenTest.php
@@ -6,8 +6,9 @@ use OAuth2\Storage\Bootstrap;
use OAuth2\Server;
use OAuth2\Request\TestRequest;
use OAuth2\Response;
+use PHPUnit\Framework\TestCase;
-class RefreshTokenTest extends \PHPUnit_Framework_TestCase
+class RefreshTokenTest extends TestCase
{
private $storage;
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/UserCredentialsTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/UserCredentialsTest.php
index 18943d055..8b725e13a 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/UserCredentialsTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/UserCredentialsTest.php
@@ -6,8 +6,9 @@ use OAuth2\Storage\Bootstrap;
use OAuth2\Server;
use OAuth2\Request\TestRequest;
use OAuth2\Response;
+use PHPUnit\Framework\TestCase;
-class UserCredentialsTest extends \PHPUnit_Framework_TestCase
+class UserCredentialsTest extends TestCase
{
public function testNoUsername()
{
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/Controller/AuthorizeControllerTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/Controller/AuthorizeControllerTest.php
index 46de936d8..fdc16daba 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/Controller/AuthorizeControllerTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/Controller/AuthorizeControllerTest.php
@@ -6,8 +6,9 @@ use OAuth2\Storage\Bootstrap;
use OAuth2\Server;
use OAuth2\Request;
use OAuth2\Response;
+use PHPUnit\Framework\TestCase;
-class AuthorizeControllerTest extends \PHPUnit_Framework_TestCase
+class AuthorizeControllerTest extends TestCase
{
public function testValidateAuthorizeRequest()
{
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/Controller/UserInfoControllerTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/Controller/UserInfoControllerTest.php
index b1b687077..62e84df57 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/Controller/UserInfoControllerTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/Controller/UserInfoControllerTest.php
@@ -6,8 +6,9 @@ use OAuth2\Storage\Bootstrap;
use OAuth2\Server;
use OAuth2\Request;
use OAuth2\Response;
+use PHPUnit\Framework\TestCase;
-class UserInfoControllerTest extends \PHPUnit_Framework_TestCase
+class UserInfoControllerTest extends TestCase
{
public function testCreateController()
{
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/GrantType/AuthorizationCodeTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/GrantType/AuthorizationCodeTest.php
index 776002d1e..c89a1ae97 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/GrantType/AuthorizationCodeTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/GrantType/AuthorizationCodeTest.php
@@ -6,8 +6,9 @@ use OAuth2\Storage\Bootstrap;
use OAuth2\Server;
use OAuth2\Request\TestRequest;
use OAuth2\Response;
+use PHPUnit\Framework\TestCase;
-class AuthorizationCodeTest extends \PHPUnit_Framework_TestCase
+class AuthorizationCodeTest extends TestCase
{
public function testValidCode()
{
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 b0311434a..7b892c946 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
@@ -7,8 +7,9 @@ use OAuth2\Request;
use OAuth2\Response;
use OAuth2\Storage\Bootstrap;
use OAuth2\GrantType\ClientCredentials;
+use PHPUnit\Framework\TestCase;
-class CodeIdTokenTest extends \PHPUnit_Framework_TestCase
+class CodeIdTokenTest extends TestCase
{
public function testHandleAuthorizeRequest()
{
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 e772f6be4..a0df3a936 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
@@ -8,8 +8,9 @@ use OAuth2\Response;
use OAuth2\Storage\Bootstrap;
use OAuth2\GrantType\ClientCredentials;
use OAuth2\Encryption\Jwt;
+use PHPUnit\Framework\TestCase;
-class IdTokenTest extends \PHPUnit_Framework_TestCase
+class IdTokenTest extends TestCase
{
public function testValidateAuthorizeRequest()
{
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 bc564d37b..0573a9866 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
@@ -8,8 +8,9 @@ use OAuth2\Response;
use OAuth2\Storage\Bootstrap;
use OAuth2\GrantType\ClientCredentials;
use OAuth2\ResponseType\AccessToken;
+use PHPUnit\Framework\TestCase;
-class IdTokenTokenTest extends \PHPUnit_Framework_TestCase
+class IdTokenTokenTest extends TestCase
{
public function testHandleAuthorizeRequest()
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/RequestTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/RequestTest.php
index 10db3215c..cbf8f096b 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/RequestTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/RequestTest.php
@@ -5,8 +5,9 @@ namespace OAuth2;
use OAuth2\Request\TestRequest;
use OAuth2\Storage\Bootstrap;
use OAuth2\GrantType\AuthorizationCode;
+use PHPUnit\Framework\TestCase;
-class RequestTest extends \PHPUnit_Framework_TestCase
+class RequestTest extends TestCase
{
public function testRequestOverride()
{
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseTest.php
index b8149005d..2d2c57ee6 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseTest.php
@@ -1,8 +1,8 @@
<?php
-namespace OAuth2;
+namespace OAuth2;use PHPUnit\Framework\TestCase;
-class ResponseTest extends \PHPUnit_Framework_TestCase
+class ResponseTest extends TestCase
{
public function testRenderAsXml()
{
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseType/AccessTokenTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseType/AccessTokenTest.php
index 0ed1c82fc..43b02254f 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseType/AccessTokenTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseType/AccessTokenTest.php
@@ -4,8 +4,9 @@ namespace OAuth2\ResponseType;
use OAuth2\Server;
use OAuth2\Storage\Memory;
+use PHPUnit\Framework\TestCase;
-class AccessTokenTest extends \PHPUnit_Framework_TestCase
+class AccessTokenTest extends TestCase
{
public function testRevokeAccessTokenWithTypeHint()
{
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseType/JwtAccessTokenTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseType/JwtAccessTokenTest.php
index 51b01a927..7e37509ef 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseType/JwtAccessTokenTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseType/JwtAccessTokenTest.php
@@ -11,8 +11,9 @@ use OAuth2\GrantType\ClientCredentials;
use OAuth2\GrantType\UserCredentials;
use OAuth2\GrantType\RefreshToken;
use OAuth2\Encryption\Jwt;
+use PHPUnit\Framework\TestCase;
-class JwtAccessTokenTest extends \PHPUnit_Framework_TestCase
+class JwtAccessTokenTest extends TestCase
{
public function testCreateAccessToken()
{
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/ScopeTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/ScopeTest.php
index 99f9cf6eb..5b51be1d1 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/ScopeTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/ScopeTest.php
@@ -3,8 +3,9 @@
namespace OAuth2;
use OAuth2\Storage\Memory;
+use PHPUnit\Framework\TestCase;
-class ScopeTest extends \PHPUnit_Framework_TestCase
+class ScopeTest extends TestCase
{
public function testCheckScope()
{
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/ServerTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/ServerTest.php
index 747e120f5..3106961e2 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/ServerTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/ServerTest.php
@@ -5,8 +5,9 @@ namespace OAuth2;
use OAuth2\Request\TestRequest;
use OAuth2\ResponseType\AuthorizationCode;
use OAuth2\Storage\Bootstrap;
+use PHPUnit\Framework\TestCase;
-class ServerTest extends \PHPUnit_Framework_TestCase
+class ServerTest extends TestCase
{
/**
* @expectedException LogicException OAuth2\Storage\ClientInterface
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/TokenType/BearerTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/TokenType/BearerTest.php
index a2e000e22..71cca3bd9 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/TokenType/BearerTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/TokenType/BearerTest.php
@@ -4,8 +4,9 @@ namespace OAuth2\TokenType;
use OAuth2\Request\TestRequest;
use OAuth2\Response;
+use PHPUnit\Framework\TestCase;
-class BearerTest extends \PHPUnit_Framework_TestCase
+class BearerTest extends TestCase
{
public function testValidContentTypeWithCharset()
{
diff --git a/vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Request/TestRequest.php b/vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Request/TestRequest.php
index 7bbce28a4..a916ff2a3 100644
--- a/vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Request/TestRequest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Request/TestRequest.php
@@ -45,9 +45,14 @@ class TestRequest extends Request implements RequestInterface
$this->query = $query;
}
+ public function setMethod($method)
+ {
+ $this->server['REQUEST_METHOD'] = $method;
+ }
+
public function setPost(array $params)
{
- $this->server['REQUEST_METHOD'] = 'POST';
+ $this->setMethod('POST');
$this->request = $params;
}
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 f0b1274a2..e841d3ad2 100755..100644
--- a/vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Storage/BaseTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Storage/BaseTest.php
@@ -2,7 +2,9 @@
namespace OAuth2\Storage;
-abstract class BaseTest extends \PHPUnit_Framework_TestCase
+use PHPUnit\Framework\TestCase;
+
+abstract class BaseTest extends TestCase
{
public function provideStorage()
{
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 3d7bdd4e9..3d7bdd4e9 100755..100644
--- a/vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Storage/Bootstrap.php
+++ b/vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Storage/Bootstrap.php
diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php
index ea7bbb286..707f72738 100644
--- a/vendor/composer/autoload_classmap.php
+++ b/vendor/composer/autoload_classmap.php
@@ -755,10 +755,8 @@ return array(
'SimplePie_XML_Declaration_Parser' => $vendorDir . '/simplepie/simplepie/library/SimplePie/XML/Declaration/Parser.php',
'SimplePie_gzdecode' => $vendorDir . '/simplepie/simplepie/library/SimplePie/gzdecode.php',
'Text_LanguageDetect' => $vendorDir . '/pear/text_languagedetect/Text/LanguageDetect.php',
- 'Text_LanguageDetectTest' => $vendorDir . '/pear/text_languagedetect/tests/Text_LanguageDetectTest.php',
'Text_LanguageDetect_Exception' => $vendorDir . '/pear/text_languagedetect/Text/LanguageDetect/Exception.php',
'Text_LanguageDetect_ISO639' => $vendorDir . '/pear/text_languagedetect/Text/LanguageDetect/ISO639.php',
- 'Text_LanguageDetect_ISO639Test' => $vendorDir . '/pear/text_languagedetect/tests/Text_LanguageDetect_ISO639Test.php',
'Text_LanguageDetect_Parser' => $vendorDir . '/pear/text_languagedetect/Text/LanguageDetect/Parser.php',
'Zotlabs\\Access\\AccessList' => $baseDir . '/Zotlabs/Access/AccessList.php',
'Zotlabs\\Access\\PermissionLimits' => $baseDir . '/Zotlabs/Access/PermissionLimits.php',
@@ -839,6 +837,8 @@ return array(
'Zotlabs\\Module\\Appman' => $baseDir . '/Zotlabs/Module/Appman.php',
'Zotlabs\\Module\\Apporder' => $baseDir . '/Zotlabs/Module/Apporder.php',
'Zotlabs\\Module\\Apps' => $baseDir . '/Zotlabs/Module/Apps.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\\Authorize' => $baseDir . '/Zotlabs/Module/Authorize.php',
'Zotlabs\\Module\\Authtest' => $baseDir . '/Zotlabs/Module/Authtest.php',
@@ -990,13 +990,7 @@ return array(
'Zotlabs\\Module\\Toggle_safesearch' => $baseDir . '/Zotlabs/Module/Toggle_safesearch.php',
'Zotlabs\\Module\\Token' => $baseDir . '/Zotlabs/Module/Token.php',
'Zotlabs\\Module\\Uexport' => $baseDir . '/Zotlabs/Module/Uexport.php',
- 'Zotlabs\\Module\\Update_cards' => $baseDir . '/Zotlabs/Module/Update_cards.php',
- 'Zotlabs\\Module\\Update_channel' => $baseDir . '/Zotlabs/Module/Update_channel.php',
- 'Zotlabs\\Module\\Update_display' => $baseDir . '/Zotlabs/Module/Update_display.php',
- 'Zotlabs\\Module\\Update_home' => $baseDir . '/Zotlabs/Module/Update_home.php',
- 'Zotlabs\\Module\\Update_network' => $baseDir . '/Zotlabs/Module/Update_network.php',
- 'Zotlabs\\Module\\Update_pubstream' => $baseDir . '/Zotlabs/Module/Update_pubstream.php',
- 'Zotlabs\\Module\\Update_search' => $baseDir . '/Zotlabs/Module/Update_search.php',
+ 'Zotlabs\\Module\\Update' => $baseDir . '/Zotlabs/Module/Update.php',
'Zotlabs\\Module\\View' => $baseDir . '/Zotlabs/Module/View.php',
'Zotlabs\\Module\\Viewconnections' => $baseDir . '/Zotlabs/Module/Viewconnections.php',
'Zotlabs\\Module\\Viewsrc' => $baseDir . '/Zotlabs/Module/Viewsrc.php',
@@ -1027,6 +1021,11 @@ return array(
'Zotlabs\\Storage\\File' => $baseDir . '/Zotlabs/Storage/File.php',
'Zotlabs\\Storage\\GitRepo' => $baseDir . '/Zotlabs/Storage/GitRepo.php',
'Zotlabs\\Text\\Tagadelic' => $baseDir . '/Zotlabs/Text/Tagadelic.php',
+ 'Zotlabs\\Thumbs\\Epubthumb' => $baseDir . '/Zotlabs/Thumbs/Epubthumb.php',
+ 'Zotlabs\\Thumbs\\Mp3audio' => $baseDir . '/Zotlabs/Thumbs/Mp3audio.php',
+ 'Zotlabs\\Thumbs\\Pdf' => $baseDir . '/Zotlabs/Thumbs/Pdf.php',
+ 'Zotlabs\\Thumbs\\Text' => $baseDir . '/Zotlabs/Thumbs/Text.php',
+ 'Zotlabs\\Thumbs\\Video' => $baseDir . '/Zotlabs/Thumbs/Video.php',
'Zotlabs\\Web\\CheckJS' => $baseDir . '/Zotlabs/Web/CheckJS.php',
'Zotlabs\\Web\\Controller' => $baseDir . '/Zotlabs/Web/Controller.php',
'Zotlabs\\Web\\HTTPHeaders' => $baseDir . '/Zotlabs/Web/HTTPHeaders.php',
@@ -1065,6 +1064,7 @@ return array(
'Zotlabs\\Widget\\Forums' => $baseDir . '/Zotlabs/Widget/Forums.php',
'Zotlabs\\Widget\\Fullprofile' => $baseDir . '/Zotlabs/Widget/Fullprofile.php',
'Zotlabs\\Widget\\Helpindex' => $baseDir . '/Zotlabs/Widget/Helpindex.php',
+ 'Zotlabs\\Widget\\Hq_controls' => $baseDir . '/Zotlabs/Widget/Hq_controls.php',
'Zotlabs\\Widget\\Item' => $baseDir . '/Zotlabs/Widget/Item.php',
'Zotlabs\\Widget\\Mailmenu' => $baseDir . '/Zotlabs/Widget/Mailmenu.php',
'Zotlabs\\Widget\\Menu_preview' => $baseDir . '/Zotlabs/Widget/Menu_preview.php',
diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php
index bbe6fd553..f2747ecac 100644
--- a/vendor/composer/autoload_files.php
+++ b/vendor/composer/autoload_files.php
@@ -7,11 +7,12 @@ $baseDir = dirname($vendorDir);
return array(
'383eaff206634a77a1be54e64e6459c7' => $vendorDir . '/sabre/uri/lib/functions.php',
+ '3569eecfeed3bcf0bad3c998a494ecb8' => $vendorDir . '/sabre/xml/lib/Deserializer/functions.php',
+ '93aa591bc4ca510c520999e34229ee79' => $vendorDir . '/sabre/xml/lib/Serializer/functions.php',
'2b9d0f43f9552984cfa82fee95491826' => $vendorDir . '/sabre/event/lib/coroutine.php',
'd81bab31d3feb45bfe2f283ea3c8fdf7' => $vendorDir . '/sabre/event/lib/Loop/functions.php',
'a1cce3d26cc15c00fcd0b3354bd72c88' => $vendorDir . '/sabre/event/lib/Promise/functions.php',
- '3569eecfeed3bcf0bad3c998a494ecb8' => $vendorDir . '/sabre/xml/lib/Deserializer/functions.php',
- '93aa591bc4ca510c520999e34229ee79' => $vendorDir . '/sabre/xml/lib/Serializer/functions.php',
'ebdb698ed4152ae445614b69b5e4bb6a' => $vendorDir . '/sabre/http/lib/functions.php',
'2cffec82183ee1cea088009cef9a6fc3' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier.composer.php',
+ 'f084d01b0a599f67676cffef638aa95b' => $vendorDir . '/smarty/smarty/libs/bootstrap.php',
);
diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php
index 63dc8c257..74d6cf27b 100644
--- a/vendor/composer/autoload_static.php
+++ b/vendor/composer/autoload_static.php
@@ -8,13 +8,14 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
{
public static $files = array (
'383eaff206634a77a1be54e64e6459c7' => __DIR__ . '/..' . '/sabre/uri/lib/functions.php',
+ '3569eecfeed3bcf0bad3c998a494ecb8' => __DIR__ . '/..' . '/sabre/xml/lib/Deserializer/functions.php',
+ '93aa591bc4ca510c520999e34229ee79' => __DIR__ . '/..' . '/sabre/xml/lib/Serializer/functions.php',
'2b9d0f43f9552984cfa82fee95491826' => __DIR__ . '/..' . '/sabre/event/lib/coroutine.php',
'd81bab31d3feb45bfe2f283ea3c8fdf7' => __DIR__ . '/..' . '/sabre/event/lib/Loop/functions.php',
'a1cce3d26cc15c00fcd0b3354bd72c88' => __DIR__ . '/..' . '/sabre/event/lib/Promise/functions.php',
- '3569eecfeed3bcf0bad3c998a494ecb8' => __DIR__ . '/..' . '/sabre/xml/lib/Deserializer/functions.php',
- '93aa591bc4ca510c520999e34229ee79' => __DIR__ . '/..' . '/sabre/xml/lib/Serializer/functions.php',
'ebdb698ed4152ae445614b69b5e4bb6a' => __DIR__ . '/..' . '/sabre/http/lib/functions.php',
'2cffec82183ee1cea088009cef9a6fc3' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier.composer.php',
+ 'f084d01b0a599f67676cffef638aa95b' => __DIR__ . '/..' . '/smarty/smarty/libs/bootstrap.php',
);
public static $prefixLengthsPsr4 = array (
@@ -907,10 +908,8 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'SimplePie_XML_Declaration_Parser' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie/XML/Declaration/Parser.php',
'SimplePie_gzdecode' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie/gzdecode.php',
'Text_LanguageDetect' => __DIR__ . '/..' . '/pear/text_languagedetect/Text/LanguageDetect.php',
- 'Text_LanguageDetectTest' => __DIR__ . '/..' . '/pear/text_languagedetect/tests/Text_LanguageDetectTest.php',
'Text_LanguageDetect_Exception' => __DIR__ . '/..' . '/pear/text_languagedetect/Text/LanguageDetect/Exception.php',
'Text_LanguageDetect_ISO639' => __DIR__ . '/..' . '/pear/text_languagedetect/Text/LanguageDetect/ISO639.php',
- 'Text_LanguageDetect_ISO639Test' => __DIR__ . '/..' . '/pear/text_languagedetect/tests/Text_LanguageDetect_ISO639Test.php',
'Text_LanguageDetect_Parser' => __DIR__ . '/..' . '/pear/text_languagedetect/Text/LanguageDetect/Parser.php',
'Zotlabs\\Access\\AccessList' => __DIR__ . '/../..' . '/Zotlabs/Access/AccessList.php',
'Zotlabs\\Access\\PermissionLimits' => __DIR__ . '/../..' . '/Zotlabs/Access/PermissionLimits.php',
@@ -991,6 +990,8 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Zotlabs\\Module\\Appman' => __DIR__ . '/../..' . '/Zotlabs/Module/Appman.php',
'Zotlabs\\Module\\Apporder' => __DIR__ . '/../..' . '/Zotlabs/Module/Apporder.php',
'Zotlabs\\Module\\Apps' => __DIR__ . '/../..' . '/Zotlabs/Module/Apps.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\\Authorize' => __DIR__ . '/../..' . '/Zotlabs/Module/Authorize.php',
'Zotlabs\\Module\\Authtest' => __DIR__ . '/../..' . '/Zotlabs/Module/Authtest.php',
@@ -1142,13 +1143,7 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Zotlabs\\Module\\Toggle_safesearch' => __DIR__ . '/../..' . '/Zotlabs/Module/Toggle_safesearch.php',
'Zotlabs\\Module\\Token' => __DIR__ . '/../..' . '/Zotlabs/Module/Token.php',
'Zotlabs\\Module\\Uexport' => __DIR__ . '/../..' . '/Zotlabs/Module/Uexport.php',
- 'Zotlabs\\Module\\Update_cards' => __DIR__ . '/../..' . '/Zotlabs/Module/Update_cards.php',
- 'Zotlabs\\Module\\Update_channel' => __DIR__ . '/../..' . '/Zotlabs/Module/Update_channel.php',
- 'Zotlabs\\Module\\Update_display' => __DIR__ . '/../..' . '/Zotlabs/Module/Update_display.php',
- 'Zotlabs\\Module\\Update_home' => __DIR__ . '/../..' . '/Zotlabs/Module/Update_home.php',
- 'Zotlabs\\Module\\Update_network' => __DIR__ . '/../..' . '/Zotlabs/Module/Update_network.php',
- 'Zotlabs\\Module\\Update_pubstream' => __DIR__ . '/../..' . '/Zotlabs/Module/Update_pubstream.php',
- 'Zotlabs\\Module\\Update_search' => __DIR__ . '/../..' . '/Zotlabs/Module/Update_search.php',
+ 'Zotlabs\\Module\\Update' => __DIR__ . '/../..' . '/Zotlabs/Module/Update.php',
'Zotlabs\\Module\\View' => __DIR__ . '/../..' . '/Zotlabs/Module/View.php',
'Zotlabs\\Module\\Viewconnections' => __DIR__ . '/../..' . '/Zotlabs/Module/Viewconnections.php',
'Zotlabs\\Module\\Viewsrc' => __DIR__ . '/../..' . '/Zotlabs/Module/Viewsrc.php',
@@ -1179,6 +1174,11 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Zotlabs\\Storage\\File' => __DIR__ . '/../..' . '/Zotlabs/Storage/File.php',
'Zotlabs\\Storage\\GitRepo' => __DIR__ . '/../..' . '/Zotlabs/Storage/GitRepo.php',
'Zotlabs\\Text\\Tagadelic' => __DIR__ . '/../..' . '/Zotlabs/Text/Tagadelic.php',
+ 'Zotlabs\\Thumbs\\Epubthumb' => __DIR__ . '/../..' . '/Zotlabs/Thumbs/Epubthumb.php',
+ 'Zotlabs\\Thumbs\\Mp3audio' => __DIR__ . '/../..' . '/Zotlabs/Thumbs/Mp3audio.php',
+ 'Zotlabs\\Thumbs\\Pdf' => __DIR__ . '/../..' . '/Zotlabs/Thumbs/Pdf.php',
+ 'Zotlabs\\Thumbs\\Text' => __DIR__ . '/../..' . '/Zotlabs/Thumbs/Text.php',
+ 'Zotlabs\\Thumbs\\Video' => __DIR__ . '/../..' . '/Zotlabs/Thumbs/Video.php',
'Zotlabs\\Web\\CheckJS' => __DIR__ . '/../..' . '/Zotlabs/Web/CheckJS.php',
'Zotlabs\\Web\\Controller' => __DIR__ . '/../..' . '/Zotlabs/Web/Controller.php',
'Zotlabs\\Web\\HTTPHeaders' => __DIR__ . '/../..' . '/Zotlabs/Web/HTTPHeaders.php',
@@ -1217,6 +1217,7 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Zotlabs\\Widget\\Forums' => __DIR__ . '/../..' . '/Zotlabs/Widget/Forums.php',
'Zotlabs\\Widget\\Fullprofile' => __DIR__ . '/../..' . '/Zotlabs/Widget/Fullprofile.php',
'Zotlabs\\Widget\\Helpindex' => __DIR__ . '/../..' . '/Zotlabs/Widget/Helpindex.php',
+ 'Zotlabs\\Widget\\Hq_controls' => __DIR__ . '/../..' . '/Zotlabs/Widget/Hq_controls.php',
'Zotlabs\\Widget\\Item' => __DIR__ . '/../..' . '/Zotlabs/Widget/Item.php',
'Zotlabs\\Widget\\Mailmenu' => __DIR__ . '/../..' . '/Zotlabs/Widget/Mailmenu.php',
'Zotlabs\\Widget\\Menu_preview' => __DIR__ . '/../..' . '/Zotlabs/Widget/Menu_preview.php',
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index 31aa8aef4..52312a34a 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -1,41 +1,270 @@
[
{
- "name": "sabre/event",
- "version": "3.0.0",
- "version_normalized": "3.0.0.0",
+ "name": "commerceguys/intl",
+ "version": "v0.7.4",
+ "version_normalized": "0.7.4.0",
"source": {
"type": "git",
- "url": "https://github.com/sabre-io/event.git",
- "reference": "831d586f5a442dceacdcf5e9c4c36a4db99a3534"
+ "url": "https://github.com/commerceguys/intl.git",
+ "reference": "edfcfc26ed8505c4f6fcf862eb36dfda1af74b00"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sabre-io/event/zipball/831d586f5a442dceacdcf5e9c4c36a4db99a3534",
- "reference": "831d586f5a442dceacdcf5e9c4c36a4db99a3534",
+ "url": "https://api.github.com/repos/commerceguys/intl/zipball/edfcfc26ed8505c4f6fcf862eb36dfda1af74b00",
+ "reference": "edfcfc26ed8505c4f6fcf862eb36dfda1af74b00",
"shasum": ""
},
"require": {
- "php": ">=5.5"
+ "php": ">=5.4.0"
},
"require-dev": {
- "phpunit/phpunit": "*",
- "sabre/cs": "~0.0.4"
+ "mikey179/vfsstream": "1.*",
+ "phpunit/phpunit": "~4.0"
},
- "time": "2015-11-05T20:14:39+00:00",
+ "time": "2016-12-13T12:33:19+00:00",
"type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "0.x-dev"
+ }
+ },
"installation-source": "dist",
"autoload": {
"psr-4": {
- "Sabre\\Event\\": "lib/"
+ "CommerceGuys\\Intl\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Bojan Zivanovic"
+ }
+ ],
+ "description": "Internationalization library powered by CLDR data."
+ },
+ {
+ "name": "ezyang/htmlpurifier",
+ "version": "v4.9.3",
+ "version_normalized": "4.9.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/ezyang/htmlpurifier.git",
+ "reference": "95e1bae3182efc0f3422896a3236e991049dac69"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/95e1bae3182efc0f3422896a3236e991049dac69",
+ "reference": "95e1bae3182efc0f3422896a3236e991049dac69",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.2"
+ },
+ "require-dev": {
+ "simpletest/simpletest": "^1.1"
+ },
+ "time": "2017-06-03T02:28:16+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-0": {
+ "HTMLPurifier": "library/"
},
"files": [
- "lib/coroutine.php",
- "lib/Loop/functions.php",
- "lib/Promise/functions.php"
+ "library/HTMLPurifier.composer.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
+ "LGPL"
+ ],
+ "authors": [
+ {
+ "name": "Edward Z. Yang",
+ "email": "admin@htmlpurifier.org",
+ "homepage": "http://ezyang.com"
+ }
+ ],
+ "description": "Standards compliant HTML filter written in PHP",
+ "homepage": "http://htmlpurifier.org/",
+ "keywords": [
+ "html"
+ ]
+ },
+ {
+ "name": "lukasreschke/id3parser",
+ "version": "v0.0.1",
+ "version_normalized": "0.0.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/LukasReschke/ID3Parser.git",
+ "reference": "cd3ba6e8918cc30883f01a3c24281cfe23b8877a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/LukasReschke/ID3Parser/zipball/cd3ba6e8918cc30883f01a3c24281cfe23b8877a",
+ "reference": "cd3ba6e8918cc30883f01a3c24281cfe23b8877a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.4.0"
+ },
+ "time": "2016-04-04T09:34:50+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "ID3Parser\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "GPL"
+ ],
+ "homepage": "https://github.com/LukasReschke/ID3Parser/",
+ "keywords": [
+ "codecs",
+ "php",
+ "tags"
+ ]
+ },
+ {
+ "name": "michelf/php-markdown",
+ "version": "1.7.0",
+ "version_normalized": "1.7.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/michelf/php-markdown.git",
+ "reference": "1f51cc520948f66cd2af8cbc45a5ee175e774220"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/michelf/php-markdown/zipball/1f51cc520948f66cd2af8cbc45a5ee175e774220",
+ "reference": "1f51cc520948f66cd2af8cbc45a5ee175e774220",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "time": "2016-10-29T18:58:20+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-lib": "1.4.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-0": {
+ "Michelf": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Michel Fortin",
+ "email": "michel.fortin@michelf.ca",
+ "homepage": "https://michelf.ca/",
+ "role": "Developer"
+ },
+ {
+ "name": "John Gruber",
+ "homepage": "https://daringfireball.net/"
+ }
+ ],
+ "description": "PHP Markdown",
+ "homepage": "https://michelf.ca/projects/php-markdown/",
+ "keywords": [
+ "markdown"
+ ]
+ },
+ {
+ "name": "pear/text_languagedetect",
+ "version": "v1.0.0",
+ "version_normalized": "1.0.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/pear/Text_LanguageDetect.git",
+ "reference": "bb9ff6f4970f686fac59081e916b456021fe7ba6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/pear/Text_LanguageDetect/zipball/bb9ff6f4970f686fac59081e916b456021fe7ba6",
+ "reference": "bb9ff6f4970f686fac59081e916b456021fe7ba6",
+ "shasum": ""
+ },
+ "require-dev": {
+ "phpunit/phpunit": "*"
+ },
+ "suggest": {
+ "ext-mbstring": "May require the mbstring PHP extension"
+ },
+ "time": "2017-03-02T16:14:08+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-0": {
+ "Text": "./"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "include-path": [
+ "./"
+ ],
+ "license": [
+ "BSD-2-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Nicholas Pisarro",
+ "email": "taak@php.net",
+ "role": "Lead"
+ }
+ ],
+ "description": "Identify human languages from text samples",
+ "homepage": "http://pear.php.net/package/Text_LanguageDetect"
+ },
+ {
+ "name": "sabre/uri",
+ "version": "1.2.1",
+ "version_normalized": "1.2.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sabre-io/uri.git",
+ "reference": "ada354d83579565949d80b2e15593c2371225e61"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sabre-io/uri/zipball/ada354d83579565949d80b2e15593c2371225e61",
+ "reference": "ada354d83579565949d80b2e15593c2371225e61",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.4.7"
+ },
+ "require-dev": {
+ "phpunit/phpunit": ">=4.0,<6.0",
+ "sabre/cs": "~1.0.0"
+ },
+ "time": "2017-02-20T19:59:28+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "lib/functions.php"
+ ],
+ "psr-4": {
+ "Sabre\\Uri\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
"BSD-3-Clause"
],
"authors": [
@@ -46,16 +275,12 @@
"role": "Developer"
}
],
- "description": "sabre/event is a library for lightweight event-based programming",
- "homepage": "http://sabre.io/event/",
+ "description": "Functions for making sense out of URIs.",
+ "homepage": "http://sabre.io/uri/",
"keywords": [
- "EventEmitter",
- "async",
- "events",
- "hooks",
- "plugin",
- "promise",
- "signal"
+ "rfc3986",
+ "uri",
+ "url"
]
},
{
@@ -124,6 +349,123 @@
]
},
{
+ "name": "sabre/event",
+ "version": "3.0.0",
+ "version_normalized": "3.0.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sabre-io/event.git",
+ "reference": "831d586f5a442dceacdcf5e9c4c36a4db99a3534"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sabre-io/event/zipball/831d586f5a442dceacdcf5e9c4c36a4db99a3534",
+ "reference": "831d586f5a442dceacdcf5e9c4c36a4db99a3534",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "*",
+ "sabre/cs": "~0.0.4"
+ },
+ "time": "2015-11-05T20:14:39+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Sabre\\Event\\": "lib/"
+ },
+ "files": [
+ "lib/coroutine.php",
+ "lib/Loop/functions.php",
+ "lib/Promise/functions.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Evert Pot",
+ "email": "me@evertpot.com",
+ "homepage": "http://evertpot.com/",
+ "role": "Developer"
+ }
+ ],
+ "description": "sabre/event is a library for lightweight event-based programming",
+ "homepage": "http://sabre.io/event/",
+ "keywords": [
+ "EventEmitter",
+ "async",
+ "events",
+ "hooks",
+ "plugin",
+ "promise",
+ "signal"
+ ]
+ },
+ {
+ "name": "sabre/http",
+ "version": "4.2.3",
+ "version_normalized": "4.2.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sabre-io/http.git",
+ "reference": "0295f9a3ee39be97e0898592fc19e42421e0cd93"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sabre-io/http/zipball/0295f9a3ee39be97e0898592fc19e42421e0cd93",
+ "reference": "0295f9a3ee39be97e0898592fc19e42421e0cd93",
+ "shasum": ""
+ },
+ "require": {
+ "ext-ctype": "*",
+ "ext-mbstring": "*",
+ "php": ">=5.4",
+ "sabre/event": ">=1.0.0,<4.0.0",
+ "sabre/uri": "~1.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.3",
+ "sabre/cs": "~0.0.1"
+ },
+ "suggest": {
+ "ext-curl": " to make http requests with the Client class"
+ },
+ "time": "2017-06-12T07:53:04+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "lib/functions.php"
+ ],
+ "psr-4": {
+ "Sabre\\HTTP\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Evert Pot",
+ "email": "me@evertpot.com",
+ "homepage": "http://evertpot.com/",
+ "role": "Developer"
+ }
+ ],
+ "description": "The sabre/http library provides utilities for dealing with http requests and responses. ",
+ "homepage": "https://github.com/fruux/sabre-http",
+ "keywords": [
+ "http"
+ ]
+ },
+ {
"name": "psr/log",
"version": "1.0.2",
"version_normalized": "1.0.2.0",
@@ -173,34 +515,66 @@
]
},
{
- "name": "michelf/php-markdown",
- "version": "1.7.0",
- "version_normalized": "1.7.0.0",
+ "name": "sabre/dav",
+ "version": "3.2.2",
+ "version_normalized": "3.2.2.0",
"source": {
"type": "git",
- "url": "https://github.com/michelf/php-markdown.git",
- "reference": "1f51cc520948f66cd2af8cbc45a5ee175e774220"
+ "url": "https://github.com/sabre-io/dav.git",
+ "reference": "e987775e619728f12205606c9cc3ee565ffb1516"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/michelf/php-markdown/zipball/1f51cc520948f66cd2af8cbc45a5ee175e774220",
- "reference": "1f51cc520948f66cd2af8cbc45a5ee175e774220",
+ "url": "https://api.github.com/repos/sabre-io/dav/zipball/e987775e619728f12205606c9cc3ee565ffb1516",
+ "reference": "e987775e619728f12205606c9cc3ee565ffb1516",
"shasum": ""
},
"require": {
- "php": ">=5.3.0"
+ "ext-ctype": "*",
+ "ext-date": "*",
+ "ext-dom": "*",
+ "ext-iconv": "*",
+ "ext-mbstring": "*",
+ "ext-pcre": "*",
+ "ext-simplexml": "*",
+ "ext-spl": "*",
+ "lib-libxml": ">=2.7.0",
+ "php": ">=5.5.0",
+ "psr/log": "^1.0",
+ "sabre/event": ">=2.0.0, <4.0.0",
+ "sabre/http": "^4.2.1",
+ "sabre/uri": "^1.0.1",
+ "sabre/vobject": "^4.1.0",
+ "sabre/xml": "^1.4.0"
},
- "time": "2016-10-29T18:58:20+00:00",
+ "require-dev": {
+ "evert/phpdoc-md": "~0.1.0",
+ "monolog/monolog": "^1.18",
+ "phpunit/phpunit": "> 4.8, <6.0.0",
+ "sabre/cs": "^1.0.0"
+ },
+ "suggest": {
+ "ext-curl": "*",
+ "ext-pdo": "*"
+ },
+ "time": "2017-02-15T03:06:08+00:00",
+ "bin": [
+ "bin/sabredav",
+ "bin/naturalselection"
+ ],
"type": "library",
"extra": {
"branch-alias": {
- "dev-lib": "1.4.x-dev"
+ "dev-master": "3.1.0-dev"
}
},
"installation-source": "dist",
"autoload": {
- "psr-0": {
- "Michelf": ""
+ "psr-4": {
+ "Sabre\\DAV\\": "lib/DAV/",
+ "Sabre\\DAVACL\\": "lib/DAVACL/",
+ "Sabre\\CalDAV\\": "lib/CalDAV/",
+ "Sabre\\CardDAV\\": "lib/CardDAV/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -209,35 +583,35 @@
],
"authors": [
{
- "name": "Michel Fortin",
- "email": "michel.fortin@michelf.ca",
- "homepage": "https://michelf.ca/",
+ "name": "Evert Pot",
+ "email": "me@evertpot.com",
+ "homepage": "http://evertpot.com/",
"role": "Developer"
- },
- {
- "name": "John Gruber",
- "homepage": "https://daringfireball.net/"
}
],
- "description": "PHP Markdown",
- "homepage": "https://michelf.ca/projects/php-markdown/",
+ "description": "WebDAV Framework for PHP",
+ "homepage": "http://sabre.io/",
"keywords": [
- "markdown"
+ "CalDAV",
+ "CardDAV",
+ "WebDAV",
+ "framework",
+ "iCalendar"
]
},
{
"name": "bshaffer/oauth2-server-php",
- "version": "v1.9.0",
- "version_normalized": "1.9.0.0",
+ "version": "v1.10.0",
+ "version_normalized": "1.10.0.0",
"source": {
"type": "git",
"url": "https://github.com/bshaffer/oauth2-server-php.git",
- "reference": "8856aed1a98d6da596ae3f9b8095b5c7a1581697"
+ "reference": "d158878425392fe5a0cc34f15dbaf46315ae0ed9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/bshaffer/oauth2-server-php/zipball/8856aed1a98d6da596ae3f9b8095b5c7a1581697",
- "reference": "8856aed1a98d6da596ae3f9b8095b5c7a1581697",
+ "url": "https://api.github.com/repos/bshaffer/oauth2-server-php/zipball/d158878425392fe5a0cc34f15dbaf46315ae0ed9",
+ "reference": "d158878425392fe5a0cc34f15dbaf46315ae0ed9",
"shasum": ""
},
"require": {
@@ -247,16 +621,18 @@
"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"
},
"suggest": {
"aws/aws-sdk-php": "~2.8 is required to use DynamoDB storage",
- "firebase/php-jwt": "~1.1 is required to use MondoDB storage",
+ "firebase/php-jwt": "~2.2 is required to use JWT features",
+ "mongodb/mongodb": "^1.1 is required to use MongoDB storage",
"predis/predis": "Required to use Redis storage",
"thobbs/phpcassa": "Required to use Cassandra storage"
},
- "time": "2017-01-06T23:20:00+00:00",
+ "time": "2017-11-15T01:41:02+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -285,17 +661,17 @@
},
{
"name": "simplepie/simplepie",
- "version": "1.5",
- "version_normalized": "1.5.0.0",
+ "version": "1.5.1",
+ "version_normalized": "1.5.1.0",
"source": {
"type": "git",
"url": "https://github.com/simplepie/simplepie.git",
- "reference": "5de5551953f95feef12cf355a7a26a70f94aa3ab"
+ "reference": "db9fff27b6d49eed3d4047cd3211ec8dba2f5d6e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/simplepie/simplepie/zipball/5de5551953f95feef12cf355a7a26a70f94aa3ab",
- "reference": "5de5551953f95feef12cf355a7a26a70f94aa3ab",
+ "url": "https://api.github.com/repos/simplepie/simplepie/zipball/db9fff27b6d49eed3d4047cd3211ec8dba2f5d6e",
+ "reference": "db9fff27b6d49eed3d4047cd3211ec8dba2f5d6e",
"shasum": ""
},
"require": {
@@ -307,9 +683,9 @@
"suggest": {
"mf2/mf2": "Microformat module that allows for parsing HTML for microformats"
},
- "time": "2017-04-17T07:29:31+00:00",
+ "time": "2017-11-12T02:03:34+00:00",
"type": "library",
- "installation-source": "source",
+ "installation-source": "dist",
"autoload": {
"psr-0": {
"SimplePie": "library"
@@ -344,108 +720,23 @@
"rss"
],
"support": {
- "source": "https://github.com/simplepie/simplepie/tree/1.5",
+ "source": "https://github.com/simplepie/simplepie/tree/1.5.1",
"issues": "https://github.com/simplepie/simplepie/issues"
}
},
{
- "name": "sabre/dav",
- "version": "3.2.2",
- "version_normalized": "3.2.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sabre-io/dav.git",
- "reference": "e987775e619728f12205606c9cc3ee565ffb1516"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sabre-io/dav/zipball/e987775e619728f12205606c9cc3ee565ffb1516",
- "reference": "e987775e619728f12205606c9cc3ee565ffb1516",
- "shasum": ""
- },
- "require": {
- "ext-ctype": "*",
- "ext-date": "*",
- "ext-dom": "*",
- "ext-iconv": "*",
- "ext-mbstring": "*",
- "ext-pcre": "*",
- "ext-simplexml": "*",
- "ext-spl": "*",
- "lib-libxml": ">=2.7.0",
- "php": ">=5.5.0",
- "psr/log": "^1.0",
- "sabre/event": ">=2.0.0, <4.0.0",
- "sabre/http": "^4.2.1",
- "sabre/uri": "^1.0.1",
- "sabre/vobject": "^4.1.0",
- "sabre/xml": "^1.4.0"
- },
- "require-dev": {
- "evert/phpdoc-md": "~0.1.0",
- "monolog/monolog": "^1.18",
- "phpunit/phpunit": "> 4.8, <6.0.0",
- "sabre/cs": "^1.0.0"
- },
- "suggest": {
- "ext-curl": "*",
- "ext-pdo": "*"
- },
- "time": "2017-02-15T03:06:08+00:00",
- "bin": [
- "bin/sabredav",
- "bin/naturalselection"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1.0-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Sabre\\DAV\\": "lib/DAV/",
- "Sabre\\DAVACL\\": "lib/DAVACL/",
- "Sabre\\CalDAV\\": "lib/CalDAV/",
- "Sabre\\CardDAV\\": "lib/CardDAV/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Evert Pot",
- "email": "me@evertpot.com",
- "homepage": "http://evertpot.com/",
- "role": "Developer"
- }
- ],
- "description": "WebDAV Framework for PHP",
- "homepage": "http://sabre.io/",
- "keywords": [
- "CalDAV",
- "CardDAV",
- "WebDAV",
- "framework",
- "iCalendar"
- ]
- },
- {
"name": "league/html-to-markdown",
- "version": "4.4.1",
- "version_normalized": "4.4.1.0",
+ "version": "4.6.0",
+ "version_normalized": "4.6.0.0",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/html-to-markdown.git",
- "reference": "82ea375b5b2b1da1da222644c0565c695bf88186"
+ "reference": "9022e648bc40e44cb3b18438d97ed8715ecbc49b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/html-to-markdown/zipball/82ea375b5b2b1da1da222644c0565c695bf88186",
- "reference": "82ea375b5b2b1da1da222644c0565c695bf88186",
+ "url": "https://api.github.com/repos/thephpleague/html-to-markdown/zipball/9022e648bc40e44cb3b18438d97ed8715ecbc49b",
+ "reference": "9022e648bc40e44cb3b18438d97ed8715ecbc49b",
"shasum": ""
},
"require": {
@@ -458,14 +749,14 @@
"phpunit/phpunit": "4.*",
"scrutinizer/ocular": "~1.1"
},
- "time": "2017-03-16T00:45:59+00:00",
+ "time": "2017-10-24T02:45:05+00:00",
"bin": [
"bin/html-to-markdown"
],
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.5-dev"
+ "dev-master": "4.7-dev"
}
},
"installation-source": "dist",
@@ -500,71 +791,18 @@
]
},
{
- "name": "sabre/uri",
- "version": "1.2.1",
- "version_normalized": "1.2.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sabre-io/uri.git",
- "reference": "ada354d83579565949d80b2e15593c2371225e61"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sabre-io/uri/zipball/ada354d83579565949d80b2e15593c2371225e61",
- "reference": "ada354d83579565949d80b2e15593c2371225e61",
- "shasum": ""
- },
- "require": {
- "php": ">=5.4.7"
- },
- "require-dev": {
- "phpunit/phpunit": ">=4.0,<6.0",
- "sabre/cs": "~1.0.0"
- },
- "time": "2017-02-20T19:59:28+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "files": [
- "lib/functions.php"
- ],
- "psr-4": {
- "Sabre\\Uri\\": "lib/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Evert Pot",
- "email": "me@evertpot.com",
- "homepage": "http://evertpot.com/",
- "role": "Developer"
- }
- ],
- "description": "Functions for making sense out of URIs.",
- "homepage": "http://sabre.io/uri/",
- "keywords": [
- "rfc3986",
- "uri",
- "url"
- ]
- },
- {
"name": "sabre/vobject",
- "version": "4.1.2",
- "version_normalized": "4.1.2.0",
+ "version": "4.1.3",
+ "version_normalized": "4.1.3.0",
"source": {
"type": "git",
"url": "https://github.com/sabre-io/vobject.git",
- "reference": "d0fde2fafa2a3dad1f559c2d1c2591d4fd75ae3c"
+ "reference": "df9916813d1d83e4f761c4cba13361ee74196fac"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sabre-io/vobject/zipball/d0fde2fafa2a3dad1f559c2d1c2591d4fd75ae3c",
- "reference": "d0fde2fafa2a3dad1f559c2d1c2591d4fd75ae3c",
+ "url": "https://api.github.com/repos/sabre-io/vobject/zipball/df9916813d1d83e4f761c4cba13361ee74196fac",
+ "reference": "df9916813d1d83e4f761c4cba13361ee74196fac",
"shasum": ""
},
"require": {
@@ -573,13 +811,13 @@
"sabre/xml": ">=1.5 <3.0"
},
"require-dev": {
- "phpunit/phpunit": "*",
+ "phpunit/phpunit": "> 4.8, <6.0.0",
"sabre/cs": "^1.0.0"
},
"suggest": {
"hoa/bench": "If you would like to run the benchmark scripts"
},
- "time": "2016-12-06T04:14:09+00:00",
+ "time": "2017-10-18T08:29:40+00:00",
"bin": [
"bin/vobject",
"bin/generate_vcards"
@@ -652,239 +890,58 @@
]
},
{
- "name": "ezyang/htmlpurifier",
- "version": "v4.9.3",
- "version_normalized": "4.9.3.0",
+ "name": "smarty/smarty",
+ "version": "v3.1.31",
+ "version_normalized": "3.1.31.0",
"source": {
"type": "git",
- "url": "https://github.com/ezyang/htmlpurifier.git",
- "reference": "95e1bae3182efc0f3422896a3236e991049dac69"
+ "url": "https://github.com/smarty-php/smarty.git",
+ "reference": "c7d42e4a327c402897dd587871434888fde1e7a9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/95e1bae3182efc0f3422896a3236e991049dac69",
- "reference": "95e1bae3182efc0f3422896a3236e991049dac69",
+ "url": "https://api.github.com/repos/smarty-php/smarty/zipball/c7d42e4a327c402897dd587871434888fde1e7a9",
+ "reference": "c7d42e4a327c402897dd587871434888fde1e7a9",
"shasum": ""
},
"require": {
"php": ">=5.2"
},
- "require-dev": {
- "simpletest/simpletest": "^1.1"
- },
- "time": "2017-06-03T02:28:16+00:00",
+ "time": "2016-12-14T21:57:25+00:00",
"type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-0": {
- "HTMLPurifier": "library/"
- },
- "files": [
- "library/HTMLPurifier.composer.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "LGPL"
- ],
- "authors": [
- {
- "name": "Edward Z. Yang",
- "email": "admin@htmlpurifier.org",
- "homepage": "http://ezyang.com"
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.1.x-dev"
}
- ],
- "description": "Standards compliant HTML filter written in PHP",
- "homepage": "http://htmlpurifier.org/",
- "keywords": [
- "html"
- ]
- },
- {
- "name": "sabre/http",
- "version": "4.2.3",
- "version_normalized": "4.2.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sabre-io/http.git",
- "reference": "0295f9a3ee39be97e0898592fc19e42421e0cd93"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sabre-io/http/zipball/0295f9a3ee39be97e0898592fc19e42421e0cd93",
- "reference": "0295f9a3ee39be97e0898592fc19e42421e0cd93",
- "shasum": ""
- },
- "require": {
- "ext-ctype": "*",
- "ext-mbstring": "*",
- "php": ">=5.4",
- "sabre/event": ">=1.0.0,<4.0.0",
- "sabre/uri": "~1.0"
},
- "require-dev": {
- "phpunit/phpunit": "~4.3",
- "sabre/cs": "~0.0.1"
- },
- "suggest": {
- "ext-curl": " to make http requests with the Client class"
- },
- "time": "2017-06-12T07:53:04+00:00",
- "type": "library",
"installation-source": "dist",
"autoload": {
"files": [
- "lib/functions.php"
- ],
- "psr-4": {
- "Sabre\\HTTP\\": "lib/"
- }
+ "libs/bootstrap.php"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "BSD-3-Clause"
+ "LGPL-3.0"
],
"authors": [
{
- "name": "Evert Pot",
- "email": "me@evertpot.com",
- "homepage": "http://evertpot.com/",
- "role": "Developer"
- }
- ],
- "description": "The sabre/http library provides utilities for dealing with http requests and responses. ",
- "homepage": "https://github.com/fruux/sabre-http",
- "keywords": [
- "http"
- ]
- },
- {
- "name": "pear/text_languagedetect",
- "version": "v1.0.0",
- "version_normalized": "1.0.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/pear/Text_LanguageDetect.git",
- "reference": "bb9ff6f4970f686fac59081e916b456021fe7ba6"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/pear/Text_LanguageDetect/zipball/bb9ff6f4970f686fac59081e916b456021fe7ba6",
- "reference": "bb9ff6f4970f686fac59081e916b456021fe7ba6",
- "shasum": ""
- },
- "require-dev": {
- "phpunit/phpunit": "*"
- },
- "suggest": {
- "ext-mbstring": "May require the mbstring PHP extension"
- },
- "time": "2017-03-02T16:14:08+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-0": {
- "Text": "./"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "include-path": [
- "./"
- ],
- "license": [
- "BSD-2-Clause"
- ],
- "authors": [
+ "name": "Monte Ohrt",
+ "email": "monte@ohrt.com"
+ },
{
- "name": "Nicholas Pisarro",
- "email": "taak@php.net",
- "role": "Lead"
- }
- ],
- "description": "Identify human languages from text samples",
- "homepage": "http://pear.php.net/package/Text_LanguageDetect"
- },
- {
- "name": "commerceguys/intl",
- "version": "v0.7.4",
- "version_normalized": "0.7.4.0",
- "source": {
- "type": "git",
- "url": "https://github.com/commerceguys/intl.git",
- "reference": "edfcfc26ed8505c4f6fcf862eb36dfda1af74b00"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/commerceguys/intl/zipball/edfcfc26ed8505c4f6fcf862eb36dfda1af74b00",
- "reference": "edfcfc26ed8505c4f6fcf862eb36dfda1af74b00",
- "shasum": ""
- },
- "require": {
- "php": ">=5.4.0"
- },
- "require-dev": {
- "mikey179/vfsstream": "1.*",
- "phpunit/phpunit": "~4.0"
- },
- "time": "2016-12-13T12:33:19+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "0.x-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "CommerceGuys\\Intl\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
+ "name": "Uwe Tews",
+ "email": "uwe.tews@googlemail.com"
+ },
{
- "name": "Bojan Zivanovic"
+ "name": "Rodney Rehm",
+ "email": "rodney.rehm@medialize.de"
}
],
- "description": "Internationalization library powered by CLDR data."
- },
- {
- "name": "lukasreschke/id3parser",
- "version": "v0.0.1",
- "version_normalized": "0.0.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/LukasReschke/ID3Parser.git",
- "reference": "cd3ba6e8918cc30883f01a3c24281cfe23b8877a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/LukasReschke/ID3Parser/zipball/cd3ba6e8918cc30883f01a3c24281cfe23b8877a",
- "reference": "cd3ba6e8918cc30883f01a3c24281cfe23b8877a",
- "shasum": ""
- },
- "require": {
- "php": ">=5.4.0"
- },
- "time": "2016-04-04T09:34:50+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "ID3Parser\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "GPL"
- ],
- "homepage": "https://github.com/LukasReschke/ID3Parser/",
+ "description": "Smarty - the compiling PHP template engine",
+ "homepage": "http://www.smarty.net",
"keywords": [
- "codecs",
- "php",
- "tags"
+ "templating"
]
}
]
diff --git a/vendor/league/html-to-markdown/CHANGELOG.md b/vendor/league/html-to-markdown/CHANGELOG.md
index 067864412..7a24130df 100644
--- a/vendor/league/html-to-markdown/CHANGELOG.md
+++ b/vendor/league/html-to-markdown/CHANGELOG.md
@@ -4,6 +4,17 @@ Updates should follow the [Keep a CHANGELOG](http://keepachangelog.com/) princip
## [Unreleased][unreleased]
+## [4.6.0]
+### Added
+ - Added support for ordered lists starting at numbers other than 1
+
+### Fixed
+ - Fixed overly-eager escaping of list-like text (#141)
+
+## [4.5.0]
+### Added
+ - Added configuration option for list item style (#135, #136)
+
## [4.4.1]
### Fixed
@@ -188,7 +199,9 @@ not ideally set, so this releases fixes that. Moving forwards this should reduce
### Added
- Initial release
-[unreleased]: https://github.com/thephpleague/html-to-markdown/compare/4.4.1...master
+[unreleased]: https://github.com/thephpleague/html-to-markdown/compare/4.6.0...master
+[4.6.0]: https://github.com/thephpleague/html-to-markdown/compare/4.5.0...4.6.0
+[4.5.0]: https://github.com/thephpleague/html-to-markdown/compare/4.4.1...4.5.0
[4.4.1]: https://github.com/thephpleague/html-to-markdown/compare/4.4.0...4.4.1
[4.4.0]: https://github.com/thephpleague/html-to-markdown/compare/4.3.1...4.4.0
[4.3.1]: https://github.com/thephpleague/html-to-markdown/compare/4.3.0...4.3.1
diff --git a/vendor/league/html-to-markdown/README.md b/vendor/league/html-to-markdown/README.md
index 8d75649d6..ab80541e6 100644
--- a/vendor/league/html-to-markdown/README.md
+++ b/vendor/league/html-to-markdown/README.md
@@ -13,7 +13,7 @@ HTML To Markdown for PHP
Library which converts HTML to [Markdown](http://daringfireball.net/projects/markdown/) for your sanity and convenience.
-**Requires**: PHP 5.3+
+**Requires**: PHP 5.3+ or PHP 7.0+
**Lead Developer**: [@colinodell](http://twitter.com/colinodell)
@@ -97,15 +97,15 @@ $markdown = $converter->convert($html); // $markdown now contains ""
### Style options
-Bold and italic tags are converted using the asterisk syntax by default. Change this to the underlined syntax using the `bold_style` and `italic_style` options.
+By default bold tags are converted using the asterisk syntax, and italic tags are converted using the underlined syntax. Change these by using the `bold_style` and `italic_style` options.
```php
$converter = new HtmlConverter();
-$converter->getConfig()->setOption('italic_style', '_');
+$converter->getConfig()->setOption('italic_style', '*');
$converter->getConfig()->setOption('bold_style', '__');
$html = '<em>Italic</em> and a <strong>bold</strong>';
-$markdown = $converter->convert($html); // $markdown now contains "_Italic_ and a __bold__"
+$markdown = $converter->convert($html); // $markdown now contains "*Italic* and a __bold__"
```
### Line break options
diff --git a/vendor/league/html-to-markdown/composer.json b/vendor/league/html-to-markdown/composer.json
index 58764bcb5..8482b767c 100644
--- a/vendor/league/html-to-markdown/composer.json
+++ b/vendor/league/html-to-markdown/composer.json
@@ -42,7 +42,7 @@
"bin": ["bin/html-to-markdown"],
"extra": {
"branch-alias": {
- "dev-master": "4.5-dev"
+ "dev-master": "4.7-dev"
}
}
}
diff --git a/vendor/league/html-to-markdown/src/Converter/ListItemConverter.php b/vendor/league/html-to-markdown/src/Converter/ListItemConverter.php
index dafec077c..f737b4e19 100644
--- a/vendor/league/html-to-markdown/src/Converter/ListItemConverter.php
+++ b/vendor/league/html-to-markdown/src/Converter/ListItemConverter.php
@@ -2,11 +2,26 @@
namespace League\HTMLToMarkdown\Converter;
+use League\HTMLToMarkdown\Configuration;
+use League\HTMLToMarkdown\ConfigurationAwareInterface;
use League\HTMLToMarkdown\ElementInterface;
-class ListItemConverter implements ConverterInterface
+class ListItemConverter implements ConverterInterface, ConfigurationAwareInterface
{
/**
+ * @var Configuration
+ */
+ protected $config;
+
+ /**
+ * @param Configuration $config
+ */
+ public function setConfig(Configuration $config)
+ {
+ $this->config = $config;
+ }
+
+ /**
* @param ElementInterface $element
*
* @return string
@@ -29,10 +44,15 @@ class ListItemConverter implements ConverterInterface
}
if ($list_type === 'ul') {
- return $prefix . '- ' . $value . "\n";
+ $list_item_style = $this->config->getOption('list_item_style', '-');
+ return $prefix . $list_item_style . ' ' . $value . "\n";
}
- $number = $element->getSiblingPosition();
+ if ($list_type === 'ol' && $start = $element->getParent()->getAttribute('start')) {
+ $number = $start + $element->getSiblingPosition() - 1;
+ } else {
+ $number = $element->getSiblingPosition();
+ }
return $prefix . $number . '. ' . $value . "\n";
}
diff --git a/vendor/league/html-to-markdown/src/Converter/ParagraphConverter.php b/vendor/league/html-to-markdown/src/Converter/ParagraphConverter.php
index cf852bfcf..7207b81a6 100644
--- a/vendor/league/html-to-markdown/src/Converter/ParagraphConverter.php
+++ b/vendor/league/html-to-markdown/src/Converter/ParagraphConverter.php
@@ -109,7 +109,8 @@ class ParagraphConverter implements ConverterInterface
{
$regExs = array(
// Match numbers ending on ')' or '.' that are at the beginning of the line.
- '/^[0-9]+(?=\)|\.)/'
+ // They will be escaped if immediately followed by a space or newline.
+ '/^[0-9]+(?=(\)|\.)( |$))/'
);
foreach ($regExs as $i) {
diff --git a/vendor/league/html-to-markdown/src/HtmlConverter.php b/vendor/league/html-to-markdown/src/HtmlConverter.php
index db3c29e1c..8d8936ec5 100644
--- a/vendor/league/html-to-markdown/src/HtmlConverter.php
+++ b/vendor/league/html-to-markdown/src/HtmlConverter.php
@@ -38,7 +38,8 @@ class HtmlConverter
'bold_style' => '**', // Set to '__' if you prefer the underlined style
'italic_style' => '_', // Set to '*' if you prefer the asterisk style
'remove_nodes' => '', // space-separated list of dom nodes that should be removed. example: 'meta style script'
- 'hard_break' => false,// Set to true to turn <br> into `\n` instead of ` \n`
+ 'hard_break' => false, // Set to true to turn <br> into `\n` instead of ` \n`
+ 'list_item_style' => '-', // Set the default character for each <li> in a <ul>. Can be '-', '*', or '+'
);
$this->environment = Environment::createDefaultEnvironment($defaults);
diff --git a/vendor/sabre/vobject/.travis.yml b/vendor/sabre/vobject/.travis.yml
index 3c5b32157..531ad5be4 100644
--- a/vendor/sabre/vobject/.travis.yml
+++ b/vendor/sabre/vobject/.travis.yml
@@ -4,15 +4,15 @@ php:
- 5.6
- 7.0
- 7.1
+ - 7.2
sudo: false
script:
- - phpunit --configuration tests/phpunit.xml
+ - ./bin/phpunit --configuration tests/phpunit.xml
- ./bin/sabre-cs-fixer fix . --dry-run --diff
before_script:
- - phpenv config-rm xdebug.ini; true
- composer install
cache:
diff --git a/vendor/sabre/vobject/CHANGELOG.md b/vendor/sabre/vobject/CHANGELOG.md
index c8f4cb4be..56a36f99c 100644
--- a/vendor/sabre/vobject/CHANGELOG.md
+++ b/vendor/sabre/vobject/CHANGELOG.md
@@ -1,6 +1,15 @@
ChangeLog
=========
+4.1.3 (2017-10-18)
+------------------
+
+* #363: Repair script and de-duplicate properties that are only allowed once,
+ but appear more than once. (@ddolcimascolo).
+* #377: Addes Pacific Time (US & Canada) as exchange timezone
+* #384: Added fallback for VCards without `FN`
+
+
4.1.2 (2016-12-15)
------------------
diff --git a/vendor/sabre/vobject/README.md b/vendor/sabre/vobject/README.md
index 0e37f1388..5030cf276 100644
--- a/vendor/sabre/vobject/README.md
+++ b/vendor/sabre/vobject/README.md
@@ -33,12 +33,12 @@ Build status
| branch | status |
| ------ | ------ |
-| master | [![Build Status](https://travis-ci.org/fruux/sabre-vobject.svg?branch=master)](https://travis-ci.org/fruux/sabre-vobject) |
-| 3.5 | [![Build Status](https://travis-ci.org/fruux/sabre-vobject.svg?branch=3.5)](https://travis-ci.org/fruux/sabre-vobject) |
-| 3.4 | [![Build Status](https://travis-ci.org/fruux/sabre-vobject.svg?branch=3.4)](https://travis-ci.org/fruux/sabre-vobject) |
-| 3.1 | [![Build Status](https://travis-ci.org/fruux/sabre-vobject.svg?branch=3.1)](https://travis-ci.org/fruux/sabre-vobject) |
-| 2.1 | [![Build Status](https://travis-ci.org/fruux/sabre-vobject.svg?branch=2.1)](https://travis-ci.org/fruux/sabre-vobject) |
-| 2.0 | [![Build Status](https://travis-ci.org/fruux/sabre-vobject.svg?branch=2.0)](https://travis-ci.org/fruux/sabre-vobject) |
+| master | [![Build Status](https://travis-ci.org/sabre-io/vobject.svg?branch=master)](https://travis-ci.org/sabre-io/vobject) |
+| 3.5 | [![Build Status](https://travis-ci.org/sabre-io/vobject.svg?branch=3.5)](https://travis-ci.org/sabre-io/vobject) |
+| 3.4 | [![Build Status](https://travis-ci.org/sabre-io/vobject.svg?branch=3.4)](https://travis-ci.org/sabre-io/vobject) |
+| 3.1 | [![Build Status](https://travis-ci.org/sabre-io/vobject.svg?branch=3.1)](https://travis-ci.org/sabre-io/vobject) |
+| 2.1 | [![Build Status](https://travis-ci.org/sabre-io/vobject.svg?branch=2.1)](https://travis-ci.org/sabre-io/vobject) |
+| 2.0 | [![Build Status](https://travis-ci.org/sabre-io/vobject.svg?branch=2.0)](https://travis-ci.org/sabre-io/vobject) |
diff --git a/vendor/sabre/vobject/bin/bench.php b/vendor/sabre/vobject/bin/bench.php
index 807b40777..807b40777 100755..100644
--- a/vendor/sabre/vobject/bin/bench.php
+++ b/vendor/sabre/vobject/bin/bench.php
diff --git a/vendor/sabre/vobject/bin/fetch_windows_zones.php b/vendor/sabre/vobject/bin/fetch_windows_zones.php
index 3f2a00f7a..3f2a00f7a 100755..100644
--- a/vendor/sabre/vobject/bin/fetch_windows_zones.php
+++ b/vendor/sabre/vobject/bin/fetch_windows_zones.php
diff --git a/vendor/sabre/vobject/bin/generateicalendardata.php b/vendor/sabre/vobject/bin/generateicalendardata.php
index a2df3c63a..a2df3c63a 100755..100644
--- a/vendor/sabre/vobject/bin/generateicalendardata.php
+++ b/vendor/sabre/vobject/bin/generateicalendardata.php
diff --git a/vendor/sabre/vobject/bin/mergeduplicates.php b/vendor/sabre/vobject/bin/mergeduplicates.php
index 076524d36..076524d36 100755..100644
--- a/vendor/sabre/vobject/bin/mergeduplicates.php
+++ b/vendor/sabre/vobject/bin/mergeduplicates.php
diff --git a/vendor/sabre/vobject/composer.json b/vendor/sabre/vobject/composer.json
index cfa4a712d..1f22f6de1 100644
--- a/vendor/sabre/vobject/composer.json
+++ b/vendor/sabre/vobject/composer.json
@@ -37,7 +37,7 @@
"sabre/xml" : ">=1.5 <3.0"
},
"require-dev" : {
- "phpunit/phpunit" : "*",
+ "phpunit/phpunit" : "> 4.8, <6.0.0",
"sabre/cs" : "^1.0.0"
},
diff --git a/vendor/sabre/vobject/lib/Component.php b/vendor/sabre/vobject/lib/Component.php
index 9a10ed3f8..ac87a10ec 100644
--- a/vendor/sabre/vobject/lib/Component.php
+++ b/vendor/sabre/vobject/lib/Component.php
@@ -662,8 +662,23 @@ class Component extends Node {
break;
case '?' :
if (isset($propertyCounters[$propName]) && $propertyCounters[$propName] > 1) {
+ $level = 3;
+
+ // We try to repair the same property appearing multiple times with the exact same value
+ // by removing the duplicates and keeping only one property
+ if ($options & self::REPAIR) {
+ $properties = array_unique($this->select($propName), SORT_REGULAR);
+
+ if (count($properties) === 1) {
+ $this->remove($propName);
+ $this->add($properties[0]);
+
+ $level = 1;
+ }
+ }
+
$messages[] = [
- 'level' => 3,
+ 'level' => $level,
'message' => $propName . ' MUST NOT appear more than once in a ' . $this->name . ' component',
'node' => $this,
];
diff --git a/vendor/sabre/vobject/lib/Component/VCard.php b/vendor/sabre/vobject/lib/Component/VCard.php
index 4f620de10..bca623d5e 100644
--- a/vendor/sabre/vobject/lib/Component/VCard.php
+++ b/vendor/sabre/vobject/lib/Component/VCard.php
@@ -295,6 +295,11 @@ class VCard extends VObject\Document {
} elseif (isset($this->ORG)) {
$this->FN = (string)$this->ORG;
$repaired = true;
+
+ // Otherwise, the EMAIL property may work
+ } elseif (isset($this->EMAIL)) {
+ $this->FN = (string)$this->EMAIL;
+ $repaired = true;
}
}
diff --git a/vendor/sabre/vobject/lib/Version.php b/vendor/sabre/vobject/lib/Version.php
index 346e2044d..24c51a604 100644
--- a/vendor/sabre/vobject/lib/Version.php
+++ b/vendor/sabre/vobject/lib/Version.php
@@ -14,6 +14,6 @@ class Version {
/**
* Full version number.
*/
- const VERSION = '4.1.2';
+ const VERSION = '4.1.3';
}
diff --git a/vendor/sabre/vobject/lib/timezonedata/exchangezones.php b/vendor/sabre/vobject/lib/timezonedata/exchangezones.php
index 38138354a..edba5b473 100644
--- a/vendor/sabre/vobject/lib/timezonedata/exchangezones.php
+++ b/vendor/sabre/vobject/lib/timezonedata/exchangezones.php
@@ -85,6 +85,7 @@ return [
'Saskatchewan' => 'America/Edmonton',
'Arizona' => 'America/Phoenix',
'Mountain Time (US & Canada)' => 'America/Denver', // Best guess
+ 'Pacific Time (US & Canada)' => 'America/Los_Angeles', // Best guess
'Pacific Time (US & Canada); Tijuana' => 'America/Los_Angeles', // Best guess
'Alaska' => 'America/Anchorage',
'Hawaii' => 'Pacific/Honolulu',
diff --git a/vendor/simplepie/simplepie/.travis.yml b/vendor/simplepie/simplepie/.travis.yml
new file mode 100644
index 000000000..83d90ad19
--- /dev/null
+++ b/vendor/simplepie/simplepie/.travis.yml
@@ -0,0 +1,21 @@
+sudo: false
+language: php
+matrix:
+ fast_finish: true
+ include:
+ - php: 5.4
+ - php: 5.5
+ - php: 5.6
+ - php: 7.0
+ - php: 7.1
+ - php: hhvm
+ sudo: true
+ dist: trusty
+ group: edge # until the next Travis CI update
+ allow_failures:
+ - php: hhvm
+ - php: 7.0
+ - php: 7.1
+branches:
+ except:
+ - one-dot-two
diff --git a/vendor/simplepie/simplepie/library/SimplePie.php b/vendor/simplepie/simplepie/library/SimplePie.php
index 428bfc068..34b6ca0c9 100755..100644
--- 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
+ * @version 1.5.1
* @copyright 2004-2017 Ryan Parman, Geoffrey Sneddon, Ryan McCue
* @author Ryan Parman
* @author Geoffrey Sneddon
@@ -50,7 +50,7 @@ define('SIMPLEPIE_NAME', 'SimplePie');
/**
* SimplePie Version
*/
-define('SIMPLEPIE_VERSION', '1.5');
+define('SIMPLEPIE_VERSION', '1.5.1');
/**
* SimplePie Build
@@ -810,7 +810,7 @@ class SimplePie
}
/**
- * Set the the default timeout for fetching remote feeds
+ * Set the default timeout for fetching remote feeds
*
* This allows you to change the maximum time the feed's server to respond
* and send the feed back.
@@ -1320,6 +1320,11 @@ class SimplePie
}
}
+ // The default sanitize class gets set in the constructor, check if it has
+ // changed.
+ if ($this->registry->get_class('Sanitize') !== 'SimplePie_Sanitize') {
+ $this->sanitize = $this->registry->create('Sanitize');
+ }
if (method_exists($this->sanitize, 'set_registry'))
{
$this->sanitize->set_registry($this->registry);
@@ -1644,33 +1649,18 @@ class SimplePie
try
{
$microformats = false;
- if (function_exists('Mf2\parse')) {
+ if (class_exists('DOMXpath') && function_exists('Mf2\parse')) {
+ $doc = new DOMDocument();
+ @$doc->loadHTML($file->body);
+ $xpath = new DOMXpath($doc);
// Check for both h-feed and h-entry, as both a feed with no entries
// and a list of entries without an h-feed wrapper are both valid.
- $position = 0;
- while ($position = strpos($file->body, 'h-feed', $position))
- {
- $start = $position < 200 ? 0 : $position - 200;
- $check = substr($file->body, $start, 400);
- if ($microformats = preg_match('/class="[^"]*h-feed/', $check))
- {
- break;
- }
- $position += 7;
- }
- $position = 0;
- while ($position = strpos($file->body, 'h-entry', $position))
- {
- $start = $position < 200 ? 0 : $position - 200;
- $check = substr($file->body, $start, 400);
- if ($microformats = preg_match('/class="[^"]*h-entry/', $check))
- {
- break;
- }
- $position += 7;
- }
+ $query = '//*[contains(concat(" ", @class, " "), " h-feed ") or '.
+ 'contains(concat(" ", @class, " "), " h-entry ")]';
+ $result = $xpath->query($query);
+ $microformats = $result->length !== 0;
}
- // Now also do feed discovery, but if an h-entry was found don't
+ // Now also do feed discovery, but if microformats were found don't
// overwrite the current value of file.
$discovered = $locate->find($this->autodiscovery,
$this->all_discovered_feeds);
@@ -2606,15 +2596,15 @@ class SimplePie
}
}
- if (isset($this->data['links'][$rel]))
+ if (isset($this->data['headers']['link']) &&
+ preg_match('/<([^>]+)>; rel='.preg_quote($rel).'/',
+ $this->data['headers']['link'], $match))
{
- return $this->data['links'][$rel];
+ return array($match[1]);
}
- else if (isset($this->data['headers']['link']) &&
- preg_match('/<([^>]+)>; rel='.preg_quote($rel).'/',
- $this->data['headers']['link'], $match))
+ else if (isset($this->data['links'][$rel]))
{
- return array($match[1]);
+ return $this->data['links'][$rel];
}
else
{
@@ -3155,7 +3145,7 @@ class SimplePie
if (($url = $this->get_link()) !== null)
{
- return 'http://g.etfv.co/' . urlencode($url);
+ return 'https://www.google.com/s2/favicons?domain=' . urlencode($url);
}
return false;
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Cache/Memcached.php b/vendor/simplepie/simplepie/library/SimplePie/Cache/Memcached.php
index 1f73b3890..1f73b3890 100755..100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Cache/Memcached.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Cache/Memcached.php
diff --git a/vendor/simplepie/simplepie/library/SimplePie/File.php b/vendor/simplepie/simplepie/library/SimplePie/File.php
index e670e05a0..2bb0a3b44 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/File.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/File.php
@@ -136,8 +136,7 @@ class SimplePie_File
$this->url = $info['url'];
}
curl_close($fp);
- $this->headers = explode("\r\n\r\n", $this->headers, $info['redirect_count'] + 1);
- $this->headers = array_pop($this->headers);
+ $this->headers = SimplePie_HTTP_Parser::prepareHeaders($this->headers, $info['redirect_count'] + 1);
$parser = new SimplePie_HTTP_Parser($this->headers);
if ($parser->parse())
{
diff --git a/vendor/simplepie/simplepie/library/SimplePie/HTTP/Parser.php b/vendor/simplepie/simplepie/library/SimplePie/HTTP/Parser.php
index 63ae1e03d..e982c206f 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/HTTP/Parser.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/HTTP/Parser.php
@@ -496,4 +496,25 @@ class SimplePie_HTTP_Parser
}
}
}
+
+ /**
+ * Prepare headers (take care of proxies headers)
+ *
+ * @param string $headers Raw headers
+ * @param integer $count Redirection count. Default to 1.
+ *
+ * @return string
+ */
+ static public function prepareHeaders($headers, $count = 1)
+ {
+ $data = explode("\r\n\r\n", $headers, $count);
+ $data = array_pop($data);
+ if (false !== stripos($data, "HTTP/1.0 200 Connection established\r\n\r\n")) {
+ $data = str_ireplace("HTTP/1.0 200 Connection established\r\n\r\n", '', $data);
+ }
+ if (false !== stripos($data, "HTTP/1.1 200 Connection established\r\n\r\n")) {
+ $data = str_ireplace("HTTP/1.1 200 Connection established\r\n\r\n", '', $data);
+ }
+ return $data;
+ }
}
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Item.php b/vendor/simplepie/simplepie/library/SimplePie/Item.php
index 00f4179bf..2083e7a92 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Item.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Item.php
@@ -477,15 +477,15 @@ class SimplePie_Item
$label = null;
if (isset($category['attribs']['']['term']))
{
- $term = $this->sanitize($category['attribs']['']['term'], SIMPLEPIE_CONSTRUCT_HTML);
+ $term = $this->sanitize($category['attribs']['']['term'], SIMPLEPIE_CONSTRUCT_TEXT);
}
if (isset($category['attribs']['']['scheme']))
{
- $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_HTML);
+ $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
}
if (isset($category['attribs']['']['label']))
{
- $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_HTML);
+ $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
}
$categories[] = $this->registry->create('Category', array($term, $scheme, $label, $type));
}
@@ -493,10 +493,10 @@ class SimplePie_Item
{
// This is really the label, but keep this as the term also for BC.
// Label will also work on retrieving because that falls back to term.
- $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_HTML);
+ $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
if (isset($category['attribs']['']['domain']))
{
- $scheme = $this->sanitize($category['attribs']['']['domain'], SIMPLEPIE_CONSTRUCT_HTML);
+ $scheme = $this->sanitize($category['attribs']['']['domain'], SIMPLEPIE_CONSTRUCT_TEXT);
}
else
{
@@ -508,11 +508,11 @@ class SimplePie_Item
$type = 'subject';
foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, $type) as $category)
{
- $categories[] = $this->registry->create('Category', array($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_HTML), null, null, $type));
+ $categories[] = $this->registry->create('Category', array($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null, $type));
}
foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, $type) as $category)
{
- $categories[] = $this->registry->create('Category', array($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_HTML), null, null, $type));
+ $categories[] = $this->registry->create('Category', array($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null, $type));
}
if (!empty($categories))
@@ -649,7 +649,7 @@ class SimplePie_Item
$email = null;
if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']))
{
- $name = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_HTML);
+ $name = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
}
if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']))
{
@@ -657,7 +657,7 @@ class SimplePie_Item
}
if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data']))
{
- $email = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_HTML);
+ $email = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
}
if ($name !== null || $email !== null || $uri !== null)
{
@@ -671,7 +671,7 @@ class SimplePie_Item
$email = null;
if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data']))
{
- $name = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_HTML);
+ $name = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
}
if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data']))
{
@@ -679,7 +679,7 @@ class SimplePie_Item
}
if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data']))
{
- $email = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_HTML);
+ $email = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
}
if ($name !== null || $email !== null || $url !== null)
{
@@ -688,19 +688,19 @@ class SimplePie_Item
}
if ($author = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'author'))
{
- $authors[] = $this->registry->create('Author', array(null, null, $this->sanitize($author[0]['data'], SIMPLEPIE_CONSTRUCT_HTML)));
+ $authors[] = $this->registry->create('Author', array(null, null, $this->sanitize($author[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT)));
}
foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'creator') as $author)
{
- $authors[] = $this->registry->create('Author', array($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_HTML), null, null));
+ $authors[] = $this->registry->create('Author', array($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));
}
foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'creator') as $author)
{
- $authors[] = $this->registry->create('Author', array($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_HTML), null, null));
+ $authors[] = $this->registry->create('Author', array($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));
}
foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'author') as $author)
{
- $authors[] = $this->registry->create('Author', array($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_HTML), null, null));
+ $authors[] = $this->registry->create('Author', array($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));
}
if (!empty($authors))
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Parser.php b/vendor/simplepie/simplepie/library/SimplePie/Parser.php
index 17139abe9..df1234023 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Parser.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Parser.php
@@ -76,26 +76,17 @@ class SimplePie_Parser
public function parse(&$data, $encoding, $url = '')
{
- if (function_exists('Mf2\parse')) {
+ if (class_exists('DOMXpath') && function_exists('Mf2\parse')) {
+ $doc = new DOMDocument();
+ @$doc->loadHTML($data);
+ $xpath = new DOMXpath($doc);
// Check for both h-feed and h-entry, as both a feed with no entries
// and a list of entries without an h-feed wrapper are both valid.
- $position = 0;
- while ($position = strpos($data, 'h-feed', $position)) {
- $start = $position < 200 ? 0 : $position - 200;
- $check = substr($data, $start, 400);
- if (preg_match('/class="[^"]*h-feed/', $check)) {
- return $this->parse_microformats($data, $url);
- }
- $position += 7;
- }
- $position = 0;
- while ($position = strpos($data, 'h-entry', $position)) {
- $start = $position < 200 ? 0 : $position - 200;
- $check = substr($data, $start, 400);
- if (preg_match('/class="[^"]*h-entry/', $check)) {
- return $this->parse_microformats($data, $url);
- }
- $position += 7;
+ $query = '//*[contains(concat(" ", @class, " "), " h-feed ") or '.
+ 'contains(concat(" ", @class, " "), " h-entry ")]';
+ $result = $xpath->query($query);
+ if ($result->length !== 0) {
+ return $this->parse_microformats($data, $url);
}
}
@@ -465,7 +456,7 @@ class SimplePie_Parser
$h_feed = $mf_item;
break;
}
- // Also look for an h-feed in the children of each top level item.
+ // Also look for h-feed or h-entry in the children of each top level item.
if (!isset($mf_item['children'][0]['type'])) continue;
if (in_array('h-feed', $mf_item['children'][0]['type'])) {
$h_feed = $mf_item['children'][0];
@@ -474,6 +465,13 @@ class SimplePie_Parser
if (in_array('h-card', $mf_item['type'])) $feed_author = $mf_item;
break;
}
+ else if (in_array('h-entry', $mf_item['children'][0]['type'])) {
+ $entries = $mf_item['children'];
+ // In this case the parent of the h-entry list may be an h-card, so use
+ // it as the feed_author.
+ if (in_array('h-card', $mf_item['type'])) $feed_author = $mf_item;
+ break;
+ }
}
if (isset($h_feed['children'])) {
$entries = $h_feed['children'];
@@ -485,7 +483,7 @@ class SimplePie_Parser
$feed_author = $mf['items'][0]['properties']['author'][0];
}
}
- else {
+ else if (count($entries) === 0) {
$entries = $mf['items'];
}
for ($i = 0; $i < count($entries); $i++) {
@@ -554,18 +552,21 @@ class SimplePie_Parser
$photo_list = array();
for ($j = 0; $j < count($entry['properties']['photo']); $j++) {
$photo = $entry['properties']['photo'][$j];
- if (strpos($content, $photo) === false) {
+ if (!empty($photo) && strpos($content, $photo) === false) {
$photo_list[] = $photo;
}
}
// When there's more than one photo show the first and use a lightbox.
+ // Need a permanent, unique name for the image set, but don't have
+ // anything unique except for the content itself, so use that.
$count = count($photo_list);
if ($count > 1) {
+ $image_set_id = preg_replace('/[[:^alnum:]]/', '', $photo_list[0]);
$description = '<p>';
for ($j = 0; $j < $count; $j++) {
$hidden = $j === 0 ? '' : 'class="hidden" ';
$description .= '<a href="'.$photo_list[$j].'" '.$hidden.
- 'data-lightbox="image-set-'.$i.'">'.
+ 'data-lightbox="image-set-'.$image_set_id.'">'.
'<img src="'.$photo_list[$j].'"></a>';
}
$description .= '<br><b>'.$count.' photos</b></p>';
@@ -583,10 +584,18 @@ class SimplePie_Parser
$item['title'] = array(array('data' => $title));
}
$description .= $entry['properties']['content'][0]['html'];
- if (isset($entry['properties']['in-reply-to'][0]['value'])) {
- $in_reply_to = $entry['properties']['in-reply-to'][0]['value'];
- $description .= '<p><span class="in-reply-to"></span> '.
- '<a href="'.$in_reply_to.'">'.$in_reply_to.'</a><p>';
+ if (isset($entry['properties']['in-reply-to'][0])) {
+ $in_reply_to = '';
+ if (is_string($entry['properties']['in-reply-to'][0])) {
+ $in_reply_to = $entry['properties']['in-reply-to'][0];
+ }
+ else if (isset($entry['properties']['in-reply-to'][0]['value'])) {
+ $in_reply_to = $entry['properties']['in-reply-to'][0]['value'];
+ }
+ if ($in_reply_to !== '') {
+ $description .= '<p><span class="in-reply-to"></span> '.
+ '<a href="'.$in_reply_to.'">'.$in_reply_to.'</a><p>';
+ }
}
$item['description'] = array(array('data' => $description));
}
@@ -627,7 +636,7 @@ class SimplePie_Parser
$image = array(array('child' => array('' => array('url' =>
array(array('data' => $feed_author['properties']['photo'][0]))))));
}
- // Use the a name given for the h-feed, or get the title from the html.
+ // Use the name given for the h-feed, or get the title from the html.
if ($feed_title !== '') {
$feed_title = array(array('data' => htmlspecialchars($feed_title)));
}
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Registry.php b/vendor/simplepie/simplepie/library/SimplePie/Registry.php
index e0909bb74..e0909bb74 100755..100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Registry.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Registry.php
diff --git a/vendor/smarty/smarty/COMPOSER_RELEASE_NOTES.txt b/vendor/smarty/smarty/COMPOSER_RELEASE_NOTES.txt
new file mode 100644
index 000000000..c943d9f2e
--- /dev/null
+++ b/vendor/smarty/smarty/COMPOSER_RELEASE_NOTES.txt
@@ -0,0 +1,29 @@
+
+
+Starting with Smarty 3.1.21 Composer has been configured to load the packages from github.
+
+*******************************************************************************
+* *
+* NOTE: Because of this change you must clear your local composer cache with *
+* the "composer clearcache" command *
+* *
+*******************************************************************************
+
+To get the latest stable version use
+ "require": {
+ "smarty/smarty": "~3.1"
+ }
+in your composer.json file.
+
+To get the trunk version use
+ "require": {
+ "smarty/smarty": "~3.1@dev"
+ }
+
+The "smarty/smarty" package will start at libs/.... subfolder.
+
+To retrieve the development and documentation folders add
+ "require-dev": {
+ "smarty/smarty-dev": "~3.1@dev"
+ }
+
diff --git a/vendor/smarty/smarty/INHERITANCE_RELEASE_NOTES.txt b/vendor/smarty/smarty/INHERITANCE_RELEASE_NOTES.txt
new file mode 100644
index 000000000..c415c4ccd
--- /dev/null
+++ b/vendor/smarty/smarty/INHERITANCE_RELEASE_NOTES.txt
@@ -0,0 +1,87 @@
+3.1.31-dev
+New tags for inheritance parent and child
+{block_parent} == {$smarty.block.parent}
+{block_child} == {$smarty.block.child}
+
+Since 3.1.28 you can mix inheritance by extends resource with the {extends} tag.
+A template called by extends resource can extend a subtemplate or chain buy the {extends} tag.
+Since 3.1.31 this feature can be turned off by setting the new Smarty property Smarty::$extends_recursion to false.
+
+
+3.1.28
+Starting with version 3.1.28 template inheritance is no longer a compile time process.
+All {block} tag parent/child relations are resolved at run time.
+This does resolve all known existing restrictions (see below).
+
+The $smarty::$inheritance_merge_compiled_includes property has been removed.
+Any access to it is ignored.
+
+New features:
+
+Any code outside root {block} tags in child templates is now executed but any output will be ignored.
+
+ {extends 'foo.tpl'}
+ {$bar = 'on'} // assigns variable $bar seen in parent templates
+ {block 'buh'}{/block}
+
+ {extends 'foo.tpl'}
+ {$bar} // the output of variable bar is ignored
+ {block 'buh'}{/block}
+
+{block} tags can be dynamically en/disabled by conditions.
+
+ {block 'root'}
+ {if $foo}
+ {block 'v1'}
+ ....
+ {/block}
+ {else}
+ {block 'v1'}
+ ....
+ {/block}
+ {/if}
+ {/block}
+
+{block} tags can have variable names.
+
+ {block $foo}
+ ....
+ {/block}
+
+Starting with 3.1.28 you can mix inheritance by extends resource with the {extends} tag.
+A template called by extends resource can extend a subtemplate or chain buy the {extends} tag.
+
+NOTE There is a BC break. If you used the extends resource {extends} tags have been ignored.
+
+THE FOLLOWING RESTRICTIONS ARE NO LONGER EXISTING:
+In Smarty 3.1 template inheritance is a compile time process. All the extending of {block} tags
+is done at compile time and the parent and child templates are compiled in a single compiled template.
+{include} subtemplate could also {block} tags. Such subtemplate could not compiled by it's own because
+it could be used in other context where the {block} extended with a different result. For that reasion
+the compiled code of {include} subtemplates gets also merged in compiled inheritance template.
+
+Merging the code into a single compile template has some drawbacks.
+1. You could not use variable file names in {include} Smarty would use the {include} of compilation time.
+2. You could not use individual compile_id in {include}
+3. Seperate caching of subtemplate was not possible
+4. Any change of the template directory structure between calls was not necessarily seen.
+
+Starting with 3.1.15 some of the above conditions got checked and resulted in an exception. It turned out
+that a couple of users did use some of above and now got exceptions.
+
+To resolve this starting with 3.1.16 there is a new configuration parameter $inheritance_merge_compiled_includes.
+For most backward compatibility its default setting is true.
+With this setting all {include} subtemplate will be merge into the compiled inheritance template, but the above cases
+could be rejected by exception.
+
+
+If $smarty->inheritance_merge_compiled_includes = false; {include} subtemplate will not be merged.
+You must now manually merge all {include} subtemplate which do contain {block} tags. This is done by setting the "inline" option.
+{include file='foo.bar' inline}
+
+1. In case of a variable file name like {include file=$foo inline} you must use the variable in a compile_id $smarty->compile_id = $foo;
+2. If you use individual compile_id in {include file='foo.tpl' compile_id=$bar inline} it must be used in the
+ global compile_id as well $smarty->compile_id = $bar;
+3. If call templates with different template_dir configurations and a parent could same named child template from different folders
+ you must make the folder name part of the compile_id.
+
diff --git a/library/Smarty/COPYING.lib b/vendor/smarty/smarty/LICENSE
index 02bbb60bc..fb8ca6c6f 100644
--- a/library/Smarty/COPYING.lib
+++ b/vendor/smarty/smarty/LICENSE
@@ -1,3 +1,17 @@
+Smarty: the PHP compiling template engine
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ See the GNU Lesser General Public License below for more details.
+
+
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
@@ -162,4 +176,4 @@ General Public License ever published by the Free Software Foundation.
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
-Library. \ No newline at end of file
+Library.
diff --git a/library/Smarty/NEW_FEATURES.txt b/vendor/smarty/smarty/NEW_FEATURES.txt
index 1a51c71d9..adbc1099b 100644
--- a/library/Smarty/NEW_FEATURES.txt
+++ b/vendor/smarty/smarty/NEW_FEATURES.txt
@@ -2,6 +2,114 @@
This file contains a brief description of new features which have been added to Smarty 3.1
+Smarty 3.1.31
+ New tags for inheritance parent and child
+ =========================================
+ {block_parent} == {$smarty.block.parent}
+ {block_child} == {$smarty.block.child}
+
+Smarty 3.1.30
+
+ Loop optimization {foreach} and {section}
+ =========================================
+ Smarty does optimize the {foreach} and {section} loops by removing code for not needed loop
+ properties.
+ The compiler collects needed properties by scanning the current template for $item@property,
+ $smarty.foreach.name.property and $smarty.section.name.property.
+ The compiler does not know if additional properties will be needed outside the current template scope.
+ Additional properties can be generated by adding them with the property attribute.
+
+ Example:
+ index.tpl
+ {foreach $from as $item properties=[iteration, index]}
+ {include 'sub.tpl'}
+ {$item.total}
+ {/foreach}
+
+ sub.tpl
+ {$item.index} {$item.iteration} {$item.total}
+
+ In above example code for the 'total' property is automatically generated as $item.total is used in
+ index.tpl. Code for 'iteration' and 'index' must be added with properties=[iteration, index].
+
+ New tag {make_nocache}
+ ======================
+ Syntax: {make_nocache $foo}
+
+ This tag makes a variable which does exists normally only while rendering the compiled template
+ available in the cached template for use in not cached expressions.
+
+ Expample:
+ {foreach from=$list item=item}
+ <li>{$item.name} {make_nocache $item}{if $current==$item.id} ACTIVE{/if}</li>
+ {/foreach}
+
+ The {foreach} loop is rendered while processing the compiled template, but $current is a nocache
+ variable. Normally the {if $current==$item.id} would fail as the $item variable is unkown in the
+ cached template. {make_nocache $item} does make the current $item value known in thee cached template.
+
+ {make_nocache} is ignored when caching is disabled or the variable does exists as nocache variable.
+
+ NOTE: if the variable value does contain objects these must have the __set_state method implemented.
+
+
+ Scope Attributes
+ ================
+ The scope handling has been updated to cover all cases of variable assignments in templates.
+
+ The tags {assign}, {append} direct assignments like {$foo = ...}, {$foo[...]= ...} support
+ the following optional scope attributes:
+ scope='parent' - the variable will be assigned in the current template and if the template
+ was included by {include} the calling template
+ scope='tpl_root' - the variable will be assigned in the outermost root template called by $smarty->display()
+ or $smarty->fetch() and is bubbled up all {include} sub-templates to the current template.
+ scope='smarty' - the variable will be assigned in the Smarty object and is bubbled up all {include} sub-templates
+ to the current template.
+ scope='global' - the variable will be assigned as Smarty object global variable and is bubbled up all {include}
+ sub-templates to the current template.
+ scope='root' - the variable will be assigned if a data object was used for variable definitions in the data
+ object or in the Smarty object otherwise and is bubbled up all {include} sub-templates to the
+ current template.
+ scope='local' - this scope has only a meaning if the tag is called within a template {function}.
+ The variable will be assigned in the local scope of the template function and the
+ template which did call the template function.
+
+
+ The {config_load} tag supports all of the above except the global scope.
+
+ The scope attribute can be used also with the {include} tag.
+ Supported scope are parent, tpl_root, smarty, global and root.
+ A scope used together with the {include} tag will cause that with some exceptions any variable
+ assignment within that sub-template will update/assign the variable in other scopes according
+ to the above rules. It does include also variables assigned by plugins, tags supporting the assign=foo
+ attribute and direct assignments in {if} and {while} like {if $foo=$bar}.
+ Excluded are the key and value variables of {foreach}, {for} loop variables , variables passed by attributes
+ in {include} and direct increments/decrements like {$foo++}, {$foo--}
+
+ Note: The scopes should be used only to the extend really need. If a variable value assigned in an included
+ sub-template should be returned to the calling sub-template just use {$foo='bar' scope='parent'}.
+ Use scopes only with variables for which it's realy needed. Avoid general scope settings with the
+ {include} tag as it can have a performance impact.
+
+ The {assign}, {append}, {config_load} and {$foo...=...} tags have a new option flag 'noscope'.Thi
+ Example: {$foo='bar' noscope} This will assign $foo only in the current template and any scope settings
+ at {include} is ignored.
+
+
+ Caching
+ =======
+ Caching does now observe the template_dir setting and will create separate cache files if required
+
+ Compiled Templates
+ ==================
+ The template_dir setting is now encoded in the uid of the file name.
+ The content of the compiled template may depend on the template_dir search order
+ {include .... inline} is used or $smarty->merge_compiled_includes is enabled
+
+ APC
+ ===
+ If APC is enabled force an apc_compile_file() when compiled or cached template was updated
+
Smarty 3.1.28
OPCACHE
@@ -32,7 +140,7 @@ Smarty 3.1.28
The template_dir array is searched in the order of the indices. (Could be used to change the default search order)
Example:
$smarty->display('[1],[0]foo.bar');
-
+
Filter support
==============
Optional filter names
@@ -47,7 +155,7 @@ Smarty 3.1.28
If you register multiple closures register each with a unique filter name.
- $smarty->registerFilter('pre', function($source) {return $source;}, 'closure_1');
- $smarty->registerFilter('pre', function($source) {return $source;}, 'closure_2');
-
+
Smarty 3.1.22
@@ -120,7 +228,7 @@ Smarty 3.1.22
Debugging
=========
The layout of the debug window has been changed for better readability
-
+
New class constants
Smarty::DEBUG_OFF
Smarty::DEBUG_ON
@@ -129,5 +237,3 @@ Smarty 3.1.22
Smarty::DEBUG_INDIVIDUAL will create for each display() and fetch() call an individual debug window.
- .
-
diff --git a/library/Smarty/README b/vendor/smarty/smarty/README
index 08b397c3f..08b397c3f 100644
--- a/library/Smarty/README
+++ b/vendor/smarty/smarty/README
diff --git a/vendor/smarty/smarty/README.md b/vendor/smarty/smarty/README.md
new file mode 100644
index 000000000..5783eb3e0
--- /dev/null
+++ b/vendor/smarty/smarty/README.md
@@ -0,0 +1,65 @@
+#Smarty 3 template engine
+##Distribution repository
+
+> Smarty 3.1.28 introduces run time template inheritance
+
+> Read the NEW_FEATURES and INHERITANCE_RELEASE_NOTES file for recent extensions to Smarty 3.1 functionality
+
+Smarty versions 3.1.11 or later are now on github and can be installed with Composer.
+
+
+The "smarty/smarty" package will start at libs/.... subfolder.
+
+To get the latest stable version of Smarty 3.1 use
+
+```json
+"require": {
+ "smarty/smarty": "~3.1"
+}
+```
+
+in your composer.json file.
+
+To get the trunk version use
+
+```json
+"require": {
+ "smarty/smarty": "~3.1@dev"
+}
+```
+
+For a specific version use something like
+
+```json
+"require": {
+ "smarty/smarty": "3.1.19"
+}
+```
+
+PHPUnit test can be installed by corresponding composer entries like
+
+```json
+"require": {
+ "smarty/smarty-phpunit": "3.1.19"
+}
+```
+
+Similar applies for the lexer/parser generator
+
+```json
+"require": {
+ "smarty/smarty-lexer": "3.1.19"
+}
+```
+
+Or you could use
+
+```json
+"require": {
+ "smarty/smarty-dev": "3.1.19"
+}
+```
+
+Which is a wrapper to install all 3 packages
+
+Composer can also be used for Smarty2 versions 2.6.24 to 2.6.28
diff --git a/vendor/smarty/smarty/SMARTY_2_BC_NOTES.txt b/vendor/smarty/smarty/SMARTY_2_BC_NOTES.txt
new file mode 100644
index 000000000..79a2cb1b6
--- /dev/null
+++ b/vendor/smarty/smarty/SMARTY_2_BC_NOTES.txt
@@ -0,0 +1,109 @@
+= Known incompatibilities with Smarty 2 =
+
+== Syntax ==
+
+Smarty 3 API has a new syntax. Much of the Smarty 2 syntax is supported
+by a wrapper but deprecated. See the README that comes with Smarty 3 for more
+information.
+
+The {$array|@mod} syntax has always been a bit confusing, where an "@" is required
+to apply a modifier to an array instead of the individual elements. Normally you
+always want the modifier to apply to the variable regardless of its type. In Smarty 3,
+{$array|mod} and {$array|@mod} behave identical. It is safe to drop the "@" and the
+modifier will still apply to the array. If you really want the modifier to apply to
+each array element, you must loop the array in-template, or use a custom modifier that
+supports array iteration. Most smarty functions already escape values where necessary
+such as {html_options}
+
+== PHP Version ==
+Smarty 3 is PHP 5 only. It will not work with PHP 4.
+
+== {php} Tag ==
+The {php} tag is disabled by default. The use of {php} tags is
+deprecated. It can be enabled with $smarty->allow_php_tag=true.
+
+But if you scatter PHP code which belongs together into several
+{php} tags it may not work any longer.
+
+== Delimiters and whitespace ==
+Delimiters surrounded by whitespace are no longer treated as Smarty tags.
+Therefore, { foo } will not compile as a tag, you must use {foo}. This change
+Makes Javascript/CSS easier to work with, eliminating the need for {literal}.
+This can be disabled by setting $smarty->auto_literal = false;
+
+== Unquoted Strings ==
+Smarty 2 was a bit more forgiving (and ambiguous) when it comes to unquoted strings
+in parameters. Smarty3 is more restrictive. You can still pass strings without quotes
+so long as they contain no special characters. (anything outside of A-Za-z0-9_)
+
+For example filename strings must be quoted
+<source lang="smarty">
+{include file='path/foo.tpl'}
+</source>
+
+== Extending the Smarty class ==
+Smarty 3 makes use of the __construct method for initialization. If you are extending
+the Smarty class, its constructor is not called implicitly if the your child class defines
+its own constructor. In order to run Smarty's constructor, a call to parent::__construct()
+within your child constructor is required.
+
+<source lang="php">
+class MySmarty extends Smarty {
+ function __construct() {
+ parent::__construct();
+
+ // your initialization code goes here
+
+ }
+}
+</source>
+
+== Autoloader ==
+Smarty 3 does register its own autoloader with spl_autoload_register. If your code has
+an existing __autoload function then this function must be explicitly registered on
+the __autoload stack. See http://us3.php.net/manual/en/function.spl-autoload-register.php
+for further details.
+
+== Plugin Filenames ==
+Smarty 3 optionally supports the PHP spl_autoloader. The autoloader requires filenames
+to be lower case. Because of this, Smarty plugin file names must also be lowercase.
+In Smarty 2, mixed case file names did work.
+
+== Scope of Special Smarty Variables ==
+In Smarty 2 the special Smarty variables $smarty.section... and $smarty.foreach...
+had global scope. If you had loops with the same name in subtemplates you could accidentally
+overwrite values of parent template.
+
+In Smarty 3 these special Smarty variable have only local scope in the template which
+is defining the loop. If you need their value in a subtemplate you have to pass them
+as parameter.
+<source lang="smarty">
+{include file='path/foo.tpl' index=$smarty.section.foo.index}
+</source>
+
+== SMARTY_RESOURCE_CHAR_SET ==
+Smarty 3 sets the constant SMARTY_RESOURCE_CHAR_SET to utf-8 as default template charset.
+This is now used also on modifiers like escape as default charset. If your templates use
+other charsets make sure that you define the constant accordingly. Otherwise you may not
+get any output.
+
+== newline at {if} tags ==
+A \n was added to the compiled code of the {if},{else},{elseif},{/if} tags to get output of newlines as expected by the template source.
+If one of the {if} tags is at the line end you will now get a newline in the HTML output.
+
+== trigger_error() ==
+The API function trigger_error() has been removed because it did just map to PHP trigger_error.
+However it's still included in the Smarty2 API wrapper.
+
+== Smarty constants ==
+The constants
+SMARTY_PHP_PASSTHRU
+SMARTY_PHP_QUOTE
+SMARTY_PHP_REMOVE
+SMARTY_PHP_ALLOW
+have been replaced with class constants
+Smarty::PHP_PASSTHRU
+Smarty::PHP_QUOTE
+Smarty::PHP_REMOVE
+Smarty::PHP_ALLOW
+
diff --git a/vendor/smarty/smarty/SMARTY_3.0_BC_NOTES.txt b/vendor/smarty/smarty/SMARTY_3.0_BC_NOTES.txt
new file mode 100644
index 000000000..fd8b540c2
--- /dev/null
+++ b/vendor/smarty/smarty/SMARTY_3.0_BC_NOTES.txt
@@ -0,0 +1,24 @@
+== Smarty2 backward compatibility ==
+All Smarty2 specific API functions and deprecated functionallity has been moved
+to the SmartyBC class.
+
+== {php} Tag ==
+The {php} tag is no longer available in the standard Smarty calls.
+The use of {php} tags is deprecated and only available in the SmartyBC class.
+
+== {include_php} Tag ==
+The {include_php} tag is no longer available in the standard Smarty calls.
+The use of {include_php} tags is deprecated and only available in the SmartyBC class.
+
+== php template resource ==
+The support of the php template resource is removed.
+
+== $cache_dir, $compile_dir, $config_dir, $template_dir access ==
+The mentioned properties can't be accessed directly any longer. You must use
+corresponding getter/setters like addConfigDir(), setConfigDir(), getConfigDir()
+
+== obsolete Smarty class properties ==
+The following no longer used properties are removed:
+$allow_php_tag
+$allow_php_template
+$deprecation_notices \ No newline at end of file
diff --git a/vendor/smarty/smarty/SMARTY_3.1_NOTES.txt b/vendor/smarty/smarty/SMARTY_3.1_NOTES.txt
new file mode 100644
index 000000000..57709f0d7
--- /dev/null
+++ b/vendor/smarty/smarty/SMARTY_3.1_NOTES.txt
@@ -0,0 +1,306 @@
+Smarty 3.1 Notes
+================
+
+Smarty 3.1 is a departure from 2.0 compatibility. Most notably, all
+backward compatibility has been moved to a separate class file named
+SmartyBC.class.php. If you require compatibility with 2.0, you will
+need to use this class.
+
+Some differences from 3.0 are also present. 3.1 begins the journey of
+requiring setters/getters for property access. So far this is only
+implemented on the five directory properties: template_dir,
+plugins_dir, configs_dir, compile_dir and cache_dir. These properties
+are now protected, it is required to use the setters/getters instead.
+That said, direct property access will still work, however slightly
+slower since they will now fall through __set() and __get() and in
+turn passed through the setter/getter methods. 3.2 will exhibit a full
+list of setter/getter methods for all (currently) public properties,
+so code-completion in your IDE will work as expected.
+
+There is absolutely no PHP allowed in templates any more. All
+deprecated features of Smarty 2.0 are gone. Again, use the SmartyBC
+class if you need any backward compatibility.
+
+Internal Changes
+
+ Full UTF-8 Compatibility
+
+The plugins shipped with Smarty 3.1 have been rewritten to fully
+support UTF-8 strings if Multibyte String is available. Without
+MBString UTF-8 cannot be handled properly. For those rare cases where
+templates themselves have to juggle encodings, the new modifiers
+to_charset and from_charset may come in handy.
+
+ Plugin API and Performance
+
+All Plugins (modifiers, functions, blocks, resources,
+default_template_handlers, etc) are now receiving the
+Smarty_Internal_Template instance, where they were supplied with the
+Smarty instance in Smarty 3.0. *. As The Smarty_Internal_Template
+mimics the behavior of Smarty, this API simplification should not
+require any changes to custom plugins.
+
+The plugins shipped with Smarty 3.1 have been rewritten for better
+performance. Most notably {html_select_date} and {html_select_time}
+have been improved vastly. Performance aside, plugins have also been
+reviewed and generalized in their API. {html_select_date} and
+{html_select_time} now share almost all available options.
+
+The escape modifier now knows the $double_encode option, which will
+prevent entities from being encoded again.
+
+The capitalize modifier now know the $lc_rest option, which makes sure
+all letters following a captial letter are lower-cased.
+
+The count_sentences modifier now accepts (.?!) as
+legitimate endings of a sentence - previously only (.) was
+accepted
+
+The new unescape modifier is there to reverse the effects of the
+escape modifier. This applies to the escape formats html, htmlall and
+entity.
+
+ default_template_handler_func
+
+The invocation of $smarty->$default_template_handler_func had to be
+altered. Instead of a Smarty_Internal_Template, the fifth argument is
+now provided with the Smarty instance. New footprint:
+
+
+/**
+ * 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 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;
+ }
+}
+
+ Stuff done to the compiler
+
+Many performance improvements have happened internally. One notable
+improvement is that all compiled templates are now handled as PHP
+functions. This speeds up repeated templates tremendously, as each one
+calls an (in-memory) PHP function instead of performing another file
+include/scan.
+
+New Features
+
+ Template syntax
+
+ {block}..{/block}
+
+The {block} tag has a new hide option flag. It does suppress the block
+content if no corresponding child block exists.
+EXAMPLE:
+parent.tpl
+{block name=body hide} child content "{$smarty.block.child}" was
+inserted {block}
+In the above example the whole block will be suppressed if no child
+block "body" is existing.
+
+ {setfilter}..{/setfilter}
+
+The new {setfilter} block tag allows the definition of filters which
+run on variable output.
+SYNTAX:
+{setfilter filter1|filter2|filter3....}
+Smarty3 will lookup up matching filters in the following search order:
+1. varibale filter plugin in plugins_dir.
+2. a valid modifier. A modifier specification will also accept
+additional parameter like filter2:'foo'
+3. a PHP function
+{/setfilter} will turn previous filter setting off again.
+{setfilter} tags can be nested.
+EXAMPLE:
+{setfilter filter1}
+ {$foo}
+ {setfilter filter2}
+ {$bar}
+ {/setfilter}
+ {$buh}
+{/setfilter}
+{$blar}
+In the above example filter1 will run on the output of $foo, filter2
+on $bar, filter1 again on $buh and no filter on $blar.
+NOTES:
+- {$foo nofilter} will suppress the filters
+- These filters will run in addition to filters defined by
+registerFilter('variable',...), autoLoadFilter('variable',...) and
+defined default modifier.
+- {setfilter} will effect only the current template, not included
+subtemplates.
+
+ Resource API
+
+Smarty 3.1 features a new approach to resource management. The
+Smarty_Resource API allows simple, yet powerful integration of custom
+resources for templates and configuration files. It offers simple
+functions for loading data from a custom resource (e.g. database) as
+well as define new template types adhering to the special
+non-compiling (e,g, plain php) and non-compile-caching (e.g. eval:
+resource type) resources.
+
+See demo/plugins/resource.mysql.php for an example custom database
+resource.
+
+Note that old-fashioned registration of callbacks for resource
+management has been deprecated but is still possible with SmartyBC.
+
+ CacheResource API
+
+In line with the Resource API, the CacheResource API offers a more
+comfortable handling of output-cache data. With the
+Smarty_CacheResource_Custom accessing databases is made simple. With
+the introduction of Smarty_CacheResource_KeyValueStore the
+implementation of resources like memcache or APC became a no-brainer;
+simple hash-based storage systems are now supporting hierarchical
+output-caches.
+
+See demo/plugins/cacheresource.mysql.php for an example custom
+database CacheResource.
+See demo/plugins/cacheresource.memcache.php for an example custom
+memcache CacheResource using the KeyValueStore helper.
+
+Note that old-fashioned registration of $cache_handler is not possible
+anymore. As the functionality had not been ported to Smarty 3.0.x
+properly, it has been dropped from 3.1 completely.
+
+Locking facilities have been implemented to avoid concurrent cache
+generation. Enable cache locking by setting
+$smarty->cache_locking = true;
+
+ Relative Paths in Templates (File-Resource)
+
+As of Smarty 3.1 {include file="../foo.tpl"} and {include
+file="./foo.tpl"} will resolve relative to the template they're in.
+Relative paths are available with {include file="..."} and
+{extends file="..."}. As $smarty->fetch('../foo.tpl') and
+$smarty->fetch('./foo.tpl') cannot be relative to a template, an
+exception is thrown.
+
+ Addressing a specific $template_dir
+
+Smarty 3.1 introduces the $template_dir index notation.
+$smarty->fetch('[foo]bar.tpl') and {include file="[foo]bar.tpl"}
+require the template bar.tpl to be loaded from $template_dir['foo'];
+Smarty::setTemplateDir() and Smarty::addTemplateDir() offer ways to
+define indexes along with the actual directories.
+
+ Mixing Resources in extends-Resource
+
+Taking the php extends: template resource one step further, it is now
+possible to mix resources within an extends: call like
+$smarty->fetch("extends:file:foo.tpl|db:bar.tpl");
+
+To make eval: and string: resources available to the inheritance
+chain, eval:base64:TPL_STRING and eval:urlencode:TPL_STRING have been
+introduced. Supplying the base64 or urlencode flags will trigger
+decoding the TPL_STRING in with either base64_decode() or urldecode().
+
+ extends-Resource in template inheritance
+
+Template based inheritance may now inherit from php's extends:
+resource like {extends file="extends:foo.tpl|db:bar.tpl"}.
+
+ New Smarty property escape_html
+
+$smarty->escape_html = true will autoescape all template variable
+output by calling htmlspecialchars({$output}, ENT_QUOTES,
+SMARTY_RESOURCE_CHAR_SET).
+NOTE:
+This is a compile time option. If you change the setting you must make
+sure that the templates get recompiled.
+
+ New option at Smarty property compile_check
+
+The automatic recompilation of modified templates can now be
+controlled by the following settings:
+$smarty->compile_check = COMPILECHECK_OFF (false) - template files
+will not be checked
+$smarty->compile_check = COMPILECHECK_ON (true) - template files will
+always be checked
+$smarty->compile_check = COMPILECHECK_CACHEMISS - template files will
+be checked if caching is enabled and there is no existing cache file
+or it has expired
+
+ Automatic recompilation on Smarty version change
+
+Templates will now be automatically recompiled on Smarty version
+changes to avoide incompatibillities in the compiled code. Compiled
+template checked against the current setting of the SMARTY_VERSION
+constant.
+
+ default_config_handler_func()
+
+Analogous to the default_template_handler_func()
+default_config_handler_func() has been introduced.
+
+ default_plugin_handler_func()
+
+An optional default_plugin_handler_func() can be defined which gets called
+by the compiler on tags which can't be resolved internally or by plugins.
+The default_plugin_handler() can map tags to plugins on the fly.
+
+New getters/setters
+
+The following setters/getters will be part of the official
+documentation, and will be strongly recommended. Direct property
+access will still work for the foreseeable future... it will be
+transparently routed through the setters/getters, and consequently a
+bit slower.
+
+array|string getTemplateDir( [string $index] )
+replaces $smarty->template_dir; and $smarty->template_dir[$index];
+Smarty setTemplateDir( array|string $path )
+replaces $smarty->template_dir = "foo"; and $smarty->template_dir =
+array("foo", "bar");
+Smarty addTemplateDir( array|string $path, [string $index])
+replaces $smarty->template_dir[] = "bar"; and
+$smarty->template_dir[$index] = "bar";
+
+array|string getConfigDir( [string $index] )
+replaces $smarty->config_dir; and $smarty->config_dir[$index];
+Smarty setConfigDir( array|string $path )
+replaces $smarty->config_dir = "foo"; and $smarty->config_dir =
+array("foo", "bar");
+Smarty addConfigDir( array|string $path, [string $index])
+replaces $smarty->config_dir[] = "bar"; and
+$smarty->config_dir[$index] = "bar";
+
+array getPluginsDir()
+replaces $smarty->plugins_dir;
+Smarty setPluginsDir( array|string $path )
+replaces $smarty->plugins_dir = "foo";
+Smarty addPluginsDir( array|string $path )
+replaces $smarty->plugins_dir[] = "bar";
+
+string getCompileDir()
+replaces $smarty->compile_dir;
+Smarty setCompileDir( string $path )
+replaces $smarty->compile_dir = "foo";
+
+string getCacheDir()
+replaces $smarty->cache_dir;
+Smarty setCacheDir( string $path )
+replaces $smarty->cache_dir;
diff --git a/library/Smarty/change_log.txt b/vendor/smarty/smarty/change_log.txt
index dadc5d17d..1d42b0a76 100644
--- a/library/Smarty/change_log.txt
+++ b/vendor/smarty/smarty/change_log.txt
@@ -1,11 +1,348 @@
- ===== 3.1.29 ===== (21.12.2015)
+===== 3.1.31 ===== (14.12.2016)
+ 23.11.2016
+ - move template object cache into static variables
+
+ 19.11.2016
+ - bugfix inheritance root child templates containing nested {block}{/block} could call sub-bock content from parent
+ template https://github.com/smarty-php/smarty/issues/317
+ - change version checking
+
+ 11.11.2016
+ - bugfix when Smarty is using a cached template object on Smarty::fetch() or Smarty::isCached() the inheritance data
+ must be removed https://github.com/smarty-php/smarty/issues/312
+ - smaller speed optimization
+
+ 08.11.2016
+ - add bootstrap file to load and register Smarty_Autoloader. Change composer.json to make it known to composer
+
+ 07.11.2016
+ - optimization of lexer speed https://github.com/smarty-php/smarty/issues/311
+
+ 27.10.2016
+ - bugfix template function definitions array has not been cached between Smarty::fetch() and Smarty::display() calls
+ https://github.com/smarty-php/smarty/issues/301
+
+ 23.10.2016
+ - improvement/bugfix when Smarty::fetch() is called on a template object the inheritance and tplFunctions property
+ should be copied to the called template object
+
+ 21.10.2016
+ - bugfix for compile locking touched timestamp of old compiled file was not restored on compilation error https://github.com/smarty-php/smarty/issues/308
+
+ 20.10.2016
+ - bugfix nocache code was not removed in cache file when subtemplate did contain PHP short tags in text but no other
+ nocache code https://github.com/smarty-php/smarty/issues/300
+
+ 19.10.2016
+ - bugfix {make_nocache $var} did fail when variable value did contain '\' https://github.com/smarty-php/smarty/issues/305
+ - bugfix {make_nocache $var} remove spaces from variable value https://github.com/smarty-php/smarty/issues/304
+
+ 12.10.2016
+ - bugfix {include} with template names including variable or constants could fail after bugfix from
+ 28.09.2016 https://github.com/smarty-php/smarty/issues/302
+
+ 08.10.2016
+ - optimization move runtime extension for template functions into Smarty objects
+
+ 29.09.2016
+ - improvement new Smarty::$extends_recursion property to disable execution of {extends} in templates called by extends resource
+ https://github.com/smarty-php/smarty/issues/296
+
+ 28.09.2016
+ - bugfix the generated code for calling a subtemplate must pass the template resource name in single quotes https://github.com/smarty-php/smarty/issues/299
+ - bugfix nocache hash was not removed for <?xml ?> tags in subtemplates https://github.com/smarty-php/smarty/issues/300
+
+ 27.09.2016
+ - bugfix when Smarty does use an internally cached template object on Smarty::fetch() calls
+ the template and config variables must be cleared https://github.com/smarty-php/smarty/issues/297
+
+ 20.09.2016
+ - bugfix some $smarty special template variables are no longer accessed as real variable.
+ using them on calls like {if isset($smarty.foo)} or {if empty($smarty.foo)} will fail
+ http://www.smarty.net/forums/viewtopic.php?t=26222
+ - temporary fix for https://github.com/smarty-php/smarty/issues/293 main reason still under investigation
+ - improvement new tags {block_parent} {block_child} in template inheritance
+
+ 19.09.2016
+ - optimization clear compiled and cached folder completely on detected version change
+ - cleanup convert cache resource file method clear into runtime extension
+
+ 15.09.2016
+ - bugfix assigning a variable in if condition by function like {if $value = array_shift($array)} the function got called twice https://github.com/smarty-php/smarty/issues/291
+ - bugfix function plugins called with assign attribute like {foo assign='bar'} did not output returned content because
+ because assumption was made that it was assigned to a variable https://github.com/smarty-php/smarty/issues/292
+ - bugfix calling $smarty->isCached() on a not existing cache file with $smarty->cache_locking = true; could cause a 10 second delay http://www.smarty.net/forums/viewtopic.php?t=26282
+ - improvement make Smarty::clearCompiledTemplate() on custom resource independent from changes of templateId computation
+
+ 11.09.2016
+ - improvement {math} misleading E_USER_WARNING messages when parameter value = null https://github.com/smarty-php/smarty/issues/288
+ - improvement move often used code snippets into methods
+ - performance Smarty::configLoad() did load unneeded template source object
+
+ 09.09.2016
+ - bugfix/optimization {foreach} did not execute the {foreachelse} when iterating empty objects https://github.com/smarty-php/smarty/pull/287
+ - bugfix {foreach} must keep the @properties when restoring a saved $item variable as the properties might be used outside {foreach} https://github.com/smarty-php/smarty/issues/267
+ - improvement {foreach} observe {break n} and {continue n} nesting levels when restoring saved $item and $key variables
+
+ 08.09.2016
+ - bugfix implement wrapper for removed method getConfigVariable() https://github.com/smarty-php/smarty/issues/286
+
+ 07.09.2016
+ - bugfix using nocache like attribute with value true like {plugin nocache=true} did not work https://github.com/smarty-php/smarty/issues/285
+ - bugfix uppercase TRUE, FALSE and NULL did not work when security was enabled https://github.com/smarty-php/smarty/issues/282
+ - bugfix when {foreach} was looping over an object the total property like {$item@total} did always return 1 https://github.com/smarty-php/smarty/issues/281
+ - bugfix {capture}{/capture} did add in 3.1.30 unintended additional blank lines https://github.com/smarty-php/smarty/issues/268
+
+ 01.09.2016
+ - performance require_once should be called only once for shared plugins https://github.com/smarty-php/smarty/issues/280
+
+ 26.08.2016
+ - bugfix change of 23.08.2016 failed on linux when use_include_path = true
+
+ 23.08.2016
+ - bugfix remove constant DS as shortcut for DIRECTORY_SEPARATOR as the user may have defined it to something else https://github.com/smarty-php/smarty/issues/277
+
+ 20.08-2016
+ - bugfix {config_load ... scope="global"} shall not throw an arror but fallback to scope="smarty" https://github.com/smarty-php/smarty/issues/274
+ - bugfix {make_nocache} failed when using composer autoloader https://github.com/smarty-php/smarty/issues/275
+
+ 14.08.2016
+ - bugfix $smarty_>debugging = true; did E_NOTICE messages when {eval} tag was used https://github.com/smarty-php/smarty/issues/266
+ - bugfix Class 'Smarty_Internal_Runtime_ValidateCompiled' not found when upgrading from some older Smarty versions with existing
+ compiled or cached template files https://github.com/smarty-php/smarty/issues/269
+ - optimization remove unneeded call to update acopes when {assign} scope and template scope was local (default)
+
+===== 3.1.30 ===== (07.08.2016)
+
+ 07.08.2016
+ - bugfix update of 04.08.2016 was incomplete
+
+ 05.08.2016
+ - bugfix compiling of templates failed when the Smarty delimiter did contain '/' https://github.com/smarty-php/smarty/issues/264
+ - updated error checking at template and config default handler
+
+ 04.08.2016
+ - improvement move template function source parameter into extension
+
+ 26.07.2016
+ - optimization unneeded loading of compiled resource
+
+ 24.07.2016
+ - regression this->addPluginsDir('/abs/path/to/dir') adding absolute path without trailing '/' did fail https://github.com/smarty-php/smarty/issues/260
+
+ 23.07.2016
+ - bugfix setTemplateDir('/') and setTemplateDir('') did create wrong absolute filepath https://github.com/smarty-php/smarty/issues/245
+ - optimization of filepath normalization
+ - improvement remove double function declaration in plugin shared.escape_special_cars.php https://github.com/smarty-php/smarty/issues/229
+
+ 19.07.2016
+ - bugfix multiple {include} with relative filepath within {block}{/block} could fail https://github.com/smarty-php/smarty/issues/246
+ - bugfix {math} shell injection vulnerability patch provided by Tim Weber
+
+ 18.07.2016
+ - bugfix {foreach} if key variable and item@key attribute have been used both the key variable was not updated https://github.com/smarty-php/smarty/issues/254
+ - bugfix modifier on plugins like {plugin|modifier ... } did fail when the plugin does return an array https://github.com/smarty-php/smarty/issues/228
+ - bugfix avoid opcache_invalidate to result in ErrorException when opcache.restrict_api is not empty https://github.com/smarty-php/smarty/pull/244
+ - bugfix multiple {include} with relative filepath within {block}{/block} could fail https://github.com/smarty-php/smarty/issues/246
+
+ 14.07.2016
+ - bugfix wrong parameter on compileAllTemplates() and compileAllConfig() https://github.com/smarty-php/smarty/issues/231
+
+ 13.07.2016
+ - bugfix PHP 7 compatibility on registered compiler plugins https://github.com/smarty-php/smarty/issues/241
+ - update testInstall() https://github.com/smarty-php/smarty/issues/248https://github.com/smarty-php/smarty/issues/248
+ - bugfix enable debugging could fail when template objects did already exists https://github.com/smarty-php/smarty/issues/237
+ - bugfix template function data should be merged when loading subtemplate https://github.com/smarty-php/smarty/issues/240
+ - bugfix wrong parameter on compileAllTemplates() https://github.com/smarty-php/smarty/issues/231
+
+ 12.07.2016
+ - bugfix {foreach} item variable must be created also on empty from array https://github.com/smarty-php/smarty/issues/238 and https://github.com/smarty-php/smarty/issues/239
+ - bugfix enableSecurity() must init cache flags https://github.com/smarty-php/smarty/issues/247
+
+ 27.05.2016
+ - bugfix/improvement of compileAlltemplates() follow symlinks in template folder (PHP >= 5.3.1) https://github.com/smarty-php/smarty/issues/224
+ clear internal cache and expension handler for each template to avoid possible conflicts https://github.com/smarty-php/smarty/issues/231
+
+ 16.05.2016
+ - optimization {foreach} compiler and processing
+ - broken PHP 5.3 and 5.4 compatibility
+
+ 15.05.2016
+ - optimization and cleanup of resource code
+
+ 10.05.2016
+ - optimization of inheritance processing
+
+ 07.05.2016
+ -bugfix Only variables should be assigned by reference https://github.com/smarty-php/smarty/issues/227
+
+ 02.05.2016
+ - enhancement {block} tag names can now be variable https://github.com/smarty-php/smarty/issues/221
+
+ 01.05.2016
+ - bugfix same relative filepath at {include} called from template in different folders could display wrong sub-template
+
+ 29.04.2016
+ - bugfix {strip} remove space on linebreak between html tags https://github.com/smarty-php/smarty/issues/213
+
+ 24.04.2016
+ - bugfix nested {include} with relative file path could fail when called in {block} ... {/block} https://github.com/smarty-php/smarty/issues/218
+
+ 14.04.2016
+ - bugfix special variable {$smarty.capture.name} was not case sensitive on name https://github.com/smarty-php/smarty/issues/210
+ - bugfix the default template handler must calculate the source uid https://github.com/smarty-php/smarty/issues/205
+
+ 13.04.2016
+ - bugfix template inheritance status must be saved when calling sub-templates https://github.com/smarty-php/smarty/issues/215
+
+ 27.03.2016
+ - bugfix change of 11.03.2016 cause again {capture} data could not been seen in other templates with {$smarty.capture.name} https://github.com/smarty-php/smarty/issues/153
+
+ 11.03.2016
+ - optimization of capture and security handling
+ - improvement $smarty->clearCompiledTemplate() should return on recompiled or uncompiled resources
+
+ 10.03.2016
+ - optimization of resource processing
+
+ 09.03.2016
+ - improvement rework of 'scope' attribute handling see see NEW_FEATURES.txt https://github.com/smarty-php/smarty/issues/194
+ https://github.com/smarty-php/smarty/issues/186 https://github.com/smarty-php/smarty/issues/179
+ - bugfix correct Autoloader update of 2.3.2014 https://github.com/smarty-php/smarty/issues/199
+
+ 04.03.2016
+ - bugfix change from 01.03.2016 will cause $smarty->isCached(..) failure if called multiple time for same template
+ (forum topic 25935)
+
+ 02.03.2016
+ - revert autoloader optimizations because of unexplainable warning when using plugins https://github.com/smarty-php/smarty/issues/199
+
+ 01.03.2016
+ - bugfix template objects must be cached on $smarty->fetch('foo.tpl) calls incase the template is fetched
+ multiple times (forum topic 25909)
+
+ 25.02.2016
+ - bugfix wrong _realpath with 4 or more parent-directories https://github.com/smarty-php/smarty/issues/190
+ - optimization of _realpath
+ - bugfix instanceof expression in template code must be treated as value https://github.com/smarty-php/smarty/issues/191
+
+ 20.02.2016
+ - bugfix {strip} must keep space between hmtl tags. Broken by changes of 10.2.2016 https://github.com/smarty-php/smarty/issues/184
+ - new feature/bugfix {foreach}{section} add 'properties' attribute to force compilation of loop properties
+ see NEW_FEATURES.txt https://github.com/smarty-php/smarty/issues/189
+
+ 19.02.2016
+ - revert output buffer flushing on display, echo content again because possible problems when PHP files had
+ characters (newline} after ?> at file end https://github.com/smarty-php/smarty/issues/187
+
+ 14.02.2016
+ - new tag {make_nocache} read NEW_FEATURES.txt https://github.com/smarty-php/smarty/issues/110
+ - optimization of sub-template processing
+ - bugfix using extendsall as default resource and {include} inside {block} tags could produce unexpected results https://github.com/smarty-php/smarty/issues/183
+ - optimization of tag attribute compiling
+ - optimization make compiler tag object cache static for higher compilation speed
+
+ 11.02.2016
+ - improvement added KnockoutJS comments to trimwhitespace outputfilter https://github.com/smarty-php/smarty/issues/82
+ https://github.com/smarty-php/smarty/pull/181
+
+ 10.02.2016
+ - bugfix {strip} must keep space on output creating smarty tags within html tags https://github.com/smarty-php/smarty/issues/177
+ - bugfix wrong precedence on special if conditions like '$foo is ... by $bar' could cause wrong code https://github.com/smarty-php/smarty/issues/178
+ - improvement because of ambiguities the inline constant support has been removed from the $foo.bar syntax https://github.com/smarty-php/smarty/issues/149
+ - bugfix other {strip} error with output tags between hmtl https://github.com/smarty-php/smarty/issues/180
+
+ 09.02.2016
+ - move some code from parser into compiler
+ - reformat all code for unique style
+ - update/bugfix scope attribute handling reworked. Read the newfeatures.txt file
+
+ 05.02.2016
+ - improvement internal compiler changes
+
+ 01.02.2016
+ - bugfix {foreach} compilation failed when $smarty->merge_compiled_includes = true and pre-filters are used.
+
+ 29.01.2016
+ - bugfix implement replacement code for _tag_stack property https://github.com/smarty-php/smarty/issues/151
+
+ 28.01.2016
+ - bugfix allow windows network filepath or wrapper (forum topic 25876) https://github.com/smarty-php/smarty/issues/170
+ - bugfix if fetch('foo.tpl') is called on a template object the $parent parameter should default to the calling template object https://github.com/smarty-php/smarty/issues/152
+
+ 27.01.2016
+ - revert bugfix compiling {section} did create warning
+ - bugfix {$smarty.section.customer.loop} did throw compiler error https://github.com/smarty-php/smarty/issues/161
+ update of yesterdays fix
+ - bugfix string resource could inject code at {block} or inline subtemplates through PHP comments https://github.com/smarty-php/smarty/issues/157
+ - bugfix output filters did not observe nocache code flhttps://github.com/smarty-php/smarty/issues/154g https://github.com/smarty-php/smarty/issues/160
+ - bugfix {extends} with relative file path did not work https://github.com/smarty-php/smarty/issues/154
+ https://github.com/smarty-php/smarty/issues/158
+ - bugfix {capture} data could not been seen in other templates with {$smarty.capture.name} https://github.com/smarty-php/smarty/issues/153
+
+ 26.01.2016
+ - improvement observe Smarty::$_CHARSET in debugging console https://github.com/smarty-php/smarty/issues/169
+ - bugfix compiling {section} did create warning
+ - bugfix {$smarty.section.customer.loop} did throw compiler error https://github.com/smarty-php/smarty/issues/161
+
+ 02.01.2016
+ - update scope handling
+ - optimize block plugin compiler
+ - improvement runtime checks if registered block plugins are callable
+
+ 01.01.2016
+ - remove Smarty::$resource_cache_mode property
+
+ 31.12.2015
+ - optimization of {assign}, {if} and {while} compiled code
+
+ 30.12.2015
+ - bugfix plugin names starting with "php" did not compile https://github.com/smarty-php/smarty/issues/147
+
+ 29.12.2015
+ - bugfix Smarty::error_reporting was not observed when display() or fetch() was called on template objects https://github.com/smarty-php/smarty/issues/145
+
+ 28.12.2015
+ - optimization of {foreach} code size and processing
+
+ 27.12.2015
+ - improve inheritance code
+ - update external methods
+ - code fixes
+ - PHPdoc updates
+
+ 25.12.2015
+ - compile {block} tag code and its processing into classes
+ - optimization replace hhvm extension by inline code
+ - new feature If ACP is enabled force an apc_compile_file() when compiled or cached template was updated
+
+ 24.12.2015
+ - new feature Compiler does now observe the template_dir setting and will create separate compiled files if required
+ - bugfix post filter did fail on template inheritance https://github.com/smarty-php/smarty/issues/144
+
+ 23.12.2015
+ - optimization move internal method decodeProperties back into template object
+ - optimization move subtemplate processing back into template object
+ - new feature Caching does now observe the template_dir setting and will create separate cache files if required
+
+ 22.12.2015
+ - change $xxx_dir properties from private to protected in case Smarty class gets extended
+ - code optimizations
+
+ 21.12.2015
+ - bugfix a filepath starting with '/' or '\' on windows should normalize to the root dir
+ of current working drive https://github.com/smarty-php/smarty/issues/134
+ - optimization of filepath normalization
+ - bugfix {strip} must remove all blanks between html tags https://github.com/smarty-php/smarty/issues/136
+
+ ===== 3.1.29 ===== (21.12.2015)
21.12.2015
- optimization improve speed of filetime checks on extends and extendsall resource
20.12.2015
- bugfix failure when the default resource type was set to 'extendsall' https://github.com/smarty-php/smarty/issues/123
- update compilation of Smarty special variables
- - bugfix add addition check for OS type on normalizaition of file path https://github.com/smarty-php/smarty/issues/134
+ - bugfix add addition check for OS type on normalization of file path https://github.com/smarty-php/smarty/issues/134
- bugfix the source uid of the extendsall resource must contain $template_dir settings https://github.com/smarty-php/smarty/issues/123
19.12.2015
@@ -15,7 +352,7 @@
- improvement make sure that compiled and cache templates never can contain a trailing '?>?
18.12.2015
- - bugfix regression when modifier parameter was follow by math https://github.com/smarty-php/smarty/issues/132
+ - bugfix regression when modifier parameter was followed by math https://github.com/smarty-php/smarty/issues/132
17.12.2015
- bugfix {$smarty.capture.nameFail} did lowercase capture name https://github.com/smarty-php/smarty/issues/135
diff --git a/vendor/smarty/smarty/demo/configs/test.conf b/vendor/smarty/smarty/demo/configs/test.conf
new file mode 100644
index 000000000..5eac748ec
--- /dev/null
+++ b/vendor/smarty/smarty/demo/configs/test.conf
@@ -0,0 +1,5 @@
+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
new file mode 100644
index 000000000..b67c217be
--- /dev/null
+++ b/vendor/smarty/smarty/demo/index.php
@@ -0,0 +1,30 @@
+<?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
new file mode 100644
index 000000000..ed55ec846
--- /dev/null
+++ b/vendor/smarty/smarty/demo/plugins/cacheresource.apc.php
@@ -0,0 +1,83 @@
+<?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
+{
+ 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
new file mode 100644
index 000000000..945beb349
--- /dev/null
+++ b/vendor/smarty/smarty/demo/plugins/cacheresource.memcache.php
@@ -0,0 +1,101 @@
+<?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;
+
+ 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)
+ {
+ $_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()
+ {
+ $this->memcache->flush();
+ }
+}
diff --git a/vendor/smarty/smarty/demo/plugins/cacheresource.mysql.php b/vendor/smarty/smarty/demo/plugins/cacheresource.mysql.php
new file mode 100644
index 000000000..027b93766
--- /dev/null
+++ b/vendor/smarty/smarty/demo/plugins/cacheresource.mysql.php
@@ -0,0 +1,160 @@
+<?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
+{
+ // 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");
+ }
+ 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
new file mode 100644
index 000000000..d1e2d6ace
--- /dev/null
+++ b/vendor/smarty/smarty/demo/plugins/cacheresource.pdo.php
@@ -0,0 +1,327 @@
+<?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
+{
+
+ 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');
+
+ 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';
+
+ protected $deleteStatement = 'DELETE FROM %1$s WHERE %2$s';
+
+ protected $truncateStatement = 'TRUNCATE TABLE %s';
+
+ protected $fetchColumns = 'modified, content';
+
+ protected $fetchTimestampColumns = 'modified';
+
+ protected $pdo, $table, $database;
+
+ /*
+ * Constructor
+ *
+ * @param PDO $pdo PDO : active connection
+ * @param string $table : table (or view) name
+ * @param string $database : optionnal - if table is located in another db
+ */
+ 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 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
+ */
+ protected function getFetchStatement($columns, $id, $cache_id = null, $compile_id = null)
+ {
+
+ 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}`";
+ }
+}
+ \ No newline at end of file
diff --git a/vendor/smarty/smarty/demo/plugins/cacheresource.pdo_gzip.php b/vendor/smarty/smarty/demo/plugins/cacheresource.pdo_gzip.php
new file mode 100644
index 000000000..8a9e0a5dd
--- /dev/null
+++ b/vendor/smarty/smarty/demo/plugins/cacheresource.pdo_gzip.php
@@ -0,0 +1,43 @@
+<?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
+ */
+require_once 'cacheresource.pdo.php';
+
+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);
+ }
+}
+ \ No newline at end of file
diff --git a/vendor/smarty/smarty/demo/plugins/resource.extendsall.php b/vendor/smarty/smarty/demo/plugins/resource.extendsall.php
new file mode 100644
index 000000000..a5ee432dd
--- /dev/null
+++ b/vendor/smarty/smarty/demo/plugins/resource.extendsall.php
@@ -0,0 +1,65 @@
+<?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
+ */
+ 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
new file mode 100644
index 000000000..619707e78
--- /dev/null
+++ b/vendor/smarty/smarty/demo/plugins/resource.mysql.php
@@ -0,0 +1,83 @@
+<?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");
+ }
+ 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
new file mode 100644
index 000000000..d85aecf31
--- /dev/null
+++ b/vendor/smarty/smarty/demo/plugins/resource.mysqls.php
@@ -0,0 +1,63 @@
+<?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
+ protected $db;
+
+ // prepared fetch() statement
+ protected $fetch;
+
+ 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
new file mode 100644
index 000000000..e04310fdd
--- /dev/null
+++ b/vendor/smarty/smarty/demo/templates/footer.tpl
@@ -0,0 +1,2 @@
+</BODY>
+</HTML>
diff --git a/vendor/smarty/smarty/demo/templates/header.tpl b/vendor/smarty/smarty/demo/templates/header.tpl
new file mode 100644
index 000000000..783210a18
--- /dev/null
+++ b/vendor/smarty/smarty/demo/templates/header.tpl
@@ -0,0 +1,5 @@
+<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
new file mode 100644
index 000000000..1fbb6d379
--- /dev/null
+++ b/vendor/smarty/smarty/demo/templates/index.tpl
@@ -0,0 +1,87 @@
+{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/library/Smarty/libs/Autoloader.php b/vendor/smarty/smarty/libs/Autoloader.php
index 7d0c388a6..d3b039caa 100644
--- a/library/Smarty/libs/Autoloader.php
+++ b/vendor/smarty/smarty/libs/Autoloader.php
@@ -11,11 +11,12 @@
* @package Smarty
* @author Uwe Tews
* Usage:
- * require_once '...path/Autoloader.php';
- * Smarty_Autoloader::register();
- * $smarty = new Smarty();
- * Note: This autoloader is not needed if you use Composer.
- * Composer will automatically add the classes of the Smarty package to it common autoloader.
+ * require_once '...path/Autoloader.php';
+ * Smarty_Autoloader::register();
+ * or
+ * include '...path/bootstarp.php';
+ *
+ * $smarty = new Smarty();
*/
class Smarty_Autoloader
{
@@ -24,14 +25,14 @@ class Smarty_Autoloader
*
* @var string
*/
- public static $SMARTY_DIR = '';
+ public static $SMARTY_DIR = null;
/**
* Filepath to Smarty internal plugins
*
* @var string
*/
- public static $SMARTY_SYSPLUGINS_DIR = '';
+ public static $SMARTY_SYSPLUGINS_DIR = null;
/**
* Array with Smarty core classes and their filename
@@ -57,7 +58,7 @@ class Smarty_Autoloader
set_include_path(get_include_path() . PATH_SEPARATOR . SMARTY_SYSPLUGINS_DIR) !== false
) {
$registeredAutoLoadFunctions = spl_autoload_functions();
- if (!isset($registeredAutoLoadFunctions['spl_autoload'])) {
+ if (!isset($registeredAutoLoadFunctions[ 'spl_autoload' ])) {
spl_autoload_register();
}
} else {
@@ -89,35 +90,20 @@ class Smarty_Autoloader
*/
public static function autoload($class)
{
- $_class = strtolower($class);
- $file = self::$SMARTY_SYSPLUGINS_DIR . $_class . '.php';
- if (strpos($_class, 'smarty_internal_') === 0) {
- if (strpos($_class, 'smarty_internal_compile_') === 0) {
- if (is_file($file)) {
- require $file;
- }
- return;
- }
- @include $file;
+ if ($class[ 0 ] !== 'S' && strpos($class, 'Smarty') !== 0) {
return;
}
- if (preg_match('/^(smarty_(((template_(source|config|cache|compiled|resource_base))|((cached|compiled)?resource)|(variable|security)))|(smarty(bc)?)$)/',
- $_class, $match)) {
- if (!empty($match[3])) {
- @include $file;
- return;
- } elseif (!empty($match[9]) && isset(self::$rootClasses[$_class])) {
- $file = self::$rootClasses[$_class];
- require $file;
- return;
+ $_class = strtolower($class);
+ if (isset(self::$rootClasses[ $_class ])) {
+ $file = self::$SMARTY_DIR . self::$rootClasses[ $_class ];
+ if (is_file($file)) {
+ include $file;
+ }
+ } else {
+ $file = self::$SMARTY_SYSPLUGINS_DIR . $_class . '.php';
+ if (is_file($file)) {
+ include $file;
}
- }
- if (0 !== strpos($_class, 'smarty')) {
- return;
- }
- if (is_file($file)) {
- require $file;
- return;
}
return;
}
diff --git a/library/Smarty/libs/Smarty.class.php b/vendor/smarty/smarty/libs/Smarty.class.php
index a029f942e..57eedfb93 100644
--- a/library/Smarty/libs/Smarty.class.php
+++ b/vendor/smarty/smarty/libs/Smarty.class.php
@@ -21,28 +21,21 @@
* smarty-discussion-subscribe@googlegroups.com
*
* @link http://www.smarty.net/
- * @copyright 2015 New Digital Group, Inc.
- * @copyright 2015 Uwe Tews
+ * @copyright 2016 New Digital Group, Inc.
+ * @copyright 2016 Uwe Tews
* @author Monte Ohrt <monte at ohrt dot com>
* @author Uwe Tews
* @author Rodney Rehm
* @package Smarty
- * @version 3.1.29
+ * @version 3.1.31
*/
/**
- * define shorthand directory separator constant
- */
-if (!defined('DS')) {
- define('DS', DIRECTORY_SEPARATOR);
-}
-
-/**
* set SMARTY_DIR to absolute path to Smarty library files.
* Sets SMARTY_DIR only if user application has not already defined it.
*/
if (!defined('SMARTY_DIR')) {
- define('SMARTY_DIR', dirname(__FILE__) . DS);
+ define('SMARTY_DIR', dirname(__FILE__) . DIRECTORY_SEPARATOR);
}
/**
@@ -50,10 +43,10 @@ if (!defined('SMARTY_DIR')) {
* Sets SMARTY_SYSPLUGINS_DIR only if user application has not already defined it.
*/
if (!defined('SMARTY_SYSPLUGINS_DIR')) {
- define('SMARTY_SYSPLUGINS_DIR', SMARTY_DIR . 'sysplugins' . DS);
+ define('SMARTY_SYSPLUGINS_DIR', SMARTY_DIR . 'sysplugins' . DIRECTORY_SEPARATOR);
}
if (!defined('SMARTY_PLUGINS_DIR')) {
- define('SMARTY_PLUGINS_DIR', SMARTY_DIR . 'plugins' . DS);
+ define('SMARTY_PLUGINS_DIR', SMARTY_DIR . 'plugins' . DIRECTORY_SEPARATOR);
}
if (!defined('SMARTY_MBSTRING')) {
define('SMARTY_MBSTRING', function_exists('mb_get_info'));
@@ -73,23 +66,16 @@ if (!defined('SMARTY_RESOURCE_DATE_FORMAT')) {
}
/**
- * Try loading the Smarty_Internal_Data class
- * If we fail we must load Smarty's autoloader.
- * Otherwise we may have a global autoloader like Composer
+ * Load Smarty_Autoloader
*/
-if (!class_exists('Smarty_Autoloader', false)) {
- if (!class_exists('Smarty_Internal_Data', true)) {
- require_once dirname(__FILE__) . '/Autoloader.php';
- Smarty_Autoloader::registerBC();
- }
+if (!class_exists('Smarty_Autoloader')) {
+ include __DIR__ . '/bootstrap.php';
}
/**
* Load always needed external class files
*/
-if (!class_exists('Smarty_Internal_Data', false)) {
- require_once SMARTY_SYSPLUGINS_DIR . 'smarty_internal_data.php';
-}
+require_once SMARTY_SYSPLUGINS_DIR . 'smarty_internal_data.php';
require_once SMARTY_SYSPLUGINS_DIR . 'smarty_internal_extension_handler.php';
require_once SMARTY_SYSPLUGINS_DIR . 'smarty_internal_templatebase.php';
require_once SMARTY_SYSPLUGINS_DIR . 'smarty_internal_template.php';
@@ -97,17 +83,21 @@ require_once SMARTY_SYSPLUGINS_DIR . 'smarty_resource.php';
require_once SMARTY_SYSPLUGINS_DIR . 'smarty_variable.php';
require_once SMARTY_SYSPLUGINS_DIR . 'smarty_template_source.php';
require_once SMARTY_SYSPLUGINS_DIR . 'smarty_template_resource_base.php';
+require_once SMARTY_SYSPLUGINS_DIR . 'smarty_internal_resource_file.php';
/**
* This is the main Smarty class
*
* @package Smarty
*
+ * The following methods will be dynamically loaded by the extension handler when they are called.
+ * They are located in a corresponding Smarty_Internal_Method_xxxx class
+ *
* @method int clearAllCache(int $exp_time = null, string $type = null)
* @method int clearCache(string $template_name, string $cache_id = null, string $compile_id = null, int $exp_time = null, string $type = null)
- * @method int compileAllTemplates(Smarty $smarty, string $extension = '.tpl', bool $force_compile = false, int $time_limit = 0, int $max_errors = null)
- * @method int compileAllConfig(Smarty $smarty, string $extension = '.conf', bool $force_compile = false, int $time_limit = 0, int $max_errors = null)
- *
+ * @method int compileAllTemplates(string $extension = '.tpl', bool $force_compile = false, int $time_limit = 0, int $max_errors = null)
+ * @method int compileAllConfig(string $extension = '.conf', bool $force_compile = false, int $time_limit = 0, int $max_errors = null)
+ * @method int clearCompiledTemplate($resource_name = null, $compile_id = null, $exp_time = null)
*/
class Smarty extends Smarty_Internal_TemplateBase
{
@@ -118,12 +108,12 @@ class Smarty extends Smarty_Internal_TemplateBase
/**
* smarty version
*/
- const SMARTY_VERSION = '3.1.29';
+ const SMARTY_VERSION = '3.1.31';
/**
* define variable scopes
*/
- const SCOPE_LOCAL = 0;
+ const SCOPE_LOCAL = 1;
const SCOPE_PARENT = 2;
@@ -135,8 +125,6 @@ class Smarty extends Smarty_Internal_TemplateBase
const SCOPE_GLOBAL = 32;
- const SCOPE_BUBBLE_UP = 64;
-
/**
* define caching modes
*/
@@ -206,6 +194,7 @@ class Smarty extends Smarty_Internal_TemplateBase
/**
* Resource caching modes
+ * (not used since 3.1.30)
*/
const RESOURCE_CACHE_OFF = 0;
@@ -288,7 +277,21 @@ class Smarty extends Smarty_Internal_TemplateBase
*
* @var array
*/
- private $template_dir = array('./templates/');
+ protected $template_dir = array('./templates/');
+
+ /**
+ * flags for normalized template directory entries
+ *
+ * @var array
+ */
+ protected $_processedTemplateDir = array();
+
+ /**
+ * flag if template_dir is normalized
+ *
+ * @var bool
+ */
+ public $_templateDirNormalized = false;
/**
* joined template directory string used in cache keys
@@ -298,6 +301,27 @@ class Smarty extends Smarty_Internal_TemplateBase
public $_joined_template_dir = null;
/**
+ * config directory
+ *
+ * @var array
+ */
+ protected $config_dir = array('./configs/');
+
+ /**
+ * flags for normalized template directory entries
+ *
+ * @var array
+ */
+ protected $_processedConfigDir = array();
+
+ /**
+ * flag if config_dir is normalized
+ *
+ * @var bool
+ */
+ public $_configDirNormalized = false;
+
+ /**
* joined config directory string used in cache keys
*
* @var string
@@ -330,28 +354,42 @@ class Smarty extends Smarty_Internal_TemplateBase
*
* @var string
*/
- private $compile_dir = './templates_c/';
+ protected $compile_dir = './templates_c/';
+
+ /**
+ * flag if template_dir is normalized
+ *
+ * @var bool
+ */
+ public $_compileDirNormalized = false;
/**
* plugins directory
*
* @var array
*/
- private $plugins_dir = null;
+ protected $plugins_dir = array();
+
+ /**
+ * flag if plugins_dir is normalized
+ *
+ * @var bool
+ */
+ public $_pluginsDirNormalized = false;
/**
* cache directory
*
* @var string
*/
- private $cache_dir = './cache/';
+ protected $cache_dir = './cache/';
/**
- * config directory
+ * flag if template_dir is normalized
*
- * @var array
+ * @var bool
*/
- private $config_dir = array('./configs/');
+ public $_cacheDirNormalized = false;
/**
* force template compiling?
@@ -388,6 +426,15 @@ class Smarty extends Smarty_Internal_TemplateBase
*/
public $merge_compiled_includes = false;
+ /*
+ * flag for behaviour when extends: resource and {extends} tag are used simultaneous
+ * if false disable execution of {extends} in templates called by extends resource.
+ * (behaviour as versions < 3.1.28)
+ *
+ * @var boolean
+ */
+ public $extends_recursion = true;
+
/**
* force cache file creation
*
@@ -563,13 +610,6 @@ class Smarty extends Smarty_Internal_TemplateBase
public $default_config_type = 'file';
/**
- * enable resource caching
- *
- * @var bool
- */
- public $resource_cache_mode = 1;
-
- /**
* check If-Modified-Since headers
*
* @var boolean
@@ -675,22 +715,29 @@ class Smarty extends Smarty_Internal_TemplateBase
public $_debug = null;
/**
+ * Directory separator
+ *
+ * @var string
+ */
+ public $ds = DIRECTORY_SEPARATOR;
+
+ /**
* removed properties
*
* @var string[]
*/
- private static $obsoleteProperties = array('resource_caching', 'template_resource_caching',
- 'direct_access_security', '_dir_perms', '_file_perms',
- 'plugin_search_order', 'inheritance_merge_compiled_includes');
+ private $obsoleteProperties = array('resource_caching', 'template_resource_caching', 'direct_access_security',
+ '_dir_perms', '_file_perms', 'plugin_search_order',
+ 'inheritance_merge_compiled_includes', 'resource_cache_mode',);
/**
- * List of private properties which will call getter/setter ona direct access
+ * List of private properties which will call getter/setter on a direct access
*
- * @var array
+ * @var string[]
*/
- private static $accessMap = array('template_dir' => 'TemplateDir', 'config_dir' => 'ConfigDir',
- 'plugins_dir' => 'PluginsDir', 'compile_dir' => 'CompileDir',
- 'cache_dir' => 'CacheDir',);
+ private $accessMap = array('template_dir' => 'TemplateDir', 'config_dir' => 'ConfigDir',
+ 'plugins_dir' => 'PluginsDir', 'compile_dir' => 'CompileDir',
+ 'cache_dir' => 'CacheDir',);
/**#@-*/
@@ -699,19 +746,19 @@ class Smarty extends Smarty_Internal_TemplateBase
*/
public function __construct()
{
+ $this->_clearTemplateCache();
parent::__construct();
if (is_callable('mb_internal_encoding')) {
mb_internal_encoding(Smarty::$_CHARSET);
}
$this->start_time = microtime(true);
- if (isset($_SERVER['SCRIPT_NAME'])) {
- Smarty::$global_tpl_vars['SCRIPT_NAME'] = new Smarty_Variable($_SERVER['SCRIPT_NAME']);
+ if (isset($_SERVER[ 'SCRIPT_NAME' ])) {
+ Smarty::$global_tpl_vars[ 'SCRIPT_NAME' ] = new Smarty_Variable($_SERVER[ 'SCRIPT_NAME' ]);
}
// Check if we're running on windows
Smarty::$_IS_WINDOWS = strtoupper(substr(PHP_OS, 0, 3)) === 'WIN';
-
// let PCRE (preg_*) treat strings as ISO-8859-1 if we're not dealing with UTF-8
if (Smarty::$_CHARSET !== 'UTF-8') {
Smarty::$_UTF8_MODIFIER = '';
@@ -733,31 +780,6 @@ class Smarty extends Smarty_Internal_TemplateBase
}
/**
- * Returns a single or all global variables
- *
- * @param string $varname variable name or null
- *
- * @return string variable value or or array of variables
- */
- public function getGlobal($varname = null)
- {
- if (isset($varname)) {
- if (isset(self::$global_tpl_vars[$varname])) {
- return self::$global_tpl_vars[$varname]->value;
- } else {
- return '';
- }
- } else {
- $_result = array();
- foreach (self::$global_tpl_vars AS $key => $var) {
- $_result[$key] = $var->value;
- }
-
- return $_result;
- }
- }
-
- /**
* Loads security class and enables security
*
* @param string|Smarty_Security $security_class if a string is used, it must be class-name
@@ -793,12 +815,14 @@ class Smarty extends Smarty_Internal_TemplateBase
*/
public function setTemplateDir($template_dir, $isConfig = false)
{
- $type = $isConfig ? 'config_dir' : 'template_dir';
- $joined = '_joined_' . $type;
- $this->{$type} = (array) $template_dir;
- $this->{$joined} = join(' # ', $this->{$type});
- $this->_cache[$type . '_new'] = true;
- $this->_cache[$type] = false;
+ if ($isConfig) {
+ $this->config_dir = array();
+ $this->_processedConfigDir = array();
+ } else {
+ $this->template_dir = array();
+ $this->_processedTemplateDir = array();
+ }
+ $this->addTemplateDir($template_dir, null, $isConfig);
return $this;
}
@@ -813,16 +837,36 @@ class Smarty extends Smarty_Internal_TemplateBase
*/
public function addTemplateDir($template_dir, $key = null, $isConfig = false)
{
- $type = $isConfig ? 'config_dir' : 'template_dir';
- $joined = '_joined_' . $type;
- if (!isset($this->_cache[$type])) {
- $this->{$type} = (array) $this->{$type};
- $this->{$joined} = join(' # ', $this->{$type});
- $this->_cache[$type . '_new'] = true;
- $this->_cache[$type] = false;
+ if ($isConfig) {
+ $processed = &$this->_processedConfigDir;
+ $dir = &$this->config_dir;
+ $this->_configDirNormalized = false;
+ } else {
+ $processed = &$this->_processedTemplateDir;
+ $dir = &$this->template_dir;
+ $this->_templateDirNormalized = false;
+ }
+ if (is_array($template_dir)) {
+ foreach ($template_dir as $k => $v) {
+ if (is_int($k)) {
+ // indexes are not merged but appended
+ $dir[] = $v;
+ } else {
+ // string indexes are overridden
+ $dir[ $k ] = $v;
+ unset($processed[ $key ]);
+ }
+ }
+ } else {
+ if ($key !== null) {
+ // override directory at specified index
+ $dir[ $key ] = $template_dir;
+ unset($processed[ $key ]);
+ } else {
+ // append new directory
+ $dir[] = $template_dir;
+ }
}
- $this->{$joined} .= ' # ' . join(' # ', (array) $template_dir);
- $this->_addDir($type, $template_dir, $key);
return $this;
}
@@ -836,24 +880,18 @@ class Smarty extends Smarty_Internal_TemplateBase
*/
public function getTemplateDir($index = null, $isConfig = false)
{
- $type = $isConfig ? 'config_dir' : 'template_dir';
- if (!isset($this->_cache[$type])) {
- $joined = '_joined_' . $type;
- $this->{$type} = (array) $this->{$type};
- $this->{$joined} = join(' # ', $this->{$type});
- $this->_cache[$type] = false;
+ if ($isConfig) {
+ $dir = &$this->config_dir;
+ } else {
+ $dir = &$this->template_dir;
}
- if ($this->_cache[$type] == false) {
- foreach ($this->{$type} as $k => $v) {
- $this->{$type}[$k] = $this->_realpath($v . DS, true);
- }
- $this->_cache[$type . '_new'] = true;
- $this->_cache[$type] = true;
+ if ($isConfig ? !$this->_configDirNormalized : !$this->_templateDirNormalized) {
+ $this->_nomalizeTemplateConfig($isConfig);
}
if ($index !== null) {
- return isset($this->{$type}[$index]) ? $this->{$type}[$index] : null;
+ return isset($dir[ $index ]) ? $dir[ $index ] : null;
}
- return $this->{$type};
+ return $dir;
}
/**
@@ -903,28 +941,24 @@ class Smarty extends Smarty_Internal_TemplateBase
public function setPluginsDir($plugins_dir)
{
$this->plugins_dir = (array) $plugins_dir;
- if (isset($this->_cache['plugins_dir'])) {
- unset($this->_cache['plugins_dir']);
- }
+ $this->_pluginsDirNormalized = false;
return $this;
}
/**
* Adds directory of plugin files
*
- * @param $plugins_dir
+ * @param null|array $plugins_dir
*
* @return Smarty current Smarty instance for chaining
*/
public function addPluginsDir($plugins_dir)
{
- if (!isset($this->plugins_dir)) {
- $this->plugins_dir = array(SMARTY_PLUGINS_DIR);
- }
- $this->plugins_dir = array_merge((array) $this->plugins_dir, (array) $plugins_dir);
- if (isset($this->_cache['plugins_dir'])) {
- unset($this->_cache['plugins_dir']);
+ if (empty($this->plugins_dir)) {
+ $this->plugins_dir[] = SMARTY_PLUGINS_DIR;
}
+ $this->plugins_dir = array_merge($this->plugins_dir, (array) $plugins_dir);
+ $this->_pluginsDirNormalized = false;
return $this;
}
@@ -935,25 +969,24 @@ class Smarty extends Smarty_Internal_TemplateBase
*/
public function getPluginsDir()
{
- if (!isset($this->_cache['plugins_dir'])) {
- if (!isset($this->plugins_dir)) {
- $this->plugins_dir = array(SMARTY_PLUGINS_DIR);
- } else {
- $plugins_dir = (array) $this->plugins_dir;
- $this->plugins_dir = array();
- foreach ($plugins_dir as $v) {
- $this->plugins_dir[] = $this->_realpath($v . DS, true);
- }
- $this->plugins_dir = array_unique($this->plugins_dir);
+ if (empty($this->plugins_dir)) {
+ $this->plugins_dir[] = SMARTY_PLUGINS_DIR;
+ $this->_pluginsDirNormalized = false;
+ }
+ if (!$this->_pluginsDirNormalized) {
+ if (!is_array($this->plugins_dir)) {
+ $this->plugins_dir = (array) $this->plugins_dir;
}
- $this->_cache['plugin_files'] = array();
- $this->_cache['plugins_dir'] = true;
+ foreach ($this->plugins_dir as $k => $v) {
+ $this->plugins_dir[ $k ] = $this->_realpath(rtrim($v, "/\\") . $this->ds, true);
+ }
+ $this->_cache[ 'plugin_files' ] = array();
+ $this->_pluginsDirNormalized = true;
}
return $this->plugins_dir;
}
/**
- * Set compile directory
*
* @param string $compile_dir directory to store compiled templates in
*
@@ -961,11 +994,8 @@ class Smarty extends Smarty_Internal_TemplateBase
*/
public function setCompileDir($compile_dir)
{
- $this->compile_dir = $this->_realpath($compile_dir . DS, true);
- if (!isset(Smarty::$_muted_directories[$this->compile_dir])) {
- Smarty::$_muted_directories[$this->compile_dir] = null;
- }
- $this->_cache['compile_dir'] = true;
+ $this->_normalizeDir('compile_dir', $compile_dir);
+ $this->_compileDirNormalized = true;
return $this;
}
@@ -976,12 +1006,9 @@ class Smarty extends Smarty_Internal_TemplateBase
*/
public function getCompileDir()
{
- if (!isset($this->_cache['compile_dir'])) {
- $this->compile_dir = $this->_realpath($this->compile_dir . DS, true);
- if (!isset(Smarty::$_muted_directories[$this->compile_dir])) {
- Smarty::$_muted_directories[$this->compile_dir] = null;
- }
- $this->_cache['compile_dir'] = true;
+ if (!$this->_compileDirNormalized) {
+ $this->_normalizeDir('compile_dir', $this->compile_dir);
+ $this->_compileDirNormalized = true;
}
return $this->compile_dir;
}
@@ -995,11 +1022,8 @@ class Smarty extends Smarty_Internal_TemplateBase
*/
public function setCacheDir($cache_dir)
{
- $this->cache_dir = $this->_realpath($cache_dir . DS, true);
- if (!isset(Smarty::$_muted_directories[$this->cache_dir])) {
- Smarty::$_muted_directories[$this->cache_dir] = null;
- }
- $this->_cache['cache_dir'] = true;
+ $this->_normalizeDir('cache_dir', $cache_dir);
+ $this->_cacheDirNormalized = true;
return $this;
}
@@ -1010,47 +1034,54 @@ class Smarty extends Smarty_Internal_TemplateBase
*/
public function getCacheDir()
{
- if (!isset($this->_cache['cache_dir'])) {
- $this->cache_dir = $this->_realpath($this->cache_dir . DS, true);
- if (!isset(Smarty::$_muted_directories[$this->cache_dir])) {
- Smarty::$_muted_directories[$this->cache_dir] = null;
- }
- $this->_cache['cache_dir'] = true;
+ if (!$this->_cacheDirNormalized) {
+ $this->_normalizeDir('cache_dir', $this->cache_dir);
+ $this->_cacheDirNormalized = true;
}
return $this->cache_dir;
}
/**
- * add directories to given property name
+ * Normalize and set directory string
*
- * @param string $dirName directory property name
- * @param string|array $dir directory string or array of strings
- * @param mixed $key optional key
+ * @param string $dirName cache_dir or compile_dir
+ * @param string $dir filepath of folder
*/
- private function _addDir($dirName, $dir, $key = null)
+ private function _normalizeDir($dirName, $dir)
{
- $rp = $this->_cache[$dirName];
- if (is_array($dir)) {
- foreach ($dir as $k => $v) {
- $path = $rp ? $this->_realpath($v . DS, true) : $v;
- if (is_int($k)) {
- // indexes are not merged but appended
- $this->{$dirName}[] = $path;
- } else {
- // string indexes are overridden
- $this->{$dirName}[$k] = $path;
- }
- }
+ $this->{$dirName} = $this->_realpath(rtrim($dir, "/\\") . $this->ds, true);
+ if (!isset(Smarty::$_muted_directories[ $this->{$dirName} ])) {
+ Smarty::$_muted_directories[ $this->{$dirName} ] = null;
+ }
+ }
+
+ /**
+ * Normalize template_dir or config_dir
+ *
+ * @param bool $isConfig true for config_dir
+ *
+ */
+ private function _nomalizeTemplateConfig($isConfig)
+ {
+ if ($isConfig) {
+ $processed = &$this->_processedConfigDir;
+ $dir = &$this->config_dir;
} else {
- $path = $rp ? $this->_realpath($dir . DS, true) : $dir;
- if ($key !== null) {
- // override directory at specified index
- $this->{$dirName}[$key] = $path;
- } else {
- // append new directory
- $this->{$dirName}[] = $path;
+ $processed = &$this->_processedTemplateDir;
+ $dir = &$this->template_dir;
+ }
+ if (!is_array($dir)) {
+ $dir = (array) $dir;
+ }
+ foreach ($dir as $k => $v) {
+ if (!isset($processed[ $k ])) {
+ $dir[ $k ] = $v = $this->_realpath(rtrim($v, "/\\") . $this->ds, true);
+ $processed[ $k ] = true;
}
}
+ $isConfig ? $this->_configDirNormalized = true : $this->_templateDirNormalized = true;
+ $isConfig ? $this->_joined_config_dir = join('#', $this->config_dir) :
+ $this->_joined_template_dir = join('#', $this->template_dir);
}
/**
@@ -1076,27 +1107,34 @@ class Smarty extends Smarty_Internal_TemplateBase
} else {
$data = null;
}
- if ($this->caching &&
- isset($this->_cache['isCached'][$_templateId = $this->_getTemplateId($template, $cache_id, $compile_id)])
- ) {
- $tpl = $do_clone ? clone $this->_cache['isCached'][$_templateId] : $this->_cache['isCached'][$_templateId];
- $tpl->parent = $parent;
- $tpl->tpl_vars = array();
- $tpl->config_vars = array();
+ if (!$this->_templateDirNormalized) {
+ $this->_nomalizeTemplateConfig(false);
+ }
+ $_templateId = $this->_getTemplateId($template, $cache_id, $compile_id);
+ $tpl = null;
+ if ($this->caching && isset(Smarty_Internal_Template::$isCacheTplObj[ $_templateId ])) {
+ $tpl = $do_clone ? clone Smarty_Internal_Template::$isCacheTplObj[ $_templateId ] :
+ Smarty_Internal_Template::$isCacheTplObj[ $_templateId ];
+ $tpl->inheritance = null;
+ $tpl->tpl_vars = $tpl->config_vars = array();
+ } else if (!$do_clone && isset(Smarty_Internal_Template::$tplObjCache[ $_templateId ])) {
+ $tpl = clone Smarty_Internal_Template::$tplObjCache[ $_templateId ];
+ $tpl->inheritance = null;
+ $tpl->tpl_vars = $tpl->config_vars = array();
} else {
/* @var Smarty_Internal_Template $tpl */
- $tpl = new $this->template_class($template, $this, $parent, $cache_id, $compile_id, null, null);
+ $tpl = new $this->template_class($template, $this, null, $cache_id, $compile_id, null, null);
+ $tpl->templateId = $_templateId;
}
if ($do_clone) {
$tpl->smarty = clone $tpl->smarty;
- } elseif ($parent === null) {
- $tpl->parent = $this;
}
+ $tpl->parent = $parent ? $parent : $this;
// fill data if present
if (!empty($data) && is_array($data)) {
// set up variable values
foreach ($data as $_key => $_val) {
- $tpl->tpl_vars[$_key] = new Smarty_Variable($_val);
+ $tpl->tpl_vars[ $_key ] = new Smarty_Variable($_val);
}
}
if ($this->debugging || $this->debugging_ctrl == 'URL') {
@@ -1128,26 +1166,31 @@ class Smarty extends Smarty_Internal_TemplateBase
/**
* Get unique template id
*
- * @param string $template_name
- * @param null|mixed $cache_id
- * @param null|mixed $compile_id
- * @param null $caching
+ * @param string $template_name
+ * @param null|mixed $cache_id
+ * @param null|mixed $compile_id
+ * @param null $caching
+ * @param \Smarty_Internal_Template $template
*
* @return string
*/
- public function _getTemplateId($template_name, $cache_id = null, $compile_id = null, $caching = null)
+ public function _getTemplateId($template_name, $cache_id = null, $compile_id = null, $caching = null,
+ Smarty_Internal_Template $template = null)
{
+ $template_name = (strpos($template_name, ':') === false) ? "{$this->default_resource_type}:{$template_name}" :
+ $template_name;
$cache_id = $cache_id === null ? $this->cache_id : $cache_id;
$compile_id = $compile_id === null ? $this->compile_id : $compile_id;
$caching = (int) ($caching === null ? $this->caching : $caching);
- if ($this->allow_ambiguous_resources) {
+ if ((isset($template) && strpos($template_name, ':.') !== false) || $this->allow_ambiguous_resources) {
$_templateId =
- Smarty_Resource::getUniqueTemplateName($this, $template_name) . "#{$cache_id}#{$compile_id}#{$caching}";
+ Smarty_Resource::getUniqueTemplateName((isset($template) ? $template : $this), $template_name) .
+ "#{$cache_id}#{$compile_id}#{$caching}";
} else {
$_templateId = $this->_joined_template_dir . "#{$template_name}#{$cache_id}#{$compile_id}#{$caching}";
}
- if (isset($_templateId[150])) {
+ if (isset($_templateId[ 150 ])) {
$_templateId = sha1($_templateId);
}
return $_templateId;
@@ -1158,36 +1201,66 @@ class Smarty extends Smarty_Internal_TemplateBase
* - remove /./ and /../
* - make it absolute if required
*
- * @param string $path file path
- * @param bool $realpath leave $path relative
+ * @param string $path file path
+ * @param bool $realpath if true - convert to absolute
+ * false - convert to relative
+ * null - keep as it is but remove /./ /../
*
* @return string
*/
public function _realpath($path, $realpath = null)
{
- static $pattern = null;
- static $nds = null;
- if ($pattern == null) {
- $nds = DS == '/' ? '\\' : '/';
- $ds = '\\' . DS;
- $pattern =
- "#([{$ds}]+[^{$ds}]+[{$ds}]+[.]([{$ds}]+[.])*[.][{$ds}]+([.][{$ds}]+)*)|([{$ds}]+([.][{$ds}]+)+)|[{$ds}]{2,}#";
+ $nds = $this->ds == '/' ? '\\' : '/';
+ // normalize $this->ds
+ $path = str_replace($nds, $this->ds, $path);
+ preg_match('%^(?<root>(?:[[:alpha:]]:[\\\\]|/|[\\\\]{2}[[:alpha:]]+|[[:print:]]{2,}:[/]{2}|[\\\\])?)(?<path>(?:[[:print:]]*))$%',
+ $path, $parts);
+ $path = $parts[ 'path' ];
+ if ($parts[ 'root' ] == '\\') {
+ $parts[ 'root' ] = substr(getcwd(), 0, 2) . $parts[ 'root' ];
+ } else {
+ if ($realpath !== null && !$parts[ 'root' ]) {
+ $path = getcwd() . $this->ds . $path;
+ }
}
- // normalize DS
- if (strpos($path, $nds) !== false) {
- $path = str_replace($nds, DS, $path);
+ // remove noop 'DIRECTORY_SEPARATOR DIRECTORY_SEPARATOR' and 'DIRECTORY_SEPARATOR.DIRECTORY_SEPARATOR' patterns
+ $path = preg_replace('#([\\\\/]([.]?[\\\\/])+)#', $this->ds, $path);
+ // resolve '..DIRECTORY_SEPARATOR' pattern, smallest first
+ if (strpos($path, '..' . $this->ds) != false &&
+ preg_match_all('#(([.]?[\\\\/])*([.][.])[\\\\/]([.]?[\\\\/])*)+#', $path, $match)
+ ) {
+ $counts = array();
+ foreach ($match[ 0 ] as $m) {
+ $counts[] = (int) ((strlen($m) - 1) / 3);
+ }
+ sort($counts);
+ foreach ($counts as $count) {
+ $path = preg_replace('#(([\\\\/]([.]?[\\\\/])*[^\\\\/.]+){' . $count .
+ '}[\\\\/]([.]?[\\\\/])*([.][.][\\\\/]([.]?[\\\\/])*){' . $count . '})(?=[^.])#',
+ $this->ds, $path);
+ }
}
- if ($realpath === true && (($path[0] !== '/' && DS == '/') || ($path[1] !== ':' && DS != '/'))) {
- $path = getcwd() . DS . $path;
- }
- while ((strpos($path, '.' . DS) !== false) || (strpos($path, DS . DS) !== false)) {
- $path = preg_replace($pattern, DS, $path);
- }
- if ($realpath === false && ($path[0] == '/' || $path[1] == ':')) {
- $path = str_ireplace(getcwd(), '.', $path);
- }
- return $path;
+ return $parts[ 'root' ] . $path;
+ }
+
+ /**
+ * Empty template objects cache
+ */
+ public function _clearTemplateCache()
+ {
+ Smarty_Internal_Template::$isCacheTplObj = array();
+ Smarty_Internal_Template::$tplObjCache = array();
+ }
+
+ /**
+ * Get Smarty object
+ *
+ * @return Smarty
+ */
+ public function _getSmartyObj()
+ {
+ return $this;
}
/**
@@ -1329,14 +1402,6 @@ class Smarty extends Smarty_Internal_TemplateBase
}
/**
- * Class destructor
- */
- public function __destruct()
- {
- $i = 0;// intentionally left blank
- }
-
- /**
* <<magic>> Generic getter.
* Calls the appropriate getter function.
* Issues an E_USER_NOTICE if no valid getter is found.
@@ -1347,15 +1412,17 @@ class Smarty extends Smarty_Internal_TemplateBase
*/
public function __get($name)
{
-
- if (isset(self::$accessMap[$name])) {
- $method = 'get' . self::$accessMap[$name];
+ if (isset($this->accessMap[ $name ])) {
+ $method = 'get' . $this->accessMap[ $name ];
return $this->{$method}();
- } elseif (in_array($name, self::$obsoleteProperties)) {
+ } elseif (isset($this->_cache[ $name ])) {
+ return $this->_cache[ $name ];
+ } elseif (in_array($name, $this->obsoleteProperties)) {
return null;
} else {
trigger_error('Undefined property: ' . get_class($this) . '::$' . $name, E_USER_NOTICE);
}
+ return null;
}
/**
@@ -1368,10 +1435,10 @@ class Smarty extends Smarty_Internal_TemplateBase
*/
public function __set($name, $value)
{
- if (isset(self::$accessMap[$name])) {
- $method = 'set' . self::$accessMap[$name];
+ if (isset($this->accessMap[ $name ])) {
+ $method = 'set' . $this->accessMap[ $name ];
$this->{$method}($value);
- } elseif (in_array($name, self::$obsoleteProperties)) {
+ } elseif (in_array($name, $this->obsoleteProperties)) {
return;
} else {
if (is_object($value) && method_exists($value, $name)) {
@@ -1393,17 +1460,17 @@ class Smarty extends Smarty_Internal_TemplateBase
* @param $errline
* @param $errcontext
*
- * @return boolean
+ * @return bool|void
*/
public static function mutingErrorHandler($errno, $errstr, $errfile, $errline, $errcontext)
{
$_is_muted_directory = false;
// add the SMARTY_DIR to the list of muted directories
- if (!isset(Smarty::$_muted_directories[SMARTY_DIR])) {
+ if (!isset(Smarty::$_muted_directories[ SMARTY_DIR ])) {
$smarty_dir = realpath(SMARTY_DIR);
if ($smarty_dir !== false) {
- Smarty::$_muted_directories[SMARTY_DIR] =
+ Smarty::$_muted_directories[ SMARTY_DIR ] =
array('file' => $smarty_dir, 'length' => strlen($smarty_dir),);
}
}
@@ -1415,17 +1482,16 @@ class Smarty extends Smarty_Internal_TemplateBase
$file = realpath($key);
if ($file === false) {
// this directory does not exist, remove and skip it
- unset(Smarty::$_muted_directories[$key]);
+ unset(Smarty::$_muted_directories[ $key ]);
continue;
}
$dir = array('file' => $file, 'length' => strlen($file),);
}
- if (!strncmp($errfile, $dir['file'], $dir['length'])) {
+ if (!strncmp($errfile, $dir[ 'file' ], $dir[ 'length' ])) {
$_is_muted_directory = true;
break;
}
}
-
// pass to next error handler if this error did not occur inside SMARTY_DIR
// or the error was within smarty but masked to be ignored
if (!$_is_muted_directory || ($errno && $errno & error_reporting())) {
@@ -1436,6 +1502,7 @@ class Smarty extends Smarty_Internal_TemplateBase
return false;
}
}
+ return;
}
/**
diff --git a/library/Smarty/libs/SmartyBC.class.php b/vendor/smarty/smarty/libs/SmartyBC.class.php
index 1dd529c9c..3955e4f24 100644
--- a/library/Smarty/libs/SmartyBC.class.php
+++ b/vendor/smarty/smarty/libs/SmartyBC.class.php
@@ -31,7 +31,7 @@
require_once(dirname(__FILE__) . '/Smarty.class.php');
/**
- * Smarty Backward Compatability Wrapper Class
+ * Smarty Backward Compatibility Wrapper Class
*
* @package Smarty
*/
@@ -54,11 +54,10 @@ class SmartyBC extends Smarty
/**
* Initialize new SmartyBC object
*
- * @param array $options options to set during initialization, e.g. array( 'forceCompile' => false )
*/
- public function __construct(array $options = array())
+ public function __construct()
{
- parent::__construct($options);
+ parent::__construct();
}
/**
@@ -108,7 +107,7 @@ class SmartyBC extends Smarty
}
/**
- * Unregisters custom function
+ * Unregister custom function
*
* @param string $function name of template function
*/
@@ -129,7 +128,8 @@ class SmartyBC extends Smarty
* @throws SmartyException
* @internal param array $block_functs list of methods that are block format
*/
- public function register_object($object, $object_impl, $allowed = array(), $smarty_args = true, $block_methods = array())
+ public function register_object($object, $object_impl, $allowed = array(), $smarty_args = true,
+ $block_methods = array())
{
settype($allowed, 'array');
settype($smarty_args, 'boolean');
@@ -137,7 +137,7 @@ class SmartyBC extends Smarty
}
/**
- * Unregisters object
+ * Unregister object
*
* @param string $object name of template object
*/
@@ -160,7 +160,7 @@ class SmartyBC extends Smarty
}
/**
- * Unregisters block function
+ * Unregister block function
*
* @param string $block name of template function
*/
@@ -182,7 +182,7 @@ class SmartyBC extends Smarty
}
/**
- * Unregisters compiler function
+ * Unregister compiler function
*
* @param string $function name of template function
*/
@@ -203,7 +203,7 @@ class SmartyBC extends Smarty
}
/**
- * Unregisters modifier
+ * Unregister modifier
*
* @param string $modifier name of template modifier
*/
@@ -224,7 +224,7 @@ class SmartyBC extends Smarty
}
/**
- * Unregisters a resource
+ * Unregister a resource
*
* @param string $type name of resource
*/
@@ -245,7 +245,7 @@ class SmartyBC extends Smarty
}
/**
- * Unregisters a prefilter function
+ * Unregister a prefilter function
*
* @param callable $function
*/
@@ -266,7 +266,7 @@ class SmartyBC extends Smarty
}
/**
- * Unregisters a postfilter function
+ * Unregister a postfilter function
*
* @param callable $function
*/
@@ -287,7 +287,7 @@ class SmartyBC extends Smarty
}
/**
- * Unregisters an outputfilter function
+ * Unregister an outputfilter function
*
* @param callable $function
*/
diff --git a/vendor/smarty/smarty/libs/bootstrap.php b/vendor/smarty/smarty/libs/bootstrap.php
new file mode 100644
index 000000000..32096087f
--- /dev/null
+++ b/vendor/smarty/smarty/libs/bootstrap.php
@@ -0,0 +1,17 @@
+<?php
+/*
+ * This file is part of the Smarty package.
+ *
+ * (c) Sebastian Bergmann <sebastian@phpunit.de>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Load and register Smarty Autoloader
+ */
+if (!class_exists('Smarty_Autoloader')) {
+ require __DIR__ . '/Autoloader.php';
+}
+Smarty_Autoloader::register();
diff --git a/library/Smarty/libs/debug.tpl b/vendor/smarty/smarty/libs/debug.tpl
index 5526cbca8..5526cbca8 100644
--- a/library/Smarty/libs/debug.tpl
+++ b/vendor/smarty/smarty/libs/debug.tpl
diff --git a/library/Smarty/libs/plugins/block.textformat.php b/vendor/smarty/smarty/libs/plugins/block.textformat.php
index abf544939..e2c5e3de4 100644
--- a/library/Smarty/libs/plugins/block.textformat.php
+++ b/vendor/smarty/smarty/libs/plugins/block.textformat.php
@@ -38,6 +38,9 @@ function smarty_block_textformat($params, $content, $template, &$repeat)
if (is_null($content)) {
return;
}
+ if (Smarty::$_MBSTRING && !is_callable('smarty_mb_wordwrap')) {
+ require_once(SMARTY_PLUGINS_DIR . 'shared.mb_wordwrap.php');
+ }
$style = null;
$indent = 0;
@@ -83,14 +86,15 @@ function smarty_block_textformat($params, $content, $template, &$repeat)
continue;
}
// convert mult. spaces & special chars to single space
- $_paragraph = preg_replace(array('!\s+!' . Smarty::$_UTF8_MODIFIER, '!(^\s+)|(\s+$)!' . Smarty::$_UTF8_MODIFIER), array(' ', ''), $_paragraph);
+ $_paragraph =
+ preg_replace(array('!\s+!' . Smarty::$_UTF8_MODIFIER, '!(^\s+)|(\s+$)!' . Smarty::$_UTF8_MODIFIER),
+ array(' ', ''), $_paragraph);
// indent first line
if ($indent_first > 0) {
$_paragraph = str_repeat($indent_char, $indent_first) . $_paragraph;
}
// wordwrap sentences
if (Smarty::$_MBSTRING) {
- require_once(SMARTY_PLUGINS_DIR . 'shared.mb_wordwrap.php');
$_paragraph = smarty_mb_wordwrap($_paragraph, $wrap - $indent, $wrap_char, $wrap_cut);
} else {
$_paragraph = wordwrap($_paragraph, $wrap - $indent, $wrap_char, $wrap_cut);
diff --git a/vendor/smarty/smarty/libs/plugins/function.counter.php b/vendor/smarty/smarty/libs/plugins/function.counter.php
new file mode 100644
index 000000000..bcc8f498c
--- /dev/null
+++ b/vendor/smarty/smarty/libs/plugins/function.counter.php
@@ -0,0 +1,73 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsFunction
+ */
+
+/**
+ * Smarty {counter} function plugin
+ * Type: function<br>
+ * Name: counter<br>
+ * Purpose: print out a counter value
+ *
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @link http://www.smarty.net/manual/en/language.function.counter.php {counter}
+ * (Smarty online manual)
+ *
+ * @param array $params parameters
+ * @param Smarty_Internal_Template $template template object
+ *
+ * @return string|null
+ */
+function smarty_function_counter($params, $template)
+{
+ static $counters = array();
+
+ $name = (isset($params[ 'name' ])) ? $params[ 'name' ] : 'default';
+ if (!isset($counters[ $name ])) {
+ $counters[ $name ] = array('start' => 1, 'skip' => 1, 'direction' => 'up', 'count' => 1);
+ }
+ $counter =& $counters[ $name ];
+
+ if (isset($params[ 'start' ])) {
+ $counter[ 'start' ] = $counter[ 'count' ] = (int) $params[ 'start' ];
+ }
+
+ if (!empty($params[ 'assign' ])) {
+ $counter[ 'assign' ] = $params[ 'assign' ];
+ }
+
+ if (isset($counter[ 'assign' ])) {
+ $template->assign($counter[ 'assign' ], $counter[ 'count' ]);
+ }
+
+ if (isset($params[ 'print' ])) {
+ $print = (bool) $params[ 'print' ];
+ } else {
+ $print = empty($counter[ 'assign' ]);
+ }
+
+ if ($print) {
+ $retval = $counter[ 'count' ];
+ } else {
+ $retval = null;
+ }
+
+ if (isset($params[ 'skip' ])) {
+ $counter[ 'skip' ] = $params[ 'skip' ];
+ }
+
+ if (isset($params[ 'direction' ])) {
+ $counter[ 'direction' ] = $params[ 'direction' ];
+ }
+
+ if ($counter[ 'direction' ] == "down") {
+ $counter[ 'count' ] -= $counter[ 'skip' ];
+ } else {
+ $counter[ 'count' ] += $counter[ 'skip' ];
+ }
+
+ return $retval;
+}
diff --git a/library/Smarty/libs/plugins/function.cycle.php b/vendor/smarty/smarty/libs/plugins/function.cycle.php
index 8dc5cd9d5..a76d49aed 100644
--- a/library/Smarty/libs/plugins/function.cycle.php
+++ b/vendor/smarty/smarty/libs/plugins/function.cycle.php
@@ -48,58 +48,56 @@ function smarty_function_cycle($params, $template)
{
static $cycle_vars;
- $name = (empty($params['name'])) ? 'default' : $params['name'];
- $print = (isset($params['print'])) ? (bool) $params['print'] : true;
- $advance = (isset($params['advance'])) ? (bool) $params['advance'] : true;
- $reset = (isset($params['reset'])) ? (bool) $params['reset'] : false;
+ $name = (empty($params[ 'name' ])) ? 'default' : $params[ 'name' ];
+ $print = (isset($params[ 'print' ])) ? (bool) $params[ 'print' ] : true;
+ $advance = (isset($params[ 'advance' ])) ? (bool) $params[ 'advance' ] : true;
+ $reset = (isset($params[ 'reset' ])) ? (bool) $params[ 'reset' ] : false;
- if (!isset($params['values'])) {
- if (!isset($cycle_vars[$name]['values'])) {
+ if (!isset($params[ 'values' ])) {
+ if (!isset($cycle_vars[ $name ][ 'values' ])) {
trigger_error("cycle: missing 'values' parameter");
return;
}
} else {
- if (isset($cycle_vars[$name]['values'])
- && $cycle_vars[$name]['values'] != $params['values']
- ) {
- $cycle_vars[$name]['index'] = 0;
+ if (isset($cycle_vars[ $name ][ 'values' ]) && $cycle_vars[ $name ][ 'values' ] != $params[ 'values' ]) {
+ $cycle_vars[ $name ][ 'index' ] = 0;
}
- $cycle_vars[$name]['values'] = $params['values'];
+ $cycle_vars[ $name ][ 'values' ] = $params[ 'values' ];
}
- if (isset($params['delimiter'])) {
- $cycle_vars[$name]['delimiter'] = $params['delimiter'];
- } elseif (!isset($cycle_vars[$name]['delimiter'])) {
- $cycle_vars[$name]['delimiter'] = ',';
+ if (isset($params[ 'delimiter' ])) {
+ $cycle_vars[ $name ][ 'delimiter' ] = $params[ 'delimiter' ];
+ } elseif (!isset($cycle_vars[ $name ][ 'delimiter' ])) {
+ $cycle_vars[ $name ][ 'delimiter' ] = ',';
}
- if (is_array($cycle_vars[$name]['values'])) {
- $cycle_array = $cycle_vars[$name]['values'];
+ if (is_array($cycle_vars[ $name ][ 'values' ])) {
+ $cycle_array = $cycle_vars[ $name ][ 'values' ];
} else {
- $cycle_array = explode($cycle_vars[$name]['delimiter'], $cycle_vars[$name]['values']);
+ $cycle_array = explode($cycle_vars[ $name ][ 'delimiter' ], $cycle_vars[ $name ][ 'values' ]);
}
- if (!isset($cycle_vars[$name]['index']) || $reset) {
- $cycle_vars[$name]['index'] = 0;
+ if (!isset($cycle_vars[ $name ][ 'index' ]) || $reset) {
+ $cycle_vars[ $name ][ 'index' ] = 0;
}
- if (isset($params['assign'])) {
+ if (isset($params[ 'assign' ])) {
$print = false;
- $template->assign($params['assign'], $cycle_array[$cycle_vars[$name]['index']]);
+ $template->assign($params[ 'assign' ], $cycle_array[ $cycle_vars[ $name ][ 'index' ] ]);
}
if ($print) {
- $retval = $cycle_array[$cycle_vars[$name]['index']];
+ $retval = $cycle_array[ $cycle_vars[ $name ][ 'index' ] ];
} else {
$retval = null;
}
if ($advance) {
- if ($cycle_vars[$name]['index'] >= count($cycle_array) - 1) {
- $cycle_vars[$name]['index'] = 0;
+ if ($cycle_vars[ $name ][ 'index' ] >= count($cycle_array) - 1) {
+ $cycle_vars[ $name ][ 'index' ] = 0;
} else {
- $cycle_vars[$name]['index'] ++;
+ $cycle_vars[ $name ][ 'index' ] ++;
}
}
diff --git a/library/Smarty/libs/plugins/function.fetch.php b/vendor/smarty/smarty/libs/plugins/function.fetch.php
index 3506d4a8d..cb60dd918 100644
--- a/library/Smarty/libs/plugins/function.fetch.php
+++ b/vendor/smarty/smarty/libs/plugins/function.fetch.php
@@ -24,31 +24,31 @@
*/
function smarty_function_fetch($params, $template)
{
- if (empty($params['file'])) {
+ if (empty($params[ 'file' ])) {
trigger_error("[plugin] fetch parameter 'file' cannot be empty", E_USER_NOTICE);
return;
}
// strip file protocol
- if (stripos($params['file'], 'file://') === 0) {
- $params['file'] = substr($params['file'], 7);
+ if (stripos($params[ 'file' ], 'file://') === 0) {
+ $params[ 'file' ] = substr($params[ 'file' ], 7);
}
- $protocol = strpos($params['file'], '://');
+ $protocol = strpos($params[ 'file' ], '://');
if ($protocol !== false) {
- $protocol = strtolower(substr($params['file'], 0, $protocol));
+ $protocol = strtolower(substr($params[ 'file' ], 0, $protocol));
}
if (isset($template->smarty->security_policy)) {
if ($protocol) {
// remote resource (or php stream, …)
- if (!$template->smarty->security_policy->isTrustedUri($params['file'])) {
+ if (!$template->smarty->security_policy->isTrustedUri($params[ 'file' ])) {
return;
}
} else {
// local file
- if (!$template->smarty->security_policy->isTrustedResourceDir($params['file'])) {
+ if (!$template->smarty->security_policy->isTrustedResourceDir($params[ 'file' ])) {
return;
}
}
@@ -57,26 +57,26 @@ function smarty_function_fetch($params, $template)
$content = '';
if ($protocol == 'http') {
// http fetch
- if ($uri_parts = parse_url($params['file'])) {
+ if ($uri_parts = parse_url($params[ 'file' ])) {
// set defaults
- $host = $server_name = $uri_parts['host'];
+ $host = $server_name = $uri_parts[ 'host' ];
$timeout = 30;
$accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*";
$agent = "Smarty Template Engine " . Smarty::SMARTY_VERSION;
$referer = "";
- $uri = !empty($uri_parts['path']) ? $uri_parts['path'] : '/';
- $uri .= !empty($uri_parts['query']) ? '?' . $uri_parts['query'] : '';
+ $uri = !empty($uri_parts[ 'path' ]) ? $uri_parts[ 'path' ] : '/';
+ $uri .= !empty($uri_parts[ 'query' ]) ? '?' . $uri_parts[ 'query' ] : '';
$_is_proxy = false;
- if (empty($uri_parts['port'])) {
+ if (empty($uri_parts[ 'port' ])) {
$port = 80;
} else {
- $port = $uri_parts['port'];
+ $port = $uri_parts[ 'port' ];
}
- if (!empty($uri_parts['user'])) {
- $user = $uri_parts['user'];
+ if (!empty($uri_parts[ 'user' ])) {
+ $user = $uri_parts[ 'user' ];
}
- if (!empty($uri_parts['pass'])) {
- $pass = $uri_parts['pass'];
+ if (!empty($uri_parts[ 'pass' ])) {
+ $pass = $uri_parts[ 'pass' ];
}
// loop through parameters, setup headers
foreach ($params as $param_key => $param_value) {
@@ -163,7 +163,7 @@ function smarty_function_fetch($params, $template)
return;
} else {
if ($_is_proxy) {
- fputs($fp, 'GET ' . $params['file'] . " HTTP/1.0\r\n");
+ fputs($fp, 'GET ' . $params[ 'file' ] . " HTTP/1.0\r\n");
} else {
fputs($fp, "GET $uri HTTP/1.0\r\n");
}
@@ -195,10 +195,10 @@ function smarty_function_fetch($params, $template)
fclose($fp);
$csplit = preg_split("!\r\n\r\n!", $content, 2);
- $content = $csplit[1];
+ $content = $csplit[ 1 ];
- if (!empty($params['assign_headers'])) {
- $template->assign($params['assign_headers'], preg_split("!\r\n!", $csplit[0]));
+ if (!empty($params[ 'assign_headers' ])) {
+ $template->assign($params[ 'assign_headers' ], preg_split("!\r\n!", $csplit[ 0 ]));
}
}
} else {
@@ -207,14 +207,14 @@ function smarty_function_fetch($params, $template)
return;
}
} else {
- $content = @file_get_contents($params['file']);
+ $content = @file_get_contents($params[ 'file' ]);
if ($content === false) {
- throw new SmartyException("{fetch} cannot read resource '" . $params['file'] . "'");
+ throw new SmartyException("{fetch} cannot read resource '" . $params[ 'file' ] . "'");
}
}
- if (!empty($params['assign'])) {
- $template->assign($params['assign'], $content);
+ if (!empty($params[ 'assign' ])) {
+ $template->assign($params[ 'assign' ], $content);
} else {
return $content;
}
diff --git a/library/Smarty/libs/plugins/function.html_checkboxes.php b/vendor/smarty/smarty/libs/plugins/function.html_checkboxes.php
index d78680368..04ce45733 100644
--- a/library/Smarty/libs/plugins/function.html_checkboxes.php
+++ b/vendor/smarty/smarty/libs/plugins/function.html_checkboxes.php
@@ -45,7 +45,9 @@
*/
function smarty_function_html_checkboxes($params, $template)
{
- require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
+ if (!is_callable('smarty_function_escape_special_chars')) {
+ require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
+ }
$name = 'checkbox';
$values = null;
@@ -90,19 +92,21 @@ function smarty_function_html_checkboxes($params, $template)
if (method_exists($_sel, "__toString")) {
$_sel = smarty_function_escape_special_chars((string) $_sel->__toString());
} else {
- trigger_error("html_checkboxes: selected attribute contains an object of class '" . get_class($_sel) . "' without __toString() method", E_USER_NOTICE);
+ trigger_error("html_checkboxes: selected attribute contains an object of class '" .
+ get_class($_sel) . "' without __toString() method", E_USER_NOTICE);
continue;
}
} else {
$_sel = smarty_function_escape_special_chars((string) $_sel);
}
- $selected[$_sel] = true;
+ $selected[ $_sel ] = true;
}
} elseif (is_object($_val)) {
if (method_exists($_val, "__toString")) {
$selected = smarty_function_escape_special_chars((string) $_val->__toString());
} else {
- trigger_error("html_checkboxes: selected attribute is an object of class '" . get_class($_val) . "' without __toString() method", E_USER_NOTICE);
+ trigger_error("html_checkboxes: selected attribute is an object of class '" . get_class($_val) .
+ "' without __toString() method", E_USER_NOTICE);
}
} else {
$selected = smarty_function_escape_special_chars((string) $_val);
@@ -110,7 +114,8 @@ function smarty_function_html_checkboxes($params, $template)
break;
case 'checkboxes':
- trigger_error('html_checkboxes: the use of the "checkboxes" attribute is deprecated, use "options" instead', E_USER_WARNING);
+ trigger_error('html_checkboxes: the use of the "checkboxes" attribute is deprecated, use "options" instead',
+ E_USER_WARNING);
$options = (array) $_val;
break;
@@ -122,9 +127,10 @@ function smarty_function_html_checkboxes($params, $template)
case 'disabled':
case 'readonly':
- if (!empty($params['strict'])) {
+ if (!empty($params[ 'strict' ])) {
if (!is_scalar($_val)) {
- trigger_error("html_options: $_key attribute must be a scalar, only boolean true or string '$_key' will actually add the attribute", E_USER_NOTICE);
+ trigger_error("html_options: $_key attribute must be a scalar, only boolean true or string '$_key' will actually add the attribute",
+ E_USER_NOTICE);
}
if ($_val === true || $_val === $_key) {
@@ -153,23 +159,28 @@ function smarty_function_html_checkboxes($params, $template)
if (isset($options)) {
foreach ($options as $_key => $_val) {
- $_html_result[] = smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $label_ids, $escape);
+ $_html_result[] =
+ smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels,
+ $label_ids, $escape);
}
} else {
foreach ($values as $_i => $_key) {
- $_val = isset($output[$_i]) ? $output[$_i] : '';
- $_html_result[] = smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $label_ids, $escape);
+ $_val = isset($output[ $_i ]) ? $output[ $_i ] : '';
+ $_html_result[] =
+ smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels,
+ $label_ids, $escape);
}
}
- if (!empty($params['assign'])) {
- $template->assign($params['assign'], $_html_result);
+ if (!empty($params[ 'assign' ])) {
+ $template->assign($params[ 'assign' ], $_html_result);
} else {
return implode("\n", $_html_result);
}
}
-function smarty_function_html_checkboxes_output($name, $value, $output, $selected, $extra, $separator, $labels, $label_ids, $escape = true)
+function smarty_function_html_checkboxes_output($name, $value, $output, $selected, $extra, $separator, $labels,
+ $label_ids, $escape = true)
{
$_output = '';
@@ -177,7 +188,8 @@ function smarty_function_html_checkboxes_output($name, $value, $output, $selecte
if (method_exists($value, "__toString")) {
$value = (string) $value->__toString();
} else {
- trigger_error("html_options: value is an object of class '" . get_class($value) . "' without __toString() method", E_USER_NOTICE);
+ trigger_error("html_options: value is an object of class '" . get_class($value) .
+ "' without __toString() method", E_USER_NOTICE);
return '';
}
@@ -189,7 +201,8 @@ function smarty_function_html_checkboxes_output($name, $value, $output, $selecte
if (method_exists($output, "__toString")) {
$output = (string) $output->__toString();
} else {
- trigger_error("html_options: output is an object of class '" . get_class($output) . "' without __toString() method", E_USER_NOTICE);
+ trigger_error("html_options: output is an object of class '" . get_class($output) .
+ "' without __toString() method", E_USER_NOTICE);
return '';
}
@@ -199,7 +212,8 @@ function smarty_function_html_checkboxes_output($name, $value, $output, $selecte
if ($labels) {
if ($label_ids) {
- $_id = smarty_function_escape_special_chars(preg_replace('![^\w\-\.]!' . Smarty::$_UTF8_MODIFIER, '_', $name . '_' . $value));
+ $_id = smarty_function_escape_special_chars(preg_replace('![^\w\-\.]!' . Smarty::$_UTF8_MODIFIER, '_',
+ $name . '_' . $value));
$_output .= '<label for="' . $_id . '">';
} else {
$_output .= '<label>';
@@ -219,7 +233,7 @@ function smarty_function_html_checkboxes_output($name, $value, $output, $selecte
}
if (is_array($selected)) {
- if (isset($selected[$value])) {
+ if (isset($selected[ $value ])) {
$_output .= ' checked="checked"';
}
} elseif ($value === $selected) {
diff --git a/library/Smarty/libs/plugins/function.html_image.php b/vendor/smarty/smarty/libs/plugins/function.html_image.php
index 5037e8bd1..6da8fc544 100644
--- a/library/Smarty/libs/plugins/function.html_image.php
+++ b/vendor/smarty/smarty/libs/plugins/function.html_image.php
@@ -38,7 +38,9 @@
*/
function smarty_function_html_image($params, $template)
{
- require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
+ if (!is_callable('smarty_function_escape_special_chars')) {
+ require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
+ }
$alt = '';
$file = '';
@@ -48,7 +50,7 @@ function smarty_function_html_image($params, $template)
$prefix = '';
$suffix = '';
$path_prefix = '';
- $basedir = isset($_SERVER['DOCUMENT_ROOT']) ? $_SERVER['DOCUMENT_ROOT'] : '';
+ $basedir = isset($_SERVER[ 'DOCUMENT_ROOT' ]) ? $_SERVER[ 'DOCUMENT_ROOT' ] : '';
foreach ($params as $_key => $_val) {
switch ($_key) {
case 'file':
@@ -90,26 +92,26 @@ function smarty_function_html_image($params, $template)
return;
}
- if ($file[0] == '/') {
+ if ($file[ 0 ] == '/') {
$_image_path = $basedir . $file;
} else {
$_image_path = $file;
}
// strip file protocol
- if (stripos($params['file'], 'file://') === 0) {
- $params['file'] = substr($params['file'], 7);
+ if (stripos($params[ 'file' ], 'file://') === 0) {
+ $params[ 'file' ] = substr($params[ 'file' ], 7);
}
- $protocol = strpos($params['file'], '://');
+ $protocol = strpos($params[ 'file' ], '://');
if ($protocol !== false) {
- $protocol = strtolower(substr($params['file'], 0, $protocol));
+ $protocol = strtolower(substr($params[ 'file' ], 0, $protocol));
}
if (isset($template->smarty->security_policy)) {
if ($protocol) {
// remote resource (or php stream, …)
- if (!$template->smarty->security_policy->isTrustedUri($params['file'])) {
+ if (!$template->smarty->security_policy->isTrustedUri($params[ 'file' ])) {
return;
}
} else {
@@ -120,7 +122,7 @@ function smarty_function_html_image($params, $template)
}
}
- if (!isset($params['width']) || !isset($params['height'])) {
+ if (!isset($params[ 'width' ]) || !isset($params[ 'height' ])) {
// FIXME: (rodneyrehm) getimagesize() loads the complete file off a remote resource, use custom [jpg,png,gif]header reader!
if (!$_image_data = @getimagesize($_image_path)) {
if (!file_exists($_image_path)) {
@@ -138,26 +140,27 @@ function smarty_function_html_image($params, $template)
}
}
- if (!isset($params['width'])) {
- $width = $_image_data[0];
+ if (!isset($params[ 'width' ])) {
+ $width = $_image_data[ 0 ];
}
- if (!isset($params['height'])) {
- $height = $_image_data[1];
+ if (!isset($params[ 'height' ])) {
+ $height = $_image_data[ 1 ];
}
}
- if (isset($params['dpi'])) {
- if (strstr($_SERVER['HTTP_USER_AGENT'], 'Mac')) {
+ if (isset($params[ 'dpi' ])) {
+ if (strstr($_SERVER[ 'HTTP_USER_AGENT' ], 'Mac')) {
// FIXME: (rodneyrehm) wrong dpi assumption
// don't know who thought this up… even if it was true in 1998, it's definitely wrong in 2011.
$dpi_default = 72;
} else {
$dpi_default = 96;
}
- $_resize = $dpi_default / $params['dpi'];
+ $_resize = $dpi_default / $params[ 'dpi' ];
$width = round($width * $_resize);
$height = round($height * $_resize);
}
- return $prefix . '<img src="' . $path_prefix . $file . '" alt="' . $alt . '" width="' . $width . '" height="' . $height . '"' . $extra . ' />' . $suffix;
+ return $prefix . '<img src="' . $path_prefix . $file . '" alt="' . $alt . '" width="' . $width . '" height="' .
+ $height . '"' . $extra . ' />' . $suffix;
}
diff --git a/library/Smarty/libs/plugins/function.html_options.php b/vendor/smarty/smarty/libs/plugins/function.html_options.php
index 7ec3e065c..bc8f36e0b 100644
--- a/library/Smarty/libs/plugins/function.html_options.php
+++ b/vendor/smarty/smarty/libs/plugins/function.html_options.php
@@ -35,7 +35,9 @@
*/
function smarty_function_html_options($params)
{
- require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
+ if (!is_callable('smarty_function_escape_special_chars')) {
+ require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
+ }
$name = null;
$values = null;
@@ -72,19 +74,21 @@ function smarty_function_html_options($params)
if (method_exists($_sel, "__toString")) {
$_sel = smarty_function_escape_special_chars((string) $_sel->__toString());
} else {
- trigger_error("html_options: selected attribute contains an object of class '" . get_class($_sel) . "' without __toString() method", E_USER_NOTICE);
+ trigger_error("html_options: selected attribute contains an object of class '" .
+ get_class($_sel) . "' without __toString() method", E_USER_NOTICE);
continue;
}
} else {
$_sel = smarty_function_escape_special_chars((string) $_sel);
}
- $selected[$_sel] = true;
+ $selected[ $_sel ] = true;
}
} elseif (is_object($_val)) {
if (method_exists($_val, "__toString")) {
$selected = smarty_function_escape_special_chars((string) $_val->__toString());
} else {
- trigger_error("html_options: selected attribute is an object of class '" . get_class($_val) . "' without __toString() method", E_USER_NOTICE);
+ trigger_error("html_options: selected attribute is an object of class '" . get_class($_val) .
+ "' without __toString() method", E_USER_NOTICE);
}
} else {
$selected = smarty_function_escape_special_chars((string) $_val);
@@ -96,9 +100,10 @@ function smarty_function_html_options($params)
case 'disabled':
case 'readonly':
- if (!empty($params['strict'])) {
+ if (!empty($params[ 'strict' ])) {
if (!is_scalar($_val)) {
- trigger_error("html_options: $_key attribute must be a scalar, only boolean true or string '$_key' will actually add the attribute", E_USER_NOTICE);
+ trigger_error("html_options: $_key attribute must be a scalar, only boolean true or string '$_key' will actually add the attribute",
+ E_USER_NOTICE);
}
if ($_val === true || $_val === $_key) {
@@ -134,7 +139,7 @@ function smarty_function_html_options($params)
}
} else {
foreach ($values as $_i => $_key) {
- $_val = isset($output[$_i]) ? $output[$_i] : '';
+ $_val = isset($output[ $_i ]) ? $output[ $_i ] : '';
$_html_result .= smarty_function_html_options_optoutput($_key, $_val, $selected, $id, $class, $_idx);
}
}
@@ -142,7 +147,9 @@ function smarty_function_html_options($params)
if (!empty($name)) {
$_html_class = !empty($class) ? ' class="' . $class . '"' : '';
$_html_id = !empty($id) ? ' id="' . $id . '"' : '';
- $_html_result = '<select name="' . $name . '"' . $_html_class . $_html_id . $extra . '>' . "\n" . $_html_result . '</select>' . "\n";
+ $_html_result =
+ '<select name="' . $name . '"' . $_html_class . $_html_id . $extra . '>' . "\n" . $_html_result .
+ '</select>' . "\n";
}
return $_html_result;
@@ -154,7 +161,7 @@ function smarty_function_html_options_optoutput($key, $value, $selected, $id, $c
$_key = smarty_function_escape_special_chars($key);
$_html_result = '<option value="' . $_key . '"';
if (is_array($selected)) {
- if (isset($selected[$_key])) {
+ if (isset($selected[ $_key ])) {
$_html_result .= ' selected="selected"';
}
} elseif ($_key === $selected) {
@@ -166,7 +173,8 @@ function smarty_function_html_options_optoutput($key, $value, $selected, $id, $c
if (method_exists($value, "__toString")) {
$value = smarty_function_escape_special_chars((string) $value->__toString());
} else {
- trigger_error("html_options: value is an object of class '" . get_class($value) . "' without __toString() method", E_USER_NOTICE);
+ trigger_error("html_options: value is an object of class '" . get_class($value) .
+ "' without __toString() method", E_USER_NOTICE);
return '';
}
@@ -177,7 +185,9 @@ function smarty_function_html_options_optoutput($key, $value, $selected, $id, $c
$idx ++;
} else {
$_idx = 0;
- $_html_result = smarty_function_html_options_optgroup($key, $value, $selected, !empty($id) ? ($id . '-' . $idx) : null, $class, $_idx);
+ $_html_result =
+ smarty_function_html_options_optgroup($key, $value, $selected, !empty($id) ? ($id . '-' . $idx) : null,
+ $class, $_idx);
$idx ++;
}
diff --git a/library/Smarty/libs/plugins/function.html_radios.php b/vendor/smarty/smarty/libs/plugins/function.html_radios.php
index f121d5eae..6ef84328a 100644
--- a/library/Smarty/libs/plugins/function.html_radios.php
+++ b/vendor/smarty/smarty/libs/plugins/function.html_radios.php
@@ -45,7 +45,9 @@
*/
function smarty_function_html_radios($params, $template)
{
- require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
+ if (!is_callable('smarty_function_escape_special_chars')) {
+ require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
+ }
$name = 'radio';
$values = null;
@@ -73,7 +75,8 @@ function smarty_function_html_radios($params, $template)
if (method_exists($_val, "__toString")) {
$selected = smarty_function_escape_special_chars((string) $_val->__toString());
} else {
- trigger_error("html_radios: selected attribute is an object of class '" . get_class($_val) . "' without __toString() method", E_USER_NOTICE);
+ trigger_error("html_radios: selected attribute is an object of class '" . get_class($_val) .
+ "' without __toString() method", E_USER_NOTICE);
}
} else {
$selected = (string) $_val;
@@ -96,7 +99,8 @@ function smarty_function_html_radios($params, $template)
break;
case 'radios':
- trigger_error('html_radios: the use of the "radios" attribute is deprecated, use "options" instead', E_USER_WARNING);
+ trigger_error('html_radios: the use of the "radios" attribute is deprecated, use "options" instead',
+ E_USER_WARNING);
$options = (array) $_val;
break;
@@ -108,9 +112,10 @@ function smarty_function_html_radios($params, $template)
case 'disabled':
case 'readonly':
- if (!empty($params['strict'])) {
+ if (!empty($params[ 'strict' ])) {
if (!is_scalar($_val)) {
- trigger_error("html_options: $_key attribute must be a scalar, only boolean true or string '$_key' will actually add the attribute", E_USER_NOTICE);
+ trigger_error("html_options: $_key attribute must be a scalar, only boolean true or string '$_key' will actually add the attribute",
+ E_USER_NOTICE);
}
if ($_val === true || $_val === $_key) {
@@ -141,23 +146,28 @@ function smarty_function_html_radios($params, $template)
if (isset($options)) {
foreach ($options as $_key => $_val) {
- $_html_result[] = smarty_function_html_radios_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $label_ids, $escape);
+ $_html_result[] =
+ smarty_function_html_radios_output($name, $_key, $_val, $selected, $extra, $separator, $labels,
+ $label_ids, $escape);
}
} else {
foreach ($values as $_i => $_key) {
- $_val = isset($output[$_i]) ? $output[$_i] : '';
- $_html_result[] = smarty_function_html_radios_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $label_ids, $escape);
+ $_val = isset($output[ $_i ]) ? $output[ $_i ] : '';
+ $_html_result[] =
+ smarty_function_html_radios_output($name, $_key, $_val, $selected, $extra, $separator, $labels,
+ $label_ids, $escape);
}
}
- if (!empty($params['assign'])) {
- $template->assign($params['assign'], $_html_result);
+ if (!empty($params[ 'assign' ])) {
+ $template->assign($params[ 'assign' ], $_html_result);
} else {
return implode("\n", $_html_result);
}
}
-function smarty_function_html_radios_output($name, $value, $output, $selected, $extra, $separator, $labels, $label_ids, $escape)
+function smarty_function_html_radios_output($name, $value, $output, $selected, $extra, $separator, $labels, $label_ids,
+ $escape)
{
$_output = '';
@@ -165,7 +175,8 @@ function smarty_function_html_radios_output($name, $value, $output, $selected, $
if (method_exists($value, "__toString")) {
$value = (string) $value->__toString();
} else {
- trigger_error("html_options: value is an object of class '" . get_class($value) . "' without __toString() method", E_USER_NOTICE);
+ trigger_error("html_options: value is an object of class '" . get_class($value) .
+ "' without __toString() method", E_USER_NOTICE);
return '';
}
@@ -177,7 +188,8 @@ function smarty_function_html_radios_output($name, $value, $output, $selected, $
if (method_exists($output, "__toString")) {
$output = (string) $output->__toString();
} else {
- trigger_error("html_options: output is an object of class '" . get_class($output) . "' without __toString() method", E_USER_NOTICE);
+ trigger_error("html_options: output is an object of class '" . get_class($output) .
+ "' without __toString() method", E_USER_NOTICE);
return '';
}
@@ -187,7 +199,8 @@ function smarty_function_html_radios_output($name, $value, $output, $selected, $
if ($labels) {
if ($label_ids) {
- $_id = smarty_function_escape_special_chars(preg_replace('![^\w\-\.]!' . Smarty::$_UTF8_MODIFIER, '_', $name . '_' . $value));
+ $_id = smarty_function_escape_special_chars(preg_replace('![^\w\-\.]!' . Smarty::$_UTF8_MODIFIER, '_',
+ $name . '_' . $value));
$_output .= '<label for="' . $_id . '">';
} else {
$_output .= '<label>';
diff --git a/library/Smarty/libs/plugins/function.html_select_date.php b/vendor/smarty/smarty/libs/plugins/function.html_select_date.php
index d66256651..3a48da0bb 100644
--- a/library/Smarty/libs/plugins/function.html_select_date.php
+++ b/vendor/smarty/smarty/libs/plugins/function.html_select_date.php
@@ -7,15 +7,6 @@
*/
/**
- * @ignore
- */
-require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
-/**
- * @ignore
- */
-require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php');
-
-/**
* Smarty {html_select_date} plugin
* Type: function<br>
* Name: html_select_date<br>
@@ -52,6 +43,12 @@ require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php');
*/
function smarty_function_html_select_date($params)
{
+ if (!is_callable('smarty_function_escape_special_chars')) {
+ require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
+ }
+ if (!is_callable('smarty_make_timestamp')) {
+ require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php');
+ }
// generate timestamps used for month names only
static $_month_timestamps = null;
static $_current_year = null;
@@ -59,7 +56,7 @@ function smarty_function_html_select_date($params)
$_current_year = date('Y');
$_month_timestamps = array();
for ($i = 1; $i <= 12; $i ++) {
- $_month_timestamps[$i] = mktime(0, 0, 0, $i, 1, 2000);
+ $_month_timestamps[ $i ] = mktime(0, 0, 0, $i, 1, 2000);
}
}
@@ -177,22 +174,21 @@ function smarty_function_html_select_date($params)
// Note: date() is faster than strftime()
// Note: explode(date()) is faster than date() date() date()
- if (isset($params['time']) && is_array($params['time'])) {
- if (isset($params['time'][$prefix . 'Year'])) {
+ if (isset($params[ 'time' ]) && is_array($params[ 'time' ])) {
+ if (isset($params[ 'time' ][ $prefix . 'Year' ])) {
// $_REQUEST[$field_array] given
foreach (array('Y' => 'Year', 'm' => 'Month', 'd' => 'Day') as $_elementKey => $_elementName) {
$_variableName = '_' . strtolower($_elementName);
- $$_variableName = isset($params['time'][$prefix . $_elementName])
- ? $params['time'][$prefix . $_elementName]
- : date($_elementKey);
+ $$_variableName =
+ isset($params[ 'time' ][ $prefix . $_elementName ]) ? $params[ 'time' ][ $prefix . $_elementName ] :
+ date($_elementKey);
}
- } elseif (isset($params['time'][$field_array][$prefix . 'Year'])) {
+ } elseif (isset($params[ 'time' ][ $field_array ][ $prefix . 'Year' ])) {
// $_REQUEST given
foreach (array('Y' => 'Year', 'm' => 'Month', 'd' => 'Day') as $_elementKey => $_elementName) {
$_variableName = '_' . strtolower($_elementName);
- $$_variableName = isset($params['time'][$field_array][$prefix . $_elementName])
- ? $params['time'][$field_array][$prefix . $_elementName]
- : date($_elementKey);
+ $$_variableName = isset($params[ 'time' ][ $field_array ][ $prefix . $_elementName ]) ?
+ $params[ 'time' ][ $field_array ][ $prefix . $_elementName ] : date($_elementKey);
}
} else {
// no date found, use NOW
@@ -215,10 +211,10 @@ function smarty_function_html_select_date($params)
$t = $$key;
if ($t === null) {
$$key = (int) $_current_year;
- } elseif ($t[0] == '+') {
- $$key = (int) ($_current_year + (int)trim(substr($t, 1)));
- } elseif ($t[0] == '-') {
- $$key = (int) ($_current_year - (int)trim(substr($t, 1)));
+ } elseif ($t[ 0 ] == '+') {
+ $$key = (int) ($_current_year + (int) trim(substr($t, 1)));
+ } elseif ($t[ 0 ] == '-') {
+ $$key = (int) ($_current_year - (int) trim(substr($t, 1)));
} else {
$$key = (int) $$key;
}
@@ -243,13 +239,16 @@ function smarty_function_html_select_date($params)
}
if ($year_as_text) {
- $_html_years = '<input type="text" name="' . $_name . '" value="' . $_year . '" size="4" maxlength="4"' . $_extra . $extra_attrs . ' />';
+ $_html_years =
+ '<input type="text" name="' . $_name . '" value="' . $_year . '" size="4" maxlength="4"' . $_extra .
+ $extra_attrs . ' />';
} else {
$_html_years = '<select name="' . $_name . '"';
if ($year_id !== null || $all_id !== null) {
- $_html_years .= ' id="' . smarty_function_escape_special_chars(
- $year_id !== null ? ($year_id ? $year_id : $_name) : ($all_id ? ($all_id . $_name) : $_name)
- ) . '"';
+ $_html_years .= ' id="' . smarty_function_escape_special_chars($year_id !== null ?
+ ($year_id ? $year_id : $_name) :
+ ($all_id ? ($all_id . $_name) :
+ $_name)) . '"';
}
if ($year_size) {
$_html_years .= ' size="' . $year_size . '"';
@@ -257,14 +256,14 @@ function smarty_function_html_select_date($params)
$_html_years .= $_extra . $extra_attrs . '>' . $option_separator;
if (isset($year_empty) || isset($all_empty)) {
- $_html_years .= '<option value="">' . (isset($year_empty) ? $year_empty : $all_empty) . '</option>' . $option_separator;
+ $_html_years .= '<option value="">' . (isset($year_empty) ? $year_empty : $all_empty) . '</option>' .
+ $option_separator;
}
$op = $start_year > $end_year ? - 1 : 1;
for ($i = $start_year; $op > 0 ? $i <= $end_year : $i >= $end_year; $i += $op) {
- $_html_years .= '<option value="' . $i . '"'
- . ($_year == $i ? ' selected="selected"' : '')
- . '>' . $i . '</option>' . $option_separator;
+ $_html_years .= '<option value="' . $i . '"' . ($_year == $i ? ' selected="selected"' : '') . '>' . $i .
+ '</option>' . $option_separator;
}
$_html_years .= '</select>';
@@ -284,9 +283,10 @@ function smarty_function_html_select_date($params)
$_html_months = '<select name="' . $_name . '"';
if ($month_id !== null || $all_id !== null) {
- $_html_months .= ' id="' . smarty_function_escape_special_chars(
- $month_id !== null ? ($month_id ? $month_id : $_name) : ($all_id ? ($all_id . $_name) : $_name)
- ) . '"';
+ $_html_months .= ' id="' . smarty_function_escape_special_chars($month_id !== null ?
+ ($month_id ? $month_id : $_name) :
+ ($all_id ? ($all_id . $_name) :
+ $_name)) . '"';
}
if ($month_size) {
$_html_months .= ' size="' . $month_size . '"';
@@ -294,16 +294,17 @@ function smarty_function_html_select_date($params)
$_html_months .= $_extra . $extra_attrs . '>' . $option_separator;
if (isset($month_empty) || isset($all_empty)) {
- $_html_months .= '<option value="">' . (isset($month_empty) ? $month_empty : $all_empty) . '</option>' . $option_separator;
+ $_html_months .= '<option value="">' . (isset($month_empty) ? $month_empty : $all_empty) . '</option>' .
+ $option_separator;
}
for ($i = 1; $i <= 12; $i ++) {
$_val = sprintf('%02d', $i);
- $_text = isset($month_names) ? smarty_function_escape_special_chars($month_names[$i]) : ($month_format == "%m" ? $_val : strftime($month_format, $_month_timestamps[$i]));
- $_value = $month_value_format == "%m" ? $_val : strftime($month_value_format, $_month_timestamps[$i]);
- $_html_months .= '<option value="' . $_value . '"'
- . ($_val == $_month ? ' selected="selected"' : '')
- . '>' . $_text . '</option>' . $option_separator;
+ $_text = isset($month_names) ? smarty_function_escape_special_chars($month_names[ $i ]) :
+ ($month_format == "%m" ? $_val : strftime($month_format, $_month_timestamps[ $i ]));
+ $_value = $month_value_format == "%m" ? $_val : strftime($month_value_format, $_month_timestamps[ $i ]);
+ $_html_months .= '<option value="' . $_value . '"' . ($_val == $_month ? ' selected="selected"' : '') .
+ '>' . $_text . '</option>' . $option_separator;
}
$_html_months .= '</select>';
@@ -322,9 +323,9 @@ function smarty_function_html_select_date($params)
$_html_days = '<select name="' . $_name . '"';
if ($day_id !== null || $all_id !== null) {
- $_html_days .= ' id="' . smarty_function_escape_special_chars(
- $day_id !== null ? ($day_id ? $day_id : $_name) : ($all_id ? ($all_id . $_name) : $_name)
- ) . '"';
+ $_html_days .= ' id="' .
+ smarty_function_escape_special_chars($day_id !== null ? ($day_id ? $day_id : $_name) :
+ ($all_id ? ($all_id . $_name) : $_name)) . '"';
}
if ($day_size) {
$_html_days .= ' size="' . $day_size . '"';
@@ -332,16 +333,16 @@ function smarty_function_html_select_date($params)
$_html_days .= $_extra . $extra_attrs . '>' . $option_separator;
if (isset($day_empty) || isset($all_empty)) {
- $_html_days .= '<option value="">' . (isset($day_empty) ? $day_empty : $all_empty) . '</option>' . $option_separator;
+ $_html_days .= '<option value="">' . (isset($day_empty) ? $day_empty : $all_empty) . '</option>' .
+ $option_separator;
}
for ($i = 1; $i <= 31; $i ++) {
$_val = sprintf('%02d', $i);
$_text = $day_format == '%02d' ? $_val : sprintf($day_format, $i);
$_value = $day_value_format == '%02d' ? $_val : sprintf($day_value_format, $i);
- $_html_days .= '<option value="' . $_value . '"'
- . ($_val == $_day ? ' selected="selected"' : '')
- . '>' . $_text . '</option>' . $option_separator;
+ $_html_days .= '<option value="' . $_value . '"' . ($_val == $_day ? ' selected="selected"' : '') . '>' .
+ $_text . '</option>' . $option_separator;
}
$_html_days .= '</select>';
@@ -350,7 +351,7 @@ function smarty_function_html_select_date($params)
// order the fields for output
$_html = '';
for ($i = 0; $i <= 2; $i ++) {
- switch ($field_order[$i]) {
+ switch ($field_order[ $i ]) {
case 'Y':
case 'y':
if (isset($_html_years)) {
diff --git a/library/Smarty/libs/plugins/function.html_select_time.php b/vendor/smarty/smarty/libs/plugins/function.html_select_time.php
index 9af6aad5b..89f0406f6 100644
--- a/library/Smarty/libs/plugins/function.html_select_time.php
+++ b/vendor/smarty/smarty/libs/plugins/function.html_select_time.php
@@ -7,15 +7,6 @@
*/
/**
- * @ignore
- */
-require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
-/**
- * @ignore
- */
-require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php');
-
-/**
* Smarty {html_select_time} function plugin
* Type: function<br>
* Name: html_select_time<br>
@@ -33,6 +24,12 @@ require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php');
*/
function smarty_function_html_select_time($params)
{
+ if (!is_callable('smarty_function_escape_special_chars')) {
+ require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
+ }
+ if (!is_callable('smarty_make_timestamp')) {
+ require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php');
+ }
$prefix = "Time_";
$field_array = null;
$field_separator = "\n";
@@ -148,31 +145,29 @@ function smarty_function_html_select_time($params)
}
}
- if (isset($params['time']) && is_array($params['time'])) {
- if (isset($params['time'][$prefix . 'Hour'])) {
+ if (isset($params[ 'time' ]) && is_array($params[ 'time' ])) {
+ if (isset($params[ 'time' ][ $prefix . 'Hour' ])) {
// $_REQUEST[$field_array] given
foreach (array('H' => 'Hour', 'i' => 'Minute', 's' => 'Second') as $_elementKey => $_elementName) {
$_variableName = '_' . strtolower($_elementName);
- $$_variableName = isset($params['time'][$prefix . $_elementName])
- ? $params['time'][$prefix . $_elementName]
- : date($_elementKey);
+ $$_variableName =
+ isset($params[ 'time' ][ $prefix . $_elementName ]) ? $params[ 'time' ][ $prefix . $_elementName ] :
+ date($_elementKey);
}
- $_meridian = isset($params['time'][$prefix . 'Meridian'])
- ? (' ' . $params['time'][$prefix . 'Meridian'])
- : '';
+ $_meridian =
+ isset($params[ 'time' ][ $prefix . 'Meridian' ]) ? (' ' . $params[ 'time' ][ $prefix . 'Meridian' ]) :
+ '';
$time = strtotime($_hour . ':' . $_minute . ':' . $_second . $_meridian);
list($_hour, $_minute, $_second) = $time = explode('-', date('H-i-s', $time));
- } elseif (isset($params['time'][$field_array][$prefix . 'Hour'])) {
+ } elseif (isset($params[ 'time' ][ $field_array ][ $prefix . 'Hour' ])) {
// $_REQUEST given
foreach (array('H' => 'Hour', 'i' => 'Minute', 's' => 'Second') as $_elementKey => $_elementName) {
$_variableName = '_' . strtolower($_elementName);
- $$_variableName = isset($params['time'][$field_array][$prefix . $_elementName])
- ? $params['time'][$field_array][$prefix . $_elementName]
- : date($_elementKey);
+ $$_variableName = isset($params[ 'time' ][ $field_array ][ $prefix . $_elementName ]) ?
+ $params[ 'time' ][ $field_array ][ $prefix . $_elementName ] : date($_elementKey);
}
- $_meridian = isset($params['time'][$field_array][$prefix . 'Meridian'])
- ? (' ' . $params['time'][$field_array][$prefix . 'Meridian'])
- : '';
+ $_meridian = isset($params[ 'time' ][ $field_array ][ $prefix . 'Meridian' ]) ?
+ (' ' . $params[ 'time' ][ $field_array ][ $prefix . 'Meridian' ]) : '';
$time = strtotime($_hour . ':' . $_minute . ':' . $_second . $_meridian);
list($_hour, $_minute, $_second) = $time = explode('-', date('H-i-s', $time));
} else {
@@ -203,9 +198,9 @@ function smarty_function_html_select_time($params)
$_html_hours = '<select name="' . $_name . '"';
if ($hour_id !== null || $all_id !== null) {
- $_html_hours .= ' id="' . smarty_function_escape_special_chars(
- $hour_id !== null ? ($hour_id ? $hour_id : $_name) : ($all_id ? ($all_id . $_name) : $_name)
- ) . '"';
+ $_html_hours .= ' id="' .
+ smarty_function_escape_special_chars($hour_id !== null ? ($hour_id ? $hour_id : $_name) :
+ ($all_id ? ($all_id . $_name) : $_name)) . '"';
}
if ($hour_size) {
$_html_hours .= ' size="' . $hour_size . '"';
@@ -213,7 +208,8 @@ function smarty_function_html_select_time($params)
$_html_hours .= $_extra . $extra_attrs . '>' . $option_separator;
if (isset($hour_empty) || isset($all_empty)) {
- $_html_hours .= '<option value="">' . (isset($hour_empty) ? $hour_empty : $all_empty) . '</option>' . $option_separator;
+ $_html_hours .= '<option value="">' . (isset($hour_empty) ? $hour_empty : $all_empty) . '</option>' .
+ $option_separator;
}
$start = $use_24_hours ? 0 : 1;
@@ -224,15 +220,12 @@ function smarty_function_html_select_time($params)
$_value = $hour_value_format == '%02d' ? $_val : sprintf($hour_value_format, $i);
if (!$use_24_hours) {
- $_hour12 = $_hour == 0
- ? 12
- : ($_hour <= 12 ? $_hour : $_hour - 12);
+ $_hour12 = $_hour == 0 ? 12 : ($_hour <= 12 ? $_hour : $_hour - 12);
}
$selected = $_hour !== null ? ($use_24_hours ? $_hour == $_val : $_hour12 == $_val) : null;
- $_html_hours .= '<option value="' . $_value . '"'
- . ($selected ? ' selected="selected"' : '')
- . '>' . $_text . '</option>' . $option_separator;
+ $_html_hours .= '<option value="' . $_value . '"' . ($selected ? ' selected="selected"' : '') . '>' .
+ $_text . '</option>' . $option_separator;
}
$_html_hours .= '</select>';
@@ -252,9 +245,10 @@ function smarty_function_html_select_time($params)
$_html_minutes = '<select name="' . $_name . '"';
if ($minute_id !== null || $all_id !== null) {
- $_html_minutes .= ' id="' . smarty_function_escape_special_chars(
- $minute_id !== null ? ($minute_id ? $minute_id : $_name) : ($all_id ? ($all_id . $_name) : $_name)
- ) . '"';
+ $_html_minutes .= ' id="' . smarty_function_escape_special_chars($minute_id !== null ?
+ ($minute_id ? $minute_id : $_name) :
+ ($all_id ? ($all_id . $_name) :
+ $_name)) . '"';
}
if ($minute_size) {
$_html_minutes .= ' size="' . $minute_size . '"';
@@ -262,7 +256,8 @@ function smarty_function_html_select_time($params)
$_html_minutes .= $_extra . $extra_attrs . '>' . $option_separator;
if (isset($minute_empty) || isset($all_empty)) {
- $_html_minutes .= '<option value="">' . (isset($minute_empty) ? $minute_empty : $all_empty) . '</option>' . $option_separator;
+ $_html_minutes .= '<option value="">' . (isset($minute_empty) ? $minute_empty : $all_empty) . '</option>' .
+ $option_separator;
}
$selected = $_minute !== null ? ($_minute - $_minute % $minute_interval) : null;
@@ -270,9 +265,8 @@ function smarty_function_html_select_time($params)
$_val = sprintf('%02d', $i);
$_text = $minute_format == '%02d' ? $_val : sprintf($minute_format, $i);
$_value = $minute_value_format == '%02d' ? $_val : sprintf($minute_value_format, $i);
- $_html_minutes .= '<option value="' . $_value . '"'
- . ($selected === $i ? ' selected="selected"' : '')
- . '>' . $_text . '</option>' . $option_separator;
+ $_html_minutes .= '<option value="' . $_value . '"' . ($selected === $i ? ' selected="selected"' : '') .
+ '>' . $_text . '</option>' . $option_separator;
}
$_html_minutes .= '</select>';
@@ -292,9 +286,10 @@ function smarty_function_html_select_time($params)
$_html_seconds = '<select name="' . $_name . '"';
if ($second_id !== null || $all_id !== null) {
- $_html_seconds .= ' id="' . smarty_function_escape_special_chars(
- $second_id !== null ? ($second_id ? $second_id : $_name) : ($all_id ? ($all_id . $_name) : $_name)
- ) . '"';
+ $_html_seconds .= ' id="' . smarty_function_escape_special_chars($second_id !== null ?
+ ($second_id ? $second_id : $_name) :
+ ($all_id ? ($all_id . $_name) :
+ $_name)) . '"';
}
if ($second_size) {
$_html_seconds .= ' size="' . $second_size . '"';
@@ -302,7 +297,8 @@ function smarty_function_html_select_time($params)
$_html_seconds .= $_extra . $extra_attrs . '>' . $option_separator;
if (isset($second_empty) || isset($all_empty)) {
- $_html_seconds .= '<option value="">' . (isset($second_empty) ? $second_empty : $all_empty) . '</option>' . $option_separator;
+ $_html_seconds .= '<option value="">' . (isset($second_empty) ? $second_empty : $all_empty) . '</option>' .
+ $option_separator;
}
$selected = $_second !== null ? ($_second - $_second % $second_interval) : null;
@@ -310,9 +306,8 @@ function smarty_function_html_select_time($params)
$_val = sprintf('%02d', $i);
$_text = $second_format == '%02d' ? $_val : sprintf($second_format, $i);
$_value = $second_value_format == '%02d' ? $_val : sprintf($second_value_format, $i);
- $_html_seconds .= '<option value="' . $_value . '"'
- . ($selected === $i ? ' selected="selected"' : '')
- . '>' . $_text . '</option>' . $option_separator;
+ $_html_seconds .= '<option value="' . $_value . '"' . ($selected === $i ? ' selected="selected"' : '') .
+ '>' . $_text . '</option>' . $option_separator;
}
$_html_seconds .= '</select>';
@@ -332,9 +327,11 @@ function smarty_function_html_select_time($params)
$_html_meridian = '<select name="' . $_name . '"';
if ($meridian_id !== null || $all_id !== null) {
- $_html_meridian .= ' id="' . smarty_function_escape_special_chars(
- $meridian_id !== null ? ($meridian_id ? $meridian_id : $_name) : ($all_id ? ($all_id . $_name) : $_name)
- ) . '"';
+ $_html_meridian .= ' id="' . smarty_function_escape_special_chars($meridian_id !== null ?
+ ($meridian_id ? $meridian_id :
+ $_name) :
+ ($all_id ? ($all_id . $_name) :
+ $_name)) . '"';
}
if ($meridian_size) {
$_html_meridian .= ' size="' . $meridian_size . '"';
@@ -342,12 +339,14 @@ function smarty_function_html_select_time($params)
$_html_meridian .= $_extra . $extra_attrs . '>' . $option_separator;
if (isset($meridian_empty) || isset($all_empty)) {
- $_html_meridian .= '<option value="">' . (isset($meridian_empty) ? $meridian_empty : $all_empty) . '</option>' . $option_separator;
+ $_html_meridian .= '<option value="">' . (isset($meridian_empty) ? $meridian_empty : $all_empty) .
+ '</option>' . $option_separator;
}
- $_html_meridian .= '<option value="am"' . ($_hour > 0 && $_hour < 12 ? ' selected="selected"' : '') . '>AM</option>' . $option_separator
- . '<option value="pm"' . ($_hour < 12 ? '' : ' selected="selected"') . '>PM</option>' . $option_separator
- . '</select>';
+ $_html_meridian .= '<option value="am"' . ($_hour > 0 && $_hour < 12 ? ' selected="selected"' : '') .
+ '>AM</option>' . $option_separator . '<option value="pm"' .
+ ($_hour < 12 ? '' : ' selected="selected"') . '>PM</option>' . $option_separator .
+ '</select>';
}
$_html = '';
diff --git a/library/Smarty/libs/plugins/function.html_table.php b/vendor/smarty/smarty/libs/plugins/function.html_table.php
index ec7ba48a4..42e23e722 100644
--- a/library/Smarty/libs/plugins/function.html_table.php
+++ b/vendor/smarty/smarty/libs/plugins/function.html_table.php
@@ -62,7 +62,7 @@ function smarty_function_html_table($params)
$caption = '';
$loop = null;
- if (!isset($params['loop'])) {
+ if (!isset($params[ 'loop' ])) {
trigger_error("html_table: missing 'loop' parameter", E_USER_WARNING);
return;
@@ -110,11 +110,11 @@ function smarty_function_html_table($params)
}
$loop_count = count($loop);
- if (empty($params['rows'])) {
+ if (empty($params[ 'rows' ])) {
/* no rows specified */
$rows = ceil($loop_count / $cols_count);
- } elseif (empty($params['cols'])) {
- if (!empty($params['rows'])) {
+ } elseif (empty($params[ 'cols' ])) {
+ if (!empty($params[ 'rows' ])) {
/* no cols specified, but rows */
$cols_count = ceil($loop_count / $rows);
}
@@ -132,7 +132,7 @@ function smarty_function_html_table($params)
for ($r = 0; $r < $cols_count; $r ++) {
$output .= '<th' . smarty_function_html_table_cycle('th', $th_attr, $r) . '>';
- $output .= $cols[$r];
+ $output .= $cols[ $r ];
$output .= "</th>\n";
}
$output .= "</tr></thead>\n";
@@ -151,7 +151,7 @@ function smarty_function_html_table($params)
}
if ($x < $loop_count) {
- $output .= "<td" . smarty_function_html_table_cycle('td', $td_attr, $c) . ">" . $loop[$x] . "</td>\n";
+ $output .= "<td" . smarty_function_html_table_cycle('td', $td_attr, $c) . ">" . $loop[ $x ] . "</td>\n";
} else {
$output .= "<td" . smarty_function_html_table_cycle('td', $td_attr, $c) . ">$trailpad</td>\n";
}
@@ -169,7 +169,7 @@ function smarty_function_html_table_cycle($name, $var, $no)
if (!is_array($var)) {
$ret = $var;
} else {
- $ret = $var[$no % count($var)];
+ $ret = $var[ $no % count($var) ];
}
return ($ret) ? ' ' . $ret : '';
diff --git a/library/Smarty/libs/plugins/function.mailto.php b/vendor/smarty/smarty/libs/plugins/function.mailto.php
index 520fb7aa6..9d2a5d2d5 100644
--- a/library/Smarty/libs/plugins/function.mailto.php
+++ b/vendor/smarty/smarty/libs/plugins/function.mailto.php
@@ -50,15 +50,16 @@
*/
function smarty_function_mailto($params)
{
- static $_allowed_encoding = array('javascript' => true, 'javascript_charcode' => true, 'hex' => true, 'none' => true);
+ static $_allowed_encoding =
+ array('javascript' => true, 'javascript_charcode' => true, 'hex' => true, 'none' => true);
$extra = '';
- if (empty($params['address'])) {
+ if (empty($params[ 'address' ])) {
trigger_error("mailto: missing 'address' parameter", E_USER_WARNING);
return;
} else {
- $address = $params['address'];
+ $address = $params[ 'address' ];
}
$text = $address;
@@ -72,9 +73,9 @@ function smarty_function_mailto($params)
case 'cc':
case 'bcc':
case 'followupto':
- if (!empty($value)) {
- $mail_parms[] = $var . '=' . str_replace($search, $replace, rawurlencode($value));
- }
+ if (!empty($value)) {
+ $mail_parms[] = $var . '=' . str_replace($search, $replace, rawurlencode($value));
+ }
break;
case 'subject':
@@ -94,9 +95,10 @@ function smarty_function_mailto($params)
$address .= '?' . join('&', $mail_parms);
}
- $encode = (empty($params['encode'])) ? 'none' : $params['encode'];
- if (!isset($_allowed_encoding[$encode])) {
- trigger_error("mailto: 'encode' parameter must be none, javascript, javascript_charcode or hex", E_USER_WARNING);
+ $encode = (empty($params[ 'encode' ])) ? 'none' : $params[ 'encode' ];
+ if (!isset($_allowed_encoding[ $encode ])) {
+ trigger_error("mailto: 'encode' parameter must be none, javascript, javascript_charcode or hex",
+ E_USER_WARNING);
return;
}
@@ -106,7 +108,7 @@ function smarty_function_mailto($params)
$js_encode = '';
for ($x = 0, $_length = strlen($string); $x < $_length; $x ++) {
- $js_encode .= '%' . bin2hex($string[$x]);
+ $js_encode .= '%' . bin2hex($string[ $x ]);
}
return '<script type="text/javascript">eval(unescape(\'' . $js_encode . '\'))</script>';
@@ -114,35 +116,31 @@ function smarty_function_mailto($params)
$string = '<a href="mailto:' . $address . '" ' . $extra . '>' . $text . '</a>';
for ($x = 0, $y = strlen($string); $x < $y; $x ++) {
- $ord[] = ord($string[$x]);
+ $ord[] = ord($string[ $x ]);
}
- $_ret = "<script type=\"text/javascript\" language=\"javascript\">\n"
- . "{document.write(String.fromCharCode("
- . implode(',', $ord)
- . "))"
- . "}\n"
- . "</script>\n";
+ $_ret = "<script type=\"text/javascript\" language=\"javascript\">\n" . "{document.write(String.fromCharCode(" .
+ implode(',', $ord) . "))" . "}\n" . "</script>\n";
return $_ret;
} elseif ($encode == 'hex') {
preg_match('!^(.*)(\?.*)$!', $address, $match);
- if (!empty($match[2])) {
+ if (!empty($match[ 2 ])) {
trigger_error("mailto: hex encoding does not work with extra attributes. Try javascript.", E_USER_WARNING);
return;
}
$address_encode = '';
for ($x = 0, $_length = strlen($address); $x < $_length; $x ++) {
- if (preg_match('!\w!' . Smarty::$_UTF8_MODIFIER, $address[$x])) {
- $address_encode .= '%' . bin2hex($address[$x]);
+ if (preg_match('!\w!' . Smarty::$_UTF8_MODIFIER, $address[ $x ])) {
+ $address_encode .= '%' . bin2hex($address[ $x ]);
} else {
- $address_encode .= $address[$x];
+ $address_encode .= $address[ $x ];
}
}
$text_encode = '';
for ($x = 0, $_length = strlen($text); $x < $_length; $x ++) {
- $text_encode .= '&#x' . bin2hex($text[$x]) . ';';
+ $text_encode .= '&#x' . bin2hex($text[ $x ]) . ';';
}
$mailto = "&#109;&#97;&#105;&#108;&#116;&#111;&#58;";
diff --git a/vendor/smarty/smarty/libs/plugins/function.math.php b/vendor/smarty/smarty/libs/plugins/function.math.php
new file mode 100644
index 000000000..fc5db335c
--- /dev/null
+++ b/vendor/smarty/smarty/libs/plugins/function.math.php
@@ -0,0 +1,109 @@
+<?php
+/**
+ * Smarty plugin
+ * This plugin is only for Smarty2 BC
+ *
+ * @package Smarty
+ * @subpackage PluginsFunction
+ */
+
+/**
+ * Smarty {math} function plugin
+ * Type: function<br>
+ * Name: math<br>
+ * Purpose: handle math computations in template
+ *
+ * @link http://www.smarty.net/manual/en/language.function.math.php {math}
+ * (Smarty online manual)
+ * @author Monte Ohrt <monte at ohrt dot com>
+ *
+ * @param array $params parameters
+ * @param Smarty_Internal_Template $template template object
+ *
+ * @return string|null
+ */
+function smarty_function_math($params, $template)
+{
+ static $_allowed_funcs =
+ array('int' => true, 'abs' => true, 'ceil' => true, 'cos' => true, 'exp' => true, 'floor' => true,
+ 'log' => true, 'log10' => true, 'max' => true, 'min' => true, 'pi' => true, 'pow' => true, 'rand' => true,
+ 'round' => true, 'sin' => true, 'sqrt' => true, 'srand' => true, 'tan' => true);
+ // be sure equation parameter is present
+ if (empty($params[ 'equation' ])) {
+ trigger_error("math: missing equation parameter", E_USER_WARNING);
+
+ return;
+ }
+
+ $equation = $params[ 'equation' ];
+
+ // make sure parenthesis are balanced
+ if (substr_count($equation, "(") != substr_count($equation, ")")) {
+ trigger_error("math: unbalanced parenthesis", E_USER_WARNING);
+
+ return;
+ }
+
+ // disallow backticks
+ if (strpos($equation, '`') !== false) {
+ trigger_error("math: backtick character not allowed in equation", E_USER_WARNING);
+
+ return;
+ }
+
+ // also disallow dollar signs
+ if (strpos($equation, '$') !== false) {
+ trigger_error("math: dollar signs not allowed in equation", E_USER_WARNING);
+
+ return;
+ }
+
+ foreach ($params as $key => $val) {
+ if ($key != "equation" && $key != "format" && $key != "assign") {
+ // make sure value is not empty
+ if (strlen($val) == 0) {
+ trigger_error("math: parameter '{$key}' is empty", E_USER_WARNING);
+
+ return;
+ }
+ if (!is_numeric($val)) {
+ trigger_error("math: parameter '{$key}' is not numeric", E_USER_WARNING);
+
+ return;
+ }
+ }
+ }
+
+ // match all vars in equation, make sure all are passed
+ preg_match_all('!(?:0x[a-fA-F0-9]+)|([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)!', $equation, $match);
+
+ foreach ($match[ 1 ] as $curr_var) {
+ if ($curr_var && !isset($params[ $curr_var ]) && !isset($_allowed_funcs[ $curr_var ])) {
+ trigger_error("math: function call '{$curr_var}' not allowed, or missing parameter '{$curr_var}'", E_USER_WARNING);
+
+ return;
+ }
+ }
+
+ foreach ($params as $key => $val) {
+ if ($key != "equation" && $key != "format" && $key != "assign") {
+ $equation = preg_replace("/\b$key\b/", " \$params['$key'] ", $equation);
+ }
+ }
+ $smarty_math_result = null;
+ eval("\$smarty_math_result = " . $equation . ";");
+
+ if (empty($params[ 'format' ])) {
+ if (empty($params[ 'assign' ])) {
+ return $smarty_math_result;
+ } else {
+ $template->assign($params[ 'assign' ], $smarty_math_result);
+ }
+ } else {
+ if (empty($params[ 'assign' ])) {
+ printf($params[ 'format' ], $smarty_math_result);
+ } else {
+ $template->assign($params[ 'assign' ], sprintf($params[ 'format' ], $smarty_math_result));
+ }
+ }
+}
diff --git a/library/Smarty/libs/plugins/modifier.capitalize.php b/vendor/smarty/smarty/libs/plugins/modifier.capitalize.php
index a8ad76370..6513a0495 100644
--- a/library/Smarty/libs/plugins/modifier.capitalize.php
+++ b/vendor/smarty/smarty/libs/plugins/modifier.capitalize.php
@@ -29,17 +29,23 @@ function smarty_modifier_capitalize($string, $uc_digits = false, $lc_rest = fals
$upper_string = mb_convert_case($string, MB_CASE_TITLE, Smarty::$_CHARSET);
} else {
// uppercase word breaks
- $upper_string = preg_replace_callback("!(^|[^\p{L}'])([\p{Ll}])!S" . Smarty::$_UTF8_MODIFIER, 'smarty_mod_cap_mbconvert_cb', $string);
+ $upper_string = preg_replace_callback("!(^|[^\p{L}'])([\p{Ll}])!S" . Smarty::$_UTF8_MODIFIER,
+ 'smarty_mod_cap_mbconvert_cb', $string);
}
// check uc_digits case
if (!$uc_digits) {
- if (preg_match_all("!\b([\p{L}]*[\p{N}]+[\p{L}]*)\b!" . Smarty::$_UTF8_MODIFIER, $string, $matches, PREG_OFFSET_CAPTURE)) {
- foreach ($matches[1] as $match) {
- $upper_string = substr_replace($upper_string, mb_strtolower($match[0], Smarty::$_CHARSET), $match[1], strlen($match[0]));
+ if (preg_match_all("!\b([\p{L}]*[\p{N}]+[\p{L}]*)\b!" . Smarty::$_UTF8_MODIFIER, $string, $matches,
+ PREG_OFFSET_CAPTURE)) {
+ foreach ($matches[ 1 ] as $match) {
+ $upper_string =
+ substr_replace($upper_string, mb_strtolower($match[ 0 ], Smarty::$_CHARSET), $match[ 1 ],
+ strlen($match[ 0 ]));
}
}
}
- $upper_string = preg_replace_callback("!((^|\s)['\"])(\w)!" . Smarty::$_UTF8_MODIFIER, 'smarty_mod_cap_mbconvert2_cb', $upper_string);
+ $upper_string =
+ preg_replace_callback("!((^|\s)['\"])(\w)!" . Smarty::$_UTF8_MODIFIER, 'smarty_mod_cap_mbconvert2_cb',
+ $upper_string);
return $upper_string;
}
@@ -48,16 +54,21 @@ function smarty_modifier_capitalize($string, $uc_digits = false, $lc_rest = fals
$string = strtolower($string);
}
// uppercase (including hyphenated words)
- $upper_string = preg_replace_callback("!(^|[^\p{L}'])([\p{Ll}])!S" . Smarty::$_UTF8_MODIFIER, 'smarty_mod_cap_ucfirst_cb', $string);
+ $upper_string =
+ preg_replace_callback("!(^|[^\p{L}'])([\p{Ll}])!S" . Smarty::$_UTF8_MODIFIER, 'smarty_mod_cap_ucfirst_cb',
+ $string);
// check uc_digits case
if (!$uc_digits) {
- if (preg_match_all("!\b([\p{L}]*[\p{N}]+[\p{L}]*)\b!" . Smarty::$_UTF8_MODIFIER, $string, $matches, PREG_OFFSET_CAPTURE)) {
- foreach ($matches[1] as $match) {
- $upper_string = substr_replace($upper_string, strtolower($match[0]), $match[1], strlen($match[0]));
+ if (preg_match_all("!\b([\p{L}]*[\p{N}]+[\p{L}]*)\b!" . Smarty::$_UTF8_MODIFIER, $string, $matches,
+ PREG_OFFSET_CAPTURE)) {
+ foreach ($matches[ 1 ] as $match) {
+ $upper_string =
+ substr_replace($upper_string, strtolower($match[ 0 ]), $match[ 1 ], strlen($match[ 0 ]));
}
}
}
- $upper_string = preg_replace_callback("!((^|\s)['\"])(\w)!" . Smarty::$_UTF8_MODIFIER, 'smarty_mod_cap_ucfirst2_cb', $upper_string);
+ $upper_string = preg_replace_callback("!((^|\s)['\"])(\w)!" . Smarty::$_UTF8_MODIFIER, 'smarty_mod_cap_ucfirst2_cb',
+ $upper_string);
return $upper_string;
}
@@ -71,20 +82,20 @@ function smarty_modifier_capitalize($string, $uc_digits = false, $lc_rest = fals
*/
function smarty_mod_cap_mbconvert_cb($matches)
{
- return stripslashes($matches[1]) . mb_convert_case(stripslashes($matches[2]), MB_CASE_UPPER, Smarty::$_CHARSET);
+ return stripslashes($matches[ 1 ]) . mb_convert_case(stripslashes($matches[ 2 ]), MB_CASE_UPPER, Smarty::$_CHARSET);
}
function smarty_mod_cap_mbconvert2_cb($matches)
{
- return stripslashes($matches[1]) . mb_convert_case(stripslashes($matches[3]), MB_CASE_UPPER, Smarty::$_CHARSET);
+ return stripslashes($matches[ 1 ]) . mb_convert_case(stripslashes($matches[ 3 ]), MB_CASE_UPPER, Smarty::$_CHARSET);
}
function smarty_mod_cap_ucfirst_cb($matches)
{
- return stripslashes($matches[1]) . ucfirst(stripslashes($matches[2]));
+ return stripslashes($matches[ 1 ]) . ucfirst(stripslashes($matches[ 2 ]));
}
function smarty_mod_cap_ucfirst2_cb($matches)
{
- return stripslashes($matches[1]) . ucfirst(stripslashes($matches[3]));
+ return stripslashes($matches[ 1 ]) . ucfirst(stripslashes($matches[ 3 ]));
}
diff --git a/library/Smarty/libs/plugins/modifier.date_format.php b/vendor/smarty/smarty/libs/plugins/modifier.date_format.php
index 28d6ff021..bfe363c08 100644
--- a/library/Smarty/libs/plugins/modifier.date_format.php
+++ b/vendor/smarty/smarty/libs/plugins/modifier.date_format.php
@@ -35,7 +35,9 @@ function smarty_modifier_date_format($string, $format = null, $default_date = ''
/**
* require_once the {@link shared.make_timestamp.php} plugin
*/
- require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php');
+ if (!is_callable('smarty_make_timestamp')) {
+ require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php');
+ }
if ($string != '' && $string != '0000-00-00' && $string != '0000-00-00 00:00:00') {
$timestamp = smarty_make_timestamp($string);
} elseif ($default_date != '') {
@@ -44,7 +46,7 @@ function smarty_modifier_date_format($string, $format = null, $default_date = ''
return;
}
if ($formatter == 'strftime' || ($formatter == 'auto' && strpos($format, '%') !== false)) {
- if (DS == '\\') {
+ if (Smarty::$_IS_WINDOWS) {
$_win_from = array('%D', '%h', '%n', '%r', '%R', '%t', '%T');
$_win_to = array('%m/%d/%y', '%b', "\n", '%I:%M:%S %p', '%H:%M', "\t", '%H:%M:%S');
if (strpos($format, '%e') !== false) {
diff --git a/library/Smarty/libs/plugins/modifier.debug_print_var.php b/vendor/smarty/smarty/libs/plugins/modifier.debug_print_var.php
index 4ff8213ce..34f85dcd5 100644
--- a/library/Smarty/libs/plugins/modifier.debug_print_var.php
+++ b/vendor/smarty/smarty/libs/plugins/modifier.debug_print_var.php
@@ -24,10 +24,7 @@
*/
function smarty_modifier_debug_print_var($var, $max = 10, $length = 40, $depth = 0, $objects = array())
{
- $_replace = array("\n" => '\n',
- "\r" => '\r',
- "\t" => '\t'
- );
+ $_replace = array("\n" => '\n', "\r" => '\r', "\t" => '\t');
switch (gettype($var)) {
case 'array' :
$results = '<b>Array (' . count($var) . ')</b>';
@@ -35,9 +32,9 @@ function smarty_modifier_debug_print_var($var, $max = 10, $length = 40, $depth =
break;
}
foreach ($var as $curr_key => $curr_val) {
- $results .= '<br>' . str_repeat('&nbsp;', $depth * 2)
- . '<b>' . strtr($curr_key, $_replace) . '</b> =&gt; '
- . smarty_modifier_debug_print_var($curr_val, $max, $length, ++ $depth, $objects);
+ $results .= '<br>' . str_repeat('&nbsp;', $depth * 2) . '<b>' . strtr($curr_key, $_replace) .
+ '</b> =&gt; ' .
+ smarty_modifier_debug_print_var($curr_val, $max, $length, ++ $depth, $objects);
$depth --;
}
break;
@@ -54,9 +51,8 @@ function smarty_modifier_debug_print_var($var, $max = 10, $length = 40, $depth =
}
$objects[] = $var;
foreach ($object_vars as $curr_key => $curr_val) {
- $results .= '<br>' . str_repeat('&nbsp;', $depth * 2)
- . '<b> -&gt;' . strtr($curr_key, $_replace) . '</b> = '
- . smarty_modifier_debug_print_var($curr_val, $max, $length, ++ $depth, $objects);
+ $results .= '<br>' . str_repeat('&nbsp;', $depth * 2) . '<b> -&gt;' . strtr($curr_key, $_replace) .
+ '</b> = ' . smarty_modifier_debug_print_var($curr_val, $max, $length, ++ $depth, $objects);
$depth --;
}
break;
@@ -88,12 +84,12 @@ function smarty_modifier_debug_print_var($var, $max = 10, $length = 40, $depth =
$results = mb_substr($var, 0, $length - 3, Smarty::$_CHARSET) . '...';
}
} else {
- if (isset($var[$length])) {
+ if (isset($var[ $length ])) {
$results = substr($var, 0, $length - 3) . '...';
}
}
- $results = htmlspecialchars('"' . $results . '"');
+ $results = htmlspecialchars('"' . $results . '"', ENT_QUOTES, Smarty::$_CHARSET);
break;
case 'unknown type' :
@@ -109,7 +105,7 @@ function smarty_modifier_debug_print_var($var, $max = 10, $length = 40, $depth =
}
}
- $results = htmlspecialchars($results);
+ $results = htmlspecialchars($results, ENT_QUOTES, Smarty::$_CHARSET);
}
return $results;
diff --git a/library/Smarty/libs/plugins/modifier.escape.php b/vendor/smarty/smarty/libs/plugins/modifier.escape.php
index 9fdb0702f..9c247b933 100644
--- a/library/Smarty/libs/plugins/modifier.escape.php
+++ b/vendor/smarty/smarty/libs/plugins/modifier.escape.php
@@ -66,7 +66,8 @@ function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $
// php <5.2.3 - prevent double encoding
$string = preg_replace('!&(#?\w+);!', '%%%SMARTY_START%%%\\1%%%SMARTY_END%%%', $string);
$string = htmlspecialchars($string, ENT_QUOTES, $char_set);
- $string = str_replace(array('%%%SMARTY_START%%%', '%%%SMARTY_END%%%'), array('&', ';'), $string);
+ $string =
+ str_replace(array('%%%SMARTY_START%%%', '%%%SMARTY_END%%%'), array('&', ';'), $string);
return $string;
}
@@ -107,7 +108,7 @@ function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $
$return = '';
$_length = strlen($string);
for ($x = 0; $x < $_length; $x ++) {
- $return .= '%' . bin2hex($string[$x]);
+ $return .= '%' . bin2hex($string[ $x ]);
}
return $return;
@@ -115,7 +116,9 @@ function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $
case 'hexentity':
$return = '';
if (Smarty::$_MBSTRING) {
- require_once(SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php');
+ if (!is_callable('smarty_mb_to_unicode')) {
+ require_once(SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php');
+ }
$return = '';
foreach (smarty_mb_to_unicode($string, Smarty::$_CHARSET) as $unicode) {
$return .= '&#x' . strtoupper(dechex($unicode)) . ';';
@@ -126,7 +129,7 @@ function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $
// no MBString fallback
$_length = strlen($string);
for ($x = 0; $x < $_length; $x ++) {
- $return .= '&#x' . bin2hex($string[$x]) . ';';
+ $return .= '&#x' . bin2hex($string[ $x ]) . ';';
}
return $return;
@@ -134,7 +137,9 @@ function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $
case 'decentity':
$return = '';
if (Smarty::$_MBSTRING) {
- require_once(SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php');
+ if (!is_callable('smarty_mb_to_unicode')) {
+ require_once(SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php');
+ }
$return = '';
foreach (smarty_mb_to_unicode($string, Smarty::$_CHARSET) as $unicode) {
$return .= '&#' . $unicode . ';';
@@ -145,19 +150,21 @@ function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $
// no MBString fallback
$_length = strlen($string);
for ($x = 0; $x < $_length; $x ++) {
- $return .= '&#' . ord($string[$x]) . ';';
+ $return .= '&#' . ord($string[ $x ]) . ';';
}
return $return;
case 'javascript':
// escape quotes and backslashes, newlines, etc.
- return strtr($string, array('\\' => '\\\\', "'" => "\\'", '"' => '\\"', "\r" => '\\r', "\n" => '\\n', '</' => '<\/'));
+ return strtr($string, array('\\' => '\\\\', "'" => "\\'", '"' => '\\"', "\r" => '\\r', "\n" => '\\n',
+ '</' => '<\/'));
case 'mail':
if (Smarty::$_MBSTRING) {
- require_once(SMARTY_PLUGINS_DIR . 'shared.mb_str_replace.php');
-
+ if (!is_callable('smarty_mb_str_replace')) {
+ require_once(SMARTY_PLUGINS_DIR . 'shared.mb_str_replace.php');
+ }
return smarty_mb_str_replace(array('@', '.'), array(' [AT] ', ' [DOT] '), $string);
}
// no MBString fallback
@@ -167,7 +174,9 @@ function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $
// escape non-standard chars, such as ms document quotes
$return = '';
if (Smarty::$_MBSTRING) {
- require_once(SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php');
+ if (!is_callable('smarty_mb_to_unicode')) {
+ require_once(SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php');
+ }
foreach (smarty_mb_to_unicode($string, Smarty::$_CHARSET) as $unicode) {
if ($unicode >= 126) {
$return .= '&#' . $unicode . ';';
diff --git a/library/Smarty/libs/plugins/modifier.regex_replace.php b/vendor/smarty/smarty/libs/plugins/modifier.regex_replace.php
index ffea16755..85f41fdda 100644
--- a/library/Smarty/libs/plugins/modifier.regex_replace.php
+++ b/vendor/smarty/smarty/libs/plugins/modifier.regex_replace.php
@@ -23,11 +23,11 @@
*
* @return string
*/
-function smarty_modifier_regex_replace($string, $search, $replace, $limit = -1)
+function smarty_modifier_regex_replace($string, $search, $replace, $limit = - 1)
{
if (is_array($search)) {
foreach ($search as $idx => $s) {
- $search[$idx] = _smarty_regex_replace_check($s);
+ $search[ $idx ] = _smarty_regex_replace_check($s);
}
} else {
$search = _smarty_regex_replace_check($search);
@@ -50,8 +50,8 @@ function _smarty_regex_replace_check($search)
$search = substr($search, 0, $pos);
}
// remove eval-modifier from $search
- if (preg_match('!([a-zA-Z\s]+)$!s', $search, $match) && (strpos($match[1], 'e') !== false)) {
- $search = substr($search, 0, - strlen($match[1])) . preg_replace('![e\s]+!', '', $match[1]);
+ if (preg_match('!([a-zA-Z\s]+)$!s', $search, $match) && (strpos($match[ 1 ], 'e') !== false)) {
+ $search = substr($search, 0, - strlen($match[ 1 ])) . preg_replace('![e\s]+!', '', $match[ 1 ]);
}
return $search;
diff --git a/library/Smarty/libs/plugins/modifier.replace.php b/vendor/smarty/smarty/libs/plugins/modifier.replace.php
index aa5e8570b..9dca259d5 100644
--- a/library/Smarty/libs/plugins/modifier.replace.php
+++ b/vendor/smarty/smarty/libs/plugins/modifier.replace.php
@@ -25,8 +25,9 @@
function smarty_modifier_replace($string, $search, $replace)
{
if (Smarty::$_MBSTRING) {
- require_once(SMARTY_PLUGINS_DIR . 'shared.mb_str_replace.php');
-
+ if (!is_callable('smarty_mb_str_replace')) {
+ require_once(SMARTY_PLUGINS_DIR . 'shared.mb_str_replace.php');
+ }
return smarty_mb_str_replace($search, $replace, $string);
}
diff --git a/library/Smarty/libs/plugins/modifier.spacify.php b/vendor/smarty/smarty/libs/plugins/modifier.spacify.php
index e5c41ad8b..e5c41ad8b 100644
--- a/library/Smarty/libs/plugins/modifier.spacify.php
+++ b/vendor/smarty/smarty/libs/plugins/modifier.spacify.php
diff --git a/library/Smarty/libs/plugins/modifier.truncate.php b/vendor/smarty/smarty/libs/plugins/modifier.truncate.php
index fbe62e823..6fe844259 100644
--- a/library/Smarty/libs/plugins/modifier.truncate.php
+++ b/vendor/smarty/smarty/libs/plugins/modifier.truncate.php
@@ -35,20 +35,22 @@ function smarty_modifier_truncate($string, $length = 80, $etc = '...', $break_wo
if (mb_strlen($string, Smarty::$_CHARSET) > $length) {
$length -= min($length, mb_strlen($etc, Smarty::$_CHARSET));
if (!$break_words && !$middle) {
- $string = preg_replace('/\s+?(\S+)?$/' . Smarty::$_UTF8_MODIFIER, '', mb_substr($string, 0, $length + 1, Smarty::$_CHARSET));
+ $string = preg_replace('/\s+?(\S+)?$/' . Smarty::$_UTF8_MODIFIER, '',
+ mb_substr($string, 0, $length + 1, Smarty::$_CHARSET));
}
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, $length / 2, Smarty::$_CHARSET) . $etc .
+ mb_substr($string, - $length / 2, $length, Smarty::$_CHARSET);
}
return $string;
}
// no MBString fallback
- if (isset($string[$length])) {
+ if (isset($string[ $length ])) {
$length -= min($length, strlen($etc));
if (!$break_words && !$middle) {
$string = preg_replace('/\s+?(\S+)?$/', '', substr($string, 0, $length + 1));
diff --git a/library/Smarty/libs/plugins/modifiercompiler.cat.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.cat.php
index db9d81fbf..db9d81fbf 100644
--- a/library/Smarty/libs/plugins/modifiercompiler.cat.php
+++ b/vendor/smarty/smarty/libs/plugins/modifiercompiler.cat.php
diff --git a/library/Smarty/libs/plugins/modifiercompiler.count_characters.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.count_characters.php
index f8463d80a..0a3ce257b 100644
--- a/library/Smarty/libs/plugins/modifiercompiler.count_characters.php
+++ b/vendor/smarty/smarty/libs/plugins/modifiercompiler.count_characters.php
@@ -21,12 +21,12 @@
*/
function smarty_modifiercompiler_count_characters($params)
{
- if (!isset($params[1]) || $params[1] != 'true') {
- return 'preg_match_all(\'/[^\s]/' . Smarty::$_UTF8_MODIFIER . '\',' . $params[0] . ', $tmp)';
+ if (!isset($params[ 1 ]) || $params[ 1 ] != 'true') {
+ return 'preg_match_all(\'/[^\s]/' . Smarty::$_UTF8_MODIFIER . '\',' . $params[ 0 ] . ', $tmp)';
}
if (Smarty::$_MBSTRING) {
- return 'mb_strlen(' . $params[0] . ', \'' . addslashes(Smarty::$_CHARSET) . '\')';
+ return 'mb_strlen(' . $params[ 0 ] . ', \'' . addslashes(Smarty::$_CHARSET) . '\')';
}
// no MBString fallback
- return 'strlen(' . $params[0] . ')';
+ return 'strlen(' . $params[ 0 ] . ')';
}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.count_paragraphs.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.count_paragraphs.php
index 34f0bbb8a..f7f447763 100644
--- a/library/Smarty/libs/plugins/modifiercompiler.count_paragraphs.php
+++ b/vendor/smarty/smarty/libs/plugins/modifiercompiler.count_paragraphs.php
@@ -23,5 +23,5 @@
function smarty_modifiercompiler_count_paragraphs($params)
{
// count \r or \n characters
- return '(preg_match_all(\'#[\r\n]+#\', ' . $params[0] . ', $tmp)+1)';
+ return '(preg_match_all(\'#[\r\n]+#\', ' . $params[ 0 ] . ', $tmp)+1)';
}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.count_sentences.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.count_sentences.php
index f1ec56007..20032925e 100644
--- a/library/Smarty/libs/plugins/modifiercompiler.count_sentences.php
+++ b/vendor/smarty/smarty/libs/plugins/modifiercompiler.count_sentences.php
@@ -23,5 +23,5 @@
function smarty_modifiercompiler_count_sentences($params)
{
// find periods, question marks, exclamation marks with a word before but not after.
- return 'preg_match_all("#\w[\.\?\!](\W|$)#S' . Smarty::$_UTF8_MODIFIER . '", ' . $params[0] . ', $tmp)';
+ return 'preg_match_all("#\w[\.\?\!](\W|$)#S' . Smarty::$_UTF8_MODIFIER . '", ' . $params[ 0 ] . ', $tmp)';
}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.count_words.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.count_words.php
index 8b4330f1e..f20a197cd 100644
--- a/library/Smarty/libs/plugins/modifiercompiler.count_words.php
+++ b/vendor/smarty/smarty/libs/plugins/modifiercompiler.count_words.php
@@ -24,8 +24,9 @@ function smarty_modifiercompiler_count_words($params)
if (Smarty::$_MBSTRING) {
// return 'preg_match_all(\'#[\w\pL]+#' . Smarty::$_UTF8_MODIFIER . '\', ' . $params[0] . ', $tmp)';
// expression taken from http://de.php.net/manual/en/function.str-word-count.php#85592
- return 'preg_match_all(\'/\p{L}[\p{L}\p{Mn}\p{Pd}\\\'\x{2019}]*/' . Smarty::$_UTF8_MODIFIER . '\', ' . $params[0] . ', $tmp)';
+ return 'preg_match_all(\'/\p{L}[\p{L}\p{Mn}\p{Pd}\\\'\x{2019}]*/' . Smarty::$_UTF8_MODIFIER . '\', ' .
+ $params[ 0 ] . ', $tmp)';
}
// no MBString fallback
- return 'str_word_count(' . $params[0] . ')';
+ return 'str_word_count(' . $params[ 0 ] . ')';
}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.default.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.default.php
index fe777623e..2c4c00a37 100644
--- a/library/Smarty/libs/plugins/modifiercompiler.default.php
+++ b/vendor/smarty/smarty/libs/plugins/modifiercompiler.default.php
@@ -21,9 +21,9 @@
*/
function smarty_modifiercompiler_default($params)
{
- $output = $params[0];
- if (!isset($params[1])) {
- $params[1] = "''";
+ $output = $params[ 0 ];
+ if (!isset($params[ 1 ])) {
+ $params[ 1 ] = "''";
}
array_shift($params);
diff --git a/library/Smarty/libs/plugins/modifiercompiler.escape.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.escape.php
index 0b29220ef..11565c2d9 100644
--- a/library/Smarty/libs/plugins/modifiercompiler.escape.php
+++ b/vendor/smarty/smarty/libs/plugins/modifiercompiler.escape.php
@@ -7,11 +7,6 @@
*/
/**
- * @ignore
- */
-require_once(SMARTY_PLUGINS_DIR . 'shared.literal_compiler_param.php');
-
-/**
* Smarty escape modifier plugin
* Type: modifier<br>
* Name: escape<br>
@@ -28,6 +23,9 @@ require_once(SMARTY_PLUGINS_DIR . 'shared.literal_compiler_param.php');
function smarty_modifiercompiler_escape($params, $compiler)
{
static $_double_encode = null;
+ if (!is_callable('smarty_literal_compiler_param')) {
+ require_once(SMARTY_PLUGINS_DIR . 'shared.literal_compiler_param.php');
+ }
if ($_double_encode === null) {
$_double_encode = version_compare(PHP_VERSION, '5.2.3', '>=');
}
@@ -44,14 +42,10 @@ function smarty_modifiercompiler_escape($params, $compiler)
switch ($esc_type) {
case 'html':
if ($_double_encode) {
- return 'htmlspecialchars('
- . $params[0] . ', ENT_QUOTES, '
- . var_export($char_set, true) . ', '
- . var_export($double_encode, true) . ')';
+ return 'htmlspecialchars(' . $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(' . $params[ 0 ] . ', ENT_QUOTES, ' . var_export($char_set, true) . ')';
} else {
// fall back to modifier.escape.php
}
@@ -60,19 +54,13 @@ function smarty_modifiercompiler_escape($params, $compiler)
if (Smarty::$_MBSTRING) {
if ($_double_encode) {
// php >=5.2.3 - go native
- return 'mb_convert_encoding(htmlspecialchars('
- . $params[0] . ', ENT_QUOTES, '
- . var_export($char_set, true) . ', '
- . var_export($double_encode, true)
- . '), "HTML-ENTITIES", '
- . var_export($char_set, true) . ')';
+ return 'mb_convert_encoding(htmlspecialchars(' . $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, '
- . var_export($char_set, true)
- . '), "HTML-ENTITIES", '
- . var_export($char_set, true) . ')';
+ return 'mb_convert_encoding(htmlspecialchars(' . $params[ 0 ] . ', ENT_QUOTES, ' .
+ var_export($char_set, true) . '), "HTML-ENTITIES", ' . var_export($char_set, true) . ')';
} else {
// fall back to modifier.escape.php
}
@@ -81,32 +69,29 @@ function smarty_modifiercompiler_escape($params, $compiler)
// no MBString fallback
if ($_double_encode) {
// php >=5.2.3 - go native
- return 'htmlentities('
- . $params[0] . ', ENT_QUOTES, '
- . var_export($char_set, true) . ', '
- . var_export($double_encode, true) . ')';
+ return 'htmlentities(' . $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(' . $params[ 0 ] . ', ENT_QUOTES, ' . var_export($char_set, true) . ')';
} else {
// fall back to modifier.escape.php
}
case 'url':
- return 'rawurlencode(' . $params[0] . ')';
+ return 'rawurlencode(' . $params[ 0 ] . ')';
case 'urlpathinfo':
- return 'str_replace("%2F", "/", rawurlencode(' . $params[0] . '))';
+ return 'str_replace("%2F", "/", rawurlencode(' . $params[ 0 ] . '))';
case 'quotes':
// escape unescaped single quotes
- return 'preg_replace("%(?<!\\\\\\\\)\'%", "\\\'",' . $params[0] . ')';
+ return 'preg_replace("%(?<!\\\\\\\\)\'%", "\\\'",' . $params[ 0 ] . ')';
case 'javascript':
// escape quotes and backslashes, newlines, etc.
- return 'strtr(' . $params[0] . ', array("\\\\" => "\\\\\\\\", "\'" => "\\\\\'", "\"" => "\\\\\"", "\\r" => "\\\\r", "\\n" => "\\\n", "</" => "<\/" ))';
+ return 'strtr(' . $params[ 0 ] .
+ ', array("\\\\" => "\\\\\\\\", "\'" => "\\\\\'", "\"" => "\\\\\"", "\\r" => "\\\\r", "\\n" => "\\\n", "</" => "<\/" ))';
}
}
catch (SmartyException $e) {
@@ -115,11 +100,15 @@ function smarty_modifiercompiler_escape($params, $compiler)
// could not optimize |escape call, so fallback to regular plugin
if ($compiler->template->caching && ($compiler->tag_nocache | $compiler->nocache)) {
- $compiler->parent_compiler->template->compiled->required_plugins['nocache']['escape']['modifier']['file'] = SMARTY_PLUGINS_DIR . 'modifier.escape.php';
- $compiler->parent_compiler->template->compiled->required_plugins['nocache']['escape']['modifier']['function'] = 'smarty_modifier_escape';
+ $compiler->parent_compiler->template->compiled->required_plugins[ 'nocache' ][ 'escape' ][ 'modifier' ][ 'file' ] =
+ SMARTY_PLUGINS_DIR . 'modifier.escape.php';
+ $compiler->parent_compiler->template->compiled->required_plugins[ 'nocache' ][ 'escape' ][ 'modifier' ][ 'function' ] =
+ 'smarty_modifier_escape';
} else {
- $compiler->parent_compiler->template->compiled->required_plugins['compiled']['escape']['modifier']['file'] = SMARTY_PLUGINS_DIR . 'modifier.escape.php';
- $compiler->parent_compiler->template->compiled->required_plugins['compiled']['escape']['modifier']['function'] = 'smarty_modifier_escape';
+ $compiler->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ 'escape' ][ 'modifier' ][ 'file' ] =
+ SMARTY_PLUGINS_DIR . 'modifier.escape.php';
+ $compiler->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ 'escape' ][ 'modifier' ][ 'function' ] =
+ 'smarty_modifier_escape';
}
return 'smarty_modifier_escape(' . join(', ', $params) . ')';
diff --git a/library/Smarty/libs/plugins/modifiercompiler.from_charset.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.from_charset.php
index dab43e9c3..e25a95749 100644
--- a/library/Smarty/libs/plugins/modifiercompiler.from_charset.php
+++ b/vendor/smarty/smarty/libs/plugins/modifiercompiler.from_charset.php
@@ -22,12 +22,12 @@ function smarty_modifiercompiler_from_charset($params)
{
if (!Smarty::$_MBSTRING) {
// FIXME: (rodneyrehm) shouldn't this throw an error?
- return $params[0];
+ return $params[ 0 ];
}
- if (!isset($params[1])) {
- $params[1] = '"ISO-8859-1"';
+ if (!isset($params[ 1 ])) {
+ $params[ 1 ] = '"ISO-8859-1"';
}
- return 'mb_convert_encoding(' . $params[0] . ', "' . addslashes(Smarty::$_CHARSET) . '", ' . $params[1] . ')';
+ return 'mb_convert_encoding(' . $params[ 0 ] . ', "' . addslashes(Smarty::$_CHARSET) . '", ' . $params[ 1 ] . ')';
}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.indent.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.indent.php
index e3ca20821..851f18448 100644
--- a/library/Smarty/libs/plugins/modifiercompiler.indent.php
+++ b/vendor/smarty/smarty/libs/plugins/modifiercompiler.indent.php
@@ -22,12 +22,12 @@
function smarty_modifiercompiler_indent($params)
{
- if (!isset($params[1])) {
- $params[1] = 4;
+ if (!isset($params[ 1 ])) {
+ $params[ 1 ] = 4;
}
- if (!isset($params[2])) {
- $params[2] = "' '";
+ if (!isset($params[ 2 ])) {
+ $params[ 2 ] = "' '";
}
- return 'preg_replace(\'!^!m\',str_repeat(' . $params[2] . ',' . $params[1] . '),' . $params[0] . ')';
+ return 'preg_replace(\'!^!m\',str_repeat(' . $params[ 2 ] . ',' . $params[ 1 ] . '),' . $params[ 0 ] . ')';
}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.lower.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.lower.php
index 1d255f371..a335eff7f 100644
--- a/library/Smarty/libs/plugins/modifiercompiler.lower.php
+++ b/vendor/smarty/smarty/libs/plugins/modifiercompiler.lower.php
@@ -24,8 +24,8 @@
function smarty_modifiercompiler_lower($params)
{
if (Smarty::$_MBSTRING) {
- return 'mb_strtolower(' . $params[0] . ', \'' . addslashes(Smarty::$_CHARSET) . '\')';
+ return 'mb_strtolower(' . $params[ 0 ] . ', \'' . addslashes(Smarty::$_CHARSET) . '\')';
}
// no MBString fallback
- return 'strtolower(' . $params[0] . ')';
+ return 'strtolower(' . $params[ 0 ] . ')';
}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.noprint.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.noprint.php
index 4906908b4..4906908b4 100644
--- a/library/Smarty/libs/plugins/modifiercompiler.noprint.php
+++ b/vendor/smarty/smarty/libs/plugins/modifiercompiler.noprint.php
diff --git a/library/Smarty/libs/plugins/modifiercompiler.string_format.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.string_format.php
index 71cdf2819..bcf9883db 100644
--- a/library/Smarty/libs/plugins/modifiercompiler.string_format.php
+++ b/vendor/smarty/smarty/libs/plugins/modifiercompiler.string_format.php
@@ -21,5 +21,5 @@
*/
function smarty_modifiercompiler_string_format($params)
{
- return 'sprintf(' . $params[1] . ',' . $params[0] . ')';
+ return 'sprintf(' . $params[ 1 ] . ',' . $params[ 0 ] . ')';
}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.strip.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.strip.php
index fcd6cbaea..8173eed8f 100644
--- a/library/Smarty/libs/plugins/modifiercompiler.strip.php
+++ b/vendor/smarty/smarty/libs/plugins/modifiercompiler.strip.php
@@ -25,8 +25,8 @@
function smarty_modifiercompiler_strip($params)
{
- if (!isset($params[1])) {
- $params[1] = "' '";
+ if (!isset($params[ 1 ])) {
+ $params[ 1 ] = "' '";
}
return "preg_replace('!\s+!" . Smarty::$_UTF8_MODIFIER . "', {$params[1]},{$params[0]})";
diff --git a/library/Smarty/libs/plugins/modifiercompiler.strip_tags.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.strip_tags.php
index da5d364cb..e56bf9315 100644
--- a/library/Smarty/libs/plugins/modifiercompiler.strip_tags.php
+++ b/vendor/smarty/smarty/libs/plugins/modifiercompiler.strip_tags.php
@@ -21,9 +21,9 @@
*/
function smarty_modifiercompiler_strip_tags($params)
{
- if (!isset($params[1]) || $params[1] === true || trim($params[1], '"') == 'true') {
+ if (!isset($params[ 1 ]) || $params[ 1 ] === true || trim($params[ 1 ], '"') == 'true') {
return "preg_replace('!<[^>]*?>!', ' ', {$params[0]})";
} else {
- return 'strip_tags(' . $params[0] . ')';
+ return 'strip_tags(' . $params[ 0 ] . ')';
}
}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.to_charset.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.to_charset.php
index 9122d8bbb..fea8d8273 100644
--- a/library/Smarty/libs/plugins/modifiercompiler.to_charset.php
+++ b/vendor/smarty/smarty/libs/plugins/modifiercompiler.to_charset.php
@@ -22,12 +22,12 @@ function smarty_modifiercompiler_to_charset($params)
{
if (!Smarty::$_MBSTRING) {
// FIXME: (rodneyrehm) shouldn't this throw an error?
- return $params[0];
+ return $params[ 0 ];
}
- if (!isset($params[1])) {
- $params[1] = '"ISO-8859-1"';
+ if (!isset($params[ 1 ])) {
+ $params[ 1 ] = '"ISO-8859-1"';
}
- return 'mb_convert_encoding(' . $params[0] . ', ' . $params[1] . ', "' . addslashes(Smarty::$_CHARSET) . '")';
+ return 'mb_convert_encoding(' . $params[ 0 ] . ', ' . $params[ 1 ] . ', "' . addslashes(Smarty::$_CHARSET) . '")';
}
diff --git a/vendor/smarty/smarty/libs/plugins/modifiercompiler.unescape.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.unescape.php
new file mode 100644
index 000000000..a3409bc73
--- /dev/null
+++ b/vendor/smarty/smarty/libs/plugins/modifiercompiler.unescape.php
@@ -0,0 +1,50 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty unescape modifier plugin
+ * Type: modifier<br>
+ * Name: unescape<br>
+ * Purpose: unescape html entities
+ *
+ * @author Rodney Rehm
+ *
+ * @param array $params parameters
+ *
+ * @return string with compiled code
+ */
+function smarty_modifiercompiler_unescape($params)
+{
+ if (!isset($params[ 1 ])) {
+ $params[ 1 ] = 'html';
+ }
+ if (!isset($params[ 2 ])) {
+ $params[ 2 ] = '\'' . addslashes(Smarty::$_CHARSET) . '\'';
+ } else {
+ $params[ 2 ] = "'" . $params[ 2 ] . "'";
+ }
+
+ switch (trim($params[ 1 ], '"\'')) {
+ case 'entity':
+ case 'htmlall':
+ if (Smarty::$_MBSTRING) {
+ return 'mb_convert_encoding(' . $params[ 0 ] . ', ' . $params[ 2 ] . ', \'HTML-ENTITIES\')';
+ }
+
+ return 'html_entity_decode(' . $params[ 0 ] . ', ENT_NOQUOTES, ' . $params[ 2 ] . ')';
+
+ case 'html':
+ return 'htmlspecialchars_decode(' . $params[ 0 ] . ', ENT_QUOTES)';
+
+ case 'url':
+ return 'rawurldecode(' . $params[ 0 ] . ')';
+
+ default:
+ return $params[ 0 ];
+ }
+}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.upper.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.upper.php
index 52ca4e8ff..a083c4f7e 100644
--- a/library/Smarty/libs/plugins/modifiercompiler.upper.php
+++ b/vendor/smarty/smarty/libs/plugins/modifiercompiler.upper.php
@@ -22,8 +22,8 @@
function smarty_modifiercompiler_upper($params)
{
if (Smarty::$_MBSTRING) {
- return 'mb_strtoupper(' . $params[0] . ', \'' . addslashes(Smarty::$_CHARSET) . '\')';
+ return 'mb_strtoupper(' . $params[ 0 ] . ', \'' . addslashes(Smarty::$_CHARSET) . '\')';
}
// no MBString fallback
- return 'strtoupper(' . $params[0] . ')';
+ return 'strtoupper(' . $params[ 0 ] . ')';
}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.wordwrap.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.wordwrap.php
index 6bb63247d..91849738e 100644
--- a/library/Smarty/libs/plugins/modifiercompiler.wordwrap.php
+++ b/vendor/smarty/smarty/libs/plugins/modifiercompiler.wordwrap.php
@@ -22,26 +22,30 @@
*/
function smarty_modifiercompiler_wordwrap($params, $compiler)
{
- if (!isset($params[1])) {
- $params[1] = 80;
+ if (!isset($params[ 1 ])) {
+ $params[ 1 ] = 80;
}
- if (!isset($params[2])) {
- $params[2] = '"\n"';
+ if (!isset($params[ 2 ])) {
+ $params[ 2 ] = '"\n"';
}
- if (!isset($params[3])) {
- $params[3] = 'false';
+ if (!isset($params[ 3 ])) {
+ $params[ 3 ] = 'false';
}
$function = 'wordwrap';
if (Smarty::$_MBSTRING) {
if ($compiler->template->caching && ($compiler->tag_nocache | $compiler->nocache)) {
- $compiler->parent_compiler->template->compiled->required_plugins['nocache']['wordwrap']['modifier']['file'] = SMARTY_PLUGINS_DIR . 'shared.mb_wordwrap.php';
- $compiler->template->required_plugins['nocache']['wordwrap']['modifier']['function'] = 'smarty_mb_wordwrap';
+ $compiler->parent_compiler->template->compiled->required_plugins[ 'nocache' ][ 'wordwrap' ][ 'modifier' ][ 'file' ] =
+ SMARTY_PLUGINS_DIR . 'shared.mb_wordwrap.php';
+ $compiler->template->required_plugins[ 'nocache' ][ 'wordwrap' ][ 'modifier' ][ 'function' ] =
+ 'smarty_mb_wordwrap';
} else {
- $compiler->parent_compiler->template->compiled->required_plugins['compiled']['wordwrap']['modifier']['file'] = SMARTY_PLUGINS_DIR . 'shared.mb_wordwrap.php';
- $compiler->parent_compiler->template->compiled->required_plugins['compiled']['wordwrap']['modifier']['function'] = 'smarty_mb_wordwrap';
+ $compiler->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ 'wordwrap' ][ 'modifier' ][ 'file' ] =
+ SMARTY_PLUGINS_DIR . 'shared.mb_wordwrap.php';
+ $compiler->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ 'wordwrap' ][ 'modifier' ][ 'function' ] =
+ 'smarty_mb_wordwrap';
}
$function = 'smarty_mb_wordwrap';
}
- return $function . '(' . $params[0] . ',' . $params[1] . ',' . $params[2] . ',' . $params[3] . ')';
+ return $function . '(' . $params[ 0 ] . ',' . $params[ 1 ] . ',' . $params[ 2 ] . ',' . $params[ 3 ] . ')';
}
diff --git a/library/Smarty/libs/plugins/outputfilter.trimwhitespace.php b/vendor/smarty/smarty/libs/plugins/outputfilter.trimwhitespace.php
index ad35d11a2..1a67123a4 100644
--- a/library/Smarty/libs/plugins/outputfilter.trimwhitespace.php
+++ b/vendor/smarty/smarty/libs/plugins/outputfilter.trimwhitespace.php
@@ -26,13 +26,14 @@ function smarty_outputfilter_trimwhitespace($source)
// Unify Line-Breaks to \n
$source = preg_replace("/\015\012|\015|\012/", "\n", $source);
- // capture Internet Explorer Conditional Comments
- if (preg_match_all('#<!--\[[^\]]+\]>.*?<!\[[^\]]+\]-->#is', $source, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) {
+ // capture Internet Explorer and KnockoutJS Conditional Comments
+ if (preg_match_all('#<!--((\[[^\]]+\]>.*?<!\[[^\]]+\])|(\s*/?ko\s+.+))-->#is', $source, $matches,
+ PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) {
foreach ($matches as $match) {
- $store[] = $match[0][0];
- $_length = strlen($match[0][0]);
+ $store[] = $match[ 0 ][ 0 ];
+ $_length = strlen($match[ 0 ][ 0 ]);
$replace = '@!@SMARTY:' . $_store . ':SMARTY@!@';
- $source = substr_replace($source, $replace, $match[0][1] - $_offset, $_length);
+ $source = substr_replace($source, $replace, $match[ 0 ][ 1 ] - $_offset, $_length);
$_offset += $_length - strlen($replace);
$_store ++;
@@ -45,29 +46,27 @@ function smarty_outputfilter_trimwhitespace($source)
// capture html elements not to be messed with
$_offset = 0;
- if (preg_match_all('#(<script[^>]*>.*?</script[^>]*>)|(<textarea[^>]*>.*?</textarea[^>]*>)|(<pre[^>]*>.*?</pre[^>]*>)#is', $source, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) {
+ if (preg_match_all('#(<script[^>]*>.*?</script[^>]*>)|(<textarea[^>]*>.*?</textarea[^>]*>)|(<pre[^>]*>.*?</pre[^>]*>)#is',
+ $source, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) {
foreach ($matches as $match) {
- $store[] = $match[0][0];
- $_length = strlen($match[0][0]);
+ $store[] = $match[ 0 ][ 0 ];
+ $_length = strlen($match[ 0 ][ 0 ]);
$replace = '@!@SMARTY:' . $_store . ':SMARTY@!@';
- $source = substr_replace($source, $replace, $match[0][1] - $_offset, $_length);
+ $source = substr_replace($source, $replace, $match[ 0 ][ 1 ] - $_offset, $_length);
$_offset += $_length - strlen($replace);
$_store ++;
}
}
- $expressions = array(
- // replace multiple spaces between tags by a single space
- // can't remove them entirely, becaue that might break poorly implemented CSS display:inline-block elements
- '#(:SMARTY@!@|>)\s+(?=@!@SMARTY:|<)#s' => '\1 \2',
- // remove spaces between attributes (but not in attribute values!)
- '#(([a-z0-9]\s*=\s*("[^"]*?")|(\'[^\']*?\'))|<[a-z0-9_]+)\s+([a-z/>])#is' => '\1 \5',
- // note: for some very weird reason trim() seems to remove spaces inside attributes.
- // maybe a \0 byte or something is interfering?
- '#^\s+<#Ss' => '<',
- '#>\s+$#Ss' => '>',
- );
+ $expressions = array(// replace multiple spaces between tags by a single space
+ // can't remove them entirely, becaue that might break poorly implemented CSS display:inline-block elements
+ '#(:SMARTY@!@|>)\s+(?=@!@SMARTY:|<)#s' => '\1 \2',
+ // remove spaces between attributes (but not in attribute values!)
+ '#(([a-z0-9]\s*=\s*("[^"]*?")|(\'[^\']*?\'))|<[a-z0-9_]+)\s+([a-z/>])#is' => '\1 \5',
+ // note: for some very weird reason trim() seems to remove spaces inside attributes.
+ // maybe a \0 byte or something is interfering?
+ '#^\s+<#Ss' => '<', '#>\s+$#Ss' => '>',);
$source = preg_replace(array_keys($expressions), array_values($expressions), $source);
// note: for some very weird reason trim() seems to remove spaces inside attributes.
@@ -77,9 +76,9 @@ function smarty_outputfilter_trimwhitespace($source)
$_offset = 0;
if (preg_match_all('#@!@SMARTY:([0-9]+):SMARTY@!@#is', $source, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) {
foreach ($matches as $match) {
- $_length = strlen($match[0][0]);
- $replace = $store[$match[1][0]];
- $source = substr_replace($source, $replace, $match[0][1] + $_offset, $_length);
+ $_length = strlen($match[ 0 ][ 0 ]);
+ $replace = $store[ $match[ 1 ][ 0 ] ];
+ $source = substr_replace($source, $replace, $match[ 0 ][ 1 ] + $_offset, $_length);
$_offset += strlen($replace) - $_length;
$_store ++;
diff --git a/vendor/smarty/smarty/libs/plugins/shared.escape_special_chars.php b/vendor/smarty/smarty/libs/plugins/shared.escape_special_chars.php
new file mode 100644
index 000000000..b68fe4b9d
--- /dev/null
+++ b/vendor/smarty/smarty/libs/plugins/shared.escape_special_chars.php
@@ -0,0 +1,34 @@
+<?php
+/**
+ * Smarty shared plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsShared
+ */
+
+/**
+ * escape_special_chars common function
+ * Function: smarty_function_escape_special_chars<br>
+ * Purpose: used by other smarty functions to escape
+ * special chars except for already escaped ones
+ *
+ * @author Monte Ohrt <monte at ohrt dot com>
+ *
+ * @param string $string text that should by escaped
+ *
+ * @return string
+ */
+function smarty_function_escape_special_chars($string)
+{
+ if (!is_array($string)) {
+ if (version_compare(PHP_VERSION, '5.2.3', '>=')) {
+ $string = htmlspecialchars($string, ENT_COMPAT, Smarty::$_CHARSET, false);
+ } else {
+ $string = preg_replace('!&(#?\w+);!', '%%%SMARTY_START%%%\\1%%%SMARTY_END%%%', $string);
+ $string = htmlspecialchars($string);
+ $string = str_replace(array('%%%SMARTY_START%%%', '%%%SMARTY_END%%%'), array('&', ';'), $string);
+ }
+ }
+
+ return $string;
+}
diff --git a/library/Smarty/libs/plugins/shared.literal_compiler_param.php b/vendor/smarty/smarty/libs/plugins/shared.literal_compiler_param.php
index 47d728a76..8a3711d30 100644
--- a/library/Smarty/libs/plugins/shared.literal_compiler_param.php
+++ b/vendor/smarty/smarty/libs/plugins/shared.literal_compiler_param.php
@@ -20,16 +20,17 @@
function smarty_literal_compiler_param($params, $index, $default = null)
{
// not set, go default
- if (!isset($params[$index])) {
+ if (!isset($params[ $index ])) {
return $default;
}
// test if param is a literal
- if (!preg_match('/^([\'"]?)[a-zA-Z0-9-]+(\\1)$/', $params[$index])) {
- throw new SmartyException('$param[' . $index . '] is not a literal and is thus not evaluatable at compile time');
+ if (!preg_match('/^([\'"]?)[a-zA-Z0-9-]+(\\1)$/', $params[ $index ])) {
+ throw new SmartyException('$param[' . $index .
+ '] is not a literal and is thus not evaluatable at compile time');
}
$t = null;
- eval("\$t = " . $params[$index] . ";");
+ eval("\$t = " . $params[ $index ] . ";");
return $t;
}
diff --git a/library/Smarty/libs/plugins/shared.make_timestamp.php b/vendor/smarty/smarty/libs/plugins/shared.make_timestamp.php
index f87d40c7e..67f862441 100644
--- a/library/Smarty/libs/plugins/shared.make_timestamp.php
+++ b/vendor/smarty/smarty/libs/plugins/shared.make_timestamp.php
@@ -21,12 +21,14 @@ function smarty_make_timestamp($string)
if (empty($string)) {
// use "now":
return time();
- } elseif ($string instanceof DateTime || (interface_exists('DateTimeInterface', false) && $string instanceof DateTimeInterface)) {
+ } elseif ($string instanceof DateTime ||
+ (interface_exists('DateTimeInterface', false) && $string instanceof DateTimeInterface)
+ ) {
return (int) $string->format('U'); // PHP 5.2 BC
} elseif (strlen($string) == 14 && ctype_digit($string)) {
// it is mysql timestamp format of YYYYMMDDHHMMSS?
- return mktime(substr($string, 8, 2), substr($string, 10, 2), substr($string, 12, 2),
- substr($string, 4, 2), substr($string, 6, 2), substr($string, 0, 4));
+ return mktime(substr($string, 8, 2), substr($string, 10, 2), substr($string, 12, 2), substr($string, 4, 2),
+ substr($string, 6, 2), substr($string, 0, 4));
} elseif (is_numeric($string)) {
// it is a numeric string, we handle it as timestamp
return (int) $string;
diff --git a/library/Smarty/libs/plugins/shared.mb_str_replace.php b/vendor/smarty/smarty/libs/plugins/shared.mb_str_replace.php
index a5682ed30..0c3ffe258 100644
--- a/library/Smarty/libs/plugins/shared.mb_str_replace.php
+++ b/vendor/smarty/smarty/libs/plugins/shared.mb_str_replace.php
@@ -26,7 +26,7 @@ if (!function_exists('smarty_mb_str_replace')) {
if (is_array($subject)) {
// call mb_replace for each single string in $subject
foreach ($subject as &$string) {
- $string = & smarty_mb_str_replace($search, $replace, $string, $c);
+ $string = smarty_mb_str_replace($search, $replace, $string, $c);
$count += $c;
}
} elseif (is_array($search)) {
diff --git a/library/Smarty/libs/plugins/shared.mb_unicode.php b/vendor/smarty/smarty/libs/plugins/shared.mb_unicode.php
index 0f790b56a..0f790b56a 100644
--- a/library/Smarty/libs/plugins/shared.mb_unicode.php
+++ b/vendor/smarty/smarty/libs/plugins/shared.mb_unicode.php
diff --git a/library/Smarty/libs/plugins/shared.mb_wordwrap.php b/vendor/smarty/smarty/libs/plugins/shared.mb_wordwrap.php
index 31f4acf01..21632a1c0 100644
--- a/library/Smarty/libs/plugins/shared.mb_wordwrap.php
+++ b/vendor/smarty/smarty/libs/plugins/shared.mb_wordwrap.php
@@ -24,7 +24,8 @@ if (!function_exists('smarty_mb_wordwrap')) {
function smarty_mb_wordwrap($str, $width = 75, $break = "\n", $cut = false)
{
// break words into tokens using white space as a delimiter
- $tokens = preg_split('!(\s)!S' . Smarty::$_UTF8_MODIFIER, $str, - 1, PREG_SPLIT_NO_EMPTY + PREG_SPLIT_DELIM_CAPTURE);
+ $tokens =
+ preg_split('!(\s)!S' . Smarty::$_UTF8_MODIFIER, $str, - 1, PREG_SPLIT_NO_EMPTY + PREG_SPLIT_DELIM_CAPTURE);
$length = 0;
$t = '';
$_previous = false;
@@ -34,8 +35,9 @@ if (!function_exists('smarty_mb_wordwrap')) {
$token_length = mb_strlen($_token, Smarty::$_CHARSET);
$_tokens = array($_token);
if ($token_length > $width) {
- if ($cut) {
- $_tokens = preg_split('!(.{' . $width . '})!S' . Smarty::$_UTF8_MODIFIER, $_token, - 1, PREG_SPLIT_NO_EMPTY + PREG_SPLIT_DELIM_CAPTURE);
+ if ($cut) {
+ $_tokens = preg_split('!(.{' . $width . '})!S' . Smarty::$_UTF8_MODIFIER, $_token, - 1,
+ PREG_SPLIT_NO_EMPTY + PREG_SPLIT_DELIM_CAPTURE);
}
}
diff --git a/library/Smarty/libs/plugins/variablefilter.htmlspecialchars.php b/vendor/smarty/smarty/libs/plugins/variablefilter.htmlspecialchars.php
index aecd1e7e7..aecd1e7e7 100644
--- a/library/Smarty/libs/plugins/variablefilter.htmlspecialchars.php
+++ b/vendor/smarty/smarty/libs/plugins/variablefilter.htmlspecialchars.php
diff --git a/library/Smarty/libs/sysplugins/smarty_cacheresource.php b/vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource.php
index 14ab62fd9..2a4552cb2 100644
--- a/library/Smarty/libs/sysplugins/smarty_cacheresource.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource.php
@@ -46,11 +46,12 @@ abstract class Smarty_CacheResource
*
* @param Smarty_Internal_Template $_template template object
* @param Smarty_Template_Cached $cached cached object
- * @param bool $update flag if called because cache update
+ * @param boolean $update flag if called because cache update
*
- * @return bool true or false if the cached content does not exist
+ * @return boolean true or false if the cached content does not exist
*/
- abstract public function process(Smarty_Internal_Template $_template, Smarty_Template_Cached $cached = null, $update = false);
+ abstract public function process(Smarty_Internal_Template $_template, Smarty_Template_Cached $cached = null,
+ $update = false);
/**
* Write the rendered template output to cache
@@ -63,6 +64,15 @@ abstract class Smarty_CacheResource
abstract public function writeCachedContent(Smarty_Internal_Template $_template, $content);
/**
+ * Read cached template from cache
+ *
+ * @param Smarty_Internal_Template $_template template object
+ *
+ * @return string content
+ */
+ abstract function readCachedContent(Smarty_Internal_Template $_template);
+
+ /**
* Return cached content
*
* @param Smarty_Internal_Template $_template template object
@@ -185,39 +195,26 @@ abstract class Smarty_CacheResource
}
// try smarty's cache
- if (isset($smarty->_cache['cacheresource_handlers'][$type])) {
- return $smarty->_cache['cacheresource_handlers'][$type];
+ if (isset($smarty->_cache[ 'cacheresource_handlers' ][ $type ])) {
+ return $smarty->_cache[ 'cacheresource_handlers' ][ $type ];
}
// try registered resource
- if (isset($smarty->registered_cache_resources[$type])) {
+ if (isset($smarty->registered_cache_resources[ $type ])) {
// do not cache these instances as they may vary from instance to instance
- return $smarty->_cache['cacheresource_handlers'][$type] = $smarty->registered_cache_resources[$type];
+ return $smarty->_cache[ 'cacheresource_handlers' ][ $type ] = $smarty->registered_cache_resources[ $type ];
}
// try sysplugins dir
- if (isset(self::$sysplugins[$type])) {
+ if (isset(self::$sysplugins[ $type ])) {
$cache_resource_class = 'Smarty_Internal_CacheResource_' . ucfirst($type);
- return $smarty->_cache['cacheresource_handlers'][$type] = new $cache_resource_class();
+ return $smarty->_cache[ 'cacheresource_handlers' ][ $type ] = new $cache_resource_class();
}
// try plugins dir
$cache_resource_class = 'Smarty_CacheResource_' . ucfirst($type);
if ($smarty->loadPlugin($cache_resource_class)) {
- return $smarty->_cache['cacheresource_handlers'][$type] = new $cache_resource_class();
+ return $smarty->_cache[ 'cacheresource_handlers' ][ $type ] = new $cache_resource_class();
}
// give up
throw new SmartyException("Unable to load cache resource '{$type}'");
}
-
- /**
- * Invalid Loaded Cache Files
- *
- * @param Smarty $smarty Smarty object
- */
- public function invalidLoadedCache(Smarty $smarty)
- {
- $smarty->_cache['isCached'] = array();
- if (isset($smarty->ext->_subtemplate)) {
- $smarty->ext->_subtemplate->tplObjects = array();
- }
- }
}
diff --git a/library/Smarty/libs/sysplugins/smarty_cacheresource_custom.php b/vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource_custom.php
index 4e9606ef1..8f1290e49 100644
--- a/library/Smarty/libs/sysplugins/smarty_cacheresource_custom.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource_custom.php
@@ -43,7 +43,7 @@ abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource
*/
protected function fetchTimestamp($id, $name, $cache_id, $compile_id)
{
- return null;
+ return false;
}
/**
@@ -63,9 +63,9 @@ abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource
/**
* Delete content from cache
*
- * @param string $name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
+ * @param string|null $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
*
* @return integer number of deleted caches
@@ -84,7 +84,7 @@ abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource
{
$_cache_id = isset($cached->cache_id) ? preg_replace('![^\w\|]+!', '_', $cached->cache_id) : null;
$_compile_id = isset($cached->compile_id) ? preg_replace('![^\w]+!', '_', $cached->compile_id) : null;
- $path = $cached->source->filepath . $_cache_id . $_compile_id;
+ $path = $cached->source->uid . $_cache_id . $_compile_id;
$cached->filepath = sha1($path);
if ($_template->smarty->cache_locking) {
$cached->lock_id = sha1('lock.' . $path);
@@ -101,7 +101,8 @@ abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource
*/
public function populateTimestamp(Smarty_Template_Cached $cached)
{
- $mtime = $this->fetchTimestamp($cached->filepath, $cached->source->name, $cached->cache_id, $cached->compile_id);
+ $mtime =
+ $this->fetchTimestamp($cached->filepath, $cached->source->name, $cached->cache_id, $cached->compile_id);
if ($mtime !== null) {
$cached->timestamp = $mtime;
$cached->exists = !!$cached->timestamp;
@@ -109,7 +110,8 @@ abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource
return;
}
$timestamp = null;
- $this->fetch($cached->filepath, $cached->source->name, $cached->cache_id, $cached->compile_id, $cached->content, $timestamp);
+ $this->fetch($cached->filepath, $cached->source->name, $cached->cache_id, $cached->compile_id, $cached->content,
+ $timestamp);
$cached->timestamp = isset($timestamp) ? $timestamp : false;
$cached->exists = !!$cached->timestamp;
}
@@ -117,27 +119,25 @@ abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource
/**
* Read the cached template and process the header
*
- * @param Smarty_Internal_Template $_template template object
- * @param Smarty_Template_Cached $cached cached object
- * @param bool $update flag if called because cache update
+ * @param \Smarty_Internal_Template $_smarty_tpl do not change variable name, is used by compiled template
+ * @param Smarty_Template_Cached $cached cached object
+ * @param boolean $update flag if called because cache update
*
* @return boolean true or false if the cached content does not exist
*/
- public function process(Smarty_Internal_Template $_template, Smarty_Template_Cached $cached = null, $update = false)
+ public function process(Smarty_Internal_Template $_smarty_tpl, Smarty_Template_Cached $cached = null,
+ $update = false)
{
if (!$cached) {
- $cached = $_template->cached;
+ $cached = $_smarty_tpl->cached;
}
$content = $cached->content ? $cached->content : null;
$timestamp = $cached->timestamp ? $cached->timestamp : null;
if ($content === null || !$timestamp) {
- $this->fetch($_template->cached->filepath, $_template->source->name, $_template->cache_id, $_template->compile_id, $content, $timestamp);
+ $this->fetch($_smarty_tpl->cached->filepath, $_smarty_tpl->source->name, $_smarty_tpl->cache_id,
+ $_smarty_tpl->compile_id, $content, $timestamp);
}
if (isset($content)) {
- /** @var Smarty_Internal_Template $_smarty_tpl
- * used in evaluated code
- */
- $_smarty_tpl = $_template;
eval("?>" . $content);
$cached->content = null;
return true;
@@ -156,7 +156,8 @@ abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource
*/
public function writeCachedContent(Smarty_Internal_Template $_template, $content)
{
- return $this->save($_template->cached->filepath, $_template->source->name, $_template->cache_id, $_template->compile_id, $_template->cache_lifetime, $content);
+ return $this->save($_template->cached->filepath, $_template->source->name, $_template->cache_id,
+ $_template->compile_id, $_template->cache_lifetime, $content);
}
/**
@@ -164,7 +165,7 @@ abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource
*
* @param Smarty_Internal_Template $_template template object
*
- * @return string content
+ * @return string|boolean content
*/
public function readCachedContent(Smarty_Internal_Template $_template)
{
@@ -172,7 +173,8 @@ abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource
$timestamp = null;
if ($content === null) {
$timestamp = null;
- $this->fetch($_template->cached->filepath, $_template->source->name, $_template->cache_id, $_template->compile_id, $content, $timestamp);
+ $this->fetch($_template->cached->filepath, $_template->source->name, $_template->cache_id,
+ $_template->compile_id, $content, $timestamp);
}
if (isset($content)) {
return $content;
@@ -215,14 +217,6 @@ abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource
} else {
return 0;
}
- // remove from template cache
- if (isset($smarty->_cache['template_objects'])) {
- foreach ($smarty->_cache['template_objects'] as $key => $_tpl) {
- if (isset($_tpl->cached) && $_tpl->source->uid == $source->uid) {
- unset($smarty->_cache['template_objects'][$key]);
- }
- }
- }
}
return $this->delete($cache_name, $cache_id, $compile_id, $exp_time);
diff --git a/library/Smarty/libs/sysplugins/smarty_cacheresource_keyvaluestore.php b/vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource_keyvaluestore.php
index ee4021a19..bab1b5c09 100644
--- a/library/Smarty/libs/sysplugins/smarty_cacheresource_keyvaluestore.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource_keyvaluestore.php
@@ -55,7 +55,7 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource
public function populate(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template)
{
$cached->filepath = $_template->source->uid . '#' . $this->sanitize($cached->source->resource) . '#' .
- $this->sanitize($cached->cache_id) . '#' . $this->sanitize($cached->compile_id);
+ $this->sanitize($cached->cache_id) . '#' . $this->sanitize($cached->compile_id);
$this->populateTimestamp($cached);
}
@@ -69,40 +69,41 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource
*/
public function populateTimestamp(Smarty_Template_Cached $cached)
{
- if (!$this->fetch($cached->filepath, $cached->source->name, $cached->cache_id, $cached->compile_id, $content, $timestamp, $cached->source->uid)) {
+ if (!$this->fetch($cached->filepath, $cached->source->name, $cached->cache_id, $cached->compile_id, $content,
+ $timestamp, $cached->source->uid)
+ ) {
return;
}
$cached->content = $content;
$cached->timestamp = (int) $timestamp;
- $cached->exists = $cached->timestamp;
+ $cached->exists = !!$cached->timestamp;
}
/**
* Read the cached template and process the header
*
- * @param Smarty_Internal_Template $_template template object
- * @param Smarty_Template_Cached $cached cached object
- * @param bool $update flag if called because cache update
+ * @param \Smarty_Internal_Template $_smarty_tpl do not change variable name, is used by compiled template
+ * @param Smarty_Template_Cached $cached cached object
+ * @param boolean $update flag if called because cache update
*
* @return boolean true or false if the cached content does not exist
*/
- public function process(Smarty_Internal_Template $_template, Smarty_Template_Cached $cached = null, $update = false)
+ public function process(Smarty_Internal_Template $_smarty_tpl, Smarty_Template_Cached $cached = null,
+ $update = false)
{
if (!$cached) {
- $cached = $_template->cached;
+ $cached = $_smarty_tpl->cached;
}
$content = $cached->content ? $cached->content : null;
$timestamp = $cached->timestamp ? $cached->timestamp : null;
if ($content === null || !$timestamp) {
- if (!$this->fetch($_template->cached->filepath, $_template->source->name, $_template->cache_id, $_template->compile_id, $content, $timestamp, $_template->source->uid)) {
+ if (!$this->fetch($_smarty_tpl->cached->filepath, $_smarty_tpl->source->name, $_smarty_tpl->cache_id,
+ $_smarty_tpl->compile_id, $content, $timestamp, $_smarty_tpl->source->uid)
+ ) {
return false;
}
}
if (isset($content)) {
- /** @var Smarty_Internal_Template $_smarty_tpl
- * used in evaluated code
- */
- $_smarty_tpl = $_template;
eval("?>" . $content);
return true;
@@ -131,14 +132,16 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource
*
* @param Smarty_Internal_Template $_template template object
*
- * @return string content
+ * @return string|false content
*/
public function readCachedContent(Smarty_Internal_Template $_template)
{
$content = $_template->cached->content ? $_template->cached->content : null;
$timestamp = null;
if ($content === null) {
- if (!$this->fetch($_template->cached->filepath, $_template->source->name, $_template->cache_id, $_template->compile_id, $content, $timestamp, $_template->source->uid)) {
+ if (!$this->fetch($_template->cached->filepath, $_template->source->name, $_template->cache_id,
+ $_template->compile_id, $content, $timestamp, $_template->source->uid)
+ ) {
return false;
}
}
@@ -164,14 +167,6 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource
if (!$this->purge()) {
$this->invalidate(null);
}
- // remove from template cache
- if (isset($smarty->_cache['template_objects'])) {
- foreach ($smarty->_cache['template_objects'] as $key => $tpl) {
- if (isset($tpl->cached)) {
- unset($smarty->_cache['template_objects'][$key]);
- }
- }
- }
return - 1;
}
@@ -194,19 +189,9 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource
{
$uid = $this->getTemplateUid($smarty, $resource_name);
$cid = $uid . '#' . $this->sanitize($resource_name) . '#' . $this->sanitize($cache_id) . '#' .
- $this->sanitize($compile_id);
+ $this->sanitize($compile_id);
$this->delete(array($cid));
$this->invalidate($cid, $resource_name, $cache_id, $compile_id, $uid);
- // remove from template cache
- if (isset($resource_name) && isset($smarty->_cache['template_objects'])) {
- if (isset($smarty->_cache['template_objects'])) {
- foreach ($smarty->_cache['template_objects'] as $key => $tpl) {
- if ($tpl->source->uid == $uid && isset($tpl->cached)) {
- unset($smarty->_cache['template_objects'][$key]);
- }
- }
- }
- }
return - 1;
}
@@ -242,7 +227,7 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource
{
$string = trim($string, '|');
if (!$string) {
- return null;
+ return '';
}
return preg_replace('#[^\w\|]+#S', '_', $string);
}
@@ -260,14 +245,16 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource
*
* @return boolean success
*/
- protected function fetch($cid, $resource_name = null, $cache_id = null, $compile_id = null, &$content = null, &$timestamp = null, $resource_uid = null)
+ protected function fetch($cid, $resource_name = null, $cache_id = null, $compile_id = null, &$content = null,
+ &$timestamp = null, $resource_uid = null)
{
$t = $this->read(array($cid));
- $content = !empty($t[$cid]) ? $t[$cid] : null;
+ $content = !empty($t[ $cid ]) ? $t[ $cid ] : null;
$timestamp = null;
if ($content && ($timestamp = $this->getMetaTimestamp($content))) {
- $invalidated = $this->getLatestInvalidationTimestamp($cid, $resource_name, $cache_id, $compile_id, $resource_uid);
+ $invalidated =
+ $this->getLatestInvalidationTimestamp($cid, $resource_name, $cache_id, $compile_id, $resource_uid);
if ($invalidated > $timestamp) {
$timestamp = null;
$content = null;
@@ -286,7 +273,7 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource
protected function addMetaTimestamp(&$content)
{
$mt = explode(" ", microtime());
- $ts = pack("NN", $mt[1], (int) ($mt[0] * 100000000));
+ $ts = pack("NN", $mt[ 1 ], (int) ($mt[ 0 ] * 100000000));
$content = $ts . $content;
}
@@ -300,6 +287,10 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource
protected function getMetaTimestamp(&$content)
{
extract(unpack('N1s/N1m/a*content', $content));
+ /**
+ * @var int $s
+ * @var int $m
+ */
return $s + ($m / 100000000);
}
@@ -314,7 +305,8 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource
*
* @return void
*/
- protected function invalidate($cid = null, $resource_name = null, $cache_id = null, $compile_id = null, $resource_uid = null)
+ protected function invalidate($cid = null, $resource_name = null, $cache_id = null, $compile_id = null,
+ $resource_uid = null)
{
$now = microtime(true);
$key = null;
@@ -354,7 +346,8 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource
*
* @return float the microtime the CacheID was invalidated
*/
- protected function getLatestInvalidationTimestamp($cid, $resource_name = null, $cache_id = null, $compile_id = null, $resource_uid = null)
+ protected function getLatestInvalidationTimestamp($cid, $resource_name = null, $cache_id = null, $compile_id = null,
+ $resource_uid = null)
{
// abort if there is no CacheID
if (false && !$cid) {
@@ -388,7 +381,8 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource
* @return array list of InvalidationKeys
* @uses $invalidationKeyPrefix to prepend to each InvalidationKey
*/
- protected function listInvalidationKeys($cid, $resource_name = null, $cache_id = null, $compile_id = null, $resource_uid = null)
+ protected function listInvalidationKeys($cid, $resource_name = null, $cache_id = null, $compile_id = null,
+ $resource_uid = null)
{
$t = array('IVK#ALL');
$_name = $_compile = '#';
@@ -440,7 +434,7 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource
$key = 'LOCK#' . $cached->filepath;
$data = $this->read(array($key));
- return $data && time() - $data[$key] < $smarty->locking_timeout;
+ return $data && time() - $data[ $key ] < $smarty->locking_timeout;
}
/**
diff --git a/library/Smarty/libs/sysplugins/smarty_data.php b/vendor/smarty/smarty/libs/sysplugins/smarty_data.php
index 7cf18a43e..b9f5de9a5 100644
--- a/library/Smarty/libs/sysplugins/smarty_data.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_data.php
@@ -59,7 +59,7 @@ class Smarty_Data extends Smarty_Internal_Data
} elseif (is_array($_parent)) {
// set up variable values
foreach ($_parent as $_key => $_val) {
- $this->tpl_vars[$_key] = new Smarty_Variable($_val);
+ $this->tpl_vars[ $_key ] = new Smarty_Variable($_val);
}
} elseif ($_parent != null) {
throw new SmartyException("Wrong type for template variables");
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_block.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_block.php
new file mode 100644
index 000000000..a33ad1b11
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_block.php
@@ -0,0 +1,90 @@
+<?php
+
+/**
+ * Smarty {block} tag class
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Block
+{
+ /**
+ * Block name
+ *
+ * @var string
+ */
+ public $name = '';
+
+ /**
+ * Hide attribute
+ *
+ * @var bool
+ */
+ public $hide = false;
+
+ /**
+ * Append attribute
+ *
+ * @var bool
+ */
+ public $append = false;
+
+ /**
+ * prepend attribute
+ *
+ * @var bool
+ */
+ public $prepend = false;
+
+ /**
+ * Block calls {$smarty.block.child}
+ *
+ * @var bool
+ */
+ public $callsChild = false;
+
+ /**
+ * Inheritance child block
+ *
+ * @var Smarty_Internal_Block|null
+ */
+ public $child = null;
+
+ /**
+ * Inheritance calling parent block
+ *
+ * @var Smarty_Internal_Block|null
+ */
+ public $parent = null;
+
+ /**
+ * Inheritance Template index
+ *
+ * @var int
+ */
+ public $tplIndex = 0;
+
+ /**
+ * Smarty_Internal_Block constructor.
+ * - if outer level {block} of child template ($state == 1) save it as child root block
+ * - otherwise process inheritance and render
+ *
+ * @param string $name block name
+ * @param int|null $tplIndex index of outer level {block} if nested
+ */
+ public function __construct($name, $tplIndex)
+ {
+ $this->name = $name;
+ $this->tplIndex = $tplIndex;
+ }
+
+ /**
+ * Compiled block code overloaded by {block} class
+ *
+ * @param \Smarty_Internal_Template $tpl
+ */
+ public function callBlock(Smarty_Internal_Template $tpl)
+ {
+ }
+} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_cacheresource_file.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_cacheresource_file.php
index 64d02dfe5..7df4ddffb 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_cacheresource_file.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_cacheresource_file.php
@@ -27,39 +27,32 @@ class Smarty_Internal_CacheResource_File extends Smarty_CacheResource
*/
public function populate(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template)
{
- $_source_file_path = str_replace(':', '.', $_template->source->filepath);
- $_cache_id = isset($_template->cache_id) ? preg_replace('![^\w\|]+!', '_', $_template->cache_id) : null;
- $_compile_id = isset($_template->compile_id) ? preg_replace('![^\w]+!', '_', $_template->compile_id) : null;
- $_filepath = $_template->source->uid;
- // if use_sub_dirs, break file into directories
- if ($_template->smarty->use_sub_dirs) {
- $_filepath = substr($_filepath, 0, 2) . DS . substr($_filepath, 2, 2) . DS . substr($_filepath, 4, 2) . DS .
- $_filepath;
+ $source = &$_template->source;
+ $smarty = &$_template->smarty;
+ $_compile_dir_sep = $smarty->use_sub_dirs ? $smarty->ds : '^';
+ $_filepath = sha1($source->uid . $smarty->_joined_template_dir);
+ $cached->filepath = $smarty->getCacheDir();
+ if (isset($_template->cache_id)) {
+ $cached->filepath .= preg_replace(array('![^\w|]+!', '![|]+!'), array('_', $_compile_dir_sep),
+ $_template->cache_id) . $_compile_dir_sep;
}
- $_compile_dir_sep = $_template->smarty->use_sub_dirs ? DS : '^';
- if (isset($_cache_id)) {
- $_cache_id = str_replace('|', $_compile_dir_sep, $_cache_id) . $_compile_dir_sep;
- } else {
- $_cache_id = '';
+ if (isset($_template->compile_id)) {
+ $cached->filepath .= preg_replace('![^\w]+!', '_', $_template->compile_id) . $_compile_dir_sep;
}
- if (isset($_compile_id)) {
- $_compile_id = $_compile_id . $_compile_dir_sep;
- } else {
- $_compile_id = '';
+ // if use_sub_dirs, break file into directories
+ if ($smarty->use_sub_dirs) {
+ $cached->filepath .= $_filepath[ 0 ] . $_filepath[ 1 ] . $smarty->ds . $_filepath[ 2 ] . $_filepath[ 3 ] . $smarty->ds .
+ $_filepath[ 4 ] . $_filepath[ 5 ] . $smarty->ds;
}
- $_cache_dir = $_template->smarty->getCacheDir();
- if ($_template->smarty->cache_locking) {
- // create locking file name
- // relative file name?
- if (!preg_match('/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/', $_cache_dir)) {
- $_lock_dir = rtrim(getcwd(), '/\\') . DS . $_cache_dir;
- } else {
- $_lock_dir = $_cache_dir;
- }
- $cached->lock_id = $_lock_dir . sha1($_cache_id . $_compile_id . $_template->source->uid) . '.lock';
+ $cached->filepath .= $_filepath;
+ $basename = $source->handler->getBasename($source);
+ if (!empty($basename)) {
+ $cached->filepath .= '.' . $basename;
+ }
+ if ($smarty->cache_locking) {
+ $cached->lock_id = $cached->filepath . '.lock';
}
- $cached->filepath = $_cache_dir . $_cache_id . $_compile_id . $_filepath . '.' . basename($_source_file_path) .
- '.php';
+ $cached->filepath .= '.php';
$cached->timestamp = $cached->exists = is_file($cached->filepath);
if ($cached->exists) {
$cached->timestamp = filemtime($cached->filepath);
@@ -84,23 +77,21 @@ class Smarty_Internal_CacheResource_File extends Smarty_CacheResource
/**
* Read the cached template and process its header
*
- * @param Smarty_Internal_Template $_template template object
- * @param Smarty_Template_Cached $cached cached object
- * @param bool $update flag if called because cache update
+ * @param \Smarty_Internal_Template $_smarty_tpl do not change variable name, is used by compiled template
+ * @param Smarty_Template_Cached $cached cached object
+ * @param bool $update flag if called because cache update
*
* @return boolean true or false if the cached content does not exist
*/
- public function process(Smarty_Internal_Template $_template, Smarty_Template_Cached $cached = null, $update = false)
+ public function process(Smarty_Internal_Template $_smarty_tpl, Smarty_Template_Cached $cached = null,
+ $update = false)
{
- /** @var Smarty_Internal_Template $_smarty_tpl
- * used in included file
- */
- $_smarty_tpl = $_template;
- $_template->cached->valid = false;
+ $_smarty_tpl->cached->valid = false;
if ($update && defined('HHVM_VERSION')) {
- return $_template->smarty->ext->_hhvm->includeHhvm($_template, $_template->cached->filepath);
+ eval("?>" . file_get_contents($_smarty_tpl->cached->filepath));
+ return true;
} else {
- return @include $_template->cached->filepath;
+ return @include $_smarty_tpl->cached->filepath;
}
}
@@ -114,9 +105,13 @@ class Smarty_Internal_CacheResource_File extends Smarty_CacheResource
*/
public function writeCachedContent(Smarty_Internal_Template $_template, $content)
{
- if ($_template->smarty->ext->_writeFile->writeFile($_template->cached->filepath, $content, $_template->smarty) === true) {
- if (function_exists('opcache_invalidate')) {
- opcache_invalidate($_template->cached->filepath);
+ if ($_template->smarty->ext->_writeFile->writeFile($_template->cached->filepath, $content,
+ $_template->smarty) === true
+ ) {
+ if (function_exists('opcache_invalidate') && strlen(ini_get("opcache.restrict_api")) < 1) {
+ opcache_invalidate($_template->cached->filepath, true);
+ } elseif (function_exists('apc_compile_file')) {
+ apc_compile_file($_template->cached->filepath);
}
$cached = $_template->cached;
$cached->timestamp = $cached->exists = is_file($cached->filepath);
@@ -153,7 +148,7 @@ class Smarty_Internal_CacheResource_File extends Smarty_CacheResource
*/
public function clearAll(Smarty $smarty, $exp_time = null)
{
- return Smarty_Internal_Extension_Clear::clear($smarty, null, null, null, $exp_time);
+ return $smarty->ext->_cacheResourceFile->clear($smarty, null, null, null, $exp_time);
}
/**
@@ -169,7 +164,7 @@ class Smarty_Internal_CacheResource_File extends Smarty_CacheResource
*/
public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time)
{
- return Smarty_Internal_Extension_Clear::clear($smarty, $resource_name, $cache_id, $compile_id, $exp_time);
+ return $smarty->ext->_cacheResourceFile->clear($smarty, $resource_name, $cache_id, $compile_id, $exp_time);
}
/**
@@ -188,7 +183,7 @@ class Smarty_Internal_CacheResource_File extends Smarty_CacheResource
clearstatcache();
}
if (is_file($cached->lock_id)) {
- $t = @filemtime($cached->lock_id);
+ $t = filemtime($cached->lock_id);
return $t && (time() - $t < $smarty->locking_timeout);
} else {
return false;
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_append.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_append.php
index bd2ffe474..8539d6b2a 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_append.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_append.php
@@ -19,9 +19,9 @@ class Smarty_Internal_Compile_Append extends Smarty_Internal_Compile_Assign
/**
* Compiles code for the {append} tag
*
- * @param array $args array with attributes from parser
+ * @param array $args array with attributes from parser
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
+ * @param array $parameter array with compilation parameter
*
* @return string compiled code
*/
@@ -31,14 +31,15 @@ class Smarty_Internal_Compile_Append extends Smarty_Internal_Compile_Assign
$this->required_attributes = array('var', 'value');
$this->shorttag_order = array('var', 'value');
$this->optional_attributes = array('scope', 'index');
+ $this->mapCache = array();
// check and get attributes
$_attr = $this->getAttributes($compiler, $args);
// map to compile assign attributes
- if (isset($_attr['index'])) {
- $_params['smarty_internal_index'] = '[' . $_attr['index'] . ']';
- unset($_attr['index']);
+ if (isset($_attr[ 'index' ])) {
+ $_params[ 'smarty_internal_index' ] = '[' . $_attr[ 'index' ] . ']';
+ unset($_attr[ 'index' ]);
} else {
- $_params['smarty_internal_index'] = '[]';
+ $_params[ 'smarty_internal_index' ] = '[]';
}
$_new_attr = array();
foreach ($_attr as $key => $value) {
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_assign.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_assign.php
new file mode 100644
index 000000000..3bd33847b
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_assign.php
@@ -0,0 +1,94 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Assign
+ * Compiles the {assign} tag
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Assign Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Assign extends Smarty_Internal_CompileBase
+{
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $option_flags = array('nocache', 'noscope');
+
+ /**
+ * Valid scope names
+ *
+ * @var array
+ */
+ public $valid_scopes = array('local' => Smarty::SCOPE_LOCAL, 'parent' => Smarty::SCOPE_PARENT,
+ 'root' => Smarty::SCOPE_ROOT, 'global' => Smarty::SCOPE_GLOBAL,
+ 'tpl_root' => Smarty::SCOPE_TPL_ROOT, 'smarty' => Smarty::SCOPE_SMARTY);
+
+ /**
+ * Compiles code for the {assign} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ * @throws \SmartyCompilerException
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
+ {
+ // the following must be assigned at runtime because it will be overwritten in Smarty_Internal_Compile_Append
+ $this->required_attributes = array('var', 'value');
+ $this->shorttag_order = array('var', 'value');
+ $this->optional_attributes = array('scope');
+ $this->mapCache = array();
+ $_nocache = false;
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ // nocache ?
+ if ($_var = $compiler->getId($_attr[ 'var' ])) {
+ $_var = "'{$_var}'";
+ } else {
+ $_var = $_attr[ 'var' ];
+ }
+ if ($compiler->tag_nocache || $compiler->nocache) {
+ $_nocache = true;
+ // create nocache var to make it know for further compiling
+ $compiler->setNocacheInVariable($_attr[ 'var' ]);
+ }
+ // scope setup
+ if ($_attr[ 'noscope' ]) {
+ $_scope = - 1;
+ } else {
+ $_scope = $compiler->convertScope($_attr, $this->valid_scopes);
+ }
+ // optional parameter
+ $_params = "";
+ if ($_nocache || $_scope) {
+ $_params .= ' ,' . var_export($_nocache, true);
+ }
+ if ($_scope) {
+ $_params .= ' ,' . $_scope;
+ }
+ if (isset($parameter[ 'smarty_internal_index' ])) {
+ $output =
+ "<?php \$_tmp_array = isset(\$_smarty_tpl->tpl_vars[{$_var}]) ? \$_smarty_tpl->tpl_vars[{$_var}]->value : array();\n";
+ $output .= "if (!is_array(\$_tmp_array) || \$_tmp_array instanceof ArrayAccess) {\n";
+ $output .= "settype(\$_tmp_array, 'array');\n";
+ $output .= "}\n";
+ $output .= "\$_tmp_array{$parameter['smarty_internal_index']} = {$_attr['value']};\n";
+ $output .= "\$_smarty_tpl->_assignInScope({$_var}, \$_tmp_array{$_params});\n?>";
+ } else {
+ $output = "<?php \$_smarty_tpl->_assignInScope({$_var}, {$_attr['value']}{$_params});\n?>";
+ }
+ return $output;
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block.php
new file mode 100644
index 000000000..5098d62fe
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block.php
@@ -0,0 +1,202 @@
+<?php
+/*
+ * This file is part of Smarty.
+ *
+ * (c) 2015 Uwe Tews
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Smarty Internal Plugin Compile Block Class
+ *
+ * @author Uwe Tews <uwe.tews@googlemail.com>
+ */
+class Smarty_Internal_Compile_Block extends Smarty_Internal_Compile_Shared_Inheritance
+{
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $required_attributes = array('name');
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $shorttag_order = array('name');
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $option_flags = array('hide', 'nocache');
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $optional_attributes = array('assign');
+
+ /**
+ * Saved compiler object
+ *
+ * @var Smarty_Internal_TemplateCompilerBase
+ */
+ public $compiler = null;
+
+ /**
+ * Compiles code for the {block} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return bool true
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
+ {
+ if (!isset($compiler->_cache[ 'blockNesting' ])) {
+ $compiler->_cache[ 'blockNesting' ] = 0;
+ }
+ if ($compiler->_cache[ 'blockNesting' ] == 0) {
+ // make sure that inheritance gets initialized in template code
+ $this->registerInit($compiler);
+ $this->option_flags = array('hide', 'nocache', 'append', 'prepend');
+ } else {
+ $this->option_flags = array('hide', 'nocache');
+ }
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ $compiler->_cache[ 'blockNesting' ] ++;
+ $_className = 'Block_' . preg_replace('![^\w]+!', '_', uniqid(rand(), true));
+ $compiler->_cache[ 'blockName' ][ $compiler->_cache[ 'blockNesting' ] ] = $_attr[ 'name' ];
+ $compiler->_cache[ 'blockClass' ][ $compiler->_cache[ 'blockNesting' ] ] = $_className;
+ $compiler->_cache[ 'blockParams' ][ $compiler->_cache[ 'blockNesting' ] ] = array();
+ $compiler->_cache[ 'blockParams' ][ 1 ][ 'subBlocks' ][ trim($_attr[ 'name' ], '"\'') ][] = $_className;
+ $this->openTag($compiler, 'block', array($_attr, $compiler->nocache, $compiler->parser->current_buffer,
+ $compiler->template->compiled->has_nocache_code,
+ $compiler->template->caching));
+ // must whole block be nocache ?
+ if ($compiler->tag_nocache) {
+ $i = 0;
+ }
+ $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
+ // $compiler->suppressNocacheProcessing = true;
+ if ($_attr[ 'nocache' ] === true) {
+ //$compiler->trigger_template_error('nocache option not allowed', $compiler->parser->lex->taglineno);
+ }
+ $compiler->parser->current_buffer = new Smarty_Internal_ParseTree_Template();
+ $compiler->template->compiled->has_nocache_code = false;
+ $compiler->suppressNocacheProcessing = true;
+ }
+}
+
+/**
+ * Smarty Internal Plugin Compile BlockClose Class
+ *
+ */
+class Smarty_Internal_Compile_Blockclose extends Smarty_Internal_Compile_Shared_Inheritance
+{
+ /**
+ * Compiles code for the {/block} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return bool true
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
+ {
+ list($_attr, $_nocache, $_buffer, $_has_nocache_code, $_caching) = $this->closeTag($compiler, array('block'));
+ // init block parameter
+ $_block = $compiler->_cache[ 'blockParams' ][ $compiler->_cache[ 'blockNesting' ] ];
+ unset($compiler->_cache[ 'blockParams' ][ $compiler->_cache[ 'blockNesting' ] ]);
+ $_name = $_attr[ 'name' ];
+ $_assign = isset($_attr[ 'assign' ]) ? $_attr[ 'assign' ] : null;
+ unset($_attr[ 'assign' ], $_attr[ 'name' ]);
+ foreach ($_attr as $name => $stat) {
+ if ((is_bool($stat) && $stat !== false) || (!is_bool($stat) && $stat != 'false')) {
+ $_block[ $name ] = 'true';
+ }
+ }
+ $_className = $compiler->_cache[ 'blockClass' ][ $compiler->_cache[ 'blockNesting' ] ];
+ // get compiled block code
+ $_functionCode = $compiler->parser->current_buffer;
+ // setup buffer for template function code
+ $compiler->parser->current_buffer = new Smarty_Internal_ParseTree_Template();
+
+ $output = "<?php\n";
+ $output .= "/* {block {$_name}} */\n";
+ $output .= "class {$_className} extends Smarty_Internal_Block\n";
+ $output .= "{\n";
+ foreach ($_block as $property => $value) {
+ $output .= "public \${$property} = " . var_export($value,true) .";\n";
+ }
+ $output .= "public function callBlock(Smarty_Internal_Template \$_smarty_tpl) {\n";
+ //$output .= "/*/%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%*/\n";
+ if ($compiler->template->compiled->has_nocache_code) {
+ $output .= "\$_smarty_tpl->cached->hashes['{$compiler->template->compiled->nocache_hash}'] = true;\n";
+ }
+ if (isset($_assign)) {
+ $output .= "ob_start();\n";
+ }
+ $output .= "?>\n";
+ $compiler->parser->current_buffer->append_subtree($compiler->parser,
+ new Smarty_Internal_ParseTree_Tag($compiler->parser,
+ $output));
+ $compiler->parser->current_buffer->append_subtree($compiler->parser, $_functionCode);
+ $output = "<?php\n";
+ if (isset($_assign)) {
+ $output .= "\$_smarty_tpl->assign({$_assign}, ob_get_clean());\n";
+ }
+ $output .= "}\n";
+ $output .= "}\n";
+ $output .= "/* {/block {$_name}} */\n\n";
+ $output .= "?>\n";
+ $compiler->parser->current_buffer->append_subtree($compiler->parser,
+ new Smarty_Internal_ParseTree_Tag($compiler->parser,
+ $output));
+ $compiler->blockOrFunctionCode .= $f = $compiler->parser->current_buffer->to_smarty_php($compiler->parser);
+ $compiler->parser->current_buffer = new Smarty_Internal_ParseTree_Template();
+ // nocache plugins must be copied
+ if (!empty($compiler->template->compiled->required_plugins[ 'nocache' ])) {
+ foreach ($compiler->template->compiled->required_plugins[ 'nocache' ] as $plugin => $tmp) {
+ foreach ($tmp as $type => $data) {
+ $compiler->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ $plugin ][ $type ] =
+ $data;
+ }
+ }
+ }
+
+ // restore old status
+ $compiler->template->compiled->has_nocache_code = $_has_nocache_code;
+ $compiler->tag_nocache = $compiler->nocache;
+ $compiler->nocache = $_nocache;
+ $compiler->parser->current_buffer = $_buffer;
+ $output = "<?php \n";
+ if ($compiler->_cache[ 'blockNesting' ] == 1) {
+ $output .= "\$_smarty_tpl->inheritance->instanceBlock(\$_smarty_tpl, '$_className', $_name);\n";
+ } else {
+ $output .= "\$_smarty_tpl->inheritance->instanceBlock(\$_smarty_tpl, '$_className', $_name, \$this->tplIndex);\n";
+ }
+ $output .= "?>\n";
+ $compiler->_cache[ 'blockNesting' ] --;
+ if ($compiler->_cache[ 'blockNesting' ] == 0) {
+ unset($compiler->_cache[ 'blockNesting' ]);
+ }
+ $compiler->has_code = true;
+ $compiler->suppressNocacheProcessing = true;
+ return $output;
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block_child.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block_child.php
new file mode 100644
index 000000000..bb070ebe3
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block_child.php
@@ -0,0 +1,54 @@
+<?php
+/*
+ * This file is part of Smarty.
+ *
+ * (c) 2015 Uwe Tews
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Smarty Internal Plugin Compile Block Parent Class
+ *
+ * @author Uwe Tews <uwe.tews@googlemail.com>
+ */
+class Smarty_Internal_Compile_Block_Child extends Smarty_Internal_CompileBase
+{
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $option_flags = array();
+
+ /**
+ * Saved compiler object
+ *
+ * @var Smarty_Internal_TemplateCompilerBase
+ */
+ public $compiler = null;
+
+ /**
+ * Compiles code for the {block_parent} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return bool true
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
+ {
+ if (!isset($compiler->_cache[ 'blockNesting' ])) {
+ $compiler->trigger_template_error(' tag {$smarty.block.child} used outside {block} tags ',
+ $compiler->parser->lex->taglineno);
+ }
+ $compiler->has_code = true;
+ $compiler->suppressNocacheProcessing = true;
+ $compiler->_cache[ 'blockParams' ][ $compiler->_cache[ 'blockNesting' ] ][ 'callsChild' ] = 'true';
+ $output = "<?php \n\$_smarty_tpl->inheritance->callChild(\$_smarty_tpl, \$this);\n?>\n";
+ return $output;
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block_parent.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block_parent.php
new file mode 100644
index 000000000..0ec1e8485
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block_parent.php
@@ -0,0 +1,73 @@
+<?php
+/*
+ * This file is part of Smarty.
+ *
+ * (c) 2015 Uwe Tews
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Smarty Internal Plugin Compile Block Parent Class
+ *
+ * @author Uwe Tews <uwe.tews@googlemail.com>
+ */
+class Smarty_Internal_Compile_Block_Parent extends Smarty_Internal_Compile_Shared_Inheritance
+{
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $optional_attributes = array('name');
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $shorttag_order = array('name');
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $option_flags = array();
+
+ /**
+ * Saved compiler object
+ *
+ * @var Smarty_Internal_TemplateCompilerBase
+ */
+ public $compiler = null;
+
+ /**
+ * Compiles code for the {block_parent} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return bool true
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
+ {
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ if (!isset($compiler->_cache[ 'blockNesting' ])) {
+ $compiler->trigger_template_error(' tag {$smarty.block.parent} used outside {block} tags ',
+ $compiler->parser->lex->taglineno);
+ }
+ $compiler->suppressNocacheProcessing = true;
+ $compiler->has_code = true;
+ $output = "<?php \n\$_smarty_tpl->inheritance->callParent(\$_smarty_tpl, \$this" .
+ (isset($_attr[ 'name' ]) ? ", {$_attr[ 'name' ]}" : '') . ");\n?>\n";
+ return $output;
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_break.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_break.php
new file mode 100644
index 000000000..50157382a
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_break.php
@@ -0,0 +1,110 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Break
+ * Compiles the {break} tag
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Break Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Break extends Smarty_Internal_CompileBase
+{
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $optional_attributes = array('levels');
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $shorttag_order = array('levels');
+
+ /**
+ * Compiles code for the {break} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
+ {
+ list($levels, $foreachLevels) = $this->checkLevels($args, $compiler);
+ $output = "<?php\n";
+ if ($foreachLevels) {
+ /* @var Smarty_Internal_Compile_Foreach $foreachCompiler */
+ $foreachCompiler = $compiler->getTagCompiler('foreach');
+ $output .= $foreachCompiler->compileRestore($foreachLevels);
+ }
+ $output .= "break {$levels};?>";
+ return $output;
+ }
+
+ /**
+ * check attributes and return array of break and foreach levels
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param string $tag tag name
+ *
+ * @return array
+ * @throws \SmartyCompilerException
+ */
+ public function checkLevels($args, Smarty_Internal_TemplateCompilerBase $compiler, $tag = 'break')
+ {
+ static $_is_loopy = array('for' => true, 'foreach' => true, 'while' => true, 'section' => true);
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+
+ if ($_attr[ 'nocache' ] === true) {
+ $compiler->trigger_template_error('nocache option not allowed', null, true);
+ }
+
+ if (isset($_attr[ 'levels' ])) {
+ if (!is_numeric($_attr[ 'levels' ])) {
+ $compiler->trigger_template_error('level attribute must be a numeric constant', null, true);
+ }
+ $levels = $_attr[ 'levels' ];
+ } else {
+ $levels = 1;
+ }
+ $level_count = $levels;
+ $stack_count = count($compiler->_tag_stack) - 1;
+ $foreachLevels = 0;
+ $lastTag = '';
+ while ($level_count >= 0 && $stack_count >= 0) {
+ if (isset($_is_loopy[ $compiler->_tag_stack[ $stack_count ][ 0 ] ])) {
+ $lastTag = $compiler->_tag_stack[ $stack_count ][ 0 ];
+ if ($level_count === 0) {
+ break;
+ }
+ $level_count --;
+ if ($compiler->_tag_stack[ $stack_count ][ 0 ] === 'foreach') {
+ $foreachLevels ++;
+ }
+ }
+ $stack_count --;
+ }
+ if ($level_count != 0) {
+ $compiler->trigger_template_error("cannot {$tag} {$levels} level(s)", null, true);
+ }
+ if ($lastTag === 'foreach' && $tag === 'break') {
+ $foreachLevels --;
+ }
+ return array($levels, $foreachLevels);
+ }
+}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_call.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_call.php
index b7204bec0..739df5eca 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_call.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_call.php
@@ -53,13 +53,13 @@ class Smarty_Internal_Compile_Call extends Smarty_Internal_CompileBase
// check and get attributes
$_attr = $this->getAttributes($compiler, $args);
// save possible attributes
- if (isset($_attr['assign'])) {
+ if (isset($_attr[ 'assign' ])) {
// output will be stored in a smarty variable instead of being displayed
- $_assign = $_attr['assign'];
+ $_assign = $_attr[ 'assign' ];
}
//$_name = trim($_attr['name'], "'\"");
- $_name = $_attr['name'];
- unset($_attr['name'], $_attr['assign'], $_attr['nocache']);
+ $_name = $_attr[ 'name' ];
+ unset($_attr[ 'name' ], $_attr[ 'assign' ], $_attr[ 'nocache' ]);
// set flag (compiled code of {function} must be included in cache file
if (!$compiler->template->caching || $compiler->nocache || $compiler->tag_nocache) {
$_nocache = 'true';
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_capture.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_capture.php
index be45f3e94..34fc55f9d 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_capture.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_capture.php
@@ -33,49 +33,50 @@ class Smarty_Internal_Compile_Capture extends Smarty_Internal_CompileBase
public $optional_attributes = array('name', 'assign', 'append');
/**
+ * Compiles code for the {$smarty.capture.xxx}
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase$compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ * @throws \SmartyCompilerException
+ */
+ public static function compileSpecialVariable($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter = null)
+ {
+ $tag = trim($parameter[ 0 ], '"\'');
+ $name = isset($parameter[ 1 ]) ? $compiler->getId($parameter[ 1 ]) : false;
+ if (!$name) {
+ $compiler->trigger_template_error("missing or illegal \$smarty.{$tag} name attribute", null, true);
+ }
+ return "\$_smarty_tpl->smarty->ext->_capture->getBuffer(\$_smarty_tpl, '{$name}')";
+ }
+
+ /**
* Compiles code for the {capture} tag
*
- * @param array $args array with attributes from parser
+ * @param array $args array with attributes from parser
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param null $parameter
*
* @return string compiled code
*/
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter = null)
{
// check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
+ $_attr = $this->getAttributes($compiler, $args, $parameter, 'capture');
- $buffer = isset($_attr['name']) ? $_attr['name'] : "'default'";
- $assign = isset($_attr['assign']) ? $_attr['assign'] : 'null';
- $append = isset($_attr['append']) ? $_attr['append'] : 'null';
+ $buffer = isset($_attr[ 'name' ]) ? $_attr[ 'name' ] : "'default'";
+ $assign = isset($_attr[ 'assign' ]) ? $_attr[ 'assign' ] : 'null';
+ $append = isset($_attr[ 'append' ]) ? $_attr[ 'append' ] : 'null';
- $compiler->_capture_stack[0][] = array($buffer, $assign, $append, $compiler->nocache);
+ $compiler->_cache[ 'capture_stack' ][] = array($compiler->nocache);
// maybe nocache because of nocache variables
$compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
- $_output = "<?php \$_smarty_tpl->_cache['capture_stack'][] = array($buffer, $assign, $append); ob_start(); ?>";
+ $_output = "<?php \$_smarty_tpl->smarty->ext->_capture->open(\$_smarty_tpl, $buffer, $assign, $append);?>";
return $_output;
}
-
- /**
- * Compiles code for the {$smarty.capture.xxx}
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return string compiled code
- * @throws \SmartyCompilerException
- */
- public static function compileSpecialVariable($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- $tag = strtolower(trim($parameter[ 0 ], '"\''));
- $name = isset($parameter[ 1 ]) ? $compiler->getId($parameter[ 1 ]) : false;
- if (!$name) {
- $compiler->trigger_template_error("missing or illegal \$smarty.{$tag} name attribute", null, true);
- }
- return "(isset(\$_smarty_tpl->_cache['__smarty_capture']['{$name}']) ? \$_smarty_tpl->_cache['__smarty_capture']['{$name}'] : null)";
- }
}
/**
@@ -89,29 +90,23 @@ class Smarty_Internal_Compile_CaptureClose extends Smarty_Internal_CompileBase
/**
* Compiles code for the {/capture} tag
*
- * @param array $args array with attributes from parser
+ * @param array $args array with attributes from parser
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param null $parameter
*
* @return string compiled code
*/
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
{
// check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
+ $_attr = $this->getAttributes($compiler, $args, $parameter, '/capture');
// must endblock be nocache?
if ($compiler->nocache) {
$compiler->tag_nocache = true;
}
- list($buffer, $assign, $append, $compiler->nocache) = array_pop($compiler->_capture_stack[0]);
-
- $_output = "<?php list(\$_capture_buffer, \$_capture_assign, \$_capture_append) = array_pop(\$_smarty_tpl->_cache['capture_stack']);\n";
- $_output .= "if (!empty(\$_capture_buffer)) {\n";
- $_output .= " if (isset(\$_capture_assign)) \$_smarty_tpl->assign(\$_capture_assign, ob_get_contents());\n";
- $_output .= " if (isset( \$_capture_append)) \$_smarty_tpl->append( \$_capture_append, ob_get_contents());\n";
- $_output .= "\$_smarty_tpl->_cache['__smarty_capture'][\$_capture_buffer]=ob_get_clean();\n";
- $_output .= "} else \$_smarty_tpl->capture_error();?>";
+ list($compiler->nocache) = array_pop($compiler->_cache[ 'capture_stack' ]);
- return $_output;
+ return "<?php \$_smarty_tpl->smarty->ext->_capture->close(\$_smarty_tpl);?>";
}
}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_config_load.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_config_load.php
index d2e50a08f..7c6e9b59e 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_config_load.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_config_load.php
@@ -38,15 +38,24 @@ class Smarty_Internal_Compile_Config_Load extends Smarty_Internal_CompileBase
* @var array
* @see Smarty_Internal_CompileBase
*/
- public $optional_attributes = array('section', 'scope', 'bubble_up');
+ public $optional_attributes = array('section', 'scope');
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $option_flags = array('nocache', 'noscope');
/**
* Valid scope names
- *
+ *
* @var array
*/
- public $valid_scopes = array('local' => true, 'parent' => true, 'root' => true, 'global' => true,
- 'smarty' => true, 'tpl_root' => true);
+ public $valid_scopes = array('local' => Smarty::SCOPE_LOCAL, 'parent' => Smarty::SCOPE_PARENT,
+ 'root' => Smarty::SCOPE_ROOT, 'tpl_root' => Smarty::SCOPE_TPL_ROOT,
+ 'smarty' => Smarty::SCOPE_SMARTY, 'global' => Smarty::SCOPE_SMARTY);
/**
* Compiles code for the {config_load} tag
@@ -62,37 +71,22 @@ class Smarty_Internal_Compile_Config_Load extends Smarty_Internal_CompileBase
// check and get attributes
$_attr = $this->getAttributes($compiler, $args);
- if ($_attr['nocache'] === true) {
+ if ($_attr[ 'nocache' ] === true) {
$compiler->trigger_template_error('nocache option not allowed', null, true);
}
// save possible attributes
- $conf_file = $_attr['file'];
- if (isset($_attr['section'])) {
- $section = $_attr['section'];
+ $conf_file = $_attr[ 'file' ];
+ if (isset($_attr[ 'section' ])) {
+ $section = $_attr[ 'section' ];
} else {
$section = 'null';
}
- $_scope = Smarty::SCOPE_LOCAL;
- if (isset($_attr['scope'])) {
- $_attr['scope'] = trim($_attr['scope'], "'\"");
- if (!isset($this->valid_scopes[$_attr['scope']])) {
- $compiler->trigger_template_error("illegal value '{$_attr['scope']}' for \"scope\" attribute", null, true);
- }
- if ($_attr['scope'] != 'local') {
- if ($_attr['scope'] == 'parent') {
- $_scope = Smarty::SCOPE_PARENT;
- } elseif ($_attr['scope'] == 'root') {
- $_scope = Smarty::SCOPE_ROOT;
- } elseif ($_attr['scope'] == 'global') {
- $_scope = Smarty::SCOPE_GLOBAL;
- } elseif ($_attr['scope'] == 'smarty') {
- $_scope = Smarty::SCOPE_SMARTY;
- } elseif ($_attr['scope'] == 'tpl_root') {
- $_scope = Smarty::SCOPE_TPL_ROOT;
- }
- $_scope += (isset($_attr['bubble_up']) && $_attr['bubble_up'] == 'false') ? 0 : Smarty::SCOPE_BUBBLE_UP;
- }
+ // scope setup
+ if ($_attr[ 'noscope' ]) {
+ $_scope = - 1;
+ } else {
+ $_scope = $compiler->convertScope($_attr, $this->valid_scopes);
}
// create config object
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_continue.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_continue.php
new file mode 100644
index 000000000..7492c7df2
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_continue.php
@@ -0,0 +1,42 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Continue
+ * Compiles the {continue} tag
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Continue Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Continue extends Smarty_Internal_Compile_Break
+{
+
+ /**
+ * Compiles code for the {continue} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ * @throws \SmartyCompilerException
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
+ {
+ list($levels, $foreachLevels) = $this->checkLevels($args, $compiler, 'continue');
+ $output = "<?php\n";
+ if ($foreachLevels > 1) {
+ /* @var Smarty_Internal_Compile_Foreach $foreachCompiler */
+ $foreachCompiler = $compiler->getTagCompiler('foreach');
+ $output .= $foreachCompiler->compileRestore($foreachLevels - 1);
+ }
+ $output .= "continue {$levels};?>";
+ return $output;
+ }
+}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_debug.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_debug.php
index d73c81a10..1668e72e8 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_debug.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_debug.php
@@ -34,7 +34,8 @@ class Smarty_Internal_Compile_Debug extends Smarty_Internal_CompileBase
$compiler->tag_nocache = true;
// display debug template
- $_output = "<?php \$_smarty_debug = new Smarty_Internal_Debug;\n \$_smarty_debug->display_debug(\$_smarty_tpl);\n";
+ $_output =
+ "<?php \$_smarty_debug = new Smarty_Internal_Debug;\n \$_smarty_debug->display_debug(\$_smarty_tpl);\n";
$_output .= "unset(\$_smarty_debug);\n?>";
return $_output;
}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_eval.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_eval.php
index 407482f07..97a3c29c5 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_eval.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_eval.php
@@ -23,6 +23,7 @@ class Smarty_Internal_Compile_Eval extends Smarty_Internal_CompileBase
* @see Smarty_Internal_CompileBase
*/
public $required_attributes = array('var');
+
/**
* Attribute definition: Overwrites base class.
*
@@ -30,6 +31,7 @@ class Smarty_Internal_Compile_Eval extends Smarty_Internal_CompileBase
* @see Smarty_Internal_CompileBase
*/
public $optional_attributes = array('assign');
+
/**
* Attribute definition: Overwrites base class.
*
@@ -48,17 +50,16 @@ class Smarty_Internal_Compile_Eval extends Smarty_Internal_CompileBase
*/
public function compile($args, $compiler)
{
- $this->required_attributes = array('var');
- $this->optional_attributes = array('assign');
// check and get attributes
$_attr = $this->getAttributes($compiler, $args);
- if (isset($_attr['assign'])) {
+ if (isset($_attr[ 'assign' ])) {
// output will be stored in a smarty variable instead of being displayed
- $_assign = $_attr['assign'];
+ $_assign = $_attr[ 'assign' ];
}
// create template object
- $_output = "\$_template = new {$compiler->smarty->template_class}('eval:'." . $_attr['var'] . ", \$_smarty_tpl->smarty, \$_smarty_tpl);";
+ $_output = "\$_template = new {$compiler->smarty->template_class}('eval:'." . $_attr[ 'var' ] .
+ ", \$_smarty_tpl->smarty, \$_smarty_tpl);";
//was there an assign attribute?
if (isset($_assign)) {
$_output .= "\$_smarty_tpl->assign($_assign,\$_template->fetch());";
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_extends.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_extends.php
index 7ce3dcf6f..83cb80500 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_extends.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_extends.php
@@ -55,37 +55,36 @@ class Smarty_Internal_Compile_Extends extends Smarty_Internal_Compile_Shared_Inh
{
// check and get attributes
$_attr = $this->getAttributes($compiler, $args);
- if ($_attr['nocache'] === true) {
+ if ($_attr[ 'nocache' ] === true) {
$compiler->trigger_template_error('nocache option not allowed', $compiler->parser->lex->line - 1);
}
- if (strpos($_attr['file'], '$_tmp') !== false) {
+ if (strpos($_attr[ 'file' ], '$_tmp') !== false) {
$compiler->trigger_template_error('illegal value for file attribute', $compiler->parser->lex->line - 1);
}
// add code to initialize inheritance
$this->registerInit($compiler, true);
- $file = trim($_attr['file'], '\'"');
+ $file = trim($_attr[ 'file' ], '\'"');
if (strlen($file) > 8 && substr($file, 0, 8) == 'extends:') {
// generate code for each template
$files = array_reverse(explode('|', substr($file, 8)));
$i = 0;
foreach ($files as $file) {
- if ($file[0] == '"') {
+ if ($file[ 0 ] == '"') {
$file = trim($file, '".');
} else {
$file = "'{$file}'";
}
$i ++;
- if ($i == count($files) && isset($_attr['extends_resource'])) {
+ if ($i == count($files) && isset($_attr[ 'extends_resource' ])) {
$this->compileEndChild($compiler);
}
$this->compileInclude($compiler, $file);
}
- if (!isset($_attr['extends_resource'])) {
+ if (!isset($_attr[ 'extends_resource' ])) {
$this->compileEndChild($compiler);
}
} else {
- $this->compileEndChild($compiler);
- $this->compileInclude($compiler, $_attr['file']);
+ $this->compileEndChild($compiler, $_attr[ 'file' ]);
}
$compiler->has_code = false;
return '';
@@ -95,24 +94,35 @@ class Smarty_Internal_Compile_Extends extends Smarty_Internal_Compile_Shared_Inh
* Add code for inheritance endChild() method to end of template
*
* @param \Smarty_Internal_TemplateCompilerBase $compiler
+ * @param null|string $template optional inheritance parent template
*/
- private function compileEndChild(Smarty_Internal_TemplateCompilerBase $compiler)
+ private function compileEndChild(Smarty_Internal_TemplateCompilerBase $compiler, $template = null)
{
+ $inlineUids = '';
+ if (isset($template) && $compiler->smarty->merge_compiled_includes) {
+ $code = $compiler->compileTag('include', array($template, array('scope' => 'parent')));
+ if (preg_match("/([,][\s]*['][a-z0-9]+['][,][\s]*[']content.*['])[)]/", $code, $match)) {
+ $inlineUids = $match[ 1 ];
+ }
+ }
$compiler->parser->template_postfix[] = new Smarty_Internal_ParseTree_Tag($compiler->parser,
- "<?php \$_smarty_tpl->ext->_inheritance->endChild(\$_smarty_tpl);\n?>\n");
+ "<?php \$_smarty_tpl->inheritance->endChild(\$_smarty_tpl" .
+ (isset($template) ?
+ ', ' . $template . $inlineUids :
+ '') . ");\n?>\n");
}
/**
* Add code for including subtemplate to end of template
*
* @param \Smarty_Internal_TemplateCompilerBase $compiler
- * @param string $file subtemplate name
+ * @param string $template subtemplate name
*/
- private function compileInclude(Smarty_Internal_TemplateCompilerBase $compiler, $file)
+ private function compileInclude(Smarty_Internal_TemplateCompilerBase $compiler, $template)
{
$compiler->parser->template_postfix[] = new Smarty_Internal_ParseTree_Tag($compiler->parser,
$compiler->compileTag('include',
- array($file,
+ array($template,
array('scope' => 'parent'))));
}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_for.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_for.php
index 7b86d4859..e5e7c61c3 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_for.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_for.php
@@ -34,7 +34,7 @@ class Smarty_Internal_Compile_For extends Smarty_Internal_CompileBase
*/
public function compile($args, $compiler, $parameter)
{
- $compiler->loopNesting++;
+ $compiler->loopNesting ++;
if ($parameter == 0) {
$this->required_attributes = array('start', 'to');
$this->optional_attributes = array('max', 'step');
@@ -42,46 +42,47 @@ class Smarty_Internal_Compile_For extends Smarty_Internal_CompileBase
$this->required_attributes = array('start', 'ifexp', 'var', 'step');
$this->optional_attributes = array();
}
+ $this->mapCache = array();
// check and get attributes
$_attr = $this->getAttributes($compiler, $args);
$output = "<?php\n";
if ($parameter == 1) {
- foreach ($_attr['start'] as $_statement) {
- if (is_array($_statement['var'])) {
- $var = $_statement['var']['var'];
- $index = $_statement['var']['smarty_internal_index'];
+ foreach ($_attr[ 'start' ] as $_statement) {
+ if (is_array($_statement[ 'var' ])) {
+ $var = $_statement[ 'var' ][ 'var' ];
+ $index = $_statement[ 'var' ][ 'smarty_internal_index' ];
} else {
- $var = $_statement['var'];
+ $var = $_statement[ 'var' ];
$index = '';
}
- $output .= "\$_smarty_tpl->tpl_vars[$var] = new Smarty_Variable;\n";
+ $output .= "\$_smarty_tpl->tpl_vars[$var] = new Smarty_Variable(null, \$_smarty_tpl->isRenderingCache);\n";
$output .= "\$_smarty_tpl->tpl_vars[$var]->value{$index} = {$_statement['value']};\n";
}
- if (is_array($_attr['var'])) {
- $var = $_attr['var']['var'];
- $index = $_attr['var']['smarty_internal_index'];
+ if (is_array($_attr[ 'var' ])) {
+ $var = $_attr[ 'var' ][ 'var' ];
+ $index = $_attr[ 'var' ][ 'smarty_internal_index' ];
} else {
- $var = $_attr['var'];
+ $var = $_attr[ 'var' ];
$index = '';
}
$output .= "if ($_attr[ifexp]) {\nfor (\$_foo=true;$_attr[ifexp]; \$_smarty_tpl->tpl_vars[$var]->value{$index}$_attr[step]) {\n";
} else {
- $_statement = $_attr['start'];
- if (is_array($_statement['var'])) {
- $var = $_statement['var']['var'];
- $index = $_statement['var']['smarty_internal_index'];
+ $_statement = $_attr[ 'start' ];
+ if (is_array($_statement[ 'var' ])) {
+ $var = $_statement[ 'var' ][ 'var' ];
+ $index = $_statement[ 'var' ][ 'smarty_internal_index' ];
} else {
- $var = $_statement['var'];
+ $var = $_statement[ 'var' ];
$index = '';
}
- $output .= "\$_smarty_tpl->tpl_vars[$var] = new Smarty_Variable;";
- if (isset($_attr['step'])) {
+ $output .= "\$_smarty_tpl->tpl_vars[$var] = new Smarty_Variable(null, \$_smarty_tpl->isRenderingCache);";
+ if (isset($_attr[ 'step' ])) {
$output .= "\$_smarty_tpl->tpl_vars[$var]->step = $_attr[step];";
} else {
$output .= "\$_smarty_tpl->tpl_vars[$var]->step = 1;";
}
- if (isset($_attr['max'])) {
+ if (isset($_attr[ 'max' ])) {
$output .= "\$_smarty_tpl->tpl_vars[$var]->total = (int) min(ceil((\$_smarty_tpl->tpl_vars[$var]->step > 0 ? $_attr[to]+1 - ($_statement[value]) : $_statement[value]-($_attr[to])+1)/abs(\$_smarty_tpl->tpl_vars[$var]->step)),$_attr[max]);\n";
} else {
$output .= "\$_smarty_tpl->tpl_vars[$var]->total = (int) ceil((\$_smarty_tpl->tpl_vars[$var]->step > 0 ? $_attr[to]+1 - ($_statement[value]) : $_statement[value]-($_attr[to])+1)/abs(\$_smarty_tpl->tpl_vars[$var]->step));\n";
@@ -149,7 +150,7 @@ class Smarty_Internal_Compile_Forclose extends Smarty_Internal_CompileBase
*/
public function compile($args, $compiler, $parameter)
{
- $compiler->loopNesting--;
+ $compiler->loopNesting --;
// check and get attributes
$_attr = $this->getAttributes($compiler, $args);
// must endblock be nocache?
@@ -162,7 +163,7 @@ class Smarty_Internal_Compile_Forclose extends Smarty_Internal_CompileBase
$output = "<?php }\n";
if ($openTag != 'forelse') {
$output .= "}\n";
- }
+ }
$output .= "?>\n";
return $output;
}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_foreach.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_foreach.php
index 178a0a52c..5ddd42d8a 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_foreach.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_foreach.php
@@ -30,7 +30,7 @@ class Smarty_Internal_Compile_Foreach extends Smarty_Internal_Compile_Private_Fo
* @var array
* @see Smarty_Internal_CompileBase
*/
- public $optional_attributes = array('name', 'key');
+ public $optional_attributes = array('name', 'key', 'properties');
/**
* Attribute definition: Overwrites base class.
@@ -92,32 +92,33 @@ class Smarty_Internal_Compile_Foreach extends Smarty_Internal_Compile_Private_Fo
$this->isNamed = false;
// check and get attributes
$_attr = $this->getAttributes($compiler, $args);
- $from = $_attr['from'];
- $item = $compiler->getId($_attr['item']);
+ $from = $_attr[ 'from' ];
+ $item = $compiler->getId($_attr[ 'item' ]);
if ($item === false) {
- $item = $compiler->getVariableName($_attr['item']);
+ $item = $compiler->getVariableName($_attr[ 'item' ]);
}
+ $key = $name = null;
$attributes = array('item' => $item);
- if (isset($_attr['key'])) {
- $key = $compiler->getId($_attr['key']);
+ if (isset($_attr[ 'key' ])) {
+ $key = $compiler->getId($_attr[ 'key' ]);
if ($key === false) {
- $key = $compiler->getVariableName($_attr['key']);
+ $key = $compiler->getVariableName($_attr[ 'key' ]);
}
- $attributes['key'] = $key;
+ $attributes[ 'key' ] = $key;
}
- if (isset($_attr['name'])) {
+ if (isset($_attr[ 'name' ])) {
$this->isNamed = true;
- $attributes['name'] = $compiler->getId($_attr['name']);
+ $name = $attributes[ 'name' ] = $compiler->getId($_attr[ 'name' ]);
}
foreach ($attributes as $a => $v) {
if ($v === false) {
$compiler->trigger_template_error("'{$a}' attribute/variable has illegal value", null, true);
}
}
- $fromName = $compiler->getVariableName($_attr['from']);
+ $fromName = $compiler->getVariableName($_attr[ 'from' ]);
if ($fromName) {
foreach (array('item', 'key') as $a) {
- if (isset($attributes[$a]) && $attributes[$a] == $fromName) {
+ if (isset($attributes[ $a ]) && $attributes[ $a ] == $fromName) {
$compiler->trigger_template_error("'{$a}' and 'from' may not have same variable name '{$fromName}'",
null, true);
}
@@ -125,151 +126,144 @@ class Smarty_Internal_Compile_Foreach extends Smarty_Internal_Compile_Private_Fo
}
$itemVar = "\$_smarty_tpl->tpl_vars['{$item}']";
- $local = '$__foreach_' . (isset($attributes['name']) ? $attributes['name'] : $attributes['item']) . '_' .
- $this->counter ++ . '_';
- $needIteration = false;
+ $local = '$__foreach_' . $attributes[ 'item' ] . '_' . $this->counter ++ . '_';
// search for used tag attributes
$itemAttr = array();
$namedAttr = array();
$this->scanForProperties($attributes, $compiler);
- if (!empty($this->matchResults['item'])) {
- $itemAttr = $this->matchResults['item'];
+ if (!empty($this->matchResults[ 'item' ])) {
+ $itemAttr = $this->matchResults[ 'item' ];
+ }
+ if (!empty($this->matchResults[ 'named' ])) {
+ $namedAttr = $this->matchResults[ 'named' ];
+ }
+ if (isset($_attr[ 'properties' ]) && preg_match_all("/['](.*?)[']/", $_attr[ 'properties' ], $match)) {
+ foreach ($match[ 1 ] as $prop) {
+ if (in_array($prop, $this->itemProperties)) {
+ $itemAttr[ $prop ] = true;
+ } else {
+ $compiler->trigger_template_error("Invalid property '{$prop}'", null, true);
+ }
+ }
+ if ($this->isNamed) {
+ foreach ($match[ 1 ] as $prop) {
+ if (in_array($prop, $this->nameProperties)) {
+ $nameAttr[ $prop ] = true;
+ } else {
+ $compiler->trigger_template_error("Invalid property '{$prop}'", null, true);
+ }
+ }
+ }
}
- if (!empty($this->matchResults['named'])) {
- $namedAttr = $this->matchResults['named'];
+ if (isset($itemAttr[ 'first' ])) {
+ $itemAttr[ 'index' ] = true;
}
- if (isset($itemAttr['last'])) {
- $needIteration = true;
+ if (isset($namedAttr[ 'first' ])) {
+ $namedAttr[ 'index' ] = true;
}
- if (isset($namedAttr['last'])) {
- $needIteration = true;
+ if (isset($namedAttr[ 'last' ])) {
+ $namedAttr[ 'iteration' ] = true;
+ $namedAttr[ 'total' ] = true;
+ }
+ if (isset($itemAttr[ 'last' ])) {
+ $itemAttr[ 'iteration' ] = true;
+ $itemAttr[ 'total' ] = true;
+ }
+ if (isset($namedAttr[ 'show' ])) {
+ $namedAttr[ 'total' ] = true;
+ }
+ if (isset($itemAttr[ 'show' ])) {
+ $itemAttr[ 'total' ] = true;
}
-
$keyTerm = '';
- if (isset($itemAttr['key'])) {
- $keyTerm = "{$itemVar}->key => ";
- } elseif (isset($attributes['key'])) {
+ if (isset($attributes[ 'key' ])) {
$keyTerm = "\$_smarty_tpl->tpl_vars['{$key}']->value => ";
}
-
- $saveVars = array();
- $restoreVars = array();
+ if (isset($itemAttr[ 'key' ])) {
+ $keyTerm = "{$itemVar}->key => ";
+ }
if ($this->isNamed) {
$foreachVar = "\$_smarty_tpl->tpl_vars['__smarty_foreach_{$attributes['name']}']";
- if (!empty($namedAttr)) {
- $saveVars['saved'] = "isset({$foreachVar}) ? {$foreachVar} : false;";
- $restoreVars[] = "if ({$local}saved) {\n{$foreachVar} = {$local}saved;\n}\n";
- }
- }
- foreach (array('item', 'key') as $a) {
- if (isset($attributes[$a])) {
- $saveVars['saved_' . $a] =
- "isset(\$_smarty_tpl->tpl_vars['{$attributes[$a]}']) ? \$_smarty_tpl->tpl_vars['{$attributes[$a]}'] : false;";
- $restoreVars[] =
- "if ({$local}saved_{$a}) {\n\$_smarty_tpl->tpl_vars['{$attributes[$a]}'] = {$local}saved_{$a};\n}\n";
- }
}
+ $needTotal = isset($itemAttr[ 'total' ]);
+ // Register tag
$this->openTag($compiler, 'foreach',
- array('foreach', $compiler->nocache, $local, $restoreVars, $itemVar, true));
+ array('foreach', $compiler->nocache, $local, $itemVar, empty($itemAttr) ? 1 : 2));
// maybe nocache because of nocache variables
$compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
-
// generate output code
$output = "<?php\n";
- $output .= "\$_from = $from;\n";
- $output .= "if (!is_array(\$_from) && !is_object(\$_from)) {\n";
- $output .= "settype(\$_from, 'array');\n";
- $output .= "}\n";
- foreach ($saveVars as $k => $code) {
- $output .= "{$local}{$k} = {$code}\n";
+ $output .= "\$_from = \$_smarty_tpl->smarty->ext->_foreach->init(\$_smarty_tpl, $from, " .
+ var_export($item, true);
+ if ($name || $needTotal || $key) {
+ $output .= ', ' . var_export($needTotal, true);
}
- if (isset($itemAttr['show']) || isset($itemAttr['total']) || isset($namedAttr['total']) || isset($namedAttr['show']) || isset($itemAttr['last']) || isset($namedAttr['last'])) {
- $output .= "{$local}total = \$_smarty_tpl->smarty->ext->_foreach->count(\$_from);\n";
+ if ($name || $key) {
+ $output .= ', ' . var_export($key, true);
}
- $output .= "{$itemVar} = new Smarty_Variable();\n";
- if (isset($itemAttr['show'])) {
- $output .= "{$itemVar}->show = ({$local}total > 0);\n";
+ if ($name) {
+ $output .= ', ' . var_export($name, true) . ', ' . var_export($namedAttr, true);
}
- if (isset($itemAttr['total'])) {
- $output .= "{$itemVar}->total= {$local}total;\n";
+ $output .= ");\n";
+ if (isset($itemAttr[ 'show' ])) {
+ $output .= "{$itemVar}->show = ({$itemVar}->total > 0);\n";
}
- if ($this->isNamed) {
- $prop = array();
- if (isset($namedAttr['total'])) {
- $prop['total'] = "'total' => {$local}total";
- }
- if (isset($namedAttr['iteration'])) {
- $prop['iteration'] = "'iteration' => 0";
- }
- if (isset($namedAttr['index'])) {
- $prop['index'] = "'index' => -1";
- }
- if (isset($namedAttr['show'])) {
- $prop['show'] = "'show' => ({$local}total > 0)";
- }
- if (!empty($namedAttr)) {
- $_vars = 'array(' . join(', ', $prop) . ')';
- $output .= "{$foreachVar} = new Smarty_Variable({$_vars});\n";
- }
- }
- if (isset($attributes['key'])) {
- $output .= "\$_smarty_tpl->tpl_vars['{$key}'] = new Smarty_Variable();\n";
- }
- if (isset($namedAttr['first']) || isset($itemAttr['first'])) {
- $output .= "{$local}first = true;\n";
+ if (isset($itemAttr[ 'iteration' ])) {
+ $output .= "{$itemVar}->iteration = 0;\n";
}
- if (isset($itemAttr['iteration'])) {
- $output .= "{$itemVar}->iteration=0;\n";
+ if (isset($itemAttr[ 'index' ])) {
+ $output .= "{$itemVar}->index = -1;\n";
}
- if (isset($itemAttr['index'])) {
- $output .= "{$itemVar}->index=-1;\n";
- }
- if ($needIteration) {
- $output .= "{$local}iteration=0;\n";
- }
- $output .= "{$itemVar}->_loop = false;\n";
+ $output .= "if (\$_from !== null) {\n";
$output .= "foreach (\$_from as {$keyTerm}{$itemVar}->value) {\n";
- $output .= "{$itemVar}->_loop = true;\n";
- if (isset($attributes['key']) && isset($itemAttr['key'])) {
+ if (isset($attributes[ 'key' ]) && isset($itemAttr[ 'key' ])) {
$output .= "\$_smarty_tpl->tpl_vars['{$key}']->value = {$itemVar}->key;\n";
}
- if (isset($itemAttr['iteration'])) {
+ if (isset($itemAttr[ 'iteration' ])) {
$output .= "{$itemVar}->iteration++;\n";
}
- if (isset($itemAttr['index'])) {
+ if (isset($itemAttr[ 'index' ])) {
$output .= "{$itemVar}->index++;\n";
}
- if ($needIteration) {
- $output .= "{$local}iteration++;\n";
- }
- if (isset($itemAttr['first'])) {
- $output .= "{$itemVar}->first = {$local}first;\n";
+ if (isset($itemAttr[ 'first' ])) {
+ $output .= "{$itemVar}->first = !{$itemVar}->index;\n";
}
- if (isset($itemAttr['last'])) {
- $output .= "{$itemVar}->last = {$local}iteration == {$local}total;\n";
+ if (isset($itemAttr[ 'last' ])) {
+ $output .= "{$itemVar}->last = {$itemVar}->iteration == {$itemVar}->total;\n";
}
- if ($this->isNamed) {
- if (isset($namedAttr['iteration'])) {
+ if (isset($foreachVar)) {
+ if (isset($namedAttr[ 'iteration' ])) {
$output .= "{$foreachVar}->value['iteration']++;\n";
}
- if (isset($namedAttr['index'])) {
+ if (isset($namedAttr[ 'index' ])) {
$output .= "{$foreachVar}->value['index']++;\n";
}
- if (isset($namedAttr['first'])) {
- $output .= "{$foreachVar}->value['first'] = {$local}first;\n";
+ if (isset($namedAttr[ 'first' ])) {
+ $output .= "{$foreachVar}->value['first'] = !{$foreachVar}->value['index'];\n";
}
- if (isset($namedAttr['last'])) {
- $output .= "{$foreachVar}->value['last'] = {$local}iteration == {$local}total;\n";
+ if (isset($namedAttr[ 'last' ])) {
+ $output .= "{$foreachVar}->value['last'] = {$foreachVar}->value['iteration'] == {$foreachVar}->value['total'];\n";
}
}
- if (isset($namedAttr['first']) || isset($itemAttr['first'])) {
- $output .= "{$local}first = false;\n";
+ if (!empty($itemAttr)) {
+ $output .= "{$local}saved = {$itemVar};\n";
}
- $output .= "{$local}saved_local_item = {$itemVar};\n";
$output .= "?>";
return $output;
}
+
+ /**
+ * Compiles code for to restore saved template variables
+ *
+ * @param int $levels number of levels to restore
+ *
+ * @return string compiled code
+ */
+ public function compileRestore($levels)
+ {
+ return "\$_smarty_tpl->smarty->ext->_foreach->restore(\$_smarty_tpl, {$levels});\n";
+ }
}
/**
@@ -294,12 +288,13 @@ class Smarty_Internal_Compile_Foreachelse extends Smarty_Internal_CompileBase
// check and get attributes
$_attr = $this->getAttributes($compiler, $args);
- list($openTag, $nocache, $local, $restoreVars, $itemVar, $foo) = $this->closeTag($compiler, array('foreach'));
- $this->openTag($compiler, 'foreachelse', array('foreachelse', $nocache, $local, $restoreVars, $itemVar, false));
+ list($openTag, $nocache, $local, $itemVar, $restore) = $this->closeTag($compiler, array('foreach'));
+ $this->openTag($compiler, 'foreachelse', array('foreachelse', $nocache, $local, $itemVar, 0));
$output = "<?php\n";
- $output .= "{$itemVar} = {$local}saved_local_item;\n";
- $output .= "}\n";
- $output .= "if (!{$itemVar}->_loop) {\n?>";
+ if ($restore == 2) {
+ $output .= "{$itemVar} = {$local}saved;\n";
+ }
+ $output .= "}\n} else {\n?>\n";
return $output;
}
}
@@ -329,19 +324,21 @@ class Smarty_Internal_Compile_Foreachclose extends Smarty_Internal_CompileBase
$compiler->tag_nocache = true;
}
- list($openTag, $compiler->nocache, $local, $restoreVars, $itemVar, $restore) =
+ list($openTag, $compiler->nocache, $local, $itemVar, $restore) =
$this->closeTag($compiler, array('foreach', 'foreachelse'));
$output = "<?php\n";
- if ($restore) {
- $output .= "{$itemVar} = {$local}saved_local_item;\n";
+ if ($restore == 2) {
+ $output .= "{$itemVar} = {$local}saved;\n";
}
- $output .= "}\n";
- foreach ($restoreVars as $restore) {
- $output .= $restore;
+ if ($restore > 0) {
+ $output .= "}\n";
}
- $output .= "?>";
-
+ $output .= "}\n";
+ /* @var Smarty_Internal_Compile_Foreach $foreachCompiler */
+ $foreachCompiler = $compiler->getTagCompiler('foreach');
+ $output .= $foreachCompiler->compileRestore(1);
+ $output .= "?>\n";
return $output;
}
}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_function.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_function.php
index 28f335949..b7cd9e1c0 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_function.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_function.php
@@ -53,16 +53,15 @@ class Smarty_Internal_Compile_Function extends Smarty_Internal_CompileBase
*/
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
{
- $compiler->loopNesting++;
// check and get attributes
$_attr = $this->getAttributes($compiler, $args);
- if ($_attr['nocache'] === true) {
+ if ($_attr[ 'nocache' ] === true) {
$compiler->trigger_template_error('nocache option not allowed', null, true);
}
- unset($_attr['nocache']);
- $_name = trim($_attr['name'], "'\"");
- $compiler->parent_compiler->tpl_function[$_name] = $compiler->parent_compiler->template->tpl_function[$_name] = array();
+ unset($_attr[ 'nocache' ]);
+ $_name = trim($_attr[ 'name' ], "'\"");
+ $compiler->parent_compiler->tpl_function[ $_name ] = array();
$save = array($_attr, $compiler->parser->current_buffer, $compiler->template->compiled->has_nocache_code,
$compiler->template->caching);
$this->openTag($compiler, 'function', $save);
@@ -100,17 +99,15 @@ class Smarty_Internal_Compile_Functionclose extends Smarty_Internal_CompileBase
*/
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
{
- $compiler->loopNesting--;
$this->compiler = $compiler;
$saved_data = $this->closeTag($compiler, array('function'));
- $_attr = $saved_data[0];
- $_name = trim($_attr['name'], "'\"");
- $compiler->parent_compiler->tpl_function[$_name]['called_functions'] = $compiler->parent_compiler->template->tpl_function[$_name]['called_functions'] = $compiler->called_functions;
- $compiler->parent_compiler->tpl_function[$_name]['compiled_filepath'] = $compiler->parent_compiler->template->tpl_function[$_name]['compiled_filepath'] = $compiler->parent_compiler->template->compiled->filepath;
- $compiler->parent_compiler->tpl_function[$_name]['uid'] = $compiler->parent_compiler->template->tpl_function[$_name]['uid'] = $compiler->template->source->uid;
- $compiler->called_functions = array();
+ $_attr = $saved_data[ 0 ];
+ $_name = trim($_attr[ 'name' ], "'\"");
+ $compiler->parent_compiler->tpl_function[ $_name ][ 'compiled_filepath' ] =
+ $compiler->parent_compiler->template->compiled->filepath;
+ $compiler->parent_compiler->tpl_function[ $_name ][ 'uid' ] = $compiler->template->source->uid;
$_parameter = $_attr;
- unset($_parameter['name']);
+ unset($_parameter[ 'name' ]);
// default parameter
$_paramsArray = array();
foreach ($_parameter as $_key => $_value) {
@@ -133,7 +130,7 @@ class Smarty_Internal_Compile_Functionclose extends Smarty_Internal_CompileBase
$_funcName = "smarty_template_function_{$_name}_{$compiler->template->compiled->nocache_hash}";
$_funcNameCaching = $_funcName . '_nocache';
if ($compiler->template->compiled->has_nocache_code) {
- $compiler->parent_compiler->tpl_function[$_name]['call_name_caching'] = $compiler->parent_compiler->template->tpl_function[$_name]['call_name_caching'] = $_funcNameCaching;
+ $compiler->parent_compiler->tpl_function[ $_name ][ 'call_name_caching' ] = $_funcNameCaching;
$output = "<?php\n";
$output .= "/* {$_funcNameCaching} */\n";
$output .= "if (!function_exists('{$_funcNameCaching}')) {\n";
@@ -141,69 +138,78 @@ class Smarty_Internal_Compile_Functionclose extends Smarty_Internal_CompileBase
$output .= "ob_start();\n";
$output .= "\$_smarty_tpl->compiled->has_nocache_code = true;\n";
$output .= $_paramsCode;
- $output .= "\$_smarty_tpl->_cache['saved_tpl_vars'][] = \$_smarty_tpl->tpl_vars;\n";
- $output .= "foreach (\$params as \$key => \$value) {\n\$_smarty_tpl->tpl_vars[\$key] = new Smarty_Variable(\$value);\n}";
+ $output .= "foreach (\$params as \$key => \$value) {\n\$_smarty_tpl->tpl_vars[\$key] = new Smarty_Variable(\$value, \$_smarty_tpl->isRenderingCache);\n}";
$output .= "\$params = var_export(\$params, true);\n";
$output .= "echo \"/*%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%*/<?php ";
- $output .= "\\\$saved_tpl_vars = \\\$_smarty_tpl->tpl_vars;\nforeach (\$params as \\\$key => \\\$value) {\n\\\$_smarty_tpl->tpl_vars[\\\$key] = new Smarty_Variable(\\\$value);\n}\n?>";
+ $output .= "\\\$_smarty_tpl->smarty->ext->_tplFunction->saveTemplateVariables(\\\$_smarty_tpl, '{$_name}');\nforeach (\$params as \\\$key => \\\$value) {\n\\\$_smarty_tpl->tpl_vars[\\\$key] = new Smarty_Variable(\\\$value, \\\$_smarty_tpl->isRenderingCache);\n}\n?>";
$output .= "/*/%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%*/\n\";?>";
- $compiler->parser->current_buffer->append_subtree($compiler->parser, new Smarty_Internal_ParseTree_Tag($compiler->parser, $output));
+ $compiler->parser->current_buffer->append_subtree($compiler->parser,
+ new Smarty_Internal_ParseTree_Tag($compiler->parser,
+ $output));
$compiler->parser->current_buffer->append_subtree($compiler->parser, $_functionCode);
$output = "<?php echo \"/*%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%*/<?php ";
- $output .= "foreach (Smarty::\\\$global_tpl_vars as \\\$key => \\\$value){\n";
- $output .= "if (!isset(\\\$_smarty_tpl->tpl_vars[\\\$key]) || \\\$_smarty_tpl->tpl_vars[\\\$key] === \\\$value) \\\$saved_tpl_vars[\\\$key] = \\\$value;\n}\n";
- $output .= "\\\$_smarty_tpl->tpl_vars = \\\$saved_tpl_vars;?>\n";
+ $output .= "\\\$_smarty_tpl->smarty->ext->_tplFunction->restoreTemplateVariables(\\\$_smarty_tpl, '{$_name}');?>\n";
$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 .= "\$_smarty_tpl->tpl_vars = array_pop(\$_smarty_tpl->_cache['saved_tpl_vars']);\n}\n}\n";
+ $output .= "}\n}\n";
$output .= "/*/ {$_funcName}_nocache */\n\n";
$output .= "?>\n";
- $compiler->parser->current_buffer->append_subtree($compiler->parser, new Smarty_Internal_ParseTree_Tag($compiler->parser, $output));
- $_functionCode = new Smarty_Internal_ParseTree_Tag($compiler->parser, preg_replace_callback("/((<\?php )?echo '\/\*%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%\*\/([\S\s]*?)\/\*\/%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%\*\/';(\?>\n)?)/", array($this,
- 'removeNocache'), $_functionCode->to_smarty_php($compiler->parser)));
+ $compiler->parser->current_buffer->append_subtree($compiler->parser,
+ new Smarty_Internal_ParseTree_Tag($compiler->parser,
+ $output));
+ $_functionCode = new Smarty_Internal_ParseTree_Tag($compiler->parser,
+ preg_replace_callback("/((<\?php )?echo '\/\*%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%\*\/([\S\s]*?)\/\*\/%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%\*\/';(\?>\n)?)/",
+ array($this, 'removeNocache'),
+ $_functionCode->to_smarty_php($compiler->parser)));
}
- $compiler->parent_compiler->tpl_function[$_name]['call_name'] = $compiler->parent_compiler->template->tpl_function[$_name]['call_name'] = $_funcName;
+ $compiler->parent_compiler->tpl_function[ $_name ][ 'call_name' ] = $_funcName;
$output = "<?php\n";
$output .= "/* {$_funcName} */\n";
$output .= "if (!function_exists('{$_funcName}')) {\n";
$output .= "function {$_funcName}(\$_smarty_tpl,\$params) {\n";
- $output .= "\$saved_tpl_vars = \$_smarty_tpl->tpl_vars;\n";
$output .= $_paramsCode;
- $output .= "foreach (\$params as \$key => \$value) {\n\$_smarty_tpl->tpl_vars[\$key] = new Smarty_Variable(\$value);\n}?>";
- $compiler->parser->current_buffer->append_subtree($compiler->parser, new Smarty_Internal_ParseTree_Tag($compiler->parser, $output));
+ $output .= "foreach (\$params as \$key => \$value) {\n\$_smarty_tpl->tpl_vars[\$key] = new Smarty_Variable(\$value, \$_smarty_tpl->isRenderingCache);\n}?>";
+ $compiler->parser->current_buffer->append_subtree($compiler->parser,
+ new Smarty_Internal_ParseTree_Tag($compiler->parser,
+ $output));
$compiler->parser->current_buffer->append_subtree($compiler->parser, $_functionCode);
- $output = "<?php foreach (Smarty::\$global_tpl_vars as \$key => \$value){\n";
- $output .= "if (!isset(\$_smarty_tpl->tpl_vars[\$key]) || \$_smarty_tpl->tpl_vars[\$key] === \$value) \$saved_tpl_vars[\$key] = \$value;\n}\n";
- $output .= "\$_smarty_tpl->tpl_vars = \$saved_tpl_vars;\n}\n}\n";
+ $output = "<?php\n}}\n";
$output .= "/*/ {$_funcName} */\n\n";
$output .= "?>\n";
- $compiler->parser->current_buffer->append_subtree($compiler->parser, new Smarty_Internal_ParseTree_Tag($compiler->parser, $output));
+ $compiler->parser->current_buffer->append_subtree($compiler->parser,
+ new Smarty_Internal_ParseTree_Tag($compiler->parser,
+ $output));
$compiler->parent_compiler->blockOrFunctionCode .= $compiler->parser->current_buffer->to_smarty_php($compiler->parser);
// nocache plugins must be copied
- if (!empty($compiler->template->compiled->required_plugins['nocache'])) {
- foreach ($compiler->template->compiled->required_plugins['nocache'] as $plugin => $tmp) {
+ if (!empty($compiler->template->compiled->required_plugins[ 'nocache' ])) {
+ foreach ($compiler->template->compiled->required_plugins[ 'nocache' ] as $plugin => $tmp) {
foreach ($tmp as $type => $data) {
- $compiler->parent_compiler->template->compiled->required_plugins['compiled'][$plugin][$type] = $data;
+ $compiler->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ $plugin ][ $type ] =
+ $data;
}
}
}
// restore old buffer
- $compiler->parser->current_buffer = $saved_data[1];
+ $compiler->parser->current_buffer = $saved_data[ 1 ];
// restore old status
- $compiler->template->compiled->has_nocache_code = $saved_data[2];
- $compiler->template->caching = $saved_data[3];
+ $compiler->template->compiled->has_nocache_code = $saved_data[ 2 ];
+ $compiler->template->caching = $saved_data[ 3 ];
return true;
}
/**
+ * Remove nocache code
+ *
* @param $match
*
- * @return mixed
+ * @return string
*/
function removeNocache($match)
{
- $code = preg_replace("/((<\?php )?echo '\/\*%%SmartyNocache:{$this->compiler->template->compiled->nocache_hash}%%\*\/)|(\/\*\/%%SmartyNocache:{$this->compiler->template->compiled->nocache_hash}%%\*\/';(\?>\n)?)/", '', $match[0]);
+ $code =
+ preg_replace("/((<\?php )?echo '\/\*%%SmartyNocache:{$this->compiler->template->compiled->nocache_hash}%%\*\/)|(\/\*\/%%SmartyNocache:{$this->compiler->template->compiled->nocache_hash}%%\*\/';(\?>\n)?)/",
+ '', $match[ 0 ]);
$code = str_replace(array('\\\'', '\\\\\''), array('\'', '\\\''), $code);
return $code;
}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_if.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_if.php
new file mode 100644
index 000000000..14db55d4f
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_if.php
@@ -0,0 +1,211 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile If
+ * Compiles the {if} {else} {elseif} {/if} tags
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile If Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_If extends Smarty_Internal_CompileBase
+{
+ /**
+ * Compiles code for the {if} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ * @throws \SmartyCompilerException
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
+ {
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ $this->openTag($compiler, 'if', array(1, $compiler->nocache));
+ // must whole block be nocache ?
+ $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
+
+ if (!array_key_exists("if condition", $parameter)) {
+ $compiler->trigger_template_error("missing if condition", null, true);
+ }
+
+ if (is_array($parameter[ 'if condition' ])) {
+ if (is_array($parameter[ 'if condition' ][ 'var' ])) {
+ $var = $parameter[ 'if condition' ][ 'var' ][ 'var' ];
+ } else {
+ $var = $parameter[ 'if condition' ][ 'var' ];
+ }
+ if ($compiler->nocache) {
+ // create nocache var to make it know for further compiling
+ $compiler->setNocacheInVariable($var);
+ }
+ $prefixVar = $compiler->getNewPrefixVariable();
+ $_output = "<?php {$prefixVar} = " . $parameter[ 'if condition' ][ 'value' ] . ";?>\n";
+ $assignAttr = array();
+ $assignAttr[][ 'value' ] = "{$prefixVar}";
+ $assignCompiler = new Smarty_Internal_Compile_Assign();
+ if (is_array($parameter[ 'if condition' ][ 'var' ])) {
+ $assignAttr[][ 'var' ] = $parameter[ 'if condition' ][ 'var' ][ 'var' ];
+ $_output .= $assignCompiler->compile($assignAttr, $compiler,
+ array('smarty_internal_index' => $parameter[ 'if condition' ][ 'var' ][ 'smarty_internal_index' ]));
+ } else {
+ $assignAttr[][ 'var' ] = $parameter[ 'if condition' ][ 'var' ];
+ $_output .= $assignCompiler->compile($assignAttr, $compiler, array());
+ }
+ $_output .= "<?php if ({$prefixVar}) {?>";
+ return $_output;
+ } else {
+ return "<?php if ({$parameter['if condition']}) {?>";
+ }
+ }
+}
+
+/**
+ * Smarty Internal Plugin Compile Else Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Else extends Smarty_Internal_CompileBase
+{
+ /**
+ * Compiles code for the {else} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
+ {
+ list($nesting, $compiler->tag_nocache) = $this->closeTag($compiler, array('if', 'elseif'));
+ $this->openTag($compiler, 'else', array($nesting, $compiler->tag_nocache));
+
+ return "<?php } else { ?>";
+ }
+}
+
+/**
+ * Smarty Internal Plugin Compile ElseIf Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Elseif extends Smarty_Internal_CompileBase
+{
+ /**
+ * Compiles code for the {elseif} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ * @throws \SmartyCompilerException
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
+ {
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+
+ list($nesting, $compiler->tag_nocache) = $this->closeTag($compiler, array('if', 'elseif'));
+
+ if (!array_key_exists("if condition", $parameter)) {
+ $compiler->trigger_template_error("missing elseif condition", null, true);
+ }
+
+ $assignCode = '';
+ $var = '';
+ if (is_array($parameter[ 'if condition' ])) {
+ $condition_by_assign = true;
+ if (is_array($parameter[ 'if condition' ][ 'var' ])) {
+ $var = $parameter[ 'if condition' ][ 'var' ][ 'var' ];
+ } else {
+ $var = $parameter[ 'if condition' ][ 'var' ];
+ }
+ if ($compiler->nocache) {
+ // create nocache var to make it know for further compiling
+ $compiler->setNocacheInVariable($var);
+ }
+ $prefixVar = $compiler->getNewPrefixVariable();
+ $assignCode = "<?php {$prefixVar} = " . $parameter[ 'if condition' ][ 'value' ] . ";?>\n";
+ $assignCompiler = new Smarty_Internal_Compile_Assign();
+ $assignAttr = array();
+ $assignAttr[][ 'value' ] = "{$prefixVar}";
+ if (is_array($parameter[ 'if condition' ][ 'var' ])) {
+ $assignAttr[][ 'var' ] = $parameter[ 'if condition' ][ 'var' ][ 'var' ];
+ $assignCode .= $assignCompiler->compile($assignAttr, $compiler,
+ array('smarty_internal_index' => $parameter[ 'if condition' ][ 'var' ][ 'smarty_internal_index' ]));
+ } else {
+ $assignAttr[][ 'var' ] = $parameter[ 'if condition' ][ 'var' ];
+ $assignCode .= $assignCompiler->compile($assignAttr, $compiler, array());
+ }
+ } else {
+ $condition_by_assign = false;
+ }
+
+ $prefixCode = $compiler->getPrefixCode();
+ if (empty($prefixCode)) {
+ if ($condition_by_assign) {
+ $this->openTag($compiler, 'elseif', array($nesting + 1, $compiler->tag_nocache));
+ $_output = $compiler->appendCode("<?php } else {\n?>", $assignCode);
+ return $compiler->appendCode($_output, "<?php if ({$prefixVar}) {?>");
+ } else {
+ $this->openTag($compiler, 'elseif', array($nesting, $compiler->tag_nocache));
+ return "<?php } elseif ({$parameter['if condition']}) {?>";
+ }
+ } else {
+ $_output = $compiler->appendCode("<?php } else {\n?>", $prefixCode);
+ $this->openTag($compiler, 'elseif', array($nesting + 1, $compiler->tag_nocache));
+ if ($condition_by_assign) {
+ $_output = $compiler->appendCode($_output, $assignCode);
+ return $compiler->appendCode($_output, "<?php if ({$prefixVar}) {?>");
+ } else {
+ return $compiler->appendCode($_output, "<?php if ({$parameter['if condition']}) {?>");
+ }
+ }
+ }
+}
+
+/**
+ * Smarty Internal Plugin Compile Ifclose Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Ifclose extends Smarty_Internal_CompileBase
+{
+ /**
+ * Compiles code for the {/if} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
+ {
+ // must endblock be nocache?
+ if ($compiler->nocache) {
+ $compiler->tag_nocache = true;
+ }
+ list($nesting, $compiler->nocache) = $this->closeTag($compiler, array('if', 'else', 'elseif'));
+ $tmp = '';
+ for ($i = 0; $i < $nesting; $i ++) {
+ $tmp .= '}';
+ }
+
+ return "<?php {$tmp}?>";
+ }
+}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_include.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_include.php
index 09fa11d6c..a81b0c740 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_include.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_include.php
@@ -43,7 +43,7 @@ class Smarty_Internal_Compile_Include extends Smarty_Internal_CompileBase
* @var array
* @see Smarty_Internal_CompileBase
*/
- public $option_flags = array('nocache', 'inline', 'caching', 'bubble_up');
+ public $option_flags = array('nocache', 'inline', 'caching');
/**
* Attribute definition: Overwrites base class.
@@ -58,8 +58,9 @@ class Smarty_Internal_Compile_Include extends Smarty_Internal_CompileBase
*
* @var array
*/
- public $valid_scopes = array('local' => true, 'parent' => true, 'root' => true, 'global' => true,
- 'smarty' => true, 'tpl_root' => true);
+ public $valid_scopes = array('parent' => Smarty::SCOPE_PARENT, 'root' => Smarty::SCOPE_ROOT,
+ 'global' => Smarty::SCOPE_GLOBAL, 'tpl_root' => Smarty::SCOPE_TPL_ROOT,
+ 'smarty' => Smarty::SCOPE_SMARTY);
/**
* Compiles code for the {include} tag
@@ -73,16 +74,17 @@ class Smarty_Internal_Compile_Include extends Smarty_Internal_CompileBase
*/
public function compile($args, Smarty_Internal_SmartyTemplateCompiler $compiler, $parameter)
{
+ $uid = $t_hash = null;
// check and get attributes
$_attr = $this->getAttributes($compiler, $args);
- $hashResourceName = $fullResourceName = $source_resource = $_attr['file'];
+ $fullResourceName = $source_resource = $_attr[ 'file' ];
$variable_template = false;
$cache_tpl = false;
// parse resource_name
if (preg_match('/^([\'"])(([A-Za-z0-9_\-]{2,})[:])?(([^$()]+)|(.+))\1$/', $source_resource, $match)) {
- $type = !empty($match[3]) ? $match[3] : $compiler->template->smarty->default_resource_type;
- $name = !empty($match[5]) ? $match[5] : $match[6];
+ $type = !empty($match[ 3 ]) ? $match[ 3 ] : $compiler->template->smarty->default_resource_type;
+ $name = !empty($match[ 5 ]) ? $match[ 5 ] : $match[ 6 ];
$handler = Smarty_Resource::load($compiler->smarty, $type);
if ($handler->recompiled || $handler->uncompiled) {
$variable_template = true;
@@ -91,51 +93,32 @@ class Smarty_Internal_Compile_Include extends Smarty_Internal_CompileBase
if ($type != 'string') {
$fullResourceName = "{$type}:{$name}";
$compiled = $compiler->parent_compiler->template->compiled;
- if (isset($compiled->includes[$fullResourceName])) {
- $compiled->includes[$fullResourceName] ++;
+ if (isset($compiled->includes[ $fullResourceName ])) {
+ $compiled->includes[ $fullResourceName ] ++;
$cache_tpl = true;
} else {
- $compiled->includes[$fullResourceName] = 1;
+ if ("{$compiler->template->source->type}:{$compiler->template->source->name}" ==
+ $fullResourceName
+ ) {
+ // recursive call of current template
+ $compiled->includes[ $fullResourceName ] = 2;
+ $cache_tpl = true;
+ } else {
+ $compiled->includes[ $fullResourceName ] = 1;
+ }
}
- $fullResourceName = '"' . $fullResourceName . '"';
+ $fullResourceName = $match[ 1 ] . $fullResourceName . $match[ 1 ];
}
}
- if (empty($match[5])) {
+ if (empty($match[ 5 ])) {
$variable_template = true;
}
} else {
$variable_template = true;
}
- if (isset($_attr['assign'])) {
- // output will be stored in a smarty variable instead of being displayed
- $_assign = $_attr['assign'];
- }
-
// scope setup
- $_scope = Smarty::SCOPE_LOCAL;
- if (isset($_attr['scope'])) {
- $_attr['scope'] = trim($_attr['scope'], "'\"");
- if (!isset($this->valid_scopes[$_attr['scope']])) {
- $compiler->trigger_template_error("illegal value '{$_attr['scope']}' for \"scope\" attribute", null, true);
- }
- if ($_attr['scope'] != 'local') {
- if ($_attr['scope'] == 'parent') {
- $_scope = Smarty::SCOPE_PARENT;
- } elseif ($_attr['scope'] == 'root') {
- $_scope = Smarty::SCOPE_ROOT;
- } elseif ($_attr['scope'] == 'global') {
- $_scope = Smarty::SCOPE_GLOBAL;
- } elseif ($_attr['scope'] == 'smarty') {
- $_scope = Smarty::SCOPE_SMARTY;
- } elseif ($_attr['scope'] == 'tpl_root') {
- $_scope = Smarty::SCOPE_TPL_ROOT;
- }
- if ($_attr['bubble_up'] === true) {
- $_scope = $_scope + Smarty::SCOPE_BUBBLE_UP;
- }
- }
- }
+ $_scope = $compiler->convertScope($_attr, $this->valid_scopes);
// set flag to cache subtemplate object when called within loop or template name is variable.
if ($cache_tpl || $variable_template || $compiler->loopNesting > 0) {
@@ -146,10 +129,6 @@ class Smarty_Internal_Compile_Include extends Smarty_Internal_CompileBase
// assume caching is off
$_caching = Smarty::CACHING_OFF;
- if ($_attr['nocache'] === true) {
- $compiler->tag_nocache = true;
- }
-
$call_nocache = $compiler->tag_nocache || $compiler->nocache;
// caching was on and {include} is not in nocache mode
@@ -158,30 +137,17 @@ class Smarty_Internal_Compile_Include extends Smarty_Internal_CompileBase
}
// flag if included template code should be merged into caller
- $merge_compiled_includes = ($compiler->smarty->merge_compiled_includes || $_attr['inline'] === true) &&
- !$compiler->template->source->handler->recompiled;
+ $merge_compiled_includes = ($compiler->smarty->merge_compiled_includes || $_attr[ 'inline' ] === true) &&
+ !$compiler->template->source->handler->recompiled;
- if ($merge_compiled_includes && $_attr['inline'] !== true) {
+ if ($merge_compiled_includes) {
// variable template name ?
if ($variable_template) {
$merge_compiled_includes = false;
- if ($compiler->template->caching) {
- // must use individual cache file
- //$_attr['caching'] = 1;
- }
}
// variable compile_id?
- if (isset($_attr['compile_id'])) {
- if (!((substr_count($_attr['compile_id'], '"') == 2 || substr_count($_attr['compile_id'], "'") == 2 ||
- is_numeric($_attr['compile_id']))) || substr_count($_attr['compile_id'], '(') != 0 ||
- substr_count($_attr['compile_id'], '$_smarty_tpl->') != 0
- ) {
- $merge_compiled_includes = false;
- if ($compiler->template->caching) {
- // must use individual cache file
- //$_attr['caching'] = 1;
- }
- }
+ if (isset($_attr[ 'compile_id' ]) && $compiler->isVariable($_attr[ 'compile_id' ])) {
+ $merge_compiled_includes = false;
}
}
@@ -191,28 +157,28 @@ class Smarty_Internal_Compile_Include extends Smarty_Internal_CompileBase
* a call in nocache mode.
*
*/
- if ($_attr['nocache'] !== true && $_attr['caching']) {
- $_caching = $_new_caching = (int) $_attr['caching'];
+ if ($_attr[ 'nocache' ] !== true && $_attr[ 'caching' ]) {
+ $_caching = $_new_caching = (int) $_attr[ 'caching' ];
$call_nocache = true;
} else {
$_new_caching = Smarty::CACHING_LIFETIME_CURRENT;
}
- if (isset($_attr['cache_lifetime'])) {
- $_cache_lifetime = $_attr['cache_lifetime'];
+ if (isset($_attr[ 'cache_lifetime' ])) {
+ $_cache_lifetime = $_attr[ 'cache_lifetime' ];
$call_nocache = true;
$_caching = $_new_caching;
} else {
$_cache_lifetime = '$_smarty_tpl->cache_lifetime';
}
- if (isset($_attr['cache_id'])) {
- $_cache_id = $_attr['cache_id'];
+ if (isset($_attr[ 'cache_id' ])) {
+ $_cache_id = $_attr[ 'cache_id' ];
$call_nocache = true;
$_caching = $_new_caching;
} else {
$_cache_id = '$_smarty_tpl->cache_id';
}
- if (isset($_attr['compile_id'])) {
- $_compile_id = $_attr['compile_id'];
+ if (isset($_attr[ 'compile_id' ])) {
+ $_compile_id = $_attr[ 'compile_id' ];
} else {
$_compile_id = '$_smarty_tpl->compile_id';
}
@@ -221,55 +187,67 @@ class Smarty_Internal_Compile_Include extends Smarty_Internal_CompileBase
if ($compiler->template->caching && $call_nocache) {
$merge_compiled_includes = false;
}
+ // assign attribute
+ if (isset($_attr[ 'assign' ])) {
+ // output will be stored in a smarty variable instead of being displayed
+ if ($_assign = $compiler->getId($_attr[ 'assign' ])) {
+ $_assign = "'{$_assign}'";
+ if ($compiler->tag_nocache || $compiler->nocache || $call_nocache) {
+ // create nocache var to make it know for further compiling
+ $compiler->setNocacheInVariable($_attr[ 'assign' ]);
+ }
+ } else {
+ $_assign = $_attr[ 'assign' ];
+ }
+ }
$has_compiled_template = false;
if ($merge_compiled_includes) {
- $c_id = isset($_attr['compile_id']) ? $_attr['compile_id'] : $compiler->template->compile_id;
+ $c_id = isset($_attr[ 'compile_id' ]) ? $_attr[ 'compile_id' ] : $compiler->template->compile_id;
// we must observe different compile_id and caching
$t_hash = sha1($c_id . ($_caching ? '--caching' : '--nocaching'));
- if (!isset($compiler->parent_compiler->mergedSubTemplatesData[$hashResourceName][$t_hash])) {
- $has_compiled_template =
- $this->compileInlineTemplate($compiler, $fullResourceName, $_caching, $hashResourceName, $t_hash,
- $c_id);
+ $compiler->smarty->allow_ambiguous_resources = true;
+ /* @var Smarty_Internal_Template $tpl */
+ $tpl = new $compiler->smarty->template_class (trim($fullResourceName, '"\''), $compiler->smarty,
+ $compiler->template, $compiler->template->cache_id, $c_id,
+ $_caching);
+ $uid = $tpl->source->type . $tpl->source->uid;
+ if (!isset($compiler->parent_compiler->mergedSubTemplatesData[ $uid ][ $t_hash ])) {
+ $has_compiled_template = $this->compileInlineTemplate($compiler, $tpl, $t_hash);
} else {
$has_compiled_template = true;
}
+ unset($tpl);
}
// delete {include} standard attributes
- unset($_attr['file'], $_attr['assign'], $_attr['cache_id'], $_attr['compile_id'], $_attr['cache_lifetime'], $_attr['nocache'], $_attr['caching'], $_attr['scope'], $_attr['inline'], $_attr['bubble_up']);
+ unset($_attr[ 'file' ], $_attr[ 'assign' ], $_attr[ 'cache_id' ], $_attr[ 'compile_id' ], $_attr[ 'cache_lifetime' ], $_attr[ 'nocache' ], $_attr[ 'caching' ], $_attr[ 'scope' ], $_attr[ 'inline' ]);
// remaining attributes must be assigned as smarty variable
- $_vars_nc = '';
+ $_vars = 'array()';
if (!empty($_attr)) {
- if ($_scope == Smarty::SCOPE_LOCAL) {
- $_pairs = array();
- // create variables
- foreach ($_attr as $key => $value) {
- $_pairs[] = "'$key'=>$value";
- $_vars_nc .= "\$_smarty_tpl->tpl_vars['$key'] = new Smarty_Variable($value);\n";
- }
- $_vars = 'array(' . join(',', $_pairs) . ')';
- } else {
- $compiler->trigger_template_error('variable passing not allowed in parent/global scope', null, true);
+ $_pairs = array();
+ // create variables
+ foreach ($_attr as $key => $value) {
+ $_pairs[] = "'$key'=>$value";
}
- } else {
- $_vars = 'array()';
+ $_vars = 'array(' . join(',', $_pairs) . ')';
}
$update_compile_id = $compiler->template->caching && !$compiler->tag_nocache && !$compiler->nocache &&
- $_compile_id != '$_smarty_tpl->compile_id';
+ $_compile_id != '$_smarty_tpl->compile_id';
if ($has_compiled_template && !$call_nocache) {
$_output = "<?php\n";
if ($update_compile_id) {
$_output .= $compiler->makeNocacheCode("\$_compile_id_save[] = \$_smarty_tpl->compile_id;\n\$_smarty_tpl->compile_id = {$_compile_id};\n");
}
- if (!empty($_vars_nc) && $_caching == 9999 && $compiler->template->caching) {
- //$compiler->suppressNocacheProcessing = false;
+ if (!empty($_attr) && $_caching == 9999 && $compiler->template->caching) {
+ $_vars_nc = "foreach ($_vars as \$ik => \$iv) {\n";
+ $_vars_nc .= "\$_smarty_tpl->tpl_vars[\$ik] = new Smarty_Variable(\$iv);\n";
+ $_vars_nc .= "}\n";
$_output .= substr($compiler->processNocacheCode('<?php ' . $_vars_nc . "?>\n", true), 6, - 3);
- //$compiler->suppressNocacheProcessing = true;
}
if (isset($_assign)) {
$_output .= "ob_start();\n";
}
- $_output .= "\$_smarty_tpl->smarty->ext->_subtemplate->render(\$_smarty_tpl, {$fullResourceName}, {$_cache_id}, {$_compile_id}, {$_caching}, {$_cache_lifetime}, {$_vars}, {$_scope}, {$_cache_tpl}, '{$compiler->parent_compiler->mergedSubTemplatesData[$hashResourceName][$t_hash]['uid']}', '{$compiler->parent_compiler->mergedSubTemplatesData[$hashResourceName][$t_hash]['func']}');\n";
+ $_output .= "\$_smarty_tpl->_subTemplateRender({$fullResourceName}, {$_cache_id}, {$_compile_id}, {$_caching}, {$_cache_lifetime}, {$_vars}, {$_scope}, {$_cache_tpl}, '{$compiler->parent_compiler->mergedSubTemplatesData[$uid][$t_hash]['uid']}', '{$compiler->parent_compiler->mergedSubTemplatesData[$uid][$t_hash]['func']}');\n";
if (isset($_assign)) {
$_output .= "\$_smarty_tpl->assign({$_assign}, ob_get_clean());\n";
}
@@ -292,7 +270,7 @@ class Smarty_Internal_Compile_Include extends Smarty_Internal_CompileBase
if (isset($_assign)) {
$_output .= "ob_start();\n";
}
- $_output .= "\$_smarty_tpl->smarty->ext->_subtemplate->render(\$_smarty_tpl, {$fullResourceName}, $_cache_id, $_compile_id, $_caching, $_cache_lifetime, $_vars, $_scope, {$_cache_tpl});\n";
+ $_output .= "\$_smarty_tpl->_subTemplateRender({$fullResourceName}, $_cache_id, $_compile_id, $_caching, $_cache_lifetime, $_vars, $_scope, {$_cache_tpl});\n";
if (isset($_assign)) {
$_output .= "\$_smarty_tpl->assign({$_assign}, ob_get_clean());\n";
}
@@ -307,47 +285,47 @@ class Smarty_Internal_Compile_Include extends Smarty_Internal_CompileBase
* Compile inline sub template
*
* @param \Smarty_Internal_SmartyTemplateCompiler $compiler
- * @param $fullResourceName
- * @param $_caching
- * @param $hashResourceName
- * @param $t_hash
- * @param $c_id
+ * @param \Smarty_Internal_Template $tpl
+ * @param string $t_hash
*
* @return bool
*/
- public function compileInlineTemplate(Smarty_Internal_SmartyTemplateCompiler $compiler, $fullResourceName,
- $_caching, $hashResourceName, $t_hash, $c_id)
+ public function compileInlineTemplate(Smarty_Internal_SmartyTemplateCompiler $compiler,
+ Smarty_Internal_Template $tpl, $t_hash)
{
- $compiler->smarty->allow_ambiguous_resources = true;
- /* @var Smarty_Internal_Template $tpl */
- $tpl =
- new $compiler->smarty->template_class (trim($fullResourceName, '"\''), $compiler->smarty, $compiler->template,
- $compiler->template->cache_id, $c_id, $_caching);
+ $uid = $tpl->source->type . $tpl->source->uid;
if (!($tpl->source->handler->uncompiled) && $tpl->source->exists) {
- $compiler->parent_compiler->mergedSubTemplatesData[$hashResourceName][$t_hash]['uid'] = $tpl->source->uid;
- if (isset($compiler->template->_inheritance)) {
- $tpl->_inheritance = clone $compiler->template->_inheritance;
+ $compiler->parent_compiler->mergedSubTemplatesData[ $uid ][ $t_hash ][ 'uid' ] = $tpl->source->uid;
+ if (isset($compiler->template->inheritance)) {
+ $tpl->inheritance = clone $compiler->template->inheritance;
}
$tpl->compiled = new Smarty_Template_Compiled();
$tpl->compiled->nocache_hash = $compiler->parent_compiler->template->compiled->nocache_hash;
$tpl->loadCompiler();
// save unique function name
- $compiler->parent_compiler->mergedSubTemplatesData[$hashResourceName][$t_hash]['func'] =
+ $compiler->parent_compiler->mergedSubTemplatesData[ $uid ][ $t_hash ][ 'func' ] =
$tpl->compiled->unifunc = 'content_' . str_replace(array('.', ','), '_', uniqid('', true));
// make sure whole chain gets compiled
$tpl->mustCompile = true;
- $compiler->parent_compiler->mergedSubTemplatesData[$hashResourceName][$t_hash]['nocache_hash'] =
+ $compiler->parent_compiler->mergedSubTemplatesData[ $uid ][ $t_hash ][ 'nocache_hash' ] =
$tpl->compiled->nocache_hash;
+ if ($compiler->template->source->type == 'file') {
+ $sourceInfo = $compiler->template->source->filepath;
+ } else {
+ $basename = $compiler->template->source->handler->getBasename($compiler->template->source);
+ $sourceInfo = $compiler->template->source->type . ':' .
+ ($basename ? $basename : $compiler->template->source->name);
+ }
// get compiled code
$compiled_code = "<?php\n\n";
- $compiled_code .= "/* Start inline template \"{$tpl->source->type}:{$tpl->source->name}\" =============================*/\n";
+ $compiled_code .= "/* Start inline template \"{$sourceInfo}\" =============================*/\n";
$compiled_code .= "function {$tpl->compiled->unifunc} (\$_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 \"{$tpl->source->type}:{$tpl->source->name}\" =============================*/\n";
+ $compiled_code .= "/* End inline template \"{$sourceInfo}\" =============================*/\n";
$compiled_code .= "?>";
unset($tpl->compiler);
if ($tpl->compiled->has_nocache_code) {
@@ -357,7 +335,7 @@ class Smarty_Internal_Compile_Include extends Smarty_Internal_CompileBase
$compiled_code);
$compiler->template->compiled->has_nocache_code = true;
}
- $compiler->parent_compiler->mergedSubTemplatesCode[$tpl->compiled->unifunc] = $compiled_code;
+ $compiler->parent_compiler->mergedSubTemplatesCode[ $tpl->compiled->unifunc ] = $compiled_code;
return true;
} else {
return false;
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_include_php.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_include_php.php
index e7e62997c..77586da8b 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_include_php.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_include_php.php
@@ -64,7 +64,7 @@ class Smarty_Internal_Compile_Include_Php extends Smarty_Internal_CompileBase
$_smarty_tpl = $compiler->template;
$_filepath = false;
$_file = null;
- eval('$_file = @' . $_attr['file'] . ';');
+ eval('$_file = @' . $_attr[ 'file' ] . ';');
if (!isset($compiler->smarty->security_policy) && file_exists($_file)) {
$_filepath = $compiler->smarty->_realpath($_file, true);
} else {
@@ -75,7 +75,7 @@ class Smarty_Internal_Compile_Include_Php extends Smarty_Internal_CompileBase
}
if (!empty($_dir)) {
foreach ((array) $_dir as $_script_dir) {
- $_path = $compiler->smarty->_realpath($_script_dir . DS . $_file, true);
+ $_path = $compiler->smarty->_realpath($_script_dir . $compiler->smarty->ds . $_file, true);
if (file_exists($_path)) {
$_filepath = $_path;
break;
@@ -91,13 +91,13 @@ class Smarty_Internal_Compile_Include_Php extends Smarty_Internal_CompileBase
$compiler->smarty->security_policy->isTrustedPHPDir($_filepath);
}
- if (isset($_attr['assign'])) {
+ if (isset($_attr[ 'assign' ])) {
// output will be stored in a smarty variable instead of being displayed
- $_assign = $_attr['assign'];
+ $_assign = $_attr[ 'assign' ];
}
$_once = '_once';
- if (isset($_attr['once'])) {
- if ($_attr['once'] == 'false') {
+ if (isset($_attr[ 'once' ])) {
+ if ($_attr[ 'once' ] == 'false') {
$_once = '';
}
}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_insert.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_insert.php
index 2ebde1661..02ef67c3a 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_insert.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_insert.php
@@ -54,6 +54,9 @@ class Smarty_Internal_Compile_Insert extends Smarty_Internal_CompileBase
{
// check and get attributes
$_attr = $this->getAttributes($compiler, $args);
+ //Does tag create output
+ $compiler->has_output = isset($_attr[ 'assign' ]) ? false : true;
+
$nocacheParam = $compiler->template->caching && ($compiler->tag_nocache || $compiler->nocache);
if (!$nocacheParam) {
// do not compile as nocache code
@@ -66,35 +69,35 @@ class Smarty_Internal_Compile_Insert extends Smarty_Internal_CompileBase
$_output = '<?php ';
// save possible attributes
- eval('$_name = @' . $_attr['name'] . ';');
- if (isset($_attr['assign'])) {
+ eval('$_name = @' . $_attr[ 'name' ] . ';');
+ if (isset($_attr[ 'assign' ])) {
// output will be stored in a smarty variable instead of being displayed
- $_assign = $_attr['assign'];
+ $_assign = $_attr[ 'assign' ];
// create variable to make sure that the compiler knows about its nocache status
- $var = trim($_attr['assign'], "'");
- if (isset($compiler->template->tpl_vars[$var])) {
- $compiler->template->tpl_vars[$var]->nocache = true;
+ $var = trim($_attr[ 'assign' ], "'");
+ if (isset($compiler->template->tpl_vars[ $var ])) {
+ $compiler->template->tpl_vars[ $var ]->nocache = true;
} else {
- $compiler->template->tpl_vars[$var] = new Smarty_Variable(null, true);
+ $compiler->template->tpl_vars[ $var ] = new Smarty_Variable(null, true);
}
}
- if (isset($_attr['script'])) {
+ if (isset($_attr[ 'script' ])) {
// script which must be included
$_function = "smarty_insert_{$_name}";
$_smarty_tpl = $compiler->template;
$_filepath = false;
- eval('$_script = @' . $_attr['script'] . ';');
+ eval('$_script = @' . $_attr[ 'script' ] . ';');
if (!isset($compiler->smarty->security_policy) && file_exists($_script)) {
$_filepath = $_script;
} else {
if (isset($compiler->smarty->security_policy)) {
$_dir = $compiler->smarty->security_policy->trusted_dir;
} else {
- $_dir = $compiler->smarty->trusted_dir;
+ $_dir = $compiler->smarty instanceof SmartyBC ? $compiler->smarty->trusted_dir : null;
}
if (!empty($_dir)) {
foreach ((array) $_dir as $_script_dir) {
- $_script_dir = rtrim($_script_dir, '/\\') . DS;
+ $_script_dir = rtrim($_script_dir, '/\\') . $compiler->smarty->ds;
if (file_exists($_script_dir . $_script)) {
$_filepath = $_script_dir . $_script;
break;
@@ -109,7 +112,8 @@ class Smarty_Internal_Compile_Insert extends Smarty_Internal_CompileBase
$_output .= "require_once '{$_filepath}' ;";
require_once $_filepath;
if (!is_callable($_function)) {
- $compiler->trigger_template_error(" {insert} function '{$_function}' is not callable in script file '{$_script}'", null, true);
+ $compiler->trigger_template_error(" {insert} function '{$_function}' is not callable in script file '{$_script}'",
+ null, true);
}
} else {
$_filepath = 'null';
@@ -118,12 +122,13 @@ class Smarty_Internal_Compile_Insert extends Smarty_Internal_CompileBase
if (!is_callable($_function)) {
// try plugin
if (!$_function = $compiler->getPlugin($_name, 'insert')) {
- $compiler->trigger_template_error("{insert} no function or plugin found for '{$_name}'", null, true);
+ $compiler->trigger_template_error("{insert} no function or plugin found for '{$_name}'", null,
+ true);
}
}
}
// delete {insert} standard attributes
- unset($_attr['name'], $_attr['assign'], $_attr['script'], $_attr['nocache']);
+ unset($_attr[ 'name' ], $_attr[ 'assign' ], $_attr[ 'script' ], $_attr[ 'nocache' ]);
// convert attributes into parameter array string
$_paramsArray = array();
foreach ($_attr as $_key => $_value) {
@@ -138,7 +143,6 @@ class Smarty_Internal_Compile_Insert extends Smarty_Internal_CompileBase
$_output .= "\$_smarty_tpl->assign({$_assign} , {$_function} ({$_params},\$_smarty_tpl), true);?>";
}
} else {
- $compiler->has_output = true;
if ($_smarty_tpl->caching && !$nocacheParam) {
$_output .= "echo Smarty_Internal_Nocache_Insert::compile ('{$_function}',{$_params}, \$_smarty_tpl, '{$_filepath}');?>";
} else {
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_ldelim.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_ldelim.php
index 8c6b701e1..7251dcd6c 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_ldelim.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_ldelim.php
@@ -29,7 +29,7 @@ class Smarty_Internal_Compile_Ldelim extends Smarty_Internal_CompileBase
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
{
$_attr = $this->getAttributes($compiler, $args);
- if ($_attr['nocache'] === true) {
+ if ($_attr[ 'nocache' ] === true) {
$compiler->trigger_template_error('nocache option not allowed', null, true);
}
// this tag does not return compiled code
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_make_nocache.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_make_nocache.php
new file mode 100644
index 000000000..720dd68b3
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_make_nocache.php
@@ -0,0 +1,64 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Make_Nocache
+ * Compiles the {make_nocache} tag
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Make_Nocache Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Make_Nocache extends Smarty_Internal_CompileBase
+{
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $option_flags = array();
+
+ /**
+ * Array of names of required attribute required by tag
+ *
+ * @var array
+ */
+ public $required_attributes = array('var');
+
+ /**
+ * Shorttag attribute order defined by its names
+ *
+ * @var array
+ */
+ public $shorttag_order = array('var');
+
+ /**
+ * Compiles code for the {make_nocache} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ * @throws \SmartyCompilerException
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
+ {
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ if ($compiler->template->caching) {
+ $output = "<?php \$_smarty_tpl->smarty->ext->_make_nocache->save(\$_smarty_tpl, {$_attr[ 'var' ]});\n?>\n";
+ $compiler->has_code = true;
+ $compiler->suppressNocacheProcessing = true;
+ return $output;
+ } else {
+ return true;
+ }
+ }
+}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_nocache.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_nocache.php
index b29a993aa..b29a993aa 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_nocache.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_nocache.php
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_block_plugin.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_block_plugin.php
new file mode 100644
index 000000000..617564276
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_block_plugin.php
@@ -0,0 +1,122 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Block Plugin
+ * Compiles code for the execution of block plugin
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Block Plugin Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Private_Block_Plugin extends Smarty_Internal_CompileBase
+{
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $optional_attributes = array('_any');
+
+ /**
+ * nesting level
+ *
+ * @var int
+ */
+ public $nesting = 0;
+
+ /**
+ * Compiles code for the execution of block plugin
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ * @param string $tag name of block plugin
+ * @param string $function PHP function name
+ *
+ * @return string compiled code
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter, $tag, $function = null)
+ {
+ if (!isset($tag[ 5 ]) || substr($tag, - 5) != 'close') {
+ // opening tag of block plugin
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ $this->nesting ++;
+ unset($_attr[ 'nocache' ]);
+ list($callback, $_paramsArray, $callable) = $this->setup($compiler, $_attr, $tag, $function);
+ $_params = 'array(' . implode(",", $_paramsArray) . ')';
+
+ // compile code
+ $output = "<?php ";
+ if (is_array($callback)) {
+ $output .= "\$_block_plugin{$this->nesting} = isset({$callback[0]}) ? {$callback[0]} : null;\n";
+ $callback = "\$_block_plugin{$this->nesting}{$callback[1]}";
+ }
+ if (isset($callable)) {
+ $output .= "if (!is_callable({$callable})) {\nthrow new SmartyException('block tag \'{$tag}\' not callable or registered');\n}\n";
+ }
+ $output .= "\$_smarty_tpl->smarty->_cache['_tag_stack'][] = array('{$tag}', {$_params});\n";
+ $output .= "\$_block_repeat=true;\necho {$callback}({$_params}, null, \$_smarty_tpl, \$_block_repeat);\nwhile (\$_block_repeat) {\nob_start();\n?>";
+ $this->openTag($compiler, $tag, array($_params, $compiler->nocache, $callback));
+ // maybe nocache because of nocache variables or nocache plugin
+ $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
+ } else {
+ // must endblock be nocache?
+ if ($compiler->nocache) {
+ $compiler->tag_nocache = true;
+ }
+ // closing tag of block plugin, restore nocache
+ list($_params, $compiler->nocache, $callback) = $this->closeTag($compiler, substr($tag, 0, - 5));
+ //Does tag create output
+ $compiler->has_output = isset($_params[ 'assign' ]) ? false : true;
+ // compile code
+ if (!isset($parameter[ 'modifier_list' ])) {
+ $mod_pre = $mod_post = $mod_content = '';
+ $mod_content2 = 'ob_get_clean()';
+ } else {
+ $mod_content2 = "\$_block_content{$this->nesting}";
+ $mod_content = "\$_block_content{$this->nesting} = ob_get_clean();\n";
+ $mod_pre = "ob_start();\n";
+ $mod_post = 'echo ' . $compiler->compileTag('private_modifier', array(),
+ array('modifierlist' => $parameter[ 'modifier_list' ],
+ 'value' => 'ob_get_clean()')) . ";\n";
+ }
+ $output = "<?php " . $mod_content . "\$_block_repeat=false;\n" . $mod_pre .
+ "echo {$callback}({$_params}, " . $mod_content2 .
+ ", \$_smarty_tpl, \$_block_repeat);\n" . $mod_post . "}\n";
+ $output .= "array_pop(\$_smarty_tpl->smarty->_cache['_tag_stack']);";
+ $output .= "?>";
+ }
+ return $output . "\n";
+ }
+
+ /**
+ * Setup callback and parameter array
+ *
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler
+ * @param array $_attr attributes
+ * @param string $tag
+ * @param string $function
+ *
+ * @return array
+ */
+ public function setup(Smarty_Internal_TemplateCompilerBase $compiler, $_attr, $tag, $function)
+ {
+ $_paramsArray = array();
+ foreach ($_attr as $_key => $_value) {
+ if (is_int($_key)) {
+ $_paramsArray[] = "$_key=>$_value";
+ } else {
+ $_paramsArray[] = "'$_key'=>$_value";
+ }
+ }
+ return array($function, $_paramsArray, null);
+ }
+}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_foreachsection.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_foreachsection.php
index 16f233359..bf569be3a 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_foreachsection.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_foreachsection.php
@@ -110,11 +110,11 @@ class Smarty_Internal_Compile_Private_ForeachSection extends Smarty_Internal_Com
public function buildPropertyPreg($named, $attributes)
{
if ($named) {
- $this->resultOffsets['named'] = $this->startOffset + 3;
+ $this->resultOffsets[ 'named' ] = $this->startOffset + 3;
$this->propertyPreg .= "([\$]smarty[.]{$this->tagName}[.]{$attributes['name']}[.](";
$properties = $this->nameProperties;
} else {
- $this->resultOffsets['item'] = $this->startOffset + 3;
+ $this->resultOffsets[ 'item' ] = $this->startOffset + 3;
$this->propertyPreg .= "([\$]{$attributes['item']}[@](";
$properties = $this->itemProperties;
}
@@ -140,8 +140,8 @@ class Smarty_Internal_Compile_Private_ForeachSection extends Smarty_Internal_Com
preg_match_all($this->propertyPreg, $source, $match, PREG_SET_ORDER);
foreach ($this->resultOffsets as $key => $offset) {
foreach ($match as $m) {
- if (isset($m[$offset]) && !empty($m[$offset])) {
- $this->matchResults[$key][strtolower($m[$offset])] = true;
+ if (isset($m[ $offset ]) && !empty($m[ $offset ])) {
+ $this->matchResults[ $key ][ strtolower($m[ $offset ]) ] = true;
}
}
}
@@ -173,9 +173,11 @@ class Smarty_Internal_Compile_Private_ForeachSection extends Smarty_Internal_Com
$_content = $nextCompiler->template->source->getContent();
if ($_content != '') {
// run pre filter if required
- if ((isset($nextCompiler->smarty->autoload_filters['pre']) ||
- isset($nextCompiler->smarty->registered_filters['pre']))) {
- $_content = $nextCompiler->smarty->ext->_filter_Handler->runFilter('pre', $_content, $nextCompiler->template);
+ if ((isset($nextCompiler->smarty->autoload_filters[ 'pre' ]) ||
+ isset($nextCompiler->smarty->registered_filters[ 'pre' ]))
+ ) {
+ $_content = $nextCompiler->smarty->ext->_filterHandler->runFilter('pre', $_content,
+ $nextCompiler->template);
}
$this->matchProperty($_content);
}
@@ -190,7 +192,6 @@ class Smarty_Internal_Compile_Private_ForeachSection extends Smarty_Internal_Com
*/
public function matchBlockSource(Smarty_Internal_TemplateCompilerBase $compiler)
{
-
}
/**
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_function_plugin.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_function_plugin.php
index 0d0ab8138..26529bb68 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_function_plugin.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_function_plugin.php
@@ -35,25 +35,20 @@ class Smarty_Internal_Compile_Private_Function_Plugin extends Smarty_Internal_Co
/**
* Compiles code for the execution of function plugin
*
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- * @param string $tag name of function plugin
- * @param string $function PHP function name
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ * @param string $tag name of function plugin
+ * @param string $function PHP function name
*
* @return string compiled code
*/
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter, $tag, $function)
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter, $tag, $function)
{
- // This tag does create output
- $compiler->has_output = true;
-
// check and get attributes
$_attr = $this->getAttributes($compiler, $args);
- if ($_attr['nocache'] === true) {
- $compiler->tag_nocache = true;
- }
- unset($_attr['nocache']);
+
+ unset($_attr[ 'nocache' ]);
// convert attributes into parameter array string
$_paramsArray = array();
foreach ($_attr as $_key => $_value) {
@@ -65,8 +60,15 @@ class Smarty_Internal_Compile_Private_Function_Plugin extends Smarty_Internal_Co
}
$_params = 'array(' . implode(",", $_paramsArray) . ')';
// compile code
- $output = "<?php echo {$function}({$_params},\$_smarty_tpl);?>\n";
-
+ $output = "{$function}({$_params},\$_smarty_tpl)";
+ if (!empty($parameter[ 'modifierlist' ])) {
+ $output = $compiler->compileTag('private_modifier', array(),
+ array('modifierlist' => $parameter[ 'modifierlist' ],
+ 'value' => $output));
+ }
+ //Does tag create output
+ $compiler->has_output = true;
+ $output = "<?php echo {$output};?>\n";
return $output;
}
}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_modifier.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_modifier.php
index 9594d2ae7..2ee88db48 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_modifier.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_modifier.php
@@ -31,15 +31,15 @@ class Smarty_Internal_Compile_Private_Modifier extends Smarty_Internal_CompileBa
{
// check and get attributes
$_attr = $this->getAttributes($compiler, $args);
- $output = $parameter['value'];
+ $output = $parameter[ 'value' ];
// loop over list of modifiers
- foreach ($parameter['modifierlist'] as $single_modifier) {
- $modifier = $single_modifier[0];
- $single_modifier[0] = $output;
+ foreach ($parameter[ 'modifierlist' ] as $single_modifier) {
+ $modifier = $single_modifier[ 0 ];
+ $single_modifier[ 0 ] = $output;
$params = implode(',', $single_modifier);
// check if we know already the type of modifier
- if (isset($compiler->known_modifier_type[$modifier])) {
- $modifier_types = array($compiler->known_modifier_type[$modifier]);
+ if (isset($compiler->known_modifier_type[ $modifier ])) {
+ $modifier_types = array($compiler->known_modifier_type[ $modifier ]);
} else {
$modifier_types = array(1, 2, 3, 4, 5, 6);
}
@@ -47,27 +47,30 @@ class Smarty_Internal_Compile_Private_Modifier extends Smarty_Internal_CompileBa
switch ($type) {
case 1:
// registered modifier
- if (isset($compiler->smarty->registered_plugins[Smarty::PLUGIN_MODIFIER][$modifier])) {
- $function = $compiler->smarty->registered_plugins[Smarty::PLUGIN_MODIFIER][$modifier][0];
+ if (isset($compiler->smarty->registered_plugins[ Smarty::PLUGIN_MODIFIER ][ $modifier ])) {
+ $function =
+ $compiler->smarty->registered_plugins[ Smarty::PLUGIN_MODIFIER ][ $modifier ][ 0 ];
if (!is_array($function)) {
$output = "{$function}({$params})";
} else {
- if (is_object($function[0])) {
+ if (is_object($function[ 0 ])) {
$output = '$_smarty_tpl->smarty->registered_plugins[Smarty::PLUGIN_MODIFIER][\'' .
- $modifier . '\'][0][0]->' . $function[1] . '(' . $params . ')';
+ $modifier . '\'][0][0]->' . $function[ 1 ] . '(' . $params . ')';
} else {
- $output = $function[0] . '::' . $function[1] . '(' . $params . ')';
+ $output = $function[ 0 ] . '::' . $function[ 1 ] . '(' . $params . ')';
}
}
- $compiler->known_modifier_type[$modifier] = $type;
+ $compiler->known_modifier_type[ $modifier ] = $type;
break 2;
}
break;
case 2:
// registered modifier compiler
- if (isset($compiler->smarty->registered_plugins[Smarty::PLUGIN_MODIFIERCOMPILER][$modifier][0])) {
- $output = call_user_func($compiler->smarty->registered_plugins[Smarty::PLUGIN_MODIFIERCOMPILER][$modifier][0], $single_modifier, $compiler->smarty);
- $compiler->known_modifier_type[$modifier] = $type;
+ if (isset($compiler->smarty->registered_plugins[ Smarty::PLUGIN_MODIFIERCOMPILER ][ $modifier ][ 0 ])) {
+ $output =
+ call_user_func($compiler->smarty->registered_plugins[ Smarty::PLUGIN_MODIFIERCOMPILER ][ $modifier ][ 0 ],
+ $single_modifier, $compiler->smarty);
+ $compiler->known_modifier_type[ $modifier ] = $type;
break 2;
}
break;
@@ -81,7 +84,7 @@ class Smarty_Internal_Compile_Private_Modifier extends Smarty_Internal_CompileBa
$plugin = 'smarty_modifiercompiler_' . $modifier;
$output = $plugin($single_modifier, $compiler);
}
- $compiler->known_modifier_type[$modifier] = $type;
+ $compiler->known_modifier_type[ $modifier ] = $type;
break 2;
}
break;
@@ -94,7 +97,7 @@ class Smarty_Internal_Compile_Private_Modifier extends Smarty_Internal_CompileBa
) {
$output = "{$function}({$params})";
}
- $compiler->known_modifier_type[$modifier] = $type;
+ $compiler->known_modifier_type[ $modifier ] = $type;
break 2;
}
break;
@@ -107,17 +110,17 @@ class Smarty_Internal_Compile_Private_Modifier extends Smarty_Internal_CompileBa
) {
$output = "{$modifier}({$params})";
}
- $compiler->known_modifier_type[$modifier] = $type;
+ $compiler->known_modifier_type[ $modifier ] = $type;
break 2;
}
break;
case 6:
// default plugin handler
- if (isset($compiler->default_handler_plugins[Smarty::PLUGIN_MODIFIER][$modifier]) ||
+ if (isset($compiler->default_handler_plugins[ Smarty::PLUGIN_MODIFIER ][ $modifier ]) ||
(is_callable($compiler->smarty->default_plugin_handler_func) &&
- $compiler->getPluginFromDefaultHandler($modifier, Smarty::PLUGIN_MODIFIER))
+ $compiler->getPluginFromDefaultHandler($modifier, Smarty::PLUGIN_MODIFIER))
) {
- $function = $compiler->default_handler_plugins[Smarty::PLUGIN_MODIFIER][$modifier][0];
+ $function = $compiler->default_handler_plugins[ Smarty::PLUGIN_MODIFIER ][ $modifier ][ 0 ];
// check if modifier allowed
if (!is_object($compiler->smarty->security_policy) ||
$compiler->smarty->security_policy->isTrustedModifier($modifier, $compiler)
@@ -125,27 +128,26 @@ class Smarty_Internal_Compile_Private_Modifier extends Smarty_Internal_CompileBa
if (!is_array($function)) {
$output = "{$function}({$params})";
} else {
- if (is_object($function[0])) {
- $output = '$_smarty_tpl->smarty->registered_plugins[Smarty::PLUGIN_MODIFIER][\'' .
- $modifier . '\'][0][0]->' . $function[1] . '(' . $params . ')';
+ if (is_object($function[ 0 ])) {
+ $output = $function[ 0 ] . '->'. $function[ 1 ] . '(' . $params . ')';
} else {
- $output = $function[0] . '::' . $function[1] . '(' . $params . ')';
+ $output = $function[ 0 ] . '::' . $function[ 1 ] . '(' . $params . ')';
}
}
}
- if (isset($compiler->parent_compiler->template->compiled->required_plugins['nocache'][$modifier][Smarty::PLUGIN_MODIFIER]['file']) ||
- isset($compiler->parent_compiler->template->compiled->required_plugins['compiled'][$modifier][Smarty::PLUGIN_MODIFIER]['file'])
+ if (isset($compiler->parent_compiler->template->compiled->required_plugins[ 'nocache' ][ $modifier ][ Smarty::PLUGIN_MODIFIER ][ 'file' ]) ||
+ isset($compiler->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ $modifier ][ Smarty::PLUGIN_MODIFIER ][ 'file' ])
) {
// was a plugin
- $compiler->known_modifier_type[$modifier] = 4;
+ $compiler->known_modifier_type[ $modifier ] = 4;
} else {
- $compiler->known_modifier_type[$modifier] = $type;
+ $compiler->known_modifier_type[ $modifier ] = $type;
}
break 2;
}
}
}
- if (!isset($compiler->known_modifier_type[$modifier])) {
+ if (!isset($compiler->known_modifier_type[ $modifier ])) {
$compiler->trigger_template_error("unknown modifier \"" . $modifier . "\"", null, true);
}
}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_object_block_function.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_object_block_function.php
new file mode 100644
index 000000000..5c7fb6265
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_object_block_function.php
@@ -0,0 +1,42 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Object Block Function
+ * Compiles code for registered objects as block function
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Object Block Function Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Private_Object_Block_Function extends Smarty_Internal_Compile_Private_Block_Plugin
+{
+ /**
+ * Setup callback and parameter array
+ *
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler
+ * @param array $_attr attributes
+ * @param string $tag
+ * @param string $method
+ *
+ * @return array
+ */
+ public function setup(Smarty_Internal_TemplateCompilerBase $compiler, $_attr, $tag, $method)
+ {
+ $_paramsArray = array();
+ foreach ($_attr as $_key => $_value) {
+ if (is_int($_key)) {
+ $_paramsArray[] = "$_key=>$_value";
+ } else {
+ $_paramsArray[] = "'$_key'=>$_value";
+ }
+ }
+ $callback = array("\$_smarty_tpl->smarty->registered_objects['{$tag}'][0]", "->{$method}");
+ return array($callback, $_paramsArray, "array(\$_block_plugin{$this->nesting}, '{$method}')");
+ }
+}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_object_function.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_object_function.php
index e306e0f6d..7f78a421e 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_object_function.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_object_function.php
@@ -27,11 +27,11 @@ class Smarty_Internal_Compile_Private_Object_Function extends Smarty_Internal_Co
/**
* Compiles code for the execution of function plugin
*
- * @param array $args array with attributes from parser
+ * @param array $args array with attributes from parser
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- * @param string $tag name of function
- * @param string $method name of method to call
+ * @param array $parameter array with compilation parameter
+ * @param string $tag name of function
+ * @param string $method name of method to call
*
* @return string compiled code
*/
@@ -39,19 +39,19 @@ class Smarty_Internal_Compile_Private_Object_Function extends Smarty_Internal_Co
{
// check and get attributes
$_attr = $this->getAttributes($compiler, $args);
- if ($_attr['nocache'] === true) {
- $compiler->tag_nocache = true;
- }
- unset($_attr['nocache']);
+ //Does tag create output
+ $compiler->has_output = isset($_attr[ 'assign' ]) ? false : true;
+
+ unset($_attr[ 'nocache' ]);
$_assign = null;
- if (isset($_attr['assign'])) {
- $_assign = $_attr['assign'];
- unset($_attr['assign']);
+ if (isset($_attr[ 'assign' ])) {
+ $_assign = $_attr[ 'assign' ];
+ unset($_attr[ 'assign' ]);
}
// method or property ?
- if (method_exists($compiler->smarty->registered_objects[$tag][0], $method)) {
+ if (is_callable(array($compiler->smarty->registered_objects[ $tag ][ 0 ], $method))) {
// convert attributes into parameter array string
- if ($compiler->smarty->registered_objects[$tag][2]) {
+ if ($compiler->smarty->registered_objects[ $tag ][ 2 ]) {
$_paramsArray = array();
foreach ($_attr as $_key => $_value) {
if (is_int($_key)) {
@@ -61,24 +61,26 @@ class Smarty_Internal_Compile_Private_Object_Function extends Smarty_Internal_Co
}
}
$_params = 'array(' . implode(",", $_paramsArray) . ')';
- $return = "\$_smarty_tpl->smarty->registered_objects['{$tag}'][0]->{$method}({$_params},\$_smarty_tpl)";
+ $output = "\$_smarty_tpl->smarty->registered_objects['{$tag}'][0]->{$method}({$_params},\$_smarty_tpl)";
} else {
$_params = implode(",", $_attr);
- $return = "\$_smarty_tpl->smarty->registered_objects['{$tag}'][0]->{$method}({$_params})";
+ $output = "\$_smarty_tpl->smarty->registered_objects['{$tag}'][0]->{$method}({$_params})";
}
} else {
// object property
- $return = "\$_smarty_tpl->smarty->registered_objects['{$tag}'][0]->{$method}";
+ $output = "\$_smarty_tpl->smarty->registered_objects['{$tag}'][0]->{$method}";
}
+ if (!empty($parameter[ 'modifierlist' ])) {
+ $output = $compiler->compileTag('private_modifier', array(),
+ array('modifierlist' => $parameter[ 'modifierlist' ], 'value' => $output));
+ }
+ //Does tag create output
+ $compiler->has_output = isset($_attr[ 'assign' ]) ? false : true;
if (empty($_assign)) {
- // This tag does create output
- $compiler->has_output = true;
- $output = "<?php echo {$return};?>\n";
+ return "<?php echo {$output};?>\n";
} else {
- $output = "<?php \$_smarty_tpl->assign({$_assign},{$return});?>\n";
+ return "<?php \$_smarty_tpl->assign({$_assign},{$output});?>\n";
}
-
- return $output;
}
}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_php.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_php.php
index 3ca63a548..8bff8499f 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_php.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_php.php
@@ -40,59 +40,65 @@ class Smarty_Internal_Compile_Private_Php extends Smarty_Internal_CompileBase
// check and get attributes
$_attr = $this->getAttributes($compiler, $args);
$compiler->has_code = false;
- if ($_attr['type'] == 'xml') {
+ if ($_attr[ 'type' ] == 'xml') {
$compiler->tag_nocache = true;
- $save = $compiler->template->compiled->has_nocache_code;
- $output = addcslashes($_attr['code'], "'\\");
- $compiler->parser->current_buffer->append_subtree($compiler->parser, new Smarty_Internal_ParseTree_Tag($compiler->parser, $compiler->processNocacheCode("<?php echo '" .
- $output .
- "';?>", $compiler, true)));
- $compiler->template->compiled->has_nocache_code = $save;
+ $output = addcslashes($_attr[ 'code' ], "'\\");
+ $compiler->parser->current_buffer->append_subtree($compiler->parser,
+ new Smarty_Internal_ParseTree_Tag($compiler->parser,
+ $compiler->processNocacheCode("<?php echo '" .
+ $output .
+ "';?>",
+ true)));
return '';
}
- if ($_attr['type'] != 'tag') {
+ if ($_attr[ 'type' ] != 'tag') {
if ($compiler->php_handling == Smarty::PHP_REMOVE) {
return '';
} elseif ($compiler->php_handling == Smarty::PHP_QUOTE) {
- $output = preg_replace_callback('#(<\?(?:php|=)?)|(<%)|(<script\s+language\s*=\s*["\']?\s*php\s*["\']?\s*>)|(\?>)|(%>)|(<\/script>)#i', array($this,
- 'quote'), $_attr['code']);
- $compiler->parser->current_buffer->append_subtree($compiler->parser, new Smarty_Internal_ParseTree_Text($output));
+ $output =
+ preg_replace_callback('#(<\?(?:php|=)?)|(<%)|(<script\s+language\s*=\s*["\']?\s*php\s*["\']?\s*>)|(\?>)|(%>)|(<\/script>)#i',
+ array($this, 'quote'), $_attr[ 'code' ]);
+ $compiler->parser->current_buffer->append_subtree($compiler->parser,
+ new Smarty_Internal_ParseTree_Text($output));
return '';
- } elseif ($compiler->php_handling == Smarty::PHP_PASSTHRU || $_attr['type'] == 'unmatched') {
+ } elseif ($compiler->php_handling == Smarty::PHP_PASSTHRU || $_attr[ 'type' ] == 'unmatched') {
$compiler->tag_nocache = true;
- $save = $compiler->template->compiled->has_nocache_code;
- $output = addcslashes($_attr['code'], "'\\");
- $compiler->parser->current_buffer->append_subtree($compiler->parser, new Smarty_Internal_ParseTree_Tag($compiler->parser, $compiler->processNocacheCode("<?php echo '" .
- $output .
- "';?>", $compiler, true)));
- $compiler->template->compiled->has_nocache_code = $save;
+ $output = addcslashes($_attr[ 'code' ], "'\\");
+ $compiler->parser->current_buffer->append_subtree($compiler->parser,
+ new Smarty_Internal_ParseTree_Tag($compiler->parser,
+ $compiler->processNocacheCode("<?php echo '" .
+ $output .
+ "';?>",
+ true)));
return '';
} elseif ($compiler->php_handling == Smarty::PHP_ALLOW) {
if (!($compiler->smarty instanceof SmartyBC)) {
- $compiler->trigger_template_error('$smarty->php_handling PHP_ALLOW not allowed. Use SmartyBC to enable it', null, true);
+ $compiler->trigger_template_error('$smarty->php_handling PHP_ALLOW not allowed. Use SmartyBC to enable it',
+ null, true);
}
$compiler->has_code = true;
- return $_attr['code'];
+ return $_attr[ 'code' ];
} else {
$compiler->trigger_template_error('Illegal $smarty->php_handling value', null, true);
}
} else {
$compiler->has_code = true;
if (!($compiler->smarty instanceof SmartyBC)) {
- $compiler->trigger_template_error('{php}{/php} tags not allowed. Use SmartyBC to enable them', null, true);
+ $compiler->trigger_template_error('{php}{/php} tags not allowed. Use SmartyBC to enable them', null,
+ true);
}
$ldel = preg_quote($compiler->smarty->left_delimiter, '#');
$rdel = preg_quote($compiler->smarty->right_delimiter, '#');
- preg_match("#^({$ldel}php\\s*)((.)*?)({$rdel})#", $_attr['code'], $match);
- if (!empty($match[2])) {
- if ('nocache' == trim($match[2])) {
+ preg_match("#^({$ldel}php\\s*)((.)*?)({$rdel})#", $_attr[ 'code' ], $match);
+ if (!empty($match[ 2 ])) {
+ if ('nocache' == trim($match[ 2 ])) {
$compiler->tag_nocache = true;
} else {
$compiler->trigger_template_error("illegal value of option flag \"{$match[2]}\"", null, true);
}
}
- return preg_replace(array("#^{$ldel}\\s*php\\s*(.)*?{$rdel}#",
- "#{$ldel}\\s*/\\s*php\\s*{$rdel}$#"), array('<?php ', '?>'), $_attr['code']);
+ return preg_replace(array("#^{$ldel}\\s*php\\s*(.)*?{$rdel}#", "#{$ldel}\\s*/\\s*php\\s*{$rdel}$#"),
+ array('<?php ', '?>'), $_attr[ 'code' ]);
}
}
@@ -111,7 +117,7 @@ class Smarty_Internal_Compile_Private_Php extends Smarty_Internal_CompileBase
$closeTag = '?>';
if (strpos($lex->value, '<?xml') === 0) {
$lex->is_xml = true;
- $lex->token = Smarty_Internal_Templateparser::TP_NOCACHE;
+ $lex->phpType = 'xml';
return;
} elseif (strpos($lex->value, '<?') === 0) {
$lex->phpType = 'php';
@@ -123,7 +129,7 @@ class Smarty_Internal_Compile_Private_Php extends Smarty_Internal_CompileBase
} elseif (strpos($lex->value, '?>') === 0) {
if ($lex->is_xml) {
$lex->is_xml = false;
- $lex->token = Smarty_Internal_Templateparser::TP_NOCACHE;
+ $lex->phpType = 'xml';
return;
}
$lex->phpType = 'unmatched';
@@ -152,14 +158,15 @@ class Smarty_Internal_Compile_Private_Php extends Smarty_Internal_CompileBase
$start = $lex->counter + strlen($lex->value);
$body = true;
if (preg_match('~' . preg_quote($closeTag, '~') . '~i', $lex->data, $match, PREG_OFFSET_CAPTURE, $start)) {
- $close = $match[0][1];
+ $close = $match[ 0 ][ 1 ];
} else {
$lex->compiler->trigger_template_error("missing closing tag '{$closeTag}'");
}
while ($body) {
- if (preg_match('~([/][*])|([/][/][^\n]*)|(\'[^\'\\\\]*(?:\\.[^\'\\\\]*)*\')|("[^"\\\\]*(?:\\.[^"\\\\]*)*")~', $lex->data, $match, PREG_OFFSET_CAPTURE, $start)) {
- $value = $match[0][0];
- $from = $pos = $match[0][1];
+ if (preg_match('~([/][*])|([/][/][^\n]*)|(\'[^\'\\\\]*(?:\\.[^\'\\\\]*)*\')|("[^"\\\\]*(?:\\.[^"\\\\]*)*")~',
+ $lex->data, $match, PREG_OFFSET_CAPTURE, $start)) {
+ $value = $match[ 0 ][ 0 ];
+ $from = $pos = $match[ 0 ][ 1 ];
if ($pos > $close) {
$body = false;
} else {
@@ -168,15 +175,15 @@ class Smarty_Internal_Compile_Private_Php extends Smarty_Internal_CompileBase
if ($phpCommentStart) {
$phpCommentEnd = preg_match('~([*][/])~', $lex->data, $match, PREG_OFFSET_CAPTURE, $start);
if ($phpCommentEnd) {
- $pos2 = $match[0][1];
- $start = $pos2 + strlen($match[0][0]);
+ $pos2 = $match[ 0 ][ 1 ];
+ $start = $pos2 + strlen($match[ 0 ][ 0 ]);
}
}
while ($close > $pos && $close < $start) {
- if (preg_match('~' . preg_quote($closeTag, '~') .
- '~i', $lex->data, $match, PREG_OFFSET_CAPTURE, $from)) {
- $close = $match[0][1];
- $from = $close + strlen($match[0][0]);
+ if (preg_match('~' . preg_quote($closeTag, '~') . '~i', $lex->data, $match, PREG_OFFSET_CAPTURE,
+ $from)) {
+ $close = $match[ 0 ][ 1 ];
+ $from = $close + strlen($match[ 0 ][ 0 ]);
} else {
$lex->compiler->trigger_template_error("missing closing tag '{$closeTag}'");
}
@@ -204,6 +211,6 @@ class Smarty_Internal_Compile_Private_Php extends Smarty_Internal_CompileBase
*/
private function quote($match)
{
- return htmlspecialchars($match[0], ENT_QUOTES);
+ return htmlspecialchars($match[ 0 ], ENT_QUOTES);
}
}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_print_expression.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_print_expression.php
index c0c089bff..811996bcc 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_print_expression.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_print_expression.php
@@ -46,59 +46,60 @@ class Smarty_Internal_Compile_Private_Print_Expression extends Smarty_Internal_C
{
// check and get attributes
$_attr = $this->getAttributes($compiler, $args);
- // nocache option
- if ($_attr['nocache'] === true) {
- $compiler->tag_nocache = true;
+ $output = $parameter[ 'value' ];
+ // tag modifier
+ if (!empty($parameter[ 'modifierlist' ])) {
+ $output = $compiler->compileTag('private_modifier', array(),
+ array('modifierlist' => $parameter[ 'modifierlist' ],
+ 'value' => $output));
}
- if (isset($_attr['assign'])) {
+ if (isset($_attr[ 'assign' ])) {
// assign output to variable
- $output = "<?php \$_smarty_tpl->assign({$_attr['assign']},{$parameter['value']});?>";
+ return "<?php \$_smarty_tpl->assign({$_attr['assign']},{$output});?>";
} else {
// display value
- $output = $parameter['value'];
- // tag modifier
- if (!empty($parameter['modifierlist'])) {
- $output = $compiler->compileTag('private_modifier', array(), array('modifierlist' => $parameter['modifierlist'],
- 'value' => $output));
- }
- if (!$_attr['nofilter']) {
+ if (!$_attr[ 'nofilter' ]) {
// default modifier
if (!empty($compiler->smarty->default_modifiers)) {
if (empty($compiler->default_modifier_list)) {
$modifierlist = array();
foreach ($compiler->smarty->default_modifiers as $key => $single_default_modifier) {
- preg_match_all('/(\'[^\'\\\\]*(?:\\\\.[^\'\\\\]*)*\'|"[^"\\\\]*(?:\\\\.[^"\\\\]*)*"|:|[^:]+)/', $single_default_modifier, $mod_array);
- for ($i = 0, $count = count($mod_array[0]); $i < $count; $i ++) {
- if ($mod_array[0][$i] != ':') {
- $modifierlist[$key][] = $mod_array[0][$i];
+ preg_match_all('/(\'[^\'\\\\]*(?:\\\\.[^\'\\\\]*)*\'|"[^"\\\\]*(?:\\\\.[^"\\\\]*)*"|:|[^:]+)/',
+ $single_default_modifier, $mod_array);
+ for ($i = 0, $count = count($mod_array[ 0 ]); $i < $count; $i ++) {
+ if ($mod_array[ 0 ][ $i ] != ':') {
+ $modifierlist[ $key ][] = $mod_array[ 0 ][ $i ];
}
}
}
$compiler->default_modifier_list = $modifierlist;
}
- $output = $compiler->compileTag('private_modifier', array(), array('modifierlist' => $compiler->default_modifier_list,
- 'value' => $output));
+ $output = $compiler->compileTag('private_modifier', array(),
+ array('modifierlist' => $compiler->default_modifier_list,
+ 'value' => $output));
}
// autoescape html
if ($compiler->template->smarty->escape_html) {
$output = "htmlspecialchars({$output}, ENT_QUOTES, '" . addslashes(Smarty::$_CHARSET) . "')";
}
// loop over registered filters
- if (!empty($compiler->template->smarty->registered_filters[Smarty::FILTER_VARIABLE])) {
- foreach ($compiler->template->smarty->registered_filters[Smarty::FILTER_VARIABLE] as $key =>
+ if (!empty($compiler->template->smarty->registered_filters[ Smarty::FILTER_VARIABLE ])) {
+ foreach ($compiler->template->smarty->registered_filters[ Smarty::FILTER_VARIABLE ] as $key =>
$function) {
if (!is_array($function)) {
$output = "{$function}({$output},\$_smarty_tpl)";
- } elseif (is_object($function[0])) {
- $output = "\$_smarty_tpl->smarty->registered_filters[Smarty::FILTER_VARIABLE]['{$key}'][0]->{$function[1]}({$output},\$_smarty_tpl)";
+ } elseif (is_object($function[ 0 ])) {
+ $output =
+ "\$_smarty_tpl->smarty->registered_filters[Smarty::FILTER_VARIABLE]['{$key}'][0]->{$function[1]}({$output},\$_smarty_tpl)";
} else {
$output = "{$function[0]}::{$function[1]}({$output},\$_smarty_tpl)";
}
}
}
// auto loaded filters
- if (isset($compiler->smarty->autoload_filters[Smarty::FILTER_VARIABLE])) {
- foreach ((array) $compiler->template->smarty->autoload_filters[Smarty::FILTER_VARIABLE] as $name) {
+ if (isset($compiler->smarty->autoload_filters[ Smarty::FILTER_VARIABLE ])) {
+ foreach ((array) $compiler->template->smarty->autoload_filters[ Smarty::FILTER_VARIABLE ] as $name)
+ {
$result = $this->compile_output_filter($compiler, $name, $output);
if ($result !== false) {
$output = $result;
@@ -110,12 +111,12 @@ class Smarty_Internal_Compile_Private_Print_Expression extends Smarty_Internal_C
}
foreach ($compiler->variable_filters as $filter) {
if (count($filter) == 1 &&
- ($result = $this->compile_output_filter($compiler, $filter[0], $output)) !== false
+ ($result = $this->compile_output_filter($compiler, $filter[ 0 ], $output)) !== false
) {
$output = $result;
} else {
- $output = $compiler->compileTag('private_modifier', array(), array('modifierlist' => array($filter),
- 'value' => $output));
+ $output = $compiler->compileTag('private_modifier', array(),
+ array('modifierlist' => array($filter), 'value' => $output));
}
}
}
@@ -137,20 +138,25 @@ class Smarty_Internal_Compile_Private_Print_Expression extends Smarty_Internal_C
private function compile_output_filter(Smarty_Internal_TemplateCompilerBase $compiler, $name, $output)
{
$plugin_name = "smarty_variablefilter_{$name}";
- $path = $compiler->smarty->loadPlugin($plugin_name, false);
+ $path = $compiler->smarty->loadPlugin($plugin_name);
if ($path) {
+ /**
if ($compiler->template->caching) {
- $compiler->parent_compiler->template->compiled->required_plugins['nocache'][$name][Smarty::FILTER_VARIABLE]['file'] = $path;
- $compiler->parent_compiler->template->compiled->required_plugins['nocache'][$name][Smarty::FILTER_VARIABLE]['function'] = $plugin_name;
+ $compiler->parent_compiler->template->compiled->required_plugins[ 'nocache' ][ $name ][ Smarty::FILTER_VARIABLE ][ 'file' ] =
+ $path;
+ $compiler->parent_compiler->template->compiled->required_plugins[ 'nocache' ][ $name ][ Smarty::FILTER_VARIABLE ][ 'function' ] =
+ $plugin_name;
} else {
- $compiler->parent_compiler->template->compiled->required_plugins['compiled'][$name][Smarty::FILTER_VARIABLE]['file'] = $path;
- $compiler->parent_compiler->template->compiled->required_plugins['compiled'][$name][Smarty::FILTER_VARIABLE]['function'] = $plugin_name;
+ $compiler->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ $name ][ Smarty::FILTER_VARIABLE ][ 'file' ] =
+ $path;
+ $compiler->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ $name ][ Smarty::FILTER_VARIABLE ][ 'function' ] =
+ $plugin_name;
}
+ * */
+ return "{$plugin_name}({$output},\$_smarty_tpl)";
} else {
// not found
return false;
}
-
- return "{$plugin_name}({$output},\$_smarty_tpl)";
}
}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_registered_block.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_registered_block.php
new file mode 100644
index 000000000..987bc96f3
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_registered_block.php
@@ -0,0 +1,72 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Registered Block
+ * Compiles code for the execution of a registered block function
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Registered Block Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Private_Registered_Block extends Smarty_Internal_Compile_Private_Block_Plugin
+{
+ /**
+ * Setup callback, parameter array and nocache mode
+ *
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler
+ * @param array $_attr attributes
+ * @param string $tag
+ * @param null $function
+ *
+ * @return array
+ */
+ public function setup(Smarty_Internal_TemplateCompilerBase $compiler, $_attr, $tag, $function)
+ {
+ if (isset($compiler->smarty->registered_plugins[ Smarty::PLUGIN_BLOCK ][ $tag ])) {
+ $tag_info = $compiler->smarty->registered_plugins[ Smarty::PLUGIN_BLOCK ][ $tag ];
+ $callback = $tag_info[ 0 ];
+ if (is_array($callback)) {
+ if (is_object($callback[ 0 ])) {
+ $callable = "array(\$_block_plugin{$this->nesting}, '{$callback[1]}')";
+ $callback =
+ array("\$_smarty_tpl->smarty->registered_plugins['block']['{$tag}'][0][0]", "->{$callback[1]}");
+ } else {
+ $callable = "array(\$_block_plugin{$this->nesting}, '{$callback[1]}')";
+ $callback =
+ array("\$_smarty_tpl->smarty->registered_plugins['block']['{$tag}'][0][0]", "::{$callback[1]}");
+ }
+ } else {
+ $callable = "\$_block_plugin{$this->nesting}";
+ $callback = array("\$_smarty_tpl->smarty->registered_plugins['block']['{$tag}'][0]", '');
+ }
+ } else {
+ $tag_info = $compiler->default_handler_plugins[ Smarty::PLUGIN_BLOCK ][ $tag ];
+ $callback = $tag_info[ 0 ];
+ if (is_array($callback)) {
+ $callable = "array('{$callback[0]}', '{$callback[1]}')";
+ $callback = "{$callback[1]}::{$callback[1]}";
+ } else {
+ $callable = null;
+ }
+ }
+ $compiler->tag_nocache = !$tag_info[ 1 ] | $compiler->tag_nocache;
+ $_paramsArray = array();
+ foreach ($_attr as $_key => $_value) {
+ if (is_int($_key)) {
+ $_paramsArray[] = "$_key=>$_value";
+ } elseif ($compiler->template->caching && in_array($_key, $tag_info[ 2 ])) {
+ $_value = str_replace("'", "^#^", $_value);
+ $_paramsArray[] = "'$_key'=>^#^.var_export($_value,true).^#^";
+ } else {
+ $_paramsArray[] = "'$_key'=>$_value";
+ }
+ }
+ return array($callback, $_paramsArray, $callable);
+ }
+}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_registered_function.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_registered_function.php
index 6bddc7529..7a4cbb7f7 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_registered_function.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_registered_function.php
@@ -27,36 +27,31 @@ class Smarty_Internal_Compile_Private_Registered_Function extends Smarty_Interna
/**
* Compiles code for the execution of a registered function
*
- * @param array $args array with attributes from parser
+ * @param array $args array with attributes from parser
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- * @param string $tag name of function
+ * @param array $parameter array with compilation parameter
+ * @param string $tag name of function
*
* @return string compiled code
*/
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter, $tag)
{
- // This tag does create output
- $compiler->has_output = true;
// check and get attributes
$_attr = $this->getAttributes($compiler, $args);
- if ($_attr['nocache']) {
- $compiler->tag_nocache = true;
- }
- unset($_attr['nocache']);
- if (isset($compiler->smarty->registered_plugins[Smarty::PLUGIN_FUNCTION][$tag])) {
- $tag_info = $compiler->smarty->registered_plugins[Smarty::PLUGIN_FUNCTION][$tag];
+ unset($_attr[ 'nocache' ]);
+ if (isset($compiler->smarty->registered_plugins[ Smarty::PLUGIN_FUNCTION ][ $tag ])) {
+ $tag_info = $compiler->smarty->registered_plugins[ Smarty::PLUGIN_FUNCTION ][ $tag ];
} else {
- $tag_info = $compiler->default_handler_plugins[Smarty::PLUGIN_FUNCTION][$tag];
+ $tag_info = $compiler->default_handler_plugins[ Smarty::PLUGIN_FUNCTION ][ $tag ];
}
// not cachable?
- $compiler->tag_nocache = $compiler->tag_nocache || !$tag_info[1];
+ $compiler->tag_nocache = $compiler->tag_nocache || !$tag_info[ 1 ];
// convert attributes into parameter array string
$_paramsArray = array();
foreach ($_attr as $_key => $_value) {
if (is_int($_key)) {
$_paramsArray[] = "$_key=>$_value";
- } elseif ($compiler->template->caching && in_array($_key, $tag_info[2])) {
+ } elseif ($compiler->template->caching && in_array($_key, $tag_info[ 2 ])) {
$_value = str_replace("'", "^#^", $_value);
$_paramsArray[] = "'$_key'=>^#^.var_export($_value,true).^#^";
} else {
@@ -64,16 +59,24 @@ class Smarty_Internal_Compile_Private_Registered_Function extends Smarty_Interna
}
}
$_params = 'array(' . implode(",", $_paramsArray) . ')';
- $function = $tag_info[0];
+ $function = $tag_info[ 0 ];
// compile code
if (!is_array($function)) {
- $output = "<?php echo {$function}({$_params},\$_smarty_tpl);?>\n";
- } elseif (is_object($function[0])) {
- $output = "<?php echo \$_smarty_tpl->smarty->registered_plugins[Smarty::PLUGIN_FUNCTION]['{$tag}'][0][0]->{$function[1]}({$_params},\$_smarty_tpl);?>\n";
+ $output = "{$function}({$_params},\$_smarty_tpl)";
+ } elseif (is_object($function[ 0 ])) {
+ $output =
+ "\$_smarty_tpl->smarty->registered_plugins[Smarty::PLUGIN_FUNCTION]['{$tag}'][0][0]->{$function[1]}({$_params},\$_smarty_tpl)";
} else {
- $output = "<?php echo {$function[0]}::{$function[1]}({$_params},\$_smarty_tpl);?>\n";
+ $output = "{$function[0]}::{$function[1]}({$_params},\$_smarty_tpl)";
}
-
+ if (!empty($parameter[ 'modifierlist' ])) {
+ $output = $compiler->compileTag('private_modifier', array(),
+ array('modifierlist' => $parameter[ 'modifierlist' ],
+ 'value' => $output));
+ }
+ //Does tag create output
+ $compiler->has_output = true;
+ $output = "<?php echo {$output};?>\n";
return $output;
}
}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php
index b83e824af..0c6be44f6 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php
@@ -39,11 +39,11 @@ class Smarty_Internal_Compile_Private_Special_Variable extends Smarty_Internal_C
switch ($variable) {
case 'foreach':
case 'section':
- if (!isset($compiler->_tag_objects[ $variable ])) {
+ if (!isset(Smarty_Internal_TemplateCompilerBase::$_tag_objects[ $variable ])) {
$class = 'Smarty_Internal_Compile_' . ucfirst($variable);
- $compiler->_tag_objects[ $variable ] = new $class;
+ Smarty_Internal_TemplateCompilerBase::$_tag_objects[ $variable ] = new $class;
}
- return $compiler->_tag_objects[ $variable ]->compileSpecialVariable(array(), $compiler, $_index);
+ return Smarty_Internal_TemplateCompilerBase::$_tag_objects[ $variable ]->compileSpecialVariable(array(), $compiler, $_index);
case 'capture':
if (class_exists('Smarty_Internal_Compile_Capture')) {
return Smarty_Internal_Compile_Capture::compileSpecialVariable(array(), $compiler, $_index);
@@ -85,7 +85,7 @@ class Smarty_Internal_Compile_Private_Special_Variable extends Smarty_Internal_C
return 'dirname($_smarty_tpl->source->filepath)';
case 'version':
- return "Smarty::SMARTY_VERSION";
+ return "Smarty::SMARTY_VERSION";
case 'const':
if (isset($compiler->smarty->security_policy) &&
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_rdelim.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_rdelim.php
index 22b33eaa2..2e6b43c17 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_rdelim.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_rdelim.php
@@ -20,15 +20,16 @@ class Smarty_Internal_Compile_Rdelim extends Smarty_Internal_CompileBase
* Compiles code for the {rdelim} tag
* This tag does output the right delimiter.
*
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
*
* @return string compiled code
+ * @throws \SmartyCompilerException
*/
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
{
$_attr = $this->getAttributes($compiler, $args);
- if ($_attr['nocache'] === true) {
+ if ($_attr[ 'nocache' ] === true) {
$compiler->trigger_template_error('nocache option not allowed', null, true);
}
// this tag does not return compiled code
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_section.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_section.php
index 40b297a64..c3701fc63 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_section.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_section.php
@@ -38,7 +38,7 @@ class Smarty_Internal_Compile_Section extends Smarty_Internal_Compile_Private_Fo
* @var array
* @see Smarty_Internal_CompileBase
*/
- public $optional_attributes = array('start', 'step', 'max', 'show');
+ public $optional_attributes = array('start', 'step', 'max', 'show', 'properties');
/**
* counter
@@ -59,8 +59,8 @@ class Smarty_Internal_Compile_Section extends Smarty_Internal_Compile_Private_Fo
*
* @var array
*/
- public $nameProperties = array('first', 'last', 'index', 'iteration', 'show', 'total', 'rownum',
- 'index_prev', 'index_next');
+ public $nameProperties = array('first', 'last', 'index', 'iteration', 'show', 'total', 'rownum', 'index_prev',
+ 'index_next', 'loop');
/**
* {section} tag has no item properties
@@ -87,11 +87,11 @@ class Smarty_Internal_Compile_Section extends Smarty_Internal_Compile_Private_Fo
*/
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
{
- $compiler->loopNesting++;
+ $compiler->loopNesting ++;
// check and get attributes
$_attr = $this->getAttributes($compiler, $args);
- $attributes = array('name' => $compiler->getId($_attr['name']));
- unset($_attr['name']);
+ $attributes = array('name' => $compiler->getId($_attr[ 'name' ]));
+ unset($_attr[ 'name' ]);
foreach ($attributes as $a => $v) {
if ($v === false) {
$compiler->trigger_template_error("'{$a}' attribute/variable has illegal value", null, true);
@@ -103,22 +103,32 @@ class Smarty_Internal_Compile_Section extends Smarty_Internal_Compile_Private_Fo
// maybe nocache because of nocache variables
$compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
- $initLocal = array('saved' => "isset(\$_smarty_tpl->tpl_vars['__smarty_section_{$attributes['name']}']) ? \$_smarty_tpl->tpl_vars['__smarty_section_{$attributes['name']}'] : false",);
+ $initLocal =
+ array('saved' => "isset(\$_smarty_tpl->tpl_vars['__smarty_section_{$attributes['name']}']) ? \$_smarty_tpl->tpl_vars['__smarty_section_{$attributes['name']}'] : false",);
$initNamedProperty = array();
$initFor = array();
$incFor = array();
$cmpFor = array();
- $propValue = array('index' => "{$sectionVar}->value['index']", 'show' => 'true', 'step' => 1,
+ $propValue = array('index' => "{$sectionVar}->value['index']", 'show' => 'true', 'step' => 1,
'iteration' => "{$local}iteration",
);
$propType = array('index' => 2, 'iteration' => 2, 'show' => 0, 'step' => 0,);
// search for used tag attributes
$this->scanForProperties($attributes, $compiler);
- if (!empty($this->matchResults['named'])) {
- $namedAttr = $this->matchResults['named'];
+ if (!empty($this->matchResults[ 'named' ])) {
+ $namedAttr = $this->matchResults[ 'named' ];
}
- $namedAttr['index'] = true;
+ if (isset($_attr[ 'properties' ]) && preg_match_all("/['](.*?)[']/", $_attr[ 'properties' ], $match)) {
+ foreach ($match[ 1 ] as $prop) {
+ if (in_array($prop, $this->nameProperties)) {
+ $namedAttr[ $prop ] = true;
+ } else {
+ $compiler->trigger_template_error("Invalid property '{$prop}'", null, true);
+ }
+ }
+ }
+ $namedAttr[ 'index' ] = true;
$output = "<?php\n";
foreach ($_attr as $attr_name => $attr_value) {
switch ($attr_name) {
@@ -130,13 +140,13 @@ class Smarty_Internal_Compile_Section extends Smarty_Internal_Compile_Private_Fo
$v = "(is_array(@\$_loop=$attr_value) ? count(\$_loop) : max(0, (int) \$_loop))";
$t = 1;
}
- if (isset($namedAttr['loop'])) {
- $initNamedProperty['loop'] = "'loop' => {$v}";
+ if (isset($namedAttr[ 'loop' ])) {
+ $initNamedProperty[ 'loop' ] = "'loop' => {$v}";
if ($t == 1) {
$v = "{$sectionVar}->value['loop']";
}
} elseif ($t == 1) {
- $initLocal['loop'] = $v;
+ $initLocal[ 'loop' ] = $v;
$v = "{$local}loop";
}
break;
@@ -156,7 +166,7 @@ class Smarty_Internal_Compile_Section extends Smarty_Internal_Compile_Private_Fo
$t = 0;
break;
}
- $initLocal['step'] = "((int)@$attr_value) == 0 ? 1 : (int)@$attr_value";
+ $initLocal[ 'step' ] = "((int)@$attr_value) == 0 ? 1 : (int)@$attr_value";
$v = "{$local}step";
$t = 2;
break;
@@ -175,166 +185,171 @@ class Smarty_Internal_Compile_Section extends Smarty_Internal_Compile_Private_Fo
if ($t == 3 && $compiler->getId($attr_value)) {
$t = 1;
}
- $propValue[$attr_name] = $v;
- $propType[$attr_name] = $t;
+ $propValue[ $attr_name ] = $v;
+ $propType[ $attr_name ] = $t;
}
- if (isset($namedAttr['step'])) {
- $initNamedProperty['step'] = $propValue['step'];
+ if (isset($namedAttr[ 'step' ])) {
+ $initNamedProperty[ 'step' ] = $propValue[ 'step' ];
}
- if (isset($namedAttr['iteration'])) {
- $propValue['iteration'] = "{$sectionVar}->value['iteration']";
+ if (isset($namedAttr[ 'iteration' ])) {
+ $propValue[ 'iteration' ] = "{$sectionVar}->value['iteration']";
}
- $incFor['iteration'] = "{$propValue['iteration']}++";
- $initFor['iteration'] = "{$propValue['iteration']} = 1";
+ $incFor[ 'iteration' ] = "{$propValue['iteration']}++";
+ $initFor[ 'iteration' ] = "{$propValue['iteration']} = 1";
- if ($propType['step'] == 0) {
- if ($propValue['step'] == 1) {
- $incFor['index'] = "{$sectionVar}->value['index']++";
- } elseif ($propValue['step'] > 1) {
- $incFor['index'] = "{$sectionVar}->value['index'] += {$propValue['step']}";
+ if ($propType[ 'step' ] == 0) {
+ if ($propValue[ 'step' ] == 1) {
+ $incFor[ 'index' ] = "{$sectionVar}->value['index']++";
+ } elseif ($propValue[ 'step' ] > 1) {
+ $incFor[ 'index' ] = "{$sectionVar}->value['index'] += {$propValue['step']}";
} else {
- $incFor['index'] = "{$sectionVar}->value['index'] -= " . - $propValue['step'];
+ $incFor[ 'index' ] = "{$sectionVar}->value['index'] -= " . - $propValue[ 'step' ];
}
} else {
- $incFor['index'] = "{$sectionVar}->value['index'] += {$propValue['step']}";
+ $incFor[ 'index' ] = "{$sectionVar}->value['index'] += {$propValue['step']}";
}
- if (!isset($propValue['max'])) {
- $propValue['max'] = $propValue['loop'];
- $propType['max'] = $propType['loop'];
- } elseif ($propType['max'] != 0) {
- $propValue['max'] = "{$propValue['max']} < 0 ? {$propValue['loop']} : {$propValue['max']}";
- $propType['max'] = 1;
+ if (!isset($propValue[ 'max' ])) {
+ $propValue[ 'max' ] = $propValue[ 'loop' ];
+ $propType[ 'max' ] = $propType[ 'loop' ];
+ } elseif ($propType[ 'max' ] != 0) {
+ $propValue[ 'max' ] = "{$propValue['max']} < 0 ? {$propValue['loop']} : {$propValue['max']}";
+ $propType[ 'max' ] = 1;
} else {
- if ($propValue['max'] < 0) {
- $propValue['max'] = $propValue['loop'];
- $propType['max'] = $propType['loop'];
+ if ($propValue[ 'max' ] < 0) {
+ $propValue[ 'max' ] = $propValue[ 'loop' ];
+ $propType[ 'max' ] = $propType[ 'loop' ];
}
}
- if (!isset($propValue['start'])) {
- $start_code = array(1 => "{$propValue['step']} > 0 ? ", 2 => '0', 3 => ' : ', 4 => $propValue['loop'],
- 5 => ' - 1');
- if ($propType['loop'] == 0) {
- $start_code[5] = '';
- $start_code[4] = $propValue['loop'] - 1;
+ if (!isset($propValue[ 'start' ])) {
+ $start_code =
+ array(1 => "{$propValue['step']} > 0 ? ", 2 => '0', 3 => ' : ', 4 => $propValue[ 'loop' ], 5 => ' - 1');
+ if ($propType[ 'loop' ] == 0) {
+ $start_code[ 5 ] = '';
+ $start_code[ 4 ] = $propValue[ 'loop' ] - 1;
}
- if ($propType['step'] == 0) {
- if ($propValue['step'] > 0) {
+ if ($propType[ 'step' ] == 0) {
+ if ($propValue[ 'step' ] > 0) {
$start_code = array(1 => '0');
- $propType['start'] = 0;
+ $propType[ 'start' ] = 0;
} else {
- $start_code[1] = $start_code[2] = $start_code[3] = '';
- $propType['start'] = $propType['loop'];
+ $start_code[ 1 ] = $start_code[ 2 ] = $start_code[ 3 ] = '';
+ $propType[ 'start' ] = $propType[ 'loop' ];
}
} else {
- $propType['start'] = 1;
+ $propType[ 'start' ] = 1;
}
- $propValue['start'] = join('', $start_code);
+ $propValue[ 'start' ] = join('', $start_code);
} else {
- $start_code = array(1 => "{$propValue['start']} < 0 ? ", 2 => 'max(', 3 => "{$propValue['step']} > 0 ? ",
- 4 => '0', 5 => ' : ', 6 => '-1', 7 => ', ',
- 8 => "{$propValue['start']} + {$propValue['loop']}", 10 => ')', 11 => ' : ',
- 12 => 'min(', 13 => $propValue['start'], 14 => ', ',
- 15 => "{$propValue['step']} > 0 ? ", 16 => $propValue['loop'], 17 => ' : ',
- 18 => $propType['loop'] == 0 ? $propValue['loop'] - 1 : "{$propValue['loop']} - 1",
- 19 => ')');
- if ($propType['step'] == 0) {
- $start_code[3] = $start_code[5] = $start_code[15] = $start_code[17] = '';
- if ($propValue['step'] > 0) {
- $start_code[6] = $start_code[18] = '';
+ $start_code =
+ array(1 => "{$propValue['start']} < 0 ? ", 2 => 'max(', 3 => "{$propValue['step']} > 0 ? ", 4 => '0',
+ 5 => ' : ', 6 => '-1', 7 => ', ', 8 => "{$propValue['start']} + {$propValue['loop']}", 10 => ')',
+ 11 => ' : ', 12 => 'min(', 13 => $propValue[ 'start' ], 14 => ', ',
+ 15 => "{$propValue['step']} > 0 ? ", 16 => $propValue[ 'loop' ], 17 => ' : ',
+ 18 => $propType[ 'loop' ] == 0 ? $propValue[ 'loop' ] - 1 : "{$propValue['loop']} - 1",
+ 19 => ')');
+ if ($propType[ 'step' ] == 0) {
+ $start_code[ 3 ] = $start_code[ 5 ] = $start_code[ 15 ] = $start_code[ 17 ] = '';
+ if ($propValue[ 'step' ] > 0) {
+ $start_code[ 6 ] = $start_code[ 18 ] = '';
} else {
- $start_code[4] = $start_code[16] = '';
+ $start_code[ 4 ] = $start_code[ 16 ] = '';
}
}
- if ($propType['start'] == 0) {
- if ($propType['loop'] == 0) {
- $start_code[8] = $propValue['start'] + $propValue['loop'];
+ if ($propType[ 'start' ] == 0) {
+ if ($propType[ 'loop' ] == 0) {
+ $start_code[ 8 ] = $propValue[ 'start' ] + $propValue[ 'loop' ];
}
- $propType['start'] = $propType['step'] + $propType['loop'];
- $start_code[1] = '';
- if ($propValue['start'] < 0) {
+ $propType[ 'start' ] = $propType[ 'step' ] + $propType[ 'loop' ];
+ $start_code[ 1 ] = '';
+ if ($propValue[ 'start' ] < 0) {
for ($i = 11; $i <= 19; $i ++) {
- $start_code[$i] = '';
+ $start_code[ $i ] = '';
}
- if ($propType['start'] == 0) {
- $start_code = array(max($propValue['step'] > 0 ? 0 : - 1, $propValue['start'] +
- $propValue['loop']));
+ if ($propType[ 'start' ] == 0) {
+ $start_code = array(max($propValue[ 'step' ] > 0 ? 0 : - 1,
+ $propValue[ 'start' ] + $propValue[ 'loop' ]));
}
} else {
for ($i = 1; $i <= 11; $i ++) {
- $start_code[$i] = '';
+ $start_code[ $i ] = '';
}
- if ($propType['start'] == 0) {
- $start_code = array(min($propValue['step'] > 0 ? $propValue['loop'] : $propValue['loop'] -
- 1, $propValue['start']));
+ if ($propType[ 'start' ] == 0) {
+ $start_code =
+ array(min($propValue[ 'step' ] > 0 ? $propValue[ 'loop' ] : $propValue[ 'loop' ] - 1,
+ $propValue[ 'start' ]));
}
}
}
- $propValue['start'] = join('', $start_code);
+ $propValue[ 'start' ] = join('', $start_code);
}
- if ($propType['start'] != 0) {
- $initLocal['start'] = $propValue['start'];
- $propValue['start'] = "{$local}start";
+ if ($propType[ 'start' ] != 0) {
+ $initLocal[ 'start' ] = $propValue[ 'start' ];
+ $propValue[ 'start' ] = "{$local}start";
}
- $initFor['index'] = "{$sectionVar}->value['index'] = {$propValue['start']}";
+ $initFor[ 'index' ] = "{$sectionVar}->value['index'] = {$propValue['start']}";
- if (!isset($_attr['start']) && !isset($_attr['step']) && !isset($_attr['max'])) {
- $propValue['total'] = $propValue['loop'];
- $propType['total'] = $propType['loop'];
+ if (!isset($_attr[ 'start' ]) && !isset($_attr[ 'step' ]) && !isset($_attr[ 'max' ])) {
+ $propValue[ 'total' ] = $propValue[ 'loop' ];
+ $propType[ 'total' ] = $propType[ 'loop' ];
} else {
- $propType['total'] = $propType['start'] + $propType['loop'] + $propType['step'] + $propType['max'];
- if ($propType['total'] == 0) {
- $propValue['total'] = min(ceil(($propValue['step'] > 0 ? $propValue['loop'] -
- $propValue['start'] : (int) $propValue['start'] + 1) /
- abs($propValue['step'])), $propValue['max']);
+ $propType[ 'total' ] =
+ $propType[ 'start' ] + $propType[ 'loop' ] + $propType[ 'step' ] + $propType[ 'max' ];
+ if ($propType[ 'total' ] == 0) {
+ $propValue[ 'total' ] =
+ min(ceil(($propValue[ 'step' ] > 0 ? $propValue[ 'loop' ] - $propValue[ 'start' ] :
+ (int) $propValue[ 'start' ] + 1) / abs($propValue[ 'step' ])), $propValue[ 'max' ]);
} else {
- $total_code = array(1 => 'min(', 2 => 'ceil(', 3 => '(', 4 => "{$propValue['step']} > 0 ? ",
- 5 => $propValue['loop'], 6 => ' - ', 7 => $propValue['start'], 8 => ' : ',
- 9 => $propValue['start'], 10 => '+ 1', 11 => ')', 12 => '/ ', 13 => 'abs(',
- 14 => $propValue['step'], 15 => ')', 16 => ')', 17 => ", {$propValue['max']})",);
- if (!isset($propValue['max'])) {
- $total_code[1] = $total_code[17] = '';
+ $total_code = array(1 => 'min(', 2 => 'ceil(', 3 => '(', 4 => "{$propValue['step']} > 0 ? ",
+ 5 => $propValue[ 'loop' ], 6 => ' - ', 7 => $propValue[ 'start' ], 8 => ' : ',
+ 9 => $propValue[ 'start' ], 10 => '+ 1', 11 => ')', 12 => '/ ', 13 => 'abs(',
+ 14 => $propValue[ 'step' ], 15 => ')', 16 => ')', 17 => ", {$propValue['max']})",);
+ if (!isset($propValue[ 'max' ])) {
+ $total_code[ 1 ] = $total_code[ 17 ] = '';
}
- if ($propType['loop'] + $propType['start'] == 0) {
- $total_code[5] = $propValue['loop'] - $propValue['start'];
- $total_code[6] = $total_code[7] = '';
+ if ($propType[ 'loop' ] + $propType[ 'start' ] == 0) {
+ $total_code[ 5 ] = $propValue[ 'loop' ] - $propValue[ 'start' ];
+ $total_code[ 6 ] = $total_code[ 7 ] = '';
}
- if ($propType['start'] == 0) {
- $total_code[9] = (int) $propValue['start'] + 1;
- $total_code[10] = '';
+ if ($propType[ 'start' ] == 0) {
+ $total_code[ 9 ] = (int) $propValue[ 'start' ] + 1;
+ $total_code[ 10 ] = '';
}
- if ($propType['step'] == 0) {
- $total_code[13] = $total_code[15] = '';
- if ($propValue['step'] == 1 || $propValue['step'] == - 1) {
- $total_code[2] = $total_code[12] = $total_code[14] = $total_code[16] = '';
- } elseif ($propValue['step'] < 0) {
- $total_code[14] = - $propValue['step'];
+ if ($propType[ 'step' ] == 0) {
+ $total_code[ 13 ] = $total_code[ 15 ] = '';
+ if ($propValue[ 'step' ] == 1 || $propValue[ 'step' ] == - 1) {
+ $total_code[ 2 ] = $total_code[ 12 ] = $total_code[ 14 ] = $total_code[ 16 ] = '';
+ } elseif ($propValue[ 'step' ] < 0) {
+ $total_code[ 14 ] = - $propValue[ 'step' ];
}
- $total_code[4] = '';
- if ($propValue['step'] > 0) {
- $total_code[8] = $total_code[9] = $total_code[10] = '';
+ $total_code[ 4 ] = '';
+ if ($propValue[ 'step' ] > 0) {
+ $total_code[ 8 ] = $total_code[ 9 ] = $total_code[ 10 ] = '';
} else {
- $total_code[5] = $total_code[6] = $total_code[7] = $total_code[8] = '';
+ $total_code[ 5 ] = $total_code[ 6 ] = $total_code[ 7 ] = $total_code[ 8 ] = '';
}
}
- $propValue['total'] = join('', $total_code);
+ $propValue[ 'total' ] = join('', $total_code);
}
}
- if (isset($namedAttr['total'])) {
- $initNamedProperty['total'] = "'total' => {$propValue['total']}";
- if ($propType['total'] > 0) {
- $propValue['total'] = "{$sectionVar}->value['total']";
+ if (isset($namedAttr[ 'loop' ])) {
+ $initNamedProperty[ 'loop' ] = "'loop' => {$propValue['total']}";
+ }
+ if (isset($namedAttr[ 'total' ])) {
+ $initNamedProperty[ 'total' ] = "'total' => {$propValue['total']}";
+ if ($propType[ 'total' ] > 0) {
+ $propValue[ 'total' ] = "{$sectionVar}->value['total']";
}
- } elseif ($propType['total'] > 0) {
- $initLocal['total'] = $propValue['total'];
- $propValue['total'] = "{$local}total";
+ } elseif ($propType[ 'total' ] > 0) {
+ $initLocal[ 'total' ] = $propValue[ 'total' ];
+ $propValue[ 'total' ] = "{$local}total";
}
- $cmpFor['iteration'] = "{$propValue['iteration']} <= {$propValue['total']}";
+ $cmpFor[ 'iteration' ] = "{$propValue['iteration']} <= {$propValue['total']}";
foreach ($initLocal as $key => $code) {
$output .= "{$local}{$key} = {$code};\n";
@@ -343,17 +358,17 @@ class Smarty_Internal_Compile_Section extends Smarty_Internal_Compile_Private_Fo
$_vars = 'array(' . join(', ', $initNamedProperty) . ')';
$output .= "{$sectionVar} = new Smarty_Variable({$_vars});\n";
$cond_code = "{$propValue['total']} != 0";
- if ($propType['total'] == 0) {
- if ($propValue['total'] == 0) {
+ if ($propType[ 'total' ] == 0) {
+ if ($propValue[ 'total' ] == 0) {
$cond_code = 'false';
} else {
$cond_code = 'true';
}
}
- if ($propType['show'] > 0) {
+ if ($propType[ 'show' ] > 0) {
$output .= "{$local}show = {$propValue['show']} ? {$cond_code} : false;\n";
$output .= "if ({$local}show) {\n";
- } elseif ($propValue['show'] == 'true') {
+ } elseif ($propValue[ 'show' ] == 'true') {
$output .= "if ({$cond_code}) {\n";
} else {
$output .= "if (false) {\n";
@@ -362,19 +377,19 @@ class Smarty_Internal_Compile_Section extends Smarty_Internal_Compile_Private_Fo
$jcmp = join(', ', $cmpFor);
$jinc = join(', ', $incFor);
$output .= "for ({$jinit}; {$jcmp}; {$jinc}){\n";
- if (isset($namedAttr['rownum'])) {
+ if (isset($namedAttr[ 'rownum' ])) {
$output .= "{$sectionVar}->value['rownum'] = {$propValue['iteration']};\n";
}
- if (isset($namedAttr['index_prev'])) {
+ if (isset($namedAttr[ 'index_prev' ])) {
$output .= "{$sectionVar}->value['index_prev'] = {$propValue['index']} - {$propValue['step']};\n";
}
- if (isset($namedAttr['index_next'])) {
+ if (isset($namedAttr[ 'index_next' ])) {
$output .= "{$sectionVar}->value['index_next'] = {$propValue['index']} + {$propValue['step']};\n";
}
- if (isset($namedAttr['first'])) {
+ if (isset($namedAttr[ 'first' ])) {
$output .= "{$sectionVar}->value['first'] = ({$propValue['iteration']} == 1);\n";
}
- if (isset($namedAttr['last'])) {
+ if (isset($namedAttr[ 'last' ])) {
$output .= "{$sectionVar}->value['last'] = ({$propValue['iteration']} == {$propValue['total']});\n";
}
$output .= "?>";
@@ -429,14 +444,14 @@ class Smarty_Internal_Compile_Sectionclose extends Smarty_Internal_CompileBase
*/
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
{
- $compiler->loopNesting--;
+ $compiler->loopNesting --;
// must endblock be nocache?
if ($compiler->nocache) {
$compiler->tag_nocache = true;
}
- list($openTag, $compiler->nocache, $local, $sectionVar) = $this->closeTag($compiler, array('section',
- 'sectionelse'));
+ list($openTag, $compiler->nocache, $local, $sectionVar) =
+ $this->closeTag($compiler, array('section', 'sectionelse'));
$output = "<?php\n";
if ($openTag == 'sectionelse') {
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_setfilter.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_setfilter.php
index b4932c1e1..1f3ba8d48 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_setfilter.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_setfilter.php
@@ -19,16 +19,16 @@ class Smarty_Internal_Compile_Setfilter extends Smarty_Internal_CompileBase
/**
* Compiles code for setfilter tag
*
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- * @param array $parameter array with compilation parameter
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
*
* @return string compiled code
*/
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
{
$compiler->variable_filter_stack[] = $compiler->variable_filters;
- $compiler->variable_filters = $parameter['modifier_list'];
+ $compiler->variable_filters = $parameter[ 'modifier_list' ];
// this tag does not return compiled code
$compiler->has_code = false;
@@ -48,8 +48,8 @@ class Smarty_Internal_Compile_Setfilterclose extends Smarty_Internal_CompileBase
* Compiles code for the {/setfilter} tag
* This tag does not generate compiled output. It resets variable filter.
*
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
*
* @return string compiled code
*/
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_shared_inheritance.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_shared_inheritance.php
index c7bf1f8fb..c95576596 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_shared_inheritance.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_shared_inheritance.php
@@ -24,11 +24,11 @@ class Smarty_Internal_Compile_Shared_Inheritance extends Smarty_Internal_Compile
*/
public function registerInit(Smarty_Internal_TemplateCompilerBase $compiler, $initChildSequence = false)
{
- if ($initChildSequence || !isset($compiler->_cache['inheritanceInit'])) {
+ if ($initChildSequence || !isset($compiler->_cache[ 'inheritanceInit' ])) {
$compiler->registerPostCompileCallback(array('Smarty_Internal_Compile_Shared_Inheritance', 'postCompile'),
array($initChildSequence), 'inheritanceInit', $initChildSequence);
- $compiler->_cache['inheritanceInit'] = true;
+ $compiler->_cache[ 'inheritanceInit' ] = true;
}
}
@@ -40,7 +40,7 @@ class Smarty_Internal_Compile_Shared_Inheritance extends Smarty_Internal_Compile
*/
static function postCompile(Smarty_Internal_TemplateCompilerBase $compiler, $initChildSequence = false)
{
- $compiler->prefixCompiledCode .= "<?php \$_smarty_tpl->ext->_inheritance->init(\$_smarty_tpl, " .
- var_export($initChildSequence, true) . ");\n?>\n";
+ $compiler->prefixCompiledCode .= "<?php \$_smarty_tpl->_loadInheritance();\n\$_smarty_tpl->inheritance->init(\$_smarty_tpl, " .
+ var_export($initChildSequence, true) . ");\n?>\n";
}
} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_while.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_while.php
new file mode 100644
index 000000000..6025798c5
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_while.php
@@ -0,0 +1,100 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile While
+ * Compiles the {while} tag
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile While Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_While extends Smarty_Internal_CompileBase
+{
+ /**
+ * Compiles code for the {while} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ * @throws \SmartyCompilerException
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
+ {
+ $compiler->loopNesting ++;
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ $this->openTag($compiler, 'while', $compiler->nocache);
+
+ if (!array_key_exists("if condition", $parameter)) {
+ $compiler->trigger_template_error("missing while condition", null, true);
+ }
+
+ // maybe nocache because of nocache variables
+ $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
+ if (is_array($parameter[ 'if condition' ])) {
+ if ($compiler->nocache) {
+ // create nocache var to make it know for further compiling
+ if (is_array($parameter[ 'if condition' ][ 'var' ])) {
+ $var = $parameter[ 'if condition' ][ 'var' ][ 'var' ];
+ } else {
+ $var = $parameter[ 'if condition' ][ 'var' ];
+ }
+ $compiler->setNocacheInVariable($var);
+ }
+ $prefixVar = $compiler->getNewPrefixVariable();
+ $assignCompiler = new Smarty_Internal_Compile_Assign();
+ $assignAttr = array();
+ $assignAttr[][ 'value' ] = "{$prefixVar}";
+ if (is_array($parameter[ 'if condition' ][ 'var' ])) {
+ $assignAttr[][ 'var' ] = $parameter[ 'if condition' ][ 'var' ][ 'var' ];
+ $_output = "<?php while ({$prefixVar} = " . $parameter[ 'if condition' ][ 'value' ] . ") {?>";
+ $_output .= $assignCompiler->compile($assignAttr, $compiler,
+ array('smarty_internal_index' => $parameter[ 'if condition' ][ 'var' ][ 'smarty_internal_index' ]));
+ } else {
+ $assignAttr[][ 'var' ] = $parameter[ 'if condition' ][ 'var' ];
+ $_output = "<?php while ({$prefixVar} = " . $parameter[ 'if condition' ][ 'value' ] . ") {?>";
+ $_output .= $assignCompiler->compile($assignAttr, $compiler, array());
+ }
+
+ return $_output;
+ } else {
+ return "<?php\n while ({$parameter['if condition']}) {?>";
+ }
+ }
+}
+
+/**
+ * Smarty Internal Plugin Compile Whileclose Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Whileclose extends Smarty_Internal_CompileBase
+{
+ /**
+ * Compiles code for the {/while} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ *
+ * @return string compiled code
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
+ {
+ $compiler->loopNesting --;
+ // must endblock be nocache?
+ if ($compiler->nocache) {
+ $compiler->tag_nocache = true;
+ }
+ $compiler->nocache = $this->closeTag($compiler, array('while'));
+ return "<?php }?>\n";
+ }
+}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compilebase.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compilebase.php
index 0803f27a6..08aab6f4e 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compilebase.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compilebase.php
@@ -45,6 +45,20 @@ abstract class Smarty_Internal_CompileBase
public $option_flags = array('nocache');
/**
+ * Mapping array for boolqn option value
+ *
+ * @var array
+ */
+ public $optionMap = array(1 => true, 0 => false, 'true' => true, 'false' => false);
+
+ /**
+ * Mapping array with attributes as key
+ *
+ * @var array
+ */
+ public $mapCache = array();
+
+ /**
* This function checks if the attributes passed are valid
* The attributes passed for the tag to compile are checked against the list of required and
* optional attributes. Required attributes must be present. Optional attributes are check against
@@ -59,71 +73,75 @@ abstract class Smarty_Internal_CompileBase
public function getAttributes($compiler, $attributes)
{
$_indexed_attr = array();
- // loop over attributes
+ if (!isset($this->mapCache[ 'option' ])) {
+ $this->mapCache[ 'option' ] = array_fill_keys($this->option_flags, true);
+ }
foreach ($attributes as $key => $mixed) {
// shorthand ?
if (!is_array($mixed)) {
// option flag ?
- if (in_array(trim($mixed, '\'"'), $this->option_flags)) {
- $_indexed_attr[trim($mixed, '\'"')] = true;
+ if (isset($this->mapCache[ 'option' ][ trim($mixed, '\'"') ])) {
+ $_indexed_attr[ trim($mixed, '\'"') ] = true;
// shorthand attribute ?
- } elseif (isset($this->shorttag_order[$key])) {
- $_indexed_attr[$this->shorttag_order[$key]] = $mixed;
+ } elseif (isset($this->shorttag_order[ $key ])) {
+ $_indexed_attr[ $this->shorttag_order[ $key ] ] = $mixed;
} else {
// too many shorthands
$compiler->trigger_template_error('too many shorthand attributes', null, true);
}
// named attribute
} else {
- $kv = each($mixed);
- // option flag?
- if (in_array($kv['key'], $this->option_flags)) {
- if (is_bool($kv['value'])) {
- $_indexed_attr[$kv['key']] = $kv['value'];
- } elseif (is_string($kv['value']) && in_array(trim($kv['value'], '\'"'), array('true', 'false'))) {
- if (trim($kv['value']) == 'true') {
- $_indexed_attr[$kv['key']] = true;
- } else {
- $_indexed_attr[$kv['key']] = false;
- }
- } elseif (is_numeric($kv['value']) && in_array($kv['value'], array(0, 1))) {
- if ($kv['value'] == 1) {
- $_indexed_attr[$kv['key']] = true;
+ foreach ($mixed as $k => $v) {
+ // option flag?
+ if (isset($this->mapCache[ 'option' ][ $k ])) {
+ if (is_bool($v)) {
+ $_indexed_attr[ $k ] = $v;
} else {
- $_indexed_attr[$kv['key']] = false;
+ if (is_string($v)) {
+ $v = trim($v, '\'" ');
+ }
+ if (isset($this->optionMap[ $v ])) {
+ $_indexed_attr[ $k ] = $this->optionMap[ $v ];
+ } else {
+ $compiler->trigger_template_error("illegal value '" . var_export($v, true) .
+ "' for option flag '{$k}'", null, true);
+ }
}
+ // must be named attribute
} else {
- $compiler->trigger_template_error("illegal value of option flag \"{$kv['key']}\"", null, true);
+ $_indexed_attr[ $k ] = $v;
}
- // must be named attribute
- } else {
- reset($mixed);
- $_indexed_attr[key($mixed)] = $mixed[key($mixed)];
}
}
}
// check if all required attributes present
foreach ($this->required_attributes as $attr) {
- if (!array_key_exists($attr, $_indexed_attr)) {
+ if (!isset($_indexed_attr[ $attr ])) {
$compiler->trigger_template_error("missing \"" . $attr . "\" attribute", null, true);
}
}
// check for not allowed attributes
if ($this->optional_attributes != array('_any')) {
- $tmp_array = array_merge($this->required_attributes, $this->optional_attributes, $this->option_flags);
+ if (!isset($this->mapCache[ 'all' ])) {
+ $this->mapCache[ 'all' ] =
+ array_fill_keys(array_merge($this->required_attributes, $this->optional_attributes,
+ $this->option_flags), true);
+ }
foreach ($_indexed_attr as $key => $dummy) {
- if (!in_array($key, $tmp_array) && $key !== 0) {
+ if (!isset($this->mapCache[ 'all' ][ $key ]) && $key !== 0) {
$compiler->trigger_template_error("unexpected \"" . $key . "\" attribute", null, true);
}
}
}
// default 'false' for all option flags not set
foreach ($this->option_flags as $flag) {
- if (!isset($_indexed_attr[$flag])) {
- $_indexed_attr[$flag] = false;
+ if (!isset($_indexed_attr[ $flag ])) {
+ $_indexed_attr[ $flag ] = false;
}
}
-
+ if (isset($_indexed_attr[ 'nocache' ]) && $_indexed_attr[ 'nocache' ]) {
+ $compiler->tag_nocache = true;
+ }
return $_indexed_attr;
}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_config_file_compiler.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_config_file_compiler.php
index 56d3b0665..b1ef958cd 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_config_file_compiler.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_config_file_compiler.php
@@ -87,8 +87,8 @@ class Smarty_Internal_Config_File_Compiler
$this->lexer_class = $lexer_class;
$this->parser_class = $parser_class;
$this->smarty = $smarty;
- $this->config_data['sections'] = array();
- $this->config_data['vars'] = array();
+ $this->config_data[ 'sections' ] = array();
+ $this->config_data[ 'vars' ] = array();
}
/**
@@ -101,18 +101,21 @@ class Smarty_Internal_Config_File_Compiler
public function compileTemplate(Smarty_Internal_Template $template)
{
$this->template = $template;
- $this->template->compiled->file_dependency[$this->template->source->uid] = array($this->template->source->filepath,
- $this->template->source->getTimeStamp(),
- $this->template->source->type);
+ $this->template->compiled->file_dependency[ $this->template->source->uid ] =
+ array($this->template->source->filepath, $this->template->source->getTimeStamp(),
+ $this->template->source->type);
if ($this->smarty->debugging) {
+ if (!isset( $this->smarty->_debug)) {
+ $this->smarty->_debug = new Smarty_Internal_Debug();
+ }
$this->smarty->_debug->start_compile($this->template);
}
// init the lexer/parser to compile the config file
- /* @var Smarty_Internal_ConfigFileLexer $lex */
- $lex = new $this->lexer_class(str_replace(array("\r\n", "\r"), "\n", $template->source->getContent()) .
- "\n", $this);
- /* @var Smarty_Internal_ConfigFileParser $parser */
- $parser = new $this->parser_class($lex, $this);
+ /* @var Smarty_Internal_ConfigFileLexer $this->lex */
+ $this->lex = new $this->lexer_class(str_replace(array("\r\n", "\r"), "\n", $template->source->getContent()) . "\n",
+ $this);
+ /* @var Smarty_Internal_ConfigFileParser $this->parser */
+ $this->parser = new $this->parser_class($this->lex, $this);
if (function_exists('mb_internal_encoding') && ((int) ini_get('mbstring.func_overload')) & 2) {
$mbEncoding = mb_internal_encoding();
@@ -122,17 +125,17 @@ class Smarty_Internal_Config_File_Compiler
}
if ($this->smarty->_parserdebug) {
- $parser->PrintTrace();
+ $this->parser->PrintTrace();
}
// get tokens from lexer and parse them
- while ($lex->yylex()) {
+ while ($this->lex->yylex()) {
if ($this->smarty->_parserdebug) {
- echo "<br>Parsing {$parser->yyTokenName[$lex->token]} Token {$lex->value} Line {$lex->line} \n";
+ echo "<br>Parsing {$this->parser->yyTokenName[$this->lex->token]} Token {$this->lex->value} Line {$this->lex->line} \n";
}
- $parser->doParse($lex->token, $lex->value);
+ $this->parser->doParse($this->lex->token, $this->lex->value);
}
// finish parsing process
- $parser->doParse(0, 0);
+ $this->parser->doParse(0, 0);
if ($mbEncoding) {
mb_internal_encoding($mbEncoding);
@@ -141,12 +144,13 @@ 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 " .
- strftime("%Y-%m-%d %H:%M:%S") . "\n";
+ $template_header =
+ "<?php /* Smarty version " . Smarty::SMARTY_VERSION . ", created on " . strftime("%Y-%m-%d %H:%M:%S") .
+ "\n";
$template_header .= " compiled from \"" . $this->template->source->filepath . "\" */ ?>\n";
$code = '<?php $_smarty_tpl->smarty->ext->configLoad->_loadConfigVars($_smarty_tpl, ' .
- var_export($this->config_data, true) . '); ?>';
+ var_export($this->config_data, true) . '); ?>';
return $template_header . $this->template->smarty->ext->_codeFrame->create($this->template, $code);
}
@@ -162,28 +166,27 @@ class Smarty_Internal_Config_File_Compiler
*/
public function trigger_config_file_error($args = null)
{
- $this->lex = Smarty_Internal_Configfilelexer::instance();
- $this->parser = Smarty_Internal_Configfileparser::instance();
// get config source line which has error
$line = $this->lex->line;
if (isset($args)) {
// $line--;
}
$match = preg_split("/\n/", $this->lex->data);
- $error_text = "Syntax error in config file '{$this->template->source->filepath}' on line {$line} '{$match[$line - 1]}' ";
+ $error_text =
+ "Syntax error in config file '{$this->template->source->filepath}' on line {$line} '{$match[$line - 1]}' ";
if (isset($args)) {
// individual error message
$error_text .= $args;
} else {
// expected token from parser
foreach ($this->parser->yy_get_expected_tokens($this->parser->yymajor) as $token) {
- $exp_token = $this->parser->yyTokenName[$token];
- if (isset($this->lex->smarty_token_names[$exp_token])) {
+ $exp_token = $this->parser->yyTokenName[ $token ];
+ if (isset($this->lex->smarty_token_names[ $exp_token ])) {
// token type from lexer
- $expect[] = '"' . $this->lex->smarty_token_names[$exp_token] . '"';
+ $expect[] = '"' . $this->lex->smarty_token_names[ $exp_token ] . '"';
} else {
// otherwise internal token name
- $expect[] = $this->parser->yyTokenName[$token];
+ $expect[] = $this->parser->yyTokenName[ $token ];
}
}
// output parser error message
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_configfilelexer.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_configfilelexer.php
index e62728c2c..7869ef384 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_configfilelexer.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_configfilelexer.php
@@ -29,6 +29,13 @@ class Smarty_Internal_Configfilelexer
public $data;
/**
+ * Source length
+ *
+ * @var int
+ */
+ public $dataLength = null;
+
+ /**
* byte counter
*
* @var int
@@ -109,7 +116,7 @@ class Smarty_Internal_Configfilelexer
/**
* storage for assembled token patterns
*
- * @var sring
+ * @var string
*/
private $yy_global_pattern1 = null;
@@ -139,12 +146,11 @@ class Smarty_Internal_Configfilelexer
*/
function __construct($data, Smarty_Internal_Config_File_Compiler $compiler)
{
- // set instance object
- self::instance($this);
$this->data = $data . "\n"; //now all lines are \n-terminated
+ $this->dataLength = strlen($data);
$this->counter = 0;
if (preg_match('/^\xEF\xBB\xBF/', $this->data, $match)) {
- $this->counter += strlen($match[0]);
+ $this->counter += strlen($match[ 0 ]);
}
$this->line = 1;
$this->compiler = $compiler;
@@ -152,15 +158,6 @@ class Smarty_Internal_Configfilelexer
$this->configBooleanize = $this->smarty->config_booleanize;
}
- public static function &instance($new_instance = null)
- {
- static $instance = null;
- if (isset($new_instance) && is_object($new_instance)) {
- $instance = $new_instance;
- }
- return $instance;
- }
-
public function PrintTrace()
{
$this->yyTraceFILE = fopen('php://output', 'w');
@@ -179,23 +176,31 @@ class Smarty_Internal_Configfilelexer
public function yypushstate($state)
{
if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%sState push %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
+ fprintf($this->yyTraceFILE, "%sState push %s\n", $this->yyTracePrompt,
+ isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] :
+ $this->_yy_state);
}
array_push($this->_yy_stack, $this->_yy_state);
$this->_yy_state = $state;
if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%snew State %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
+ fprintf($this->yyTraceFILE, "%snew State %s\n", $this->yyTracePrompt,
+ isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] :
+ $this->_yy_state);
}
}
public function yypopstate()
{
if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%sState pop %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
+ fprintf($this->yyTraceFILE, "%sState pop %s\n", $this->yyTracePrompt,
+ isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] :
+ $this->_yy_state);
}
$this->_yy_state = array_pop($this->_yy_stack);
if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%snew State %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
+ fprintf($this->yyTraceFILE, "%snew State %s\n", $this->yyTracePrompt,
+ isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] :
+ $this->_yy_state);
}
}
@@ -203,29 +208,35 @@ class Smarty_Internal_Configfilelexer
{
$this->_yy_state = $state;
if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%sState set %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
+ fprintf($this->yyTraceFILE, "%sState set %s\n", $this->yyTracePrompt,
+ isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] :
+ $this->_yy_state);
}
}
public function yylex1()
{
if (!isset($this->yy_global_pattern1)) {
- $this->yy_global_pattern1 = "/\G(#|;)|\G(\\[)|\G(\\])|\G(=)|\G([ \t\r]+)|\G(\n)|\G([0-9]*[a-zA-Z_]\\w*)|\G([\S\s])/isS";
+ $this->yy_global_pattern1 =
+ "/\G(#|;)|\G(\\[)|\G(\\])|\G(=)|\G([ \t\r]+)|\G(\n)|\G([0-9]*[a-zA-Z_]\\w*)|\G([\S\s])/isS";
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
}
- if ($this->counter >= strlen($this->data)) {
+ if ($this->counter >= $this->dataLength) {
return false; // end of input
}
do {
if (preg_match($this->yy_global_pattern1, $this->data, $yymatches, null, $this->counter)) {
- $yysubmatches = $yymatches;
- if (strlen($yysubmatches[0]) < 200) {
- $yymatches = preg_grep("/(.|\s)+/", $yysubmatches);
+ if (!isset($yymatches[ 0 ][ 1 ])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
} else {
- $yymatches = array_filter($yymatches, 'strlen');
+ $yymatches = array_filter($yymatches);
}
if (empty($yymatches)) {
- throw new Exception('Error: lexing failed because a rule matched' . ' an empty string. Input "' . substr($this->data, $this->counter, 5) . '... state START');
+ throw new Exception('Error: lexing failed because a rule matched' . ' an empty string. Input "' .
+ substr($this->data, $this->counter, 5) . '... state START');
}
next($yymatches); // skip global match
$this->token = key($yymatches); // token number
@@ -243,17 +254,18 @@ class Smarty_Internal_Configfilelexer
} elseif ($r === false) {
$this->counter += strlen($this->value);
$this->line += substr_count($this->value, "\n");
- if ($this->counter >= strlen($this->data)) {
+ if ($this->counter >= $this->dataLength) {
return false; // end of input
}
// skip this token
continue;
}
} else {
- throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[$this->counter]);
+ throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[ $this->counter ]);
}
break;
- } while (true);
+ }
+ while (true);
} // end function
const START = 1;
@@ -312,22 +324,26 @@ class Smarty_Internal_Configfilelexer
public function yylex2()
{
if (!isset($this->yy_global_pattern2)) {
- $this->yy_global_pattern2 = "/\G([ \t\r]+)|\G(\\d+\\.\\d+(?=[ \t\r]*[\n#;]))|\G(\\d+(?=[ \t\r]*[\n#;]))|\G(\"\"\")|\G('[^'\\\\]*(?:\\\\.[^'\\\\]*)*'(?=[ \t\r]*[\n#;]))|\G(\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\"(?=[ \t\r]*[\n#;]))|\G([a-zA-Z]+(?=[ \t\r]*[\n#;]))|\G([^\n]+?(?=[ \t\r]*\n))|\G(\n)/isS";
+ $this->yy_global_pattern2 =
+ "/\G([ \t\r]+)|\G(\\d+\\.\\d+(?=[ \t\r]*[\n#;]))|\G(\\d+(?=[ \t\r]*[\n#;]))|\G(\"\"\")|\G('[^'\\\\]*(?:\\\\.[^'\\\\]*)*'(?=[ \t\r]*[\n#;]))|\G(\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\"(?=[ \t\r]*[\n#;]))|\G([a-zA-Z]+(?=[ \t\r]*[\n#;]))|\G([^\n]+?(?=[ \t\r]*\n))|\G(\n)/isS";
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
}
- if ($this->counter >= strlen($this->data)) {
+ if ($this->counter >= $this->dataLength) {
return false; // end of input
}
do {
if (preg_match($this->yy_global_pattern2, $this->data, $yymatches, null, $this->counter)) {
- $yysubmatches = $yymatches;
- if (strlen($yysubmatches[0]) < 200) {
- $yymatches = preg_grep("/(.|\s)+/", $yysubmatches);
+ if (!isset($yymatches[ 0 ][ 1 ])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
} else {
- $yymatches = array_filter($yymatches, 'strlen');
+ $yymatches = array_filter($yymatches);
}
if (empty($yymatches)) {
- throw new Exception('Error: lexing failed because a rule matched' . ' an empty string. Input "' . substr($this->data, $this->counter, 5) . '... state VALUE');
+ throw new Exception('Error: lexing failed because a rule matched' . ' an empty string. Input "' .
+ substr($this->data, $this->counter, 5) . '... state VALUE');
}
next($yymatches); // skip global match
$this->token = key($yymatches); // token number
@@ -345,17 +361,18 @@ class Smarty_Internal_Configfilelexer
} elseif ($r === false) {
$this->counter += strlen($this->value);
$this->line += substr_count($this->value, "\n");
- if ($this->counter >= strlen($this->data)) {
+ if ($this->counter >= $this->dataLength) {
return false; // end of input
}
// skip this token
continue;
}
} else {
- throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[$this->counter]);
+ throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[ $this->counter ]);
}
break;
- } while (true);
+ }
+ while (true);
} // end function
const VALUE = 2;
@@ -404,8 +421,8 @@ class Smarty_Internal_Configfilelexer
function yy_r2_7()
{
- if (!$this->configBooleanize || !in_array(strtolower($this->value), Array("true", "false", "on", "off", "yes",
- "no"))
+ if (!$this->configBooleanize ||
+ !in_array(strtolower($this->value), Array("true", "false", "on", "off", "yes", "no"))
) {
$this->yypopstate();
$this->yypushstate(self::NAKED_STRING_VALUE);
@@ -436,20 +453,23 @@ class Smarty_Internal_Configfilelexer
if (!isset($this->yy_global_pattern3)) {
$this->yy_global_pattern3 = "/\G([^\n]+?(?=[ \t\r]*\n))/isS";
}
- if ($this->counter >= strlen($this->data)) {
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
return false; // end of input
}
do {
if (preg_match($this->yy_global_pattern3, $this->data, $yymatches, null, $this->counter)) {
- $yysubmatches = $yymatches;
- if (strlen($yysubmatches[0]) < 200) {
- $yymatches = preg_grep("/(.|\s)+/", $yysubmatches);
+ if (!isset($yymatches[ 0 ][ 1 ])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
} else {
- $yymatches = array_filter($yymatches, 'strlen');
+ $yymatches = array_filter($yymatches);
}
if (empty($yymatches)) {
- throw new Exception('Error: lexing failed because a rule matched' . ' an empty string. Input "' . substr($this->data, $this->counter, 5) . '... state NAKED_STRING_VALUE');
+ throw new Exception('Error: lexing failed because a rule matched' . ' an empty string. Input "' .
+ substr($this->data, $this->counter, 5) . '... state NAKED_STRING_VALUE');
}
next($yymatches); // skip global match
$this->token = key($yymatches); // token number
@@ -467,17 +487,18 @@ class Smarty_Internal_Configfilelexer
} elseif ($r === false) {
$this->counter += strlen($this->value);
$this->line += substr_count($this->value, "\n");
- if ($this->counter >= strlen($this->data)) {
+ if ($this->counter >= $this->dataLength) {
return false; // end of input
}
// skip this token
continue;
}
} else {
- throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[$this->counter]);
+ throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[ $this->counter ]);
}
break;
- } while (true);
+ }
+ while (true);
} // end function
const NAKED_STRING_VALUE = 3;
@@ -494,20 +515,23 @@ class Smarty_Internal_Configfilelexer
if (!isset($this->yy_global_pattern4)) {
$this->yy_global_pattern4 = "/\G([ \t\r]+)|\G([^\n]+?(?=[ \t\r]*\n))|\G(\n)/isS";
}
- if ($this->counter >= strlen($this->data)) {
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
return false; // end of input
}
do {
if (preg_match($this->yy_global_pattern4, $this->data, $yymatches, null, $this->counter)) {
- $yysubmatches = $yymatches;
- if (strlen($yysubmatches[0]) < 200) {
- $yymatches = preg_grep("/(.|\s)+/", $yysubmatches);
+ if (!isset($yymatches[ 0 ][ 1 ])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
} else {
- $yymatches = array_filter($yymatches, 'strlen');
+ $yymatches = array_filter($yymatches);
}
if (empty($yymatches)) {
- throw new Exception('Error: lexing failed because a rule matched' . ' an empty string. Input "' . substr($this->data, $this->counter, 5) . '... state COMMENT');
+ throw new Exception('Error: lexing failed because a rule matched' . ' an empty string. Input "' .
+ substr($this->data, $this->counter, 5) . '... state COMMENT');
}
next($yymatches); // skip global match
$this->token = key($yymatches); // token number
@@ -525,17 +549,18 @@ class Smarty_Internal_Configfilelexer
} elseif ($r === false) {
$this->counter += strlen($this->value);
$this->line += substr_count($this->value, "\n");
- if ($this->counter >= strlen($this->data)) {
+ if ($this->counter >= $this->dataLength) {
return false; // end of input
}
// skip this token
continue;
}
} else {
- throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[$this->counter]);
+ throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[ $this->counter ]);
}
break;
- } while (true);
+ }
+ while (true);
} // end function
const COMMENT = 4;
@@ -564,20 +589,23 @@ class Smarty_Internal_Configfilelexer
if (!isset($this->yy_global_pattern5)) {
$this->yy_global_pattern5 = "/\G(\\.)|\G(.*?(?=[\.=[\]\r\n]))/isS";
}
- if ($this->counter >= strlen($this->data)) {
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
return false; // end of input
}
do {
if (preg_match($this->yy_global_pattern5, $this->data, $yymatches, null, $this->counter)) {
- $yysubmatches = $yymatches;
- if (strlen($yysubmatches[0]) < 200) {
- $yymatches = preg_grep("/(.|\s)+/", $yysubmatches);
+ if (!isset($yymatches[ 0 ][ 1 ])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
} else {
- $yymatches = array_filter($yymatches, 'strlen');
+ $yymatches = array_filter($yymatches);
}
if (empty($yymatches)) {
- throw new Exception('Error: lexing failed because a rule matched' . ' an empty string. Input "' . substr($this->data, $this->counter, 5) . '... state SECTION');
+ throw new Exception('Error: lexing failed because a rule matched' . ' an empty string. Input "' .
+ substr($this->data, $this->counter, 5) . '... state SECTION');
}
next($yymatches); // skip global match
$this->token = key($yymatches); // token number
@@ -595,17 +623,18 @@ class Smarty_Internal_Configfilelexer
} elseif ($r === false) {
$this->counter += strlen($this->value);
$this->line += substr_count($this->value, "\n");
- if ($this->counter >= strlen($this->data)) {
+ if ($this->counter >= $this->dataLength) {
return false; // end of input
}
// skip this token
continue;
}
} else {
- throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[$this->counter]);
+ throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[ $this->counter ]);
}
break;
- } while (true);
+ }
+ while (true);
} // end function
const SECTION = 5;
@@ -628,20 +657,23 @@ class Smarty_Internal_Configfilelexer
if (!isset($this->yy_global_pattern6)) {
$this->yy_global_pattern6 = "/\G(\"\"\"(?=[ \t\r]*[\n#;]))|\G([\S\s])/isS";
}
- if ($this->counter >= strlen($this->data)) {
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
return false; // end of input
}
do {
if (preg_match($this->yy_global_pattern6, $this->data, $yymatches, null, $this->counter)) {
- $yysubmatches = $yymatches;
- if (strlen($yysubmatches[0]) < 200) {
- $yymatches = preg_grep("/(.|\s)+/", $yysubmatches);
+ if (!isset($yymatches[ 0 ][ 1 ])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
} else {
- $yymatches = array_filter($yymatches, 'strlen');
+ $yymatches = array_filter($yymatches);
}
if (empty($yymatches)) {
- throw new Exception('Error: lexing failed because a rule matched' . ' an empty string. Input "' . substr($this->data, $this->counter, 5) . '... state TRIPPLE');
+ throw new Exception('Error: lexing failed because a rule matched' . ' an empty string. Input "' .
+ substr($this->data, $this->counter, 5) . '... state TRIPPLE');
}
next($yymatches); // skip global match
$this->token = key($yymatches); // token number
@@ -659,17 +691,18 @@ class Smarty_Internal_Configfilelexer
} elseif ($r === false) {
$this->counter += strlen($this->value);
$this->line += substr_count($this->value, "\n");
- if ($this->counter >= strlen($this->data)) {
+ if ($this->counter >= $this->dataLength) {
return false; // end of input
}
// skip this token
continue;
}
} else {
- throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[$this->counter]);
+ throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[ $this->counter ]);
}
break;
- } while (true);
+ }
+ while (true);
} // end function
const TRIPPLE = 6;
@@ -687,8 +720,8 @@ class Smarty_Internal_Configfilelexer
$to = strlen($this->data);
preg_match("/\"\"\"[ \t\r]*[\n#;]/", $this->data, $match, PREG_OFFSET_CAPTURE, $this->counter);
- if (isset($match[0][1])) {
- $to = $match[0][1];
+ if (isset($match[ 0 ][ 1 ])) {
+ $to = $match[ 0 ][ 1 ];
} else {
$this->compiler->trigger_template_error("missing or misspelled literal closing tag");
}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_configfileparser.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_configfileparser.php
index 69aaf990f..b7551a2b5 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_configfileparser.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_configfileparser.php
@@ -28,18 +28,18 @@ class TPC_yyToken implements ArrayAccess
public function offsetExists($offset)
{
- return isset($this->metadata[$offset]);
+ return isset($this->metadata[ $offset ]);
}
public function offsetGet($offset)
{
- return $this->metadata[$offset];
+ return $this->metadata[ $offset ];
}
public function offsetSet($offset, $value)
{
if ($offset === null) {
- if (isset($value[0])) {
+ if (isset($value[ 0 ])) {
$x = ($value instanceof TPC_yyToken) ? $value->metadata : $value;
$this->metadata = array_merge($this->metadata, $x);
@@ -52,16 +52,16 @@ class TPC_yyToken implements ArrayAccess
}
if ($value instanceof TPC_yyToken) {
if ($value->metadata) {
- $this->metadata[$offset] = $value->metadata;
+ $this->metadata[ $offset ] = $value->metadata;
}
} elseif ($value) {
- $this->metadata[$offset] = $value;
+ $this->metadata[ $offset ] = $value;
}
}
public function offsetUnset($offset)
{
- unset($this->metadata[$offset]);
+ unset($this->metadata[ $offset ]);
}
}
@@ -168,8 +168,6 @@ class Smarty_Internal_Configfileparser
*/
function __construct(Smarty_Internal_Configfilelexer $lex, Smarty_Internal_Config_File_Compiler $compiler)
{
- // set instance object
- self::instance($this);
$this->lex = $lex;
$this->smarty = $compiler->smarty;
$this->compiler = $compiler;
@@ -178,20 +176,6 @@ class Smarty_Internal_Configfileparser
}
/**
- * @param null $new_instance
- *
- * @return null
- */
- public static function &instance($new_instance = null)
- {
- static $instance = null;
- if (isset($new_instance) && is_object($new_instance)) {
- $instance = $new_instance;
- }
- return $instance;
- }
-
- /**
* parse optional boolean keywords
*
* @param string $str
@@ -226,9 +210,9 @@ class Smarty_Internal_Configfileparser
$str = "";
foreach ($ss as $s) {
- if (strlen($s) === 2 && $s[0] === '\\') {
- if (isset(self::$escapes_single[$s[1]])) {
- $s = self::$escapes_single[$s[1]];
+ if (strlen($s) === 2 && $s[ 0 ] === '\\') {
+ if (isset(self::$escapes_single[ $s[ 1 ] ])) {
+ $s = self::$escapes_single[ $s[ 1 ] ];
}
}
$str .= $s;
@@ -269,14 +253,14 @@ class Smarty_Internal_Configfileparser
*/
private function set_var(Array $var, Array &$target_array)
{
- $key = $var["key"];
- $value = $var["value"];
+ $key = $var[ "key" ];
+ $value = $var[ "value" ];
- if ($this->configOverwrite || !isset($target_array['vars'][$key])) {
- $target_array['vars'][$key] = $value;
+ if ($this->configOverwrite || !isset($target_array[ 'vars' ][ $key ])) {
+ $target_array[ 'vars' ][ $key ] = $value;
} else {
- settype($target_array['vars'][$key], 'array');
- $target_array['vars'][$key][] = $value;
+ settype($target_array[ 'vars' ][ $key ], 'array');
+ $target_array[ 'vars' ][ $key ][] = $value;
}
}
@@ -287,8 +271,8 @@ class Smarty_Internal_Configfileparser
*/
private function add_global_vars(Array $vars)
{
- if (!isset($this->compiler->config_data['vars'])) {
- $this->compiler->config_data['vars'] = Array();
+ if (!isset($this->compiler->config_data[ 'vars' ])) {
+ $this->compiler->config_data[ 'vars' ] = Array();
}
foreach ($vars as $var) {
$this->set_var($var, $this->compiler->config_data);
@@ -303,11 +287,11 @@ class Smarty_Internal_Configfileparser
*/
private function add_section_vars($section_name, Array $vars)
{
- if (!isset($this->compiler->config_data['sections'][$section_name]['vars'])) {
- $this->compiler->config_data['sections'][$section_name]['vars'] = Array();
+ if (!isset($this->compiler->config_data[ 'sections' ][ $section_name ][ 'vars' ])) {
+ $this->compiler->config_data[ 'sections' ][ $section_name ][ 'vars' ] = Array();
}
foreach ($vars as $var) {
- $this->set_var($var, $this->compiler->config_data['sections'][$section_name]);
+ $this->set_var($var, $this->compiler->config_data[ 'sections' ][ $section_name ]);
}
}
@@ -356,17 +340,17 @@ class Smarty_Internal_Configfileparser
const YY_SZ_ACTTAB = 38;
static public $yy_action = array(29, 30, 34, 33, 24, 13, 19, 25, 35, 21, 59, 8, 3, 1, 20, 12, 14, 31, 20, 12, 15,
- 17, 23, 18, 27, 26, 4, 5, 6, 32, 2, 11, 28, 22, 16, 9, 7, 10,);
+ 17, 23, 18, 27, 26, 4, 5, 6, 32, 2, 11, 28, 22, 16, 9, 7, 10,);
static public $yy_lookahead = array(7, 8, 9, 10, 11, 12, 5, 27, 15, 16, 20, 21, 23, 23, 17, 18, 13, 14, 17, 18, 15,
- 2, 17, 4, 25, 26, 6, 3, 3, 14, 23, 1, 24, 17, 2, 25, 22, 25,);
+ 2, 17, 4, 25, 26, 6, 3, 3, 14, 23, 1, 24, 17, 2, 25, 22, 25,);
const YY_SHIFT_USE_DFLT = - 8;
const YY_SHIFT_MAX = 19;
static public $yy_shift_ofst = array(- 8, 1, 1, 1, - 7, - 3, - 3, 30, - 8, - 8, - 8, 19, 5, 3, 15, 16, 24, 25, 32,
- 20,);
+ 20,);
const YY_REDUCE_USE_DFLT = - 21;
@@ -375,13 +359,15 @@ class Smarty_Internal_Configfileparser
static public $yy_reduce_ofst = array(- 10, - 1, - 1, - 1, - 20, 10, 12, 8, 14, 7, - 11,);
static public $yyExpectedTokens = array(array(), array(5, 17, 18,), array(5, 17, 18,), array(5, 17, 18,),
- array(7, 8, 9, 10, 11, 12, 15, 16,), array(17, 18,), array(17, 18,), array(1,), array(), array(), array(),
- array(2, 4,), array(15, 17,), array(13, 14,), array(14,), array(17,), array(3,), array(3,), array(2,),
- array(6,), array(), array(), array(), array(), array(), array(), array(), array(), array(), array(), array(),
- array(), array(), array(), array(), array(),);
+ array(7, 8, 9, 10, 11, 12, 15, 16,), array(17, 18,), array(17, 18,),
+ array(1,), array(), array(), array(), array(2, 4,), array(15, 17,),
+ array(13, 14,), array(14,), array(17,), array(3,), array(3,), array(2,),
+ array(6,), array(), array(), array(), array(), array(), array(), array(),
+ array(), array(), array(), array(), array(), array(), array(), array(),
+ array(),);
static public $yy_default = array(44, 37, 41, 40, 58, 58, 58, 36, 39, 44, 44, 58, 58, 58, 58, 58, 58, 58, 58, 58,
- 55, 54, 57, 56, 50, 45, 43, 42, 38, 46, 47, 52, 51, 49, 48, 53,);
+ 55, 54, 57, 56, 50, 45, 43, 42, 38, 46, 47, 52, 51, 49, 48, 53,);
const YYNOCODE = 29;
@@ -425,18 +411,21 @@ class Smarty_Internal_Configfileparser
public $yystack = array(); /* The parser's stack */
public $yyTokenName = array('$', 'OPENB', 'SECTION', 'CLOSEB', 'DOT', 'ID', 'EQUAL', 'FLOAT', 'INT', 'BOOL',
- 'SINGLE_QUOTED_STRING', 'DOUBLE_QUOTED_STRING', 'TRIPPLE_QUOTES', 'TRIPPLE_TEXT', 'TRIPPLE_QUOTES_END',
- 'NAKED_STRING', 'OTHER', 'NEWLINE', 'COMMENTSTART', 'error', 'start', 'global_vars', 'sections', 'var_list',
- 'section', 'newline', 'var', 'value',);
+ 'SINGLE_QUOTED_STRING', 'DOUBLE_QUOTED_STRING', 'TRIPPLE_QUOTES', 'TRIPPLE_TEXT',
+ 'TRIPPLE_QUOTES_END', 'NAKED_STRING', 'OTHER', 'NEWLINE', 'COMMENTSTART', 'error',
+ 'start', 'global_vars', 'sections', 'var_list', 'section', 'newline', 'var', 'value',);
public static $yyRuleName = array('start ::= global_vars sections', 'global_vars ::= var_list',
- 'sections ::= sections section', 'sections ::=', 'section ::= OPENB SECTION CLOSEB newline var_list',
- 'section ::= OPENB DOT SECTION CLOSEB newline var_list', 'var_list ::= var_list newline',
- 'var_list ::= var_list var', 'var_list ::=', 'var ::= ID EQUAL value', 'value ::= FLOAT', 'value ::= INT',
- 'value ::= BOOL', 'value ::= SINGLE_QUOTED_STRING', 'value ::= DOUBLE_QUOTED_STRING',
- 'value ::= TRIPPLE_QUOTES TRIPPLE_TEXT TRIPPLE_QUOTES_END', 'value ::= TRIPPLE_QUOTES TRIPPLE_QUOTES_END',
- 'value ::= NAKED_STRING', 'value ::= OTHER', 'newline ::= NEWLINE', 'newline ::= COMMENTSTART NEWLINE',
- 'newline ::= COMMENTSTART NAKED_STRING NEWLINE',);
+ 'sections ::= sections section', 'sections ::=',
+ 'section ::= OPENB SECTION CLOSEB newline var_list',
+ 'section ::= OPENB DOT SECTION CLOSEB newline var_list',
+ 'var_list ::= var_list newline', 'var_list ::= var_list var', 'var_list ::=',
+ 'var ::= ID EQUAL value', 'value ::= FLOAT', 'value ::= INT', 'value ::= BOOL',
+ 'value ::= SINGLE_QUOTED_STRING', 'value ::= DOUBLE_QUOTED_STRING',
+ 'value ::= TRIPPLE_QUOTES TRIPPLE_TEXT TRIPPLE_QUOTES_END',
+ 'value ::= TRIPPLE_QUOTES TRIPPLE_QUOTES_END', 'value ::= NAKED_STRING',
+ 'value ::= OTHER', 'newline ::= NEWLINE', 'newline ::= COMMENTSTART NEWLINE',
+ 'newline ::= COMMENTSTART NAKED_STRING NEWLINE',);
public function tokenName($tokenType)
{
@@ -444,7 +433,7 @@ class Smarty_Internal_Configfileparser
return 'End of Input';
}
if ($tokenType > 0 && $tokenType < count($this->yyTokenName)) {
- return $this->yyTokenName[$tokenType];
+ return $this->yyTokenName[ $tokenType ];
} else {
return "Unknown";
}
@@ -465,7 +454,7 @@ class Smarty_Internal_Configfileparser
}
$yytos = array_pop($this->yystack);
if ($this->yyTraceFILE && $this->yyidx >= 0) {
- fwrite($this->yyTraceFILE, $this->yyTracePrompt . 'Popping ' . $this->yyTokenName[$yytos->major] . "\n");
+ fwrite($this->yyTraceFILE, $this->yyTracePrompt . 'Popping ' . $this->yyTokenName[ $yytos->major ] . "\n");
}
$yymajor = $yytos->major;
self::yy_destructor($yymajor, $yytos->minor);
@@ -488,14 +477,14 @@ class Smarty_Internal_Configfileparser
{
static $res3 = array();
static $res4 = array();
- $state = $this->yystack[$this->yyidx]->stateno;
- $expected = self::$yyExpectedTokens[$state];
- if (isset($res3[$state][$token])) {
- if ($res3[$state][$token]) {
+ $state = $this->yystack[ $this->yyidx ]->stateno;
+ $expected = self::$yyExpectedTokens[ $state ];
+ if (isset($res3[ $state ][ $token ])) {
+ if ($res3[ $state ][ $token ]) {
return $expected;
}
} else {
- if ($res3[$state][$token] = in_array($token, self::$yyExpectedTokens[$state], true)) {
+ if ($res3[ $state ][ $token ] = in_array($token, self::$yyExpectedTokens[ $state ], true)) {
return $expected;
}
}
@@ -515,18 +504,21 @@ class Smarty_Internal_Configfileparser
return array_unique($expected);
}
$yyruleno = $yyact - self::YYNSTATE;
- $this->yyidx -= self::$yyRuleInfo[$yyruleno][1];
- $nextstate = $this->yy_find_reduce_action($this->yystack[$this->yyidx]->stateno, self::$yyRuleInfo[$yyruleno][0]);
- if (isset(self::$yyExpectedTokens[$nextstate])) {
- $expected = array_merge($expected, self::$yyExpectedTokens[$nextstate]);
- if (isset($res4[$nextstate][$token])) {
- if ($res4[$nextstate][$token]) {
+ $this->yyidx -= self::$yyRuleInfo[ $yyruleno ][ 1 ];
+ $nextstate = $this->yy_find_reduce_action($this->yystack[ $this->yyidx ]->stateno,
+ self::$yyRuleInfo[ $yyruleno ][ 0 ]);
+ if (isset(self::$yyExpectedTokens[ $nextstate ])) {
+ $expected = array_merge($expected, self::$yyExpectedTokens[ $nextstate ]);
+ if (isset($res4[ $nextstate ][ $token ])) {
+ if ($res4[ $nextstate ][ $token ]) {
$this->yyidx = $yyidx;
$this->yystack = $stack;
return array_unique($expected);
}
} else {
- if ($res4[$nextstate][$token] = in_array($token, self::$yyExpectedTokens[$nextstate], true)) {
+ if ($res4[ $nextstate ][ $token ] =
+ in_array($token, self::$yyExpectedTokens[ $nextstate ], true)
+ ) {
$this->yyidx = $yyidx;
$this->yystack = $stack;
return array_unique($expected);
@@ -538,8 +530,8 @@ class Smarty_Internal_Configfileparser
$this->yyidx ++;
$x = new TPC_yyStackEntry;
$x->stateno = $nextstate;
- $x->major = self::$yyRuleInfo[$yyruleno][0];
- $this->yystack[$this->yyidx] = $x;
+ $x->major = self::$yyRuleInfo[ $yyruleno ][ 0 ];
+ $this->yystack[ $this->yyidx ] = $x;
continue 2;
} elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) {
$this->yyidx = $yyidx;
@@ -556,10 +548,12 @@ class Smarty_Internal_Configfileparser
} else {
$yyact = $nextstate;
}
- } while (true);
+ }
+ while (true);
}
break;
- } while (true);
+ }
+ while (true);
$this->yyidx = $yyidx;
$this->yystack = $stack;
@@ -573,13 +567,13 @@ class Smarty_Internal_Configfileparser
if ($token === 0) {
return true; // 0 is not part of this
}
- $state = $this->yystack[$this->yyidx]->stateno;
- if (isset($res[$state][$token])) {
- if ($res[$state][$token]) {
+ $state = $this->yystack[ $this->yyidx ]->stateno;
+ if (isset($res[ $state ][ $token ])) {
+ if ($res[ $state ][ $token ]) {
return true;
}
} else {
- if ($res[$state][$token] = in_array($token, self::$yyExpectedTokens[$state], true)) {
+ if ($res[ $state ][ $token ] = in_array($token, self::$yyExpectedTokens[ $state ], true)) {
return true;
}
}
@@ -599,16 +593,20 @@ class Smarty_Internal_Configfileparser
return true;
}
$yyruleno = $yyact - self::YYNSTATE;
- $this->yyidx -= self::$yyRuleInfo[$yyruleno][1];
- $nextstate = $this->yy_find_reduce_action($this->yystack[$this->yyidx]->stateno, self::$yyRuleInfo[$yyruleno][0]);
- if (isset($res2[$nextstate][$token])) {
- if ($res2[$nextstate][$token]) {
+ $this->yyidx -= self::$yyRuleInfo[ $yyruleno ][ 1 ];
+ $nextstate = $this->yy_find_reduce_action($this->yystack[ $this->yyidx ]->stateno,
+ self::$yyRuleInfo[ $yyruleno ][ 0 ]);
+ if (isset($res2[ $nextstate ][ $token ])) {
+ if ($res2[ $nextstate ][ $token ]) {
$this->yyidx = $yyidx;
$this->yystack = $stack;
return true;
}
} else {
- if ($res2[$nextstate][$token] = (isset(self::$yyExpectedTokens[$nextstate]) && in_array($token, self::$yyExpectedTokens[$nextstate], true))) {
+ if ($res2[ $nextstate ][ $token ] = (isset(self::$yyExpectedTokens[ $nextstate ]) &&
+ in_array($token, self::$yyExpectedTokens[ $nextstate ],
+ true))
+ ) {
$this->yyidx = $yyidx;
$this->yystack = $stack;
return true;
@@ -619,8 +617,8 @@ class Smarty_Internal_Configfileparser
$this->yyidx ++;
$x = new TPC_yyStackEntry;
$x->stateno = $nextstate;
- $x->major = self::$yyRuleInfo[$yyruleno][0];
- $this->yystack[$this->yyidx] = $x;
+ $x->major = self::$yyRuleInfo[ $yyruleno ][ 0 ];
+ $this->yystack[ $this->yyidx ] = $x;
continue 2;
} elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) {
$this->yyidx = $yyidx;
@@ -641,10 +639,12 @@ class Smarty_Internal_Configfileparser
} else {
$yyact = $nextstate;
}
- } while (true);
+ }
+ while (true);
}
break;
- } while (true);
+ }
+ while (true);
$this->yyidx = $yyidx;
$this->yystack = $stack;
@@ -653,33 +653,37 @@ class Smarty_Internal_Configfileparser
public function yy_find_shift_action($iLookAhead)
{
- $stateno = $this->yystack[$this->yyidx]->stateno;
+ $stateno = $this->yystack[ $this->yyidx ]->stateno;
/* if ($this->yyidx < 0) return self::YY_NO_ACTION; */
- if (!isset(self::$yy_shift_ofst[$stateno])) {
+ if (!isset(self::$yy_shift_ofst[ $stateno ])) {
// no shift actions
- return self::$yy_default[$stateno];
+ return self::$yy_default[ $stateno ];
}
- $i = self::$yy_shift_ofst[$stateno];
+ $i = self::$yy_shift_ofst[ $stateno ];
if ($i === self::YY_SHIFT_USE_DFLT) {
- return self::$yy_default[$stateno];
+ return self::$yy_default[ $stateno ];
}
if ($iLookAhead == self::YYNOCODE) {
return self::YY_NO_ACTION;
}
$i += $iLookAhead;
- if ($i < 0 || $i >= self::YY_SZ_ACTTAB || self::$yy_lookahead[$i] != $iLookAhead) {
- if (count(self::$yyFallback) && $iLookAhead < count(self::$yyFallback) && ($iFallback = self::$yyFallback[$iLookAhead]) != 0) {
+ if ($i < 0 || $i >= self::YY_SZ_ACTTAB || self::$yy_lookahead[ $i ] != $iLookAhead) {
+ if (count(self::$yyFallback) && $iLookAhead < count(self::$yyFallback) &&
+ ($iFallback = self::$yyFallback[ $iLookAhead ]) != 0
+ ) {
if ($this->yyTraceFILE) {
- fwrite($this->yyTraceFILE, $this->yyTracePrompt . "FALLBACK " . $this->yyTokenName[$iLookAhead] . " => " . $this->yyTokenName[$iFallback] . "\n");
+ fwrite($this->yyTraceFILE,
+ $this->yyTracePrompt . "FALLBACK " . $this->yyTokenName[ $iLookAhead ] . " => " .
+ $this->yyTokenName[ $iFallback ] . "\n");
}
return $this->yy_find_shift_action($iFallback);
}
- return self::$yy_default[$stateno];
+ return self::$yy_default[ $stateno ];
} else {
- return self::$yy_action[$i];
+ return self::$yy_action[ $i ];
}
}
@@ -687,21 +691,21 @@ class Smarty_Internal_Configfileparser
{
/* $stateno = $this->yystack[$this->yyidx]->stateno; */
- if (!isset(self::$yy_reduce_ofst[$stateno])) {
- return self::$yy_default[$stateno];
+ if (!isset(self::$yy_reduce_ofst[ $stateno ])) {
+ return self::$yy_default[ $stateno ];
}
- $i = self::$yy_reduce_ofst[$stateno];
+ $i = self::$yy_reduce_ofst[ $stateno ];
if ($i == self::YY_REDUCE_USE_DFLT) {
- return self::$yy_default[$stateno];
+ return self::$yy_default[ $stateno ];
}
if ($iLookAhead == self::YYNOCODE) {
return self::YY_NO_ACTION;
}
$i += $iLookAhead;
- if ($i < 0 || $i >= self::YY_SZ_ACTTAB || self::$yy_lookahead[$i] != $iLookAhead) {
- return self::$yy_default[$stateno];
+ if ($i < 0 || $i >= self::YY_SZ_ACTTAB || self::$yy_lookahead[ $i ] != $iLookAhead) {
+ return self::$yy_default[ $stateno ];
} else {
- return self::$yy_action[$i];
+ return self::$yy_action[ $i ];
}
}
@@ -716,7 +720,7 @@ class Smarty_Internal_Configfileparser
while ($this->yyidx >= 0) {
$this->yy_pop_parser_stack();
}
- #line 255 "../smarty/lexer/smarty_internal_configfileparser.y"
+ #line 239 "../smarty/lexer/smarty_internal_configfileparser.y"
$this->internalError = true;
$this->compiler->trigger_config_file_error("Stack overflow in configfile parser");
@@ -732,123 +736,127 @@ class Smarty_Internal_Configfileparser
fprintf($this->yyTraceFILE, "%sShift %d\n", $this->yyTracePrompt, $yyNewState);
fprintf($this->yyTraceFILE, "%sStack:", $this->yyTracePrompt);
for ($i = 1; $i <= $this->yyidx; $i ++) {
- fprintf($this->yyTraceFILE, " %s", $this->yyTokenName[$this->yystack[$i]->major]);
+ fprintf($this->yyTraceFILE, " %s", $this->yyTokenName[ $this->yystack[ $i ]->major ]);
}
fwrite($this->yyTraceFILE, "\n");
}
}
public static $yyRuleInfo = array(array(0 => 20, 1 => 2), array(0 => 21, 1 => 1), array(0 => 22, 1 => 2),
- array(0 => 22, 1 => 0), array(0 => 24, 1 => 5), array(0 => 24, 1 => 6), array(0 => 23, 1 => 2),
- array(0 => 23, 1 => 2), array(0 => 23, 1 => 0), array(0 => 26, 1 => 3), array(0 => 27, 1 => 1),
- array(0 => 27, 1 => 1), array(0 => 27, 1 => 1), array(0 => 27, 1 => 1), array(0 => 27, 1 => 1),
- array(0 => 27, 1 => 3), array(0 => 27, 1 => 2), array(0 => 27, 1 => 1), array(0 => 27, 1 => 1),
- array(0 => 25, 1 => 1), array(0 => 25, 1 => 2), array(0 => 25, 1 => 3),);
-
- public static $yyReduceMap = array(0 => 0, 2 => 0, 3 => 0, 19 => 0, 20 => 0, 21 => 0, 1 => 1, 4 => 4, 5 => 5,
- 6 => 6, 7 => 7, 8 => 8, 9 => 9, 10 => 10, 11 => 11, 12 => 12, 13 => 13,
- 14 => 14, 15 => 15, 16 => 16, 17 => 17, 18 => 17,);
-
- #line 261 "../smarty/lexer/smarty_internal_configfileparser.y"
+ array(0 => 22, 1 => 0), array(0 => 24, 1 => 5), array(0 => 24, 1 => 6),
+ array(0 => 23, 1 => 2), array(0 => 23, 1 => 2), array(0 => 23, 1 => 0),
+ array(0 => 26, 1 => 3), array(0 => 27, 1 => 1), array(0 => 27, 1 => 1),
+ array(0 => 27, 1 => 1), array(0 => 27, 1 => 1), array(0 => 27, 1 => 1),
+ array(0 => 27, 1 => 3), array(0 => 27, 1 => 2), array(0 => 27, 1 => 1),
+ array(0 => 27, 1 => 1), array(0 => 25, 1 => 1), array(0 => 25, 1 => 2),
+ array(0 => 25, 1 => 3),);
+
+ public static $yyReduceMap = array(0 => 0, 2 => 0, 3 => 0, 19 => 0, 20 => 0, 21 => 0, 1 => 1, 4 => 4, 5 => 5,
+ 6 => 6, 7 => 7, 8 => 8, 9 => 9, 10 => 10, 11 => 11, 12 => 12, 13 => 13, 14 => 14,
+ 15 => 15, 16 => 16, 17 => 17, 18 => 17,);
+
+ #line 245 "../smarty/lexer/smarty_internal_configfileparser.y"
function yy_r0()
{
$this->_retvalue = null;
}
- #line 266 "../smarty/lexer/smarty_internal_configfileparser.y"
+ #line 250 "../smarty/lexer/smarty_internal_configfileparser.y"
function yy_r1()
{
- $this->add_global_vars($this->yystack[$this->yyidx + 0]->minor);
+ $this->add_global_vars($this->yystack[ $this->yyidx + 0 ]->minor);
$this->_retvalue = null;
}
- #line 280 "../smarty/lexer/smarty_internal_configfileparser.y"
+ #line 264 "../smarty/lexer/smarty_internal_configfileparser.y"
function yy_r4()
{
- $this->add_section_vars($this->yystack[$this->yyidx + - 3]->minor, $this->yystack[$this->yyidx + 0]->minor);
+ $this->add_section_vars($this->yystack[ $this->yyidx + - 3 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor);
$this->_retvalue = null;
}
- #line 285 "../smarty/lexer/smarty_internal_configfileparser.y"
+ #line 269 "../smarty/lexer/smarty_internal_configfileparser.y"
function yy_r5()
{
if ($this->configReadHidden) {
- $this->add_section_vars($this->yystack[$this->yyidx + - 3]->minor, $this->yystack[$this->yyidx + 0]->minor);
+ $this->add_section_vars($this->yystack[ $this->yyidx + - 3 ]->minor,
+ $this->yystack[ $this->yyidx + 0 ]->minor);
}
$this->_retvalue = null;
}
- #line 293 "../smarty/lexer/smarty_internal_configfileparser.y"
+ #line 277 "../smarty/lexer/smarty_internal_configfileparser.y"
function yy_r6()
{
- $this->_retvalue = $this->yystack[$this->yyidx + - 1]->minor;
+ $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor;
}
- #line 297 "../smarty/lexer/smarty_internal_configfileparser.y"
+ #line 281 "../smarty/lexer/smarty_internal_configfileparser.y"
function yy_r7()
{
- $this->_retvalue = array_merge($this->yystack[$this->yyidx + - 1]->minor, Array($this->yystack[$this->yyidx + 0]->minor));
+ $this->_retvalue =
+ array_merge($this->yystack[ $this->yyidx + - 1 ]->minor, Array($this->yystack[ $this->yyidx + 0 ]->minor));
}
- #line 301 "../smarty/lexer/smarty_internal_configfileparser.y"
+ #line 285 "../smarty/lexer/smarty_internal_configfileparser.y"
function yy_r8()
{
$this->_retvalue = Array();
}
- #line 307 "../smarty/lexer/smarty_internal_configfileparser.y"
+ #line 291 "../smarty/lexer/smarty_internal_configfileparser.y"
function yy_r9()
{
- $this->_retvalue = Array("key" => $this->yystack[$this->yyidx + - 2]->minor,
- "value" => $this->yystack[$this->yyidx + 0]->minor);
+ $this->_retvalue = Array("key" => $this->yystack[ $this->yyidx + - 2 ]->minor,
+ "value" => $this->yystack[ $this->yyidx + 0 ]->minor);
}
- #line 312 "../smarty/lexer/smarty_internal_configfileparser.y"
+ #line 296 "../smarty/lexer/smarty_internal_configfileparser.y"
function yy_r10()
{
- $this->_retvalue = (float) $this->yystack[$this->yyidx + 0]->minor;
+ $this->_retvalue = (float) $this->yystack[ $this->yyidx + 0 ]->minor;
}
- #line 316 "../smarty/lexer/smarty_internal_configfileparser.y"
+ #line 300 "../smarty/lexer/smarty_internal_configfileparser.y"
function yy_r11()
{
- $this->_retvalue = (int) $this->yystack[$this->yyidx + 0]->minor;
+ $this->_retvalue = (int) $this->yystack[ $this->yyidx + 0 ]->minor;
}
- #line 320 "../smarty/lexer/smarty_internal_configfileparser.y"
+ #line 304 "../smarty/lexer/smarty_internal_configfileparser.y"
function yy_r12()
{
- $this->_retvalue = $this->parse_bool($this->yystack[$this->yyidx + 0]->minor);
+ $this->_retvalue = $this->parse_bool($this->yystack[ $this->yyidx + 0 ]->minor);
}
- #line 324 "../smarty/lexer/smarty_internal_configfileparser.y"
+ #line 308 "../smarty/lexer/smarty_internal_configfileparser.y"
function yy_r13()
{
- $this->_retvalue = self::parse_single_quoted_string($this->yystack[$this->yyidx + 0]->minor);
+ $this->_retvalue = self::parse_single_quoted_string($this->yystack[ $this->yyidx + 0 ]->minor);
}
- #line 328 "../smarty/lexer/smarty_internal_configfileparser.y"
+ #line 312 "../smarty/lexer/smarty_internal_configfileparser.y"
function yy_r14()
{
- $this->_retvalue = self::parse_double_quoted_string($this->yystack[$this->yyidx + 0]->minor);
+ $this->_retvalue = self::parse_double_quoted_string($this->yystack[ $this->yyidx + 0 ]->minor);
}
- #line 332 "../smarty/lexer/smarty_internal_configfileparser.y"
+ #line 316 "../smarty/lexer/smarty_internal_configfileparser.y"
function yy_r15()
{
- $this->_retvalue = self::parse_tripple_double_quoted_string($this->yystack[$this->yyidx + - 1]->minor);
+ $this->_retvalue = self::parse_tripple_double_quoted_string($this->yystack[ $this->yyidx + - 1 ]->minor);
}
- #line 336 "../smarty/lexer/smarty_internal_configfileparser.y"
+ #line 320 "../smarty/lexer/smarty_internal_configfileparser.y"
function yy_r16()
{
$this->_retvalue = '';
}
- #line 340 "../smarty/lexer/smarty_internal_configfileparser.y"
+ #line 324 "../smarty/lexer/smarty_internal_configfileparser.y"
function yy_r17()
{
- $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
+ $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor;
}
private $_retvalue;
@@ -856,24 +864,25 @@ class Smarty_Internal_Configfileparser
public function yy_reduce($yyruleno)
{
if ($this->yyTraceFILE && $yyruleno >= 0 && $yyruleno < count(self::$yyRuleName)) {
- fprintf($this->yyTraceFILE, "%sReduce (%d) [%s].\n", $this->yyTracePrompt, $yyruleno, self::$yyRuleName[$yyruleno]);
+ fprintf($this->yyTraceFILE, "%sReduce (%d) [%s].\n", $this->yyTracePrompt, $yyruleno,
+ self::$yyRuleName[ $yyruleno ]);
}
$this->_retvalue = $yy_lefthand_side = null;
- if (isset(self::$yyReduceMap[$yyruleno])) {
+ if (isset(self::$yyReduceMap[ $yyruleno ])) {
// call the action
$this->_retvalue = null;
- $this->{'yy_r' . self::$yyReduceMap[$yyruleno]}();
+ $this->{'yy_r' . self::$yyReduceMap[ $yyruleno ]}();
$yy_lefthand_side = $this->_retvalue;
}
- $yygoto = self::$yyRuleInfo[$yyruleno][0];
- $yysize = self::$yyRuleInfo[$yyruleno][1];
+ $yygoto = self::$yyRuleInfo[ $yyruleno ][ 0 ];
+ $yysize = self::$yyRuleInfo[ $yyruleno ][ 1 ];
$this->yyidx -= $yysize;
for ($i = $yysize; $i; $i --) {
// pop all of the right-hand side parameters
array_pop($this->yystack);
}
- $yyact = $this->yy_find_reduce_action($this->yystack[$this->yyidx]->stateno, $yygoto);
+ $yyact = $this->yy_find_reduce_action($this->yystack[ $this->yyidx ]->stateno, $yygoto);
if ($yyact < self::YYNSTATE) {
if (!$this->yyTraceFILE && $yysize) {
$this->yyidx ++;
@@ -881,7 +890,7 @@ class Smarty_Internal_Configfileparser
$x->stateno = $yyact;
$x->major = $yygoto;
$x->minor = $yy_lefthand_side;
- $this->yystack[$this->yyidx] = $x;
+ $this->yystack[ $this->yyidx ] = $x;
} else {
$this->yy_shift($yyact, $yygoto, $yy_lefthand_side);
}
@@ -902,7 +911,7 @@ class Smarty_Internal_Configfileparser
public function yy_syntax_error($yymajor, $TOKEN)
{
- #line 248 "../smarty/lexer/smarty_internal_configfileparser.y"
+ #line 232 "../smarty/lexer/smarty_internal_configfileparser.y"
$this->internalError = true;
$this->yymajor = $yymajor;
@@ -917,7 +926,7 @@ class Smarty_Internal_Configfileparser
while ($this->yyidx >= 0) {
$this->yy_pop_parser_stack();
}
- #line 241 "../smarty/lexer/smarty_internal_configfileparser.y"
+ #line 225 "../smarty/lexer/smarty_internal_configfileparser.y"
$this->successful = !$this->internalError;
$this->internalError = false;
@@ -940,7 +949,7 @@ class Smarty_Internal_Configfileparser
$yyendofinput = ($yymajor == 0);
if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%sInput %s\n", $this->yyTracePrompt, $this->yyTokenName[$yymajor]);
+ fprintf($this->yyTraceFILE, "%sInput %s\n", $this->yyTracePrompt, $this->yyTokenName[ $yymajor ]);
}
do {
@@ -967,15 +976,17 @@ class Smarty_Internal_Configfileparser
if ($this->yyerrcnt < 0) {
$this->yy_syntax_error($yymajor, $yytokenvalue);
}
- $yymx = $this->yystack[$this->yyidx]->major;
+ $yymx = $this->yystack[ $this->yyidx ]->major;
if ($yymx == self::YYERRORSYMBOL || $yyerrorhit) {
if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%sDiscard input token %s\n", $this->yyTracePrompt, $this->yyTokenName[$yymajor]);
+ fprintf($this->yyTraceFILE, "%sDiscard input token %s\n", $this->yyTracePrompt,
+ $this->yyTokenName[ $yymajor ]);
}
$this->yy_destructor($yymajor, $yytokenvalue);
$yymajor = self::YYNOCODE;
} else {
- while ($this->yyidx >= 0 && $yymx != self::YYERRORSYMBOL && ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE) {
+ while ($this->yyidx >= 0 && $yymx != self::YYERRORSYMBOL &&
+ ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE) {
$this->yy_pop_parser_stack();
}
if ($this->yyidx < 0 || $yymajor == 0) {
@@ -1004,7 +1015,8 @@ class Smarty_Internal_Configfileparser
$this->yy_accept();
$yymajor = self::YYNOCODE;
}
- } while ($yymajor != self::YYNOCODE && $this->yyidx >= 0);
+ }
+ while ($yymajor != self::YYNOCODE && $this->yyidx >= 0);
}
}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_data.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_data.php
index bba95d303..fd9c3020b 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_data.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_data.php
@@ -14,13 +14,19 @@
* @package Smarty
* @subpackage Template
*
+ * @property int $scope
+ * @property Smarty $smarty
+ * The following methods will be dynamically loaded by the extension handler when they are called.
+ * They are located in a corresponding Smarty_Internal_Method_xxxx class
+ *
+ * @method mixed getConfigVariable(string $varName, bool $errorEnable = true)
* @method mixed getConfigVars(string $varName = null, bool $searchParents = true)
+ * @method mixed getGlobal(string $varName = null)
* @method mixed getStreamVariable(string $variable)
* @method Smarty_Internal_Data clearAssign(mixed $tpl_var)
* @method Smarty_Internal_Data clearAllAssign()
* @method Smarty_Internal_Data clearConfig(string $varName = null)
* @method Smarty_Internal_Data configLoad(string $config_file, mixed $sections = null, string $scope = 'local')
- * @property int $scope
*/
class Smarty_Internal_Data
{
@@ -91,18 +97,15 @@ class Smarty_Internal_Data
{
if (is_array($tpl_var)) {
foreach ($tpl_var as $_key => $_val) {
- if ($_key != '') {
- $this->tpl_vars[$_key] = new Smarty_Variable($_val, $nocache);
- if ($this->_objType == 2 && $this->scope) {
- $this->ext->_updateScope->updateScope($this, $_key);
- }
- }
+ $this->assign($_key, $_val, $nocache);
}
} else {
if ($tpl_var != '') {
- $this->tpl_vars[$tpl_var] = new Smarty_Variable($value, $nocache);
- if ($this->_objType == 2 && $this->scope) {
- $this->ext->_updateScope->updateScope($this, $tpl_var);
+ if ($this->_objType === 2) {
+ /** @var Smarty_Internal_Template $this */
+ $this->_assignInScope($tpl_var, $value, $nocache);
+ } else {
+ $this->tpl_vars[ $tpl_var ] = new Smarty_Variable($value, $nocache);
}
}
}
@@ -190,18 +193,20 @@ class Smarty_Internal_Data
/**
* gets the object of a Smarty variable
*
- * @param string $variable the name of the Smarty variable
- * @param Smarty_Internal_Data $_ptr optional pointer to data object
- * @param boolean $searchParents search also in parent data
- * @param bool $error_enable
+ * @param string $variable the name of the Smarty variable
+ * @param Smarty_Internal_Data $_ptr optional pointer to data object
+ * @param boolean $searchParents search also in parent data
+ * @param bool $error_enable
*
* @return Smarty_Variable|Smarty_Undefined_Variable the object of the variable
* @deprecated since 3.1.28 please use Smarty_Internal_Data::getTemplateVars() instead.
*/
- public function getVariable($variable = null, Smarty_Internal_Data $_ptr = null, $searchParents = true, $error_enable = true){
+ public function getVariable($variable = null, Smarty_Internal_Data $_ptr = null, $searchParents = true,
+ $error_enable = true)
+ {
return $this->ext->getTemplateVars->_getVariable($this, $variable, $_ptr, $searchParents, $error_enable);
}
-
+
/**
* Follow the parent chain an merge template and config variables
*
@@ -225,6 +230,46 @@ class Smarty_Internal_Data
}
/**
+ * Return true if this instance is a Data obj
+ *
+ * @return bool
+ */
+ public function _isDataObj()
+ {
+ return $this->_objType === 4;
+ }
+
+ /**
+ * Return true if this instance is a template obj
+ *
+ * @return bool
+ */
+ public function _isTplObj()
+ {
+ return $this->_objType === 2;
+ }
+
+ /**
+ * Return true if this instance is a Smarty obj
+ *
+ * @return bool
+ */
+ public function _isSmartyObj()
+ {
+ return $this->_objType === 1;
+ }
+
+ /**
+ * Get Smarty object
+ *
+ * @return Smarty
+ */
+ public function _getSmartyObj()
+ {
+ return $this->smarty;
+ }
+
+ /**
* Handle unknown class methods
*
* @param string $name unknown method-name
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_debug.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_debug.php
index 0cbd54955..f16bd3fb1 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_debug.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_debug.php
@@ -52,13 +52,13 @@ class Smarty_Internal_Debug extends Smarty_Internal_Data
*/
public function start_template(Smarty_Internal_Template $template, $mode = null)
{
- if (isset($mode)) {
+ if (isset($mode) && !$template->_isSubTpl()) {
$this->index ++;
$this->offset ++;
- $this->template_data[$this->index] = null;
+ $this->template_data[ $this->index ] = null;
}
$key = $this->get_key($template);
- $this->template_data[$this->index][$key]['start_template_time'] = microtime(true);
+ $this->template_data[ $this->index ][ $key ][ 'start_template_time' ] = microtime(true);
}
/**
@@ -69,8 +69,8 @@ class Smarty_Internal_Debug extends Smarty_Internal_Data
public function end_template(Smarty_Internal_Template $template)
{
$key = $this->get_key($template);
- $this->template_data[$this->index][$key]['total_time'] +=
- microtime(true) - $this->template_data[$this->index][$key]['start_template_time'];
+ $this->template_data[ $this->index ][ $key ][ 'total_time' ] +=
+ microtime(true) - $this->template_data[ $this->index ][ $key ][ 'start_template_time' ];
//$this->template_data[$this->index][$key]['properties'] = $template->properties;
}
@@ -84,24 +84,24 @@ class Smarty_Internal_Debug extends Smarty_Internal_Data
static $_is_stringy = array('string' => true, 'eval' => true);
if (!empty($template->compiler->trace_uid)) {
$key = $template->compiler->trace_uid;
- if (!isset($this->template_data[$this->index][$key])) {
- if (isset($_is_stringy[$template->source->type])) {
- $this->template_data[$this->index][$key]['name'] =
+ if (!isset($this->template_data[ $this->index ][ $key ])) {
+ if (isset($_is_stringy[ $template->source->type ])) {
+ $this->template_data[ $this->index ][ $key ][ 'name' ] =
'\'' . substr($template->source->name, 0, 25) . '...\'';
} else {
- $this->template_data[$this->index][$key]['name'] = $template->source->filepath;
+ $this->template_data[ $this->index ][ $key ][ 'name' ] = $template->source->filepath;
}
- $this->template_data[$this->index][$key]['compile_time'] = 0;
- $this->template_data[$this->index][$key]['render_time'] = 0;
- $this->template_data[$this->index][$key]['cache_time'] = 0;
+ $this->template_data[ $this->index ][ $key ][ 'compile_time' ] = 0;
+ $this->template_data[ $this->index ][ $key ][ 'render_time' ] = 0;
+ $this->template_data[ $this->index ][ $key ][ 'cache_time' ] = 0;
}
} else {
- if (isset($this->ignore_uid[$template->source->uid])) {
+ if (isset($this->ignore_uid[ $template->source->uid ])) {
return;
}
$key = $this->get_key($template);
}
- $this->template_data[$this->index][$key]['start_time'] = microtime(true);
+ $this->template_data[ $this->index ][ $key ][ 'start_time' ] = microtime(true);
}
/**
@@ -114,14 +114,14 @@ class Smarty_Internal_Debug extends Smarty_Internal_Data
if (!empty($template->compiler->trace_uid)) {
$key = $template->compiler->trace_uid;
} else {
- if (isset($this->ignore_uid[$template->source->uid])) {
+ if (isset($this->ignore_uid[ $template->source->uid ])) {
return;
}
$key = $this->get_key($template);
}
- $this->template_data[$this->index][$key]['compile_time'] +=
- microtime(true) - $this->template_data[$this->index][$key]['start_time'];
+ $this->template_data[ $this->index ][ $key ][ 'compile_time' ] +=
+ microtime(true) - $this->template_data[ $this->index ][ $key ][ 'start_time' ];
}
/**
@@ -132,7 +132,7 @@ class Smarty_Internal_Debug extends Smarty_Internal_Data
public function start_render(Smarty_Internal_Template $template)
{
$key = $this->get_key($template);
- $this->template_data[$this->index][$key]['start_time'] = microtime(true);
+ $this->template_data[ $this->index ][ $key ][ 'start_time' ] = microtime(true);
}
/**
@@ -143,8 +143,8 @@ class Smarty_Internal_Debug extends Smarty_Internal_Data
public function end_render(Smarty_Internal_Template $template)
{
$key = $this->get_key($template);
- $this->template_data[$this->index][$key]['render_time'] +=
- microtime(true) - $this->template_data[$this->index][$key]['start_time'];
+ $this->template_data[ $this->index ][ $key ][ 'render_time' ] +=
+ microtime(true) - $this->template_data[ $this->index ][ $key ][ 'start_time' ];
}
/**
@@ -155,7 +155,7 @@ class Smarty_Internal_Debug extends Smarty_Internal_Data
public function start_cache(Smarty_Internal_Template $template)
{
$key = $this->get_key($template);
- $this->template_data[$this->index][$key]['start_time'] = microtime(true);
+ $this->template_data[ $this->index ][ $key ][ 'start_time' ] = microtime(true);
}
/**
@@ -166,8 +166,8 @@ class Smarty_Internal_Debug extends Smarty_Internal_Data
public function end_cache(Smarty_Internal_Template $template)
{
$key = $this->get_key($template);
- $this->template_data[$this->index][$key]['cache_time'] +=
- microtime(true) - $this->template_data[$this->index][$key]['start_time'];
+ $this->template_data[ $this->index ][ $key ][ 'cache_time' ] +=
+ microtime(true) - $this->template_data[ $this->index ][ $key ][ 'start_time' ];
}
/**
@@ -201,11 +201,7 @@ class Smarty_Internal_Debug extends Smarty_Internal_Data
$savedIndex = $this->index;
$this->index = 9999;
}
- if ($obj->_objType == 1) {
- $smarty = $obj;
- } else {
- $smarty = $obj->smarty;
- }
+ $smarty = $obj->_getSmartyObj();
// create fresh instance of smarty for displaying the debug console
// to avoid problems if the application did overload the Smarty class
$debObj = new Smarty();
@@ -240,11 +236,11 @@ class Smarty_Internal_Debug extends Smarty_Internal_Data
$debugging = $smarty->debugging;
$_template = new Smarty_Internal_Template($debObj->debug_tpl, $debObj);
- if ($obj->_objType == 2) {
+ if ($obj->_isTplObj()) {
$_template->assign('template_name', $obj->source->type . ':' . $obj->source->name);
}
if ($obj->_objType == 1 || $full) {
- $_template->assign('template_data', $this->template_data[$this->index]);
+ $_template->assign('template_data', $this->template_data[ $this->index ]);
} else {
$_template->assign('template_data', null);
}
@@ -273,53 +269,53 @@ class Smarty_Internal_Debug extends Smarty_Internal_Data
{
$config_vars = array();
foreach ($obj->config_vars as $key => $var) {
- $config_vars[$key]['value'] = $var;
- if ($obj->_objType == 2) {
- $config_vars[$key]['scope'] = $obj->source->type . ':' . $obj->source->name;
- } elseif ($obj->_objType == 4) {
- $tpl_vars[$key]['scope'] = $obj->dataObjectName;
+ $config_vars[ $key ][ 'value' ] = $var;
+ if ($obj->_isTplObj()) {
+ $config_vars[ $key ][ 'scope' ] = $obj->source->type . ':' . $obj->source->name;
+ } elseif ($obj->_isDataObj()) {
+ $tpl_vars[ $key ][ 'scope' ] = $obj->dataObjectName;
} else {
- $config_vars[$key]['scope'] = 'Smarty object';
+ $config_vars[ $key ][ 'scope' ] = 'Smarty object';
}
}
$tpl_vars = array();
foreach ($obj->tpl_vars as $key => $var) {
foreach ($var as $varkey => $varvalue) {
if ($varkey == 'value') {
- $tpl_vars[$key][$varkey] = $varvalue;
+ $tpl_vars[ $key ][ $varkey ] = $varvalue;
} else {
if ($varkey == 'nocache') {
if ($varvalue == true) {
- $tpl_vars[$key][$varkey] = $varvalue;
+ $tpl_vars[ $key ][ $varkey ] = $varvalue;
}
} else {
if ($varkey != 'scope' || $varvalue !== 0) {
- $tpl_vars[$key]['attributes'][$varkey] = $varvalue;
+ $tpl_vars[ $key ][ 'attributes' ][ $varkey ] = $varvalue;
}
}
}
}
- if ($obj->_objType == 2) {
- $tpl_vars[$key]['scope'] = $obj->source->type . ':' . $obj->source->name;
- } elseif ($obj->_objType == 4) {
- $tpl_vars[$key]['scope'] = $obj->dataObjectName;
+ if ($obj->_isTplObj()) {
+ $tpl_vars[ $key ][ 'scope' ] = $obj->source->type . ':' . $obj->source->name;
+ } elseif ($obj->_isDataObj()) {
+ $tpl_vars[ $key ][ 'scope' ] = $obj->dataObjectName;
} else {
- $tpl_vars[$key]['scope'] = 'Smarty object';
+ $tpl_vars[ $key ][ 'scope' ] = 'Smarty object';
}
}
if (isset($obj->parent)) {
$parent = $this->get_debug_vars($obj->parent);
foreach ($parent->tpl_vars as $name => $pvar) {
- if (isset($tpl_vars[$name]) && $tpl_vars[$name]['value'] === $pvar['value']) {
- $tpl_vars[$name]['scope'] = $pvar['scope'];
+ if (isset($tpl_vars[ $name ]) && $tpl_vars[ $name ][ 'value' ] === $pvar[ 'value' ]) {
+ $tpl_vars[ $name ][ 'scope' ] = $pvar[ 'scope' ];
}
}
$tpl_vars = array_merge($parent->tpl_vars, $tpl_vars);
foreach ($parent->config_vars as $name => $pvar) {
- if (isset($config_vars[$name]) && $config_vars[$name]['value'] === $pvar['value']) {
- $config_vars[$name]['scope'] = $pvar['scope'];
+ if (isset($config_vars[ $name ]) && $config_vars[ $name ][ 'value' ] === $pvar[ 'value' ]) {
+ $config_vars[ $name ][ 'scope' ] = $pvar[ 'scope' ];
}
}
$config_vars = array_merge($parent->config_vars, $config_vars);
@@ -328,20 +324,20 @@ class Smarty_Internal_Debug extends Smarty_Internal_Data
if (!array_key_exists($key, $tpl_vars)) {
foreach ($var as $varkey => $varvalue) {
if ($varkey == 'value') {
- $tpl_vars[$key][$varkey] = $varvalue;
+ $tpl_vars[ $key ][ $varkey ] = $varvalue;
} else {
if ($varkey == 'nocache') {
if ($varvalue == true) {
- $tpl_vars[$key][$varkey] = $varvalue;
+ $tpl_vars[ $key ][ $varkey ] = $varvalue;
}
} else {
if ($varkey != 'scope' || $varvalue !== 0) {
- $tpl_vars[$key]['attributes'][$varkey] = $varvalue;
+ $tpl_vars[ $key ][ 'attributes' ][ $varkey ] = $varvalue;
}
}
}
}
- $tpl_vars[$key]['scope'] = 'Global';
+ $tpl_vars[ $key ][ 'scope' ] = 'Global';
}
}
}
@@ -364,19 +360,19 @@ class Smarty_Internal_Debug extends Smarty_Internal_Data
$template->source->filepath;
}
$key = $template->source->uid;
- if (isset($this->template_data[$this->index][$key])) {
+ if (isset($this->template_data[ $this->index ][ $key ])) {
return $key;
} else {
- if (isset($_is_stringy[$template->source->type])) {
- $this->template_data[$this->index][$key]['name'] =
+ if (isset($_is_stringy[ $template->source->type ])) {
+ $this->template_data[ $this->index ][ $key ][ 'name' ] =
'\'' . substr($template->source->name, 0, 25) . '...\'';
} else {
- $this->template_data[$this->index][$key]['name'] = $template->source->filepath;
+ $this->template_data[ $this->index ][ $key ][ 'name' ] = $template->source->filepath;
}
- $this->template_data[$this->index][$key]['compile_time'] = 0;
- $this->template_data[$this->index][$key]['render_time'] = 0;
- $this->template_data[$this->index][$key]['cache_time'] = 0;
- $this->template_data[$this->index][$key]['total_time'] = 0;
+ $this->template_data[ $this->index ][ $key ][ 'compile_time' ] = 0;
+ $this->template_data[ $this->index ][ $key ][ 'render_time' ] = 0;
+ $this->template_data[ $this->index ][ $key ][ 'cache_time' ] = 0;
+ $this->template_data[ $this->index ][ $key ][ 'total_time' ] = 0;
return $key;
}
@@ -393,7 +389,7 @@ class Smarty_Internal_Debug extends Smarty_Internal_Data
if ($template->source->uid == '') {
$template->source->filepath;
}
- $this->ignore_uid[$template->source->uid] = true;
+ $this->ignore_uid[ $template->source->uid ] = true;
}
/**
@@ -403,8 +399,8 @@ class Smarty_Internal_Debug extends Smarty_Internal_Data
*/
public function debugUrl(Smarty $smarty)
{
- if (isset($_SERVER['QUERY_STRING'])) {
- $_query_string = $_SERVER['QUERY_STRING'];
+ if (isset($_SERVER[ 'QUERY_STRING' ])) {
+ $_query_string = $_SERVER[ 'QUERY_STRING' ];
} else {
$_query_string = '';
}
@@ -422,7 +418,7 @@ class Smarty_Internal_Debug extends Smarty_Internal_Data
$smarty->debugging = true;
}
} else {
- if (isset($_COOKIE['SMARTY_DEBUG'])) {
+ if (isset($_COOKIE[ 'SMARTY_DEBUG' ])) {
$smarty->debugging = true;
}
}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_extension_handler.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_extension_handler.php
new file mode 100644
index 000000000..340e6dee1
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_extension_handler.php
@@ -0,0 +1,171 @@
+<?php
+
+/**
+ * Smarty Extension handler
+ *
+ * Load extensions dynamically
+ *
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ *
+ * Runtime extensions
+ * @property Smarty_Internal_Runtime_CacheModify $_cacheModify
+ * @property Smarty_Internal_Runtime_CacheResourceFile $_cacheResourceFile
+ * @property Smarty_Internal_Runtime_Capture $_capture
+ * @property Smarty_Internal_Runtime_CodeFrame $_codeFrame
+ * @property Smarty_Internal_Runtime_FilterHandler $_filterHandler
+ * @property Smarty_Internal_Runtime_Foreach $_foreach
+ * @property Smarty_Internal_Runtime_GetIncludePath $_getIncludePath
+ * @property Smarty_Internal_Runtime_Make_Nocache $_make_nocache
+ * @property Smarty_Internal_Runtime_UpdateCache $_updateCache
+ * @property Smarty_Internal_Runtime_UpdateScope $_updateScope
+ * @property Smarty_Internal_Runtime_TplFunction $_tplFunction
+ * @property Smarty_Internal_Runtime_WriteFile $_writeFile
+ *
+ * Method extensions
+ * @property Smarty_Internal_Method_GetTemplateVars $getTemplateVars
+ * @property Smarty_Internal_Method_Append $append
+ * @property Smarty_Internal_Method_AppendByRef $appendByRef
+ * @property Smarty_Internal_Method_AssignGlobal $assignGlobal
+ * @property Smarty_Internal_Method_AssignByRef $assignByRef
+ * @property Smarty_Internal_Method_LoadFilter $loadFilter
+ * @property Smarty_Internal_Method_LoadPlugin $loadPlugin
+ * @property Smarty_Internal_Method_RegisterFilter $registerFilter
+ * @property Smarty_Internal_Method_RegisterObject $registerObject
+ * @property Smarty_Internal_Method_RegisterPlugin $registerPlugin
+ */
+class Smarty_Internal_Extension_Handler
+{
+
+ public $objType = null;
+
+ /**
+ * Cache for property information from generic getter/setter
+ * Preloaded with names which should not use with generic getter/setter
+ *
+ * @var array
+ */
+ private $_property_info = array('AutoloadFilters' => 0, 'DefaultModifiers' => 0, 'ConfigVars' => 0,
+ 'DebugTemplate' => 0, 'RegisteredObject' => 0, 'StreamVariable' => 0,
+ 'TemplateVars' => 0,);#
+
+ private $resolvedProperties = array();
+
+ /**
+ * Call external Method
+ *
+ * @param \Smarty_Internal_Data $data
+ * @param string $name external method names
+ * @param array $args argument array
+ *
+ * @return mixed
+ * @throws SmartyException
+ */
+ public function _callExternalMethod(Smarty_Internal_Data $data, $name, $args)
+ {
+ /* @var Smarty $data ->smarty */
+ $smarty = isset($data->smarty) ? $data->smarty : $data;
+ if (!isset($smarty->ext->$name)) {
+ $class = 'Smarty_Internal_Method_' . $this->upperCase($name);
+ if (preg_match('/^(set|get)([A-Z].*)$/', $name, $match)) {
+ $pn = '';
+ if (!isset($this->_property_info[ $prop = $match[ 2 ] ])) {
+ // convert camel case to underscored name
+ $this->resolvedProperties[ $prop ] = $pn = strtolower(join('_',
+ preg_split('/([A-Z][^A-Z]*)/', $prop,
+ - 1, PREG_SPLIT_NO_EMPTY |
+ PREG_SPLIT_DELIM_CAPTURE)));
+ $this->_property_info[ $prop ] =
+ property_exists($data, $pn) ? 1 : ($data->_isTplObj() && property_exists($smarty, $pn) ? 2 : 0);
+ }
+ if ($this->_property_info[ $prop ]) {
+ $pn = $this->resolvedProperties[ $prop ];
+ if ($match[ 1 ] == 'get') {
+ return $this->_property_info[ $prop ] == 1 ? $data->$pn : $data->smarty->$pn;
+ } else {
+ return $this->_property_info[ $prop ] == 1 ? $data->$pn = $args[ 0 ] :
+ $data->smarty->$pn = $args[ 0 ];
+ }
+ } elseif (!class_exists($class)) {
+ throw new SmartyException("property '$pn' does not exist.");
+ }
+ }
+ if (class_exists($class)) {
+ $callback = array($smarty->ext->$name = new $class(), $name);
+ }
+ } else {
+ $callback = array($smarty->ext->$name, $name);
+ }
+ array_unshift($args, $data);
+ if (isset($callback) && $callback[ 0 ]->objMap | $data->_objType) {
+ return call_user_func_array($callback, $args);
+ }
+ return call_user_func_array(array(new Smarty_Internal_Undefined(), $name), $args);
+ }
+
+ /**
+ * Make first character of name parts upper case
+ *
+ * @param string $name
+ *
+ * @return string
+ */
+ public function upperCase($name)
+ {
+ $_name = explode('_', $name);
+ $_name = array_map('ucfirst', $_name);
+ return implode('_', $_name);
+ }
+
+ /**
+ * set extension property
+ *
+ * @param string $property_name property name
+ * @param mixed $value value
+ *
+ * @throws SmartyException
+ */
+ public function __set($property_name, $value)
+ {
+ $this->$property_name = $value;
+ }
+
+ /**
+ * get extension object
+ *
+ * @param string $property_name property name
+ *
+ * @return mixed|Smarty_Template_Cached
+ * @throws SmartyException
+ */
+ public function __get($property_name)
+ {
+ // object properties of runtime template extensions will start with '_'
+ if ($property_name[ 0 ] == '_') {
+ $class = 'Smarty_Internal_Runtime' . $this->upperCase($property_name);
+ } else {
+ $class = 'Smarty_Internal_Method_' . $this->upperCase($property_name);
+ }
+ if (!class_exists($class)) {
+ return $this->$property_name = new Smarty_Internal_Undefined($class);
+ }
+ return $this->$property_name = new $class();
+ }
+
+ /**
+ * Call error handler for undefined method
+ *
+ * @param string $name unknown method-name
+ * @param array $args argument array
+ *
+ * @return mixed
+ * @throws SmartyException
+ */
+ public function __call($name, $args)
+ {
+ return call_user_func_array(array(new Smarty_Internal_Undefined(), $name), array($this));
+ }
+
+} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_addautoloadfilters.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_addautoloadfilters.php
index b739f0e3e..3eef8a28c 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_addautoloadfilters.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_addautoloadfilters.php
@@ -28,21 +28,22 @@ class Smarty_Internal_Method_AddAutoloadFilters extends Smarty_Internal_Method_S
*/
public function addAutoloadFilters(Smarty_Internal_TemplateBase $obj, $filters, $type = null)
{
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
+ $smarty = $obj->_getSmartyObj();
if ($type !== null) {
$this->_checkFilterType($type);
- if (!empty($smarty->autoload_filters[$type])) {
- $smarty->autoload_filters[$type] = array_merge($smarty->autoload_filters[$type], (array) $filters);
+ if (!empty($smarty->autoload_filters[ $type ])) {
+ $smarty->autoload_filters[ $type ] = array_merge($smarty->autoload_filters[ $type ], (array) $filters);
} else {
- $smarty->autoload_filters[$type] = (array) $filters;
+ $smarty->autoload_filters[ $type ] = (array) $filters;
}
} else {
foreach ((array) $filters as $type => $value) {
$this->_checkFilterType($type);
- if (!empty($smarty->autoload_filters[$type])) {
- $smarty->autoload_filters[$type] = array_merge($smarty->autoload_filters[$type], (array) $value);
+ if (!empty($smarty->autoload_filters[ $type ])) {
+ $smarty->autoload_filters[ $type ] =
+ array_merge($smarty->autoload_filters[ $type ], (array) $value);
} else {
- $smarty->autoload_filters[$type] = (array) $value;
+ $smarty->autoload_filters[ $type ] = (array) $value;
}
}
}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_adddefaultmodifiers.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_adddefaultmodifiers.php
index 55d2c9e71..afb0b68d5 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_adddefaultmodifiers.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_adddefaultmodifiers.php
@@ -31,9 +31,9 @@ class Smarty_Internal_Method_AddDefaultModifiers
*/
public function addDefaultModifiers(Smarty_Internal_TemplateBase $obj, $modifiers)
{
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
+ $smarty = $obj->_getSmartyObj();
if (is_array($modifiers)) {
- $this->default_modifiers = array_merge($smarty->default_modifiers, $modifiers);
+ $smarty->default_modifiers = array_merge($smarty->default_modifiers, $modifiers);
} else {
$smarty->default_modifiers[] = $modifiers;
}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_append.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_append.php
index 43df8803f..af6935919 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_append.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_append.php
@@ -44,29 +44,29 @@ class Smarty_Internal_Method_Append
}
} else {
if ($tpl_var != '' && isset($value)) {
- if (!isset($data->tpl_vars[$tpl_var])) {
+ if (!isset($data->tpl_vars[ $tpl_var ])) {
$tpl_var_inst = $data->ext->getTemplateVars->_getVariable($data, $tpl_var, null, true, false);
if ($tpl_var_inst instanceof Smarty_Undefined_Variable) {
- $data->tpl_vars[$tpl_var] = new Smarty_Variable(null, $nocache);
+ $data->tpl_vars[ $tpl_var ] = new Smarty_Variable(null, $nocache);
} else {
- $data->tpl_vars[$tpl_var] = clone $tpl_var_inst;
+ $data->tpl_vars[ $tpl_var ] = clone $tpl_var_inst;
}
}
- if (!(is_array($data->tpl_vars[$tpl_var]->value) ||
- $data->tpl_vars[$tpl_var]->value instanceof ArrayAccess)
+ if (!(is_array($data->tpl_vars[ $tpl_var ]->value) ||
+ $data->tpl_vars[ $tpl_var ]->value instanceof ArrayAccess)
) {
- settype($data->tpl_vars[$tpl_var]->value, 'array');
+ settype($data->tpl_vars[ $tpl_var ]->value, 'array');
}
if ($merge && is_array($value)) {
foreach ($value as $_mkey => $_mval) {
- $data->tpl_vars[$tpl_var]->value[$_mkey] = $_mval;
+ $data->tpl_vars[ $tpl_var ]->value[ $_mkey ] = $_mval;
}
} else {
- $data->tpl_vars[$tpl_var]->value[] = $value;
+ $data->tpl_vars[ $tpl_var ]->value[] = $value;
}
}
- if ($data->_objType == 2 && $data->scope) {
- $data->ext->_updateScope->updateScope($data, $tpl_var);
+ if ($data->_isTplObj() && $data->scope) {
+ $data->ext->_updateScope->_updateScope($data, $tpl_var);
}
}
return $data;
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_appendbyref.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_appendbyref.php
index 124bb803a..532ac9509 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_appendbyref.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_appendbyref.php
@@ -28,21 +28,21 @@ class Smarty_Internal_Method_AppendByRef
public static function appendByRef(Smarty_Internal_Data $data, $tpl_var, &$value, $merge = false)
{
if ($tpl_var != '' && isset($value)) {
- if (!isset($data->tpl_vars[$tpl_var])) {
- $data->tpl_vars[$tpl_var] = new Smarty_Variable();
+ if (!isset($data->tpl_vars[ $tpl_var ])) {
+ $data->tpl_vars[ $tpl_var ] = new Smarty_Variable();
}
- if (!is_array($data->tpl_vars[$tpl_var]->value)) {
- settype($data->tpl_vars[$tpl_var]->value, 'array');
+ if (!is_array($data->tpl_vars[ $tpl_var ]->value)) {
+ settype($data->tpl_vars[ $tpl_var ]->value, 'array');
}
if ($merge && is_array($value)) {
foreach ($value as $_key => $_val) {
- $data->tpl_vars[$tpl_var]->value[$_key] = &$value[$_key];
+ $data->tpl_vars[ $tpl_var ]->value[ $_key ] = &$value[ $_key ];
}
} else {
- $data->tpl_vars[$tpl_var]->value[] = &$value;
+ $data->tpl_vars[ $tpl_var ]->value[] = &$value;
}
- if ($data->_objType == 2 && $data->scope) {
- $data->ext->_updateScope->updateScope($data, $tpl_var);
+ if ($data->_isTplObj() && $data->scope) {
+ $data->ext->_updateScope->_updateScope($data, $tpl_var);
}
}
return $data;
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_assignbyref.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_assignbyref.php
index a97125e30..0060bbc5f 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_assignbyref.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_assignbyref.php
@@ -25,10 +25,10 @@ class Smarty_Internal_Method_AssignByRef
public function assignByRef(Smarty_Internal_Data $data, $tpl_var, &$value, $nocache)
{
if ($tpl_var != '') {
- $data->tpl_vars[$tpl_var] = new Smarty_Variable(null, $nocache);
- $data->tpl_vars[$tpl_var]->value = &$value;
- if ($data->_objType == 2 && $data->scope) {
- $data->ext->_updateScope->updateScope($data, $tpl_var);
+ $data->tpl_vars[ $tpl_var ] = new Smarty_Variable(null, $nocache);
+ $data->tpl_vars[ $tpl_var ]->value = &$value;
+ if ($data->_isTplObj() && $data->scope) {
+ $data->ext->_updateScope->_updateScope($data, $tpl_var);
}
}
return $data;
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_assignglobal.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_assignglobal.php
index 23b13b3a2..3c2b26049 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_assignglobal.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_assignglobal.php
@@ -18,23 +18,23 @@ class Smarty_Internal_Method_AssignGlobal
*/
public $objMap = 7;
- /**
+ /**
* assigns a global Smarty variable
*
* @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data
- * @param string $varName the global variable name
- * @param mixed $value the value to assign
- * @param boolean $nocache if true any output of this variable will be not cached
+ * @param string $varName the global variable name
+ * @param mixed $value the value to assign
+ * @param boolean $nocache if true any output of this variable will be not cached
*
* @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty
*/
public function assignGlobal(Smarty_Internal_Data $data, $varName, $value = null, $nocache = false)
{
if ($varName != '') {
- Smarty::$global_tpl_vars[$varName] = new Smarty_Variable($value, $nocache);
+ Smarty::$global_tpl_vars[ $varName ] = new Smarty_Variable($value, $nocache);
$ptr = $data;
- while ($ptr->_objType == 2) {
- $ptr->tpl_vars[$varName] = clone Smarty::$global_tpl_vars[$varName];
+ while ($ptr->_isTplObj()) {
+ $ptr->tpl_vars[ $varName ] = clone Smarty::$global_tpl_vars[ $varName ];
$ptr = $ptr->parent;
}
}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_clearallassign.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearallassign.php
index 1e5fec4bd..1e5fec4bd 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_clearallassign.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearallassign.php
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_clearallcache.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearallcache.php
index 6ae0af15f..5879f9a06 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_clearallcache.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearallcache.php
@@ -32,9 +32,9 @@ class Smarty_Internal_Method_ClearAllCache
*/
public function clearAllCache(Smarty $smarty, $exp_time = null, $type = null)
{
+ $smarty->_clearTemplateCache();
// load cache resource and call clearAll
$_cache_resource = Smarty_CacheResource::load($smarty, $type);
- $_cache_resource->invalidLoadedCache($smarty);
return $_cache_resource->clearAll($smarty, $exp_time);
}
} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_clearassign.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearassign.php
index 3a7bd1e47..060a2ac49 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_clearassign.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearassign.php
@@ -33,10 +33,10 @@ class Smarty_Internal_Method_ClearAssign
{
if (is_array($tpl_var)) {
foreach ($tpl_var as $curr_var) {
- unset($data->tpl_vars[$curr_var]);
+ unset($data->tpl_vars[ $curr_var ]);
}
} else {
- unset($data->tpl_vars[$tpl_var]);
+ unset($data->tpl_vars[ $tpl_var ]);
}
return $data;
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_clearcache.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearcache.php
index 063c57cde..95649a777 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_clearcache.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearcache.php
@@ -33,11 +33,12 @@ class Smarty_Internal_Method_ClearCache
*
* @return integer number of cache files deleted
*/
- public function clearCache(Smarty $smarty, $template_name, $cache_id = null, $compile_id = null, $exp_time = null, $type = null)
+ public function clearCache(Smarty $smarty, $template_name, $cache_id = null, $compile_id = null, $exp_time = null,
+ $type = null)
{
+ $smarty->_clearTemplateCache();
// load cache resource and call clear
$_cache_resource = Smarty_CacheResource::load($smarty, $type);
- $_cache_resource->invalidLoadedCache($smarty);
return $_cache_resource->clear($smarty, $template_name, $cache_id, $compile_id, $exp_time);
}
} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_clearcompiledtemplate.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearcompiledtemplate.php
index cce8553f5..a1f1a80bb 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_clearcompiledtemplate.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearcompiledtemplate.php
@@ -33,23 +33,23 @@ class Smarty_Internal_Method_ClearCompiledTemplate
*/
public function clearCompiledTemplate(Smarty $smarty, $resource_name = null, $compile_id = null, $exp_time = null)
{
+ // clear template objects cache
+ $smarty->_clearTemplateCache();
$_compile_dir = $smarty->getCompileDir();
if ($_compile_dir == '/') { //We should never want to delete this!
return 0;
}
$_compile_id = isset($compile_id) ? preg_replace('![^\w]+!', '_', $compile_id) : null;
- $_dir_sep = $smarty->use_sub_dirs ? DS : '^';
+ $_dir_sep = $smarty->use_sub_dirs ? $smarty->ds : '^';
if (isset($resource_name)) {
$_save_stat = $smarty->caching;
$smarty->caching = false;
/* @var Smarty_Internal_Template $tpl */
- $tpl = new $smarty->template_class($resource_name, $smarty);
+ $tpl = $smarty->createTemplate($resource_name);
$smarty->caching = $_save_stat;
- if ($tpl->source->exists) {
- // remove from compileds cache
- $tpl->source->compileds = array();
- $_resource_part_1 = basename(str_replace('^', DS, $tpl->compiled->filepath));
+ if (!$tpl->source->handler->uncompiled && !$tpl->source->handler->recompiled && $tpl->source->exists) {
+ $_resource_part_1 = basename(str_replace('^', $smarty->ds, $tpl->compiled->filepath));
$_resource_part_1_length = strlen($_resource_part_1);
} else {
return 0;
@@ -75,27 +75,30 @@ class Smarty_Internal_Method_ClearCompiledTemplate
}
$_compile = new RecursiveIteratorIterator($_compileDirs, RecursiveIteratorIterator::CHILD_FIRST);
foreach ($_compile as $_file) {
- if (substr(basename($_file->getPathname()), 0, 1) == '.' || strpos($_file, '.svn') !== false) {
+ if (substr(basename($_file->getPathname()), 0, 1) == '.') {
continue;
}
-
$_filepath = (string) $_file;
-
if ($_file->isDir()) {
if (!$_compile->isDot()) {
// delete folder if empty
@rmdir($_file->getPathname());
}
} else {
+ // delete only php files
+ if (substr($_filepath, -4) !== '.php') {
+ continue;
+ }
$unlink = false;
- if ((!isset($_compile_id) || (isset($_filepath[$_compile_id_part_length]) &&
- $a = !strncmp($_filepath, $_compile_id_part, $_compile_id_part_length))) &&
- (!isset($resource_name) || (isset($_filepath[$_resource_part_1_length]) &&
- substr_compare($_filepath, $_resource_part_1, - $_resource_part_1_length,
- $_resource_part_1_length) == 0) ||
- (isset($_filepath[$_resource_part_2_length]) &&
- substr_compare($_filepath, $_resource_part_2, - $_resource_part_2_length,
- $_resource_part_2_length) == 0))
+ if ((!isset($_compile_id) || (isset($_filepath[ $_compile_id_part_length ]) && $a =
+ !strncmp($_filepath, $_compile_id_part, $_compile_id_part_length))) &&
+ (!isset($resource_name) || (isset($_filepath[ $_resource_part_1_length ]) &&
+ substr_compare($_filepath, $_resource_part_1,
+ - $_resource_part_1_length, $_resource_part_1_length) ==
+ 0) || (isset($_filepath[ $_resource_part_2_length ]) &&
+ substr_compare($_filepath, $_resource_part_2,
+ - $_resource_part_2_length,
+ $_resource_part_2_length) == 0))
) {
if (isset($exp_time)) {
if (time() - @filemtime($_filepath) >= $exp_time) {
@@ -108,17 +111,12 @@ class Smarty_Internal_Method_ClearCompiledTemplate
if ($unlink && @unlink($_filepath)) {
$_count ++;
- if (function_exists('opcache_invalidate')) {
- opcache_invalidate($_filepath);
+ if (function_exists('opcache_invalidate') && strlen(ini_get("opcache.restrict_api")) < 1) {
+ opcache_invalidate($_filepath, true);
}
}
}
}
- // clear template objects cache
- $smarty->_cache['isCached'] = array();
- if (isset($smarty->ext->_subtemplate)) {
- $smarty->ext->_subtemplate->tplObjects = array();
- }
return $_count;
}
} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_clearconfig.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearconfig.php
index 9c6167f4d..371247807 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_clearconfig.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearconfig.php
@@ -32,7 +32,7 @@ class Smarty_Internal_Method_ClearConfig
public function clearConfig(Smarty_Internal_Data $data, $name = null)
{
if (isset($name)) {
- unset($data->config_vars[$name]);
+ unset($data->config_vars[ $name ]);
} else {
$data->config_vars = array();
}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_compileallconfig.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_compileallconfig.php
index 4d6be65c4..767031bd9 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_compileallconfig.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_compileallconfig.php
@@ -17,15 +17,16 @@ class Smarty_Internal_Method_CompileAllConfig extends Smarty_Internal_Method_Com
*
* @api Smarty::compileAllConfig()
*
- * @param \Smarty $smarty
+ * @param \Smarty $smarty passed smarty object
* @param string $extension file extension
* @param bool $force_compile force all to recompile
* @param int $time_limit
* @param int $max_errors
*
- * @return integer number of template files recompiled
+ * @return int number of template files recompiled
*/
- public function compileAllConfig(Smarty $smarty, $extension = '.conf', $force_compile = false, $time_limit = 0, $max_errors = null)
+ public function compileAllConfig(Smarty $smarty, $extension = '.conf', $force_compile = false, $time_limit = 0,
+ $max_errors = null)
{
return $this->compileAll($smarty, $extension, $force_compile, $time_limit, $max_errors, true);
}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_compilealltemplates.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_compilealltemplates.php
index 685fc0c0d..0abed2124 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_compilealltemplates.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_compilealltemplates.php
@@ -23,7 +23,7 @@ class Smarty_Internal_Method_CompileAllTemplates
*
* @api Smarty::compileAllTemplates()
*
- * @param \Smarty $smarty
+ * @param \Smarty $smarty passed smarty object
* @param string $extension file extension
* @param bool $force_compile force all to recompile
* @param int $time_limit
@@ -31,7 +31,8 @@ class Smarty_Internal_Method_CompileAllTemplates
*
* @return integer number of template files recompiled
*/
- public function compileAllTemplates(Smarty $smarty, $extension = '.tpl', $force_compile = false, $time_limit = 0, $max_errors = null)
+ public function compileAllTemplates(Smarty $smarty, $extension = '.tpl', $force_compile = false, $time_limit = 0,
+ $max_errors = null)
{
return $this->compileAll($smarty, $extension, $force_compile, $time_limit, $max_errors);
}
@@ -48,7 +49,8 @@ class Smarty_Internal_Method_CompileAllTemplates
*
* @return int number of template files compiled
*/
- protected function compileAll(Smarty $smarty, $extension, $force_compile, $time_limit, $max_errors, $isConfig = false)
+ protected function compileAll(Smarty $smarty, $extension, $force_compile, $time_limit, $max_errors,
+ $isConfig = false)
{
// switch off time limit
if (function_exists('set_time_limit')) {
@@ -59,7 +61,8 @@ class Smarty_Internal_Method_CompileAllTemplates
$sourceDir = $isConfig ? $smarty->getConfigDir() : $smarty->getTemplateDir();
// loop over array of source directories
foreach ($sourceDir as $_dir) {
- $_dir_1 = new RecursiveDirectoryIterator($_dir);
+ $_dir_1 = new RecursiveDirectoryIterator($_dir, defined('FilesystemIterator::FOLLOW_SYMLINKS') ?
+ FilesystemIterator::FOLLOW_SYMLINKS : 0);
$_dir_2 = new RecursiveIteratorIterator($_dir_1);
foreach ($_dir_2 as $_fileinfo) {
$_file = $_fileinfo->getFilename();
@@ -69,19 +72,24 @@ class Smarty_Internal_Method_CompileAllTemplates
if (!substr_compare($_file, $extension, - strlen($extension)) == 0) {
continue;
}
- if ($_fileinfo->getPath() == !substr($_dir, 0, - 1)) {
- $_file = substr($_fileinfo->getPath(), strlen($_dir)) . DS . $_file;
+ if ($_fileinfo->getPath() !== substr($_dir, 0, - 1)) {
+ $_file = substr($_fileinfo->getPath(), strlen($_dir)) . $smarty->ds . $_file;
}
echo "\n<br>", $_dir, '---', $_file;
flush();
$_start_time = microtime(true);
$_smarty = clone $smarty;
+ //
+ $_smarty->_cache = array();
+ $_smarty->ext = new Smarty_Internal_Extension_Handler();
+ $_smarty->ext->objType = $_smarty->_objType;
$_smarty->force_compile = $force_compile;
try {
/* @var Smarty_Internal_Template $_tpl */
$_tpl = new $smarty->template_class($_file, $_smarty);
$_tpl->caching = Smarty::CACHING_OFF;
- $_tpl->source = $isConfig ? Smarty_Template_Config::load($_tpl) : Smarty_Template_Source::load($_tpl);
+ $_tpl->source =
+ $isConfig ? Smarty_Template_Config::load($_tpl) : Smarty_Template_Source::load($_tpl);
if ($_tpl->mustCompile()) {
$_tpl->compileTemplateSource();
$_count ++;
@@ -98,7 +106,7 @@ class Smarty_Internal_Method_CompileAllTemplates
}
// free memory
unset($_tpl);
- $_smarty->_cache['template_objects'] = array();
+ $_smarty->_clearTemplateCache();
if ($max_errors !== null && $_error_count == $max_errors) {
echo "\n<br><br>too many errors\n";
exit();
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_configload.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_configload.php
index 7b99e35c6..6113eaf98 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_configload.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_configload.php
@@ -34,7 +34,7 @@ class Smarty_Internal_Method_ConfigLoad
*/
public function configLoad(Smarty_Internal_Data $data, $config_file, $sections = null)
{
- $this->_loadConfigFile($data, $config_file, $sections, 0);
+ $this->_loadConfigFile($data, $config_file, $sections, null);
return $data;
}
@@ -57,17 +57,16 @@ class Smarty_Internal_Method_ConfigLoad
public function _loadConfigFile(Smarty_Internal_Data $data, $config_file, $sections = null, $scope = 0)
{
/* @var \Smarty $smarty */
- $smarty = isset($data->smarty) ? $data->smarty : $data;
+ $smarty = $data->_getSmartyObj();
/* @var \Smarty_Internal_Template $confObj */
- $confObj = new Smarty_Internal_Template($config_file, $smarty, $data);
+ $confObj = new Smarty_Internal_Template($config_file, $smarty, $data, null, null, null, null, true);
$confObj->caching = Smarty::CACHING_OFF;
- $confObj->source = Smarty_Template_Config::load($confObj);
$confObj->source->config_sections = $sections;
$confObj->source->scope = $scope;
$confObj->compiled = Smarty_Template_Compiled::load($confObj);
$confObj->compiled->render($confObj);
- if ($data->_objType == 2) {
- $data->compiled->file_dependency[$confObj->source->uid] =
+ if ($data->_isTplObj()) {
+ $data->compiled->file_dependency[ $confObj->source->uid ] =
array($confObj->source->filepath, $confObj->source->getTimeStamp(), $confObj->source->type);
}
}
@@ -76,42 +75,31 @@ class Smarty_Internal_Method_ConfigLoad
* load config variables into template object
*
* @param \Smarty_Internal_Template $tpl
- * @param array $_config_vars
+ * @param array $new_config_vars
*
*/
- public function _loadConfigVars(Smarty_Internal_Template $tpl, $_config_vars)
+ public function _loadConfigVars(Smarty_Internal_Template $tpl, $new_config_vars)
{
- $this->_assignConfigVars($tpl->parent, $tpl, $_config_vars);
- $scope = $tpl->source->scope;
- if (!$scope && !$tpl->scope) {
- return;
- }
- foreach (array($scope, $tpl->scope) as $s) {
- $s = ($bubble_up = $s >= Smarty::SCOPE_BUBBLE_UP) ? $s - Smarty::SCOPE_BUBBLE_UP : $s;
- if ($bubble_up && $s) {
- $ptr = $tpl->parent->parent;
- if (isset($ptr)) {
- $this->_assignConfigVars($ptr, $tpl, $_config_vars);
- $ptr = $ptr->parent;
- }
- if ($s == Smarty::SCOPE_PARENT) {
- continue;
+ $this->_assignConfigVars($tpl->parent->config_vars, $tpl, $new_config_vars);
+ $tagScope = $tpl->source->scope;
+ if ($tagScope >= 0) {
+ if ($tagScope == Smarty::SCOPE_LOCAL) {
+ $this->_updateVarStack($tpl, $new_config_vars);
+ $tagScope = 0;
+ if (!$tpl->scope) {
+ return;
}
- while (isset($ptr) && $ptr->_objType == 2) {
- $this->_assignConfigVars($ptr, $tpl, $_config_vars);
- $ptr = $ptr->parent;
- }
- if ($s == Smarty::SCOPE_TPL_ROOT) {
- continue;
- } elseif ($s == Smarty::SCOPE_SMARTY) {
- $this->_assignConfigVars($tpl->smarty, $tpl, $_config_vars);
- } elseif ($s == Smarty::SCOPE_GLOBAL) {
- $this->_assignConfigVars($tpl->smarty, $tpl, $_config_vars);
- } elseif ($s == Smarty::SCOPE_ROOT) {
- while (isset($ptr->parent)) {
- $ptr = $ptr->parent;
+ }
+ if ($tpl->parent->_isTplObj() && ($tagScope || $tpl->parent->scope)) {
+ $mergedScope = $tagScope | $tpl->scope;
+ if ($mergedScope) {
+ // update scopes
+ foreach ($tpl->smarty->ext->_updateScope->_getAffectedScopes($tpl->parent, $mergedScope) as $ptr) {
+ $this->_assignConfigVars($ptr->config_vars, $tpl, $new_config_vars);
+ if ($tagScope && $ptr->_isTplObj() && isset($tpl->_cache[ 'varStack' ])) {
+ $this->_updateVarStack($tpl, $new_config_vars);
+ }
}
- $this->_assignConfigVars($ptr, $tpl, $_config_vars);
}
}
}
@@ -120,32 +108,30 @@ class Smarty_Internal_Method_ConfigLoad
/**
* Assign all config variables in given scope
*
- * @param \Smarty_Internal_Data $scope_ptr
+ * @param array $config_vars config variables in scope
* @param \Smarty_Internal_Template $tpl
- * @param array $_config_vars
+ * @param array $new_config_vars loaded config variables
*/
- public function _assignConfigVars(Smarty_Internal_Data $scope_ptr, Smarty_Internal_Template $tpl, $_config_vars)
+ public function _assignConfigVars(&$config_vars, Smarty_Internal_Template $tpl, $new_config_vars)
{
// copy global config vars
- foreach ($_config_vars['vars'] as $variable => $value) {
- if ($tpl->smarty->config_overwrite || !isset($scope_ptr->config_vars[$variable])) {
- $scope_ptr->config_vars[$variable] = $value;
+ foreach ($new_config_vars[ 'vars' ] as $variable => $value) {
+ if ($tpl->smarty->config_overwrite || !isset($config_vars[ $variable ])) {
+ $config_vars[ $variable ] = $value;
} else {
- $scope_ptr->config_vars[$variable] =
- array_merge((array) $scope_ptr->config_vars[$variable], (array) $value);
+ $config_vars[ $variable ] = array_merge((array) $config_vars[ $variable ], (array) $value);
}
}
// scan sections
$sections = $tpl->source->config_sections;
if (!empty($sections)) {
foreach ((array) $sections as $tpl_section) {
- if (isset($_config_vars['sections'][$tpl_section])) {
- foreach ($_config_vars['sections'][$tpl_section]['vars'] as $variable => $value) {
- if ($tpl->smarty->config_overwrite || !isset($scope_ptr->config_vars[$variable])) {
- $scope_ptr->config_vars[$variable] = $value;
+ if (isset($new_config_vars[ 'sections' ][ $tpl_section ])) {
+ foreach ($new_config_vars[ 'sections' ][ $tpl_section ][ 'vars' ] as $variable => $value) {
+ if ($tpl->smarty->config_overwrite || !isset($config_vars[ $variable ])) {
+ $config_vars[ $variable ] = $value;
} else {
- $scope_ptr->config_vars[$variable] =
- array_merge((array) $scope_ptr->config_vars[$variable], (array) $value);
+ $config_vars[ $variable ] = array_merge((array) $config_vars[ $variable ], (array) $value);
}
}
}
@@ -154,26 +140,41 @@ class Smarty_Internal_Method_ConfigLoad
}
/**
+ * Update config variables in template local variable stack
+ *
+ * @param \Smarty_Internal_Template $tpl
+ * @param array $config_vars
+ */
+ public function _updateVarStack(Smarty_Internal_Template $tpl, $config_vars)
+ {
+ $i = 0;
+ while (isset($tpl->_cache[ 'varStack' ][ $i ])) {
+ $this->_assignConfigVars($tpl->_cache[ 'varStack' ][ $i ][ 'config' ], $tpl, $config_vars);
+ $i ++;
+ }
+ }
+
+ /**
* gets a config variable value
*
- * @param \Smarty_Internal_Template $tpl template object
- * @param string $varName the name of the config variable
- * @param bool $errorEnable
+ * @param \Smarty|\Smarty_Internal_Data|\Smarty_Internal_Template $data
+ * @param string $varName the name of the config variable
+ * @param bool $errorEnable
*
- * @return mixed the value of the config variable
+ * @return null|string the value of the config variable
*/
- public function _getConfigVariable(Smarty_Internal_Template $tpl, $varName, $errorEnable = true)
+ public function _getConfigVariable(Smarty_Internal_Data $data, $varName, $errorEnable = true)
{
- $_ptr = $tpl;
+ $_ptr = $data;
while ($_ptr !== null) {
- if (isset($_ptr->config_vars[$varName])) {
+ if (isset($_ptr->config_vars[ $varName ])) {
// found it, return it
- return $_ptr->config_vars[$varName];
+ return $_ptr->config_vars[ $varName ];
}
// not found, try at parent
$_ptr = $_ptr->parent;
}
- if ($tpl->smarty->error_unassigned && $errorEnable) {
+ if ($data->smarty->error_unassigned && $errorEnable) {
// force a notice
$x = $$varName;
}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_createdata.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_createdata.php
index 600bc777c..43ce89432 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_createdata.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_createdata.php
@@ -34,7 +34,7 @@ class Smarty_Internal_Method_CreateData
public function createData(Smarty_Internal_TemplateBase $obj, Smarty_Internal_Data $parent = null, $name = null)
{
/* @var Smarty $smarty */
- $smarty = isset($this->smarty) ? $this->smarty : $obj;
+ $smarty = $obj->_getSmartyObj();
$dataObj = new Smarty_Data($parent, $smarty, $name);
if ($smarty->debugging) {
Smarty_Internal_Debug::register_data($dataObj);
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_getautoloadfilters.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getautoloadfilters.php
index e1a7801f7..d945a01e3 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_getautoloadfilters.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getautoloadfilters.php
@@ -27,10 +27,10 @@ class Smarty_Internal_Method_GetAutoloadFilters extends Smarty_Internal_Method_S
*/
public function getAutoloadFilters(Smarty_Internal_TemplateBase $obj, $type = null)
{
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
+ $smarty = $obj->_getSmartyObj();
if ($type !== null) {
$this->_checkFilterType($type);
- return isset($smarty->autoload_filters[$type]) ? $smarty->autoload_filters[$type] : array();
+ return isset($smarty->autoload_filters[ $type ]) ? $smarty->autoload_filters[ $type ] : array();
}
return $smarty->autoload_filters;
}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getconfigvariable.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getconfigvariable.php
new file mode 100644
index 000000000..4dd398208
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getconfigvariable.php
@@ -0,0 +1,34 @@
+<?php
+
+/**
+ * Smarty Method GetConfigVariable
+ *
+ * Smarty::getConfigVariable() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_GetConfigVariable
+{
+ /**
+ * Valid for all objects
+ *
+ * @var int
+ */
+ public $objMap = 7;
+
+ /**
+ * gets a config variable value
+ *
+ * @param \Smarty|\Smarty_Internal_Data|\Smarty_Internal_Template $data
+ * @param string $varName the name of the config variable
+ * @param bool $errorEnable
+ *
+ * @return null|string the value of the config variable
+ */
+ public function getConfigVariable(Smarty_Internal_Data $data, $varName = null, $errorEnable = true)
+ {
+ return $data->ext->configLoad->_getConfigVariable($data, $varName, $errorEnable);
+ }
+} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_getconfigvars.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getconfigvars.php
index b15672168..b75cf8179 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_getconfigvars.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getconfigvars.php
@@ -36,8 +36,8 @@ class Smarty_Internal_Method_GetConfigVars
$var_array = array();
while ($_ptr !== null) {
if (isset($varname)) {
- if (isset($_ptr->config_vars[$varname])) {
- return $_ptr->config_vars[$varname];
+ if (isset($_ptr->config_vars[ $varname ])) {
+ return $_ptr->config_vars[ $varname ];
}
} else {
$var_array = array_merge($_ptr->config_vars, $var_array);
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_getdebugtemplate.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getdebugtemplate.php
index 3c3432ce1..52073c14e 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_getdebugtemplate.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getdebugtemplate.php
@@ -22,14 +22,14 @@ class Smarty_Internal_Method_GetDebugTemplate
* return name of debugging template
*
* @api Smarty::getDebugTemplate()
-
+ *
* @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
*
* @return string
*/
public function getDebugTemplate(Smarty_Internal_TemplateBase $obj)
{
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
+ $smarty = $obj->_getSmartyObj();
return $smarty->debug_tpl;
}
} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_getdefaultmodifiers.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getdefaultmodifiers.php
index 32e0cc413..f65ab7914 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_getdefaultmodifiers.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getdefaultmodifiers.php
@@ -29,7 +29,7 @@ class Smarty_Internal_Method_GetDefaultModifiers
*/
public function getDefaultModifiers(Smarty_Internal_TemplateBase $obj)
{
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
+ $smarty = $obj->_getSmartyObj();
return $smarty->default_modifiers;
}
} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getglobal.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getglobal.php
new file mode 100644
index 000000000..7a8a9bc71
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getglobal.php
@@ -0,0 +1,47 @@
+<?php
+
+/**
+ * Smarty Method GetGlobal
+ *
+ * Smarty::getGlobal() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_GetGlobal
+{
+ /**
+ * Valid for all objects
+ *
+ * @var int
+ */
+ public $objMap = 7;
+
+ /**
+ * Returns a single or all global variables
+ *
+ * @api Smarty::getGlobal()
+ *
+ * @param \Smarty_Internal_Data $data
+ * @param string $varName variable name or null
+ *
+ * @return string variable value or or array of variables
+ */
+ public function getGlobal(Smarty_Internal_Data $data, $varName = null)
+ {
+ if (isset($varName)) {
+ if (isset(Smarty::$global_tpl_vars[ $varName ])) {
+ return Smarty::$global_tpl_vars[ $varName ]->value;
+ } else {
+ return '';
+ }
+ } else {
+ $_result = array();
+ foreach (Smarty::$global_tpl_vars AS $key => $var) {
+ $_result[ $key ] = $var->value;
+ }
+ return $_result;
+ }
+ }
+} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_getregisteredobject.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getregisteredobject.php
index be0c0dba2..c5c064665 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_getregisteredobject.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getregisteredobject.php
@@ -32,13 +32,13 @@ class Smarty_Internal_Method_GetRegisteredObject
*/
public function getRegisteredObject(Smarty_Internal_TemplateBase $obj, $object_name)
{
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
- if (!isset($smarty->registered_objects[$object_name])) {
+ $smarty = $obj->_getSmartyObj();
+ if (!isset($smarty->registered_objects[ $object_name ])) {
throw new SmartyException("'$object_name' is not a registered object");
}
- if (!is_object($smarty->registered_objects[$object_name][0])) {
+ if (!is_object($smarty->registered_objects[ $object_name ][ 0 ])) {
throw new SmartyException("registered '$object_name' is not an object");
}
- return $smarty->registered_objects[$object_name][0];
+ return $smarty->registered_objects[ $object_name ][ 0 ];
}
} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_getstreamvariable.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getstreamvariable.php
index b922fd088..b922fd088 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_getstreamvariable.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getstreamvariable.php
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_gettags.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_gettags.php
index dd9e8d1ca..5718b69e9 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_gettags.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_gettags.php
@@ -33,10 +33,10 @@ class Smarty_Internal_Method_GetTags
public function getTags(Smarty_Internal_TemplateBase $obj, $template = null)
{
/* @var Smarty $smarty */
- $smarty = isset($this->smarty) ? $this->smarty : $obj;
- if ($obj->_objType == 2 && !isset($template)) {
+ $smarty = $obj->_getSmartyObj();
+ if ($obj->_isTplObj() && !isset($template)) {
$tpl = clone $obj;
- } elseif (isset($template) && $template->_objType == 2) {
+ } elseif (isset($template) && $template->_isTplObj()) {
$tpl = clone $template;
} elseif (isset($template) && is_string($template)) {
/* @var Smarty_Internal_Template $tpl */
@@ -48,14 +48,14 @@ class Smarty_Internal_Method_GetTags
}
if (isset($tpl)) {
$tpl->smarty = clone $tpl->smarty;
- $tpl->smarty->_cache['get_used_tags'] = true;
- $tpl->_cache['used_tags'] = array();
+ $tpl->smarty->_cache[ 'get_used_tags' ] = true;
+ $tpl->_cache[ 'used_tags' ] = array();
$tpl->smarty->merge_compiled_includes = false;
$tpl->smarty->disableSecurity();
$tpl->caching = false;
$tpl->loadCompiler();
$tpl->compiler->compileTemplate($tpl);
- return $tpl->_cache['used_tags'];
+ return $tpl->_cache[ 'used_tags' ];
}
throw new SmartyException("Missing template specification");
}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_gettemplatevars.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_gettemplatevars.php
index 235bece46..1759646f3 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_gettemplatevars.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_gettemplatevars.php
@@ -25,13 +25,14 @@ class Smarty_Internal_Method_GetTemplateVars
* @link http://www.smarty.net/docs/en/api.get.template.vars.tpl
*
* @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data
- * @param string $varName variable name or null
- * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $_ptr optional pointer to data object
+ * @param string $varName variable name or null
+ * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $_ptr optional pointer to data object
* @param bool $searchParents include parent templates?
*
* @return mixed variable value or or array of variables
*/
- public function getTemplateVars(Smarty_Internal_Data $data, $varName = null, Smarty_Internal_Data $_ptr = null, $searchParents = true)
+ public function getTemplateVars(Smarty_Internal_Data $data, $varName = null, Smarty_Internal_Data $_ptr = null,
+ $searchParents = true)
{
if (isset($varName)) {
$_var = $this->_getVariable($data, $varName, $_ptr, $searchParents, false);
@@ -48,7 +49,7 @@ class Smarty_Internal_Method_GetTemplateVars
while ($_ptr !== null) {
foreach ($_ptr->tpl_vars AS $key => $var) {
if (!array_key_exists($key, $_result)) {
- $_result[$key] = $var->value;
+ $_result[ $key ] = $var->value;
}
}
// not found, try at parent
@@ -61,7 +62,7 @@ class Smarty_Internal_Method_GetTemplateVars
if ($searchParents && isset(Smarty::$global_tpl_vars)) {
foreach (Smarty::$global_tpl_vars AS $key => $var) {
if (!array_key_exists($key, $_result)) {
- $_result[$key] = $var->value;
+ $_result[ $key ] = $var->value;
}
}
}
@@ -73,22 +74,23 @@ class Smarty_Internal_Method_GetTemplateVars
* gets the object of a Smarty variable
*
* @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data
- * @param string $varName the name of the Smarty variable
- * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $_ptr optional pointer to data object
- * @param bool $searchParents search also in parent data
+ * @param string $varName the name of the Smarty variable
+ * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $_ptr optional pointer to data object
+ * @param bool $searchParents search also in parent data
* @param bool $errorEnable
*
* @return \Smarty_Variable
*/
- public function _getVariable(Smarty_Internal_Data $data, $varName, Smarty_Internal_Data $_ptr = null, $searchParents = true, $errorEnable = true)
+ public function _getVariable(Smarty_Internal_Data $data, $varName, Smarty_Internal_Data $_ptr = null,
+ $searchParents = true, $errorEnable = true)
{
if ($_ptr === null) {
$_ptr = $data;
}
while ($_ptr !== null) {
- if (isset($_ptr->tpl_vars[$varName])) {
+ if (isset($_ptr->tpl_vars[ $varName ])) {
// found it, return it
- return $_ptr->tpl_vars[$varName];
+ return $_ptr->tpl_vars[ $varName ];
}
// not found, try at parent
if ($searchParents) {
@@ -97,9 +99,9 @@ class Smarty_Internal_Method_GetTemplateVars
$_ptr = null;
}
}
- if (isset(Smarty::$global_tpl_vars[$varName])) {
+ if (isset(Smarty::$global_tpl_vars[ $varName ])) {
// found it, return it
- return Smarty::$global_tpl_vars[$varName];
+ return Smarty::$global_tpl_vars[ $varName ];
}
/* @var \Smarty $smarty */
$smarty = isset($data->smarty) ? $data->smarty : $data;
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_loadfilter.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_loadfilter.php
index 7fb11179f..d092d876e 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_loadfilter.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_loadfilter.php
@@ -41,12 +41,12 @@ class Smarty_Internal_Method_LoadFilter
*/
public function loadFilter(Smarty_Internal_TemplateBase $obj, $type, $name)
{
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
+ $smarty = $obj->_getSmartyObj();
$this->_checkFilterType($type);
$_plugin = "smarty_{$type}filter_{$name}";
$_filter_name = $_plugin;
if (is_callable($_plugin)) {
- $smarty->registered_filters[$type][$_filter_name] = $_plugin;
+ $smarty->registered_filters[ $type ][ $_filter_name ] = $_plugin;
return true;
}
if ($smarty->loadPlugin($_plugin)) {
@@ -54,7 +54,7 @@ class Smarty_Internal_Method_LoadFilter
$_plugin = array($_plugin, 'execute');
}
if (is_callable($_plugin)) {
- $smarty->registered_filters[$type][$_filter_name] = $_plugin;
+ $smarty->registered_filters[ $type ][ $_filter_name ] = $_plugin;
return true;
}
}
@@ -70,7 +70,7 @@ class Smarty_Internal_Method_LoadFilter
*/
public function _checkFilterType($type)
{
- if (!isset($this->filterTypes[$type])) {
+ if (!isset($this->filterTypes[ $type ])) {
throw new SmartyException("Illegal filter type \"{$type}\"");
}
}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_loadplugin.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_loadplugin.php
index c153f55f0..50f3bfc2c 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_loadplugin.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_loadplugin.php
@@ -39,21 +39,21 @@ class Smarty_Internal_Method_LoadPlugin
if (!preg_match('#^smarty_((internal)|([^_]+))_(.+)$#i', $plugin_name, $match)) {
throw new SmartyException("plugin {$plugin_name} is not a valid name format");
}
- if (!empty($match[2])) {
+ if (!empty($match[ 2 ])) {
$file = SMARTY_SYSPLUGINS_DIR . strtolower($plugin_name) . '.php';
- if (isset($this->plugin_files[$file])) {
- if ($this->plugin_files[$file] !== false) {
- return $this->plugin_files[$file];
+ if (isset($this->plugin_files[ $file ])) {
+ if ($this->plugin_files[ $file ] !== false) {
+ return $this->plugin_files[ $file ];
} else {
return false;
}
} else {
if (is_file($file)) {
- $this->plugin_files[$file] = $file;
+ $this->plugin_files[ $file ] = $file;
require_once($file);
return $file;
} else {
- $this->plugin_files[$file] = false;
+ $this->plugin_files[ $file ] = false;
return false;
}
}
@@ -62,16 +62,16 @@ class Smarty_Internal_Method_LoadPlugin
$_plugin_filename = "{$match[1]}.{$match[4]}.php";
$_lower_filename = strtolower($_plugin_filename);
if (isset($this->plugin_files)) {
- if (isset($this->plugin_files['plugins_dir'][$_lower_filename])) {
- if (!$smarty->use_include_path || $this->plugin_files['plugins_dir'][$_lower_filename] !== false) {
- return $this->plugin_files['plugins_dir'][$_lower_filename];
+ if (isset($this->plugin_files[ 'plugins_dir' ][ $_lower_filename ])) {
+ if (!$smarty->use_include_path || $this->plugin_files[ 'plugins_dir' ][ $_lower_filename ] !== false) {
+ return $this->plugin_files[ 'plugins_dir' ][ $_lower_filename ];
}
}
if (!$smarty->use_include_path || $smarty->ext->_getIncludePath->isNewIncludePath($smarty)) {
- unset($this->plugin_files['include_path']);
+ unset($this->plugin_files[ 'include_path' ]);
} else {
- if (isset($this->plugin_files['include_path'][$_lower_filename])) {
- return $this->plugin_files['include_path'][$_lower_filename];
+ if (isset($this->plugin_files[ 'include_path' ][ $_lower_filename ])) {
+ return $this->plugin_files[ 'include_path' ][ $_lower_filename ];
}
}
}
@@ -80,17 +80,17 @@ class Smarty_Internal_Method_LoadPlugin
$_file_names[] = $_lower_filename;
}
$_p_dirs = $smarty->getPluginsDir();
- if (!isset($this->plugin_files['plugins_dir'][$_lower_filename])) {
+ if (!isset($this->plugin_files[ 'plugins_dir' ][ $_lower_filename ])) {
// loop through plugin dirs and find the plugin
foreach ($_p_dirs as $_plugin_dir) {
foreach ($_file_names as $name) {
$file = $_plugin_dir . $name;
if (is_file($file)) {
- $this->plugin_files['plugins_dir'][$_lower_filename] = $file;
+ $this->plugin_files[ 'plugins_dir' ][ $_lower_filename ] = $file;
require_once($file);
return $file;
}
- $this->plugin_files['plugins_dir'][$_lower_filename] = false;
+ $this->plugin_files[ 'plugins_dir' ][ $_lower_filename ] = false;
}
}
}
@@ -98,7 +98,7 @@ class Smarty_Internal_Method_LoadPlugin
foreach ($_file_names as $_file_name) {
// try PHP include_path
$file = $smarty->ext->_getIncludePath->getIncludePath($_p_dirs, $_file_name, $smarty);
- $this->plugin_files['include_path'][$_lower_filename] = $file;
+ $this->plugin_files[ 'include_path' ][ $_lower_filename ] = $file;
if ($file !== false) {
require_once($file);
return $file;
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_mustcompile.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_mustcompile.php
index f28a68e6d..0950ba9cf 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_mustcompile.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_mustcompile.php
@@ -1,7 +1,7 @@
<?php
/**
- * Smarty Method UnloadFilter
+ * Smarty Method MustCompile
*
* Smarty_Internal_Template::mustCompile() method
*
@@ -31,7 +31,7 @@ class Smarty_Internal_Method_MustCompile
public function mustCompile(Smarty_Internal_Template $_template)
{
if (!$_template->source->exists) {
- if (isset($_template->parent) && $_template->parent->_objType == 2) {
+ if ($_template->_isSubTpl()) {
$parent_resource = " in '$_template->parent->template_resource}'";
} else {
$parent_resource = '';
@@ -40,8 +40,10 @@ class Smarty_Internal_Method_MustCompile
}
if ($_template->mustCompile === null) {
$_template->mustCompile = (!$_template->source->handler->uncompiled &&
- ($_template->smarty->force_compile || $_template->source->handler->recompiled || !$_template->compiled->exists ||
- ($_template->smarty->compile_check && $_template->compiled->getTimeStamp() < $_template->source->getTimeStamp())));
+ ($_template->smarty->force_compile || $_template->source->handler->recompiled ||
+ !$_template->compiled->exists || ($_template->smarty->compile_check &&
+ $_template->compiled->getTimeStamp() <
+ $_template->source->getTimeStamp())));
}
return $_template->mustCompile;
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_registercacheresource.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registercacheresource.php
index 55c5090ac..ae3872722 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_registercacheresource.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registercacheresource.php
@@ -30,10 +30,11 @@ class Smarty_Internal_Method_RegisterCacheResource
*
* @return \Smarty|\Smarty_Internal_Template
*/
- public function registerCacheResource(Smarty_Internal_TemplateBase $obj, $name, Smarty_CacheResource $resource_handler)
+ public function registerCacheResource(Smarty_Internal_TemplateBase $obj, $name,
+ Smarty_CacheResource $resource_handler)
{
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
- $smarty->registered_cache_resources[$name] = $resource_handler;
+ $smarty = $obj->_getSmartyObj();
+ $smarty->registered_cache_resources[ $name ] = $resource_handler;
return $obj;
}
} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_registerclass.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerclass.php
index d2e5e20bb..5469b98aa 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_registerclass.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerclass.php
@@ -34,13 +34,13 @@ class Smarty_Internal_Method_RegisterClass
*/
public function registerClass(Smarty_Internal_TemplateBase $obj, $class_name, $class_impl)
{
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
+ $smarty = $obj->_getSmartyObj();
// test if exists
if (!class_exists($class_impl)) {
throw new SmartyException("Undefined class '$class_impl' in register template class");
}
// register the class
- $smarty->registered_classes[$class_name] = $class_impl;
+ $smarty->registered_classes[ $class_name ] = $class_impl;
return $obj;
}
} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_registerdefaultconfighandler.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaultconfighandler.php
index 370aa38dc..43088a1d4 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_registerdefaultconfighandler.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaultconfighandler.php
@@ -31,7 +31,7 @@ class Smarty_Internal_Method_RegisterDefaultConfigHandler
*/
public function registerDefaultConfigHandler(Smarty_Internal_TemplateBase $obj, $callback)
{
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
+ $smarty = $obj->_getSmartyObj();
if (is_callable($callback)) {
$smarty->default_config_handler_func = $callback;
} else {
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_registerdefaultpluginhandler.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaultpluginhandler.php
index 80b801ce5..d9aecb4a9 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_registerdefaultpluginhandler.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaultpluginhandler.php
@@ -32,7 +32,7 @@ class Smarty_Internal_Method_RegisterDefaultPluginHandler
*/
public function registerDefaultPluginHandler(Smarty_Internal_TemplateBase $obj, $callback)
{
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
+ $smarty = $obj->_getSmartyObj();
if (is_callable($callback)) {
$smarty->default_plugin_handler_func = $callback;
} else {
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_registerdefaulttemplatehandler.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaulttemplatehandler.php
index 40979e7a6..569ea1062 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_registerdefaulttemplatehandler.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaulttemplatehandler.php
@@ -31,7 +31,7 @@ class Smarty_Internal_Method_RegisterDefaultTemplateHandler
*/
public function registerDefaultTemplateHandler(Smarty_Internal_TemplateBase $obj, $callback)
{
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
+ $smarty = $obj->_getSmartyObj();
if (is_callable($callback)) {
$smarty->default_template_handler_func = $callback;
} else {
@@ -44,6 +44,8 @@ class Smarty_Internal_Method_RegisterDefaultTemplateHandler
* get default content from template or config resource handler
*
* @param Smarty_Template_Source $source
+ *
+ * @throws \SmartyException
*/
public static function _getDefaultTemplate(Smarty_Template_Source $source)
{
@@ -53,20 +55,28 @@ class Smarty_Internal_Method_RegisterDefaultTemplateHandler
$default_handler = $source->smarty->default_template_handler_func;
}
$_content = $_timestamp = null;
- $_return = call_user_func_array($default_handler, array($source->type, $source->name, &$_content, &$_timestamp,
- $source->smarty));
+ $_return = call_user_func_array($default_handler,
+ array($source->type, $source->name, &$_content, &$_timestamp, $source->smarty));
if (is_string($_return)) {
$source->exists = is_file($_return);
if ($source->exists) {
$source->timestamp = filemtime($_return);
+ } else {
+ throw new SmartyException("Default handler: Unable to load " .
+ ($source->isConfig ? 'config' : 'template') .
+ " default file '{$_return}' for '{$source->type}:{$source->name}'");
}
- $source->filepath = $_return;
+ $source->name = $source->filepath = $_return;
+ $source->uid = sha1($source->filepath);
} elseif ($_return === true) {
$source->content = $_content;
- $source->timestamp = $_timestamp;
$source->exists = true;
- $source->handler->recompiled = true;
- $source->filepath = false;
+ $source->uid = $source->name = sha1($_content);
+ $source->handler = Smarty_Resource::load($source->smarty, 'eval');
+ } else {
+ $source->exists = false;
+ throw new SmartyException('Default handler: No ' . ($source->isConfig ? 'config' : 'template') .
+ " default content for '{$source->type}:{$source->name}'");
}
}
} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_registerfilter.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerfilter.php
index 84b2c2630..ea8f75a85 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_registerfilter.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerfilter.php
@@ -42,13 +42,13 @@ class Smarty_Internal_Method_RegisterFilter
*/
public function registerFilter(Smarty_Internal_TemplateBase $obj, $type, $callback, $name = null)
{
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
+ $smarty = $obj->_getSmartyObj();
$this->_checkFilterType($type);
$name = isset($name) ? $name : $this->_getFilterName($callback);
if (!is_callable($callback)) {
throw new SmartyException("{$type}filter \"{$name}\" not callable");
}
- $smarty->registered_filters[$type][$name] = $callback;
+ $smarty->registered_filters[ $type ][ $name ] = $callback;
return $obj;
}
@@ -62,9 +62,9 @@ class Smarty_Internal_Method_RegisterFilter
public function _getFilterName($function_name)
{
if (is_array($function_name)) {
- $_class_name = (is_object($function_name[0]) ? get_class($function_name[0]) : $function_name[0]);
+ $_class_name = (is_object($function_name[ 0 ]) ? get_class($function_name[ 0 ]) : $function_name[ 0 ]);
- return $_class_name . '_' . $function_name[1];
+ return $_class_name . '_' . $function_name[ 1 ];
} elseif (is_string($function_name)) {
return $function_name;
} else {
@@ -81,7 +81,7 @@ class Smarty_Internal_Method_RegisterFilter
*/
public function _checkFilterType($type)
{
- if (!isset($this->filterTypes[$type])) {
+ if (!isset($this->filterTypes[ $type ])) {
throw new SmartyException("Illegal filter type \"{$type}\"");
}
}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_registerobject.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerobject.php
index f27f1720b..ba699b219 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_registerobject.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerobject.php
@@ -44,9 +44,10 @@ class Smarty_Internal_Method_RegisterObject
* @return \Smarty|\Smarty_Internal_Template
* @throws \SmartyException
*/
- public function registerObject(Smarty_Internal_TemplateBase $obj, $object_name, $object, $allowed_methods_properties = array(), $format = true, $block_methods = array())
+ public function registerObject(Smarty_Internal_TemplateBase $obj, $object_name, $object,
+ $allowed_methods_properties = array(), $format = true, $block_methods = array())
{
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
+ $smarty = $obj->_getSmartyObj();
// test if allowed methods callable
if (!empty($allowed_methods_properties)) {
foreach ((array) $allowed_methods_properties as $method) {
@@ -64,8 +65,8 @@ class Smarty_Internal_Method_RegisterObject
}
}
// register the object
- $smarty->registered_objects[$object_name] = array($object, (array) $allowed_methods_properties,
- (boolean) $format, (array) $block_methods);
+ $smarty->registered_objects[ $object_name ] =
+ array($object, (array) $allowed_methods_properties, (boolean) $format, (array) $block_methods);
return $obj;
}
} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_registerplugin.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerplugin.php
index 95814581d..91f065920 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_registerplugin.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerplugin.php
@@ -35,15 +35,16 @@ class Smarty_Internal_Method_RegisterPlugin
* @return \Smarty|\Smarty_Internal_Template
* @throws SmartyException when the plugin tag is invalid
*/
- public function registerPlugin(Smarty_Internal_TemplateBase $obj, $type, $name, $callback, $cacheable = true, $cache_attr = null)
+ public function registerPlugin(Smarty_Internal_TemplateBase $obj, $type, $name, $callback, $cacheable = true,
+ $cache_attr = null)
{
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
- if (isset($smarty->registered_plugins[$type][$name])) {
+ $smarty = $obj->_getSmartyObj();
+ if (isset($smarty->registered_plugins[ $type ][ $name ])) {
throw new SmartyException("Plugin tag \"{$name}\" already registered");
} elseif (!is_callable($callback)) {
throw new SmartyException("Plugin \"{$name}\" not callable");
} else {
- $smarty->registered_plugins[$type][$name] = array($callback, (bool) $cacheable, (array) $cache_attr);
+ $smarty->registered_plugins[ $type ][ $name ] = array($callback, (bool) $cacheable, (array) $cache_attr);
}
return $obj;
}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_registerresource.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerresource.php
index 43246ee9b..44534b738 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_registerresource.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerresource.php
@@ -36,9 +36,9 @@ class Smarty_Internal_Method_RegisterResource
*/
public function registerResource(Smarty_Internal_TemplateBase $obj, $name, $resource_handler)
{
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
- $smarty->registered_resources[$name] = $resource_handler instanceof
- Smarty_Resource ? $resource_handler : array($resource_handler, false);
+ $smarty = $obj->_getSmartyObj();
+ $smarty->registered_resources[ $name ] =
+ $resource_handler instanceof Smarty_Resource ? $resource_handler : array($resource_handler, false);
return $obj;
}
} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_setautoloadfilters.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setautoloadfilters.php
index b1f965cd9..df5ca6405 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_setautoloadfilters.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setautoloadfilters.php
@@ -41,10 +41,10 @@ class Smarty_Internal_Method_SetAutoloadFilters
*/
public function setAutoloadFilters(Smarty_Internal_TemplateBase $obj, $filters, $type = null)
{
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
+ $smarty = $obj->_getSmartyObj();
if ($type !== null) {
$this->_checkFilterType($type);
- $smarty->autoload_filters[$type] = (array) $filters;
+ $smarty->autoload_filters[ $type ] = (array) $filters;
} else {
foreach ((array) $filters as $type => $value) {
$this->_checkFilterType($type);
@@ -63,7 +63,7 @@ class Smarty_Internal_Method_SetAutoloadFilters
*/
public function _checkFilterType($type)
{
- if (!isset($this->filterTypes[$type])) {
+ if (!isset($this->filterTypes[ $type ])) {
throw new SmartyException("Illegal filter type \"{$type}\"");
}
}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_setdebugtemplate.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setdebugtemplate.php
index 4ff5d7f82..76c87deb6 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_setdebugtemplate.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setdebugtemplate.php
@@ -31,7 +31,7 @@ class Smarty_Internal_Method_SetDebugTemplate
*/
public function setDebugTemplate(Smarty_Internal_TemplateBase $obj, $tpl_name)
{
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
+ $smarty = $obj->_getSmartyObj();
if (!is_readable($tpl_name)) {
throw new SmartyException("Unknown file '{$tpl_name}'");
}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_setdefaultmodifiers.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setdefaultmodifiers.php
index 5a707287a..81434b968 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_setdefaultmodifiers.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setdefaultmodifiers.php
@@ -31,7 +31,7 @@ class Smarty_Internal_Method_SetDefaultModifiers
*/
public function setDefaultModifiers(Smarty_Internal_TemplateBase $obj, $modifiers)
{
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
+ $smarty = $obj->_getSmartyObj();
$smarty->default_modifiers = (array) $modifiers;
return $obj;
}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_unloadfilter.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unloadfilter.php
index e3d966e1c..9aa1d229b 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_unloadfilter.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unloadfilter.php
@@ -26,14 +26,14 @@ class Smarty_Internal_Method_UnloadFilter extends Smarty_Internal_Method_LoadFil
*/
public function unloadFilter(Smarty_Internal_TemplateBase $obj, $type, $name)
{
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
+ $smarty = $obj->_getSmartyObj();
$this->_checkFilterType($type);
- if (isset($smarty->registered_filters[$type])) {
+ if (isset($smarty->registered_filters[ $type ])) {
$_filter_name = "smarty_{$type}filter_{$name}";
- if (isset($smarty->registered_filters[$type][$_filter_name])) {
- unset ($smarty->registered_filters[$type][$_filter_name]);
- if (empty($smarty->registered_filters[$type])) {
- unset($smarty->registered_filters[$type]);
+ if (isset($smarty->registered_filters[ $type ][ $_filter_name ])) {
+ unset ($smarty->registered_filters[ $type ][ $_filter_name ]);
+ if (empty($smarty->registered_filters[ $type ])) {
+ unset($smarty->registered_filters[ $type ]);
}
}
}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_unregistercacheresource.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregistercacheresource.php
index 80381015a..1a157ffb6 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_unregistercacheresource.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregistercacheresource.php
@@ -21,19 +21,19 @@ class Smarty_Internal_Method_UnregisterCacheResource
/**
* Registers a resource to fetch a template
*
- * @api Smarty::unregisterCacheResource()
- * @link http://www.smarty.net/docs/en/api.unregister.cacheresource.tpl
+ * @api Smarty::unregisterCacheResource()
+ * @link http://www.smarty.net/docs/en/api.unregister.cacheresource.tpl
*
* @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param string $type name of cache resource type
- *
+ * @param $name
+ *
* @return \Smarty|\Smarty_Internal_Template
*/
public function unregisterCacheResource(Smarty_Internal_TemplateBase $obj, $name)
{
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
- if (isset($smarty->registered_cache_resources[$name])) {
- unset($smarty->registered_cache_resources[$name]);
+ $smarty = $obj->_getSmartyObj();
+ if (isset($smarty->registered_cache_resources[ $name ])) {
+ unset($smarty->registered_cache_resources[ $name ]);
}
return $obj;
}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_unregisterfilter.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterfilter.php
index c80ae9a65..c5b88f57d 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_unregisterfilter.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterfilter.php
@@ -26,14 +26,14 @@ class Smarty_Internal_Method_UnregisterFilter extends Smarty_Internal_Method_Reg
*/
public function unregisterFilter(Smarty_Internal_TemplateBase $obj, $type, $callback)
{
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
+ $smarty = $obj->_getSmartyObj();
$this->_checkFilterType($type);
- if (isset($smarty->registered_filters[$type])) {
+ if (isset($smarty->registered_filters[ $type ])) {
$name = is_string($callback) ? $callback : $this->_getFilterName($callback);
- if (isset($smarty->registered_filters[$type][$name])) {
- unset($smarty->registered_filters[$type][$name]);
- if (empty($smarty->registered_filters[$type])) {
- unset($smarty->registered_filters[$type]);
+ if (isset($smarty->registered_filters[ $type ][ $name ])) {
+ unset($smarty->registered_filters[ $type ][ $name ]);
+ if (empty($smarty->registered_filters[ $type ])) {
+ unset($smarty->registered_filters[ $type ]);
}
}
}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_unregisterobject.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterobject.php
index a94331683..76d48661e 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_unregisterobject.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterobject.php
@@ -31,9 +31,9 @@ class Smarty_Internal_Method_UnregisterObject
*/
public function unregisterObject(Smarty_Internal_TemplateBase $obj, $object_name)
{
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
- if (isset($smarty->registered_objects[$object_name])) {
- unset($smarty->registered_objects[$object_name]);
+ $smarty = $obj->_getSmartyObj();
+ if (isset($smarty->registered_objects[ $object_name ])) {
+ unset($smarty->registered_objects[ $object_name ]);
}
return $obj;
}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_unregisterplugin.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterplugin.php
index 06cb2d354..b5f0d505b 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_unregisterplugin.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterplugin.php
@@ -25,16 +25,16 @@ class Smarty_Internal_Method_UnregisterPlugin
* @link http://www.smarty.net/docs/en/api.unregister.plugin.tpl
*
* @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param string $type plugin type
- * @param string $name name of template tag
+ * @param string $type plugin type
+ * @param string $name name of template tag
*
* @return \Smarty|\Smarty_Internal_Template
- */
+ */
public function unregisterPlugin(Smarty_Internal_TemplateBase $obj, $type, $name)
{
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
- if (isset($smarty->registered_plugins[$type][$name])) {
- unset($smarty->registered_plugins[$type][$name]);
+ $smarty = $obj->_getSmartyObj();
+ if (isset($smarty->registered_plugins[ $type ][ $name ])) {
+ unset($smarty->registered_plugins[ $type ][ $name ]);
}
return $obj;
}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_unregisterresource.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterresource.php
index 767bd74ab..ed4801d48 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_unregisterresource.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterresource.php
@@ -25,15 +25,15 @@ class Smarty_Internal_Method_UnregisterResource
* @link http://www.smarty.net/docs/en/api.unregister.resource.tpl
*
* @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param string $type name of resource type
- *
+ * @param string $type name of resource type
+ *
* @return \Smarty|\Smarty_Internal_Template
*/
public function unregisterResource(Smarty_Internal_TemplateBase $obj, $type)
{
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
- if (isset($smarty->registered_resources[$type])) {
- unset($smarty->registered_resources[$type]);
+ $smarty = $obj->_getSmartyObj();
+ if (isset($smarty->registered_resources[ $type ])) {
+ unset($smarty->registered_resources[ $type ]);
}
return $obj;
}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_nocache_insert.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_nocache_insert.php
index b3d5fa86a..65fc143cd 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_nocache_insert.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_nocache_insert.php
@@ -37,15 +37,17 @@ class Smarty_Internal_Nocache_Insert
}
// call insert
if (isset($_assign)) {
- $_output .= "\$_smarty_tpl->assign('{$_assign}' , {$_function} (" . var_export($_attr, true) . ",\$_smarty_tpl), true);?>";
+ $_output .= "\$_smarty_tpl->assign('{$_assign}' , {$_function} (" . var_export($_attr, true) .
+ ",\$_smarty_tpl), true);?>";
} else {
$_output .= "echo {$_function}(" . var_export($_attr, true) . ",\$_smarty_tpl);?>";
}
$_tpl = $_template;
- while (isset($_tpl->parent) && $_tpl->parent->_objType == 2) {
+ while ($_tpl->_isSubTpl()) {
$_tpl = $_tpl->parent;
}
- return "/*%%SmartyNocache:{$_tpl->compiled->nocache_hash}%%*/" . $_output . "/*/%%SmartyNocache:{$_tpl->compiled->nocache_hash}%%*/";
+ return "/*%%SmartyNocache:{$_tpl->compiled->nocache_hash}%%*/" . $_output .
+ "/*/%%SmartyNocache:{$_tpl->compiled->nocache_hash}%%*/";
}
}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_parsetree.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree.php
index 32c9df094..32c9df094 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_parsetree.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree.php
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_parsetree_code.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_code.php
index d0f0b3fd9..d0f0b3fd9 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_parsetree_code.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_code.php
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_parsetree_dq.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_dq.php
index 607389cb5..8c2e0d993 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_parsetree_dq.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_dq.php
@@ -40,13 +40,20 @@ class Smarty_Internal_ParseTree_Dq extends Smarty_Internal_ParseTree
public function append_subtree(Smarty_Internal_Templateparser $parser, Smarty_Internal_ParseTree $subtree)
{
$last_subtree = count($this->subtrees) - 1;
- if ($last_subtree >= 0 && $this->subtrees[$last_subtree] instanceof Smarty_Internal_ParseTree_Tag && $this->subtrees[$last_subtree]->saved_block_nesting < $parser->block_nesting_level) {
+ if ($last_subtree >= 0 && $this->subtrees[ $last_subtree ] instanceof Smarty_Internal_ParseTree_Tag &&
+ $this->subtrees[ $last_subtree ]->saved_block_nesting < $parser->block_nesting_level
+ ) {
if ($subtree instanceof Smarty_Internal_ParseTree_Code) {
- $this->subtrees[$last_subtree]->data = $parser->compiler->appendCode($this->subtrees[$last_subtree]->data, '<?php echo ' . $subtree->data . ';?>');
+ $this->subtrees[ $last_subtree ]->data =
+ $parser->compiler->appendCode($this->subtrees[ $last_subtree ]->data,
+ '<?php echo ' . $subtree->data . ';?>');
} elseif ($subtree instanceof Smarty_Internal_ParseTree_DqContent) {
- $this->subtrees[$last_subtree]->data = $parser->compiler->appendCode($this->subtrees[$last_subtree]->data, '<?php echo "' . $subtree->data . '";?>');
+ $this->subtrees[ $last_subtree ]->data =
+ $parser->compiler->appendCode($this->subtrees[ $last_subtree ]->data,
+ '<?php echo "' . $subtree->data . '";?>');
} else {
- $this->subtrees[$last_subtree]->data = $parser->compiler->appendCode($this->subtrees[$last_subtree]->data, $subtree->data);
+ $this->subtrees[ $last_subtree ]->data =
+ $parser->compiler->appendCode($this->subtrees[ $last_subtree ]->data, $subtree->data);
}
} else {
$this->subtrees[] = $subtree;
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_parsetree_dqcontent.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_dqcontent.php
index a8ca389d9..a8ca389d9 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_parsetree_dqcontent.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_dqcontent.php
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_parsetree_tag.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_tag.php
index 575c8c9e8..9058aabfb 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_parsetree_tag.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_tag.php
@@ -59,7 +59,7 @@ class Smarty_Internal_ParseTree_Tag extends Smarty_Internal_ParseTree
*/
public function assign_to_var(Smarty_Internal_Templateparser $parser)
{
- $var = sprintf('$_tmp%d', ++ Smarty_Internal_Templateparser::$prefix_number);
+ $var = $parser->compiler->getNewPrefixVariable();
$tmp = $parser->compiler->appendCode('<?php ob_start();?>', $this->data);
$tmp = $parser->compiler->appendCode($tmp, "<?php {$var}=ob_get_clean();?>");
$parser->compiler->prefix_code[] = sprintf("%s", $tmp);
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_parsetree_template.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_template.php
index 623ae51a3..f6032351e 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_parsetree_template.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_template.php
@@ -88,15 +88,15 @@ class Smarty_Internal_ParseTree_Template extends Smarty_Internal_ParseTree
{
$code = '';
for ($key = 0, $cnt = count($this->subtrees); $key < $cnt; $key ++) {
- if ($this->subtrees[$key] instanceof Smarty_Internal_ParseTree_Text) {
- $subtree = $this->subtrees[$key]->to_smarty_php($parser);
- while ($key + 1 < $cnt && ($this->subtrees[$key + 1] instanceof Smarty_Internal_ParseTree_Text ||
- $this->subtrees[$key + 1]->data == '')) {
+ if ($this->subtrees[ $key ] instanceof Smarty_Internal_ParseTree_Text) {
+ $subtree = $this->subtrees[ $key ]->to_smarty_php($parser);
+ while ($key + 1 < $cnt && ($this->subtrees[ $key + 1 ] instanceof Smarty_Internal_ParseTree_Text ||
+ $this->subtrees[ $key + 1 ]->data == '')) {
$key ++;
- if ($this->subtrees[$key]->data == '') {
+ if ($this->subtrees[ $key ]->data == '') {
continue;
}
- $subtree .= $this->subtrees[$key]->to_smarty_php($parser);
+ $subtree .= $this->subtrees[ $key ]->to_smarty_php($parser);
}
if ($subtree == '') {
continue;
@@ -105,15 +105,15 @@ class Smarty_Internal_ParseTree_Template extends Smarty_Internal_ParseTree
$subtree);
continue;
}
- if ($this->subtrees[$key] instanceof Smarty_Internal_ParseTree_Tag) {
- $subtree = $this->subtrees[$key]->to_smarty_php($parser);
- while ($key + 1 < $cnt && ($this->subtrees[$key + 1] instanceof Smarty_Internal_ParseTree_Tag ||
- $this->subtrees[$key + 1]->data == '')) {
+ if ($this->subtrees[ $key ] instanceof Smarty_Internal_ParseTree_Tag) {
+ $subtree = $this->subtrees[ $key ]->to_smarty_php($parser);
+ while ($key + 1 < $cnt && ($this->subtrees[ $key + 1 ] instanceof Smarty_Internal_ParseTree_Tag ||
+ $this->subtrees[ $key + 1 ]->data == '')) {
$key ++;
- if ($this->subtrees[$key]->data == '') {
+ if ($this->subtrees[ $key ]->data == '') {
continue;
}
- $subtree = $parser->compiler->appendCode($subtree, $this->subtrees[$key]->to_smarty_php($parser));
+ $subtree = $parser->compiler->appendCode($subtree, $this->subtrees[ $key ]->to_smarty_php($parser));
}
if ($subtree == '') {
continue;
@@ -121,7 +121,7 @@ class Smarty_Internal_ParseTree_Template extends Smarty_Internal_ParseTree
$code .= $subtree;
continue;
}
- $code .= $this->subtrees[$key]->to_smarty_php($parser);
+ $code .= $this->subtrees[ $key ]->to_smarty_php($parser);
}
return $code;
}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_parsetree_text.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_text.php
index b3100fa09..b3100fa09 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_parsetree_text.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_text.php
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_resource_eval.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_eval.php
index aca710350..d3088bdd9 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_resource_eval.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_eval.php
@@ -29,8 +29,7 @@ class Smarty_Internal_Resource_Eval extends Smarty_Resource_Recompiled
public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
{
$source->uid = $source->filepath = sha1($source->name);
- $source->timestamp = false;
- $source->exists = true;
+ $source->timestamp = $source->exists = true;
}
/**
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_resource_extends.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_extends.php
index 3d687dca8..4f1f09ea5 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_resource_extends.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_extends.php
@@ -37,10 +37,11 @@ class Smarty_Internal_Resource_Extends extends Smarty_Resource
$uid = '';
$sources = array();
$components = explode('|', $source->name);
+ $smarty = &$source->smarty;
$exists = true;
foreach ($components as $component) {
/* @var \Smarty_Template_Source $_s */
- $_s = Smarty_Template_Source::load(null, $source->smarty, $component);
+ $_s = Smarty_Template_Source::load(null, $smarty, $component);
if ($_s->type == 'php') {
throw new SmartyException("Resource type {$_s->type} cannot be used with the extends resource type");
}
@@ -52,7 +53,7 @@ class Smarty_Internal_Resource_Extends extends Smarty_Resource
}
$source->components = $sources;
$source->filepath = $_s->filepath;
- $source->uid = sha1($uid);
+ $source->uid = sha1($uid . $source->smarty->_joined_template_dir);
$source->exists = $exists;
if ($_template) {
$source->timestamp = $_s->timestamp;
@@ -85,7 +86,7 @@ class Smarty_Internal_Resource_Extends extends Smarty_Resource
public function getContent(Smarty_Template_Source $source)
{
if (!$source->exists) {
- throw new SmartyException("Unable to read template {$source->type} '{$source->name}'");
+ throw new SmartyException("Unable to load template '{$source->type}:{$source->name}'");
}
$_components = array_reverse($source->components);
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_resource_file.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_file.php
index b15e3cc6a..a58771a17 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_resource_file.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_file.php
@@ -30,51 +30,50 @@ class Smarty_Internal_Resource_File extends Smarty_Resource
{
$file = $source->name;
// absolute file ?
- if ($file[0] == '/' || $file[1] == ':') {
+ if ($file[ 0 ] == '/' || $file[ 1 ] == ':') {
$file = $source->smarty->_realpath($file, true);
return is_file($file) ? $file : false;
}
// go relative to a given template?
- if ($file[0] == '.' && $_template && isset($_template->parent) && $_template->parent->_objType == 2 &&
+ if ($file[ 0 ] == '.' && $_template && $_template->_isSubTpl() &&
preg_match('#^[.]{1,2}[\\\/]#', $file)
) {
if ($_template->parent->source->type != 'file' && $_template->parent->source->type != 'extends' &&
- !isset($_template->parent->_cache['allow_relative_path'])
+ !isset($_template->parent->_cache[ 'allow_relative_path' ])
) {
throw new SmartyException("Template '{$file}' cannot be relative to template of resource type '{$_template->parent->source->type}'");
}
- $path = dirname($_template->parent->source->filepath) . DS . $file;
// normalize path
- $path = $source->smarty->_realpath($path);
+ $path = $source->smarty->_realpath(dirname($_template->parent->source->filepath) . $source->smarty->ds . $file);
// files relative to a template only get one shot
return is_file($path) ? $path : false;
}
- // normalize DS
- if (strpos($file, DS == '/' ? '\\' : '/') !== false) {
- $file = str_replace(DS == '/' ? '\\' : '/', DS, $file);
+ // normalize $source->smarty->ds
+ if (strpos($file, $source->smarty->ds == '/' ? '\\' : '/') !== false) {
+ $file = str_replace($source->smarty->ds == '/' ? '\\' : '/', $source->smarty->ds, $file);
}
$_directories = $source->smarty->getTemplateDir(null, $source->isConfig);
// template_dir index?
- if ($file[0] == '[' && preg_match('#^\[([^\]]+)\](.+)$#', $file, $fileMatch)) {
- $file = $fileMatch[2];
- $_indices = explode(',', $fileMatch[1]);
+ if ($file[ 0 ] == '[' && preg_match('#^\[([^\]]+)\](.+)$#', $file, $fileMatch)) {
+ $file = $fileMatch[ 2 ];
+ $_indices = explode(',', $fileMatch[ 1 ]);
$_index_dirs = array();
foreach ($_indices as $index) {
$index = trim($index);
// try string indexes
- if (isset($_directories[$index])) {
- $_index_dirs[] = $_directories[$index];
+ if (isset($_directories[ $index ])) {
+ $_index_dirs[] = $_directories[ $index ];
} elseif (is_numeric($index)) {
// try numeric index
$index = (int) $index;
- if (isset($_directories[$index])) {
- $_index_dirs[] = $_directories[$index];
+ if (isset($_directories[ $index ])) {
+ $_index_dirs[] = $_directories[ $index ];
} else {
// try at location index
$keys = array_keys($_directories);
- if (isset($_directories[$keys[$index]])) {
- $_index_dirs[] = $_directories[$keys[$index]];
+ if (isset($_directories[ $keys[ $index ] ])) {
+ $_index_dirs[] = $_directories[ $keys[ $index ] ];
}
}
}
@@ -91,7 +90,7 @@ class Smarty_Internal_Resource_File extends Smarty_Resource
foreach ($_directories as $_directory) {
$path = $_directory . $file;
if (is_file($path)) {
- return (strpos($path, '.' . DS) !== false) ? $source->smarty->_realpath($path) : $path;
+ return (strpos($path, '.' . $source->smarty->ds) !== false) ? $source->smarty->_realpath($path) : $path;
}
}
if (!isset($_index_dirs)) {
@@ -123,13 +122,11 @@ class Smarty_Internal_Resource_File extends Smarty_Resource
$source->smarty->security_policy->isTrustedResourceDir($source->filepath, $source->isConfig);
}
$source->exists = true;
- $source->uid = sha1($source->filepath);
- if ($source->smarty->compile_check == 1) {
- $source->timestamp = filemtime($source->filepath);
- }
+ $source->uid = sha1($source->filepath . ($source->isConfig ? $source->smarty->_joined_config_dir :
+ $source->smarty->_joined_template_dir));
+ $source->timestamp = filemtime($source->filepath);
} else {
- $source->timestamp = false;
- $source->exists = false;
+ $source->timestamp = $source->exists = false;
}
}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_resource_php.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_php.php
index 62680625c..52e7096b3 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_resource_php.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_php.php
@@ -17,6 +17,7 @@ class Smarty_Internal_Resource_Php extends Smarty_Internal_Resource_File
* @var bool
*/
public $uncompiled = true;
+
/**
* container for short_open_tag directive's value before executing PHP templates
*
@@ -31,10 +32,8 @@ class Smarty_Internal_Resource_Php extends Smarty_Internal_Resource_File
*/
public $hasCompiledHandler = true;
-
/**
* Create a new PHP Resource
-
*/
public function __construct()
{
@@ -72,12 +71,8 @@ class Smarty_Internal_Resource_Php extends Smarty_Internal_Resource_File
throw new SmartyException("PHP templates are disabled");
}
if (!$source->exists) {
- if (isset($_template->parent) && $_template->parent->_objType == 2) {
- $parent_resource = " in '{$_template->parent->template_resource}'";
- } else {
- $parent_resource = '';
- }
- throw new SmartyException("Unable to load template {$source->type} '{$source->name}'{$parent_resource}");
+ throw new SmartyException("Unable to load template {$source->type} '{$source->name}'" .
+ ($_template->_isSubTpl() ? " in '{$_template->parent->template_resource}'" : ''));
}
// prepare variables
@@ -101,8 +96,11 @@ class Smarty_Internal_Resource_Php extends Smarty_Internal_Resource_File
*/
public function populateCompiledFilepath(Smarty_Template_Compiled $compiled, Smarty_Internal_Template $_template)
{
- $compiled->filepath = false;
- $compiled->timestamp = false;
- $compiled->exists = false;
+ $compiled->filepath = $_template->source->filepath;
+ $compiled->timestamp = $_template->source->timestamp;
+ $compiled->exists = $_template->source->exists;
+ $compiled->file_dependency[ $_template->source->uid ] =
+ array($compiled->filepath, $compiled->timestamp,
+ $_template->source->type,);
}
}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_resource_registered.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_registered.php
index 69b396b6a..8535257ab 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_resource_registered.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_registered.php
@@ -29,11 +29,9 @@ class Smarty_Internal_Resource_Registered extends Smarty_Resource
public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
{
$source->filepath = $source->type . ':' . $source->name;
- $source->uid = sha1($source->filepath);
- if ($source->smarty->compile_check) {
- $source->timestamp = $this->getTemplateTimestamp($source);
- $source->exists = !!$source->timestamp;
- }
+ $source->uid = sha1($source->filepath . $source->smarty->_joined_template_dir);
+ $source->timestamp = $this->getTemplateTimestamp($source);
+ $source->exists = !!$source->timestamp;
}
/**
@@ -60,7 +58,8 @@ class Smarty_Internal_Resource_Registered extends Smarty_Resource
{
// return timestamp
$time_stamp = false;
- call_user_func_array($source->smarty->registered_resources[$source->type][0][1], array($source->name, &$time_stamp, $source->smarty));
+ call_user_func_array($source->smarty->registered_resources[ $source->type ][ 0 ][ 1 ],
+ array($source->name, &$time_stamp, $source->smarty));
return is_numeric($time_stamp) ? (int) $time_stamp : $time_stamp;
}
@@ -77,7 +76,8 @@ class Smarty_Internal_Resource_Registered extends Smarty_Resource
{
// return template string
$content = null;
- $t = call_user_func_array($source->smarty->registered_resources[$source->type][0][0], array($source->name, &$content, $source->smarty));
+ $t = call_user_func_array($source->smarty->registered_resources[ $source->type ][ 0 ][ 0 ],
+ array($source->name, &$content, $source->smarty));
if (is_bool($t) && !$t) {
throw new SmartyException("Unable to read template {$source->type} '{$source->name}'");
}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_resource_stream.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_stream.php
index 8a902268c..b4248fbb5 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_resource_stream.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_stream.php
@@ -36,8 +36,7 @@ class Smarty_Internal_Resource_Stream extends Smarty_Resource_Recompiled
}
$source->uid = false;
$source->content = $this->getContent($source);
- $source->timestamp = false;
- $source->exists = !!$source->content;
+ $source->timestamp = $source->exists = !!$source->content;
}
/**
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_resource_string.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_string.php
index 75e99e6fb..f2610d9d6 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_resource_string.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_string.php
@@ -28,9 +28,8 @@ class Smarty_Internal_Resource_String extends Smarty_Resource
*/
public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
{
- $source->uid = $source->filepath = sha1($source->name);
- $source->timestamp = 0;
- $source->exists = true;
+ $source->uid = $source->filepath = sha1($source->name . $source->smarty->_joined_template_dir);
+ $source->timestamp = $source->exists = true;
}
/**
@@ -94,4 +93,15 @@ class Smarty_Internal_Resource_String extends Smarty_Resource
{
return '';
}
+
+ /*
+ * Disable timestamp checks for string resource.
+ *
+ * @return bool
+ */
+ public function checkTimestamps()
+ {
+ return false;
+ }
}
+
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_runtime_cachemodify.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_cachemodify.php
index 4e2fb83e6..a91874a9f 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_runtime_cachemodify.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_cachemodify.php
@@ -13,14 +13,15 @@ class Smarty_Internal_Runtime_CacheModify
/**
* check client side cache
*
- * @param Smarty_Internal_Template $_template
- * @param string $content
+ * @param \Smarty_Template_Cached $cached
+ * @param \Smarty_Internal_Template $_template
+ * @param string $content
*/
public function cacheModifiedCheck(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template, $content)
{
$_isCached = $_template->isCached() && !$_template->compiled->has_nocache_code;
$_last_modified_date =
- @substr($_SERVER['HTTP_IF_MODIFIED_SINCE'], 0, strpos($_SERVER['HTTP_IF_MODIFIED_SINCE'], 'GMT') + 3);
+ @substr($_SERVER[ 'HTTP_IF_MODIFIED_SINCE' ], 0, strpos($_SERVER[ 'HTTP_IF_MODIFIED_SINCE' ], 'GMT') + 3);
if ($_isCached && $cached->timestamp <= strtotime($_last_modified_date)) {
switch (PHP_SAPI) {
case 'cgi': // php-cgi < 5.3
@@ -31,19 +32,19 @@ class Smarty_Internal_Runtime_CacheModify
case 'cli':
if ( /* ^phpunit */
- !empty($_SERVER['SMARTY_PHPUNIT_DISABLE_HEADERS']) /* phpunit$ */
+ !empty($_SERVER[ 'SMARTY_PHPUNIT_DISABLE_HEADERS' ]) /* phpunit$ */
) {
- $_SERVER['SMARTY_PHPUNIT_HEADERS'][] = '304 Not Modified';
+ $_SERVER[ 'SMARTY_PHPUNIT_HEADERS' ][] = '304 Not Modified';
}
break;
default:
if ( /* ^phpunit */
- !empty($_SERVER['SMARTY_PHPUNIT_DISABLE_HEADERS']) /* phpunit$ */
+ !empty($_SERVER[ 'SMARTY_PHPUNIT_DISABLE_HEADERS' ]) /* phpunit$ */
) {
- $_SERVER['SMARTY_PHPUNIT_HEADERS'][] = '304 Not Modified';
+ $_SERVER[ 'SMARTY_PHPUNIT_HEADERS' ][] = '304 Not Modified';
} else {
- header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified');
+ header($_SERVER[ 'SERVER_PROTOCOL' ] . ' 304 Not Modified');
}
break;
}
@@ -51,9 +52,9 @@ class Smarty_Internal_Runtime_CacheModify
switch (PHP_SAPI) {
case 'cli':
if ( /* ^phpunit */
- !empty($_SERVER['SMARTY_PHPUNIT_DISABLE_HEADERS']) /* phpunit$ */
+ !empty($_SERVER[ 'SMARTY_PHPUNIT_DISABLE_HEADERS' ]) /* phpunit$ */
) {
- $_SERVER['SMARTY_PHPUNIT_HEADERS'][] =
+ $_SERVER[ 'SMARTY_PHPUNIT_HEADERS' ][] =
'Last-Modified: ' . gmdate('D, d M Y H:i:s', $cached->timestamp) . ' GMT';
}
break;
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_extension_clear.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_cacheresourcefile.php
index 00edc5abf..7b7a9f685 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_extension_clear.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_cacheresourcefile.php
@@ -1,15 +1,20 @@
<?php
/**
- * Smarty Extension Clear
- *
- * $smarty->clear() method file cache file resource
+ * Smarty cache resource file clear method
*
* @package Smarty
* @subpackage PluginsInternal
* @author Uwe Tews
*/
-class Smarty_Internal_Extension_Clear
+
+/**
+ * Smarty Internal Runtime Cache Resource File Class
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ */
+class Smarty_Internal_Runtime_CacheResourceFile
{
/**
* Empty cache for a specific template
@@ -22,7 +27,7 @@ class Smarty_Internal_Extension_Clear
*
* @return integer number of cache files deleted
*/
- public static function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time)
+ public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time)
{
$_cache_id = isset($cache_id) ? preg_replace('![^\w\|]+!', '_', $cache_id) : null;
$_compile_id = isset($compile_id) ? preg_replace('![^\w]+!', '_', $compile_id) : null;
@@ -38,7 +43,7 @@ class Smarty_Internal_Extension_Clear
$_cache_id_parts_count = count($_cache_id_parts);
if ($smarty->use_sub_dirs) {
foreach ($_cache_id_parts as $id_part) {
- $_dir .= $id_part . DS;
+ $_dir .= $id_part . $smarty->ds;
}
}
}
@@ -63,9 +68,10 @@ class Smarty_Internal_Extension_Clear
$_cacheDirs = new RecursiveDirectoryIterator($_dir);
$_cache = new RecursiveIteratorIterator($_cacheDirs, RecursiveIteratorIterator::CHILD_FIRST);
foreach ($_cache as $_file) {
- if (substr(basename($_file->getPathname()), 0, 1) == '.' || strpos($_file, '.svn') !== false) {
+ if (substr(basename($_file->getPathname()), 0, 1) == '.') {
continue;
}
+ $_filepath = (string) $_file;
// directory ?
if ($_file->isDir()) {
if (!$_cache->isDot()) {
@@ -73,17 +79,21 @@ class Smarty_Internal_Extension_Clear
@rmdir($_file->getPathname());
}
} else {
- $_parts = explode($_dir_sep, str_replace('\\', '/', substr((string) $_file, $_dir_length)));
+ // delete only php files
+ if (substr($_filepath, -4) !== '.php') {
+ continue;
+ }
+ $_parts = explode($_dir_sep, str_replace('\\', '/', substr($_filepath, $_dir_length)));
$_parts_count = count($_parts);
// check name
if (isset($resource_name)) {
- if ($_parts[$_parts_count - 1] != $_resourcename_parts) {
+ if ($_parts[ $_parts_count - 1 ] != $_resourcename_parts) {
continue;
}
}
// check compile id
- if (isset($_compile_id) && (!isset($_parts[$_parts_count - 2 - $_compile_id_offset]) ||
- $_parts[$_parts_count - 2 - $_compile_id_offset] != $_compile_id)
+ if (isset($_compile_id) && (!isset($_parts[ $_parts_count - 2 - $_compile_id_offset ]) ||
+ $_parts[ $_parts_count - 2 - $_compile_id_offset ] != $_compile_id)
) {
continue;
}
@@ -96,7 +106,7 @@ class Smarty_Internal_Extension_Clear
continue;
}
for ($i = 0; $i < $_cache_id_parts_count; $i ++) {
- if ($_parts[$i] != $_cache_id_parts[$i]) {
+ if ($_parts[ $i ] != $_cache_id_parts[ $i ]) {
continue 2;
}
}
@@ -105,7 +115,7 @@ class Smarty_Internal_Extension_Clear
if (isset($exp_time)) {
if ($exp_time < 0) {
preg_match('#\'cache_lifetime\' =>\s*(\d*)#', file_get_contents($_file), $match);
- if ($_time < (@filemtime($_file) + $match[1])) {
+ if ($_time < (@filemtime($_file) + $match[ 1 ])) {
continue;
}
} else {
@@ -114,9 +124,9 @@ class Smarty_Internal_Extension_Clear
}
}
}
- $_count += @unlink((string) $_file) ? 1 : 0;
- if (function_exists('opcache_invalidate')) {
- opcache_invalidate((string) $_file);
+ $_count += @unlink($_filepath) ? 1 : 0;
+ if (function_exists('opcache_invalidate') && strlen(ini_get("opcache.restrict_api")) < 1) {
+ opcache_invalidate($_filepath, true);
}
}
}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_capture.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_capture.php
new file mode 100644
index 000000000..69f1ce0cf
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_capture.php
@@ -0,0 +1,161 @@
+<?php
+
+/**
+ * Runtime Extension Capture
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Runtime_Capture
+{
+ /**
+ * Flag that this instance will not be cached
+ *
+ * @var bool
+ */
+ public $isPrivateExtension = true;
+
+ /**
+ * Stack of capture parameter
+ *
+ * @var array
+ */
+ private $captureStack = array();
+
+ /**
+ * Current open capture sections
+ *
+ * @var int
+ */
+ private $captureCount = 0;
+
+ /**
+ * Count stack
+ *
+ * @var int[]
+ */
+ private $countStack = array();
+
+ /**
+ * Named buffer
+ *
+ * @var string[]
+ */
+ private $namedBuffer = array();
+
+ /**
+ * Flag if callbacks are registered
+ *
+ * @var bool
+ */
+ private $isRegistered = false;
+
+ /**
+ * Open capture section
+ *
+ * @param \Smarty_Internal_Template $_template
+ * @param string $buffer capture name
+ * @param string $assign variable name
+ * @param string $append variable name
+ */
+ public function open(Smarty_Internal_Template $_template, $buffer, $assign, $append)
+ {
+ if (!$this->isRegistered) {
+ $this->register($_template);
+ }
+ $this->captureStack[] = array($buffer, $assign, $append);
+ $this->captureCount ++;
+ ob_start();
+ }
+
+ /**
+ * Register callbacks in template class
+ *
+ * @param \Smarty_Internal_Template $_template
+ */
+ private function register(Smarty_Internal_Template $_template)
+ {
+ $_template->startRenderCallbacks[] = array($this, 'startRender');
+ $_template->endRenderCallbacks[] = array($this, 'endRender');
+ $this->startRender($_template);
+ $this->isRegistered = true;
+ }
+
+ /**
+ * Start render callback
+ *
+ * @param \Smarty_Internal_Template $_template
+ */
+ public function startRender(Smarty_Internal_Template $_template)
+ {
+ $this->countStack[] = $this->captureCount;
+ $this->captureCount = 0;
+ }
+
+ /**
+ * Close capture section
+ *
+ * @param \Smarty_Internal_Template $_template
+ *
+ * @throws \SmartyException
+ */
+ public function close(Smarty_Internal_Template $_template)
+ {
+ if ($this->captureCount) {
+ list($buffer, $assign, $append) = array_pop($this->captureStack);
+ $this->captureCount --;
+ if (isset($assign)) {
+ $_template->assign($assign, ob_get_contents());
+ }
+ if (isset($append)) {
+ $_template->append($append, ob_get_contents());
+ }
+ $this->namedBuffer[ $buffer ] = ob_get_clean();
+ } else {
+ $this->error($_template);
+ }
+ }
+
+ /**
+ * Error exception on not matching {capture}{/capture}
+ *
+ * @param \Smarty_Internal_Template $_template
+ *
+ * @throws \SmartyException
+ */
+ public function error(Smarty_Internal_Template $_template)
+ {
+ throw new SmartyException("Not matching {capture}{/capture} in \"{$_template->template_resource}\"");
+ }
+
+ /**
+ * Return content of named capture buffer
+ *
+ * @param \Smarty_Internal_Template $_template
+ * @param $name
+ *
+ * @return null
+ */
+ public function getBuffer(Smarty_Internal_Template $_template, $name)
+ {
+ return isset($this->namedBuffer[ $name ]) ? $this->namedBuffer[ $name ] : null;
+ }
+
+ /**
+ * End render callback
+ *
+ * @param \Smarty_Internal_Template $_template
+ *
+ * @throws \SmartyException
+ */
+ public function endRender(Smarty_Internal_Template $_template)
+ {
+ if ($this->captureCount) {
+ $this->error($_template);
+ } else {
+ $this->captureCount = array_pop($this->countStack);
+ }
+ }
+
+} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_runtime_codeframe.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_codeframe.php
index ce6749770..e363712a6 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_runtime_codeframe.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_codeframe.php
@@ -18,9 +18,9 @@ class Smarty_Internal_Runtime_CodeFrame
* Create code frame for compiled and cached templates
*
* @param Smarty_Internal_Template $_template
- * @param string $content optional template content
+ * @param string $content optional template content
* @param string $functions compiled template function and block code
- * @param bool $cache flag for cache file
+ * @param bool $cache flag for cache file
* @param \Smarty_Internal_TemplateCompilerBase $compiler
*
* @return string
@@ -29,30 +29,34 @@ class Smarty_Internal_Runtime_CodeFrame
Smarty_Internal_TemplateCompilerBase $compiler = null)
{
// build property code
- $properties[ 'has_nocache_code' ] = $_template->compiled->has_nocache_code;
$properties[ 'version' ] = Smarty::SMARTY_VERSION;
$properties[ 'unifunc' ] = 'content_' . str_replace(array('.', ','), '_', uniqid('', true));
if (!$cache) {
+ $properties[ 'has_nocache_code' ] = $_template->compiled->has_nocache_code;
$properties[ 'file_dependency' ] = $_template->compiled->file_dependency;
$properties[ 'includes' ] = $_template->compiled->includes;
- if (!empty($compiler->tpl_function)) {
- $properties[ 'tpl_function' ] = $compiler->tpl_function;
- }
- } else {
+ } else {
+ $properties[ 'has_nocache_code' ] = $_template->cached->has_nocache_code;
$properties[ 'file_dependency' ] = $_template->cached->file_dependency;
$properties[ 'cache_lifetime' ] = $_template->cache_lifetime;
- if (!empty($_template->tpl_function)) {
- $properties[ 'tpl_function' ] = $_template->tpl_function;
- }
}
$output = "<?php\n";
$output .= "/* Smarty version " . Smarty::SMARTY_VERSION . ", created on " . strftime("%Y-%m-%d %H:%M:%S") .
- "\n from \"" . $_template->source->filepath . "\" */\n\n";
-
- $dec = "\$_smarty_tpl->smarty->ext->_validateCompiled->decodeProperties(\$_smarty_tpl, " .
- var_export($properties, true) . ',' . ($cache ? 'true' : 'false') . ")";
+ "\n from \"" . $_template->source->filepath . "\" */\n\n";
+ $output .= "/* @var Smarty_Internal_Template \$_smarty_tpl */\n";
+ $dec = "\$_smarty_tpl->_decodeProperties(\$_smarty_tpl, " . var_export($properties, true) . ',' .
+ ($cache ? 'true' : 'false') . ")";
$output .= "if ({$dec}) {\n";
- $output .= "function {$properties['unifunc']} (\$_smarty_tpl) {\n";
+ $output .= "function {$properties['unifunc']} (Smarty_Internal_Template \$_smarty_tpl) {\n";
+ if (!$cache && !empty($compiler->tpl_function)) {
+ $output .= "\$_smarty_tpl->smarty->ext->_tplFunction->registerTplFunctions(\$_smarty_tpl, " .
+ var_export($compiler->tpl_function, true) . ");\n";
+ }
+ if ($cache && isset($_template->smarty->ext->_tplFunction)) {
+ $output .= "\$_smarty_tpl->smarty->ext->_tplFunction->registerTplFunctions(\$_smarty_tpl, " .
+ var_export($_template->smarty->ext->_tplFunction->getTplFunction($_template), true) . ");\n";
+
+ }
// include code for plugins
if (!$cache) {
if (!empty($_template->compiled->required_plugins[ 'compiled' ])) {
@@ -73,7 +77,7 @@ class Smarty_Internal_Runtime_CodeFrame
foreach ($_template->compiled->required_plugins[ 'nocache' ] as $tmp) {
foreach ($tmp as $data) {
$file = addslashes($data[ 'file' ]);
- if (is_Array($data[ 'function' ])) {
+ if (is_array($data[ 'function' ])) {
$output .= addslashes("if (!is_callable(array('{$data['function'][0]}','{$data['function'][1]}'))) require_once '{$file}';\n");
} else {
$output .= addslashes("if (!is_callable('{$data['function']}')) require_once '{$file}';\n");
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_runtime_filterhandler.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_filterhandler.php
index 9af266758..f6cfa7c44 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_runtime_filterhandler.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_filterhandler.php
@@ -33,8 +33,8 @@ class Smarty_Internal_Runtime_FilterHandler
public function runFilter($type, $content, Smarty_Internal_Template $template)
{
// loop over autoload filters of specified type
- if (!empty($template->smarty->autoload_filters[$type])) {
- foreach ((array) $template->smarty->autoload_filters[$type] as $name) {
+ if (!empty($template->smarty->autoload_filters[ $type ])) {
+ foreach ((array) $template->smarty->autoload_filters[ $type ] as $name) {
$plugin_name = "Smarty_{$type}filter_{$name}";
if (function_exists($plugin_name)) {
$callback = $plugin_name;
@@ -58,9 +58,9 @@ class Smarty_Internal_Runtime_FilterHandler
}
}
// loop over registered filters of specified type
- if (!empty($template->smarty->registered_filters[$type])) {
- foreach ($template->smarty->registered_filters[$type] as $key => $name) {
- $content = call_user_func($template->smarty->registered_filters[$type][$key], $content, $template);
+ if (!empty($template->smarty->registered_filters[ $type ])) {
+ foreach ($template->smarty->registered_filters[ $type ] as $key => $name) {
+ $content = call_user_func($template->smarty->registered_filters[ $type ][ $key ], $content, $template);
}
}
// return filtered output
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_foreach.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_foreach.php
new file mode 100644
index 000000000..1e8655d92
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_foreach.php
@@ -0,0 +1,149 @@
+<?php
+
+/**
+ * Foreach Runtime Methods count(), init(), restore()
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ *
+ */
+class Smarty_Internal_Runtime_Foreach
+{
+
+ /**
+ * Stack of saved variables
+ *
+ * @var array
+ */
+ private $stack = array();
+
+ /**
+ * Init foreach loop
+ * - save item and key variables, named foreach property data if defined
+ * - init item and key variables, named foreach property data if required
+ * - count total if required
+ *
+ * @param \Smarty_Internal_Template $tpl
+ * @param mixed $from values to loop over
+ * @param string $item variable name
+ * @param bool $needTotal flag if we need to count values
+ * @param null|string $key variable name
+ * @param null|string $name of named foreach
+ * @param array $properties of named foreach
+ *
+ * @return mixed $from
+ */
+ public function init(Smarty_Internal_Template $tpl, $from, $item, $needTotal = false, $key = null, $name = null,
+ $properties = array())
+ {
+ $saveVars = array();
+ $total = null;
+ if (!is_array($from)) {
+ if (is_object($from)) {
+ $total = $this->count($from);
+ } else {
+ settype($from, 'array');
+ }
+ }
+ if (!isset($total)) {
+ $total = empty($from) ? 0 : (($needTotal || isset($properties[ 'total' ])) ? count($from) : 1);
+ }
+ if (isset($tpl->tpl_vars[ $item ])) {
+ $saveVars[ 'item' ] = array($item, $tpl->tpl_vars[ $item ]);
+ }
+ $tpl->tpl_vars[ $item ] = new Smarty_Variable(null, $tpl->isRenderingCache);
+ if ($total === 0) {
+ $from = null;
+ } else {
+ if ($key) {
+ if (isset($tpl->tpl_vars[ $key ])) {
+ $saveVars[ 'key' ] = array($key, $tpl->tpl_vars[ $key ]);
+ }
+ $tpl->tpl_vars[ $key ] = new Smarty_Variable(null, $tpl->isRenderingCache);
+ }
+ }
+ if ($needTotal) {
+ $tpl->tpl_vars[ $item ]->total = $total;
+ }
+ if ($name) {
+ $namedVar = "__smarty_foreach_{$name}";
+ if (isset($tpl->tpl_vars[ $namedVar ])) {
+ $saveVars[ 'named' ] = array($namedVar, $tpl->tpl_vars[ $namedVar ]);
+ }
+ $namedProp = array();
+ if (isset($properties[ 'total' ])) {
+ $namedProp[ 'total' ] = $total;
+ }
+ if (isset($properties[ 'iteration' ])) {
+ $namedProp[ 'iteration' ] = 0;
+ }
+ if (isset($properties[ 'index' ])) {
+ $namedProp[ 'index' ] = - 1;
+ }
+ if (isset($properties[ 'show' ])) {
+ $namedProp[ 'show' ] = ($total > 0);
+ }
+ $tpl->tpl_vars[ $namedVar ] = new Smarty_Variable($namedProp);
+ }
+ $this->stack[] = $saveVars;
+ return $from;
+ }
+
+ /**
+ * Restore saved variables
+ *
+ * will be called by {break n} or {continue n} for the required number of levels
+ *
+ * @param \Smarty_Internal_Template $tpl
+ * @param int $levels number of levels
+ */
+ public function restore(Smarty_Internal_Template $tpl, $levels = 1)
+ {
+ while ($levels) {
+ $saveVars = array_pop($this->stack);
+ if (!empty($saveVars)) {
+ if (isset($saveVars[ 'item' ])) {
+ $item = &$saveVars[ 'item' ];
+ $tpl->tpl_vars[ $item[ 0 ] ]->value = $item[ 1 ]->value;
+ }
+ if (isset($saveVars[ 'key' ])) {
+ $tpl->tpl_vars[ $saveVars[ 'key' ][ 0 ] ] = $saveVars[ 'key' ][ 1 ];
+ }
+ if (isset($saveVars[ 'named' ])) {
+ $tpl->tpl_vars[ $saveVars[ 'named' ][ 0 ] ] = $saveVars[ 'named' ][ 1 ];
+ }
+ }
+ $levels--;
+ }
+ }
+
+ /*
+ *
+ * [util function] counts an array, arrayAccess/traversable or PDOStatement object
+ *
+ * @param mixed $value
+ *
+ * @return int the count for arrays and objects that implement countable, 1 for other objects that don't, and 0
+ * for empty elements
+ */
+ public function count($value)
+ {
+ if ($value instanceof Countable) {
+ return count($value);
+ } elseif ($value instanceof IteratorAggregate) {
+ // Note: getIterator() returns a Traversable, not an Iterator
+ // thus rewind() and valid() methods may not be present
+ return iterator_count($value->getIterator());
+ } elseif ($value instanceof Iterator) {
+ return $value instanceof Generator ? 1 : iterator_count($value);
+ } elseif ($value instanceof PDOStatement) {
+ return $value->rowCount();
+ } elseif ($value instanceof Traversable) {
+ return iterator_count($value);
+ } elseif ($value instanceof ArrayAccess) {
+ return $value->offsetExists(0) ? 1 : 0;
+ }
+ return count((array) $value);
+ }
+}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_runtime_getincludepath.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_getincludepath.php
index 72149cd35..e12b0c57c 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_runtime_getincludepath.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_getincludepath.php
@@ -87,7 +87,7 @@ class Smarty_Internal_Runtime_GetIncludePath
$_dirs = (array) explode(PATH_SEPARATOR, $_i_path);
foreach ($_dirs as $_path) {
if (is_dir($_path)) {
- $this->_include_dirs[] = $smarty->_realpath($_path . DS, true);
+ $this->_include_dirs[] = $smarty->_realpath($_path . $smarty->ds, true);
}
}
return true;
@@ -121,50 +121,52 @@ class Smarty_Internal_Runtime_GetIncludePath
public function getIncludePath($dirs, $file, Smarty $smarty)
{
//if (!(isset($this->_has_stream_include) ? $this->_has_stream_include : $this->_has_stream_include = false)) {
- if (!(isset($this->_has_stream_include) ? $this->_has_stream_include : $this->_has_stream_include = function_exists('stream_resolve_include_path'))) {
- $this->isNewIncludePath($smarty);
+ if (!(isset($this->_has_stream_include) ? $this->_has_stream_include :
+ $this->_has_stream_include = function_exists('stream_resolve_include_path'))
+ ) {
+ $this->isNewIncludePath($smarty);
}
// try PHP include_path
foreach ($dirs as $dir) {
- $dir_n = isset($this->number[$dir]) ? $this->number[$dir] : $this->number[$dir] = $this->counter ++;
- if (isset($this->isFile[$dir_n][$file])) {
- if ($this->isFile[$dir_n][$file]) {
- return $this->isFile[$dir_n][$file];
+ $dir_n = isset($this->number[ $dir ]) ? $this->number[ $dir ] : $this->number[ $dir ] = $this->counter ++;
+ if (isset($this->isFile[ $dir_n ][ $file ])) {
+ if ($this->isFile[ $dir_n ][ $file ]) {
+ return $this->isFile[ $dir_n ][ $file ];
} else {
continue;
}
}
- if (isset($this->_user_dirs[$dir_n])) {
- if (false === $this->_user_dirs[$dir_n]) {
+ if (isset($this->_user_dirs[ $dir_n ])) {
+ if (false === $this->_user_dirs[ $dir_n ]) {
continue;
} else {
- $dir = $this->_user_dirs[$dir_n];
+ $dir = $this->_user_dirs[ $dir_n ];
}
} else {
- if ($dir[0] == '/' || $dir[1] == ':') {
+ if ($dir[ 0 ] == '/' || $dir[ 1 ] == ':') {
$dir = str_ireplace(getcwd(), '.', $dir);
- if ($dir[0] == '/' || $dir[1] == ':') {
- $this->_user_dirs[$dir_n] = false;
+ if ($dir[ 0 ] == '/' || $dir[ 1 ] == ':') {
+ $this->_user_dirs[ $dir_n ] = false;
continue;
}
}
$dir = substr($dir, 2);
- $this->_user_dirs[$dir_n] = $dir;
+ $this->_user_dirs[ $dir_n ] = $dir;
}
if ($this->_has_stream_include) {
$path = stream_resolve_include_path($dir . (isset($file) ? $file : ''));
if ($path) {
- return $this->isFile[$dir_n][$file] = $path;
+ return $this->isFile[ $dir_n ][ $file ] = $path;
}
} else {
foreach ($this->_include_dirs as $key => $_i_path) {
- $path = isset($this->isPath[$key][$dir_n]) ? $this->isPath[$key][$dir_n] : $this->isPath[$key][$dir_n] = is_dir($_dir_path = $_i_path .
- $dir) ? $_dir_path : false;
+ $path = isset($this->isPath[ $key ][ $dir_n ]) ? $this->isPath[ $key ][ $dir_n ] :
+ $this->isPath[ $key ][ $dir_n ] = is_dir($_dir_path = $_i_path . $dir) ? $_dir_path : false;
if ($path === false) {
continue;
}
if (isset($file)) {
- $_file = $this->isFile[$dir_n][$file] = (is_file($path . $file)) ? $path . $file : false;
+ $_file = $this->isFile[ $dir_n ][ $file ] = (is_file($path . $file)) ? $path . $file : false;
if ($_file) {
return $_file;
}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_inheritance.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_inheritance.php
new file mode 100644
index 000000000..7ec5924e6
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_inheritance.php
@@ -0,0 +1,241 @@
+<?php
+
+/**
+ * Inheritance Runtime Methods processBlock, endChild, init
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ *
+ **/
+class Smarty_Internal_Runtime_Inheritance
+{
+
+ /**
+ * State machine
+ * - 0 idle next extends will create a new inheritance tree
+ * - 1 processing child template
+ * - 2 wait for next inheritance template
+ * - 3 assume parent template, if child will loaded goto state 1
+ * a call to a sub template resets the state to 0
+ *
+ * @var int
+ */
+ public $state = 0;
+
+ /**
+ * Array of root child {block} objects
+ *
+ * @var Smarty_Internal_Block[]
+ */
+ public $childRoot = array();
+
+ /**
+ * inheritance template nesting level
+ *
+ * @var int
+ */
+ public $inheritanceLevel = 0;
+
+ /**
+ * inheritance template index
+ *
+ * @var int
+ */
+ public $tplIndex = - 1;
+
+ /**
+ * Array of template source objects
+ * - key template index
+ *
+ * @var Smarty_Template_Source[]
+ */
+ public $sources = array();
+
+ /**
+ * Stack of source objects while executing block code
+ *
+ * @var Smarty_Template_Source[]
+ */
+ public $sourceStack = array();
+
+ /**
+ * Initialize inheritance
+ *
+ * @param \Smarty_Internal_Template $tpl template object of caller
+ * @param bool $initChild if true init for child template
+ * @param array $blockNames outer level block name
+ *
+ */
+ public function init(Smarty_Internal_Template $tpl, $initChild, $blockNames = array())
+ {
+ // if called while executing parent template it must be a sub-template with new inheritance root
+ if ($initChild && $this->state == 3 && (strpos($tpl->template_resource, 'extendsall') === false)) {
+ $tpl->inheritance = new Smarty_Internal_Runtime_Inheritance();
+ $tpl->inheritance->init($tpl, $initChild, $blockNames);
+ return;
+ }
+ $this->tplIndex ++;
+ $this->sources[ $this->tplIndex ] = $tpl->source;
+
+ // start of child sub template(s)
+ if ($initChild) {
+ $this->state = 1;
+ if (!$this->inheritanceLevel) {
+ //grab any output of child templates
+ ob_start();
+ }
+ $this->inheritanceLevel ++;
+ // $tpl->startRenderCallbacks[ 'inheritance' ] = array($this, 'subTemplateStart');
+ // $tpl->endRenderCallbacks[ 'inheritance' ] = array($this, 'subTemplateEnd');
+ }
+ // if state was waiting for parent change state to parent
+ if ($this->state == 2) {
+ $this->state = 3;
+ }
+ }
+
+ /**
+ * End of child template(s)
+ * - if outer level is reached flush output buffer and switch to wait for parent template state
+ *
+ * @param \Smarty_Internal_Template $tpl
+ * @param null|string $template optinal name of inheritance parent template
+ * @param null|string $uid uid of inline template
+ * @param null|string $func function call name of inline template
+ */
+ public function endChild(Smarty_Internal_Template $tpl, $template = null, $uid = null, $func = null)
+ {
+ $this->inheritanceLevel --;
+ if (!$this->inheritanceLevel) {
+ ob_end_clean();
+ $this->state = 2;
+ }
+ if (isset($template) && (($tpl->parent->_isTplObj() && $tpl->parent->source->type !== 'extends') || $tpl->smarty->extends_recursion)) {
+ $tpl->_subTemplateRender($template, $tpl->cache_id, $tpl->compile_id, $tpl->caching ? 9999 : 0,
+ $tpl->cache_lifetime, array(), 2, false, $uid, $func);
+ }
+ }
+
+ /**
+ * Smarty_Internal_Block constructor.
+ * - if outer level {block} of child template ($state == 1) save it as child root block
+ * - otherwise process inheritance and render
+ *
+ * @param \Smarty_Internal_Template $tpl
+ * @param $className
+ * @param string $name
+ * @param int|null $tplIndex index of outer level {block} if nested
+ */
+ public function instanceBlock(Smarty_Internal_Template $tpl, $className, $name, $tplIndex = null)
+ {
+ $block = new $className($name, isset($tplIndex) ? $tplIndex : $this->tplIndex);
+ if (isset($this->childRoot[ $name ])) {
+ $block->child = $this->childRoot[ $name ];
+ }
+ if ($this->state == 1) {
+ $this->childRoot[ $name ] = $block;
+ return;
+ }
+ // make sure we got child block of child template of current block
+ while ($block->child && $block->tplIndex <= $block->child->tplIndex) {
+ $block->child = $block->child->child;
+ }
+ $this->process($tpl, $block);
+ }
+
+ /**
+ * Goto child block or render this
+ *
+ * @param \Smarty_Internal_Template $tpl
+ * @param \Smarty_Internal_Block $block
+ * @param \Smarty_Internal_Block|null $parent
+ *
+ * @throws \SmartyException
+ */
+ public function process(Smarty_Internal_Template $tpl, Smarty_Internal_Block $block,
+ Smarty_Internal_Block $parent = null)
+ {
+ if ($block->hide && !isset($block->child)) {
+ return;
+ }
+ if (isset($block->child) && $block->child->hide && !isset($block->child->child)) {
+ $block->child = null;
+ }
+ $block->parent = $parent;
+ if ($block->append && !$block->prepend && isset($parent)) {
+ $this->callParent($tpl, $block);
+ }
+ if ($block->callsChild || !isset($block->child) || ($block->child->hide && !isset($block->child->child))) {
+ $this->callBlock($block, $tpl);
+ } else {
+ $this->process($tpl, $block->child, $block);
+ }
+ if ($block->prepend && isset($parent)) {
+ $this->callParent($tpl, $block);
+ if ($block->append) {
+ if ($block->callsChild || !isset($block->child) ||
+ ($block->child->hide && !isset($block->child->child))
+ ) {
+ $this->callBlock($block, $tpl);
+ } else {
+ $this->process($tpl, $block->child, $block);
+ }
+ }
+ }
+ $block->parent = null;
+ }
+
+ /**
+ * Render child on {$smarty.block.child}
+ *
+ * @param \Smarty_Internal_Template $tpl
+ * @param \Smarty_Internal_Block $block
+ */
+ public function callChild(Smarty_Internal_Template $tpl, Smarty_Internal_Block $block)
+ {
+ if (isset($block->child)) {
+ $this->process($tpl, $block->child, $block);
+ }
+ }
+
+ /**
+ * Render parent on {$smarty.block.parent} or {block append/prepend} *
+ *
+ * @param \Smarty_Internal_Template $tpl
+ * @param \Smarty_Internal_Block $block
+ *
+ * @param null $name
+ *
+ * @throws \SmartyException
+ */
+ public function callParent(Smarty_Internal_Template $tpl, Smarty_Internal_Block $block, $name = null)
+ {
+ if (isset($name)) {
+ $block = $block->parent;
+ while (isset($block)) {
+ if (isset($block->subBlocks[ $name ])) {
+ } else {
+ $block = $block->parent;
+ }
+ }
+ return;
+ } else if (isset($block->parent)) {
+ $this->callBlock($block->parent, $tpl);
+ } else {
+ throw new SmartyException("inheritance: illegal {\$smarty.block.parent} or {block append/prepend} used in parent template '{$tpl->inheritance->sources[$block->tplIndex]->filepath}' block '{$block->name}'");
+ }
+ }
+
+ /**
+ * @param \Smarty_Internal_Block $block
+ * @param \Smarty_Internal_Template $tpl
+ */
+ public function callBlock(Smarty_Internal_Block $block, Smarty_Internal_Template $tpl)
+ {
+ $this->sourceStack[] = $tpl->source;
+ $tpl->source = $this->sources[ $block->tplIndex ];
+ $block->callBlock($tpl);
+ $tpl->source = array_pop($this->sourceStack);
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_make_nocache.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_make_nocache.php
new file mode 100644
index 000000000..65382772d
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_make_nocache.php
@@ -0,0 +1,56 @@
+<?php
+
+/**
+ * {make_nocache} Runtime Methods save(), store()
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ *
+ */
+class Smarty_Internal_Runtime_Make_Nocache
+{
+
+ /**
+ * Save current variable value while rendering compiled template and inject nocache code to
+ * assign variable value in cahed template
+ *
+ * @param \Smarty_Internal_Template $tpl
+ * @param string $var variable name
+ *
+ * @throws \SmartyException
+ */
+ public function save(Smarty_Internal_Template $tpl, $var)
+ {
+ if (isset($tpl->tpl_vars[ $var ])) {
+ $export =
+ preg_replace('/^Smarty_Variable::__set_state[(]|[)]$/', '', var_export($tpl->tpl_vars[ $var ], true));
+ if (preg_match('/(\w+)::__set_state/', $export, $match)) {
+ throw new SmartyException("{make_nocache \${$var}} in template '{$tpl->source->name}': variable does contain object '{$match[1]}' not implementing method '__set_state'");
+ }
+ echo "/*%%SmartyNocache:{$tpl->compiled->nocache_hash}%%*/<?php " .
+ addcslashes("\$_smarty_tpl->smarty->ext->_make_nocache->store(\$_smarty_tpl, '{$var}', ", '\\') .
+ $export . ");?>\n/*/%%SmartyNocache:{$tpl->compiled->nocache_hash}%%*/";
+ }
+ }
+
+ /**
+ * Store variable value saved while rendering compiled template in cached template context
+ *
+ * @param \Smarty_Internal_Template $tpl
+ * @param string $var variable name
+ * @param array $properties
+ */
+ public function store(Smarty_Internal_Template $tpl, $var, $properties)
+ {
+ // do not overwrite existing nocache variables
+ if (!isset($tpl->tpl_vars[ $var ]) || !$tpl->tpl_vars[ $var ]->nocache) {
+ $newVar = new Smarty_Variable();
+ unset($properties[ 'nocache' ]);
+ foreach ($properties as $k => $v) {
+ $newVar->$k = $v;
+ }
+ $tpl->tpl_vars[ $var ] = $newVar;
+ }
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_tplfunction.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_tplfunction.php
new file mode 100644
index 000000000..f6b36f2a5
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_tplfunction.php
@@ -0,0 +1,171 @@
+<?php
+
+/**
+ * TplFunction Runtime Methods callTemplateFunction
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ *
+ **/
+class Smarty_Internal_Runtime_TplFunction
+{
+ /**
+ * Call template function
+ *
+ * @param \Smarty_Internal_Template $tpl template object
+ * @param string $name template function name
+ * @param array $params parameter array
+ * @param bool $nocache true if called nocache
+ *
+ * @throws \SmartyException
+ */
+ public function callTemplateFunction(Smarty_Internal_Template $tpl, $name, $params, $nocache)
+ {
+ $funcParam = isset($tpl->tplFunctions[ $name ]) ? $tpl->tplFunctions[ $name ] :
+ (isset($tpl->smarty->tplFunctions[ $name ]) ? $tpl->smarty->tplFunctions[ $name ] : null);
+ if (isset($funcParam)) {
+ if (!$tpl->caching || ($tpl->caching && $nocache)) {
+ $function = $funcParam[ 'call_name' ];
+ } else {
+ if (isset($funcParam[ 'call_name_caching' ])) {
+ $function = $funcParam[ 'call_name_caching' ];
+ } else {
+ $function = $funcParam[ 'call_name' ];
+ }
+ }
+ if (function_exists($function)) {
+ $this->saveTemplateVariables($tpl, $name);
+ $function ($tpl, $params);
+ $this->restoreTemplateVariables($tpl, $name);
+ return;
+ }
+ // try to load template function dynamically
+ if ($this->addTplFuncToCache($tpl, $name, $function)) {
+ $this->saveTemplateVariables($tpl, $name);
+ $function ($tpl, $params);
+ $this->restoreTemplateVariables($tpl, $name);
+ return;
+ }
+ }
+ throw new SmartyException("Unable to find template function '{$name}'");
+ }
+
+ /**
+ * Register template functions defined by template
+ *
+ * @param \Smarty|\Smarty_Internal_Template|\Smarty_Internal_TemplateBase $obj
+ * @param array $tplFunctions source information array of template functions defined in template
+ * @param bool $override if true replace existing functions with same name
+ */
+ public function registerTplFunctions(Smarty_Internal_TemplateBase $obj, $tplFunctions, $override = true)
+ {
+ $obj->tplFunctions =
+ $override ? array_merge($obj->tplFunctions, $tplFunctions) : array_merge($tplFunctions, $obj->tplFunctions);
+ // make sure that the template functions are known in parent templates
+ if ($obj->_isSubTpl()) {
+ $obj->smarty->ext->_tplFunction->registerTplFunctions($obj->parent, $tplFunctions, false);
+ } else {
+ $obj->smarty->tplFunctions = $override ? array_merge($obj->smarty->tplFunctions, $tplFunctions) :
+ array_merge($tplFunctions, $obj->smarty->tplFunctions);
+ }
+ }
+
+ /**
+ * Return source parameter array for single or all template functions
+ *
+ * @param \Smarty_Internal_Template $tpl template object
+ * @param null|string $name template function name
+ *
+ * @return array|bool|mixed
+ */
+ public function getTplFunction(Smarty_Internal_Template $tpl, $name = null)
+ {
+ if (isset($name)) {
+ return isset($tpl->tplFunctions[ $name ]) ? $tpl->tplFunctions[ $name ] :
+ (isset($tpl->smarty->tplFunctions[ $name ]) ? $tpl->smarty->tplFunctions[ $name ] : false);
+ } else {
+ return empty($tpl->tplFunctions) ? $tpl->smarty->tplFunctions : $tpl->tplFunctions;
+ }
+ }
+
+ /**
+ *
+ * Add template function to cache file for nocache calls
+ *
+ * @param Smarty_Internal_Template $tpl
+ * @param string $_name template function name
+ * @param string $_function PHP function name
+ *
+ * @return bool
+ */
+ public function addTplFuncToCache(Smarty_Internal_Template $tpl, $_name, $_function)
+ {
+ $funcParam = $tpl->tplFunctions[ $_name ];
+ if (is_file($funcParam[ 'compiled_filepath' ])) {
+ // read compiled file
+ $code = file_get_contents($funcParam[ 'compiled_filepath' ]);
+ // grab template function
+ if (preg_match("/\/\* {$_function} \*\/([\S\s]*?)\/\*\/ {$_function} \*\//", $code, $match)) {
+ // grab source info from file dependency
+ preg_match("/\s*'{$funcParam['uid']}'([\S\s]*?)\),/", $code, $match1);
+ unset($code);
+ // make PHP function known
+ eval($match[ 0 ]);
+ if (function_exists($_function)) {
+ // search cache file template
+ $tplPtr = $tpl;
+ while (!isset($tplPtr->cached) && isset($tplPtr->parent)) {
+ $tplPtr = $tplPtr->parent;
+ }
+ // add template function code to cache file
+ if (isset($tplPtr->cached)) {
+ /* @var Smarty_Template_Cached $cache */
+ $cache = $tplPtr->cached;
+ $content = $cache->read($tplPtr);
+ if ($content) {
+ // check if we must update file dependency
+ if (!preg_match("/'{$funcParam['uid']}'(.*?)'nocache_hash'/", $content, $match2)) {
+ $content = preg_replace("/('file_dependency'(.*?)\()/", "\\1{$match1[0]}", $content);
+ }
+ $tplPtr->smarty->ext->_updateCache->write($cache, $tplPtr,
+ preg_replace('/\s*\?>\s*$/', "\n", $content) .
+ "\n" . preg_replace(array('/^\s*<\?php\s+/',
+ '/\s*\?>\s*$/',), "\n",
+ $match[ 0 ]));
+ }
+ }
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Save current template variables on stack
+ *
+ * @param \Smarty_Internal_Template $tpl
+ * @param string $name stack name
+ */
+ public function saveTemplateVariables(Smarty_Internal_Template $tpl, $name)
+ {
+ $tpl->_cache[ 'varStack' ][] =
+ array('tpl' => $tpl->tpl_vars, 'config' => $tpl->config_vars, 'name' => "_tplFunction_{$name}");
+ }
+
+ /**
+ * Restore saved variables into template objects
+ *
+ * @param \Smarty_Internal_Template $tpl
+ * @param string $name stack name
+ */
+ public function restoreTemplateVariables(Smarty_Internal_Template $tpl, $name)
+ {
+ if (isset($tpl->_cache[ 'varStack' ])) {
+ $vars = array_pop($tpl->_cache[ 'varStack' ]);
+ $tpl->tpl_vars = $vars[ 'tpl' ];
+ $tpl->config_vars = $vars[ 'config' ];
+ }
+ }
+}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_runtime_updatecache.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_updatecache.php
index a895a3070..ceee3b718 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_runtime_updatecache.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_updatecache.php
@@ -34,7 +34,7 @@ class Smarty_Internal_Runtime_UpdateCache
$no_output_filter)
{
$content = ob_get_clean();
- unset($cached->hashes[$_template->compiled->nocache_hash]);
+ unset($cached->hashes[ $_template->compiled->nocache_hash ]);
if (!empty($cached->hashes)) {
$hash_array = array();
foreach ($cached->hashes as $hash => $foo) {
@@ -56,14 +56,14 @@ class Smarty_Internal_Runtime_UpdateCache
// escape PHP tags in template content
$content .= preg_replace('/(<%|%>|<\?php|<\?|\?>|<script\s+language\s*=\s*[\"\']?\s*php\s*[\"\']?\s*>)/',
"<?php echo '\$1'; ?>\n", $curr_split);
- if (isset($cache_parts[0][$curr_idx])) {
+ if (isset($cache_parts[ 0 ][ $curr_idx ])) {
$_template->cached->has_nocache_code = true;
- $content .= $cache_parts[1][$curr_idx];
+ $content .= $cache_parts[ 1 ][ $curr_idx ];
}
}
- if (!$no_output_filter && !$_template->compiled->has_nocache_code &&
- (isset($_template->smarty->autoload_filters['output']) ||
- isset($_template->smarty->registered_filters['output']))
+ if (!$no_output_filter && !$_template->cached->has_nocache_code &&
+ (isset($_template->smarty->autoload_filters[ 'output' ]) ||
+ isset($_template->smarty->registered_filters[ 'output' ]))
) {
$content = $_template->smarty->ext->_filterHandler->runFilter('output', $content, $_template);
}
@@ -82,23 +82,18 @@ class Smarty_Internal_Runtime_UpdateCache
*/
public function updateCache(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template, $no_output_filter)
{
- if ($_template->source->handler->uncompiled) {
- ob_start();
- $_template->source->render($_template);
- } else {
- ob_start();
- if (!isset($_template->compiled)) {
- $_template->loadCompiled();
- }
- $_template->compiled->render($_template);
+ ob_start();
+ if (!isset($_template->compiled)) {
+ $_template->loadCompiled();
}
+ $_template->compiled->render($_template);
if ($_template->smarty->debugging) {
$_template->smarty->_debug->start_cache($_template);
}
$this->removeNoCacheHash($cached, $_template, $no_output_filter);
$compile_check = $_template->smarty->compile_check;
$_template->smarty->compile_check = false;
- if (isset($_template->parent) && $_template->parent->_objType == 2) {
+ if ($_template->_isSubTpl()) {
$_template->compiled->unifunc = $_template->parent->compiled->unifunc;
}
if (!$_template->cached->processed) {
@@ -123,7 +118,7 @@ class Smarty_Internal_Runtime_UpdateCache
public function writeCachedContent(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template, $content)
{
if ($_template->source->handler->recompiled || !($_template->caching == Smarty::CACHING_LIFETIME_CURRENT ||
- $_template->caching == Smarty::CACHING_LIFETIME_SAVED)
+ $_template->caching == Smarty::CACHING_LIFETIME_SAVED)
) {
// don't write cache file
return false;
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_updatescope.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_updatescope.php
new file mode 100644
index 000000000..79885321b
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_updatescope.php
@@ -0,0 +1,115 @@
+<?php
+
+/**
+ * Runtime Extension updateScope
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ *
+ **/
+class Smarty_Internal_Runtime_UpdateScope
+{
+
+ /**
+ * Update new assigned template or config variable in other effected scopes
+ *
+ * @param Smarty_Internal_Template $tpl data object
+ * @param string|null $varName variable name
+ * @param int $tagScope tag scope to which bubble up variable value
+ *
+ */
+ public function _updateScope(Smarty_Internal_Template $tpl, $varName, $tagScope = 0)
+ {
+ if ($tagScope) {
+ $this->_updateVarStack($tpl, $varName);
+ $tagScope = $tagScope & ~Smarty::SCOPE_LOCAL;
+ if (!$tpl->scope && !$tagScope) return;
+ }
+ $mergedScope = $tagScope | $tpl->scope;
+ if ($mergedScope) {
+ if ($mergedScope & Smarty::SCOPE_GLOBAL && $varName) {
+ Smarty::$global_tpl_vars[ $varName ] = $tpl->tpl_vars[ $varName ];
+ }
+ // update scopes
+ foreach ($this->_getAffectedScopes($tpl, $mergedScope) as $ptr) {
+ $this->_updateVariableInOtherScope($ptr->tpl_vars, $tpl, $varName);
+ if($tagScope && $ptr->_isTplObj() && isset($tpl->_cache[ 'varStack' ])) {
+ $this->_updateVarStack($ptr, $varName); }
+ }
+ }
+ }
+
+ /**
+ * Get array of objects which needs to be updated by given scope value
+ *
+ * @param Smarty_Internal_Template $tpl
+ * @param int $mergedScope merged tag and template scope to which bubble up variable value
+ *
+ * @return array
+ */
+ public function _getAffectedScopes(Smarty_Internal_Template $tpl, $mergedScope)
+ {
+ $_stack = array();
+ $ptr = $tpl->parent;
+ if ($mergedScope && isset($ptr) && $ptr->_isTplObj()) {
+ $_stack[] = $ptr;
+ $mergedScope = $mergedScope & ~Smarty::SCOPE_PARENT;
+ if (!$mergedScope) {
+ // only parent was set, we are done
+ return $_stack;
+ }
+ $ptr = $ptr->parent;
+ }
+ while (isset($ptr) && $ptr->_isTplObj()) {
+ $_stack[] = $ptr;
+ $ptr = $ptr->parent;
+ }
+ if ($mergedScope & Smarty::SCOPE_SMARTY) {
+ if (isset($tpl->smarty)) {
+ $_stack[] = $tpl->smarty;
+ }
+ } elseif ($mergedScope & Smarty::SCOPE_ROOT) {
+ while (isset($ptr)) {
+ if (!$ptr->_isTplObj()) {
+ $_stack[] = $ptr;
+ break;
+ }
+ $ptr = $ptr->parent;
+ }
+ }
+ return $_stack;
+ }
+
+ /**
+ * Update varibale in other scope
+ *
+ * @param array $tpl_vars template variable array
+ * @param \Smarty_Internal_Template $from
+ * @param string $varName variable name
+ */
+ public function _updateVariableInOtherScope(&$tpl_vars, Smarty_Internal_Template $from, $varName)
+ {
+ if (!isset($tpl_vars[ $varName ])) {
+ $tpl_vars[ $varName ] = clone $from->tpl_vars[ $varName ];
+ } else {
+ $tpl_vars[ $varName ] = clone $tpl_vars[ $varName ];
+ $tpl_vars[ $varName ]->value = $from->tpl_vars[ $varName ]->value;
+ }
+ }
+
+ /**
+ * Update variable in template local variable stack
+ *
+ * @param \Smarty_Internal_Template $tpl
+ * @param string|null $varName variable name or null for config variables
+ */
+ public function _updateVarStack(Smarty_Internal_Template $tpl, $varName)
+ {
+ $i = 0;
+ while (isset($tpl->_cache[ 'varStack' ][ $i ])) {
+ $this->_updateVariableInOtherScope($tpl->_cache[ 'varStack' ][ $i ][ 'tpl' ], $tpl, $varName);
+ $i ++;
+ }
+ }
+}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_runtime_writefile.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_writefile.php
index 05c973783..7c462c6ca 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_runtime_writefile.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_writefile.php
@@ -30,7 +30,8 @@ class Smarty_Internal_Runtime_WriteFile
$_error_reporting = error_reporting();
error_reporting($_error_reporting & ~E_NOTICE & ~E_WARNING);
$_file_perms = property_exists($smarty, '_file_perms') ? $smarty->_file_perms : 0644;
- $_dir_perms = property_exists($smarty, '_dir_perms') ? (isset($smarty->_dir_perms) ? $smarty->_dir_perms : 0777) : 0771;
+ $_dir_perms =
+ property_exists($smarty, '_dir_perms') ? (isset($smarty->_dir_perms) ? $smarty->_dir_perms : 0777) : 0771;
if ($_file_perms !== null) {
$old_umask = umask(0);
}
@@ -42,11 +43,11 @@ class Smarty_Internal_Runtime_WriteFile
}
// write to tmp file, then move to overt file lock race condition
- $_tmp_file = $_dirpath . DS . str_replace(array('.', ','), '_', uniqid('wrt', true));
+ $_tmp_file = $_dirpath . $smarty->ds . str_replace(array('.', ','), '_', uniqid('wrt', true));
if (!file_put_contents($_tmp_file, $_contents)) {
error_reporting($_error_reporting);
throw new SmartyException("unable to write file {$_tmp_file}");
- }
+ }
/*
* Windows' rename() fails if the destination exists,
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_smartytemplatecompiler.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_smartytemplatecompiler.php
index 116bbea7b..8cd37dd56 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_smartytemplatecompiler.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_smartytemplatecompiler.php
@@ -109,7 +109,7 @@ class Smarty_Internal_SmartyTemplateCompiler extends Smarty_Internal_TemplateCom
while ($this->parser->lex->yylex()) {
if ($this->smarty->_parserdebug) {
echo "<pre>Line {$this->parser->lex->line} Parsing {$this->parser->yyTokenName[$this->parser->lex->token]} Token " .
- htmlentities($this->parser->lex->value) . "</pre>";
+ htmlentities($this->parser->lex->value) . "</pre>";
}
$this->parser->doParse($this->parser->lex->token, $this->parser->lex->value);
}
@@ -129,8 +129,8 @@ class Smarty_Internal_SmartyTemplateCompiler extends Smarty_Internal_TemplateCom
// call post compile callbacks
foreach ($this->postCompileCallbacks as $cb) {
$parameter = $cb;
- $parameter[0] = $this;
- call_user_func_array($cb[0], $parameter);
+ $parameter[ 0 ] = $this;
+ call_user_func_array($cb[ 0 ], $parameter);
}
// return compiled code
return $this->prefixCompiledCode . $this->parser->retvalue . $this->postfixCompiledCode;
@@ -144,13 +144,14 @@ class Smarty_Internal_SmartyTemplateCompiler extends Smarty_Internal_TemplateCom
* @param array $parameter optional parameter array
* @param string $key optional key for callback
* @param bool $replace if true replace existing keyed callback
+ *
*/
public function registerPostCompileCallback($callback, $parameter = array(), $key = null, $replace = false)
{
array_unshift($parameter, $callback);
if (isset($key)) {
- if ($replace || !isset($this->postCompileCallbacks[$key])) {
- $this->postCompileCallbacks[$key] = $parameter;
+ if ($replace || !isset($this->postCompileCallbacks[ $key ])) {
+ $this->postCompileCallbacks[ $key ] = $parameter;
}
} else {
$this->postCompileCallbacks[] = $parameter;
@@ -164,6 +165,6 @@ class Smarty_Internal_SmartyTemplateCompiler extends Smarty_Internal_TemplateCom
*/
public function unregisterPostCompileCallback($key)
{
- unset($this->postCompileCallbacks[$key]);
+ unset($this->postCompileCallbacks[ $key ]);
}
}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_template.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_template.php
new file mode 100644
index 000000000..f950606df
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_template.php
@@ -0,0 +1,692 @@
+<?php
+/**
+ * Smarty Internal Plugin Template
+ * This file contains the Smarty template engine
+ *
+ * @package Smarty
+ * @subpackage Template
+ * @author Uwe Tews
+ */
+
+/**
+ * Main class with template data structures and methods
+ *
+ * @package Smarty
+ * @subpackage Template
+ *
+ * @property Smarty_Template_Compiled $compiled
+ * @property Smarty_Template_Cached $cached
+ * @property Smarty_Internal_TemplateCompilerBase $compiler
+ *
+ * The following methods will be dynamically loaded by the extension handler when they are called.
+ * They are located in a corresponding Smarty_Internal_Method_xxxx class
+ *
+ * @method bool mustCompile()
+ */
+class Smarty_Internal_Template extends Smarty_Internal_TemplateBase
+{
+ /**
+ * This object type (Smarty = 1, template = 2, data = 4)
+ *
+ * @var int
+ */
+ public $_objType = 2;
+
+ /**
+ * Global smarty instance
+ *
+ * @var Smarty
+ */
+ public $smarty = null;
+
+ /**
+ * Source instance
+ *
+ * @var Smarty_Template_Source|Smarty_Template_Config
+ */
+ public $source = null;
+
+ /**
+ * Inheritance runtime extension
+ *
+ * @var Smarty_Internal_Runtime_Inheritance
+ */
+ public $inheritance = null;
+
+ /**
+ * Template resource
+ *
+ * @var string
+ */
+ public $template_resource = null;
+
+ /**
+ * flag if compiled template is invalid and must be (re)compiled
+ *
+ * @var bool
+ */
+ public $mustCompile = null;
+
+ /**
+ * Template Id
+ *
+ * @var null|string
+ */
+ public $templateId = null;
+
+ /**
+ * Scope in which variables shall be assigned
+ *
+ * @var int
+ */
+ public $scope = 0;
+
+ /**
+ * Flag which is set while rending a cache file
+ *
+ * @var bool
+ */
+ public $isRenderingCache = false;
+
+ /**
+ * Callbacks called before rendering template
+ *
+ * @var callback[]
+ */
+ public $startRenderCallbacks = array();
+
+ /**
+ * Callbacks called after rendering template
+ *
+ * @var callback[]
+ */
+ public $endRenderCallbacks = array();
+
+ /**
+ * Template object cache
+ *
+ * @var Smarty_Internal_Template[]
+ */
+ public static $tplObjCache = array();
+
+ /**
+ * Template object cache for Smarty::isCached() == true
+ *
+ * @var Smarty_Internal_Template[]
+ */
+ public static $isCacheTplObj = array();
+
+ /**
+ * Subtemplate Info Cache
+ *
+ * @var string[]int[]
+ */
+ public static $subTplInfo = array();
+
+ /**
+ * Create template data object
+ * Some of the global Smarty settings copied to template scope
+ * It load the required template resources and caching plugins
+ *
+ * @param string $template_resource template resource string
+ * @param Smarty $smarty Smarty instance
+ * @param null|\Smarty_Internal_Template|\Smarty|\Smarty_Internal_Data $_parent back pointer to parent object
+ * with variables or null
+ * @param mixed $_cache_id cache id or null
+ * @param mixed $_compile_id compile id or null
+ * @param bool|int|null $_caching use caching?
+ * @param int|null $_cache_lifetime cache life-time in seconds
+ * @param bool $_isConfig
+ *
+ * @throws \SmartyException
+ */
+ public function __construct($template_resource, Smarty $smarty, Smarty_Internal_Data $_parent = null,
+ $_cache_id = null, $_compile_id = null, $_caching = null, $_cache_lifetime = null,
+ $_isConfig = false)
+ {
+ $this->smarty = $smarty;
+ // Smarty parameter
+ $this->cache_id = $_cache_id === null ? $this->smarty->cache_id : $_cache_id;
+ $this->compile_id = $_compile_id === null ? $this->smarty->compile_id : $_compile_id;
+ $this->caching = $_caching === null ? $this->smarty->caching : $_caching;
+ if ($this->caching === true) {
+ $this->caching = Smarty::CACHING_LIFETIME_CURRENT;
+ }
+ $this->cache_lifetime = $_cache_lifetime === null ? $this->smarty->cache_lifetime : $_cache_lifetime;
+ $this->parent = $_parent;
+ // Template resource
+ $this->template_resource = $template_resource;
+ $this->source = $_isConfig ? Smarty_Template_Config::load($this) : Smarty_Template_Source::load($this);
+ parent::__construct();
+ if ($smarty->security_policy && method_exists($smarty->security_policy, 'registerCallBacks')) {
+ $smarty->security_policy->registerCallBacks($this);
+ }
+ }
+
+ /**
+ * render template
+ *
+ * @param bool $no_output_filter if true do not run output filter
+ * @param null|bool $display true: display, false: fetch null: sub-template
+ *
+ * @return string
+ * @throws \SmartyException
+ */
+ public function render($no_output_filter = true, $display = null)
+ {
+ if ($this->smarty->debugging) {
+ if (!isset($this->smarty->_debug)) {
+ $this->smarty->_debug = new Smarty_Internal_Debug();
+ }
+ $this->smarty->_debug->start_template($this, $display);
+ }
+ // checks if template exists
+ if (!$this->source->exists) {
+ throw new SmartyException("Unable to load template '{$this->source->type}:{$this->source->name}'" .
+ ($this->_isSubTpl() ? " in '{$this->parent->template_resource}'" : ''));
+ }
+ // disable caching for evaluated code
+ if ($this->source->handler->recompiled) {
+ $this->caching = false;
+ }
+ // read from cache or render
+ $isCacheTpl =
+ $this->caching == Smarty::CACHING_LIFETIME_CURRENT || $this->caching == Smarty::CACHING_LIFETIME_SAVED;
+ if ($isCacheTpl) {
+ if (!isset($this->cached) || $this->cached->cache_id !== $this->cache_id ||
+ $this->cached->compile_id !== $this->compile_id
+ ) {
+ $this->loadCached(true);
+ }
+ $this->cached->render($this, $no_output_filter);
+ } else {
+ if (!isset($this->compiled) || $this->compiled->compile_id !== $this->compile_id) {
+ $this->loadCompiled(true);
+ }
+ $this->compiled->render($this);
+ }
+
+ // display or fetch
+ if ($display) {
+ if ($this->caching && $this->smarty->cache_modified_check) {
+ $this->smarty->ext->_cacheModify->cacheModifiedCheck($this->cached, $this,
+ isset($content) ? $content : ob_get_clean());
+ } else {
+ if ((!$this->caching || $this->cached->has_nocache_code || $this->source->handler->recompiled) &&
+ !$no_output_filter && (isset($this->smarty->autoload_filters[ 'output' ]) ||
+ isset($this->smarty->registered_filters[ 'output' ]))
+ ) {
+ echo $this->smarty->ext->_filterHandler->runFilter('output', ob_get_clean(), $this);
+ } else {
+ echo ob_get_clean();
+ }
+ }
+ if ($this->smarty->debugging) {
+ $this->smarty->_debug->end_template($this);
+ // debug output
+ $this->smarty->_debug->display_debug($this, true);
+ }
+ return '';
+ } else {
+ if ($this->smarty->debugging) {
+ $this->smarty->_debug->end_template($this);
+ if ($this->smarty->debugging === 2 && $display === false) {
+ $this->smarty->_debug->display_debug($this, true);
+ }
+ }
+ if ($this->_isSubTpl()) {
+ foreach ($this->compiled->required_plugins as $code => $tmp1) {
+ foreach ($tmp1 as $name => $tmp) {
+ foreach ($tmp as $type => $data) {
+ $this->parent->compiled->required_plugins[ $code ][ $name ][ $type ] = $data;
+ }
+ }
+ }
+ }
+ if (!$no_output_filter &&
+ (!$this->caching || $this->cached->has_nocache_code || $this->source->handler->recompiled) &&
+ (isset($this->smarty->autoload_filters[ 'output' ]) ||
+ isset($this->smarty->registered_filters[ 'output' ]))
+ ) {
+ return $this->smarty->ext->_filterHandler->runFilter('output', ob_get_clean(), $this);
+ }
+ // return cache content
+ return null;
+ }
+ }
+
+ /**
+ * Runtime function to render sub-template
+ *
+ * @param string $template template name
+ * @param mixed $cache_id cache id
+ * @param mixed $compile_id compile id
+ * @param integer $caching cache mode
+ * @param integer $cache_lifetime life time of cache data
+ * @param array $data passed parameter template variables
+ * @param int $scope scope in which {include} should execute
+ * @param bool $forceTplCache cache template object
+ * @param string $uid file dependency uid
+ * @param string $content_func function name
+ *
+ */
+ public function _subTemplateRender($template, $cache_id, $compile_id, $caching, $cache_lifetime, $data, $scope,
+ $forceTplCache, $uid = null, $content_func = null)
+ {
+ $tpl = clone $this;
+ $tpl->parent = $this;
+ $smarty = &$this->smarty;
+ $_templateId = $smarty->_getTemplateId($template, $cache_id, $compile_id, $caching, $tpl);
+ // recursive call ?
+ if (isset($tpl->templateId) ? $tpl->templateId : $tpl->_getTemplateId() != $_templateId) {
+ // already in template cache?
+ if (isset(self::$tplObjCache[ $_templateId ])) {
+ // copy data from cached object
+ $cachedTpl = &self::$tplObjCache[ $_templateId ];
+ $tpl->templateId = $cachedTpl->templateId;
+ $tpl->template_resource = $cachedTpl->template_resource;
+ $tpl->cache_id = $cachedTpl->cache_id;
+ $tpl->compile_id = $cachedTpl->compile_id;
+ $tpl->source = $cachedTpl->source;
+ if (isset($cachedTpl->compiled)) {
+ $tpl->compiled = $cachedTpl->compiled;
+ } else {
+ unset($tpl->compiled);
+ }
+ if ($caching != 9999 && isset($cachedTpl->cached)) {
+ $tpl->cached = $cachedTpl->cached;
+ } else {
+ unset($tpl->cached);
+ }
+ } else {
+ $tpl->templateId = $_templateId;
+ $tpl->template_resource = $template;
+ $tpl->cache_id = $cache_id;
+ $tpl->compile_id = $compile_id;
+ if (isset($uid)) {
+ // for inline templates we can get all resource information from file dependency
+ list($filepath, $timestamp, $type) = $tpl->compiled->file_dependency[ $uid ];
+ $tpl->source = new Smarty_Template_Source($smarty, $filepath, $type, $filepath);
+ $tpl->source->filepath = $filepath;
+ $tpl->source->timestamp = $timestamp;
+ $tpl->source->exists = true;
+ $tpl->source->uid = $uid;
+ } else {
+ $tpl->source = Smarty_Template_Source::load($tpl);
+ unset($tpl->compiled);
+ }
+ if ($caching != 9999) {
+ unset($tpl->cached);
+ }
+ }
+ } else {
+ // on recursive calls force caching
+ $forceTplCache = true;
+ }
+ $tpl->caching = $caching;
+ $tpl->cache_lifetime = $cache_lifetime;
+ // set template scope
+ $tpl->scope = $scope;
+ if (!isset(self::$tplObjCache[ $tpl->templateId ]) && !$tpl->source->handler->recompiled) {
+ // check if template object should be cached
+ if ($forceTplCache || (isset(self::$subTplInfo[ $tpl->template_resource ]) &&
+ self::$subTplInfo[ $tpl->template_resource ] > 1) ||
+ ($tpl->_isSubTpl() && isset(self::$tplObjCache[ $tpl->parent->templateId ]))
+ ) {
+ self::$tplObjCache[ $tpl->templateId ] = $tpl;
+ }
+ }
+
+ if (!empty($data)) {
+ // set up variable values
+ foreach ($data as $_key => $_val) {
+ $tpl->tpl_vars[ $_key ] = new Smarty_Variable($_val, $this->isRenderingCache);
+ }
+ }
+ if ($tpl->caching == 9999) {
+ if (!isset($tpl->compiled)) {
+ $this->loadCompiled(true);
+ }
+ if ($tpl->compiled->has_nocache_code) {
+ $this->cached->hashes[ $tpl->compiled->nocache_hash ] = true;
+ }
+ }
+ $tpl->_cache = array();
+ if (isset($uid)) {
+ if ($smarty->debugging) {
+ if (!isset($smarty->_debug)) {
+ $smarty->_debug = new Smarty_Internal_Debug();
+ }
+ $smarty->_debug->start_template($tpl);
+ $smarty->_debug->start_render($tpl);
+ }
+ $tpl->compiled->getRenderedTemplateCode($tpl, $content_func);
+ if ($smarty->debugging) {
+ $smarty->_debug->end_template($tpl);
+ $smarty->_debug->end_render($tpl);
+ }
+ } else {
+ if (isset($tpl->compiled)) {
+ $tpl->compiled->render($tpl);
+ } else {
+ $tpl->render();
+ }
+ }
+ }
+
+ /**
+ * Get called sub-templates and save call count
+ *
+ */
+ public function _subTemplateRegister()
+ {
+ foreach ($this->compiled->includes as $name => $count) {
+ if (isset(self::$subTplInfo[ $name ])) {
+ self::$subTplInfo[ $name ] += $count;
+ } else {
+ self::$subTplInfo[ $name ] = $count;
+ }
+ }
+ }
+
+ /**
+ * Check if this is a sub template
+ *
+ * @return bool true is sub template
+ */
+ public function _isSubTpl()
+ {
+ return isset($this->parent) && $this->parent->_isTplObj();
+ }
+
+ /**
+ * Assign variable in scope
+ *
+ * @param string $varName variable name
+ * @param mixed $value value
+ * @param bool $nocache nocache flag
+ * @param int $scope scope into which variable shall be assigned
+ *
+ */
+ public function _assignInScope($varName, $value, $nocache = false, $scope = 0)
+ {
+ if (isset($this->tpl_vars[ $varName ])) {
+ $this->tpl_vars[ $varName ] = clone $this->tpl_vars[ $varName ];
+ $this->tpl_vars[ $varName ]->value = $value;
+ if ($nocache || $this->isRenderingCache) {
+ $this->tpl_vars[ $varName ]->nocache = true;
+ }
+ } else {
+ $this->tpl_vars[ $varName ] = new Smarty_Variable($value, $nocache || $this->isRenderingCache);
+ }
+ if ($scope >= 0) {
+ if ($scope > 0 || $this->scope > 0) {
+ $this->smarty->ext->_updateScope->_updateScope($this, $varName, $scope);
+ }
+ }
+ }
+
+ /**
+ * This function is executed automatically when a compiled or cached template file is included
+ * - Decode saved properties from compiled template and cache files
+ * - Check if compiled or cache file is valid
+ *
+ * @param \Smarty_Internal_Template $tpl
+ * @param array $properties special template properties
+ * @param bool $cache flag if called from cache file
+ *
+ * @return bool flag if compiled or cache file is valid
+ * @throws \SmartyException
+ */
+ public function _decodeProperties(Smarty_Internal_Template $tpl, $properties, $cache = false)
+ {
+ // on cache resources other than file check version stored in cache code
+ if (!isset($properties[ 'version' ]) || Smarty::SMARTY_VERSION !== $properties[ 'version' ]) {
+ if ($cache) {
+ $tpl->smarty->clearAllCache();
+ } else {
+ $tpl->smarty->clearCompiledTemplate();
+ }
+ return false;
+ }
+ $is_valid = true;
+ if (!empty($properties[ 'file_dependency' ]) &&
+ ((!$cache && $tpl->smarty->compile_check) || $tpl->smarty->compile_check == 1)
+ ) {
+ // check file dependencies at compiled code
+ foreach ($properties[ 'file_dependency' ] as $_file_to_check) {
+ if ($_file_to_check[ 2 ] == 'file' || $_file_to_check[ 2 ] == 'php') {
+ if ($tpl->source->filepath == $_file_to_check[ 0 ]) {
+ // do not recheck current template
+ continue;
+ //$mtime = $tpl->source->getTimeStamp();
+ } else {
+ // file and php types can be checked without loading the respective resource handlers
+ $mtime = is_file($_file_to_check[ 0 ]) ? filemtime($_file_to_check[ 0 ]) : false;
+ }
+ } else {
+ $handler = Smarty_Resource::load($tpl->smarty, $_file_to_check[ 2 ]);
+ if ($handler->checkTimestamps()) {
+ $source = Smarty_Template_Source::load($tpl, $tpl->smarty, $_file_to_check[ 0 ]);
+ $mtime = $source->getTimeStamp();
+ } else {
+ continue;
+ }
+ }
+ if ($mtime === false || $mtime > $_file_to_check[ 1 ]) {
+ $is_valid = false;
+ break;
+ }
+ }
+ }
+ if ($cache) {
+ // CACHING_LIFETIME_SAVED cache expiry has to be validated here since otherwise we'd define the unifunc
+ if ($tpl->caching === Smarty::CACHING_LIFETIME_SAVED && $properties[ 'cache_lifetime' ] >= 0 &&
+ (time() > ($tpl->cached->timestamp + $properties[ 'cache_lifetime' ]))
+ ) {
+ $is_valid = false;
+ }
+ $tpl->cached->cache_lifetime = $properties[ 'cache_lifetime' ];
+ $tpl->cached->valid = $is_valid;
+ $resource = $tpl->cached;
+ } else {
+ $tpl->mustCompile = !$is_valid;
+ $resource = $tpl->compiled;
+ $resource->includes = isset($properties[ 'includes' ]) ? $properties[ 'includes' ] : array();
+ }
+ if ($is_valid) {
+ $resource->unifunc = $properties[ 'unifunc' ];
+ $resource->has_nocache_code = $properties[ 'has_nocache_code' ];
+ // $tpl->compiled->nocache_hash = $properties['nocache_hash'];
+ $resource->file_dependency = $properties[ 'file_dependency' ];
+ }
+ return $is_valid && !function_exists($properties[ 'unifunc' ]);
+ }
+
+ /**
+ * Compiles the template
+ * If the template is not evaluated the compiled template is saved on disk
+ */
+ public function compileTemplateSource()
+ {
+ return $this->compiled->compileTemplateSource($this);
+ }
+
+ /**
+ * Writes the content to cache resource
+ *
+ * @param string $content
+ *
+ * @return bool
+ */
+ public function writeCachedContent($content)
+ {
+ return $this->smarty->ext->_updateCache->writeCachedContent($this->cached, $this, $content);
+ }
+
+ /**
+ * Get unique template id
+ *
+ * @return string
+ */
+ public function _getTemplateId()
+ {
+ return isset($this->templateId) ? $this->templateId : $this->templateId =
+ $this->smarty->_getTemplateId($this->template_resource, $this->cache_id, $this->compile_id);
+ }
+
+ /**
+ * runtime error not matching capture tags
+ */
+ public function capture_error()
+ {
+ throw new SmartyException("Not matching {capture} open/close in \"{$this->template_resource}\"");
+ }
+
+ /**
+ * Load compiled object
+ *
+ * @param bool $force force new compiled object
+ */
+ public function loadCompiled($force = false)
+ {
+ if ($force || !isset($this->compiled)) {
+ $this->compiled = Smarty_Template_Compiled::load($this);
+ }
+ }
+
+ /**
+ * Load cached object
+ *
+ * @param bool $force force new cached object
+ */
+ public function loadCached($force = false)
+ {
+ if ($force || !isset($this->cached)) {
+ $this->cached = Smarty_Template_Cached::load($this);
+ }
+ }
+
+ /**
+ * Load inheritance object
+ *
+ */
+ public function _loadInheritance()
+ {
+ if (!isset($this->inheritance)) {
+ $this->inheritance = new Smarty_Internal_Runtime_Inheritance();
+ }
+ }
+
+ /**
+ * Unload inheritance object
+ *
+ */
+ public function _cleanUp()
+ {
+ $this->startRenderCallbacks = array();
+ $this->endRenderCallbacks = array();
+ $this->inheritance = null;
+ }
+
+ /**
+ * Load compiler object
+ *
+ * @throws \SmartyException
+ */
+ public function loadCompiler()
+ {
+ if (!class_exists($this->source->compiler_class)) {
+ $this->smarty->loadPlugin($this->source->compiler_class);
+ }
+ $this->compiler =
+ new $this->source->compiler_class($this->source->template_lexer_class, $this->source->template_parser_class,
+ $this->smarty);
+ }
+
+ /**
+ * Handle unknown class methods
+ *
+ * @param string $name unknown method-name
+ * @param array $args argument array
+ *
+ * @return mixed
+ * @throws SmartyException
+ */
+ public function __call($name, $args)
+ {
+ // method of Smarty object?
+ if (method_exists($this->smarty, $name)) {
+ return call_user_func_array(array($this->smarty, $name), $args);
+ }
+ // parent
+ return parent::__call($name, $args);
+ }
+
+ /**
+ * set Smarty property in template context
+ *
+ * @param string $property_name property name
+ * @param mixed $value value
+ *
+ * @throws SmartyException
+ */
+ public function __set($property_name, $value)
+ {
+ switch ($property_name) {
+ case 'compiled':
+ case 'cached':
+ case 'compiler':
+ $this->$property_name = $value;
+ return;
+ default:
+ // Smarty property ?
+ if (property_exists($this->smarty, $property_name)) {
+ $this->smarty->$property_name = $value;
+ return;
+ }
+ }
+ throw new SmartyException("invalid template property '$property_name'.");
+ }
+
+ /**
+ * get Smarty property in template context
+ *
+ * @param string $property_name property name
+ *
+ * @return mixed|Smarty_Template_Cached
+ * @throws SmartyException
+ */
+ public function __get($property_name)
+ {
+ switch ($property_name) {
+ case 'compiled':
+ $this->loadCompiled();
+ return $this->compiled;
+
+ case 'cached':
+ $this->loadCached();
+ return $this->cached;
+
+ case 'compiler':
+ $this->loadCompiler();
+ return $this->compiler;
+ default:
+ // Smarty property ?
+ if (property_exists($this->smarty, $property_name)) {
+ return $this->smarty->$property_name;
+ }
+ }
+ throw new SmartyException("template property '$property_name' does not exist.");
+ }
+
+ /**
+ * Template data object destructor
+ */
+ public function __destruct()
+ {
+ if ($this->smarty->cache_locking && isset($this->cached) && $this->cached->is_locked) {
+ $this->cached->handler->releaseLock($this->smarty, $this->cached);
+ }
+ }
+}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_templatebase.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatebase.php
index 9b4953dee..c026a6644 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_templatebase.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatebase.php
@@ -9,34 +9,40 @@
*/
/**
- * Class with shared template methods
+ * Class with shared smarty/template methods
*
* @package Smarty
* @subpackage Template
*
- * @property Smarty $smarty
- * @method Smarty_Internal_TemplateBase setAutoloadFilters(mixed $filters, string $type = null)
+ * @property int $_objType
+ *
+ * The following methods will be dynamically loaded by the extension handler when they are called.
+ * They are located in a corresponding Smarty_Internal_Method_xxxx class
+ *
* @method Smarty_Internal_TemplateBase addAutoloadFilters(mixed $filters, string $type = null)
+ * @method Smarty_Internal_TemplateBase addDefaultModifier(mixed $modifiers)
+ * @method Smarty_Internal_TemplateBase createData(Smarty_Internal_Data $parent = null, string $name = null)
* @method array getAutoloadFilters(string $type = null)
- * @local_method Smarty_Internal_TemplateBase registerFilter(string $type, callback $callback, string $name = null)
- * @method Smarty_Internal_TemplateBase unregisterFilter(string $type, mixed $callback)
- * @method Smarty_Internal_TemplateBase unloadFilter(string $type, string $name)
* @method string getDebugTemplate()
- * @method Smarty_Internal_TemplateBase setDebugTemplate(string $tpl_name)
- * @method Smarty_Internal_TemplateBase setDefaultModifier(mixed $modifiers)
- * @method Smarty_Internal_TemplateBase addDefaultModifier(mixed $modifiers)
* @method array getDefaultModifier()
- * @method Smarty_Internal_TemplateBase registerDefaultPluginHandler(callback $callback)
- * @method Smarty_Internal_TemplateBase registerResource(string $name, Smarty_Resource $resource_handler)
- * @method Smarty_Internal_TemplateBase unregisterResource(string $name)
+ * @method array getTags(mixed $template = null)
+ * @method object getRegisteredObject(string $object_name)
* @method Smarty_Internal_TemplateBase registerCacheResource(string $name, Smarty_CacheResource $resource_handler)
+ * @method Smarty_Internal_TemplateBase registerClass(string $class_name, string $class_impl)
+ * @method Smarty_Internal_TemplateBase registerDefaultConfigHandler(callback $callback)
+ * @method Smarty_Internal_TemplateBase registerDefaultPluginHandler(callback $callback)
+ * @method Smarty_Internal_TemplateBase registerDefaultTemplateHandler(callback $callback)
+ * @method Smarty_Internal_TemplateBase registerResource(string $name, mixed $resource_handler)
+ * @method Smarty_Internal_TemplateBase setAutoloadFilters(mixed $filters, string $type = null)
+ * @method Smarty_Internal_TemplateBase setDebugTemplate(string $tpl_name)
+ * @method Smarty_Internal_TemplateBase setDefaultModifier(mixed $modifiers)
+ * @method Smarty_Internal_TemplateBase unloadFilter(string $type, string $name)
* @method Smarty_Internal_TemplateBase unregisterCacheResource(string $name)
- * @method Smarty_Internal_TemplateBase unregisterPlugin(string $type, string $name)
* @method Smarty_Internal_TemplateBase unregisterObject(string $object_name)
- * @method object getRegisteredObject(string $object_name)
- * @method Smarty_Internal_TemplateBase registerClass(string $class_name, string $class_impl)
- * @method Smarty_Internal_TemplateBase createData(Smarty_Internal_Data $parent = null, string $name = null)
- * @method array getTags(mixed $template = null)
+ * @method Smarty_Internal_TemplateBase unregisterPlugin(string $type, string $name)
+ * @method Smarty_Internal_TemplateBase unregisterFilter(string $type, mixed $callback)
+ * @method Smarty_Internal_TemplateBase unregisterResource(string $name)
+ * @method Smarty _getSmartyObj()
*/
abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data
{
@@ -71,6 +77,13 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data
public $cache_lifetime = 3600;
/**
+ * Array of source information for known template functions
+ *
+ * @var array
+ */
+ public $tplFunctions = array();
+
+ /**
* universal cache
*
* @var array()
@@ -80,10 +93,10 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data
/**
* fetches a rendered Smarty template
*
- * @param string $template the resource handle of the template file or template object
- * @param mixed $cache_id cache id to be used with this template
- * @param mixed $compile_id compile id to be used with this template
- * @param object $parent next higher level of Smarty variables
+ * @param string $template the resource handle of the template file or template object
+ * @param mixed $cache_id cache id to be used with this template
+ * @param mixed $compile_id compile id to be used with this template
+ * @param object $parent next higher level of Smarty variables
*
* @throws Exception
* @throws SmartyException
@@ -134,7 +147,7 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data
* @param mixed $cache_id cache id to be used with this template
* @param mixed $compile_id compile id to be used with this template
* @param object $parent next higher level of Smarty variables
- * @param string $function function type 0 = fetch, 1 = display, 2 = isCache
+ * @param string $function function type 0 = fetch, 1 = display, 2 = isCache
*
* @return mixed
* @throws \Exception
@@ -142,24 +155,24 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data
*/
private function _execute($template, $cache_id, $compile_id, $parent, $function)
{
- $smarty = $this->_objType == 1 ? $this : $this->smarty;
+ $smarty = $this->_getSmartyObj();
+ $saveVars = true;
if ($template === null) {
- if ($this->_objType != 2) {
+ if (!$this->_isTplObj()) {
throw new SmartyException($function . '():Missing \'$template\' parameter');
} else {
- $template = clone $this;
+ $template = $this;
}
} elseif (is_object($template)) {
- if (!isset($template->_objType) || $template->_objType != 2) {
+ /* @var Smarty_Internal_Template $template */
+ if (!isset($template->_objType) || !$template->_isTplObj()) {
throw new SmartyException($function . '():Template object expected');
- } else {
- /* @var Smarty_Internal_Template $template */
- $template = clone $template;
}
} else {
// get template object
- /* @var Smarty_Internal_Template $template */
- $template = $smarty->createTemplate($template, $cache_id, $compile_id, $parent, false);
+ $saveVars = false;
+
+ $template = $smarty->createTemplate($template, $cache_id, $compile_id, $parent ? $parent : $this, false);
if ($this->_objType == 1) {
// set caching in template object
$template->caching = $this->caching;
@@ -169,8 +182,16 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data
$level = ob_get_level();
try {
$_smarty_old_error_level =
- ($this->_objType == 1 && isset($smarty->error_reporting)) ? error_reporting($smarty->error_reporting) :
- null;
+ isset($smarty->error_reporting) ? error_reporting($smarty->error_reporting) : null;
+ if ($this->_objType == 2) {
+ /* @var Smarty_Internal_Template $this */
+ $template->tplFunctions = $this->tplFunctions;
+ $template->inheritance = $this->inheritance;
+ }
+ /* @var Smarty_Internal_Template $parent */
+ if (isset($parent->_objType) && ($parent->_objType == 2) && !empty($parent->tplFunctions)) {
+ $template->tplFunctions = array_merge($parent->tplFunctions, $template->tplFunctions);
+ }
if ($function == 2) {
if ($template->caching) {
// return cache status of template
@@ -178,17 +199,32 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data
$template->loadCached();
}
$result = $template->cached->isCached($template);
- $template->smarty->_cache['isCached'][$template->_getTemplateId()] = $template;
+ Smarty_Internal_Template::$isCacheTplObj[ $template->_getTemplateId() ] = $template;
} else {
return false;
}
} else {
+ if ($saveVars) {
+ $savedTplVars = $template->tpl_vars;
+ $savedConfigVars = $template->config_vars;
+ }
ob_start();
$template->_mergeVars();
if (!empty(Smarty::$global_tpl_vars)) {
$template->tpl_vars = array_merge(Smarty::$global_tpl_vars, $template->tpl_vars);
}
$result = $template->render(false, $function);
+ $template->_cleanUp();
+ if ($saveVars) {
+ $template->tpl_vars = $savedTplVars;
+ $template->config_vars = $savedConfigVars;
+ } else {
+ if (!$function && !isset(Smarty_Internal_Template::$tplObjCache[ $template->templateId ])) {
+ $template->parent = null;
+ $template->tpl_vars = $template->config_vars = array();
+ Smarty_Internal_Template::$tplObjCache[ $template->templateId ] = $template;
+ }
+ }
}
if (isset($_smarty_old_error_level)) {
error_reporting($_smarty_old_error_level);
@@ -199,6 +235,9 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data
while (ob_get_level() > $level) {
ob_end_clean();
}
+ if (isset($_smarty_old_error_level)) {
+ error_reporting($_smarty_old_error_level);
+ }
throw $e;
}
}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php
index 6c3ea5f5d..158d654c7 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php
@@ -17,8 +17,8 @@
*
* @property Smarty_Internal_SmartyTemplateCompiler $prefixCompiledCode = ''
* @property Smarty_Internal_SmartyTemplateCompiler $postfixCompiledCode = ''
- * @method Smarty_Internal_SmartyTemplateCompiler registerPostCompileCallback($callback, $parameter = array(), $key = null, $replace = false)
- * @method Smarty_Internal_SmartyTemplateCompiler unregisterPostCompileCallback($key)
+ * @method registerPostCompileCallback($callback, $parameter = array(), $key = null, $replace = false)
+ * @method unregisterPostCompileCallback($key)
*/
abstract class Smarty_Internal_TemplateCompilerBase
{
@@ -56,7 +56,7 @@ abstract class Smarty_Internal_TemplateCompilerBase
*
* @var array
*/
- public $_tag_objects = array();
+ static $_tag_objects = array();
/**
* tag stack
@@ -290,6 +290,13 @@ abstract class Smarty_Internal_TemplateCompilerBase
public $_cache = array();
/**
+ * counter for prefix variable number
+ *
+ * @var int
+ */
+ public static $prefixVariableNumber = 0;
+
+ /**
* method to compile a Smarty template
*
* @param mixed $_content template source
@@ -353,6 +360,9 @@ abstract class Smarty_Internal_TemplateCompilerBase
$this->plugin_search_order = $this->template->smarty->plugin_search_order;
}
if ($this->smarty->debugging) {
+ if (!isset($this->smarty->_debug)) {
+ $this->smarty->_debug = new Smarty_Internal_Debug();
+ }
$this->smarty->_debug->start_compile($this->template);
}
if (isset($this->template->smarty->security_policy)) {
@@ -375,9 +385,11 @@ abstract class Smarty_Internal_TemplateCompilerBase
$this->has_variable_string = false;
$this->prefix_code = array();
// add file dependency
- $this->parent_compiler->template->compiled->file_dependency[ $this->template->source->uid ] =
- array($this->template->source->filepath, $this->template->source->getTimeStamp(),
- $this->template->source->type);
+ if ($this->smarty->merge_compiled_includes || $this->template->source->handler->checkTimestamps()) {
+ $this->parent_compiler->template->compiled->file_dependency[ $this->template->source->uid ] =
+ array($this->template->source->filepath, $this->template->source->getTimeStamp(),
+ $this->template->source->type,);
+ }
$this->smarty->_current_file = $this->template->source->filepath;
// get template source
if (!empty($this->template->source->components)) {
@@ -396,7 +408,6 @@ abstract class Smarty_Internal_TemplateCompilerBase
$this->smarty->_debug->end_compile($this->template);
}
$this->_tag_stack = array();
- $this->_tag_objects = array();
// free memory
$this->parent_compiler = null;
$this->template = null;
@@ -407,7 +418,6 @@ abstract class Smarty_Internal_TemplateCompilerBase
$this->smarty->_debug->end_compile($this->template);
}
$this->parent_compiler = null;
- $this->template = null;
$this->parser = null;
return $_compiled_code;
}
@@ -501,14 +511,23 @@ abstract class Smarty_Internal_TemplateCompilerBase
$this->template->_cache[ 'used_tags' ][] = array($tag, $args);
}
// check nocache option flag
- if (in_array("'nocache'", $args) || in_array(array('nocache' => 'true'), $args) ||
- in_array(array('nocache' => '"true"'), $args) || in_array(array('nocache' => "'true'"), $args)
- ) {
- $this->tag_nocache = true;
+ foreach ($args as $arg) {
+ if (!is_array($arg)) {
+ if ($arg === "'nocache'" || $arg === 'nocache') {
+ $this->tag_nocache = true;
+ }
+ } else {
+ foreach ($arg as $k => $v) {
+ if (($k === "'nocache'" || $k === 'nocache') && (trim($v, "'\" ") == 'true')) {
+ $this->tag_nocache = true;
+ }
+ }
+ }
}
// compile the smarty tag (required compile classes to compile the tag are auto loaded)
if (($_output = $this->callTagCompiler($tag, $args, $parameter)) === false) {
- if (isset($this->parent_compiler->template->tpl_function[ $tag ])) {
+ if (isset($this->parent_compiler->tpl_function[ $tag ]) ||
+ (isset ($this->template->smarty->ext->_tplFunction) && $this->template->smarty->ext->_tplFunction->getTplFunction($this->template, $tag) !== false)) {
// template defined by {template} tag
$args[ '_attr' ][ 'name' ] = "'" . $tag . "'";
$_output = $this->callTagCompiler('call', $args, $parameter);
@@ -544,7 +563,7 @@ abstract class Smarty_Internal_TemplateCompilerBase
$method = $parameter[ 'object_method' ];
if (!in_array($method, $this->smarty->registered_objects[ $tag ][ 3 ]) &&
(empty($this->smarty->registered_objects[ $tag ][ 1 ]) ||
- in_array($method, $this->smarty->registered_objects[ $tag ][ 1 ]))
+ in_array($method, $this->smarty->registered_objects[ $tag ][ 1 ]))
) {
return $this->callTagCompiler('private_object_function', $args, $parameter, $tag, $method);
} elseif (in_array($method, $this->smarty->registered_objects[ $tag ][ 3 ])) {
@@ -557,7 +576,7 @@ abstract class Smarty_Internal_TemplateCompilerBase
}
}
// check if tag is registered
- foreach (array(Smarty::PLUGIN_COMPILER, Smarty::PLUGIN_FUNCTION, Smarty::PLUGIN_BLOCK) as $plugin_type)
+ foreach (array(Smarty::PLUGIN_COMPILER, Smarty::PLUGIN_FUNCTION, Smarty::PLUGIN_BLOCK,) as $plugin_type)
{
if (isset($this->smarty->registered_plugins[ $plugin_type ][ $tag ])) {
// if compiler function plugin call it now
@@ -573,15 +592,8 @@ abstract class Smarty_Internal_TemplateCompilerBase
if (!$this->smarty->registered_plugins[ $plugin_type ][ $tag ][ 1 ]) {
$this->tag_nocache = true;
}
- $function = $this->smarty->registered_plugins[ $plugin_type ][ $tag ][ 0 ];
- if (!is_array($function)) {
- return $function($new_args, $this);
- } elseif (is_object($function[ 0 ])) {
- return $this->smarty->registered_plugins[ $plugin_type ][ $tag ][ 0 ][ 0 ]->{$function[ 1 ]}($new_args,
- $this);
- } else {
- return call_user_func_array($function, array($new_args, $this));
- }
+ return call_user_func_array($this->smarty->registered_plugins[ $plugin_type ][ $tag ][ 0 ],
+ array($new_args, $this));
}
// compile registered function or block function
if ($plugin_type == Smarty::PLUGIN_FUNCTION || $plugin_type == Smarty::PLUGIN_BLOCK) {
@@ -595,7 +607,7 @@ abstract class Smarty_Internal_TemplateCompilerBase
if ($plugin_type == Smarty::PLUGIN_COMPILER &&
$this->smarty->loadPlugin('smarty_compiler_' . $tag) &&
(!isset($this->smarty->security_policy) ||
- $this->smarty->security_policy->isTrustedTag($tag, $this))
+ $this->smarty->security_policy->isTrustedTag($tag, $this))
) {
$plugin = 'smarty_compiler_' . $tag;
if (is_callable($plugin)) {
@@ -654,15 +666,8 @@ abstract class Smarty_Internal_TemplateCompilerBase
foreach ($args as $mixed) {
$new_args = array_merge($new_args, $mixed);
}
- $function = $this->default_handler_plugins[ $plugin_type ][ $tag ][ 0 ];
- if (!is_array($function)) {
- return $function($new_args, $this);
- } elseif (is_object($function[ 0 ])) {
- return $this->default_handler_plugins[ $plugin_type ][ $tag ][ 0 ][ 0 ]->$function[ 1 ]($new_args,
- $this);
- } else {
- return call_user_func_array($function, array($new_args, $this));
- }
+ return call_user_func_array($this->default_handler_plugins[ $plugin_type ][ $tag ][ 0 ],
+ array($new_args, $this));
} else {
return $this->callTagCompiler('private_registered_' . $plugin_type, $args, $parameter,
$tag);
@@ -713,15 +718,8 @@ abstract class Smarty_Internal_TemplateCompilerBase
if (!$this->smarty->registered_plugins[ Smarty::PLUGIN_COMPILER ][ $tag ][ 1 ]) {
$this->tag_nocache = true;
}
- $function = $this->smarty->registered_plugins[ Smarty::PLUGIN_COMPILER ][ $tag ][ 0 ];
- if (!is_array($function)) {
- return $function($args, $this);
- } elseif (is_object($function[ 0 ])) {
- return $this->smarty->registered_plugins[ Smarty::PLUGIN_COMPILER ][ $tag ][ 0 ][ 0 ]->$function[ 1 ]($args,
- $this);
- } else {
- return call_user_func_array($function, array($args, $this));
- }
+ return call_user_func_array($this->smarty->registered_plugins[ Smarty::PLUGIN_COMPILER ][ $tag ][ 0 ],
+ array($args, $this));
}
if ($this->smarty->loadPlugin('smarty_compiler_' . $tag)) {
$plugin = 'smarty_compiler_' . $tag;
@@ -754,7 +752,8 @@ abstract class Smarty_Internal_TemplateCompilerBase
// not a variable variable
$var = trim($variable, '\'');
$this->tag_nocache = $this->tag_nocache |
- $this->template->ext->getTemplateVars->_getVariable($this->template, $var, null, true, false)->nocache;
+ $this->template->ext->getTemplateVars->_getVariable($this->template, $var, null, true,
+ false)->nocache;
// todo $this->template->compiled->properties['variables'][$var] = $this->tag_nocache | $this->nocache;
}
return '$_smarty_tpl->tpl_vars[' . $variable . ']->value';
@@ -774,6 +773,61 @@ abstract class Smarty_Internal_TemplateCompilerBase
}
/**
+ * compile PHP function call
+ *
+ * @param string $name
+ * @param array $parameter
+ *
+ * @return string
+ */
+ public function compilePHPFunctionCall($name, $parameter)
+ {
+ if (!$this->smarty->security_policy || $this->smarty->security_policy->isTrustedPhpFunction($name, $this)) {
+ if (strcasecmp($name, 'isset') === 0 || strcasecmp($name, 'empty') === 0 ||
+ strcasecmp($name, 'array') === 0 || is_callable($name)
+ ) {
+ $func_name = strtolower($name);
+ $par = implode(',', $parameter);
+ $parHasFuction = strpos($par, '(') !== false;
+ if ($func_name == 'isset') {
+ if (count($parameter) == 0) {
+ $this->trigger_template_error('Illegal number of paramer in "isset()"');
+ }
+ if ($parHasFuction) {
+ $prefixVar = $this->getNewPrefixVariable();
+ $this->appendPrefixCode("<?php $prefixVar" . '=' . $par . ';?>');
+ $isset_par = $prefixVar;
+ } else {
+ $isset_par = str_replace("')->value", "',null,true,false)->value", $par);
+ }
+ return $name . "(" . $isset_par . ")";
+ } elseif (in_array($func_name, array('empty', 'reset', 'current', 'end', 'prev', 'next'))) {
+ if (count($parameter) != 1) {
+ $this->trigger_template_error('Illegal number of paramer in "empty()"');
+ }
+ if ($func_name == 'empty') {
+ if ($parHasFuction) {
+ $prefixVar = $this->getNewPrefixVariable();
+ $this->appendPrefixCode("<?php $prefixVar" . '=' . $par . ';?>');
+
+ return $func_name . '(' . $prefixVar . ')';
+ } else {
+ return $func_name . '(' .
+ str_replace("')->value", "',null,true,false)->value", $parameter[ 0 ]) . ')';
+ }
+ } else {
+ return $func_name . '(' . $parameter[ 0 ] . ')';
+ }
+ } else {
+ return $name . "(" . implode(',', $parameter) . ")";
+ }
+ } else {
+ $this->trigger_template_error("unknown function \"" . $name . "\"");
+ }
+ }
+ }
+
+ /**
* This method is called from parser to process a text content section
* - remove text from inheritance child templates as they may generate output
* - strip text if strip is enabled
@@ -787,7 +841,6 @@ abstract class Smarty_Internal_TemplateCompilerBase
if ((string) $text != '') {
$store = array();
$_store = 0;
- $_offset = 0;
if ($this->parser->strip) {
if (strpos($text, '<') !== false) {
// capture html elements not to be messed with
@@ -804,15 +857,14 @@ abstract class Smarty_Internal_TemplateCompilerBase
$_store ++;
}
}
-
$expressions = array(// replace multiple spaces between tags by a single space
- // can't remove them entirely, becaue that might break poorly implemented CSS display:inline-block elements
- '#(:SMARTY@!@|>)\s+(?=@!@SMARTY:|<)#s' => '\1 \2',
- // remove spaces between attributes (but not in attribute values!)
+ '#(:SMARTY@!@|>)[\040\011]+(?=@!@SMARTY:|<)#s' => '\1 \2',
+ // remove newline between tags
+ '#(:SMARTY@!@|>)[\040\011]*[\n]\s*(?=@!@SMARTY:|<)#s' => '\1\2',
+ // remove multiple spaces between attributes (but not in attribute values!)
'#(([a-z0-9]\s*=\s*("[^"]*?")|(\'[^\']*?\'))|<[a-z0-9_]+)\s+([a-z/>])#is' => '\1 \5',
- '#^\s+<#Ss' => '<',
- '#>\s+$#Ss' => '>',
- $this->stripRegEx => '');
+ '#>[\040\011]+$#Ss' => '> ', '#>[\040\011]*[\n]\s*$#Ss' => '>',
+ $this->stripRegEx => '',);
$text = preg_replace(array_keys($expressions), array_values($expressions), $text);
$_offset = 0;
@@ -848,12 +900,29 @@ abstract class Smarty_Internal_TemplateCompilerBase
* @param mixed $param2 optional parameter
* @param mixed $param3 optional parameter
*
- * @return string compiled code
+ * @return string|bool compiled code or false
*/
public function callTagCompiler($tag, $args, $param1 = null, $param2 = null, $param3 = null)
{
+ $tagCompiler = $this->getTagCompiler($tag);
+ // compile this tag
+ return $tagCompiler === false ? false : $tagCompiler->compile($args, $this, $param1, $param2, $param3);
+ }
+
+ /**
+ * lazy loads internal compile plugin for tag compile objects cached for reuse.
+ *
+ * class name format: Smarty_Internal_Compile_TagName
+ * plugin filename format: Smarty_Internal_TagName.php
+ *
+ * @param string $tag tag name
+ *
+ * @return Smarty_Internal_CompileBase|bool tag compiler object or false if not found
+ */
+ public function getTagCompiler($tag)
+ {
// re-use object if already exists
- if (!isset($this->_tag_objects[ $tag ])) {
+ if (!isset(self::$_tag_objects[ $tag ])) {
// lazy load internal compiler plugin
$_tag = explode('_', $tag);
$_tag = array_map('ucfirst', $_tag);
@@ -861,15 +930,12 @@ abstract class Smarty_Internal_TemplateCompilerBase
if (class_exists($class_name) &&
(!isset($this->smarty->security_policy) || $this->smarty->security_policy->isTrustedTag($tag, $this))
) {
- $this->_tag_objects[ $tag ] = new $class_name;
+ self::$_tag_objects[ $tag ] = new $class_name;
} else {
- $this->_tag_objects[ $tag ] = false;
- return false;
+ self::$_tag_objects[ $tag ] = false;
}
}
- // compile this tag
- return $this->_tag_objects[ $tag ] === false ? false :
- $this->_tag_objects[ $tag ]->compile($args, $this, $param1, $param2, $param3);
+ return self::$_tag_objects[ $tag ];
}
/**
@@ -955,7 +1021,7 @@ abstract class Smarty_Internal_TemplateCompilerBase
$script = null;
$cacheable = true;
$result = call_user_func_array($this->smarty->default_plugin_handler_func,
- array($tag, $plugin_type, $this->template, &$callback, &$script, &$cacheable));
+ array($tag, $plugin_type, $this->template, &$callback, &$script, &$cacheable,));
if ($result) {
$this->tag_nocache = $this->tag_nocache || !$cacheable;
if ($script !== null) {
@@ -976,11 +1042,6 @@ abstract class Smarty_Internal_TemplateCompilerBase
$this->trigger_template_error("Default plugin handler: Returned script file \"{$script}\" for \"{$tag}\" not found");
}
}
- if (!is_string($callback) &&
- !(is_array($callback) && is_string($callback[ 0 ]) && is_string($callback[ 1 ]))
- ) {
- $this->trigger_template_error("Default plugin handler: Returned callback for \"{$tag}\" must be a static function name or array of class and function name");
- }
if (is_callable($callback)) {
$this->default_handler_plugins[ $plugin_type ][ $tag ] = array($callback, true, array());
@@ -1035,7 +1096,7 @@ abstract class Smarty_Internal_TemplateCompilerBase
$_output = addcslashes($content, '\'\\');
$_output = str_replace("^#^", "'", $_output);
$_output = "<?php echo '/*%%SmartyNocache:{$this->nocache_hash}%%*/" . $_output .
- "/*/%%SmartyNocache:{$this->nocache_hash}%%*/';?>\n";
+ "/*/%%SmartyNocache:{$this->nocache_hash}%%*/';?>\n";
// make sure we include modifier plugins for nocache code
foreach ($this->modifier_plugins as $plugin_name => $dummy) {
if (isset($this->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ $plugin_name ][ 'modifier' ])) {
@@ -1065,8 +1126,8 @@ abstract class Smarty_Internal_TemplateCompilerBase
*/
public function getId($input)
{
- if (preg_match('~^[\'"]*([0-9]*[a-zA-Z_]\w*)[\'"]*$~', $input, $match)) {
- return $match[ 1 ];
+ if (preg_match('~^([\'"]*)([0-9]*[a-zA-Z_]\w*)\1$~', $input, $match)) {
+ return $match[ 2 ];
}
return false;
}
@@ -1087,6 +1148,52 @@ abstract class Smarty_Internal_TemplateCompilerBase
}
/**
+ * Set nocache flag in variable or create new variable
+ *
+ * @param string $varName
+ */
+ public function setNocacheInVariable($varName)
+ {
+ // create nocache var to make it know for further compiling
+ if ($_var = $this->getId($varName)) {
+ if (isset($this->template->tpl_vars[ $_var ])) {
+ $this->template->tpl_vars[ $_var ] = clone $this->template->tpl_vars[ $_var ];
+ $this->template->tpl_vars[ $_var ]->nocache = true;
+ } else {
+ $this->template->tpl_vars[ $_var ] = new Smarty_Variable(null, true);
+ }
+ }
+ }
+
+ /**
+ * @param array $_attr tag attributes
+ * @param array $validScopes
+ *
+ * @return int|string
+ * @throws \SmartyCompilerException
+ */
+ public function convertScope($_attr, $validScopes)
+ {
+ $_scope = 0;
+ if (isset($_attr[ 'scope' ])) {
+ $_scopeName = trim($_attr[ 'scope' ], "'\"");
+ if (is_numeric($_scopeName) && in_array($_scopeName, $validScopes)) {
+ $_scope = $_scopeName;
+ } elseif (is_string($_scopeName)) {
+ $_scopeName = trim($_scopeName, "'\"");
+ $_scope = isset($validScopes[ $_scopeName ]) ? $validScopes[ $_scopeName ] : false;
+ } else {
+ $_scope = false;
+ }
+ if ($_scope === false) {
+ $err = var_export($_scopeName, true);
+ $this->trigger_template_error("illegal value '{$err}' for \"scope\" attribute", null, true);
+ }
+ }
+ return $_scope;
+ }
+
+ /**
* Generate nocache code string
*
* @param string $code PHP code
@@ -1096,7 +1203,8 @@ abstract class Smarty_Internal_TemplateCompilerBase
public function makeNocacheCode($code)
{
return "echo '/*%%SmartyNocache:{$this->nocache_hash}%%*/<?php " .
- str_replace("^#^", "'", addcslashes($code, '\'\\')) . "?>/*/%%SmartyNocache:{$this->nocache_hash}%%*/';\n";
+ str_replace("^#^", "'", addcslashes($code, '\'\\')) .
+ "?>/*/%%SmartyNocache:{$this->nocache_hash}%%*/';\n";
}
/**
@@ -1167,4 +1275,91 @@ abstract class Smarty_Internal_TemplateCompilerBase
$e->template = $this->template->source->filepath;
throw $e;
}
+
+ /**
+ * Return var_export() value with all white spaces removed
+ *
+ * @param mixed $value
+ *
+ * @return string
+ */
+ public function getVarExport($value)
+ {
+ return preg_replace('/\s/', '', var_export($value, true));
+ }
+
+ /**
+ * Check if $value contains variable elements
+ *
+ * @param mixed $value
+ *
+ * @return bool|int
+ */
+ public function isVariable($value)
+ {
+ if (is_string($value)) {
+ return preg_match('/[$(]/', $value);
+ }
+ if (is_bool($value) || is_numeric($value)) {
+ return false;
+ }
+ if (is_array($value)) {
+ foreach ($value as $k => $v) {
+ if ($this->isVariable($k) || $this->isVariable($v)) {
+ return true;
+ }
+ }
+ return false;
+ }
+ return false;
+ }
+
+ /**
+ * Get new prefix variable name
+ *
+ * @return string
+ */
+ public function getNewPrefixVariable()
+ {
+ self::$prefixVariableNumber ++;
+ return $this->getPrefixVariable();
+ }
+
+ /**
+ * Get current prefix variable name
+ *
+ * @return string
+ */
+ public function getPrefixVariable()
+ {
+ return '$_prefixVariable' . self::$prefixVariableNumber;
+ }
+
+ /**
+ * append code to prefix buffer
+ *
+ * @param string $code
+ */
+ public function appendPrefixCode($code)
+ {
+ $this->prefix_code[] = $code;
+ }
+
+ /**
+ * get prefix code string
+ *
+ * @return string
+ */
+ public function getPrefixCode()
+ {
+ $code = '';
+ $prefixArray = array_merge($this->prefix_code, array_pop($this->prefixCodeStack));
+ $this->prefixCodeStack[] = array();
+ foreach ($prefixArray as $c) {
+ $code = $this->appendCode($code, $c);
+ }
+ $this->prefix_code = array();
+ return $code;
+ }
+
}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_templatelexer.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatelexer.php
index 993b7be62..8e870b75c 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_templatelexer.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatelexer.php
@@ -26,6 +26,13 @@ class Smarty_Internal_Templatelexer
public $data;
/**
+ * Source length
+ *
+ * @var int
+ */
+ public $dataLength = null;
+
+ /**
* byte counter
*
* @var int
@@ -178,21 +185,20 @@ class Smarty_Internal_Templatelexer
* @var array
*/
public $smarty_token_names = array( // Text for parser error messages
- 'NOT' => '(!,not)', 'OPENP' => '(', 'CLOSEP' => ')',
- 'OPENB' => '[', 'CLOSEB' => ']', 'PTR' => '->', 'APTR' => '=>',
- 'EQUAL' => '=', 'NUMBER' => 'number', 'UNIMATH' => '+" , "-',
- 'MATH' => '*" , "/" , "%', 'INCDEC' => '++" , "--',
- 'SPACE' => ' ', 'DOLLAR' => '$', 'SEMICOLON' => ';',
- 'COLON' => ':', 'DOUBLECOLON' => '::', 'AT' => '@', 'HATCH' => '#',
- 'QUOTE' => '"', 'BACKTICK' => '`', 'VERT' => '"|" modifier',
- 'DOT' => '.', 'COMMA' => '","', 'QMARK' => '"?"',
- 'ID' => 'id, name', 'TEXT' => 'text',
- 'LDELSLASH' => '{/..} closing tag', 'LDEL' => '{...} Smarty tag',
- 'COMMENT' => 'comment', 'AS' => 'as', 'TO' => 'to',
- 'PHP' => '"<?php", "<%", "{php}" tag',
- 'LOGOP' => '"<", "==" ... logical operator',
- 'TLOGOP' => '"lt", "eq" ... logical operator; "is div by" ... if condition',
- 'SCOND' => '"is even" ... if condition',);
+ 'NOT' => '(!,not)', 'OPENP' => '(', 'CLOSEP' => ')', 'OPENB' => '[',
+ 'CLOSEB' => ']', 'PTR' => '->', 'APTR' => '=>', 'EQUAL' => '=',
+ 'NUMBER' => 'number', 'UNIMATH' => '+" , "-', 'MATH' => '*" , "/" , "%',
+ 'INCDEC' => '++" , "--', 'SPACE' => ' ', 'DOLLAR' => '$',
+ 'SEMICOLON' => ';', 'COLON' => ':', 'DOUBLECOLON' => '::', 'AT' => '@',
+ 'HATCH' => '#', 'QUOTE' => '"', 'BACKTICK' => '`',
+ 'VERT' => '"|" modifier', 'DOT' => '.', 'COMMA' => '","',
+ 'QMARK' => '"?"', 'ID' => 'id, name', 'TEXT' => 'text',
+ 'LDELSLASH' => '{/..} closing tag', 'LDEL' => '{...} Smarty tag',
+ 'COMMENT' => 'comment', 'AS' => 'as', 'TO' => 'to',
+ 'PHP' => '"<?php", "<%", "{php}" tag',
+ 'LOGOP' => '"<", "==" ... logical operator',
+ 'TLOGOP' => '"lt", "eq" ... logical operator; "is div by" ... if condition',
+ 'SCOND' => '"is even" ... if condition',);
/**
* constructor
@@ -203,16 +209,17 @@ class Smarty_Internal_Templatelexer
function __construct($data, Smarty_Internal_TemplateCompilerBase $compiler)
{
$this->data = $data;
+ $this->dataLength = strlen($data);
$this->counter = 0;
- if (preg_match('~^\xEF\xBB\xBF~i', $this->data, $match)) {
+ if (preg_match('/^\xEF\xBB\xBF/i', $this->data, $match)) {
$this->counter += strlen($match[ 0 ]);
}
$this->line = 1;
$this->smarty = $compiler->smarty;
$this->compiler = $compiler;
- $this->ldel = preg_quote($this->smarty->left_delimiter, '~');
+ $this->ldel = preg_quote($this->smarty->left_delimiter, '/');
$this->ldel_length = strlen($this->smarty->left_delimiter);
- $this->rdel = preg_quote($this->smarty->right_delimiter, '~');
+ $this->rdel = preg_quote($this->smarty->right_delimiter, '/');
$this->rdel_length = strlen($this->smarty->right_delimiter);
$this->smarty_token_names[ 'LDEL' ] = $this->smarty->left_delimiter;
$this->smarty_token_names[ 'RDEL' ] = $this->smarty->right_delimiter;
@@ -287,22 +294,24 @@ class Smarty_Internal_Templatelexer
{
if (!isset($this->yy_global_pattern1)) {
$this->yy_global_pattern1 =
- "/\G([{][}])|\G(" . $this->ldel . "[*])|\G((" . $this->ldel . "\\s*php(.*?)" . $this->rdel . ")|(" .
+ "/\G([{][}])|\G(" . $this->ldel . "[*])|\G((" . $this->ldel . "\\s*php([ ].*?)?" . $this->rdel . ")|(" .
$this->ldel . "\\s*[\/]php" . $this->rdel . "))|\G(" . $this->ldel . "\\s*literal\\s*" . $this->rdel .
")|\G(" . $this->ldel . "\\s*)|\G(\\s*" . $this->rdel .
")|\G((<[?]((php\\s+|=)|\\s+))|(<[%])|(<[?]xml\\s+)|(<script\\s+language\\s*=\\s*[\"']?\\s*php\\s*[\"']?\\s*>)|([?][>])|([%][>]))|\G([\S\s])/isS";
}
- if ($this->counter >= strlen($this->data)) {
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
return false; // end of input
}
do {
if (preg_match($this->yy_global_pattern1, $this->data, $yymatches, null, $this->counter)) {
- $yysubmatches = $yymatches;
- if (strlen($yysubmatches[ 0 ]) < 200) {
- $yymatches = preg_grep("/(.|\s)+/", $yysubmatches);
+ if (!isset($yymatches[ 0 ][ 1 ])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
} else {
- $yymatches = array_filter($yymatches, 'strlen');
+ $yymatches = array_filter($yymatches);
}
if (empty($yymatches)) {
throw new Exception('Error: lexing failed because a rule matched' . ' an empty string. Input "' .
@@ -324,7 +333,7 @@ class Smarty_Internal_Templatelexer
} elseif ($r === false) {
$this->counter += strlen($this->value);
$this->line += substr_count($this->value, "\n");
- if ($this->counter >= strlen($this->data)) {
+ if ($this->counter >= $this->dataLength) {
return false; // end of input
}
// skip this token
@@ -334,7 +343,8 @@ class Smarty_Internal_Templatelexer
throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[ $this->counter ]);
}
break;
- } while (true);
+ }
+ while (true);
} // end function
const TEXT = 1;
@@ -348,7 +358,7 @@ class Smarty_Internal_Templatelexer
function yy_r1_2()
{
- preg_match("~[*]{$this->rdel}~", $this->data, $match, PREG_OFFSET_CAPTURE, $this->counter);
+ preg_match("/[*]{$this->rdel}/", $this->data, $match, PREG_OFFSET_CAPTURE, $this->counter);
if (isset($match[ 0 ][ 1 ])) {
$to = $match[ 0 ][ 1 ] + strlen($match[ 0 ][ 0 ]);
} else {
@@ -361,8 +371,7 @@ class Smarty_Internal_Templatelexer
function yy_r1_3()
{
- $obj = new Smarty_Internal_Compile_Private_Php();
- $obj->parsePhp($this);
+ $this->compiler->getTagCompiler('private_php')->parsePhp($this);
}
function yy_r1_7()
@@ -400,15 +409,14 @@ class Smarty_Internal_Templatelexer
function yy_r1_10()
{
- $obj = new Smarty_Internal_Compile_Private_Php();
- $obj->parsePhp($this);
+ $this->compiler->getTagCompiler('private_php')->parsePhp($this);
}
function yy_r1_19()
{
- $to = strlen($this->data);
- preg_match("~($this->ldel)|(<[?]((php\s+|=)|\s+))|(<[%])|(<[?]xml\s+)|(<script\s+language\s*=\s*[\"']?\s*php\s*[\"']?\s*>)|([?][>])|([%][>])~i",
+ $to = $this->dataLength;
+ preg_match("/($this->ldel)|(<[?]((php\s+|=)|\s+))|(<[%])|(<[?]xml\s+)|(<script\s+language\s*=\s*[\"']?\s*php\s*[\"']?\s*>)|([?][>])|([%][>])/i",
$this->data, $match, PREG_OFFSET_CAPTURE, $this->counter);
if (isset($match[ 0 ][ 1 ])) {
$to = $match[ 0 ][ 1 ];
@@ -423,22 +431,24 @@ class Smarty_Internal_Templatelexer
$this->yy_global_pattern2 =
"/\G(" . $this->ldel . "\\s*(if|elseif|else if|while)\\s+)|\G(" . $this->ldel . "\\s*for\\s+)|\G(" .
$this->ldel . "\\s*foreach(?![^\s]))|\G(" . $this->ldel . "\\s*setfilter\\s+)|\G(" . $this->ldel .
- "\\s*[0-9]*[a-zA-Z_]\\w*(\\s+nocache)?\\s*" . $this->rdel . ")|\G(" . $this->ldel .
- "\\s*[\/](?:(?!block)[0-9]*[a-zA-Z_]\\w*)\\s*" . $this->rdel . ")|\G(" . $this->ldel .
- "\\s*[$][0-9]*[a-zA-Z_]\\w*(\\s+nocache)?\\s*" . $this->rdel . ")|\G(" . $this->ldel . "\\s*[\/])|\G(" .
- $this->ldel . "\\s*)/isS";
+ "\\s*make_nocache\\s+)|\G(" . $this->ldel . "\\s*[0-9]*[a-zA-Z_]\\w*(\\s+nocache)?\\s*" . $this->rdel .
+ ")|\G(" . $this->ldel . "\\s*[\/](?:(?!block)[0-9]*[a-zA-Z_]\\w*)\\s*" . $this->rdel . ")|\G(" .
+ $this->ldel . "\\s*[$][0-9]*[a-zA-Z_]\\w*(\\s+nocache)?\\s*" . $this->rdel . ")|\G(" . $this->ldel .
+ "\\s*[\/])|\G(" . $this->ldel . "\\s*)/isS";
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
}
- if ($this->counter >= strlen($this->data)) {
+ if ($this->counter >= $this->dataLength) {
return false; // end of input
}
do {
if (preg_match($this->yy_global_pattern2, $this->data, $yymatches, null, $this->counter)) {
- $yysubmatches = $yymatches;
- if (strlen($yysubmatches[ 0 ]) < 200) {
- $yymatches = preg_grep("/(.|\s)+/", $yysubmatches);
+ if (!isset($yymatches[ 0 ][ 1 ])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
} else {
- $yymatches = array_filter($yymatches, 'strlen');
+ $yymatches = array_filter($yymatches);
}
if (empty($yymatches)) {
throw new Exception('Error: lexing failed because a rule matched' . ' an empty string. Input "' .
@@ -460,7 +470,7 @@ class Smarty_Internal_Templatelexer
} elseif ($r === false) {
$this->counter += strlen($this->value);
$this->line += substr_count($this->value, "\n");
- if ($this->counter >= strlen($this->data)) {
+ if ($this->counter >= $this->dataLength) {
return false; // end of input
}
// skip this token
@@ -470,7 +480,8 @@ class Smarty_Internal_Templatelexer
throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[ $this->counter ]);
}
break;
- } while (true);
+ }
+ while (true);
} // end function
const TAG = 2;
@@ -510,12 +521,20 @@ class Smarty_Internal_Templatelexer
function yy_r2_6()
{
+ $this->token = Smarty_Internal_Templateparser::TP_LDELMAKENOCACHE;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+
+ function yy_r2_7()
+ {
+
$this->yypopstate();
$this->token = Smarty_Internal_Templateparser::TP_SIMPLETAG;
$this->taglineno = $this->line;
}
- function yy_r2_8()
+ function yy_r2_9()
{
$this->yypopstate();
@@ -523,7 +542,7 @@ class Smarty_Internal_Templatelexer
$this->taglineno = $this->line;
}
- function yy_r2_9()
+ function yy_r2_10()
{
if ($this->_yy_stack[ count($this->_yy_stack) - 1 ] == self::TEXT) {
@@ -538,7 +557,7 @@ class Smarty_Internal_Templatelexer
}
}
- function yy_r2_11()
+ function yy_r2_12()
{
$this->token = Smarty_Internal_Templateparser::TP_LDELSLASH;
@@ -546,7 +565,7 @@ class Smarty_Internal_Templatelexer
$this->taglineno = $this->line;
}
- function yy_r2_12()
+ function yy_r2_13()
{
$this->token = Smarty_Internal_Templateparser::TP_LDEL;
@@ -558,19 +577,21 @@ class Smarty_Internal_Templatelexer
{
if (!isset($this->yy_global_pattern3)) {
$this->yy_global_pattern3 = "/\G(\\s*" . $this->rdel . ")|\G(" . $this->ldel .
- "\\s*)|\G([\"])|\G('[^'\\\\]*(?:\\\\.[^'\\\\]*)*')|\G([$]smarty\\.block\\.(child|parent))|\G([$][0-9]*[a-zA-Z_]\\w*)|\G([$])|\G(\\s+is\\s+in\\s+)|\G(\\s+as\\s+)|\G(\\s+to\\s+)|\G(\\s+step\\s+)|\G(\\s+instanceof\\s+)|\G(\\s*(([!=][=]{1,2})|([<][=>]?)|([>][=]?)|[&|]{2})\\s*)|\G(\\s+(eq|ne|neq|gt|ge|gte|lt|le|lte|mod|and|or|xor|(is\\s+(not\\s+)?(odd|even|div)\\s+by))\\s+)|\G(\\s+is\\s+(not\\s+)?(odd|even))|\G(([!]\\s*)|(not\\s+))|\G([(](int(eger)?|bool(ean)?|float|double|real|string|binary|array|object)[)]\\s*)|\G(\\s*[(]\\s*)|\G(\\s*[)])|\G(\\[\\s*)|\G(\\s*\\])|\G(\\s*[-][>]\\s*)|\G(\\s*[=][>]\\s*)|\G(\\s*[=]\\s*)|\G(([+]|[-]){2})|\G(\\s*([+]|[-])\\s*)|\G(\\s*([*]{1,2}|[%\/^&]|[<>]{2})\\s*)|\G([@])|\G([#])|\G(\\s+[0-9]*[a-zA-Z_][a-zA-Z0-9_\-:]*\\s*[=]\\s*)|\G(([0-9]*[a-zA-Z_]\\w*)?(\\\\[0-9]*[a-zA-Z_]\\w*)+)|\G([0-9]*[a-zA-Z_]\\w*)|\G(\\d+)|\G([`])|\G([|])|\G([.])|\G(\\s*[,]\\s*)|\G(\\s*[;]\\s*)|\G([:]{2})|\G(\\s*[:]\\s*)|\G(\\s*[?]\\s*)|\G(0[xX][0-9a-fA-F]+)|\G(\\s+)|\G([\S\s])/isS";
+ "\\s*)|\G([\"])|\G('[^'\\\\]*(?:\\\\.[^'\\\\]*)*')|\G([$]smarty\\.block\\.(child|parent))|\G([$][0-9]*[a-zA-Z_]\\w*)|\G([$])|\G(\\s+is\\s+in\\s+)|\G(\\s+as\\s+)|\G(\\s+to\\s+)|\G(\\s+step\\s+)|\G(\\s+instanceof\\s+)|\G(\\s*(([!=][=]{1,2})|([<][=>]?)|([>][=]?)|[&|]{2})\\s*)|\G(\\s+(eq|ne|neq|gt|ge|gte|lt|le|lte|mod|and|or|xor)\\s+)|\G(\\s+(is\\s+(not\\s+)?(odd|even|div)\\s+by)\\s+)|\G(\\s+is\\s+(not\\s+)?(odd|even))|\G(([!]\\s*)|(not\\s+))|\G([(](int(eger)?|bool(ean)?|float|double|real|string|binary|array|object)[)]\\s*)|\G(\\s*[(]\\s*)|\G(\\s*[)])|\G(\\[\\s*)|\G(\\s*\\])|\G(\\s*[-][>]\\s*)|\G(\\s*[=][>]\\s*)|\G(\\s*[=]\\s*)|\G(([+]|[-]){2})|\G(\\s*([+]|[-])\\s*)|\G(\\s*([*]{1,2}|[%\/^&]|[<>]{2})\\s*)|\G([@])|\G([#])|\G(\\s+[0-9]*[a-zA-Z_][a-zA-Z0-9_\-:]*\\s*[=]\\s*)|\G(([0-9]*[a-zA-Z_]\\w*)?(\\\\[0-9]*[a-zA-Z_]\\w*)+)|\G([0-9]*[a-zA-Z_]\\w*)|\G(\\d+)|\G([`])|\G([|])|\G([.])|\G(\\s*[,]\\s*)|\G(\\s*[;]\\s*)|\G([:]{2})|\G(\\s*[:]\\s*)|\G(\\s*[?]\\s*)|\G(0[xX][0-9a-fA-F]+)|\G(\\s+)|\G([\S\s])/isS";
}
- if ($this->counter >= strlen($this->data)) {
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
return false; // end of input
}
do {
if (preg_match($this->yy_global_pattern3, $this->data, $yymatches, null, $this->counter)) {
- $yysubmatches = $yymatches;
- if (strlen($yysubmatches[ 0 ]) < 200) {
- $yymatches = preg_grep("/(.|\s)+/", $yysubmatches);
+ if (!isset($yymatches[ 0 ][ 1 ])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
} else {
- $yymatches = array_filter($yymatches, 'strlen');
+ $yymatches = array_filter($yymatches);
}
if (empty($yymatches)) {
throw new Exception('Error: lexing failed because a rule matched' . ' an empty string. Input "' .
@@ -592,7 +613,7 @@ class Smarty_Internal_Templatelexer
} elseif ($r === false) {
$this->counter += strlen($this->value);
$this->line += substr_count($this->value, "\n");
- if ($this->counter >= strlen($this->data)) {
+ if ($this->counter >= $this->dataLength) {
return false; // end of input
}
// skip this token
@@ -602,7 +623,8 @@ class Smarty_Internal_Templatelexer
throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[ $this->counter ]);
}
break;
- } while (true);
+ }
+ while (true);
} // end function
const TAGBODY = 3;
@@ -698,107 +720,113 @@ class Smarty_Internal_Templatelexer
function yy_r3_19()
{
+ $this->token = Smarty_Internal_Templateparser::TP_SLOGOP;
+ }
+
+ function yy_r3_21()
+ {
+
$this->token = Smarty_Internal_Templateparser::TP_TLOGOP;
}
- function yy_r3_24()
+ function yy_r3_25()
{
$this->token = Smarty_Internal_Templateparser::TP_SINGLECOND;
}
- function yy_r3_27()
+ function yy_r3_28()
{
$this->token = Smarty_Internal_Templateparser::TP_NOT;
}
- function yy_r3_30()
+ function yy_r3_31()
{
$this->token = Smarty_Internal_Templateparser::TP_TYPECAST;
}
- function yy_r3_34()
+ function yy_r3_35()
{
$this->token = Smarty_Internal_Templateparser::TP_OPENP;
}
- function yy_r3_35()
+ function yy_r3_36()
{
$this->token = Smarty_Internal_Templateparser::TP_CLOSEP;
}
- function yy_r3_36()
+ function yy_r3_37()
{
$this->token = Smarty_Internal_Templateparser::TP_OPENB;
}
- function yy_r3_37()
+ function yy_r3_38()
{
$this->token = Smarty_Internal_Templateparser::TP_CLOSEB;
}
- function yy_r3_38()
+ function yy_r3_39()
{
$this->token = Smarty_Internal_Templateparser::TP_PTR;
}
- function yy_r3_39()
+ function yy_r3_40()
{
$this->token = Smarty_Internal_Templateparser::TP_APTR;
}
- function yy_r3_40()
+ function yy_r3_41()
{
$this->token = Smarty_Internal_Templateparser::TP_EQUAL;
}
- function yy_r3_41()
+ function yy_r3_42()
{
$this->token = Smarty_Internal_Templateparser::TP_INCDEC;
}
- function yy_r3_43()
+ function yy_r3_44()
{
$this->token = Smarty_Internal_Templateparser::TP_UNIMATH;
}
- function yy_r3_45()
+ function yy_r3_46()
{
$this->token = Smarty_Internal_Templateparser::TP_MATH;
}
- function yy_r3_47()
+ function yy_r3_48()
{
$this->token = Smarty_Internal_Templateparser::TP_AT;
}
- function yy_r3_48()
+ function yy_r3_49()
{
$this->token = Smarty_Internal_Templateparser::TP_HATCH;
}
- function yy_r3_49()
+ function yy_r3_50()
{
// resolve conflicts with shorttag and right_delimiter starting with '='
if (substr($this->data, $this->counter + strlen($this->value) - 1, $this->rdel_length) ==
$this->smarty->right_delimiter
) {
- preg_match("~\s+~", $this->value, $match);
+ preg_match("/\s+/", $this->value, $match);
$this->value = $match[ 0 ];
$this->token = Smarty_Internal_Templateparser::TP_SPACE;
} else {
@@ -806,86 +834,86 @@ class Smarty_Internal_Templatelexer
}
}
- function yy_r3_50()
+ function yy_r3_51()
{
$this->token = Smarty_Internal_Templateparser::TP_NAMESPACE;
}
- function yy_r3_53()
+ function yy_r3_54()
{
$this->token = Smarty_Internal_Templateparser::TP_ID;
}
- function yy_r3_54()
+ function yy_r3_55()
{
$this->token = Smarty_Internal_Templateparser::TP_INTEGER;
}
- function yy_r3_55()
+ function yy_r3_56()
{
$this->token = Smarty_Internal_Templateparser::TP_BACKTICK;
$this->yypopstate();
}
- function yy_r3_56()
+ function yy_r3_57()
{
$this->token = Smarty_Internal_Templateparser::TP_VERT;
}
- function yy_r3_57()
+ function yy_r3_58()
{
$this->token = Smarty_Internal_Templateparser::TP_DOT;
}
- function yy_r3_58()
+ function yy_r3_59()
{
$this->token = Smarty_Internal_Templateparser::TP_COMMA;
}
- function yy_r3_59()
+ function yy_r3_60()
{
$this->token = Smarty_Internal_Templateparser::TP_SEMICOLON;
}
- function yy_r3_60()
+ function yy_r3_61()
{
$this->token = Smarty_Internal_Templateparser::TP_DOUBLECOLON;
}
- function yy_r3_61()
+ function yy_r3_62()
{
$this->token = Smarty_Internal_Templateparser::TP_COLON;
}
- function yy_r3_62()
+ function yy_r3_63()
{
$this->token = Smarty_Internal_Templateparser::TP_QMARK;
}
- function yy_r3_63()
+ function yy_r3_64()
{
$this->token = Smarty_Internal_Templateparser::TP_HEX;
}
- function yy_r3_64()
+ function yy_r3_65()
{
$this->token = Smarty_Internal_Templateparser::TP_SPACE;
}
- function yy_r3_65()
+ function yy_r3_66()
{
$this->token = Smarty_Internal_Templateparser::TP_TEXT;
@@ -898,17 +926,19 @@ class Smarty_Internal_Templatelexer
"/\G(" . $this->ldel . "\\s*literal\\s*" . $this->rdel . ")|\G(" . $this->ldel . "\\s*[\/]literal\\s*" .
$this->rdel . ")|\G([\S\s])/isS";
}
- if ($this->counter >= strlen($this->data)) {
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
return false; // end of input
}
do {
if (preg_match($this->yy_global_pattern4, $this->data, $yymatches, null, $this->counter)) {
- $yysubmatches = $yymatches;
- if (strlen($yysubmatches[ 0 ]) < 200) {
- $yymatches = preg_grep("/(.|\s)+/", $yysubmatches);
+ if (!isset($yymatches[ 0 ][ 1 ])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
} else {
- $yymatches = array_filter($yymatches, 'strlen');
+ $yymatches = array_filter($yymatches);
}
if (empty($yymatches)) {
throw new Exception('Error: lexing failed because a rule matched' . ' an empty string. Input "' .
@@ -930,7 +960,7 @@ class Smarty_Internal_Templatelexer
} elseif ($r === false) {
$this->counter += strlen($this->value);
$this->line += substr_count($this->value, "\n");
- if ($this->counter >= strlen($this->data)) {
+ if ($this->counter >= $this->dataLength) {
return false; // end of input
}
// skip this token
@@ -940,7 +970,8 @@ class Smarty_Internal_Templatelexer
throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[ $this->counter ]);
}
break;
- } while (true);
+ }
+ while (true);
} // end function
const LITERAL = 4;
@@ -967,8 +998,8 @@ class Smarty_Internal_Templatelexer
function yy_r4_3()
{
- $to = strlen($this->data);
- preg_match("~{$this->ldel}[/]?literal{$this->rdel}~i", $this->data, $match, PREG_OFFSET_CAPTURE,
+ $to = $this->dataLength;
+ preg_match("/{$this->ldel}[\/]?literal{$this->rdel}/i", $this->data, $match, PREG_OFFSET_CAPTURE,
$this->counter);
if (isset($match[ 0 ][ 1 ])) {
$to = $match[ 0 ][ 1 ];
@@ -989,17 +1020,19 @@ class Smarty_Internal_Templatelexer
"\\s*)|\G([\"])|\G([`][$])|\G([$][0-9]*[a-zA-Z_]\\w*)|\G([$])|\G(([^\"\\\\]*?)((?:\\\\.[^\"\\\\]*?)*?)(?=(" .
$this->ldel . "|\\$|`\\$|\")))|\G([\S\s])/isS";
}
- if ($this->counter >= strlen($this->data)) {
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
return false; // end of input
}
do {
if (preg_match($this->yy_global_pattern5, $this->data, $yymatches, null, $this->counter)) {
- $yysubmatches = $yymatches;
- if (strlen($yysubmatches[ 0 ]) < 200) {
- $yymatches = preg_grep("/(.|\s)+/", $yysubmatches);
+ if (!isset($yymatches[ 0 ][ 1 ])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
} else {
- $yymatches = array_filter($yymatches, 'strlen');
+ $yymatches = array_filter($yymatches);
}
if (empty($yymatches)) {
throw new Exception('Error: lexing failed because a rule matched' . ' an empty string. Input "' .
@@ -1021,7 +1054,7 @@ class Smarty_Internal_Templatelexer
} elseif ($r === false) {
$this->counter += strlen($this->value);
$this->line += substr_count($this->value, "\n");
- if ($this->counter >= strlen($this->data)) {
+ if ($this->counter >= $this->dataLength) {
return false; // end of input
}
// skip this token
@@ -1031,7 +1064,8 @@ class Smarty_Internal_Templatelexer
throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[ $this->counter ]);
}
break;
- } while (true);
+ }
+ while (true);
} // end function
const DOUBLEQUOTEDSTRING = 5;
@@ -1125,7 +1159,7 @@ class Smarty_Internal_Templatelexer
function yy_r5_14()
{
- $to = strlen($this->data);
+ $to = $this->dataLength;
$this->value = substr($this->data, $this->counter, $to - $this->counter);
$this->token = Smarty_Internal_Templateparser::TP_TEXT;
}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templateparser.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templateparser.php
new file mode 100644
index 000000000..bc74fe440
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templateparser.php
@@ -0,0 +1,2831 @@
+<?php
+
+class TP_yyToken implements ArrayAccess
+{
+ public $string = '';
+
+ public $metadata = array();
+
+ public function __construct($s, $m = array())
+ {
+ if ($s instanceof TP_yyToken) {
+ $this->string = $s->string;
+ $this->metadata = $s->metadata;
+ } else {
+ $this->string = (string) $s;
+ if ($m instanceof TP_yyToken) {
+ $this->metadata = $m->metadata;
+ } elseif (is_array($m)) {
+ $this->metadata = $m;
+ }
+ }
+ }
+
+ public function __toString()
+ {
+ return $this->string;
+ }
+
+ public function offsetExists($offset)
+ {
+ return isset($this->metadata[ $offset ]);
+ }
+
+ public function offsetGet($offset)
+ {
+ return $this->metadata[ $offset ];
+ }
+
+ public function offsetSet($offset, $value)
+ {
+ if ($offset === null) {
+ if (isset($value[ 0 ])) {
+ $x = ($value instanceof TP_yyToken) ? $value->metadata : $value;
+ $this->metadata = array_merge($this->metadata, $x);
+
+ return;
+ }
+ $offset = count($this->metadata);
+ }
+ if ($value === null) {
+ return;
+ }
+ if ($value instanceof TP_yyToken) {
+ if ($value->metadata) {
+ $this->metadata[ $offset ] = $value->metadata;
+ }
+ } elseif ($value) {
+ $this->metadata[ $offset ] = $value;
+ }
+ }
+
+ public function offsetUnset($offset)
+ {
+ unset($this->metadata[ $offset ]);
+ }
+}
+
+class TP_yyStackEntry
+{
+ public $stateno; /* The state-number */
+ public $major; /* The major token value. This is the code
+ ** number for the token at this stack level */
+ public $minor; /* The user-supplied minor token value. This
+ ** is the value of the token */
+}
+
+;
+
+#line 11 "../smarty/lexer/smarty_internal_templateparser.y"
+
+/**
+ * Smarty Template Parser Class
+ *
+ * This is the template parser.
+ * It is generated from the smarty_internal_templateparser.y file
+ *
+ * @author Uwe Tews <uwe.tews@googlemail.com>
+ */
+class Smarty_Internal_Templateparser
+{
+ #line 23 "../smarty/lexer/smarty_internal_templateparser.y"
+
+ const Err1 = "Security error: Call to private object member not allowed";
+
+ const Err2 = "Security error: Call to dynamic object member not allowed";
+
+ const Err3 = "PHP in template not allowed. Use SmartyBC to enable it";
+
+ /**
+ * result status
+ *
+ * @var bool
+ */
+ public $successful = true;
+
+ /**
+ * return value
+ *
+ * @var mixed
+ */
+ public $retvalue = 0;
+
+ /**
+ * @var
+ */
+ public $yymajor;
+
+ /**
+ * last index of array variable
+ *
+ * @var mixed
+ */
+ public $last_index;
+
+ /**
+ * last variable name
+ *
+ * @var string
+ */
+ public $last_variable;
+
+ /**
+ * root parse tree buffer
+ *
+ * @var Smarty_Internal_ParseTree
+ */
+ public $root_buffer;
+
+ /**
+ * current parse tree object
+ *
+ * @var Smarty_Internal_ParseTree
+ */
+ public $current_buffer;
+
+ /**
+ * lexer object
+ *
+ * @var Smarty_Internal_Templatelexer
+ */
+ public $lex;
+
+ /**
+ * internal error flag
+ *
+ * @var bool
+ */
+ private $internalError = false;
+
+ /**
+ * {strip} status
+ *
+ * @var bool
+ */
+ public $strip = false;
+
+ /**
+ * compiler object
+ *
+ * @var Smarty_Internal_TemplateCompilerBase
+ */
+ public $compiler = null;
+
+ /**
+ * smarty object
+ *
+ * @var Smarty
+ */
+ public $smarty = null;
+
+ /**
+ * template object
+ *
+ * @var Smarty_Internal_Template
+ */
+ public $template = null;
+
+ /**
+ * block nesting level
+ *
+ * @var int
+ */
+ public $block_nesting_level = 0;
+
+ /**
+ * security object
+ *
+ * @var Smarty_Security
+ */
+ public $security = null;
+
+ /**
+ * template prefix array
+ *
+ * @var \Smarty_Internal_ParseTree[]
+ */
+ public $template_prefix = array();
+
+ /**
+ * security object
+ *
+ * @var \Smarty_Internal_ParseTree[]
+ */
+ public $template_postfix = array();
+
+ /**
+ * constructor
+ *
+ * @param Smarty_Internal_Templatelexer $lex
+ * @param Smarty_Internal_TemplateCompilerBase $compiler
+ */
+ function __construct(Smarty_Internal_Templatelexer $lex, Smarty_Internal_TemplateCompilerBase $compiler)
+ {
+ $this->lex = $lex;
+ $this->compiler = $compiler;
+ $this->template = $this->compiler->template;
+ $this->smarty = $this->template->smarty;
+ $this->security = isset($this->smarty->security_policy) ? $this->smarty->security_policy : false;
+ $this->current_buffer = $this->root_buffer = new Smarty_Internal_ParseTree_Template();
+ }
+
+ /**
+ * insert PHP code in current buffer
+ *
+ * @param string $code
+ */
+ public function insertPhpCode($code)
+ {
+ $this->current_buffer->append_subtree($this, new Smarty_Internal_ParseTree_Tag($this, $code));
+ }
+
+ /**
+ * merge PHP code with prefix code and return parse tree tag object
+ *
+ * @param string $code
+ *
+ * @return Smarty_Internal_ParseTree_Tag
+ */
+ public function mergePrefixCode($code)
+ {
+ $tmp = '';
+ foreach ($this->compiler->prefix_code as $preCode) {
+ $tmp .= $preCode;
+ }
+ $this->compiler->prefix_code = array();
+ $tmp .= $code;
+ return new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode($tmp, true));
+ }
+
+ const TP_VERT = 1;
+
+ const TP_COLON = 2;
+
+ const TP_PHP = 3;
+
+ const TP_TEXT = 4;
+
+ const TP_STRIPON = 5;
+
+ const TP_STRIPOFF = 6;
+
+ const TP_LITERALSTART = 7;
+
+ const TP_LITERALEND = 8;
+
+ const TP_LITERAL = 9;
+
+ const TP_RDEL = 10;
+
+ const TP_SIMPELOUTPUT = 11;
+
+ const TP_LDEL = 12;
+
+ const TP_DOLLARID = 13;
+
+ const TP_EQUAL = 14;
+
+ const TP_SIMPLETAG = 15;
+
+ const TP_ID = 16;
+
+ const TP_PTR = 17;
+
+ const TP_LDELMAKENOCACHE = 18;
+
+ const TP_LDELIF = 19;
+
+ const TP_LDELFOR = 20;
+
+ const TP_SEMICOLON = 21;
+
+ const TP_INCDEC = 22;
+
+ const TP_TO = 23;
+
+ const TP_STEP = 24;
+
+ const TP_LDELFOREACH = 25;
+
+ const TP_SPACE = 26;
+
+ const TP_AS = 27;
+
+ const TP_APTR = 28;
+
+ const TP_LDELSETFILTER = 29;
+
+ const TP_SMARTYBLOCKCHILDPARENT = 30;
+
+ const TP_CLOSETAG = 31;
+
+ const TP_LDELSLASH = 32;
+
+ const TP_ATTR = 33;
+
+ const TP_INTEGER = 34;
+
+ const TP_COMMA = 35;
+
+ const TP_OPENP = 36;
+
+ const TP_CLOSEP = 37;
+
+ const TP_MATH = 38;
+
+ const TP_UNIMATH = 39;
+
+ const TP_ISIN = 40;
+
+ const TP_QMARK = 41;
+
+ const TP_NOT = 42;
+
+ const TP_TYPECAST = 43;
+
+ const TP_HEX = 44;
+
+ const TP_DOT = 45;
+
+ const TP_INSTANCEOF = 46;
+
+ const TP_SINGLEQUOTESTRING = 47;
+
+ const TP_DOUBLECOLON = 48;
+
+ const TP_NAMESPACE = 49;
+
+ const TP_AT = 50;
+
+ const TP_HATCH = 51;
+
+ const TP_OPENB = 52;
+
+ const TP_CLOSEB = 53;
+
+ const TP_DOLLAR = 54;
+
+ const TP_LOGOP = 55;
+
+ const TP_SLOGOP = 56;
+
+ const TP_TLOGOP = 57;
+
+ const TP_SINGLECOND = 58;
+
+ const TP_QUOTE = 59;
+
+ const TP_BACKTICK = 60;
+
+ const YY_NO_ACTION = 532;
+
+ const YY_ACCEPT_ACTION = 531;
+
+ const YY_ERROR_ACTION = 530;
+
+ const YY_SZ_ACTTAB = 2114;
+
+ static public $yy_action = array(268, 8, 132, 210, 245, 197, 183, 228, 7, 84, 176, 264, 275, 302, 112, 44, 36, 278,
+ 233, 136, 305, 221, 281, 203, 237, 26, 234, 202, 41, 104, 189, 39, 42, 256, 213,
+ 216, 224, 78, 207, 129, 82, 1, 316, 297, 102, 268, 8, 133, 79, 245, 80, 302, 228,
+ 7, 84, 330, 299, 82, 272, 112, 297, 273, 325, 233, 285, 305, 221, 214, 231, 34, 26,
+ 3, 101, 41, 230, 78, 39, 42, 256, 213, 35, 239, 314, 207, 300, 82, 1, 13, 297, 333,
+ 268, 8, 135, 79, 245, 201, 302, 228, 7, 84, 35, 85, 322, 109, 112, 29, 196, 13,
+ 233, 269, 305, 221, 237, 231, 249, 26, 136, 104, 41, 219, 78, 39, 42, 256, 213,
+ 459, 239, 267, 207, 355, 82, 1, 459, 297, 446, 268, 8, 135, 79, 245, 193, 302, 228,
+ 7, 84, 35, 446, 297, 28, 112, 247, 263, 13, 233, 82, 305, 221, 297, 231, 309, 26,
+ 185, 292, 41, 298, 78, 39, 42, 256, 213, 27, 239, 237, 207, 232, 82, 1, 104, 297,
+ 459, 268, 8, 135, 79, 245, 195, 459, 228, 7, 84, 446, 297, 283, 11, 112, 25, 188,
+ 282, 233, 236, 305, 221, 446, 204, 294, 26, 32, 318, 41, 90, 210, 39, 42, 256, 213,
+ 174, 239, 137, 207, 402, 82, 1, 210, 297, 9, 268, 8, 136, 79, 245, 201, 223, 228,
+ 7, 84, 402, 142, 235, 225, 112, 22, 227, 402, 233, 166, 305, 221, 35, 231, 27, 33,
+ 210, 101, 41, 13, 210, 39, 42, 256, 213, 361, 239, 302, 207, 399, 82, 1, 210, 297,
+ 101, 268, 8, 135, 79, 245, 201, 402, 228, 7, 84, 399, 235, 297, 109, 112, 447, 78,
+ 399, 233, 319, 305, 221, 402, 194, 172, 26, 279, 447, 41, 402, 307, 39, 42, 256,
+ 213, 182, 239, 16, 207, 296, 82, 1, 210, 297, 101, 268, 8, 131, 79, 245, 201, 357,
+ 228, 7, 84, 283, 11, 475, 475, 112, 282, 303, 475, 233, 24, 305, 221, 35, 231, 175,
+ 4, 279, 271, 41, 13, 109, 39, 42, 256, 213, 181, 239, 178, 207, 12, 82, 1, 16, 297,
+ 274, 268, 8, 135, 79, 245, 200, 475, 228, 7, 84, 475, 475, 283, 11, 112, 475, 189,
+ 282, 233, 210, 305, 221, 20, 231, 38, 26, 179, 292, 41, 148, 446, 39, 42, 256, 213,
+ 229, 239, 180, 207, 332, 82, 1, 446, 297, 190, 268, 8, 134, 79, 245, 201, 215, 228,
+ 7, 84, 168, 16, 188, 243, 112, 104, 189, 303, 233, 140, 305, 221, 325, 231, 255,
+ 26, 177, 214, 41, 218, 312, 39, 42, 256, 213, 277, 239, 128, 207, 101, 82, 1, 92,
+ 297, 2, 268, 8, 136, 79, 245, 201, 23, 228, 7, 84, 210, 108, 251, 184, 112, 297,
+ 304, 289, 233, 367, 305, 221, 137, 231, 315, 33, 220, 5, 41, 9, 5, 39, 42, 256,
+ 213, 35, 239, 189, 207, 113, 82, 311, 13, 297, 106, 446, 214, 212, 79, 116, 72,
+ 114, 258, 260, 261, 222, 102, 446, 214, 257, 280, 187, 308, 334, 270, 206, 242,
+ 152, 299, 210, 128, 83, 262, 250, 252, 253, 176, 332, 211, 329, 268, 8, 151, 143,
+ 245, 189, 178, 228, 7, 84, 210, 265, 332, 332, 112, 188, 21, 311, 233, 153, 305,
+ 221, 214, 212, 17, 122, 67, 114, 164, 141, 189, 13, 102, 149, 266, 257, 280, 183,
+ 332, 332, 270, 206, 242, 332, 299, 295, 44, 36, 278, 235, 311, 208, 279, 145, 169,
+ 214, 212, 91, 122, 67, 114, 189, 320, 332, 167, 102, 146, 139, 257, 280, 94, 171,
+ 159, 270, 206, 242, 332, 299, 210, 38, 311, 189, 332, 155, 209, 214, 212, 317, 122,
+ 53, 107, 123, 232, 332, 189, 102, 291, 400, 257, 280, 6, 217, 276, 270, 206, 242,
+ 311, 299, 297, 158, 313, 214, 212, 400, 122, 49, 107, 154, 117, 332, 400, 102, 30,
+ 446, 257, 280, 248, 332, 173, 270, 206, 242, 279, 299, 324, 446, 186, 292, 332, 95,
+ 279, 268, 10, 326, 170, 245, 88, 87, 228, 7, 84, 279, 138, 89, 279, 112, 86, 309,
+ 311, 233, 115, 305, 221, 214, 212, 254, 122, 67, 114, 105, 303, 163, 165, 102, 303,
+ 93, 257, 280, 303, 303, 303, 270, 206, 242, 303, 299, 303, 303, 303, 286, 19, 311,
+ 205, 303, 303, 303, 214, 212, 303, 116, 72, 114, 303, 43, 40, 37, 102, 303, 303,
+ 257, 280, 303, 303, 303, 270, 206, 242, 303, 299, 324, 327, 323, 288, 287, 303,
+ 303, 268, 10, 326, 331, 245, 303, 303, 228, 7, 84, 303, 303, 303, 303, 112, 303,
+ 303, 311, 233, 303, 305, 221, 214, 212, 303, 122, 70, 114, 303, 303, 303, 303, 102,
+ 303, 303, 257, 280, 303, 283, 11, 270, 206, 242, 282, 299, 303, 311, 303, 290, 19,
+ 303, 214, 212, 35, 122, 54, 114, 303, 303, 303, 13, 102, 162, 303, 257, 280, 183,
+ 303, 303, 270, 206, 242, 332, 299, 311, 44, 36, 278, 303, 214, 212, 303, 122, 68,
+ 114, 303, 303, 303, 303, 102, 189, 303, 257, 280, 303, 303, 303, 270, 206, 242,
+ 303, 299, 311, 303, 303, 303, 303, 214, 212, 303, 100, 73, 114, 303, 303, 303, 303,
+ 102, 303, 303, 257, 280, 303, 303, 303, 270, 206, 242, 303, 299, 311, 303, 303,
+ 303, 303, 214, 212, 303, 122, 77, 114, 303, 303, 303, 303, 102, 147, 303, 257, 280,
+ 183, 303, 303, 270, 206, 242, 332, 299, 311, 44, 36, 278, 303, 214, 212, 303, 122,
+ 76, 114, 303, 303, 303, 303, 102, 189, 303, 257, 280, 303, 303, 303, 270, 206, 242,
+ 303, 299, 311, 303, 303, 303, 303, 214, 212, 303, 99, 71, 114, 303, 303, 303, 303,
+ 102, 161, 303, 257, 280, 183, 303, 303, 270, 206, 242, 332, 299, 311, 44, 36, 278,
+ 303, 214, 212, 303, 122, 47, 114, 303, 303, 303, 303, 102, 189, 303, 257, 280, 303,
+ 303, 303, 270, 206, 242, 303, 299, 311, 303, 303, 303, 303, 214, 212, 303, 122, 59,
+ 114, 303, 303, 303, 303, 102, 150, 303, 257, 280, 183, 303, 303, 270, 206, 242,
+ 332, 299, 311, 44, 36, 278, 303, 214, 198, 303, 118, 55, 114, 303, 303, 303, 303,
+ 102, 189, 303, 257, 280, 303, 303, 303, 270, 206, 242, 303, 299, 311, 303, 303,
+ 303, 303, 214, 212, 303, 122, 69, 114, 303, 303, 303, 303, 102, 160, 303, 257, 280,
+ 183, 303, 303, 270, 206, 242, 332, 299, 311, 44, 36, 278, 303, 214, 97, 303, 81,
+ 48, 103, 303, 303, 303, 303, 102, 189, 303, 257, 280, 303, 303, 303, 270, 206, 242,
+ 303, 299, 311, 303, 303, 303, 303, 214, 212, 303, 122, 57, 114, 303, 303, 303, 303,
+ 102, 303, 303, 257, 280, 303, 303, 303, 270, 206, 242, 303, 299, 311, 303, 303,
+ 303, 303, 214, 212, 303, 122, 65, 114, 303, 303, 303, 303, 102, 303, 303, 257, 280,
+ 303, 303, 303, 270, 206, 242, 303, 299, 311, 303, 303, 303, 303, 214, 96, 303, 81,
+ 46, 103, 303, 303, 303, 303, 102, 303, 303, 257, 280, 303, 303, 303, 270, 206, 242,
+ 303, 299, 311, 303, 303, 303, 303, 214, 212, 303, 111, 50, 114, 303, 303, 303, 303,
+ 102, 303, 303, 257, 280, 303, 303, 303, 270, 206, 242, 303, 299, 311, 303, 303,
+ 303, 303, 214, 212, 303, 98, 61, 114, 303, 303, 303, 303, 102, 303, 303, 257, 280,
+ 303, 303, 303, 270, 206, 242, 303, 299, 311, 303, 303, 303, 303, 214, 199, 303,
+ 122, 56, 114, 303, 303, 303, 303, 102, 303, 303, 257, 280, 303, 303, 303, 270, 206,
+ 242, 303, 299, 311, 303, 303, 303, 303, 214, 212, 303, 122, 51, 114, 303, 303, 303,
+ 303, 102, 303, 303, 257, 280, 303, 303, 303, 270, 206, 242, 303, 299, 311, 303,
+ 303, 303, 303, 214, 212, 303, 122, 58, 114, 303, 303, 303, 303, 102, 303, 303, 257,
+ 280, 303, 303, 303, 270, 206, 242, 303, 299, 311, 303, 303, 303, 303, 214, 212,
+ 303, 122, 74, 114, 303, 303, 303, 303, 102, 303, 303, 257, 280, 303, 303, 303, 270,
+ 206, 242, 303, 299, 311, 303, 303, 303, 303, 214, 212, 303, 122, 62, 114, 303, 303,
+ 303, 303, 102, 303, 303, 257, 280, 303, 303, 303, 270, 206, 242, 303, 299, 311,
+ 303, 303, 303, 303, 214, 212, 303, 122, 60, 114, 303, 303, 303, 303, 102, 303, 303,
+ 257, 280, 303, 303, 303, 270, 206, 242, 303, 299, 311, 303, 303, 303, 303, 214,
+ 212, 303, 122, 45, 114, 303, 303, 303, 303, 102, 303, 303, 257, 280, 303, 303, 303,
+ 270, 206, 242, 303, 299, 311, 303, 303, 303, 303, 214, 212, 303, 122, 64, 114, 303,
+ 303, 303, 303, 102, 303, 303, 257, 280, 303, 303, 303, 270, 206, 242, 303, 299,
+ 311, 303, 303, 303, 303, 214, 212, 303, 122, 75, 114, 303, 303, 303, 303, 102, 303,
+ 303, 257, 280, 303, 303, 303, 270, 206, 242, 303, 299, 311, 303, 303, 303, 303,
+ 214, 212, 303, 122, 63, 114, 303, 303, 303, 303, 102, 303, 303, 257, 280, 303, 303,
+ 303, 270, 206, 242, 303, 299, 311, 303, 303, 303, 303, 214, 212, 303, 122, 66, 114,
+ 303, 303, 303, 303, 102, 303, 303, 257, 280, 303, 412, 412, 270, 206, 242, 303,
+ 299, 311, 303, 303, 303, 303, 214, 212, 303, 122, 53, 114, 303, 303, 303, 303, 102,
+ 303, 303, 257, 280, 210, 303, 303, 270, 206, 242, 303, 299, 446, 301, 412, 412,
+ 412, 303, 531, 52, 259, 260, 261, 222, 446, 303, 214, 303, 303, 35, 303, 412, 412,
+ 412, 412, 303, 13, 303, 303, 303, 303, 43, 40, 37, 210, 303, 303, 311, 303, 303,
+ 303, 303, 214, 212, 210, 130, 303, 114, 327, 323, 288, 287, 102, 303, 303, 303,
+ 241, 31, 303, 35, 270, 206, 242, 303, 299, 303, 13, 303, 303, 35, 303, 43, 40, 37,
+ 303, 303, 13, 303, 303, 303, 303, 43, 40, 37, 303, 303, 303, 311, 327, 323, 288,
+ 287, 214, 212, 210, 124, 303, 114, 327, 323, 288, 287, 102, 192, 303, 303, 310,
+ 303, 303, 303, 270, 206, 242, 311, 299, 226, 303, 303, 214, 212, 303, 120, 303,
+ 114, 475, 475, 303, 28, 102, 475, 459, 43, 40, 37, 303, 303, 270, 206, 242, 303,
+ 299, 303, 303, 303, 303, 303, 303, 311, 327, 323, 288, 287, 214, 212, 303, 126,
+ 303, 114, 459, 303, 303, 459, 102, 475, 303, 459, 226, 303, 303, 303, 270, 206,
+ 242, 303, 299, 475, 475, 226, 18, 303, 475, 459, 303, 303, 303, 303, 475, 475, 303,
+ 303, 226, 475, 459, 283, 11, 303, 303, 303, 282, 475, 475, 303, 303, 303, 475, 459,
+ 303, 303, 35, 459, 144, 303, 459, 303, 475, 13, 459, 303, 303, 303, 459, 303, 303,
+ 459, 311, 475, 303, 459, 321, 214, 212, 303, 119, 459, 114, 303, 459, 303, 475,
+ 102, 459, 303, 303, 303, 303, 303, 303, 270, 206, 242, 303, 299, 311, 210, 14, 303,
+ 303, 214, 212, 303, 127, 303, 114, 303, 284, 303, 303, 102, 129, 303, 303, 303,
+ 303, 102, 303, 270, 206, 242, 311, 299, 210, 303, 293, 214, 212, 299, 121, 303,
+ 114, 311, 43, 40, 37, 102, 214, 212, 303, 125, 303, 114, 303, 270, 206, 242, 102,
+ 299, 156, 327, 323, 288, 287, 210, 270, 206, 242, 210, 299, 43, 40, 37, 210, 303,
+ 303, 303, 244, 303, 303, 303, 303, 303, 303, 110, 303, 303, 327, 323, 288, 287,
+ 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 43, 40, 37, 210, 43, 40, 37, 210,
+ 303, 43, 40, 37, 240, 210, 303, 303, 191, 327, 323, 288, 287, 327, 323, 288, 287,
+ 303, 327, 323, 288, 287, 303, 306, 303, 303, 303, 303, 303, 303, 303, 303, 43, 40,
+ 37, 303, 43, 40, 37, 210, 303, 238, 43, 40, 37, 303, 303, 303, 303, 327, 323, 288,
+ 287, 327, 323, 288, 287, 15, 303, 327, 323, 288, 287, 303, 303, 303, 475, 475, 303,
+ 303, 303, 475, 459, 210, 303, 246, 43, 40, 37, 210, 303, 303, 303, 303, 303, 475,
+ 475, 283, 11, 303, 475, 459, 282, 327, 323, 288, 287, 303, 303, 303, 459, 303, 35,
+ 459, 157, 475, 303, 459, 303, 13, 43, 40, 37, 303, 303, 303, 43, 40, 37, 459, 303,
+ 303, 459, 303, 475, 328, 459, 327, 323, 288, 287, 303, 303, 327, 323, 288, 287,
+ 303, 406, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 406, 303, 406, 303,
+ 303, 406, 303, 303, 303, 303, 303, 303, 406, 303, 406, 303, 406, 303, 303, 303,
+ 303, 303, 303, 303, 235,);
+
+ static public $yy_lookahead = array(11, 12, 13, 1, 15, 16, 76, 18, 19, 20, 7, 8, 9, 22, 25, 85, 86, 87, 29, 13, 31,
+ 32, 16, 34, 75, 36, 77, 78, 39, 80, 100, 42, 43, 44, 45, 71, 47, 46, 49, 75, 51,
+ 52, 53, 54, 80, 11, 12, 13, 59, 15, 16, 22, 18, 19, 20, 49, 92, 51, 66, 25, 54,
+ 69, 65, 29, 30, 31, 32, 70, 34, 14, 36, 35, 17, 39, 16, 46, 42, 43, 44, 45, 26,
+ 47, 53, 49, 10, 51, 52, 33, 54, 53, 11, 12, 13, 59, 15, 16, 22, 18, 19, 20, 26,
+ 104, 105, 48, 25, 12, 13, 33, 29, 16, 31, 32, 75, 34, 77, 36, 13, 80, 39, 16,
+ 46, 42, 43, 44, 45, 45, 47, 34, 49, 10, 51, 52, 52, 54, 36, 11, 12, 13, 59, 15,
+ 16, 22, 18, 19, 20, 26, 48, 54, 14, 25, 13, 34, 33, 29, 51, 31, 32, 54, 34, 94,
+ 36, 96, 97, 39, 97, 46, 42, 43, 44, 45, 14, 47, 75, 49, 77, 51, 52, 80, 54, 45,
+ 11, 12, 13, 59, 15, 16, 52, 18, 19, 20, 36, 54, 11, 12, 25, 21, 100, 16, 29, 45,
+ 31, 32, 48, 34, 16, 36, 14, 53, 39, 35, 1, 42, 43, 44, 45, 93, 47, 45, 49, 10,
+ 51, 52, 1, 54, 52, 11, 12, 13, 59, 15, 16, 50, 18, 19, 20, 26, 27, 45, 50, 25,
+ 12, 13, 33, 29, 16, 31, 32, 26, 34, 14, 36, 1, 17, 39, 33, 1, 42, 43, 44, 45,
+ 10, 47, 22, 49, 10, 51, 52, 1, 54, 17, 11, 12, 13, 59, 15, 16, 10, 18, 19, 20,
+ 26, 45, 54, 48, 25, 36, 46, 33, 29, 53, 31, 32, 26, 34, 93, 36, 95, 48, 39, 33,
+ 60, 42, 43, 44, 45, 81, 47, 35, 49, 37, 51, 52, 1, 54, 17, 11, 12, 13, 59, 15,
+ 16, 10, 18, 19, 20, 11, 12, 11, 12, 25, 16, 101, 16, 29, 14, 31, 32, 26, 34, 93,
+ 36, 95, 22, 39, 33, 48, 42, 43, 44, 45, 81, 47, 76, 49, 41, 51, 52, 35, 54, 37,
+ 11, 12, 13, 59, 15, 16, 50, 18, 19, 20, 11, 12, 11, 12, 25, 16, 100, 16, 29, 1,
+ 31, 32, 28, 34, 2, 36, 96, 97, 39, 72, 36, 42, 43, 44, 45, 17, 47, 76, 49, 82,
+ 51, 52, 48, 54, 16, 11, 12, 13, 59, 15, 16, 50, 18, 19, 20, 75, 35, 100, 37, 25,
+ 80, 100, 101, 29, 13, 31, 32, 65, 34, 37, 36, 13, 70, 39, 16, 91, 42, 43, 44,
+ 45, 16, 47, 98, 49, 17, 51, 52, 36, 54, 36, 11, 12, 13, 59, 15, 16, 12, 18, 19,
+ 20, 1, 48, 4, 76, 25, 54, 16, 105, 29, 10, 31, 32, 45, 34, 53, 36, 17, 36, 39,
+ 52, 36, 42, 43, 44, 45, 26, 47, 100, 49, 16, 51, 65, 33, 54, 80, 36, 70, 71, 59,
+ 73, 74, 75, 64, 65, 66, 67, 80, 48, 70, 83, 84, 76, 98, 91, 88, 89, 90, 72, 92,
+ 1, 98, 16, 3, 4, 5, 6, 7, 82, 102, 103, 11, 12, 72, 72, 15, 100, 76, 18, 19, 20,
+ 1, 16, 82, 82, 25, 100, 28, 65, 29, 51, 31, 32, 70, 71, 26, 73, 74, 75, 72, 72,
+ 100, 33, 80, 72, 10, 83, 84, 76, 82, 82, 88, 89, 90, 82, 92, 16, 85, 86, 87, 45,
+ 65, 99, 95, 72, 51, 70, 71, 76, 73, 74, 75, 100, 53, 82, 93, 80, 72, 13, 83, 84,
+ 76, 93, 72, 88, 89, 90, 82, 92, 1, 2, 65, 100, 82, 72, 99, 70, 71, 53, 73, 74,
+ 75, 16, 77, 82, 100, 80, 16, 10, 83, 84, 36, 14, 34, 88, 89, 90, 65, 92, 54, 72,
+ 13, 70, 71, 26, 73, 74, 75, 72, 77, 82, 33, 80, 23, 36, 83, 84, 82, 82, 72, 88,
+ 89, 90, 95, 92, 4, 48, 96, 97, 82, 81, 95, 11, 12, 13, 93, 15, 80, 80, 18, 19,
+ 20, 95, 80, 80, 95, 25, 80, 94, 65, 29, 79, 31, 32, 70, 71, 8, 73, 74, 75, 68,
+ 106, 93, 93, 80, 106, 93, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 106, 106,
+ 106, 59, 60, 65, 99, 106, 106, 106, 70, 71, 106, 73, 74, 75, 106, 38, 39, 40,
+ 80, 106, 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 4, 55, 56, 57, 58,
+ 106, 106, 11, 12, 13, 103, 15, 106, 106, 18, 19, 20, 106, 106, 106, 106, 25,
+ 106, 106, 65, 29, 106, 31, 32, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80,
+ 106, 106, 83, 84, 106, 11, 12, 88, 89, 90, 16, 92, 106, 65, 106, 59, 60, 106,
+ 70, 71, 26, 73, 74, 75, 106, 106, 106, 33, 80, 72, 106, 83, 84, 76, 106, 106,
+ 88, 89, 90, 82, 92, 65, 85, 86, 87, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106,
+ 106, 80, 100, 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106,
+ 106, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80, 106, 106, 83, 84,
+ 106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106, 106, 106, 70, 71, 106, 73, 74,
+ 75, 106, 106, 106, 106, 80, 72, 106, 83, 84, 76, 106, 106, 88, 89, 90, 82, 92,
+ 65, 85, 86, 87, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80, 100, 106,
+ 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106, 106, 106, 70, 71, 106,
+ 73, 74, 75, 106, 106, 106, 106, 80, 72, 106, 83, 84, 76, 106, 106, 88, 89, 90,
+ 82, 92, 65, 85, 86, 87, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80,
+ 100, 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106, 106, 106,
+ 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80, 72, 106, 83, 84, 76, 106, 106,
+ 88, 89, 90, 82, 92, 65, 85, 86, 87, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106,
+ 106, 80, 100, 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106,
+ 106, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80, 72, 106, 83, 84, 76,
+ 106, 106, 88, 89, 90, 82, 92, 65, 85, 86, 87, 106, 70, 71, 106, 73, 74, 75, 106,
+ 106, 106, 106, 80, 100, 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65,
+ 106, 106, 106, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80, 106, 106,
+ 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106, 106, 106, 70, 71, 106,
+ 73, 74, 75, 106, 106, 106, 106, 80, 106, 106, 83, 84, 106, 106, 106, 88, 89, 90,
+ 106, 92, 65, 106, 106, 106, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106,
+ 80, 106, 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106, 106,
+ 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80, 106, 106, 83, 84, 106,
+ 106, 106, 88, 89, 90, 106, 92, 65, 106, 106, 106, 106, 70, 71, 106, 73, 74, 75,
+ 106, 106, 106, 106, 80, 106, 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92,
+ 65, 106, 106, 106, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80, 106,
+ 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106, 106, 106, 70, 71,
+ 106, 73, 74, 75, 106, 106, 106, 106, 80, 106, 106, 83, 84, 106, 106, 106, 88,
+ 89, 90, 106, 92, 65, 106, 106, 106, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106,
+ 106, 80, 106, 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106,
+ 106, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80, 106, 106, 83, 84,
+ 106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106, 106, 106, 70, 71, 106, 73, 74,
+ 75, 106, 106, 106, 106, 80, 106, 106, 83, 84, 106, 106, 106, 88, 89, 90, 106,
+ 92, 65, 106, 106, 106, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80,
+ 106, 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106, 106, 106,
+ 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80, 106, 106, 83, 84, 106, 106,
+ 106, 88, 89, 90, 106, 92, 65, 106, 106, 106, 106, 70, 71, 106, 73, 74, 75, 106,
+ 106, 106, 106, 80, 106, 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65,
+ 106, 106, 106, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80, 106, 106,
+ 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106, 106, 106, 70, 71, 106,
+ 73, 74, 75, 106, 106, 106, 106, 80, 106, 106, 83, 84, 106, 106, 106, 88, 89, 90,
+ 106, 92, 65, 106, 106, 106, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106,
+ 80, 106, 106, 83, 84, 106, 1, 2, 88, 89, 90, 106, 92, 65, 106, 106, 106, 106,
+ 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80, 106, 106, 83, 84, 1, 106, 106,
+ 88, 89, 90, 106, 92, 36, 10, 38, 39, 40, 106, 62, 63, 64, 65, 66, 67, 48, 106,
+ 70, 106, 106, 26, 106, 55, 56, 57, 58, 106, 33, 106, 106, 106, 106, 38, 39, 40,
+ 1, 106, 106, 65, 106, 106, 106, 106, 70, 71, 1, 73, 106, 75, 55, 56, 57, 58, 80,
+ 106, 106, 106, 84, 24, 106, 26, 88, 89, 90, 106, 92, 106, 33, 106, 106, 26, 106,
+ 38, 39, 40, 106, 106, 33, 106, 106, 106, 106, 38, 39, 40, 106, 106, 106, 65, 55,
+ 56, 57, 58, 70, 71, 1, 73, 106, 75, 55, 56, 57, 58, 80, 10, 106, 106, 84, 106,
+ 106, 106, 88, 89, 90, 65, 92, 2, 106, 106, 70, 71, 106, 73, 106, 75, 11, 12,
+ 106, 14, 80, 16, 17, 38, 39, 40, 106, 106, 88, 89, 90, 106, 92, 106, 106, 106,
+ 106, 106, 106, 65, 55, 56, 57, 58, 70, 71, 106, 73, 106, 75, 45, 106, 106, 48,
+ 80, 50, 106, 52, 2, 106, 106, 106, 88, 89, 90, 106, 92, 11, 12, 2, 14, 106, 16,
+ 17, 106, 106, 106, 106, 11, 12, 106, 106, 2, 16, 17, 11, 12, 106, 106, 106, 16,
+ 11, 12, 106, 106, 106, 16, 17, 106, 106, 26, 45, 28, 106, 48, 106, 50, 33, 52,
+ 106, 106, 106, 45, 106, 106, 48, 65, 50, 106, 52, 53, 70, 71, 106, 73, 45, 75,
+ 106, 48, 106, 50, 80, 52, 106, 106, 106, 106, 106, 106, 88, 89, 90, 106, 92, 65,
+ 1, 2, 106, 106, 70, 71, 106, 73, 106, 75, 106, 71, 106, 106, 80, 75, 106, 106,
+ 106, 106, 80, 106, 88, 89, 90, 65, 92, 1, 106, 89, 70, 71, 92, 73, 106, 75, 65,
+ 38, 39, 40, 80, 70, 71, 106, 73, 106, 75, 106, 88, 89, 90, 80, 92, 27, 55, 56,
+ 57, 58, 1, 88, 89, 90, 1, 92, 38, 39, 40, 1, 106, 106, 106, 10, 106, 106, 106,
+ 106, 106, 106, 21, 106, 106, 55, 56, 57, 58, 106, 106, 106, 106, 106, 106, 106,
+ 106, 106, 106, 38, 39, 40, 1, 38, 39, 40, 1, 106, 38, 39, 40, 10, 1, 106, 106,
+ 10, 55, 56, 57, 58, 55, 56, 57, 58, 106, 55, 56, 57, 58, 106, 60, 106, 106, 106,
+ 106, 106, 106, 106, 106, 38, 39, 40, 106, 38, 39, 40, 1, 106, 37, 38, 39, 40,
+ 106, 106, 106, 106, 55, 56, 57, 58, 55, 56, 57, 58, 2, 106, 55, 56, 57, 58, 106,
+ 106, 106, 11, 12, 106, 106, 106, 16, 17, 1, 106, 37, 38, 39, 40, 1, 106, 106,
+ 106, 106, 106, 11, 12, 11, 12, 106, 16, 17, 16, 55, 56, 57, 58, 106, 106, 106,
+ 45, 106, 26, 48, 28, 50, 106, 52, 106, 33, 38, 39, 40, 106, 106, 106, 38, 39,
+ 40, 45, 106, 106, 48, 106, 50, 53, 52, 55, 56, 57, 58, 106, 106, 55, 56, 57, 58,
+ 106, 10, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 21, 106, 23, 106,
+ 106, 26, 106, 106, 106, 106, 106, 106, 33, 106, 35, 106, 37, 106, 106, 106, 106,
+ 106, 106, 106, 45,);
+
+ const YY_SHIFT_USE_DFLT = - 12;
+
+ const YY_SHIFT_MAX = 238;
+
+ static public $yy_shift_ofst = array(519, 349, 79, 349, 304, 79, 79, 304, 34, - 11, 34, 79, 394, 79, 79, 124, 79,
+ 169, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 259, 79, 79, 79, 79, 79, 79, 169,
+ 79, 214, 214, 439, 439, 439, 439, 439, 439, 1617, 1577, 1627, 1627, 1627, 1627,
+ 1627, 519, 1944, 1978, 2012, 1903, 1938, 1677, 1836, 1934, 1863, 1898, 1894,
+ 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 695,
+ 695, 6, 660, 459, 311, 103, 221, 411, 745, 1766, 2016, 783, 783, 411, 221, 411,
+ 427, 221, 607, 74, 119, 209, 266, 254, 228, 181, 55, 314, 3, 314, 235, 418,
+ 418, 584, 250, 528, 378, 297, 54, 518, 54, 539, 2, 2, 2, 2, 2, 2, 2, 2, 2, 252,
+ 252, - 12, 1697, 1759, 1748, 1995, 1772, 2014, 93, 361, 359, 134, 54, 137, 54,
+ 137, 54, 54, 54, 54, 54, 54, 54, 54, 80, 54, 54, 137, 137, 54, 54, 54, 54, 54,
+ 172, 54, 172, 444, 172, 320, 80, 172, 172, 172, 54, 172, 172, 687, 594, 2, 252,
+ 2, 382, 382, 2, 2, 252, 252, 2, - 12, - 12, - 12, - 12, - 12, 1550, 2068, 617,
+ 316, 154, 29, 240, 354, 98, 174, 236, 192, 272, 413, 249, 322, 381, 188, 36,
+ - 9, 598, 554, 424, 533, 525, 441, 498, 505, 473, 458, 450, 421, 559, 610, 594,
+ 627, 605, 564, 534, 392, 388, 629, 117, 58, 156, 313,);
+
+ const YY_REDUCE_USE_DFLT = - 71;
+
+ const YY_REDUCE_MAX = 192;
+
+ static public $yy_reduce_ofst = array(1530, 426, 482, 656, 545, 515, 623, 571, 1017, 961, 1101, 1325, 933, 793, 849,
+ 821, 1465, 1157, 1129, 1185, 1073, 989, 1045, 1241, 1381, 1437, 1493, 1409,
+ 1269, 1297, 1353, 1213, 708, 737, 905, 877, 765, 1606, 1556, 1632, 1808, 1797,
+ 1771, 1666, 1743, 886, 491, 830, 491, 746, 942, 998, 438, - 70, - 70, - 70,
+ - 70, - 70, - 70, - 70, - 70, - 70, - 70, - 70, - 70, - 70, - 70, - 70, - 70,
+ - 70, - 70, - 70, - 70, - 70, - 70, - 70, - 70, - 70, 1777, - 3, 524, 460,
+ - 36, 511, - 51, 362, 487, 575, 567, 586, 37, 445, 97, 65, 317, 321, 541, 541,
+ 276, 276, 276, 414, 246, 290, 246, - 8, 201, 290, 344, 422, 340, 276, 461,
+ 387, 290, 486, 276, 530, 276, 276, 276, 276, 276, 435, 276, 276, 276, 276,
+ 570, 290, 276, 122, 122, 122, 122, 122, 122, 602, 589, 122, 122, 574, 606,
+ 574, 603, 574, 574, 574, 574, 574, 574, 574, 574, 581, 574, 574, 597, 596,
+ 574, 574, 574, 574, 574, 593, 574, 593, 609, 593, 611, 608, 593, 593, 593,
+ 574, 593, 593, 631, 612, 96, 67, 96, 230, 230, 96, 96, 67, 67, 96, 269, 224,
+ 588, 508, 501,);
+
+ static public $yyExpectedTokens = array(array(3, 4, 5, 6, 7, 11, 12, 15, 18, 19, 20, 25, 29, 31, 32,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 30, 31, 32, 34, 36, 39, 42,
+ 43, 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 53, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 30, 31, 32, 34, 36, 39, 42,
+ 43, 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 54, 59,),
+ array(1, 24, 26, 33, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 10, 26, 33, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 26, 33, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 26, 33, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 26, 33, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 26, 33, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 26, 33, 38, 39, 40, 55, 56, 57, 58,),
+ array(3, 4, 5, 6, 7, 11, 12, 15, 18, 19, 20, 25, 29, 31, 32,),
+ array(1, 37, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 37, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 38, 39, 40, 53, 55, 56, 57, 58,),
+ array(1, 38, 39, 40, 55, 56, 57, 58, 60,),
+ array(1, 10, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 10, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 2, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 10, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 27, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 10, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 21, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 38, 39, 40, 55, 56, 57, 58,), array(38, 39, 40, 55, 56, 57, 58,),
+ array(38, 39, 40, 55, 56, 57, 58,), array(13, 16, 49, 51, 54,),
+ array(4, 11, 12, 13, 15, 18, 19, 20, 25, 29, 31, 32, 59, 60,),
+ array(1, 10, 17, 26, 33, 36, 48,), array(1, 10, 26, 33,),
+ array(13, 16, 51, 54,), array(1, 26, 33,), array(13, 36, 54,),
+ array(4, 11, 12, 13, 15, 18, 19, 20, 25, 29, 31, 32, 59, 60,),
+ array(11, 12, 16, 26, 28, 33,), array(11, 12, 16, 26, 28, 33,),
+ array(11, 12, 16, 26, 33,), array(11, 12, 16, 26, 33,), array(13, 36, 54,),
+ array(1, 26, 33,), array(13, 36, 54,), array(17, 45, 52,),
+ array(1, 26, 33,), array(1, 2,), array(10, 22, 26, 33, 46,),
+ array(10, 22, 26, 33, 46,), array(1, 10, 26, 27, 33,),
+ array(1, 10, 26, 33,), array(1, 10, 26, 33,), array(12, 13, 16, 54,),
+ array(11, 12, 16, 50,), array(14, 17, 48,), array(11, 12, 16,),
+ array(7, 8, 9,), array(11, 12, 16,), array(14, 17, 48,), array(13, 16,),
+ array(13, 16,), array(13, 54,), array(1, 10,), array(26, 33,),
+ array(1, 17,), array(17, 48,), array(26, 33,), array(1, 28,),
+ array(26, 33,), array(1, 53,), array(1,), array(1,), array(1,), array(1,),
+ array(1,), array(1,), array(1,), array(1,), array(1,), array(17,),
+ array(17,), array(), array(2, 11, 12, 14, 16, 17, 45, 48, 50, 52,),
+ array(2, 11, 12, 16, 17, 45, 48, 50, 52, 53,),
+ array(2, 11, 12, 14, 16, 17, 45, 48, 50, 52,),
+ array(2, 11, 12, 16, 17, 45, 48, 50, 52,),
+ array(2, 11, 12, 16, 17, 45, 48, 50, 52,),
+ array(11, 12, 16, 17, 45, 48, 50, 52,), array(12, 13, 16, 34, 54,),
+ array(11, 12, 16, 50,), array(11, 12, 16,), array(14, 45, 52,),
+ array(26, 33,), array(13, 54,), array(26, 33,), array(13, 54,),
+ array(26, 33,), array(26, 33,), array(26, 33,), array(26, 33,),
+ array(26, 33,), array(26, 33,), array(26, 33,), array(26, 33,),
+ array(45, 52,), array(26, 33,), array(26, 33,), array(13, 54,),
+ array(13, 54,), array(26, 33,), array(26, 33,), array(26, 33,),
+ array(26, 33,), array(26, 33,), array(45, 52,), array(26, 33,),
+ array(45, 52,), array(12, 36,), array(45, 52,), array(14, 22,),
+ array(45, 52,), array(45, 52,), array(45, 52,), array(45, 52,),
+ array(26, 33,), array(45, 52,), array(45, 52,), array(8,), array(36,),
+ array(1,), array(17,), array(1,), array(2,), array(2,), array(1,),
+ array(1,), array(17,), array(17,), array(1,), array(), array(), array(),
+ array(), array(), array(1, 2, 36, 38, 39, 40, 48, 55, 56, 57, 58,),
+ array(10, 21, 23, 26, 33, 35, 37, 45,), array(10, 14, 26, 33, 36, 48,),
+ array(11, 12, 16, 50,), array(36, 45, 48, 53,), array(22, 46, 53,),
+ array(22, 46, 60,), array(28, 36, 48,), array(36, 48,), array(21, 35,),
+ array(45, 53,), array(14, 45,), array(35, 37,), array(36, 48,),
+ array(36, 48,), array(35, 37,), array(35, 37,), array(16, 50,),
+ array(35, 53,), array(22, 46,), array(34,), array(10,), array(16,),
+ array(51,), array(16,), array(36,), array(51,), array(16,), array(16,),
+ array(4,), array(16,), array(53,), array(16,), array(16,), array(36,),
+ array(13,), array(16,), array(53,), array(45,), array(37,), array(16,),
+ array(23,), array(34,), array(16,), array(14,), array(41,), array(),
+ array(), array(), array(), array(), array(), array(), array(), array(),
+ array(), array(), array(), array(), array(), array(), array(), array(),
+ array(), array(), array(), array(), array(), array(), array(), array(),
+ array(), array(), array(), array(), array(), array(), array(), array(),
+ array(), array(), array(), array(), array(), array(), array(), array(),
+ array(), array(), array(), array(), array(), array(), array(), array(),
+ array(), array(), array(), array(), array(), array(), array(), array(),
+ array(), array(), array(), array(), array(), array(), array(), array(),
+ array(), array(), array(), array(), array(), array(), array(), array(),
+ array(), array(), array(), array(), array(), array(), array(), array(),
+ array(), array(), array(), array(), array(), array(), array(), array(),
+ array(), array(), array(), array(), array(), array(), array(),);
+
+ static public $yy_default = array(338, 515, 494, 530, 530, 494, 494, 530, 530, 530, 530, 530, 530, 530, 530, 530,
+ 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530,
+ 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 396, 530, 396,
+ 359, 372, 362, 396, 335, 530, 530, 530, 530, 530, 530, 530, 530, 401, 530, 530,
+ 377, 517, 492, 493, 418, 516, 403, 401, 518, 398, 407, 408, 423, 422, 530, 530,
+ 434, 410, 530, 396, 530, 530, 396, 396, 396, 396, 530, 396, 530, 506, 396, 386,
+ 424, 424, 410, 410, 410, 530, 459, 449, 459, 530, 459, 449, 530, 530, 530, 410,
+ 396, 390, 449, 396, 410, 374, 410, 417, 426, 425, 410, 392, 421, 414, 413, 427,
+ 503, 449, 501, 448, 448, 448, 448, 448, 448, 530, 461, 459, 475, 382, 530, 381,
+ 530, 369, 366, 364, 368, 360, 363, 358, 370, 452, 384, 356, 530, 530, 385, 375,
+ 380, 379, 373, 455, 376, 484, 459, 487, 530, 454, 453, 486, 485, 383, 456, 457,
+ 350, 459, 443, 481, 387, 495, 496, 416, 391, 507, 504, 393, 500, 500, 500, 459,
+ 459, 434, 430, 434, 460, 434, 424, 424, 434, 434, 530, 430, 430, 530, 530, 444,
+ 530, 530, 530, 530, 424, 530, 530, 530, 530, 530, 505, 530, 530, 530, 342, 530,
+ 439, 530, 530, 475, 530, 530, 530, 430, 530, 530, 404, 432, 530, 530, 436, 439,
+ 480, 502, 440, 490, 465, 365, 436, 475, 394, 405, 343, 344, 345, 346, 347, 409,
+ 429, 411, 337, 336, 339, 340, 341, 431, 348, 397, 353, 464, 354, 463, 435, 378,
+ 351, 349, 489, 352, 433, 462, 419, 477, 415, 446, 478, 479, 438, 388, 519, 511,
+ 510, 521, 520, 412, 482, 437, 498, 497, 491, 476, 483, 451, 526, 527, 428, 499,
+ 450, 389, 524, 523, 488, 458, 420, 442, 445, 371, 471, 468, 474, 467, 466, 469,
+ 472, 470, 522, 509, 529, 528, 525, 508, 473, 513, 447, 514, 395, 512, 441,);
+
+ const YYNOCODE = 107;
+
+ const YYSTACKDEPTH = 500;
+
+ const YYNSTATE = 335;
+
+ const YYNRULE = 195;
+
+ const YYERRORSYMBOL = 61;
+
+ const YYERRSYMDT = 'yy0';
+
+ const YYFALLBACK = 0;
+
+ public static $yyFallback = array();
+
+ public function Trace($TraceFILE, $zTracePrompt)
+ {
+ if (!$TraceFILE) {
+ $zTracePrompt = 0;
+ } elseif (!$zTracePrompt) {
+ $TraceFILE = 0;
+ }
+ $this->yyTraceFILE = $TraceFILE;
+ $this->yyTracePrompt = $zTracePrompt;
+ }
+
+ public function PrintTrace()
+ {
+ $this->yyTraceFILE = fopen('php://output', 'w');
+ $this->yyTracePrompt = '<br>';
+ }
+
+ public $yyTraceFILE;
+
+ public $yyTracePrompt;
+
+ public $yyidx; /* Index of top element in stack */
+ public $yyerrcnt; /* Shifts left before out of the error */
+ public $yystack = array(); /* The parser's stack */
+
+ public $yyTokenName = array('$', 'VERT', 'COLON', 'PHP', 'TEXT', 'STRIPON', 'STRIPOFF', 'LITERALSTART',
+ 'LITERALEND', 'LITERAL', 'RDEL', 'SIMPELOUTPUT', 'LDEL', 'DOLLARID', 'EQUAL',
+ 'SIMPLETAG', 'ID', 'PTR', 'LDELMAKENOCACHE', 'LDELIF', 'LDELFOR', 'SEMICOLON', 'INCDEC',
+ 'TO', 'STEP', 'LDELFOREACH', 'SPACE', 'AS', 'APTR', 'LDELSETFILTER',
+ 'SMARTYBLOCKCHILDPARENT', 'CLOSETAG', 'LDELSLASH', 'ATTR', 'INTEGER', 'COMMA', 'OPENP',
+ 'CLOSEP', 'MATH', 'UNIMATH', 'ISIN', 'QMARK', 'NOT', 'TYPECAST', 'HEX', 'DOT',
+ 'INSTANCEOF', 'SINGLEQUOTESTRING', 'DOUBLECOLON', 'NAMESPACE', 'AT', 'HATCH', 'OPENB',
+ 'CLOSEB', 'DOLLAR', 'LOGOP', 'SLOGOP', 'TLOGOP', 'SINGLECOND', 'QUOTE', 'BACKTICK',
+ 'error', 'start', 'template', 'template_element', 'smartytag', 'literal',
+ 'text_content', 'literal_elements', 'literal_element', 'tag', 'variable', 'attributes',
+ 'value', 'expr', 'varindexed', 'modifierlist', 'statement', 'statements', 'foraction',
+ 'varvar', 'modparameters', 'attribute', 'ternary', 'array', 'tlop', 'lop', 'scond',
+ 'function', 'ns1', 'doublequoted_with_quotes', 'static_class_access', 'object',
+ 'arrayindex', 'indexdef', 'varvarele', 'objectchain', 'objectelement', 'method',
+ 'params', 'modifier', 'modparameter', 'arrayelements', 'arrayelement', 'doublequoted',
+ 'doublequotedcontent',);
+
+ public static $yyRuleName = array('start ::= template', 'template ::= template_element',
+ 'template ::= template template_element', 'template ::=',
+ 'template_element ::= smartytag', 'template_element ::= literal',
+ 'template_element ::= PHP', 'template_element ::= text_content',
+ 'text_content ::= TEXT', 'text_content ::= text_content TEXT',
+ 'template_element ::= STRIPON', 'template_element ::= STRIPOFF',
+ 'literal ::= LITERALSTART LITERALEND',
+ 'literal ::= LITERALSTART literal_elements LITERALEND',
+ 'literal_elements ::= literal_elements literal_element', 'literal_elements ::=',
+ 'literal_element ::= literal', 'literal_element ::= LITERAL',
+ 'smartytag ::= tag RDEL', 'smartytag ::= SIMPELOUTPUT', 'tag ::= LDEL variable',
+ 'tag ::= LDEL variable attributes', 'tag ::= LDEL value',
+ 'tag ::= LDEL value attributes', 'tag ::= LDEL expr',
+ 'tag ::= LDEL expr attributes', 'tag ::= LDEL DOLLARID EQUAL value',
+ 'tag ::= LDEL DOLLARID EQUAL expr', 'tag ::= LDEL DOLLARID EQUAL expr attributes',
+ 'tag ::= LDEL varindexed EQUAL expr attributes', 'smartytag ::= SIMPLETAG',
+ 'tag ::= LDEL ID attributes', 'tag ::= LDEL ID',
+ 'tag ::= LDEL ID modifierlist attributes', 'tag ::= LDEL ID PTR ID attributes',
+ 'tag ::= LDEL ID PTR ID modifierlist attributes',
+ 'tag ::= LDELMAKENOCACHE DOLLARID', 'tag ::= LDELIF expr',
+ 'tag ::= LDELIF expr attributes', 'tag ::= LDELIF statement',
+ 'tag ::= LDELIF statement attributes',
+ 'tag ::= LDELFOR statements SEMICOLON expr SEMICOLON varindexed foraction attributes',
+ 'foraction ::= EQUAL expr', 'foraction ::= INCDEC',
+ 'tag ::= LDELFOR statement TO expr attributes',
+ 'tag ::= LDELFOR statement TO expr STEP expr attributes',
+ 'tag ::= LDELFOREACH attributes',
+ 'tag ::= LDELFOREACH SPACE value AS varvar attributes',
+ 'tag ::= LDELFOREACH SPACE value AS varvar APTR varvar attributes',
+ 'tag ::= LDELFOREACH SPACE expr AS varvar attributes',
+ 'tag ::= LDELFOREACH SPACE expr AS varvar APTR varvar attributes',
+ 'tag ::= LDELSETFILTER ID modparameters',
+ 'tag ::= LDELSETFILTER ID modparameters modifierlist',
+ 'tag ::= LDEL SMARTYBLOCKCHILDPARENT', 'smartytag ::= CLOSETAG',
+ 'tag ::= LDELSLASH ID', 'tag ::= LDELSLASH ID modifierlist',
+ 'tag ::= LDELSLASH ID PTR ID', 'tag ::= LDELSLASH ID PTR ID modifierlist',
+ 'attributes ::= attributes attribute', 'attributes ::= attribute',
+ 'attributes ::=', 'attribute ::= SPACE ID EQUAL ID', 'attribute ::= ATTR expr',
+ 'attribute ::= ATTR value', 'attribute ::= SPACE ID', 'attribute ::= SPACE expr',
+ 'attribute ::= SPACE value', 'attribute ::= SPACE INTEGER EQUAL expr',
+ 'statements ::= statement', 'statements ::= statements COMMA statement',
+ 'statement ::= DOLLARID EQUAL INTEGER', 'statement ::= DOLLARID EQUAL expr',
+ 'statement ::= varindexed EQUAL expr', 'statement ::= OPENP statement CLOSEP',
+ 'expr ::= value', 'expr ::= ternary', 'expr ::= DOLLARID COLON ID',
+ 'expr ::= expr MATH value', 'expr ::= expr UNIMATH value', 'expr ::= array',
+ 'expr ::= expr modifierlist', 'expr ::= expr tlop value',
+ 'expr ::= expr lop expr', 'expr ::= expr scond', 'expr ::= expr ISIN array',
+ 'expr ::= expr ISIN value',
+ 'ternary ::= OPENP expr CLOSEP QMARK DOLLARID COLON expr',
+ 'ternary ::= OPENP expr CLOSEP QMARK expr COLON expr', 'value ::= variable',
+ 'value ::= UNIMATH value', 'value ::= NOT value', 'value ::= TYPECAST value',
+ 'value ::= variable INCDEC', 'value ::= HEX', 'value ::= INTEGER',
+ 'value ::= INTEGER DOT INTEGER', 'value ::= INTEGER DOT', 'value ::= DOT INTEGER',
+ 'value ::= ID', 'value ::= function', 'value ::= OPENP expr CLOSEP',
+ 'value ::= variable INSTANCEOF ns1', 'value ::= variable INSTANCEOF variable',
+ 'value ::= SINGLEQUOTESTRING', 'value ::= doublequoted_with_quotes',
+ 'value ::= varindexed DOUBLECOLON static_class_access', 'value ::= smartytag',
+ 'value ::= value modifierlist', 'value ::= NAMESPACE',
+ 'value ::= ns1 DOUBLECOLON static_class_access', 'ns1 ::= ID',
+ 'ns1 ::= NAMESPACE', 'variable ::= DOLLARID', 'variable ::= varindexed',
+ 'variable ::= varvar AT ID', 'variable ::= object', 'variable ::= HATCH ID HATCH',
+ 'variable ::= HATCH ID HATCH arrayindex', 'variable ::= HATCH variable HATCH',
+ 'variable ::= HATCH variable HATCH arrayindex',
+ 'varindexed ::= DOLLARID arrayindex', 'varindexed ::= varvar arrayindex',
+ 'arrayindex ::= arrayindex indexdef', 'arrayindex ::=',
+ 'indexdef ::= DOT DOLLARID', 'indexdef ::= DOT varvar',
+ 'indexdef ::= DOT varvar AT ID', 'indexdef ::= DOT ID',
+ 'indexdef ::= DOT INTEGER', 'indexdef ::= DOT LDEL expr RDEL',
+ 'indexdef ::= OPENB ID CLOSEB', 'indexdef ::= OPENB ID DOT ID CLOSEB',
+ 'indexdef ::= OPENB SINGLEQUOTESTRING CLOSEB',
+ 'indexdef ::= OPENB INTEGER CLOSEB', 'indexdef ::= OPENB DOLLARID CLOSEB',
+ 'indexdef ::= OPENB variable CLOSEB', 'indexdef ::= OPENB value CLOSEB',
+ 'indexdef ::= OPENB expr CLOSEB', 'indexdef ::= OPENB CLOSEB',
+ 'varvar ::= DOLLARID', 'varvar ::= DOLLAR', 'varvar ::= varvar varvarele',
+ 'varvarele ::= ID', 'varvarele ::= SIMPELOUTPUT', 'varvarele ::= LDEL expr RDEL',
+ 'object ::= varindexed objectchain', 'objectchain ::= objectelement',
+ 'objectchain ::= objectchain objectelement',
+ 'objectelement ::= PTR ID arrayindex', 'objectelement ::= PTR varvar arrayindex',
+ 'objectelement ::= PTR LDEL expr RDEL arrayindex',
+ 'objectelement ::= PTR ID LDEL expr RDEL arrayindex',
+ 'objectelement ::= PTR method', 'function ::= ns1 OPENP params CLOSEP',
+ 'method ::= ID OPENP params CLOSEP', 'method ::= DOLLARID OPENP params CLOSEP',
+ 'params ::= params COMMA expr', 'params ::= expr', 'params ::=',
+ 'modifierlist ::= modifierlist modifier modparameters',
+ 'modifierlist ::= modifier modparameters', 'modifier ::= VERT AT ID',
+ 'modifier ::= VERT ID', 'modparameters ::= modparameters modparameter',
+ 'modparameters ::=', 'modparameter ::= COLON value',
+ 'modparameter ::= COLON array', 'static_class_access ::= method',
+ 'static_class_access ::= method objectchain', 'static_class_access ::= ID',
+ 'static_class_access ::= DOLLARID arrayindex',
+ 'static_class_access ::= DOLLARID arrayindex objectchain', 'lop ::= LOGOP',
+ 'lop ::= SLOGOP', 'tlop ::= TLOGOP', 'scond ::= SINGLECOND',
+ 'array ::= OPENB arrayelements CLOSEB', 'arrayelements ::= arrayelement',
+ 'arrayelements ::= arrayelements COMMA arrayelement', 'arrayelements ::=',
+ 'arrayelement ::= value APTR expr', 'arrayelement ::= ID APTR expr',
+ 'arrayelement ::= expr', 'doublequoted_with_quotes ::= QUOTE QUOTE',
+ 'doublequoted_with_quotes ::= QUOTE doublequoted QUOTE',
+ 'doublequoted ::= doublequoted doublequotedcontent',
+ 'doublequoted ::= doublequotedcontent',
+ 'doublequotedcontent ::= BACKTICK variable BACKTICK',
+ 'doublequotedcontent ::= BACKTICK expr BACKTICK',
+ 'doublequotedcontent ::= DOLLARID', 'doublequotedcontent ::= LDEL variable RDEL',
+ 'doublequotedcontent ::= LDEL expr RDEL', 'doublequotedcontent ::= smartytag',
+ 'doublequotedcontent ::= TEXT',);
+
+ public function tokenName($tokenType)
+ {
+ if ($tokenType === 0) {
+ return 'End of Input';
+ }
+ if ($tokenType > 0 && $tokenType < count($this->yyTokenName)) {
+ return $this->yyTokenName[ $tokenType ];
+ } else {
+ return "Unknown";
+ }
+ }
+
+ public static function yy_destructor($yymajor, $yypminor)
+ {
+ switch ($yymajor) {
+ default:
+ break; /* If no destructor action specified: do nothing */
+ }
+ }
+
+ public function yy_pop_parser_stack()
+ {
+ if (empty($this->yystack)) {
+ return;
+ }
+ $yytos = array_pop($this->yystack);
+ if ($this->yyTraceFILE && $this->yyidx >= 0) {
+ fwrite($this->yyTraceFILE, $this->yyTracePrompt . 'Popping ' . $this->yyTokenName[ $yytos->major ] . "\n");
+ }
+ $yymajor = $yytos->major;
+ self::yy_destructor($yymajor, $yytos->minor);
+ $this->yyidx --;
+
+ return $yymajor;
+ }
+
+ public function __destruct()
+ {
+ while ($this->yystack !== Array()) {
+ $this->yy_pop_parser_stack();
+ }
+ if (is_resource($this->yyTraceFILE)) {
+ fclose($this->yyTraceFILE);
+ }
+ }
+
+ public function yy_get_expected_tokens($token)
+ {
+ static $res3 = array();
+ static $res4 = array();
+ $state = $this->yystack[ $this->yyidx ]->stateno;
+ $expected = self::$yyExpectedTokens[ $state ];
+ if (isset($res3[ $state ][ $token ])) {
+ if ($res3[ $state ][ $token ]) {
+ return $expected;
+ }
+ } else {
+ if ($res3[ $state ][ $token ] = in_array($token, self::$yyExpectedTokens[ $state ], true)) {
+ return $expected;
+ }
+ }
+ $stack = $this->yystack;
+ $yyidx = $this->yyidx;
+ do {
+ $yyact = $this->yy_find_shift_action($token);
+ if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
+ // reduce action
+ $done = 0;
+ do {
+ if ($done ++ == 100) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ // too much recursion prevents proper detection
+ // so give up
+ return array_unique($expected);
+ }
+ $yyruleno = $yyact - self::YYNSTATE;
+ $this->yyidx -= self::$yyRuleInfo[ $yyruleno ][ 1 ];
+ $nextstate = $this->yy_find_reduce_action($this->yystack[ $this->yyidx ]->stateno,
+ self::$yyRuleInfo[ $yyruleno ][ 0 ]);
+ if (isset(self::$yyExpectedTokens[ $nextstate ])) {
+ $expected = array_merge($expected, self::$yyExpectedTokens[ $nextstate ]);
+ if (isset($res4[ $nextstate ][ $token ])) {
+ if ($res4[ $nextstate ][ $token ]) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ return array_unique($expected);
+ }
+ } else {
+ if ($res4[ $nextstate ][ $token ] =
+ in_array($token, self::$yyExpectedTokens[ $nextstate ], true)
+ ) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ return array_unique($expected);
+ }
+ }
+ }
+ if ($nextstate < self::YYNSTATE) {
+ // we need to shift a non-terminal
+ $this->yyidx ++;
+ $x = new TP_yyStackEntry;
+ $x->stateno = $nextstate;
+ $x->major = self::$yyRuleInfo[ $yyruleno ][ 0 ];
+ $this->yystack[ $this->yyidx ] = $x;
+ continue 2;
+ } elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ // the last token was just ignored, we can't accept
+ // by ignoring input, this is in essence ignoring a
+ // syntax error!
+ return array_unique($expected);
+ } elseif ($nextstate === self::YY_NO_ACTION) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ // input accepted, but not shifted (I guess)
+ return $expected;
+ } else {
+ $yyact = $nextstate;
+ }
+ }
+ while (true);
+ }
+ break;
+ }
+ while (true);
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+
+ return array_unique($expected);
+ }
+
+ public function yy_is_expected_token($token)
+ {
+ static $res = array();
+ static $res2 = array();
+ if ($token === 0) {
+ return true; // 0 is not part of this
+ }
+ $state = $this->yystack[ $this->yyidx ]->stateno;
+ if (isset($res[ $state ][ $token ])) {
+ if ($res[ $state ][ $token ]) {
+ return true;
+ }
+ } else {
+ if ($res[ $state ][ $token ] = in_array($token, self::$yyExpectedTokens[ $state ], true)) {
+ return true;
+ }
+ }
+ $stack = $this->yystack;
+ $yyidx = $this->yyidx;
+ do {
+ $yyact = $this->yy_find_shift_action($token);
+ if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
+ // reduce action
+ $done = 0;
+ do {
+ if ($done ++ == 100) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ // too much recursion prevents proper detection
+ // so give up
+ return true;
+ }
+ $yyruleno = $yyact - self::YYNSTATE;
+ $this->yyidx -= self::$yyRuleInfo[ $yyruleno ][ 1 ];
+ $nextstate = $this->yy_find_reduce_action($this->yystack[ $this->yyidx ]->stateno,
+ self::$yyRuleInfo[ $yyruleno ][ 0 ]);
+ if (isset($res2[ $nextstate ][ $token ])) {
+ if ($res2[ $nextstate ][ $token ]) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ return true;
+ }
+ } else {
+ if ($res2[ $nextstate ][ $token ] = (isset(self::$yyExpectedTokens[ $nextstate ]) &&
+ in_array($token, self::$yyExpectedTokens[ $nextstate ],
+ true))
+ ) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ return true;
+ }
+ }
+ if ($nextstate < self::YYNSTATE) {
+ // we need to shift a non-terminal
+ $this->yyidx ++;
+ $x = new TP_yyStackEntry;
+ $x->stateno = $nextstate;
+ $x->major = self::$yyRuleInfo[ $yyruleno ][ 0 ];
+ $this->yystack[ $this->yyidx ] = $x;
+ continue 2;
+ } elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ if (!$token) {
+ // end of input: this is valid
+ return true;
+ }
+ // the last token was just ignored, we can't accept
+ // by ignoring input, this is in essence ignoring a
+ // syntax error!
+ return false;
+ } elseif ($nextstate === self::YY_NO_ACTION) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ // input accepted, but not shifted (I guess)
+ return true;
+ } else {
+ $yyact = $nextstate;
+ }
+ }
+ while (true);
+ }
+ break;
+ }
+ while (true);
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+
+ return true;
+ }
+
+ public function yy_find_shift_action($iLookAhead)
+ {
+ $stateno = $this->yystack[ $this->yyidx ]->stateno;
+
+ /* if ($this->yyidx < 0) return self::YY_NO_ACTION; */
+ if (!isset(self::$yy_shift_ofst[ $stateno ])) {
+ // no shift actions
+ return self::$yy_default[ $stateno ];
+ }
+ $i = self::$yy_shift_ofst[ $stateno ];
+ if ($i === self::YY_SHIFT_USE_DFLT) {
+ return self::$yy_default[ $stateno ];
+ }
+ if ($iLookAhead == self::YYNOCODE) {
+ return self::YY_NO_ACTION;
+ }
+ $i += $iLookAhead;
+ if ($i < 0 || $i >= self::YY_SZ_ACTTAB || self::$yy_lookahead[ $i ] != $iLookAhead) {
+ if (count(self::$yyFallback) && $iLookAhead < count(self::$yyFallback) &&
+ ($iFallback = self::$yyFallback[ $iLookAhead ]) != 0
+ ) {
+ if ($this->yyTraceFILE) {
+ fwrite($this->yyTraceFILE,
+ $this->yyTracePrompt . "FALLBACK " . $this->yyTokenName[ $iLookAhead ] . " => " .
+ $this->yyTokenName[ $iFallback ] . "\n");
+ }
+
+ return $this->yy_find_shift_action($iFallback);
+ }
+
+ return self::$yy_default[ $stateno ];
+ } else {
+ return self::$yy_action[ $i ];
+ }
+ }
+
+ public function yy_find_reduce_action($stateno, $iLookAhead)
+ {
+ /* $stateno = $this->yystack[$this->yyidx]->stateno; */
+
+ if (!isset(self::$yy_reduce_ofst[ $stateno ])) {
+ return self::$yy_default[ $stateno ];
+ }
+ $i = self::$yy_reduce_ofst[ $stateno ];
+ if ($i == self::YY_REDUCE_USE_DFLT) {
+ return self::$yy_default[ $stateno ];
+ }
+ if ($iLookAhead == self::YYNOCODE) {
+ return self::YY_NO_ACTION;
+ }
+ $i += $iLookAhead;
+ if ($i < 0 || $i >= self::YY_SZ_ACTTAB || self::$yy_lookahead[ $i ] != $iLookAhead) {
+ return self::$yy_default[ $stateno ];
+ } else {
+ return self::$yy_action[ $i ];
+ }
+ }
+
+ public function yy_shift($yyNewState, $yyMajor, $yypMinor)
+ {
+ $this->yyidx ++;
+ if ($this->yyidx >= self::YYSTACKDEPTH) {
+ $this->yyidx --;
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sStack Overflow!\n", $this->yyTracePrompt);
+ }
+ while ($this->yyidx >= 0) {
+ $this->yy_pop_parser_stack();
+ }
+ #line 207 "../smarty/lexer/smarty_internal_templateparser.y"
+
+ $this->internalError = true;
+ $this->compiler->trigger_template_error("Stack overflow in template parser");
+
+ return;
+ }
+ $yytos = new TP_yyStackEntry;
+ $yytos->stateno = $yyNewState;
+ $yytos->major = $yyMajor;
+ $yytos->minor = $yypMinor;
+ $this->yystack[] = $yytos;
+ if ($this->yyTraceFILE && $this->yyidx > 0) {
+ fprintf($this->yyTraceFILE, "%sShift %d\n", $this->yyTracePrompt, $yyNewState);
+ fprintf($this->yyTraceFILE, "%sStack:", $this->yyTracePrompt);
+ for ($i = 1; $i <= $this->yyidx; $i ++) {
+ fprintf($this->yyTraceFILE, " %s", $this->yyTokenName[ $this->yystack[ $i ]->major ]);
+ }
+ fwrite($this->yyTraceFILE, "\n");
+ }
+ }
+
+ public static $yyRuleInfo = array(array(0 => 62, 1 => 1), array(0 => 63, 1 => 1), array(0 => 63, 1 => 2),
+ array(0 => 63, 1 => 0), array(0 => 64, 1 => 1), array(0 => 64, 1 => 1),
+ array(0 => 64, 1 => 1), array(0 => 64, 1 => 1), array(0 => 67, 1 => 1),
+ array(0 => 67, 1 => 2), array(0 => 64, 1 => 1), array(0 => 64, 1 => 1),
+ array(0 => 66, 1 => 2), array(0 => 66, 1 => 3), array(0 => 68, 1 => 2),
+ array(0 => 68, 1 => 0), array(0 => 69, 1 => 1), array(0 => 69, 1 => 1),
+ array(0 => 65, 1 => 2), array(0 => 65, 1 => 1), array(0 => 70, 1 => 2),
+ array(0 => 70, 1 => 3), array(0 => 70, 1 => 2), array(0 => 70, 1 => 3),
+ array(0 => 70, 1 => 2), array(0 => 70, 1 => 3), array(0 => 70, 1 => 4),
+ array(0 => 70, 1 => 4), array(0 => 70, 1 => 5), array(0 => 70, 1 => 5),
+ array(0 => 65, 1 => 1), array(0 => 70, 1 => 3), array(0 => 70, 1 => 2),
+ array(0 => 70, 1 => 4), array(0 => 70, 1 => 5), array(0 => 70, 1 => 6),
+ array(0 => 70, 1 => 2), array(0 => 70, 1 => 2), array(0 => 70, 1 => 3),
+ array(0 => 70, 1 => 2), array(0 => 70, 1 => 3), array(0 => 70, 1 => 8),
+ array(0 => 79, 1 => 2), array(0 => 79, 1 => 1), array(0 => 70, 1 => 5),
+ array(0 => 70, 1 => 7), array(0 => 70, 1 => 2), array(0 => 70, 1 => 6),
+ array(0 => 70, 1 => 8), array(0 => 70, 1 => 6), array(0 => 70, 1 => 8),
+ array(0 => 70, 1 => 3), array(0 => 70, 1 => 4), array(0 => 70, 1 => 2),
+ array(0 => 65, 1 => 1), array(0 => 70, 1 => 2), array(0 => 70, 1 => 3),
+ array(0 => 70, 1 => 4), array(0 => 70, 1 => 5), array(0 => 72, 1 => 2),
+ array(0 => 72, 1 => 1), array(0 => 72, 1 => 0), array(0 => 82, 1 => 4),
+ array(0 => 82, 1 => 2), array(0 => 82, 1 => 2), array(0 => 82, 1 => 2),
+ array(0 => 82, 1 => 2), array(0 => 82, 1 => 2), array(0 => 82, 1 => 4),
+ array(0 => 78, 1 => 1), array(0 => 78, 1 => 3), array(0 => 77, 1 => 3),
+ array(0 => 77, 1 => 3), array(0 => 77, 1 => 3), array(0 => 77, 1 => 3),
+ array(0 => 74, 1 => 1), array(0 => 74, 1 => 1), array(0 => 74, 1 => 3),
+ array(0 => 74, 1 => 3), array(0 => 74, 1 => 3), array(0 => 74, 1 => 1),
+ array(0 => 74, 1 => 2), array(0 => 74, 1 => 3), array(0 => 74, 1 => 3),
+ array(0 => 74, 1 => 2), array(0 => 74, 1 => 3), array(0 => 74, 1 => 3),
+ array(0 => 83, 1 => 7), array(0 => 83, 1 => 7), array(0 => 73, 1 => 1),
+ array(0 => 73, 1 => 2), array(0 => 73, 1 => 2), array(0 => 73, 1 => 2),
+ array(0 => 73, 1 => 2), array(0 => 73, 1 => 1), array(0 => 73, 1 => 1),
+ array(0 => 73, 1 => 3), array(0 => 73, 1 => 2), array(0 => 73, 1 => 2),
+ array(0 => 73, 1 => 1), array(0 => 73, 1 => 1), array(0 => 73, 1 => 3),
+ array(0 => 73, 1 => 3), array(0 => 73, 1 => 3), array(0 => 73, 1 => 1),
+ array(0 => 73, 1 => 1), array(0 => 73, 1 => 3), array(0 => 73, 1 => 1),
+ array(0 => 73, 1 => 2), array(0 => 73, 1 => 1), array(0 => 73, 1 => 3),
+ array(0 => 89, 1 => 1), array(0 => 89, 1 => 1), array(0 => 71, 1 => 1),
+ array(0 => 71, 1 => 1), array(0 => 71, 1 => 3), array(0 => 71, 1 => 1),
+ array(0 => 71, 1 => 3), array(0 => 71, 1 => 4), array(0 => 71, 1 => 3),
+ array(0 => 71, 1 => 4), array(0 => 75, 1 => 2), array(0 => 75, 1 => 2),
+ array(0 => 93, 1 => 2), array(0 => 93, 1 => 0), array(0 => 94, 1 => 2),
+ array(0 => 94, 1 => 2), array(0 => 94, 1 => 4), array(0 => 94, 1 => 2),
+ array(0 => 94, 1 => 2), array(0 => 94, 1 => 4), array(0 => 94, 1 => 3),
+ array(0 => 94, 1 => 5), array(0 => 94, 1 => 3), array(0 => 94, 1 => 3),
+ array(0 => 94, 1 => 3), array(0 => 94, 1 => 3), array(0 => 94, 1 => 3),
+ array(0 => 94, 1 => 3), array(0 => 94, 1 => 2), array(0 => 80, 1 => 1),
+ array(0 => 80, 1 => 1), array(0 => 80, 1 => 2), array(0 => 95, 1 => 1),
+ array(0 => 95, 1 => 1), array(0 => 95, 1 => 3), array(0 => 92, 1 => 2),
+ array(0 => 96, 1 => 1), array(0 => 96, 1 => 2), array(0 => 97, 1 => 3),
+ array(0 => 97, 1 => 3), array(0 => 97, 1 => 5), array(0 => 97, 1 => 6),
+ array(0 => 97, 1 => 2), array(0 => 88, 1 => 4), array(0 => 98, 1 => 4),
+ array(0 => 98, 1 => 4), array(0 => 99, 1 => 3), array(0 => 99, 1 => 1),
+ array(0 => 99, 1 => 0), array(0 => 76, 1 => 3), array(0 => 76, 1 => 2),
+ array(0 => 100, 1 => 3), array(0 => 100, 1 => 2), array(0 => 81, 1 => 2),
+ array(0 => 81, 1 => 0), array(0 => 101, 1 => 2), array(0 => 101, 1 => 2),
+ array(0 => 91, 1 => 1), array(0 => 91, 1 => 2), array(0 => 91, 1 => 1),
+ array(0 => 91, 1 => 2), array(0 => 91, 1 => 3), array(0 => 86, 1 => 1),
+ array(0 => 86, 1 => 1), array(0 => 85, 1 => 1), array(0 => 87, 1 => 1),
+ array(0 => 84, 1 => 3), array(0 => 102, 1 => 1), array(0 => 102, 1 => 3),
+ array(0 => 102, 1 => 0), array(0 => 103, 1 => 3), array(0 => 103, 1 => 3),
+ array(0 => 103, 1 => 1), array(0 => 90, 1 => 2), array(0 => 90, 1 => 3),
+ array(0 => 104, 1 => 2), array(0 => 104, 1 => 1), array(0 => 105, 1 => 3),
+ array(0 => 105, 1 => 3), array(0 => 105, 1 => 1), array(0 => 105, 1 => 3),
+ array(0 => 105, 1 => 3), array(0 => 105, 1 => 1), array(0 => 105, 1 => 1),);
+
+ public static $yyReduceMap = array(0 => 0, 1 => 1, 2 => 2, 4 => 4, 5 => 5, 6 => 6, 7 => 7, 8 => 8, 16 => 8, 17 => 8,
+ 43 => 8, 66 => 8, 67 => 8, 75 => 8, 76 => 8, 80 => 8, 89 => 8, 94 => 8, 95 => 8,
+ 100 => 8, 104 => 8, 105 => 8, 109 => 8, 111 => 8, 116 => 8, 178 => 8, 183 => 8,
+ 9 => 9, 10 => 10, 11 => 11, 12 => 12, 15 => 12, 13 => 13, 74 => 13, 14 => 14,
+ 90 => 14, 92 => 14, 93 => 14, 123 => 14, 18 => 18, 19 => 19, 20 => 20, 22 => 20,
+ 24 => 20, 21 => 21, 23 => 21, 25 => 21, 26 => 26, 27 => 26, 28 => 28, 29 => 29,
+ 30 => 30, 31 => 31, 32 => 32, 33 => 33, 34 => 34, 35 => 35, 36 => 36, 37 => 37,
+ 38 => 38, 40 => 38, 39 => 39, 41 => 41, 42 => 42, 44 => 44, 45 => 45, 46 => 46,
+ 47 => 47, 49 => 47, 48 => 48, 50 => 48, 51 => 51, 52 => 52, 53 => 53, 54 => 54,
+ 55 => 55, 56 => 56, 57 => 57, 58 => 58, 59 => 59, 60 => 60, 69 => 60, 158 => 60,
+ 162 => 60, 166 => 60, 167 => 60, 61 => 61, 159 => 61, 165 => 61, 62 => 62,
+ 63 => 63, 64 => 63, 65 => 65, 143 => 65, 68 => 68, 70 => 70, 71 => 71, 72 => 71,
+ 73 => 73, 77 => 77, 78 => 78, 79 => 78, 81 => 81, 108 => 81, 82 => 82, 83 => 83,
+ 84 => 84, 85 => 85, 86 => 86, 87 => 87, 88 => 88, 91 => 91, 96 => 96, 97 => 97,
+ 98 => 98, 99 => 99, 101 => 101, 102 => 102, 103 => 102, 106 => 106, 107 => 107,
+ 110 => 110, 112 => 112, 113 => 113, 114 => 114, 115 => 115, 117 => 117,
+ 118 => 118, 119 => 119, 120 => 120, 121 => 121, 122 => 122, 124 => 124,
+ 180 => 124, 125 => 125, 126 => 126, 127 => 127, 128 => 128, 129 => 129,
+ 130 => 130, 138 => 130, 131 => 131, 132 => 132, 133 => 133, 134 => 133,
+ 136 => 133, 137 => 133, 135 => 135, 139 => 139, 140 => 140, 141 => 141,
+ 184 => 141, 142 => 142, 144 => 144, 145 => 145, 146 => 146, 147 => 147,
+ 148 => 148, 149 => 149, 150 => 150, 151 => 151, 152 => 152, 153 => 153,
+ 154 => 154, 155 => 155, 156 => 156, 157 => 157, 160 => 160, 161 => 161,
+ 163 => 163, 164 => 164, 168 => 168, 169 => 169, 170 => 170, 171 => 171,
+ 172 => 172, 173 => 173, 174 => 174, 175 => 175, 176 => 176, 177 => 177,
+ 179 => 179, 181 => 181, 182 => 182, 185 => 185, 186 => 186, 187 => 187,
+ 188 => 188, 189 => 188, 191 => 188, 190 => 190, 192 => 192, 193 => 193,
+ 194 => 194,);
+
+ #line 218 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r0()
+ {
+ $this->root_buffer->prepend_array($this, $this->template_prefix);
+ $this->root_buffer->append_array($this, $this->template_postfix);
+ $this->_retvalue = $this->root_buffer->to_smarty_php($this);
+ }
+
+ #line 228 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r1()
+ {
+ if ($this->yystack[ $this->yyidx + 0 ]->minor != null) {
+ $this->current_buffer->append_subtree($this, $this->yystack[ $this->yyidx + 0 ]->minor);
+ }
+ }
+
+ #line 235 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r2()
+ {
+ if ($this->yystack[ $this->yyidx + 0 ]->minor != null) {
+ // because of possible code injection
+ $this->current_buffer->append_subtree($this, $this->yystack[ $this->yyidx + 0 ]->minor);
+ }
+ }
+
+ #line 249 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r4()
+ {
+ if ($this->compiler->has_code) {
+ $this->_retvalue = $this->mergePrefixCode($this->yystack[ $this->yyidx + 0 ]->minor);
+ } else {
+ $this->_retvalue = null;
+ }
+ $this->compiler->has_variable_string = false;
+ $this->block_nesting_level = count($this->compiler->_tag_stack);
+ }
+
+ #line 260 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r5()
+ {
+ $this->_retvalue = new Smarty_Internal_ParseTree_Text($this->yystack[ $this->yyidx + 0 ]->minor);
+ }
+
+ #line 264 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r6()
+ {
+ $code = $this->compiler->compileTag('private_php',
+ array(array('code' => $this->yystack[ $this->yyidx + 0 ]->minor),
+ array('type' => $this->lex->phpType)), array());
+ if ($this->compiler->has_code && !empty($code)) {
+ $tmp = '';
+ foreach ($this->compiler->prefix_code as $code) {
+ $tmp .= $code;
+ }
+ $this->compiler->prefix_code = array();
+ $this->_retvalue =
+ new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode($tmp . $code, true));
+ } else {
+ $this->_retvalue = null;
+ }
+ }
+
+ #line 275 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r7()
+ {
+ $this->_retvalue = $this->compiler->processText($this->yystack[ $this->yyidx + 0 ]->minor);
+ }
+
+ #line 279 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r8()
+ {
+ $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 283 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r9()
+ {
+ $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 288 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r10()
+ {
+ $this->strip = true;
+ }
+
+ #line 292 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r11()
+ {
+ $this->strip = false;
+ }
+
+ #line 297 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r12()
+ {
+ $this->_retvalue = '';
+ }
+
+ #line 301 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r13()
+ {
+ $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor;
+ }
+
+ #line 305 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r14()
+ {
+ $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 321 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r18()
+ {
+ $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor;
+ }
+
+ #line 327 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r19()
+ {
+ $var =
+ trim(substr($this->yystack[ $this->yyidx + 0 ]->minor, $this->lex->ldel_length, - $this->lex->rdel_length),
+ ' $');
+ if (preg_match('/^(.*)(\s+nocache)$/', $var, $match)) {
+ $this->_retvalue = $this->compiler->compileTag('private_print_expression', array('nocache'),
+ array('value' => $this->compiler->compileVariable('\'' .
+ $match[ 1 ] .
+ '\'')));
+ } else {
+ $this->_retvalue = $this->compiler->compileTag('private_print_expression', array(),
+ array('value' => $this->compiler->compileVariable('\'' .
+ $var .
+ '\'')));
+ }
+ }
+
+ #line 337 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r20()
+ {
+ $this->_retvalue = $this->compiler->compileTag('private_print_expression', array(),
+ array('value' => $this->yystack[ $this->yyidx + 0 ]->minor));
+ }
+
+ #line 341 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r21()
+ {
+ $this->_retvalue =
+ $this->compiler->compileTag('private_print_expression', $this->yystack[ $this->yyidx + 0 ]->minor,
+ array('value' => $this->yystack[ $this->yyidx + - 1 ]->minor));
+ }
+
+ #line 364 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r26()
+ {
+ $this->_retvalue = $this->compiler->compileTag('assign', array(array('value' => $this->yystack[ $this->yyidx +
+ 0 ]->minor),
+ array('var' => '\'' .
+ substr($this->yystack[ $this->yyidx +
+ - 2 ]->minor,
+ 1) . '\'')));
+ }
+
+ #line 372 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r28()
+ {
+ $this->_retvalue = $this->compiler->compileTag('assign',
+ array_merge(array(array('value' => $this->yystack[ $this->yyidx +
+ - 1 ]->minor),
+ array('var' => '\'' .
+ substr($this->yystack[ $this->yyidx +
+ - 3 ]->minor,
+ 1) . '\'')),
+ $this->yystack[ $this->yyidx + 0 ]->minor));
+ }
+
+ #line 376 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r29()
+ {
+ $this->_retvalue = $this->compiler->compileTag('assign',
+ array_merge(array(array('value' => $this->yystack[ $this->yyidx +
+ - 1 ]->minor),
+ array('var' => $this->yystack[ $this->yyidx +
+ - 3 ]->minor[ 'var' ])),
+ $this->yystack[ $this->yyidx + 0 ]->minor),
+ array('smarty_internal_index' => $this->yystack[ $this->yyidx +
+ - 3 ]->minor[ 'smarty_internal_index' ]));
+ }
+
+ #line 381 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r30()
+ {
+ $tag =
+ trim(substr($this->yystack[ $this->yyidx + 0 ]->minor, $this->lex->ldel_length, - $this->lex->rdel_length));
+ if ($tag == 'strip') {
+ $this->strip = true;
+ $this->_retvalue = null;;
+ } else {
+ if (defined($tag)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant($tag, $this->compiler);
+ }
+ $this->_retvalue =
+ $this->compiler->compileTag('private_print_expression', array(), array('value' => $tag));
+ } else {
+ if (preg_match('/^(.*)(\s+nocache)$/', $tag, $match)) {
+ $this->_retvalue = $this->compiler->compileTag($match[ 1 ], array("'nocache'"));
+ } else {
+ $this->_retvalue = $this->compiler->compileTag($tag, array());
+ }
+ }
+ }
+ }
+
+ #line 403 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r31()
+ {
+ if (defined($this->yystack[ $this->yyidx + - 1 ]->minor)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant($this->yystack[ $this->yyidx + - 1 ]->minor, $this->compiler);
+ }
+ $this->_retvalue =
+ $this->compiler->compileTag('private_print_expression', $this->yystack[ $this->yyidx + 0 ]->minor,
+ array('value' => $this->yystack[ $this->yyidx + - 1 ]->minor));
+ } else {
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + - 1 ]->minor,
+ $this->yystack[ $this->yyidx + 0 ]->minor);
+ }
+ }
+
+ #line 413 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r32()
+ {
+ if (defined($this->yystack[ $this->yyidx + 0 ]->minor)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler);
+ }
+ $this->_retvalue = $this->compiler->compileTag('private_print_expression', array(),
+ array('value' => $this->yystack[ $this->yyidx + 0 ]->minor));
+ } else {
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + 0 ]->minor, array());
+ }
+ }
+
+ #line 426 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r33()
+ {
+ if (defined($this->yystack[ $this->yyidx + - 2 ]->minor)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant($this->yystack[ $this->yyidx + - 2 ]->minor, $this->compiler);
+ }
+ $this->_retvalue =
+ $this->compiler->compileTag('private_print_expression', $this->yystack[ $this->yyidx + 0 ]->minor,
+ array('value' => $this->yystack[ $this->yyidx + - 2 ]->minor,
+ 'modifierlist' => $this->yystack[ $this->yyidx + - 1 ]->minor));
+ } else {
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + - 2 ]->minor,
+ $this->yystack[ $this->yyidx + 0 ]->minor,
+ array('modifierlist' => $this->yystack[ $this->yyidx +
+ - 1 ]->minor));
+ }
+ }
+
+ #line 438 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r34()
+ {
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + - 3 ]->minor,
+ $this->yystack[ $this->yyidx + 0 ]->minor,
+ array('object_method' => $this->yystack[ $this->yyidx +
+ - 1 ]->minor));
+ }
+
+ #line 443 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r35()
+ {
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + - 4 ]->minor,
+ $this->yystack[ $this->yyidx + 0 ]->minor,
+ array('modifierlist' => $this->yystack[ $this->yyidx +
+ - 1 ]->minor,
+ 'object_method' => $this->yystack[ $this->yyidx +
+ - 2 ]->minor));
+ }
+
+ #line 448 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r36()
+ {
+ $this->_retvalue = $this->compiler->compileTag('make_nocache', array(array('var' => '\'' .
+ substr($this->yystack[ $this->yyidx +
+ 0 ]->minor,
+ 1) . '\'')));
+ }
+
+ #line 453 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r37()
+ {
+ $tag = trim(substr($this->yystack[ $this->yyidx + - 1 ]->minor, $this->lex->ldel_length));
+ $this->_retvalue = $this->compiler->compileTag(($tag == 'else if') ? 'elseif' : $tag, array(),
+ array('if condition' => $this->yystack[ $this->yyidx +
+ 0 ]->minor));
+ }
+
+ #line 458 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r38()
+ {
+ $tag = trim(substr($this->yystack[ $this->yyidx + - 2 ]->minor, $this->lex->ldel_length));
+ $this->_retvalue = $this->compiler->compileTag(($tag == 'else if') ? 'elseif' : $tag,
+ $this->yystack[ $this->yyidx + 0 ]->minor,
+ array('if condition' => $this->yystack[ $this->yyidx +
+ - 1 ]->minor));
+ }
+
+ #line 463 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r39()
+ {
+ $tag = trim(substr($this->yystack[ $this->yyidx + - 1 ]->minor, $this->lex->ldel_length));
+ $this->_retvalue = $this->compiler->compileTag(($tag == 'else if') ? 'elseif' : $tag, array(),
+ array('if condition' => $this->yystack[ $this->yyidx +
+ 0 ]->minor));
+ }
+
+ #line 474 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r41()
+ {
+ $this->_retvalue = $this->compiler->compileTag('for', array_merge($this->yystack[ $this->yyidx + 0 ]->minor,
+ array(array('start' => $this->yystack[ $this->yyidx +
+ - 6 ]->minor),
+ array('ifexp' => $this->yystack[ $this->yyidx +
+ - 4 ]->minor),
+ array('var' => $this->yystack[ $this->yyidx +
+ - 2 ]->minor),
+ array('step' => $this->yystack[ $this->yyidx +
+ - 1 ]->minor))),
+ 1);
+ }
+
+ #line 478 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r42()
+ {
+ $this->_retvalue = '=' . $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 486 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r44()
+ {
+ $this->_retvalue = $this->compiler->compileTag('for', array_merge($this->yystack[ $this->yyidx + 0 ]->minor,
+ array(array('start' => $this->yystack[ $this->yyidx +
+ - 3 ]->minor),
+ array('to' => $this->yystack[ $this->yyidx +
+ - 1 ]->minor))),
+ 0);
+ }
+
+ #line 490 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r45()
+ {
+ $this->_retvalue = $this->compiler->compileTag('for', array_merge($this->yystack[ $this->yyidx + 0 ]->minor,
+ array(array('start' => $this->yystack[ $this->yyidx +
+ - 5 ]->minor),
+ array('to' => $this->yystack[ $this->yyidx +
+ - 3 ]->minor),
+ array('step' => $this->yystack[ $this->yyidx +
+ - 1 ]->minor))),
+ 0);
+ }
+
+ #line 495 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r46()
+ {
+ $this->_retvalue = $this->compiler->compileTag('foreach', $this->yystack[ $this->yyidx + 0 ]->minor);
+ }
+
+ #line 500 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r47()
+ {
+ $this->_retvalue = $this->compiler->compileTag('foreach', array_merge($this->yystack[ $this->yyidx + 0 ]->minor,
+ array(array('from' => $this->yystack[ $this->yyidx +
+ - 3 ]->minor),
+ array('item' => $this->yystack[ $this->yyidx +
+ - 1 ]->minor))));
+ }
+
+ #line 504 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r48()
+ {
+ $this->_retvalue = $this->compiler->compileTag('foreach', array_merge($this->yystack[ $this->yyidx + 0 ]->minor,
+ array(array('from' => $this->yystack[ $this->yyidx +
+ - 5 ]->minor),
+ array('item' => $this->yystack[ $this->yyidx +
+ - 1 ]->minor),
+ array('key' => $this->yystack[ $this->yyidx +
+ - 3 ]->minor))));
+ }
+
+ #line 517 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r51()
+ {
+ $this->_retvalue = $this->compiler->compileTag('setfilter', array(),
+ array('modifier_list' => array(array_merge(array($this->yystack[ $this->yyidx +
+ - 1 ]->minor),
+ $this->yystack[ $this->yyidx +
+ 0 ]->minor))));
+ }
+
+ #line 521 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r52()
+ {
+ $this->_retvalue = $this->compiler->compileTag('setfilter', array(),
+ array('modifier_list' => array_merge(array(array_merge(array($this->yystack[ $this->yyidx +
+ - 2 ]->minor),
+ $this->yystack[ $this->yyidx +
+ - 1 ]->minor)),
+ $this->yystack[ $this->yyidx +
+ 0 ]->minor)));
+ }
+
+ #line 526 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r53()
+ {
+ $j = strrpos($this->yystack[ $this->yyidx + 0 ]->minor, '.');
+ if ($this->yystack[ $this->yyidx + 0 ]->minor[ $j + 1 ] == 'c') {
+ // {$smarty.block.child}
+ $this->_retvalue = $this->compiler->compileTag('block_child', array());;
+ } else {
+ // {$smarty.block.parent}
+ $this->_retvalue = $this->compiler->compileTag('block_parent', array());;
+ }
+ }
+
+ #line 539 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r54()
+ {
+ $tag =
+ trim(substr($this->yystack[ $this->yyidx + 0 ]->minor, $this->lex->ldel_length, - $this->lex->rdel_length),
+ ' /');
+ if ($tag == 'strip') {
+ $this->strip = false;
+ $this->_retvalue = null;
+ } else {
+ $this->_retvalue = $this->compiler->compileTag($tag . 'close', array());
+ }
+ }
+
+ #line 548 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r55()
+ {
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + 0 ]->minor . 'close', array());
+ }
+
+ #line 552 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r56()
+ {
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + - 1 ]->minor . 'close', array(),
+ array('modifier_list' => $this->yystack[ $this->yyidx +
+ 0 ]->minor));
+ }
+
+ #line 557 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r57()
+ {
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + - 2 ]->minor . 'close', array(),
+ array('object_method' => $this->yystack[ $this->yyidx +
+ 0 ]->minor));
+ }
+
+ #line 561 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r58()
+ {
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + - 3 ]->minor . 'close', array(),
+ array('object_method' => $this->yystack[ $this->yyidx +
+ - 1 ]->minor,
+ 'modifier_list' => $this->yystack[ $this->yyidx +
+ 0 ]->minor));
+ }
+
+ #line 569 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r59()
+ {
+ $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor;
+ $this->_retvalue[] = $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 575 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r60()
+ {
+ $this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor);
+ }
+
+ #line 580 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r61()
+ {
+ $this->_retvalue = array();
+ }
+
+ #line 585 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r62()
+ {
+ if (defined($this->yystack[ $this->yyidx + 0 ]->minor)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler);
+ }
+ $this->_retvalue =
+ array($this->yystack[ $this->yyidx + - 2 ]->minor => $this->yystack[ $this->yyidx + 0 ]->minor);
+ } else {
+ $this->_retvalue =
+ array($this->yystack[ $this->yyidx + - 2 ]->minor => '\'' . $this->yystack[ $this->yyidx + 0 ]->minor .
+ '\'');
+ }
+ }
+
+ #line 596 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r63()
+ {
+ $this->_retvalue =
+ array(trim($this->yystack[ $this->yyidx + - 1 ]->minor, " =\n\r\t") => $this->yystack[ $this->yyidx +
+ 0 ]->minor);
+ }
+
+ #line 604 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r65()
+ {
+ $this->_retvalue = '\'' . $this->yystack[ $this->yyidx + 0 ]->minor . '\'';
+ }
+
+ #line 616 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r68()
+ {
+ $this->_retvalue =
+ array($this->yystack[ $this->yyidx + - 2 ]->minor => $this->yystack[ $this->yyidx + 0 ]->minor);
+ }
+
+ #line 629 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r70()
+ {
+ $this->yystack[ $this->yyidx + - 2 ]->minor[] = $this->yystack[ $this->yyidx + 0 ]->minor;
+ $this->_retvalue = $this->yystack[ $this->yyidx + - 2 ]->minor;
+ }
+
+ #line 634 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r71()
+ {
+ $this->_retvalue = array('var' => '\'' . substr($this->yystack[ $this->yyidx + - 2 ]->minor, 1) . '\'',
+ 'value' => $this->yystack[ $this->yyidx + 0 ]->minor);
+ }
+
+ #line 641 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r73()
+ {
+ $this->_retvalue = array('var' => $this->yystack[ $this->yyidx + - 2 ]->minor,
+ 'value' => $this->yystack[ $this->yyidx + 0 ]->minor);
+ }
+
+ #line 665 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r77()
+ {
+ $this->_retvalue =
+ '$_smarty_tpl->getStreamVariable(\'' . substr($this->yystack[ $this->yyidx + - 2 ]->minor, 1) . '://' .
+ $this->yystack[ $this->yyidx + 0 ]->minor . '\')';
+ }
+
+ #line 670 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r78()
+ {
+ $this->_retvalue =
+ $this->yystack[ $this->yyidx + - 2 ]->minor . trim($this->yystack[ $this->yyidx + - 1 ]->minor) .
+ $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 684 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r81()
+ {
+ $this->_retvalue = $this->compiler->compileTag('private_modifier', array(),
+ array('value' => $this->yystack[ $this->yyidx + - 1 ]->minor,
+ 'modifierlist' => $this->yystack[ $this->yyidx +
+ 0 ]->minor));
+ }
+
+ #line 690 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r82()
+ {
+ $this->_retvalue =
+ $this->yystack[ $this->yyidx + - 1 ]->minor[ 'pre' ] . $this->yystack[ $this->yyidx + - 2 ]->minor .
+ $this->yystack[ $this->yyidx + - 1 ]->minor[ 'op' ] . $this->yystack[ $this->yyidx + 0 ]->minor . ')';
+ }
+
+ #line 694 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r83()
+ {
+ $this->_retvalue = $this->yystack[ $this->yyidx + - 2 ]->minor . $this->yystack[ $this->yyidx + - 1 ]->minor .
+ $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 698 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r84()
+ {
+ $this->_retvalue =
+ $this->yystack[ $this->yyidx + 0 ]->minor . $this->yystack[ $this->yyidx + - 1 ]->minor . ')';
+ }
+
+ #line 702 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r85()
+ {
+ $this->_retvalue = 'in_array(' . $this->yystack[ $this->yyidx + - 2 ]->minor . ',' .
+ $this->yystack[ $this->yyidx + 0 ]->minor . ')';
+ }
+
+ #line 706 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r86()
+ {
+ $this->_retvalue = 'in_array(' . $this->yystack[ $this->yyidx + - 2 ]->minor . ',(array)' .
+ $this->yystack[ $this->yyidx + 0 ]->minor . ')';
+ }
+
+ #line 714 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r87()
+ {
+ $this->_retvalue = $this->yystack[ $this->yyidx + - 5 ]->minor . ' ? ' . $this->compiler->compileVariable('\'' .
+ substr($this->yystack[ $this->yyidx +
+ - 2 ]->minor,
+ 1) .
+ '\'') .
+ ' : ' . $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 718 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r88()
+ {
+ $this->_retvalue =
+ $this->yystack[ $this->yyidx + - 5 ]->minor . ' ? ' . $this->yystack[ $this->yyidx + - 2 ]->minor . ' : ' .
+ $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 733 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r91()
+ {
+ $this->_retvalue = '!' . $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 754 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r96()
+ {
+ $this->_retvalue =
+ $this->yystack[ $this->yyidx + - 2 ]->minor . '.' . $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 758 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r97()
+ {
+ $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor . '.';
+ }
+
+ #line 762 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r98()
+ {
+ $this->_retvalue = '.' . $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 767 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r99()
+ {
+ if (defined($this->yystack[ $this->yyidx + 0 ]->minor)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler);
+ }
+ $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor;
+ } else {
+ $this->_retvalue = '\'' . $this->yystack[ $this->yyidx + 0 ]->minor . '\'';
+ }
+ }
+
+ #line 784 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r101()
+ {
+ $this->_retvalue = "(" . $this->yystack[ $this->yyidx + - 1 ]->minor . ")";
+ }
+
+ #line 788 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r102()
+ {
+ $this->_retvalue = $this->yystack[ $this->yyidx + - 2 ]->minor . $this->yystack[ $this->yyidx + - 1 ]->minor .
+ $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 806 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r106()
+ {
+ $prefixVar = $this->compiler->getNewPrefixVariable();
+ if ($this->yystack[ $this->yyidx + - 2 ]->minor[ 'var' ] == '\'smarty\'') {
+ $this->compiler->appendPrefixCode("<?php $prefixVar" . ' = ' .
+ $this->compiler->compileTag('private_special_variable', array(),
+ $this->yystack[ $this->yyidx +
+ - 2 ]->minor[ 'smarty_internal_index' ]) .
+ ';?>');
+ } else {
+ $this->compiler->appendPrefixCode("<?php $prefixVar" . ' = ' .
+ $this->compiler->compileVariable($this->yystack[ $this->yyidx +
+ - 2 ]->minor[ 'var' ]) .
+ $this->yystack[ $this->yyidx + - 2 ]->minor[ 'smarty_internal_index' ] .
+ ';?>');
+ }
+ $this->_retvalue = $prefixVar . '::' . $this->yystack[ $this->yyidx + 0 ]->minor[ 0 ] .
+ $this->yystack[ $this->yyidx + 0 ]->minor[ 1 ];
+ }
+
+ #line 817 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r107()
+ {
+ $prefixVar = $this->compiler->getNewPrefixVariable();
+ $tmp = $this->compiler->appendCode('<?php ob_start();?>', $this->yystack[ $this->yyidx + 0 ]->minor);
+ $this->compiler->appendPrefixCode($this->compiler->appendCode($tmp, "<?php $prefixVar" . '=ob_get_clean();?>'));
+ $this->_retvalue = $prefixVar;
+ }
+
+ #line 834 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r110()
+ {
+ if (!in_array(strtolower($this->yystack[ $this->yyidx + - 2 ]->minor), array('self', 'parent')) &&
+ (!$this->security ||
+ $this->security->isTrustedStaticClassAccess($this->yystack[ $this->yyidx + - 2 ]->minor,
+ $this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler))
+ ) {
+ if (isset($this->smarty->registered_classes[ $this->yystack[ $this->yyidx + - 2 ]->minor ])) {
+ $this->_retvalue =
+ $this->smarty->registered_classes[ $this->yystack[ $this->yyidx + - 2 ]->minor ] . '::' .
+ $this->yystack[ $this->yyidx + 0 ]->minor[ 0 ] . $this->yystack[ $this->yyidx + 0 ]->minor[ 1 ];
+ } else {
+ $this->_retvalue = $this->yystack[ $this->yyidx + - 2 ]->minor . '::' .
+ $this->yystack[ $this->yyidx + 0 ]->minor[ 0 ] .
+ $this->yystack[ $this->yyidx + 0 ]->minor[ 1 ];
+ }
+ } else {
+ $this->compiler->trigger_template_error("static class '" . $this->yystack[ $this->yyidx + - 2 ]->minor .
+ "' is undefined or not allowed by security setting");
+ }
+ }
+
+ #line 853 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r112()
+ {
+ $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 864 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r113()
+ {
+ $this->_retvalue =
+ $this->compiler->compileVariable('\'' . substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) . '\'');
+ }
+
+ #line 867 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r114()
+ {
+ if ($this->yystack[ $this->yyidx + 0 ]->minor[ 'var' ] == '\'smarty\'') {
+ $smarty_var = $this->compiler->compileTag('private_special_variable', array(),
+ $this->yystack[ $this->yyidx +
+ 0 ]->minor[ 'smarty_internal_index' ]);
+ $this->_retvalue = $smarty_var;
+ } else {
+ // used for array reset,next,prev,end,current
+ $this->last_variable = $this->yystack[ $this->yyidx + 0 ]->minor[ 'var' ];
+ $this->last_index = $this->yystack[ $this->yyidx + 0 ]->minor[ 'smarty_internal_index' ];
+ $this->_retvalue = $this->compiler->compileVariable($this->yystack[ $this->yyidx + 0 ]->minor[ 'var' ]) .
+ $this->yystack[ $this->yyidx + 0 ]->minor[ 'smarty_internal_index' ];
+ }
+ }
+
+ #line 880 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r115()
+ {
+ $this->_retvalue = '$_smarty_tpl->tpl_vars[' . $this->yystack[ $this->yyidx + - 2 ]->minor . ']->' .
+ $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 890 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r117()
+ {
+ $this->_retvalue =
+ $this->compiler->compileConfigVariable("'" . $this->yystack[ $this->yyidx + - 1 ]->minor . "'");
+ }
+
+ #line 894 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r118()
+ {
+ $this->_retvalue = '(is_array($tmp = ' .
+ $this->compiler->compileConfigVariable("'" . $this->yystack[ $this->yyidx + - 2 ]->minor .
+ "'") . ') ? $tmp' .
+ $this->yystack[ $this->yyidx + 0 ]->minor . ' :null)';
+ }
+
+ #line 898 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r119()
+ {
+ $this->_retvalue = $this->compiler->compileConfigVariable($this->yystack[ $this->yyidx + - 1 ]->minor);
+ }
+
+ #line 902 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r120()
+ {
+ $this->_retvalue =
+ '(is_array($tmp = ' . $this->compiler->compileConfigVariable($this->yystack[ $this->yyidx + - 2 ]->minor) .
+ ') ? $tmp' . $this->yystack[ $this->yyidx + 0 ]->minor . ' : null)';
+ }
+
+ #line 906 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r121()
+ {
+ $this->_retvalue = array('var' => '\'' . substr($this->yystack[ $this->yyidx + - 1 ]->minor, 1) . '\'',
+ 'smarty_internal_index' => $this->yystack[ $this->yyidx + 0 ]->minor);
+ }
+
+ #line 909 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r122()
+ {
+ $this->_retvalue = array('var' => $this->yystack[ $this->yyidx + - 1 ]->minor,
+ 'smarty_internal_index' => $this->yystack[ $this->yyidx + 0 ]->minor);
+ }
+
+ #line 922 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r124()
+ {
+ return;
+ }
+
+ #line 928 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r125()
+ {
+ $this->_retvalue =
+ '[' . $this->compiler->compileVariable('\'' . substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) . '\'') .
+ ']';
+ }
+
+ #line 931 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r126()
+ {
+ $this->_retvalue = '[' . $this->compiler->compileVariable($this->yystack[ $this->yyidx + 0 ]->minor) . ']';
+ }
+
+ #line 935 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r127()
+ {
+ $this->_retvalue = '[' . $this->compiler->compileVariable($this->yystack[ $this->yyidx + - 2 ]->minor) . '->' .
+ $this->yystack[ $this->yyidx + 0 ]->minor . ']';
+ }
+
+ #line 939 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r128()
+ {
+ $this->_retvalue = "['" . $this->yystack[ $this->yyidx + 0 ]->minor . "']";
+ }
+
+ #line 943 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r129()
+ {
+ $this->_retvalue = '[' . $this->yystack[ $this->yyidx + 0 ]->minor . ']';
+ }
+
+ #line 948 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r130()
+ {
+ $this->_retvalue = '[' . $this->yystack[ $this->yyidx + - 1 ]->minor . ']';
+ }
+
+ #line 953 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r131()
+ {
+ $this->_retvalue = '[' . $this->compiler->compileTag('private_special_variable', array(), '[\'section\'][\'' .
+ $this->yystack[ $this->yyidx +
+ - 1 ]->minor .
+ '\'][\'index\']') .
+ ']';
+ }
+
+ #line 957 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r132()
+ {
+ $this->_retvalue = '[' . $this->compiler->compileTag('private_special_variable', array(), '[\'section\'][\'' .
+ $this->yystack[ $this->yyidx +
+ - 3 ]->minor .
+ '\'][\'' .
+ $this->yystack[ $this->yyidx +
+ - 1 ]->minor .
+ '\']') . ']';
+ }
+
+ #line 960 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r133()
+ {
+ $this->_retvalue = '[' . $this->yystack[ $this->yyidx + - 1 ]->minor . ']';
+ }
+
+ #line 966 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r135()
+ {
+ $this->_retvalue = '[' . $this->compiler->compileVariable('\'' .
+ substr($this->yystack[ $this->yyidx + - 1 ]->minor,
+ 1) . '\'') . ']';;
+ }
+
+ #line 982 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r139()
+ {
+ $this->_retvalue = '[]';
+ }
+
+ #line 992 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r140()
+ {
+ $this->_retvalue = '\'' . substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) . '\'';
+ }
+
+ #line 996 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r141()
+ {
+ $this->_retvalue = "''";
+ }
+
+ #line 1001 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r142()
+ {
+ $this->_retvalue =
+ $this->yystack[ $this->yyidx + - 1 ]->minor . '.' . $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 1009 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r144()
+ {
+ $var =
+ trim(substr($this->yystack[ $this->yyidx + 0 ]->minor, $this->lex->ldel_length, - $this->lex->rdel_length),
+ ' $');
+ $this->_retvalue = $this->compiler->compileVariable('\'' . $var . '\'');
+ }
+
+ #line 1015 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r145()
+ {
+ $this->_retvalue = '(' . $this->yystack[ $this->yyidx + - 1 ]->minor . ')';
+ }
+
+ #line 1022 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r146()
+ {
+ if ($this->yystack[ $this->yyidx + - 1 ]->minor[ 'var' ] == '\'smarty\'') {
+ $this->_retvalue = $this->compiler->compileTag('private_special_variable', array(),
+ $this->yystack[ $this->yyidx +
+ - 1 ]->minor[ 'smarty_internal_index' ]) .
+ $this->yystack[ $this->yyidx + 0 ]->minor;
+ } else {
+ $this->_retvalue = $this->compiler->compileVariable($this->yystack[ $this->yyidx + - 1 ]->minor[ 'var' ]) .
+ $this->yystack[ $this->yyidx + - 1 ]->minor[ 'smarty_internal_index' ] .
+ $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+ }
+
+ #line 1031 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r147()
+ {
+ $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 1036 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r148()
+ {
+ $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 1041 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r149()
+ {
+ if ($this->security && substr($this->yystack[ $this->yyidx + - 1 ]->minor, 0, 1) == '_') {
+ $this->compiler->trigger_template_error(self::Err1);
+ }
+ $this->_retvalue =
+ '->' . $this->yystack[ $this->yyidx + - 1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 1048 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r150()
+ {
+ if ($this->security) {
+ $this->compiler->trigger_template_error(self::Err2);
+ }
+ $this->_retvalue = '->{' . $this->compiler->compileVariable($this->yystack[ $this->yyidx + - 1 ]->minor) .
+ $this->yystack[ $this->yyidx + 0 ]->minor . '}';
+ }
+
+ #line 1055 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r151()
+ {
+ if ($this->security) {
+ $this->compiler->trigger_template_error(self::Err2);
+ }
+ $this->_retvalue =
+ '->{' . $this->yystack[ $this->yyidx + - 2 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor . '}';
+ }
+
+ #line 1062 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r152()
+ {
+ if ($this->security) {
+ $this->compiler->trigger_template_error(self::Err2);
+ }
+ $this->_retvalue = '->{\'' . $this->yystack[ $this->yyidx + - 4 ]->minor . '\'.' .
+ $this->yystack[ $this->yyidx + - 2 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor .
+ '}';
+ }
+
+ #line 1070 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r153()
+ {
+ $this->_retvalue = '->' . $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 1078 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r154()
+ {
+ $this->_retvalue = $this->compiler->compilePHPFunctionCall($this->yystack[ $this->yyidx + - 3 ]->minor,
+ $this->yystack[ $this->yyidx + - 1 ]->minor);
+ }
+
+ #line 1086 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r155()
+ {
+ if ($this->security && substr($this->yystack[ $this->yyidx + - 3 ]->minor, 0, 1) == '_') {
+ $this->compiler->trigger_template_error(self::Err1);
+ }
+ $this->_retvalue = $this->yystack[ $this->yyidx + - 3 ]->minor . "(" .
+ implode(',', $this->yystack[ $this->yyidx + - 1 ]->minor) . ")";
+ }
+
+ #line 1093 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r156()
+ {
+ if ($this->security) {
+ $this->compiler->trigger_template_error(self::Err2);
+ }
+ $prefixVar = $this->compiler->getNewPrefixVariable();
+ $this->compiler->appendPrefixCode("<?php $prefixVar" . '=' . $this->compiler->compileVariable('\'' .
+ substr($this->yystack[ $this->yyidx +
+ - 3 ]->minor,
+ 1) .
+ '\'') . ';?>');
+ $this->_retvalue = $prefixVar . '(' . implode(',', $this->yystack[ $this->yyidx + - 1 ]->minor) . ')';
+ }
+
+ #line 1104 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r157()
+ {
+ $this->_retvalue =
+ array_merge($this->yystack[ $this->yyidx + - 2 ]->minor, array($this->yystack[ $this->yyidx + 0 ]->minor));
+ }
+
+ #line 1121 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r160()
+ {
+ $this->_retvalue = array_merge($this->yystack[ $this->yyidx + - 2 ]->minor,
+ array(array_merge($this->yystack[ $this->yyidx + - 1 ]->minor,
+ $this->yystack[ $this->yyidx + 0 ]->minor)));
+ }
+
+ #line 1125 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r161()
+ {
+ $this->_retvalue =
+ array(array_merge($this->yystack[ $this->yyidx + - 1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor));
+ }
+
+ #line 1133 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r163()
+ {
+ $this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor);
+ }
+
+ #line 1141 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r164()
+ {
+ $this->_retvalue =
+ array_merge($this->yystack[ $this->yyidx + - 1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor);
+ }
+
+ #line 1160 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r168()
+ {
+ $this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor, '', 'method');
+ }
+
+ #line 1165 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r169()
+ {
+ $this->_retvalue =
+ array($this->yystack[ $this->yyidx + - 1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor, 'method');
+ }
+
+ #line 1170 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r170()
+ {
+ $this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor, '');
+ }
+
+ #line 1175 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r171()
+ {
+ $this->_retvalue =
+ array($this->yystack[ $this->yyidx + - 1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor, 'property');
+ }
+
+ #line 1180 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r172()
+ {
+ $this->_retvalue = array($this->yystack[ $this->yyidx + - 2 ]->minor,
+ $this->yystack[ $this->yyidx + - 1 ]->minor .
+ $this->yystack[ $this->yyidx + 0 ]->minor, 'property');
+ }
+
+ #line 1186 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r173()
+ {
+ $this->_retvalue = ' ' . trim($this->yystack[ $this->yyidx + 0 ]->minor) . ' ';
+ }
+
+ #line 1190 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r174()
+ {
+ static $lops =
+ array('eq' => ' == ', 'ne' => ' != ', 'neq' => ' != ', 'gt' => ' > ', 'ge' => ' >= ', 'gte' => ' >= ',
+ 'lt' => ' < ', 'le' => ' <= ', 'lte' => ' <= ', 'mod' => ' % ', 'and' => ' && ', 'or' => ' || ',
+ 'xor' => ' xor ',);
+ $op = strtolower(preg_replace('/\s*/', '', $this->yystack[ $this->yyidx + 0 ]->minor));
+ $this->_retvalue = $lops[ $op ];
+ }
+
+ #line 1209 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r175()
+ {
+ static $tlops =
+ array('isdivby' => array('op' => ' % ', 'pre' => '!('), 'isnotdivby' => array('op' => ' % ', 'pre' => '('),
+ 'isevenby' => array('op' => ' / ', 'pre' => '!(1 & '),
+ 'isnotevenby' => array('op' => ' / ', 'pre' => '(1 & '),
+ 'isoddby' => array('op' => ' / ', 'pre' => '(1 & '),
+ 'isnotoddby' => array('op' => ' / ', 'pre' => '!(1 & '),);
+ $op = strtolower(preg_replace('/\s*/', '', $this->yystack[ $this->yyidx + 0 ]->minor));
+ $this->_retvalue = $tlops[ $op ];
+ }
+
+ #line 1222 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r176()
+ {
+ static $scond =
+ array('iseven' => '!(1 & ', 'isnoteven' => '(1 & ', 'isodd' => '(1 & ', 'isnotodd' => '!(1 & ',);
+ $op = strtolower(str_replace(' ', '', $this->yystack[ $this->yyidx + 0 ]->minor));
+ $this->_retvalue = $scond[ $op ];
+ }
+
+ #line 1236 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r177()
+ {
+ $this->_retvalue = 'array(' . $this->yystack[ $this->yyidx + - 1 ]->minor . ')';
+ }
+
+ #line 1244 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r179()
+ {
+ $this->_retvalue =
+ $this->yystack[ $this->yyidx + - 2 ]->minor . ',' . $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 1252 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r181()
+ {
+ $this->_retvalue =
+ $this->yystack[ $this->yyidx + - 2 ]->minor . '=>' . $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 1256 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r182()
+ {
+ $this->_retvalue =
+ '\'' . $this->yystack[ $this->yyidx + - 2 ]->minor . '\'=>' . $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 1272 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r185()
+ {
+ $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor->to_smarty_php($this);
+ }
+
+ #line 1277 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r186()
+ {
+ $this->yystack[ $this->yyidx + - 1 ]->minor->append_subtree($this, $this->yystack[ $this->yyidx + 0 ]->minor);
+ $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor;
+ }
+
+ #line 1282 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r187()
+ {
+ $this->_retvalue = new Smarty_Internal_ParseTree_Dq($this, $this->yystack[ $this->yyidx + 0 ]->minor);
+ }
+
+ #line 1286 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r188()
+ {
+ $this->_retvalue = new Smarty_Internal_ParseTree_Code('(string)' . $this->yystack[ $this->yyidx + - 1 ]->minor);
+ }
+
+ #line 1294 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r190()
+ {
+ $this->_retvalue = new Smarty_Internal_ParseTree_Code('(string)$_smarty_tpl->tpl_vars[\'' .
+ substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) .
+ '\']->value');
+ }
+
+ #line 1302 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r192()
+ {
+ $this->_retvalue =
+ new Smarty_Internal_ParseTree_Code('(string)(' . $this->yystack[ $this->yyidx + - 1 ]->minor . ')');
+ }
+
+ #line 1306 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r193()
+ {
+ $this->_retvalue = new Smarty_Internal_ParseTree_Tag($this, $this->yystack[ $this->yyidx + 0 ]->minor);
+ }
+
+ #line 1310 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r194()
+ {
+ $this->_retvalue = new Smarty_Internal_ParseTree_DqContent($this->yystack[ $this->yyidx + 0 ]->minor);
+ }
+
+ private $_retvalue;
+
+ public function yy_reduce($yyruleno)
+ {
+ if ($this->yyTraceFILE && $yyruleno >= 0 && $yyruleno < count(self::$yyRuleName)) {
+ fprintf($this->yyTraceFILE, "%sReduce (%d) [%s].\n", $this->yyTracePrompt, $yyruleno,
+ self::$yyRuleName[ $yyruleno ]);
+ }
+
+ $this->_retvalue = $yy_lefthand_side = null;
+ if (isset(self::$yyReduceMap[ $yyruleno ])) {
+ // call the action
+ $this->_retvalue = null;
+ $this->{'yy_r' . self::$yyReduceMap[ $yyruleno ]}();
+ $yy_lefthand_side = $this->_retvalue;
+ }
+ $yygoto = self::$yyRuleInfo[ $yyruleno ][ 0 ];
+ $yysize = self::$yyRuleInfo[ $yyruleno ][ 1 ];
+ $this->yyidx -= $yysize;
+ for ($i = $yysize; $i; $i --) {
+ // pop all of the right-hand side parameters
+ array_pop($this->yystack);
+ }
+ $yyact = $this->yy_find_reduce_action($this->yystack[ $this->yyidx ]->stateno, $yygoto);
+ if ($yyact < self::YYNSTATE) {
+ if (!$this->yyTraceFILE && $yysize) {
+ $this->yyidx ++;
+ $x = new TP_yyStackEntry;
+ $x->stateno = $yyact;
+ $x->major = $yygoto;
+ $x->minor = $yy_lefthand_side;
+ $this->yystack[ $this->yyidx ] = $x;
+ } else {
+ $this->yy_shift($yyact, $yygoto, $yy_lefthand_side);
+ }
+ } elseif ($yyact == self::YYNSTATE + self::YYNRULE + 1) {
+ $this->yy_accept();
+ }
+ }
+
+ public function yy_parse_failed()
+ {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sFail!\n", $this->yyTracePrompt);
+ }
+ while ($this->yyidx >= 0) {
+ $this->yy_pop_parser_stack();
+ }
+ }
+
+ public function yy_syntax_error($yymajor, $TOKEN)
+ {
+ #line 200 "../smarty/lexer/smarty_internal_templateparser.y"
+
+ $this->internalError = true;
+ $this->yymajor = $yymajor;
+ $this->compiler->trigger_template_error();
+ }
+
+ public function yy_accept()
+ {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sAccept!\n", $this->yyTracePrompt);
+ }
+ while ($this->yyidx >= 0) {
+ $this->yy_pop_parser_stack();
+ }
+ #line 193 "../smarty/lexer/smarty_internal_templateparser.y"
+
+ $this->successful = !$this->internalError;
+ $this->internalError = false;
+ $this->retvalue = $this->_retvalue;
+ }
+
+ public function doParse($yymajor, $yytokenvalue)
+ {
+ $yyerrorhit = 0; /* True if yymajor has invoked an error */
+
+ if ($this->yyidx === null || $this->yyidx < 0) {
+ $this->yyidx = 0;
+ $this->yyerrcnt = - 1;
+ $x = new TP_yyStackEntry;
+ $x->stateno = 0;
+ $x->major = 0;
+ $this->yystack = array();
+ $this->yystack[] = $x;
+ }
+ $yyendofinput = ($yymajor == 0);
+
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sInput %s\n", $this->yyTracePrompt, $this->yyTokenName[ $yymajor ]);
+ }
+
+ do {
+ $yyact = $this->yy_find_shift_action($yymajor);
+ if ($yymajor < self::YYERRORSYMBOL && !$this->yy_is_expected_token($yymajor)) {
+ // force a syntax error
+ $yyact = self::YY_ERROR_ACTION;
+ }
+ if ($yyact < self::YYNSTATE) {
+ $this->yy_shift($yyact, $yymajor, $yytokenvalue);
+ $this->yyerrcnt --;
+ if ($yyendofinput && $this->yyidx >= 0) {
+ $yymajor = 0;
+ } else {
+ $yymajor = self::YYNOCODE;
+ }
+ } elseif ($yyact < self::YYNSTATE + self::YYNRULE) {
+ $this->yy_reduce($yyact - self::YYNSTATE);
+ } elseif ($yyact == self::YY_ERROR_ACTION) {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sSyntax Error!\n", $this->yyTracePrompt);
+ }
+ if (self::YYERRORSYMBOL) {
+ if ($this->yyerrcnt < 0) {
+ $this->yy_syntax_error($yymajor, $yytokenvalue);
+ }
+ $yymx = $this->yystack[ $this->yyidx ]->major;
+ if ($yymx == self::YYERRORSYMBOL || $yyerrorhit) {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sDiscard input token %s\n", $this->yyTracePrompt,
+ $this->yyTokenName[ $yymajor ]);
+ }
+ $this->yy_destructor($yymajor, $yytokenvalue);
+ $yymajor = self::YYNOCODE;
+ } else {
+ while ($this->yyidx >= 0 && $yymx != self::YYERRORSYMBOL &&
+ ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE) {
+ $this->yy_pop_parser_stack();
+ }
+ if ($this->yyidx < 0 || $yymajor == 0) {
+ $this->yy_destructor($yymajor, $yytokenvalue);
+ $this->yy_parse_failed();
+ $yymajor = self::YYNOCODE;
+ } elseif ($yymx != self::YYERRORSYMBOL) {
+ $u2 = 0;
+ $this->yy_shift($yyact, self::YYERRORSYMBOL, $u2);
+ }
+ }
+ $this->yyerrcnt = 3;
+ $yyerrorhit = 1;
+ } else {
+ if ($this->yyerrcnt <= 0) {
+ $this->yy_syntax_error($yymajor, $yytokenvalue);
+ }
+ $this->yyerrcnt = 3;
+ $this->yy_destructor($yymajor, $yytokenvalue);
+ if ($yyendofinput) {
+ $this->yy_parse_failed();
+ }
+ $yymajor = self::YYNOCODE;
+ }
+ } else {
+ $this->yy_accept();
+ $yymajor = self::YYNOCODE;
+ }
+ }
+ while ($yymajor != self::YYNOCODE && $this->yyidx >= 0);
+ }
+}
+
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_testinstall.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_testinstall.php
index 72d9a5211..7cb575573 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_testinstall.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_testinstall.php
@@ -20,9 +20,10 @@ class Smarty_Internal_TestInstall
* diagnose Smarty setup
* If $errors is secified, the diagnostic report will be appended to the array, rather than being output.
*
- * @param array $errors array to push results into rather than outputting them
+ * @param \Smarty $smarty
+ * @param array $errors array to push results into rather than outputting them
*
- * @return bool status, true if everything is fine, false else
+ * @return bool status, true if everything is fine, false else
*/
public static function testInstall(Smarty $smarty, &$errors = null)
{
@@ -358,151 +359,146 @@ class Smarty_Internal_TestInstall
// test if sysplugins are available
$source = SMARTY_SYSPLUGINS_DIR;
if (is_dir($source)) {
- $expectedSysplugins = array('smartycompilerexception.php' => true,
- 'smartyexception.php' => true,
- 'smarty_cacheresource.php' => true,
- 'smarty_cacheresource_custom.php' => true,
- 'smarty_cacheresource_keyvaluestore.php' => true,
- 'smarty_data.php' => true,
- 'smarty_internal_cacheresource_file.php' => true,
- 'smarty_internal_compilebase.php' => true,
- 'smarty_internal_compile_append.php' => true,
- 'smarty_internal_compile_assign.php' => true,
- 'smarty_internal_compile_block.php' => true,
- 'smarty_internal_compile_break.php' => true,
- 'smarty_internal_compile_call.php' => true,
- 'smarty_internal_compile_capture.php' => true,
- 'smarty_internal_compile_config_load.php' => true,
- 'smarty_internal_compile_continue.php' => true,
- 'smarty_internal_compile_debug.php' => true,
- 'smarty_internal_compile_eval.php' => true,
- 'smarty_internal_compile_extends.php' => true,
- 'smarty_internal_compile_for.php' => true,
- 'smarty_internal_compile_foreach.php' => true,
- 'smarty_internal_compile_function.php' => true,
- 'smarty_internal_compile_if.php' => true,
- 'smarty_internal_compile_include.php' => true,
- 'smarty_internal_compile_include_php.php' => true,
- 'smarty_internal_compile_insert.php' => true,
- 'smarty_internal_compile_ldelim.php' => true,
- 'smarty_internal_compile_nocache.php' => true,
- 'smarty_internal_compile_private_block_plugin.php' => true,
- 'smarty_internal_compile_private_foreachsection.php' => true,
- 'smarty_internal_compile_private_function_plugin.php' => true,
- 'smarty_internal_compile_private_modifier.php' => true,
+ $expectedSysplugins = array('smartycompilerexception.php' => true, 'smartyexception.php' => true,
+ 'smarty_cacheresource.php' => true, 'smarty_cacheresource_custom.php' => true,
+ 'smarty_cacheresource_keyvaluestore.php' => true, 'smarty_data.php' => true,
+ 'smarty_internal_block.php' => true,
+ 'smarty_internal_cacheresource_file.php' => true,
+ 'smarty_internal_compilebase.php' => true,
+ 'smarty_internal_compile_append.php' => true,
+ 'smarty_internal_compile_assign.php' => true,
+ 'smarty_internal_compile_block.php' => true,
+ 'smarty_internal_compile_block_child.php' => true,
+ 'smarty_internal_compile_block_parent.php' => true,
+ 'smarty_internal_compile_break.php' => true,
+ 'smarty_internal_compile_call.php' => true,
+ 'smarty_internal_compile_capture.php' => true,
+ 'smarty_internal_compile_config_load.php' => true,
+ 'smarty_internal_compile_continue.php' => true,
+ 'smarty_internal_compile_debug.php' => true,
+ 'smarty_internal_compile_eval.php' => true,
+ 'smarty_internal_compile_extends.php' => true,
+ 'smarty_internal_compile_for.php' => true,
+ 'smarty_internal_compile_foreach.php' => true,
+ 'smarty_internal_compile_function.php' => true,
+ 'smarty_internal_compile_if.php' => true,
+ 'smarty_internal_compile_include.php' => true,
+ 'smarty_internal_compile_include_php.php' => true,
+ 'smarty_internal_compile_insert.php' => true,
+ 'smarty_internal_compile_ldelim.php' => true,
+ 'smarty_internal_compile_make_nocache.php' => true,
+ 'smarty_internal_compile_nocache.php' => true,
+ 'smarty_internal_compile_private_block_plugin.php' => true,
+ 'smarty_internal_compile_private_foreachsection.php' => true,
+ 'smarty_internal_compile_private_function_plugin.php' => true,
+ 'smarty_internal_compile_private_modifier.php' => true,
'smarty_internal_compile_private_object_block_function.php' => true,
- 'smarty_internal_compile_private_object_function.php' => true,
- 'smarty_internal_compile_private_php.php' => true,
- 'smarty_internal_compile_private_print_expression.php' => true,
- 'smarty_internal_compile_private_registered_block.php' => true,
- 'smarty_internal_compile_private_registered_function.php' => true,
- 'smarty_internal_compile_private_special_variable.php' => true,
- 'smarty_internal_compile_rdelim.php' => true,
- 'smarty_internal_compile_section.php' => true,
- 'smarty_internal_compile_setfilter.php' => true,
- 'smarty_internal_compile_shared_inheritance.php' => true,
- 'smarty_internal_compile_while.php' => true,
- 'smarty_internal_configfilelexer.php' => true,
- 'smarty_internal_configfileparser.php' => true,
- 'smarty_internal_config_file_compiler.php' => true,
- 'smarty_internal_data.php' => true,
- 'smarty_internal_debug.php' => true,
- 'smarty_internal_extension_clear.php' => true,
- 'smarty_internal_extension_handler.php' => true,
- 'smarty_internal_method_addautoloadfilters.php' => true,
- 'smarty_internal_method_adddefaultmodifiers.php' => true,
- 'smarty_internal_method_append.php' => true,
- 'smarty_internal_method_appendbyref.php' => true,
- 'smarty_internal_method_assignbyref.php' => true,
- 'smarty_internal_method_assignglobal.php' => true,
- 'smarty_internal_method_clearallassign.php' => true,
- 'smarty_internal_method_clearallcache.php' => true,
- 'smarty_internal_method_clearassign.php' => true,
- 'smarty_internal_method_clearcache.php' => true,
- 'smarty_internal_method_clearcompiledtemplate.php' => true,
- 'smarty_internal_method_clearconfig.php' => true,
- 'smarty_internal_method_compileallconfig.php' => true,
- 'smarty_internal_method_compilealltemplates.php' => true,
- 'smarty_internal_method_configload.php' => true,
- 'smarty_internal_method_createdata.php' => true,
- 'smarty_internal_method_getautoloadfilters.php' => true,
- 'smarty_internal_method_getconfigvars.php' => true,
- 'smarty_internal_method_getdebugtemplate.php' => true,
- 'smarty_internal_method_getdefaultmodifiers.php' => true,
- 'smarty_internal_method_getregisteredobject.php' => true,
- 'smarty_internal_method_getstreamvariable.php' => true,
- 'smarty_internal_method_gettags.php' => true,
- 'smarty_internal_method_gettemplatevars.php' => true,
- 'smarty_internal_method_loadfilter.php' => true,
- 'smarty_internal_method_loadplugin.php' => true,
- 'smarty_internal_method_mustcompile.php' => true,
- 'smarty_internal_method_registercacheresource.php' => true,
- 'smarty_internal_method_registerclass.php' => true,
- 'smarty_internal_method_registerdefaultconfighandler.php' => true,
- 'smarty_internal_method_registerdefaultpluginhandler.php' => true,
+ 'smarty_internal_compile_private_object_function.php' => true,
+ 'smarty_internal_compile_private_php.php' => true,
+ 'smarty_internal_compile_private_print_expression.php' => true,
+ 'smarty_internal_compile_private_registered_block.php' => true,
+ 'smarty_internal_compile_private_registered_function.php' => true,
+ 'smarty_internal_compile_private_special_variable.php' => true,
+ 'smarty_internal_compile_rdelim.php' => true,
+ 'smarty_internal_compile_section.php' => true,
+ 'smarty_internal_compile_setfilter.php' => true,
+ 'smarty_internal_compile_shared_inheritance.php' => true,
+ 'smarty_internal_compile_while.php' => true,
+ 'smarty_internal_configfilelexer.php' => true,
+ 'smarty_internal_configfileparser.php' => true,
+ 'smarty_internal_config_file_compiler.php' => true,
+ 'smarty_internal_data.php' => true, 'smarty_internal_debug.php' => true,
+ 'smarty_internal_extension_handler.php' => true,
+ 'smarty_internal_method_addautoloadfilters.php' => true,
+ 'smarty_internal_method_adddefaultmodifiers.php' => true,
+ 'smarty_internal_method_append.php' => true,
+ 'smarty_internal_method_appendbyref.php' => true,
+ 'smarty_internal_method_assignbyref.php' => true,
+ 'smarty_internal_method_assignglobal.php' => true,
+ 'smarty_internal_method_clearallassign.php' => true,
+ 'smarty_internal_method_clearallcache.php' => true,
+ 'smarty_internal_method_clearassign.php' => true,
+ 'smarty_internal_method_clearcache.php' => true,
+ 'smarty_internal_method_clearcompiledtemplate.php' => true,
+ 'smarty_internal_method_clearconfig.php' => true,
+ 'smarty_internal_method_compileallconfig.php' => true,
+ 'smarty_internal_method_compilealltemplates.php' => true,
+ 'smarty_internal_method_configload.php' => true,
+ 'smarty_internal_method_createdata.php' => true,
+ 'smarty_internal_method_getautoloadfilters.php' => true,
+ 'smarty_internal_method_getconfigvariable.php' => true,
+ 'smarty_internal_method_getconfigvars.php' => true,
+ 'smarty_internal_method_getdebugtemplate.php' => true,
+ 'smarty_internal_method_getdefaultmodifiers.php' => true,
+ 'smarty_internal_method_getglobal.php' => true,
+ 'smarty_internal_method_getregisteredobject.php' => true,
+ 'smarty_internal_method_getstreamvariable.php' => true,
+ 'smarty_internal_method_gettags.php' => true,
+ 'smarty_internal_method_gettemplatevars.php' => true,
+ 'smarty_internal_method_loadfilter.php' => true,
+ 'smarty_internal_method_loadplugin.php' => true,
+ 'smarty_internal_method_mustcompile.php' => true,
+ 'smarty_internal_method_registercacheresource.php' => true,
+ 'smarty_internal_method_registerclass.php' => true,
+ 'smarty_internal_method_registerdefaultconfighandler.php' => true,
+ 'smarty_internal_method_registerdefaultpluginhandler.php' => true,
'smarty_internal_method_registerdefaulttemplatehandler.php' => true,
- 'smarty_internal_method_registerfilter.php' => true,
- 'smarty_internal_method_registerobject.php' => true,
- 'smarty_internal_method_registerplugin.php' => true,
- 'smarty_internal_method_registerresource.php' => true,
- 'smarty_internal_method_setautoloadfilters.php' => true,
- 'smarty_internal_method_setdebugtemplate.php' => true,
- 'smarty_internal_method_setdefaultmodifiers.php' => true,
- 'smarty_internal_method_unloadfilter.php' => true,
- 'smarty_internal_method_unregistercacheresource.php' => true,
- 'smarty_internal_method_unregisterfilter.php' => true,
- 'smarty_internal_method_unregisterobject.php' => true,
- 'smarty_internal_method_unregisterplugin.php' => true,
- 'smarty_internal_method_unregisterresource.php' => true,
- 'smarty_internal_nocache_insert.php' => true,
- 'smarty_internal_parsetree.php' => true,
- 'smarty_internal_parsetree_code.php' => true,
- 'smarty_internal_parsetree_dq.php' => true,
- 'smarty_internal_parsetree_dqcontent.php' => true,
- 'smarty_internal_parsetree_tag.php' => true,
- 'smarty_internal_parsetree_template.php' => true,
- 'smarty_internal_parsetree_text.php' => true,
- 'smarty_internal_resource_eval.php' => true,
- 'smarty_internal_resource_extends.php' => true,
- 'smarty_internal_resource_file.php' => true,
- 'smarty_internal_resource_php.php' => true,
- 'smarty_internal_resource_registered.php' => true,
- 'smarty_internal_resource_stream.php' => true,
- 'smarty_internal_resource_string.php' => true,
- 'smarty_internal_runtime_cachemodify.php' => true,
- 'smarty_internal_runtime_codeframe.php' => true,
- 'smarty_internal_runtime_filterhandler.php' => true,
- 'smarty_internal_runtime_foreach.php' => true,
- 'smarty_internal_runtime_getincludepath.php' => true,
- 'smarty_internal_runtime_hhvm.php' => true,
- 'smarty_internal_runtime_inheritance.php' => true,
- 'smarty_internal_runtime_subtemplate.php' => true,
- 'smarty_internal_runtime_tplfunction.php' => true,
- 'smarty_internal_runtime_updatecache.php' => true,
- 'smarty_internal_runtime_updatescope.php' => true,
- 'smarty_internal_runtime_validatecompiled.php' => true,
- 'smarty_internal_runtime_var.php' => true,
- 'smarty_internal_runtime_writefile.php' => true,
- 'smarty_internal_smartytemplatecompiler.php' => true,
- 'smarty_internal_template.php' => true,
- 'smarty_internal_templatebase.php' => true,
- 'smarty_internal_templatecompilerbase.php' => true,
- 'smarty_internal_templatelexer.php' => true,
- 'smarty_internal_templateparser.php' => true,
- 'smarty_internal_testinstall.php' => true,
- 'smarty_internal_undefined.php' => true,
- 'smarty_resource.php' => true,
- 'smarty_resource_custom.php' => true,
- 'smarty_resource_recompiled.php' => true,
- 'smarty_resource_uncompiled.php' => true,
- 'smarty_security.php' => true,
- 'smarty_template_cached.php' => true,
- 'smarty_template_compiled.php' => true,
- 'smarty_template_config.php' => true,
- 'smarty_template_resource_base.php' => true,
- 'smarty_template_source.php' => true,
- 'smarty_undefined_variable.php' => true,
- 'smarty_variable.php' => true,);
+ 'smarty_internal_method_registerfilter.php' => true,
+ 'smarty_internal_method_registerobject.php' => true,
+ 'smarty_internal_method_registerplugin.php' => true,
+ 'smarty_internal_method_registerresource.php' => true,
+ 'smarty_internal_method_setautoloadfilters.php' => true,
+ 'smarty_internal_method_setdebugtemplate.php' => true,
+ 'smarty_internal_method_setdefaultmodifiers.php' => true,
+ 'smarty_internal_method_unloadfilter.php' => true,
+ 'smarty_internal_method_unregistercacheresource.php' => true,
+ 'smarty_internal_method_unregisterfilter.php' => true,
+ 'smarty_internal_method_unregisterobject.php' => true,
+ 'smarty_internal_method_unregisterplugin.php' => true,
+ 'smarty_internal_method_unregisterresource.php' => true,
+ 'smarty_internal_nocache_insert.php' => true,
+ 'smarty_internal_parsetree.php' => true,
+ 'smarty_internal_parsetree_code.php' => true,
+ 'smarty_internal_parsetree_dq.php' => true,
+ 'smarty_internal_parsetree_dqcontent.php' => true,
+ 'smarty_internal_parsetree_tag.php' => true,
+ 'smarty_internal_parsetree_template.php' => true,
+ 'smarty_internal_parsetree_text.php' => true,
+ 'smarty_internal_resource_eval.php' => true,
+ 'smarty_internal_resource_extends.php' => true,
+ 'smarty_internal_resource_file.php' => true,
+ 'smarty_internal_resource_php.php' => true,
+ 'smarty_internal_resource_registered.php' => true,
+ 'smarty_internal_resource_stream.php' => true,
+ 'smarty_internal_resource_string.php' => true,
+ 'smarty_internal_runtime_cachemodify.php' => true,
+ 'smarty_internal_runtime_cacheresourcefile.php' => true,
+ 'smarty_internal_runtime_capture.php' => true,
+ 'smarty_internal_runtime_codeframe.php' => true,
+ 'smarty_internal_runtime_filterhandler.php' => true,
+ 'smarty_internal_runtime_foreach.php' => true,
+ 'smarty_internal_runtime_getincludepath.php' => true,
+ 'smarty_internal_runtime_inheritance.php' => true,
+ 'smarty_internal_runtime_make_nocache.php' => true,
+ 'smarty_internal_runtime_tplfunction.php' => true,
+ 'smarty_internal_runtime_updatecache.php' => true,
+ 'smarty_internal_runtime_updatescope.php' => true,
+ 'smarty_internal_runtime_writefile.php' => true,
+ 'smarty_internal_smartytemplatecompiler.php' => true,
+ 'smarty_internal_template.php' => true,
+ 'smarty_internal_templatebase.php' => true,
+ 'smarty_internal_templatecompilerbase.php' => true,
+ 'smarty_internal_templatelexer.php' => true,
+ 'smarty_internal_templateparser.php' => true,
+ 'smarty_internal_testinstall.php' => true,
+ 'smarty_internal_undefined.php' => true, 'smarty_resource.php' => true,
+ 'smarty_resource_custom.php' => true, 'smarty_resource_recompiled.php' => true,
+ 'smarty_resource_uncompiled.php' => true, 'smarty_security.php' => true,
+ 'smarty_template_cached.php' => true, 'smarty_template_compiled.php' => true,
+ 'smarty_template_config.php' => true,
+ 'smarty_template_resource_base.php' => true,
+ 'smarty_template_source.php' => true, 'smarty_undefined_variable.php' => true,
+ 'smarty_variable.php' => true,);
$iterator = new DirectoryIterator($source);
foreach ($iterator as $file) {
if (!$file->isDot()) {
@@ -540,30 +536,28 @@ class Smarty_Internal_TestInstall
$source = SMARTY_PLUGINS_DIR;
if (is_dir($source)) {
$expectedPlugins =
- array('block.textformat.php' => true, 'function.counter.php' => true,
- 'function.cycle.php' => true, 'function.fetch.php' => true,
- 'function.html_checkboxes.php' => true, 'function.html_image.php' => true,
- 'function.html_options.php' => true, 'function.html_radios.php' => true,
- 'function.html_select_date.php' => true, 'function.html_select_time.php' => true,
- 'function.html_table.php' => true, 'function.mailto.php' => true,
- 'function.math.php' => true, 'modifier.capitalize.php' => true,
- 'modifier.date_format.php' => true, 'modifier.debug_print_var.php' => true,
- 'modifier.escape.php' => true, 'modifier.regex_replace.php' => true,
- 'modifier.replace.php' => true, 'modifier.spacify.php' => true,
- 'modifier.truncate.php' => true, 'modifiercompiler.cat.php' => true,
- 'modifiercompiler.count_characters.php' => true, 'modifiercompiler.count_paragraphs.php' => true,
- 'modifiercompiler.count_sentences.php' => true, 'modifiercompiler.count_words.php' => true,
- 'modifiercompiler.default.php' => true, 'modifiercompiler.escape.php' => true,
- 'modifiercompiler.from_charset.php' => true, 'modifiercompiler.indent.php' => true,
- 'modifiercompiler.lower.php' => true, 'modifiercompiler.noprint.php' => true,
- 'modifiercompiler.string_format.php' => true, 'modifiercompiler.strip.php' => true,
- 'modifiercompiler.strip_tags.php' => true, 'modifiercompiler.to_charset.php' => true,
- 'modifiercompiler.unescape.php' => true, 'modifiercompiler.upper.php' => true,
- 'modifiercompiler.wordwrap.php' => true, 'outputfilter.trimwhitespace.php' => true,
- 'shared.escape_special_chars.php' => true, 'shared.literal_compiler_param.php' => true,
- 'shared.make_timestamp.php' => true, 'shared.mb_str_replace.php' => true,
- 'shared.mb_unicode.php' => true, 'shared.mb_wordwrap.php' => true,
- 'variablefilter.htmlspecialchars.php' => true,);
+ array('block.textformat.php' => true, 'function.counter.php' => true, 'function.cycle.php' => true,
+ 'function.fetch.php' => true, 'function.html_checkboxes.php' => true,
+ 'function.html_image.php' => true, 'function.html_options.php' => true,
+ 'function.html_radios.php' => true, 'function.html_select_date.php' => true,
+ 'function.html_select_time.php' => true, 'function.html_table.php' => true,
+ 'function.mailto.php' => true, 'function.math.php' => true, 'modifier.capitalize.php' => true,
+ 'modifier.date_format.php' => true, 'modifier.debug_print_var.php' => true,
+ 'modifier.escape.php' => true, 'modifier.regex_replace.php' => true,
+ 'modifier.replace.php' => true, 'modifier.spacify.php' => true, 'modifier.truncate.php' => true,
+ 'modifiercompiler.cat.php' => true, 'modifiercompiler.count_characters.php' => true,
+ 'modifiercompiler.count_paragraphs.php' => true, 'modifiercompiler.count_sentences.php' => true,
+ 'modifiercompiler.count_words.php' => true, 'modifiercompiler.default.php' => true,
+ 'modifiercompiler.escape.php' => true, 'modifiercompiler.from_charset.php' => true,
+ 'modifiercompiler.indent.php' => true, 'modifiercompiler.lower.php' => true,
+ 'modifiercompiler.noprint.php' => true, 'modifiercompiler.string_format.php' => true,
+ 'modifiercompiler.strip.php' => true, 'modifiercompiler.strip_tags.php' => true,
+ 'modifiercompiler.to_charset.php' => true, 'modifiercompiler.unescape.php' => true,
+ 'modifiercompiler.upper.php' => true, 'modifiercompiler.wordwrap.php' => true,
+ 'outputfilter.trimwhitespace.php' => true, 'shared.escape_special_chars.php' => true,
+ 'shared.literal_compiler_param.php' => true, 'shared.make_timestamp.php' => true,
+ 'shared.mb_str_replace.php' => true, 'shared.mb_unicode.php' => true,
+ 'shared.mb_wordwrap.php' => true, 'variablefilter.htmlspecialchars.php' => true,);
$iterator = new DirectoryIterator($source);
foreach ($iterator as $file) {
if (!$file->isDot()) {
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_undefined.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_undefined.php
new file mode 100644
index 000000000..d6f4bf62e
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_undefined.php
@@ -0,0 +1,68 @@
+<?php
+
+/**
+ * Smarty Internal Undefined
+ *
+ * Class to handle undefined method calls or calls to obsolete runtime extensions
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Undefined
+{
+
+ /**
+ * Name of undefined extension class
+ *
+ * @var string|null
+ */
+ public $class = null;
+
+ /**
+ * Smarty_Internal_Undefined constructor.
+ *
+ * @param null|string $class name of undefined extension class
+ */
+ public function __construct($class = null)
+ {
+ $this->class = $class;
+ }
+
+ /**
+ * Wrapper for obsolete class Smarty_Internal_Runtime_ValidateCompiled
+ *
+ * @param \Smarty_Internal_Template $tpl
+ * @param array $properties special template properties
+ * @param bool $cache flag if called from cache file
+ *
+ * @return bool false
+ */
+ public function decodeProperties(Smarty_Internal_Template $tpl, $properties, $cache = false)
+ {
+ if ($cache) {
+ $tpl->cached->valid = false;
+ } else {
+ $tpl->mustCompile = true;
+ }
+ return false;
+ }
+
+ /**
+ * Call error handler for undefined method
+ *
+ * @param string $name unknown method-name
+ * @param array $args argument array
+ *
+ * @return mixed
+ * @throws SmartyException
+ */
+ public function __call($name, $args)
+ {
+ if (isset($this->class)) {
+ throw new SmartyException("undefined extension class '{$this->class}'");
+ } else {
+ throw new SmartyException(get_class($args[ 0 ]) . "->{$name}() undefined method");
+ }
+ }
+} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_resource.php b/vendor/smarty/smarty/libs/sysplugins/smarty_resource.php
index 93d9fa7a3..ea673ead1 100644
--- a/library/Smarty/libs/sysplugins/smarty_resource.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_resource.php
@@ -13,6 +13,10 @@
*
* @package Smarty
* @subpackage TemplateResources
+ *
+ * @method renderUncompiled(Smarty_Template_Source $source, Smarty_Internal_Template $_template)
+ * @method populateCompiledFilepath(Smarty_Template_Compiled $compiled, Smarty_Internal_Template $_template)
+ * @method process(Smarty_Internal_Template $_smarty_tpl)
*/
abstract class Smarty_Resource
{
@@ -35,12 +39,12 @@ abstract class Smarty_Resource
*
* @var array
*/
- public static $sysplugins = array('file' => 'smarty_internal_resource_file.php',
- 'string' => 'smarty_internal_resource_string.php',
+ public static $sysplugins = array('file' => 'smarty_internal_resource_file.php',
+ 'string' => 'smarty_internal_resource_string.php',
'extends' => 'smarty_internal_resource_extends.php',
- 'stream' => 'smarty_internal_resource_stream.php',
- 'eval' => 'smarty_internal_resource_eval.php',
- 'php' => 'smarty_internal_resource_php.php');
+ 'stream' => 'smarty_internal_resource_stream.php',
+ 'eval' => 'smarty_internal_resource_eval.php',
+ 'php' => 'smarty_internal_resource_php.php');
/**
* Flag if resource does implement populateCompiledFilepath() method
@@ -50,27 +54,6 @@ abstract class Smarty_Resource
public $hasCompiledHandler = false;
/**
- * Name of the Class to compile this resource's contents with
- *
- * @var string
- */
- public $compiler_class = 'Smarty_Internal_SmartyTemplateCompiler';
-
- /**
- * Name of the Class to tokenize this resource's contents with
- *
- * @var string
- */
- public $template_lexer_class = 'Smarty_Internal_Templatelexer';
-
- /**
- * Name of the Class to parse this resource's contents with
- *
- * @var string
- */
- public $template_parser_class = 'Smarty_Internal_Templateparser';
-
- /**
* Load template's source into current template object
*
* @param Smarty_Template_Source $source source object
@@ -131,7 +114,7 @@ abstract class Smarty_Resource
*/
public function getBasename(Smarty_Template_Source $source)
{
- return null;
+ return basename(preg_replace('![^\w]+!', '_', $source->name));
}
/**
@@ -146,28 +129,28 @@ abstract class Smarty_Resource
public static function load(Smarty $smarty, $type)
{
// try smarty's cache
- if (isset($smarty->_cache['resource_handlers'][$type])) {
- return $smarty->_cache['resource_handlers'][$type];
+ if (isset($smarty->_cache[ 'resource_handlers' ][ $type ])) {
+ return $smarty->_cache[ 'resource_handlers' ][ $type ];
}
// try registered resource
- if (isset($smarty->registered_resources[$type])) {
- return $smarty->_cache['resource_handlers'][$type] =
- $smarty->registered_resources[$type] instanceof Smarty_Resource ? $smarty->registered_resources[$type] :
- new Smarty_Internal_Resource_Registered();
+ if (isset($smarty->registered_resources[ $type ])) {
+ return $smarty->_cache[ 'resource_handlers' ][ $type ] =
+ $smarty->registered_resources[ $type ] instanceof Smarty_Resource ?
+ $smarty->registered_resources[ $type ] : new Smarty_Internal_Resource_Registered();
}
// try sysplugins dir
- if (isset(self::$sysplugins[$type])) {
+ if (isset(self::$sysplugins[ $type ])) {
$_resource_class = 'Smarty_Internal_Resource_' . ucfirst($type);
- return $smarty->_cache['resource_handlers'][$type] = new $_resource_class();
+ return $smarty->_cache[ 'resource_handlers' ][ $type ] = new $_resource_class();
}
// try plugins dir
$_resource_class = 'Smarty_Resource_' . ucfirst($type);
if ($smarty->loadPlugin($_resource_class)) {
if (class_exists($_resource_class, false)) {
- return $smarty->_cache['resource_handlers'][$type] = new $_resource_class();
+ return $smarty->_cache[ 'resource_handlers' ][ $type ] = new $_resource_class();
} else {
$smarty->registerResource($type,
array("smarty_resource_{$type}_source", "smarty_resource_{$type}_timestamp",
@@ -184,7 +167,7 @@ abstract class Smarty_Resource
if (is_object($smarty->security_policy)) {
$smarty->security_policy->isTrustedStream($type);
}
- return $smarty->_cache['resource_handlers'][$type] = new Smarty_Internal_Resource_Stream();
+ return $smarty->_cache[ 'resource_handlers' ][ $type ] = new Smarty_Internal_Resource_Stream();
}
// TODO: try default_(template|config)_handler
@@ -205,8 +188,8 @@ abstract class Smarty_Resource
public static function parseResourceName($resource_name, $default_resource)
{
if (preg_match('/^([A-Za-z0-9_\-]{2,})[:]/', $resource_name, $match)) {
- $type = $match[1];
- $name = substr($resource_name, strlen($match[0]));
+ $type = $match[ 1 ];
+ $name = substr($resource_name, strlen($match[ 0 ]));
} else {
// no resource given, use default
// or single character before the colon is not a resource type, but part of the filepath
@@ -226,16 +209,16 @@ abstract class Smarty_Resource
*/
public static function getUniqueTemplateName($obj, $template_resource)
{
- $smarty = $obj->_objType == 2 ? $obj->smarty : $obj;
+ $smarty = $obj->_getSmartyObj();
list($name, $type) = self::parseResourceName($template_resource, $smarty->default_resource_type);
// TODO: optimize for Smarty's internal resource types
$resource = Smarty_Resource::load($smarty, $type);
// go relative to a given template?
- $_file_is_dotted = $name[0] == '.' && ($name[1] == '.' || $name[1] == '/');
- if ($obj->_objType == 2 && $_file_is_dotted &&
+ $_file_is_dotted = $name[ 0 ] == '.' && ($name[ 1 ] == '.' || $name[ 1 ] == '/');
+ if ($obj->_isTplObj() && $_file_is_dotted &&
($obj->source->type == 'file' || $obj->parent->source->type == 'extends')
) {
- $name = dirname($obj->source->filepath) . DS . $name;
+ $name = $smarty->_realpath(dirname($obj->parent->source->filepath) . $smarty->ds . $name);
}
return $resource->buildUniqueResourceName($smarty, $name);
}
@@ -246,7 +229,8 @@ abstract class Smarty_Resource
*
* @return bool
*/
- public function checkTimestamps() {
+ public function checkTimestamps()
+ {
return true;
}
diff --git a/library/Smarty/libs/sysplugins/smarty_resource_custom.php b/vendor/smarty/smarty/libs/sysplugins/smarty_resource_custom.php
index 619f2d6f0..619f2d6f0 100644
--- a/library/Smarty/libs/sysplugins/smarty_resource_custom.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_resource_custom.php
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_resource_recompiled.php b/vendor/smarty/smarty/libs/sysplugins/smarty_resource_recompiled.php
new file mode 100644
index 000000000..7e51d1b1d
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_resource_recompiled.php
@@ -0,0 +1,92 @@
+<?php
+/**
+ * Smarty Resource Plugin
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ * @author Rodney Rehm
+ */
+
+/**
+ * Smarty Resource Plugin
+ * Base implementation for resource plugins that don't compile cache
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ */
+abstract class Smarty_Resource_Recompiled extends Smarty_Resource
+{
+ /**
+ * Flag that it's an recompiled resource
+ *
+ * @var bool
+ */
+ public $recompiled = true;
+
+ /**
+ * Resource does implement populateCompiledFilepath() method
+ *
+ * @var bool
+ */
+ public $hasCompiledHandler = true;
+
+ /**
+ * compile template from source
+ *
+ * @param Smarty_Internal_Template $_smarty_tpl do not change variable name, is used by compiled template
+ *
+ * @throws Exception
+ */
+ public function process(Smarty_Internal_Template $_smarty_tpl)
+ {
+ $compiled = &$_smarty_tpl->compiled;
+ $compiled->file_dependency = array();
+ $compiled->includes = array();
+ $compiled->nocache_hash = null;
+ $compiled->unifunc = null;
+ $level = ob_get_level();
+ ob_start();
+ $_smarty_tpl->loadCompiler();
+ // call compiler
+ try {
+ eval("?>" . $_smarty_tpl->compiler->compileTemplate($_smarty_tpl));
+ }
+ catch (Exception $e) {
+ unset($_smarty_tpl->compiler);
+ while (ob_get_level() > $level) {
+ ob_end_clean();
+ }
+ throw $e;
+ }
+ // release compiler object to free memory
+ unset($_smarty_tpl->compiler);
+ ob_get_clean();
+ $compiled->timestamp = time();
+ $compiled->exists = true;
+ }
+
+ /**
+ * populate Compiled Object with compiled filepath
+ *
+ * @param Smarty_Template_Compiled $compiled compiled object
+ * @param Smarty_Internal_Template $_template template object
+ *
+ * @return void
+ */
+ public function populateCompiledFilepath(Smarty_Template_Compiled $compiled, Smarty_Internal_Template $_template)
+ {
+ $compiled->filepath = false;
+ $compiled->timestamp = false;
+ $compiled->exists = false;
+ }
+
+ /*
+ * Disable timestamp checks for recompiled resource.
+ *
+ * @return bool
+ */
+ public function checkTimestamps()
+ {
+ return false;
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_resource_uncompiled.php b/vendor/smarty/smarty/libs/sysplugins/smarty_resource_uncompiled.php
new file mode 100644
index 000000000..554f3aea3
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_resource_uncompiled.php
@@ -0,0 +1,49 @@
+<?php
+/**
+ * Smarty Resource Plugin
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ * @author Rodney Rehm
+ */
+
+/**
+ * Smarty Resource Plugin
+ * Base implementation for resource plugins that don't use the compiler
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ */
+abstract class Smarty_Resource_Uncompiled extends Smarty_Resource
+{
+ /**
+ * Flag that it's an uncompiled resource
+ *
+ * @var bool
+ */
+ public $uncompiled = true;
+
+ /**
+ * Resource does implement populateCompiledFilepath() method
+ *
+ * @var bool
+ */
+ public $hasCompiledHandler = true;
+
+ /**
+ * populate compiled object with compiled filepath
+ *
+ * @param Smarty_Template_Compiled $compiled compiled object
+ * @param Smarty_Internal_Template $_template template object
+ */
+ public function populateCompiledFilepath(Smarty_Template_Compiled $compiled, Smarty_Internal_Template $_template)
+ {
+ $compiled->filepath = $_template->source->filepath;
+ $compiled->timestamp = $_template->source->timestamp;
+ $compiled->exists = $_template->source->exists;
+ if ($_template->smarty->merge_compiled_includes || $_template->source->handler->checkTimestamps()) {
+ $compiled->file_dependency[ $_template->source->uid ] =
+ array($compiled->filepath, $compiled->timestamp, $_template->source->type,);
+ }
+ }
+}
diff --git a/library/Smarty/libs/sysplugins/smarty_security.php b/vendor/smarty/smarty/libs/sysplugins/smarty_security.php
index 9d48bcb21..4f75f7529 100644
--- a/library/Smarty/libs/sysplugins/smarty_security.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_security.php
@@ -258,6 +258,8 @@ class Smarty_Security
public function __construct($smarty)
{
$this->smarty = $smarty;
+ $this->smarty->_cache[ 'template_dir_new' ] = true;
+ $this->smarty->_cache[ 'config_dir_new' ] = true;
}
/**
@@ -316,25 +318,25 @@ class Smarty_Security
*/
public function isTrustedStaticClassAccess($class_name, $params, $compiler)
{
- if (!isset($params[2])) {
+ if (!isset($params[ 2 ])) {
// fall back
return $this->isTrustedStaticClass($class_name, $compiler);
}
- if ($params[2] == 'method') {
+ if ($params[ 2 ] == 'method') {
$allowed = $this->trusted_static_methods;
- $name = substr($params[0], 0, strpos($params[0], '('));
+ $name = substr($params[ 0 ], 0, strpos($params[ 0 ], '('));
} else {
$allowed = $this->trusted_static_properties;
// strip '$'
- $name = substr($params[0], 1);
+ $name = substr($params[ 0 ], 1);
}
if (isset($allowed)) {
if (empty($allowed)) {
// fall back
return $this->isTrustedStaticClass($class_name, $compiler);
}
- if (isset($allowed[$class_name]) &&
- (empty($allowed[$class_name]) || in_array($name, $allowed[$class_name]))
+ if (isset($allowed[ $class_name ]) &&
+ (empty($allowed[ $class_name ]) || in_array($name, $allowed[ $class_name ]))
) {
return true;
}
@@ -377,11 +379,11 @@ class Smarty_Security
public function isTrustedTag($tag_name, $compiler)
{
// check for internal always required tags
- if (in_array($tag_name, array('assign', 'call', 'private_filter', 'private_block_plugin',
- 'private_function_plugin', 'private_object_block_function',
- 'private_object_function', 'private_registered_function',
- 'private_registered_block', 'private_special_variable',
- 'private_print_expression', 'private_modifier'))) {
+ if (in_array($tag_name,
+ array('assign', 'call', 'private_filter', 'private_block_plugin', 'private_function_plugin',
+ 'private_object_block_function', 'private_object_function', 'private_registered_function',
+ 'private_registered_block', 'private_special_variable', 'private_print_expression',
+ 'private_modifier'))) {
return true;
}
// check security settings
@@ -414,7 +416,8 @@ class Smarty_Security
if (!in_array($var_name, $this->disabled_special_smarty_vars)) {
return true;
} else {
- $compiler->trigger_template_error("special variable '\$smarty.{$var_name}' not allowed by security setting", null, true);
+ $compiler->trigger_template_error("special variable '\$smarty.{$var_name}' not allowed by security setting",
+ null, true);
}
return false; // should not, but who knows what happens to the compiler in the future?
@@ -440,14 +443,16 @@ class Smarty_Security
if (empty($this->disabled_modifiers) || !in_array($modifier_name, $this->disabled_modifiers)) {
return true;
} else {
- $compiler->trigger_template_error("modifier '{$modifier_name}' disabled by security setting", null, true);
+ $compiler->trigger_template_error("modifier '{$modifier_name}' disabled by security setting", null,
+ true);
}
} elseif (in_array($modifier_name, $this->allowed_modifiers) &&
- !in_array($modifier_name, $this->disabled_modifiers)
+ !in_array($modifier_name, $this->disabled_modifiers)
) {
return true;
} else {
- $compiler->trigger_template_error("modifier '{$modifier_name}' not allowed by security setting", null, true);
+ $compiler->trigger_template_error("modifier '{$modifier_name}' not allowed by security setting", null,
+ true);
}
return false; // should not, but who knows what happens to the compiler in the future?
@@ -467,7 +472,7 @@ class Smarty_Security
return true;
}
if (!empty($this->trusted_constants)) {
- if (!in_array($const, $this->trusted_constants)) {
+ if (!in_array(strtolower($const), $this->trusted_constants)) {
$compiler->trigger_template_error("Security: access to constant '{$const}' not permitted");
return false;
}
@@ -510,55 +515,55 @@ class Smarty_Security
{
if ($this->_include_path_status !== $this->smarty->use_include_path) {
foreach ($this->_include_dir as $directory) {
- unset($this->_resource_dir[$directory]);
+ unset($this->_resource_dir[ $directory ]);
}
if ($this->smarty->use_include_path) {
$this->_include_dir = array();
$_dirs = $this->smarty->ext->_getIncludePath->getIncludePathDirs($this->smarty);
foreach ($_dirs as $directory) {
$this->_include_dir[] = $directory;
- $this->_resource_dir[$directory] = true;
+ $this->_resource_dir[ $directory ] = true;
}
}
$this->_include_path_status = $this->smarty->use_include_path;
}
if ($isConfig !== true &&
- (!isset($this->smarty->_cache['template_dir_new']) || $this->smarty->_cache['template_dir_new'])
+ (!isset($this->smarty->_cache[ 'template_dir_new' ]) || $this->smarty->_cache[ 'template_dir_new' ])
) {
$_dir = $this->smarty->getTemplateDir();
if ($this->_template_dir !== $_dir) {
foreach ($this->_template_dir as $directory) {
- unset($this->_resource_dir[$directory]);
+ unset($this->_resource_dir[ $directory ]);
}
foreach ($_dir as $directory) {
- $this->_resource_dir[$directory] = true;
+ $this->_resource_dir[ $directory ] = true;
}
$this->_template_dir = $_dir;
}
- $this->smarty->_cache['template_dir_new'] = false;
+ $this->smarty->_cache[ 'template_dir_new' ] = false;
}
if ($isConfig !== false &&
- (!isset($this->smarty->_cache['config_dir_new']) || $this->smarty->_cache['config_dir_new'])
+ (!isset($this->smarty->_cache[ 'config_dir_new' ]) || $this->smarty->_cache[ 'config_dir_new' ])
) {
$_dir = $this->smarty->getConfigDir();
if ($this->_config_dir !== $_dir) {
foreach ($this->_config_dir as $directory) {
- unset($this->_resource_dir[$directory]);
+ unset($this->_resource_dir[ $directory ]);
}
foreach ($_dir as $directory) {
- $this->_resource_dir[$directory] = true;
+ $this->_resource_dir[ $directory ] = true;
}
$this->_config_dir = $_dir;
}
- $this->smarty->_cache['config_dir_new'] = false;
+ $this->smarty->_cache[ 'config_dir_new' ] = false;
}
if ($this->_secure_dir !== (array) $this->secure_dir) {
foreach ($this->_secure_dir as $directory) {
- unset($this->_resource_dir[$directory]);
+ unset($this->_resource_dir[ $directory ]);
}
foreach ((array) $this->secure_dir as $directory) {
- $directory = $this->smarty->_realpath($directory . DS, true);
- $this->_resource_dir[$directory] = true;
+ $directory = $this->smarty->_realpath($directory . DIRECTORY_SEPARATOR, true);
+ $this->_resource_dir[ $directory ] = true;
}
$this->_secure_dir = (array) $this->secure_dir;
}
@@ -581,8 +586,8 @@ class Smarty_Security
public function isTrustedUri($uri)
{
$_uri = parse_url($uri);
- if (!empty($_uri['scheme']) && !empty($_uri['host'])) {
- $_uri = $_uri['scheme'] . '://' . $_uri['host'];
+ if (!empty($_uri[ 'scheme' ]) && !empty($_uri[ 'host' ])) {
+ $_uri = $_uri[ 'scheme' ] . '://' . $_uri[ 'host' ];
foreach ($this->trusted_uri as $pattern) {
if (preg_match($pattern, $_uri)) {
return true;
@@ -613,41 +618,16 @@ class Smarty_Security
$this->_trusted_dir = $this->trusted_dir;
foreach ((array) $this->trusted_dir as $directory) {
- $directory = $this->smarty->_realpath($directory . DS, true);
- $this->_php_resource_dir[$directory] = true;
+ $directory = $this->smarty->_realpath($directory . DIRECTORY_SEPARATOR, true);
+ $this->_php_resource_dir[ $directory ] = true;
}
}
- $this->_php_resource_dir = $this->_checkDir($this->smarty->_realpath($filepath, true), $this->_php_resource_dir);
+ $this->_php_resource_dir =
+ $this->_checkDir($this->smarty->_realpath($filepath, true), $this->_php_resource_dir);
return true;
}
-
- /**
- * Start template processing
- *
- * @param $template
- *
- * @throws SmartyException
- */
- public function startTemplate($template)
- {
- if ($this->max_template_nesting > 0 && $this->_current_template_nesting ++ >= $this->max_template_nesting) {
- throw new SmartyException("maximum template nesting level of '{$this->max_template_nesting}' exceeded when calling '{$template->template_resource}'");
- }
- }
-
- /**
- * Exit template processing
- *
- * @internal param $template
- */
- public function exitTemplate()
- {
- if ($this->max_template_nesting > 0) {
- $this->_current_template_nesting --;
- }
- }
-
+
/**
* Check if file is inside a valid directory
*
@@ -659,13 +639,13 @@ class Smarty_Security
*/
private function _checkDir($filepath, $dirs)
{
- $directory = dirname($filepath) . DS;
+ $directory = dirname($filepath) . DIRECTORY_SEPARATOR;
$_directory = array();
while (true) {
// remember the directory to add it to _resource_dir in case we're successful
- $_directory[$directory] = true;
+ $_directory[ $directory ] = true;
// test if the directory is trusted
- if (isset($dirs[$directory])) {
+ if (isset($dirs[ $directory ])) {
// merge sub directories of current $directory into _resource_dir to speed up subsequent lookup
$dirs = array_merge($dirs, $_directory);
@@ -676,7 +656,7 @@ class Smarty_Security
break;
}
// bubble up one level
- $directory = preg_replace('#[\\\/][^\\\/]+[\\\/]$#', DS, $directory);
+ $directory = preg_replace('#[\\\/][^\\\/]+[\\\/]$#', DIRECTORY_SEPARATOR, $directory);
}
// give up
@@ -712,4 +692,39 @@ class Smarty_Security
}
return;
}
+ /**
+ * Start template processing
+ *
+ * @param $template
+ *
+ * @throws SmartyException
+ */
+ public function startTemplate($template)
+ {
+ if ($this->max_template_nesting > 0 && $this->_current_template_nesting ++ >= $this->max_template_nesting) {
+ throw new SmartyException("maximum template nesting level of '{$this->max_template_nesting}' exceeded when calling '{$template->template_resource}'");
+ }
+ }
+
+ /**
+ * Exit template processing
+ *
+ */
+ public function endTemplate()
+ {
+ if ($this->max_template_nesting > 0) {
+ $this->_current_template_nesting --;
+ }
+ }
+
+ /**
+ * Register callback functions call at start/end of template rendering
+ *
+ * @param \Smarty_Internal_Template $template
+ */
+ public function registerCallBacks(Smarty_Internal_Template $template)
+ {
+ $template->startRenderCallbacks[] = array($this, 'startTemplate');
+ $template->endRenderCallbacks[] = array($this, 'endTemplate');
+ }
}
diff --git a/library/Smarty/libs/sysplugins/smarty_template_cached.php b/vendor/smarty/smarty/libs/sysplugins/smarty_template_cached.php
index cecf42986..58f0daf28 100644
--- a/library/Smarty/libs/sysplugins/smarty_template_cached.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_template_cached.php
@@ -73,6 +73,13 @@ class Smarty_Template_Cached extends Smarty_Template_Resource_Base
public $hashes = array();
/**
+ * Flag if this is a cache resource
+ *
+ * @var bool
+ */
+ public $isCache = true;
+
+ /**
* create Cached Object container
*
* @param Smarty_Internal_Template $_template template object
@@ -99,7 +106,7 @@ class Smarty_Template_Cached extends Smarty_Template_Resource_Base
$_template->cached->handler->populate($_template->cached, $_template);
// caching enabled ?
if (!($_template->caching == Smarty::CACHING_LIFETIME_CURRENT ||
- $_template->caching == Smarty::CACHING_LIFETIME_SAVED) || $_template->source->handler->recompiled
+ $_template->caching == Smarty::CACHING_LIFETIME_SAVED) || $_template->source->handler->recompiled
) {
$_template->cached->valid = false;
}
@@ -118,6 +125,9 @@ class Smarty_Template_Cached extends Smarty_Template_Resource_Base
{
if ($this->isCached($_template)) {
if ($_template->smarty->debugging) {
+ if (!isset($_template->smarty->_debug)) {
+ $_template->smarty->_debug = new Smarty_Internal_Debug();
+ }
$_template->smarty->_debug->start_cache($_template);
}
if (!$this->processed) {
@@ -234,7 +244,7 @@ class Smarty_Template_Cached extends Smarty_Template_Resource_Base
*
* @param Smarty_Internal_Template $_template template object
*
- * @return string content
+ * @return string|false content
*/
public function read(Smarty_Internal_Template $_template)
{
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_template_compiled.php b/vendor/smarty/smarty/libs/sysplugins/smarty_template_compiled.php
new file mode 100644
index 000000000..18f9d562c
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_template_compiled.php
@@ -0,0 +1,255 @@
+<?php
+
+/**
+ * Smarty Resource Data Object
+ * Meta Data Container for Template Files
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ * @author Rodney Rehm
+ * @property string $content compiled content
+ */
+class Smarty_Template_Compiled extends Smarty_Template_Resource_Base
+{
+
+ /**
+ * nocache hash
+ *
+ * @var string|null
+ */
+ public $nocache_hash = null;
+
+ /**
+ * get a Compiled Object of this source
+ *
+ * @param Smarty_Internal_Template $_template template object
+ *
+ * @return Smarty_Template_Compiled compiled object
+ */
+ static function load($_template)
+ {
+ $compiled = new Smarty_Template_Compiled();
+ if ($_template->source->handler->hasCompiledHandler) {
+ $_template->source->handler->populateCompiledFilepath($compiled, $_template);
+ } else {
+ $compiled->populateCompiledFilepath($_template);
+ }
+ return $compiled;
+ }
+
+ /**
+ * populate Compiled Object with compiled filepath
+ *
+ * @param Smarty_Internal_Template $_template template object
+ **/
+ public function populateCompiledFilepath(Smarty_Internal_Template $_template)
+ {
+ $source = &$_template->source;
+ $smarty = &$_template->smarty;
+ $this->filepath = $smarty->getCompileDir();
+ if (isset($_template->compile_id)) {
+ $this->filepath .= preg_replace('![^\w]+!', '_', $_template->compile_id) .
+ ($smarty->use_sub_dirs ? $smarty->ds : '^');
+ }
+ // if use_sub_dirs, break file into directories
+ if ($smarty->use_sub_dirs) {
+ $this->filepath .= $source->uid[ 0 ] . $source->uid[ 1 ] . $smarty->ds . $source->uid[ 2 ] .
+ $source->uid[ 3 ] . $smarty->ds . $source->uid[ 4 ] . $source->uid[ 5 ] . $smarty->ds;
+ }
+ $this->filepath .= $source->uid . '_';
+ if ($source->isConfig) {
+ $this->filepath .= (int) $smarty->config_read_hidden + (int) $smarty->config_booleanize * 2 +
+ (int) $smarty->config_overwrite * 4;
+ } else {
+ $this->filepath .= (int) $smarty->merge_compiled_includes + (int) $smarty->escape_html * 2 +
+ (($smarty->merge_compiled_includes && $source->type === 'extends') ?
+ (int) $smarty->extends_recursion * 4 : 0);
+ }
+ $this->filepath .= '.' . $source->type;
+ $basename = $source->handler->getBasename($source);
+ if (!empty($basename)) {
+ $this->filepath .= '.' . $basename;
+ }
+ if ($_template->caching) {
+ $this->filepath .= '.cache';
+ }
+ $this->filepath .= '.php';
+ $this->timestamp = $this->exists = is_file($this->filepath);
+ if ($this->exists) {
+ $this->timestamp = filemtime($this->filepath);
+ }
+ }
+
+ /**
+ * load compiled template or compile from source
+ *
+ * @param Smarty_Internal_Template $_smarty_tpl do not change variable name, is used by compiled template
+ *
+ * @throws Exception
+ */
+ public function process(Smarty_Internal_Template $_smarty_tpl)
+ {
+ $source = &$_smarty_tpl->source;
+ $smarty = &$_smarty_tpl->smarty;
+ if ($source->handler->recompiled) {
+ $source->handler->process($_smarty_tpl);
+ } elseif (!$source->handler->uncompiled) {
+ if (!$this->exists || $smarty->force_compile ||
+ ($smarty->compile_check && $source->getTimeStamp() > $this->getTimeStamp())
+ ) {
+ $this->compileTemplateSource($_smarty_tpl);
+ $compileCheck = $smarty->compile_check;
+ $smarty->compile_check = false;
+ $this->loadCompiledTemplate($_smarty_tpl);
+ $smarty->compile_check = $compileCheck;
+ } else {
+ $_smarty_tpl->mustCompile = true;
+ @include($this->filepath);
+ if ($_smarty_tpl->mustCompile) {
+ $this->compileTemplateSource($_smarty_tpl);
+ $compileCheck = $smarty->compile_check;
+ $smarty->compile_check = false;
+ $this->loadCompiledTemplate($_smarty_tpl);
+ $smarty->compile_check = $compileCheck;
+ }
+ }
+ $_smarty_tpl->_subTemplateRegister();
+ $this->processed = true;
+ }
+ }
+
+ /**
+ * Load fresh compiled template by including the PHP file
+ * HHVM requires a work around because of a PHP incompatibility
+ *
+ * @param \Smarty_Internal_Template $_smarty_tpl do not change variable name, is used by compiled template
+ */
+ private function loadCompiledTemplate(Smarty_Internal_Template $_smarty_tpl)
+ {
+ if (function_exists('opcache_invalidate') && strlen(ini_get("opcache.restrict_api")) < 1) {
+ opcache_invalidate($this->filepath, true);
+ } elseif (function_exists('apc_compile_file')) {
+ apc_compile_file($this->filepath);
+ }
+ if (defined('HHVM_VERSION')) {
+ eval("?>" . file_get_contents($this->filepath));
+ } else {
+ include($this->filepath);
+ }
+ }
+
+ /**
+ * render compiled template code
+ *
+ * @param Smarty_Internal_Template $_template
+ *
+ * @return string
+ * @throws Exception
+ */
+ public function render(Smarty_Internal_Template $_template)
+ {
+ // checks if template exists
+ if (!$_template->source->exists) {
+ $type = $_template->source->isConfig ? 'config' : 'template';
+ throw new SmartyException("Unable to load {$type} '{$_template->source->type}:{$_template->source->name}'");
+ }
+ if ($_template->smarty->debugging) {
+ if (!isset($_template->smarty->_debug)) {
+ $_template->smarty->_debug = new Smarty_Internal_Debug();
+ }
+ $_template->smarty->_debug->start_render($_template);
+ }
+ if (!$this->processed) {
+ $this->process($_template);
+ }
+ if (isset($_template->cached)) {
+ $_template->cached->file_dependency =
+ array_merge($_template->cached->file_dependency, $this->file_dependency);
+ }
+ if ($_template->source->handler->uncompiled) {
+ $_template->source->handler->renderUncompiled($_template->source, $_template);
+ } else {
+ $this->getRenderedTemplateCode($_template);
+ }
+ if ($_template->caching && $this->has_nocache_code) {
+ $_template->cached->hashes[ $this->nocache_hash ] = true;
+ }
+ if ($_template->smarty->debugging) {
+ $_template->smarty->_debug->end_render($_template);
+ }
+ }
+
+ /**
+ * compile template from source
+ *
+ * @param Smarty_Internal_Template $_template
+ *
+ * @throws Exception
+ */
+ public function compileTemplateSource(Smarty_Internal_Template $_template)
+ {
+ $this->file_dependency = array();
+ $this->includes = array();
+ $this->nocache_hash = null;
+ $this->unifunc = null;
+ // compile locking
+ $saved_timestamp = $_template->source->handler->recompiled ? false : $this->getTimeStamp();
+ if ($saved_timestamp) {
+ touch($this->filepath);
+ }
+ // compile locking
+ try {
+ // call compiler
+ $_template->loadCompiler();
+ $this->write($_template, $_template->compiler->compileTemplate($_template));
+ }
+ catch (Exception $e) {
+ // restore old timestamp in case of error
+ if ($saved_timestamp) {
+ touch($this->filepath, $saved_timestamp);
+ }
+ unset($_template->compiler);
+ throw $e;
+ }
+ // release compiler object to free memory
+ unset($_template->compiler);
+ }
+
+ /**
+ * Write compiled code by handler
+ *
+ * @param Smarty_Internal_Template $_template template object
+ * @param string $code compiled code
+ *
+ * @return boolean success
+ */
+ public function write(Smarty_Internal_Template $_template, $code)
+ {
+ if (!$_template->source->handler->recompiled) {
+ if ($_template->smarty->ext->_writeFile->writeFile($this->filepath, $code, $_template->smarty) === true) {
+ $this->timestamp = $this->exists = is_file($this->filepath);
+ if ($this->exists) {
+ $this->timestamp = filemtime($this->filepath);
+ return true;
+ }
+ }
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Read compiled content from handler
+ *
+ * @param Smarty_Internal_Template $_template template object
+ *
+ * @return string content
+ */
+ public function read(Smarty_Internal_Template $_template)
+ {
+ if (!$_template->source->handler->recompiled) {
+ return file_get_contents($this->filepath);
+ }
+ return isset($this->content) ? $this->content : false;
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_template_config.php b/vendor/smarty/smarty/libs/sysplugins/smarty_template_config.php
new file mode 100644
index 000000000..44cdba6fd
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_template_config.php
@@ -0,0 +1,99 @@
+<?php
+/**
+ * Smarty Config Source Plugin
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Config Resource Data Object
+ * Meta Data Container for Template Files
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ * @author Uwe Tews
+ *
+ */
+class Smarty_Template_Config extends Smarty_Template_Source
+{
+ /**
+ * array of section names, single section or null
+ *
+ * @var null|string|array
+ */
+ public $config_sections = null;
+
+ /**
+ * scope into which the config variables shall be loaded
+ *
+ * @var int
+ */
+ public $scope = 0;
+
+ /**
+ * Flag that source is a config file
+ *
+ * @var bool
+ */
+ public $isConfig = true;
+
+ /**
+ * Name of the Class to compile this resource's contents with
+ *
+ * @var string
+ */
+ public $compiler_class = 'Smarty_Internal_Config_File_Compiler';
+
+ /**
+ * Name of the Class to tokenize this resource's contents with
+ *
+ * @var string
+ */
+ public $template_lexer_class = 'Smarty_Internal_Configfilelexer';
+
+ /**
+ * Name of the Class to parse this resource's contents with
+ *
+ * @var string
+ */
+ public $template_parser_class = 'Smarty_Internal_Configfileparser';
+
+ /**
+ * initialize Source Object for given resource
+ * Either [$_template] or [$smarty, $template_resource] must be specified
+ *
+ * @param Smarty_Internal_Template $_template template object
+ * @param Smarty $smarty smarty object
+ * @param string $template_resource resource identifier
+ *
+ * @return Smarty_Template_Config Source Object
+ * @throws SmartyException
+ */
+ public static function load(Smarty_Internal_Template $_template = null, Smarty $smarty = null,
+ $template_resource = null)
+ {
+ static $_incompatible_resources = array('extends' => true, 'php' => true);
+ if ($_template) {
+ $smarty = $_template->smarty;
+ $template_resource = $_template->template_resource;
+ }
+ if (empty($template_resource)) {
+ throw new SmartyException('Source: Missing name');
+ }
+ // parse resource_name, load resource handler
+ list($name, $type) = Smarty_Resource::parseResourceName($template_resource, $smarty->default_config_type);
+ // make sure configs are not loaded via anything smarty can't handle
+ if (isset($_incompatible_resources[ $type ])) {
+ throw new SmartyException ("Unable to use resource '{$type}' for config");
+ }
+ $source = new Smarty_Template_Config($smarty, $template_resource, $type, $name);
+ $source->handler->populate($source, $_template);
+ if (!$source->exists && isset($smarty->default_config_handler_func)) {
+ Smarty_Internal_Method_RegisterDefaultTemplateHandler::_getDefaultTemplate($source);
+ $source->handler->populate($source, $_template);
+ }
+ return $source;
+ }
+}
diff --git a/library/Smarty/libs/sysplugins/smarty_template_resource_base.php b/vendor/smarty/smarty/libs/sysplugins/smarty_template_resource_base.php
index 0911feb8d..6cc008a10 100644
--- a/library/Smarty/libs/sysplugins/smarty_template_resource_base.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_template_resource_base.php
@@ -19,9 +19,9 @@ abstract class Smarty_Template_Resource_Base
/**
* Compiled Timestamp
*
- * @var integer
+ * @var integer|bool
*/
- public $timestamp = null;
+ public $timestamp = false;
/**
* Compiled Existence
@@ -87,54 +87,57 @@ abstract class Smarty_Template_Resource_Base
public $includes = array();
/**
+ * Flag if this is a cache resource
+ *
+ * @var bool
+ */
+ public $isCache = false;
+
+ /**
* Process resource
*
* @param Smarty_Internal_Template $_template template object
*/
abstract public function process(Smarty_Internal_Template $_template);
- /**
+ /**
* get rendered template content by calling compiled or cached template code
*
- * @param string $unifunc function with template code
+ * @param \Smarty_Internal_Template $_template
+ * @param string $unifunc function with template code
*
- * @return string
* @throws \Exception
*/
public function getRenderedTemplateCode(Smarty_Internal_Template $_template, $unifunc = null)
{
- $unifunc = isset($unifunc) ? $unifunc : $this->unifunc;
+ $smarty = &$_template->smarty;
+ $_template->isRenderingCache = $this->isCache;
$level = ob_get_level();
try {
- if (empty($unifunc) || !is_callable($unifunc)) {
- throw new SmartyException("Invalid compiled template for '{$_template->template_resource}'");
+ if (!isset($unifunc)) {
+ $unifunc = $this->unifunc;
}
- if (isset($_template->smarty->security_policy)) {
- $_template->smarty->security_policy->startTemplate($_template);
+ if (empty($unifunc) || !function_exists($unifunc)) {
+ throw new SmartyException("Invalid compiled template for '{$_template->template_resource}'");
}
- //
- // render compiled or saved template code
- //
- if (!isset($_template->_cache['capture_stack'])) {
- $_template->_cache['capture_stack'] = array();
+ if ($_template->startRenderCallbacks) {
+ foreach ($_template->startRenderCallbacks as $callback) {
+ call_user_func($callback, $_template);
+ }
}
- $_saved_capture_level = count($_template->_cache['capture_stack']);
$unifunc($_template);
- // any unclosed {capture} tags ?
- if ($_saved_capture_level != count($_template->_cache['capture_stack'])) {
- $_template->capture_error();
- }
- if (isset($_template->smarty->security_policy)) {
- $_template->smarty->security_policy->exitTemplate();
+ foreach ($_template->endRenderCallbacks as $callback) {
+ call_user_func($callback, $_template);
}
- return null;
+ $_template->isRenderingCache = false;
}
catch (Exception $e) {
+ $_template->isRenderingCache = false;
while (ob_get_level() > $level) {
ob_end_clean();
}
- if (isset($_template->smarty->security_policy)) {
- $_template->smarty->security_policy->exitTemplate();
+ if (isset($smarty->security_policy)) {
+ $smarty->security_policy->endTemplate();
}
throw $e;
}
@@ -147,8 +150,8 @@ abstract class Smarty_Template_Resource_Base
*/
public function getTimeStamp()
{
- if ($this->exists && !isset($this->timestamp)) {
- $this->timestamp = @filemtime($this->filepath);
+ if ($this->exists && !$this->timestamp) {
+ $this->timestamp = filemtime($this->filepath);
}
return $this->timestamp;
}
diff --git a/library/Smarty/libs/sysplugins/smarty_template_source.php b/vendor/smarty/smarty/libs/sysplugins/smarty_template_source.php
index be5b62809..fdb3deaa8 100644
--- a/library/Smarty/libs/sysplugins/smarty_template_source.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_template_source.php
@@ -40,13 +40,6 @@ class Smarty_Template_Source
public $name = null;
/**
- * Unique Resource Name
- *
- * @var string
- */
- public $unique_resource = null;
-
- /**
* Source Filepath
*
* @var string
@@ -103,18 +96,32 @@ class Smarty_Template_Source
public $isConfig = false;
/**
- * cache for Smarty_Template_Compiled instances
+ * Template source content eventually set by default handler
*
- * @var Smarty_Template_Compiled[]
+ * @var string
*/
- public $compileds = array();
+ public $content = null;
/**
- * Template source content eventually set by default handler
+ * Name of the Class to compile this resource's contents with
*
* @var string
*/
- public $content = null;
+ public $compiler_class = 'Smarty_Internal_SmartyTemplateCompiler';
+
+ /**
+ * Name of the Class to tokenize this resource's contents with
+ *
+ * @var string
+ */
+ public $template_lexer_class = 'Smarty_Internal_Templatelexer';
+
+ /**
+ * Name of the Class to parse this resource's contents with
+ *
+ * @var string
+ */
+ public $template_parser_class = 'Smarty_Internal_Templateparser';
/**
* create Source Object container
@@ -126,9 +133,11 @@ class Smarty_Template_Source
* @param string $name resource name
*
*/
- public function __construct(Smarty_Resource $handler, Smarty $smarty, $resource, $type, $name)
+ public function __construct(Smarty $smarty, $resource, $type, $name)
{
- $this->handler = $handler; // Note: prone to circular references
+ $this->handler =
+ isset($smarty->_cache[ 'resource_handlers' ][ $type ]) ? $smarty->_cache[ 'resource_handlers' ][ $type ] :
+ Smarty_Resource::load($smarty, $type);
$this->smarty = $smarty;
$this->resource = $resource;
$this->type = $type;
@@ -154,95 +163,29 @@ class Smarty_Template_Source
$template_resource = $_template->template_resource;
}
if (empty($template_resource)) {
- throw new SmartyException('Missing template name');
+ throw new SmartyException('Source: Missing name');
}
// parse resource_name, load resource handler, identify unique resource name
if (preg_match('/^([A-Za-z0-9_\-]{2,})[:]([\s\S]*)$/', $template_resource, $match)) {
- $type = $match[1];
- $name = $match[2];
+ $type = $match[ 1 ];
+ $name = $match[ 2 ];
} else {
// no resource given, use default
// or single character before the colon is not a resource type, but part of the filepath
$type = $smarty->default_resource_type;
$name = $template_resource;
}
-
- $handler = isset($smarty->_cache['resource_handlers'][$type]) ?
- $smarty->_cache['resource_handlers'][$type] :
- Smarty_Resource::load($smarty, $type);
- // if resource is not recompiling and resource name is not dotted we can check the source cache
- if (($smarty->resource_cache_mode & Smarty::RESOURCE_CACHE_ON) && !$handler->recompiled &&
- !(isset($name[1]) && $name[0] == '.' && ($name[1] == '.' || $name[1] == '/'))
- ) {
- $unique_resource = $handler->buildUniqueResourceName($smarty, $name);
- if (isset($smarty->_cache['source_objects'][$unique_resource])) {
- return $smarty->_cache['source_objects'][$unique_resource];
- }
- } else {
- $unique_resource = null;
- }
// create new source object
- $source = new Smarty_Template_Source($handler, $smarty, $template_resource, $type, $name);
- $handler->populate($source, $_template);
+ $source = new Smarty_Template_Source($smarty, $template_resource, $type, $name);
+ $source->handler->populate($source, $_template);
if (!$source->exists && isset($_template->smarty->default_template_handler_func)) {
Smarty_Internal_Method_RegisterDefaultTemplateHandler::_getDefaultTemplate($source);
- }
- // on recompiling resources we are done
- if (($smarty->resource_cache_mode & Smarty::RESOURCE_CACHE_ON) && !$handler->recompiled) {
- // may by we have already $unique_resource
- $is_relative = false;
- if (!isset($unique_resource)) {
- $is_relative = isset($name[1]) && $name[0] == '.' && ($name[1] == '.' || $name[1] == '/') &&
- ($type == 'file' ||
- (isset($_template->parent->source) && $_template->parent->source->type == 'extends'));
- $unique_resource =
- $handler->buildUniqueResourceName($smarty, $is_relative ? $source->filepath . $name : $name);
- }
- $source->unique_resource = $unique_resource;
- // save in runtime cache if not relative
- if (!$is_relative) {
- $smarty->_cache['source_objects'][$unique_resource] = $source;
- }
+ $source->handler->populate($source, $_template);
}
return $source;
}
/**
- * render the uncompiled source
- *
- * @param Smarty_Internal_Template $_template template object
- *
- * @return string
- * @throws \Exception
- */
- public function renderUncompiled(Smarty_Internal_Template $_template)
- {
- $this->handler->renderUncompiled($_template->source, $_template);
- }
-
- /**
- * Render uncompiled source
- *
- * @param \Smarty_Internal_Template $_template
- */
- public function render(Smarty_Internal_Template $_template)
- {
- if ($_template->source->handler->uncompiled) {
- if ($_template->smarty->debugging) {
- $_template->smarty->_debug->start_render($_template);
- }
- $this->handler->renderUncompiled($_template->source, $_template);
- if (isset($_template->parent) && $_template->parent->_objType == 2 && !empty($_template->tpl_function)) {
- $_template->parent->tpl_function =
- array_merge($_template->parent->tpl_function, $_template->tpl_function);
- }
- if ($_template->smarty->debugging) {
- $_template->smarty->_debug->end_render($_template);
- }
- }
- }
-
- /**
* Get source time stamp
*
* @return int
diff --git a/library/Smarty/libs/sysplugins/smarty_undefined_variable.php b/vendor/smarty/smarty/libs/sysplugins/smarty_undefined_variable.php
index 88bc6f68c..88bc6f68c 100644
--- a/library/Smarty/libs/sysplugins/smarty_undefined_variable.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_undefined_variable.php
diff --git a/library/Smarty/libs/sysplugins/smarty_variable.php b/vendor/smarty/smarty/libs/sysplugins/smarty_variable.php
index a6504b18f..0b17bc7cf 100644
--- a/library/Smarty/libs/sysplugins/smarty_variable.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_variable.php
@@ -15,6 +15,7 @@ class Smarty_Variable
* @var mixed
*/
public $value = null;
+
/**
* if true any output of this variable will be not cached
*
diff --git a/library/Smarty/libs/sysplugins/smartycompilerexception.php b/vendor/smarty/smarty/libs/sysplugins/smartycompilerexception.php
index 4d5d77875..763bab159 100644
--- a/library/Smarty/libs/sysplugins/smartycompilerexception.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smartycompilerexception.php
@@ -18,18 +18,21 @@ class SmartyCompilerException extends SmartyException
* @type int|null
*/
public $line = null;
+
/**
* The template source snippet relating to the error
*
* @type string|null
*/
public $source = null;
+
/**
* The raw text of the error message
*
* @type string|null
*/
public $desc = null;
+
/**
* The resource identifier or template name
*
diff --git a/library/Smarty/libs/sysplugins/smartyexception.php b/vendor/smarty/smarty/libs/sysplugins/smartyexception.php
index 3da16c276..431d8f8e9 100644
--- a/library/Smarty/libs/sysplugins/smartyexception.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smartyexception.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Smarty exception class
*
diff --git a/view/de/hmessages.po b/view/de/hmessages.po
index 85fb8ca4e..e7c962bbd 100644
--- a/view/de/hmessages.po
+++ b/view/de/hmessages.po
@@ -25,8 +25,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Redmatrix\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-19 12:01+0200\n"
-"PO-Revision-Date: 2017-10-21 11:21+0000\n"
+"POT-Creation-Date: 2017-12-13 12:54+0100\n"
+"PO-Revision-Date: 2017-12-19 11:56+0000\n"
"Last-Translator: Phellmes <forum@suschka.de>\n"
"Language-Team: German (http://www.transifex.com/Friendica/red-matrix/language/de/)\n"
"MIME-Version: 1.0\n"
@@ -35,168 +35,169 @@ msgstr ""
"Language: de\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../../Zotlabs/Access/Permissions.php:53
+#: ../../Zotlabs/Access/Permissions.php:56
msgid "Can view my channel stream and posts"
msgstr "Kann meinen Kanal-Stream und meine Beiträge sehen"
-#: ../../Zotlabs/Access/Permissions.php:54
+#: ../../Zotlabs/Access/Permissions.php:57
msgid "Can send me their channel stream and posts"
msgstr "Kann mir die Beiträge aus seinem/ihrem Kanal schicken"
-#: ../../Zotlabs/Access/Permissions.php:55
+#: ../../Zotlabs/Access/Permissions.php:58
msgid "Can view my default channel profile"
msgstr "Kann mein Standardprofil sehen"
-#: ../../Zotlabs/Access/Permissions.php:56
+#: ../../Zotlabs/Access/Permissions.php:59
msgid "Can view my connections"
msgstr "Kann meine Verbindungen sehen"
-#: ../../Zotlabs/Access/Permissions.php:57
+#: ../../Zotlabs/Access/Permissions.php:60
msgid "Can view my file storage and photos"
msgstr "Kann meine Datei- und Bilderordner sehen"
-#: ../../Zotlabs/Access/Permissions.php:58
+#: ../../Zotlabs/Access/Permissions.php:61
msgid "Can upload/modify my file storage and photos"
msgstr "Kann in meine Datei- und Bilderordner hochladen/ändern"
-#: ../../Zotlabs/Access/Permissions.php:59
+#: ../../Zotlabs/Access/Permissions.php:62
msgid "Can view my channel webpages"
msgstr "Kann die Webseiten meines Kanals sehen"
-#: ../../Zotlabs/Access/Permissions.php:60
+#: ../../Zotlabs/Access/Permissions.php:63
msgid "Can view my wiki pages"
msgstr "Kann meine Wiki-Seiten sehen"
-#: ../../Zotlabs/Access/Permissions.php:61
+#: ../../Zotlabs/Access/Permissions.php:64
msgid "Can create/edit my channel webpages"
msgstr "Kann Webseiten in meinem Kanal erstellen/ändern"
-#: ../../Zotlabs/Access/Permissions.php:62
+#: ../../Zotlabs/Access/Permissions.php:65
msgid "Can write to my wiki pages"
msgstr "Kann meine Wiki-Seiten bearbeiten"
-#: ../../Zotlabs/Access/Permissions.php:63
+#: ../../Zotlabs/Access/Permissions.php:66
msgid "Can post on my channel (wall) page"
msgstr "Kann auf meiner Kanal-Seite (\"wall\") Beiträge veröffentlichen"
-#: ../../Zotlabs/Access/Permissions.php:64
+#: ../../Zotlabs/Access/Permissions.php:67
msgid "Can comment on or like my posts"
msgstr "Darf meine Beiträge kommentieren und mögen/nicht mögen"
-#: ../../Zotlabs/Access/Permissions.php:65
+#: ../../Zotlabs/Access/Permissions.php:68
msgid "Can send me private mail messages"
msgstr "Kann mir private Nachrichten schicken"
-#: ../../Zotlabs/Access/Permissions.php:66
+#: ../../Zotlabs/Access/Permissions.php:69
msgid "Can like/dislike profiles and profile things"
msgstr "Kann Profile und Profilsachen mögen/nicht mögen"
-#: ../../Zotlabs/Access/Permissions.php:67
+#: ../../Zotlabs/Access/Permissions.php:70
msgid "Can forward to all my channel connections via @+ mentions in posts"
msgstr "Kann an alle meine Verbindungen via @-Erwähnungen Nachrichten weiterleiten"
-#: ../../Zotlabs/Access/Permissions.php:68
+#: ../../Zotlabs/Access/Permissions.php:71
msgid "Can chat with me"
msgstr "Kann mit mir chatten"
-#: ../../Zotlabs/Access/Permissions.php:69
+#: ../../Zotlabs/Access/Permissions.php:72
msgid "Can source my public posts in derived channels"
msgstr "Kann meine öffentlichen Beiträge als Quellen für Kanäle verwenden"
-#: ../../Zotlabs/Access/Permissions.php:70
+#: ../../Zotlabs/Access/Permissions.php:73
msgid "Can administer my channel"
msgstr "Kann meinen Kanal administrieren"
-#: ../../Zotlabs/Access/PermissionRoles.php:248
+#: ../../Zotlabs/Access/PermissionRoles.php:265
msgid "Social Networking"
msgstr "Soziales Netzwerk"
-#: ../../Zotlabs/Access/PermissionRoles.php:249
+#: ../../Zotlabs/Access/PermissionRoles.php:266
msgid "Social - Mostly Public"
msgstr "Soziales Netzwerk - Weitgehend öffentlich"
-#: ../../Zotlabs/Access/PermissionRoles.php:250
+#: ../../Zotlabs/Access/PermissionRoles.php:267
msgid "Social - Restricted"
msgstr "Soziales Netzwerk - Beschränkt"
-#: ../../Zotlabs/Access/PermissionRoles.php:251
+#: ../../Zotlabs/Access/PermissionRoles.php:268
msgid "Social - Private"
msgstr "Soziales Netzwerk - Privat"
-#: ../../Zotlabs/Access/PermissionRoles.php:254
+#: ../../Zotlabs/Access/PermissionRoles.php:271
msgid "Community Forum"
msgstr "Forum"
-#: ../../Zotlabs/Access/PermissionRoles.php:255
+#: ../../Zotlabs/Access/PermissionRoles.php:272
msgid "Forum - Mostly Public"
msgstr "Forum - Weitgehend öffentlich"
-#: ../../Zotlabs/Access/PermissionRoles.php:256
+#: ../../Zotlabs/Access/PermissionRoles.php:273
msgid "Forum - Restricted"
msgstr "Forum - Beschränkt"
-#: ../../Zotlabs/Access/PermissionRoles.php:257
+#: ../../Zotlabs/Access/PermissionRoles.php:274
msgid "Forum - Private"
msgstr "Forum - Privat"
-#: ../../Zotlabs/Access/PermissionRoles.php:260
+#: ../../Zotlabs/Access/PermissionRoles.php:277
msgid "Feed Republish"
msgstr "Teilen von Feeds"
-#: ../../Zotlabs/Access/PermissionRoles.php:261
+#: ../../Zotlabs/Access/PermissionRoles.php:278
msgid "Feed - Mostly Public"
msgstr "Feeds - Weitgehend öffentlich"
-#: ../../Zotlabs/Access/PermissionRoles.php:262
+#: ../../Zotlabs/Access/PermissionRoles.php:279
msgid "Feed - Restricted"
msgstr "Feeds - Beschränkt"
-#: ../../Zotlabs/Access/PermissionRoles.php:265
+#: ../../Zotlabs/Access/PermissionRoles.php:282
msgid "Special Purpose"
msgstr "Für besondere Zwecke"
-#: ../../Zotlabs/Access/PermissionRoles.php:266
+#: ../../Zotlabs/Access/PermissionRoles.php:283
msgid "Special - Celebrity/Soapbox"
msgstr "Speziell - Mitteilungs-Kanal (keine Kommentare)"
-#: ../../Zotlabs/Access/PermissionRoles.php:267
+#: ../../Zotlabs/Access/PermissionRoles.php:284
msgid "Special - Group Repository"
msgstr "Speziell - Gruppenarchiv"
-#: ../../Zotlabs/Access/PermissionRoles.php:270
+#: ../../Zotlabs/Access/PermissionRoles.php:287
#: ../../Zotlabs/Module/Cdav.php:1182 ../../Zotlabs/Module/New_channel.php:132
-#: ../../Zotlabs/Module/Settings/Channel.php:467
+#: ../../Zotlabs/Module/Settings/Channel.php:474
#: ../../Zotlabs/Module/Connedit.php:936 ../../Zotlabs/Module/Profiles.php:798
-#: ../../Zotlabs/Module/Register.php:213 ../../include/selectors.php:49
+#: ../../Zotlabs/Module/Register.php:221 ../../include/selectors.php:49
#: ../../include/selectors.php:66 ../../include/selectors.php:104
-#: ../../include/selectors.php:140 ../../include/event.php:1297
-#: ../../include/event.php:1304 ../../include/connections.php:689
+#: ../../include/selectors.php:140 ../../include/event.php:1308
+#: ../../include/event.php:1315 ../../include/connections.php:689
#: ../../include/connections.php:696
msgid "Other"
msgstr "Andere"
-#: ../../Zotlabs/Access/PermissionRoles.php:271
+#: ../../Zotlabs/Access/PermissionRoles.php:288
msgid "Custom/Expert Mode"
msgstr "Benutzerdefiniert/Expertenmodus"
-#: ../../Zotlabs/Module/Blocks.php:33 ../../Zotlabs/Module/Editlayout.php:31
-#: ../../Zotlabs/Module/Connect.php:17
+#: ../../Zotlabs/Module/Blocks.php:33 ../../Zotlabs/Module/Articles.php:29
+#: ../../Zotlabs/Module/Editlayout.php:31 ../../Zotlabs/Module/Connect.php:17
#: ../../Zotlabs/Module/Achievements.php:15 ../../Zotlabs/Module/Hcard.php:12
#: ../../Zotlabs/Module/Editblock.php:31 ../../Zotlabs/Module/Profile.php:20
#: ../../Zotlabs/Module/Layouts.php:31 ../../Zotlabs/Module/Editwebpage.php:32
#: ../../Zotlabs/Module/Cards.php:29 ../../Zotlabs/Module/Webpages.php:33
-#: ../../Zotlabs/Module/Filestorage.php:51 ../../include/channel.php:1163
+#: ../../Zotlabs/Module/Filestorage.php:51 ../../include/channel.php:1198
msgid "Requested profile is not available."
msgstr "Das angefragte Profil ist nicht verfügbar."
#: ../../Zotlabs/Module/Blocks.php:73 ../../Zotlabs/Module/Blocks.php:80
#: ../../Zotlabs/Module/Invite.php:17 ../../Zotlabs/Module/Invite.php:94
-#: ../../Zotlabs/Module/Editlayout.php:67
+#: ../../Zotlabs/Module/Articles.php:68 ../../Zotlabs/Module/Editlayout.php:67
#: ../../Zotlabs/Module/Editlayout.php:90 ../../Zotlabs/Module/Channel.php:110
#: ../../Zotlabs/Module/Channel.php:248 ../../Zotlabs/Module/Channel.php:288
#: ../../Zotlabs/Module/Settings.php:59 ../../Zotlabs/Module/Locs.php:87
#: ../../Zotlabs/Module/Mitem.php:115 ../../Zotlabs/Module/Events.php:271
-#: ../../Zotlabs/Module/Appman.php:82 ../../Zotlabs/Module/Regmod.php:21
+#: ../../Zotlabs/Module/Appman.php:86 ../../Zotlabs/Module/Regmod.php:21
+#: ../../Zotlabs/Module/Article_edit.php:51
#: ../../Zotlabs/Module/New_channel.php:77
#: ../../Zotlabs/Module/New_channel.php:104
#: ../../Zotlabs/Module/Sharedwithme.php:16 ../../Zotlabs/Module/Setup.php:209
@@ -208,19 +209,19 @@ msgstr "Das angefragte Profil ist nicht verfügbar."
#: ../../Zotlabs/Module/Mood.php:116 ../../Zotlabs/Module/Connections.php:29
#: ../../Zotlabs/Module/Viewsrc.php:19 ../../Zotlabs/Module/Bookmarks.php:64
#: ../../Zotlabs/Module/Photos.php:69 ../../Zotlabs/Module/Wiki.php:50
-#: ../../Zotlabs/Module/Wiki.php:273 ../../Zotlabs/Module/Wiki.php:388
+#: ../../Zotlabs/Module/Wiki.php:273 ../../Zotlabs/Module/Wiki.php:400
#: ../../Zotlabs/Module/Pdledit.php:29 ../../Zotlabs/Module/Poke.php:149
-#: ../../Zotlabs/Module/Profile_photo.php:288
-#: ../../Zotlabs/Module/Profile_photo.php:301
-#: ../../Zotlabs/Module/Authtest.php:16 ../../Zotlabs/Module/Item.php:223
-#: ../../Zotlabs/Module/Item.php:240 ../../Zotlabs/Module/Item.php:250
-#: ../../Zotlabs/Module/Item.php:1102 ../../Zotlabs/Module/Page.php:34
-#: ../../Zotlabs/Module/Page.php:125 ../../Zotlabs/Module/Connedit.php:389
+#: ../../Zotlabs/Module/Profile_photo.php:294
+#: ../../Zotlabs/Module/Profile_photo.php:307
+#: ../../Zotlabs/Module/Authtest.php:16 ../../Zotlabs/Module/Item.php:228
+#: ../../Zotlabs/Module/Item.php:245 ../../Zotlabs/Module/Item.php:255
+#: ../../Zotlabs/Module/Item.php:1085 ../../Zotlabs/Module/Page.php:34
+#: ../../Zotlabs/Module/Page.php:133 ../../Zotlabs/Module/Connedit.php:389
#: ../../Zotlabs/Module/Chat.php:100 ../../Zotlabs/Module/Chat.php:105
#: ../../Zotlabs/Module/Menu.php:78 ../../Zotlabs/Module/Layouts.php:71
#: ../../Zotlabs/Module/Layouts.php:78 ../../Zotlabs/Module/Layouts.php:89
-#: ../../Zotlabs/Module/Group.php:13 ../../Zotlabs/Module/Profiles.php:198
-#: ../../Zotlabs/Module/Profiles.php:635
+#: ../../Zotlabs/Module/Defperms.php:173 ../../Zotlabs/Module/Group.php:13
+#: ../../Zotlabs/Module/Profiles.php:198 ../../Zotlabs/Module/Profiles.php:635
#: ../../Zotlabs/Module/Editwebpage.php:68
#: ../../Zotlabs/Module/Editwebpage.php:89
#: ../../Zotlabs/Module/Editwebpage.php:107
@@ -228,32 +229,32 @@ msgstr "Das angefragte Profil ist nicht verfügbar."
#: ../../Zotlabs/Module/Cards.php:68 ../../Zotlabs/Module/Webpages.php:118
#: ../../Zotlabs/Module/Block.php:24 ../../Zotlabs/Module/Block.php:74
#: ../../Zotlabs/Module/Editpost.php:17 ../../Zotlabs/Module/Sources.php:74
-#: ../../Zotlabs/Module/Like.php:181 ../../Zotlabs/Module/Suggest.php:28
+#: ../../Zotlabs/Module/Like.php:184 ../../Zotlabs/Module/Suggest.php:28
#: ../../Zotlabs/Module/Message.php:18 ../../Zotlabs/Module/Mail.php:146
#: ../../Zotlabs/Module/Register.php:77
#: ../../Zotlabs/Module/Cover_photo.php:281
#: ../../Zotlabs/Module/Cover_photo.php:294
-#: ../../Zotlabs/Module/Display.php:343 ../../Zotlabs/Module/Network.php:15
+#: ../../Zotlabs/Module/Display.php:404 ../../Zotlabs/Module/Network.php:15
#: ../../Zotlabs/Module/Filestorage.php:15
#: ../../Zotlabs/Module/Filestorage.php:70
#: ../../Zotlabs/Module/Filestorage.php:85
-#: ../../Zotlabs/Module/Filestorage.php:112 ../../Zotlabs/Module/Common.php:38
+#: ../../Zotlabs/Module/Filestorage.php:117 ../../Zotlabs/Module/Common.php:38
#: ../../Zotlabs/Module/Viewconnections.php:28
#: ../../Zotlabs/Module/Viewconnections.php:33
#: ../../Zotlabs/Module/Service_limits.php:11
#: ../../Zotlabs/Module/Rate.php:113 ../../Zotlabs/Module/Card_edit.php:51
#: ../../Zotlabs/Module/Notifications.php:11
-#: ../../Zotlabs/Lib/Chatroom.php:137 ../../Zotlabs/Web/WebServer.php:169
+#: ../../Zotlabs/Lib/Chatroom.php:133 ../../Zotlabs/Web/WebServer.php:169
#: ../../addon/keepout/keepout.php:36 ../../addon/openid/Mod_Id.php:53
#: ../../addon/gitwiki/Mod_Gitwiki.php:196
#: ../../addon/gitwiki/Mod_Gitwiki.php:292 ../../addon/pumpio/pumpio.php:40
-#: ../../include/attach.php:144 ../../include/attach.php:191
-#: ../../include/attach.php:255 ../../include/attach.php:269
-#: ../../include/attach.php:276 ../../include/attach.php:344
-#: ../../include/attach.php:358 ../../include/attach.php:365
-#: ../../include/attach.php:443 ../../include/attach.php:924
-#: ../../include/attach.php:998 ../../include/attach.php:1163
-#: ../../include/items.php:3489 ../../include/photos.php:28
+#: ../../include/attach.php:150 ../../include/attach.php:197
+#: ../../include/attach.php:270 ../../include/attach.php:284
+#: ../../include/attach.php:293 ../../include/attach.php:366
+#: ../../include/attach.php:380 ../../include/attach.php:387
+#: ../../include/attach.php:469 ../../include/attach.php:1008
+#: ../../include/attach.php:1082 ../../include/attach.php:1247
+#: ../../include/items.php:3633 ../../include/photos.php:27
msgid "Permission denied."
msgstr "Berechtigung verweigert."
@@ -280,58 +281,60 @@ msgstr "Erstellt"
msgid "Edited"
msgstr "Geändert"
-#: ../../Zotlabs/Module/Blocks.php:159 ../../Zotlabs/Module/Cdav.php:1185
-#: ../../Zotlabs/Module/New_channel.php:147
+#: ../../Zotlabs/Module/Blocks.php:159 ../../Zotlabs/Module/Articles.php:96
+#: ../../Zotlabs/Module/Cdav.php:1185 ../../Zotlabs/Module/New_channel.php:147
#: ../../Zotlabs/Module/Connedit.php:939 ../../Zotlabs/Module/Menu.php:118
#: ../../Zotlabs/Module/Layouts.php:185 ../../Zotlabs/Module/Profiles.php:801
#: ../../Zotlabs/Module/Cards.php:96 ../../Zotlabs/Module/Webpages.php:239
-#: ../../Zotlabs/Storage/Browser.php:229 ../../Zotlabs/Storage/Browser.php:335
-#: ../../Zotlabs/Widget/Cdav.php:127 ../../Zotlabs/Widget/Cdav.php:164
+#: ../../Zotlabs/Storage/Browser.php:273 ../../Zotlabs/Storage/Browser.php:379
+#: ../../Zotlabs/Widget/Cdav.php:128 ../../Zotlabs/Widget/Cdav.php:165
msgid "Create"
msgstr "Erstelle"
#: ../../Zotlabs/Module/Blocks.php:160 ../../Zotlabs/Module/Editlayout.php:114
+#: ../../Zotlabs/Module/Article_edit.php:99
#: ../../Zotlabs/Module/Admin/Profs.php:154
#: ../../Zotlabs/Module/Settings/Oauth.php:149
#: ../../Zotlabs/Module/Thing.php:261 ../../Zotlabs/Module/Editblock.php:114
#: ../../Zotlabs/Module/Connections.php:260
#: ../../Zotlabs/Module/Connections.php:297
#: ../../Zotlabs/Module/Connections.php:317 ../../Zotlabs/Module/Wiki.php:202
-#: ../../Zotlabs/Module/Wiki.php:346 ../../Zotlabs/Module/Menu.php:112
+#: ../../Zotlabs/Module/Wiki.php:358 ../../Zotlabs/Module/Menu.php:112
#: ../../Zotlabs/Module/Layouts.php:193
#: ../../Zotlabs/Module/Editwebpage.php:142
#: ../../Zotlabs/Module/Webpages.php:240 ../../Zotlabs/Module/Editpost.php:85
#: ../../Zotlabs/Module/Card_edit.php:99 ../../Zotlabs/Lib/Apps.php:399
-#: ../../Zotlabs/Lib/ThreadItem.php:111 ../../Zotlabs/Storage/Browser.php:239
-#: ../../Zotlabs/Widget/Cdav.php:125 ../../Zotlabs/Widget/Cdav.php:161
+#: ../../Zotlabs/Lib/ThreadItem.php:121 ../../Zotlabs/Storage/Browser.php:285
+#: ../../Zotlabs/Widget/Cdav.php:126 ../../Zotlabs/Widget/Cdav.php:162
#: ../../addon/gitwiki/Mod_Gitwiki.php:151
-#: ../../addon/gitwiki/Mod_Gitwiki.php:252 ../../include/channel.php:1262
-#: ../../include/channel.php:1266 ../../include/menu.php:113
+#: ../../addon/gitwiki/Mod_Gitwiki.php:252 ../../include/channel.php:1297
+#: ../../include/channel.php:1301 ../../include/menu.php:113
msgid "Edit"
msgstr "Bearbeiten"
-#: ../../Zotlabs/Module/Blocks.php:161 ../../Zotlabs/Module/Photos.php:1049
+#: ../../Zotlabs/Module/Blocks.php:161 ../../Zotlabs/Module/Photos.php:1102
#: ../../Zotlabs/Module/Layouts.php:194 ../../Zotlabs/Module/Webpages.php:241
-#: ../../Zotlabs/Widget/Cdav.php:123 ../../include/conversation.php:1346
+#: ../../Zotlabs/Widget/Cdav.php:124 ../../include/conversation.php:1363
msgid "Share"
msgstr "Teilen"
#: ../../Zotlabs/Module/Blocks.php:162 ../../Zotlabs/Module/Editlayout.php:138
#: ../../Zotlabs/Module/Cdav.php:897 ../../Zotlabs/Module/Cdav.php:1187
+#: ../../Zotlabs/Module/Article_edit.php:129
#: ../../Zotlabs/Module/Admin/Accounts.php:173
#: ../../Zotlabs/Module/Admin/Channels.php:149
#: ../../Zotlabs/Module/Admin/Profs.php:155
#: ../../Zotlabs/Module/Settings/Oauth.php:150
#: ../../Zotlabs/Module/Thing.php:262 ../../Zotlabs/Module/Editblock.php:139
#: ../../Zotlabs/Module/Connections.php:268
-#: ../../Zotlabs/Module/Photos.php:1150 ../../Zotlabs/Module/Connedit.php:654
+#: ../../Zotlabs/Module/Photos.php:1203 ../../Zotlabs/Module/Connedit.php:654
#: ../../Zotlabs/Module/Connedit.php:941 ../../Zotlabs/Module/Group.php:179
#: ../../Zotlabs/Module/Profiles.php:803
#: ../../Zotlabs/Module/Editwebpage.php:167
#: ../../Zotlabs/Module/Webpages.php:242
#: ../../Zotlabs/Module/Card_edit.php:129 ../../Zotlabs/Lib/Apps.php:400
-#: ../../Zotlabs/Lib/ThreadItem.php:131 ../../Zotlabs/Storage/Browser.php:240
-#: ../../include/conversation.php:674 ../../include/conversation.php:717
+#: ../../Zotlabs/Lib/ThreadItem.php:141 ../../Zotlabs/Storage/Browser.php:286
+#: ../../include/conversation.php:690 ../../include/conversation.php:733
msgid "Delete"
msgstr "Löschen"
@@ -414,7 +417,7 @@ msgstr "3. Klicke auf [Verbinden]"
#: ../../Zotlabs/Module/Invite.php:151 ../../Zotlabs/Module/Locs.php:121
#: ../../Zotlabs/Module/Mitem.php:243 ../../Zotlabs/Module/Events.php:493
-#: ../../Zotlabs/Module/Appman.php:148
+#: ../../Zotlabs/Module/Appman.php:152
#: ../../Zotlabs/Module/Import_items.php:129
#: ../../Zotlabs/Module/Setup.php:308 ../../Zotlabs/Module/Setup.php:349
#: ../../Zotlabs/Module/Connect.php:98
@@ -424,59 +427,60 @@ msgstr "3. Klicke auf [Verbinden]"
#: ../../Zotlabs/Module/Admin/Logs.php:84
#: ../../Zotlabs/Module/Admin/Channels.php:147
#: ../../Zotlabs/Module/Admin/Themes.php:158
-#: ../../Zotlabs/Module/Admin/Site.php:273
+#: ../../Zotlabs/Module/Admin/Site.php:277
#: ../../Zotlabs/Module/Admin/Profs.php:157
#: ../../Zotlabs/Module/Admin/Account_edit.php:74
#: ../../Zotlabs/Module/Admin/Security.php:104
#: ../../Zotlabs/Module/Settings/Permcats.php:110
-#: ../../Zotlabs/Module/Settings/Channel.php:480
+#: ../../Zotlabs/Module/Settings/Channel.php:489
#: ../../Zotlabs/Module/Settings/Features.php:47
#: ../../Zotlabs/Module/Settings/Tokens.php:168
#: ../../Zotlabs/Module/Settings/Account.php:118
#: ../../Zotlabs/Module/Settings/Featured.php:52
-#: ../../Zotlabs/Module/Settings/Display.php:207
+#: ../../Zotlabs/Module/Settings/Display.php:209
#: ../../Zotlabs/Module/Settings/Oauth.php:87
#: ../../Zotlabs/Module/Thing.php:321 ../../Zotlabs/Module/Thing.php:374
-#: ../../Zotlabs/Module/Import.php:529 ../../Zotlabs/Module/Cal.php:343
-#: ../../Zotlabs/Module/Mood.php:139 ../../Zotlabs/Module/Photos.php:659
-#: ../../Zotlabs/Module/Photos.php:1029 ../../Zotlabs/Module/Photos.php:1069
-#: ../../Zotlabs/Module/Photos.php:1187 ../../Zotlabs/Module/Wiki.php:206
-#: ../../Zotlabs/Module/Pdledit.php:94 ../../Zotlabs/Module/Poke.php:200
-#: ../../Zotlabs/Module/Connedit.php:904 ../../Zotlabs/Module/Chat.php:196
-#: ../../Zotlabs/Module/Chat.php:242 ../../Zotlabs/Module/Pconfig.php:107
+#: ../../Zotlabs/Module/Import.php:529 ../../Zotlabs/Module/Cal.php:345
+#: ../../Zotlabs/Module/Mood.php:139 ../../Zotlabs/Module/Photos.php:1082
+#: ../../Zotlabs/Module/Photos.php:1122 ../../Zotlabs/Module/Photos.php:1240
+#: ../../Zotlabs/Module/Wiki.php:206 ../../Zotlabs/Module/Pdledit.php:98
+#: ../../Zotlabs/Module/Poke.php:200 ../../Zotlabs/Module/Connedit.php:904
+#: ../../Zotlabs/Module/Chat.php:196 ../../Zotlabs/Module/Chat.php:242
+#: ../../Zotlabs/Module/Pconfig.php:107 ../../Zotlabs/Module/Defperms.php:249
#: ../../Zotlabs/Module/Group.php:87 ../../Zotlabs/Module/Profiles.php:726
#: ../../Zotlabs/Module/Sources.php:114 ../../Zotlabs/Module/Sources.php:149
#: ../../Zotlabs/Module/Xchan.php:15 ../../Zotlabs/Module/Mail.php:431
-#: ../../Zotlabs/Module/Filestorage.php:155 ../../Zotlabs/Module/Rate.php:166
-#: ../../Zotlabs/Lib/ThreadItem.php:743
+#: ../../Zotlabs/Module/Filestorage.php:160 ../../Zotlabs/Module/Rate.php:166
+#: ../../Zotlabs/Lib/ThreadItem.php:754
#: ../../Zotlabs/Widget/Eventstools.php:16
-#: ../../Zotlabs/Widget/Wiki_pages.php:61
+#: ../../Zotlabs/Widget/Wiki_pages.php:40
+#: ../../Zotlabs/Widget/Wiki_pages.php:97
#: ../../view/theme/redbasic_c/php/config.php:95
#: ../../view/theme/redbasic/php/config.php:93
-#: ../../addon/skeleton/skeleton.php:65 ../../addon/gnusoc/gnusoc.php:269
+#: ../../addon/skeleton/skeleton.php:65 ../../addon/gnusoc/gnusoc.php:273
#: ../../addon/planets/planets.php:153
#: ../../addon/openclipatar/openclipatar.php:53
#: ../../addon/wppost/wppost.php:113 ../../addon/nsfw/nsfw.php:92
#: ../../addon/ijpost/ijpost.php:89 ../../addon/dwpost/dwpost.php:89
-#: ../../addon/mailhost/mailhost.php:40
#: ../../addon/likebanner/likebanner.php:57
#: ../../addon/redphotos/redphotos.php:136 ../../addon/irc/irc.php:53
#: ../../addon/ljpost/ljpost.php:86 ../../addon/startpage/startpage.php:113
-#: ../../addon/diaspora/diaspora.php:807
+#: ../../addon/diaspora/diaspora.php:816
#: ../../addon/gitwiki/Mod_Gitwiki.php:155
-#: ../../addon/rainbowtag/rainbowtag.php:85 ../../addon/visage/visage.php:170
-#: ../../addon/nsabait/nsabait.php:161 ../../addon/mailtest/mailtest.php:100
+#: ../../addon/rainbowtag/rainbowtag.php:85 ../../addon/hzfiles/hzfiles.php:84
+#: ../../addon/visage/visage.php:170 ../../addon/nsabait/nsabait.php:161
+#: ../../addon/mailtest/mailtest.php:100
#: ../../addon/openstreetmap/openstreetmap.php:168
#: ../../addon/rtof/rtof.php:101 ../../addon/jappixmini/jappixmini.php:371
#: ../../addon/superblock/superblock.php:120 ../../addon/nofed/nofed.php:80
#: ../../addon/redred/redred.php:119 ../../addon/logrot/logrot.php:35
-#: ../../addon/frphotos/frphotos.php:96 ../../addon/pubcrawl/pubcrawl.php:1049
+#: ../../addon/frphotos/frphotos.php:96 ../../addon/pubcrawl/pubcrawl.php:1053
#: ../../addon/chords/Mod_Chords.php:60 ../../addon/libertree/libertree.php:85
#: ../../addon/flattrwidget/flattrwidget.php:124
#: ../../addon/statusnet/statusnet.php:322
#: ../../addon/statusnet/statusnet.php:380
#: ../../addon/statusnet/statusnet.php:432
-#: ../../addon/statusnet/statusnet.php:899 ../../addon/twitter/twitter.php:217
+#: ../../addon/statusnet/statusnet.php:900 ../../addon/twitter/twitter.php:217
#: ../../addon/twitter/twitter.php:259
#: ../../addon/smileybutton/smileybutton.php:219
#: ../../addon/piwik/piwik.php:95 ../../addon/pageheader/pageheader.php:48
@@ -486,7 +490,24 @@ msgstr "3. Klicke auf [Verbinden]"
msgid "Submit"
msgstr "Absenden"
+#: ../../Zotlabs/Module/Articles.php:38 ../../Zotlabs/Module/Cards.php:38
+#: ../../Zotlabs/Module/Cards.php:178 ../../Zotlabs/Lib/Apps.php:224
+#: ../../include/conversation.php:1890 ../../include/features.php:122
+#: ../../include/nav.php:490
+msgid "Cards"
+msgstr "Karten"
+
+#: ../../Zotlabs/Module/Articles.php:95
+msgid "Add Article"
+msgstr "Artikel hinzufügen"
+
+#: ../../Zotlabs/Module/Articles.php:178 ../../include/nav.php:501
+msgid "Articles"
+msgstr "Artikel"
+
#: ../../Zotlabs/Module/Editlayout.php:79
+#: ../../Zotlabs/Module/Article_edit.php:17
+#: ../../Zotlabs/Module/Article_edit.php:33
#: ../../Zotlabs/Module/Editblock.php:79 ../../Zotlabs/Module/Editblock.php:95
#: ../../Zotlabs/Module/Editwebpage.php:80
#: ../../Zotlabs/Module/Editpost.php:24 ../../Zotlabs/Module/Card_edit.php:17
@@ -508,13 +529,14 @@ msgstr "Layout-Beschreibung (optional)"
msgid "Edit Layout"
msgstr "Layout bearbeiten"
-#: ../../Zotlabs/Module/Profperm.php:28 ../../Zotlabs/Module/Subthread.php:62
-#: ../../Zotlabs/Module/Import_items.php:120 ../../Zotlabs/Module/Group.php:74
+#: ../../Zotlabs/Module/Profperm.php:28 ../../Zotlabs/Module/Subthread.php:86
+#: ../../Zotlabs/Module/Import_items.php:120
+#: ../../Zotlabs/Module/Cloud.php:111 ../../Zotlabs/Module/Group.php:74
#: ../../Zotlabs/Module/Dreport.php:10 ../../Zotlabs/Module/Dreport.php:68
-#: ../../Zotlabs/Module/Like.php:283 ../../Zotlabs/Web/WebServer.php:168
-#: ../../addon/redphotos/redphotos.php:119
+#: ../../Zotlabs/Module/Like.php:295 ../../Zotlabs/Web/WebServer.php:168
+#: ../../addon/redphotos/redphotos.php:119 ../../addon/hzfiles/hzfiles.php:73
#: ../../addon/frphotos/frphotos.php:81 ../../addon/redfiles/redfiles.php:109
-#: ../../include/items.php:346
+#: ../../include/items.php:358
msgid "Permission denied"
msgstr "Keine Berechtigung"
@@ -526,7 +548,7 @@ msgstr "Ungültiger Profil-Identifikator"
msgid "Profile Visibility Editor"
msgstr "Profil-Sichtbarkeits-Editor"
-#: ../../Zotlabs/Module/Profperm.php:113 ../../include/channel.php:1585
+#: ../../Zotlabs/Module/Profperm.php:113 ../../include/channel.php:1633
msgid "Profile"
msgstr "Profil"
@@ -553,11 +575,11 @@ msgstr "Zusammenfassung:"
#: ../../Zotlabs/Module/Cdav.php:786 ../../Zotlabs/Module/Cdav.php:787
#: ../../Zotlabs/Module/Cdav.php:794 ../../Zotlabs/Module/Embedphotos.php:146
-#: ../../Zotlabs/Module/Photos.php:764 ../../Zotlabs/Module/Photos.php:1220
-#: ../../Zotlabs/Lib/Apps.php:727 ../../Zotlabs/Lib/Apps.php:805
-#: ../../Zotlabs/Storage/Browser.php:164 ../../Zotlabs/Widget/Portfolio.php:86
-#: ../../Zotlabs/Widget/Album.php:84 ../../addon/pubcrawl/as.php:841
-#: ../../include/conversation.php:1143
+#: ../../Zotlabs/Module/Photos.php:817 ../../Zotlabs/Module/Photos.php:1273
+#: ../../Zotlabs/Lib/Apps.php:744 ../../Zotlabs/Lib/Apps.php:822
+#: ../../Zotlabs/Storage/Browser.php:164 ../../Zotlabs/Widget/Portfolio.php:95
+#: ../../Zotlabs/Widget/Album.php:84 ../../addon/pubcrawl/as.php:842
+#: ../../include/conversation.php:1160
msgid "Unknown"
msgstr "Unbekannt"
@@ -594,7 +616,7 @@ msgid "End date and time"
msgstr "Enddatum und -zeit"
#: ../../Zotlabs/Module/Cdav.php:871 ../../Zotlabs/Module/Events.php:473
-#: ../../Zotlabs/Module/Appman.php:138 ../../Zotlabs/Module/Rbmark.php:101
+#: ../../Zotlabs/Module/Appman.php:142 ../../Zotlabs/Module/Rbmark.php:101
#: ../../addon/rendezvous/rendezvous.php:173
msgid "Description"
msgstr "Beschreibung"
@@ -607,20 +629,20 @@ msgid "Location"
msgstr "Ort"
#: ../../Zotlabs/Module/Cdav.php:879 ../../Zotlabs/Module/Events.php:689
-#: ../../Zotlabs/Module/Events.php:698 ../../Zotlabs/Module/Cal.php:337
-#: ../../Zotlabs/Module/Cal.php:344 ../../Zotlabs/Module/Photos.php:918
+#: ../../Zotlabs/Module/Events.php:698 ../../Zotlabs/Module/Cal.php:339
+#: ../../Zotlabs/Module/Cal.php:346 ../../Zotlabs/Module/Photos.php:971
msgid "Previous"
msgstr "Voriges"
#: ../../Zotlabs/Module/Cdav.php:880 ../../Zotlabs/Module/Events.php:690
#: ../../Zotlabs/Module/Events.php:699 ../../Zotlabs/Module/Setup.php:263
-#: ../../Zotlabs/Module/Cal.php:338 ../../Zotlabs/Module/Cal.php:345
-#: ../../Zotlabs/Module/Photos.php:927
+#: ../../Zotlabs/Module/Cal.php:340 ../../Zotlabs/Module/Cal.php:347
+#: ../../Zotlabs/Module/Photos.php:980
msgid "Next"
msgstr "Nächste"
#: ../../Zotlabs/Module/Cdav.php:881 ../../Zotlabs/Module/Events.php:700
-#: ../../Zotlabs/Module/Cal.php:346
+#: ../../Zotlabs/Module/Cal.php:348
msgid "Today"
msgstr "Heute"
@@ -668,14 +690,13 @@ msgstr "Alles löschen"
#: ../../Zotlabs/Module/Admin/Plugins.php:423
#: ../../Zotlabs/Module/Settings/Oauth.php:88
#: ../../Zotlabs/Module/Settings/Oauth.php:114
-#: ../../Zotlabs/Module/Wiki.php:333 ../../Zotlabs/Module/Wiki.php:363
+#: ../../Zotlabs/Module/Wiki.php:345 ../../Zotlabs/Module/Wiki.php:375
#: ../../Zotlabs/Module/Connedit.php:942 ../../Zotlabs/Module/Fbrowser.php:66
#: ../../Zotlabs/Module/Fbrowser.php:88 ../../Zotlabs/Module/Profiles.php:804
#: ../../Zotlabs/Module/Filer.php:55 ../../Zotlabs/Module/Tagrm.php:15
-#: ../../Zotlabs/Module/Tagrm.php:138 ../../addon/js_upload/js_upload.php:46
-#: ../../addon/gitwiki/Mod_Gitwiki.php:244
-#: ../../addon/gitwiki/Mod_Gitwiki.php:267 ../../include/conversation.php:1369
-#: ../../include/conversation.php:1418
+#: ../../Zotlabs/Module/Tagrm.php:138 ../../addon/gitwiki/Mod_Gitwiki.php:244
+#: ../../addon/gitwiki/Mod_Gitwiki.php:267 ../../include/conversation.php:1386
+#: ../../include/conversation.php:1435
msgid "Cancel"
msgstr "Abbrechen"
@@ -689,8 +710,8 @@ msgstr "Entschuldigung, aber das Bearbeiten von wiederkehrenden Veranstaltungen
#: ../../Zotlabs/Module/Settings/Oauth.php:89
#: ../../Zotlabs/Module/Settings/Oauth.php:115
#: ../../Zotlabs/Module/Wiki.php:209 ../../Zotlabs/Module/Connedit.php:924
-#: ../../Zotlabs/Module/Chat.php:251 ../../Zotlabs/Lib/NativeWikiPage.php:554
-#: ../../Zotlabs/Storage/Browser.php:234
+#: ../../Zotlabs/Module/Chat.php:251 ../../Zotlabs/Lib/NativeWikiPage.php:558
+#: ../../Zotlabs/Storage/Browser.php:280
#: ../../Zotlabs/Widget/Wiki_page_history.php:22
#: ../../addon/rendezvous/rendezvous.php:172
#: ../../addon/gitwiki/Mod_Gitwiki.php:158
@@ -716,7 +737,7 @@ msgstr "Telefon"
#: ../../Zotlabs/Module/Connedit.php:928 ../../Zotlabs/Module/Profiles.php:790
#: ../../addon/openid/MysqlProvider.php:56
#: ../../addon/openid/MysqlProvider.php:57 ../../addon/rtof/rtof.php:93
-#: ../../addon/redred/redred.php:107 ../../include/network.php:1706
+#: ../../addon/redred/redred.php:107 ../../include/network.php:1769
msgid "Email"
msgstr "E-Mail"
@@ -743,19 +764,19 @@ msgid "Note"
msgstr "Hinweis"
#: ../../Zotlabs/Module/Cdav.php:1179 ../../Zotlabs/Module/Connedit.php:933
-#: ../../Zotlabs/Module/Profiles.php:795 ../../include/event.php:1290
+#: ../../Zotlabs/Module/Profiles.php:795 ../../include/event.php:1301
#: ../../include/connections.php:682
msgid "Mobile"
msgstr "Mobil"
#: ../../Zotlabs/Module/Cdav.php:1180 ../../Zotlabs/Module/Connedit.php:934
-#: ../../Zotlabs/Module/Profiles.php:796 ../../include/event.php:1291
+#: ../../Zotlabs/Module/Profiles.php:796 ../../include/event.php:1302
#: ../../include/connections.php:683
msgid "Home"
msgstr "Home"
#: ../../Zotlabs/Module/Cdav.php:1181 ../../Zotlabs/Module/Connedit.php:935
-#: ../../Zotlabs/Module/Profiles.php:797 ../../include/event.php:1294
+#: ../../Zotlabs/Module/Profiles.php:797 ../../include/event.php:1305
#: ../../include/connections.php:686
msgid "Work"
msgstr "Arbeit"
@@ -898,9 +919,13 @@ msgid ""
" please import or restore these in date order (oldest first)."
msgstr "Diese Inhalts-Sicherungen können wiederhergestellt werden, indem Du <a href=\"%1$s\">%2$s</a> auf jeglichem Hub besuchst, der diesen Kanal enthält. Das funktioniert am besten, wenn Du dabei die zeitliche Reihenfolge einhältst, also die Sicherungen für den ältesten Zeitraum zuerst importierst."
-#: ../../Zotlabs/Module/Search.php:17 ../../Zotlabs/Module/Photos.php:490
+#: ../../Zotlabs/Module/Hq.php:136
+msgid "Welcome to hubzilla!"
+msgstr "Willkommen bei Hubzilla!"
+
+#: ../../Zotlabs/Module/Search.php:17 ../../Zotlabs/Module/Photos.php:540
#: ../../Zotlabs/Module/Ratings.php:83 ../../Zotlabs/Module/Directory.php:63
-#: ../../Zotlabs/Module/Display.php:21
+#: ../../Zotlabs/Module/Directory.php:68 ../../Zotlabs/Module/Display.php:30
#: ../../Zotlabs/Module/Viewconnections.php:23
msgid "Public access denied."
msgstr "Öffentlichen Zugriff verweigert."
@@ -908,7 +933,7 @@ msgstr "Öffentlichen Zugriff verweigert."
#: ../../Zotlabs/Module/Search.php:44 ../../Zotlabs/Module/Connections.php:313
#: ../../Zotlabs/Lib/Apps.php:250 ../../Zotlabs/Widget/Sitesearch.php:31
#: ../../include/text.php:1029 ../../include/text.php:1041
-#: ../../include/acl_selectors.php:213 ../../include/nav.php:204
+#: ../../include/acl_selectors.php:213 ../../include/nav.php:211
msgid "Search"
msgstr "Suche"
@@ -922,8 +947,8 @@ msgstr "Beiträge mit Schlagwort: %s"
msgid "Search results for: %s"
msgstr "Suchergebnisse für: %s"
-#: ../../Zotlabs/Module/Pubstream.php:38
-#: ../../Zotlabs/Widget/Notifications.php:128
+#: ../../Zotlabs/Module/Pubstream.php:81
+#: ../../Zotlabs/Widget/Notifications.php:129
msgid "Public Stream"
msgstr "Öffentlicher Beitrags-Stream"
@@ -979,14 +1004,23 @@ msgstr "Wenn möglich, lösche einen Klon, indem Du Dich auf dem jeweiligen Hub
msgid "Use this form to drop the location if the hub is no longer operating."
msgstr "Benutze dieses Formular zum Löschen eines Klons, wenn es den Hub nicht mehr gibt."
-#: ../../Zotlabs/Module/Apporder.php:39
-msgid "Change Order of Navigation Apps"
-msgstr "App-Reihenfolge in der Navigation ändern"
+#: ../../Zotlabs/Module/Apporder.php:44
+msgid "Change Order of Pinned Navbar Apps"
+msgstr "Reihenfolge der in der Navigation angepinnten Apps ändern"
-#: ../../Zotlabs/Module/Apporder.php:40
+#: ../../Zotlabs/Module/Apporder.php:44
+msgid "Change Order of App Tray Apps"
+msgstr "Reihenfolge der Apps im App-Menü ändern"
+
+#: ../../Zotlabs/Module/Apporder.php:45
msgid ""
-"Use arrows to move the corresponding app up or down in the display list"
-msgstr "Benutze die Pfeiltasten, um die jeweilige App in der Anzeigeliste auf- oder abwärts zu bewegen."
+"Use arrows to move the corresponding app left (top) or right (bottom) in the"
+" navbar"
+msgstr "Benutze die Pfeil-Knöpfe, um die jeweilige App in der Navigationsleiste nach links (oben) oder rechts (unten) zu bewegen"
+
+#: ../../Zotlabs/Module/Apporder.php:45
+msgid "Use arrows to move the corresponding app up or down in the app tray"
+msgstr "Benutze die Pfeil-Knöpfe, um die jeweilige App im App-Menü nach oben oder unten zu bewegen"
#: ../../Zotlabs/Module/Mitem.php:28 ../../Zotlabs/Module/Menu.php:144
msgid "Menu not found."
@@ -1014,7 +1048,7 @@ msgid "Menu Item Permissions"
msgstr "Zugriffsrechte des Menü-Elements"
#: ../../Zotlabs/Module/Mitem.php:154 ../../Zotlabs/Module/Mitem.php:231
-#: ../../Zotlabs/Module/Settings/Channel.php:513
+#: ../../Zotlabs/Module/Settings/Channel.php:522
msgid "(click to open/close)"
msgstr "(zum öffnen/schließen anklicken)"
@@ -1038,17 +1072,17 @@ msgstr "Magic-Auth verwenden, falls verfügbar"
#: ../../Zotlabs/Module/Mitem.php:240 ../../Zotlabs/Module/Mitem.php:241
#: ../../Zotlabs/Module/Events.php:470 ../../Zotlabs/Module/Events.php:471
#: ../../Zotlabs/Module/Removeme.php:63
-#: ../../Zotlabs/Module/Admin/Site.php:237
-#: ../../Zotlabs/Module/Settings/Channel.php:298
-#: ../../Zotlabs/Module/Settings/Display.php:103
-#: ../../Zotlabs/Module/Api.php:97 ../../Zotlabs/Module/Photos.php:644
+#: ../../Zotlabs/Module/Admin/Site.php:240
+#: ../../Zotlabs/Module/Settings/Channel.php:305
+#: ../../Zotlabs/Module/Settings/Display.php:105
+#: ../../Zotlabs/Module/Api.php:97 ../../Zotlabs/Module/Photos.php:697
#: ../../Zotlabs/Module/Wiki.php:218 ../../Zotlabs/Module/Wiki.php:219
#: ../../Zotlabs/Module/Connedit.php:396 ../../Zotlabs/Module/Connedit.php:779
#: ../../Zotlabs/Module/Menu.php:100 ../../Zotlabs/Module/Menu.php:157
-#: ../../Zotlabs/Module/Profiles.php:681
-#: ../../Zotlabs/Module/Filestorage.php:150
-#: ../../Zotlabs/Module/Filestorage.php:158
-#: ../../Zotlabs/Storage/Browser.php:351 ../../boot.php:1644
+#: ../../Zotlabs/Module/Defperms.php:180 ../../Zotlabs/Module/Profiles.php:681
+#: ../../Zotlabs/Module/Filestorage.php:155
+#: ../../Zotlabs/Module/Filestorage.php:163
+#: ../../Zotlabs/Storage/Browser.php:394 ../../boot.php:1669
#: ../../view/theme/redbasic_c/php/config.php:100
#: ../../view/theme/redbasic_c/php/config.php:115
#: ../../view/theme/redbasic/php/config.php:98
@@ -1089,16 +1123,17 @@ msgstr "Nein"
#: ../../Zotlabs/Module/Mitem.php:240 ../../Zotlabs/Module/Mitem.php:241
#: ../../Zotlabs/Module/Events.php:470 ../../Zotlabs/Module/Events.php:471
#: ../../Zotlabs/Module/Removeme.php:63
-#: ../../Zotlabs/Module/Admin/Site.php:239
-#: ../../Zotlabs/Module/Settings/Channel.php:298
-#: ../../Zotlabs/Module/Settings/Display.php:103
-#: ../../Zotlabs/Module/Api.php:96 ../../Zotlabs/Module/Photos.php:644
+#: ../../Zotlabs/Module/Admin/Site.php:242
+#: ../../Zotlabs/Module/Settings/Channel.php:305
+#: ../../Zotlabs/Module/Settings/Display.php:105
+#: ../../Zotlabs/Module/Api.php:96 ../../Zotlabs/Module/Photos.php:697
#: ../../Zotlabs/Module/Wiki.php:218 ../../Zotlabs/Module/Wiki.php:219
#: ../../Zotlabs/Module/Connedit.php:396 ../../Zotlabs/Module/Menu.php:100
-#: ../../Zotlabs/Module/Menu.php:157 ../../Zotlabs/Module/Profiles.php:681
-#: ../../Zotlabs/Module/Filestorage.php:150
-#: ../../Zotlabs/Module/Filestorage.php:158
-#: ../../Zotlabs/Storage/Browser.php:351 ../../boot.php:1644
+#: ../../Zotlabs/Module/Menu.php:157 ../../Zotlabs/Module/Defperms.php:180
+#: ../../Zotlabs/Module/Profiles.php:681
+#: ../../Zotlabs/Module/Filestorage.php:155
+#: ../../Zotlabs/Module/Filestorage.php:163
+#: ../../Zotlabs/Storage/Browser.php:394 ../../boot.php:1669
#: ../../view/theme/redbasic_c/php/config.php:100
#: ../../view/theme/redbasic_c/php/config.php:115
#: ../../view/theme/redbasic/php/config.php:98
@@ -1240,9 +1275,9 @@ msgstr "Titel und Startzeit des Termins sind erforderlich."
msgid "Event not found."
msgstr "Termin nicht gefunden."
-#: ../../Zotlabs/Module/Events.php:260 ../../Zotlabs/Module/Tagger.php:51
-#: ../../Zotlabs/Module/Like.php:372 ../../include/conversation.php:119
-#: ../../include/text.php:1941 ../../include/event.php:1145
+#: ../../Zotlabs/Module/Events.php:260 ../../Zotlabs/Module/Tagger.php:73
+#: ../../Zotlabs/Module/Like.php:384 ../../include/conversation.php:119
+#: ../../include/text.php:1941 ../../include/event.php:1153
msgid "event"
msgstr "Termin"
@@ -1251,9 +1286,9 @@ msgid "Edit event title"
msgstr "Termintitel bearbeiten"
#: ../../Zotlabs/Module/Events.php:460 ../../Zotlabs/Module/Events.php:465
-#: ../../Zotlabs/Module/Appman.php:136 ../../Zotlabs/Module/Appman.php:137
+#: ../../Zotlabs/Module/Appman.php:140 ../../Zotlabs/Module/Appman.php:141
#: ../../Zotlabs/Module/Profiles.php:748 ../../Zotlabs/Module/Profiles.php:752
-#: ../../include/datetime.php:259
+#: ../../include/datetime.php:265
msgid "Required"
msgstr "Benötigt"
@@ -1303,13 +1338,13 @@ msgstr "Beschreibung bearbeiten"
msgid "Edit Location"
msgstr "Ort bearbeiten"
-#: ../../Zotlabs/Module/Events.php:478 ../../Zotlabs/Module/Photos.php:1070
-#: ../../Zotlabs/Module/Webpages.php:247 ../../Zotlabs/Lib/ThreadItem.php:753
-#: ../../include/conversation.php:1313
+#: ../../Zotlabs/Module/Events.php:478 ../../Zotlabs/Module/Photos.php:1123
+#: ../../Zotlabs/Module/Webpages.php:247 ../../Zotlabs/Lib/ThreadItem.php:764
+#: ../../include/conversation.php:1330
msgid "Preview"
msgstr "Vorschau"
-#: ../../Zotlabs/Module/Events.php:479 ../../include/conversation.php:1385
+#: ../../Zotlabs/Module/Events.php:479 ../../include/conversation.php:1402
msgid "Permission settings"
msgstr "Berechtigungs-Einstellungen"
@@ -1321,7 +1356,7 @@ msgstr "Zeitzone:"
msgid "Advanced Options"
msgstr "Weitere Optionen"
-#: ../../Zotlabs/Module/Events.php:605 ../../Zotlabs/Module/Cal.php:264
+#: ../../Zotlabs/Module/Events.php:605 ../../Zotlabs/Module/Cal.php:266
msgid "l, F j"
msgstr "l, j. F"
@@ -1333,7 +1368,7 @@ msgstr "Termin bearbeiten"
msgid "Delete event"
msgstr "Termin löschen"
-#: ../../Zotlabs/Module/Events.php:660 ../../Zotlabs/Module/Cal.php:313
+#: ../../Zotlabs/Module/Events.php:660 ../../Zotlabs/Module/Cal.php:315
#: ../../include/text.php:1760
msgid "Link to Source"
msgstr "Link zur Quelle"
@@ -1342,16 +1377,16 @@ msgstr "Link zur Quelle"
msgid "calendar"
msgstr "Kalender"
-#: ../../Zotlabs/Module/Events.php:688 ../../Zotlabs/Module/Cal.php:336
+#: ../../Zotlabs/Module/Events.php:688 ../../Zotlabs/Module/Cal.php:338
msgid "Edit Event"
msgstr "Termin bearbeiten"
-#: ../../Zotlabs/Module/Events.php:688 ../../Zotlabs/Module/Cal.php:336
+#: ../../Zotlabs/Module/Events.php:688 ../../Zotlabs/Module/Cal.php:338
msgid "Create Event"
msgstr "Termin anlegen"
-#: ../../Zotlabs/Module/Events.php:691 ../../Zotlabs/Module/Cal.php:339
-#: ../../include/channel.php:1588
+#: ../../Zotlabs/Module/Events.php:691 ../../Zotlabs/Module/Cal.php:341
+#: ../../include/channel.php:1636
msgid "Export"
msgstr "Exportieren"
@@ -1371,47 +1406,47 @@ msgstr "App installiert."
msgid "Malformed app."
msgstr "Fehlerhafte App."
-#: ../../Zotlabs/Module/Appman.php:125
+#: ../../Zotlabs/Module/Appman.php:129
msgid "Embed code"
msgstr "Code einbetten"
-#: ../../Zotlabs/Module/Appman.php:131
+#: ../../Zotlabs/Module/Appman.php:135
msgid "Edit App"
msgstr "App bearbeiten"
-#: ../../Zotlabs/Module/Appman.php:131
+#: ../../Zotlabs/Module/Appman.php:135
msgid "Create App"
msgstr "App erstellen"
-#: ../../Zotlabs/Module/Appman.php:136
+#: ../../Zotlabs/Module/Appman.php:140
msgid "Name of app"
msgstr "Name der App"
-#: ../../Zotlabs/Module/Appman.php:137
+#: ../../Zotlabs/Module/Appman.php:141
msgid "Location (URL) of app"
msgstr "Ort (URL) der App"
-#: ../../Zotlabs/Module/Appman.php:139
+#: ../../Zotlabs/Module/Appman.php:143
msgid "Photo icon URL"
msgstr "URL zum Icon"
-#: ../../Zotlabs/Module/Appman.php:139
+#: ../../Zotlabs/Module/Appman.php:143
msgid "80 x 80 pixels - optional"
msgstr "80 x 80 Pixel – optional"
-#: ../../Zotlabs/Module/Appman.php:140
+#: ../../Zotlabs/Module/Appman.php:144
msgid "Categories (optional, comma separated list)"
msgstr "Kategorien (optional, kommagetrennte Liste)"
-#: ../../Zotlabs/Module/Appman.php:141
+#: ../../Zotlabs/Module/Appman.php:145
msgid "Version ID"
msgstr "Versions-ID"
-#: ../../Zotlabs/Module/Appman.php:142
+#: ../../Zotlabs/Module/Appman.php:146
msgid "Price of app"
msgstr "Preis der App"
-#: ../../Zotlabs/Module/Appman.php:143
+#: ../../Zotlabs/Module/Appman.php:147
msgid "Location (URL) to purchase app"
msgstr "Ort (URL), um die App zu kaufen"
@@ -1423,30 +1458,55 @@ msgstr "Bitte melde dich an."
msgid "Hub not found."
msgstr "Server nicht gefunden."
-#: ../../Zotlabs/Module/Subthread.php:87 ../../Zotlabs/Module/Tagger.php:47
-#: ../../Zotlabs/Module/Like.php:370
+#: ../../Zotlabs/Module/Subthread.php:111 ../../Zotlabs/Module/Tagger.php:69
+#: ../../Zotlabs/Module/Like.php:382
#: ../../addon/redphotos/redphotohelper.php:71
-#: ../../addon/diaspora/Receiver.php:1424 ../../addon/pubcrawl/as.php:1288
+#: ../../addon/diaspora/Receiver.php:1433 ../../addon/pubcrawl/as.php:1295
#: ../../include/conversation.php:116 ../../include/text.php:1938
msgid "photo"
msgstr "Foto"
-#: ../../Zotlabs/Module/Subthread.php:87 ../../Zotlabs/Module/Like.php:370
-#: ../../addon/diaspora/Receiver.php:1424 ../../addon/pubcrawl/as.php:1288
+#: ../../Zotlabs/Module/Subthread.php:111 ../../Zotlabs/Module/Like.php:382
+#: ../../addon/diaspora/Receiver.php:1433 ../../addon/pubcrawl/as.php:1295
#: ../../include/conversation.php:144 ../../include/text.php:1944
msgid "status"
msgstr "Status"
-#: ../../Zotlabs/Module/Subthread.php:118
+#: ../../Zotlabs/Module/Subthread.php:142
#, php-format
msgid "%1$s is following %2$s's %3$s"
msgstr "%1$s folgt nun %2$ss %3$s"
-#: ../../Zotlabs/Module/Subthread.php:120
+#: ../../Zotlabs/Module/Subthread.php:144
#, php-format
msgid "%1$s stopped following %2$s's %3$s"
msgstr "%1$s folgt %2$ss %3$s nicht mehr"
+#: ../../Zotlabs/Module/Article_edit.php:44 ../../Zotlabs/Module/Cal.php:62
+#: ../../Zotlabs/Module/Chanview.php:96 ../../Zotlabs/Module/Page.php:75
+#: ../../Zotlabs/Module/Wall_upload.php:31 ../../Zotlabs/Module/Block.php:41
+#: ../../Zotlabs/Module/Card_edit.php:44
+msgid "Channel not found."
+msgstr "Kanal nicht gefunden."
+
+#: ../../Zotlabs/Module/Article_edit.php:101
+#: ../../Zotlabs/Module/Editblock.php:116 ../../Zotlabs/Module/Chat.php:207
+#: ../../Zotlabs/Module/Editwebpage.php:143 ../../Zotlabs/Module/Mail.php:288
+#: ../../Zotlabs/Module/Mail.php:430 ../../Zotlabs/Module/Card_edit.php:101
+#: ../../include/conversation.php:1278
+msgid "Insert web link"
+msgstr "Link einfügen"
+
+#: ../../Zotlabs/Module/Article_edit.php:117
+#: ../../Zotlabs/Module/Editblock.php:129
+#: ../../Zotlabs/Module/Card_edit.php:117 ../../include/conversation.php:1398
+msgid "Title (optional)"
+msgstr "Titel (optional)"
+
+#: ../../Zotlabs/Module/Article_edit.php:128
+msgid "Edit Article"
+msgstr "Artikel bearbeiten"
+
#: ../../Zotlabs/Module/Import_items.php:48 ../../Zotlabs/Module/Import.php:64
msgid "Nothing to import."
msgstr "Nichts zu importieren."
@@ -1492,22 +1552,22 @@ msgid "You have created %1$.0f of %2$.0f allowed channels."
msgstr "Du hast %1$.0f von maximal %2$.0f erlaubten Kanälen eingerichtet."
#: ../../Zotlabs/Module/New_channel.php:134
-#: ../../Zotlabs/Module/Register.php:237
+#: ../../Zotlabs/Module/Register.php:249
msgid "Name or caption"
msgstr "Name oder Titel"
#: ../../Zotlabs/Module/New_channel.php:134
-#: ../../Zotlabs/Module/Register.php:237
+#: ../../Zotlabs/Module/Register.php:249
msgid "Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\""
msgstr "Beispiele: „Horst Weidinger“, „Lisa und ihr Meerschweinchen“, „Fußball“, „Segelflieger-Forum“ "
#: ../../Zotlabs/Module/New_channel.php:136
-#: ../../Zotlabs/Module/Register.php:239
+#: ../../Zotlabs/Module/Register.php:251
msgid "Choose a short nickname"
msgstr "Wähle einen kurzen Spitznamen"
#: ../../Zotlabs/Module/New_channel.php:136
-#: ../../Zotlabs/Module/Register.php:239
+#: ../../Zotlabs/Module/Register.php:251
#, php-format
msgid ""
"Your nickname will be used to create an easy to remember channel address "
@@ -1515,17 +1575,17 @@ msgid ""
msgstr "Dein Spitzname wird verwendet, um eine leicht zu merkende Kanal-Adresse (ähnlich einer E-Mail-Adresse) zu erzeugen, die Du mit anderen austauschen kannst, z.B. nickname%s"
#: ../../Zotlabs/Module/New_channel.php:137
-#: ../../Zotlabs/Module/Register.php:240
+#: ../../Zotlabs/Module/Register.php:252
msgid "Channel role and privacy"
msgstr "Kanaltyp und Privatspäre-Einstellungen"
#: ../../Zotlabs/Module/New_channel.php:137
-#: ../../Zotlabs/Module/Register.php:240
+#: ../../Zotlabs/Module/Register.php:252
msgid "Select a channel role with your privacy requirements."
msgstr "Wähle einen passenden Kanaltyp mit den zugehörigen Voreinstellungen zur Privatsphäre."
#: ../../Zotlabs/Module/New_channel.php:137
-#: ../../Zotlabs/Module/Register.php:240
+#: ../../Zotlabs/Module/Register.php:252
msgid "Read more about roles"
msgstr "Mehr Informationen über Rollen"
@@ -1587,7 +1647,7 @@ msgid ""
msgstr "Standardmäßig wird der Kanal nur auf diesem Server gelöscht, seine Klone verbleiben im Netzwerk"
#: ../../Zotlabs/Module/Removeme.php:64
-#: ../../Zotlabs/Module/Settings/Channel.php:580
+#: ../../Zotlabs/Module/Settings/Channel.php:593
msgid "Remove Channel"
msgstr "Kanal löschen"
@@ -1600,12 +1660,12 @@ msgid "NEW"
msgstr "NEU"
#: ../../Zotlabs/Module/Sharedwithme.php:107
-#: ../../Zotlabs/Storage/Browser.php:236 ../../include/text.php:1394
+#: ../../Zotlabs/Storage/Browser.php:282 ../../include/text.php:1394
msgid "Size"
msgstr "Größe"
#: ../../Zotlabs/Module/Sharedwithme.php:108
-#: ../../Zotlabs/Storage/Browser.php:237
+#: ../../Zotlabs/Storage/Browser.php:283
msgid "Last Modified"
msgstr "Zuletzt geändert"
@@ -2193,10 +2253,10 @@ msgstr "Versuche, diesen Updateschritt automatisch auszuführen"
#: ../../Zotlabs/Module/Admin/Plugins.php:259
#: ../../Zotlabs/Module/Admin/Themes.php:72 ../../Zotlabs/Module/Thing.php:89
-#: ../../Zotlabs/Module/Viewsrc.php:25 ../../Zotlabs/Module/Display.php:33
-#: ../../Zotlabs/Module/Display.php:347
+#: ../../Zotlabs/Module/Viewsrc.php:25 ../../Zotlabs/Module/Display.php:46
+#: ../../Zotlabs/Module/Display.php:408
#: ../../Zotlabs/Module/Filestorage.php:24 ../../Zotlabs/Module/Admin.php:62
-#: ../../include/items.php:3410
+#: ../../include/items.php:3546
msgid "Item not found."
msgstr "Element nicht gefunden."
@@ -2227,7 +2287,7 @@ msgstr "Aktivieren"
#: ../../Zotlabs/Module/Admin/Channels.php:145
#: ../../Zotlabs/Module/Admin/Themes.php:122
#: ../../Zotlabs/Module/Admin/Themes.php:156
-#: ../../Zotlabs/Module/Admin/Site.php:271
+#: ../../Zotlabs/Module/Admin/Site.php:275
#: ../../Zotlabs/Module/Admin/Security.php:86
#: ../../Zotlabs/Module/Admin.php:136
msgid "Administration"
@@ -2246,8 +2306,8 @@ msgstr "Umschalten"
#: ../../Zotlabs/Module/Admin/Plugins.php:344
#: ../../Zotlabs/Module/Admin/Themes.php:125 ../../Zotlabs/Lib/Apps.php:236
-#: ../../Zotlabs/Widget/Settings_menu.php:133 ../../include/nav.php:132
-#: ../../include/nav.php:217
+#: ../../Zotlabs/Widget/Settings_menu.php:133 ../../include/nav.php:139
+#: ../../include/nav.php:224
msgid "Settings"
msgstr "Einstellungen"
@@ -2331,7 +2391,7 @@ msgid "Switch branch"
msgstr "Zweig/Branch wechseln"
#: ../../Zotlabs/Module/Admin/Plugins.php:455
-#: ../../Zotlabs/Module/Photos.php:967 ../../Zotlabs/Module/Tagrm.php:137
+#: ../../Zotlabs/Module/Photos.php:1020 ../../Zotlabs/Module/Tagrm.php:137
#: ../../addon/superblock/superblock.php:116
msgid "Remove"
msgstr "Entfernen"
@@ -2354,7 +2414,7 @@ msgstr[1] "%s Konten gelöscht"
msgid "Account not found"
msgstr "Konto nicht gefunden"
-#: ../../Zotlabs/Module/Admin/Accounts.php:90 ../../include/channel.php:2357
+#: ../../Zotlabs/Module/Admin/Accounts.php:90 ../../include/channel.php:2456
#, php-format
msgid "Account '%s' deleted"
msgstr "Konto '%s' gelöscht"
@@ -2393,7 +2453,7 @@ msgid "No registrations."
msgstr "Keine Registrierungen."
#: ../../Zotlabs/Module/Admin/Accounts.php:171
-#: ../../Zotlabs/Module/Connections.php:282 ../../include/conversation.php:716
+#: ../../Zotlabs/Module/Connections.php:282 ../../include/conversation.php:732
msgid "Approve"
msgstr "Genehmigen"
@@ -2415,7 +2475,7 @@ msgstr "Freigeben"
msgid "ID"
msgstr "ID"
-#: ../../Zotlabs/Module/Admin/Accounts.php:182 ../../include/group.php:288
+#: ../../Zotlabs/Module/Admin/Accounts.php:182 ../../include/group.php:284
msgid "All Channels"
msgstr "Alle Kanäle"
@@ -2550,7 +2610,7 @@ msgid "Disallow Code"
msgstr "Code sperren"
#: ../../Zotlabs/Module/Admin/Channels.php:154
-#: ../../include/conversation.php:1791 ../../include/nav.php:399
+#: ../../include/conversation.php:1808 ../../include/nav.php:410
msgid "Channel"
msgstr "Kanal"
@@ -2595,394 +2655,412 @@ msgstr "[Experimentell]"
msgid "[Unsupported]"
msgstr "[Nicht unterstützt]"
-#: ../../Zotlabs/Module/Admin/Site.php:144
+#: ../../Zotlabs/Module/Admin/Site.php:147
msgid "Site settings updated."
msgstr "Site-Einstellungen aktualisiert."
-#: ../../Zotlabs/Module/Admin/Site.php:170
+#: ../../Zotlabs/Module/Admin/Site.php:173
#: ../../view/theme/redbasic_c/php/config.php:15
-#: ../../view/theme/redbasic/php/config.php:15 ../../include/text.php:2943
+#: ../../view/theme/redbasic/php/config.php:15 ../../include/text.php:2968
msgid "Default"
msgstr "Standard"
-#: ../../Zotlabs/Module/Admin/Site.php:181
-#: ../../Zotlabs/Module/Settings/Display.php:137
+#: ../../Zotlabs/Module/Admin/Site.php:184
+#: ../../Zotlabs/Module/Settings/Display.php:139
#, php-format
msgid "%s - (Incompatible)"
msgstr "%s - (Inkompatibel)"
-#: ../../Zotlabs/Module/Admin/Site.php:188
-#: ../../Zotlabs/Module/Settings/Display.php:151
+#: ../../Zotlabs/Module/Admin/Site.php:191
+#: ../../Zotlabs/Module/Settings/Display.php:153
msgid "mobile"
msgstr "mobil"
-#: ../../Zotlabs/Module/Admin/Site.php:190
+#: ../../Zotlabs/Module/Admin/Site.php:193
msgid "experimental"
msgstr "experimentell"
-#: ../../Zotlabs/Module/Admin/Site.php:192
+#: ../../Zotlabs/Module/Admin/Site.php:195
msgid "unsupported"
msgstr "nicht unterstützt"
-#: ../../Zotlabs/Module/Admin/Site.php:238
+#: ../../Zotlabs/Module/Admin/Site.php:241
msgid "Yes - with approval"
msgstr "Ja - mit Zustimmung"
-#: ../../Zotlabs/Module/Admin/Site.php:244
+#: ../../Zotlabs/Module/Admin/Site.php:247
msgid "My site is not a public server"
msgstr "Mein Server ist kein öffentlicher Server"
-#: ../../Zotlabs/Module/Admin/Site.php:245
+#: ../../Zotlabs/Module/Admin/Site.php:248
msgid "My site has paid access only"
msgstr "Meine Seite hat nur bezahlten Zugriff"
-#: ../../Zotlabs/Module/Admin/Site.php:246
+#: ../../Zotlabs/Module/Admin/Site.php:249
msgid "My site has free access only"
msgstr "Meine Seite hat nur freien Zugriff"
-#: ../../Zotlabs/Module/Admin/Site.php:247
+#: ../../Zotlabs/Module/Admin/Site.php:250
msgid "My site offers free accounts with optional paid upgrades"
msgstr "Mein Server bietet kostenlose Konten mit der Möglichkeit zu bezahlten Upgrades"
-#: ../../Zotlabs/Module/Admin/Site.php:258
+#: ../../Zotlabs/Module/Admin/Site.php:262
msgid "Beginner/Basic"
msgstr "Anfänger/Basis"
-#: ../../Zotlabs/Module/Admin/Site.php:259
+#: ../../Zotlabs/Module/Admin/Site.php:263
msgid "Novice - not skilled but willing to learn"
msgstr "Anfänger - unerfahren, aber bereit zu lernen"
-#: ../../Zotlabs/Module/Admin/Site.php:260
+#: ../../Zotlabs/Module/Admin/Site.php:264
msgid "Intermediate - somewhat comfortable"
msgstr "Fortgeschritten - relativ komfortabel"
-#: ../../Zotlabs/Module/Admin/Site.php:261
+#: ../../Zotlabs/Module/Admin/Site.php:265
msgid "Advanced - very comfortable"
msgstr "Fortgeschritten - sehr komfortabel"
-#: ../../Zotlabs/Module/Admin/Site.php:262
+#: ../../Zotlabs/Module/Admin/Site.php:266
msgid "Expert - I can write computer code"
msgstr "Experte - Ich kann Computercode schreiben"
-#: ../../Zotlabs/Module/Admin/Site.php:263
+#: ../../Zotlabs/Module/Admin/Site.php:267
msgid "Wizard - I probably know more than you do"
msgstr "Zauberer - ich kann wahrscheinlich mehr als Du"
-#: ../../Zotlabs/Module/Admin/Site.php:272 ../../Zotlabs/Widget/Admin.php:22
+#: ../../Zotlabs/Module/Admin/Site.php:276 ../../Zotlabs/Widget/Admin.php:22
msgid "Site"
msgstr "Seite"
-#: ../../Zotlabs/Module/Admin/Site.php:274
-#: ../../Zotlabs/Module/Register.php:251
+#: ../../Zotlabs/Module/Admin/Site.php:278
+#: ../../Zotlabs/Module/Register.php:263
msgid "Registration"
msgstr "Registrierung"
-#: ../../Zotlabs/Module/Admin/Site.php:275
+#: ../../Zotlabs/Module/Admin/Site.php:279
msgid "File upload"
msgstr "Dateiupload"
-#: ../../Zotlabs/Module/Admin/Site.php:276
+#: ../../Zotlabs/Module/Admin/Site.php:280
msgid "Policies"
msgstr "Richtlinien"
-#: ../../Zotlabs/Module/Admin/Site.php:277
+#: ../../Zotlabs/Module/Admin/Site.php:281
#: ../../include/contact_widgets.php:16
msgid "Advanced"
msgstr "Fortgeschritten"
-#: ../../Zotlabs/Module/Admin/Site.php:281
-#: ../../addon/statusnet/statusnet.php:890
+#: ../../Zotlabs/Module/Admin/Site.php:285
+#: ../../addon/statusnet/statusnet.php:891
msgid "Site name"
msgstr "Seitenname"
-#: ../../Zotlabs/Module/Admin/Site.php:283
+#: ../../Zotlabs/Module/Admin/Site.php:287
msgid "Site default technical skill level"
msgstr "Standard-Qualifikationsstufe der Website"
-#: ../../Zotlabs/Module/Admin/Site.php:283
+#: ../../Zotlabs/Module/Admin/Site.php:287
msgid "Used to provide a member experience matched to technical comfort level"
msgstr "Dies wird verwendet, um eine Benutzererfahrung passend zur technischen Qualifikationsstufe zu bieten."
-#: ../../Zotlabs/Module/Admin/Site.php:285
+#: ../../Zotlabs/Module/Admin/Site.php:289
msgid "Lock the technical skill level setting"
msgstr "Sperre die technische Qualifikationsstufe"
-#: ../../Zotlabs/Module/Admin/Site.php:285
+#: ../../Zotlabs/Module/Admin/Site.php:289
msgid "Members can set their own technical comfort level by default"
msgstr "Benutzer können standardmäßig ihre eigene technische Qualifikationsstufe einstellen"
-#: ../../Zotlabs/Module/Admin/Site.php:287
+#: ../../Zotlabs/Module/Admin/Site.php:291
msgid "Banner/Logo"
msgstr "Banner/Logo"
-#: ../../Zotlabs/Module/Admin/Site.php:288
+#: ../../Zotlabs/Module/Admin/Site.php:292
msgid "Administrator Information"
msgstr "Administrator-Informationen"
-#: ../../Zotlabs/Module/Admin/Site.php:288
+#: ../../Zotlabs/Module/Admin/Site.php:292
msgid ""
"Contact information for site administrators. Displayed on siteinfo page. "
"BBCode can be used here"
msgstr "Kontaktinformationen für Administratoren des Servers. Wird auf der siteinfo-Seite angezeigt. BBCode kann verwendet werden."
-#: ../../Zotlabs/Module/Admin/Site.php:289
+#: ../../Zotlabs/Module/Admin/Site.php:293
#: ../../Zotlabs/Module/Siteinfo.php:22
msgid "Site Information"
msgstr "Seiteninformationen"
-#: ../../Zotlabs/Module/Admin/Site.php:289
+#: ../../Zotlabs/Module/Admin/Site.php:293
msgid ""
"Publicly visible description of this site. Displayed on siteinfo page. "
"BBCode can be used here"
msgstr "Öffentlich sichtbare Beschreibung dieses Servers. Wird auf der siteinfo-Seite angezeigt. BBCode kann hier verwendet werden."
-#: ../../Zotlabs/Module/Admin/Site.php:290
+#: ../../Zotlabs/Module/Admin/Site.php:294
msgid "System language"
msgstr "System-Sprache"
-#: ../../Zotlabs/Module/Admin/Site.php:291
+#: ../../Zotlabs/Module/Admin/Site.php:295
msgid "System theme"
msgstr "System-Design"
-#: ../../Zotlabs/Module/Admin/Site.php:291
+#: ../../Zotlabs/Module/Admin/Site.php:295
msgid ""
"Default system theme - may be over-ridden by user profiles - <a href='#' "
"id='cnftheme'>change theme settings</a>"
msgstr "Standard-System-Design – kann durch Nutzerprofile überschieben werden – <a href='#' id='cnftheme'>Design-Einstellungen ändern</a>"
-#: ../../Zotlabs/Module/Admin/Site.php:292
+#: ../../Zotlabs/Module/Admin/Site.php:296
msgid "Mobile system theme"
msgstr "System-Design für mobile Geräte:"
-#: ../../Zotlabs/Module/Admin/Site.php:292
+#: ../../Zotlabs/Module/Admin/Site.php:296
msgid "Theme for mobile devices"
msgstr "Theme für mobile Geräte"
-#: ../../Zotlabs/Module/Admin/Site.php:294
+#: ../../Zotlabs/Module/Admin/Site.php:298
msgid "Allow Feeds as Connections"
msgstr "Feeds als Verbindungen erlauben"
-#: ../../Zotlabs/Module/Admin/Site.php:294
+#: ../../Zotlabs/Module/Admin/Site.php:298
msgid "(Heavy system resource usage)"
msgstr "(führt zu hoher Systemlast)"
-#: ../../Zotlabs/Module/Admin/Site.php:295
+#: ../../Zotlabs/Module/Admin/Site.php:299
msgid "Maximum image size"
msgstr "Maximale Bildgröße"
-#: ../../Zotlabs/Module/Admin/Site.php:295
+#: ../../Zotlabs/Module/Admin/Site.php:299
msgid ""
"Maximum size in bytes of uploaded images. Default is 0, which means no "
"limits."
msgstr "Maximale Größe hochgeladener Bilder in Bytes. Standard ist 0 (keine Einschränkung)."
-#: ../../Zotlabs/Module/Admin/Site.php:296
+#: ../../Zotlabs/Module/Admin/Site.php:300
msgid "Does this site allow new member registration?"
msgstr "Erlaubt dieser Server die Registrierung neuer Nutzer?"
-#: ../../Zotlabs/Module/Admin/Site.php:297
+#: ../../Zotlabs/Module/Admin/Site.php:301
msgid "Invitation only"
msgstr "Nur mit Einladung"
-#: ../../Zotlabs/Module/Admin/Site.php:297
+#: ../../Zotlabs/Module/Admin/Site.php:301
msgid ""
"Only allow new member registrations with an invitation code. Above register "
"policy must be set to Yes."
msgstr "Erlaube die Neuregistrierung von Mitglieder nur mit einem Einladungscode. Die Registrierungs-Politik muss oben auf Ja gesetzt werden."
-#: ../../Zotlabs/Module/Admin/Site.php:298
+#: ../../Zotlabs/Module/Admin/Site.php:302
msgid "Which best describes the types of account offered by this hub?"
msgstr "Was ist die passendste Beschreibung der Konten auf diesem Hub?"
-#: ../../Zotlabs/Module/Admin/Site.php:299
+#: ../../Zotlabs/Module/Admin/Site.php:303
msgid "Register text"
msgstr "Registrierungstext"
-#: ../../Zotlabs/Module/Admin/Site.php:299
+#: ../../Zotlabs/Module/Admin/Site.php:303
msgid "Will be displayed prominently on the registration page."
msgstr "Wird gut sichtbar auf der Registrierungs-Seite angezeigt."
-#: ../../Zotlabs/Module/Admin/Site.php:300
+#: ../../Zotlabs/Module/Admin/Site.php:304
msgid "Site homepage to show visitors (default: login box)"
msgstr "Homepage des Hubs, die Besuchern angezeigt wird (Voreinstellung: Anmeldemaske)"
-#: ../../Zotlabs/Module/Admin/Site.php:300
+#: ../../Zotlabs/Module/Admin/Site.php:304
msgid ""
"example: 'public' to show public stream, 'page/sys/home' to show a system "
"webpage called 'home' or 'include:home.html' to include a file."
msgstr "Beispiele: 'public', um den Stream aller öffentlichen Beiträge anzuzeigen, 'page/sys/home', um eine System-Webseite namens 'home' anzuzeigen, 'include:home.html', um eine Datei einzufügen."
-#: ../../Zotlabs/Module/Admin/Site.php:301
+#: ../../Zotlabs/Module/Admin/Site.php:305
msgid "Preserve site homepage URL"
msgstr "Homepage-URL schützen"
-#: ../../Zotlabs/Module/Admin/Site.php:301
+#: ../../Zotlabs/Module/Admin/Site.php:305
msgid ""
"Present the site homepage in a frame at the original location instead of "
"redirecting"
msgstr "Zeigt die Homepage an der Original-URL in einem Frame an, statt auf die eigentliche Adresse der Seite umzuleiten."
-#: ../../Zotlabs/Module/Admin/Site.php:302
+#: ../../Zotlabs/Module/Admin/Site.php:306
msgid "Accounts abandoned after x days"
msgstr "Konten gelten nach X Tagen als unbenutzt"
-#: ../../Zotlabs/Module/Admin/Site.php:302
+#: ../../Zotlabs/Module/Admin/Site.php:306
msgid ""
"Will not waste system resources polling external sites for abandonded "
"accounts. Enter 0 for no time limit."
msgstr "Verschwende keine Systemressourcen auf das Pollen von externen Seiten, wenn das Konto nicht mehr benutzt wird. Trage hier 0 für kein zeitliches Limit."
-#: ../../Zotlabs/Module/Admin/Site.php:303
+#: ../../Zotlabs/Module/Admin/Site.php:307
msgid "Allowed friend domains"
msgstr "Erlaubte Domains für Kontakte"
-#: ../../Zotlabs/Module/Admin/Site.php:303
+#: ../../Zotlabs/Module/Admin/Site.php:307
msgid ""
"Comma separated list of domains which are allowed to establish friendships "
"with this site. Wildcards are accepted. Empty to allow any domains"
msgstr "Liste der Domains, die für Freundschaften erlaubt sind, durch Kommas getrennt. Platzhalter werden akzeptiert. Leer lassen, um alle Domains zu erlauben."
-#: ../../Zotlabs/Module/Admin/Site.php:304
+#: ../../Zotlabs/Module/Admin/Site.php:308
msgid "Verify Email Addresses"
msgstr "E-Mail-Adressen überprüfen"
-#: ../../Zotlabs/Module/Admin/Site.php:304
+#: ../../Zotlabs/Module/Admin/Site.php:308
msgid ""
"Check to verify email addresses used in account registration (recommended)."
msgstr "Aktivieren, um die Überprüfung von E-Mail-Adressen bei der Registrierung von Benutzerkonten zu aktivieren (empfohlen)."
-#: ../../Zotlabs/Module/Admin/Site.php:305
+#: ../../Zotlabs/Module/Admin/Site.php:309
msgid "Force publish"
msgstr "Veröffentlichung erzwingen"
-#: ../../Zotlabs/Module/Admin/Site.php:305
+#: ../../Zotlabs/Module/Admin/Site.php:309
msgid ""
"Check to force all profiles on this site to be listed in the site directory."
msgstr "Die Veröffentlichung aller Profile dieses Servers im Verzeichnis erzwingen."
-#: ../../Zotlabs/Module/Admin/Site.php:306
+#: ../../Zotlabs/Module/Admin/Site.php:310
msgid "Import Public Streams"
msgstr "Öffentliche Beiträge importieren"
-#: ../../Zotlabs/Module/Admin/Site.php:306
+#: ../../Zotlabs/Module/Admin/Site.php:310
msgid ""
"Import and allow access to public content pulled from other sites. Warning: "
"this content is unmoderated."
msgstr "Öffentliche Beiträge von anderen Servern importieren und zur Verfügung stellen. Warnung: Diese Inhalte sind nicht moderiert."
-#: ../../Zotlabs/Module/Admin/Site.php:307
+#: ../../Zotlabs/Module/Admin/Site.php:311
msgid "Login on Homepage"
msgstr "Log-in auf der Startseite"
-#: ../../Zotlabs/Module/Admin/Site.php:307
+#: ../../Zotlabs/Module/Admin/Site.php:311
msgid ""
"Present a login box to visitors on the home page if no other content has "
"been configured."
msgstr "Zeigt Besuchern der Homepage eine Anmeldemaske, falls keine anderen Inhalte konfiguriert wurden."
-#: ../../Zotlabs/Module/Admin/Site.php:308
+#: ../../Zotlabs/Module/Admin/Site.php:312
msgid "Enable context help"
msgstr "Kontext-Hilfe aktivieren"
-#: ../../Zotlabs/Module/Admin/Site.php:308
+#: ../../Zotlabs/Module/Admin/Site.php:312
msgid ""
"Display contextual help for the current page when the help button is "
"pressed."
msgstr "Zeigt Kontext-sensitive Hilfe für die aktuelle Seite an, wenn der Hilfe-Knopf geklickt wird."
-#: ../../Zotlabs/Module/Admin/Site.php:310
+#: ../../Zotlabs/Module/Admin/Site.php:314
msgid "Reply-to email address for system generated email."
msgstr "Antwortadresse (reply-to) für Emails, die vom System generiert wurden."
-#: ../../Zotlabs/Module/Admin/Site.php:311
+#: ../../Zotlabs/Module/Admin/Site.php:315
msgid "Sender (From) email address for system generated email."
msgstr "Absenderadresse (from) für Emails, die vom System generiert wurden."
-#: ../../Zotlabs/Module/Admin/Site.php:312
+#: ../../Zotlabs/Module/Admin/Site.php:316
msgid "Name of email sender for system generated email."
msgstr "Name des Versenders von Emails, die vom System generiert wurden."
-#: ../../Zotlabs/Module/Admin/Site.php:314
+#: ../../Zotlabs/Module/Admin/Site.php:318
msgid "Directory Server URL"
msgstr "Verzeichnisserver-URL"
-#: ../../Zotlabs/Module/Admin/Site.php:314
+#: ../../Zotlabs/Module/Admin/Site.php:318
msgid "Default directory server"
msgstr "Standard-Verzeichnisserver"
-#: ../../Zotlabs/Module/Admin/Site.php:316
+#: ../../Zotlabs/Module/Admin/Site.php:320
msgid "Proxy user"
msgstr "Proxy Benutzer"
-#: ../../Zotlabs/Module/Admin/Site.php:317
+#: ../../Zotlabs/Module/Admin/Site.php:321
msgid "Proxy URL"
msgstr "Proxy URL"
-#: ../../Zotlabs/Module/Admin/Site.php:318
+#: ../../Zotlabs/Module/Admin/Site.php:322
msgid "Network timeout"
msgstr "Netzwerk-Timeout"
-#: ../../Zotlabs/Module/Admin/Site.php:318
+#: ../../Zotlabs/Module/Admin/Site.php:322
msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
msgstr "Wert in Sekunden. 0 für unbegrenzt (nicht empfohlen)."
-#: ../../Zotlabs/Module/Admin/Site.php:319
+#: ../../Zotlabs/Module/Admin/Site.php:323
msgid "Delivery interval"
msgstr "Auslieferung Intervall"
-#: ../../Zotlabs/Module/Admin/Site.php:319
+#: ../../Zotlabs/Module/Admin/Site.php:323
msgid ""
"Delay background delivery processes by this many seconds to reduce system "
"load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 "
"for large dedicated servers."
msgstr "Verzögere im Hintergrund laufende Auslieferungsprozesse um die angegebene Anzahl Sekunden, um die Systemlast zu verringern. Empfehlungen: 4-5 für Shared Hosts, 2-3 für VPS, 0-1 für große dedizierte Server."
-#: ../../Zotlabs/Module/Admin/Site.php:320
+#: ../../Zotlabs/Module/Admin/Site.php:324
msgid "Deliveries per process"
msgstr "Zustellungen pro Prozess"
-#: ../../Zotlabs/Module/Admin/Site.php:320
+#: ../../Zotlabs/Module/Admin/Site.php:324
msgid ""
"Number of deliveries to attempt in a single operating system process. Adjust"
" if necessary to tune system performance. Recommend: 1-5."
msgstr "Anzahl der Zustellungen, die innerhalb eines einzelnen Betriebssystemprozesses versucht werden. Anpassen, falls nötig, um die System-Performance zu verbessern. Empfehlung: 1-5."
-#: ../../Zotlabs/Module/Admin/Site.php:321
+#: ../../Zotlabs/Module/Admin/Site.php:325
+msgid "Queue Threshold"
+msgstr "Warteschlangen-Grenzwert"
+
+#: ../../Zotlabs/Module/Admin/Site.php:325
+msgid ""
+"Always defer immediate delivery if queue contains more than this number of "
+"entries."
+msgstr "Unmittelbare Zustellung immer verzögern, wenn die Warteschlange mehr als diese Anzahl von Einträgen enthält."
+
+#: ../../Zotlabs/Module/Admin/Site.php:326
msgid "Poll interval"
msgstr "Abfrageintervall"
-#: ../../Zotlabs/Module/Admin/Site.php:321
+#: ../../Zotlabs/Module/Admin/Site.php:326
msgid ""
"Delay background polling processes by this many seconds to reduce system "
"load. If 0, use delivery interval."
msgstr "Verzögere Hintergrundprozesse um diese Anzahl Sekunden, um die Systemlast zu reduzieren. Bei 0 wird das Auslieferungsintervall verwendet."
-#: ../../Zotlabs/Module/Admin/Site.php:322
+#: ../../Zotlabs/Module/Admin/Site.php:327
msgid "Path to ImageMagick convert program"
msgstr "Pfad zum ImageMagick-Programm convert"
-#: ../../Zotlabs/Module/Admin/Site.php:322
+#: ../../Zotlabs/Module/Admin/Site.php:327
msgid ""
"If set, use this program to generate photo thumbnails for huge images ( > "
"4000 pixels in either dimension), otherwise memory exhaustion may occur. "
"Example: /usr/bin/convert"
msgstr "Wenn gesetzt, dann verwende dieses Programm zum Erzeugen von Vorschaubildern großer Fotos (>4000 Pixel in beiden Richtungen), anderenfalls kann Speicherüberlauf auftreten. Beispiel: /usr/bin/convert"
-#: ../../Zotlabs/Module/Admin/Site.php:323
+#: ../../Zotlabs/Module/Admin/Site.php:328
+msgid "Allow SVG thumbnails in file browser"
+msgstr "Erlaube SVG-Vorschaubilder im Dateibrowser"
+
+#: ../../Zotlabs/Module/Admin/Site.php:328
+msgid "WARNING: SVG images may contain malicious code."
+msgstr "Warnung: SVG-Grafiken können Schadcode enthalten."
+
+#: ../../Zotlabs/Module/Admin/Site.php:329
msgid "Maximum Load Average"
msgstr "Maximales Load Average"
-#: ../../Zotlabs/Module/Admin/Site.php:323
+#: ../../Zotlabs/Module/Admin/Site.php:329
msgid ""
"Maximum system load before delivery and poll processes are deferred - "
"default 50."
msgstr "Maximale Systemlast, bevor Verteil- und Empfangsprozesse verschoben werden – Standard 50"
-#: ../../Zotlabs/Module/Admin/Site.php:324
+#: ../../Zotlabs/Module/Admin/Site.php:330
msgid "Expiration period in days for imported (grid/network) content"
msgstr "Setze den Zeitraum (in Tagen), ab wann importierte (aus dem Netzwerk) Inhalte ablaufen sollen"
-#: ../../Zotlabs/Module/Admin/Site.php:324
+#: ../../Zotlabs/Module/Admin/Site.php:330
msgid "0 for no expiration of imported content"
msgstr "0 = keine Löschung importierter Inhalte"
@@ -3261,19 +3339,19 @@ msgstr "Name der Berechtigungsrolle"
#: ../../Zotlabs/Module/Settings/Permcats.php:103
#: ../../Zotlabs/Module/Settings/Tokens.php:161
-#: ../../Zotlabs/Module/Connedit.php:908
+#: ../../Zotlabs/Module/Connedit.php:908 ../../Zotlabs/Module/Defperms.php:250
msgid "My Settings"
msgstr "Meine Einstellungen"
#: ../../Zotlabs/Module/Settings/Permcats.php:105
#: ../../Zotlabs/Module/Settings/Tokens.php:163
-#: ../../Zotlabs/Module/Connedit.php:903
+#: ../../Zotlabs/Module/Connedit.php:903 ../../Zotlabs/Module/Defperms.php:248
msgid "inherited"
msgstr "geerbt"
#: ../../Zotlabs/Module/Settings/Permcats.php:108
#: ../../Zotlabs/Module/Settings/Tokens.php:166
-#: ../../Zotlabs/Module/Connedit.php:910
+#: ../../Zotlabs/Module/Connedit.php:910 ../../Zotlabs/Module/Defperms.php:253
msgid "Individual Permissions"
msgstr "Individuelle Zugriffsrechte"
@@ -3287,18 +3365,19 @@ msgid ""
" settings here."
msgstr "Einige Berechtigungen werden möglicherweise von den globalen <a href=\"settings\">Sicherheits- und Privatsphäre-Einstellungen</a> dieses Kanals vererbt. Diese haben eine höhere Priorität als die Einstellungen an der Verbindung und können hier nicht verändert werden."
-#: ../../Zotlabs/Module/Settings/Channel.php:62
-#: ../../Zotlabs/Module/Settings/Channel.php:66
-#: ../../Zotlabs/Module/Settings/Channel.php:67
-#: ../../Zotlabs/Module/Settings/Channel.php:70
-#: ../../Zotlabs/Module/Settings/Channel.php:81
+#: ../../Zotlabs/Module/Settings/Channel.php:64
+#: ../../Zotlabs/Module/Settings/Channel.php:68
+#: ../../Zotlabs/Module/Settings/Channel.php:69
+#: ../../Zotlabs/Module/Settings/Channel.php:72
+#: ../../Zotlabs/Module/Settings/Channel.php:83
#: ../../Zotlabs/Module/Connedit.php:711 ../../Zotlabs/Widget/Affinity.php:28
-#: ../../include/selectors.php:123 ../../include/channel.php:423
-#: ../../include/channel.php:424 ../../include/channel.php:431
+#: ../../include/selectors.php:123 ../../include/channel.php:437
+#: ../../include/channel.php:438 ../../include/channel.php:445
msgid "Friends"
msgstr "Freunde"
-#: ../../Zotlabs/Module/Settings/Channel.php:255
+#: ../../Zotlabs/Module/Settings/Channel.php:262
+#: ../../Zotlabs/Module/Defperms.php:103
#: ../../addon/rendezvous/rendezvous.php:82
#: ../../addon/openstreetmap/openstreetmap.php:184
#: ../../addon/msgfooter/msgfooter.php:54 ../../addon/logrot/logrot.php:54
@@ -3307,388 +3386,403 @@ msgstr "Freunde"
msgid "Settings updated."
msgstr "Einstellungen aktualisiert."
-#: ../../Zotlabs/Module/Settings/Channel.php:316
+#: ../../Zotlabs/Module/Settings/Channel.php:323
msgid "Nobody except yourself"
msgstr "Niemand außer Dir selbst"
-#: ../../Zotlabs/Module/Settings/Channel.php:317
+#: ../../Zotlabs/Module/Settings/Channel.php:324
msgid "Only those you specifically allow"
msgstr "Nur die, denen Du es explizit erlaubst"
-#: ../../Zotlabs/Module/Settings/Channel.php:318
+#: ../../Zotlabs/Module/Settings/Channel.php:325
msgid "Approved connections"
msgstr "Angenommene Verbindungen"
-#: ../../Zotlabs/Module/Settings/Channel.php:319
+#: ../../Zotlabs/Module/Settings/Channel.php:326
msgid "Any connections"
msgstr "Beliebige Verbindungen"
-#: ../../Zotlabs/Module/Settings/Channel.php:320
+#: ../../Zotlabs/Module/Settings/Channel.php:327
msgid "Anybody on this website"
msgstr "Jeder auf dieser Website"
-#: ../../Zotlabs/Module/Settings/Channel.php:321
+#: ../../Zotlabs/Module/Settings/Channel.php:328
msgid "Anybody in this network"
msgstr "Alle $Projectname-Mitglieder"
-#: ../../Zotlabs/Module/Settings/Channel.php:322
+#: ../../Zotlabs/Module/Settings/Channel.php:329
msgid "Anybody authenticated"
msgstr "Jeder authentifizierte"
-#: ../../Zotlabs/Module/Settings/Channel.php:323
+#: ../../Zotlabs/Module/Settings/Channel.php:330
msgid "Anybody on the internet"
msgstr "Jeder im Internet"
-#: ../../Zotlabs/Module/Settings/Channel.php:399
+#: ../../Zotlabs/Module/Settings/Channel.php:406
msgid "Publish your default profile in the network directory"
msgstr "Standard-Profil im Netzwerk-Verzeichnis veröffentlichen"
-#: ../../Zotlabs/Module/Settings/Channel.php:404
+#: ../../Zotlabs/Module/Settings/Channel.php:411
msgid "Allow us to suggest you as a potential friend to new members?"
msgstr "Dürfen wir Dich neuen Mitgliedern als potentiellen Kontakt vorschlagen?"
-#: ../../Zotlabs/Module/Settings/Channel.php:408
-#: ../../Zotlabs/Module/Profile_photo.php:437
+#: ../../Zotlabs/Module/Settings/Channel.php:415
+#: ../../Zotlabs/Module/Profile_photo.php:443
#: ../../Zotlabs/Module/Cover_photo.php:365
msgid "or"
msgstr "oder"
-#: ../../Zotlabs/Module/Settings/Channel.php:413
+#: ../../Zotlabs/Module/Settings/Channel.php:420
msgid "Your channel address is"
msgstr "Deine Kanal-Adresse lautet"
-#: ../../Zotlabs/Module/Settings/Channel.php:416
+#: ../../Zotlabs/Module/Settings/Channel.php:423
msgid "Your files/photos are accessible via WebDAV at"
msgstr "Deine Dateien/Fotos sind via WebDAV verfügbar auf"
-#: ../../Zotlabs/Module/Settings/Channel.php:478
+#: ../../Zotlabs/Module/Settings/Channel.php:487
msgid "Channel Settings"
msgstr "Kanal-Einstellungen"
-#: ../../Zotlabs/Module/Settings/Channel.php:485
+#: ../../Zotlabs/Module/Settings/Channel.php:494
msgid "Basic Settings"
msgstr "Grundeinstellungen"
-#: ../../Zotlabs/Module/Settings/Channel.php:486
-#: ../../include/channel.php:1473
+#: ../../Zotlabs/Module/Settings/Channel.php:495
+#: ../../include/channel.php:1521
msgid "Full Name:"
msgstr "Voller Name:"
-#: ../../Zotlabs/Module/Settings/Channel.php:487
+#: ../../Zotlabs/Module/Settings/Channel.php:496
#: ../../Zotlabs/Module/Settings/Account.php:119
msgid "Email Address:"
msgstr "Email Adresse:"
-#: ../../Zotlabs/Module/Settings/Channel.php:488
+#: ../../Zotlabs/Module/Settings/Channel.php:497
msgid "Your Timezone:"
msgstr "Ihre Zeitzone:"
-#: ../../Zotlabs/Module/Settings/Channel.php:489
+#: ../../Zotlabs/Module/Settings/Channel.php:498
msgid "Default Post Location:"
msgstr "Standardstandort:"
-#: ../../Zotlabs/Module/Settings/Channel.php:489
+#: ../../Zotlabs/Module/Settings/Channel.php:498
msgid "Geographical location to display on your posts"
msgstr "Geografischer Ort, der bei Deinen Beiträgen angezeigt werden soll"
-#: ../../Zotlabs/Module/Settings/Channel.php:490
+#: ../../Zotlabs/Module/Settings/Channel.php:499
msgid "Use Browser Location:"
msgstr "Standort des Browsers verwenden:"
-#: ../../Zotlabs/Module/Settings/Channel.php:492
+#: ../../Zotlabs/Module/Settings/Channel.php:501
msgid "Adult Content"
msgstr "Nicht jugendfreie Inhalte"
-#: ../../Zotlabs/Module/Settings/Channel.php:492
+#: ../../Zotlabs/Module/Settings/Channel.php:501
msgid ""
"This channel frequently or regularly publishes adult content. (Please tag "
"any adult material and/or nudity with #NSFW)"
msgstr "Dieser Kanal veröffentlicht regelmäßig Inhalte, die für Minderjährige ungeeignet sind. (Bitte markiere solche Inhalte mit dem Schlagwort #NSFW)"
-#: ../../Zotlabs/Module/Settings/Channel.php:494
+#: ../../Zotlabs/Module/Settings/Channel.php:503
msgid "Security and Privacy Settings"
msgstr "Sicherheits- und Datenschutz-Einstellungen"
-#: ../../Zotlabs/Module/Settings/Channel.php:496
+#: ../../Zotlabs/Module/Settings/Channel.php:505
msgid "Your permissions are already configured. Click to view/adjust"
msgstr "Deine Zugriffsrechte sind schon konfiguriert. Klicke hier, um sie zu betrachten oder zu ändern"
-#: ../../Zotlabs/Module/Settings/Channel.php:498
+#: ../../Zotlabs/Module/Settings/Channel.php:507
msgid "Hide my online presence"
msgstr "Meine Online-Präsenz verbergen"
-#: ../../Zotlabs/Module/Settings/Channel.php:498
+#: ../../Zotlabs/Module/Settings/Channel.php:507
msgid "Prevents displaying in your profile that you are online"
msgstr "Verhindert die Anzeige Deines Online-Status in deinem Profil"
-#: ../../Zotlabs/Module/Settings/Channel.php:500
+#: ../../Zotlabs/Module/Settings/Channel.php:509
msgid "Simple Privacy Settings:"
msgstr "Einfache Privatsphäre-Einstellungen"
-#: ../../Zotlabs/Module/Settings/Channel.php:501
+#: ../../Zotlabs/Module/Settings/Channel.php:510
msgid ""
"Very Public - <em>extremely permissive (should be used with caution)</em>"
msgstr "Komplett offen – <em>extrem ungeschützt (mit großer Vorsicht verwenden!)</em>"
-#: ../../Zotlabs/Module/Settings/Channel.php:502
+#: ../../Zotlabs/Module/Settings/Channel.php:511
msgid ""
"Typical - <em>default public, privacy when desired (similar to social "
"network permissions but with improved privacy)</em>"
msgstr "Typisch – <em>Standard öffentlich, Privatsphäre, wo sie erwünscht ist (ähnlich den Einstellungen in sozialen Netzwerken, aber mit besser geschützter Privatsphäre)</em>"
-#: ../../Zotlabs/Module/Settings/Channel.php:503
+#: ../../Zotlabs/Module/Settings/Channel.php:512
msgid "Private - <em>default private, never open or public</em>"
msgstr "Privat – <em>Standard privat, nie offen oder öffentlich</em>"
-#: ../../Zotlabs/Module/Settings/Channel.php:504
+#: ../../Zotlabs/Module/Settings/Channel.php:513
msgid "Blocked - <em>default blocked to/from everybody</em>"
msgstr "Blockiert – <em>Alle standardmäßig blockiert</em>"
-#: ../../Zotlabs/Module/Settings/Channel.php:506
+#: ../../Zotlabs/Module/Settings/Channel.php:515
msgid "Allow others to tag your posts"
msgstr "Erlaube anderen, Deine Beiträge zu verschlagworten"
-#: ../../Zotlabs/Module/Settings/Channel.php:506
+#: ../../Zotlabs/Module/Settings/Channel.php:515
msgid ""
"Often used by the community to retro-actively flag inappropriate content"
msgstr "Wird oft von der Community genutzt um rückwirkend anstößigen Inhalt zu markieren"
-#: ../../Zotlabs/Module/Settings/Channel.php:508
+#: ../../Zotlabs/Module/Settings/Channel.php:517
msgid "Channel Permission Limits"
msgstr "Kanal-Berechtigungslimits"
-#: ../../Zotlabs/Module/Settings/Channel.php:510
+#: ../../Zotlabs/Module/Settings/Channel.php:519
msgid "Expire other channel content after this many days"
msgstr "Den Inhalt anderer Kanäle nach dieser Anzahl Tage verfallen lassen"
-#: ../../Zotlabs/Module/Settings/Channel.php:510
+#: ../../Zotlabs/Module/Settings/Channel.php:519
msgid "0 or blank to use the website limit."
msgstr "0 oder leer lassen, um den voreingestellten Wert der Webseite zu verwenden."
-#: ../../Zotlabs/Module/Settings/Channel.php:510
+#: ../../Zotlabs/Module/Settings/Channel.php:519
#, php-format
msgid "This website expires after %d days."
msgstr "Diese Webseite läuft nach %d Tagen ab."
-#: ../../Zotlabs/Module/Settings/Channel.php:510
+#: ../../Zotlabs/Module/Settings/Channel.php:519
msgid "This website does not expire imported content."
msgstr "Diese Webseite lässt importierte Inhalte nicht verfallen."
-#: ../../Zotlabs/Module/Settings/Channel.php:510
+#: ../../Zotlabs/Module/Settings/Channel.php:519
msgid "The website limit takes precedence if lower than your limit."
msgstr "Das Verfallslimit der Webseite hat Vorrang, wenn es niedriger als Deines hier ist."
-#: ../../Zotlabs/Module/Settings/Channel.php:511
+#: ../../Zotlabs/Module/Settings/Channel.php:520
msgid "Maximum Friend Requests/Day:"
msgstr "Maximale Kontaktanfragen pro Tag:"
-#: ../../Zotlabs/Module/Settings/Channel.php:511
+#: ../../Zotlabs/Module/Settings/Channel.php:520
msgid "May reduce spam activity"
msgstr "Kann die Spam-Aktivität verringern"
-#: ../../Zotlabs/Module/Settings/Channel.php:512
+#: ../../Zotlabs/Module/Settings/Channel.php:521
msgid "Default Privacy Group"
msgstr "Standard-Gruppe"
-#: ../../Zotlabs/Module/Settings/Channel.php:514
+#: ../../Zotlabs/Module/Settings/Channel.php:523
msgid "Use my default audience setting for the type of object published"
msgstr "Verwende Deine eingestellte Standard-Zielgruppe des jeweiligen Inhaltstyps"
-#: ../../Zotlabs/Module/Settings/Channel.php:521
+#: ../../Zotlabs/Module/Settings/Channel.php:524
+msgid "Profile to assign new connections"
+msgstr "Profil, welches neuen Verbindungen zugewiesen wird"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:533
msgid "Channel permissions category:"
msgstr "Zugriffsrechte-Kategorie des Kanals:"
-#: ../../Zotlabs/Module/Settings/Channel.php:522
+#: ../../Zotlabs/Module/Settings/Channel.php:534
msgid "Default Permissions Group"
msgstr "Standard-Berechtigungsgruppe"
-#: ../../Zotlabs/Module/Settings/Channel.php:528
+#: ../../Zotlabs/Module/Settings/Channel.php:540
msgid "Maximum private messages per day from unknown people:"
msgstr "Maximale Anzahl privater Nachrichten pro Tag von unbekannten Leuten:"
-#: ../../Zotlabs/Module/Settings/Channel.php:528
+#: ../../Zotlabs/Module/Settings/Channel.php:540
msgid "Useful to reduce spamming"
msgstr "Nützlich, um Spam zu verringern"
-#: ../../Zotlabs/Module/Settings/Channel.php:531
+#: ../../Zotlabs/Module/Settings/Channel.php:543
msgid "Notification Settings"
msgstr "Benachrichtigungs-Einstellungen"
-#: ../../Zotlabs/Module/Settings/Channel.php:532
+#: ../../Zotlabs/Module/Settings/Channel.php:544
msgid "By default post a status message when:"
msgstr "Sende standardmäßig Status-Nachrichten, wenn:"
-#: ../../Zotlabs/Module/Settings/Channel.php:533
+#: ../../Zotlabs/Module/Settings/Channel.php:545
msgid "accepting a friend request"
msgstr "Du eine Verbindungsanfrage annimmst"
-#: ../../Zotlabs/Module/Settings/Channel.php:534
+#: ../../Zotlabs/Module/Settings/Channel.php:546
msgid "joining a forum/community"
msgstr "Du einem Forum beitrittst"
-#: ../../Zotlabs/Module/Settings/Channel.php:535
+#: ../../Zotlabs/Module/Settings/Channel.php:547
msgid "making an <em>interesting</em> profile change"
msgstr "Du eine <em>interessante</em> Änderung an Deinem Profil vornimmst"
-#: ../../Zotlabs/Module/Settings/Channel.php:536
+#: ../../Zotlabs/Module/Settings/Channel.php:548
msgid "Send a notification email when:"
msgstr "Eine E-Mail-Benachrichtigung senden, wenn:"
-#: ../../Zotlabs/Module/Settings/Channel.php:537
+#: ../../Zotlabs/Module/Settings/Channel.php:549
msgid "You receive a connection request"
msgstr "Du eine Verbindungsanfrage erhältst"
-#: ../../Zotlabs/Module/Settings/Channel.php:538
+#: ../../Zotlabs/Module/Settings/Channel.php:550
msgid "Your connections are confirmed"
msgstr "Eine Verbindung bestätigt wurde"
-#: ../../Zotlabs/Module/Settings/Channel.php:539
+#: ../../Zotlabs/Module/Settings/Channel.php:551
msgid "Someone writes on your profile wall"
msgstr "Jemand auf Deine Pinnwand schreibt"
-#: ../../Zotlabs/Module/Settings/Channel.php:540
+#: ../../Zotlabs/Module/Settings/Channel.php:552
msgid "Someone writes a followup comment"
msgstr "Jemand einen Beitrag kommentiert"
-#: ../../Zotlabs/Module/Settings/Channel.php:541
+#: ../../Zotlabs/Module/Settings/Channel.php:553
msgid "You receive a private message"
msgstr "Du eine private Nachricht erhältst"
-#: ../../Zotlabs/Module/Settings/Channel.php:542
+#: ../../Zotlabs/Module/Settings/Channel.php:554
msgid "You receive a friend suggestion"
msgstr "Du einen Kontaktvorschlag erhältst"
-#: ../../Zotlabs/Module/Settings/Channel.php:543
+#: ../../Zotlabs/Module/Settings/Channel.php:555
msgid "You are tagged in a post"
msgstr "Du in einem Beitrag erwähnt wurdest"
-#: ../../Zotlabs/Module/Settings/Channel.php:544
+#: ../../Zotlabs/Module/Settings/Channel.php:556
msgid "You are poked/prodded/etc. in a post"
msgstr "Du in einem Beitrag angestupst/geknufft/o.ä. wurdest"
-#: ../../Zotlabs/Module/Settings/Channel.php:546
+#: ../../Zotlabs/Module/Settings/Channel.php:558
msgid "Someone likes your post/comment"
msgstr "Jemand mag Ihren Beitrag/Kommentar"
-#: ../../Zotlabs/Module/Settings/Channel.php:549
+#: ../../Zotlabs/Module/Settings/Channel.php:561
msgid "Show visual notifications including:"
msgstr "Visuelle Benachrichtigungen anzeigen für:"
-#: ../../Zotlabs/Module/Settings/Channel.php:551
+#: ../../Zotlabs/Module/Settings/Channel.php:563
msgid "Unseen grid activity"
msgstr "Ungesehene Netzwerk-Aktivität"
-#: ../../Zotlabs/Module/Settings/Channel.php:552
+#: ../../Zotlabs/Module/Settings/Channel.php:564
msgid "Unseen channel activity"
msgstr "Ungesehene Kanal-Aktivität"
-#: ../../Zotlabs/Module/Settings/Channel.php:553
+#: ../../Zotlabs/Module/Settings/Channel.php:565
msgid "Unseen private messages"
msgstr "Ungelesene persönliche Nachrichten"
-#: ../../Zotlabs/Module/Settings/Channel.php:553
-#: ../../Zotlabs/Module/Settings/Channel.php:558
-#: ../../Zotlabs/Module/Settings/Channel.php:559
-#: ../../Zotlabs/Module/Settings/Channel.php:560
+#: ../../Zotlabs/Module/Settings/Channel.php:565
+#: ../../Zotlabs/Module/Settings/Channel.php:570
+#: ../../Zotlabs/Module/Settings/Channel.php:571
+#: ../../Zotlabs/Module/Settings/Channel.php:572
#: ../../addon/jappixmini/jappixmini.php:343
msgid "Recommended"
msgstr "Empfohlen"
-#: ../../Zotlabs/Module/Settings/Channel.php:554
+#: ../../Zotlabs/Module/Settings/Channel.php:566
msgid "Upcoming events"
msgstr "Baldige Termine"
-#: ../../Zotlabs/Module/Settings/Channel.php:555
+#: ../../Zotlabs/Module/Settings/Channel.php:567
msgid "Events today"
msgstr "Heutige Termine"
-#: ../../Zotlabs/Module/Settings/Channel.php:556
+#: ../../Zotlabs/Module/Settings/Channel.php:568
msgid "Upcoming birthdays"
msgstr "Baldige Geburtstage"
-#: ../../Zotlabs/Module/Settings/Channel.php:556
+#: ../../Zotlabs/Module/Settings/Channel.php:568
msgid "Not available in all themes"
msgstr "Nicht in allen Designs verfügbar"
-#: ../../Zotlabs/Module/Settings/Channel.php:557
+#: ../../Zotlabs/Module/Settings/Channel.php:569
msgid "System (personal) notifications"
msgstr "System – (persönliche) Benachrichtigungen"
-#: ../../Zotlabs/Module/Settings/Channel.php:558
+#: ../../Zotlabs/Module/Settings/Channel.php:570
msgid "System info messages"
msgstr "System – Info-Nachrichten"
-#: ../../Zotlabs/Module/Settings/Channel.php:559
+#: ../../Zotlabs/Module/Settings/Channel.php:571
msgid "System critical alerts"
msgstr "System – kritische Warnungen"
-#: ../../Zotlabs/Module/Settings/Channel.php:560
+#: ../../Zotlabs/Module/Settings/Channel.php:572
msgid "New connections"
msgstr "Neue Verbindungen"
-#: ../../Zotlabs/Module/Settings/Channel.php:561
+#: ../../Zotlabs/Module/Settings/Channel.php:573
msgid "System Registrations"
msgstr "System – Registrierungen"
-#: ../../Zotlabs/Module/Settings/Channel.php:562
+#: ../../Zotlabs/Module/Settings/Channel.php:574
msgid "Unseen shared files"
msgstr "Ungesehene geteilte Dateien"
-#: ../../Zotlabs/Module/Settings/Channel.php:563
+#: ../../Zotlabs/Module/Settings/Channel.php:575
msgid "Unseen public activity"
msgstr "Ungesehene öffentliche Aktivität"
-#: ../../Zotlabs/Module/Settings/Channel.php:564
+#: ../../Zotlabs/Module/Settings/Channel.php:576
+msgid "Email notification hub (hostname)"
+msgstr "Hub für E-Mail-Benachrichtigungen (Hostname)"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:576
+#, php-format
+msgid ""
+"If your channel is mirrored to multiple hubs, set this to your preferred "
+"location. This will prevent duplicate email notifications. Example: %s"
+msgstr "Wenn Dein Kanal auf mehreren Hubs geklont ist, setze die Einstellung auf deinen bevorzugten Hub. Dies verhindert Mehrfachzustellung von E-Mail-Benachrichtigungen. Beispiel: %s"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:577
msgid ""
"Also show new wall posts, private messages and connections under Notices"
msgstr "Neue Pinnwand-Nachrichten, private Nachrichten und Verbindungen unter Benachrichtigungen anzeigen"
-#: ../../Zotlabs/Module/Settings/Channel.php:566
+#: ../../Zotlabs/Module/Settings/Channel.php:579
msgid "Notify me of events this many days in advance"
msgstr "Benachrichtige mich zu Terminen so viele Tage im Voraus"
-#: ../../Zotlabs/Module/Settings/Channel.php:566
+#: ../../Zotlabs/Module/Settings/Channel.php:579
msgid "Must be greater than 0"
msgstr "Muss größer als 0 sein"
-#: ../../Zotlabs/Module/Settings/Channel.php:572
+#: ../../Zotlabs/Module/Settings/Channel.php:585
msgid "Advanced Account/Page Type Settings"
msgstr "Erweiterte Account- und Seitenart-Einstellungen"
-#: ../../Zotlabs/Module/Settings/Channel.php:573
+#: ../../Zotlabs/Module/Settings/Channel.php:586
msgid "Change the behaviour of this account for special situations"
msgstr "Ändere das Verhalten dieses Accounts unter speziellen Umständen"
-#: ../../Zotlabs/Module/Settings/Channel.php:575
+#: ../../Zotlabs/Module/Settings/Channel.php:588
msgid "Miscellaneous Settings"
msgstr "Sonstige Einstellungen"
-#: ../../Zotlabs/Module/Settings/Channel.php:576
+#: ../../Zotlabs/Module/Settings/Channel.php:589
msgid "Default photo upload folder"
msgstr "Voreingestellter Ordner für hochgeladene Fotos"
-#: ../../Zotlabs/Module/Settings/Channel.php:576
-#: ../../Zotlabs/Module/Settings/Channel.php:577
+#: ../../Zotlabs/Module/Settings/Channel.php:589
+#: ../../Zotlabs/Module/Settings/Channel.php:590
msgid "%Y - current year, %m - current month"
msgstr "%Y - aktuelles Jahr, %m - aktueller Monat"
-#: ../../Zotlabs/Module/Settings/Channel.php:577
+#: ../../Zotlabs/Module/Settings/Channel.php:590
msgid "Default file upload folder"
msgstr "Voreingestellter Ordner für hochgeladene Dateien"
-#: ../../Zotlabs/Module/Settings/Channel.php:579
+#: ../../Zotlabs/Module/Settings/Channel.php:592
msgid "Personal menu to display in your channel pages"
msgstr "Eigenes Menü zur Anzeige auf den Seiten deines Kanals"
-#: ../../Zotlabs/Module/Settings/Channel.php:581
+#: ../../Zotlabs/Module/Settings/Channel.php:594
msgid "Remove this channel."
msgstr "Diesen Kanal löschen"
-#: ../../Zotlabs/Module/Settings/Channel.php:582
+#: ../../Zotlabs/Module/Settings/Channel.php:595
msgid "Firefox Share $Projectname provider"
msgstr "$Projectname-Provider für Firefox Share"
-#: ../../Zotlabs/Module/Settings/Channel.php:583
+#: ../../Zotlabs/Module/Settings/Channel.php:596
msgid "Start calendar week on Monday"
msgstr "Beginne die kalendarische Woche am Montag"
@@ -3842,116 +3936,124 @@ msgstr "Beziehungsgrad-Schieberegler-Einstellungen"
msgid "Feature/Addon Settings"
msgstr "Funktions-/Addon-Einstellungen"
-#: ../../Zotlabs/Module/Settings/Display.php:145
+#: ../../Zotlabs/Module/Settings/Display.php:147
msgid "No special theme for mobile devices"
msgstr "Kein spezielles Design für mobile Geräte"
-#: ../../Zotlabs/Module/Settings/Display.php:148
+#: ../../Zotlabs/Module/Settings/Display.php:150
#, php-format
msgid "%s - (Experimental)"
msgstr "%s – (experimentell)"
-#: ../../Zotlabs/Module/Settings/Display.php:202
+#: ../../Zotlabs/Module/Settings/Display.php:204
msgid "Display Settings"
msgstr "Anzeige-Einstellungen"
-#: ../../Zotlabs/Module/Settings/Display.php:203
+#: ../../Zotlabs/Module/Settings/Display.php:205
msgid "Theme Settings"
msgstr "Design-Einstellungen"
-#: ../../Zotlabs/Module/Settings/Display.php:204
+#: ../../Zotlabs/Module/Settings/Display.php:206
msgid "Custom Theme Settings"
msgstr "Benutzerdefinierte Design-Einstellungen"
-#: ../../Zotlabs/Module/Settings/Display.php:205
+#: ../../Zotlabs/Module/Settings/Display.php:207
msgid "Content Settings"
msgstr "Inhaltseinstellungen"
-#: ../../Zotlabs/Module/Settings/Display.php:211
+#: ../../Zotlabs/Module/Settings/Display.php:213
msgid "Display Theme:"
msgstr "Anzeige-Design:"
-#: ../../Zotlabs/Module/Settings/Display.php:212
+#: ../../Zotlabs/Module/Settings/Display.php:214
msgid "Select scheme"
msgstr "Schema wählen"
-#: ../../Zotlabs/Module/Settings/Display.php:214
+#: ../../Zotlabs/Module/Settings/Display.php:216
msgid "Mobile Theme:"
msgstr "Design für mobile Geräte:"
-#: ../../Zotlabs/Module/Settings/Display.php:215
+#: ../../Zotlabs/Module/Settings/Display.php:217
msgid "Preload images before rendering the page"
msgstr "Bilder im voraus laden, bevor die Seite angezeigt wird"
-#: ../../Zotlabs/Module/Settings/Display.php:215
+#: ../../Zotlabs/Module/Settings/Display.php:217
msgid ""
"The subjective page load time will be longer but the page will be ready when"
" displayed"
msgstr "Die empfundene Ladezeit wird sich erhöhen, aber dafür ist das Layout stabil, sobald eine Seite angezeigt wird"
-#: ../../Zotlabs/Module/Settings/Display.php:216
+#: ../../Zotlabs/Module/Settings/Display.php:218
msgid "Enable user zoom on mobile devices"
msgstr "Zoom auf Mobilgeräten aktivieren"
-#: ../../Zotlabs/Module/Settings/Display.php:217
+#: ../../Zotlabs/Module/Settings/Display.php:219
msgid "Update browser every xx seconds"
msgstr "Browser alle xx Sekunden aktualisieren"
-#: ../../Zotlabs/Module/Settings/Display.php:217
+#: ../../Zotlabs/Module/Settings/Display.php:219
msgid "Minimum of 10 seconds, no maximum"
msgstr "Minimum 10 Sekunden, kein Maximum"
-#: ../../Zotlabs/Module/Settings/Display.php:218
+#: ../../Zotlabs/Module/Settings/Display.php:220
msgid "Maximum number of conversations to load at any time:"
msgstr "Maximale Anzahl von Unterhaltungen, die auf einmal geladen werden sollen:"
-#: ../../Zotlabs/Module/Settings/Display.php:218
+#: ../../Zotlabs/Module/Settings/Display.php:220
msgid "Maximum of 100 items"
msgstr "Maximum: 100 Beiträge"
-#: ../../Zotlabs/Module/Settings/Display.php:219
+#: ../../Zotlabs/Module/Settings/Display.php:221
msgid "Show emoticons (smilies) as images"
msgstr "Emoticons (Smilies) als Bilder anzeigen"
-#: ../../Zotlabs/Module/Settings/Display.php:220
+#: ../../Zotlabs/Module/Settings/Display.php:222
+msgid "Provide channel menu in navigation bar"
+msgstr "Kanal-Menü in der Navigationsleiste zur Verfügung stellen"
+
+#: ../../Zotlabs/Module/Settings/Display.php:222
+msgid "Default: channel menu located in app menu"
+msgstr "Voreinstellung: Kanal-Menü ist im App-Menü integriert"
+
+#: ../../Zotlabs/Module/Settings/Display.php:223
msgid "Manual conversation updates"
msgstr "Manuelle Konversationsaktualisierung"
-#: ../../Zotlabs/Module/Settings/Display.php:220
+#: ../../Zotlabs/Module/Settings/Display.php:223
msgid "Default is on, turning this off may increase screen jumping"
msgstr "Voreinstellung ist An, dies abzuschalten kann das unerwartete Springen der Seitenanzeige erhöhen."
-#: ../../Zotlabs/Module/Settings/Display.php:221
+#: ../../Zotlabs/Module/Settings/Display.php:224
msgid "Link post titles to source"
msgstr "Beitragstitel zum Originalbeitrag verlinken"
-#: ../../Zotlabs/Module/Settings/Display.php:222
+#: ../../Zotlabs/Module/Settings/Display.php:225
msgid "System Page Layout Editor - (advanced)"
msgstr "System-Seitenlayout-Editor (für Experten)"
-#: ../../Zotlabs/Module/Settings/Display.php:225
+#: ../../Zotlabs/Module/Settings/Display.php:228
msgid "Use blog/list mode on channel page"
msgstr "Blog-/Listenmodus auf der Kanalseite verwenden"
-#: ../../Zotlabs/Module/Settings/Display.php:225
-#: ../../Zotlabs/Module/Settings/Display.php:226
+#: ../../Zotlabs/Module/Settings/Display.php:228
+#: ../../Zotlabs/Module/Settings/Display.php:229
msgid "(comments displayed separately)"
msgstr "(Kommentare werden separat angezeigt)"
-#: ../../Zotlabs/Module/Settings/Display.php:226
+#: ../../Zotlabs/Module/Settings/Display.php:229
msgid "Use blog/list mode on grid page"
msgstr "Blog-/Listenmodus auf der Netzwerkseite verwenden"
-#: ../../Zotlabs/Module/Settings/Display.php:227
+#: ../../Zotlabs/Module/Settings/Display.php:230
msgid "Channel page max height of content (in pixels)"
msgstr "Maximale Höhe von Beitragsblöcken auf der Kanalseite (in Pixeln)"
-#: ../../Zotlabs/Module/Settings/Display.php:227
-#: ../../Zotlabs/Module/Settings/Display.php:228
+#: ../../Zotlabs/Module/Settings/Display.php:230
+#: ../../Zotlabs/Module/Settings/Display.php:231
msgid "click to expand content exceeding this height"
msgstr "Blöcke, deren Inhalt diese Höhe überschreitet, können per Klick vergrößert werden."
-#: ../../Zotlabs/Module/Settings/Display.php:228
+#: ../../Zotlabs/Module/Settings/Display.php:231
msgid "Grid page max height of content (in pixels)"
msgstr "Maximale Höhe (in Pixel) des Inhalts der Netzwerkseite"
@@ -3975,7 +4077,7 @@ msgstr "Name der Anwendung"
#: ../../Zotlabs/Module/Settings/Oauth.php:90
#: ../../Zotlabs/Module/Settings/Oauth.php:116
-#: ../../addon/statusnet/statusnet.php:893 ../../addon/twitter/twitter.php:775
+#: ../../addon/statusnet/statusnet.php:894 ../../addon/twitter/twitter.php:775
msgid "Consumer Key"
msgstr "Consumer Key"
@@ -3986,7 +4088,7 @@ msgstr "Automatisch erzeugt – ändern, falls erwünscht. Maximale Länge 20"
#: ../../Zotlabs/Module/Settings/Oauth.php:91
#: ../../Zotlabs/Module/Settings/Oauth.php:117
-#: ../../addon/statusnet/statusnet.php:892 ../../addon/twitter/twitter.php:776
+#: ../../addon/statusnet/statusnet.php:893 ../../addon/twitter/twitter.php:776
msgid "Consumer Secret"
msgstr "Consumer Secret"
@@ -4032,24 +4134,25 @@ msgid "Remove authorization"
msgstr "Authorisierung aufheben"
#: ../../Zotlabs/Module/Embedphotos.php:140
-#: ../../Zotlabs/Module/Photos.php:758 ../../Zotlabs/Module/Photos.php:1297
-#: ../../Zotlabs/Widget/Portfolio.php:78 ../../Zotlabs/Widget/Album.php:78
+#: ../../Zotlabs/Module/Photos.php:811 ../../Zotlabs/Module/Photos.php:1350
+#: ../../Zotlabs/Widget/Portfolio.php:87 ../../Zotlabs/Widget/Album.php:78
msgid "View Photo"
msgstr "Foto ansehen"
#: ../../Zotlabs/Module/Embedphotos.php:156
-#: ../../Zotlabs/Module/Photos.php:789 ../../Zotlabs/Widget/Portfolio.php:97
+#: ../../Zotlabs/Module/Photos.php:842 ../../Zotlabs/Widget/Portfolio.php:108
#: ../../Zotlabs/Widget/Album.php:95
msgid "Edit Album"
msgstr "Album bearbeiten"
#: ../../Zotlabs/Module/Embedphotos.php:158
-#: ../../Zotlabs/Module/Photos.php:791 ../../Zotlabs/Module/Photos.php:1328
-#: ../../Zotlabs/Module/Profile_photo.php:431
+#: ../../Zotlabs/Module/Photos.php:712 ../../Zotlabs/Module/Photos.php:844
+#: ../../Zotlabs/Module/Photos.php:1381
+#: ../../Zotlabs/Module/Profile_photo.php:437
#: ../../Zotlabs/Module/Cover_photo.php:361
-#: ../../Zotlabs/Storage/Browser.php:230 ../../Zotlabs/Storage/Browser.php:337
-#: ../../Zotlabs/Widget/Cdav.php:132 ../../Zotlabs/Widget/Cdav.php:168
-#: ../../Zotlabs/Widget/Portfolio.php:99 ../../Zotlabs/Widget/Album.php:97
+#: ../../Zotlabs/Storage/Browser.php:274 ../../Zotlabs/Storage/Browser.php:381
+#: ../../Zotlabs/Widget/Cdav.php:133 ../../Zotlabs/Widget/Cdav.php:169
+#: ../../Zotlabs/Widget/Portfolio.php:110 ../../Zotlabs/Widget/Album.php:97
msgid "Upload"
msgstr "Hochladen"
@@ -4111,9 +4214,9 @@ msgid "URL for photo of thing (optional)"
msgstr "URL eines Fotos der Sache (optional)"
#: ../../Zotlabs/Module/Thing.php:314 ../../Zotlabs/Module/Thing.php:367
-#: ../../Zotlabs/Module/Photos.php:649 ../../Zotlabs/Module/Photos.php:1018
+#: ../../Zotlabs/Module/Photos.php:702 ../../Zotlabs/Module/Photos.php:1071
#: ../../Zotlabs/Module/Connedit.php:676 ../../Zotlabs/Module/Chat.php:235
-#: ../../Zotlabs/Module/Filestorage.php:142
+#: ../../Zotlabs/Module/Filestorage.php:147
#: ../../include/acl_selectors.php:218
msgid "Permissions"
msgstr "Berechtigungen"
@@ -4123,12 +4226,12 @@ msgid "Add Thing to your Profile"
msgstr "Die Sache Deinem Profil hinzufügen"
#: ../../Zotlabs/Module/Notify.php:61
-#: ../../Zotlabs/Module/Notifications.php:38
+#: ../../Zotlabs/Module/Notifications.php:57
msgid "No more system notifications."
msgstr "Keine System-Benachrichtigungen mehr."
#: ../../Zotlabs/Module/Notify.php:65
-#: ../../Zotlabs/Module/Notifications.php:42
+#: ../../Zotlabs/Module/Notifications.php:61
msgid "System Notifications"
msgstr "System-Benachrichtigungen"
@@ -4146,7 +4249,7 @@ msgid "No channel. Import failed."
msgstr "Kein Kanal. Import fehlgeschlagen."
#: ../../Zotlabs/Module/Import.php:481
-#: ../../addon/diaspora/import_diaspora.php:142
+#: ../../addon/diaspora/import_diaspora.php:139
msgid "Import completed."
msgstr "Import abgeschlossen."
@@ -4211,30 +4314,24 @@ msgstr "Dieser Vorgang kann einige Minuten dauern. Bitte sende das Formular nur
msgid "Authentication failed."
msgstr "Authentifizierung fehlgeschlagen."
-#: ../../Zotlabs/Module/Rmagic.php:75 ../../boot.php:1640
-#: ../../include/channel.php:2204
+#: ../../Zotlabs/Module/Rmagic.php:75 ../../boot.php:1665
+#: ../../include/channel.php:2301
msgid "Remote Authentication"
msgstr "Entfernte Authentifizierung"
-#: ../../Zotlabs/Module/Rmagic.php:76 ../../include/channel.php:2205
+#: ../../Zotlabs/Module/Rmagic.php:76 ../../include/channel.php:2302
msgid "Enter your channel address (e.g. channel@example.com)"
msgstr "Deine Kanal-Adresse (z. B. channel@example.com)"
-#: ../../Zotlabs/Module/Rmagic.php:77 ../../include/channel.php:2206
+#: ../../Zotlabs/Module/Rmagic.php:77 ../../include/channel.php:2303
msgid "Authenticate"
msgstr "Authentifizieren"
-#: ../../Zotlabs/Module/Cal.php:62 ../../Zotlabs/Module/Chanview.php:96
-#: ../../Zotlabs/Module/Page.php:75 ../../Zotlabs/Module/Wall_upload.php:31
-#: ../../Zotlabs/Module/Block.php:41 ../../Zotlabs/Module/Card_edit.php:44
-msgid "Channel not found."
-msgstr "Kanal nicht gefunden."
-
#: ../../Zotlabs/Module/Cal.php:69
msgid "Permissions denied."
msgstr "Berechtigung verweigert."
-#: ../../Zotlabs/Module/Cal.php:342 ../../include/text.php:2312
+#: ../../Zotlabs/Module/Cal.php:344 ../../include/text.php:2312
msgid "Import"
msgstr "Import"
@@ -4260,18 +4357,6 @@ msgstr "Möchtest Du dieser Anwendung erlauben, Deine Nachrichten und Kontakte a
msgid "Item not available."
msgstr "Element nicht verfügbar."
-#: ../../Zotlabs/Module/Editblock.php:116 ../../Zotlabs/Module/Chat.php:207
-#: ../../Zotlabs/Module/Editwebpage.php:143 ../../Zotlabs/Module/Mail.php:288
-#: ../../Zotlabs/Module/Mail.php:430 ../../Zotlabs/Module/Card_edit.php:101
-#: ../../include/conversation.php:1261
-msgid "Insert web link"
-msgstr "Link einfügen"
-
-#: ../../Zotlabs/Module/Editblock.php:129
-#: ../../Zotlabs/Module/Card_edit.php:117 ../../include/conversation.php:1381
-msgid "Title (optional)"
-msgstr "Titel (optional)"
-
#: ../../Zotlabs/Module/Editblock.php:138
msgid "Edit Block"
msgstr "Block bearbeiten"
@@ -4292,7 +4377,7 @@ msgstr "Apps verwalten"
msgid "Create new app"
msgstr "Neue App erstellen"
-#: ../../Zotlabs/Module/Mood.php:67 ../../include/conversation.php:256
+#: ../../Zotlabs/Module/Mood.php:67 ../../include/conversation.php:268
#, php-format
msgctxt "mood"
msgid "%1$s is %2$s"
@@ -4331,7 +4416,8 @@ msgstr "Archiviert/Unerreichbar"
#: ../../Zotlabs/Module/Connections.php:74
#: ../../Zotlabs/Module/Connections.php:83 ../../Zotlabs/Module/Menu.php:116
-#: ../../include/conversation.php:1697
+#: ../../Zotlabs/Module/Notifications.php:52
+#: ../../include/conversation.php:1714
msgid "New"
msgstr "Neu"
@@ -4342,7 +4428,7 @@ msgid "All"
msgstr "Alle"
#: ../../Zotlabs/Module/Connections.php:133
-#: ../../Zotlabs/Widget/Notifications.php:80
+#: ../../Zotlabs/Widget/Notifications.php:82
msgid "New Connections"
msgstr "Neue Verbindungen"
@@ -4433,7 +4519,7 @@ msgid "Recent activity"
msgstr "Kürzliche Aktivitäten"
#: ../../Zotlabs/Module/Connections.php:309 ../../Zotlabs/Lib/Apps.php:229
-#: ../../include/text.php:959 ../../include/nav.php:107
+#: ../../include/text.php:959 ../../include/nav.php:114
msgid "Connections"
msgstr "Verbindungen"
@@ -4446,8 +4532,8 @@ msgid "Connections search"
msgstr "Verbindung suchen"
#: ../../Zotlabs/Module/Connections.php:316
-#: ../../Zotlabs/Module/Directory.php:391
-#: ../../Zotlabs/Module/Directory.php:396 ../../include/contact_widgets.php:23
+#: ../../Zotlabs/Module/Directory.php:396
+#: ../../Zotlabs/Module/Directory.php:401 ../../include/contact_widgets.php:23
msgid "Find"
msgstr "Finde"
@@ -4511,238 +4597,238 @@ msgstr "Album nicht gefunden."
msgid "Delete Album"
msgstr "Album löschen"
-#: ../../Zotlabs/Module/Photos.php:174 ../../Zotlabs/Module/Photos.php:1030
+#: ../../Zotlabs/Module/Photos.php:174 ../../Zotlabs/Module/Photos.php:1083
msgid "Delete Photo"
msgstr "Foto löschen"
-#: ../../Zotlabs/Module/Photos.php:501
+#: ../../Zotlabs/Module/Photos.php:551
msgid "No photos selected"
msgstr "Keine Fotos ausgewählt"
-#: ../../Zotlabs/Module/Photos.php:550
+#: ../../Zotlabs/Module/Photos.php:600
msgid "Access to this item is restricted."
msgstr "Der Zugriff auf dieses Foto ist eingeschränkt."
-#: ../../Zotlabs/Module/Photos.php:593
+#: ../../Zotlabs/Module/Photos.php:646
#, php-format
msgid "%1$.2f MB of %2$.2f MB photo storage used."
msgstr "%1$.2f MB von %2$.2f MB Foto-Speicher belegt."
-#: ../../Zotlabs/Module/Photos.php:596
+#: ../../Zotlabs/Module/Photos.php:649
#, php-format
msgid "%1$.2f MB photo storage used."
msgstr "%1$.2f MB Foto-Speicher belegt."
-#: ../../Zotlabs/Module/Photos.php:638
+#: ../../Zotlabs/Module/Photos.php:691
msgid "Upload Photos"
msgstr "Fotos hochladen"
-#: ../../Zotlabs/Module/Photos.php:642
+#: ../../Zotlabs/Module/Photos.php:695
msgid "Enter an album name"
msgstr "Namen für ein neues Album eingeben"
-#: ../../Zotlabs/Module/Photos.php:643
+#: ../../Zotlabs/Module/Photos.php:696
msgid "or select an existing album (doubleclick)"
msgstr "oder ein bereits vorhandenes auswählen (Doppelklick)"
-#: ../../Zotlabs/Module/Photos.php:644
+#: ../../Zotlabs/Module/Photos.php:697
msgid "Create a status post for this upload"
msgstr "Einen Statusbeitrag für diesen Upload erzeugen"
-#: ../../Zotlabs/Module/Photos.php:645
+#: ../../Zotlabs/Module/Photos.php:698
msgid "Caption (optional):"
msgstr "Beschriftung (optional):"
-#: ../../Zotlabs/Module/Photos.php:646
+#: ../../Zotlabs/Module/Photos.php:699
msgid "Description (optional):"
msgstr "Beschreibung (optional):"
-#: ../../Zotlabs/Module/Photos.php:732
+#: ../../Zotlabs/Module/Photos.php:785
msgid "Show Newest First"
msgstr "Neueste zuerst anzeigen"
-#: ../../Zotlabs/Module/Photos.php:734
+#: ../../Zotlabs/Module/Photos.php:787
msgid "Show Oldest First"
msgstr "Älteste zuerst anzeigen"
-#: ../../Zotlabs/Module/Photos.php:839
+#: ../../Zotlabs/Module/Photos.php:892
msgid "Permission denied. Access to this item may be restricted."
msgstr "Berechtigung verweigert. Der Zugriff ist wahrscheinlich eingeschränkt worden."
-#: ../../Zotlabs/Module/Photos.php:841
+#: ../../Zotlabs/Module/Photos.php:894
msgid "Photo not available"
msgstr "Foto nicht verfügbar"
-#: ../../Zotlabs/Module/Photos.php:899
+#: ../../Zotlabs/Module/Photos.php:952
msgid "Use as profile photo"
msgstr "Als Profilfoto verwenden"
-#: ../../Zotlabs/Module/Photos.php:900
+#: ../../Zotlabs/Module/Photos.php:953
msgid "Use as cover photo"
msgstr "Als Titelbild verwenden"
-#: ../../Zotlabs/Module/Photos.php:907
+#: ../../Zotlabs/Module/Photos.php:960
msgid "Private Photo"
msgstr "Privates Foto"
-#: ../../Zotlabs/Module/Photos.php:922
+#: ../../Zotlabs/Module/Photos.php:975
msgid "View Full Size"
msgstr "In voller Größe anzeigen"
-#: ../../Zotlabs/Module/Photos.php:1004
+#: ../../Zotlabs/Module/Photos.php:1057
msgid "Edit photo"
msgstr "Foto bearbeiten"
-#: ../../Zotlabs/Module/Photos.php:1006
+#: ../../Zotlabs/Module/Photos.php:1059
msgid "Rotate CW (right)"
msgstr "Drehen im UZS (rechts)"
-#: ../../Zotlabs/Module/Photos.php:1007
+#: ../../Zotlabs/Module/Photos.php:1060
msgid "Rotate CCW (left)"
msgstr "Drehen gegen UZS (links)"
-#: ../../Zotlabs/Module/Photos.php:1010
+#: ../../Zotlabs/Module/Photos.php:1063
msgid "Move photo to album"
msgstr "Foto in Album verschieben"
-#: ../../Zotlabs/Module/Photos.php:1011
+#: ../../Zotlabs/Module/Photos.php:1064
msgid "Enter a new album name"
msgstr "Gib einen Namen für ein neues Album ein"
-#: ../../Zotlabs/Module/Photos.php:1012
+#: ../../Zotlabs/Module/Photos.php:1065
msgid "or select an existing one (doubleclick)"
msgstr "oder wähle ein bereits vorhandenes aus (Doppelklick)"
-#: ../../Zotlabs/Module/Photos.php:1015
+#: ../../Zotlabs/Module/Photos.php:1068
msgid "Caption"
msgstr "Bildunterschrift"
-#: ../../Zotlabs/Module/Photos.php:1017
+#: ../../Zotlabs/Module/Photos.php:1070
msgid "Add a Tag"
msgstr "Schlagwort hinzufügen"
-#: ../../Zotlabs/Module/Photos.php:1025
+#: ../../Zotlabs/Module/Photos.php:1078
msgid "Example: @bob, @Barbara_Jensen, @jim@example.com"
msgstr "Beispiele: @ben, @Karl_Prester, @lieschen@example.com"
-#: ../../Zotlabs/Module/Photos.php:1028
+#: ../../Zotlabs/Module/Photos.php:1081
msgid "Flag as adult in album view"
msgstr "In der Albumansicht als nicht jugendfrei markieren"
-#: ../../Zotlabs/Module/Photos.php:1047 ../../Zotlabs/Lib/ThreadItem.php:271
+#: ../../Zotlabs/Module/Photos.php:1100 ../../Zotlabs/Lib/ThreadItem.php:281
msgid "I like this (toggle)"
msgstr "Mir gefällt das (Umschalter)"
-#: ../../Zotlabs/Module/Photos.php:1048 ../../Zotlabs/Lib/ThreadItem.php:272
+#: ../../Zotlabs/Module/Photos.php:1101 ../../Zotlabs/Lib/ThreadItem.php:282
msgid "I don't like this (toggle)"
msgstr "Mir gefällt das nicht (Umschalter)"
-#: ../../Zotlabs/Module/Photos.php:1050 ../../Zotlabs/Lib/ThreadItem.php:416
-#: ../../include/conversation.php:768
+#: ../../Zotlabs/Module/Photos.php:1103 ../../Zotlabs/Lib/ThreadItem.php:427
+#: ../../include/conversation.php:785
msgid "Please wait"
msgstr "Bitte warten"
-#: ../../Zotlabs/Module/Photos.php:1066 ../../Zotlabs/Module/Photos.php:1184
-#: ../../Zotlabs/Lib/ThreadItem.php:740
+#: ../../Zotlabs/Module/Photos.php:1119 ../../Zotlabs/Module/Photos.php:1237
+#: ../../Zotlabs/Lib/ThreadItem.php:751
msgid "This is you"
msgstr "Das bist Du"
-#: ../../Zotlabs/Module/Photos.php:1068 ../../Zotlabs/Module/Photos.php:1186
-#: ../../Zotlabs/Lib/ThreadItem.php:742 ../../include/js_strings.php:6
+#: ../../Zotlabs/Module/Photos.php:1121 ../../Zotlabs/Module/Photos.php:1239
+#: ../../Zotlabs/Lib/ThreadItem.php:753 ../../include/js_strings.php:6
msgid "Comment"
msgstr "Kommentar"
-#: ../../Zotlabs/Module/Photos.php:1084 ../../include/conversation.php:594
+#: ../../Zotlabs/Module/Photos.php:1137 ../../include/conversation.php:618
msgctxt "title"
msgid "Likes"
msgstr "Gefällt mir"
-#: ../../Zotlabs/Module/Photos.php:1084 ../../include/conversation.php:594
+#: ../../Zotlabs/Module/Photos.php:1137 ../../include/conversation.php:618
msgctxt "title"
msgid "Dislikes"
msgstr "Gefällt mir nicht"
-#: ../../Zotlabs/Module/Photos.php:1085 ../../include/conversation.php:595
+#: ../../Zotlabs/Module/Photos.php:1138 ../../include/conversation.php:619
msgctxt "title"
msgid "Agree"
msgstr "Zustimmungen"
-#: ../../Zotlabs/Module/Photos.php:1085 ../../include/conversation.php:595
+#: ../../Zotlabs/Module/Photos.php:1138 ../../include/conversation.php:619
msgctxt "title"
msgid "Disagree"
msgstr "Ablehnungen"
-#: ../../Zotlabs/Module/Photos.php:1085 ../../include/conversation.php:595
+#: ../../Zotlabs/Module/Photos.php:1138 ../../include/conversation.php:619
msgctxt "title"
msgid "Abstain"
msgstr "Enthaltungen"
-#: ../../Zotlabs/Module/Photos.php:1086 ../../include/conversation.php:596
+#: ../../Zotlabs/Module/Photos.php:1139 ../../include/conversation.php:620
msgctxt "title"
msgid "Attending"
msgstr "Zusagen"
-#: ../../Zotlabs/Module/Photos.php:1086 ../../include/conversation.php:596
+#: ../../Zotlabs/Module/Photos.php:1139 ../../include/conversation.php:620
msgctxt "title"
msgid "Not attending"
msgstr "Absagen"
-#: ../../Zotlabs/Module/Photos.php:1086 ../../include/conversation.php:596
+#: ../../Zotlabs/Module/Photos.php:1139 ../../include/conversation.php:620
msgctxt "title"
msgid "Might attend"
msgstr "Vielleicht"
-#: ../../Zotlabs/Module/Photos.php:1103 ../../Zotlabs/Module/Photos.php:1115
-#: ../../Zotlabs/Lib/ThreadItem.php:191 ../../Zotlabs/Lib/ThreadItem.php:203
+#: ../../Zotlabs/Module/Photos.php:1156 ../../Zotlabs/Module/Photos.php:1168
+#: ../../Zotlabs/Lib/ThreadItem.php:201 ../../Zotlabs/Lib/ThreadItem.php:213
msgid "View all"
msgstr "Alles anzeigen"
-#: ../../Zotlabs/Module/Photos.php:1107 ../../Zotlabs/Lib/ThreadItem.php:195
-#: ../../include/conversation.php:1950 ../../include/channel.php:1491
-#: ../../include/taxonomy.php:520
+#: ../../Zotlabs/Module/Photos.php:1160 ../../Zotlabs/Lib/ThreadItem.php:205
+#: ../../include/conversation.php:1978 ../../include/channel.php:1539
+#: ../../include/taxonomy.php:593
msgctxt "noun"
msgid "Like"
msgid_plural "Likes"
msgstr[0] "Gefällt mir"
msgstr[1] "Gefällt mir"
-#: ../../Zotlabs/Module/Photos.php:1112 ../../Zotlabs/Lib/ThreadItem.php:200
-#: ../../include/conversation.php:1953
+#: ../../Zotlabs/Module/Photos.php:1165 ../../Zotlabs/Lib/ThreadItem.php:210
+#: ../../include/conversation.php:1981
msgctxt "noun"
msgid "Dislike"
msgid_plural "Dislikes"
msgstr[0] "Gefällt nicht"
msgstr[1] "Gefällt nicht"
-#: ../../Zotlabs/Module/Photos.php:1212
+#: ../../Zotlabs/Module/Photos.php:1265
msgid "Photo Tools"
msgstr "Fotowerkzeuge"
-#: ../../Zotlabs/Module/Photos.php:1221
+#: ../../Zotlabs/Module/Photos.php:1274
msgid "In This Photo:"
msgstr "Auf diesem Foto:"
-#: ../../Zotlabs/Module/Photos.php:1226
+#: ../../Zotlabs/Module/Photos.php:1279
msgid "Map"
msgstr "Karte"
-#: ../../Zotlabs/Module/Photos.php:1234 ../../Zotlabs/Lib/ThreadItem.php:404
+#: ../../Zotlabs/Module/Photos.php:1287 ../../Zotlabs/Lib/ThreadItem.php:415
msgctxt "noun"
msgid "Likes"
msgstr "Gefällt mir"
-#: ../../Zotlabs/Module/Photos.php:1235 ../../Zotlabs/Lib/ThreadItem.php:405
+#: ../../Zotlabs/Module/Photos.php:1288 ../../Zotlabs/Lib/ThreadItem.php:416
msgctxt "noun"
msgid "Dislikes"
msgstr "Gefällt nicht"
-#: ../../Zotlabs/Module/Photos.php:1240 ../../Zotlabs/Lib/ThreadItem.php:410
+#: ../../Zotlabs/Module/Photos.php:1293 ../../Zotlabs/Lib/ThreadItem.php:421
#: ../../include/acl_selectors.php:220
msgid "Close"
msgstr "Schließen"
-#: ../../Zotlabs/Module/Photos.php:1312 ../../Zotlabs/Module/Photos.php:1325
-#: ../../Zotlabs/Module/Photos.php:1326 ../../include/photos.php:601
+#: ../../Zotlabs/Module/Photos.php:1365 ../../Zotlabs/Module/Photos.php:1378
+#: ../../Zotlabs/Module/Photos.php:1379 ../../include/photos.php:656
msgid "Recent Photos"
msgstr "Neueste Fotos"
@@ -4750,7 +4836,8 @@ msgstr "Neueste Fotos"
msgid "Profile Unavailable."
msgstr "Profil nicht verfügbar."
-#: ../../Zotlabs/Module/Wiki.php:44 ../../addon/gitwiki/Mod_Gitwiki.php:42
+#: ../../Zotlabs/Module/Wiki.php:44 ../../Zotlabs/Module/Cloud.php:108
+#: ../../addon/gitwiki/Mod_Gitwiki.php:42
msgid "Not found"
msgstr "Nicht gefunden"
@@ -4771,7 +4858,7 @@ msgid "Error downloading wiki: "
msgstr "Fehler beim Herunterladen des Wiki:"
#: ../../Zotlabs/Module/Wiki.php:197 ../../addon/gitwiki/Mod_Gitwiki.php:146
-#: ../../include/conversation.php:1897 ../../include/nav.php:504
+#: ../../include/conversation.php:1925 ../../include/nav.php:526
msgid "Wikis"
msgstr "Wikis"
@@ -4793,22 +4880,25 @@ msgstr "Name des Wiki"
msgid "Content type"
msgstr "Inhaltstyp"
-#: ../../Zotlabs/Module/Wiki.php:208 ../../Zotlabs/Module/Wiki.php:336
-#: ../../Zotlabs/Widget/Wiki_pages.php:57 ../../include/text.php:1802
+#: ../../Zotlabs/Module/Wiki.php:208 ../../Zotlabs/Module/Wiki.php:348
+#: ../../Zotlabs/Widget/Wiki_pages.php:36
+#: ../../Zotlabs/Widget/Wiki_pages.php:93 ../../include/text.php:1802
+#: ../../include/features.php:378
msgid "Markdown"
msgstr "Markdown"
-#: ../../Zotlabs/Module/Wiki.php:208 ../../Zotlabs/Module/Wiki.php:336
-#: ../../Zotlabs/Widget/Wiki_pages.php:57 ../../include/text.php:1800
+#: ../../Zotlabs/Module/Wiki.php:208 ../../Zotlabs/Module/Wiki.php:348
+#: ../../Zotlabs/Widget/Wiki_pages.php:36
+#: ../../Zotlabs/Widget/Wiki_pages.php:93 ../../include/text.php:1800
msgid "BBcode"
msgstr "BBcode"
-#: ../../Zotlabs/Module/Wiki.php:208 ../../Zotlabs/Widget/Wiki_pages.php:57
-#: ../../include/text.php:1803
+#: ../../Zotlabs/Module/Wiki.php:208 ../../Zotlabs/Widget/Wiki_pages.php:36
+#: ../../Zotlabs/Widget/Wiki_pages.php:93 ../../include/text.php:1803
msgid "Text"
msgstr "Text"
-#: ../../Zotlabs/Module/Wiki.php:210 ../../Zotlabs/Storage/Browser.php:235
+#: ../../Zotlabs/Module/Wiki.php:210 ../../Zotlabs/Storage/Browser.php:281
#: ../../addon/gitwiki/Mod_Gitwiki.php:159
msgid "Type"
msgstr "Typ"
@@ -4837,127 +4927,127 @@ msgstr "Wiki nicht gefunden"
msgid "Rename page"
msgstr "Seite umbenennen"
-#: ../../Zotlabs/Module/Wiki.php:296 ../../addon/gitwiki/Mod_Gitwiki.php:214
+#: ../../Zotlabs/Module/Wiki.php:305 ../../addon/gitwiki/Mod_Gitwiki.php:214
msgid "Error retrieving page content"
msgstr "Fehler beim Abrufen des Seiteninhalts"
-#: ../../Zotlabs/Module/Wiki.php:302 ../../Zotlabs/Module/Wiki.php:304
+#: ../../Zotlabs/Module/Wiki.php:313 ../../Zotlabs/Module/Wiki.php:315
msgid "New page"
msgstr "Neue Seite"
-#: ../../Zotlabs/Module/Wiki.php:331 ../../addon/gitwiki/Mod_Gitwiki.php:242
+#: ../../Zotlabs/Module/Wiki.php:343 ../../addon/gitwiki/Mod_Gitwiki.php:242
msgid "Revision Comparison"
msgstr "Revisionsvergleich"
-#: ../../Zotlabs/Module/Wiki.php:332 ../../addon/gitwiki/Mod_Gitwiki.php:243
+#: ../../Zotlabs/Module/Wiki.php:344 ../../addon/gitwiki/Mod_Gitwiki.php:243
msgid "Revert"
msgstr "Rückgängig machen"
-#: ../../Zotlabs/Module/Wiki.php:339
+#: ../../Zotlabs/Module/Wiki.php:351
msgid "Short description of your changes (optional)"
msgstr "Kurze Beschreibung Ihrer Änderungen (optional)"
-#: ../../Zotlabs/Module/Wiki.php:346 ../../addon/gitwiki/Mod_Gitwiki.php:252
+#: ../../Zotlabs/Module/Wiki.php:358 ../../addon/gitwiki/Mod_Gitwiki.php:252
msgid "Source"
msgstr "Quelle"
-#: ../../Zotlabs/Module/Wiki.php:356 ../../addon/gitwiki/Mod_Gitwiki.php:260
+#: ../../Zotlabs/Module/Wiki.php:368 ../../addon/gitwiki/Mod_Gitwiki.php:260
msgid "New page name"
msgstr "Neuer Seitenname"
-#: ../../Zotlabs/Module/Wiki.php:361 ../../addon/gitwiki/Mod_Gitwiki.php:265
-#: ../../include/conversation.php:1265
+#: ../../Zotlabs/Module/Wiki.php:373 ../../addon/gitwiki/Mod_Gitwiki.php:265
+#: ../../include/conversation.php:1282
msgid "Embed image from photo albums"
msgstr "Bild aus Fotoalben einbetten"
-#: ../../Zotlabs/Module/Wiki.php:362 ../../addon/gitwiki/Mod_Gitwiki.php:266
-#: ../../include/conversation.php:1368
+#: ../../Zotlabs/Module/Wiki.php:374 ../../addon/gitwiki/Mod_Gitwiki.php:266
+#: ../../include/conversation.php:1385
msgid "Embed an image from your albums"
msgstr "Betten Sie ein Bild aus Ihren Alben ein"
-#: ../../Zotlabs/Module/Wiki.php:364 ../../addon/gitwiki/Mod_Gitwiki.php:268
-#: ../../include/conversation.php:1370 ../../include/conversation.php:1417
+#: ../../Zotlabs/Module/Wiki.php:376 ../../addon/gitwiki/Mod_Gitwiki.php:268
+#: ../../include/conversation.php:1387 ../../include/conversation.php:1434
msgid "OK"
msgstr "Ok"
-#: ../../Zotlabs/Module/Wiki.php:365 ../../addon/gitwiki/Mod_Gitwiki.php:269
-#: ../../include/conversation.php:1301
+#: ../../Zotlabs/Module/Wiki.php:377 ../../addon/gitwiki/Mod_Gitwiki.php:269
+#: ../../include/conversation.php:1318
msgid "Choose images to embed"
msgstr "Wählen Sie Bilder zum Einbetten aus"
-#: ../../Zotlabs/Module/Wiki.php:366 ../../addon/gitwiki/Mod_Gitwiki.php:270
-#: ../../include/conversation.php:1302
+#: ../../Zotlabs/Module/Wiki.php:378 ../../addon/gitwiki/Mod_Gitwiki.php:270
+#: ../../include/conversation.php:1319
msgid "Choose an album"
msgstr "Wählen Sie ein Album aus"
-#: ../../Zotlabs/Module/Wiki.php:367 ../../addon/gitwiki/Mod_Gitwiki.php:271
+#: ../../Zotlabs/Module/Wiki.php:379 ../../addon/gitwiki/Mod_Gitwiki.php:271
msgid "Choose a different album"
msgstr "Wählen Sie ein anderes Album aus"
-#: ../../Zotlabs/Module/Wiki.php:368 ../../addon/gitwiki/Mod_Gitwiki.php:272
-#: ../../include/conversation.php:1304
+#: ../../Zotlabs/Module/Wiki.php:380 ../../addon/gitwiki/Mod_Gitwiki.php:272
+#: ../../include/conversation.php:1321
msgid "Error getting album list"
msgstr "Fehler beim Holen der Albenliste"
-#: ../../Zotlabs/Module/Wiki.php:369 ../../addon/gitwiki/Mod_Gitwiki.php:273
-#: ../../include/conversation.php:1305
+#: ../../Zotlabs/Module/Wiki.php:381 ../../addon/gitwiki/Mod_Gitwiki.php:273
+#: ../../include/conversation.php:1322
msgid "Error getting photo link"
msgstr "Fehler beim Holen des Fotolinks"
-#: ../../Zotlabs/Module/Wiki.php:370 ../../addon/gitwiki/Mod_Gitwiki.php:274
-#: ../../include/conversation.php:1306
+#: ../../Zotlabs/Module/Wiki.php:382 ../../addon/gitwiki/Mod_Gitwiki.php:274
+#: ../../include/conversation.php:1323
msgid "Error getting album"
msgstr "Fehler beim Holen des Albums"
-#: ../../Zotlabs/Module/Wiki.php:442 ../../addon/gitwiki/Mod_Gitwiki.php:337
+#: ../../Zotlabs/Module/Wiki.php:458 ../../addon/gitwiki/Mod_Gitwiki.php:337
msgid "Error creating wiki. Invalid name."
msgstr "Fehler beim Erstellen des Wiki. Ungültiger Name."
-#: ../../Zotlabs/Module/Wiki.php:449
+#: ../../Zotlabs/Module/Wiki.php:465
msgid "A wiki with this name already exists."
msgstr "Es existiert bereits ein Wiki mit diesem Namen."
-#: ../../Zotlabs/Module/Wiki.php:462 ../../addon/gitwiki/Mod_Gitwiki.php:348
+#: ../../Zotlabs/Module/Wiki.php:478 ../../addon/gitwiki/Mod_Gitwiki.php:348
msgid "Wiki created, but error creating Home page."
msgstr "Das Wiki wurde erzeugt, aber es gab einen Fehler bei der Erstellung der Startseite"
-#: ../../Zotlabs/Module/Wiki.php:469 ../../addon/gitwiki/Mod_Gitwiki.php:353
+#: ../../Zotlabs/Module/Wiki.php:485 ../../addon/gitwiki/Mod_Gitwiki.php:353
msgid "Error creating wiki"
msgstr "Fehler beim Erstellen des Wiki"
-#: ../../Zotlabs/Module/Wiki.php:492
+#: ../../Zotlabs/Module/Wiki.php:508
msgid "Error updating wiki. Invalid name."
msgstr "Fehler beim Aktualisieren des Wikis. Ungültiger Name."
-#: ../../Zotlabs/Module/Wiki.php:512
+#: ../../Zotlabs/Module/Wiki.php:528
msgid "Error updating wiki"
msgstr "Fehler beim Aktualisieren des Wikis"
-#: ../../Zotlabs/Module/Wiki.php:527
+#: ../../Zotlabs/Module/Wiki.php:543
msgid "Wiki delete permission denied."
msgstr "Wiki-Löschberechtigung verweigert."
-#: ../../Zotlabs/Module/Wiki.php:537
+#: ../../Zotlabs/Module/Wiki.php:553
msgid "Error deleting wiki"
msgstr "Fehler beim Löschen des Wiki"
-#: ../../Zotlabs/Module/Wiki.php:565 ../../addon/gitwiki/Mod_Gitwiki.php:400
+#: ../../Zotlabs/Module/Wiki.php:586 ../../addon/gitwiki/Mod_Gitwiki.php:400
msgid "New page created"
msgstr "Neue Seite erstellt"
-#: ../../Zotlabs/Module/Wiki.php:686
+#: ../../Zotlabs/Module/Wiki.php:707
msgid "Cannot delete Home"
msgstr "Kann die Startseite nicht löschen"
-#: ../../Zotlabs/Module/Wiki.php:750
+#: ../../Zotlabs/Module/Wiki.php:771
msgid "Current Revision"
msgstr "Aktuelle Revision"
-#: ../../Zotlabs/Module/Wiki.php:750
+#: ../../Zotlabs/Module/Wiki.php:771
msgid "Selected Revision"
msgstr "Ausgewählte Revision"
-#: ../../Zotlabs/Module/Wiki.php:800
+#: ../../Zotlabs/Module/Wiki.php:821
msgid "You must be authenticated."
msgstr "Sie müssen authenzifiziert sein."
@@ -4973,7 +5063,7 @@ msgstr "Layout aktualisiert."
msgid "Feature disabled."
msgstr "Funktion deaktiviert."
-#: ../../Zotlabs/Module/Pdledit.php:47 ../../Zotlabs/Module/Pdledit.php:88
+#: ../../Zotlabs/Module/Pdledit.php:47 ../../Zotlabs/Module/Pdledit.php:90
msgid "Edit System Page Description"
msgstr "Systemseitenbeschreibung bearbeiten"
@@ -4985,24 +5075,28 @@ msgstr "(geändert)"
msgid "Reset"
msgstr "Zurücksetzen"
-#: ../../Zotlabs/Module/Pdledit.php:83
+#: ../../Zotlabs/Module/Pdledit.php:85
msgid "Layout not found."
msgstr "Layout nicht gefunden."
-#: ../../Zotlabs/Module/Pdledit.php:89
+#: ../../Zotlabs/Module/Pdledit.php:91
msgid "Module Name:"
msgstr "Modulname:"
-#: ../../Zotlabs/Module/Pdledit.php:90
+#: ../../Zotlabs/Module/Pdledit.php:92
msgid "Layout Help"
msgstr "Layout-Hilfe"
-#: ../../Zotlabs/Module/Pdledit.php:91
+#: ../../Zotlabs/Module/Pdledit.php:93
msgid "Edit another layout"
msgstr "Ein weiteres Layout bearbeiten"
+#: ../../Zotlabs/Module/Pdledit.php:94
+msgid "System layout"
+msgstr "System-Layout"
+
#: ../../Zotlabs/Module/Poke.php:182 ../../Zotlabs/Lib/Apps.php:248
-#: ../../include/conversation.php:1075
+#: ../../include/conversation.php:1092
msgid "Poke"
msgstr "Anstupsen"
@@ -5036,8 +5130,8 @@ msgid "Image uploaded but image cropping failed."
msgstr "Bild hochgeladen, aber das Zurechtschneiden schlug fehl."
#: ../../Zotlabs/Module/Profile_photo.php:115
-#: ../../Zotlabs/Module/Profile_photo.php:234
-#: ../../include/photo/photo_driver.php:710
+#: ../../Zotlabs/Module/Profile_photo.php:240
+#: ../../include/photo/photo_driver.php:740
msgid "Profile Photos"
msgstr "Profilfotos"
@@ -5046,80 +5140,80 @@ msgstr "Profilfotos"
msgid "Image resize failed."
msgstr "Bild-Anpassung fehlgeschlagen."
-#: ../../Zotlabs/Module/Profile_photo.php:204
+#: ../../Zotlabs/Module/Profile_photo.php:210
#: ../../addon/openclipatar/openclipatar.php:298
msgid ""
"Shift-reload the page or clear browser cache if the new photo does not "
"display immediately."
msgstr "Leere den Browser Cache oder nutze Umschalten-Neu Laden, falls das neue Foto nicht sofort angezeigt wird."
-#: ../../Zotlabs/Module/Profile_photo.php:211
-#: ../../Zotlabs/Module/Cover_photo.php:173 ../../include/photos.php:156
+#: ../../Zotlabs/Module/Profile_photo.php:217
+#: ../../Zotlabs/Module/Cover_photo.php:173 ../../include/photos.php:195
msgid "Unable to process image"
msgstr "Kann Bild nicht verarbeiten"
-#: ../../Zotlabs/Module/Profile_photo.php:246
+#: ../../Zotlabs/Module/Profile_photo.php:252
#: ../../Zotlabs/Module/Cover_photo.php:197
msgid "Image upload failed."
msgstr "Hochladen des Bilds fehlgeschlagen."
-#: ../../Zotlabs/Module/Profile_photo.php:265
+#: ../../Zotlabs/Module/Profile_photo.php:271
#: ../../Zotlabs/Module/Cover_photo.php:214
msgid "Unable to process image."
msgstr "Kann Bild nicht verarbeiten."
-#: ../../Zotlabs/Module/Profile_photo.php:326
-#: ../../Zotlabs/Module/Profile_photo.php:373
+#: ../../Zotlabs/Module/Profile_photo.php:332
+#: ../../Zotlabs/Module/Profile_photo.php:379
#: ../../Zotlabs/Module/Cover_photo.php:307
#: ../../Zotlabs/Module/Cover_photo.php:322
msgid "Photo not available."
msgstr "Foto nicht verfügbar."
-#: ../../Zotlabs/Module/Profile_photo.php:428
+#: ../../Zotlabs/Module/Profile_photo.php:434
#: ../../Zotlabs/Module/Cover_photo.php:358
msgid "Upload File:"
msgstr "Datei hochladen:"
-#: ../../Zotlabs/Module/Profile_photo.php:429
+#: ../../Zotlabs/Module/Profile_photo.php:435
#: ../../Zotlabs/Module/Cover_photo.php:359
msgid "Select a profile:"
msgstr "Wähle ein Profil:"
-#: ../../Zotlabs/Module/Profile_photo.php:430
+#: ../../Zotlabs/Module/Profile_photo.php:436
msgid "Use Photo for Profile"
msgstr "Foto für Profil verwenden"
-#: ../../Zotlabs/Module/Profile_photo.php:430
+#: ../../Zotlabs/Module/Profile_photo.php:436
msgid "Upload Profile Photo"
msgstr "Lade neues Profilfoto hoch"
-#: ../../Zotlabs/Module/Profile_photo.php:431
+#: ../../Zotlabs/Module/Profile_photo.php:437
#: ../../addon/openclipatar/openclipatar.php:182
#: ../../addon/openclipatar/openclipatar.php:194
msgid "Use"
msgstr "Verwenden"
-#: ../../Zotlabs/Module/Profile_photo.php:437
+#: ../../Zotlabs/Module/Profile_photo.php:443
#: ../../Zotlabs/Module/Cover_photo.php:365
msgid "skip this step"
msgstr "diesen Schritt überspringen"
-#: ../../Zotlabs/Module/Profile_photo.php:437
+#: ../../Zotlabs/Module/Profile_photo.php:443
#: ../../Zotlabs/Module/Cover_photo.php:365
msgid "select a photo from your photo albums"
msgstr "ein Foto aus meinen Fotoalben"
-#: ../../Zotlabs/Module/Profile_photo.php:456
+#: ../../Zotlabs/Module/Profile_photo.php:462
#: ../../Zotlabs/Module/Cover_photo.php:381
msgid "Crop Image"
msgstr "Bild zuschneiden"
-#: ../../Zotlabs/Module/Profile_photo.php:457
+#: ../../Zotlabs/Module/Profile_photo.php:463
#: ../../Zotlabs/Module/Cover_photo.php:382
msgid "Please adjust the image cropping for optimum viewing."
msgstr "Bitte schneide das Bild für eine optimale Anzeige passend zu."
-#: ../../Zotlabs/Module/Profile_photo.php:459
+#: ../../Zotlabs/Module/Profile_photo.php:465
#: ../../Zotlabs/Module/Cover_photo.php:384
msgid "Done Editing"
msgstr "Bearbeitung fertigstellen"
@@ -5132,65 +5226,65 @@ msgstr "Abwesend"
msgid "Online"
msgstr "Online"
-#: ../../Zotlabs/Module/Item.php:185
+#: ../../Zotlabs/Module/Item.php:193
msgid "Unable to locate original post."
msgstr "Originalbeitrag nicht gefunden."
-#: ../../Zotlabs/Module/Item.php:470
+#: ../../Zotlabs/Module/Item.php:475
msgid "Empty post discarded."
msgstr "Leeren Beitrag verworfen."
-#: ../../Zotlabs/Module/Item.php:870
+#: ../../Zotlabs/Module/Item.php:853
msgid "Duplicate post suppressed."
msgstr "Doppelter Beitrag unterdrückt."
-#: ../../Zotlabs/Module/Item.php:1015
+#: ../../Zotlabs/Module/Item.php:998
msgid "System error. Post not saved."
msgstr "Systemfehler. Beitrag nicht gespeichert."
-#: ../../Zotlabs/Module/Item.php:1051
+#: ../../Zotlabs/Module/Item.php:1034
msgid "Your comment is awaiting approval."
msgstr "Dein Kommentar muss noch bestätigt werden."
-#: ../../Zotlabs/Module/Item.php:1156
+#: ../../Zotlabs/Module/Item.php:1139
msgid "Unable to obtain post information from database."
msgstr "Beitragsinformationen können nicht aus der Datenbank abgerufen werden."
-#: ../../Zotlabs/Module/Item.php:1163
+#: ../../Zotlabs/Module/Item.php:1168
#, php-format
msgid "You have reached your limit of %1$.0f top level posts."
msgstr "Du hast die maximale Anzahl von %1$.0f Beiträgen erreicht."
-#: ../../Zotlabs/Module/Item.php:1170
+#: ../../Zotlabs/Module/Item.php:1175
#, php-format
msgid "You have reached your limit of %1$.0f webpages."
msgstr "Du hast die maximale Anzahl von %1$.0f Webseiten erreicht."
-#: ../../Zotlabs/Module/Ping.php:318
+#: ../../Zotlabs/Module/Ping.php:311
msgid "sent you a private message"
msgstr "hat Dir eine private Nachricht geschickt"
-#: ../../Zotlabs/Module/Ping.php:369
+#: ../../Zotlabs/Module/Ping.php:360
msgid "added your channel"
msgstr "hat deinen Kanal hinzugefügt"
-#: ../../Zotlabs/Module/Ping.php:393
+#: ../../Zotlabs/Module/Ping.php:384
msgid "requires approval"
msgstr "Zustimmung erforderlich"
-#: ../../Zotlabs/Module/Ping.php:403
+#: ../../Zotlabs/Module/Ping.php:394
msgid "g A l F d"
msgstr "l, d. F, G:i \\U\\h\\r"
-#: ../../Zotlabs/Module/Ping.php:421
+#: ../../Zotlabs/Module/Ping.php:412
msgid "[today]"
msgstr "[Heute]"
-#: ../../Zotlabs/Module/Ping.php:430
+#: ../../Zotlabs/Module/Ping.php:421
msgid "posted an event"
msgstr "hat einen Termin veröffentlicht"
-#: ../../Zotlabs/Module/Ping.php:463
+#: ../../Zotlabs/Module/Ping.php:454
msgid "shared a file with you"
msgstr "hat eine Datei mit Dir geteilt"
@@ -5198,14 +5292,14 @@ msgstr "hat eine Datei mit Dir geteilt"
msgid "Invalid item."
msgstr "Ungültiges Element."
-#: ../../Zotlabs/Module/Page.php:128 ../../Zotlabs/Module/Block.php:77
-#: ../../Zotlabs/Module/Display.php:120
-#: ../../Zotlabs/Lib/NativeWikiPage.php:515 ../../Zotlabs/Web/Router.php:158
+#: ../../Zotlabs/Module/Page.php:136 ../../Zotlabs/Module/Block.php:77
+#: ../../Zotlabs/Module/Display.php:133
+#: ../../Zotlabs/Lib/NativeWikiPage.php:519 ../../Zotlabs/Web/Router.php:168
#: ../../include/help.php:81
msgid "Page not found."
msgstr "Seite nicht gefunden."
-#: ../../Zotlabs/Module/Page.php:165
+#: ../../Zotlabs/Module/Page.php:173
msgid ""
"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod "
"tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,"
@@ -5215,7 +5309,7 @@ msgid ""
"non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
msgstr "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
-#: ../../Zotlabs/Module/Connedit.php:79
+#: ../../Zotlabs/Module/Connedit.php:79 ../../Zotlabs/Module/Defperms.php:59
msgid "Could not access contact record."
msgstr "Konnte nicht auf den Kontakteintrag zugreifen."
@@ -5255,7 +5349,7 @@ msgstr "Verbindung wurde gelöscht."
#: ../../Zotlabs/Module/Connedit.php:594 ../../Zotlabs/Lib/Apps.php:241
#: ../../addon/openclipatar/openclipatar.php:57
-#: ../../include/conversation.php:1015 ../../include/nav.php:141
+#: ../../include/conversation.php:1032 ../../include/nav.php:148
msgid "View Profile"
msgstr "Profil ansehen"
@@ -5423,17 +5517,17 @@ msgid ""
"not supported by their network."
msgstr "Diese Verbindung ist von diesem Standort aus unerreichbar. Standort Unabhängigkeit wird vom anderen Netzwerk nicht unterstützt."
-#: ../../Zotlabs/Module/Connedit.php:867
+#: ../../Zotlabs/Module/Connedit.php:867 ../../Zotlabs/Module/Defperms.php:238
#: ../../Zotlabs/Widget/Settings_menu.php:109
msgid "Connection Default Permissions"
msgstr "Standardzugriffsrechte für neue Verbindungen:"
-#: ../../Zotlabs/Module/Connedit.php:867 ../../include/items.php:3974
+#: ../../Zotlabs/Module/Connedit.php:867 ../../include/items.php:4134
#, php-format
msgid "Connection: %s"
msgstr "Verbindung: %s"
-#: ../../Zotlabs/Module/Connedit.php:868
+#: ../../Zotlabs/Module/Connedit.php:868 ../../Zotlabs/Module/Defperms.php:239
msgid "Apply these permissions automatically"
msgstr "Diese Berechtigungen automatisch anwenden"
@@ -5441,11 +5535,11 @@ msgstr "Diese Berechtigungen automatisch anwenden"
msgid "Connection requests will be approved without your interaction"
msgstr "Verbindungsanfragen werden sofort bestätigt, ohne dass Deine aktive Zustimmung erforderlich ist."
-#: ../../Zotlabs/Module/Connedit.php:869
+#: ../../Zotlabs/Module/Connedit.php:869 ../../Zotlabs/Module/Defperms.php:240
msgid "Permission role"
msgstr "Berechtigungsrolle"
-#: ../../Zotlabs/Module/Connedit.php:870
+#: ../../Zotlabs/Module/Connedit.php:870 ../../Zotlabs/Module/Defperms.php:241
msgid "Add permission role"
msgstr "Berechtigungsrolle hinzufügen"
@@ -5457,7 +5551,7 @@ msgstr "Die Hauptadresse der Verbindung ist"
msgid "Available locations:"
msgstr "Verfügbare Klone:"
-#: ../../Zotlabs/Module/Connedit.php:883
+#: ../../Zotlabs/Module/Connedit.php:883 ../../Zotlabs/Module/Defperms.php:245
msgid ""
"The permissions indicated on this page will be applied to all new "
"connections."
@@ -5558,13 +5652,13 @@ msgid "Bookmark this room"
msgstr "Lesezeichen für diesen Raum setzen"
#: ../../Zotlabs/Module/Chat.php:205 ../../Zotlabs/Module/Mail.php:241
-#: ../../Zotlabs/Module/Mail.php:362 ../../include/conversation.php:1296
+#: ../../Zotlabs/Module/Mail.php:362 ../../include/conversation.php:1313
msgid "Please enter a link URL:"
msgstr "Gib eine URL ein:"
#: ../../Zotlabs/Module/Chat.php:206 ../../Zotlabs/Module/Mail.php:294
-#: ../../Zotlabs/Module/Mail.php:436 ../../Zotlabs/Lib/ThreadItem.php:757
-#: ../../include/conversation.php:1415
+#: ../../Zotlabs/Module/Mail.php:436 ../../Zotlabs/Lib/ThreadItem.php:768
+#: ../../include/conversation.php:1432
msgid "Encrypt text"
msgstr "Text verschlüsseln"
@@ -5598,13 +5692,13 @@ msgid "min"
msgstr "min"
#: ../../Zotlabs/Module/Fbrowser.php:29 ../../Zotlabs/Lib/Apps.php:242
-#: ../../include/conversation.php:1814 ../../include/nav.php:422
+#: ../../include/conversation.php:1831 ../../include/nav.php:433
msgid "Photos"
msgstr "Fotos"
#: ../../Zotlabs/Module/Fbrowser.php:85 ../../Zotlabs/Lib/Apps.php:237
-#: ../../Zotlabs/Storage/Browser.php:225 ../../include/conversation.php:1822
-#: ../../include/nav.php:430
+#: ../../Zotlabs/Storage/Browser.php:269 ../../include/conversation.php:1839
+#: ../../include/nav.php:441
msgid "Files"
msgstr "Dateien"
@@ -5701,7 +5795,7 @@ msgid "Layouts"
msgstr "Layouts"
#: ../../Zotlabs/Module/Layouts.php:186 ../../Zotlabs/Lib/Apps.php:245
-#: ../../include/nav.php:201 ../../include/nav.php:301
+#: ../../include/nav.php:208 ../../include/nav.php:312
#: ../../include/help.php:68 ../../include/help.php:74
msgid "Help"
msgstr "Hilfe"
@@ -5718,17 +5812,25 @@ msgstr "Layout-Beschreibung"
msgid "Download PDL file"
msgstr "PDL-Datei herunterladen"
-#: ../../Zotlabs/Module/Tagger.php:55 ../../include/markdown.php:141
-#: ../../include/bbcode.php:333
+#: ../../Zotlabs/Module/Cloud.php:114
+msgid "Unknown error"
+msgstr "Unbekannter Fehler"
+
+#: ../../Zotlabs/Module/Tagger.php:48
+msgid "Post not found."
+msgstr "Beitrag nicht gefunden."
+
+#: ../../Zotlabs/Module/Tagger.php:77 ../../include/markdown.php:160
+#: ../../include/bbcode.php:335
msgid "post"
msgstr "Beitrag"
-#: ../../Zotlabs/Module/Tagger.php:57 ../../include/conversation.php:146
+#: ../../Zotlabs/Module/Tagger.php:79 ../../include/conversation.php:146
#: ../../include/text.php:1946
msgid "comment"
msgstr "Kommentar"
-#: ../../Zotlabs/Module/Tagger.php:95
+#: ../../Zotlabs/Module/Tagger.php:117
#, php-format
msgid "%1$s tagged %2$s's %3$s with %4$s"
msgstr "%1$s hat %2$ss %3$s mit %4$s verschlagwortet"
@@ -5748,6 +5850,21 @@ msgid ""
" to correctly use this feature."
msgstr "Warnung: Einige Einstellungen können Deinen Kanal funktionsunfähig machen. Bitte verlasse diese Seite, es sei denn Du bist vertraut damit, wie dieses Feature korrekt verwendet wird."
+#: ../../Zotlabs/Module/Defperms.php:239
+msgid ""
+"If enabled, connection requests will be approved without your interaction"
+msgstr "Ist dies aktiviert, werden Verbindungsanfragen ohne Deine aktive Zustimmung bestätigt."
+
+#: ../../Zotlabs/Module/Defperms.php:246
+msgid "Automatic approval settings"
+msgstr "Einstellungen für automatische Bestätigung"
+
+#: ../../Zotlabs/Module/Defperms.php:254
+msgid ""
+"Some individual permissions may have been preset or locked based on your "
+"channel type and privacy settings."
+msgstr "Einige individuelle Berechtigungen können basierend auf Deinen Kanal- und Privatsphäre-Einstellungen vorbelegt oder gesperrt sein."
+
#: ../../Zotlabs/Module/Group.php:24
msgid "Privacy group created."
msgstr "Gruppe wurde erstellt."
@@ -5757,7 +5874,7 @@ msgid "Could not create privacy group."
msgstr "Gruppe konnte nicht erstellt werden."
#: ../../Zotlabs/Module/Group.php:42 ../../Zotlabs/Module/Group.php:143
-#: ../../include/items.php:3941
+#: ../../include/items.php:4101
msgid "Privacy group not found."
msgstr "Gruppe nicht gefunden."
@@ -5892,7 +6009,7 @@ msgid "View this profile"
msgstr "Dieses Profil ansehen"
#: ../../Zotlabs/Module/Profiles.php:728 ../../Zotlabs/Module/Profiles.php:827
-#: ../../include/channel.php:1284
+#: ../../include/channel.php:1320
msgid "Edit visibility"
msgstr "Sichtbarkeit bearbeiten"
@@ -5904,7 +6021,7 @@ msgstr "Profilwerkzeuge"
msgid "Change cover photo"
msgstr "Titelbild ändern"
-#: ../../Zotlabs/Module/Profiles.php:731 ../../include/channel.php:1255
+#: ../../Zotlabs/Module/Profiles.php:731 ../../include/channel.php:1290
msgid "Change profile photo"
msgstr "Profilfoto ändern"
@@ -5924,7 +6041,7 @@ msgstr "Dieses Profil löschen"
msgid "Add profile things"
msgstr "Sachen zum Profil hinzufügen"
-#: ../../Zotlabs/Module/Profiles.php:736 ../../include/conversation.php:1688
+#: ../../Zotlabs/Module/Profiles.php:736 ../../include/conversation.php:1705
msgid "Personal"
msgstr "Persönlich"
@@ -5932,7 +6049,7 @@ msgstr "Persönlich"
msgid "Relation"
msgstr "Beziehung"
-#: ../../Zotlabs/Module/Profiles.php:739 ../../include/datetime.php:55
+#: ../../Zotlabs/Module/Profiles.php:739 ../../include/datetime.php:58
msgid "Miscellaneous"
msgstr "Verschiedenes"
@@ -6069,12 +6186,12 @@ msgstr "Meine anderen Kanäle"
msgid "Communications"
msgstr "Kommunikation"
-#: ../../Zotlabs/Module/Profiles.php:823 ../../include/channel.php:1280
+#: ../../Zotlabs/Module/Profiles.php:823 ../../include/channel.php:1316
msgid "Profile Image"
msgstr "Profilfoto:"
-#: ../../Zotlabs/Module/Profiles.php:833 ../../include/channel.php:1262
-#: ../../include/nav.php:144
+#: ../../Zotlabs/Module/Profiles.php:833 ../../include/channel.php:1297
+#: ../../include/nav.php:151
msgid "Edit Profiles"
msgstr "Profile bearbeiten"
@@ -6091,7 +6208,7 @@ msgid "Create a new channel"
msgstr "Neuen Kanal anlegen"
#: ../../Zotlabs/Module/Manage.php:170 ../../Zotlabs/Lib/Apps.php:234
-#: ../../include/nav.php:129 ../../include/nav.php:215
+#: ../../include/nav.php:136 ../../include/nav.php:222
msgid "Channel Manager"
msgstr "Kanal-Manager"
@@ -6125,12 +6242,6 @@ msgstr "%d neue Vorstellungen"
msgid "Delegated Channel"
msgstr "Delegierte Kanäle"
-#: ../../Zotlabs/Module/Cards.php:38 ../../Zotlabs/Module/Cards.php:178
-#: ../../Zotlabs/Lib/Apps.php:224 ../../include/conversation.php:1873
-#: ../../include/features.php:122 ../../include/nav.php:479
-msgid "Cards"
-msgstr "Karten"
-
#: ../../Zotlabs/Module/Cards.php:95
msgid "Add Card"
msgstr "Karte hinzufügen"
@@ -6151,7 +6262,7 @@ msgstr "Seitenname"
msgid "Administrator"
msgstr "Administrator"
-#: ../../Zotlabs/Module/Siteinfo.php:26 ../../Zotlabs/Module/Register.php:221
+#: ../../Zotlabs/Module/Siteinfo.php:26 ../../Zotlabs/Module/Register.php:229
msgid "Terms of Service"
msgstr "Nutzungsbedingungen"
@@ -6186,7 +6297,7 @@ msgid "No ratings"
msgstr "Keine Bewertungen"
#: ../../Zotlabs/Module/Ratings.php:97 ../../Zotlabs/Module/Pubsites.php:35
-#: ../../include/conversation.php:1065
+#: ../../include/conversation.php:1082
msgid "Ratings"
msgstr "Bewertungen"
@@ -6219,7 +6330,7 @@ msgid "Export selected"
msgstr "Exportieren ausgewählt"
#: ../../Zotlabs/Module/Webpages.php:237 ../../Zotlabs/Lib/Apps.php:238
-#: ../../include/conversation.php:1884 ../../include/nav.php:491
+#: ../../include/conversation.php:1912 ../../include/nav.php:513
msgid "Webpages"
msgstr "Webseiten"
@@ -6261,13 +6372,13 @@ msgid ""
" password."
msgstr "Innerhalb von 48 Stunden nach einer Änderung des Konto-Passworts können Kanäle nicht umbenannt werden."
-#: ../../Zotlabs/Module/Changeaddr.php:46 ../../include/channel.php:209
-#: ../../include/channel.php:579
+#: ../../Zotlabs/Module/Changeaddr.php:46 ../../include/channel.php:214
+#: ../../include/channel.php:599
msgid "Reserved nickname. Please choose another."
msgstr "Reservierter Kurzname. Bitte wähle einen anderen."
-#: ../../Zotlabs/Module/Changeaddr.php:51 ../../include/channel.php:214
-#: ../../include/channel.php:584
+#: ../../Zotlabs/Module/Changeaddr.php:51 ../../include/channel.php:219
+#: ../../include/channel.php:604
msgid ""
"Nickname has unsupported characters or is already being used on this site."
msgstr "Der Spitzname enthält nicht-unterstütze Zeichen oder wird bereits auf dieser Seite genutzt."
@@ -6353,7 +6464,8 @@ msgstr "Mail zugestellt"
msgid "Delivery report for %1$s"
msgstr "Zustellungsbericht für %1$s"
-#: ../../Zotlabs/Module/Dreport.php:151 ../../Zotlabs/Widget/Wiki_pages.php:60
+#: ../../Zotlabs/Module/Dreport.php:151 ../../Zotlabs/Widget/Wiki_pages.php:39
+#: ../../Zotlabs/Widget/Wiki_pages.php:96
msgid "Options"
msgstr "Optionen"
@@ -6378,7 +6490,7 @@ msgid "*"
msgstr "*"
#: ../../Zotlabs/Module/Sources.php:96
-#: ../../Zotlabs/Widget/Settings_menu.php:125 ../../include/features.php:218
+#: ../../Zotlabs/Widget/Settings_menu.php:125 ../../include/features.php:228
msgid "Channel Sources"
msgstr "Kanal-Quellen"
@@ -6434,200 +6546,200 @@ msgstr "Quelle gelöscht"
msgid "Unable to remove source."
msgstr "Konnte die Quelle nicht löschen."
-#: ../../Zotlabs/Module/Like.php:19
+#: ../../Zotlabs/Module/Like.php:22
msgid "Like/Dislike"
msgstr "Mögen/Nicht mögen"
-#: ../../Zotlabs/Module/Like.php:24
+#: ../../Zotlabs/Module/Like.php:27
msgid "This action is restricted to members."
msgstr "Diese Aktion kann nur von Mitgliedern ausgeführt werden."
-#: ../../Zotlabs/Module/Like.php:25
+#: ../../Zotlabs/Module/Like.php:28
msgid ""
"Please <a href=\"rmagic\">login with your $Projectname ID</a> or <a "
"href=\"register\">register as a new $Projectname member</a> to continue."
msgstr "Um fortzufahren <a href=\"rmagic\">melde Dich bitte mit Deiner $Projectname-ID an</a> oder <a href=\"register\">registriere Dich als neues $Projectname-Mitglied</a>."
-#: ../../Zotlabs/Module/Like.php:105 ../../Zotlabs/Module/Like.php:131
-#: ../../Zotlabs/Module/Like.php:169
+#: ../../Zotlabs/Module/Like.php:108 ../../Zotlabs/Module/Like.php:134
+#: ../../Zotlabs/Module/Like.php:172
msgid "Invalid request."
msgstr "Ungültige Anfrage."
-#: ../../Zotlabs/Module/Like.php:117 ../../include/conversation.php:122
+#: ../../Zotlabs/Module/Like.php:120 ../../include/conversation.php:122
msgid "channel"
msgstr "Kanal"
-#: ../../Zotlabs/Module/Like.php:146
+#: ../../Zotlabs/Module/Like.php:149
msgid "thing"
msgstr "Sache"
-#: ../../Zotlabs/Module/Like.php:192
+#: ../../Zotlabs/Module/Like.php:195
msgid "Channel unavailable."
msgstr "Kanal nicht vorhanden."
-#: ../../Zotlabs/Module/Like.php:240
+#: ../../Zotlabs/Module/Like.php:243
msgid "Previous action reversed."
msgstr "Die vorherige Aktion wurde rückgängig gemacht."
-#: ../../Zotlabs/Module/Like.php:423 ../../addon/diaspora/Receiver.php:1453
-#: ../../addon/pubcrawl/as.php:1323 ../../include/conversation.php:160
+#: ../../Zotlabs/Module/Like.php:435 ../../addon/diaspora/Receiver.php:1462
+#: ../../addon/pubcrawl/as.php:1330 ../../include/conversation.php:160
#, php-format
msgid "%1$s likes %2$s's %3$s"
msgstr "%1$s gefällt %2$ss %3$s"
-#: ../../Zotlabs/Module/Like.php:425 ../../addon/pubcrawl/as.php:1325
+#: ../../Zotlabs/Module/Like.php:437 ../../addon/pubcrawl/as.php:1332
#: ../../include/conversation.php:163
#, php-format
msgid "%1$s doesn't like %2$s's %3$s"
msgstr "%1$s gefällt %2$ss %3$s nicht"
-#: ../../Zotlabs/Module/Like.php:427
+#: ../../Zotlabs/Module/Like.php:439
#, php-format
msgid "%1$s agrees with %2$s's %3$s"
msgstr "%1$s stimmt %2$ss %3$s zu"
-#: ../../Zotlabs/Module/Like.php:429
+#: ../../Zotlabs/Module/Like.php:441
#, php-format
msgid "%1$s doesn't agree with %2$s's %3$s"
msgstr "%1$s lehnt %2$ss %3$s ab"
-#: ../../Zotlabs/Module/Like.php:431
+#: ../../Zotlabs/Module/Like.php:443
#, php-format
msgid "%1$s abstains from a decision on %2$s's %3$s"
msgstr "%1$s enthält sich zu %2$ss %3$s"
-#: ../../Zotlabs/Module/Like.php:433
+#: ../../Zotlabs/Module/Like.php:445
#, php-format
msgid "%1$s is attending %2$s's %3$s"
msgstr "%1$s nimmt an %2$ss %3$s teil"
-#: ../../Zotlabs/Module/Like.php:435
+#: ../../Zotlabs/Module/Like.php:447
#, php-format
msgid "%1$s is not attending %2$s's %3$s"
msgstr "%1$s nimmt an %2$ss %3$s nicht teil"
-#: ../../Zotlabs/Module/Like.php:437
+#: ../../Zotlabs/Module/Like.php:449
#, php-format
msgid "%1$s may attend %2$s's %3$s"
msgstr "%1$s nimmt vielleicht an %2$ss %3$s teil"
-#: ../../Zotlabs/Module/Like.php:547
+#: ../../Zotlabs/Module/Like.php:561
msgid "Action completed."
msgstr "Aktion durchgeführt."
-#: ../../Zotlabs/Module/Like.php:548
+#: ../../Zotlabs/Module/Like.php:562
msgid "Thank you."
msgstr "Vielen Dank."
-#: ../../Zotlabs/Module/Directory.php:245
+#: ../../Zotlabs/Module/Directory.php:250
#, php-format
msgid "%d rating"
msgid_plural "%d ratings"
msgstr[0] "%d Bewertung"
msgstr[1] "%d Bewertungen"
-#: ../../Zotlabs/Module/Directory.php:256
+#: ../../Zotlabs/Module/Directory.php:261
msgid "Gender: "
msgstr "Geschlecht:"
-#: ../../Zotlabs/Module/Directory.php:258
+#: ../../Zotlabs/Module/Directory.php:263
msgid "Status: "
msgstr "Status:"
-#: ../../Zotlabs/Module/Directory.php:260
+#: ../../Zotlabs/Module/Directory.php:265
msgid "Homepage: "
msgstr "Webseite:"
-#: ../../Zotlabs/Module/Directory.php:309 ../../include/channel.php:1516
+#: ../../Zotlabs/Module/Directory.php:314 ../../include/channel.php:1564
msgid "Age:"
msgstr "Alter:"
-#: ../../Zotlabs/Module/Directory.php:314 ../../include/channel.php:1352
-#: ../../include/event.php:52 ../../include/event.php:84
+#: ../../Zotlabs/Module/Directory.php:319 ../../include/channel.php:1392
+#: ../../include/event.php:53 ../../include/event.php:85
msgid "Location:"
msgstr "Ort:"
-#: ../../Zotlabs/Module/Directory.php:320
+#: ../../Zotlabs/Module/Directory.php:325
msgid "Description:"
msgstr "Beschreibung:"
-#: ../../Zotlabs/Module/Directory.php:325 ../../include/channel.php:1532
+#: ../../Zotlabs/Module/Directory.php:330 ../../include/channel.php:1580
msgid "Hometown:"
msgstr "Heimatstadt:"
-#: ../../Zotlabs/Module/Directory.php:327 ../../include/channel.php:1540
+#: ../../Zotlabs/Module/Directory.php:332 ../../include/channel.php:1588
msgid "About:"
msgstr "Über:"
-#: ../../Zotlabs/Module/Directory.php:328 ../../Zotlabs/Module/Suggest.php:56
+#: ../../Zotlabs/Module/Directory.php:333 ../../Zotlabs/Module/Suggest.php:56
#: ../../Zotlabs/Widget/Follow.php:32 ../../Zotlabs/Widget/Suggestions.php:44
-#: ../../include/conversation.php:1035 ../../include/channel.php:1337
+#: ../../include/conversation.php:1052 ../../include/channel.php:1377
#: ../../include/connections.php:111
msgid "Connect"
msgstr "Verbinden"
-#: ../../Zotlabs/Module/Directory.php:329
+#: ../../Zotlabs/Module/Directory.php:334
msgid "Public Forum:"
msgstr "Öffentliches Forum:"
-#: ../../Zotlabs/Module/Directory.php:332
+#: ../../Zotlabs/Module/Directory.php:337
msgid "Keywords: "
msgstr "Schlüsselwörter:"
-#: ../../Zotlabs/Module/Directory.php:335
+#: ../../Zotlabs/Module/Directory.php:340
msgid "Don't suggest"
msgstr "Nicht vorschlagen"
-#: ../../Zotlabs/Module/Directory.php:337
-msgid "Common connections:"
-msgstr "Gemeinsame Verbindungen:"
+#: ../../Zotlabs/Module/Directory.php:342
+msgid "Common connections (estimated):"
+msgstr "Gemeinsame Verbindungen (geschätzt):"
-#: ../../Zotlabs/Module/Directory.php:386
+#: ../../Zotlabs/Module/Directory.php:391
msgid "Global Directory"
msgstr "Globales Verzeichnis"
-#: ../../Zotlabs/Module/Directory.php:386
+#: ../../Zotlabs/Module/Directory.php:391
msgid "Local Directory"
msgstr "Lokales Verzeichnis"
-#: ../../Zotlabs/Module/Directory.php:392
+#: ../../Zotlabs/Module/Directory.php:397
msgid "Finding:"
msgstr "Ergebnisse:"
-#: ../../Zotlabs/Module/Directory.php:395 ../../Zotlabs/Module/Suggest.php:64
+#: ../../Zotlabs/Module/Directory.php:400 ../../Zotlabs/Module/Suggest.php:64
#: ../../include/contact_widgets.php:24
msgid "Channel Suggestions"
msgstr "Kanal-Vorschläge"
-#: ../../Zotlabs/Module/Directory.php:397
+#: ../../Zotlabs/Module/Directory.php:402
msgid "next page"
msgstr "nächste Seite"
-#: ../../Zotlabs/Module/Directory.php:397
+#: ../../Zotlabs/Module/Directory.php:402
msgid "previous page"
msgstr "vorherige Seite"
-#: ../../Zotlabs/Module/Directory.php:398
+#: ../../Zotlabs/Module/Directory.php:403
msgid "Sort options"
msgstr "Sortieroptionen"
-#: ../../Zotlabs/Module/Directory.php:399
+#: ../../Zotlabs/Module/Directory.php:404
msgid "Alphabetic"
msgstr "alphabetisch"
-#: ../../Zotlabs/Module/Directory.php:400
+#: ../../Zotlabs/Module/Directory.php:405
msgid "Reverse Alphabetic"
msgstr "Entgegengesetzt alphabetisch"
-#: ../../Zotlabs/Module/Directory.php:401
+#: ../../Zotlabs/Module/Directory.php:406
msgid "Newest to Oldest"
msgstr "Neueste zuerst"
-#: ../../Zotlabs/Module/Directory.php:402
+#: ../../Zotlabs/Module/Directory.php:407
msgid "Oldest to Newest"
msgstr "Älteste zuerst"
-#: ../../Zotlabs/Module/Directory.php:419
+#: ../../Zotlabs/Module/Directory.php:424
msgid "No entries (some entries may be hidden)."
msgstr "Keine Einträge gefunden (einige könnten versteckt sein)."
@@ -6710,7 +6822,7 @@ msgid "Subject:"
msgstr "Betreff:"
#: ../../Zotlabs/Module/Mail.php:287 ../../Zotlabs/Module/Mail.php:429
-#: ../../include/conversation.php:1365
+#: ../../include/conversation.php:1382
msgid "Attach file"
msgstr "Datei anhängen"
@@ -6719,7 +6831,7 @@ msgid "Send"
msgstr "Absenden"
#: ../../Zotlabs/Module/Mail.php:292 ../../Zotlabs/Module/Mail.php:434
-#: ../../include/conversation.php:1410
+#: ../../include/conversation.php:1427
msgid "Set expiration date"
msgstr "Verfallsdatum"
@@ -6795,28 +6907,28 @@ msgstr "Software"
msgid "Rate"
msgstr "Bewerten"
-#: ../../Zotlabs/Module/Impel.php:41 ../../include/bbcode.php:263
+#: ../../Zotlabs/Module/Impel.php:43 ../../include/bbcode.php:263
msgid "webpage"
msgstr "Webseite"
-#: ../../Zotlabs/Module/Impel.php:46 ../../include/bbcode.php:269
+#: ../../Zotlabs/Module/Impel.php:48 ../../include/bbcode.php:269
msgid "block"
msgstr "Block"
-#: ../../Zotlabs/Module/Impel.php:51 ../../include/bbcode.php:266
+#: ../../Zotlabs/Module/Impel.php:53 ../../include/bbcode.php:266
msgid "layout"
msgstr "Layout"
-#: ../../Zotlabs/Module/Impel.php:58 ../../include/bbcode.php:272
+#: ../../Zotlabs/Module/Impel.php:60 ../../include/bbcode.php:272
msgid "menu"
msgstr "Menü"
-#: ../../Zotlabs/Module/Impel.php:181
+#: ../../Zotlabs/Module/Impel.php:183
#, php-format
msgid "%s element installed"
msgstr "Element für %s installiert"
-#: ../../Zotlabs/Module/Impel.php:184
+#: ../../Zotlabs/Module/Impel.php:186
#, php-format
msgid "%s element installation failed"
msgstr "Installation des Elements %s fehlgeschlagen"
@@ -6845,7 +6957,7 @@ msgstr "Gib einen Ordnernamen ein"
msgid "or select an existing folder (doubleclick)"
msgstr "oder wähle einen vorhanden Ordner aus (Doppelklick)"
-#: ../../Zotlabs/Module/Filer.php:54 ../../Zotlabs/Lib/ThreadItem.php:141
+#: ../../Zotlabs/Module/Filer.php:54 ../../Zotlabs/Lib/ThreadItem.php:151
msgid "Save to Folder"
msgstr "In Ordner speichern"
@@ -6867,82 +6979,86 @@ msgstr "Bitte stimme den Nutzungsbedingungen zu. Registrierung fehlgeschlagen."
msgid "Passwords do not match."
msgstr "Passwörter stimmen nicht überein."
-#: ../../Zotlabs/Module/Register.php:131
+#: ../../Zotlabs/Module/Register.php:127 ../../Zotlabs/Module/Register.php:137
msgid ""
"Registration successful. Please check your email for validation "
"instructions."
msgstr "Registrierung erfolgreich. Eine E-Mail mit weiteren Anweisungen wurde an Dich gesendet."
-#: ../../Zotlabs/Module/Register.php:137
+#: ../../Zotlabs/Module/Register.php:135
+msgid "Registration successful. Continue to create your first channel..."
+msgstr "Registrierung erfolgreich. Fahre fort, indem Du Deinen ersten Kanal anlegst..."
+
+#: ../../Zotlabs/Module/Register.php:144
msgid "Your registration is pending approval by the site owner."
msgstr "Deine Registrierung muss noch vom Betreiber der Seite freigegeben werden."
-#: ../../Zotlabs/Module/Register.php:140
+#: ../../Zotlabs/Module/Register.php:147
msgid "Your registration can not be processed."
msgstr "Deine Registrierung konnte nicht verarbeitet werden."
-#: ../../Zotlabs/Module/Register.php:184
+#: ../../Zotlabs/Module/Register.php:192
msgid "Registration on this hub is disabled."
msgstr "Die Registrierung auf diesem Hub ist nicht möglich."
-#: ../../Zotlabs/Module/Register.php:193
+#: ../../Zotlabs/Module/Register.php:201
msgid "Registration on this hub is by approval only."
msgstr "Eine Registrierung auf diesem Hub erfordert die Zustimmung durch den Administrator."
-#: ../../Zotlabs/Module/Register.php:194
+#: ../../Zotlabs/Module/Register.php:202
msgid "<a href=\"pubsites\">Register at another affiliated hub.</a>"
msgstr "<a href=\"pubsites\">Registriere Dich auf einem der anderen verbundenen Hubs.</a>"
-#: ../../Zotlabs/Module/Register.php:204
+#: ../../Zotlabs/Module/Register.php:212
msgid ""
"This site has exceeded the number of allowed daily account registrations. "
"Please try again tomorrow."
msgstr "Die maximale Anzahl täglicher Registrierungen auf diesem Server wurde überschritten. Bitte versuche es morgen noch einmal."
-#: ../../Zotlabs/Module/Register.php:227
+#: ../../Zotlabs/Module/Register.php:235
#, php-format
msgid "I accept the %s for this website"
msgstr "Ich akzeptiere die %s für diese Webseite"
-#: ../../Zotlabs/Module/Register.php:229
+#: ../../Zotlabs/Module/Register.php:241
#, php-format
-msgid "I am over 13 years of age and accept the %s for this website"
-msgstr "Ich bin älter als 13 Jahre und akzeptiere die %s dieser Webseite"
+msgid "I am over %s years of age and accept the %s for this website"
+msgstr "Ich bin älter als %s Jahre und akzeptiere die %s dieser Website."
-#: ../../Zotlabs/Module/Register.php:233
+#: ../../Zotlabs/Module/Register.php:245
msgid "Your email address"
msgstr "Ihre E-Mail Adresse"
-#: ../../Zotlabs/Module/Register.php:234
+#: ../../Zotlabs/Module/Register.php:246
msgid "Choose a password"
msgstr "Passwort"
-#: ../../Zotlabs/Module/Register.php:235
+#: ../../Zotlabs/Module/Register.php:247
msgid "Please re-enter your password"
msgstr "Bitte gib Dein Passwort noch einmal ein"
-#: ../../Zotlabs/Module/Register.php:236
+#: ../../Zotlabs/Module/Register.php:248
msgid "Please enter your invitation code"
msgstr "Bitte trage Deinen Einladungs-Code ein"
-#: ../../Zotlabs/Module/Register.php:241
+#: ../../Zotlabs/Module/Register.php:253
msgid "no"
msgstr "nein"
-#: ../../Zotlabs/Module/Register.php:241
+#: ../../Zotlabs/Module/Register.php:253
msgid "yes"
msgstr "ja"
-#: ../../Zotlabs/Module/Register.php:256
+#: ../../Zotlabs/Module/Register.php:268
msgid "Membership on this site is by invitation only."
msgstr "Mitgliedschaft auf dieser Seite ist nur nach vorheriger Einladung möglich."
-#: ../../Zotlabs/Module/Register.php:268 ../../boot.php:1620
-#: ../../include/nav.php:189
+#: ../../Zotlabs/Module/Register.php:280 ../../boot.php:1645
+#: ../../include/nav.php:196
msgid "Register"
msgstr "Registrieren"
-#: ../../Zotlabs/Module/Register.php:269
+#: ../../Zotlabs/Module/Register.php:281
msgid ""
"This site may require email verification after submitting this form. If you "
"are returned to a login page, please check your email for instructions."
@@ -6953,30 +7069,30 @@ msgstr "Diese Seite verlangt möglicherweise eine Emailbestätigung nach dem Abs
msgid "Cover Photos"
msgstr "Cover Foto"
-#: ../../Zotlabs/Module/Cover_photo.php:237 ../../include/items.php:4320
+#: ../../Zotlabs/Module/Cover_photo.php:237 ../../include/items.php:4478
msgid "female"
msgstr "weiblich"
-#: ../../Zotlabs/Module/Cover_photo.php:238 ../../include/items.php:4321
+#: ../../Zotlabs/Module/Cover_photo.php:238 ../../include/items.php:4479
#, php-format
msgid "%1$s updated her %2$s"
msgstr "%1$s hat ihr %2$s aktualisiert"
-#: ../../Zotlabs/Module/Cover_photo.php:239 ../../include/items.php:4322
+#: ../../Zotlabs/Module/Cover_photo.php:239 ../../include/items.php:4480
msgid "male"
msgstr "männlich"
-#: ../../Zotlabs/Module/Cover_photo.php:240 ../../include/items.php:4323
+#: ../../Zotlabs/Module/Cover_photo.php:240 ../../include/items.php:4481
#, php-format
msgid "%1$s updated his %2$s"
msgstr "%1$s hat sein %2$s aktualisiert"
-#: ../../Zotlabs/Module/Cover_photo.php:242 ../../include/items.php:4325
+#: ../../Zotlabs/Module/Cover_photo.php:242 ../../include/items.php:4483
#, php-format
msgid "%1$s updated their %2$s"
msgstr "%1$s hat sein/ihr %2$s aktualisiert"
-#: ../../Zotlabs/Module/Cover_photo.php:244 ../../include/channel.php:1980
+#: ../../Zotlabs/Module/Cover_photo.php:244 ../../include/channel.php:2053
msgid "cover photo"
msgstr "Cover Foto"
@@ -6988,8 +7104,8 @@ msgstr "Cover Foto hochladen"
msgid "Documentation Search"
msgstr "Suche in der Dokumentation"
-#: ../../Zotlabs/Module/Help.php:80 ../../include/conversation.php:1804
-#: ../../include/nav.php:412
+#: ../../Zotlabs/Module/Help.php:80 ../../include/conversation.php:1821
+#: ../../include/nav.php:423
msgid "About"
msgstr "Über"
@@ -7013,7 +7129,11 @@ msgstr "$Projectname-Dokumentation"
msgid "Contents"
msgstr "Inhalt"
-#: ../../Zotlabs/Module/Display.php:340
+#: ../../Zotlabs/Module/Display.php:349
+msgid "Article"
+msgstr "Artikel"
+
+#: ../../Zotlabs/Module/Display.php:401
msgid "Item has been removed."
msgstr "Der Beitrag wurde entfernt."
@@ -7033,35 +7153,35 @@ msgstr "Schlagwort zum Entfernen auswählen:"
msgid "No such group"
msgstr "Gruppe nicht gefunden"
-#: ../../Zotlabs/Module/Network.php:136
+#: ../../Zotlabs/Module/Network.php:137
msgid "No such channel"
msgstr "Kanal nicht gefunden"
-#: ../../Zotlabs/Module/Network.php:141
+#: ../../Zotlabs/Module/Network.php:142
msgid "forum"
msgstr "Forum"
-#: ../../Zotlabs/Module/Network.php:153
+#: ../../Zotlabs/Module/Network.php:154
msgid "Search Results For:"
msgstr "Suchergebnisse für:"
-#: ../../Zotlabs/Module/Network.php:221
+#: ../../Zotlabs/Module/Network.php:222
msgid "Privacy group is empty"
msgstr "Gruppe ist leer"
-#: ../../Zotlabs/Module/Network.php:230
+#: ../../Zotlabs/Module/Network.php:231
msgid "Privacy group: "
msgstr "Gruppe:"
-#: ../../Zotlabs/Module/Network.php:256
+#: ../../Zotlabs/Module/Network.php:257
msgid "Invalid connection."
msgstr "Ungültige Verbindung."
-#: ../../Zotlabs/Module/Network.php:275 ../../addon/redred/redred.php:65
+#: ../../Zotlabs/Module/Network.php:276 ../../addon/redred/redred.php:65
msgid "Invalid channel."
msgstr "Ungültiger Kanal."
-#: ../../Zotlabs/Module/Acl.php:351
+#: ../../Zotlabs/Module/Acl.php:358
msgid "network"
msgstr "Netzwerk"
@@ -7083,40 +7203,40 @@ msgstr "Zugriff verweigert."
msgid "File not found."
msgstr "Datei nicht gefunden."
-#: ../../Zotlabs/Module/Filestorage.php:137
+#: ../../Zotlabs/Module/Filestorage.php:142
msgid "Edit file permissions"
msgstr "Dateiberechtigungen bearbeiten"
-#: ../../Zotlabs/Module/Filestorage.php:149
+#: ../../Zotlabs/Module/Filestorage.php:154
msgid "Set/edit permissions"
msgstr "Berechtigungen setzen/ändern"
-#: ../../Zotlabs/Module/Filestorage.php:150
+#: ../../Zotlabs/Module/Filestorage.php:155
msgid "Include all files and sub folders"
msgstr "Alle Dateien und Unterverzeichnisse einbinden"
-#: ../../Zotlabs/Module/Filestorage.php:151
+#: ../../Zotlabs/Module/Filestorage.php:156
msgid "Return to file list"
msgstr "Zurück zur Dateiliste"
-#: ../../Zotlabs/Module/Filestorage.php:153
+#: ../../Zotlabs/Module/Filestorage.php:158
msgid "Copy/paste this code to attach file to a post"
msgstr "Diesen Code kopieren und einfügen, um die Datei an einen Beitrag anzuhängen"
-#: ../../Zotlabs/Module/Filestorage.php:154
+#: ../../Zotlabs/Module/Filestorage.php:159
msgid "Copy/paste this URL to link file from a web page"
msgstr "Diese URL verwenden, um von einer Webseite aus auf die Datei zu verlinken"
-#: ../../Zotlabs/Module/Filestorage.php:156
+#: ../../Zotlabs/Module/Filestorage.php:161
msgid "Share this file"
msgstr "Diese Datei freigeben"
-#: ../../Zotlabs/Module/Filestorage.php:157
+#: ../../Zotlabs/Module/Filestorage.php:162
msgid "Show URL to this file"
msgstr "URL zu dieser Datei anzeigen"
-#: ../../Zotlabs/Module/Filestorage.php:158
-#: ../../Zotlabs/Storage/Browser.php:351
+#: ../../Zotlabs/Module/Filestorage.php:163
+#: ../../Zotlabs/Storage/Browser.php:394
msgid "Show in your contacts shared folder"
msgstr "Im geteilten Ordner Deiner Kontakte anzeigen"
@@ -7250,7 +7370,7 @@ msgid ""
"Password reset failed."
msgstr "Die Anfrage konnte nicht verifiziert werden. (Vielleicht hast Du schon einmal auf den Link in der E-Mail geklickt?) Passwort-Rücksetzung fehlgeschlagen."
-#: ../../Zotlabs/Module/Lostpass.php:91 ../../boot.php:1648
+#: ../../Zotlabs/Module/Lostpass.php:91 ../../boot.php:1673
msgid "Password Reset"
msgstr "Zurücksetzen des Kennworts"
@@ -7295,8 +7415,8 @@ msgstr "Gib Deine E-Mail-Adresse ein, um Dein Passwort zurücksetzen zu lassen.
msgid "Email Address"
msgstr "E-Mail Adresse"
-#: ../../Zotlabs/Module/Notifications.php:43
-#: ../../Zotlabs/Lib/ThreadItem.php:397
+#: ../../Zotlabs/Module/Notifications.php:62
+#: ../../Zotlabs/Lib/ThreadItem.php:408
msgid "Mark all seen"
msgstr "Alle als gelesen markieren"
@@ -7348,31 +7468,30 @@ msgstr "Teilen-Knopf für Firefox"
msgid "Remote Diagnostics"
msgstr "Ferndiagnose"
-#: ../../Zotlabs/Lib/Apps.php:232 ../../include/features.php:342
+#: ../../Zotlabs/Lib/Apps.php:232 ../../include/features.php:352
msgid "Suggest Channels"
msgstr "Kanäle vorschlagen"
-#: ../../Zotlabs/Lib/Apps.php:233 ../../boot.php:1639
-#: ../../include/nav.php:153 ../../include/nav.php:157
+#: ../../Zotlabs/Lib/Apps.php:233 ../../boot.php:1664
+#: ../../include/nav.php:160 ../../include/nav.php:164
msgid "Login"
msgstr "Anmelden"
-#: ../../Zotlabs/Lib/Apps.php:235 ../../include/nav.php:98
+#: ../../Zotlabs/Lib/Apps.php:235 ../../include/nav.php:105
msgid "Activity"
msgstr "Aktivität"
-#: ../../Zotlabs/Lib/Apps.php:239 ../../include/conversation.php:1900
-#: ../../include/features.php:95 ../../include/nav.php:507
+#: ../../Zotlabs/Lib/Apps.php:239 ../../include/conversation.php:1928
+#: ../../include/features.php:95 ../../include/nav.php:529
msgid "Wiki"
msgstr "Wiki"
-#: ../../Zotlabs/Lib/Apps.php:240 ../../include/nav.php:102
+#: ../../Zotlabs/Lib/Apps.php:240 ../../include/nav.php:109
msgid "Channel Home"
msgstr "Mein Kanal"
-#: ../../Zotlabs/Lib/Apps.php:243 ../../include/conversation.php:1833
-#: ../../include/conversation.php:1836 ../../include/nav.php:124
-#: ../../include/nav.php:441 ../../include/nav.php:444
+#: ../../Zotlabs/Lib/Apps.php:243 ../../include/conversation.php:1850
+#: ../../include/conversation.php:1853 ../../include/nav.php:131
msgid "Events"
msgstr "Termine"
@@ -7380,7 +7499,7 @@ msgstr "Termine"
msgid "Directory"
msgstr "Verzeichnis"
-#: ../../Zotlabs/Lib/Apps.php:246 ../../include/nav.php:116
+#: ../../Zotlabs/Lib/Apps.php:246 ../../include/nav.php:123
msgid "Mail"
msgstr "Mail"
@@ -7430,14 +7549,22 @@ msgstr "Kaufen"
msgid "Undelete"
msgstr "Wieder hergestellt"
-#: ../../Zotlabs/Lib/Apps.php:407
+#: ../../Zotlabs/Lib/Apps.php:409
msgid "Add to app-tray"
msgstr "Zum App-Menü hinzufügen"
-#: ../../Zotlabs/Lib/Apps.php:408
+#: ../../Zotlabs/Lib/Apps.php:410
msgid "Remove from app-tray"
msgstr "Aus dem App-Menü entfernen"
+#: ../../Zotlabs/Lib/Apps.php:411
+msgid "Pin to navbar"
+msgstr "An Navigationsleiste anpinnen"
+
+#: ../../Zotlabs/Lib/Apps.php:412
+msgid "Unpin from navbar"
+msgstr "Von Navigationsleiste entfernen"
+
#: ../../Zotlabs/Lib/Permcat.php:58
msgctxt "permcat"
msgid "default"
@@ -7459,71 +7586,71 @@ msgid "publisher"
msgstr "Autor"
#: ../../Zotlabs/Lib/NativeWikiPage.php:42
-#: ../../Zotlabs/Lib/NativeWikiPage.php:90
+#: ../../Zotlabs/Lib/NativeWikiPage.php:93
msgid "(No Title)"
msgstr "(Kein Titel)"
-#: ../../Zotlabs/Lib/NativeWikiPage.php:104
+#: ../../Zotlabs/Lib/NativeWikiPage.php:107
msgid "Wiki page create failed."
msgstr "Anlegen der Wiki-Seite fehlgeschlagen."
-#: ../../Zotlabs/Lib/NativeWikiPage.php:117
+#: ../../Zotlabs/Lib/NativeWikiPage.php:120
msgid "Wiki not found."
msgstr "Wiki nicht gefunden."
-#: ../../Zotlabs/Lib/NativeWikiPage.php:128
+#: ../../Zotlabs/Lib/NativeWikiPage.php:131
msgid "Destination name already exists"
msgstr "Zielname bereits vorhanden"
-#: ../../Zotlabs/Lib/NativeWikiPage.php:160
-#: ../../Zotlabs/Lib/NativeWikiPage.php:355
+#: ../../Zotlabs/Lib/NativeWikiPage.php:163
+#: ../../Zotlabs/Lib/NativeWikiPage.php:359
msgid "Page not found"
msgstr "Seite nicht gefunden"
-#: ../../Zotlabs/Lib/NativeWikiPage.php:191
+#: ../../Zotlabs/Lib/NativeWikiPage.php:194
msgid "Error reading page content"
msgstr "Fehler beim Lesen des Seiteninhalts"
-#: ../../Zotlabs/Lib/NativeWikiPage.php:347
-#: ../../Zotlabs/Lib/NativeWikiPage.php:396
-#: ../../Zotlabs/Lib/NativeWikiPage.php:463
-#: ../../Zotlabs/Lib/NativeWikiPage.php:504
+#: ../../Zotlabs/Lib/NativeWikiPage.php:350
+#: ../../Zotlabs/Lib/NativeWikiPage.php:400
+#: ../../Zotlabs/Lib/NativeWikiPage.php:467
+#: ../../Zotlabs/Lib/NativeWikiPage.php:508
msgid "Error reading wiki"
msgstr "Fehler beim Lesen des Wiki"
-#: ../../Zotlabs/Lib/NativeWikiPage.php:384
+#: ../../Zotlabs/Lib/NativeWikiPage.php:388
msgid "Page update failed."
msgstr "Seitenaktualisierung fehlgeschlagen."
-#: ../../Zotlabs/Lib/NativeWikiPage.php:418
+#: ../../Zotlabs/Lib/NativeWikiPage.php:422
msgid "Nothing deleted"
msgstr "Nichts gelöscht"
-#: ../../Zotlabs/Lib/NativeWikiPage.php:484
+#: ../../Zotlabs/Lib/NativeWikiPage.php:488
msgid "Compare: object not found."
msgstr "Vergleichen: Objekt nicht gefunden."
-#: ../../Zotlabs/Lib/NativeWikiPage.php:490
+#: ../../Zotlabs/Lib/NativeWikiPage.php:494
msgid "Page updated"
msgstr "Seite aktualisiert"
-#: ../../Zotlabs/Lib/NativeWikiPage.php:493
+#: ../../Zotlabs/Lib/NativeWikiPage.php:497
msgid "Untitled"
msgstr "Ohne Titel"
-#: ../../Zotlabs/Lib/NativeWikiPage.php:499
+#: ../../Zotlabs/Lib/NativeWikiPage.php:503
msgid "Wiki resource_id required for git commit"
msgstr "Die resource_id des Wiki wird benötigt für den git commit."
-#: ../../Zotlabs/Lib/NativeWikiPage.php:555
+#: ../../Zotlabs/Lib/NativeWikiPage.php:559
#: ../../Zotlabs/Widget/Wiki_page_history.php:23
msgctxt "wiki_history"
msgid "Message"
msgstr "Nachricht"
-#: ../../Zotlabs/Lib/NativeWikiPage.php:593
-#: ../../addon/gitwiki/gitwiki_backend.php:579 ../../include/bbcode.php:672
-#: ../../include/bbcode.php:818
+#: ../../Zotlabs/Lib/NativeWikiPage.php:597
+#: ../../addon/gitwiki/gitwiki_backend.php:579 ../../include/bbcode.php:674
+#: ../../include/bbcode.php:822
msgid "Different viewers will see this text differently"
msgstr "Verschiedene Betrachter werden diesen Text unterschiedlich sehen"
@@ -7590,23 +7717,23 @@ msgstr "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner Dateien und F
msgid "This is your default setting for the audience of your webpages"
msgstr "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner Webseiten."
-#: ../../Zotlabs/Lib/Chatroom.php:27
+#: ../../Zotlabs/Lib/Chatroom.php:23
msgid "Missing room name"
msgstr "Der Chatraum hat keinen Namen"
-#: ../../Zotlabs/Lib/Chatroom.php:36
+#: ../../Zotlabs/Lib/Chatroom.php:32
msgid "Duplicate room name"
msgstr "Name des Chatraums bereits vergeben"
-#: ../../Zotlabs/Lib/Chatroom.php:86 ../../Zotlabs/Lib/Chatroom.php:94
+#: ../../Zotlabs/Lib/Chatroom.php:82 ../../Zotlabs/Lib/Chatroom.php:90
msgid "Invalid room specifier."
msgstr "Ungültiger Raumbezeichner."
-#: ../../Zotlabs/Lib/Chatroom.php:126
+#: ../../Zotlabs/Lib/Chatroom.php:122
msgid "Room not found."
msgstr "Chatraum konnte nicht gefunden werden."
-#: ../../Zotlabs/Lib/Chatroom.php:147
+#: ../../Zotlabs/Lib/Chatroom.php:143
msgid "Room is full"
msgstr "Der Chatraum ist voll"
@@ -7832,11 +7959,11 @@ msgstr "Bitte besuche %s um den Vorschlag zu akzeptieren oder abzulehnen."
msgid "[$Projectname:Notify]"
msgstr "[$Projectname:Benachrichtigung]"
-#: ../../Zotlabs/Lib/Enotify.php:789
+#: ../../Zotlabs/Lib/Enotify.php:793
msgid "created a new post"
msgstr "Neuer Beitrag wurde erzeugt"
-#: ../../Zotlabs/Lib/Enotify.php:790
+#: ../../Zotlabs/Lib/Enotify.php:794
#, php-format
msgid "commented on %s's post"
msgstr "hat %s's Beitrag kommentiert"
@@ -7859,208 +7986,208 @@ msgstr "Aktualisierungsfehler auf %s"
msgid "Update %s failed. See error logs."
msgstr "Aktualisierung %s fehlgeschlagen. Details in den Fehlerprotokollen."
-#: ../../Zotlabs/Lib/ThreadItem.php:97 ../../include/conversation.php:681
+#: ../../Zotlabs/Lib/ThreadItem.php:97 ../../include/conversation.php:697
msgid "Private Message"
msgstr "Private Nachricht"
-#: ../../Zotlabs/Lib/ThreadItem.php:137 ../../include/conversation.php:673
+#: ../../Zotlabs/Lib/ThreadItem.php:147 ../../include/conversation.php:689
msgid "Select"
msgstr "Auswählen"
-#: ../../Zotlabs/Lib/ThreadItem.php:162
+#: ../../Zotlabs/Lib/ThreadItem.php:172
msgid "I will attend"
msgstr "Ich werde teilnehmen"
-#: ../../Zotlabs/Lib/ThreadItem.php:162
+#: ../../Zotlabs/Lib/ThreadItem.php:172
msgid "I will not attend"
msgstr "Ich werde nicht teilnehmen"
-#: ../../Zotlabs/Lib/ThreadItem.php:162
+#: ../../Zotlabs/Lib/ThreadItem.php:172
msgid "I might attend"
msgstr "Ich werde vielleicht teilnehmen"
-#: ../../Zotlabs/Lib/ThreadItem.php:172
+#: ../../Zotlabs/Lib/ThreadItem.php:182
msgid "I agree"
msgstr "Ich stimme zu"
-#: ../../Zotlabs/Lib/ThreadItem.php:172
+#: ../../Zotlabs/Lib/ThreadItem.php:182
msgid "I disagree"
msgstr "Ich lehne ab"
-#: ../../Zotlabs/Lib/ThreadItem.php:172
+#: ../../Zotlabs/Lib/ThreadItem.php:182
msgid "I abstain"
msgstr "Ich enthalte mich"
-#: ../../Zotlabs/Lib/ThreadItem.php:228
+#: ../../Zotlabs/Lib/ThreadItem.php:238
msgid "Add Star"
msgstr "Stern hinzufügen"
-#: ../../Zotlabs/Lib/ThreadItem.php:229
+#: ../../Zotlabs/Lib/ThreadItem.php:239
msgid "Remove Star"
msgstr "Stern entfernen"
-#: ../../Zotlabs/Lib/ThreadItem.php:230
+#: ../../Zotlabs/Lib/ThreadItem.php:240
msgid "Toggle Star Status"
msgstr "Markierungsstatus (Stern) umschalten"
-#: ../../Zotlabs/Lib/ThreadItem.php:234
+#: ../../Zotlabs/Lib/ThreadItem.php:244
msgid "starred"
msgstr "markiert"
-#: ../../Zotlabs/Lib/ThreadItem.php:244 ../../include/conversation.php:688
+#: ../../Zotlabs/Lib/ThreadItem.php:254 ../../include/conversation.php:704
msgid "Message signature validated"
msgstr "Signatur überprüft"
-#: ../../Zotlabs/Lib/ThreadItem.php:245 ../../include/conversation.php:689
+#: ../../Zotlabs/Lib/ThreadItem.php:255 ../../include/conversation.php:705
msgid "Message signature incorrect"
msgstr "Signatur nicht korrekt"
-#: ../../Zotlabs/Lib/ThreadItem.php:253
+#: ../../Zotlabs/Lib/ThreadItem.php:263
msgid "Add Tag"
msgstr "Tag hinzufügen"
-#: ../../Zotlabs/Lib/ThreadItem.php:271 ../../include/taxonomy.php:433
+#: ../../Zotlabs/Lib/ThreadItem.php:281 ../../include/taxonomy.php:506
msgid "like"
msgstr "mag"
-#: ../../Zotlabs/Lib/ThreadItem.php:272 ../../include/taxonomy.php:434
+#: ../../Zotlabs/Lib/ThreadItem.php:282 ../../include/taxonomy.php:507
msgid "dislike"
msgstr "verurteile"
-#: ../../Zotlabs/Lib/ThreadItem.php:276
+#: ../../Zotlabs/Lib/ThreadItem.php:286
msgid "Share This"
msgstr "Teilen"
-#: ../../Zotlabs/Lib/ThreadItem.php:276
+#: ../../Zotlabs/Lib/ThreadItem.php:286
msgid "share"
msgstr "Teilen"
-#: ../../Zotlabs/Lib/ThreadItem.php:285
+#: ../../Zotlabs/Lib/ThreadItem.php:295
msgid "Delivery Report"
msgstr "Zustellungsbericht"
-#: ../../Zotlabs/Lib/ThreadItem.php:303
+#: ../../Zotlabs/Lib/ThreadItem.php:313
#, php-format
msgid "%d comment"
msgid_plural "%d comments"
msgstr[0] "%d Kommentar"
msgstr[1] "%d Kommentare"
-#: ../../Zotlabs/Lib/ThreadItem.php:333 ../../Zotlabs/Lib/ThreadItem.php:334
+#: ../../Zotlabs/Lib/ThreadItem.php:343 ../../Zotlabs/Lib/ThreadItem.php:344
#, php-format
msgid "View %s's profile - %s"
msgstr "Schaue Dir %ss Profil an – %s"
-#: ../../Zotlabs/Lib/ThreadItem.php:337
+#: ../../Zotlabs/Lib/ThreadItem.php:347
msgid "to"
msgstr "an"
-#: ../../Zotlabs/Lib/ThreadItem.php:338
+#: ../../Zotlabs/Lib/ThreadItem.php:348
msgid "via"
msgstr "via"
-#: ../../Zotlabs/Lib/ThreadItem.php:339
+#: ../../Zotlabs/Lib/ThreadItem.php:349
msgid "Wall-to-Wall"
msgstr "Wall-to-Wall"
-#: ../../Zotlabs/Lib/ThreadItem.php:340
+#: ../../Zotlabs/Lib/ThreadItem.php:350
msgid "via Wall-To-Wall:"
msgstr "via Wall-To-Wall:"
-#: ../../Zotlabs/Lib/ThreadItem.php:353 ../../include/conversation.php:747
+#: ../../Zotlabs/Lib/ThreadItem.php:363 ../../include/conversation.php:763
#, php-format
msgid "from %s"
msgstr "via %s"
-#: ../../Zotlabs/Lib/ThreadItem.php:356 ../../include/conversation.php:750
+#: ../../Zotlabs/Lib/ThreadItem.php:366 ../../include/conversation.php:766
#, php-format
msgid "last edited: %s"
msgstr "zuletzt bearbeitet: %s"
-#: ../../Zotlabs/Lib/ThreadItem.php:357 ../../include/conversation.php:751
+#: ../../Zotlabs/Lib/ThreadItem.php:367 ../../include/conversation.php:767
#, php-format
msgid "Expires: %s"
msgstr "Verfällt: %s"
-#: ../../Zotlabs/Lib/ThreadItem.php:363
+#: ../../Zotlabs/Lib/ThreadItem.php:374
msgid "Attend"
msgstr "Zusagen"
-#: ../../Zotlabs/Lib/ThreadItem.php:364
+#: ../../Zotlabs/Lib/ThreadItem.php:375
msgid "Attendance Options"
msgstr "Zusageoptionen"
-#: ../../Zotlabs/Lib/ThreadItem.php:365
+#: ../../Zotlabs/Lib/ThreadItem.php:376
msgid "Vote"
msgstr "Abstimmen"
-#: ../../Zotlabs/Lib/ThreadItem.php:366
+#: ../../Zotlabs/Lib/ThreadItem.php:377
msgid "Voting Options"
msgstr "Abstimmungsoptionen"
-#: ../../Zotlabs/Lib/ThreadItem.php:387
+#: ../../Zotlabs/Lib/ThreadItem.php:398
#: ../../addon/bookmarker/bookmarker.php:38
msgid "Save Bookmarks"
msgstr "Favoriten speichern"
-#: ../../Zotlabs/Lib/ThreadItem.php:388
+#: ../../Zotlabs/Lib/ThreadItem.php:399
msgid "Add to Calendar"
msgstr "Zum Kalender hinzufügen"
-#: ../../Zotlabs/Lib/ThreadItem.php:415 ../../include/conversation.php:471
+#: ../../Zotlabs/Lib/ThreadItem.php:426 ../../include/conversation.php:483
msgid "This is an unsaved preview"
msgstr "Dies ist eine nicht gespeicherte Vorschau"
-#: ../../Zotlabs/Lib/ThreadItem.php:447 ../../include/js_strings.php:7
+#: ../../Zotlabs/Lib/ThreadItem.php:458 ../../include/js_strings.php:7
#, php-format
msgid "%s show all"
msgstr "%s mehr anzeigen"
-#: ../../Zotlabs/Lib/ThreadItem.php:744 ../../include/conversation.php:1360
+#: ../../Zotlabs/Lib/ThreadItem.php:755 ../../include/conversation.php:1377
msgid "Bold"
msgstr "Fett"
-#: ../../Zotlabs/Lib/ThreadItem.php:745 ../../include/conversation.php:1361
+#: ../../Zotlabs/Lib/ThreadItem.php:756 ../../include/conversation.php:1378
msgid "Italic"
msgstr "Kursiv"
-#: ../../Zotlabs/Lib/ThreadItem.php:746 ../../include/conversation.php:1362
+#: ../../Zotlabs/Lib/ThreadItem.php:757 ../../include/conversation.php:1379
msgid "Underline"
msgstr "Unterstrichen"
-#: ../../Zotlabs/Lib/ThreadItem.php:747 ../../include/conversation.php:1363
+#: ../../Zotlabs/Lib/ThreadItem.php:758 ../../include/conversation.php:1380
msgid "Quote"
msgstr "Zitat"
-#: ../../Zotlabs/Lib/ThreadItem.php:748 ../../include/conversation.php:1364
+#: ../../Zotlabs/Lib/ThreadItem.php:759 ../../include/conversation.php:1381
msgid "Code"
msgstr "Code"
-#: ../../Zotlabs/Lib/ThreadItem.php:749
+#: ../../Zotlabs/Lib/ThreadItem.php:760
msgid "Image"
msgstr "Bild"
-#: ../../Zotlabs/Lib/ThreadItem.php:750
+#: ../../Zotlabs/Lib/ThreadItem.php:761
msgid "Attach File"
msgstr "Datei anhängen"
-#: ../../Zotlabs/Lib/ThreadItem.php:751
+#: ../../Zotlabs/Lib/ThreadItem.php:762
msgid "Insert Link"
msgstr "Link einfügen"
-#: ../../Zotlabs/Lib/ThreadItem.php:752
+#: ../../Zotlabs/Lib/ThreadItem.php:763
msgid "Video"
msgstr "Video"
-#: ../../Zotlabs/Lib/ThreadItem.php:762
+#: ../../Zotlabs/Lib/ThreadItem.php:773
msgid "Your full name (required)"
msgstr "Ihr vollständiger Name (erforderlich)"
-#: ../../Zotlabs/Lib/ThreadItem.php:763
+#: ../../Zotlabs/Lib/ThreadItem.php:774
msgid "Your email address (required)"
msgstr "Ihre E-Mail-Adresse (erforderlich)"
-#: ../../Zotlabs/Lib/ThreadItem.php:764
+#: ../../Zotlabs/Lib/ThreadItem.php:775
msgid "Your website URL (optional)"
msgstr "Ihre Webseiten-URL (optional)"
@@ -8076,7 +8203,7 @@ msgstr "Fern-Authentifizierung blockiert. Du bist lokal auf diesem Server angeme
msgid "Welcome %s. Remote authentication successful."
msgstr "Willkommen %s. Entfernte Authentifizierung erfolgreich."
-#: ../../Zotlabs/Storage/Browser.php:107 ../../Zotlabs/Storage/Browser.php:238
+#: ../../Zotlabs/Storage/Browser.php:107 ../../Zotlabs/Storage/Browser.php:284
msgid "parent"
msgstr "Übergeordnetes Verzeichnis"
@@ -8092,7 +8219,8 @@ msgstr "Prinzipal"
msgid "Addressbook"
msgstr "Adressbuch"
-#: ../../Zotlabs/Storage/Browser.php:140
+#: ../../Zotlabs/Storage/Browser.php:140 ../../include/nav.php:452
+#: ../../include/nav.php:455
msgid "Calendar"
msgstr "Kalender"
@@ -8104,48 +8232,41 @@ msgstr "Posteingang für überwachte Kalender"
msgid "Schedule Outbox"
msgstr "Postausgang für überwachte Kalender"
-#: ../../Zotlabs/Storage/Browser.php:226
+#: ../../Zotlabs/Storage/Browser.php:270
msgid "Total"
msgstr "Summe"
-#: ../../Zotlabs/Storage/Browser.php:228
+#: ../../Zotlabs/Storage/Browser.php:272
msgid "Shared"
msgstr "Geteilt"
-#: ../../Zotlabs/Storage/Browser.php:304
+#: ../../Zotlabs/Storage/Browser.php:350
#, php-format
msgid "You are using %1$s of your available file storage."
msgstr "Sie verwenden %1$s von Ihrem verfügbaren Dateispeicher."
-#: ../../Zotlabs/Storage/Browser.php:309
+#: ../../Zotlabs/Storage/Browser.php:355
#, php-format
msgid "You are using %1$s of %2$s available file storage. (%3$s&#37;)"
msgstr "Sie verwenden %1$s von %2$s verfügbarem Dateispeicher. (%3$s&#37;)"
-#: ../../Zotlabs/Storage/Browser.php:320
+#: ../../Zotlabs/Storage/Browser.php:366
msgid "WARNING:"
msgstr "WARNUNG:"
-#: ../../Zotlabs/Storage/Browser.php:330
-msgid ""
-"Please use DAV to upload large (video, audio) files.<br>See <a class=\"zrl\""
-" href=\"help/member/member_guide#Cloud_Desktop_Clients\">Cloud Desktop "
-"Clients</a>"
-msgstr "Bitte verwende DAV, um große Dateien (Audio, Video) hochzuladen.<br>Für weitere Informationen siehe <a class=\"zrl\" href=\"help/member/member_guide#Cloud_Desktop_Clients\">Cloud Desktop Clients</a>"
-
-#: ../../Zotlabs/Storage/Browser.php:334
+#: ../../Zotlabs/Storage/Browser.php:378
msgid "Create new folder"
msgstr "Neuen Ordner anlegen"
-#: ../../Zotlabs/Storage/Browser.php:336
+#: ../../Zotlabs/Storage/Browser.php:380
msgid "Upload file"
msgstr "Datei hochladen"
-#: ../../Zotlabs/Storage/Browser.php:350
+#: ../../Zotlabs/Storage/Browser.php:393
msgid "Drop files here to immediately upload"
msgstr "Dateien zum sofortigen Hochladen hier fallen lassen"
-#: ../../Zotlabs/Widget/Forums.php:85
+#: ../../Zotlabs/Widget/Forums.php:99
msgid "Forums"
msgstr "Foren"
@@ -8161,80 +8282,81 @@ msgstr "Lesen-schreiben"
msgid "Read-only"
msgstr "Nur Lesen"
-#: ../../Zotlabs/Widget/Cdav.php:116
+#: ../../Zotlabs/Widget/Cdav.php:117
msgid "My Calendars"
msgstr "Meine Kalender"
-#: ../../Zotlabs/Widget/Cdav.php:118
+#: ../../Zotlabs/Widget/Cdav.php:119
msgid "Shared Calendars"
msgstr "Geteilte Kalender"
-#: ../../Zotlabs/Widget/Cdav.php:122
+#: ../../Zotlabs/Widget/Cdav.php:123
msgid "Share this calendar"
msgstr "Diesen Kalender teilen"
-#: ../../Zotlabs/Widget/Cdav.php:124
+#: ../../Zotlabs/Widget/Cdav.php:125
msgid "Calendar name and color"
msgstr "Kalendername und -farbe"
-#: ../../Zotlabs/Widget/Cdav.php:126
+#: ../../Zotlabs/Widget/Cdav.php:127
msgid "Create new calendar"
msgstr "Neuen Kalender erstellen"
-#: ../../Zotlabs/Widget/Cdav.php:128
+#: ../../Zotlabs/Widget/Cdav.php:129
msgid "Calendar Name"
msgstr "Kalendername"
-#: ../../Zotlabs/Widget/Cdav.php:129
+#: ../../Zotlabs/Widget/Cdav.php:130
msgid "Calendar Tools"
msgstr "Kalenderwerkzeuge"
-#: ../../Zotlabs/Widget/Cdav.php:130
+#: ../../Zotlabs/Widget/Cdav.php:131
msgid "Import calendar"
msgstr "Kalender importieren"
-#: ../../Zotlabs/Widget/Cdav.php:131
+#: ../../Zotlabs/Widget/Cdav.php:132
msgid "Select a calendar to import to"
msgstr "Kalender zum Hineinimportieren auswählen"
-#: ../../Zotlabs/Widget/Cdav.php:158
+#: ../../Zotlabs/Widget/Cdav.php:159
msgid "Addressbooks"
msgstr "Adressbücher"
-#: ../../Zotlabs/Widget/Cdav.php:160
+#: ../../Zotlabs/Widget/Cdav.php:161
msgid "Addressbook name"
msgstr "Adressbuchname"
-#: ../../Zotlabs/Widget/Cdav.php:162
+#: ../../Zotlabs/Widget/Cdav.php:163
msgid "Create new addressbook"
msgstr "Neues Adressbuch erstellen"
-#: ../../Zotlabs/Widget/Cdav.php:163
+#: ../../Zotlabs/Widget/Cdav.php:164
msgid "Addressbook Name"
msgstr "Adressbuchname"
-#: ../../Zotlabs/Widget/Cdav.php:165
+#: ../../Zotlabs/Widget/Cdav.php:166
msgid "Addressbook Tools"
msgstr "Adressbuchwerkzeuge"
-#: ../../Zotlabs/Widget/Cdav.php:166
+#: ../../Zotlabs/Widget/Cdav.php:167
msgid "Import addressbook"
msgstr "Adressbuch importieren"
-#: ../../Zotlabs/Widget/Cdav.php:167
+#: ../../Zotlabs/Widget/Cdav.php:168
msgid "Select an addressbook to import to"
msgstr "Adressbuch zum Hineinimportieren auswählen"
-#: ../../Zotlabs/Widget/Appcategories.php:39
-#: ../../Zotlabs/Widget/Tagcloud.php:25 ../../include/contact_widgets.php:91
-#: ../../include/contact_widgets.php:132 ../../include/taxonomy.php:285
-#: ../../include/taxonomy.php:367 ../../include/taxonomy.php:387
+#: ../../Zotlabs/Widget/Appcategories.php:40
+#: ../../Zotlabs/Widget/Tagcloud.php:25 ../../include/contact_widgets.php:97
+#: ../../include/contact_widgets.php:141 ../../include/contact_widgets.php:186
+#: ../../include/taxonomy.php:337 ../../include/taxonomy.php:419
+#: ../../include/taxonomy.php:439 ../../include/taxonomy.php:460
msgid "Categories"
msgstr "Kategorien"
-#: ../../Zotlabs/Widget/Appcategories.php:42 ../../Zotlabs/Widget/Filer.php:31
-#: ../../include/contact_widgets.php:56 ../../include/contact_widgets.php:94
-#: ../../include/contact_widgets.php:135
+#: ../../Zotlabs/Widget/Appcategories.php:43 ../../Zotlabs/Widget/Filer.php:31
+#: ../../include/contact_widgets.php:56 ../../include/contact_widgets.php:100
+#: ../../include/contact_widgets.php:144 ../../include/contact_widgets.php:189
msgid "Everything"
msgstr "Alles"
@@ -8254,6 +8376,14 @@ msgstr "Kalender importieren"
msgid "Suggested Chatrooms"
msgstr "Chatraum-Vorschläge"
+#: ../../Zotlabs/Widget/Hq_controls.php:14
+msgid "HQ Control Panel"
+msgstr "HQ-Einstellungen"
+
+#: ../../Zotlabs/Widget/Hq_controls.php:17
+msgid "Create a new post"
+msgstr "Neuen Beitrag erstellen"
+
#: ../../Zotlabs/Widget/Mailmenu.php:13
msgid "Private Mail Menu"
msgstr "Private Nachrichten"
@@ -8262,21 +8392,21 @@ msgstr "Private Nachrichten"
msgid "Combined View"
msgstr "Kombinierte Anzeige"
-#: ../../Zotlabs/Widget/Mailmenu.php:20 ../../include/nav.php:119
+#: ../../Zotlabs/Widget/Mailmenu.php:20 ../../include/nav.php:126
msgid "Inbox"
msgstr "Eingang"
-#: ../../Zotlabs/Widget/Mailmenu.php:25 ../../include/nav.php:120
+#: ../../Zotlabs/Widget/Mailmenu.php:25 ../../include/nav.php:127
msgid "Outbox"
msgstr "Ausgang"
-#: ../../Zotlabs/Widget/Mailmenu.php:30 ../../include/nav.php:121
+#: ../../Zotlabs/Widget/Mailmenu.php:30 ../../include/nav.php:128
msgid "New Message"
msgstr "Neue Nachricht"
#: ../../Zotlabs/Widget/Chatroom_list.php:16
-#: ../../include/conversation.php:1847 ../../include/conversation.php:1850
-#: ../../include/nav.php:455 ../../include/nav.php:458
+#: ../../include/conversation.php:1864 ../../include/conversation.php:1867
+#: ../../include/nav.php:466 ../../include/nav.php:469
msgid "Chatrooms"
msgstr "Chaträume"
@@ -8338,11 +8468,11 @@ msgstr "Gesendete Nachrichten"
msgid "Conversations"
msgstr "Konversationen"
-#: ../../Zotlabs/Widget/Conversations.php:35
+#: ../../Zotlabs/Widget/Conversations.php:37
msgid "No messages."
msgstr "Keine Nachrichten."
-#: ../../Zotlabs/Widget/Conversations.php:55
+#: ../../Zotlabs/Widget/Conversations.php:57
msgid "Delete conversation"
msgstr "Unterhaltung löschen"
@@ -8358,11 +8488,11 @@ msgstr "Foto/Bild"
msgid "Remove term"
msgstr "Eintrag löschen"
-#: ../../Zotlabs/Widget/Savedsearch.php:83 ../../include/features.php:306
+#: ../../Zotlabs/Widget/Savedsearch.php:83 ../../include/features.php:316
msgid "Saved Searches"
msgstr "Gespeicherte Suchanfragen"
-#: ../../Zotlabs/Widget/Savedsearch.php:84 ../../include/group.php:337
+#: ../../Zotlabs/Widget/Savedsearch.php:84 ../../include/group.php:333
msgid "add"
msgstr "hinzufügen"
@@ -8370,15 +8500,16 @@ msgstr "hinzufügen"
msgid "Notes"
msgstr "Notizen"
-#: ../../Zotlabs/Widget/Wiki_pages.php:47 ../../addon/gitwiki/gitwiki.php:76
-msgid "Wiki Pages"
-msgstr "Wikiseiten"
-
-#: ../../Zotlabs/Widget/Wiki_pages.php:53 ../../addon/gitwiki/gitwiki.php:81
+#: ../../Zotlabs/Widget/Wiki_pages.php:32
+#: ../../Zotlabs/Widget/Wiki_pages.php:89 ../../addon/gitwiki/gitwiki.php:81
msgid "Add new page"
msgstr "Neue Seite hinzufügen"
-#: ../../Zotlabs/Widget/Wiki_pages.php:58 ../../addon/gitwiki/gitwiki.php:82
+#: ../../Zotlabs/Widget/Wiki_pages.php:83 ../../addon/gitwiki/gitwiki.php:76
+msgid "Wiki Pages"
+msgstr "Wikiseiten"
+
+#: ../../Zotlabs/Widget/Wiki_pages.php:94 ../../addon/gitwiki/gitwiki.php:82
msgid "Page name"
msgstr "Seitenname"
@@ -8399,7 +8530,7 @@ msgid "See more..."
msgstr "Mehr anzeigen …"
#: ../../Zotlabs/Widget/Filer.php:28 ../../include/contact_widgets.php:53
-#: ../../include/features.php:395
+#: ../../include/features.php:414
msgid "Saved Folders"
msgstr "Gespeicherte Ordner"
@@ -8419,7 +8550,7 @@ msgstr "Warteschlange kontrollieren"
msgid "DB updates"
msgstr "DB-Aktualisierungen"
-#: ../../Zotlabs/Widget/Admin.php:55 ../../include/nav.php:224
+#: ../../Zotlabs/Widget/Admin.php:55 ../../include/nav.php:231
msgid "Admin"
msgstr "Administration"
@@ -8459,7 +8590,7 @@ msgstr "Kanal exportieren"
msgid "Connected apps"
msgstr "Verbundene Apps"
-#: ../../Zotlabs/Widget/Settings_menu.php:100 ../../include/features.php:158
+#: ../../Zotlabs/Widget/Settings_menu.php:100 ../../include/features.php:168
msgid "Permission Groups"
msgstr "Berechtigungsrollen"
@@ -8479,165 +8610,170 @@ msgstr "Neue Netzwerk-Aktivitäten"
msgid "New Network Activity Notifications"
msgstr "Benachrichtigungen für neue Netzwerk-Aktivitäten"
-#: ../../Zotlabs/Widget/Notifications.php:20 ../../include/nav.php:99
+#: ../../Zotlabs/Widget/Notifications.php:20 ../../include/nav.php:106
msgid "View your network activity"
msgstr "Zeige Deine Netzwerk-Aktivitäten"
-#: ../../Zotlabs/Widget/Notifications.php:24
+#: ../../Zotlabs/Widget/Notifications.php:23
msgid "Mark all notifications read"
msgstr "Alle Benachrichtigungen als gesehen markieren"
-#: ../../Zotlabs/Widget/Notifications.php:32
+#: ../../Zotlabs/Widget/Notifications.php:26
+#: ../../Zotlabs/Widget/Notifications.php:44
+#: ../../Zotlabs/Widget/Notifications.php:139
+msgid "Show new posts only"
+msgstr "Zeige nur neue Beiträge"
+
+#: ../../Zotlabs/Widget/Notifications.php:34
msgid "New Home Activity"
msgstr "Neue Kanal-Aktivitäten"
-#: ../../Zotlabs/Widget/Notifications.php:33
+#: ../../Zotlabs/Widget/Notifications.php:35
msgid "New Home Activity Notifications"
msgstr "Benachrichtigungen für neue Kanal-Aktivitäten"
-#: ../../Zotlabs/Widget/Notifications.php:36
+#: ../../Zotlabs/Widget/Notifications.php:38
msgid "View your home activity"
msgstr "Zeige Deine Kanal-Aktivitäten"
-#: ../../Zotlabs/Widget/Notifications.php:40
+#: ../../Zotlabs/Widget/Notifications.php:41
#: ../../Zotlabs/Widget/Notifications.php:136
msgid "Mark all notifications seen"
msgstr "Alle Benachrichtigungen als gesehen markieren"
-#: ../../Zotlabs/Widget/Notifications.php:48
+#: ../../Zotlabs/Widget/Notifications.php:52
msgid "New Mails"
msgstr "Neue Mails"
-#: ../../Zotlabs/Widget/Notifications.php:49
+#: ../../Zotlabs/Widget/Notifications.php:53
msgid "New Mails Notifications"
msgstr "Benachrichtigungen für neue Mails"
-#: ../../Zotlabs/Widget/Notifications.php:52
+#: ../../Zotlabs/Widget/Notifications.php:56
msgid "View your private mails"
msgstr "Zeige Deine persönlichen Mails"
-#: ../../Zotlabs/Widget/Notifications.php:56
+#: ../../Zotlabs/Widget/Notifications.php:59
msgid "Mark all messages seen"
msgstr "Alle Mails als gelesen markieren"
-#: ../../Zotlabs/Widget/Notifications.php:64
+#: ../../Zotlabs/Widget/Notifications.php:67
msgid "New Events"
msgstr "Neue Termine"
-#: ../../Zotlabs/Widget/Notifications.php:65
+#: ../../Zotlabs/Widget/Notifications.php:68
msgid "New Events Notifications"
msgstr "Benachrichtigungen für neue Termine"
-#: ../../Zotlabs/Widget/Notifications.php:68 ../../include/nav.php:125
+#: ../../Zotlabs/Widget/Notifications.php:71 ../../include/nav.php:132
msgid "View events"
msgstr "Termine ansehen"
-#: ../../Zotlabs/Widget/Notifications.php:72 ../../include/nav.php:126
+#: ../../Zotlabs/Widget/Notifications.php:74 ../../include/nav.php:133
msgid "Mark all events seen"
msgstr "Markiere alle Termine als gesehen"
-#: ../../Zotlabs/Widget/Notifications.php:81
+#: ../../Zotlabs/Widget/Notifications.php:83
msgid "New Connections Notifications"
msgstr "Benachrichtigungen für neue Verbindungen"
-#: ../../Zotlabs/Widget/Notifications.php:84
+#: ../../Zotlabs/Widget/Notifications.php:86
msgid "View all connections"
msgstr "Zeige alle Verbindungen"
-#: ../../Zotlabs/Widget/Notifications.php:92
+#: ../../Zotlabs/Widget/Notifications.php:94
msgid "New Files"
msgstr "Neue Dateien"
-#: ../../Zotlabs/Widget/Notifications.php:93
+#: ../../Zotlabs/Widget/Notifications.php:95
msgid "New Files Notifications"
msgstr "Benachrichtigungen für neue Dateien"
-#: ../../Zotlabs/Widget/Notifications.php:100
-#: ../../Zotlabs/Widget/Notifications.php:101 ../../include/nav.php:112
+#: ../../Zotlabs/Widget/Notifications.php:102
+#: ../../Zotlabs/Widget/Notifications.php:103 ../../include/nav.php:119
msgid "Notices"
msgstr "Benachrichtigungen"
-#: ../../Zotlabs/Widget/Notifications.php:104
+#: ../../Zotlabs/Widget/Notifications.php:106
msgid "View all notices"
-msgstr ""
+msgstr "Alle Notizen ansehen"
-#: ../../Zotlabs/Widget/Notifications.php:108
+#: ../../Zotlabs/Widget/Notifications.php:109
msgid "Mark all notices seen"
-msgstr ""
+msgstr "Alle Notizen als gesehen markieren"
-#: ../../Zotlabs/Widget/Notifications.php:118
+#: ../../Zotlabs/Widget/Notifications.php:119
msgid "New Registrations"
msgstr "Neue Registrierungen"
-#: ../../Zotlabs/Widget/Notifications.php:119
+#: ../../Zotlabs/Widget/Notifications.php:120
msgid "New Registrations Notifications"
msgstr "Benachrichtigungen für neue Registrierungen"
-#: ../../Zotlabs/Widget/Notifications.php:129
+#: ../../Zotlabs/Widget/Notifications.php:130
msgid "Public Stream Notifications"
msgstr "Benachrichtigungen für öffentlichen Beitrags-Stream"
-#: ../../Zotlabs/Widget/Notifications.php:132
+#: ../../Zotlabs/Widget/Notifications.php:133
msgid "View the public stream"
msgstr "Zeige öffentlichen Beitrags-Stream"
-#: ../../Zotlabs/Widget/Notifications.php:143
-#: ../../include/conversation.php:871 ../../include/nav.php:305
-msgid "Loading..."
-msgstr "Lädt ..."
+#: ../../Zotlabs/Widget/Notifications.php:147 ../../include/nav.php:316
+msgid "Loading"
+msgstr "Lädt..."
#: ../../util/nconfig.php:34
msgid "Source channel not found."
msgstr "Quellkanal nicht gefunden."
-#: ../../boot.php:1619
+#: ../../boot.php:1644
msgid "Create an account to access services and applications"
msgstr "Erstelle ein Konto, um auf Dienste und Anwendungen zugreifen zu können."
-#: ../../boot.php:1638 ../../include/nav.php:138 ../../include/nav.php:167
-#: ../../include/nav.php:184
+#: ../../boot.php:1663 ../../include/nav.php:145 ../../include/nav.php:174
+#: ../../include/nav.php:191
msgid "Logout"
msgstr "Abmelden"
-#: ../../boot.php:1642
+#: ../../boot.php:1667
msgid "Login/Email"
msgstr "Anmelden/E-Mail"
-#: ../../boot.php:1643
+#: ../../boot.php:1668
msgid "Password"
msgstr "Kennwort"
-#: ../../boot.php:1644
+#: ../../boot.php:1669
msgid "Remember me"
msgstr "Angaben speichern"
-#: ../../boot.php:1647
+#: ../../boot.php:1672
msgid "Forgot your password?"
msgstr "Passwort vergessen?"
-#: ../../boot.php:2191
+#: ../../boot.php:2257
msgid "toggle mobile"
msgstr "auf/von mobile Ansicht wechseln"
-#: ../../boot.php:2344
+#: ../../boot.php:2419
#, php-format
msgid "[$Projectname] Website SSL error for %s"
msgstr "[$Projectname] Webseiten-SSL-Fehler für %s"
-#: ../../boot.php:2349
+#: ../../boot.php:2424
msgid "Website SSL certificate is not valid. Please correct."
msgstr "Das SSL-Zertifikat der Website ist nicht gültig. Bitte beheben."
-#: ../../boot.php:2468
+#: ../../boot.php:2540
#, php-format
msgid "[$Projectname] Cron tasks not running on %s"
msgstr "[$Projectname] Cron-Jobs laufen nicht auf %s"
-#: ../../boot.php:2473
+#: ../../boot.php:2545
msgid "Cron/Scheduled tasks not running."
msgstr "Cron-Aufgaben laufen nicht."
-#: ../../boot.php:2474 ../../include/datetime.php:286
+#: ../../boot.php:2546 ../../include/datetime.php:292
msgid "never"
msgstr "Nie"
@@ -8895,30 +9031,30 @@ msgstr "Eine Einstellung"
msgid "Skeleton Settings"
msgstr "Skeleton Einstellungen"
-#: ../../addon/gnusoc/gnusoc.php:243
+#: ../../addon/gnusoc/gnusoc.php:247
msgid "GNU-Social Protocol Settings updated."
msgstr "GNU social Protokoll Einstellungen aktualisiert"
-#: ../../addon/gnusoc/gnusoc.php:262
+#: ../../addon/gnusoc/gnusoc.php:266
msgid ""
"The GNU-Social protocol does not support location independence. Connections "
"you make within that network may be unreachable from alternate channel "
"locations."
msgstr "Das GNU-Social-Protokoll unterstützt keine Server-unabhängigen Identitäten. Verbindungen, die Du mit diesem Netzwerk eingehst, können von anderen Orten (Klonen) dieses Kanals aus unerreichbar sein."
-#: ../../addon/gnusoc/gnusoc.php:265
+#: ../../addon/gnusoc/gnusoc.php:269
msgid "Enable the GNU-Social protocol for this channel"
msgstr "Aktiviere das GNU social Protokoll für diesen Kanal"
-#: ../../addon/gnusoc/gnusoc.php:269
+#: ../../addon/gnusoc/gnusoc.php:273
msgid "GNU-Social Protocol Settings"
msgstr "GNU social Protokoll Einstellungen"
-#: ../../addon/gnusoc/gnusoc.php:460
+#: ../../addon/gnusoc/gnusoc.php:464
msgid "Follow"
msgstr "Folgen"
-#: ../../addon/gnusoc/gnusoc.php:463
+#: ../../addon/gnusoc/gnusoc.php:467
#, php-format
msgid "%1$s is now following %2$s"
msgstr "%1$s folgt nun %2$s"
@@ -8964,8 +9100,8 @@ msgstr "Zurückkehren nach"
msgid "Page to load after image selection."
msgstr "Die Seite, die nach Auswahl eines Bildes geladen werden soll."
-#: ../../addon/openclipatar/openclipatar.php:58 ../../include/channel.php:1266
-#: ../../include/nav.php:146
+#: ../../addon/openclipatar/openclipatar.php:58 ../../include/channel.php:1301
+#: ../../include/nav.php:153
msgid "Edit Profile"
msgstr "Profil bearbeiten"
@@ -9038,7 +9174,7 @@ msgstr "Unbekannter Fehler. Bitte versuchen Sie es später erneut."
msgid "Profile photo updated successfully."
msgstr "Profilfoto erfolgreich aktualisiert."
-#: ../../addon/zotvi/zot6.php:25 ../../include/zot.php:3983
+#: ../../addon/zotvi/zot6.php:25 ../../include/zot.php:4051
msgid "invalid target signature"
msgstr "Ungültige Signatur des Ziels"
@@ -9171,38 +9307,6 @@ msgstr "InsaneJournal-Beitragseinstellungen"
msgid "Insane Journal Settings saved."
msgstr "InsaneJournal-Einstellungen gespeichert."
-#: ../../addon/js_upload/js_upload.php:44
-msgid "Upload a file"
-msgstr "Datei hochladen"
-
-#: ../../addon/js_upload/js_upload.php:45
-msgid "Drop files here to upload"
-msgstr "Dateien zum Hochladen hier fallen lassen"
-
-#: ../../addon/js_upload/js_upload.php:47
-msgid "Failed"
-msgstr "Fehlgeschlagen"
-
-#: ../../addon/js_upload/js_upload.php:315
-msgid "No files were uploaded."
-msgstr "Es wurden keine Dateien hochgeladen."
-
-#: ../../addon/js_upload/js_upload.php:322
-msgid "Uploaded file is empty"
-msgstr "Hochgeladene Datei ist leer"
-
-#: ../../addon/js_upload/js_upload.php:335
-msgid "Image exceeds size limit of "
-msgstr "Bild überschreitet Größenbeschränkung von "
-
-#: ../../addon/js_upload/js_upload.php:347
-msgid "File has an invalid extension, it should be one of "
-msgstr "Die Datei hat eine ungültige Endung. Erlaubt sind folgende:"
-
-#: ../../addon/js_upload/js_upload.php:359
-msgid "Upload was cancelled, or server error encountered"
-msgstr "Das Hochladen wurde abgebrochen oder es ist ein Serverfehler aufgetreten."
-
#: ../../addon/dwpost/dwpost.php:42
msgid "Post to Dreamwidth"
msgstr "Bei Dreamwidth veröffentlichen"
@@ -9227,18 +9331,6 @@ msgstr "Standardmäßig auf auf Dreamwidth posten"
msgid "Dreamwidth Post Settings"
msgstr "Dreamwidth-Beitragseinstellungen"
-#: ../../addon/firefox/firefox.php:23
-msgid "Install Firefox Sharing Tools"
-msgstr "Installiere das Firefox Sharing Werkzeug"
-
-#: ../../addon/firefox/firefox.php:34
-msgid "Share content from Firefox to $Projectname"
-msgstr "Inhalte von Firefox nach $Projectname teilen"
-
-#: ../../addon/firefox/firefox.php:37
-msgid "Install Firefox Sharing Tools to this web browser"
-msgstr "Installiere das Firefox Sharing Werkzeug in diesen Webbrowser"
-
#: ../../addon/dirstats/dirstats.php:94
msgid "Hubzilla Directory Stats"
msgstr "Hubzilla-Verzeichnisstatistiken"
@@ -9298,22 +9390,6 @@ msgid ""
"applies to chatrooms,"
msgstr "Bitte berücksichtige, dass Diaspora und Friendica Statistiken nur solche einschließen, die **diesem Verzeichnis** bekannt sind, nicht alle im Netzwerk bekannten. Das gilt auch für Chaträume."
-#: ../../addon/mailhost/mailhost.php:36
-msgid "Email notification hub"
-msgstr "Hub für E-Mail-Benachrichtigungen"
-
-#: ../../addon/mailhost/mailhost.php:36
-msgid "Hostname"
-msgstr "Servername"
-
-#: ../../addon/mailhost/mailhost.php:40
-msgid "Mailhost Settings"
-msgstr "Mailhost-Einstellungen"
-
-#: ../../addon/mailhost/mailhost.php:54
-msgid "MAILHOST Settings saved."
-msgstr "MAILHOST-Einstellungen gespeichert."
-
#: ../../addon/likebanner/likebanner.php:51
msgid "Your Webbie:"
msgstr "Dein Webbie"
@@ -9508,12 +9584,12 @@ msgid "Login failed."
msgstr "Login fehlgeschlagen."
#: ../../addon/openid/Mod_Id.php:85 ../../include/selectors.php:49
-#: ../../include/selectors.php:66 ../../include/channel.php:1432
+#: ../../include/selectors.php:66 ../../include/channel.php:1480
msgid "Male"
msgstr "Männlich"
#: ../../addon/openid/Mod_Id.php:87 ../../include/selectors.php:49
-#: ../../include/selectors.php:66 ../../include/channel.php:1430
+#: ../../include/selectors.php:66 ../../include/channel.php:1478
msgid "Female"
msgstr "Weiblich"
@@ -9700,39 +9776,39 @@ msgstr ""
msgid "declared undying love for"
msgstr ""
-#: ../../addon/diaspora/diaspora.php:763
+#: ../../addon/diaspora/diaspora.php:772
msgid "Diaspora Protocol Settings updated."
msgstr "Diaspora Protokoll Einstellungen aktualisiert"
-#: ../../addon/diaspora/diaspora.php:782
+#: ../../addon/diaspora/diaspora.php:791
msgid ""
"The Diaspora protocol does not support location independence. Connections "
"you make within that network may be unreachable from alternate channel "
"locations."
msgstr "Das Diaspora-Protokoll unterstützt keine Server-unabhängigen Identitäten. Verbindungen, die Du mit diesem Netzwerk eingehst, können von anderen Orten (Klonen) dieses Kanals aus unerreichbar sein."
-#: ../../addon/diaspora/diaspora.php:785
+#: ../../addon/diaspora/diaspora.php:794
msgid "Enable the Diaspora protocol for this channel"
msgstr "Das Diaspora Protokoll für diesen Kanal aktivieren"
-#: ../../addon/diaspora/diaspora.php:789
+#: ../../addon/diaspora/diaspora.php:798
msgid "Allow any Diaspora member to comment on your public posts"
msgstr "Erlaube jedem Diaspora Nutzer deine öffentlichen Beiträge zu kommentieren"
-#: ../../addon/diaspora/diaspora.php:793
+#: ../../addon/diaspora/diaspora.php:802
msgid "Prevent your hashtags from being redirected to other sites"
msgstr "Verhindern, dass Deine Hashtags zu anderen Seiten umgeleitet werden"
-#: ../../addon/diaspora/diaspora.php:797
+#: ../../addon/diaspora/diaspora.php:806
msgid ""
"Sign and forward posts and comments with no existing Diaspora signature"
msgstr "Signieren und Weiterleiten von Beiträgen und Kommentaren ohne vorhandene Diaspora-Signatur"
-#: ../../addon/diaspora/diaspora.php:802
+#: ../../addon/diaspora/diaspora.php:811
msgid "Followed hashtags (comma separated, do not include the #)"
msgstr "Verfolgte Hashtags (Komma separierte Liste, ohne die #)"
-#: ../../addon/diaspora/diaspora.php:807
+#: ../../addon/diaspora/diaspora.php:816
msgid "Diaspora Protocol Settings"
msgstr "Diaspora Protokoll Einstellungen"
@@ -9783,19 +9859,19 @@ msgstr "PHP post_max_size (muss größer sein als upload_max_filesize):"
#: ../../addon/gravatar/gravatar.php:123
msgid "generic profile image"
-msgstr ""
+msgstr "generisches Profilbild"
#: ../../addon/gravatar/gravatar.php:124
msgid "random geometric pattern"
-msgstr ""
+msgstr "zufälliges geometrisches Muster"
#: ../../addon/gravatar/gravatar.php:125
msgid "monster face"
-msgstr ""
+msgstr "Monstergesicht"
#: ../../addon/gravatar/gravatar.php:126
msgid "computer generated face"
-msgstr ""
+msgstr "computergeneriertes Gesicht"
#: ../../addon/gravatar/gravatar.php:127
msgid "retro arcade style face"
@@ -9823,7 +9899,7 @@ msgstr "Einstellungen speichern"
#: ../../addon/gravatar/gravatar.php:151
msgid "Default avatar image"
-msgstr ""
+msgstr "Standard-Avatarbild"
#: ../../addon/gravatar/gravatar.php:151
msgid "Select default avatar image if none was found at Gravatar. See README"
@@ -9831,7 +9907,7 @@ msgstr ""
#: ../../addon/gravatar/gravatar.php:152
msgid "Rating of images"
-msgstr ""
+msgstr "Bewertungen der Bilder"
#: ../../addon/gravatar/gravatar.php:152
msgid "Select the appropriate avatar rating for your site. See README"
@@ -9839,6 +9915,26 @@ msgstr ""
#: ../../addon/gravatar/gravatar.php:165
msgid "Gravatar settings updated."
+msgstr "Gravatar-Einstellungen aktualisiert."
+
+#: ../../addon/hzfiles/hzfiles.php:79
+msgid "Hubzilla File Storage Import"
+msgstr ""
+
+#: ../../addon/hzfiles/hzfiles.php:80
+msgid "This will import all your cloud files from another server."
+msgstr ""
+
+#: ../../addon/hzfiles/hzfiles.php:81
+msgid "Hubzilla Server base URL"
+msgstr ""
+
+#: ../../addon/hzfiles/hzfiles.php:82
+msgid "Since modified date yyyy-mm-dd"
+msgstr ""
+
+#: ../../addon/hzfiles/hzfiles.php:83
+msgid "Until modified date yyyy-mm-dd"
msgstr ""
#: ../../addon/visage/visage.php:93
@@ -9987,8 +10083,8 @@ msgstr "Friendica-Passwort"
msgid "Hubzilla to Friendica Post Settings"
msgstr "Hubzilla-zu-Friendica Beitragseinstellungen"
-#: ../../addon/jappixmini/jappixmini.php:305 ../../include/channel.php:1357
-#: ../../include/channel.php:1519
+#: ../../addon/jappixmini/jappixmini.php:305 ../../include/channel.php:1397
+#: ../../include/channel.php:1567
msgid "Status:"
msgstr "Status:"
@@ -10153,27 +10249,35 @@ msgstr "Friendica-Anmeldebenutzername"
msgid "Friendica Login Password"
msgstr "Friendica-Anmeldepasswort"
-#: ../../addon/pubcrawl/as.php:1076 ../../addon/pubcrawl/as.php:1160
-#: ../../addon/pubcrawl/as.php:1332 ../../include/network.php:1705
+#: ../../addon/pubcrawl/as.php:1077 ../../addon/pubcrawl/as.php:1164
+#: ../../addon/pubcrawl/as.php:1339 ../../include/network.php:1768
msgid "ActivityPub"
msgstr "ActivityPub"
-#: ../../addon/pubcrawl/pubcrawl.php:1032
+#: ../../addon/pubcrawl/pubcrawl.php:1033
msgid "ActivityPub Protocol Settings updated."
msgstr ""
-#: ../../addon/pubcrawl/pubcrawl.php:1041
+#: ../../addon/pubcrawl/pubcrawl.php:1042
msgid ""
"The ActivityPub protocol does not support location independence. Connections"
" you make within that network may be unreachable from alternate channel "
"locations."
msgstr ""
-#: ../../addon/pubcrawl/pubcrawl.php:1044
+#: ../../addon/pubcrawl/pubcrawl.php:1045
msgid "Enable the ActivityPub protocol for this channel"
msgstr ""
-#: ../../addon/pubcrawl/pubcrawl.php:1049
+#: ../../addon/pubcrawl/pubcrawl.php:1048
+msgid "Send multi-media HTML articles"
+msgstr ""
+
+#: ../../addon/pubcrawl/pubcrawl.php:1048
+msgid "Not supported by some microblog services such as Mastodon"
+msgstr ""
+
+#: ../../addon/pubcrawl/pubcrawl.php:1053
msgid "ActivityPub Protocol Settings"
msgstr ""
@@ -10519,11 +10623,11 @@ msgstr "OAuth Konfiguration löschen"
msgid "GNU social Post Settings"
msgstr "GNU social Einstellungen"
-#: ../../addon/statusnet/statusnet.php:891
+#: ../../addon/statusnet/statusnet.php:892
msgid "API URL"
msgstr "API-URL"
-#: ../../addon/statusnet/statusnet.php:894
+#: ../../addon/statusnet/statusnet.php:895
msgid "Application name"
msgstr "Anwendungsname"
@@ -10563,7 +10667,7 @@ msgstr "Sie müssen weiß oder schwarz auswählen."
msgid "Error creating new game."
msgstr "Fehler beim Erstellen eines neuen Spiels."
-#: ../../addon/chess/chess.php:409 ../../include/channel.php:1117
+#: ../../addon/chess/chess.php:409 ../../include/channel.php:1152
msgid "Requested channel is not available."
msgstr "Angeforderte Kanal nicht verfügbar."
@@ -11242,11 +11346,11 @@ msgstr "Transsexuell"
msgid "Hermaphrodite"
msgstr "Zwitter"
-#: ../../include/selectors.php:49 ../../include/channel.php:1436
+#: ../../include/selectors.php:49 ../../include/channel.php:1484
msgid "Neuter"
msgstr "Geschlechtslos"
-#: ../../include/selectors.php:49 ../../include/channel.php:1438
+#: ../../include/selectors.php:49 ../../include/channel.php:1486
msgid "Non-specific"
msgstr "unklar"
@@ -11426,284 +11530,306 @@ msgstr "Interessiert mich nicht"
msgid "Ask me"
msgstr "Frag mich mal"
-#: ../../include/conversation.php:200
+#: ../../include/conversation.php:169
+#, php-format
+msgid "likes %1$s's %2$s"
+msgstr ""
+
+#: ../../include/conversation.php:172
+#, php-format
+msgid "doesn't like %1$s's %2$s"
+msgstr ""
+
+#: ../../include/conversation.php:212
#, php-format
msgid "%1$s is now connected with %2$s"
msgstr "%1$s ist jetzt mit %2$s verbunden"
-#: ../../include/conversation.php:235
+#: ../../include/conversation.php:247
#, php-format
msgid "%1$s poked %2$s"
msgstr "%1$s stupste %2$s an"
-#: ../../include/conversation.php:239 ../../include/text.php:1104
+#: ../../include/conversation.php:251 ../../include/text.php:1104
#: ../../include/text.php:1109
msgid "poked"
msgstr "stupste"
-#: ../../include/conversation.php:720
+#: ../../include/conversation.php:736
#, php-format
msgid "View %s's profile @ %s"
msgstr "%ss Profil auf %s ansehen"
-#: ../../include/conversation.php:740
+#: ../../include/conversation.php:756
msgid "Categories:"
msgstr "Kategorien:"
-#: ../../include/conversation.php:741
+#: ../../include/conversation.php:757
msgid "Filed under:"
msgstr "Gespeichert unter:"
-#: ../../include/conversation.php:766
+#: ../../include/conversation.php:783
msgid "View in context"
msgstr "Im Zusammenhang anschauen"
-#: ../../include/conversation.php:867
+#: ../../include/conversation.php:884
msgid "remove"
msgstr "lösche"
-#: ../../include/conversation.php:872
+#: ../../include/conversation.php:888
+msgid "Loading..."
+msgstr "Lädt ..."
+
+#: ../../include/conversation.php:889
msgid "Delete Selected Items"
msgstr "Lösche die ausgewählten Elemente"
-#: ../../include/conversation.php:915
+#: ../../include/conversation.php:932
msgid "View Source"
msgstr "Quelle anzeigen"
-#: ../../include/conversation.php:925
+#: ../../include/conversation.php:942
msgid "Follow Thread"
msgstr "Unterhaltung folgen"
-#: ../../include/conversation.php:934
+#: ../../include/conversation.php:951
msgid "Unfollow Thread"
msgstr "Unterhaltung nicht mehr folgen"
-#: ../../include/conversation.php:1025
+#: ../../include/conversation.php:1042
msgid "Activity/Posts"
msgstr "Aktivitäten/Beiträge"
-#: ../../include/conversation.php:1045
+#: ../../include/conversation.php:1062
msgid "Edit Connection"
msgstr "Verbindung bearbeiten"
-#: ../../include/conversation.php:1055
+#: ../../include/conversation.php:1072
msgid "Message"
msgstr "Nachricht"
-#: ../../include/conversation.php:1189
+#: ../../include/conversation.php:1206
#, php-format
msgid "%s likes this."
msgstr "%s gefällt das."
-#: ../../include/conversation.php:1189
+#: ../../include/conversation.php:1206
#, php-format
msgid "%s doesn't like this."
msgstr "%s gefällt das nicht."
-#: ../../include/conversation.php:1193
+#: ../../include/conversation.php:1210
#, php-format
msgid "<span %1$s>%2$d people</span> like this."
msgid_plural "<span %1$s>%2$d people</span> like this."
msgstr[0] "<span %1$s>%2$d Person</span> gefällt das."
msgstr[1] "<span %1$s>%2$d Leuten</span> gefällt das."
-#: ../../include/conversation.php:1195
+#: ../../include/conversation.php:1212
#, php-format
msgid "<span %1$s>%2$d people</span> don't like this."
msgid_plural "<span %1$s>%2$d people</span> don't like this."
msgstr[0] "<span %1$s>%2$d Person</span> gefällt das nicht."
msgstr[1] "<span %1$s>%2$d Leuten</span> gefällt das nicht."
-#: ../../include/conversation.php:1201
+#: ../../include/conversation.php:1218
msgid "and"
msgstr "und"
-#: ../../include/conversation.php:1204
+#: ../../include/conversation.php:1221
#, php-format
msgid ", and %d other people"
msgid_plural ", and %d other people"
msgstr[0] ""
msgstr[1] ", und %d andere"
-#: ../../include/conversation.php:1205
+#: ../../include/conversation.php:1222
#, php-format
msgid "%s like this."
msgstr "%s gefällt das."
-#: ../../include/conversation.php:1205
+#: ../../include/conversation.php:1222
#, php-format
msgid "%s don't like this."
msgstr "%s gefällt das nicht."
-#: ../../include/conversation.php:1248
+#: ../../include/conversation.php:1265
msgid "Set your location"
msgstr "Standort"
-#: ../../include/conversation.php:1249
+#: ../../include/conversation.php:1266
msgid "Clear browser location"
msgstr "Browser-Standort löschen"
-#: ../../include/conversation.php:1297
+#: ../../include/conversation.php:1314
msgid "Tag term:"
msgstr "Schlagwort:"
-#: ../../include/conversation.php:1298
+#: ../../include/conversation.php:1315
msgid "Where are you right now?"
msgstr "Wo bist Du jetzt grade?"
-#: ../../include/conversation.php:1303
+#: ../../include/conversation.php:1320
msgid "Choose a different album..."
msgstr "Wählen Sie ein anderes Album aus..."
-#: ../../include/conversation.php:1307
+#: ../../include/conversation.php:1324
msgid "Comments enabled"
msgstr "Kommentare aktiviert"
-#: ../../include/conversation.php:1308
+#: ../../include/conversation.php:1325
msgid "Comments disabled"
msgstr "Kommentare deaktiviert"
-#: ../../include/conversation.php:1355
+#: ../../include/conversation.php:1372
msgid "Page link name"
msgstr "Link zur Seite"
-#: ../../include/conversation.php:1358
+#: ../../include/conversation.php:1375
msgid "Post as"
msgstr "Veröffentlichen als"
-#: ../../include/conversation.php:1372
+#: ../../include/conversation.php:1389
msgid "Toggle voting"
msgstr "Umfragewerkzeug aktivieren"
-#: ../../include/conversation.php:1375
+#: ../../include/conversation.php:1392
msgid "Disable comments"
msgstr "Kommentare deaktivieren"
-#: ../../include/conversation.php:1376
+#: ../../include/conversation.php:1393
msgid "Toggle comments"
msgstr "Kommentare umschalten"
-#: ../../include/conversation.php:1384
+#: ../../include/conversation.php:1401
msgid "Categories (optional, comma-separated list)"
msgstr "Kategorien (optional, kommagetrennte Liste)"
-#: ../../include/conversation.php:1407
+#: ../../include/conversation.php:1424
msgid "Other networks and post services"
msgstr "Andere Netzwerke und Platformen"
-#: ../../include/conversation.php:1413
+#: ../../include/conversation.php:1430
msgid "Set publish date"
msgstr "Veröffentlichungsdatum festlegen"
-#: ../../include/conversation.php:1673
+#: ../../include/conversation.php:1690
msgid "Commented Order"
msgstr "Neueste Kommentare"
-#: ../../include/conversation.php:1676
+#: ../../include/conversation.php:1693
msgid "Sort by Comment Date"
msgstr "Nach Kommentardatum sortiert"
-#: ../../include/conversation.php:1680
+#: ../../include/conversation.php:1697
msgid "Posted Order"
msgstr "Neueste Beiträge"
-#: ../../include/conversation.php:1683
+#: ../../include/conversation.php:1700
msgid "Sort by Post Date"
msgstr "Nach Beitragsdatum sortiert"
-#: ../../include/conversation.php:1691
+#: ../../include/conversation.php:1708
msgid "Posts that mention or involve you"
msgstr "Beiträge mit Beteiligung Deinerseits"
-#: ../../include/conversation.php:1700
+#: ../../include/conversation.php:1717
msgid "Activity Stream - by date"
msgstr "Activity Stream – nach Datum sortiert"
-#: ../../include/conversation.php:1706
+#: ../../include/conversation.php:1723
msgid "Starred"
msgstr "Markiert"
-#: ../../include/conversation.php:1709
+#: ../../include/conversation.php:1726
msgid "Favourite Posts"
msgstr "Markierte Beiträge"
-#: ../../include/conversation.php:1716
+#: ../../include/conversation.php:1733
msgid "Spam"
msgstr "Spam"
-#: ../../include/conversation.php:1719
+#: ../../include/conversation.php:1736
msgid "Posts flagged as SPAM"
msgstr "Nachrichten, die als SPAM markiert wurden"
-#: ../../include/conversation.php:1794 ../../include/nav.php:402
+#: ../../include/conversation.php:1811 ../../include/nav.php:413
msgid "Status Messages and Posts"
msgstr "Statusnachrichten und Beiträge"
-#: ../../include/conversation.php:1807 ../../include/nav.php:415
+#: ../../include/conversation.php:1824 ../../include/nav.php:426
msgid "Profile Details"
msgstr "Profil-Details"
-#: ../../include/conversation.php:1817 ../../include/nav.php:425
-#: ../../include/photos.php:600
+#: ../../include/conversation.php:1834 ../../include/nav.php:436
+#: ../../include/photos.php:655
msgid "Photo Albums"
msgstr "Fotoalben"
-#: ../../include/conversation.php:1825 ../../include/nav.php:433
+#: ../../include/conversation.php:1842 ../../include/nav.php:444
msgid "Files and Storage"
msgstr "Dateien und Speicher"
-#: ../../include/conversation.php:1862 ../../include/nav.php:468
+#: ../../include/conversation.php:1879 ../../include/nav.php:479
msgid "Bookmarks"
msgstr "Lesezeichen"
-#: ../../include/conversation.php:1865 ../../include/nav.php:471
+#: ../../include/conversation.php:1882 ../../include/nav.php:482
msgid "Saved Bookmarks"
msgstr "Gespeicherte Lesezeichen"
-#: ../../include/conversation.php:1876 ../../include/nav.php:482
+#: ../../include/conversation.php:1893 ../../include/nav.php:493
msgid "View Cards"
-msgstr ""
+msgstr "Karten anzeigen"
+
+#: ../../include/conversation.php:1901
+msgid "articles"
+msgstr "Artikel"
+
+#: ../../include/conversation.php:1904 ../../include/nav.php:504
+msgid "View Articles"
+msgstr "Artikel anzeigen"
-#: ../../include/conversation.php:1887 ../../include/nav.php:494
+#: ../../include/conversation.php:1915 ../../include/nav.php:516
msgid "View Webpages"
msgstr "Webseiten anzeigen"
-#: ../../include/conversation.php:1956
+#: ../../include/conversation.php:1984
msgctxt "noun"
msgid "Attending"
msgid_plural "Attending"
msgstr[0] "Zusage"
msgstr[1] "Zusagen"
-#: ../../include/conversation.php:1959
+#: ../../include/conversation.php:1987
msgctxt "noun"
msgid "Not Attending"
msgid_plural "Not Attending"
msgstr[0] "Absage"
msgstr[1] "Absagen"
-#: ../../include/conversation.php:1962
+#: ../../include/conversation.php:1990
msgctxt "noun"
msgid "Undecided"
msgid_plural "Undecided"
msgstr[0] " Unentschlossen"
msgstr[1] "Unentschlossene"
-#: ../../include/conversation.php:1965
+#: ../../include/conversation.php:1993
msgctxt "noun"
msgid "Agree"
msgid_plural "Agrees"
msgstr[0] "Zustimmung"
msgstr[1] "Zustimmungen"
-#: ../../include/conversation.php:1968
+#: ../../include/conversation.php:1996
msgctxt "noun"
msgid "Disagree"
msgid_plural "Disagrees"
msgstr[0] "Ablehnung"
msgstr[1] "Ablehnungen"
-#: ../../include/conversation.php:1971
+#: ../../include/conversation.php:1999
msgctxt "noun"
msgid "Abstain"
msgid_plural "Abstains"
@@ -11981,7 +12107,7 @@ msgstr "Dezember"
msgid "Unknown Attachment"
msgstr "Unbekannter Anhang"
-#: ../../include/text.php:1394 ../../include/feedutils.php:780
+#: ../../include/text.php:1394 ../../include/feedutils.php:825
msgid "unknown"
msgstr "unbekannt"
@@ -11997,7 +12123,7 @@ msgstr "aus der Datei entfernen"
msgid "Download binary/encrypted content"
msgstr "Binären/verschlüsselten Inhalt herunterladen"
-#: ../../include/text.php:1782 ../../include/language.php:367
+#: ../../include/text.php:1782 ../../include/language.php:364
msgid "default"
msgstr "Standard"
@@ -12011,15 +12137,15 @@ msgstr "Mit dem Gestaltungswerkzeug kannst Du Deine eigenen Layouts erstellen"
#: ../../include/text.php:1801
msgid "HTML"
-msgstr ""
+msgstr "HTML"
#: ../../include/text.php:1804
msgid "Comanche Layout"
-msgstr ""
+msgstr "Comanche-Layout"
#: ../../include/text.php:1809
msgid "PHP"
-msgstr ""
+msgstr "PHP"
#: ../../include/text.php:1818
msgid "Page content type"
@@ -12031,7 +12157,7 @@ msgstr "Aktivität"
#: ../../include/text.php:2014
msgid "a-z, 0-9, -, and _ only"
-msgstr ""
+msgstr "nur a-z, 0-9, - und _"
#: ../../include/text.php:2285
msgid "Design Tools"
@@ -12136,16 +12262,16 @@ msgstr "Lade Freunde ein"
msgid "Advanced example: name=fred and country=iceland"
msgstr "Fortgeschrittenes Beispiel: name=fred and country=iceland"
-#: ../../include/contact_widgets.php:166
+#: ../../include/contact_widgets.php:223
msgid "Common Connections"
-msgstr ""
+msgstr "Gemeinsame Verbindungen"
-#: ../../include/contact_widgets.php:171
+#: ../../include/contact_widgets.php:228
#, php-format
msgid "View all %d common connections"
-msgstr ""
+msgstr "Zeige alle %d gemeinsamen Verbindungen"
-#: ../../include/markdown.php:139 ../../include/bbcode.php:337
+#: ../../include/markdown.php:158 ../../include/bbcode.php:339
#, php-format
msgid "%1$s wrote the following %2$s %3$s"
msgstr "%1$s schrieb den folgenden %2$s %3$s"
@@ -12168,7 +12294,7 @@ msgstr "Kanal wurde gelöscht und existiert nicht mehr."
#: ../../include/follow.php:156
msgid "Remote channel or protocol unavailable."
-msgstr ""
+msgstr "Externer Kanal oder Protokoll nicht verfügbar."
#: ../../include/follow.php:179
msgid "Channel discovery failed."
@@ -12468,385 +12594,385 @@ msgstr "Besuche %1$s's %2$s"
msgid "%1$s has an updated %2$s, changing %3$s."
msgstr "%1$s hat ein aktualisiertes %2$s, %3$s wurde verändert."
-#: ../../include/attach.php:250 ../../include/attach.php:339
+#: ../../include/attach.php:265 ../../include/attach.php:361
msgid "Item was not found."
msgstr "Beitrag wurde nicht gefunden."
-#: ../../include/attach.php:505
+#: ../../include/attach.php:553
msgid "No source file."
msgstr "Keine Quelldatei."
-#: ../../include/attach.php:527
+#: ../../include/attach.php:575
msgid "Cannot locate file to replace"
msgstr "Kann Datei zum Ersetzen nicht finden"
-#: ../../include/attach.php:545
+#: ../../include/attach.php:593
msgid "Cannot locate file to revise/update"
msgstr "Kann Datei zum Prüfen/Aktualisieren nicht finden"
-#: ../../include/attach.php:680
+#: ../../include/attach.php:734
#, php-format
msgid "File exceeds size limit of %d"
msgstr "Datei überschreitet das Größen-Limit von %d"
-#: ../../include/attach.php:694
+#: ../../include/attach.php:754
#, php-format
msgid "You have reached your limit of %1$.0f Mbytes attachment storage."
msgstr "Die Größe Deiner Datei-Anhänge hat das Maximum von %1$.0f MByte erreicht."
-#: ../../include/attach.php:864
+#: ../../include/attach.php:929
msgid "File upload failed. Possible system limit or action terminated."
msgstr "Datei-Upload fehlgeschlagen. Mögliche Systembegrenzung oder abgebrochener Prozess."
-#: ../../include/attach.php:877
+#: ../../include/attach.php:948
msgid "Stored file could not be verified. Upload failed."
msgstr "Gespeichert Datei konnte nicht verifiziert werden. Upload abgebrochen."
-#: ../../include/attach.php:938 ../../include/attach.php:954
+#: ../../include/attach.php:1022 ../../include/attach.php:1038
msgid "Path not available."
msgstr "Pfad nicht verfügbar."
-#: ../../include/attach.php:1003 ../../include/attach.php:1168
+#: ../../include/attach.php:1087 ../../include/attach.php:1252
msgid "Empty pathname"
msgstr "Leere Pfadangabe"
-#: ../../include/attach.php:1029
+#: ../../include/attach.php:1113
msgid "duplicate filename or path"
msgstr "doppelter Dateiname oder Pfad"
-#: ../../include/attach.php:1054
+#: ../../include/attach.php:1138
msgid "Path not found."
msgstr "Pfad nicht gefunden."
-#: ../../include/attach.php:1122
+#: ../../include/attach.php:1206
msgid "mkdir failed."
msgstr "mkdir fehlgeschlagen."
-#: ../../include/attach.php:1126
+#: ../../include/attach.php:1210
msgid "database storage failed."
msgstr "Speichern in der Datenbank fehlgeschlagen."
-#: ../../include/attach.php:1174
+#: ../../include/attach.php:1258
msgid "Empty path"
msgstr "Leere Pfadangabe"
-#: ../../include/security.php:531
+#: ../../include/security.php:532
msgid ""
"The form security token was not correct. This probably happened because the "
"form has been opened for too long (>3 hours) before submitting it."
msgstr "Das Security-Token des Formulars war nicht korrekt. Das ist wahrscheinlich passiert, weil das Formular zu lange (>3 Stunden) offen war, bevor es abgeschickt wurde."
-#: ../../include/items.php:857 ../../include/items.php:909
+#: ../../include/items.php:885 ../../include/items.php:945
msgid "(Unknown)"
msgstr "(Unbekannt)"
-#: ../../include/items.php:1093
+#: ../../include/items.php:1129
msgid "Visible to anybody on the internet."
msgstr "Für jeden im Internet sichtbar."
-#: ../../include/items.php:1095
+#: ../../include/items.php:1131
msgid "Visible to you only."
msgstr "Nur für Dich sichtbar."
-#: ../../include/items.php:1097
+#: ../../include/items.php:1133
msgid "Visible to anybody in this network."
msgstr "Für jedes $Projectname-Mitglied sichtbar."
-#: ../../include/items.php:1099
+#: ../../include/items.php:1135
msgid "Visible to anybody authenticated."
msgstr "Für jeden sichtbar, der angemeldet ist."
-#: ../../include/items.php:1101
+#: ../../include/items.php:1137
#, php-format
msgid "Visible to anybody on %s."
msgstr "Für jeden auf %s sichtbar."
-#: ../../include/items.php:1103
+#: ../../include/items.php:1139
msgid "Visible to all connections."
msgstr "Für alle Verbindungen sichtbar."
-#: ../../include/items.php:1105
+#: ../../include/items.php:1141
msgid "Visible to approved connections."
msgstr "Nur für akzeptierte Verbindungen sichtbar."
-#: ../../include/items.php:1107
+#: ../../include/items.php:1143
msgid "Visible to specific connections."
msgstr "Sichtbar für bestimmte Verbindungen."
-#: ../../include/items.php:3957
+#: ../../include/items.php:4117
msgid "Privacy group is empty."
msgstr "Gruppe ist leer."
-#: ../../include/items.php:3964
+#: ../../include/items.php:4124
#, php-format
msgid "Privacy group: %s"
msgstr "Gruppe: %s"
-#: ../../include/items.php:3976
+#: ../../include/items.php:4136
msgid "Connection not found."
msgstr "Die Verbindung wurde nicht gefunden."
-#: ../../include/items.php:4327
+#: ../../include/items.php:4485
msgid "profile photo"
msgstr "Profilfoto"
-#: ../../include/items.php:4520
+#: ../../include/items.php:4676
#, php-format
msgid "[Edited %s]"
msgstr "[%s wurde bearbeitet]"
-#: ../../include/items.php:4520
+#: ../../include/items.php:4676
msgctxt "edit_activity"
msgid "Post"
msgstr "Beitrag"
-#: ../../include/items.php:4520
+#: ../../include/items.php:4676
msgctxt "edit_activity"
msgid "Comment"
msgstr "Kommentar"
-#: ../../include/channel.php:34
+#: ../../include/channel.php:35
msgid "Unable to obtain identity information from database"
msgstr "Kann keine Identitäts-Informationen aus Datenbank beziehen"
-#: ../../include/channel.php:69
+#: ../../include/channel.php:68
msgid "Empty name"
msgstr "Namensfeld leer"
-#: ../../include/channel.php:72
+#: ../../include/channel.php:71
msgid "Name too long"
msgstr "Name ist zu lang"
-#: ../../include/channel.php:183
+#: ../../include/channel.php:188
msgid "No account identifier"
msgstr "Keine Account-Kennung"
-#: ../../include/channel.php:195
+#: ../../include/channel.php:200
msgid "Nickname is required."
msgstr "Spitzname ist erforderlich."
-#: ../../include/channel.php:273
+#: ../../include/channel.php:277
msgid "Unable to retrieve created identity"
msgstr "Kann die erstellte Identität nicht empfangen"
-#: ../../include/channel.php:359
+#: ../../include/channel.php:373
msgid "Default Profile"
msgstr "Standard-Profil"
-#: ../../include/channel.php:512 ../../include/channel.php:601
+#: ../../include/channel.php:532 ../../include/channel.php:621
msgid "Unable to retrieve modified identity"
msgstr "Geänderte Identität kann nicht empfangen werden"
-#: ../../include/channel.php:1263
+#: ../../include/channel.php:1298
msgid "Create New Profile"
msgstr "Neues Profil erstellen"
-#: ../../include/channel.php:1283
+#: ../../include/channel.php:1319
msgid "Visible to everybody"
msgstr "Für jeden sichtbar"
-#: ../../include/channel.php:1356 ../../include/channel.php:1475
+#: ../../include/channel.php:1396 ../../include/channel.php:1523
msgid "Gender:"
msgstr "Geschlecht:"
-#: ../../include/channel.php:1358 ../../include/channel.php:1530
+#: ../../include/channel.php:1398 ../../include/channel.php:1578
msgid "Homepage:"
msgstr "Homepage:"
-#: ../../include/channel.php:1359
+#: ../../include/channel.php:1399
msgid "Online Now"
msgstr "gerade online"
-#: ../../include/channel.php:1434
+#: ../../include/channel.php:1482
msgid "Trans"
msgstr ""
-#: ../../include/channel.php:1480
+#: ../../include/channel.php:1528
msgid "Like this channel"
msgstr "Dieser Kanal gefällt mir"
-#: ../../include/channel.php:1504
+#: ../../include/channel.php:1552
msgid "j F, Y"
msgstr "j. F Y"
-#: ../../include/channel.php:1505
+#: ../../include/channel.php:1553
msgid "j F"
msgstr "j. F"
-#: ../../include/channel.php:1512
+#: ../../include/channel.php:1560
msgid "Birthday:"
msgstr "Geburtstag:"
-#: ../../include/channel.php:1525
+#: ../../include/channel.php:1573
#, php-format
msgid "for %1$d %2$s"
msgstr "seit %1$d %2$s"
-#: ../../include/channel.php:1528
+#: ../../include/channel.php:1576
msgid "Sexual Preference:"
msgstr "Sexuelle Orientierung:"
-#: ../../include/channel.php:1534
+#: ../../include/channel.php:1582
msgid "Tags:"
msgstr "Schlagworte:"
-#: ../../include/channel.php:1536
+#: ../../include/channel.php:1584
msgid "Political Views:"
msgstr "Politische Ansichten:"
-#: ../../include/channel.php:1538
+#: ../../include/channel.php:1586
msgid "Religion:"
msgstr "Religion:"
-#: ../../include/channel.php:1542
+#: ../../include/channel.php:1590
msgid "Hobbies/Interests:"
msgstr "Hobbys/Interessen:"
-#: ../../include/channel.php:1544
+#: ../../include/channel.php:1592
msgid "Likes:"
msgstr "Gefällt:"
-#: ../../include/channel.php:1546
+#: ../../include/channel.php:1594
msgid "Dislikes:"
msgstr "Gefällt nicht:"
-#: ../../include/channel.php:1548
+#: ../../include/channel.php:1596
msgid "Contact information and Social Networks:"
msgstr "Kontaktinformation und soziale Netzwerke:"
-#: ../../include/channel.php:1550
+#: ../../include/channel.php:1598
msgid "My other channels:"
msgstr "Meine anderen Kanäle:"
-#: ../../include/channel.php:1552
+#: ../../include/channel.php:1600
msgid "Musical interests:"
msgstr "Musikalische Interessen:"
-#: ../../include/channel.php:1554
+#: ../../include/channel.php:1602
msgid "Books, literature:"
msgstr "Bücher, Literatur:"
-#: ../../include/channel.php:1556
+#: ../../include/channel.php:1604
msgid "Television:"
msgstr "Fernsehen:"
-#: ../../include/channel.php:1558
+#: ../../include/channel.php:1606
msgid "Film/dance/culture/entertainment:"
msgstr "Film/Tanz/Kultur/Unterhaltung:"
-#: ../../include/channel.php:1560
+#: ../../include/channel.php:1608
msgid "Love/Romance:"
msgstr "Liebe/Romantik:"
-#: ../../include/channel.php:1562
+#: ../../include/channel.php:1610
msgid "Work/employment:"
msgstr "Arbeit/Anstellung:"
-#: ../../include/channel.php:1564
+#: ../../include/channel.php:1612
msgid "School/education:"
msgstr "Schule/Ausbildung:"
-#: ../../include/channel.php:1587
+#: ../../include/channel.php:1635
msgid "Like this thing"
msgstr "Gefällt mir"
-#: ../../include/event.php:22 ../../include/event.php:69
+#: ../../include/event.php:23 ../../include/event.php:70
msgid "l F d, Y \\@ g:i A"
msgstr "l, d. F Y, H:i"
-#: ../../include/event.php:30 ../../include/event.php:73
+#: ../../include/event.php:31 ../../include/event.php:74
msgid "Starts:"
msgstr "Beginnt:"
-#: ../../include/event.php:40 ../../include/event.php:77
+#: ../../include/event.php:41 ../../include/event.php:78
msgid "Finishes:"
msgstr "Endet:"
-#: ../../include/event.php:1008
+#: ../../include/event.php:1011
msgid "This event has been added to your calendar."
msgstr "Dieser Termin wurde zu Deinem Kalender hinzugefügt"
-#: ../../include/event.php:1208
+#: ../../include/event.php:1220
msgid "Not specified"
msgstr "Keine Angabe"
-#: ../../include/event.php:1209
+#: ../../include/event.php:1221
msgid "Needs Action"
msgstr "Aktion erforderlich"
-#: ../../include/event.php:1210
+#: ../../include/event.php:1222
msgid "Completed"
msgstr "Abgeschlossen"
-#: ../../include/event.php:1211
+#: ../../include/event.php:1223
msgid "In Process"
msgstr "In Bearbeitung"
-#: ../../include/event.php:1212
+#: ../../include/event.php:1224
msgid "Cancelled"
msgstr "gestrichen"
-#: ../../include/event.php:1292 ../../include/connections.php:684
+#: ../../include/event.php:1303 ../../include/connections.php:684
msgid "Home, Voice"
msgstr "Zuhause, Sprache"
-#: ../../include/event.php:1293 ../../include/connections.php:685
+#: ../../include/event.php:1304 ../../include/connections.php:685
msgid "Home, Fax"
msgstr "Zuhause, Fax"
-#: ../../include/event.php:1295 ../../include/connections.php:687
+#: ../../include/event.php:1306 ../../include/connections.php:687
msgid "Work, Voice"
msgstr "Arbeit, Sprache"
-#: ../../include/event.php:1296 ../../include/connections.php:688
+#: ../../include/event.php:1307 ../../include/connections.php:688
msgid "Work, Fax"
msgstr "Arbeit, Fax"
-#: ../../include/network.php:752
+#: ../../include/network.php:761
msgid "view full size"
msgstr "In Vollbildansicht anschauen"
-#: ../../include/network.php:1700 ../../include/network.php:1701
+#: ../../include/network.php:1763 ../../include/network.php:1764
msgid "Friendica"
msgstr "Friendica"
-#: ../../include/network.php:1702
+#: ../../include/network.php:1765
msgid "OStatus"
msgstr "OStatus"
-#: ../../include/network.php:1703
+#: ../../include/network.php:1766
msgid "GNU-Social"
msgstr "GNU-Social"
-#: ../../include/network.php:1704
+#: ../../include/network.php:1767
msgid "RSS/Atom"
msgstr "RSS/Atom"
-#: ../../include/network.php:1707
+#: ../../include/network.php:1770
msgid "Diaspora"
msgstr "Diaspora"
-#: ../../include/network.php:1708
+#: ../../include/network.php:1771
msgid "Facebook"
msgstr "Facebook"
-#: ../../include/network.php:1709
+#: ../../include/network.php:1772
msgid "Zot"
msgstr "Zot!"
-#: ../../include/network.php:1710
+#: ../../include/network.php:1773
msgid "LinkedIn"
msgstr "LinkedIn"
-#: ../../include/network.php:1711
+#: ../../include/network.php:1774
msgid "XMPP/IM"
msgstr "XMPP/IM"
-#: ../../include/network.php:1712
+#: ../../include/network.php:1775
msgid "MySpace"
msgstr "MySpace"
-#: ../../include/language.php:380
+#: ../../include/language.php:377
msgid "Select an alternate language"
msgstr "Wähle eine alternative Sprache"
@@ -12884,24 +13010,24 @@ msgstr "Beitragsberechtigungen %s können nicht geändert werden %s, nachdem der
msgid "Cannot locate DNS info for database server '%s'"
msgstr "Kann die DNS-Informationen für den Datenbank-Server '%s' nicht finden"
-#: ../../include/bbcode.php:194 ../../include/bbcode.php:1102
-#: ../../include/bbcode.php:1105 ../../include/bbcode.php:1110
-#: ../../include/bbcode.php:1113 ../../include/bbcode.php:1116
-#: ../../include/bbcode.php:1119 ../../include/bbcode.php:1124
-#: ../../include/bbcode.php:1127 ../../include/bbcode.php:1132
-#: ../../include/bbcode.php:1135 ../../include/bbcode.php:1138
-#: ../../include/bbcode.php:1141
+#: ../../include/bbcode.php:194 ../../include/bbcode.php:1106
+#: ../../include/bbcode.php:1109 ../../include/bbcode.php:1114
+#: ../../include/bbcode.php:1117 ../../include/bbcode.php:1120
+#: ../../include/bbcode.php:1123 ../../include/bbcode.php:1128
+#: ../../include/bbcode.php:1131 ../../include/bbcode.php:1136
+#: ../../include/bbcode.php:1139 ../../include/bbcode.php:1142
+#: ../../include/bbcode.php:1145
msgid "Image/photo"
msgstr "Bild/Foto"
-#: ../../include/bbcode.php:233 ../../include/bbcode.php:1152
+#: ../../include/bbcode.php:233 ../../include/bbcode.php:1156
msgid "Encrypted content"
msgstr "Verschlüsselter Inhalt"
#: ../../include/bbcode.php:249
#, php-format
-msgid "Install %s element: "
-msgstr "Element %s installieren: "
+msgid "Install %1$s element %2$s"
+msgstr ""
#: ../../include/bbcode.php:253
#, php-format
@@ -12914,15 +13040,19 @@ msgstr "Dieser Beitrag beinhaltet ein installierbares %s Element, aber Du hast n
msgid "card"
msgstr "Karte"
-#: ../../include/bbcode.php:414 ../../include/bbcode.php:422
+#: ../../include/bbcode.php:333
+msgid "article"
+msgstr "Artikel"
+
+#: ../../include/bbcode.php:416 ../../include/bbcode.php:424
msgid "Click to open/close"
msgstr "Klicke zum Öffnen/Schließen"
-#: ../../include/bbcode.php:422
+#: ../../include/bbcode.php:424
msgid "spoiler"
msgstr "Spoiler"
-#: ../../include/bbcode.php:1090
+#: ../../include/bbcode.php:1094
msgid "$1 wrote:"
msgstr "$1 schrieb:"
@@ -12942,10 +13072,10 @@ msgstr "Eingebetteter Inhalt"
msgid "Embedding disabled"
msgstr "Einbetten deaktiviert"
-#: ../../include/zid.php:305
+#: ../../include/zid.php:340
#, php-format
msgid "OpenWebAuth: %1$s welcomes %2$s"
-msgstr ""
+msgstr "OpenWebAuth: %1$s heißt %2$s willkommen"
#: ../../include/features.php:54
msgid "General Features"
@@ -12999,292 +13129,296 @@ msgstr "Aktiviert ein Werkzeug mit dem Notizen und Erinnerungen gespeichert werd
msgid "Create personal planning cards"
msgstr "Erstelle persönliche (Notiz-)Karten zur Planung/Koordination oder ähnlichen Zwecken"
-#: ../../include/features.php:131
+#: ../../include/features.php:141
msgid "Navigation Channel Select"
msgstr "Kanal-Auswahl in der Navigationsleiste"
-#: ../../include/features.php:132
+#: ../../include/features.php:142
msgid "Change channels directly from within the navigation dropdown menu"
msgstr "Ermöglicht den direkten Wechsel zu anderen Kanälen über das Navigationsmenü"
-#: ../../include/features.php:140
+#: ../../include/features.php:150
msgid "Photo Location"
msgstr "Aufnahmeort"
-#: ../../include/features.php:141
+#: ../../include/features.php:151
msgid "If location data is available on uploaded photos, link this to a map."
msgstr "Verlinkt den Aufnahmeort von Fotos (falls verfügbar) auf einer Karte"
-#: ../../include/features.php:149
+#: ../../include/features.php:159
msgid "Access Controlled Chatrooms"
msgstr "Zugriffskontrollierte Chaträume"
-#: ../../include/features.php:150
+#: ../../include/features.php:160
msgid "Provide chatrooms and chat services with access control."
msgstr "Bieten Sie Chaträume und Chatdienste mit Zugriffskontrolle an."
-#: ../../include/features.php:159
+#: ../../include/features.php:169
msgid "Provide alternate connection permission roles."
msgstr "Stelle benutzerdefinierte Berechtigungsrollen für Verbindungen zur Verfügung."
-#: ../../include/features.php:167
+#: ../../include/features.php:177
msgid "Smart Birthdays"
msgstr "Smarte Geburtstage"
-#: ../../include/features.php:168
+#: ../../include/features.php:178
msgid ""
"Make birthday events timezone aware in case your friends are scattered "
"across the planet."
msgstr "Stellt für Geburtstage einen Zeitzonenbezug her, falls deine Freunde über den ganzen Planeten verstreut sind."
-#: ../../include/features.php:176
+#: ../../include/features.php:186
msgid "Event Timezone Selection"
msgstr "Termin-Zeitzonenauswahl"
-#: ../../include/features.php:177
+#: ../../include/features.php:187
msgid "Allow event creation in timezones other than your own."
msgstr "Ermögliche das Erstellen von Terminen in anderen Zeitzonen als Deiner eigenen."
-#: ../../include/features.php:185
+#: ../../include/features.php:195
msgid "Advanced Directory Search"
msgstr "Erweiterte Verzeichnissuche"
-#: ../../include/features.php:186
+#: ../../include/features.php:196
msgid "Allows creation of complex directory search queries"
msgstr "Ermöglicht die Erstellung komplexer Verzeichnis-Suchabfragen"
-#: ../../include/features.php:194
+#: ../../include/features.php:204
msgid "Advanced Theme and Layout Settings"
msgstr "Erweiterte Design- und Layout-Einstellungen"
-#: ../../include/features.php:195
+#: ../../include/features.php:205
msgid "Allows fine tuning of themes and page layouts"
msgstr "Erlaubt die Feineinstellung von Designs und Seitenlayouts"
-#: ../../include/features.php:205
+#: ../../include/features.php:215
msgid "Post Composition Features"
msgstr "Nachbearbeitungsfunktionen"
-#: ../../include/features.php:209
+#: ../../include/features.php:219
msgid "Large Photos"
msgstr "Große Fotos"
-#: ../../include/features.php:210
+#: ../../include/features.php:220
msgid ""
"Include large (1024px) photo thumbnails in posts. If not enabled, use small "
"(640px) photo thumbnails"
msgstr "Große Vorschaubilder (1024px) in Beiträgen anzeigen. Falls nicht aktiviert, werden kleine Vorschaubilder (640px) verwendet."
-#: ../../include/features.php:219
+#: ../../include/features.php:229
msgid "Automatically import channel content from other channels or feeds"
msgstr "Ermöglicht den automatischen Import von Inhalten für diesen Kanal von anderen Kanälen oder Feeds"
-#: ../../include/features.php:227
+#: ../../include/features.php:237
msgid "Even More Encryption"
msgstr "Noch mehr Verschlüsselung"
-#: ../../include/features.php:228
+#: ../../include/features.php:238
msgid ""
"Allow optional encryption of content end-to-end with a shared secret key"
msgstr "Ermöglicht optional die zusätzliche Verschlüsselung von Inhalten (Ende-zu-Ende mit geteiltem Schlüssel)"
-#: ../../include/features.php:236
+#: ../../include/features.php:246
msgid "Enable Voting Tools"
msgstr "Umfragewerkzeuge aktivieren"
-#: ../../include/features.php:237
+#: ../../include/features.php:247
msgid "Provide a class of post which others can vote on"
msgstr "Aktiviert die Umfragewerkzeuge, um anderen die Möglichkeit zu geben, einem Beitrag zuzustimmen, ihn abzulehnen oder sich zu enthalten. (Muss im Beitrag selbst noch aktiviert werden.)"
-#: ../../include/features.php:245
+#: ../../include/features.php:255
msgid "Disable Comments"
msgstr "Kommentare deaktivieren"
-#: ../../include/features.php:246
+#: ../../include/features.php:256
msgid "Provide the option to disable comments for a post"
msgstr "Ermöglicht, die Kommentarfunktion für einzelne Beiträge abzuschalten"
-#: ../../include/features.php:254
+#: ../../include/features.php:264
msgid "Delayed Posting"
msgstr "Verzögertes Senden"
-#: ../../include/features.php:255
+#: ../../include/features.php:265
msgid "Allow posts to be published at a later date"
msgstr "Ermöglicht es, Beiträge zu einem späteren Zeitpunkt zu veröffentlichen"
-#: ../../include/features.php:263
+#: ../../include/features.php:273
msgid "Content Expiration"
msgstr "Verfall von Inhalten"
-#: ../../include/features.php:264
+#: ../../include/features.php:274
msgid "Remove posts/comments and/or private messages at a future time"
msgstr "Ermöglicht das automatische Löschen von Beiträgen, Kommentaren und/oder privaten Nachrichten zu einem zukünftigen Datum."
-#: ../../include/features.php:272
+#: ../../include/features.php:282
msgid "Suppress Duplicate Posts/Comments"
msgstr "Doppelte Beiträge unterdrücken"
-#: ../../include/features.php:273
+#: ../../include/features.php:283
msgid ""
"Prevent posts with identical content to be published with less than two "
"minutes in between submissions."
msgstr "Verhindert, dass innerhalb von zwei Minuten Beiträge mit identischem Inhalt veröffentlicht werden."
-#: ../../include/features.php:284
+#: ../../include/features.php:294
msgid "Network and Stream Filtering"
msgstr "Netzwerk- und Stream-Filter"
-#: ../../include/features.php:288
+#: ../../include/features.php:298
msgid "Search by Date"
msgstr "Suche nach Datum"
-#: ../../include/features.php:289
+#: ../../include/features.php:299
msgid "Ability to select posts by date ranges"
msgstr "Möglichkeit, Beiträge nach Zeiträumen auszuwählen"
-#: ../../include/features.php:297 ../../include/group.php:332
+#: ../../include/features.php:307 ../../include/group.php:328
msgid "Privacy Groups"
msgstr "Gruppen"
-#: ../../include/features.php:298
+#: ../../include/features.php:308
msgid "Enable management and selection of privacy groups"
msgstr "Auswahl und Verwaltung von Gruppen für Kanäle aktivieren"
-#: ../../include/features.php:307
+#: ../../include/features.php:317
msgid "Save search terms for re-use"
msgstr "Ermöglicht das Abspeichern von Suchbegriffen zur Wiederverwendung"
-#: ../../include/features.php:315
+#: ../../include/features.php:325
msgid "Network Personal Tab"
msgstr "Persönlicher Netzwerkreiter"
-#: ../../include/features.php:316
+#: ../../include/features.php:326
msgid "Enable tab to display only Network posts that you've interacted on"
msgstr "Aktiviert einen Reiter in der Grid-Ansicht, der nur Netzwerk-Beiträge anzeigt, mit denen Du interagiert hast"
-#: ../../include/features.php:324
+#: ../../include/features.php:334
msgid "Network New Tab"
msgstr "Netzwerkreiter Neu"
-#: ../../include/features.php:325
+#: ../../include/features.php:335
msgid "Enable tab to display all new Network activity"
msgstr "Aktiviert einen Reiter in der Grid-Ansicht, der alle neuen Netzwerkaktivitäten anzeigt"
-#: ../../include/features.php:333
+#: ../../include/features.php:343
msgid "Affinity Tool"
msgstr "Beziehungs-Tool"
-#: ../../include/features.php:334
+#: ../../include/features.php:344
msgid "Filter stream activity by depth of relationships"
msgstr "Aktiviert ein Werkzeug in der Grid-Ansicht, das den Stream nach Grad der Beziehung filtern kann"
-#: ../../include/features.php:343
+#: ../../include/features.php:353
msgid "Show friend and connection suggestions"
msgstr "Freund- und Verbindungsvorschläge anzeigen"
-#: ../../include/features.php:351
+#: ../../include/features.php:361
msgid "Connection Filtering"
msgstr "Filter für Verbindungen"
-#: ../../include/features.php:352
+#: ../../include/features.php:362
msgid "Filter incoming posts from connections based on keywords/content"
msgstr "Ermöglicht die Filterung eingehender Beiträge anhand von Schlüsselwörtern (muss an der Verbindung konfiguriert werden)"
-#: ../../include/features.php:364
+#: ../../include/features.php:374
msgid "Post/Comment Tools"
msgstr "Beitrag-/Kommentar-Tools"
-#: ../../include/features.php:368
+#: ../../include/features.php:379
+msgid "Use markdown for editing posts"
+msgstr "Verwende Markdown zum Bearbeiten von Beiträgen"
+
+#: ../../include/features.php:387
msgid "Community Tagging"
msgstr "Gemeinschaftliches Verschlagworten"
-#: ../../include/features.php:369
+#: ../../include/features.php:388
msgid "Ability to tag existing posts"
msgstr "Ermöglicht das Verschlagworten existierender Beiträge"
-#: ../../include/features.php:377
+#: ../../include/features.php:396
msgid "Post Categories"
msgstr "Beitrags-Kategorien"
-#: ../../include/features.php:378
+#: ../../include/features.php:397
msgid "Add categories to your posts"
msgstr "Aktiviert Kategorien für Beiträge"
-#: ../../include/features.php:386
+#: ../../include/features.php:405
msgid "Emoji Reactions"
msgstr "Emoji Reaktionen"
-#: ../../include/features.php:387
+#: ../../include/features.php:406
msgid "Add emoji reaction ability to posts"
msgstr "Aktiviert Emoji-Reaktionen für Beiträge"
-#: ../../include/features.php:396
+#: ../../include/features.php:415
msgid "Ability to file posts under folders"
msgstr "Möglichkeit, Beiträge in Verzeichnissen zu sammeln"
-#: ../../include/features.php:404
+#: ../../include/features.php:423
msgid "Dislike Posts"
msgstr "Gefällt-mir-nicht-Beiträge"
-#: ../../include/features.php:405
+#: ../../include/features.php:424
msgid "Ability to dislike posts/comments"
msgstr "Aktiviert die „Gefällt mir nicht“-Schaltfläche"
-#: ../../include/features.php:413
+#: ../../include/features.php:432
msgid "Star Posts"
msgstr "Beiträge mit Sternchen versehen"
-#: ../../include/features.php:414
+#: ../../include/features.php:433
msgid "Ability to mark special posts with a star indicator"
msgstr "Ermöglicht die lokale Markierung spezieller Beiträge mit einem Sternchen-Symbol"
-#: ../../include/features.php:422
+#: ../../include/features.php:441
msgid "Tag Cloud"
msgstr "Schlagwort-Wolke"
-#: ../../include/features.php:423
+#: ../../include/features.php:442
msgid "Provide a personal tag cloud on your channel page"
msgstr "Aktiviert die Anzeige einer Schlagwort-Wolke (Tag Cloud) auf Deiner Kanal-Seite"
-#: ../../include/features.php:434
+#: ../../include/features.php:453
msgid "Premium Channel"
msgstr "Premium-Kanal"
-#: ../../include/features.php:435
+#: ../../include/features.php:454
msgid ""
"Allows you to set restrictions and terms on those that connect with your "
"channel"
msgstr "Ermöglicht es, Einschränkungen und Bedingungen für Verbindungen dieses Kanals festzulegen"
-#: ../../include/taxonomy.php:325 ../../include/taxonomy.php:346
+#: ../../include/taxonomy.php:377 ../../include/taxonomy.php:398
msgid "Tags"
msgstr "Schlagwörter"
-#: ../../include/taxonomy.php:410
+#: ../../include/taxonomy.php:483
msgid "Keywords"
msgstr "Schlüsselwörter"
-#: ../../include/taxonomy.php:431
+#: ../../include/taxonomy.php:504
msgid "have"
msgstr "habe"
-#: ../../include/taxonomy.php:431
+#: ../../include/taxonomy.php:504
msgid "has"
msgstr "hat"
-#: ../../include/taxonomy.php:432
+#: ../../include/taxonomy.php:505
msgid "want"
msgstr "will"
-#: ../../include/taxonomy.php:432
+#: ../../include/taxonomy.php:505
msgid "wants"
msgstr "will"
-#: ../../include/taxonomy.php:433
+#: ../../include/taxonomy.php:506
msgid "likes"
msgstr "gefällt"
-#: ../../include/taxonomy.php:434
+#: ../../include/taxonomy.php:507
msgid "dislikes"
msgstr "missfällt"
@@ -13356,283 +13490,283 @@ msgstr "Diese Aktion überschreitet die Grenzen Ihres Abonnements."
msgid "This action is not available under your subscription plan."
msgstr "Diese Aktion ist in Ihrem Abonnement nicht verfügbar."
-#: ../../include/datetime.php:147
+#: ../../include/datetime.php:150
msgid "Birthday"
msgstr "Geburtstag"
-#: ../../include/datetime.php:149
+#: ../../include/datetime.php:152
msgid "Age: "
msgstr "Alter:"
-#: ../../include/datetime.php:151
+#: ../../include/datetime.php:154
msgid "YYYY-MM-DD or MM-DD"
msgstr "JJJJ-MM-TT oder MM-TT"
-#: ../../include/datetime.php:292
+#: ../../include/datetime.php:298
msgid "less than a second ago"
msgstr "Vor weniger als einer Sekunde"
-#: ../../include/datetime.php:310
+#: ../../include/datetime.php:316
#, php-format
msgctxt "e.g. 22 hours ago, 1 minute ago"
msgid "%1$d %2$s ago"
msgstr "vor %1$d %2$s"
-#: ../../include/datetime.php:321
+#: ../../include/datetime.php:327
msgctxt "relative_date"
msgid "year"
msgid_plural "years"
msgstr[0] "Jahr"
msgstr[1] "Jahre"
-#: ../../include/datetime.php:324
+#: ../../include/datetime.php:330
msgctxt "relative_date"
msgid "month"
msgid_plural "months"
msgstr[0] "Monat"
msgstr[1] "Monate"
-#: ../../include/datetime.php:327
+#: ../../include/datetime.php:333
msgctxt "relative_date"
msgid "week"
msgid_plural "weeks"
msgstr[0] "Woche"
msgstr[1] "Wochen"
-#: ../../include/datetime.php:330
+#: ../../include/datetime.php:336
msgctxt "relative_date"
msgid "day"
msgid_plural "days"
msgstr[0] "Tag"
msgstr[1] "Tage"
-#: ../../include/datetime.php:333
+#: ../../include/datetime.php:339
msgctxt "relative_date"
msgid "hour"
msgid_plural "hours"
msgstr[0] "Stunde"
msgstr[1] "Stunden"
-#: ../../include/datetime.php:336
+#: ../../include/datetime.php:342
msgctxt "relative_date"
msgid "minute"
msgid_plural "minutes"
msgstr[0] "Minute"
msgstr[1] "Minuten"
-#: ../../include/datetime.php:339
+#: ../../include/datetime.php:345
msgctxt "relative_date"
msgid "second"
msgid_plural "seconds"
msgstr[0] "Sekunde"
msgstr[1] "Sekunden"
-#: ../../include/datetime.php:576
+#: ../../include/datetime.php:579
#, php-format
msgid "%1$s's birthday"
msgstr "%1$ss Geburtstag"
-#: ../../include/datetime.php:577
+#: ../../include/datetime.php:580
#, php-format
msgid "Happy Birthday %1$s"
msgstr "Alles Gute zum Geburtstag, %1$s"
-#: ../../include/nav.php:91
+#: ../../include/nav.php:98
msgid "Remote authentication"
msgstr "Über Konto auf anderem Server einloggen"
-#: ../../include/nav.php:91
+#: ../../include/nav.php:98
msgid "Click to authenticate to your home hub"
msgstr "Klicke, um Dich über Deinen Heimat-Server zu authentifizieren"
-#: ../../include/nav.php:98
+#: ../../include/nav.php:105
msgid "Network Activity"
msgstr "Netzwerk-Aktivitäten"
-#: ../../include/nav.php:100
+#: ../../include/nav.php:107
msgid "Mark all activity notifications seen"
msgstr "Alle Benachrichtigungen als gesehen markieren"
-#: ../../include/nav.php:102
+#: ../../include/nav.php:109
msgid "Channel home"
msgstr "Mein Kanal"
-#: ../../include/nav.php:103
+#: ../../include/nav.php:110
msgid "View your channel home"
msgstr "Zeige Deine Kanalseite an"
-#: ../../include/nav.php:104
+#: ../../include/nav.php:111
msgid "Mark all channel notifications seen"
msgstr "Markiere alle Kanal-Benachrichtigungen als angesehen"
-#: ../../include/nav.php:109
+#: ../../include/nav.php:116
msgid "Registrations"
msgstr "Registrierungen"
-#: ../../include/nav.php:112
+#: ../../include/nav.php:119
msgid "Notifications"
msgstr "Benachrichtigungen"
-#: ../../include/nav.php:113
+#: ../../include/nav.php:120
msgid "View all notifications"
msgstr "Alle Benachrichtigungen ansehen"
-#: ../../include/nav.php:114
+#: ../../include/nav.php:121
msgid "Mark all system notifications seen"
msgstr "Markiere alle System-Benachrichtigungen als gesehen"
-#: ../../include/nav.php:116
+#: ../../include/nav.php:123
msgid "Private mail"
msgstr "Persönliche Mail"
-#: ../../include/nav.php:117
+#: ../../include/nav.php:124
msgid "View your private messages"
msgstr "Zeige Deine persönlichen Nachrichten an"
-#: ../../include/nav.php:118
+#: ../../include/nav.php:125
msgid "Mark all private messages seen"
msgstr "Markiere alle persönlichen Nachrichten als gesehen"
-#: ../../include/nav.php:124
+#: ../../include/nav.php:131
msgid "Event Calendar"
msgstr "Terminkalender"
-#: ../../include/nav.php:129 ../../include/nav.php:215
+#: ../../include/nav.php:136 ../../include/nav.php:222
msgid "Manage Your Channels"
msgstr "Verwalte Deine Kanäle"
-#: ../../include/nav.php:132 ../../include/nav.php:217
+#: ../../include/nav.php:139 ../../include/nav.php:224
msgid "Account/Channel Settings"
msgstr "Konto-/Kanal-Einstellungen"
-#: ../../include/nav.php:138 ../../include/nav.php:167
+#: ../../include/nav.php:145 ../../include/nav.php:174
msgid "End this session"
msgstr "Beende diese Sitzung"
-#: ../../include/nav.php:141
+#: ../../include/nav.php:148
msgid "Your profile page"
msgstr "Deine Profilseite"
-#: ../../include/nav.php:144
+#: ../../include/nav.php:151
msgid "Manage/Edit profiles"
msgstr "Profile verwalten"
-#: ../../include/nav.php:146
+#: ../../include/nav.php:153
msgid "Edit your profile"
msgstr "Profil bearbeiten"
-#: ../../include/nav.php:153 ../../include/nav.php:157
+#: ../../include/nav.php:160 ../../include/nav.php:164
msgid "Sign in"
msgstr "Anmelden"
-#: ../../include/nav.php:182
+#: ../../include/nav.php:189
msgid "Take me home"
msgstr "Bringe mich nach Hause (eigener Kanal)"
-#: ../../include/nav.php:184
+#: ../../include/nav.php:191
msgid "Log me out of this site"
msgstr "Logge mich von dieser Seite aus"
-#: ../../include/nav.php:189
+#: ../../include/nav.php:196
msgid "Create an account"
msgstr "Erzeuge ein Konto"
-#: ../../include/nav.php:201
+#: ../../include/nav.php:208
msgid "Help and documentation"
msgstr "Hilfe und Dokumentation"
-#: ../../include/nav.php:204
+#: ../../include/nav.php:211
msgid "Search site @name, #tag, ?docs, content"
msgstr "Hub durchsuchen: @Name. #Schlagwort, ?Dokumentation, Inhalt"
-#: ../../include/nav.php:224
+#: ../../include/nav.php:231
msgid "Site Setup and Configuration"
msgstr "Seiten-Einrichtung und -Konfiguration"
-#: ../../include/nav.php:311
+#: ../../include/nav.php:322
msgid "@name, #tag, ?doc, content"
msgstr "@Name, #Schlagwort, ?Dokumentation, Inhalt"
-#: ../../include/nav.php:312
+#: ../../include/nav.php:323
msgid "Please wait..."
msgstr "Bitte warten..."
-#: ../../include/nav.php:318
+#: ../../include/nav.php:329
msgid "Add Apps"
msgstr "Apps hinzufügen"
-#: ../../include/nav.php:319
+#: ../../include/nav.php:330
msgid "Arrange Apps"
msgstr "Apps anordnen"
-#: ../../include/nav.php:320
+#: ../../include/nav.php:331
msgid "Toggle System Apps"
msgstr "System-Apps umschalten"
-#: ../../include/photos.php:123
+#: ../../include/photos.php:150
#, php-format
msgid "Image exceeds website size limit of %lu bytes"
msgstr "Bild überschreitet das Webseitenlimit von %lu Bytes"
-#: ../../include/photos.php:130
+#: ../../include/photos.php:161
msgid "Image file is empty."
msgstr "Bilddatei ist leer."
-#: ../../include/photos.php:268
+#: ../../include/photos.php:322
msgid "Photo storage failed."
msgstr "Fotospeicherung fehlgeschlagen."
-#: ../../include/photos.php:308
+#: ../../include/photos.php:364
msgid "a new photo"
msgstr "ein neues Foto"
-#: ../../include/photos.php:312
+#: ../../include/photos.php:368
#, php-format
msgctxt "photo_upload"
msgid "%1$s posted %2$s to %3$s"
msgstr "%1$s hat %2$s auf %3$s veröffentlicht"
-#: ../../include/photos.php:605
+#: ../../include/photos.php:660
msgid "Upload New Photos"
msgstr "Neue Fotos hochladen"
-#: ../../include/zot.php:654
+#: ../../include/zot.php:675
msgid "Invalid data packet"
msgstr "Ungültiges Datenpaket"
-#: ../../include/zot.php:681
+#: ../../include/zot.php:702
msgid "Unable to verify channel signature"
msgstr "Konnte die Signatur des Kanals nicht verifizieren"
-#: ../../include/zot.php:2368
+#: ../../include/zot.php:2409
#, php-format
msgid "Unable to verify site signature for %s"
msgstr "Kann die Signatur der Seite von %s nicht verifizieren"
-#: ../../include/group.php:26
+#: ../../include/group.php:22
msgid ""
"A deleted group with this name was revived. Existing item permissions "
"<strong>may</strong> apply to this group and any future members. If this is "
"not what you intended, please create another group with a different name."
msgstr "Es hat früher schon einmal eine Gruppe mit diesem Namen existiert, die gelöscht wurde. Es <strong>könnten</strong> von damals noch Elemente (Beiträge, Dateien etc.) vorhanden sein, die allen jetzigen und zukünftigen Mitgliedern dieser Gruppe den Zugriff erlauben. Wenn das nicht Deine Absicht ist, erstelle bitte eine neue Gruppe mit einem anderen Namen."
-#: ../../include/group.php:268
+#: ../../include/group.php:264
msgid "Add new connections to this privacy group"
msgstr "Neue Verbindung zu dieser Gruppe hinzufügen"
-#: ../../include/group.php:310
+#: ../../include/group.php:306
msgid "edit"
msgstr "Bearbeiten"
-#: ../../include/group.php:333
+#: ../../include/group.php:329
msgid "Edit group"
msgstr "Gruppe ändern"
-#: ../../include/group.php:334
+#: ../../include/group.php:330
msgid "Add privacy group"
msgstr "Gruppe hinzufügen"
-#: ../../include/group.php:335
+#: ../../include/group.php:331
msgid "Channels not in any privacy group"
msgstr "Kanäle, die in keiner Gruppe sind"
diff --git a/view/de/hstrings.php b/view/de/hstrings.php
index 25011af40..61db3fb5d 100644
--- a/view/de/hstrings.php
+++ b/view/de/hstrings.php
@@ -71,6 +71,9 @@ App::$strings["2. Enter my \$Projectname network address into the site searchbar
App::$strings["or visit"] = "oder besuche";
App::$strings["3. Click [Connect]"] = "3. Klicke auf [Verbinden]";
App::$strings["Submit"] = "Absenden";
+App::$strings["Cards"] = "Karten";
+App::$strings["Add Article"] = "Artikel hinzufügen";
+App::$strings["Articles"] = "Artikel";
App::$strings["Item not found"] = "Element nicht gefunden";
App::$strings["Layout Name"] = "Layout-Name";
App::$strings["Layout Description (Optional)"] = "Layout-Beschreibung (optional)";
@@ -148,6 +151,7 @@ App::$strings["You may also export your posts and conversations for a particular
App::$strings["To select all posts for a given year, such as this year, visit <a href=\"%1\$s\">%2\$s</a>"] = "Um alle Beiträge eines bestimmten Jahres, zum Beispiel dieses Jahres, auszuwählen, klicke <a href=\"%1\$s\">%2\$s</a>.";
App::$strings["To select all posts for a given month, such as January of this year, visit <a href=\"%1\$s\">%2\$s</a>"] = "Um alle Beiträge eines bestimmten Monats auszuwählen, zum Beispiel vom Januar diesen Jahres, klicke <a href=\"%1\$s\">%2\$s</a>.";
App::$strings["These content files may be imported or restored by visiting <a href=\"%1\$s\">%2\$s</a> on any site containing your channel. For best results please import or restore these in date order (oldest first)."] = "Diese Inhalts-Sicherungen können wiederhergestellt werden, indem Du <a href=\"%1\$s\">%2\$s</a> auf jeglichem Hub besuchst, der diesen Kanal enthält. Das funktioniert am besten, wenn Du dabei die zeitliche Reihenfolge einhältst, also die Sicherungen für den ältesten Zeitraum zuerst importierst.";
+App::$strings["Welcome to hubzilla!"] = "Willkommen bei Hubzilla!";
App::$strings["Public access denied."] = "Öffentlichen Zugriff verweigert.";
App::$strings["Search"] = "Suche";
App::$strings["Items tagged with: %s"] = "Beiträge mit Schlagwort: %s";
@@ -165,8 +169,10 @@ App::$strings["Sync Now"] = "Jetzt synchronisieren";
App::$strings["Please wait several minutes between consecutive operations."] = "Bitte warte mehrere Minuten zwischen dem Ausführen zweier Operationen!";
App::$strings["When possible, drop a location by logging into that website/hub and removing your channel."] = "Wenn möglich, lösche einen Klon, indem Du Dich auf dem jeweiligen Hub einloggst und den Kanal dort löschst.";
App::$strings["Use this form to drop the location if the hub is no longer operating."] = "Benutze dieses Formular zum Löschen eines Klons, wenn es den Hub nicht mehr gibt.";
-App::$strings["Change Order of Navigation Apps"] = "App-Reihenfolge in der Navigation ändern";
-App::$strings["Use arrows to move the corresponding app up or down in the display list"] = "Benutze die Pfeiltasten, um die jeweilige App in der Anzeigeliste auf- oder abwärts zu bewegen.";
+App::$strings["Change Order of Pinned Navbar Apps"] = "Reihenfolge der in der Navigation angepinnten Apps ändern";
+App::$strings["Change Order of App Tray Apps"] = "Reihenfolge der Apps im App-Menü ändern";
+App::$strings["Use arrows to move the corresponding app left (top) or right (bottom) in the navbar"] = "Benutze die Pfeil-Knöpfe, um die jeweilige App in der Navigationsleiste nach links (oben) oder rechts (unten) zu bewegen";
+App::$strings["Use arrows to move the corresponding app up or down in the app tray"] = "Benutze die Pfeil-Knöpfe, um die jeweilige App im App-Menü nach oben oder unten zu bewegen";
App::$strings["Menu not found."] = "Menü nicht gefunden";
App::$strings["Unable to create element."] = "Element konnte nicht erstellt werden.";
App::$strings["Unable to update menu element."] = "Kann Menü-Element nicht aktualisieren.";
@@ -253,6 +259,10 @@ App::$strings["photo"] = "Foto";
App::$strings["status"] = "Status";
App::$strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s folgt nun %2\$ss %3\$s";
App::$strings["%1\$s stopped following %2\$s's %3\$s"] = "%1\$s folgt %2\$ss %3\$s nicht mehr";
+App::$strings["Channel not found."] = "Kanal nicht gefunden.";
+App::$strings["Insert web link"] = "Link einfügen";
+App::$strings["Title (optional)"] = "Titel (optional)";
+App::$strings["Edit Article"] = "Artikel bearbeiten";
App::$strings["Nothing to import."] = "Nichts zu importieren.";
App::$strings["Unable to download data from old server"] = "Daten können vom alten Server nicht heruntergeladen werden";
App::$strings["Imported file is empty."] = "Die importierte Datei ist leer.";
@@ -582,10 +592,14 @@ App::$strings["Delivery interval"] = "Auslieferung Intervall";
App::$strings["Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers."] = "Verzögere im Hintergrund laufende Auslieferungsprozesse um die angegebene Anzahl Sekunden, um die Systemlast zu verringern. Empfehlungen: 4-5 für Shared Hosts, 2-3 für VPS, 0-1 für große dedizierte Server.";
App::$strings["Deliveries per process"] = "Zustellungen pro Prozess";
App::$strings["Number of deliveries to attempt in a single operating system process. Adjust if necessary to tune system performance. Recommend: 1-5."] = "Anzahl der Zustellungen, die innerhalb eines einzelnen Betriebssystemprozesses versucht werden. Anpassen, falls nötig, um die System-Performance zu verbessern. Empfehlung: 1-5.";
+App::$strings["Queue Threshold"] = "Warteschlangen-Grenzwert";
+App::$strings["Always defer immediate delivery if queue contains more than this number of entries."] = "Unmittelbare Zustellung immer verzögern, wenn die Warteschlange mehr als diese Anzahl von Einträgen enthält.";
App::$strings["Poll interval"] = "Abfrageintervall";
App::$strings["Delay background polling processes by this many seconds to reduce system load. If 0, use delivery interval."] = "Verzögere Hintergrundprozesse um diese Anzahl Sekunden, um die Systemlast zu reduzieren. Bei 0 wird das Auslieferungsintervall verwendet.";
App::$strings["Path to ImageMagick convert program"] = "Pfad zum ImageMagick-Programm convert";
App::$strings["If set, use this program to generate photo thumbnails for huge images ( > 4000 pixels in either dimension), otherwise memory exhaustion may occur. Example: /usr/bin/convert"] = "Wenn gesetzt, dann verwende dieses Programm zum Erzeugen von Vorschaubildern großer Fotos (>4000 Pixel in beiden Richtungen), anderenfalls kann Speicherüberlauf auftreten. Beispiel: /usr/bin/convert";
+App::$strings["Allow SVG thumbnails in file browser"] = "Erlaube SVG-Vorschaubilder im Dateibrowser";
+App::$strings["WARNING: SVG images may contain malicious code."] = "Warnung: SVG-Grafiken können Schadcode enthalten.";
App::$strings["Maximum Load Average"] = "Maximales Load Average";
App::$strings["Maximum system load before delivery and poll processes are deferred - default 50."] = "Maximale Systemlast, bevor Verteil- und Empfangsprozesse verschoben werden – Standard 50";
App::$strings["Expiration period in days for imported (grid/network) content"] = "Setze den Zeitraum (in Tagen), ab wann importierte (aus dem Netzwerk) Inhalte ablaufen sollen";
@@ -699,6 +713,7 @@ App::$strings["Maximum Friend Requests/Day:"] = "Maximale Kontaktanfragen pro Ta
App::$strings["May reduce spam activity"] = "Kann die Spam-Aktivität verringern";
App::$strings["Default Privacy Group"] = "Standard-Gruppe";
App::$strings["Use my default audience setting for the type of object published"] = "Verwende Deine eingestellte Standard-Zielgruppe des jeweiligen Inhaltstyps";
+App::$strings["Profile to assign new connections"] = "Profil, welches neuen Verbindungen zugewiesen wird";
App::$strings["Channel permissions category:"] = "Zugriffsrechte-Kategorie des Kanals:";
App::$strings["Default Permissions Group"] = "Standard-Berechtigungsgruppe";
App::$strings["Maximum private messages per day from unknown people:"] = "Maximale Anzahl privater Nachrichten pro Tag von unbekannten Leuten:";
@@ -734,6 +749,8 @@ App::$strings["New connections"] = "Neue Verbindungen";
App::$strings["System Registrations"] = "System – Registrierungen";
App::$strings["Unseen shared files"] = "Ungesehene geteilte Dateien";
App::$strings["Unseen public activity"] = "Ungesehene öffentliche Aktivität";
+App::$strings["Email notification hub (hostname)"] = "Hub für E-Mail-Benachrichtigungen (Hostname)";
+App::$strings["If your channel is mirrored to multiple hubs, set this to your preferred location. This will prevent duplicate email notifications. Example: %s"] = "Wenn Dein Kanal auf mehreren Hubs geklont ist, setze die Einstellung auf deinen bevorzugten Hub. Dies verhindert Mehrfachzustellung von E-Mail-Benachrichtigungen. Beispiel: %s";
App::$strings["Also show new wall posts, private messages and connections under Notices"] = "Neue Pinnwand-Nachrichten, private Nachrichten und Verbindungen unter Benachrichtigungen anzeigen";
App::$strings["Notify me of events this many days in advance"] = "Benachrichtige mich zu Terminen so viele Tage im Voraus";
App::$strings["Must be greater than 0"] = "Muss größer als 0 sein";
@@ -799,6 +816,8 @@ App::$strings["Minimum of 10 seconds, no maximum"] = "Minimum 10 Sekunden, kein
App::$strings["Maximum number of conversations to load at any time:"] = "Maximale Anzahl von Unterhaltungen, die auf einmal geladen werden sollen:";
App::$strings["Maximum of 100 items"] = "Maximum: 100 Beiträge";
App::$strings["Show emoticons (smilies) as images"] = "Emoticons (Smilies) als Bilder anzeigen";
+App::$strings["Provide channel menu in navigation bar"] = "Kanal-Menü in der Navigationsleiste zur Verfügung stellen";
+App::$strings["Default: channel menu located in app menu"] = "Voreinstellung: Kanal-Menü ist im App-Menü integriert";
App::$strings["Manual conversation updates"] = "Manuelle Konversationsaktualisierung";
App::$strings["Default is on, turning this off may increase screen jumping"] = "Voreinstellung ist An, dies abzuschalten kann das unerwartete Springen der Seitenanzeige erhöhen.";
App::$strings["Link post titles to source"] = "Beitragstitel zum Originalbeitrag verlinken";
@@ -866,7 +885,6 @@ App::$strings["Authentication failed."] = "Authentifizierung fehlgeschlagen.";
App::$strings["Remote Authentication"] = "Entfernte Authentifizierung";
App::$strings["Enter your channel address (e.g. channel@example.com)"] = "Deine Kanal-Adresse (z. B. channel@example.com)";
App::$strings["Authenticate"] = "Authentifizieren";
-App::$strings["Channel not found."] = "Kanal nicht gefunden.";
App::$strings["Permissions denied."] = "Berechtigung verweigert.";
App::$strings["Import"] = "Import";
App::$strings["Authorize application connection"] = "Zugriff für die Anwendung autorisieren";
@@ -874,8 +892,6 @@ App::$strings["Return to your app and insert this Security Code:"] = "Gehen Sie
App::$strings["Please login to continue."] = "Zum Weitermachen, bitte einloggen.";
App::$strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "Möchtest Du dieser Anwendung erlauben, Deine Nachrichten und Kontakte abzurufen und/oder neue Nachrichten für Dich zu erstellen?";
App::$strings["Item not available."] = "Element nicht verfügbar.";
-App::$strings["Insert web link"] = "Link einfügen";
-App::$strings["Title (optional)"] = "Titel (optional)";
App::$strings["Edit Block"] = "Block bearbeiten";
App::$strings["vcard"] = "VCard";
App::$strings["Apps"] = "Apps";
@@ -1047,6 +1063,7 @@ App::$strings["Layout not found."] = "Layout nicht gefunden.";
App::$strings["Module Name:"] = "Modulname:";
App::$strings["Layout Help"] = "Layout-Hilfe";
App::$strings["Edit another layout"] = "Ein weiteres Layout bearbeiten";
+App::$strings["System layout"] = "System-Layout";
App::$strings["Poke"] = "Anstupsen";
App::$strings["Poke somebody"] = "Jemanden anstupsen";
App::$strings["Poke/Prod"] = "Anstupsen/Knuffen";
@@ -1210,12 +1227,17 @@ App::$strings["Help"] = "Hilfe";
App::$strings["Comanche page description language help"] = "Hilfe zur Comanche-Seitenbeschreibungssprache";
App::$strings["Layout Description"] = "Layout-Beschreibung";
App::$strings["Download PDL file"] = "PDL-Datei herunterladen";
+App::$strings["Unknown error"] = "Unbekannter Fehler";
+App::$strings["Post not found."] = "Beitrag nicht gefunden.";
App::$strings["post"] = "Beitrag";
App::$strings["comment"] = "Kommentar";
App::$strings["%1\$s tagged %2\$s's %3\$s with %4\$s"] = "%1\$s hat %2\$ss %3\$s mit %4\$s verschlagwortet";
App::$strings["This setting requires special processing and editing has been blocked."] = "Diese Einstellung erfordert eine besondere Verarbeitung und ist blockiert.";
App::$strings["Configuration Editor"] = "Konfigurationseditor";
App::$strings["Warning: Changing some settings could render your channel inoperable. Please leave this page unless you are comfortable with and knowledgeable about how to correctly use this feature."] = "Warnung: Einige Einstellungen können Deinen Kanal funktionsunfähig machen. Bitte verlasse diese Seite, es sei denn Du bist vertraut damit, wie dieses Feature korrekt verwendet wird.";
+App::$strings["If enabled, connection requests will be approved without your interaction"] = "Ist dies aktiviert, werden Verbindungsanfragen ohne Deine aktive Zustimmung bestätigt.";
+App::$strings["Automatic approval settings"] = "Einstellungen für automatische Bestätigung";
+App::$strings["Some individual permissions may have been preset or locked based on your channel type and privacy settings."] = "Einige individuelle Berechtigungen können basierend auf Deinen Kanal- und Privatsphäre-Einstellungen vorbelegt oder gesperrt sein.";
App::$strings["Privacy group created."] = "Gruppe wurde erstellt.";
App::$strings["Could not create privacy group."] = "Gruppe konnte nicht erstellt werden.";
App::$strings["Privacy group not found."] = "Gruppe nicht gefunden.";
@@ -1308,7 +1330,6 @@ App::$strings["Make Default"] = "Zum Standard machen";
App::$strings["%d new messages"] = "%d neue Nachrichten";
App::$strings["%d new introductions"] = "%d neue Vorstellungen";
App::$strings["Delegated Channel"] = "Delegierte Kanäle";
-App::$strings["Cards"] = "Karten";
App::$strings["Add Card"] = "Karte hinzufügen";
App::$strings["This directory server requires an access token"] = "Dieser Verzeichnisserver benötigt einen Zugriffstoken";
App::$strings["About this site"] = "Über diese Seite";
@@ -1415,7 +1436,7 @@ App::$strings["Connect"] = "Verbinden";
App::$strings["Public Forum:"] = "Öffentliches Forum:";
App::$strings["Keywords: "] = "Schlüsselwörter:";
App::$strings["Don't suggest"] = "Nicht vorschlagen";
-App::$strings["Common connections:"] = "Gemeinsame Verbindungen:";
+App::$strings["Common connections (estimated):"] = "Gemeinsame Verbindungen (geschätzt):";
App::$strings["Global Directory"] = "Globales Verzeichnis";
App::$strings["Local Directory"] = "Lokales Verzeichnis";
App::$strings["Finding:"] = "Ergebnisse:";
@@ -1484,6 +1505,7 @@ App::$strings["Maximum daily site registrations exceeded. Please try again tomor
App::$strings["Please indicate acceptance of the Terms of Service. Registration failed."] = "Bitte stimme den Nutzungsbedingungen zu. Registrierung fehlgeschlagen.";
App::$strings["Passwords do not match."] = "Passwörter stimmen nicht überein.";
App::$strings["Registration successful. Please check your email for validation instructions."] = "Registrierung erfolgreich. Eine E-Mail mit weiteren Anweisungen wurde an Dich gesendet.";
+App::$strings["Registration successful. Continue to create your first channel..."] = "Registrierung erfolgreich. Fahre fort, indem Du Deinen ersten Kanal anlegst...";
App::$strings["Your registration is pending approval by the site owner."] = "Deine Registrierung muss noch vom Betreiber der Seite freigegeben werden.";
App::$strings["Your registration can not be processed."] = "Deine Registrierung konnte nicht verarbeitet werden.";
App::$strings["Registration on this hub is disabled."] = "Die Registrierung auf diesem Hub ist nicht möglich.";
@@ -1491,7 +1513,7 @@ App::$strings["Registration on this hub is by approval only."] = "Eine Registrie
App::$strings["<a href=\"pubsites\">Register at another affiliated hub.</a>"] = "<a href=\"pubsites\">Registriere Dich auf einem der anderen verbundenen Hubs.</a>";
App::$strings["This site has exceeded the number of allowed daily account registrations. Please try again tomorrow."] = "Die maximale Anzahl täglicher Registrierungen auf diesem Server wurde überschritten. Bitte versuche es morgen noch einmal.";
App::$strings["I accept the %s for this website"] = "Ich akzeptiere die %s für diese Webseite";
-App::$strings["I am over 13 years of age and accept the %s for this website"] = "Ich bin älter als 13 Jahre und akzeptiere die %s dieser Webseite";
+App::$strings["I am over %s years of age and accept the %s for this website"] = "Ich bin älter als %s Jahre und akzeptiere die %s dieser Website.";
App::$strings["Your email address"] = "Ihre E-Mail Adresse";
App::$strings["Choose a password"] = "Passwort";
App::$strings["Please re-enter your password"] = "Bitte gib Dein Passwort noch einmal ein";
@@ -1516,6 +1538,7 @@ App::$strings["Developers"] = "Entwickler";
App::$strings["Tutorials"] = "Tutorials";
App::$strings["\$Projectname Documentation"] = "\$Projectname-Dokumentation";
App::$strings["Contents"] = "Inhalt";
+App::$strings["Article"] = "Artikel";
App::$strings["Item has been removed."] = "Der Beitrag wurde entfernt.";
App::$strings["Tag removed"] = "Schlagwort entfernt";
App::$strings["Remove Item Tag"] = "Schlagwort entfernen";
@@ -1617,6 +1640,8 @@ App::$strings["Purchase"] = "Kaufen";
App::$strings["Undelete"] = "Wieder hergestellt";
App::$strings["Add to app-tray"] = "Zum App-Menü hinzufügen";
App::$strings["Remove from app-tray"] = "Aus dem App-Menü entfernen";
+App::$strings["Pin to navbar"] = "An Navigationsleiste anpinnen";
+App::$strings["Unpin from navbar"] = "Von Navigationsleiste entfernen";
App::$strings["__ctx:permcat__ default"] = "Standard";
App::$strings["__ctx:permcat__ follower"] = "Abonnent";
App::$strings["__ctx:permcat__ contributor"] = "Beitragender";
@@ -1772,7 +1797,6 @@ App::$strings["Shared"] = "Geteilt";
App::$strings["You are using %1\$s of your available file storage."] = "Sie verwenden %1\$s von Ihrem verfügbaren Dateispeicher.";
App::$strings["You are using %1\$s of %2\$s available file storage. (%3\$s&#37;)"] = "Sie verwenden %1\$s von %2\$s verfügbarem Dateispeicher. (%3\$s&#37;)";
App::$strings["WARNING:"] = "WARNUNG:";
-App::$strings["Please use DAV to upload large (video, audio) files.<br>See <a class=\"zrl\" href=\"help/member/member_guide#Cloud_Desktop_Clients\">Cloud Desktop Clients</a>"] = "Bitte verwende DAV, um große Dateien (Audio, Video) hochzuladen.<br>Für weitere Informationen siehe <a class=\"zrl\" href=\"help/member/member_guide#Cloud_Desktop_Clients\">Cloud Desktop Clients</a>";
App::$strings["Create new folder"] = "Neuen Ordner anlegen";
App::$strings["Upload file"] = "Datei hochladen";
App::$strings["Drop files here to immediately upload"] = "Dateien zum sofortigen Hochladen hier fallen lassen";
@@ -1802,6 +1826,8 @@ App::$strings["Events Tools"] = "Kalenderwerkzeuge";
App::$strings["Export Calendar"] = "Kalender exportieren";
App::$strings["Import Calendar"] = "Kalender importieren";
App::$strings["Suggested Chatrooms"] = "Chatraum-Vorschläge";
+App::$strings["HQ Control Panel"] = "HQ-Einstellungen";
+App::$strings["Create a new post"] = "Neuen Beitrag erstellen";
App::$strings["Private Mail Menu"] = "Private Nachrichten";
App::$strings["Combined View"] = "Kombinierte Anzeige";
App::$strings["Inbox"] = "Eingang";
@@ -1830,8 +1856,8 @@ App::$strings["Remove term"] = "Eintrag löschen";
App::$strings["Saved Searches"] = "Gespeicherte Suchanfragen";
App::$strings["add"] = "hinzufügen";
App::$strings["Notes"] = "Notizen";
-App::$strings["Wiki Pages"] = "Wikiseiten";
App::$strings["Add new page"] = "Neue Seite hinzufügen";
+App::$strings["Wiki Pages"] = "Wikiseiten";
App::$strings["Page name"] = "Seitenname";
App::$strings["Refresh"] = "Aktualisieren";
App::$strings["Tasks"] = "Aufgaben";
@@ -1859,6 +1885,7 @@ App::$strings["New Network Activity"] = "Neue Netzwerk-Aktivitäten";
App::$strings["New Network Activity Notifications"] = "Benachrichtigungen für neue Netzwerk-Aktivitäten";
App::$strings["View your network activity"] = "Zeige Deine Netzwerk-Aktivitäten";
App::$strings["Mark all notifications read"] = "Alle Benachrichtigungen als gesehen markieren";
+App::$strings["Show new posts only"] = "Zeige nur neue Beiträge";
App::$strings["New Home Activity"] = "Neue Kanal-Aktivitäten";
App::$strings["New Home Activity Notifications"] = "Benachrichtigungen für neue Kanal-Aktivitäten";
App::$strings["View your home activity"] = "Zeige Deine Kanal-Aktivitäten";
@@ -1876,13 +1903,13 @@ App::$strings["View all connections"] = "Zeige alle Verbindungen";
App::$strings["New Files"] = "Neue Dateien";
App::$strings["New Files Notifications"] = "Benachrichtigungen für neue Dateien";
App::$strings["Notices"] = "Benachrichtigungen";
-App::$strings["View all notices"] = "";
-App::$strings["Mark all notices seen"] = "";
+App::$strings["View all notices"] = "Alle Notizen ansehen";
+App::$strings["Mark all notices seen"] = "Alle Notizen als gesehen markieren";
App::$strings["New Registrations"] = "Neue Registrierungen";
App::$strings["New Registrations Notifications"] = "Benachrichtigungen für neue Registrierungen";
App::$strings["Public Stream Notifications"] = "Benachrichtigungen für öffentlichen Beitrags-Stream";
App::$strings["View the public stream"] = "Zeige öffentlichen Beitrags-Stream";
-App::$strings["Loading..."] = "Lädt ...";
+App::$strings["Loading"] = "Lädt...";
App::$strings["Source channel not found."] = "Quellkanal nicht gefunden.";
App::$strings["Create an account to access services and applications"] = "Erstelle ein Konto, um auf Dienste und Anwendungen zugreifen zu können.";
App::$strings["Logout"] = "Abmelden";
@@ -2013,23 +2040,12 @@ App::$strings["InsaneJournal password"] = "InsaneJournal-Passwort";
App::$strings["Post to InsaneJournal by default"] = "Standardmäßig bei InsaneJournal veröffentlichen";
App::$strings["InsaneJournal Post Settings"] = "InsaneJournal-Beitragseinstellungen";
App::$strings["Insane Journal Settings saved."] = "InsaneJournal-Einstellungen gespeichert.";
-App::$strings["Upload a file"] = "Datei hochladen";
-App::$strings["Drop files here to upload"] = "Dateien zum Hochladen hier fallen lassen";
-App::$strings["Failed"] = "Fehlgeschlagen";
-App::$strings["No files were uploaded."] = "Es wurden keine Dateien hochgeladen.";
-App::$strings["Uploaded file is empty"] = "Hochgeladene Datei ist leer";
-App::$strings["Image exceeds size limit of "] = "Bild überschreitet Größenbeschränkung von ";
-App::$strings["File has an invalid extension, it should be one of "] = "Die Datei hat eine ungültige Endung. Erlaubt sind folgende:";
-App::$strings["Upload was cancelled, or server error encountered"] = "Das Hochladen wurde abgebrochen oder es ist ein Serverfehler aufgetreten.";
App::$strings["Post to Dreamwidth"] = "Bei Dreamwidth veröffentlichen";
App::$strings["Enable Dreamwidth Post Plugin"] = "Aktiviere das Dreamwidth-Plugin";
App::$strings["Dreamwidth username"] = "Dreamwidth-Benutzername";
App::$strings["Dreamwidth password"] = "Dreamwidth-Passwort";
App::$strings["Post to Dreamwidth by default"] = "Standardmäßig auf auf Dreamwidth posten";
App::$strings["Dreamwidth Post Settings"] = "Dreamwidth-Beitragseinstellungen";
-App::$strings["Install Firefox Sharing Tools"] = "Installiere das Firefox Sharing Werkzeug";
-App::$strings["Share content from Firefox to \$Projectname"] = "Inhalte von Firefox nach \$Projectname teilen";
-App::$strings["Install Firefox Sharing Tools to this web browser"] = "Installiere das Firefox Sharing Werkzeug in diesen Webbrowser";
App::$strings["Hubzilla Directory Stats"] = "Hubzilla-Verzeichnisstatistiken";
App::$strings["Total Hubs"] = "Hubs insgesamt";
App::$strings["Hubzilla Hubs"] = "Hubzilla Hubs";
@@ -2044,10 +2060,6 @@ App::$strings["Average Age"] = "Durchschnittsalter";
App::$strings["Known Chatrooms"] = "Bekannte Chaträume";
App::$strings["Known Tags"] = "Bekannte Schlagwörter";
App::$strings["Please note Diaspora and Friendica statistics are merely those **this directory** is aware of, and not all those known in the network. This also applies to chatrooms,"] = "Bitte berücksichtige, dass Diaspora und Friendica Statistiken nur solche einschließen, die **diesem Verzeichnis** bekannt sind, nicht alle im Netzwerk bekannten. Das gilt auch für Chaträume.";
-App::$strings["Email notification hub"] = "Hub für E-Mail-Benachrichtigungen";
-App::$strings["Hostname"] = "Servername";
-App::$strings["Mailhost Settings"] = "Mailhost-Einstellungen";
-App::$strings["MAILHOST Settings saved."] = "MAILHOST-Einstellungen gespeichert.";
App::$strings["Your Webbie:"] = "Dein Webbie";
App::$strings["Fontsize (px):"] = "Schriftgröße (px):";
App::$strings["Link:"] = "Link:";
@@ -2161,20 +2173,25 @@ App::$strings["Show Upload Limits"] = "Hochladebeschränkungen anzeigen";
App::$strings["Hubzilla configured maximum size: "] = "Die in Hubzilla eingestellte maximale Größe:";
App::$strings["PHP upload_max_filesize: "] = "PHP upload_max_filesize:";
App::$strings["PHP post_max_size (must be larger than upload_max_filesize): "] = "PHP post_max_size (muss größer sein als upload_max_filesize):";
-App::$strings["generic profile image"] = "";
-App::$strings["random geometric pattern"] = "";
-App::$strings["monster face"] = "";
-App::$strings["computer generated face"] = "";
+App::$strings["generic profile image"] = "generisches Profilbild";
+App::$strings["random geometric pattern"] = "zufälliges geometrisches Muster";
+App::$strings["monster face"] = "Monstergesicht";
+App::$strings["computer generated face"] = "computergeneriertes Gesicht";
App::$strings["retro arcade style face"] = "";
App::$strings["Hub default profile photo"] = "Standard-Profilfoto für diesen Hub";
App::$strings["Information"] = "Information";
App::$strings["Libravatar addon is installed, too. Please disable Libravatar addon or this Gravatar addon.<br>The Libravatar addon will fall back to Gravatar if nothing was found at Libravatar."] = "";
App::$strings["Save Settings"] = "Einstellungen speichern";
-App::$strings["Default avatar image"] = "";
+App::$strings["Default avatar image"] = "Standard-Avatarbild";
App::$strings["Select default avatar image if none was found at Gravatar. See README"] = "";
-App::$strings["Rating of images"] = "";
+App::$strings["Rating of images"] = "Bewertungen der Bilder";
App::$strings["Select the appropriate avatar rating for your site. See README"] = "";
-App::$strings["Gravatar settings updated."] = "";
+App::$strings["Gravatar settings updated."] = "Gravatar-Einstellungen aktualisiert.";
+App::$strings["Hubzilla File Storage Import"] = "";
+App::$strings["This will import all your cloud files from another server."] = "";
+App::$strings["Hubzilla Server base URL"] = "";
+App::$strings["Since modified date yyyy-mm-dd"] = "";
+App::$strings["Until modified date yyyy-mm-dd"] = "";
App::$strings["Recent Channel/Profile Viewers"] = "Kürzliche Kanal/Profil Besucher";
App::$strings["This plugin/addon has not been configured."] = "Dieses Plugin/Addon wurde noch nicht konfiguriert.";
App::$strings["Please visit the Visage settings on %s"] = "Bitte rufe die Visage Einstellungen auf %s auf";
@@ -2255,6 +2272,8 @@ App::$strings["ActivityPub"] = "ActivityPub";
App::$strings["ActivityPub Protocol Settings updated."] = "";
App::$strings["The ActivityPub protocol does not support location independence. Connections you make within that network may be unreachable from alternate channel locations."] = "";
App::$strings["Enable the ActivityPub protocol for this channel"] = "";
+App::$strings["Send multi-media HTML articles"] = "";
+App::$strings["Not supported by some microblog services such as Mastodon"] = "";
App::$strings["ActivityPub Protocol Settings"] = "";
App::$strings["Project Servers and Resources"] = "Projektserver und -ressourcen";
App::$strings["Project Creator and Tech Lead"] = "Projektersteller und Technischer Leiter";
@@ -2542,6 +2561,8 @@ App::$strings["Uncertain"] = "Ungewiss";
App::$strings["It's complicated"] = "Es ist kompliziert";
App::$strings["Don't care"] = "Interessiert mich nicht";
App::$strings["Ask me"] = "Frag mich mal";
+App::$strings["likes %1\$s's %2\$s"] = "";
+App::$strings["doesn't like %1\$s's %2\$s"] = "";
App::$strings["%1\$s is now connected with %2\$s"] = "%1\$s ist jetzt mit %2\$s verbunden";
App::$strings["%1\$s poked %2\$s"] = "%1\$s stupste %2\$s an";
App::$strings["poked"] = "stupste";
@@ -2550,6 +2571,7 @@ App::$strings["Categories:"] = "Kategorien:";
App::$strings["Filed under:"] = "Gespeichert unter:";
App::$strings["View in context"] = "Im Zusammenhang anschauen";
App::$strings["remove"] = "lösche";
+App::$strings["Loading..."] = "Lädt ...";
App::$strings["Delete Selected Items"] = "Lösche die ausgewählten Elemente";
App::$strings["View Source"] = "Quelle anzeigen";
App::$strings["Follow Thread"] = "Unterhaltung folgen";
@@ -2605,7 +2627,9 @@ App::$strings["Photo Albums"] = "Fotoalben";
App::$strings["Files and Storage"] = "Dateien und Speicher";
App::$strings["Bookmarks"] = "Lesezeichen";
App::$strings["Saved Bookmarks"] = "Gespeicherte Lesezeichen";
-App::$strings["View Cards"] = "";
+App::$strings["View Cards"] = "Karten anzeigen";
+App::$strings["articles"] = "Artikel";
+App::$strings["View Articles"] = "Artikel anzeigen";
App::$strings["View Webpages"] = "Webseiten anzeigen";
App::$strings["__ctx:noun__ Attending"] = array(
0 => "Zusage",
@@ -2705,12 +2729,12 @@ App::$strings["Download binary/encrypted content"] = "Binären/verschlüsselten
App::$strings["default"] = "Standard";
App::$strings["Page layout"] = "Seiten-Layout";
App::$strings["You can create your own with the layouts tool"] = "Mit dem Gestaltungswerkzeug kannst Du Deine eigenen Layouts erstellen";
-App::$strings["HTML"] = "";
-App::$strings["Comanche Layout"] = "";
-App::$strings["PHP"] = "";
+App::$strings["HTML"] = "HTML";
+App::$strings["Comanche Layout"] = "Comanche-Layout";
+App::$strings["PHP"] = "PHP";
App::$strings["Page content type"] = "Art des Seiteninhalts";
App::$strings["activity"] = "Aktivität";
-App::$strings["a-z, 0-9, -, and _ only"] = "";
+App::$strings["a-z, 0-9, -, and _ only"] = "nur a-z, 0-9, - und _";
App::$strings["Design Tools"] = "Gestaltungswerkzeuge";
App::$strings["Pages"] = "Seiten";
App::$strings["Import website..."] = "Webseite importieren...";
@@ -2739,14 +2763,14 @@ App::$strings["Examples: Robert Morgenstein, Fishing"] = "Beispiele: Robert Morg
App::$strings["Random Profile"] = "Zufallsprofil";
App::$strings["Invite Friends"] = "Lade Freunde ein";
App::$strings["Advanced example: name=fred and country=iceland"] = "Fortgeschrittenes Beispiel: name=fred and country=iceland";
-App::$strings["Common Connections"] = "";
-App::$strings["View all %d common connections"] = "";
+App::$strings["Common Connections"] = "Gemeinsame Verbindungen";
+App::$strings["View all %d common connections"] = "Zeige alle %d gemeinsamen Verbindungen";
App::$strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s schrieb den folgenden %2\$s %3\$s";
App::$strings["Channel is blocked on this site."] = "Der Kanal ist auf dieser Seite blockiert ";
App::$strings["Channel location missing."] = "Adresse des Kanals fehlt.";
App::$strings["Response from remote channel was incomplete."] = "Antwort des entfernten Kanals war unvollständig.";
App::$strings["Channel was deleted and no longer exists."] = "Kanal wurde gelöscht und existiert nicht mehr.";
-App::$strings["Remote channel or protocol unavailable."] = "";
+App::$strings["Remote channel or protocol unavailable."] = "Externer Kanal oder Protokoll nicht verfügbar.";
App::$strings["Channel discovery failed."] = "Kanalsuche fehlgeschlagen";
App::$strings["Protocol disabled."] = "Protokoll deaktiviert.";
App::$strings["Cannot connect to yourself."] = "Du kannst Dich nicht mit Dir selbst verbinden.";
@@ -2919,9 +2943,10 @@ App::$strings["Post permissions %s cannot be changed %s after a post is shared.<
App::$strings["Cannot locate DNS info for database server '%s'"] = "Kann die DNS-Informationen für den Datenbank-Server '%s' nicht finden";
App::$strings["Image/photo"] = "Bild/Foto";
App::$strings["Encrypted content"] = "Verschlüsselter Inhalt";
-App::$strings["Install %s element: "] = "Element %s installieren: ";
+App::$strings["Install %1\$s element %2\$s"] = "";
App::$strings["This post contains an installable %s element, however you lack permissions to install it on this site."] = "Dieser Beitrag beinhaltet ein installierbares %s Element, aber Du hast nicht die nötigen Rechte, um es auf diesem Hub zu installieren.";
App::$strings["card"] = "Karte";
+App::$strings["article"] = "Artikel";
App::$strings["Click to open/close"] = "Klicke zum Öffnen/Schließen";
App::$strings["spoiler"] = "Spoiler";
App::$strings["$1 wrote:"] = "$1 schrieb:";
@@ -2929,7 +2954,7 @@ App::$strings[" by "] = "von";
App::$strings[" on "] = "am";
App::$strings["Embedded content"] = "Eingebetteter Inhalt";
App::$strings["Embedding disabled"] = "Einbetten deaktiviert";
-App::$strings["OpenWebAuth: %1\$s welcomes %2\$s"] = "";
+App::$strings["OpenWebAuth: %1\$s welcomes %2\$s"] = "OpenWebAuth: %1\$s heißt %2\$s willkommen";
App::$strings["General Features"] = "Allgemeine Funktionen";
App::$strings["Multiple Profiles"] = "Mehrfachprofile";
App::$strings["Ability to create multiple profiles"] = "Ermöglicht das Anlegen mehrerer Profile pro Kanal";
@@ -2990,6 +3015,7 @@ App::$strings["Show friend and connection suggestions"] = "Freund- und Verbindun
App::$strings["Connection Filtering"] = "Filter für Verbindungen";
App::$strings["Filter incoming posts from connections based on keywords/content"] = "Ermöglicht die Filterung eingehender Beiträge anhand von Schlüsselwörtern (muss an der Verbindung konfiguriert werden)";
App::$strings["Post/Comment Tools"] = "Beitrag-/Kommentar-Tools";
+App::$strings["Use markdown for editing posts"] = "Verwende Markdown zum Bearbeiten von Beiträgen";
App::$strings["Community Tagging"] = "Gemeinschaftliches Verschlagworten";
App::$strings["Ability to tag existing posts"] = "Ermöglicht das Verschlagworten existierender Beiträge";
App::$strings["Post Categories"] = "Beitrags-Kategorien";
diff --git a/view/es-es/hmessages.po b/view/es-es/hmessages.po
index 67be6a829..8f6b8cb4e 100644
--- a/view/es-es/hmessages.po
+++ b/view/es-es/hmessages.po
@@ -5,17 +5,18 @@
# Translators:
# alfonsomthd <alfonsomthd@tutanota.com>, 2015
# inboxwall <axetransit@gmail.com>, 2015
-# jeroenpraat <social@jeroenvanrietpaap.nl>, 2015
-# Manuel Jiménez Friaza <mjfriaza@openmailbox.org>, 2015-2017
+# jeroenpraat <jeroenpraat@disroot.org>, 2015
+# Manuel Jiménez Friaza <mjfriaza@disroot.org>, 2017
+# Manuel Jiménez Friaza <mjfriaza@disroot.org>, 2015-2017
# Rafael, 2015
# tony baldwin <tonybaldwin@gmx.com>, 2014
msgid ""
msgstr ""
"Project-Id-Version: Redmatrix\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-19 12:01+0200\n"
-"PO-Revision-Date: 2017-10-28 10:20+0000\n"
-"Last-Translator: Manuel Jiménez Friaza <mjfriaza@openmailbox.org>\n"
+"POT-Creation-Date: 2017-12-13 12:54+0100\n"
+"PO-Revision-Date: 2017-12-16 09:43+0000\n"
+"Last-Translator: Manuel Jiménez Friaza <mjfriaza@disroot.org>\n"
"Language-Team: Spanish (Spain) (http://www.transifex.com/Friendica/red-matrix/language/es_ES/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -23,168 +24,169 @@ msgstr ""
"Language: es_ES\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../../Zotlabs/Access/Permissions.php:53
+#: ../../Zotlabs/Access/Permissions.php:56
msgid "Can view my channel stream and posts"
msgstr "Pueden verse la actividad y publicaciones de mi canal"
-#: ../../Zotlabs/Access/Permissions.php:54
+#: ../../Zotlabs/Access/Permissions.php:57
msgid "Can send me their channel stream and posts"
msgstr "Se me pueden enviar entradas y contenido de un canal"
-#: ../../Zotlabs/Access/Permissions.php:55
+#: ../../Zotlabs/Access/Permissions.php:58
msgid "Can view my default channel profile"
msgstr "Puede verse mi perfil de canal predeterminado."
-#: ../../Zotlabs/Access/Permissions.php:56
+#: ../../Zotlabs/Access/Permissions.php:59
msgid "Can view my connections"
msgstr "Pueden verse mis conexiones"
-#: ../../Zotlabs/Access/Permissions.php:57
+#: ../../Zotlabs/Access/Permissions.php:60
msgid "Can view my file storage and photos"
msgstr "Pueden verse mi repositorio de ficheros y mis fotos"
-#: ../../Zotlabs/Access/Permissions.php:58
+#: ../../Zotlabs/Access/Permissions.php:61
msgid "Can upload/modify my file storage and photos"
msgstr "Se pueden subir / modificar elementos en mi repositorio de ficheros y fotos"
-#: ../../Zotlabs/Access/Permissions.php:59
+#: ../../Zotlabs/Access/Permissions.php:62
msgid "Can view my channel webpages"
msgstr "Pueden verse las páginas personales de mi canal"
-#: ../../Zotlabs/Access/Permissions.php:60
+#: ../../Zotlabs/Access/Permissions.php:63
msgid "Can view my wiki pages"
msgstr "Pueden verse mis páginas wiki"
-#: ../../Zotlabs/Access/Permissions.php:61
+#: ../../Zotlabs/Access/Permissions.php:64
msgid "Can create/edit my channel webpages"
msgstr "Pueden crearse / modificarse páginas personales en mi canal"
-#: ../../Zotlabs/Access/Permissions.php:62
+#: ../../Zotlabs/Access/Permissions.php:65
msgid "Can write to my wiki pages"
msgstr "Se pueden modificar las páginas de mi wiki"
-#: ../../Zotlabs/Access/Permissions.php:63
+#: ../../Zotlabs/Access/Permissions.php:66
msgid "Can post on my channel (wall) page"
msgstr "Pueden crearse entradas en mi página de inicio del canal (“muro”)"
-#: ../../Zotlabs/Access/Permissions.php:64
+#: ../../Zotlabs/Access/Permissions.php:67
msgid "Can comment on or like my posts"
msgstr "Pueden publicarse comentarios en mis publicaciones o marcar mis entradas con 'me gusta'."
-#: ../../Zotlabs/Access/Permissions.php:65
+#: ../../Zotlabs/Access/Permissions.php:68
msgid "Can send me private mail messages"
msgstr "Se me pueden enviar mensajes privados"
-#: ../../Zotlabs/Access/Permissions.php:66
+#: ../../Zotlabs/Access/Permissions.php:69
msgid "Can like/dislike profiles and profile things"
msgstr "Se puede mostrar agrado o desagrado (Me gusta / No me gusta) en mis perfiles y sus distintos apartados"
-#: ../../Zotlabs/Access/Permissions.php:67
+#: ../../Zotlabs/Access/Permissions.php:70
msgid "Can forward to all my channel connections via @+ mentions in posts"
msgstr "Pueden reenviarse publicaciones a todas las conexiones de mi canal a través de @+ menciones en las entradas"
-#: ../../Zotlabs/Access/Permissions.php:68
+#: ../../Zotlabs/Access/Permissions.php:71
msgid "Can chat with me"
msgstr "Se puede chatear conmigo"
-#: ../../Zotlabs/Access/Permissions.php:69
+#: ../../Zotlabs/Access/Permissions.php:72
msgid "Can source my public posts in derived channels"
msgstr "Pueden utilizarse mis entradas públicas como origen de contenidos en canales derivados"
-#: ../../Zotlabs/Access/Permissions.php:70
+#: ../../Zotlabs/Access/Permissions.php:73
msgid "Can administer my channel"
msgstr "Se puede administrar mi canal"
-#: ../../Zotlabs/Access/PermissionRoles.php:248
+#: ../../Zotlabs/Access/PermissionRoles.php:265
msgid "Social Networking"
msgstr "Redes sociales"
-#: ../../Zotlabs/Access/PermissionRoles.php:249
+#: ../../Zotlabs/Access/PermissionRoles.php:266
msgid "Social - Mostly Public"
msgstr "Social - Público en su mayor parte"
-#: ../../Zotlabs/Access/PermissionRoles.php:250
+#: ../../Zotlabs/Access/PermissionRoles.php:267
msgid "Social - Restricted"
msgstr "Social - Restringido"
-#: ../../Zotlabs/Access/PermissionRoles.php:251
+#: ../../Zotlabs/Access/PermissionRoles.php:268
msgid "Social - Private"
msgstr "Social - Privado"
-#: ../../Zotlabs/Access/PermissionRoles.php:254
+#: ../../Zotlabs/Access/PermissionRoles.php:271
msgid "Community Forum"
msgstr "Foro de discusión"
-#: ../../Zotlabs/Access/PermissionRoles.php:255
+#: ../../Zotlabs/Access/PermissionRoles.php:272
msgid "Forum - Mostly Public"
msgstr "Foro - Público en su mayor parte"
-#: ../../Zotlabs/Access/PermissionRoles.php:256
+#: ../../Zotlabs/Access/PermissionRoles.php:273
msgid "Forum - Restricted"
msgstr "Foro - Restringido"
-#: ../../Zotlabs/Access/PermissionRoles.php:257
+#: ../../Zotlabs/Access/PermissionRoles.php:274
msgid "Forum - Private"
msgstr "Foro - Privado"
-#: ../../Zotlabs/Access/PermissionRoles.php:260
+#: ../../Zotlabs/Access/PermissionRoles.php:277
msgid "Feed Republish"
msgstr "Republicar un \"feed\""
-#: ../../Zotlabs/Access/PermissionRoles.php:261
+#: ../../Zotlabs/Access/PermissionRoles.php:278
msgid "Feed - Mostly Public"
msgstr "Feed - Público en su mayor parte"
-#: ../../Zotlabs/Access/PermissionRoles.php:262
+#: ../../Zotlabs/Access/PermissionRoles.php:279
msgid "Feed - Restricted"
msgstr "Feed - Restringido"
-#: ../../Zotlabs/Access/PermissionRoles.php:265
+#: ../../Zotlabs/Access/PermissionRoles.php:282
msgid "Special Purpose"
msgstr "Propósito especial"
-#: ../../Zotlabs/Access/PermissionRoles.php:266
+#: ../../Zotlabs/Access/PermissionRoles.php:283
msgid "Special - Celebrity/Soapbox"
msgstr "Especial - Celebridad / Tribuna improvisada"
-#: ../../Zotlabs/Access/PermissionRoles.php:267
+#: ../../Zotlabs/Access/PermissionRoles.php:284
msgid "Special - Group Repository"
msgstr "Especial - Repositorio de grupo"
-#: ../../Zotlabs/Access/PermissionRoles.php:270
+#: ../../Zotlabs/Access/PermissionRoles.php:287
#: ../../Zotlabs/Module/Cdav.php:1182 ../../Zotlabs/Module/New_channel.php:132
-#: ../../Zotlabs/Module/Settings/Channel.php:467
+#: ../../Zotlabs/Module/Settings/Channel.php:474
#: ../../Zotlabs/Module/Connedit.php:936 ../../Zotlabs/Module/Profiles.php:798
-#: ../../Zotlabs/Module/Register.php:213 ../../include/selectors.php:49
+#: ../../Zotlabs/Module/Register.php:221 ../../include/selectors.php:49
#: ../../include/selectors.php:66 ../../include/selectors.php:104
-#: ../../include/selectors.php:140 ../../include/event.php:1297
-#: ../../include/event.php:1304 ../../include/connections.php:689
+#: ../../include/selectors.php:140 ../../include/event.php:1308
+#: ../../include/event.php:1315 ../../include/connections.php:689
#: ../../include/connections.php:696
msgid "Other"
msgstr "Otro"
-#: ../../Zotlabs/Access/PermissionRoles.php:271
+#: ../../Zotlabs/Access/PermissionRoles.php:288
msgid "Custom/Expert Mode"
msgstr "Modo personalizado/experto"
-#: ../../Zotlabs/Module/Blocks.php:33 ../../Zotlabs/Module/Editlayout.php:31
-#: ../../Zotlabs/Module/Connect.php:17
+#: ../../Zotlabs/Module/Blocks.php:33 ../../Zotlabs/Module/Articles.php:29
+#: ../../Zotlabs/Module/Editlayout.php:31 ../../Zotlabs/Module/Connect.php:17
#: ../../Zotlabs/Module/Achievements.php:15 ../../Zotlabs/Module/Hcard.php:12
#: ../../Zotlabs/Module/Editblock.php:31 ../../Zotlabs/Module/Profile.php:20
#: ../../Zotlabs/Module/Layouts.php:31 ../../Zotlabs/Module/Editwebpage.php:32
#: ../../Zotlabs/Module/Cards.php:29 ../../Zotlabs/Module/Webpages.php:33
-#: ../../Zotlabs/Module/Filestorage.php:51 ../../include/channel.php:1163
+#: ../../Zotlabs/Module/Filestorage.php:51 ../../include/channel.php:1198
msgid "Requested profile is not available."
msgstr "El perfil solicitado no está disponible."
#: ../../Zotlabs/Module/Blocks.php:73 ../../Zotlabs/Module/Blocks.php:80
#: ../../Zotlabs/Module/Invite.php:17 ../../Zotlabs/Module/Invite.php:94
-#: ../../Zotlabs/Module/Editlayout.php:67
+#: ../../Zotlabs/Module/Articles.php:68 ../../Zotlabs/Module/Editlayout.php:67
#: ../../Zotlabs/Module/Editlayout.php:90 ../../Zotlabs/Module/Channel.php:110
#: ../../Zotlabs/Module/Channel.php:248 ../../Zotlabs/Module/Channel.php:288
#: ../../Zotlabs/Module/Settings.php:59 ../../Zotlabs/Module/Locs.php:87
#: ../../Zotlabs/Module/Mitem.php:115 ../../Zotlabs/Module/Events.php:271
-#: ../../Zotlabs/Module/Appman.php:82 ../../Zotlabs/Module/Regmod.php:21
+#: ../../Zotlabs/Module/Appman.php:86 ../../Zotlabs/Module/Regmod.php:21
+#: ../../Zotlabs/Module/Article_edit.php:51
#: ../../Zotlabs/Module/New_channel.php:77
#: ../../Zotlabs/Module/New_channel.php:104
#: ../../Zotlabs/Module/Sharedwithme.php:16 ../../Zotlabs/Module/Setup.php:209
@@ -196,19 +198,19 @@ msgstr "El perfil solicitado no está disponible."
#: ../../Zotlabs/Module/Mood.php:116 ../../Zotlabs/Module/Connections.php:29
#: ../../Zotlabs/Module/Viewsrc.php:19 ../../Zotlabs/Module/Bookmarks.php:64
#: ../../Zotlabs/Module/Photos.php:69 ../../Zotlabs/Module/Wiki.php:50
-#: ../../Zotlabs/Module/Wiki.php:273 ../../Zotlabs/Module/Wiki.php:388
+#: ../../Zotlabs/Module/Wiki.php:273 ../../Zotlabs/Module/Wiki.php:400
#: ../../Zotlabs/Module/Pdledit.php:29 ../../Zotlabs/Module/Poke.php:149
-#: ../../Zotlabs/Module/Profile_photo.php:288
-#: ../../Zotlabs/Module/Profile_photo.php:301
-#: ../../Zotlabs/Module/Authtest.php:16 ../../Zotlabs/Module/Item.php:223
-#: ../../Zotlabs/Module/Item.php:240 ../../Zotlabs/Module/Item.php:250
-#: ../../Zotlabs/Module/Item.php:1102 ../../Zotlabs/Module/Page.php:34
-#: ../../Zotlabs/Module/Page.php:125 ../../Zotlabs/Module/Connedit.php:389
+#: ../../Zotlabs/Module/Profile_photo.php:294
+#: ../../Zotlabs/Module/Profile_photo.php:307
+#: ../../Zotlabs/Module/Authtest.php:16 ../../Zotlabs/Module/Item.php:228
+#: ../../Zotlabs/Module/Item.php:245 ../../Zotlabs/Module/Item.php:255
+#: ../../Zotlabs/Module/Item.php:1085 ../../Zotlabs/Module/Page.php:34
+#: ../../Zotlabs/Module/Page.php:133 ../../Zotlabs/Module/Connedit.php:389
#: ../../Zotlabs/Module/Chat.php:100 ../../Zotlabs/Module/Chat.php:105
#: ../../Zotlabs/Module/Menu.php:78 ../../Zotlabs/Module/Layouts.php:71
#: ../../Zotlabs/Module/Layouts.php:78 ../../Zotlabs/Module/Layouts.php:89
-#: ../../Zotlabs/Module/Group.php:13 ../../Zotlabs/Module/Profiles.php:198
-#: ../../Zotlabs/Module/Profiles.php:635
+#: ../../Zotlabs/Module/Defperms.php:173 ../../Zotlabs/Module/Group.php:13
+#: ../../Zotlabs/Module/Profiles.php:198 ../../Zotlabs/Module/Profiles.php:635
#: ../../Zotlabs/Module/Editwebpage.php:68
#: ../../Zotlabs/Module/Editwebpage.php:89
#: ../../Zotlabs/Module/Editwebpage.php:107
@@ -216,32 +218,32 @@ msgstr "El perfil solicitado no está disponible."
#: ../../Zotlabs/Module/Cards.php:68 ../../Zotlabs/Module/Webpages.php:118
#: ../../Zotlabs/Module/Block.php:24 ../../Zotlabs/Module/Block.php:74
#: ../../Zotlabs/Module/Editpost.php:17 ../../Zotlabs/Module/Sources.php:74
-#: ../../Zotlabs/Module/Like.php:181 ../../Zotlabs/Module/Suggest.php:28
+#: ../../Zotlabs/Module/Like.php:184 ../../Zotlabs/Module/Suggest.php:28
#: ../../Zotlabs/Module/Message.php:18 ../../Zotlabs/Module/Mail.php:146
#: ../../Zotlabs/Module/Register.php:77
#: ../../Zotlabs/Module/Cover_photo.php:281
#: ../../Zotlabs/Module/Cover_photo.php:294
-#: ../../Zotlabs/Module/Display.php:343 ../../Zotlabs/Module/Network.php:15
+#: ../../Zotlabs/Module/Display.php:404 ../../Zotlabs/Module/Network.php:15
#: ../../Zotlabs/Module/Filestorage.php:15
#: ../../Zotlabs/Module/Filestorage.php:70
#: ../../Zotlabs/Module/Filestorage.php:85
-#: ../../Zotlabs/Module/Filestorage.php:112 ../../Zotlabs/Module/Common.php:38
+#: ../../Zotlabs/Module/Filestorage.php:117 ../../Zotlabs/Module/Common.php:38
#: ../../Zotlabs/Module/Viewconnections.php:28
#: ../../Zotlabs/Module/Viewconnections.php:33
#: ../../Zotlabs/Module/Service_limits.php:11
#: ../../Zotlabs/Module/Rate.php:113 ../../Zotlabs/Module/Card_edit.php:51
#: ../../Zotlabs/Module/Notifications.php:11
-#: ../../Zotlabs/Lib/Chatroom.php:137 ../../Zotlabs/Web/WebServer.php:169
+#: ../../Zotlabs/Lib/Chatroom.php:133 ../../Zotlabs/Web/WebServer.php:169
#: ../../addon/keepout/keepout.php:36 ../../addon/openid/Mod_Id.php:53
#: ../../addon/gitwiki/Mod_Gitwiki.php:196
#: ../../addon/gitwiki/Mod_Gitwiki.php:292 ../../addon/pumpio/pumpio.php:40
-#: ../../include/attach.php:144 ../../include/attach.php:191
-#: ../../include/attach.php:255 ../../include/attach.php:269
-#: ../../include/attach.php:276 ../../include/attach.php:344
-#: ../../include/attach.php:358 ../../include/attach.php:365
-#: ../../include/attach.php:443 ../../include/attach.php:924
-#: ../../include/attach.php:998 ../../include/attach.php:1163
-#: ../../include/items.php:3489 ../../include/photos.php:28
+#: ../../include/attach.php:150 ../../include/attach.php:197
+#: ../../include/attach.php:270 ../../include/attach.php:284
+#: ../../include/attach.php:293 ../../include/attach.php:366
+#: ../../include/attach.php:380 ../../include/attach.php:387
+#: ../../include/attach.php:469 ../../include/attach.php:1008
+#: ../../include/attach.php:1082 ../../include/attach.php:1247
+#: ../../include/items.php:3633 ../../include/photos.php:27
msgid "Permission denied."
msgstr "Acceso denegado."
@@ -268,58 +270,60 @@ msgstr "Creado"
msgid "Edited"
msgstr "Editado"
-#: ../../Zotlabs/Module/Blocks.php:159 ../../Zotlabs/Module/Cdav.php:1185
-#: ../../Zotlabs/Module/New_channel.php:147
+#: ../../Zotlabs/Module/Blocks.php:159 ../../Zotlabs/Module/Articles.php:96
+#: ../../Zotlabs/Module/Cdav.php:1185 ../../Zotlabs/Module/New_channel.php:147
#: ../../Zotlabs/Module/Connedit.php:939 ../../Zotlabs/Module/Menu.php:118
#: ../../Zotlabs/Module/Layouts.php:185 ../../Zotlabs/Module/Profiles.php:801
#: ../../Zotlabs/Module/Cards.php:96 ../../Zotlabs/Module/Webpages.php:239
-#: ../../Zotlabs/Storage/Browser.php:229 ../../Zotlabs/Storage/Browser.php:335
-#: ../../Zotlabs/Widget/Cdav.php:127 ../../Zotlabs/Widget/Cdav.php:164
+#: ../../Zotlabs/Storage/Browser.php:273 ../../Zotlabs/Storage/Browser.php:379
+#: ../../Zotlabs/Widget/Cdav.php:128 ../../Zotlabs/Widget/Cdav.php:165
msgid "Create"
msgstr "Crear"
#: ../../Zotlabs/Module/Blocks.php:160 ../../Zotlabs/Module/Editlayout.php:114
+#: ../../Zotlabs/Module/Article_edit.php:99
#: ../../Zotlabs/Module/Admin/Profs.php:154
#: ../../Zotlabs/Module/Settings/Oauth.php:149
#: ../../Zotlabs/Module/Thing.php:261 ../../Zotlabs/Module/Editblock.php:114
#: ../../Zotlabs/Module/Connections.php:260
#: ../../Zotlabs/Module/Connections.php:297
#: ../../Zotlabs/Module/Connections.php:317 ../../Zotlabs/Module/Wiki.php:202
-#: ../../Zotlabs/Module/Wiki.php:346 ../../Zotlabs/Module/Menu.php:112
+#: ../../Zotlabs/Module/Wiki.php:358 ../../Zotlabs/Module/Menu.php:112
#: ../../Zotlabs/Module/Layouts.php:193
#: ../../Zotlabs/Module/Editwebpage.php:142
#: ../../Zotlabs/Module/Webpages.php:240 ../../Zotlabs/Module/Editpost.php:85
#: ../../Zotlabs/Module/Card_edit.php:99 ../../Zotlabs/Lib/Apps.php:399
-#: ../../Zotlabs/Lib/ThreadItem.php:111 ../../Zotlabs/Storage/Browser.php:239
-#: ../../Zotlabs/Widget/Cdav.php:125 ../../Zotlabs/Widget/Cdav.php:161
+#: ../../Zotlabs/Lib/ThreadItem.php:121 ../../Zotlabs/Storage/Browser.php:285
+#: ../../Zotlabs/Widget/Cdav.php:126 ../../Zotlabs/Widget/Cdav.php:162
#: ../../addon/gitwiki/Mod_Gitwiki.php:151
-#: ../../addon/gitwiki/Mod_Gitwiki.php:252 ../../include/channel.php:1262
-#: ../../include/channel.php:1266 ../../include/menu.php:113
+#: ../../addon/gitwiki/Mod_Gitwiki.php:252 ../../include/channel.php:1297
+#: ../../include/channel.php:1301 ../../include/menu.php:113
msgid "Edit"
msgstr "Editar"
-#: ../../Zotlabs/Module/Blocks.php:161 ../../Zotlabs/Module/Photos.php:1049
+#: ../../Zotlabs/Module/Blocks.php:161 ../../Zotlabs/Module/Photos.php:1102
#: ../../Zotlabs/Module/Layouts.php:194 ../../Zotlabs/Module/Webpages.php:241
-#: ../../Zotlabs/Widget/Cdav.php:123 ../../include/conversation.php:1346
+#: ../../Zotlabs/Widget/Cdav.php:124 ../../include/conversation.php:1363
msgid "Share"
msgstr "Compartir"
#: ../../Zotlabs/Module/Blocks.php:162 ../../Zotlabs/Module/Editlayout.php:138
#: ../../Zotlabs/Module/Cdav.php:897 ../../Zotlabs/Module/Cdav.php:1187
+#: ../../Zotlabs/Module/Article_edit.php:129
#: ../../Zotlabs/Module/Admin/Accounts.php:173
#: ../../Zotlabs/Module/Admin/Channels.php:149
#: ../../Zotlabs/Module/Admin/Profs.php:155
#: ../../Zotlabs/Module/Settings/Oauth.php:150
#: ../../Zotlabs/Module/Thing.php:262 ../../Zotlabs/Module/Editblock.php:139
#: ../../Zotlabs/Module/Connections.php:268
-#: ../../Zotlabs/Module/Photos.php:1150 ../../Zotlabs/Module/Connedit.php:654
+#: ../../Zotlabs/Module/Photos.php:1203 ../../Zotlabs/Module/Connedit.php:654
#: ../../Zotlabs/Module/Connedit.php:941 ../../Zotlabs/Module/Group.php:179
#: ../../Zotlabs/Module/Profiles.php:803
#: ../../Zotlabs/Module/Editwebpage.php:167
#: ../../Zotlabs/Module/Webpages.php:242
#: ../../Zotlabs/Module/Card_edit.php:129 ../../Zotlabs/Lib/Apps.php:400
-#: ../../Zotlabs/Lib/ThreadItem.php:131 ../../Zotlabs/Storage/Browser.php:240
-#: ../../include/conversation.php:674 ../../include/conversation.php:717
+#: ../../Zotlabs/Lib/ThreadItem.php:141 ../../Zotlabs/Storage/Browser.php:286
+#: ../../include/conversation.php:690 ../../include/conversation.php:733
msgid "Delete"
msgstr "Eliminar"
@@ -402,7 +406,7 @@ msgstr "3. Pulse [conectar]"
#: ../../Zotlabs/Module/Invite.php:151 ../../Zotlabs/Module/Locs.php:121
#: ../../Zotlabs/Module/Mitem.php:243 ../../Zotlabs/Module/Events.php:493
-#: ../../Zotlabs/Module/Appman.php:148
+#: ../../Zotlabs/Module/Appman.php:152
#: ../../Zotlabs/Module/Import_items.php:129
#: ../../Zotlabs/Module/Setup.php:308 ../../Zotlabs/Module/Setup.php:349
#: ../../Zotlabs/Module/Connect.php:98
@@ -412,59 +416,60 @@ msgstr "3. Pulse [conectar]"
#: ../../Zotlabs/Module/Admin/Logs.php:84
#: ../../Zotlabs/Module/Admin/Channels.php:147
#: ../../Zotlabs/Module/Admin/Themes.php:158
-#: ../../Zotlabs/Module/Admin/Site.php:273
+#: ../../Zotlabs/Module/Admin/Site.php:277
#: ../../Zotlabs/Module/Admin/Profs.php:157
#: ../../Zotlabs/Module/Admin/Account_edit.php:74
#: ../../Zotlabs/Module/Admin/Security.php:104
#: ../../Zotlabs/Module/Settings/Permcats.php:110
-#: ../../Zotlabs/Module/Settings/Channel.php:480
+#: ../../Zotlabs/Module/Settings/Channel.php:489
#: ../../Zotlabs/Module/Settings/Features.php:47
#: ../../Zotlabs/Module/Settings/Tokens.php:168
#: ../../Zotlabs/Module/Settings/Account.php:118
#: ../../Zotlabs/Module/Settings/Featured.php:52
-#: ../../Zotlabs/Module/Settings/Display.php:207
+#: ../../Zotlabs/Module/Settings/Display.php:209
#: ../../Zotlabs/Module/Settings/Oauth.php:87
#: ../../Zotlabs/Module/Thing.php:321 ../../Zotlabs/Module/Thing.php:374
-#: ../../Zotlabs/Module/Import.php:529 ../../Zotlabs/Module/Cal.php:343
-#: ../../Zotlabs/Module/Mood.php:139 ../../Zotlabs/Module/Photos.php:659
-#: ../../Zotlabs/Module/Photos.php:1029 ../../Zotlabs/Module/Photos.php:1069
-#: ../../Zotlabs/Module/Photos.php:1187 ../../Zotlabs/Module/Wiki.php:206
-#: ../../Zotlabs/Module/Pdledit.php:94 ../../Zotlabs/Module/Poke.php:200
-#: ../../Zotlabs/Module/Connedit.php:904 ../../Zotlabs/Module/Chat.php:196
-#: ../../Zotlabs/Module/Chat.php:242 ../../Zotlabs/Module/Pconfig.php:107
+#: ../../Zotlabs/Module/Import.php:529 ../../Zotlabs/Module/Cal.php:345
+#: ../../Zotlabs/Module/Mood.php:139 ../../Zotlabs/Module/Photos.php:1082
+#: ../../Zotlabs/Module/Photos.php:1122 ../../Zotlabs/Module/Photos.php:1240
+#: ../../Zotlabs/Module/Wiki.php:206 ../../Zotlabs/Module/Pdledit.php:98
+#: ../../Zotlabs/Module/Poke.php:200 ../../Zotlabs/Module/Connedit.php:904
+#: ../../Zotlabs/Module/Chat.php:196 ../../Zotlabs/Module/Chat.php:242
+#: ../../Zotlabs/Module/Pconfig.php:107 ../../Zotlabs/Module/Defperms.php:249
#: ../../Zotlabs/Module/Group.php:87 ../../Zotlabs/Module/Profiles.php:726
#: ../../Zotlabs/Module/Sources.php:114 ../../Zotlabs/Module/Sources.php:149
#: ../../Zotlabs/Module/Xchan.php:15 ../../Zotlabs/Module/Mail.php:431
-#: ../../Zotlabs/Module/Filestorage.php:155 ../../Zotlabs/Module/Rate.php:166
-#: ../../Zotlabs/Lib/ThreadItem.php:743
+#: ../../Zotlabs/Module/Filestorage.php:160 ../../Zotlabs/Module/Rate.php:166
+#: ../../Zotlabs/Lib/ThreadItem.php:754
#: ../../Zotlabs/Widget/Eventstools.php:16
-#: ../../Zotlabs/Widget/Wiki_pages.php:61
+#: ../../Zotlabs/Widget/Wiki_pages.php:40
+#: ../../Zotlabs/Widget/Wiki_pages.php:97
#: ../../view/theme/redbasic_c/php/config.php:95
#: ../../view/theme/redbasic/php/config.php:93
-#: ../../addon/skeleton/skeleton.php:65 ../../addon/gnusoc/gnusoc.php:269
+#: ../../addon/skeleton/skeleton.php:65 ../../addon/gnusoc/gnusoc.php:273
#: ../../addon/planets/planets.php:153
#: ../../addon/openclipatar/openclipatar.php:53
#: ../../addon/wppost/wppost.php:113 ../../addon/nsfw/nsfw.php:92
#: ../../addon/ijpost/ijpost.php:89 ../../addon/dwpost/dwpost.php:89
-#: ../../addon/mailhost/mailhost.php:40
#: ../../addon/likebanner/likebanner.php:57
#: ../../addon/redphotos/redphotos.php:136 ../../addon/irc/irc.php:53
#: ../../addon/ljpost/ljpost.php:86 ../../addon/startpage/startpage.php:113
-#: ../../addon/diaspora/diaspora.php:807
+#: ../../addon/diaspora/diaspora.php:816
#: ../../addon/gitwiki/Mod_Gitwiki.php:155
-#: ../../addon/rainbowtag/rainbowtag.php:85 ../../addon/visage/visage.php:170
-#: ../../addon/nsabait/nsabait.php:161 ../../addon/mailtest/mailtest.php:100
+#: ../../addon/rainbowtag/rainbowtag.php:85 ../../addon/hzfiles/hzfiles.php:84
+#: ../../addon/visage/visage.php:170 ../../addon/nsabait/nsabait.php:161
+#: ../../addon/mailtest/mailtest.php:100
#: ../../addon/openstreetmap/openstreetmap.php:168
#: ../../addon/rtof/rtof.php:101 ../../addon/jappixmini/jappixmini.php:371
#: ../../addon/superblock/superblock.php:120 ../../addon/nofed/nofed.php:80
#: ../../addon/redred/redred.php:119 ../../addon/logrot/logrot.php:35
-#: ../../addon/frphotos/frphotos.php:96 ../../addon/pubcrawl/pubcrawl.php:1049
+#: ../../addon/frphotos/frphotos.php:96 ../../addon/pubcrawl/pubcrawl.php:1053
#: ../../addon/chords/Mod_Chords.php:60 ../../addon/libertree/libertree.php:85
#: ../../addon/flattrwidget/flattrwidget.php:124
#: ../../addon/statusnet/statusnet.php:322
#: ../../addon/statusnet/statusnet.php:380
#: ../../addon/statusnet/statusnet.php:432
-#: ../../addon/statusnet/statusnet.php:899 ../../addon/twitter/twitter.php:217
+#: ../../addon/statusnet/statusnet.php:900 ../../addon/twitter/twitter.php:217
#: ../../addon/twitter/twitter.php:259
#: ../../addon/smileybutton/smileybutton.php:219
#: ../../addon/piwik/piwik.php:95 ../../addon/pageheader/pageheader.php:48
@@ -474,7 +479,24 @@ msgstr "3. Pulse [conectar]"
msgid "Submit"
msgstr "Enviar"
+#: ../../Zotlabs/Module/Articles.php:38 ../../Zotlabs/Module/Cards.php:38
+#: ../../Zotlabs/Module/Cards.php:178 ../../Zotlabs/Lib/Apps.php:224
+#: ../../include/conversation.php:1890 ../../include/features.php:122
+#: ../../include/nav.php:490
+msgid "Cards"
+msgstr "Fichas"
+
+#: ../../Zotlabs/Module/Articles.php:95
+msgid "Add Article"
+msgstr "Añadir un artículo"
+
+#: ../../Zotlabs/Module/Articles.php:178 ../../include/nav.php:501
+msgid "Articles"
+msgstr "Artículos"
+
#: ../../Zotlabs/Module/Editlayout.php:79
+#: ../../Zotlabs/Module/Article_edit.php:17
+#: ../../Zotlabs/Module/Article_edit.php:33
#: ../../Zotlabs/Module/Editblock.php:79 ../../Zotlabs/Module/Editblock.php:95
#: ../../Zotlabs/Module/Editwebpage.php:80
#: ../../Zotlabs/Module/Editpost.php:24 ../../Zotlabs/Module/Card_edit.php:17
@@ -496,13 +518,14 @@ msgstr "Descripción de la plantilla (opcional)"
msgid "Edit Layout"
msgstr "Modificar la plantilla"
-#: ../../Zotlabs/Module/Profperm.php:28 ../../Zotlabs/Module/Subthread.php:62
-#: ../../Zotlabs/Module/Import_items.php:120 ../../Zotlabs/Module/Group.php:74
+#: ../../Zotlabs/Module/Profperm.php:28 ../../Zotlabs/Module/Subthread.php:86
+#: ../../Zotlabs/Module/Import_items.php:120
+#: ../../Zotlabs/Module/Cloud.php:111 ../../Zotlabs/Module/Group.php:74
#: ../../Zotlabs/Module/Dreport.php:10 ../../Zotlabs/Module/Dreport.php:68
-#: ../../Zotlabs/Module/Like.php:283 ../../Zotlabs/Web/WebServer.php:168
-#: ../../addon/redphotos/redphotos.php:119
+#: ../../Zotlabs/Module/Like.php:295 ../../Zotlabs/Web/WebServer.php:168
+#: ../../addon/redphotos/redphotos.php:119 ../../addon/hzfiles/hzfiles.php:73
#: ../../addon/frphotos/frphotos.php:81 ../../addon/redfiles/redfiles.php:109
-#: ../../include/items.php:346
+#: ../../include/items.php:358
msgid "Permission denied"
msgstr "Permiso denegado"
@@ -514,7 +537,7 @@ msgstr "Identificador del perfil no válido"
msgid "Profile Visibility Editor"
msgstr "Editor de visibilidad del perfil"
-#: ../../Zotlabs/Module/Profperm.php:113 ../../include/channel.php:1585
+#: ../../Zotlabs/Module/Profperm.php:113 ../../include/channel.php:1633
msgid "Profile"
msgstr "Perfil"
@@ -541,11 +564,11 @@ msgstr "Resumen: "
#: ../../Zotlabs/Module/Cdav.php:786 ../../Zotlabs/Module/Cdav.php:787
#: ../../Zotlabs/Module/Cdav.php:794 ../../Zotlabs/Module/Embedphotos.php:146
-#: ../../Zotlabs/Module/Photos.php:764 ../../Zotlabs/Module/Photos.php:1220
-#: ../../Zotlabs/Lib/Apps.php:727 ../../Zotlabs/Lib/Apps.php:805
-#: ../../Zotlabs/Storage/Browser.php:164 ../../Zotlabs/Widget/Portfolio.php:86
-#: ../../Zotlabs/Widget/Album.php:84 ../../addon/pubcrawl/as.php:841
-#: ../../include/conversation.php:1143
+#: ../../Zotlabs/Module/Photos.php:817 ../../Zotlabs/Module/Photos.php:1273
+#: ../../Zotlabs/Lib/Apps.php:744 ../../Zotlabs/Lib/Apps.php:822
+#: ../../Zotlabs/Storage/Browser.php:164 ../../Zotlabs/Widget/Portfolio.php:95
+#: ../../Zotlabs/Widget/Album.php:84 ../../addon/pubcrawl/as.php:842
+#: ../../include/conversation.php:1160
msgid "Unknown"
msgstr "Desconocido"
@@ -582,7 +605,7 @@ msgid "End date and time"
msgstr "Fecha y hora de finalización"
#: ../../Zotlabs/Module/Cdav.php:871 ../../Zotlabs/Module/Events.php:473
-#: ../../Zotlabs/Module/Appman.php:138 ../../Zotlabs/Module/Rbmark.php:101
+#: ../../Zotlabs/Module/Appman.php:142 ../../Zotlabs/Module/Rbmark.php:101
#: ../../addon/rendezvous/rendezvous.php:173
msgid "Description"
msgstr "Descripción"
@@ -595,20 +618,20 @@ msgid "Location"
msgstr "Ubicación"
#: ../../Zotlabs/Module/Cdav.php:879 ../../Zotlabs/Module/Events.php:689
-#: ../../Zotlabs/Module/Events.php:698 ../../Zotlabs/Module/Cal.php:337
-#: ../../Zotlabs/Module/Cal.php:344 ../../Zotlabs/Module/Photos.php:918
+#: ../../Zotlabs/Module/Events.php:698 ../../Zotlabs/Module/Cal.php:339
+#: ../../Zotlabs/Module/Cal.php:346 ../../Zotlabs/Module/Photos.php:971
msgid "Previous"
msgstr "Anterior"
#: ../../Zotlabs/Module/Cdav.php:880 ../../Zotlabs/Module/Events.php:690
#: ../../Zotlabs/Module/Events.php:699 ../../Zotlabs/Module/Setup.php:263
-#: ../../Zotlabs/Module/Cal.php:338 ../../Zotlabs/Module/Cal.php:345
-#: ../../Zotlabs/Module/Photos.php:927
+#: ../../Zotlabs/Module/Cal.php:340 ../../Zotlabs/Module/Cal.php:347
+#: ../../Zotlabs/Module/Photos.php:980
msgid "Next"
msgstr "Siguiente"
#: ../../Zotlabs/Module/Cdav.php:881 ../../Zotlabs/Module/Events.php:700
-#: ../../Zotlabs/Module/Cal.php:346
+#: ../../Zotlabs/Module/Cal.php:348
msgid "Today"
msgstr "Hoy"
@@ -656,14 +679,13 @@ msgstr "Eliminar todos"
#: ../../Zotlabs/Module/Admin/Plugins.php:423
#: ../../Zotlabs/Module/Settings/Oauth.php:88
#: ../../Zotlabs/Module/Settings/Oauth.php:114
-#: ../../Zotlabs/Module/Wiki.php:333 ../../Zotlabs/Module/Wiki.php:363
+#: ../../Zotlabs/Module/Wiki.php:345 ../../Zotlabs/Module/Wiki.php:375
#: ../../Zotlabs/Module/Connedit.php:942 ../../Zotlabs/Module/Fbrowser.php:66
#: ../../Zotlabs/Module/Fbrowser.php:88 ../../Zotlabs/Module/Profiles.php:804
#: ../../Zotlabs/Module/Filer.php:55 ../../Zotlabs/Module/Tagrm.php:15
-#: ../../Zotlabs/Module/Tagrm.php:138 ../../addon/js_upload/js_upload.php:46
-#: ../../addon/gitwiki/Mod_Gitwiki.php:244
-#: ../../addon/gitwiki/Mod_Gitwiki.php:267 ../../include/conversation.php:1369
-#: ../../include/conversation.php:1418
+#: ../../Zotlabs/Module/Tagrm.php:138 ../../addon/gitwiki/Mod_Gitwiki.php:244
+#: ../../addon/gitwiki/Mod_Gitwiki.php:267 ../../include/conversation.php:1386
+#: ../../include/conversation.php:1435
msgid "Cancel"
msgstr "Cancelar"
@@ -677,8 +699,8 @@ msgstr "¡Disculpas! La edición de eventos recurrentes aún no se ha implementa
#: ../../Zotlabs/Module/Settings/Oauth.php:89
#: ../../Zotlabs/Module/Settings/Oauth.php:115
#: ../../Zotlabs/Module/Wiki.php:209 ../../Zotlabs/Module/Connedit.php:924
-#: ../../Zotlabs/Module/Chat.php:251 ../../Zotlabs/Lib/NativeWikiPage.php:554
-#: ../../Zotlabs/Storage/Browser.php:234
+#: ../../Zotlabs/Module/Chat.php:251 ../../Zotlabs/Lib/NativeWikiPage.php:558
+#: ../../Zotlabs/Storage/Browser.php:280
#: ../../Zotlabs/Widget/Wiki_page_history.php:22
#: ../../addon/rendezvous/rendezvous.php:172
#: ../../addon/gitwiki/Mod_Gitwiki.php:158
@@ -704,7 +726,7 @@ msgstr "Teléfono"
#: ../../Zotlabs/Module/Connedit.php:928 ../../Zotlabs/Module/Profiles.php:790
#: ../../addon/openid/MysqlProvider.php:56
#: ../../addon/openid/MysqlProvider.php:57 ../../addon/rtof/rtof.php:93
-#: ../../addon/redred/redred.php:107 ../../include/network.php:1706
+#: ../../addon/redred/redred.php:107 ../../include/network.php:1769
msgid "Email"
msgstr "Correo electrónico"
@@ -731,19 +753,19 @@ msgid "Note"
msgstr "Nota"
#: ../../Zotlabs/Module/Cdav.php:1179 ../../Zotlabs/Module/Connedit.php:933
-#: ../../Zotlabs/Module/Profiles.php:795 ../../include/event.php:1290
+#: ../../Zotlabs/Module/Profiles.php:795 ../../include/event.php:1301
#: ../../include/connections.php:682
msgid "Mobile"
msgstr "Móvil"
#: ../../Zotlabs/Module/Cdav.php:1180 ../../Zotlabs/Module/Connedit.php:934
-#: ../../Zotlabs/Module/Profiles.php:796 ../../include/event.php:1291
+#: ../../Zotlabs/Module/Profiles.php:796 ../../include/event.php:1302
#: ../../include/connections.php:683
msgid "Home"
msgstr "Inicio"
#: ../../Zotlabs/Module/Cdav.php:1181 ../../Zotlabs/Module/Connedit.php:935
-#: ../../Zotlabs/Module/Profiles.php:797 ../../include/event.php:1294
+#: ../../Zotlabs/Module/Profiles.php:797 ../../include/event.php:1305
#: ../../include/connections.php:686
msgid "Work"
msgstr "Trabajo"
@@ -886,9 +908,13 @@ msgid ""
" please import or restore these in date order (oldest first)."
msgstr "Estos ficheros pueden ser importados o restaurados visitando <a href=\"%1$s\">%2$s</a> o cualquier sitio que contenga su canal. Para obtener los mejores resultados, por favor, importar o restaurar estos ficheros en orden de fecha (la más antigua primero)."
-#: ../../Zotlabs/Module/Search.php:17 ../../Zotlabs/Module/Photos.php:490
+#: ../../Zotlabs/Module/Hq.php:136
+msgid "Welcome to hubzilla!"
+msgstr "¡Bienvenido o bienvenida a Hubzilla!"
+
+#: ../../Zotlabs/Module/Search.php:17 ../../Zotlabs/Module/Photos.php:540
#: ../../Zotlabs/Module/Ratings.php:83 ../../Zotlabs/Module/Directory.php:63
-#: ../../Zotlabs/Module/Display.php:21
+#: ../../Zotlabs/Module/Directory.php:68 ../../Zotlabs/Module/Display.php:30
#: ../../Zotlabs/Module/Viewconnections.php:23
msgid "Public access denied."
msgstr "Acceso público denegado."
@@ -896,7 +922,7 @@ msgstr "Acceso público denegado."
#: ../../Zotlabs/Module/Search.php:44 ../../Zotlabs/Module/Connections.php:313
#: ../../Zotlabs/Lib/Apps.php:250 ../../Zotlabs/Widget/Sitesearch.php:31
#: ../../include/text.php:1029 ../../include/text.php:1041
-#: ../../include/acl_selectors.php:213 ../../include/nav.php:204
+#: ../../include/acl_selectors.php:213 ../../include/nav.php:211
msgid "Search"
msgstr "Buscar"
@@ -910,8 +936,8 @@ msgstr "elementos etiquetados con: %s"
msgid "Search results for: %s"
msgstr "Resultados de la búsqueda para: %s"
-#: ../../Zotlabs/Module/Pubstream.php:38
-#: ../../Zotlabs/Widget/Notifications.php:128
+#: ../../Zotlabs/Module/Pubstream.php:81
+#: ../../Zotlabs/Widget/Notifications.php:129
msgid "Public Stream"
msgstr "\"Stream\" público"
@@ -967,14 +993,23 @@ msgstr "Cuando sea posible, elimine una ubicación iniciando sesión en el sitio
msgid "Use this form to drop the location if the hub is no longer operating."
msgstr "Utilice este formulario para eliminar la dirección si el \"hub\" no está funcionando desde hace tiempo."
-#: ../../Zotlabs/Module/Apporder.php:39
-msgid "Change Order of Navigation Apps"
-msgstr "Cambiar el orden de las aplicaciones en la barra de navegación"
+#: ../../Zotlabs/Module/Apporder.php:44
+msgid "Change Order of Pinned Navbar Apps"
+msgstr "Cambiar el orden de las aplicaciones fijas en la barra de navegación"
-#: ../../Zotlabs/Module/Apporder.php:40
+#: ../../Zotlabs/Module/Apporder.php:44
+msgid "Change Order of App Tray Apps"
+msgstr "Cambiar el orden de las aplicaciones de la bandeja de aplicaciones"
+
+#: ../../Zotlabs/Module/Apporder.php:45
msgid ""
-"Use arrows to move the corresponding app up or down in the display list"
-msgstr "Utilizar las flechas para mover la aplicación correspondiente hacia arriba o hacia abajo en la lista de visualización"
+"Use arrows to move the corresponding app left (top) or right (bottom) in the"
+" navbar"
+msgstr "Use las flechas para mover la aplicación correspondiente a la izquierda (arriba) o derecha (abajo) en la barra de navegación."
+
+#: ../../Zotlabs/Module/Apporder.php:45
+msgid "Use arrows to move the corresponding app up or down in the app tray"
+msgstr "Use las flechas para mover la aplicación correspondiente hacia arriba o hacia abajo en la bandeja de aplicaciones."
#: ../../Zotlabs/Module/Mitem.php:28 ../../Zotlabs/Module/Menu.php:144
msgid "Menu not found."
@@ -1002,7 +1037,7 @@ msgid "Menu Item Permissions"
msgstr "Permisos del elemento del menú"
#: ../../Zotlabs/Module/Mitem.php:154 ../../Zotlabs/Module/Mitem.php:231
-#: ../../Zotlabs/Module/Settings/Channel.php:513
+#: ../../Zotlabs/Module/Settings/Channel.php:522
msgid "(click to open/close)"
msgstr "(pulsar para abrir o cerrar)"
@@ -1026,17 +1061,17 @@ msgstr "Usar la autenticación mágica si está disponible"
#: ../../Zotlabs/Module/Mitem.php:240 ../../Zotlabs/Module/Mitem.php:241
#: ../../Zotlabs/Module/Events.php:470 ../../Zotlabs/Module/Events.php:471
#: ../../Zotlabs/Module/Removeme.php:63
-#: ../../Zotlabs/Module/Admin/Site.php:237
-#: ../../Zotlabs/Module/Settings/Channel.php:298
-#: ../../Zotlabs/Module/Settings/Display.php:103
-#: ../../Zotlabs/Module/Api.php:97 ../../Zotlabs/Module/Photos.php:644
+#: ../../Zotlabs/Module/Admin/Site.php:240
+#: ../../Zotlabs/Module/Settings/Channel.php:305
+#: ../../Zotlabs/Module/Settings/Display.php:105
+#: ../../Zotlabs/Module/Api.php:97 ../../Zotlabs/Module/Photos.php:697
#: ../../Zotlabs/Module/Wiki.php:218 ../../Zotlabs/Module/Wiki.php:219
#: ../../Zotlabs/Module/Connedit.php:396 ../../Zotlabs/Module/Connedit.php:779
#: ../../Zotlabs/Module/Menu.php:100 ../../Zotlabs/Module/Menu.php:157
-#: ../../Zotlabs/Module/Profiles.php:681
-#: ../../Zotlabs/Module/Filestorage.php:150
-#: ../../Zotlabs/Module/Filestorage.php:158
-#: ../../Zotlabs/Storage/Browser.php:351 ../../boot.php:1644
+#: ../../Zotlabs/Module/Defperms.php:180 ../../Zotlabs/Module/Profiles.php:681
+#: ../../Zotlabs/Module/Filestorage.php:155
+#: ../../Zotlabs/Module/Filestorage.php:163
+#: ../../Zotlabs/Storage/Browser.php:394 ../../boot.php:1669
#: ../../view/theme/redbasic_c/php/config.php:100
#: ../../view/theme/redbasic_c/php/config.php:115
#: ../../view/theme/redbasic/php/config.php:98
@@ -1077,16 +1112,17 @@ msgstr "No"
#: ../../Zotlabs/Module/Mitem.php:240 ../../Zotlabs/Module/Mitem.php:241
#: ../../Zotlabs/Module/Events.php:470 ../../Zotlabs/Module/Events.php:471
#: ../../Zotlabs/Module/Removeme.php:63
-#: ../../Zotlabs/Module/Admin/Site.php:239
-#: ../../Zotlabs/Module/Settings/Channel.php:298
-#: ../../Zotlabs/Module/Settings/Display.php:103
-#: ../../Zotlabs/Module/Api.php:96 ../../Zotlabs/Module/Photos.php:644
+#: ../../Zotlabs/Module/Admin/Site.php:242
+#: ../../Zotlabs/Module/Settings/Channel.php:305
+#: ../../Zotlabs/Module/Settings/Display.php:105
+#: ../../Zotlabs/Module/Api.php:96 ../../Zotlabs/Module/Photos.php:697
#: ../../Zotlabs/Module/Wiki.php:218 ../../Zotlabs/Module/Wiki.php:219
#: ../../Zotlabs/Module/Connedit.php:396 ../../Zotlabs/Module/Menu.php:100
-#: ../../Zotlabs/Module/Menu.php:157 ../../Zotlabs/Module/Profiles.php:681
-#: ../../Zotlabs/Module/Filestorage.php:150
-#: ../../Zotlabs/Module/Filestorage.php:158
-#: ../../Zotlabs/Storage/Browser.php:351 ../../boot.php:1644
+#: ../../Zotlabs/Module/Menu.php:157 ../../Zotlabs/Module/Defperms.php:180
+#: ../../Zotlabs/Module/Profiles.php:681
+#: ../../Zotlabs/Module/Filestorage.php:155
+#: ../../Zotlabs/Module/Filestorage.php:163
+#: ../../Zotlabs/Storage/Browser.php:394 ../../boot.php:1669
#: ../../view/theme/redbasic_c/php/config.php:100
#: ../../view/theme/redbasic_c/php/config.php:115
#: ../../view/theme/redbasic/php/config.php:98
@@ -1228,9 +1264,9 @@ msgstr "Se requieren el título del evento y su hora de inicio."
msgid "Event not found."
msgstr "Evento no encontrado."
-#: ../../Zotlabs/Module/Events.php:260 ../../Zotlabs/Module/Tagger.php:51
-#: ../../Zotlabs/Module/Like.php:372 ../../include/conversation.php:119
-#: ../../include/text.php:1941 ../../include/event.php:1145
+#: ../../Zotlabs/Module/Events.php:260 ../../Zotlabs/Module/Tagger.php:73
+#: ../../Zotlabs/Module/Like.php:384 ../../include/conversation.php:119
+#: ../../include/text.php:1941 ../../include/event.php:1153
msgid "event"
msgstr "evento"
@@ -1239,9 +1275,9 @@ msgid "Edit event title"
msgstr "Editar el título del evento"
#: ../../Zotlabs/Module/Events.php:460 ../../Zotlabs/Module/Events.php:465
-#: ../../Zotlabs/Module/Appman.php:136 ../../Zotlabs/Module/Appman.php:137
+#: ../../Zotlabs/Module/Appman.php:140 ../../Zotlabs/Module/Appman.php:141
#: ../../Zotlabs/Module/Profiles.php:748 ../../Zotlabs/Module/Profiles.php:752
-#: ../../include/datetime.php:259
+#: ../../include/datetime.php:265
msgid "Required"
msgstr "Obligatorio"
@@ -1291,13 +1327,13 @@ msgstr "Editar la descripción"
msgid "Edit Location"
msgstr "Modificar la dirección"
-#: ../../Zotlabs/Module/Events.php:478 ../../Zotlabs/Module/Photos.php:1070
-#: ../../Zotlabs/Module/Webpages.php:247 ../../Zotlabs/Lib/ThreadItem.php:753
-#: ../../include/conversation.php:1313
+#: ../../Zotlabs/Module/Events.php:478 ../../Zotlabs/Module/Photos.php:1123
+#: ../../Zotlabs/Module/Webpages.php:247 ../../Zotlabs/Lib/ThreadItem.php:764
+#: ../../include/conversation.php:1330
msgid "Preview"
msgstr "Previsualizar"
-#: ../../Zotlabs/Module/Events.php:479 ../../include/conversation.php:1385
+#: ../../Zotlabs/Module/Events.php:479 ../../include/conversation.php:1402
msgid "Permission settings"
msgstr "Configuración de permisos"
@@ -1309,7 +1345,7 @@ msgstr "Zona horaria: "
msgid "Advanced Options"
msgstr "Opciones avanzadas"
-#: ../../Zotlabs/Module/Events.php:605 ../../Zotlabs/Module/Cal.php:264
+#: ../../Zotlabs/Module/Events.php:605 ../../Zotlabs/Module/Cal.php:266
msgid "l, F j"
msgstr "l j F"
@@ -1321,7 +1357,7 @@ msgstr "Editar evento"
msgid "Delete event"
msgstr "Borrar evento"
-#: ../../Zotlabs/Module/Events.php:660 ../../Zotlabs/Module/Cal.php:313
+#: ../../Zotlabs/Module/Events.php:660 ../../Zotlabs/Module/Cal.php:315
#: ../../include/text.php:1760
msgid "Link to Source"
msgstr "Enlazar con la entrada en su ubicación original"
@@ -1330,16 +1366,16 @@ msgstr "Enlazar con la entrada en su ubicación original"
msgid "calendar"
msgstr "calendario"
-#: ../../Zotlabs/Module/Events.php:688 ../../Zotlabs/Module/Cal.php:336
+#: ../../Zotlabs/Module/Events.php:688 ../../Zotlabs/Module/Cal.php:338
msgid "Edit Event"
msgstr "Editar el evento"
-#: ../../Zotlabs/Module/Events.php:688 ../../Zotlabs/Module/Cal.php:336
+#: ../../Zotlabs/Module/Events.php:688 ../../Zotlabs/Module/Cal.php:338
msgid "Create Event"
msgstr "Crear un evento"
-#: ../../Zotlabs/Module/Events.php:691 ../../Zotlabs/Module/Cal.php:339
-#: ../../include/channel.php:1588
+#: ../../Zotlabs/Module/Events.php:691 ../../Zotlabs/Module/Cal.php:341
+#: ../../include/channel.php:1636
msgid "Export"
msgstr "Exportar"
@@ -1359,47 +1395,47 @@ msgstr "Aplicación instalada."
msgid "Malformed app."
msgstr "Aplicación con errores"
-#: ../../Zotlabs/Module/Appman.php:125
+#: ../../Zotlabs/Module/Appman.php:129
msgid "Embed code"
msgstr "Código incorporado"
-#: ../../Zotlabs/Module/Appman.php:131
+#: ../../Zotlabs/Module/Appman.php:135
msgid "Edit App"
msgstr "Modificar la aplicación"
-#: ../../Zotlabs/Module/Appman.php:131
+#: ../../Zotlabs/Module/Appman.php:135
msgid "Create App"
msgstr "Crear una aplicación"
-#: ../../Zotlabs/Module/Appman.php:136
+#: ../../Zotlabs/Module/Appman.php:140
msgid "Name of app"
msgstr "Nombre de la aplicación"
-#: ../../Zotlabs/Module/Appman.php:137
+#: ../../Zotlabs/Module/Appman.php:141
msgid "Location (URL) of app"
msgstr "Dirección (URL) de la aplicación"
-#: ../../Zotlabs/Module/Appman.php:139
+#: ../../Zotlabs/Module/Appman.php:143
msgid "Photo icon URL"
msgstr "Dirección del icono"
-#: ../../Zotlabs/Module/Appman.php:139
+#: ../../Zotlabs/Module/Appman.php:143
msgid "80 x 80 pixels - optional"
msgstr "80 x 80 pixels - opcional"
-#: ../../Zotlabs/Module/Appman.php:140
+#: ../../Zotlabs/Module/Appman.php:144
msgid "Categories (optional, comma separated list)"
msgstr "Temas (opcional, lista separada por comas)"
-#: ../../Zotlabs/Module/Appman.php:141
+#: ../../Zotlabs/Module/Appman.php:145
msgid "Version ID"
msgstr "Versión"
-#: ../../Zotlabs/Module/Appman.php:142
+#: ../../Zotlabs/Module/Appman.php:146
msgid "Price of app"
msgstr "Precio de la aplicación"
-#: ../../Zotlabs/Module/Appman.php:143
+#: ../../Zotlabs/Module/Appman.php:147
msgid "Location (URL) to purchase app"
msgstr "Dirección (URL) donde adquirir la aplicación"
@@ -1411,30 +1447,55 @@ msgstr "Por favor, inicie sesión."
msgid "Hub not found."
msgstr "Servidor no encontrado"
-#: ../../Zotlabs/Module/Subthread.php:87 ../../Zotlabs/Module/Tagger.php:47
-#: ../../Zotlabs/Module/Like.php:370
+#: ../../Zotlabs/Module/Subthread.php:111 ../../Zotlabs/Module/Tagger.php:69
+#: ../../Zotlabs/Module/Like.php:382
#: ../../addon/redphotos/redphotohelper.php:71
-#: ../../addon/diaspora/Receiver.php:1424 ../../addon/pubcrawl/as.php:1288
+#: ../../addon/diaspora/Receiver.php:1433 ../../addon/pubcrawl/as.php:1295
#: ../../include/conversation.php:116 ../../include/text.php:1938
msgid "photo"
msgstr "foto"
-#: ../../Zotlabs/Module/Subthread.php:87 ../../Zotlabs/Module/Like.php:370
-#: ../../addon/diaspora/Receiver.php:1424 ../../addon/pubcrawl/as.php:1288
+#: ../../Zotlabs/Module/Subthread.php:111 ../../Zotlabs/Module/Like.php:382
+#: ../../addon/diaspora/Receiver.php:1433 ../../addon/pubcrawl/as.php:1295
#: ../../include/conversation.php:144 ../../include/text.php:1944
msgid "status"
msgstr "el mensaje de estado"
-#: ../../Zotlabs/Module/Subthread.php:118
+#: ../../Zotlabs/Module/Subthread.php:142
#, php-format
msgid "%1$s is following %2$s's %3$s"
msgstr "%1$s está siguiendo %3$s de %2$s"
-#: ../../Zotlabs/Module/Subthread.php:120
+#: ../../Zotlabs/Module/Subthread.php:144
#, php-format
msgid "%1$s stopped following %2$s's %3$s"
msgstr "%1$s ha dejado de seguir %3$s de %2$s"
+#: ../../Zotlabs/Module/Article_edit.php:44 ../../Zotlabs/Module/Cal.php:62
+#: ../../Zotlabs/Module/Chanview.php:96 ../../Zotlabs/Module/Page.php:75
+#: ../../Zotlabs/Module/Wall_upload.php:31 ../../Zotlabs/Module/Block.php:41
+#: ../../Zotlabs/Module/Card_edit.php:44
+msgid "Channel not found."
+msgstr "Canal no encontrado."
+
+#: ../../Zotlabs/Module/Article_edit.php:101
+#: ../../Zotlabs/Module/Editblock.php:116 ../../Zotlabs/Module/Chat.php:207
+#: ../../Zotlabs/Module/Editwebpage.php:143 ../../Zotlabs/Module/Mail.php:288
+#: ../../Zotlabs/Module/Mail.php:430 ../../Zotlabs/Module/Card_edit.php:101
+#: ../../include/conversation.php:1278
+msgid "Insert web link"
+msgstr "Insertar enlace web"
+
+#: ../../Zotlabs/Module/Article_edit.php:117
+#: ../../Zotlabs/Module/Editblock.php:129
+#: ../../Zotlabs/Module/Card_edit.php:117 ../../include/conversation.php:1398
+msgid "Title (optional)"
+msgstr "Título (opcional)"
+
+#: ../../Zotlabs/Module/Article_edit.php:128
+msgid "Edit Article"
+msgstr "Editar el artículo"
+
#: ../../Zotlabs/Module/Import_items.php:48 ../../Zotlabs/Module/Import.php:64
msgid "Nothing to import."
msgstr "No hay nada para importar."
@@ -1480,22 +1541,22 @@ msgid "You have created %1$.0f of %2$.0f allowed channels."
msgstr "Ha creado %1$.0f de %2$.0f canales permitidos."
#: ../../Zotlabs/Module/New_channel.php:134
-#: ../../Zotlabs/Module/Register.php:237
+#: ../../Zotlabs/Module/Register.php:249
msgid "Name or caption"
msgstr "Nombre o descripción"
#: ../../Zotlabs/Module/New_channel.php:134
-#: ../../Zotlabs/Module/Register.php:237
+#: ../../Zotlabs/Module/Register.php:249
msgid "Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\""
msgstr "Ejemplos: \"Juan García\", \"Luisa y sus caballos\", \"Fútbol\", \"Grupo de aviación\""
#: ../../Zotlabs/Module/New_channel.php:136
-#: ../../Zotlabs/Module/Register.php:239
+#: ../../Zotlabs/Module/Register.php:251
msgid "Choose a short nickname"
msgstr "Elija un alias corto"
#: ../../Zotlabs/Module/New_channel.php:136
-#: ../../Zotlabs/Module/Register.php:239
+#: ../../Zotlabs/Module/Register.php:251
#, php-format
msgid ""
"Your nickname will be used to create an easy to remember channel address "
@@ -1503,17 +1564,17 @@ msgid ""
msgstr "Su alias se usará para crear una dirección de canal fácil de recordar, p. ej.: alias%s"
#: ../../Zotlabs/Module/New_channel.php:137
-#: ../../Zotlabs/Module/Register.php:240
+#: ../../Zotlabs/Module/Register.php:252
msgid "Channel role and privacy"
msgstr "Clase de canal y privacidad"
#: ../../Zotlabs/Module/New_channel.php:137
-#: ../../Zotlabs/Module/Register.php:240
+#: ../../Zotlabs/Module/Register.php:252
msgid "Select a channel role with your privacy requirements."
msgstr "Seleccione un tipo de canal con sus requisitos de privacidad"
#: ../../Zotlabs/Module/New_channel.php:137
-#: ../../Zotlabs/Module/Register.php:240
+#: ../../Zotlabs/Module/Register.php:252
msgid "Read more about roles"
msgstr "Leer más sobre los roles"
@@ -1575,7 +1636,7 @@ msgid ""
msgstr "Por defecto, solo la instancia del canal alojado en este servidor será eliminado de la red"
#: ../../Zotlabs/Module/Removeme.php:64
-#: ../../Zotlabs/Module/Settings/Channel.php:580
+#: ../../Zotlabs/Module/Settings/Channel.php:593
msgid "Remove Channel"
msgstr "Eliminar el canal"
@@ -1588,12 +1649,12 @@ msgid "NEW"
msgstr "NUEVO"
#: ../../Zotlabs/Module/Sharedwithme.php:107
-#: ../../Zotlabs/Storage/Browser.php:236 ../../include/text.php:1394
+#: ../../Zotlabs/Storage/Browser.php:282 ../../include/text.php:1394
msgid "Size"
msgstr "Tamaño"
#: ../../Zotlabs/Module/Sharedwithme.php:108
-#: ../../Zotlabs/Storage/Browser.php:237
+#: ../../Zotlabs/Storage/Browser.php:283
msgid "Last Modified"
msgstr "Última modificación"
@@ -2181,10 +2242,10 @@ msgstr "Intentar ejecutar este paso de actualización automáticamente"
#: ../../Zotlabs/Module/Admin/Plugins.php:259
#: ../../Zotlabs/Module/Admin/Themes.php:72 ../../Zotlabs/Module/Thing.php:89
-#: ../../Zotlabs/Module/Viewsrc.php:25 ../../Zotlabs/Module/Display.php:33
-#: ../../Zotlabs/Module/Display.php:347
+#: ../../Zotlabs/Module/Viewsrc.php:25 ../../Zotlabs/Module/Display.php:46
+#: ../../Zotlabs/Module/Display.php:408
#: ../../Zotlabs/Module/Filestorage.php:24 ../../Zotlabs/Module/Admin.php:62
-#: ../../include/items.php:3410
+#: ../../include/items.php:3546
msgid "Item not found."
msgstr "Elemento no encontrado."
@@ -2215,7 +2276,7 @@ msgstr "Activar"
#: ../../Zotlabs/Module/Admin/Channels.php:145
#: ../../Zotlabs/Module/Admin/Themes.php:122
#: ../../Zotlabs/Module/Admin/Themes.php:156
-#: ../../Zotlabs/Module/Admin/Site.php:271
+#: ../../Zotlabs/Module/Admin/Site.php:275
#: ../../Zotlabs/Module/Admin/Security.php:86
#: ../../Zotlabs/Module/Admin.php:136
msgid "Administration"
@@ -2234,8 +2295,8 @@ msgstr "Cambiar"
#: ../../Zotlabs/Module/Admin/Plugins.php:344
#: ../../Zotlabs/Module/Admin/Themes.php:125 ../../Zotlabs/Lib/Apps.php:236
-#: ../../Zotlabs/Widget/Settings_menu.php:133 ../../include/nav.php:132
-#: ../../include/nav.php:217
+#: ../../Zotlabs/Widget/Settings_menu.php:133 ../../include/nav.php:139
+#: ../../include/nav.php:224
msgid "Settings"
msgstr "Ajustes"
@@ -2319,7 +2380,7 @@ msgid "Switch branch"
msgstr "Cambiar la rama"
#: ../../Zotlabs/Module/Admin/Plugins.php:455
-#: ../../Zotlabs/Module/Photos.php:967 ../../Zotlabs/Module/Tagrm.php:137
+#: ../../Zotlabs/Module/Photos.php:1020 ../../Zotlabs/Module/Tagrm.php:137
#: ../../addon/superblock/superblock.php:116
msgid "Remove"
msgstr "Eliminar"
@@ -2342,7 +2403,7 @@ msgstr[1] "%s cuentas eliminadas"
msgid "Account not found"
msgstr "Cuenta no encontrada"
-#: ../../Zotlabs/Module/Admin/Accounts.php:90 ../../include/channel.php:2357
+#: ../../Zotlabs/Module/Admin/Accounts.php:90 ../../include/channel.php:2456
#, php-format
msgid "Account '%s' deleted"
msgstr "La cuenta '%s' ha sido eliminada"
@@ -2381,7 +2442,7 @@ msgid "No registrations."
msgstr "Sin registros."
#: ../../Zotlabs/Module/Admin/Accounts.php:171
-#: ../../Zotlabs/Module/Connections.php:282 ../../include/conversation.php:716
+#: ../../Zotlabs/Module/Connections.php:282 ../../include/conversation.php:732
msgid "Approve"
msgstr "Aprobar"
@@ -2403,7 +2464,7 @@ msgstr "Desbloquear"
msgid "ID"
msgstr "ID"
-#: ../../Zotlabs/Module/Admin/Accounts.php:182 ../../include/group.php:288
+#: ../../Zotlabs/Module/Admin/Accounts.php:182 ../../include/group.php:284
msgid "All Channels"
msgstr "Todos los canales"
@@ -2538,7 +2599,7 @@ msgid "Disallow Code"
msgstr "No permitir código"
#: ../../Zotlabs/Module/Admin/Channels.php:154
-#: ../../include/conversation.php:1791 ../../include/nav.php:399
+#: ../../include/conversation.php:1808 ../../include/nav.php:410
msgid "Channel"
msgstr "Canal"
@@ -2583,394 +2644,412 @@ msgstr "[Experimental]"
msgid "[Unsupported]"
msgstr "[No soportado]"
-#: ../../Zotlabs/Module/Admin/Site.php:144
+#: ../../Zotlabs/Module/Admin/Site.php:147
msgid "Site settings updated."
msgstr "Ajustes del sitio actualizados."
-#: ../../Zotlabs/Module/Admin/Site.php:170
+#: ../../Zotlabs/Module/Admin/Site.php:173
#: ../../view/theme/redbasic_c/php/config.php:15
-#: ../../view/theme/redbasic/php/config.php:15 ../../include/text.php:2943
+#: ../../view/theme/redbasic/php/config.php:15 ../../include/text.php:2968
msgid "Default"
msgstr "Predeterminado"
-#: ../../Zotlabs/Module/Admin/Site.php:181
-#: ../../Zotlabs/Module/Settings/Display.php:137
+#: ../../Zotlabs/Module/Admin/Site.php:184
+#: ../../Zotlabs/Module/Settings/Display.php:139
#, php-format
msgid "%s - (Incompatible)"
msgstr "%s - (Incompatible)"
-#: ../../Zotlabs/Module/Admin/Site.php:188
-#: ../../Zotlabs/Module/Settings/Display.php:151
+#: ../../Zotlabs/Module/Admin/Site.php:191
+#: ../../Zotlabs/Module/Settings/Display.php:153
msgid "mobile"
msgstr "móvil"
-#: ../../Zotlabs/Module/Admin/Site.php:190
+#: ../../Zotlabs/Module/Admin/Site.php:193
msgid "experimental"
msgstr "experimental"
-#: ../../Zotlabs/Module/Admin/Site.php:192
+#: ../../Zotlabs/Module/Admin/Site.php:195
msgid "unsupported"
msgstr "no soportado"
-#: ../../Zotlabs/Module/Admin/Site.php:238
+#: ../../Zotlabs/Module/Admin/Site.php:241
msgid "Yes - with approval"
msgstr "Sí - con aprobación"
-#: ../../Zotlabs/Module/Admin/Site.php:244
+#: ../../Zotlabs/Module/Admin/Site.php:247
msgid "My site is not a public server"
msgstr "Mi sitio no es un servidor público"
-#: ../../Zotlabs/Module/Admin/Site.php:245
+#: ../../Zotlabs/Module/Admin/Site.php:248
msgid "My site has paid access only"
msgstr "Mi sitio es un servicio de pago"
-#: ../../Zotlabs/Module/Admin/Site.php:246
+#: ../../Zotlabs/Module/Admin/Site.php:249
msgid "My site has free access only"
msgstr "Mi sitio es un servicio gratuito"
-#: ../../Zotlabs/Module/Admin/Site.php:247
+#: ../../Zotlabs/Module/Admin/Site.php:250
msgid "My site offers free accounts with optional paid upgrades"
msgstr "Mi sitio ofrece cuentas gratuitas con opciones extra de pago"
-#: ../../Zotlabs/Module/Admin/Site.php:258
+#: ../../Zotlabs/Module/Admin/Site.php:262
msgid "Beginner/Basic"
msgstr "Principiante / Básico"
-#: ../../Zotlabs/Module/Admin/Site.php:259
+#: ../../Zotlabs/Module/Admin/Site.php:263
msgid "Novice - not skilled but willing to learn"
msgstr "Novato: no cualificado, pero dispuesto a aprender"
-#: ../../Zotlabs/Module/Admin/Site.php:260
+#: ../../Zotlabs/Module/Admin/Site.php:264
msgid "Intermediate - somewhat comfortable"
msgstr "Intermedio: bastante cómodo"
-#: ../../Zotlabs/Module/Admin/Site.php:261
+#: ../../Zotlabs/Module/Admin/Site.php:265
msgid "Advanced - very comfortable"
msgstr "Avanzado: muy cómodo"
-#: ../../Zotlabs/Module/Admin/Site.php:262
+#: ../../Zotlabs/Module/Admin/Site.php:266
msgid "Expert - I can write computer code"
msgstr "Experto: puedo escribir código informático"
-#: ../../Zotlabs/Module/Admin/Site.php:263
+#: ../../Zotlabs/Module/Admin/Site.php:267
msgid "Wizard - I probably know more than you do"
msgstr "Colaborador: probablemente sé más que tú"
-#: ../../Zotlabs/Module/Admin/Site.php:272 ../../Zotlabs/Widget/Admin.php:22
+#: ../../Zotlabs/Module/Admin/Site.php:276 ../../Zotlabs/Widget/Admin.php:22
msgid "Site"
msgstr "Sitio"
-#: ../../Zotlabs/Module/Admin/Site.php:274
-#: ../../Zotlabs/Module/Register.php:251
+#: ../../Zotlabs/Module/Admin/Site.php:278
+#: ../../Zotlabs/Module/Register.php:263
msgid "Registration"
msgstr "Registro"
-#: ../../Zotlabs/Module/Admin/Site.php:275
+#: ../../Zotlabs/Module/Admin/Site.php:279
msgid "File upload"
msgstr "Subir fichero"
-#: ../../Zotlabs/Module/Admin/Site.php:276
+#: ../../Zotlabs/Module/Admin/Site.php:280
msgid "Policies"
msgstr "Políticas"
-#: ../../Zotlabs/Module/Admin/Site.php:277
+#: ../../Zotlabs/Module/Admin/Site.php:281
#: ../../include/contact_widgets.php:16
msgid "Advanced"
msgstr "Avanzado"
-#: ../../Zotlabs/Module/Admin/Site.php:281
-#: ../../addon/statusnet/statusnet.php:890
+#: ../../Zotlabs/Module/Admin/Site.php:285
+#: ../../addon/statusnet/statusnet.php:891
msgid "Site name"
msgstr "Nombre del sitio"
-#: ../../Zotlabs/Module/Admin/Site.php:283
+#: ../../Zotlabs/Module/Admin/Site.php:287
msgid "Site default technical skill level"
msgstr "Nivel de habilidad técnica predeterminado del sitio"
-#: ../../Zotlabs/Module/Admin/Site.php:283
+#: ../../Zotlabs/Module/Admin/Site.php:287
msgid "Used to provide a member experience matched to technical comfort level"
msgstr "Se utiliza para proporcionar una experiencia a los miembros adaptada a su nivel de comodidad técnica"
-#: ../../Zotlabs/Module/Admin/Site.php:285
+#: ../../Zotlabs/Module/Admin/Site.php:289
msgid "Lock the technical skill level setting"
msgstr "Bloquear el ajuste del nivel de habilidad técnica"
-#: ../../Zotlabs/Module/Admin/Site.php:285
+#: ../../Zotlabs/Module/Admin/Site.php:289
msgid "Members can set their own technical comfort level by default"
msgstr "Los miembros pueden configurar su nivel de comodidad técnica por defecto"
-#: ../../Zotlabs/Module/Admin/Site.php:287
+#: ../../Zotlabs/Module/Admin/Site.php:291
msgid "Banner/Logo"
msgstr "Banner/Logo"
-#: ../../Zotlabs/Module/Admin/Site.php:288
+#: ../../Zotlabs/Module/Admin/Site.php:292
msgid "Administrator Information"
msgstr "Información del Administrador"
-#: ../../Zotlabs/Module/Admin/Site.php:288
+#: ../../Zotlabs/Module/Admin/Site.php:292
msgid ""
"Contact information for site administrators. Displayed on siteinfo page. "
"BBCode can be used here"
msgstr "Información de contacto de los administradores del sitio. Visible en la página \"siteinfo\". Se puede usar BBCode"
-#: ../../Zotlabs/Module/Admin/Site.php:289
+#: ../../Zotlabs/Module/Admin/Site.php:293
#: ../../Zotlabs/Module/Siteinfo.php:22
msgid "Site Information"
msgstr "Información sobre el sitio"
-#: ../../Zotlabs/Module/Admin/Site.php:289
+#: ../../Zotlabs/Module/Admin/Site.php:293
msgid ""
"Publicly visible description of this site. Displayed on siteinfo page. "
"BBCode can be used here"
msgstr "Descripción pública de este sitio. Visible en la página \"siteinfo\". Se puede usar BBCode"
-#: ../../Zotlabs/Module/Admin/Site.php:290
+#: ../../Zotlabs/Module/Admin/Site.php:294
msgid "System language"
msgstr "Idioma del sistema"
-#: ../../Zotlabs/Module/Admin/Site.php:291
+#: ../../Zotlabs/Module/Admin/Site.php:295
msgid "System theme"
msgstr "Tema gráfico del sistema"
-#: ../../Zotlabs/Module/Admin/Site.php:291
+#: ../../Zotlabs/Module/Admin/Site.php:295
msgid ""
"Default system theme - may be over-ridden by user profiles - <a href='#' "
"id='cnftheme'>change theme settings</a>"
msgstr "Tema del sistema por defecto - se puede cambiar por cada perfil de usuario - <a href='#' id='cnftheme'>modificar los ajustes del tema</a>"
-#: ../../Zotlabs/Module/Admin/Site.php:292
+#: ../../Zotlabs/Module/Admin/Site.php:296
msgid "Mobile system theme"
msgstr "Tema del sistema para móviles"
-#: ../../Zotlabs/Module/Admin/Site.php:292
+#: ../../Zotlabs/Module/Admin/Site.php:296
msgid "Theme for mobile devices"
msgstr "Tema para dispositivos móviles"
-#: ../../Zotlabs/Module/Admin/Site.php:294
+#: ../../Zotlabs/Module/Admin/Site.php:298
msgid "Allow Feeds as Connections"
msgstr "Permitir contenidos RSS como conexiones"
-#: ../../Zotlabs/Module/Admin/Site.php:294
+#: ../../Zotlabs/Module/Admin/Site.php:298
msgid "(Heavy system resource usage)"
msgstr "(Uso intenso de los recursos del sistema)"
-#: ../../Zotlabs/Module/Admin/Site.php:295
+#: ../../Zotlabs/Module/Admin/Site.php:299
msgid "Maximum image size"
msgstr "Tamaño máximo de la imagen"
-#: ../../Zotlabs/Module/Admin/Site.php:295
+#: ../../Zotlabs/Module/Admin/Site.php:299
msgid ""
"Maximum size in bytes of uploaded images. Default is 0, which means no "
"limits."
msgstr "Tamaño máximo en bytes de la imagen subida. Por defecto, es 0, lo que significa que no hay límites."
-#: ../../Zotlabs/Module/Admin/Site.php:296
+#: ../../Zotlabs/Module/Admin/Site.php:300
msgid "Does this site allow new member registration?"
msgstr "¿Debe este sitio permitir el registro de nuevos miembros?"
-#: ../../Zotlabs/Module/Admin/Site.php:297
+#: ../../Zotlabs/Module/Admin/Site.php:301
msgid "Invitation only"
msgstr "Solo con una invitación"
-#: ../../Zotlabs/Module/Admin/Site.php:297
+#: ../../Zotlabs/Module/Admin/Site.php:301
msgid ""
"Only allow new member registrations with an invitation code. Above register "
"policy must be set to Yes."
msgstr "Solo se permiten inscripciones de nuevos miembros con un código de invitación. Además, deben aceptarse los términos del registro marcando \"Sí\"."
-#: ../../Zotlabs/Module/Admin/Site.php:298
+#: ../../Zotlabs/Module/Admin/Site.php:302
msgid "Which best describes the types of account offered by this hub?"
msgstr "¿Cómo describiría el tipo de servicio ofrecido por este servidor?"
-#: ../../Zotlabs/Module/Admin/Site.php:299
+#: ../../Zotlabs/Module/Admin/Site.php:303
msgid "Register text"
msgstr "Texto del registro"
-#: ../../Zotlabs/Module/Admin/Site.php:299
+#: ../../Zotlabs/Module/Admin/Site.php:303
msgid "Will be displayed prominently on the registration page."
msgstr "Se mostrará de forma destacada en la página de registro."
-#: ../../Zotlabs/Module/Admin/Site.php:300
+#: ../../Zotlabs/Module/Admin/Site.php:304
msgid "Site homepage to show visitors (default: login box)"
msgstr "Página personal que se mostrará a los visitantes (por defecto: la página de identificación)"
-#: ../../Zotlabs/Module/Admin/Site.php:300
+#: ../../Zotlabs/Module/Admin/Site.php:304
msgid ""
"example: 'public' to show public stream, 'page/sys/home' to show a system "
"webpage called 'home' or 'include:home.html' to include a file."
msgstr "ejemplo: 'public' para mostrar contenido público, 'page/sys/home' para mostrar la página web definida como \"home\" o 'include:home.html' para mostrar el contenido de un fichero."
-#: ../../Zotlabs/Module/Admin/Site.php:301
+#: ../../Zotlabs/Module/Admin/Site.php:305
msgid "Preserve site homepage URL"
msgstr "Preservar la dirección de la página personal"
-#: ../../Zotlabs/Module/Admin/Site.php:301
+#: ../../Zotlabs/Module/Admin/Site.php:305
msgid ""
"Present the site homepage in a frame at the original location instead of "
"redirecting"
msgstr "Presenta la página personal del sitio en un marco en la ubicación original, en vez de redirigirla."
-#: ../../Zotlabs/Module/Admin/Site.php:302
+#: ../../Zotlabs/Module/Admin/Site.php:306
msgid "Accounts abandoned after x days"
msgstr "Cuentas abandonadas después de x días"
-#: ../../Zotlabs/Module/Admin/Site.php:302
+#: ../../Zotlabs/Module/Admin/Site.php:306
msgid ""
"Will not waste system resources polling external sites for abandonded "
"accounts. Enter 0 for no time limit."
msgstr "Para evitar consumir recursos del sistema intentando poner al día las cuentas abandonadas. Introduzca 0 para no tener límite de tiempo."
-#: ../../Zotlabs/Module/Admin/Site.php:303
+#: ../../Zotlabs/Module/Admin/Site.php:307
msgid "Allowed friend domains"
msgstr "Dominios amigos permitidos"
-#: ../../Zotlabs/Module/Admin/Site.php:303
+#: ../../Zotlabs/Module/Admin/Site.php:307
msgid ""
"Comma separated list of domains which are allowed to establish friendships "
"with this site. Wildcards are accepted. Empty to allow any domains"
msgstr "Lista separada por comas de dominios a los que está permitido establecer relaciones de amistad con este sitio. Se permiten comodines. Dejar en claro para aceptar cualquier dominio."
-#: ../../Zotlabs/Module/Admin/Site.php:304
+#: ../../Zotlabs/Module/Admin/Site.php:308
msgid "Verify Email Addresses"
msgstr "Verificar las direcciones de correo electrónico"
-#: ../../Zotlabs/Module/Admin/Site.php:304
+#: ../../Zotlabs/Module/Admin/Site.php:308
msgid ""
"Check to verify email addresses used in account registration (recommended)."
msgstr "Activar para la verificación de la dirección de correo electrónico en el registro de una cuenta (recomendado)."
-#: ../../Zotlabs/Module/Admin/Site.php:305
+#: ../../Zotlabs/Module/Admin/Site.php:309
msgid "Force publish"
msgstr "Forzar la publicación"
-#: ../../Zotlabs/Module/Admin/Site.php:305
+#: ../../Zotlabs/Module/Admin/Site.php:309
msgid ""
"Check to force all profiles on this site to be listed in the site directory."
msgstr "Intentar forzar todos los perfiles para que sean listados en el directorio de este sitio."
-#: ../../Zotlabs/Module/Admin/Site.php:306
+#: ../../Zotlabs/Module/Admin/Site.php:310
msgid "Import Public Streams"
msgstr "Importar contenido público"
-#: ../../Zotlabs/Module/Admin/Site.php:306
+#: ../../Zotlabs/Module/Admin/Site.php:310
msgid ""
"Import and allow access to public content pulled from other sites. Warning: "
"this content is unmoderated."
msgstr "Importar y permitir acceso al contenido público sacado de otros sitios. Advertencia: este contenido no está moderado, por lo que podría encontrar cosas inapropiadas u ofensivas."
-#: ../../Zotlabs/Module/Admin/Site.php:307
+#: ../../Zotlabs/Module/Admin/Site.php:311
msgid "Login on Homepage"
msgstr "Iniciar sesión en la página personal"
-#: ../../Zotlabs/Module/Admin/Site.php:307
+#: ../../Zotlabs/Module/Admin/Site.php:311
msgid ""
"Present a login box to visitors on the home page if no other content has "
"been configured."
msgstr "Presentar a los visitantes una casilla de identificación en la página de inicio, si no se ha configurado otro tipo de contenido."
-#: ../../Zotlabs/Module/Admin/Site.php:308
+#: ../../Zotlabs/Module/Admin/Site.php:312
msgid "Enable context help"
msgstr "Habilitar la ayuda contextual"
-#: ../../Zotlabs/Module/Admin/Site.php:308
+#: ../../Zotlabs/Module/Admin/Site.php:312
msgid ""
"Display contextual help for the current page when the help button is "
"pressed."
msgstr "Ver la ayuda contextual para la página actual cuando se pulse el botón de Ayuda."
-#: ../../Zotlabs/Module/Admin/Site.php:310
+#: ../../Zotlabs/Module/Admin/Site.php:314
msgid "Reply-to email address for system generated email."
msgstr "Dirección de respuesta para el correo electrónico generado por el sistema."
-#: ../../Zotlabs/Module/Admin/Site.php:311
+#: ../../Zotlabs/Module/Admin/Site.php:315
msgid "Sender (From) email address for system generated email."
msgstr "Dirección del remitente (From) para el correo electrónico generado por el sistema."
-#: ../../Zotlabs/Module/Admin/Site.php:312
+#: ../../Zotlabs/Module/Admin/Site.php:316
msgid "Name of email sender for system generated email."
msgstr "Nombre del remitente del correo electrónico generado por el sistema."
-#: ../../Zotlabs/Module/Admin/Site.php:314
+#: ../../Zotlabs/Module/Admin/Site.php:318
msgid "Directory Server URL"
msgstr "URL del servidor de directorio"
-#: ../../Zotlabs/Module/Admin/Site.php:314
+#: ../../Zotlabs/Module/Admin/Site.php:318
msgid "Default directory server"
msgstr "Servidor de directorio predeterminado"
-#: ../../Zotlabs/Module/Admin/Site.php:316
+#: ../../Zotlabs/Module/Admin/Site.php:320
msgid "Proxy user"
msgstr "Usuario del proxy"
-#: ../../Zotlabs/Module/Admin/Site.php:317
+#: ../../Zotlabs/Module/Admin/Site.php:321
msgid "Proxy URL"
msgstr "Dirección del proxy"
-#: ../../Zotlabs/Module/Admin/Site.php:318
+#: ../../Zotlabs/Module/Admin/Site.php:322
msgid "Network timeout"
msgstr "Tiempo de espera de la red"
-#: ../../Zotlabs/Module/Admin/Site.php:318
+#: ../../Zotlabs/Module/Admin/Site.php:322
msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
msgstr "Valor en segundos. Poner a 0 para que no haya tiempo límite (no recomendado)"
-#: ../../Zotlabs/Module/Admin/Site.php:319
+#: ../../Zotlabs/Module/Admin/Site.php:323
msgid "Delivery interval"
msgstr "Intervalo de entrega"
-#: ../../Zotlabs/Module/Admin/Site.php:319
+#: ../../Zotlabs/Module/Admin/Site.php:323
msgid ""
"Delay background delivery processes by this many seconds to reduce system "
"load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 "
"for large dedicated servers."
msgstr "Retrasar los procesos de transmisión en segundo plano por esta cantidad de segundos para reducir la carga del sistema. Recomendado: 4-5 para sitios compartidos, 2-3 para servidores virtuales privados, 0-1 para grandes servidores dedicados."
-#: ../../Zotlabs/Module/Admin/Site.php:320
+#: ../../Zotlabs/Module/Admin/Site.php:324
msgid "Deliveries per process"
msgstr "Intentos de envío por proceso"
-#: ../../Zotlabs/Module/Admin/Site.php:320
+#: ../../Zotlabs/Module/Admin/Site.php:324
msgid ""
"Number of deliveries to attempt in a single operating system process. Adjust"
" if necessary to tune system performance. Recommend: 1-5."
msgstr "Numero de envíos a intentar en un único proceso del sistema operativo. Ajustar si es necesario mejorar el rendimiento. Se recomienda: 1-5."
-#: ../../Zotlabs/Module/Admin/Site.php:321
+#: ../../Zotlabs/Module/Admin/Site.php:325
+msgid "Queue Threshold"
+msgstr "Umbral de la cola de espera"
+
+#: ../../Zotlabs/Module/Admin/Site.php:325
+msgid ""
+"Always defer immediate delivery if queue contains more than this number of "
+"entries."
+msgstr "Aplazar siempre la entrega inmediata si la cola contiene más de este número de entradas."
+
+#: ../../Zotlabs/Module/Admin/Site.php:326
msgid "Poll interval"
msgstr "Intervalo máximo de tiempo entre dos mensajes sucesivos"
-#: ../../Zotlabs/Module/Admin/Site.php:321
+#: ../../Zotlabs/Module/Admin/Site.php:326
msgid ""
"Delay background polling processes by this many seconds to reduce system "
"load. If 0, use delivery interval."
msgstr "Retrasar el intervalo de envío en segundo plano, en esta cantidad de segundos, para reducir la carga del sistema. Si es 0, usar el intervalo de entrega."
-#: ../../Zotlabs/Module/Admin/Site.php:322
+#: ../../Zotlabs/Module/Admin/Site.php:327
msgid "Path to ImageMagick convert program"
msgstr "Ruta al programa de conversión de ImageMagick"
-#: ../../Zotlabs/Module/Admin/Site.php:322
+#: ../../Zotlabs/Module/Admin/Site.php:327
msgid ""
"If set, use this program to generate photo thumbnails for huge images ( > "
"4000 pixels in either dimension), otherwise memory exhaustion may occur. "
"Example: /usr/bin/convert"
msgstr "Si está configurado, utilice este programa para generar miniaturas de fotos para imágenes de gran tamaño ( > 4000 píxeles en cualquiera de las dos dimensiones), de lo contrario se puede agotar la memoria. Ejemplo: /usr/bin/convert"
-#: ../../Zotlabs/Module/Admin/Site.php:323
+#: ../../Zotlabs/Module/Admin/Site.php:328
+msgid "Allow SVG thumbnails in file browser"
+msgstr "Permitir miniaturas SVG en el navegador de archivos"
+
+#: ../../Zotlabs/Module/Admin/Site.php:328
+msgid "WARNING: SVG images may contain malicious code."
+msgstr "ADVERTENCIA: Las imágenes SVG pueden contener código malicioso."
+
+#: ../../Zotlabs/Module/Admin/Site.php:329
msgid "Maximum Load Average"
msgstr "Carga media máxima"
-#: ../../Zotlabs/Module/Admin/Site.php:323
+#: ../../Zotlabs/Module/Admin/Site.php:329
msgid ""
"Maximum system load before delivery and poll processes are deferred - "
"default 50."
msgstr "Carga máxima del sistema antes de que los procesos de entrega y envío se hayan retardado - por defecto, 50."
-#: ../../Zotlabs/Module/Admin/Site.php:324
+#: ../../Zotlabs/Module/Admin/Site.php:330
msgid "Expiration period in days for imported (grid/network) content"
msgstr "Caducidad del contenido importado de otros sitios (en días)"
-#: ../../Zotlabs/Module/Admin/Site.php:324
+#: ../../Zotlabs/Module/Admin/Site.php:330
msgid "0 for no expiration of imported content"
msgstr "0 para que no caduque el contenido importado"
@@ -3249,19 +3328,19 @@ msgstr "Nombre de la autorización"
#: ../../Zotlabs/Module/Settings/Permcats.php:103
#: ../../Zotlabs/Module/Settings/Tokens.php:161
-#: ../../Zotlabs/Module/Connedit.php:908
+#: ../../Zotlabs/Module/Connedit.php:908 ../../Zotlabs/Module/Defperms.php:250
msgid "My Settings"
msgstr "Mis ajustes"
#: ../../Zotlabs/Module/Settings/Permcats.php:105
#: ../../Zotlabs/Module/Settings/Tokens.php:163
-#: ../../Zotlabs/Module/Connedit.php:903
+#: ../../Zotlabs/Module/Connedit.php:903 ../../Zotlabs/Module/Defperms.php:248
msgid "inherited"
msgstr "heredado"
#: ../../Zotlabs/Module/Settings/Permcats.php:108
#: ../../Zotlabs/Module/Settings/Tokens.php:166
-#: ../../Zotlabs/Module/Connedit.php:910
+#: ../../Zotlabs/Module/Connedit.php:910 ../../Zotlabs/Module/Defperms.php:253
msgid "Individual Permissions"
msgstr "Permisos individuales"
@@ -3275,18 +3354,19 @@ msgid ""
" settings here."
msgstr "Algunos permisos pueden ser heredados de los <a href=\"settings\"><strong>ajustes de privacidad</strong></a> de sus canales, los cuales tienen una prioridad más alta que los ajustes individuales. <strong>No</strong> puede cambiar estos ajustes aquí."
-#: ../../Zotlabs/Module/Settings/Channel.php:62
-#: ../../Zotlabs/Module/Settings/Channel.php:66
-#: ../../Zotlabs/Module/Settings/Channel.php:67
-#: ../../Zotlabs/Module/Settings/Channel.php:70
-#: ../../Zotlabs/Module/Settings/Channel.php:81
+#: ../../Zotlabs/Module/Settings/Channel.php:64
+#: ../../Zotlabs/Module/Settings/Channel.php:68
+#: ../../Zotlabs/Module/Settings/Channel.php:69
+#: ../../Zotlabs/Module/Settings/Channel.php:72
+#: ../../Zotlabs/Module/Settings/Channel.php:83
#: ../../Zotlabs/Module/Connedit.php:711 ../../Zotlabs/Widget/Affinity.php:28
-#: ../../include/selectors.php:123 ../../include/channel.php:423
-#: ../../include/channel.php:424 ../../include/channel.php:431
+#: ../../include/selectors.php:123 ../../include/channel.php:437
+#: ../../include/channel.php:438 ../../include/channel.php:445
msgid "Friends"
msgstr "Amigos/as"
-#: ../../Zotlabs/Module/Settings/Channel.php:255
+#: ../../Zotlabs/Module/Settings/Channel.php:262
+#: ../../Zotlabs/Module/Defperms.php:103
#: ../../addon/rendezvous/rendezvous.php:82
#: ../../addon/openstreetmap/openstreetmap.php:184
#: ../../addon/msgfooter/msgfooter.php:54 ../../addon/logrot/logrot.php:54
@@ -3295,388 +3375,403 @@ msgstr "Amigos/as"
msgid "Settings updated."
msgstr "Ajustes actualizados."
-#: ../../Zotlabs/Module/Settings/Channel.php:316
+#: ../../Zotlabs/Module/Settings/Channel.php:323
msgid "Nobody except yourself"
msgstr "Nadie excepto usted"
-#: ../../Zotlabs/Module/Settings/Channel.php:317
+#: ../../Zotlabs/Module/Settings/Channel.php:324
msgid "Only those you specifically allow"
msgstr "Solo aquellos a los que usted permita explícitamente"
-#: ../../Zotlabs/Module/Settings/Channel.php:318
+#: ../../Zotlabs/Module/Settings/Channel.php:325
msgid "Approved connections"
msgstr "Conexiones aprobadas"
-#: ../../Zotlabs/Module/Settings/Channel.php:319
+#: ../../Zotlabs/Module/Settings/Channel.php:326
msgid "Any connections"
msgstr "Cualquier conexión"
-#: ../../Zotlabs/Module/Settings/Channel.php:320
+#: ../../Zotlabs/Module/Settings/Channel.php:327
msgid "Anybody on this website"
msgstr "Cualquiera en este sitio web"
-#: ../../Zotlabs/Module/Settings/Channel.php:321
+#: ../../Zotlabs/Module/Settings/Channel.php:328
msgid "Anybody in this network"
msgstr "Cualquiera en esta red"
-#: ../../Zotlabs/Module/Settings/Channel.php:322
+#: ../../Zotlabs/Module/Settings/Channel.php:329
msgid "Anybody authenticated"
msgstr "Cualquiera que esté autenticado"
-#: ../../Zotlabs/Module/Settings/Channel.php:323
+#: ../../Zotlabs/Module/Settings/Channel.php:330
msgid "Anybody on the internet"
msgstr "Cualquiera en internet"
-#: ../../Zotlabs/Module/Settings/Channel.php:399
+#: ../../Zotlabs/Module/Settings/Channel.php:406
msgid "Publish your default profile in the network directory"
msgstr "Publicar su perfil principal en el directorio de la red"
-#: ../../Zotlabs/Module/Settings/Channel.php:404
+#: ../../Zotlabs/Module/Settings/Channel.php:411
msgid "Allow us to suggest you as a potential friend to new members?"
msgstr "¿Nos permite sugerirle como amigo potencial a los nuevos miembros?"
-#: ../../Zotlabs/Module/Settings/Channel.php:408
-#: ../../Zotlabs/Module/Profile_photo.php:437
+#: ../../Zotlabs/Module/Settings/Channel.php:415
+#: ../../Zotlabs/Module/Profile_photo.php:443
#: ../../Zotlabs/Module/Cover_photo.php:365
msgid "or"
msgstr "o"
-#: ../../Zotlabs/Module/Settings/Channel.php:413
+#: ../../Zotlabs/Module/Settings/Channel.php:420
msgid "Your channel address is"
msgstr "Su dirección de canal es"
-#: ../../Zotlabs/Module/Settings/Channel.php:416
+#: ../../Zotlabs/Module/Settings/Channel.php:423
msgid "Your files/photos are accessible via WebDAV at"
msgstr "Sus archivos y fotos son accesibles a través de WebDAV en "
-#: ../../Zotlabs/Module/Settings/Channel.php:478
+#: ../../Zotlabs/Module/Settings/Channel.php:487
msgid "Channel Settings"
msgstr "Ajustes del canal"
-#: ../../Zotlabs/Module/Settings/Channel.php:485
+#: ../../Zotlabs/Module/Settings/Channel.php:494
msgid "Basic Settings"
msgstr "Configuración básica"
-#: ../../Zotlabs/Module/Settings/Channel.php:486
-#: ../../include/channel.php:1473
+#: ../../Zotlabs/Module/Settings/Channel.php:495
+#: ../../include/channel.php:1521
msgid "Full Name:"
msgstr "Nombre completo:"
-#: ../../Zotlabs/Module/Settings/Channel.php:487
+#: ../../Zotlabs/Module/Settings/Channel.php:496
#: ../../Zotlabs/Module/Settings/Account.php:119
msgid "Email Address:"
msgstr "Dirección de correo electrónico:"
-#: ../../Zotlabs/Module/Settings/Channel.php:488
+#: ../../Zotlabs/Module/Settings/Channel.php:497
msgid "Your Timezone:"
msgstr "Su huso horario:"
-#: ../../Zotlabs/Module/Settings/Channel.php:489
+#: ../../Zotlabs/Module/Settings/Channel.php:498
msgid "Default Post Location:"
msgstr "Localización geográfica predeterminada para sus publicaciones:"
-#: ../../Zotlabs/Module/Settings/Channel.php:489
+#: ../../Zotlabs/Module/Settings/Channel.php:498
msgid "Geographical location to display on your posts"
msgstr "Localización geográfica que debe mostrarse en sus publicaciones"
-#: ../../Zotlabs/Module/Settings/Channel.php:490
+#: ../../Zotlabs/Module/Settings/Channel.php:499
msgid "Use Browser Location:"
msgstr "Usar la localización geográfica del navegador:"
-#: ../../Zotlabs/Module/Settings/Channel.php:492
+#: ../../Zotlabs/Module/Settings/Channel.php:501
msgid "Adult Content"
msgstr "Contenido solo para adultos"
-#: ../../Zotlabs/Module/Settings/Channel.php:492
+#: ../../Zotlabs/Module/Settings/Channel.php:501
msgid ""
"This channel frequently or regularly publishes adult content. (Please tag "
"any adult material and/or nudity with #NSFW)"
msgstr "Este canal publica contenido solo para adultos con frecuencia o regularmente. (Por favor etiquete cualquier material para adultos con la etiqueta #NSFW)"
-#: ../../Zotlabs/Module/Settings/Channel.php:494
+#: ../../Zotlabs/Module/Settings/Channel.php:503
msgid "Security and Privacy Settings"
msgstr "Configuración de seguridad y privacidad"
-#: ../../Zotlabs/Module/Settings/Channel.php:496
+#: ../../Zotlabs/Module/Settings/Channel.php:505
msgid "Your permissions are already configured. Click to view/adjust"
msgstr "Sus permisos ya están configurados. Pulse para ver/ajustar"
-#: ../../Zotlabs/Module/Settings/Channel.php:498
+#: ../../Zotlabs/Module/Settings/Channel.php:507
msgid "Hide my online presence"
msgstr "Ocultar mi presencia en línea"
-#: ../../Zotlabs/Module/Settings/Channel.php:498
+#: ../../Zotlabs/Module/Settings/Channel.php:507
msgid "Prevents displaying in your profile that you are online"
msgstr "Evitar mostrar en su perfil que está en línea"
-#: ../../Zotlabs/Module/Settings/Channel.php:500
+#: ../../Zotlabs/Module/Settings/Channel.php:509
msgid "Simple Privacy Settings:"
msgstr "Configuración de privacidad sencilla:"
-#: ../../Zotlabs/Module/Settings/Channel.php:501
+#: ../../Zotlabs/Module/Settings/Channel.php:510
msgid ""
"Very Public - <em>extremely permissive (should be used with caution)</em>"
msgstr "Muy Público - <em>extremadamente permisivo (debería ser usado con precaución)</em>"
-#: ../../Zotlabs/Module/Settings/Channel.php:502
+#: ../../Zotlabs/Module/Settings/Channel.php:511
msgid ""
"Typical - <em>default public, privacy when desired (similar to social "
"network permissions but with improved privacy)</em>"
msgstr "Típico - <em>por defecto público, privado cuando se desee (similar a los permisos de una red social pero con privacidad mejorada)</em>"
-#: ../../Zotlabs/Module/Settings/Channel.php:503
+#: ../../Zotlabs/Module/Settings/Channel.php:512
msgid "Private - <em>default private, never open or public</em>"
msgstr "Privado - <em>por defecto, privado, nunca abierto o público</em>"
-#: ../../Zotlabs/Module/Settings/Channel.php:504
+#: ../../Zotlabs/Module/Settings/Channel.php:513
msgid "Blocked - <em>default blocked to/from everybody</em>"
msgstr "Bloqueado - <em>por defecto, bloqueado/a para cualquiera</em>"
-#: ../../Zotlabs/Module/Settings/Channel.php:506
+#: ../../Zotlabs/Module/Settings/Channel.php:515
msgid "Allow others to tag your posts"
msgstr "Permitir a otros etiquetar sus publicaciones"
-#: ../../Zotlabs/Module/Settings/Channel.php:506
+#: ../../Zotlabs/Module/Settings/Channel.php:515
msgid ""
"Often used by the community to retro-actively flag inappropriate content"
msgstr "A menudo usado por la comunidad para marcar contenido inapropiado de forma retroactiva."
-#: ../../Zotlabs/Module/Settings/Channel.php:508
+#: ../../Zotlabs/Module/Settings/Channel.php:517
msgid "Channel Permission Limits"
msgstr "Límites de los permisos del canal"
-#: ../../Zotlabs/Module/Settings/Channel.php:510
+#: ../../Zotlabs/Module/Settings/Channel.php:519
msgid "Expire other channel content after this many days"
msgstr "Caducar contenido de otros canales después de este número de días"
-#: ../../Zotlabs/Module/Settings/Channel.php:510
+#: ../../Zotlabs/Module/Settings/Channel.php:519
msgid "0 or blank to use the website limit."
msgstr "0 o en blanco para usar el límite del sitio web."
-#: ../../Zotlabs/Module/Settings/Channel.php:510
+#: ../../Zotlabs/Module/Settings/Channel.php:519
#, php-format
msgid "This website expires after %d days."
msgstr "Este sitio web caduca después de %d días."
-#: ../../Zotlabs/Module/Settings/Channel.php:510
+#: ../../Zotlabs/Module/Settings/Channel.php:519
msgid "This website does not expire imported content."
msgstr "Este sitio web no caduca el contenido importado."
-#: ../../Zotlabs/Module/Settings/Channel.php:510
+#: ../../Zotlabs/Module/Settings/Channel.php:519
msgid "The website limit takes precedence if lower than your limit."
msgstr "El límite del sitio web tiene prioridad si es inferior a su propio límite."
-#: ../../Zotlabs/Module/Settings/Channel.php:511
+#: ../../Zotlabs/Module/Settings/Channel.php:520
msgid "Maximum Friend Requests/Day:"
msgstr "Máximo de solicitudes de amistad por día:"
-#: ../../Zotlabs/Module/Settings/Channel.php:511
+#: ../../Zotlabs/Module/Settings/Channel.php:520
msgid "May reduce spam activity"
msgstr "Podría reducir la actividad de spam"
-#: ../../Zotlabs/Module/Settings/Channel.php:512
+#: ../../Zotlabs/Module/Settings/Channel.php:521
msgid "Default Privacy Group"
msgstr "Grupo de canales predeterminado"
-#: ../../Zotlabs/Module/Settings/Channel.php:514
+#: ../../Zotlabs/Module/Settings/Channel.php:523
msgid "Use my default audience setting for the type of object published"
msgstr "Usar los ajustes de mi audiencia predeterminada para el tipo de publicación"
-#: ../../Zotlabs/Module/Settings/Channel.php:521
+#: ../../Zotlabs/Module/Settings/Channel.php:524
+msgid "Profile to assign new connections"
+msgstr "Perfil para asignar a las nuevas conexiones"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:533
msgid "Channel permissions category:"
msgstr "Categoría de los permisos del canal:"
-#: ../../Zotlabs/Module/Settings/Channel.php:522
+#: ../../Zotlabs/Module/Settings/Channel.php:534
msgid "Default Permissions Group"
msgstr "Grupo de permisos predeterminados"
-#: ../../Zotlabs/Module/Settings/Channel.php:528
+#: ../../Zotlabs/Module/Settings/Channel.php:540
msgid "Maximum private messages per day from unknown people:"
msgstr "Máximo de mensajes privados por día de gente desconocida:"
-#: ../../Zotlabs/Module/Settings/Channel.php:528
+#: ../../Zotlabs/Module/Settings/Channel.php:540
msgid "Useful to reduce spamming"
msgstr "Útil para reducir el envío de correo no deseado"
-#: ../../Zotlabs/Module/Settings/Channel.php:531
+#: ../../Zotlabs/Module/Settings/Channel.php:543
msgid "Notification Settings"
msgstr "Configuración de las notificaciones"
-#: ../../Zotlabs/Module/Settings/Channel.php:532
+#: ../../Zotlabs/Module/Settings/Channel.php:544
msgid "By default post a status message when:"
msgstr "Por defecto, enviar un mensaje de estado cuando:"
-#: ../../Zotlabs/Module/Settings/Channel.php:533
+#: ../../Zotlabs/Module/Settings/Channel.php:545
msgid "accepting a friend request"
msgstr "Acepte una solicitud de amistad"
-#: ../../Zotlabs/Module/Settings/Channel.php:534
+#: ../../Zotlabs/Module/Settings/Channel.php:546
msgid "joining a forum/community"
msgstr "al unirse a un foro o comunidad"
-#: ../../Zotlabs/Module/Settings/Channel.php:535
+#: ../../Zotlabs/Module/Settings/Channel.php:547
msgid "making an <em>interesting</em> profile change"
msgstr "Realice un cambio <em>interesante</em> en su perfil"
-#: ../../Zotlabs/Module/Settings/Channel.php:536
+#: ../../Zotlabs/Module/Settings/Channel.php:548
msgid "Send a notification email when:"
msgstr "Enviar una notificación por correo electrónico cuando:"
-#: ../../Zotlabs/Module/Settings/Channel.php:537
+#: ../../Zotlabs/Module/Settings/Channel.php:549
msgid "You receive a connection request"
msgstr "Reciba una solicitud de conexión"
-#: ../../Zotlabs/Module/Settings/Channel.php:538
+#: ../../Zotlabs/Module/Settings/Channel.php:550
msgid "Your connections are confirmed"
msgstr "Sus conexiones hayan sido confirmadas"
-#: ../../Zotlabs/Module/Settings/Channel.php:539
+#: ../../Zotlabs/Module/Settings/Channel.php:551
msgid "Someone writes on your profile wall"
msgstr "Alguien escriba en la página de su perfil (\"muro\")"
-#: ../../Zotlabs/Module/Settings/Channel.php:540
+#: ../../Zotlabs/Module/Settings/Channel.php:552
msgid "Someone writes a followup comment"
msgstr "Alguien escriba un comentario sobre sus publicaciones"
-#: ../../Zotlabs/Module/Settings/Channel.php:541
+#: ../../Zotlabs/Module/Settings/Channel.php:553
msgid "You receive a private message"
msgstr "Reciba un mensaje privado"
-#: ../../Zotlabs/Module/Settings/Channel.php:542
+#: ../../Zotlabs/Module/Settings/Channel.php:554
msgid "You receive a friend suggestion"
msgstr "Reciba una sugerencia de amistad"
-#: ../../Zotlabs/Module/Settings/Channel.php:543
+#: ../../Zotlabs/Module/Settings/Channel.php:555
msgid "You are tagged in a post"
msgstr "Usted sea etiquetado en una publicación"
-#: ../../Zotlabs/Module/Settings/Channel.php:544
+#: ../../Zotlabs/Module/Settings/Channel.php:556
msgid "You are poked/prodded/etc. in a post"
msgstr "Reciba un toque o incitación en una publicación"
-#: ../../Zotlabs/Module/Settings/Channel.php:546
+#: ../../Zotlabs/Module/Settings/Channel.php:558
msgid "Someone likes your post/comment"
msgstr "Alguien muestre agrado por su entrada o comentario"
-#: ../../Zotlabs/Module/Settings/Channel.php:549
+#: ../../Zotlabs/Module/Settings/Channel.php:561
msgid "Show visual notifications including:"
msgstr "Mostrar notificaciones visuales que incluyan:"
-#: ../../Zotlabs/Module/Settings/Channel.php:551
+#: ../../Zotlabs/Module/Settings/Channel.php:563
msgid "Unseen grid activity"
msgstr "Nueva actividad en la red"
-#: ../../Zotlabs/Module/Settings/Channel.php:552
+#: ../../Zotlabs/Module/Settings/Channel.php:564
msgid "Unseen channel activity"
msgstr "Actividad no vista en el canal"
-#: ../../Zotlabs/Module/Settings/Channel.php:553
+#: ../../Zotlabs/Module/Settings/Channel.php:565
msgid "Unseen private messages"
msgstr "Mensajes privados no leídos"
-#: ../../Zotlabs/Module/Settings/Channel.php:553
-#: ../../Zotlabs/Module/Settings/Channel.php:558
-#: ../../Zotlabs/Module/Settings/Channel.php:559
-#: ../../Zotlabs/Module/Settings/Channel.php:560
+#: ../../Zotlabs/Module/Settings/Channel.php:565
+#: ../../Zotlabs/Module/Settings/Channel.php:570
+#: ../../Zotlabs/Module/Settings/Channel.php:571
+#: ../../Zotlabs/Module/Settings/Channel.php:572
#: ../../addon/jappixmini/jappixmini.php:343
msgid "Recommended"
msgstr "Recomendado"
-#: ../../Zotlabs/Module/Settings/Channel.php:554
+#: ../../Zotlabs/Module/Settings/Channel.php:566
msgid "Upcoming events"
msgstr "Próximos eventos"
-#: ../../Zotlabs/Module/Settings/Channel.php:555
+#: ../../Zotlabs/Module/Settings/Channel.php:567
msgid "Events today"
msgstr "Eventos de hoy"
-#: ../../Zotlabs/Module/Settings/Channel.php:556
+#: ../../Zotlabs/Module/Settings/Channel.php:568
msgid "Upcoming birthdays"
msgstr "Próximos cumpleaños"
-#: ../../Zotlabs/Module/Settings/Channel.php:556
+#: ../../Zotlabs/Module/Settings/Channel.php:568
msgid "Not available in all themes"
msgstr "No disponible en todos los temas"
-#: ../../Zotlabs/Module/Settings/Channel.php:557
+#: ../../Zotlabs/Module/Settings/Channel.php:569
msgid "System (personal) notifications"
msgstr "Notificaciones del sistema (personales)"
-#: ../../Zotlabs/Module/Settings/Channel.php:558
+#: ../../Zotlabs/Module/Settings/Channel.php:570
msgid "System info messages"
msgstr "Mensajes de información del sistema"
-#: ../../Zotlabs/Module/Settings/Channel.php:559
+#: ../../Zotlabs/Module/Settings/Channel.php:571
msgid "System critical alerts"
msgstr "Alertas críticas del sistema"
-#: ../../Zotlabs/Module/Settings/Channel.php:560
+#: ../../Zotlabs/Module/Settings/Channel.php:572
msgid "New connections"
msgstr "Nuevas conexiones"
-#: ../../Zotlabs/Module/Settings/Channel.php:561
+#: ../../Zotlabs/Module/Settings/Channel.php:573
msgid "System Registrations"
msgstr "Registros del sistema"
-#: ../../Zotlabs/Module/Settings/Channel.php:562
+#: ../../Zotlabs/Module/Settings/Channel.php:574
msgid "Unseen shared files"
msgstr "Ficheros compartidos no vistos"
-#: ../../Zotlabs/Module/Settings/Channel.php:563
+#: ../../Zotlabs/Module/Settings/Channel.php:575
msgid "Unseen public activity"
msgstr "Actividad pública no vista"
-#: ../../Zotlabs/Module/Settings/Channel.php:564
+#: ../../Zotlabs/Module/Settings/Channel.php:576
+msgid "Email notification hub (hostname)"
+msgstr "Email de notificación del hub (nombre del host)"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:576
+#, php-format
+msgid ""
+"If your channel is mirrored to multiple hubs, set this to your preferred "
+"location. This will prevent duplicate email notifications. Example: %s"
+msgstr "Si su canal está replicado en múltiples hubs, colóquelo en su ubicación preferida. Esto evitará la duplicación de notificaciones por correo electrónico. Ejemplo: %s"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:577
msgid ""
"Also show new wall posts, private messages and connections under Notices"
msgstr "Mostrar también en Avisos las nuevas publicaciones, los mensajes privados y las conexiones"
-#: ../../Zotlabs/Module/Settings/Channel.php:566
+#: ../../Zotlabs/Module/Settings/Channel.php:579
msgid "Notify me of events this many days in advance"
msgstr "Avisarme de los eventos con algunos días de antelación"
-#: ../../Zotlabs/Module/Settings/Channel.php:566
+#: ../../Zotlabs/Module/Settings/Channel.php:579
msgid "Must be greater than 0"
msgstr "Debe ser mayor que 0"
-#: ../../Zotlabs/Module/Settings/Channel.php:572
+#: ../../Zotlabs/Module/Settings/Channel.php:585
msgid "Advanced Account/Page Type Settings"
msgstr "Ajustes avanzados de la cuenta y de los tipos de página"
-#: ../../Zotlabs/Module/Settings/Channel.php:573
+#: ../../Zotlabs/Module/Settings/Channel.php:586
msgid "Change the behaviour of this account for special situations"
msgstr "Cambiar el comportamiento de esta cuenta en situaciones especiales"
-#: ../../Zotlabs/Module/Settings/Channel.php:575
+#: ../../Zotlabs/Module/Settings/Channel.php:588
msgid "Miscellaneous Settings"
msgstr "Ajustes diversos"
-#: ../../Zotlabs/Module/Settings/Channel.php:576
+#: ../../Zotlabs/Module/Settings/Channel.php:589
msgid "Default photo upload folder"
msgstr "Carpeta por defecto de las fotos subidas"
-#: ../../Zotlabs/Module/Settings/Channel.php:576
-#: ../../Zotlabs/Module/Settings/Channel.php:577
+#: ../../Zotlabs/Module/Settings/Channel.php:589
+#: ../../Zotlabs/Module/Settings/Channel.php:590
msgid "%Y - current year, %m - current month"
msgstr "%Y - año en curso, %m - mes actual"
-#: ../../Zotlabs/Module/Settings/Channel.php:577
+#: ../../Zotlabs/Module/Settings/Channel.php:590
msgid "Default file upload folder"
msgstr "Carpeta por defecto de los ficheros subidos"
-#: ../../Zotlabs/Module/Settings/Channel.php:579
+#: ../../Zotlabs/Module/Settings/Channel.php:592
msgid "Personal menu to display in your channel pages"
msgstr "Menú personal que debe mostrarse en las páginas de su canal"
-#: ../../Zotlabs/Module/Settings/Channel.php:581
+#: ../../Zotlabs/Module/Settings/Channel.php:594
msgid "Remove this channel."
msgstr "Eliminar este canal."
-#: ../../Zotlabs/Module/Settings/Channel.php:582
+#: ../../Zotlabs/Module/Settings/Channel.php:595
msgid "Firefox Share $Projectname provider"
msgstr "Servicio de compartición de Firefox: proveedor $Projectname"
-#: ../../Zotlabs/Module/Settings/Channel.php:583
+#: ../../Zotlabs/Module/Settings/Channel.php:596
msgid "Start calendar week on Monday"
msgstr "Comenzar el calendario semanal por el lunes"
@@ -3830,116 +3925,124 @@ msgstr "Ajustes del controlador de afinidad"
msgid "Feature/Addon Settings"
msgstr "Ajustes de los complementos"
-#: ../../Zotlabs/Module/Settings/Display.php:145
+#: ../../Zotlabs/Module/Settings/Display.php:147
msgid "No special theme for mobile devices"
msgstr "Sin tema especial para dispositivos móviles"
-#: ../../Zotlabs/Module/Settings/Display.php:148
+#: ../../Zotlabs/Module/Settings/Display.php:150
#, php-format
msgid "%s - (Experimental)"
msgstr "%s - (Experimental)"
-#: ../../Zotlabs/Module/Settings/Display.php:202
+#: ../../Zotlabs/Module/Settings/Display.php:204
msgid "Display Settings"
msgstr "Ajustes de visualización"
-#: ../../Zotlabs/Module/Settings/Display.php:203
+#: ../../Zotlabs/Module/Settings/Display.php:205
msgid "Theme Settings"
msgstr "Ajustes del tema"
-#: ../../Zotlabs/Module/Settings/Display.php:204
+#: ../../Zotlabs/Module/Settings/Display.php:206
msgid "Custom Theme Settings"
msgstr "Ajustes personalizados del tema"
-#: ../../Zotlabs/Module/Settings/Display.php:205
+#: ../../Zotlabs/Module/Settings/Display.php:207
msgid "Content Settings"
msgstr "Ajustes del contenido"
-#: ../../Zotlabs/Module/Settings/Display.php:211
+#: ../../Zotlabs/Module/Settings/Display.php:213
msgid "Display Theme:"
msgstr "Tema gráfico del perfil:"
-#: ../../Zotlabs/Module/Settings/Display.php:212
+#: ../../Zotlabs/Module/Settings/Display.php:214
msgid "Select scheme"
msgstr "Elegir un esquema"
-#: ../../Zotlabs/Module/Settings/Display.php:214
+#: ../../Zotlabs/Module/Settings/Display.php:216
msgid "Mobile Theme:"
msgstr "Tema para el móvil:"
-#: ../../Zotlabs/Module/Settings/Display.php:215
+#: ../../Zotlabs/Module/Settings/Display.php:217
msgid "Preload images before rendering the page"
msgstr "Carga previa de las imágenes antes de generar la página"
-#: ../../Zotlabs/Module/Settings/Display.php:215
+#: ../../Zotlabs/Module/Settings/Display.php:217
msgid ""
"The subjective page load time will be longer but the page will be ready when"
" displayed"
msgstr "El tiempo subjetivo de carga de la página será más largo, pero la página estará lista cuando se muestre."
-#: ../../Zotlabs/Module/Settings/Display.php:216
+#: ../../Zotlabs/Module/Settings/Display.php:218
msgid "Enable user zoom on mobile devices"
msgstr "Habilitar zoom de usuario en dispositivos móviles"
-#: ../../Zotlabs/Module/Settings/Display.php:217
+#: ../../Zotlabs/Module/Settings/Display.php:219
msgid "Update browser every xx seconds"
msgstr "Actualizar navegador cada xx segundos"
-#: ../../Zotlabs/Module/Settings/Display.php:217
+#: ../../Zotlabs/Module/Settings/Display.php:219
msgid "Minimum of 10 seconds, no maximum"
msgstr "Mínimo de 10 segundos, sin máximo"
-#: ../../Zotlabs/Module/Settings/Display.php:218
+#: ../../Zotlabs/Module/Settings/Display.php:220
msgid "Maximum number of conversations to load at any time:"
msgstr "Máximo número de conversaciones a cargar en cualquier momento:"
-#: ../../Zotlabs/Module/Settings/Display.php:218
+#: ../../Zotlabs/Module/Settings/Display.php:220
msgid "Maximum of 100 items"
msgstr "Máximo de 100 elementos"
-#: ../../Zotlabs/Module/Settings/Display.php:219
+#: ../../Zotlabs/Module/Settings/Display.php:221
msgid "Show emoticons (smilies) as images"
msgstr "Mostrar emoticonos (smilies) como imágenes"
-#: ../../Zotlabs/Module/Settings/Display.php:220
+#: ../../Zotlabs/Module/Settings/Display.php:222
+msgid "Provide channel menu in navigation bar"
+msgstr "Proporcionar un menú de canales en la barra de navegación"
+
+#: ../../Zotlabs/Module/Settings/Display.php:222
+msgid "Default: channel menu located in app menu"
+msgstr "Predeterminado: menú de canales ubicado en el menú de aplicaciones"
+
+#: ../../Zotlabs/Module/Settings/Display.php:223
msgid "Manual conversation updates"
msgstr "Actualizaciones manuales de la conversación"
-#: ../../Zotlabs/Module/Settings/Display.php:220
+#: ../../Zotlabs/Module/Settings/Display.php:223
msgid "Default is on, turning this off may increase screen jumping"
msgstr "El valor predeterminado está activado, al desactivarlo puede aumentar el salto de pantalla"
-#: ../../Zotlabs/Module/Settings/Display.php:221
+#: ../../Zotlabs/Module/Settings/Display.php:224
msgid "Link post titles to source"
msgstr "Enlazar título de la publicación a la fuente original"
-#: ../../Zotlabs/Module/Settings/Display.php:222
+#: ../../Zotlabs/Module/Settings/Display.php:225
msgid "System Page Layout Editor - (advanced)"
msgstr "Editor de plantilla de página del sistema - (avanzado)"
-#: ../../Zotlabs/Module/Settings/Display.php:225
+#: ../../Zotlabs/Module/Settings/Display.php:228
msgid "Use blog/list mode on channel page"
msgstr "Usar modo blog/lista en la página de inicio del canal"
-#: ../../Zotlabs/Module/Settings/Display.php:225
-#: ../../Zotlabs/Module/Settings/Display.php:226
+#: ../../Zotlabs/Module/Settings/Display.php:228
+#: ../../Zotlabs/Module/Settings/Display.php:229
msgid "(comments displayed separately)"
msgstr "(comentarios mostrados de forma separada)"
-#: ../../Zotlabs/Module/Settings/Display.php:226
+#: ../../Zotlabs/Module/Settings/Display.php:229
msgid "Use blog/list mode on grid page"
msgstr "Mostrar mi red en modo blog"
-#: ../../Zotlabs/Module/Settings/Display.php:227
+#: ../../Zotlabs/Module/Settings/Display.php:230
msgid "Channel page max height of content (in pixels)"
msgstr "Altura máxima del contenido de la página del canal (en píxeles)"
-#: ../../Zotlabs/Module/Settings/Display.php:227
-#: ../../Zotlabs/Module/Settings/Display.php:228
+#: ../../Zotlabs/Module/Settings/Display.php:230
+#: ../../Zotlabs/Module/Settings/Display.php:231
msgid "click to expand content exceeding this height"
msgstr "Pulsar para expandir el contenido que exceda de esta altura"
-#: ../../Zotlabs/Module/Settings/Display.php:228
+#: ../../Zotlabs/Module/Settings/Display.php:231
msgid "Grid page max height of content (in pixels)"
msgstr "Altura máxima del contenido de mi red (en píxeles)"
@@ -3963,7 +4066,7 @@ msgstr "Nombre de la aplicación"
#: ../../Zotlabs/Module/Settings/Oauth.php:90
#: ../../Zotlabs/Module/Settings/Oauth.php:116
-#: ../../addon/statusnet/statusnet.php:893 ../../addon/twitter/twitter.php:775
+#: ../../addon/statusnet/statusnet.php:894 ../../addon/twitter/twitter.php:775
msgid "Consumer Key"
msgstr "Consumer Key"
@@ -3974,7 +4077,7 @@ msgstr "Generado automáticamente - si lo desea, cámbielo. Longitud máxima: 2
#: ../../Zotlabs/Module/Settings/Oauth.php:91
#: ../../Zotlabs/Module/Settings/Oauth.php:117
-#: ../../addon/statusnet/statusnet.php:892 ../../addon/twitter/twitter.php:776
+#: ../../addon/statusnet/statusnet.php:893 ../../addon/twitter/twitter.php:776
msgid "Consumer Secret"
msgstr "Consumer Secret"
@@ -4020,24 +4123,25 @@ msgid "Remove authorization"
msgstr "Eliminar autorización"
#: ../../Zotlabs/Module/Embedphotos.php:140
-#: ../../Zotlabs/Module/Photos.php:758 ../../Zotlabs/Module/Photos.php:1297
-#: ../../Zotlabs/Widget/Portfolio.php:78 ../../Zotlabs/Widget/Album.php:78
+#: ../../Zotlabs/Module/Photos.php:811 ../../Zotlabs/Module/Photos.php:1350
+#: ../../Zotlabs/Widget/Portfolio.php:87 ../../Zotlabs/Widget/Album.php:78
msgid "View Photo"
msgstr "Ver foto"
#: ../../Zotlabs/Module/Embedphotos.php:156
-#: ../../Zotlabs/Module/Photos.php:789 ../../Zotlabs/Widget/Portfolio.php:97
+#: ../../Zotlabs/Module/Photos.php:842 ../../Zotlabs/Widget/Portfolio.php:108
#: ../../Zotlabs/Widget/Album.php:95
msgid "Edit Album"
msgstr "Editar álbum"
#: ../../Zotlabs/Module/Embedphotos.php:158
-#: ../../Zotlabs/Module/Photos.php:791 ../../Zotlabs/Module/Photos.php:1328
-#: ../../Zotlabs/Module/Profile_photo.php:431
+#: ../../Zotlabs/Module/Photos.php:712 ../../Zotlabs/Module/Photos.php:844
+#: ../../Zotlabs/Module/Photos.php:1381
+#: ../../Zotlabs/Module/Profile_photo.php:437
#: ../../Zotlabs/Module/Cover_photo.php:361
-#: ../../Zotlabs/Storage/Browser.php:230 ../../Zotlabs/Storage/Browser.php:337
-#: ../../Zotlabs/Widget/Cdav.php:132 ../../Zotlabs/Widget/Cdav.php:168
-#: ../../Zotlabs/Widget/Portfolio.php:99 ../../Zotlabs/Widget/Album.php:97
+#: ../../Zotlabs/Storage/Browser.php:274 ../../Zotlabs/Storage/Browser.php:381
+#: ../../Zotlabs/Widget/Cdav.php:133 ../../Zotlabs/Widget/Cdav.php:169
+#: ../../Zotlabs/Widget/Portfolio.php:110 ../../Zotlabs/Widget/Album.php:97
msgid "Upload"
msgstr "Subir"
@@ -4099,9 +4203,9 @@ msgid "URL for photo of thing (optional)"
msgstr "Dirección para la foto o elemento (opcional)"
#: ../../Zotlabs/Module/Thing.php:314 ../../Zotlabs/Module/Thing.php:367
-#: ../../Zotlabs/Module/Photos.php:649 ../../Zotlabs/Module/Photos.php:1018
+#: ../../Zotlabs/Module/Photos.php:702 ../../Zotlabs/Module/Photos.php:1071
#: ../../Zotlabs/Module/Connedit.php:676 ../../Zotlabs/Module/Chat.php:235
-#: ../../Zotlabs/Module/Filestorage.php:142
+#: ../../Zotlabs/Module/Filestorage.php:147
#: ../../include/acl_selectors.php:218
msgid "Permissions"
msgstr "Permisos"
@@ -4111,12 +4215,12 @@ msgid "Add Thing to your Profile"
msgstr "Añadir alguna cosa a su perfil"
#: ../../Zotlabs/Module/Notify.php:61
-#: ../../Zotlabs/Module/Notifications.php:38
+#: ../../Zotlabs/Module/Notifications.php:57
msgid "No more system notifications."
msgstr "No hay más notificaciones del sistema"
#: ../../Zotlabs/Module/Notify.php:65
-#: ../../Zotlabs/Module/Notifications.php:42
+#: ../../Zotlabs/Module/Notifications.php:61
msgid "System Notifications"
msgstr "Notificaciones del sistema"
@@ -4134,7 +4238,7 @@ msgid "No channel. Import failed."
msgstr "No hay canal. La importación ha fallado"
#: ../../Zotlabs/Module/Import.php:481
-#: ../../addon/diaspora/import_diaspora.php:142
+#: ../../addon/diaspora/import_diaspora.php:139
msgid "Import completed."
msgstr "Importación completada."
@@ -4199,30 +4303,24 @@ msgstr "Este proceso puede tardar varios minutos en completarse. Por favor enví
msgid "Authentication failed."
msgstr "Falló la autenticación."
-#: ../../Zotlabs/Module/Rmagic.php:75 ../../boot.php:1640
-#: ../../include/channel.php:2204
+#: ../../Zotlabs/Module/Rmagic.php:75 ../../boot.php:1665
+#: ../../include/channel.php:2301
msgid "Remote Authentication"
msgstr "Acceso desde su servidor"
-#: ../../Zotlabs/Module/Rmagic.php:76 ../../include/channel.php:2205
+#: ../../Zotlabs/Module/Rmagic.php:76 ../../include/channel.php:2302
msgid "Enter your channel address (e.g. channel@example.com)"
msgstr "Introduzca la dirección del canal (p.ej. canal@ejemplo.com)"
-#: ../../Zotlabs/Module/Rmagic.php:77 ../../include/channel.php:2206
+#: ../../Zotlabs/Module/Rmagic.php:77 ../../include/channel.php:2303
msgid "Authenticate"
msgstr "Acceder"
-#: ../../Zotlabs/Module/Cal.php:62 ../../Zotlabs/Module/Chanview.php:96
-#: ../../Zotlabs/Module/Page.php:75 ../../Zotlabs/Module/Wall_upload.php:31
-#: ../../Zotlabs/Module/Block.php:41 ../../Zotlabs/Module/Card_edit.php:44
-msgid "Channel not found."
-msgstr "Canal no encontrado."
-
#: ../../Zotlabs/Module/Cal.php:69
msgid "Permissions denied."
msgstr "Permisos denegados."
-#: ../../Zotlabs/Module/Cal.php:342 ../../include/text.php:2312
+#: ../../Zotlabs/Module/Cal.php:344 ../../include/text.php:2312
msgid "Import"
msgstr "Importar"
@@ -4248,18 +4346,6 @@ msgstr "¿Desea autorizar a esta aplicación a acceder a sus publicaciones y con
msgid "Item not available."
msgstr "Elemento no disponible"
-#: ../../Zotlabs/Module/Editblock.php:116 ../../Zotlabs/Module/Chat.php:207
-#: ../../Zotlabs/Module/Editwebpage.php:143 ../../Zotlabs/Module/Mail.php:288
-#: ../../Zotlabs/Module/Mail.php:430 ../../Zotlabs/Module/Card_edit.php:101
-#: ../../include/conversation.php:1261
-msgid "Insert web link"
-msgstr "Insertar enlace web"
-
-#: ../../Zotlabs/Module/Editblock.php:129
-#: ../../Zotlabs/Module/Card_edit.php:117 ../../include/conversation.php:1381
-msgid "Title (optional)"
-msgstr "Título (opcional)"
-
#: ../../Zotlabs/Module/Editblock.php:138
msgid "Edit Block"
msgstr "Modificar este bloque"
@@ -4280,7 +4366,7 @@ msgstr "Gestionar las aplicaciones"
msgid "Create new app"
msgstr "Crear una nueva aplicación"
-#: ../../Zotlabs/Module/Mood.php:67 ../../include/conversation.php:256
+#: ../../Zotlabs/Module/Mood.php:67 ../../include/conversation.php:268
#, php-format
msgctxt "mood"
msgid "%1$s is %2$s"
@@ -4319,7 +4405,8 @@ msgstr "Archivado o inaccesible"
#: ../../Zotlabs/Module/Connections.php:74
#: ../../Zotlabs/Module/Connections.php:83 ../../Zotlabs/Module/Menu.php:116
-#: ../../include/conversation.php:1697
+#: ../../Zotlabs/Module/Notifications.php:52
+#: ../../include/conversation.php:1714
msgid "New"
msgstr "Nuevas"
@@ -4330,7 +4417,7 @@ msgid "All"
msgstr "Todos/as"
#: ../../Zotlabs/Module/Connections.php:133
-#: ../../Zotlabs/Widget/Notifications.php:80
+#: ../../Zotlabs/Widget/Notifications.php:82
msgid "New Connections"
msgstr "Nuevas conexiones"
@@ -4421,7 +4508,7 @@ msgid "Recent activity"
msgstr "Actividad reciente"
#: ../../Zotlabs/Module/Connections.php:309 ../../Zotlabs/Lib/Apps.php:229
-#: ../../include/text.php:959 ../../include/nav.php:107
+#: ../../include/text.php:959 ../../include/nav.php:114
msgid "Connections"
msgstr "Conexiones"
@@ -4434,8 +4521,8 @@ msgid "Connections search"
msgstr "Buscar conexiones"
#: ../../Zotlabs/Module/Connections.php:316
-#: ../../Zotlabs/Module/Directory.php:391
-#: ../../Zotlabs/Module/Directory.php:396 ../../include/contact_widgets.php:23
+#: ../../Zotlabs/Module/Directory.php:396
+#: ../../Zotlabs/Module/Directory.php:401 ../../include/contact_widgets.php:23
msgid "Find"
msgstr "Encontrar"
@@ -4499,238 +4586,238 @@ msgstr "Álbum no encontrado."
msgid "Delete Album"
msgstr "Borrar álbum"
-#: ../../Zotlabs/Module/Photos.php:174 ../../Zotlabs/Module/Photos.php:1030
+#: ../../Zotlabs/Module/Photos.php:174 ../../Zotlabs/Module/Photos.php:1083
msgid "Delete Photo"
msgstr "Borrar foto"
-#: ../../Zotlabs/Module/Photos.php:501
+#: ../../Zotlabs/Module/Photos.php:551
msgid "No photos selected"
msgstr "No hay fotos seleccionadas"
-#: ../../Zotlabs/Module/Photos.php:550
+#: ../../Zotlabs/Module/Photos.php:600
msgid "Access to this item is restricted."
msgstr "El acceso a este elemento está restringido."
-#: ../../Zotlabs/Module/Photos.php:593
+#: ../../Zotlabs/Module/Photos.php:646
#, php-format
msgid "%1$.2f MB of %2$.2f MB photo storage used."
msgstr "%1$.2f MB de %2$.2f MB de almacenamiento de fotos utilizado."
-#: ../../Zotlabs/Module/Photos.php:596
+#: ../../Zotlabs/Module/Photos.php:649
#, php-format
msgid "%1$.2f MB photo storage used."
msgstr "%1$.2f MB de almacenamiento de fotos utilizado."
-#: ../../Zotlabs/Module/Photos.php:638
+#: ../../Zotlabs/Module/Photos.php:691
msgid "Upload Photos"
msgstr "Subir fotos"
-#: ../../Zotlabs/Module/Photos.php:642
+#: ../../Zotlabs/Module/Photos.php:695
msgid "Enter an album name"
msgstr "Introducir un nombre de álbum"
-#: ../../Zotlabs/Module/Photos.php:643
+#: ../../Zotlabs/Module/Photos.php:696
msgid "or select an existing album (doubleclick)"
msgstr "o seleccionar uno existente (doble click)"
-#: ../../Zotlabs/Module/Photos.php:644
+#: ../../Zotlabs/Module/Photos.php:697
msgid "Create a status post for this upload"
msgstr "Crear un mensaje de estado para esta subida"
-#: ../../Zotlabs/Module/Photos.php:645
+#: ../../Zotlabs/Module/Photos.php:698
msgid "Caption (optional):"
msgstr "Título (opcional):"
-#: ../../Zotlabs/Module/Photos.php:646
+#: ../../Zotlabs/Module/Photos.php:699
msgid "Description (optional):"
msgstr "Descripción (opcional):"
-#: ../../Zotlabs/Module/Photos.php:732
+#: ../../Zotlabs/Module/Photos.php:785
msgid "Show Newest First"
msgstr "Mostrar lo más reciente primero"
-#: ../../Zotlabs/Module/Photos.php:734
+#: ../../Zotlabs/Module/Photos.php:787
msgid "Show Oldest First"
msgstr "Mostrar lo más antiguo primero"
-#: ../../Zotlabs/Module/Photos.php:839
+#: ../../Zotlabs/Module/Photos.php:892
msgid "Permission denied. Access to this item may be restricted."
msgstr "Permiso denegado. El acceso a este elemento puede estar restringido."
-#: ../../Zotlabs/Module/Photos.php:841
+#: ../../Zotlabs/Module/Photos.php:894
msgid "Photo not available"
msgstr "Foto no disponible"
-#: ../../Zotlabs/Module/Photos.php:899
+#: ../../Zotlabs/Module/Photos.php:952
msgid "Use as profile photo"
msgstr "Usar como foto del perfil"
-#: ../../Zotlabs/Module/Photos.php:900
+#: ../../Zotlabs/Module/Photos.php:953
msgid "Use as cover photo"
msgstr "Usar como imagen de portada del perfil"
-#: ../../Zotlabs/Module/Photos.php:907
+#: ../../Zotlabs/Module/Photos.php:960
msgid "Private Photo"
msgstr "Foto privada"
-#: ../../Zotlabs/Module/Photos.php:922
+#: ../../Zotlabs/Module/Photos.php:975
msgid "View Full Size"
msgstr "Ver tamaño completo"
-#: ../../Zotlabs/Module/Photos.php:1004
+#: ../../Zotlabs/Module/Photos.php:1057
msgid "Edit photo"
msgstr "Editar foto"
-#: ../../Zotlabs/Module/Photos.php:1006
+#: ../../Zotlabs/Module/Photos.php:1059
msgid "Rotate CW (right)"
msgstr "Girar CW (a la derecha)"
-#: ../../Zotlabs/Module/Photos.php:1007
+#: ../../Zotlabs/Module/Photos.php:1060
msgid "Rotate CCW (left)"
msgstr "Girar CCW (a la izquierda)"
-#: ../../Zotlabs/Module/Photos.php:1010
+#: ../../Zotlabs/Module/Photos.php:1063
msgid "Move photo to album"
msgstr "Mover la foto a un álbum"
-#: ../../Zotlabs/Module/Photos.php:1011
+#: ../../Zotlabs/Module/Photos.php:1064
msgid "Enter a new album name"
msgstr "Introducir un nuevo nombre de álbum"
-#: ../../Zotlabs/Module/Photos.php:1012
+#: ../../Zotlabs/Module/Photos.php:1065
msgid "or select an existing one (doubleclick)"
msgstr "o seleccionar uno (doble click) existente"
-#: ../../Zotlabs/Module/Photos.php:1015
+#: ../../Zotlabs/Module/Photos.php:1068
msgid "Caption"
msgstr "Título"
-#: ../../Zotlabs/Module/Photos.php:1017
+#: ../../Zotlabs/Module/Photos.php:1070
msgid "Add a Tag"
msgstr "Añadir una etiqueta"
-#: ../../Zotlabs/Module/Photos.php:1025
+#: ../../Zotlabs/Module/Photos.php:1078
msgid "Example: @bob, @Barbara_Jensen, @jim@example.com"
msgstr "Ejemplos: @eva, @Carmen_Osuna, @jaime@ejemplo.com"
-#: ../../Zotlabs/Module/Photos.php:1028
+#: ../../Zotlabs/Module/Photos.php:1081
msgid "Flag as adult in album view"
msgstr "Marcar como \"solo para adultos\" en el álbum"
-#: ../../Zotlabs/Module/Photos.php:1047 ../../Zotlabs/Lib/ThreadItem.php:271
+#: ../../Zotlabs/Module/Photos.php:1100 ../../Zotlabs/Lib/ThreadItem.php:281
msgid "I like this (toggle)"
msgstr "Me gusta (cambiar)"
-#: ../../Zotlabs/Module/Photos.php:1048 ../../Zotlabs/Lib/ThreadItem.php:272
+#: ../../Zotlabs/Module/Photos.php:1101 ../../Zotlabs/Lib/ThreadItem.php:282
msgid "I don't like this (toggle)"
msgstr "No me gusta esto (cambiar)"
-#: ../../Zotlabs/Module/Photos.php:1050 ../../Zotlabs/Lib/ThreadItem.php:416
-#: ../../include/conversation.php:768
+#: ../../Zotlabs/Module/Photos.php:1103 ../../Zotlabs/Lib/ThreadItem.php:427
+#: ../../include/conversation.php:785
msgid "Please wait"
msgstr "Espere por favor"
-#: ../../Zotlabs/Module/Photos.php:1066 ../../Zotlabs/Module/Photos.php:1184
-#: ../../Zotlabs/Lib/ThreadItem.php:740
+#: ../../Zotlabs/Module/Photos.php:1119 ../../Zotlabs/Module/Photos.php:1237
+#: ../../Zotlabs/Lib/ThreadItem.php:751
msgid "This is you"
msgstr "Este es usted"
-#: ../../Zotlabs/Module/Photos.php:1068 ../../Zotlabs/Module/Photos.php:1186
-#: ../../Zotlabs/Lib/ThreadItem.php:742 ../../include/js_strings.php:6
+#: ../../Zotlabs/Module/Photos.php:1121 ../../Zotlabs/Module/Photos.php:1239
+#: ../../Zotlabs/Lib/ThreadItem.php:753 ../../include/js_strings.php:6
msgid "Comment"
msgstr "Comentar"
-#: ../../Zotlabs/Module/Photos.php:1084 ../../include/conversation.php:594
+#: ../../Zotlabs/Module/Photos.php:1137 ../../include/conversation.php:618
msgctxt "title"
msgid "Likes"
msgstr "Me gusta"
-#: ../../Zotlabs/Module/Photos.php:1084 ../../include/conversation.php:594
+#: ../../Zotlabs/Module/Photos.php:1137 ../../include/conversation.php:618
msgctxt "title"
msgid "Dislikes"
msgstr "No me gusta"
-#: ../../Zotlabs/Module/Photos.php:1085 ../../include/conversation.php:595
+#: ../../Zotlabs/Module/Photos.php:1138 ../../include/conversation.php:619
msgctxt "title"
msgid "Agree"
msgstr "De acuerdo"
-#: ../../Zotlabs/Module/Photos.php:1085 ../../include/conversation.php:595
+#: ../../Zotlabs/Module/Photos.php:1138 ../../include/conversation.php:619
msgctxt "title"
msgid "Disagree"
msgstr "En desacuerdo"
-#: ../../Zotlabs/Module/Photos.php:1085 ../../include/conversation.php:595
+#: ../../Zotlabs/Module/Photos.php:1138 ../../include/conversation.php:619
msgctxt "title"
msgid "Abstain"
msgstr "Abstención"
-#: ../../Zotlabs/Module/Photos.php:1086 ../../include/conversation.php:596
+#: ../../Zotlabs/Module/Photos.php:1139 ../../include/conversation.php:620
msgctxt "title"
msgid "Attending"
msgstr "Participaré"
-#: ../../Zotlabs/Module/Photos.php:1086 ../../include/conversation.php:596
+#: ../../Zotlabs/Module/Photos.php:1139 ../../include/conversation.php:620
msgctxt "title"
msgid "Not attending"
msgstr "No participaré"
-#: ../../Zotlabs/Module/Photos.php:1086 ../../include/conversation.php:596
+#: ../../Zotlabs/Module/Photos.php:1139 ../../include/conversation.php:620
msgctxt "title"
msgid "Might attend"
msgstr "Quizá participe"
-#: ../../Zotlabs/Module/Photos.php:1103 ../../Zotlabs/Module/Photos.php:1115
-#: ../../Zotlabs/Lib/ThreadItem.php:191 ../../Zotlabs/Lib/ThreadItem.php:203
+#: ../../Zotlabs/Module/Photos.php:1156 ../../Zotlabs/Module/Photos.php:1168
+#: ../../Zotlabs/Lib/ThreadItem.php:201 ../../Zotlabs/Lib/ThreadItem.php:213
msgid "View all"
msgstr "Ver todo"
-#: ../../Zotlabs/Module/Photos.php:1107 ../../Zotlabs/Lib/ThreadItem.php:195
-#: ../../include/conversation.php:1950 ../../include/channel.php:1491
-#: ../../include/taxonomy.php:520
+#: ../../Zotlabs/Module/Photos.php:1160 ../../Zotlabs/Lib/ThreadItem.php:205
+#: ../../include/conversation.php:1978 ../../include/channel.php:1539
+#: ../../include/taxonomy.php:593
msgctxt "noun"
msgid "Like"
msgid_plural "Likes"
msgstr[0] "Me gusta"
msgstr[1] "Me gusta"
-#: ../../Zotlabs/Module/Photos.php:1112 ../../Zotlabs/Lib/ThreadItem.php:200
-#: ../../include/conversation.php:1953
+#: ../../Zotlabs/Module/Photos.php:1165 ../../Zotlabs/Lib/ThreadItem.php:210
+#: ../../include/conversation.php:1981
msgctxt "noun"
msgid "Dislike"
msgid_plural "Dislikes"
msgstr[0] "No me gusta"
msgstr[1] "No me gusta"
-#: ../../Zotlabs/Module/Photos.php:1212
+#: ../../Zotlabs/Module/Photos.php:1265
msgid "Photo Tools"
msgstr "Gestión de las fotos"
-#: ../../Zotlabs/Module/Photos.php:1221
+#: ../../Zotlabs/Module/Photos.php:1274
msgid "In This Photo:"
msgstr "En esta foto:"
-#: ../../Zotlabs/Module/Photos.php:1226
+#: ../../Zotlabs/Module/Photos.php:1279
msgid "Map"
msgstr "Mapa"
-#: ../../Zotlabs/Module/Photos.php:1234 ../../Zotlabs/Lib/ThreadItem.php:404
+#: ../../Zotlabs/Module/Photos.php:1287 ../../Zotlabs/Lib/ThreadItem.php:415
msgctxt "noun"
msgid "Likes"
msgstr "Me gusta"
-#: ../../Zotlabs/Module/Photos.php:1235 ../../Zotlabs/Lib/ThreadItem.php:405
+#: ../../Zotlabs/Module/Photos.php:1288 ../../Zotlabs/Lib/ThreadItem.php:416
msgctxt "noun"
msgid "Dislikes"
msgstr "No me gusta"
-#: ../../Zotlabs/Module/Photos.php:1240 ../../Zotlabs/Lib/ThreadItem.php:410
+#: ../../Zotlabs/Module/Photos.php:1293 ../../Zotlabs/Lib/ThreadItem.php:421
#: ../../include/acl_selectors.php:220
msgid "Close"
msgstr "Cerrar"
-#: ../../Zotlabs/Module/Photos.php:1312 ../../Zotlabs/Module/Photos.php:1325
-#: ../../Zotlabs/Module/Photos.php:1326 ../../include/photos.php:601
+#: ../../Zotlabs/Module/Photos.php:1365 ../../Zotlabs/Module/Photos.php:1378
+#: ../../Zotlabs/Module/Photos.php:1379 ../../include/photos.php:656
msgid "Recent Photos"
msgstr "Fotos recientes"
@@ -4738,7 +4825,8 @@ msgstr "Fotos recientes"
msgid "Profile Unavailable."
msgstr "Perfil no disponible"
-#: ../../Zotlabs/Module/Wiki.php:44 ../../addon/gitwiki/Mod_Gitwiki.php:42
+#: ../../Zotlabs/Module/Wiki.php:44 ../../Zotlabs/Module/Cloud.php:108
+#: ../../addon/gitwiki/Mod_Gitwiki.php:42
msgid "Not found"
msgstr "No encontrado"
@@ -4759,7 +4847,7 @@ msgid "Error downloading wiki: "
msgstr "Error al descargar el wiki: "
#: ../../Zotlabs/Module/Wiki.php:197 ../../addon/gitwiki/Mod_Gitwiki.php:146
-#: ../../include/conversation.php:1897 ../../include/nav.php:504
+#: ../../include/conversation.php:1925 ../../include/nav.php:526
msgid "Wikis"
msgstr "Wikis"
@@ -4781,22 +4869,25 @@ msgstr "Nombre del wiki"
msgid "Content type"
msgstr "Tipo de contenido"
-#: ../../Zotlabs/Module/Wiki.php:208 ../../Zotlabs/Module/Wiki.php:336
-#: ../../Zotlabs/Widget/Wiki_pages.php:57 ../../include/text.php:1802
+#: ../../Zotlabs/Module/Wiki.php:208 ../../Zotlabs/Module/Wiki.php:348
+#: ../../Zotlabs/Widget/Wiki_pages.php:36
+#: ../../Zotlabs/Widget/Wiki_pages.php:93 ../../include/text.php:1802
+#: ../../include/features.php:378
msgid "Markdown"
msgstr "Markdown"
-#: ../../Zotlabs/Module/Wiki.php:208 ../../Zotlabs/Module/Wiki.php:336
-#: ../../Zotlabs/Widget/Wiki_pages.php:57 ../../include/text.php:1800
+#: ../../Zotlabs/Module/Wiki.php:208 ../../Zotlabs/Module/Wiki.php:348
+#: ../../Zotlabs/Widget/Wiki_pages.php:36
+#: ../../Zotlabs/Widget/Wiki_pages.php:93 ../../include/text.php:1800
msgid "BBcode"
msgstr "BBcode"
-#: ../../Zotlabs/Module/Wiki.php:208 ../../Zotlabs/Widget/Wiki_pages.php:57
-#: ../../include/text.php:1803
+#: ../../Zotlabs/Module/Wiki.php:208 ../../Zotlabs/Widget/Wiki_pages.php:36
+#: ../../Zotlabs/Widget/Wiki_pages.php:93 ../../include/text.php:1803
msgid "Text"
msgstr "Texto"
-#: ../../Zotlabs/Module/Wiki.php:210 ../../Zotlabs/Storage/Browser.php:235
+#: ../../Zotlabs/Module/Wiki.php:210 ../../Zotlabs/Storage/Browser.php:281
#: ../../addon/gitwiki/Mod_Gitwiki.php:159
msgid "Type"
msgstr "Tipo"
@@ -4825,127 +4916,127 @@ msgstr "Wiki no encontrado"
msgid "Rename page"
msgstr "Renombrar la página"
-#: ../../Zotlabs/Module/Wiki.php:296 ../../addon/gitwiki/Mod_Gitwiki.php:214
+#: ../../Zotlabs/Module/Wiki.php:305 ../../addon/gitwiki/Mod_Gitwiki.php:214
msgid "Error retrieving page content"
msgstr "Error al recuperar el contenido de la página"
-#: ../../Zotlabs/Module/Wiki.php:302 ../../Zotlabs/Module/Wiki.php:304
+#: ../../Zotlabs/Module/Wiki.php:313 ../../Zotlabs/Module/Wiki.php:315
msgid "New page"
msgstr "Nueva página"
-#: ../../Zotlabs/Module/Wiki.php:331 ../../addon/gitwiki/Mod_Gitwiki.php:242
+#: ../../Zotlabs/Module/Wiki.php:343 ../../addon/gitwiki/Mod_Gitwiki.php:242
msgid "Revision Comparison"
msgstr "Comparación de revisiones"
-#: ../../Zotlabs/Module/Wiki.php:332 ../../addon/gitwiki/Mod_Gitwiki.php:243
+#: ../../Zotlabs/Module/Wiki.php:344 ../../addon/gitwiki/Mod_Gitwiki.php:243
msgid "Revert"
msgstr "Revertir"
-#: ../../Zotlabs/Module/Wiki.php:339
+#: ../../Zotlabs/Module/Wiki.php:351
msgid "Short description of your changes (optional)"
msgstr "Breve descripción de sus cambios (opcional)"
-#: ../../Zotlabs/Module/Wiki.php:346 ../../addon/gitwiki/Mod_Gitwiki.php:252
+#: ../../Zotlabs/Module/Wiki.php:358 ../../addon/gitwiki/Mod_Gitwiki.php:252
msgid "Source"
msgstr "Fuente"
-#: ../../Zotlabs/Module/Wiki.php:356 ../../addon/gitwiki/Mod_Gitwiki.php:260
+#: ../../Zotlabs/Module/Wiki.php:368 ../../addon/gitwiki/Mod_Gitwiki.php:260
msgid "New page name"
msgstr "Nombre de la nueva página"
-#: ../../Zotlabs/Module/Wiki.php:361 ../../addon/gitwiki/Mod_Gitwiki.php:265
-#: ../../include/conversation.php:1265
+#: ../../Zotlabs/Module/Wiki.php:373 ../../addon/gitwiki/Mod_Gitwiki.php:265
+#: ../../include/conversation.php:1282
msgid "Embed image from photo albums"
msgstr "Incluir una imagen de los álbumes de fotos"
-#: ../../Zotlabs/Module/Wiki.php:362 ../../addon/gitwiki/Mod_Gitwiki.php:266
-#: ../../include/conversation.php:1368
+#: ../../Zotlabs/Module/Wiki.php:374 ../../addon/gitwiki/Mod_Gitwiki.php:266
+#: ../../include/conversation.php:1385
msgid "Embed an image from your albums"
msgstr "Incluir una imagen de sus álbumes"
-#: ../../Zotlabs/Module/Wiki.php:364 ../../addon/gitwiki/Mod_Gitwiki.php:268
-#: ../../include/conversation.php:1370 ../../include/conversation.php:1417
+#: ../../Zotlabs/Module/Wiki.php:376 ../../addon/gitwiki/Mod_Gitwiki.php:268
+#: ../../include/conversation.php:1387 ../../include/conversation.php:1434
msgid "OK"
msgstr "OK"
-#: ../../Zotlabs/Module/Wiki.php:365 ../../addon/gitwiki/Mod_Gitwiki.php:269
-#: ../../include/conversation.php:1301
+#: ../../Zotlabs/Module/Wiki.php:377 ../../addon/gitwiki/Mod_Gitwiki.php:269
+#: ../../include/conversation.php:1318
msgid "Choose images to embed"
msgstr "Elegir imágenes para incluir"
-#: ../../Zotlabs/Module/Wiki.php:366 ../../addon/gitwiki/Mod_Gitwiki.php:270
-#: ../../include/conversation.php:1302
+#: ../../Zotlabs/Module/Wiki.php:378 ../../addon/gitwiki/Mod_Gitwiki.php:270
+#: ../../include/conversation.php:1319
msgid "Choose an album"
msgstr "Elegir un álbum"
-#: ../../Zotlabs/Module/Wiki.php:367 ../../addon/gitwiki/Mod_Gitwiki.php:271
+#: ../../Zotlabs/Module/Wiki.php:379 ../../addon/gitwiki/Mod_Gitwiki.php:271
msgid "Choose a different album"
msgstr "Elegir un álbum diferente..."
-#: ../../Zotlabs/Module/Wiki.php:368 ../../addon/gitwiki/Mod_Gitwiki.php:272
-#: ../../include/conversation.php:1304
+#: ../../Zotlabs/Module/Wiki.php:380 ../../addon/gitwiki/Mod_Gitwiki.php:272
+#: ../../include/conversation.php:1321
msgid "Error getting album list"
msgstr "Error al obtener la lista de álbumes"
-#: ../../Zotlabs/Module/Wiki.php:369 ../../addon/gitwiki/Mod_Gitwiki.php:273
-#: ../../include/conversation.php:1305
+#: ../../Zotlabs/Module/Wiki.php:381 ../../addon/gitwiki/Mod_Gitwiki.php:273
+#: ../../include/conversation.php:1322
msgid "Error getting photo link"
msgstr "Error al obtener el enlace de la foto"
-#: ../../Zotlabs/Module/Wiki.php:370 ../../addon/gitwiki/Mod_Gitwiki.php:274
-#: ../../include/conversation.php:1306
+#: ../../Zotlabs/Module/Wiki.php:382 ../../addon/gitwiki/Mod_Gitwiki.php:274
+#: ../../include/conversation.php:1323
msgid "Error getting album"
msgstr "Error al obtener el álbum"
-#: ../../Zotlabs/Module/Wiki.php:442 ../../addon/gitwiki/Mod_Gitwiki.php:337
+#: ../../Zotlabs/Module/Wiki.php:458 ../../addon/gitwiki/Mod_Gitwiki.php:337
msgid "Error creating wiki. Invalid name."
msgstr "Error al crear el wiki: el nombre no es válido."
-#: ../../Zotlabs/Module/Wiki.php:449
+#: ../../Zotlabs/Module/Wiki.php:465
msgid "A wiki with this name already exists."
msgstr "Ya hay un wiki con este nombre."
-#: ../../Zotlabs/Module/Wiki.php:462 ../../addon/gitwiki/Mod_Gitwiki.php:348
+#: ../../Zotlabs/Module/Wiki.php:478 ../../addon/gitwiki/Mod_Gitwiki.php:348
msgid "Wiki created, but error creating Home page."
msgstr "Se ha creado el wiki, pero se ha producido un error al crear la página de inicio."
-#: ../../Zotlabs/Module/Wiki.php:469 ../../addon/gitwiki/Mod_Gitwiki.php:353
+#: ../../Zotlabs/Module/Wiki.php:485 ../../addon/gitwiki/Mod_Gitwiki.php:353
msgid "Error creating wiki"
msgstr "Error al crear el wiki"
-#: ../../Zotlabs/Module/Wiki.php:492
+#: ../../Zotlabs/Module/Wiki.php:508
msgid "Error updating wiki. Invalid name."
msgstr "Error al actualizar el wiki. Nombre no válido."
-#: ../../Zotlabs/Module/Wiki.php:512
+#: ../../Zotlabs/Module/Wiki.php:528
msgid "Error updating wiki"
msgstr "Error al actualizar el wiki"
-#: ../../Zotlabs/Module/Wiki.php:527
+#: ../../Zotlabs/Module/Wiki.php:543
msgid "Wiki delete permission denied."
msgstr "Se ha denegado el permiso para eliminar el wiki."
-#: ../../Zotlabs/Module/Wiki.php:537
+#: ../../Zotlabs/Module/Wiki.php:553
msgid "Error deleting wiki"
msgstr "Se ha producido un error al eliminar el wiki"
-#: ../../Zotlabs/Module/Wiki.php:565 ../../addon/gitwiki/Mod_Gitwiki.php:400
+#: ../../Zotlabs/Module/Wiki.php:586 ../../addon/gitwiki/Mod_Gitwiki.php:400
msgid "New page created"
msgstr "Se ha creado la nueva página"
-#: ../../Zotlabs/Module/Wiki.php:686
+#: ../../Zotlabs/Module/Wiki.php:707
msgid "Cannot delete Home"
msgstr "No se puede eliminar la página principal"
-#: ../../Zotlabs/Module/Wiki.php:750
+#: ../../Zotlabs/Module/Wiki.php:771
msgid "Current Revision"
msgstr "Revisión actual"
-#: ../../Zotlabs/Module/Wiki.php:750
+#: ../../Zotlabs/Module/Wiki.php:771
msgid "Selected Revision"
msgstr "Revisión seleccionada"
-#: ../../Zotlabs/Module/Wiki.php:800
+#: ../../Zotlabs/Module/Wiki.php:821
msgid "You must be authenticated."
msgstr "Debe estar autenticado."
@@ -4961,7 +5052,7 @@ msgstr "Plantilla actualizada."
msgid "Feature disabled."
msgstr "Funcionalidad deshabilitada."
-#: ../../Zotlabs/Module/Pdledit.php:47 ../../Zotlabs/Module/Pdledit.php:88
+#: ../../Zotlabs/Module/Pdledit.php:47 ../../Zotlabs/Module/Pdledit.php:90
msgid "Edit System Page Description"
msgstr "Editor del Sistema de Descripción de Páginas"
@@ -4973,24 +5064,28 @@ msgstr "(modificado)"
msgid "Reset"
msgstr "Reiniciar"
-#: ../../Zotlabs/Module/Pdledit.php:83
+#: ../../Zotlabs/Module/Pdledit.php:85
msgid "Layout not found."
msgstr "Plantilla no encontrada"
-#: ../../Zotlabs/Module/Pdledit.php:89
+#: ../../Zotlabs/Module/Pdledit.php:91
msgid "Module Name:"
msgstr "Nombre del módulo:"
-#: ../../Zotlabs/Module/Pdledit.php:90
+#: ../../Zotlabs/Module/Pdledit.php:92
msgid "Layout Help"
msgstr "Ayuda para el diseño de plantillas de página"
-#: ../../Zotlabs/Module/Pdledit.php:91
+#: ../../Zotlabs/Module/Pdledit.php:93
msgid "Edit another layout"
msgstr "Editar otro diseño"
+#: ../../Zotlabs/Module/Pdledit.php:94
+msgid "System layout"
+msgstr "Diseño del sistema"
+
#: ../../Zotlabs/Module/Poke.php:182 ../../Zotlabs/Lib/Apps.php:248
-#: ../../include/conversation.php:1075
+#: ../../include/conversation.php:1092
msgid "Poke"
msgstr "Toques y otras cosas"
@@ -5024,8 +5119,8 @@ msgid "Image uploaded but image cropping failed."
msgstr "Imagen actualizada, pero el recorte de la imagen ha fallado. "
#: ../../Zotlabs/Module/Profile_photo.php:115
-#: ../../Zotlabs/Module/Profile_photo.php:234
-#: ../../include/photo/photo_driver.php:710
+#: ../../Zotlabs/Module/Profile_photo.php:240
+#: ../../include/photo/photo_driver.php:740
msgid "Profile Photos"
msgstr "Fotos del perfil"
@@ -5034,80 +5129,80 @@ msgstr "Fotos del perfil"
msgid "Image resize failed."
msgstr "El ajuste del tamaño de la imagen ha fallado."
-#: ../../Zotlabs/Module/Profile_photo.php:204
+#: ../../Zotlabs/Module/Profile_photo.php:210
#: ../../addon/openclipatar/openclipatar.php:298
msgid ""
"Shift-reload the page or clear browser cache if the new photo does not "
"display immediately."
msgstr "Recargue la página o limpie el caché del navegador si la nueva foto no se muestra inmediatamente."
-#: ../../Zotlabs/Module/Profile_photo.php:211
-#: ../../Zotlabs/Module/Cover_photo.php:173 ../../include/photos.php:156
+#: ../../Zotlabs/Module/Profile_photo.php:217
+#: ../../Zotlabs/Module/Cover_photo.php:173 ../../include/photos.php:195
msgid "Unable to process image"
msgstr "No ha sido posible procesar la imagen"
-#: ../../Zotlabs/Module/Profile_photo.php:246
+#: ../../Zotlabs/Module/Profile_photo.php:252
#: ../../Zotlabs/Module/Cover_photo.php:197
msgid "Image upload failed."
msgstr "La carga de la imagen ha fallado."
-#: ../../Zotlabs/Module/Profile_photo.php:265
+#: ../../Zotlabs/Module/Profile_photo.php:271
#: ../../Zotlabs/Module/Cover_photo.php:214
msgid "Unable to process image."
msgstr "No ha sido posible procesar la imagen."
-#: ../../Zotlabs/Module/Profile_photo.php:326
-#: ../../Zotlabs/Module/Profile_photo.php:373
+#: ../../Zotlabs/Module/Profile_photo.php:332
+#: ../../Zotlabs/Module/Profile_photo.php:379
#: ../../Zotlabs/Module/Cover_photo.php:307
#: ../../Zotlabs/Module/Cover_photo.php:322
msgid "Photo not available."
msgstr "Foto no disponible."
-#: ../../Zotlabs/Module/Profile_photo.php:428
+#: ../../Zotlabs/Module/Profile_photo.php:434
#: ../../Zotlabs/Module/Cover_photo.php:358
msgid "Upload File:"
msgstr "Subir fichero:"
-#: ../../Zotlabs/Module/Profile_photo.php:429
+#: ../../Zotlabs/Module/Profile_photo.php:435
#: ../../Zotlabs/Module/Cover_photo.php:359
msgid "Select a profile:"
msgstr "Seleccionar un perfil:"
-#: ../../Zotlabs/Module/Profile_photo.php:430
+#: ../../Zotlabs/Module/Profile_photo.php:436
msgid "Use Photo for Profile"
msgstr "Usar la fotografía para el perfil"
-#: ../../Zotlabs/Module/Profile_photo.php:430
+#: ../../Zotlabs/Module/Profile_photo.php:436
msgid "Upload Profile Photo"
msgstr "Subir foto de perfil"
-#: ../../Zotlabs/Module/Profile_photo.php:431
+#: ../../Zotlabs/Module/Profile_photo.php:437
#: ../../addon/openclipatar/openclipatar.php:182
#: ../../addon/openclipatar/openclipatar.php:194
msgid "Use"
msgstr "Usar"
-#: ../../Zotlabs/Module/Profile_photo.php:437
+#: ../../Zotlabs/Module/Profile_photo.php:443
#: ../../Zotlabs/Module/Cover_photo.php:365
msgid "skip this step"
msgstr "Omitir este paso"
-#: ../../Zotlabs/Module/Profile_photo.php:437
+#: ../../Zotlabs/Module/Profile_photo.php:443
#: ../../Zotlabs/Module/Cover_photo.php:365
msgid "select a photo from your photo albums"
msgstr "Seleccione una foto de sus álbumes de fotos"
-#: ../../Zotlabs/Module/Profile_photo.php:456
+#: ../../Zotlabs/Module/Profile_photo.php:462
#: ../../Zotlabs/Module/Cover_photo.php:381
msgid "Crop Image"
msgstr "Recortar imagen"
-#: ../../Zotlabs/Module/Profile_photo.php:457
+#: ../../Zotlabs/Module/Profile_photo.php:463
#: ../../Zotlabs/Module/Cover_photo.php:382
msgid "Please adjust the image cropping for optimum viewing."
msgstr "Por favor ajuste el recorte de la imagen para una visión óptima."
-#: ../../Zotlabs/Module/Profile_photo.php:459
+#: ../../Zotlabs/Module/Profile_photo.php:465
#: ../../Zotlabs/Module/Cover_photo.php:384
msgid "Done Editing"
msgstr "Edición completada"
@@ -5120,65 +5215,65 @@ msgstr "Ausente"
msgid "Online"
msgstr "Conectado/a"
-#: ../../Zotlabs/Module/Item.php:185
+#: ../../Zotlabs/Module/Item.php:193
msgid "Unable to locate original post."
msgstr "No ha sido posible encontrar la entrada original."
-#: ../../Zotlabs/Module/Item.php:470
+#: ../../Zotlabs/Module/Item.php:475
msgid "Empty post discarded."
msgstr "La entrada vacía ha sido desechada."
-#: ../../Zotlabs/Module/Item.php:870
+#: ../../Zotlabs/Module/Item.php:853
msgid "Duplicate post suppressed."
msgstr "Se ha suprimido la entrada duplicada."
-#: ../../Zotlabs/Module/Item.php:1015
+#: ../../Zotlabs/Module/Item.php:998
msgid "System error. Post not saved."
msgstr "Error del sistema. La entrada no se ha podido salvar."
-#: ../../Zotlabs/Module/Item.php:1051
+#: ../../Zotlabs/Module/Item.php:1034
msgid "Your comment is awaiting approval."
msgstr "Su comentario está pendiente de aprobación."
-#: ../../Zotlabs/Module/Item.php:1156
+#: ../../Zotlabs/Module/Item.php:1139
msgid "Unable to obtain post information from database."
msgstr "No ha sido posible obtener información de la entrada en la base de datos."
-#: ../../Zotlabs/Module/Item.php:1163
+#: ../../Zotlabs/Module/Item.php:1168
#, php-format
msgid "You have reached your limit of %1$.0f top level posts."
msgstr "Ha alcanzado su límite de %1$.0f entradas en la página principal."
-#: ../../Zotlabs/Module/Item.php:1170
+#: ../../Zotlabs/Module/Item.php:1175
#, php-format
msgid "You have reached your limit of %1$.0f webpages."
msgstr "Ha alcanzado su límite de %1$.0f páginas web."
-#: ../../Zotlabs/Module/Ping.php:318
+#: ../../Zotlabs/Module/Ping.php:311
msgid "sent you a private message"
msgstr "le ha enviado un mensaje privado"
-#: ../../Zotlabs/Module/Ping.php:369
+#: ../../Zotlabs/Module/Ping.php:360
msgid "added your channel"
msgstr "añadió este canal a sus conexiones"
-#: ../../Zotlabs/Module/Ping.php:393
+#: ../../Zotlabs/Module/Ping.php:384
msgid "requires approval"
msgstr "requiere aprobación"
-#: ../../Zotlabs/Module/Ping.php:403
+#: ../../Zotlabs/Module/Ping.php:394
msgid "g A l F d"
msgstr "g A l d F"
-#: ../../Zotlabs/Module/Ping.php:421
+#: ../../Zotlabs/Module/Ping.php:412
msgid "[today]"
msgstr "[hoy]"
-#: ../../Zotlabs/Module/Ping.php:430
+#: ../../Zotlabs/Module/Ping.php:421
msgid "posted an event"
msgstr "publicó un evento"
-#: ../../Zotlabs/Module/Ping.php:463
+#: ../../Zotlabs/Module/Ping.php:454
msgid "shared a file with you"
msgstr "compartió un archivo con usted"
@@ -5186,14 +5281,14 @@ msgstr "compartió un archivo con usted"
msgid "Invalid item."
msgstr "Elemento no válido."
-#: ../../Zotlabs/Module/Page.php:128 ../../Zotlabs/Module/Block.php:77
-#: ../../Zotlabs/Module/Display.php:120
-#: ../../Zotlabs/Lib/NativeWikiPage.php:515 ../../Zotlabs/Web/Router.php:158
+#: ../../Zotlabs/Module/Page.php:136 ../../Zotlabs/Module/Block.php:77
+#: ../../Zotlabs/Module/Display.php:133
+#: ../../Zotlabs/Lib/NativeWikiPage.php:519 ../../Zotlabs/Web/Router.php:168
#: ../../include/help.php:81
msgid "Page not found."
msgstr "Página no encontrada."
-#: ../../Zotlabs/Module/Page.php:165
+#: ../../Zotlabs/Module/Page.php:173
msgid ""
"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod "
"tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,"
@@ -5203,7 +5298,7 @@ msgid ""
"non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
msgstr "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
-#: ../../Zotlabs/Module/Connedit.php:79
+#: ../../Zotlabs/Module/Connedit.php:79 ../../Zotlabs/Module/Defperms.php:59
msgid "Could not access contact record."
msgstr "No se ha podido acceder al registro de contacto."
@@ -5243,7 +5338,7 @@ msgstr "La conexión ha sido eliminada."
#: ../../Zotlabs/Module/Connedit.php:594 ../../Zotlabs/Lib/Apps.php:241
#: ../../addon/openclipatar/openclipatar.php:57
-#: ../../include/conversation.php:1015 ../../include/nav.php:141
+#: ../../include/conversation.php:1032 ../../include/nav.php:148
msgid "View Profile"
msgstr "Ver el perfil"
@@ -5411,17 +5506,17 @@ msgid ""
"not supported by their network."
msgstr "Esta conexión no es accesible desde este sitio. La independencia de ubicación no es compatible con su red."
-#: ../../Zotlabs/Module/Connedit.php:867
+#: ../../Zotlabs/Module/Connedit.php:867 ../../Zotlabs/Module/Defperms.php:238
#: ../../Zotlabs/Widget/Settings_menu.php:109
msgid "Connection Default Permissions"
msgstr "Permisos predeterminados de conexión"
-#: ../../Zotlabs/Module/Connedit.php:867 ../../include/items.php:3974
+#: ../../Zotlabs/Module/Connedit.php:867 ../../include/items.php:4134
#, php-format
msgid "Connection: %s"
msgstr "Conexión: %s"
-#: ../../Zotlabs/Module/Connedit.php:868
+#: ../../Zotlabs/Module/Connedit.php:868 ../../Zotlabs/Module/Defperms.php:239
msgid "Apply these permissions automatically"
msgstr "Aplicar estos permisos automaticamente"
@@ -5429,11 +5524,11 @@ msgstr "Aplicar estos permisos automaticamente"
msgid "Connection requests will be approved without your interaction"
msgstr "Las solicitudes de conexión serán aprobadas sin su intervención"
-#: ../../Zotlabs/Module/Connedit.php:869
+#: ../../Zotlabs/Module/Connedit.php:869 ../../Zotlabs/Module/Defperms.php:240
msgid "Permission role"
msgstr "Rol de acceso"
-#: ../../Zotlabs/Module/Connedit.php:870
+#: ../../Zotlabs/Module/Connedit.php:870 ../../Zotlabs/Module/Defperms.php:241
msgid "Add permission role"
msgstr "Añadir un rol de acceso"
@@ -5445,7 +5540,7 @@ msgstr "La dirección primaria de esta conexión es"
msgid "Available locations:"
msgstr "Ubicaciones disponibles:"
-#: ../../Zotlabs/Module/Connedit.php:883
+#: ../../Zotlabs/Module/Connedit.php:883 ../../Zotlabs/Module/Defperms.php:245
msgid ""
"The permissions indicated on this page will be applied to all new "
"connections."
@@ -5546,13 +5641,13 @@ msgid "Bookmark this room"
msgstr "Añadir esta sala a Marcadores"
#: ../../Zotlabs/Module/Chat.php:205 ../../Zotlabs/Module/Mail.php:241
-#: ../../Zotlabs/Module/Mail.php:362 ../../include/conversation.php:1296
+#: ../../Zotlabs/Module/Mail.php:362 ../../include/conversation.php:1313
msgid "Please enter a link URL:"
msgstr "Por favor, introduzca la dirección del enlace:"
#: ../../Zotlabs/Module/Chat.php:206 ../../Zotlabs/Module/Mail.php:294
-#: ../../Zotlabs/Module/Mail.php:436 ../../Zotlabs/Lib/ThreadItem.php:757
-#: ../../include/conversation.php:1415
+#: ../../Zotlabs/Module/Mail.php:436 ../../Zotlabs/Lib/ThreadItem.php:768
+#: ../../include/conversation.php:1432
msgid "Encrypt text"
msgstr "Cifrar texto"
@@ -5586,13 +5681,13 @@ msgid "min"
msgstr "min"
#: ../../Zotlabs/Module/Fbrowser.php:29 ../../Zotlabs/Lib/Apps.php:242
-#: ../../include/conversation.php:1814 ../../include/nav.php:422
+#: ../../include/conversation.php:1831 ../../include/nav.php:433
msgid "Photos"
msgstr "Fotos"
#: ../../Zotlabs/Module/Fbrowser.php:85 ../../Zotlabs/Lib/Apps.php:237
-#: ../../Zotlabs/Storage/Browser.php:225 ../../include/conversation.php:1822
-#: ../../include/nav.php:430
+#: ../../Zotlabs/Storage/Browser.php:269 ../../include/conversation.php:1839
+#: ../../include/nav.php:441
msgid "Files"
msgstr "Ficheros"
@@ -5689,7 +5784,7 @@ msgid "Layouts"
msgstr "Plantillas"
#: ../../Zotlabs/Module/Layouts.php:186 ../../Zotlabs/Lib/Apps.php:245
-#: ../../include/nav.php:201 ../../include/nav.php:301
+#: ../../include/nav.php:208 ../../include/nav.php:312
#: ../../include/help.php:68 ../../include/help.php:74
msgid "Help"
msgstr "Ayuda"
@@ -5706,17 +5801,25 @@ msgstr "Descripción de la plantilla"
msgid "Download PDL file"
msgstr "Descargar el fichero PDL"
-#: ../../Zotlabs/Module/Tagger.php:55 ../../include/markdown.php:141
-#: ../../include/bbcode.php:333
+#: ../../Zotlabs/Module/Cloud.php:114
+msgid "Unknown error"
+msgstr "Error desconocido"
+
+#: ../../Zotlabs/Module/Tagger.php:48
+msgid "Post not found."
+msgstr "Mensaje no encontrado."
+
+#: ../../Zotlabs/Module/Tagger.php:77 ../../include/markdown.php:160
+#: ../../include/bbcode.php:335
msgid "post"
msgstr "la entrada"
-#: ../../Zotlabs/Module/Tagger.php:57 ../../include/conversation.php:146
+#: ../../Zotlabs/Module/Tagger.php:79 ../../include/conversation.php:146
#: ../../include/text.php:1946
msgid "comment"
msgstr "el comentario"
-#: ../../Zotlabs/Module/Tagger.php:95
+#: ../../Zotlabs/Module/Tagger.php:117
#, php-format
msgid "%1$s tagged %2$s's %3$s with %4$s"
msgstr "%1$s ha etiquetado %3$s de %2$s con %4$s"
@@ -5736,6 +5839,21 @@ msgid ""
" to correctly use this feature."
msgstr "Atención: El cambio de algunos ajustes puede volver inutilizable su canal. Por favor, abandone la página excepto que esté seguro y sepa cómo usar correctamente esta característica."
+#: ../../Zotlabs/Module/Defperms.php:239
+msgid ""
+"If enabled, connection requests will be approved without your interaction"
+msgstr "Si está habilitado, las solicitudes de conexión serán aprobadas sin su intervención."
+
+#: ../../Zotlabs/Module/Defperms.php:246
+msgid "Automatic approval settings"
+msgstr "Opciones de autorización automática"
+
+#: ../../Zotlabs/Module/Defperms.php:254
+msgid ""
+"Some individual permissions may have been preset or locked based on your "
+"channel type and privacy settings."
+msgstr "Es posible que se hayan preestablecido o bloqueado algunos permisos individuales según el tipo de canal y la configuración de privacidad."
+
#: ../../Zotlabs/Module/Group.php:24
msgid "Privacy group created."
msgstr "El grupo de canales ha sido creado."
@@ -5745,7 +5863,7 @@ msgid "Could not create privacy group."
msgstr "No se puede crear el grupo de canales"
#: ../../Zotlabs/Module/Group.php:42 ../../Zotlabs/Module/Group.php:143
-#: ../../include/items.php:3941
+#: ../../include/items.php:4101
msgid "Privacy group not found."
msgstr "Grupo de canales no encontrado."
@@ -5880,7 +5998,7 @@ msgid "View this profile"
msgstr "Ver este perfil"
#: ../../Zotlabs/Module/Profiles.php:728 ../../Zotlabs/Module/Profiles.php:827
-#: ../../include/channel.php:1284
+#: ../../include/channel.php:1320
msgid "Edit visibility"
msgstr "Editar visibilidad"
@@ -5892,7 +6010,7 @@ msgstr "Gestión del perfil"
msgid "Change cover photo"
msgstr "Cambiar la imagen de portada del perfil"
-#: ../../Zotlabs/Module/Profiles.php:731 ../../include/channel.php:1255
+#: ../../Zotlabs/Module/Profiles.php:731 ../../include/channel.php:1290
msgid "Change profile photo"
msgstr "Cambiar la foto del perfil"
@@ -5912,7 +6030,7 @@ msgstr "Eliminar este perfil"
msgid "Add profile things"
msgstr "Añadir cosas al perfil"
-#: ../../Zotlabs/Module/Profiles.php:736 ../../include/conversation.php:1688
+#: ../../Zotlabs/Module/Profiles.php:736 ../../include/conversation.php:1705
msgid "Personal"
msgstr "Personales"
@@ -5920,7 +6038,7 @@ msgstr "Personales"
msgid "Relation"
msgstr "Relación"
-#: ../../Zotlabs/Module/Profiles.php:739 ../../include/datetime.php:55
+#: ../../Zotlabs/Module/Profiles.php:739 ../../include/datetime.php:58
msgid "Miscellaneous"
msgstr "Varios"
@@ -6057,12 +6175,12 @@ msgstr "Mis otros canales"
msgid "Communications"
msgstr "Comunicaciones"
-#: ../../Zotlabs/Module/Profiles.php:823 ../../include/channel.php:1280
+#: ../../Zotlabs/Module/Profiles.php:823 ../../include/channel.php:1316
msgid "Profile Image"
msgstr "Imagen del perfil"
-#: ../../Zotlabs/Module/Profiles.php:833 ../../include/channel.php:1262
-#: ../../include/nav.php:144
+#: ../../Zotlabs/Module/Profiles.php:833 ../../include/channel.php:1297
+#: ../../include/nav.php:151
msgid "Edit Profiles"
msgstr "Editar perfiles"
@@ -6079,7 +6197,7 @@ msgid "Create a new channel"
msgstr "Crear un nuevo canal"
#: ../../Zotlabs/Module/Manage.php:170 ../../Zotlabs/Lib/Apps.php:234
-#: ../../include/nav.php:129 ../../include/nav.php:215
+#: ../../include/nav.php:136 ../../include/nav.php:222
msgid "Channel Manager"
msgstr "Administración de canales"
@@ -6113,12 +6231,6 @@ msgstr "%d nuevas solicitudes de conexión"
msgid "Delegated Channel"
msgstr "Canal delegado"
-#: ../../Zotlabs/Module/Cards.php:38 ../../Zotlabs/Module/Cards.php:178
-#: ../../Zotlabs/Lib/Apps.php:224 ../../include/conversation.php:1873
-#: ../../include/features.php:122 ../../include/nav.php:479
-msgid "Cards"
-msgstr "Fichas"
-
#: ../../Zotlabs/Module/Cards.php:95
msgid "Add Card"
msgstr "Añadir una ficha"
@@ -6139,7 +6251,7 @@ msgstr "Nombre del sitio"
msgid "Administrator"
msgstr "Administrador"
-#: ../../Zotlabs/Module/Siteinfo.php:26 ../../Zotlabs/Module/Register.php:221
+#: ../../Zotlabs/Module/Siteinfo.php:26 ../../Zotlabs/Module/Register.php:229
msgid "Terms of Service"
msgstr "Términos del servicio"
@@ -6174,7 +6286,7 @@ msgid "No ratings"
msgstr "Ninguna valoración"
#: ../../Zotlabs/Module/Ratings.php:97 ../../Zotlabs/Module/Pubsites.php:35
-#: ../../include/conversation.php:1065
+#: ../../include/conversation.php:1082
msgid "Ratings"
msgstr "Valoraciones"
@@ -6207,7 +6319,7 @@ msgid "Export selected"
msgstr "Exportar los elementos seleccionados"
#: ../../Zotlabs/Module/Webpages.php:237 ../../Zotlabs/Lib/Apps.php:238
-#: ../../include/conversation.php:1884 ../../include/nav.php:491
+#: ../../include/conversation.php:1912 ../../include/nav.php:513
msgid "Webpages"
msgstr "Páginas web"
@@ -6249,13 +6361,13 @@ msgid ""
" password."
msgstr "Los cambios en el nombre de un canal no está permitida hasta pasadas 48 horas desde el cambio de contraseña de la cuenta."
-#: ../../Zotlabs/Module/Changeaddr.php:46 ../../include/channel.php:209
-#: ../../include/channel.php:579
+#: ../../Zotlabs/Module/Changeaddr.php:46 ../../include/channel.php:214
+#: ../../include/channel.php:599
msgid "Reserved nickname. Please choose another."
msgstr "Sobrenombre en uso. Por favor, elija otro."
-#: ../../Zotlabs/Module/Changeaddr.php:51 ../../include/channel.php:214
-#: ../../include/channel.php:584
+#: ../../Zotlabs/Module/Changeaddr.php:51 ../../include/channel.php:219
+#: ../../include/channel.php:604
msgid ""
"Nickname has unsupported characters or is already being used on this site."
msgstr "El alias contiene caracteres no admitidos o está ya en uso por otros miembros de este sitio."
@@ -6341,7 +6453,8 @@ msgstr "correo enviado"
msgid "Delivery report for %1$s"
msgstr "Informe de entrega para %1$s"
-#: ../../Zotlabs/Module/Dreport.php:151 ../../Zotlabs/Widget/Wiki_pages.php:60
+#: ../../Zotlabs/Module/Dreport.php:151 ../../Zotlabs/Widget/Wiki_pages.php:39
+#: ../../Zotlabs/Widget/Wiki_pages.php:96
msgid "Options"
msgstr "Opciones"
@@ -6366,7 +6479,7 @@ msgid "*"
msgstr "*"
#: ../../Zotlabs/Module/Sources.php:96
-#: ../../Zotlabs/Widget/Settings_menu.php:125 ../../include/features.php:218
+#: ../../Zotlabs/Widget/Settings_menu.php:125 ../../include/features.php:228
msgid "Channel Sources"
msgstr "Orígenes de los contenidos del canal"
@@ -6422,200 +6535,200 @@ msgstr "Fuente eliminada"
msgid "Unable to remove source."
msgstr "No se puede eliminar la fuente."
-#: ../../Zotlabs/Module/Like.php:19
+#: ../../Zotlabs/Module/Like.php:22
msgid "Like/Dislike"
msgstr "Me gusta/No me gusta"
-#: ../../Zotlabs/Module/Like.php:24
+#: ../../Zotlabs/Module/Like.php:27
msgid "This action is restricted to members."
msgstr "Esta acción está restringida solo para miembros."
-#: ../../Zotlabs/Module/Like.php:25
+#: ../../Zotlabs/Module/Like.php:28
msgid ""
"Please <a href=\"rmagic\">login with your $Projectname ID</a> or <a "
"href=\"register\">register as a new $Projectname member</a> to continue."
msgstr "Por favor, <a href=\"rmagic\">identifíquese con su $Projectname ID</a> o <a href=\"register\">rregístrese como un nuevo $Projectname member</a> para continuar."
-#: ../../Zotlabs/Module/Like.php:105 ../../Zotlabs/Module/Like.php:131
-#: ../../Zotlabs/Module/Like.php:169
+#: ../../Zotlabs/Module/Like.php:108 ../../Zotlabs/Module/Like.php:134
+#: ../../Zotlabs/Module/Like.php:172
msgid "Invalid request."
msgstr "Solicitud incorrecta."
-#: ../../Zotlabs/Module/Like.php:117 ../../include/conversation.php:122
+#: ../../Zotlabs/Module/Like.php:120 ../../include/conversation.php:122
msgid "channel"
msgstr "el canal"
-#: ../../Zotlabs/Module/Like.php:146
+#: ../../Zotlabs/Module/Like.php:149
msgid "thing"
msgstr "elemento"
-#: ../../Zotlabs/Module/Like.php:192
+#: ../../Zotlabs/Module/Like.php:195
msgid "Channel unavailable."
msgstr "Canal no disponible."
-#: ../../Zotlabs/Module/Like.php:240
+#: ../../Zotlabs/Module/Like.php:243
msgid "Previous action reversed."
msgstr "Acción anterior revocada."
-#: ../../Zotlabs/Module/Like.php:423 ../../addon/diaspora/Receiver.php:1453
-#: ../../addon/pubcrawl/as.php:1323 ../../include/conversation.php:160
+#: ../../Zotlabs/Module/Like.php:435 ../../addon/diaspora/Receiver.php:1462
+#: ../../addon/pubcrawl/as.php:1330 ../../include/conversation.php:160
#, php-format
msgid "%1$s likes %2$s's %3$s"
msgstr "A %1$s le gusta %3$s de %2$s"
-#: ../../Zotlabs/Module/Like.php:425 ../../addon/pubcrawl/as.php:1325
+#: ../../Zotlabs/Module/Like.php:437 ../../addon/pubcrawl/as.php:1332
#: ../../include/conversation.php:163
#, php-format
msgid "%1$s doesn't like %2$s's %3$s"
msgstr "A %1$s no le gusta %3$s de %2$s"
-#: ../../Zotlabs/Module/Like.php:427
+#: ../../Zotlabs/Module/Like.php:439
#, php-format
msgid "%1$s agrees with %2$s's %3$s"
msgstr "%3$s de %2$s: %1$s está de acuerdo"
-#: ../../Zotlabs/Module/Like.php:429
+#: ../../Zotlabs/Module/Like.php:441
#, php-format
msgid "%1$s doesn't agree with %2$s's %3$s"
msgstr "%3$s de %2$s: %1$s no está de acuerdo"
-#: ../../Zotlabs/Module/Like.php:431
+#: ../../Zotlabs/Module/Like.php:443
#, php-format
msgid "%1$s abstains from a decision on %2$s's %3$s"
msgstr "%3$s de %2$s: %1$s se abstiene"
-#: ../../Zotlabs/Module/Like.php:433
+#: ../../Zotlabs/Module/Like.php:445
#, php-format
msgid "%1$s is attending %2$s's %3$s"
msgstr "%3$s de %2$s: %1$s participa"
-#: ../../Zotlabs/Module/Like.php:435
+#: ../../Zotlabs/Module/Like.php:447
#, php-format
msgid "%1$s is not attending %2$s's %3$s"
msgstr "%3$s de %2$s: %1$s no participa"
-#: ../../Zotlabs/Module/Like.php:437
+#: ../../Zotlabs/Module/Like.php:449
#, php-format
msgid "%1$s may attend %2$s's %3$s"
msgstr "%3$s de %2$s: %1$s quizá participe"
-#: ../../Zotlabs/Module/Like.php:547
+#: ../../Zotlabs/Module/Like.php:561
msgid "Action completed."
msgstr "Acción completada."
-#: ../../Zotlabs/Module/Like.php:548
+#: ../../Zotlabs/Module/Like.php:562
msgid "Thank you."
msgstr "Gracias."
-#: ../../Zotlabs/Module/Directory.php:245
+#: ../../Zotlabs/Module/Directory.php:250
#, php-format
msgid "%d rating"
msgid_plural "%d ratings"
msgstr[0] "%d valoración"
msgstr[1] "%d valoraciones"
-#: ../../Zotlabs/Module/Directory.php:256
+#: ../../Zotlabs/Module/Directory.php:261
msgid "Gender: "
msgstr "Género:"
-#: ../../Zotlabs/Module/Directory.php:258
+#: ../../Zotlabs/Module/Directory.php:263
msgid "Status: "
msgstr "Estado:"
-#: ../../Zotlabs/Module/Directory.php:260
+#: ../../Zotlabs/Module/Directory.php:265
msgid "Homepage: "
msgstr "Página personal:"
-#: ../../Zotlabs/Module/Directory.php:309 ../../include/channel.php:1516
+#: ../../Zotlabs/Module/Directory.php:314 ../../include/channel.php:1564
msgid "Age:"
msgstr "Edad:"
-#: ../../Zotlabs/Module/Directory.php:314 ../../include/channel.php:1352
-#: ../../include/event.php:52 ../../include/event.php:84
+#: ../../Zotlabs/Module/Directory.php:319 ../../include/channel.php:1392
+#: ../../include/event.php:53 ../../include/event.php:85
msgid "Location:"
msgstr "Ubicación:"
-#: ../../Zotlabs/Module/Directory.php:320
+#: ../../Zotlabs/Module/Directory.php:325
msgid "Description:"
msgstr "Descripción:"
-#: ../../Zotlabs/Module/Directory.php:325 ../../include/channel.php:1532
+#: ../../Zotlabs/Module/Directory.php:330 ../../include/channel.php:1580
msgid "Hometown:"
msgstr "Lugar de nacimiento:"
-#: ../../Zotlabs/Module/Directory.php:327 ../../include/channel.php:1540
+#: ../../Zotlabs/Module/Directory.php:332 ../../include/channel.php:1588
msgid "About:"
msgstr "Sobre mí:"
-#: ../../Zotlabs/Module/Directory.php:328 ../../Zotlabs/Module/Suggest.php:56
+#: ../../Zotlabs/Module/Directory.php:333 ../../Zotlabs/Module/Suggest.php:56
#: ../../Zotlabs/Widget/Follow.php:32 ../../Zotlabs/Widget/Suggestions.php:44
-#: ../../include/conversation.php:1035 ../../include/channel.php:1337
+#: ../../include/conversation.php:1052 ../../include/channel.php:1377
#: ../../include/connections.php:111
msgid "Connect"
msgstr "Conectar"
-#: ../../Zotlabs/Module/Directory.php:329
+#: ../../Zotlabs/Module/Directory.php:334
msgid "Public Forum:"
msgstr "Foro público:"
-#: ../../Zotlabs/Module/Directory.php:332
+#: ../../Zotlabs/Module/Directory.php:337
msgid "Keywords: "
msgstr "Palabras clave:"
-#: ../../Zotlabs/Module/Directory.php:335
+#: ../../Zotlabs/Module/Directory.php:340
msgid "Don't suggest"
msgstr "No sugerir:"
-#: ../../Zotlabs/Module/Directory.php:337
-msgid "Common connections:"
-msgstr "Conexiones comunes:"
+#: ../../Zotlabs/Module/Directory.php:342
+msgid "Common connections (estimated):"
+msgstr "Conexiones comunes (estimadas): "
-#: ../../Zotlabs/Module/Directory.php:386
+#: ../../Zotlabs/Module/Directory.php:391
msgid "Global Directory"
msgstr "Directorio global:"
-#: ../../Zotlabs/Module/Directory.php:386
+#: ../../Zotlabs/Module/Directory.php:391
msgid "Local Directory"
msgstr "Directorio local:"
-#: ../../Zotlabs/Module/Directory.php:392
+#: ../../Zotlabs/Module/Directory.php:397
msgid "Finding:"
msgstr "Encontrar:"
-#: ../../Zotlabs/Module/Directory.php:395 ../../Zotlabs/Module/Suggest.php:64
+#: ../../Zotlabs/Module/Directory.php:400 ../../Zotlabs/Module/Suggest.php:64
#: ../../include/contact_widgets.php:24
msgid "Channel Suggestions"
msgstr "Sugerencias de canales"
-#: ../../Zotlabs/Module/Directory.php:397
+#: ../../Zotlabs/Module/Directory.php:402
msgid "next page"
msgstr "siguiente página"
-#: ../../Zotlabs/Module/Directory.php:397
+#: ../../Zotlabs/Module/Directory.php:402
msgid "previous page"
msgstr "página anterior"
-#: ../../Zotlabs/Module/Directory.php:398
+#: ../../Zotlabs/Module/Directory.php:403
msgid "Sort options"
msgstr "Ordenar opciones"
-#: ../../Zotlabs/Module/Directory.php:399
+#: ../../Zotlabs/Module/Directory.php:404
msgid "Alphabetic"
msgstr "Alfabético"
-#: ../../Zotlabs/Module/Directory.php:400
+#: ../../Zotlabs/Module/Directory.php:405
msgid "Reverse Alphabetic"
msgstr "Alfabético inverso"
-#: ../../Zotlabs/Module/Directory.php:401
+#: ../../Zotlabs/Module/Directory.php:406
msgid "Newest to Oldest"
msgstr "De más nuevo a más antiguo"
-#: ../../Zotlabs/Module/Directory.php:402
+#: ../../Zotlabs/Module/Directory.php:407
msgid "Oldest to Newest"
msgstr "De más antiguo a más nuevo"
-#: ../../Zotlabs/Module/Directory.php:419
+#: ../../Zotlabs/Module/Directory.php:424
msgid "No entries (some entries may be hidden)."
msgstr "Sin entradas (algunas entradas pueden estar ocultas)."
@@ -6698,7 +6811,7 @@ msgid "Subject:"
msgstr "Asunto:"
#: ../../Zotlabs/Module/Mail.php:287 ../../Zotlabs/Module/Mail.php:429
-#: ../../include/conversation.php:1365
+#: ../../include/conversation.php:1382
msgid "Attach file"
msgstr "Adjuntar fichero"
@@ -6707,7 +6820,7 @@ msgid "Send"
msgstr "Enviar"
#: ../../Zotlabs/Module/Mail.php:292 ../../Zotlabs/Module/Mail.php:434
-#: ../../include/conversation.php:1410
+#: ../../include/conversation.php:1427
msgid "Set expiration date"
msgstr "Configurar fecha de caducidad"
@@ -6783,28 +6896,28 @@ msgstr "Software"
msgid "Rate"
msgstr "Valorar"
-#: ../../Zotlabs/Module/Impel.php:41 ../../include/bbcode.php:263
+#: ../../Zotlabs/Module/Impel.php:43 ../../include/bbcode.php:263
msgid "webpage"
msgstr "página web"
-#: ../../Zotlabs/Module/Impel.php:46 ../../include/bbcode.php:269
+#: ../../Zotlabs/Module/Impel.php:48 ../../include/bbcode.php:269
msgid "block"
msgstr "bloque"
-#: ../../Zotlabs/Module/Impel.php:51 ../../include/bbcode.php:266
+#: ../../Zotlabs/Module/Impel.php:53 ../../include/bbcode.php:266
msgid "layout"
msgstr "plantilla"
-#: ../../Zotlabs/Module/Impel.php:58 ../../include/bbcode.php:272
+#: ../../Zotlabs/Module/Impel.php:60 ../../include/bbcode.php:272
msgid "menu"
msgstr "menú"
-#: ../../Zotlabs/Module/Impel.php:181
+#: ../../Zotlabs/Module/Impel.php:183
#, php-format
msgid "%s element installed"
msgstr "%s elemento instalado"
-#: ../../Zotlabs/Module/Impel.php:184
+#: ../../Zotlabs/Module/Impel.php:186
#, php-format
msgid "%s element installation failed"
msgstr "Elemento con instalación fallida: %s"
@@ -6833,7 +6946,7 @@ msgstr "Escriba un nombre de carpeta"
msgid "or select an existing folder (doubleclick)"
msgstr "o seleccione una (con un doble click)"
-#: ../../Zotlabs/Module/Filer.php:54 ../../Zotlabs/Lib/ThreadItem.php:141
+#: ../../Zotlabs/Module/Filer.php:54 ../../Zotlabs/Lib/ThreadItem.php:151
msgid "Save to Folder"
msgstr "Guardar en carpeta"
@@ -6855,82 +6968,86 @@ msgstr "Por favor, confirme que acepta los Términos del servicio. El registro h
msgid "Passwords do not match."
msgstr "Las contraseñas no coinciden."
-#: ../../Zotlabs/Module/Register.php:131
+#: ../../Zotlabs/Module/Register.php:127 ../../Zotlabs/Module/Register.php:137
msgid ""
"Registration successful. Please check your email for validation "
"instructions."
msgstr "Registro realizado con éxito. Por favor, compruebe su correo electrónico para ver las instrucciones para validarlo."
-#: ../../Zotlabs/Module/Register.php:137
+#: ../../Zotlabs/Module/Register.php:135
+msgid "Registration successful. Continue to create your first channel..."
+msgstr "Registro exitoso. Continúe creando tu primer canal..."
+
+#: ../../Zotlabs/Module/Register.php:144
msgid "Your registration is pending approval by the site owner."
msgstr "Su registro está pendiente de aprobación por el propietario del sitio."
-#: ../../Zotlabs/Module/Register.php:140
+#: ../../Zotlabs/Module/Register.php:147
msgid "Your registration can not be processed."
msgstr "Su registro no puede ser procesado."
-#: ../../Zotlabs/Module/Register.php:184
+#: ../../Zotlabs/Module/Register.php:192
msgid "Registration on this hub is disabled."
msgstr "El registro está deshabilitado en este sitio."
-#: ../../Zotlabs/Module/Register.php:193
+#: ../../Zotlabs/Module/Register.php:201
msgid "Registration on this hub is by approval only."
msgstr "El registro en este hub está sometido a aprobación previa."
-#: ../../Zotlabs/Module/Register.php:194
+#: ../../Zotlabs/Module/Register.php:202
msgid "<a href=\"pubsites\">Register at another affiliated hub.</a>"
msgstr "<a href=\"pubsites\">Registrarse en otro hub afiliado.</a>"
-#: ../../Zotlabs/Module/Register.php:204
+#: ../../Zotlabs/Module/Register.php:212
msgid ""
"This site has exceeded the number of allowed daily account registrations. "
"Please try again tomorrow."
msgstr "Este sitio ha excedido el límite de inscripción diaria de cuentas. Por favor, inténtelo de nuevo mañana."
-#: ../../Zotlabs/Module/Register.php:227
+#: ../../Zotlabs/Module/Register.php:235
#, php-format
msgid "I accept the %s for this website"
msgstr "Acepto los %s de este sitio"
-#: ../../Zotlabs/Module/Register.php:229
+#: ../../Zotlabs/Module/Register.php:241
#, php-format
-msgid "I am over 13 years of age and accept the %s for this website"
-msgstr "Tengo más de 13 años de edad y acepto los %s de este sitio"
+msgid "I am over %s years of age and accept the %s for this website"
+msgstr "Tengo más de %s años de edad y acepto los %s de este sitio web"
-#: ../../Zotlabs/Module/Register.php:233
+#: ../../Zotlabs/Module/Register.php:245
msgid "Your email address"
msgstr "Su dirección de correo electrónico"
-#: ../../Zotlabs/Module/Register.php:234
+#: ../../Zotlabs/Module/Register.php:246
msgid "Choose a password"
msgstr "Elija una contraseña"
-#: ../../Zotlabs/Module/Register.php:235
+#: ../../Zotlabs/Module/Register.php:247
msgid "Please re-enter your password"
msgstr "Por favor, vuelva a escribir su contraseña"
-#: ../../Zotlabs/Module/Register.php:236
+#: ../../Zotlabs/Module/Register.php:248
msgid "Please enter your invitation code"
msgstr "Por favor, introduzca el código de su invitación"
-#: ../../Zotlabs/Module/Register.php:241
+#: ../../Zotlabs/Module/Register.php:253
msgid "no"
msgstr "no"
-#: ../../Zotlabs/Module/Register.php:241
+#: ../../Zotlabs/Module/Register.php:253
msgid "yes"
msgstr "sí"
-#: ../../Zotlabs/Module/Register.php:256
+#: ../../Zotlabs/Module/Register.php:268
msgid "Membership on this site is by invitation only."
msgstr "Para registrarse en este sitio es necesaria una invitación."
-#: ../../Zotlabs/Module/Register.php:268 ../../boot.php:1620
-#: ../../include/nav.php:189
+#: ../../Zotlabs/Module/Register.php:280 ../../boot.php:1645
+#: ../../include/nav.php:196
msgid "Register"
msgstr "Registrarse"
-#: ../../Zotlabs/Module/Register.php:269
+#: ../../Zotlabs/Module/Register.php:281
msgid ""
"This site may require email verification after submitting this form. If you "
"are returned to a login page, please check your email for instructions."
@@ -6941,30 +7058,30 @@ msgstr "Este sitio puede requerir una verificación de correo electrónico despu
msgid "Cover Photos"
msgstr "Imágenes de portada del perfil"
-#: ../../Zotlabs/Module/Cover_photo.php:237 ../../include/items.php:4320
+#: ../../Zotlabs/Module/Cover_photo.php:237 ../../include/items.php:4478
msgid "female"
msgstr "mujer"
-#: ../../Zotlabs/Module/Cover_photo.php:238 ../../include/items.php:4321
+#: ../../Zotlabs/Module/Cover_photo.php:238 ../../include/items.php:4479
#, php-format
msgid "%1$s updated her %2$s"
msgstr "%1$s ha actualizado su %2$s"
-#: ../../Zotlabs/Module/Cover_photo.php:239 ../../include/items.php:4322
+#: ../../Zotlabs/Module/Cover_photo.php:239 ../../include/items.php:4480
msgid "male"
msgstr "hombre"
-#: ../../Zotlabs/Module/Cover_photo.php:240 ../../include/items.php:4323
+#: ../../Zotlabs/Module/Cover_photo.php:240 ../../include/items.php:4481
#, php-format
msgid "%1$s updated his %2$s"
msgstr "%1$s ha actualizado su %2$s"
-#: ../../Zotlabs/Module/Cover_photo.php:242 ../../include/items.php:4325
+#: ../../Zotlabs/Module/Cover_photo.php:242 ../../include/items.php:4483
#, php-format
msgid "%1$s updated their %2$s"
msgstr "%1$s ha actualizado su %2$s"
-#: ../../Zotlabs/Module/Cover_photo.php:244 ../../include/channel.php:1980
+#: ../../Zotlabs/Module/Cover_photo.php:244 ../../include/channel.php:2053
msgid "cover photo"
msgstr "Imagen de portada del perfil"
@@ -6976,8 +7093,8 @@ msgstr "Subir imagen de portada del perfil"
msgid "Documentation Search"
msgstr "Búsqueda de Documentación"
-#: ../../Zotlabs/Module/Help.php:80 ../../include/conversation.php:1804
-#: ../../include/nav.php:412
+#: ../../Zotlabs/Module/Help.php:80 ../../include/conversation.php:1821
+#: ../../include/nav.php:423
msgid "About"
msgstr "Mi perfil"
@@ -7001,7 +7118,11 @@ msgstr "Documentación de $Projectname"
msgid "Contents"
msgstr "Contenidos"
-#: ../../Zotlabs/Module/Display.php:340
+#: ../../Zotlabs/Module/Display.php:349
+msgid "Article"
+msgstr "Artículo"
+
+#: ../../Zotlabs/Module/Display.php:401
msgid "Item has been removed."
msgstr "Se ha eliminado el elemento."
@@ -7021,35 +7142,35 @@ msgstr "Seleccionar una etiqueta para eliminar:"
msgid "No such group"
msgstr "No se encuentra el grupo"
-#: ../../Zotlabs/Module/Network.php:136
+#: ../../Zotlabs/Module/Network.php:137
msgid "No such channel"
msgstr "No se encuentra el canal"
-#: ../../Zotlabs/Module/Network.php:141
+#: ../../Zotlabs/Module/Network.php:142
msgid "forum"
msgstr "foro"
-#: ../../Zotlabs/Module/Network.php:153
+#: ../../Zotlabs/Module/Network.php:154
msgid "Search Results For:"
msgstr "Buscar resultados para:"
-#: ../../Zotlabs/Module/Network.php:221
+#: ../../Zotlabs/Module/Network.php:222
msgid "Privacy group is empty"
msgstr "El grupo de canales está vacío"
-#: ../../Zotlabs/Module/Network.php:230
+#: ../../Zotlabs/Module/Network.php:231
msgid "Privacy group: "
msgstr "Grupo de canales: "
-#: ../../Zotlabs/Module/Network.php:256
+#: ../../Zotlabs/Module/Network.php:257
msgid "Invalid connection."
msgstr "Conexión no válida."
-#: ../../Zotlabs/Module/Network.php:275 ../../addon/redred/redred.php:65
+#: ../../Zotlabs/Module/Network.php:276 ../../addon/redred/redred.php:65
msgid "Invalid channel."
msgstr "El canal no es válido."
-#: ../../Zotlabs/Module/Acl.php:351
+#: ../../Zotlabs/Module/Acl.php:358
msgid "network"
msgstr "red"
@@ -7071,40 +7192,40 @@ msgstr "Permiso denegado"
msgid "File not found."
msgstr "Fichero no encontrado."
-#: ../../Zotlabs/Module/Filestorage.php:137
+#: ../../Zotlabs/Module/Filestorage.php:142
msgid "Edit file permissions"
msgstr "Modificar los permisos del fichero"
-#: ../../Zotlabs/Module/Filestorage.php:149
+#: ../../Zotlabs/Module/Filestorage.php:154
msgid "Set/edit permissions"
msgstr "Establecer/editar los permisos"
-#: ../../Zotlabs/Module/Filestorage.php:150
+#: ../../Zotlabs/Module/Filestorage.php:155
msgid "Include all files and sub folders"
msgstr "Incluir todos los ficheros y subcarpetas"
-#: ../../Zotlabs/Module/Filestorage.php:151
+#: ../../Zotlabs/Module/Filestorage.php:156
msgid "Return to file list"
msgstr "Volver a la lista de ficheros"
-#: ../../Zotlabs/Module/Filestorage.php:153
+#: ../../Zotlabs/Module/Filestorage.php:158
msgid "Copy/paste this code to attach file to a post"
msgstr "Copiar/pegar este código para adjuntar el fichero al envío"
-#: ../../Zotlabs/Module/Filestorage.php:154
+#: ../../Zotlabs/Module/Filestorage.php:159
msgid "Copy/paste this URL to link file from a web page"
msgstr "Copiar/pegar esta dirección para enlazar el fichero desde una página web"
-#: ../../Zotlabs/Module/Filestorage.php:156
+#: ../../Zotlabs/Module/Filestorage.php:161
msgid "Share this file"
msgstr "Compartir este fichero"
-#: ../../Zotlabs/Module/Filestorage.php:157
+#: ../../Zotlabs/Module/Filestorage.php:162
msgid "Show URL to this file"
msgstr "Mostrar la dirección de este fichero"
-#: ../../Zotlabs/Module/Filestorage.php:158
-#: ../../Zotlabs/Storage/Browser.php:351
+#: ../../Zotlabs/Module/Filestorage.php:163
+#: ../../Zotlabs/Storage/Browser.php:394
msgid "Show in your contacts shared folder"
msgstr "Mostrar en la carpeta compartida con sus contactos"
@@ -7238,7 +7359,7 @@ msgid ""
"Password reset failed."
msgstr "La solicitud no ha podido ser verificada. (Puede que la haya enviado con anterioridad) El restablecimiento de la contraseña ha fallado."
-#: ../../Zotlabs/Module/Lostpass.php:91 ../../boot.php:1648
+#: ../../Zotlabs/Module/Lostpass.php:91 ../../boot.php:1673
msgid "Password Reset"
msgstr "Restablecer la contraseña"
@@ -7283,8 +7404,8 @@ msgstr "Introduzca y envíe su dirección de correo electrónico para el restabl
msgid "Email Address"
msgstr "Dirección de correo electrónico"
-#: ../../Zotlabs/Module/Notifications.php:43
-#: ../../Zotlabs/Lib/ThreadItem.php:397
+#: ../../Zotlabs/Module/Notifications.php:62
+#: ../../Zotlabs/Lib/ThreadItem.php:408
msgid "Mark all seen"
msgstr "Marcar todo como visto"
@@ -7336,31 +7457,30 @@ msgstr "Servicio de compartición de Firefox"
msgid "Remote Diagnostics"
msgstr "Diagnóstico remoto"
-#: ../../Zotlabs/Lib/Apps.php:232 ../../include/features.php:342
+#: ../../Zotlabs/Lib/Apps.php:232 ../../include/features.php:352
msgid "Suggest Channels"
msgstr "Sugerir canales"
-#: ../../Zotlabs/Lib/Apps.php:233 ../../boot.php:1639
-#: ../../include/nav.php:153 ../../include/nav.php:157
+#: ../../Zotlabs/Lib/Apps.php:233 ../../boot.php:1664
+#: ../../include/nav.php:160 ../../include/nav.php:164
msgid "Login"
msgstr "Iniciar sesión"
-#: ../../Zotlabs/Lib/Apps.php:235 ../../include/nav.php:98
+#: ../../Zotlabs/Lib/Apps.php:235 ../../include/nav.php:105
msgid "Activity"
msgstr "Actividad"
-#: ../../Zotlabs/Lib/Apps.php:239 ../../include/conversation.php:1900
-#: ../../include/features.php:95 ../../include/nav.php:507
+#: ../../Zotlabs/Lib/Apps.php:239 ../../include/conversation.php:1928
+#: ../../include/features.php:95 ../../include/nav.php:529
msgid "Wiki"
msgstr "Wiki"
-#: ../../Zotlabs/Lib/Apps.php:240 ../../include/nav.php:102
+#: ../../Zotlabs/Lib/Apps.php:240 ../../include/nav.php:109
msgid "Channel Home"
msgstr "Mi canal"
-#: ../../Zotlabs/Lib/Apps.php:243 ../../include/conversation.php:1833
-#: ../../include/conversation.php:1836 ../../include/nav.php:124
-#: ../../include/nav.php:441 ../../include/nav.php:444
+#: ../../Zotlabs/Lib/Apps.php:243 ../../include/conversation.php:1850
+#: ../../include/conversation.php:1853 ../../include/nav.php:131
msgid "Events"
msgstr "Eventos"
@@ -7368,7 +7488,7 @@ msgstr "Eventos"
msgid "Directory"
msgstr "Directorio"
-#: ../../Zotlabs/Lib/Apps.php:246 ../../include/nav.php:116
+#: ../../Zotlabs/Lib/Apps.php:246 ../../include/nav.php:123
msgid "Mail"
msgstr "Correo"
@@ -7418,14 +7538,22 @@ msgstr "Comprar"
msgid "Undelete"
msgstr "Recuperar"
-#: ../../Zotlabs/Lib/Apps.php:407
+#: ../../Zotlabs/Lib/Apps.php:409
msgid "Add to app-tray"
msgstr "Añadir a la bandeja de aplicaciones"
-#: ../../Zotlabs/Lib/Apps.php:408
+#: ../../Zotlabs/Lib/Apps.php:410
msgid "Remove from app-tray"
msgstr "Quitar de la bandeja de aplicaciones"
+#: ../../Zotlabs/Lib/Apps.php:411
+msgid "Pin to navbar"
+msgstr "Fijar en la barra de navegación"
+
+#: ../../Zotlabs/Lib/Apps.php:412
+msgid "Unpin from navbar"
+msgstr "Quitar de la barra de navegación"
+
#: ../../Zotlabs/Lib/Permcat.php:58
msgctxt "permcat"
msgid "default"
@@ -7447,71 +7575,71 @@ msgid "publisher"
msgstr "editor"
#: ../../Zotlabs/Lib/NativeWikiPage.php:42
-#: ../../Zotlabs/Lib/NativeWikiPage.php:90
+#: ../../Zotlabs/Lib/NativeWikiPage.php:93
msgid "(No Title)"
msgstr "(Sin título)"
-#: ../../Zotlabs/Lib/NativeWikiPage.php:104
+#: ../../Zotlabs/Lib/NativeWikiPage.php:107
msgid "Wiki page create failed."
msgstr "Se ha producido un error en la creación de la página wiki."
-#: ../../Zotlabs/Lib/NativeWikiPage.php:117
+#: ../../Zotlabs/Lib/NativeWikiPage.php:120
msgid "Wiki not found."
msgstr "No se ha encontrado el wiki."
-#: ../../Zotlabs/Lib/NativeWikiPage.php:128
+#: ../../Zotlabs/Lib/NativeWikiPage.php:131
msgid "Destination name already exists"
msgstr "El nombre de destino ya existe"
-#: ../../Zotlabs/Lib/NativeWikiPage.php:160
-#: ../../Zotlabs/Lib/NativeWikiPage.php:355
+#: ../../Zotlabs/Lib/NativeWikiPage.php:163
+#: ../../Zotlabs/Lib/NativeWikiPage.php:359
msgid "Page not found"
msgstr "No se ha encontrado la página"
-#: ../../Zotlabs/Lib/NativeWikiPage.php:191
+#: ../../Zotlabs/Lib/NativeWikiPage.php:194
msgid "Error reading page content"
msgstr "Se ha producido un error al leer el contenido de la página"
-#: ../../Zotlabs/Lib/NativeWikiPage.php:347
-#: ../../Zotlabs/Lib/NativeWikiPage.php:396
-#: ../../Zotlabs/Lib/NativeWikiPage.php:463
-#: ../../Zotlabs/Lib/NativeWikiPage.php:504
+#: ../../Zotlabs/Lib/NativeWikiPage.php:350
+#: ../../Zotlabs/Lib/NativeWikiPage.php:400
+#: ../../Zotlabs/Lib/NativeWikiPage.php:467
+#: ../../Zotlabs/Lib/NativeWikiPage.php:508
msgid "Error reading wiki"
msgstr "Se ha producido un error al leer el wiki"
-#: ../../Zotlabs/Lib/NativeWikiPage.php:384
+#: ../../Zotlabs/Lib/NativeWikiPage.php:388
msgid "Page update failed."
msgstr "Se ha producido un error al actualizar la página."
-#: ../../Zotlabs/Lib/NativeWikiPage.php:418
+#: ../../Zotlabs/Lib/NativeWikiPage.php:422
msgid "Nothing deleted"
msgstr "No se ha eliminado nada"
-#: ../../Zotlabs/Lib/NativeWikiPage.php:484
+#: ../../Zotlabs/Lib/NativeWikiPage.php:488
msgid "Compare: object not found."
msgstr "No se ha encontrado un objeto para comparar."
-#: ../../Zotlabs/Lib/NativeWikiPage.php:490
+#: ../../Zotlabs/Lib/NativeWikiPage.php:494
msgid "Page updated"
msgstr "Se ha actualizado la página"
-#: ../../Zotlabs/Lib/NativeWikiPage.php:493
+#: ../../Zotlabs/Lib/NativeWikiPage.php:497
msgid "Untitled"
msgstr "Sin título"
-#: ../../Zotlabs/Lib/NativeWikiPage.php:499
+#: ../../Zotlabs/Lib/NativeWikiPage.php:503
msgid "Wiki resource_id required for git commit"
msgstr "Se necesita Wiki resource_id para el git commit"
-#: ../../Zotlabs/Lib/NativeWikiPage.php:555
+#: ../../Zotlabs/Lib/NativeWikiPage.php:559
#: ../../Zotlabs/Widget/Wiki_page_history.php:23
msgctxt "wiki_history"
msgid "Message"
msgstr "Mensaje"
-#: ../../Zotlabs/Lib/NativeWikiPage.php:593
-#: ../../addon/gitwiki/gitwiki_backend.php:579 ../../include/bbcode.php:672
-#: ../../include/bbcode.php:818
+#: ../../Zotlabs/Lib/NativeWikiPage.php:597
+#: ../../addon/gitwiki/gitwiki_backend.php:579 ../../include/bbcode.php:674
+#: ../../include/bbcode.php:822
msgid "Different viewers will see this text differently"
msgstr "Visitantes diferentes verán este texto de forma distinta"
@@ -7578,23 +7706,23 @@ msgstr "Este es su ajuste predeterminado para establecer quién puede ver su rep
msgid "This is your default setting for the audience of your webpages"
msgstr "Este es el ajuste predeterminado para establecer la audiencia de sus páginas web"
-#: ../../Zotlabs/Lib/Chatroom.php:27
+#: ../../Zotlabs/Lib/Chatroom.php:23
msgid "Missing room name"
msgstr "Sala de chat sin nombre"
-#: ../../Zotlabs/Lib/Chatroom.php:36
+#: ../../Zotlabs/Lib/Chatroom.php:32
msgid "Duplicate room name"
msgstr "Nombre de sala duplicado."
-#: ../../Zotlabs/Lib/Chatroom.php:86 ../../Zotlabs/Lib/Chatroom.php:94
+#: ../../Zotlabs/Lib/Chatroom.php:82 ../../Zotlabs/Lib/Chatroom.php:90
msgid "Invalid room specifier."
msgstr "Especificador de sala no válido."
-#: ../../Zotlabs/Lib/Chatroom.php:126
+#: ../../Zotlabs/Lib/Chatroom.php:122
msgid "Room not found."
msgstr "Sala no encontrada."
-#: ../../Zotlabs/Lib/Chatroom.php:147
+#: ../../Zotlabs/Lib/Chatroom.php:143
msgid "Room is full"
msgstr "La sala está llena."
@@ -7820,11 +7948,11 @@ msgstr "Por favor, visite %s para aprobar o rechazar la sugerencia."
msgid "[$Projectname:Notify]"
msgstr "[$Projectname:Aviso]"
-#: ../../Zotlabs/Lib/Enotify.php:789
+#: ../../Zotlabs/Lib/Enotify.php:793
msgid "created a new post"
msgstr "ha creado una nueva entrada"
-#: ../../Zotlabs/Lib/Enotify.php:790
+#: ../../Zotlabs/Lib/Enotify.php:794
#, php-format
msgid "commented on %s's post"
msgstr "ha comentado la entrada de %s"
@@ -7847,208 +7975,208 @@ msgstr "Error de actualización en %s"
msgid "Update %s failed. See error logs."
msgstr "La actualización %s ha fallado. Mire el informe de errores."
-#: ../../Zotlabs/Lib/ThreadItem.php:97 ../../include/conversation.php:681
+#: ../../Zotlabs/Lib/ThreadItem.php:97 ../../include/conversation.php:697
msgid "Private Message"
msgstr "Mensaje Privado"
-#: ../../Zotlabs/Lib/ThreadItem.php:137 ../../include/conversation.php:673
+#: ../../Zotlabs/Lib/ThreadItem.php:147 ../../include/conversation.php:689
msgid "Select"
msgstr "Seleccionar"
-#: ../../Zotlabs/Lib/ThreadItem.php:162
+#: ../../Zotlabs/Lib/ThreadItem.php:172
msgid "I will attend"
msgstr "Participaré"
-#: ../../Zotlabs/Lib/ThreadItem.php:162
+#: ../../Zotlabs/Lib/ThreadItem.php:172
msgid "I will not attend"
msgstr "No participaré"
-#: ../../Zotlabs/Lib/ThreadItem.php:162
+#: ../../Zotlabs/Lib/ThreadItem.php:172
msgid "I might attend"
msgstr "Quizá participe"
-#: ../../Zotlabs/Lib/ThreadItem.php:172
+#: ../../Zotlabs/Lib/ThreadItem.php:182
msgid "I agree"
msgstr "Estoy de acuerdo"
-#: ../../Zotlabs/Lib/ThreadItem.php:172
+#: ../../Zotlabs/Lib/ThreadItem.php:182
msgid "I disagree"
msgstr "No estoy de acuerdo"
-#: ../../Zotlabs/Lib/ThreadItem.php:172
+#: ../../Zotlabs/Lib/ThreadItem.php:182
msgid "I abstain"
msgstr "Me abstengo"
-#: ../../Zotlabs/Lib/ThreadItem.php:228
+#: ../../Zotlabs/Lib/ThreadItem.php:238
msgid "Add Star"
msgstr "Destacar añadiendo una estrella"
-#: ../../Zotlabs/Lib/ThreadItem.php:229
+#: ../../Zotlabs/Lib/ThreadItem.php:239
msgid "Remove Star"
msgstr "Eliminar estrella"
-#: ../../Zotlabs/Lib/ThreadItem.php:230
+#: ../../Zotlabs/Lib/ThreadItem.php:240
msgid "Toggle Star Status"
msgstr "Activar o desactivar el estado de entrada preferida"
-#: ../../Zotlabs/Lib/ThreadItem.php:234
+#: ../../Zotlabs/Lib/ThreadItem.php:244
msgid "starred"
msgstr "preferidas"
-#: ../../Zotlabs/Lib/ThreadItem.php:244 ../../include/conversation.php:688
+#: ../../Zotlabs/Lib/ThreadItem.php:254 ../../include/conversation.php:704
msgid "Message signature validated"
msgstr "Firma de mensaje validada"
-#: ../../Zotlabs/Lib/ThreadItem.php:245 ../../include/conversation.php:689
+#: ../../Zotlabs/Lib/ThreadItem.php:255 ../../include/conversation.php:705
msgid "Message signature incorrect"
msgstr "Firma de mensaje incorrecta"
-#: ../../Zotlabs/Lib/ThreadItem.php:253
+#: ../../Zotlabs/Lib/ThreadItem.php:263
msgid "Add Tag"
msgstr "Añadir etiqueta"
-#: ../../Zotlabs/Lib/ThreadItem.php:271 ../../include/taxonomy.php:433
+#: ../../Zotlabs/Lib/ThreadItem.php:281 ../../include/taxonomy.php:506
msgid "like"
msgstr "me gusta"
-#: ../../Zotlabs/Lib/ThreadItem.php:272 ../../include/taxonomy.php:434
+#: ../../Zotlabs/Lib/ThreadItem.php:282 ../../include/taxonomy.php:507
msgid "dislike"
msgstr "no me gusta"
-#: ../../Zotlabs/Lib/ThreadItem.php:276
+#: ../../Zotlabs/Lib/ThreadItem.php:286
msgid "Share This"
msgstr "Compartir esto"
-#: ../../Zotlabs/Lib/ThreadItem.php:276
+#: ../../Zotlabs/Lib/ThreadItem.php:286
msgid "share"
msgstr "compartir"
-#: ../../Zotlabs/Lib/ThreadItem.php:285
+#: ../../Zotlabs/Lib/ThreadItem.php:295
msgid "Delivery Report"
msgstr "Informe de transmisión"
-#: ../../Zotlabs/Lib/ThreadItem.php:303
+#: ../../Zotlabs/Lib/ThreadItem.php:313
#, php-format
msgid "%d comment"
msgid_plural "%d comments"
msgstr[0] "%d comentario"
msgstr[1] "%d comentarios"
-#: ../../Zotlabs/Lib/ThreadItem.php:333 ../../Zotlabs/Lib/ThreadItem.php:334
+#: ../../Zotlabs/Lib/ThreadItem.php:343 ../../Zotlabs/Lib/ThreadItem.php:344
#, php-format
msgid "View %s's profile - %s"
msgstr "Ver el perfil de %s - %s"
-#: ../../Zotlabs/Lib/ThreadItem.php:337
+#: ../../Zotlabs/Lib/ThreadItem.php:347
msgid "to"
msgstr "a"
-#: ../../Zotlabs/Lib/ThreadItem.php:338
+#: ../../Zotlabs/Lib/ThreadItem.php:348
msgid "via"
msgstr "mediante"
-#: ../../Zotlabs/Lib/ThreadItem.php:339
+#: ../../Zotlabs/Lib/ThreadItem.php:349
msgid "Wall-to-Wall"
msgstr "De página del perfil a página del perfil (de \"muro\" a \"muro\")"
-#: ../../Zotlabs/Lib/ThreadItem.php:340
+#: ../../Zotlabs/Lib/ThreadItem.php:350
msgid "via Wall-To-Wall:"
msgstr "Mediante el procedimiento página del perfil a página del perfil (de \"muro\" a \"muro\")"
-#: ../../Zotlabs/Lib/ThreadItem.php:353 ../../include/conversation.php:747
+#: ../../Zotlabs/Lib/ThreadItem.php:363 ../../include/conversation.php:763
#, php-format
msgid "from %s"
msgstr "desde %s"
-#: ../../Zotlabs/Lib/ThreadItem.php:356 ../../include/conversation.php:750
+#: ../../Zotlabs/Lib/ThreadItem.php:366 ../../include/conversation.php:766
#, php-format
msgid "last edited: %s"
msgstr "último cambio: %s"
-#: ../../Zotlabs/Lib/ThreadItem.php:357 ../../include/conversation.php:751
+#: ../../Zotlabs/Lib/ThreadItem.php:367 ../../include/conversation.php:767
#, php-format
msgid "Expires: %s"
msgstr "Caduca: %s"
-#: ../../Zotlabs/Lib/ThreadItem.php:363
+#: ../../Zotlabs/Lib/ThreadItem.php:374
msgid "Attend"
msgstr "Participar o asistir"
-#: ../../Zotlabs/Lib/ThreadItem.php:364
+#: ../../Zotlabs/Lib/ThreadItem.php:375
msgid "Attendance Options"
msgstr "Opciones de participación o asistencia"
-#: ../../Zotlabs/Lib/ThreadItem.php:365
+#: ../../Zotlabs/Lib/ThreadItem.php:376
msgid "Vote"
msgstr "Votar"
-#: ../../Zotlabs/Lib/ThreadItem.php:366
+#: ../../Zotlabs/Lib/ThreadItem.php:377
msgid "Voting Options"
msgstr "Opciones de votación"
-#: ../../Zotlabs/Lib/ThreadItem.php:387
+#: ../../Zotlabs/Lib/ThreadItem.php:398
#: ../../addon/bookmarker/bookmarker.php:38
msgid "Save Bookmarks"
msgstr "Guardar en Marcadores"
-#: ../../Zotlabs/Lib/ThreadItem.php:388
+#: ../../Zotlabs/Lib/ThreadItem.php:399
msgid "Add to Calendar"
msgstr "Añadir al calendario"
-#: ../../Zotlabs/Lib/ThreadItem.php:415 ../../include/conversation.php:471
+#: ../../Zotlabs/Lib/ThreadItem.php:426 ../../include/conversation.php:483
msgid "This is an unsaved preview"
msgstr "Esta es una previsualización sin guardar"
-#: ../../Zotlabs/Lib/ThreadItem.php:447 ../../include/js_strings.php:7
+#: ../../Zotlabs/Lib/ThreadItem.php:458 ../../include/js_strings.php:7
#, php-format
msgid "%s show all"
msgstr "%s mostrar todo"
-#: ../../Zotlabs/Lib/ThreadItem.php:744 ../../include/conversation.php:1360
+#: ../../Zotlabs/Lib/ThreadItem.php:755 ../../include/conversation.php:1377
msgid "Bold"
msgstr "Negrita"
-#: ../../Zotlabs/Lib/ThreadItem.php:745 ../../include/conversation.php:1361
+#: ../../Zotlabs/Lib/ThreadItem.php:756 ../../include/conversation.php:1378
msgid "Italic"
msgstr "Itálico "
-#: ../../Zotlabs/Lib/ThreadItem.php:746 ../../include/conversation.php:1362
+#: ../../Zotlabs/Lib/ThreadItem.php:757 ../../include/conversation.php:1379
msgid "Underline"
msgstr "Subrayar"
-#: ../../Zotlabs/Lib/ThreadItem.php:747 ../../include/conversation.php:1363
+#: ../../Zotlabs/Lib/ThreadItem.php:758 ../../include/conversation.php:1380
msgid "Quote"
msgstr "Citar"
-#: ../../Zotlabs/Lib/ThreadItem.php:748 ../../include/conversation.php:1364
+#: ../../Zotlabs/Lib/ThreadItem.php:759 ../../include/conversation.php:1381
msgid "Code"
msgstr "Código"
-#: ../../Zotlabs/Lib/ThreadItem.php:749
+#: ../../Zotlabs/Lib/ThreadItem.php:760
msgid "Image"
msgstr "Imagen"
-#: ../../Zotlabs/Lib/ThreadItem.php:750
+#: ../../Zotlabs/Lib/ThreadItem.php:761
msgid "Attach File"
msgstr "Fichero adjunto"
-#: ../../Zotlabs/Lib/ThreadItem.php:751
+#: ../../Zotlabs/Lib/ThreadItem.php:762
msgid "Insert Link"
msgstr "Insertar enlace"
-#: ../../Zotlabs/Lib/ThreadItem.php:752
+#: ../../Zotlabs/Lib/ThreadItem.php:763
msgid "Video"
msgstr "Vídeo"
-#: ../../Zotlabs/Lib/ThreadItem.php:762
+#: ../../Zotlabs/Lib/ThreadItem.php:773
msgid "Your full name (required)"
msgstr "Su nombre completo (requerido)"
-#: ../../Zotlabs/Lib/ThreadItem.php:763
+#: ../../Zotlabs/Lib/ThreadItem.php:774
msgid "Your email address (required)"
msgstr "Su dirección de correo electrónico (requerido)"
-#: ../../Zotlabs/Lib/ThreadItem.php:764
+#: ../../Zotlabs/Lib/ThreadItem.php:775
msgid "Your website URL (optional)"
msgstr "La URL de su sitio web (opcional)"
@@ -8064,7 +8192,7 @@ msgstr "La autenticación desde su servidor está bloqueada. Ha iniciado sesión
msgid "Welcome %s. Remote authentication successful."
msgstr "Bienvenido %s. La identificación desde su servidor se ha llevado a cabo correctamente."
-#: ../../Zotlabs/Storage/Browser.php:107 ../../Zotlabs/Storage/Browser.php:238
+#: ../../Zotlabs/Storage/Browser.php:107 ../../Zotlabs/Storage/Browser.php:284
msgid "parent"
msgstr "padre"
@@ -8080,7 +8208,8 @@ msgstr "Principal"
msgid "Addressbook"
msgstr "Libreta de direcciones"
-#: ../../Zotlabs/Storage/Browser.php:140
+#: ../../Zotlabs/Storage/Browser.php:140 ../../include/nav.php:452
+#: ../../include/nav.php:455
msgid "Calendar"
msgstr "Calendario"
@@ -8092,48 +8221,41 @@ msgstr "Programar bandeja de entrada"
msgid "Schedule Outbox"
msgstr "Programar bandeja de salida"
-#: ../../Zotlabs/Storage/Browser.php:226
+#: ../../Zotlabs/Storage/Browser.php:270
msgid "Total"
msgstr "Total"
-#: ../../Zotlabs/Storage/Browser.php:228
+#: ../../Zotlabs/Storage/Browser.php:272
msgid "Shared"
msgstr "Compartido"
-#: ../../Zotlabs/Storage/Browser.php:304
+#: ../../Zotlabs/Storage/Browser.php:350
#, php-format
msgid "You are using %1$s of your available file storage."
msgstr "Está usando %1$s de su espacio disponible para ficheros."
-#: ../../Zotlabs/Storage/Browser.php:309
+#: ../../Zotlabs/Storage/Browser.php:355
#, php-format
msgid "You are using %1$s of %2$s available file storage. (%3$s&#37;)"
msgstr "Está usando %1$s de %2$s que tiene a su disposición para ficheros. (%3$s&#37;)"
-#: ../../Zotlabs/Storage/Browser.php:320
+#: ../../Zotlabs/Storage/Browser.php:366
msgid "WARNING:"
msgstr "ATENCIÓN: "
-#: ../../Zotlabs/Storage/Browser.php:330
-msgid ""
-"Please use DAV to upload large (video, audio) files.<br>See <a class=\"zrl\""
-" href=\"help/member/member_guide#Cloud_Desktop_Clients\">Cloud Desktop "
-"Clients</a>"
-msgstr "Por favor, use DAV para subir ficheros de gran tamaño (vídeo, audio).<br>Mire en <a class=\"zrl\" href=\"help/member/member_guide#Cloud_Desktop_Clients\">Cloud Desktop Clients</a>"
-
-#: ../../Zotlabs/Storage/Browser.php:334
+#: ../../Zotlabs/Storage/Browser.php:378
msgid "Create new folder"
msgstr "Crear nueva carpeta"
-#: ../../Zotlabs/Storage/Browser.php:336
+#: ../../Zotlabs/Storage/Browser.php:380
msgid "Upload file"
msgstr "Subir fichero"
-#: ../../Zotlabs/Storage/Browser.php:350
+#: ../../Zotlabs/Storage/Browser.php:393
msgid "Drop files here to immediately upload"
msgstr "Arrastre los ficheros aquí para subirlos de forma inmediata"
-#: ../../Zotlabs/Widget/Forums.php:85
+#: ../../Zotlabs/Widget/Forums.php:99
msgid "Forums"
msgstr "Foros"
@@ -8149,80 +8271,81 @@ msgstr "Lectura y escritura"
msgid "Read-only"
msgstr "Sólo lectura"
-#: ../../Zotlabs/Widget/Cdav.php:116
+#: ../../Zotlabs/Widget/Cdav.php:117
msgid "My Calendars"
msgstr "Mis calendarios"
-#: ../../Zotlabs/Widget/Cdav.php:118
+#: ../../Zotlabs/Widget/Cdav.php:119
msgid "Shared Calendars"
msgstr "Calendarios compartidos"
-#: ../../Zotlabs/Widget/Cdav.php:122
+#: ../../Zotlabs/Widget/Cdav.php:123
msgid "Share this calendar"
msgstr "Compartir este calendario"
-#: ../../Zotlabs/Widget/Cdav.php:124
+#: ../../Zotlabs/Widget/Cdav.php:125
msgid "Calendar name and color"
msgstr "Nombre y color del calendario"
-#: ../../Zotlabs/Widget/Cdav.php:126
+#: ../../Zotlabs/Widget/Cdav.php:127
msgid "Create new calendar"
msgstr "Crear un nuevo calendario"
-#: ../../Zotlabs/Widget/Cdav.php:128
+#: ../../Zotlabs/Widget/Cdav.php:129
msgid "Calendar Name"
msgstr "Nombre del calendario"
-#: ../../Zotlabs/Widget/Cdav.php:129
+#: ../../Zotlabs/Widget/Cdav.php:130
msgid "Calendar Tools"
msgstr "Gestión de calendarios"
-#: ../../Zotlabs/Widget/Cdav.php:130
+#: ../../Zotlabs/Widget/Cdav.php:131
msgid "Import calendar"
msgstr "Importar un calendario"
-#: ../../Zotlabs/Widget/Cdav.php:131
+#: ../../Zotlabs/Widget/Cdav.php:132
msgid "Select a calendar to import to"
msgstr "Seleccionar un calendario para importarlo"
-#: ../../Zotlabs/Widget/Cdav.php:158
+#: ../../Zotlabs/Widget/Cdav.php:159
msgid "Addressbooks"
msgstr "Agenda de direcciones"
-#: ../../Zotlabs/Widget/Cdav.php:160
+#: ../../Zotlabs/Widget/Cdav.php:161
msgid "Addressbook name"
msgstr "Nombre de la agenda"
-#: ../../Zotlabs/Widget/Cdav.php:162
+#: ../../Zotlabs/Widget/Cdav.php:163
msgid "Create new addressbook"
msgstr "Crear una nueva agenda de direcciones"
-#: ../../Zotlabs/Widget/Cdav.php:163
+#: ../../Zotlabs/Widget/Cdav.php:164
msgid "Addressbook Name"
msgstr "Nombre de la agenda"
-#: ../../Zotlabs/Widget/Cdav.php:165
+#: ../../Zotlabs/Widget/Cdav.php:166
msgid "Addressbook Tools"
msgstr "Gestión de agendas de direcciones"
-#: ../../Zotlabs/Widget/Cdav.php:166
+#: ../../Zotlabs/Widget/Cdav.php:167
msgid "Import addressbook"
msgstr "Importar una agenda de direcciones"
-#: ../../Zotlabs/Widget/Cdav.php:167
+#: ../../Zotlabs/Widget/Cdav.php:168
msgid "Select an addressbook to import to"
msgstr "Seleccionar una agenda para importarla"
-#: ../../Zotlabs/Widget/Appcategories.php:39
-#: ../../Zotlabs/Widget/Tagcloud.php:25 ../../include/contact_widgets.php:91
-#: ../../include/contact_widgets.php:132 ../../include/taxonomy.php:285
-#: ../../include/taxonomy.php:367 ../../include/taxonomy.php:387
+#: ../../Zotlabs/Widget/Appcategories.php:40
+#: ../../Zotlabs/Widget/Tagcloud.php:25 ../../include/contact_widgets.php:97
+#: ../../include/contact_widgets.php:141 ../../include/contact_widgets.php:186
+#: ../../include/taxonomy.php:337 ../../include/taxonomy.php:419
+#: ../../include/taxonomy.php:439 ../../include/taxonomy.php:460
msgid "Categories"
msgstr "Temas"
-#: ../../Zotlabs/Widget/Appcategories.php:42 ../../Zotlabs/Widget/Filer.php:31
-#: ../../include/contact_widgets.php:56 ../../include/contact_widgets.php:94
-#: ../../include/contact_widgets.php:135
+#: ../../Zotlabs/Widget/Appcategories.php:43 ../../Zotlabs/Widget/Filer.php:31
+#: ../../include/contact_widgets.php:56 ../../include/contact_widgets.php:100
+#: ../../include/contact_widgets.php:144 ../../include/contact_widgets.php:189
msgid "Everything"
msgstr "Todo"
@@ -8242,6 +8365,14 @@ msgstr "Importar un calendario"
msgid "Suggested Chatrooms"
msgstr "Salas de chat sugeridas"
+#: ../../Zotlabs/Widget/Hq_controls.php:14
+msgid "HQ Control Panel"
+msgstr "Panel de control de HQ"
+
+#: ../../Zotlabs/Widget/Hq_controls.php:17
+msgid "Create a new post"
+msgstr "Crear una nueva entrada"
+
#: ../../Zotlabs/Widget/Mailmenu.php:13
msgid "Private Mail Menu"
msgstr "Menú de correo privado"
@@ -8250,21 +8381,21 @@ msgstr "Menú de correo privado"
msgid "Combined View"
msgstr "Vista combinada"
-#: ../../Zotlabs/Widget/Mailmenu.php:20 ../../include/nav.php:119
+#: ../../Zotlabs/Widget/Mailmenu.php:20 ../../include/nav.php:126
msgid "Inbox"
msgstr "Bandeja de entrada"
-#: ../../Zotlabs/Widget/Mailmenu.php:25 ../../include/nav.php:120
+#: ../../Zotlabs/Widget/Mailmenu.php:25 ../../include/nav.php:127
msgid "Outbox"
msgstr "Bandeja de salida"
-#: ../../Zotlabs/Widget/Mailmenu.php:30 ../../include/nav.php:121
+#: ../../Zotlabs/Widget/Mailmenu.php:30 ../../include/nav.php:128
msgid "New Message"
msgstr "Nuevo mensaje"
#: ../../Zotlabs/Widget/Chatroom_list.php:16
-#: ../../include/conversation.php:1847 ../../include/conversation.php:1850
-#: ../../include/nav.php:455 ../../include/nav.php:458
+#: ../../include/conversation.php:1864 ../../include/conversation.php:1867
+#: ../../include/nav.php:466 ../../include/nav.php:469
msgid "Chatrooms"
msgstr "Salas de chat"
@@ -8326,11 +8457,11 @@ msgstr "Enviar mensajes"
msgid "Conversations"
msgstr "Conversaciones"
-#: ../../Zotlabs/Widget/Conversations.php:35
+#: ../../Zotlabs/Widget/Conversations.php:37
msgid "No messages."
msgstr "Sin mensajes."
-#: ../../Zotlabs/Widget/Conversations.php:55
+#: ../../Zotlabs/Widget/Conversations.php:57
msgid "Delete conversation"
msgstr "Eliminar conversación"
@@ -8346,11 +8477,11 @@ msgstr "foto/imagen"
msgid "Remove term"
msgstr "Eliminar término"
-#: ../../Zotlabs/Widget/Savedsearch.php:83 ../../include/features.php:306
+#: ../../Zotlabs/Widget/Savedsearch.php:83 ../../include/features.php:316
msgid "Saved Searches"
msgstr "Búsquedas guardadas"
-#: ../../Zotlabs/Widget/Savedsearch.php:84 ../../include/group.php:337
+#: ../../Zotlabs/Widget/Savedsearch.php:84 ../../include/group.php:333
msgid "add"
msgstr "añadir"
@@ -8358,15 +8489,16 @@ msgstr "añadir"
msgid "Notes"
msgstr "Notas"
-#: ../../Zotlabs/Widget/Wiki_pages.php:47 ../../addon/gitwiki/gitwiki.php:76
-msgid "Wiki Pages"
-msgstr "Páginas del wiki"
-
-#: ../../Zotlabs/Widget/Wiki_pages.php:53 ../../addon/gitwiki/gitwiki.php:81
+#: ../../Zotlabs/Widget/Wiki_pages.php:32
+#: ../../Zotlabs/Widget/Wiki_pages.php:89 ../../addon/gitwiki/gitwiki.php:81
msgid "Add new page"
msgstr "Añadir una nueva página"
-#: ../../Zotlabs/Widget/Wiki_pages.php:58 ../../addon/gitwiki/gitwiki.php:82
+#: ../../Zotlabs/Widget/Wiki_pages.php:83 ../../addon/gitwiki/gitwiki.php:76
+msgid "Wiki Pages"
+msgstr "Páginas del wiki"
+
+#: ../../Zotlabs/Widget/Wiki_pages.php:94 ../../addon/gitwiki/gitwiki.php:82
msgid "Page name"
msgstr "Nombre de la página"
@@ -8387,7 +8519,7 @@ msgid "See more..."
msgstr "Ver más..."
#: ../../Zotlabs/Widget/Filer.php:28 ../../include/contact_widgets.php:53
-#: ../../include/features.php:395
+#: ../../include/features.php:414
msgid "Saved Folders"
msgstr "Carpetas guardadas"
@@ -8407,7 +8539,7 @@ msgstr "Examinar la cola"
msgid "DB updates"
msgstr "Actualizaciones de la base de datos"
-#: ../../Zotlabs/Widget/Admin.php:55 ../../include/nav.php:224
+#: ../../Zotlabs/Widget/Admin.php:55 ../../include/nav.php:231
msgid "Admin"
msgstr "Administrador"
@@ -8447,7 +8579,7 @@ msgstr "Exportar canal"
msgid "Connected apps"
msgstr "Aplicaciones (apps) conectadas"
-#: ../../Zotlabs/Widget/Settings_menu.php:100 ../../include/features.php:158
+#: ../../Zotlabs/Widget/Settings_menu.php:100 ../../include/features.php:168
msgid "Permission Groups"
msgstr "Grupos de permisos"
@@ -8467,165 +8599,170 @@ msgstr "Nueva actividad en la red"
msgid "New Network Activity Notifications"
msgstr "Avisos de nueva actividad en la red"
-#: ../../Zotlabs/Widget/Notifications.php:20 ../../include/nav.php:99
+#: ../../Zotlabs/Widget/Notifications.php:20 ../../include/nav.php:106
msgid "View your network activity"
msgstr "Ver su actividad en la red"
-#: ../../Zotlabs/Widget/Notifications.php:24
+#: ../../Zotlabs/Widget/Notifications.php:23
msgid "Mark all notifications read"
msgstr "Marcar todas las notificaciones como leídas"
-#: ../../Zotlabs/Widget/Notifications.php:32
+#: ../../Zotlabs/Widget/Notifications.php:26
+#: ../../Zotlabs/Widget/Notifications.php:44
+#: ../../Zotlabs/Widget/Notifications.php:139
+msgid "Show new posts only"
+msgstr "Mostrar solo las entradas nuevas"
+
+#: ../../Zotlabs/Widget/Notifications.php:34
msgid "New Home Activity"
msgstr "Nueva actividad en su página principal"
-#: ../../Zotlabs/Widget/Notifications.php:33
+#: ../../Zotlabs/Widget/Notifications.php:35
msgid "New Home Activity Notifications"
msgstr "Avisos de nueva actividad en su página principal"
-#: ../../Zotlabs/Widget/Notifications.php:36
+#: ../../Zotlabs/Widget/Notifications.php:38
msgid "View your home activity"
msgstr "Ver su actividad en su página principal"
-#: ../../Zotlabs/Widget/Notifications.php:40
+#: ../../Zotlabs/Widget/Notifications.php:41
#: ../../Zotlabs/Widget/Notifications.php:136
msgid "Mark all notifications seen"
msgstr "Marcar todas las notificaciones como vistas"
-#: ../../Zotlabs/Widget/Notifications.php:48
+#: ../../Zotlabs/Widget/Notifications.php:52
msgid "New Mails"
msgstr "Nuevos mensajes de correo"
-#: ../../Zotlabs/Widget/Notifications.php:49
+#: ../../Zotlabs/Widget/Notifications.php:53
msgid "New Mails Notifications"
msgstr "Avisos de nuevos mensajes de correo"
-#: ../../Zotlabs/Widget/Notifications.php:52
+#: ../../Zotlabs/Widget/Notifications.php:56
msgid "View your private mails"
msgstr "Ver sus correos privados"
-#: ../../Zotlabs/Widget/Notifications.php:56
+#: ../../Zotlabs/Widget/Notifications.php:59
msgid "Mark all messages seen"
msgstr "Marcar todos los mensajes como vistos"
-#: ../../Zotlabs/Widget/Notifications.php:64
+#: ../../Zotlabs/Widget/Notifications.php:67
msgid "New Events"
msgstr "Eventos nuevos"
-#: ../../Zotlabs/Widget/Notifications.php:65
+#: ../../Zotlabs/Widget/Notifications.php:68
msgid "New Events Notifications"
msgstr "Avisos de nuevos eventos"
-#: ../../Zotlabs/Widget/Notifications.php:68 ../../include/nav.php:125
+#: ../../Zotlabs/Widget/Notifications.php:71 ../../include/nav.php:132
msgid "View events"
msgstr "Ver los eventos"
-#: ../../Zotlabs/Widget/Notifications.php:72 ../../include/nav.php:126
+#: ../../Zotlabs/Widget/Notifications.php:74 ../../include/nav.php:133
msgid "Mark all events seen"
msgstr "Marcar todos los eventos como leidos"
-#: ../../Zotlabs/Widget/Notifications.php:81
+#: ../../Zotlabs/Widget/Notifications.php:83
msgid "New Connections Notifications"
msgstr "Avisos de nuevas conexiones"
-#: ../../Zotlabs/Widget/Notifications.php:84
+#: ../../Zotlabs/Widget/Notifications.php:86
msgid "View all connections"
msgstr "Ver todas las conexiones"
-#: ../../Zotlabs/Widget/Notifications.php:92
+#: ../../Zotlabs/Widget/Notifications.php:94
msgid "New Files"
msgstr "Ficheros nuevos"
-#: ../../Zotlabs/Widget/Notifications.php:93
+#: ../../Zotlabs/Widget/Notifications.php:95
msgid "New Files Notifications"
msgstr "Avisos de nuevos ficheros"
-#: ../../Zotlabs/Widget/Notifications.php:100
-#: ../../Zotlabs/Widget/Notifications.php:101 ../../include/nav.php:112
+#: ../../Zotlabs/Widget/Notifications.php:102
+#: ../../Zotlabs/Widget/Notifications.php:103 ../../include/nav.php:119
msgid "Notices"
msgstr "Avisos"
-#: ../../Zotlabs/Widget/Notifications.php:104
+#: ../../Zotlabs/Widget/Notifications.php:106
msgid "View all notices"
msgstr "Ver todos los avisos"
-#: ../../Zotlabs/Widget/Notifications.php:108
+#: ../../Zotlabs/Widget/Notifications.php:109
msgid "Mark all notices seen"
msgstr "Marcar como leídos todos los avisos"
-#: ../../Zotlabs/Widget/Notifications.php:118
+#: ../../Zotlabs/Widget/Notifications.php:119
msgid "New Registrations"
msgstr "Registros nuevos"
-#: ../../Zotlabs/Widget/Notifications.php:119
+#: ../../Zotlabs/Widget/Notifications.php:120
msgid "New Registrations Notifications"
msgstr "Notificaciones de nuevos registros"
-#: ../../Zotlabs/Widget/Notifications.php:129
+#: ../../Zotlabs/Widget/Notifications.php:130
msgid "Public Stream Notifications"
msgstr "Avisos del \"stream\" público"
-#: ../../Zotlabs/Widget/Notifications.php:132
+#: ../../Zotlabs/Widget/Notifications.php:133
msgid "View the public stream"
msgstr "Ver el \"stream\" público"
-#: ../../Zotlabs/Widget/Notifications.php:143
-#: ../../include/conversation.php:871 ../../include/nav.php:305
-msgid "Loading..."
-msgstr "Cargando..."
+#: ../../Zotlabs/Widget/Notifications.php:147 ../../include/nav.php:316
+msgid "Loading"
+msgstr "Cargando"
#: ../../util/nconfig.php:34
msgid "Source channel not found."
msgstr "No se ha encontrado el canal de origen."
-#: ../../boot.php:1619
+#: ../../boot.php:1644
msgid "Create an account to access services and applications"
msgstr "Crear una cuenta para acceder a los servicios y aplicaciones"
-#: ../../boot.php:1638 ../../include/nav.php:138 ../../include/nav.php:167
-#: ../../include/nav.php:184
+#: ../../boot.php:1663 ../../include/nav.php:145 ../../include/nav.php:174
+#: ../../include/nav.php:191
msgid "Logout"
msgstr "Finalizar sesión"
-#: ../../boot.php:1642
+#: ../../boot.php:1667
msgid "Login/Email"
msgstr "Inicio de sesión / Correo electrónico"
-#: ../../boot.php:1643
+#: ../../boot.php:1668
msgid "Password"
msgstr "Contraseña"
-#: ../../boot.php:1644
+#: ../../boot.php:1669
msgid "Remember me"
msgstr "Recordarme"
-#: ../../boot.php:1647
+#: ../../boot.php:1672
msgid "Forgot your password?"
msgstr "¿Olvidó su contraseña?"
-#: ../../boot.php:2191
+#: ../../boot.php:2257
msgid "toggle mobile"
msgstr "cambiar a modo móvil"
-#: ../../boot.php:2344
+#: ../../boot.php:2419
#, php-format
msgid "[$Projectname] Website SSL error for %s"
msgstr "[$Projectname] Error SSL del sitio web en %s"
-#: ../../boot.php:2349
+#: ../../boot.php:2424
msgid "Website SSL certificate is not valid. Please correct."
msgstr "El certificado SSL del sitio web no es válido. Por favor, solucione el problema."
-#: ../../boot.php:2468
+#: ../../boot.php:2540
#, php-format
msgid "[$Projectname] Cron tasks not running on %s"
msgstr "[$Projectname] Las tareas de Cron no están funcionando en %s"
-#: ../../boot.php:2473
+#: ../../boot.php:2545
msgid "Cron/Scheduled tasks not running."
msgstr "Las tareas del Planificador/Cron no están funcionando."
-#: ../../boot.php:2474 ../../include/datetime.php:286
+#: ../../boot.php:2546 ../../include/datetime.php:292
msgid "never"
msgstr "nunca"
@@ -8883,30 +9020,30 @@ msgstr "Un ajuste"
msgid "Skeleton Settings"
msgstr "Ajustes de Skeleton"
-#: ../../addon/gnusoc/gnusoc.php:243
+#: ../../addon/gnusoc/gnusoc.php:247
msgid "GNU-Social Protocol Settings updated."
msgstr "Se han actualizado los ajustes del protocolo de GNU-Social."
-#: ../../addon/gnusoc/gnusoc.php:262
+#: ../../addon/gnusoc/gnusoc.php:266
msgid ""
"The GNU-Social protocol does not support location independence. Connections "
"you make within that network may be unreachable from alternate channel "
"locations."
msgstr "El protocolo de GNU-Social no admite la independencia de la ubicación. Las\n conexiones que realice dentro de esa red pueden ser inaccesibles desde \nubicaciones de canales alternativos."
-#: ../../addon/gnusoc/gnusoc.php:265
+#: ../../addon/gnusoc/gnusoc.php:269
msgid "Enable the GNU-Social protocol for this channel"
msgstr "Activar el protocolo de GNU-Social para este canal"
-#: ../../addon/gnusoc/gnusoc.php:269
+#: ../../addon/gnusoc/gnusoc.php:273
msgid "GNU-Social Protocol Settings"
msgstr "Ajustes del protocolo de GNU-Social"
-#: ../../addon/gnusoc/gnusoc.php:460
+#: ../../addon/gnusoc/gnusoc.php:464
msgid "Follow"
msgstr "Seguir"
-#: ../../addon/gnusoc/gnusoc.php:463
+#: ../../addon/gnusoc/gnusoc.php:467
#, php-format
msgid "%1$s is now following %2$s"
msgstr "%1$s está siguiendo ahora a %2$s"
@@ -8952,8 +9089,8 @@ msgstr "Regresar después"
msgid "Page to load after image selection."
msgstr "Página para cargar después de la selección de imágenes."
-#: ../../addon/openclipatar/openclipatar.php:58 ../../include/channel.php:1266
-#: ../../include/nav.php:146
+#: ../../addon/openclipatar/openclipatar.php:58 ../../include/channel.php:1301
+#: ../../include/nav.php:153
msgid "Edit Profile"
msgstr "Editar el perfil"
@@ -9026,7 +9163,7 @@ msgstr "Error desconocido. Por favor, inténtelo otra vez."
msgid "Profile photo updated successfully."
msgstr "Se ha actualizado con éxito la foto de perfil."
-#: ../../addon/zotvi/zot6.php:25 ../../include/zot.php:3983
+#: ../../addon/zotvi/zot6.php:25 ../../include/zot.php:4051
msgid "invalid target signature"
msgstr "La firma recibida no es válida"
@@ -9159,38 +9296,6 @@ msgstr "Ajustes de publicación en InsaneJournal"
msgid "Insane Journal Settings saved."
msgstr "Se han guardado los ajustes de InsaneJournal."
-#: ../../addon/js_upload/js_upload.php:44
-msgid "Upload a file"
-msgstr "Subir un fichero"
-
-#: ../../addon/js_upload/js_upload.php:45
-msgid "Drop files here to upload"
-msgstr "Arrastre los ficheros aquí para subirlos"
-
-#: ../../addon/js_upload/js_upload.php:47
-msgid "Failed"
-msgstr "Ha fallado"
-
-#: ../../addon/js_upload/js_upload.php:315
-msgid "No files were uploaded."
-msgstr "No se han subido ficheros."
-
-#: ../../addon/js_upload/js_upload.php:322
-msgid "Uploaded file is empty"
-msgstr "El fichero subido está vacío"
-
-#: ../../addon/js_upload/js_upload.php:335
-msgid "Image exceeds size limit of "
-msgstr "La imagen supera el límite de tamaño de "
-
-#: ../../addon/js_upload/js_upload.php:347
-msgid "File has an invalid extension, it should be one of "
-msgstr "El fichero tiene una extensión no válida, debería ser una de estas: "
-
-#: ../../addon/js_upload/js_upload.php:359
-msgid "Upload was cancelled, or server error encountered"
-msgstr "Se canceló la carga o se encontró un error del servidor"
-
#: ../../addon/dwpost/dwpost.php:42
msgid "Post to Dreamwidth"
msgstr "Publicar en Dreamwidth"
@@ -9215,18 +9320,6 @@ msgstr "Publicar en Dreamwidth de forma predeterminada"
msgid "Dreamwidth Post Settings"
msgstr "Ajustes de publicación en Dreamwidth"
-#: ../../addon/firefox/firefox.php:23
-msgid "Install Firefox Sharing Tools"
-msgstr "Instalar las herramientas de compartición de Firefox"
-
-#: ../../addon/firefox/firefox.php:34
-msgid "Share content from Firefox to $Projectname"
-msgstr "Compartir contenido desde Firefox a $Projectname"
-
-#: ../../addon/firefox/firefox.php:37
-msgid "Install Firefox Sharing Tools to this web browser"
-msgstr "Instalar las herramientas de compartición de Firefox en este navegador"
-
#: ../../addon/dirstats/dirstats.php:94
msgid "Hubzilla Directory Stats"
msgstr "Estadísticas de directorio de Hubzilla"
@@ -9286,22 +9379,6 @@ msgid ""
"applies to chatrooms,"
msgstr "Tenga en cuenta que las estadísticas de Diaspora y Friendica se refieren únicamente a aquellas de las que **este directorio** es consciente, y no a todos los conocidos en la red. Esto también es aplicable a las salas de chat,"
-#: ../../addon/mailhost/mailhost.php:36
-msgid "Email notification hub"
-msgstr "Notificación por correo electrónico del hub"
-
-#: ../../addon/mailhost/mailhost.php:36
-msgid "Hostname"
-msgstr "Nombre del host"
-
-#: ../../addon/mailhost/mailhost.php:40
-msgid "Mailhost Settings"
-msgstr "Ajustes de Mailhost"
-
-#: ../../addon/mailhost/mailhost.php:54
-msgid "MAILHOST Settings saved."
-msgstr "Se han guardado los ajustes de MAILHOST."
-
#: ../../addon/likebanner/likebanner.php:51
msgid "Your Webbie:"
msgstr "Su webbie: "
@@ -9496,12 +9573,12 @@ msgid "Login failed."
msgstr "El acceso ha fallado."
#: ../../addon/openid/Mod_Id.php:85 ../../include/selectors.php:49
-#: ../../include/selectors.php:66 ../../include/channel.php:1432
+#: ../../include/selectors.php:66 ../../include/channel.php:1480
msgid "Male"
msgstr "Hombre"
#: ../../addon/openid/Mod_Id.php:87 ../../include/selectors.php:49
-#: ../../include/selectors.php:66 ../../include/channel.php:1430
+#: ../../include/selectors.php:66 ../../include/channel.php:1478
msgid "Female"
msgstr "Mujer"
@@ -9688,39 +9765,39 @@ msgstr "una declaración de amor eterno"
msgid "declared undying love for"
msgstr "ha declarado amor eterno a"
-#: ../../addon/diaspora/diaspora.php:763
+#: ../../addon/diaspora/diaspora.php:772
msgid "Diaspora Protocol Settings updated."
msgstr "Los ajustes del protocolo de Diaspora se han actualizado."
-#: ../../addon/diaspora/diaspora.php:782
+#: ../../addon/diaspora/diaspora.php:791
msgid ""
"The Diaspora protocol does not support location independence. Connections "
"you make within that network may be unreachable from alternate channel "
"locations."
msgstr "El protocolo de Diaspora no admite la independencia de la ubicación. Las conexiones que realice dentro de esa red pueden ser inaccesibles desde ubicaciones de canales alternativos."
-#: ../../addon/diaspora/diaspora.php:785
+#: ../../addon/diaspora/diaspora.php:794
msgid "Enable the Diaspora protocol for this channel"
msgstr "Activar el protocolo de Diaspora para este canal"
-#: ../../addon/diaspora/diaspora.php:789
+#: ../../addon/diaspora/diaspora.php:798
msgid "Allow any Diaspora member to comment on your public posts"
msgstr "Permitir a cualquier miembro de Diaspora comentar sus entradas públicas"
-#: ../../addon/diaspora/diaspora.php:793
+#: ../../addon/diaspora/diaspora.php:802
msgid "Prevent your hashtags from being redirected to other sites"
msgstr "Impedir que sus \"hashtags\" sean redirigidos a otros sitios "
-#: ../../addon/diaspora/diaspora.php:797
+#: ../../addon/diaspora/diaspora.php:806
msgid ""
"Sign and forward posts and comments with no existing Diaspora signature"
msgstr "Firmar y enviar entradas y comentarios sin firma de Diaspora"
-#: ../../addon/diaspora/diaspora.php:802
+#: ../../addon/diaspora/diaspora.php:811
msgid "Followed hashtags (comma separated, do not include the #)"
msgstr "\"Hashtags\" seguidos (separados por comas, sin incluir #)"
-#: ../../addon/diaspora/diaspora.php:807
+#: ../../addon/diaspora/diaspora.php:816
msgid "Diaspora Protocol Settings"
msgstr "Ajustes del protocolo de Diaspora"
@@ -9829,6 +9906,26 @@ msgstr "Seleccione la valoración adecuada del avatar para su sitio. Ver README"
msgid "Gravatar settings updated."
msgstr "Se han actualizado los ajustes de Gravatar."
+#: ../../addon/hzfiles/hzfiles.php:79
+msgid "Hubzilla File Storage Import"
+msgstr "Importar del depósito de ficheros de Hubzilla"
+
+#: ../../addon/hzfiles/hzfiles.php:80
+msgid "This will import all your cloud files from another server."
+msgstr "Esto importará todos sus ficheros en la nube desde otro servidor."
+
+#: ../../addon/hzfiles/hzfiles.php:81
+msgid "Hubzilla Server base URL"
+msgstr "URL base del servidor Hubzilla"
+
+#: ../../addon/hzfiles/hzfiles.php:82
+msgid "Since modified date yyyy-mm-dd"
+msgstr "Modificado desde la fecha yyyy-mm-dd"
+
+#: ../../addon/hzfiles/hzfiles.php:83
+msgid "Until modified date yyyy-mm-dd"
+msgstr "Modificado hasta la fecha yyyy-mm-dd"
+
#: ../../addon/visage/visage.php:93
msgid "Recent Channel/Profile Viewers"
msgstr "Visitantes recientes del canal o perfil"
@@ -9975,8 +10072,8 @@ msgstr "Contraseña de Friendica"
msgid "Hubzilla to Friendica Post Settings"
msgstr "Ajustes de publicación de Hubzilla a Friendica"
-#: ../../addon/jappixmini/jappixmini.php:305 ../../include/channel.php:1357
-#: ../../include/channel.php:1519
+#: ../../addon/jappixmini/jappixmini.php:305 ../../include/channel.php:1397
+#: ../../include/channel.php:1567
msgid "Status:"
msgstr "Estado:"
@@ -10141,27 +10238,35 @@ msgstr "Nombre de inicio de sesión en Friendica"
msgid "Friendica Login Password"
msgstr "Contraseña de inicio de sesión en Friendica"
-#: ../../addon/pubcrawl/as.php:1076 ../../addon/pubcrawl/as.php:1160
-#: ../../addon/pubcrawl/as.php:1332 ../../include/network.php:1705
+#: ../../addon/pubcrawl/as.php:1077 ../../addon/pubcrawl/as.php:1164
+#: ../../addon/pubcrawl/as.php:1339 ../../include/network.php:1768
msgid "ActivityPub"
msgstr "ActivityPub"
-#: ../../addon/pubcrawl/pubcrawl.php:1032
+#: ../../addon/pubcrawl/pubcrawl.php:1033
msgid "ActivityPub Protocol Settings updated."
msgstr "Se han actualizado los ajustes del protocolo ActivityPub."
-#: ../../addon/pubcrawl/pubcrawl.php:1041
+#: ../../addon/pubcrawl/pubcrawl.php:1042
msgid ""
"The ActivityPub protocol does not support location independence. Connections"
" you make within that network may be unreachable from alternate channel "
"locations."
msgstr "El protocolo ActivityPub no soporta la independencia de ubicación. Las conexiones que realice dentro de esa red pueden no ser accesibles desde ubicaciones de canales alternativos."
-#: ../../addon/pubcrawl/pubcrawl.php:1044
+#: ../../addon/pubcrawl/pubcrawl.php:1045
msgid "Enable the ActivityPub protocol for this channel"
msgstr "Activar el protocolo ActivityPub para este canal"
-#: ../../addon/pubcrawl/pubcrawl.php:1049
+#: ../../addon/pubcrawl/pubcrawl.php:1048
+msgid "Send multi-media HTML articles"
+msgstr "Enviar artículos multimedia en HTML"
+
+#: ../../addon/pubcrawl/pubcrawl.php:1048
+msgid "Not supported by some microblog services such as Mastodon"
+msgstr "No soportado por algunos servicios de microblog como Mastodon"
+
+#: ../../addon/pubcrawl/pubcrawl.php:1053
msgid "ActivityPub Protocol Settings"
msgstr "Ajustes del protocolo ActivityPub"
@@ -10507,11 +10612,11 @@ msgstr "Limpiar la configuración de OAuth"
msgid "GNU social Post Settings"
msgstr "Ajustes de publicación en GNU social"
-#: ../../addon/statusnet/statusnet.php:891
+#: ../../addon/statusnet/statusnet.php:892
msgid "API URL"
msgstr "URL de la API"
-#: ../../addon/statusnet/statusnet.php:894
+#: ../../addon/statusnet/statusnet.php:895
msgid "Application name"
msgstr "Nombre de la aplicación"
@@ -10551,7 +10656,7 @@ msgstr "Debe elegir blancas o negras."
msgid "Error creating new game."
msgstr "Error al crear un nuevo juego."
-#: ../../addon/chess/chess.php:409 ../../include/channel.php:1117
+#: ../../addon/chess/chess.php:409 ../../include/channel.php:1152
msgid "Requested channel is not available."
msgstr "El canal solicitado no está disponible."
@@ -11001,7 +11106,7 @@ msgstr "sudoroso/a"
#: ../../addon/moremoods/moremoods.php:36
msgid "bleeding out"
-msgstr "una maldición"
+msgstr "exánime"
#: ../../addon/moremoods/moremoods.php:37
msgid "victorious"
@@ -11230,11 +11335,11 @@ msgstr "Transexual"
msgid "Hermaphrodite"
msgstr "Hermafrodita"
-#: ../../include/selectors.php:49 ../../include/channel.php:1436
+#: ../../include/selectors.php:49 ../../include/channel.php:1484
msgid "Neuter"
msgstr "Neutral"
-#: ../../include/selectors.php:49 ../../include/channel.php:1438
+#: ../../include/selectors.php:49 ../../include/channel.php:1486
msgid "Non-specific"
msgstr "No especificado"
@@ -11414,284 +11519,306 @@ msgstr "No me importa"
msgid "Ask me"
msgstr "Pregúnteme"
-#: ../../include/conversation.php:200
+#: ../../include/conversation.php:169
+#, php-format
+msgid "likes %1$s's %2$s"
+msgstr "gusta de %2$s de %1$s"
+
+#: ../../include/conversation.php:172
+#, php-format
+msgid "doesn't like %1$s's %2$s"
+msgstr "no gusta de %2$s de %1$s"
+
+#: ../../include/conversation.php:212
#, php-format
msgid "%1$s is now connected with %2$s"
msgstr "%1$s ahora está conectado/a con %2$s"
-#: ../../include/conversation.php:235
+#: ../../include/conversation.php:247
#, php-format
msgid "%1$s poked %2$s"
msgstr "%1$s ha dado un toque a %2$s"
-#: ../../include/conversation.php:239 ../../include/text.php:1104
+#: ../../include/conversation.php:251 ../../include/text.php:1104
#: ../../include/text.php:1109
msgid "poked"
msgstr "ha dado un toque a"
-#: ../../include/conversation.php:720
+#: ../../include/conversation.php:736
#, php-format
msgid "View %s's profile @ %s"
msgstr "Ver el perfil @ %s de %s"
-#: ../../include/conversation.php:740
+#: ../../include/conversation.php:756
msgid "Categories:"
msgstr "Temas:"
-#: ../../include/conversation.php:741
+#: ../../include/conversation.php:757
msgid "Filed under:"
msgstr "Archivado bajo:"
-#: ../../include/conversation.php:766
+#: ../../include/conversation.php:783
msgid "View in context"
msgstr "Mostrar en su contexto"
-#: ../../include/conversation.php:867
+#: ../../include/conversation.php:884
msgid "remove"
msgstr "eliminar"
-#: ../../include/conversation.php:872
+#: ../../include/conversation.php:888
+msgid "Loading..."
+msgstr "Cargando..."
+
+#: ../../include/conversation.php:889
msgid "Delete Selected Items"
msgstr "Eliminar elementos seleccionados"
-#: ../../include/conversation.php:915
+#: ../../include/conversation.php:932
msgid "View Source"
msgstr "Ver el código fuente de la entrada"
-#: ../../include/conversation.php:925
+#: ../../include/conversation.php:942
msgid "Follow Thread"
msgstr "Seguir este hilo"
-#: ../../include/conversation.php:934
+#: ../../include/conversation.php:951
msgid "Unfollow Thread"
msgstr "Dejar de seguir este hilo"
-#: ../../include/conversation.php:1025
+#: ../../include/conversation.php:1042
msgid "Activity/Posts"
msgstr "Actividad y publicaciones"
-#: ../../include/conversation.php:1045
+#: ../../include/conversation.php:1062
msgid "Edit Connection"
msgstr "Editar conexión"
-#: ../../include/conversation.php:1055
+#: ../../include/conversation.php:1072
msgid "Message"
msgstr "Mensaje"
-#: ../../include/conversation.php:1189
+#: ../../include/conversation.php:1206
#, php-format
msgid "%s likes this."
msgstr "A %s le gusta esto."
-#: ../../include/conversation.php:1189
+#: ../../include/conversation.php:1206
#, php-format
msgid "%s doesn't like this."
msgstr "A %s no le gusta esto."
-#: ../../include/conversation.php:1193
+#: ../../include/conversation.php:1210
#, php-format
msgid "<span %1$s>%2$d people</span> like this."
msgid_plural "<span %1$s>%2$d people</span> like this."
msgstr[0] "a <span %1$s>%2$d personas</span> le gusta esto."
msgstr[1] "A <span %1$s>%2$d personas</span> les gusta esto."
-#: ../../include/conversation.php:1195
+#: ../../include/conversation.php:1212
#, php-format
msgid "<span %1$s>%2$d people</span> don't like this."
msgid_plural "<span %1$s>%2$d people</span> don't like this."
msgstr[0] "a <span %1$s>%2$d personas</span> no les gusta esto."
msgstr[1] "A <span %1$s>%2$d personas</span> no les gusta esto."
-#: ../../include/conversation.php:1201
+#: ../../include/conversation.php:1218
msgid "and"
msgstr "y"
-#: ../../include/conversation.php:1204
+#: ../../include/conversation.php:1221
#, php-format
msgid ", and %d other people"
msgid_plural ", and %d other people"
msgstr[0] ", y %d persona más"
msgstr[1] ", y %d personas más"
-#: ../../include/conversation.php:1205
+#: ../../include/conversation.php:1222
#, php-format
msgid "%s like this."
msgstr "A %s le gusta esto."
-#: ../../include/conversation.php:1205
+#: ../../include/conversation.php:1222
#, php-format
msgid "%s don't like this."
msgstr "A %s no le gusta esto."
-#: ../../include/conversation.php:1248
+#: ../../include/conversation.php:1265
msgid "Set your location"
msgstr "Establecer su ubicación"
-#: ../../include/conversation.php:1249
+#: ../../include/conversation.php:1266
msgid "Clear browser location"
msgstr "Eliminar los datos de localización geográfica del navegador"
-#: ../../include/conversation.php:1297
+#: ../../include/conversation.php:1314
msgid "Tag term:"
msgstr "Término de la etiqueta:"
-#: ../../include/conversation.php:1298
+#: ../../include/conversation.php:1315
msgid "Where are you right now?"
msgstr "¿Donde está ahora?"
-#: ../../include/conversation.php:1303
+#: ../../include/conversation.php:1320
msgid "Choose a different album..."
msgstr "Elegir un álbum diferente..."
-#: ../../include/conversation.php:1307
+#: ../../include/conversation.php:1324
msgid "Comments enabled"
msgstr "Comentarios habilitados"
-#: ../../include/conversation.php:1308
+#: ../../include/conversation.php:1325
msgid "Comments disabled"
msgstr "Comentarios deshabilitados"
-#: ../../include/conversation.php:1355
+#: ../../include/conversation.php:1372
msgid "Page link name"
msgstr "Nombre del enlace de la página"
-#: ../../include/conversation.php:1358
+#: ../../include/conversation.php:1375
msgid "Post as"
msgstr "Publicar como"
-#: ../../include/conversation.php:1372
+#: ../../include/conversation.php:1389
msgid "Toggle voting"
msgstr "Cambiar votación"
-#: ../../include/conversation.php:1375
+#: ../../include/conversation.php:1392
msgid "Disable comments"
msgstr "Dehabilitar los comentarios"
-#: ../../include/conversation.php:1376
+#: ../../include/conversation.php:1393
msgid "Toggle comments"
msgstr "Activar o desactivar los comentarios"
-#: ../../include/conversation.php:1384
+#: ../../include/conversation.php:1401
msgid "Categories (optional, comma-separated list)"
msgstr "Temas (opcional, lista separada por comas)"
-#: ../../include/conversation.php:1407
+#: ../../include/conversation.php:1424
msgid "Other networks and post services"
msgstr "Otras redes y servicios de publicación"
-#: ../../include/conversation.php:1413
+#: ../../include/conversation.php:1430
msgid "Set publish date"
msgstr "Establecer la fecha de publicación"
-#: ../../include/conversation.php:1673
+#: ../../include/conversation.php:1690
msgid "Commented Order"
msgstr "Comentarios recientes"
-#: ../../include/conversation.php:1676
+#: ../../include/conversation.php:1693
msgid "Sort by Comment Date"
msgstr "Ordenar por fecha de comentario"
-#: ../../include/conversation.php:1680
+#: ../../include/conversation.php:1697
msgid "Posted Order"
msgstr "Publicaciones recientes"
-#: ../../include/conversation.php:1683
+#: ../../include/conversation.php:1700
msgid "Sort by Post Date"
msgstr "Ordenar por fecha de publicación"
-#: ../../include/conversation.php:1691
+#: ../../include/conversation.php:1708
msgid "Posts that mention or involve you"
msgstr "Publicaciones que le mencionan o involucran"
-#: ../../include/conversation.php:1700
+#: ../../include/conversation.php:1717
msgid "Activity Stream - by date"
msgstr "Contenido - por fecha"
-#: ../../include/conversation.php:1706
+#: ../../include/conversation.php:1723
msgid "Starred"
msgstr "Preferidas"
-#: ../../include/conversation.php:1709
+#: ../../include/conversation.php:1726
msgid "Favourite Posts"
msgstr "Publicaciones favoritas"
-#: ../../include/conversation.php:1716
+#: ../../include/conversation.php:1733
msgid "Spam"
msgstr "Correo basura"
-#: ../../include/conversation.php:1719
+#: ../../include/conversation.php:1736
msgid "Posts flagged as SPAM"
msgstr "Publicaciones marcadas como basura"
-#: ../../include/conversation.php:1794 ../../include/nav.php:402
+#: ../../include/conversation.php:1811 ../../include/nav.php:413
msgid "Status Messages and Posts"
msgstr "Mensajes de estado y publicaciones"
-#: ../../include/conversation.php:1807 ../../include/nav.php:415
+#: ../../include/conversation.php:1824 ../../include/nav.php:426
msgid "Profile Details"
msgstr "Detalles del perfil"
-#: ../../include/conversation.php:1817 ../../include/nav.php:425
-#: ../../include/photos.php:600
+#: ../../include/conversation.php:1834 ../../include/nav.php:436
+#: ../../include/photos.php:655
msgid "Photo Albums"
msgstr "Álbumes de fotos"
-#: ../../include/conversation.php:1825 ../../include/nav.php:433
+#: ../../include/conversation.php:1842 ../../include/nav.php:444
msgid "Files and Storage"
msgstr "Ficheros y repositorio"
-#: ../../include/conversation.php:1862 ../../include/nav.php:468
+#: ../../include/conversation.php:1879 ../../include/nav.php:479
msgid "Bookmarks"
msgstr "Marcadores"
-#: ../../include/conversation.php:1865 ../../include/nav.php:471
+#: ../../include/conversation.php:1882 ../../include/nav.php:482
msgid "Saved Bookmarks"
msgstr "Marcadores guardados"
-#: ../../include/conversation.php:1876 ../../include/nav.php:482
+#: ../../include/conversation.php:1893 ../../include/nav.php:493
msgid "View Cards"
msgstr "Ver las fichas"
-#: ../../include/conversation.php:1887 ../../include/nav.php:494
+#: ../../include/conversation.php:1901
+msgid "articles"
+msgstr "artículos"
+
+#: ../../include/conversation.php:1904 ../../include/nav.php:504
+msgid "View Articles"
+msgstr "Ver los artículos"
+
+#: ../../include/conversation.php:1915 ../../include/nav.php:516
msgid "View Webpages"
msgstr "Ver páginas web"
-#: ../../include/conversation.php:1956
+#: ../../include/conversation.php:1984
msgctxt "noun"
msgid "Attending"
msgid_plural "Attending"
msgstr[0] "Participaré"
msgstr[1] "Participaré"
-#: ../../include/conversation.php:1959
+#: ../../include/conversation.php:1987
msgctxt "noun"
msgid "Not Attending"
msgid_plural "Not Attending"
msgstr[0] "No participaré"
msgstr[1] "No participaré"
-#: ../../include/conversation.php:1962
+#: ../../include/conversation.php:1990
msgctxt "noun"
msgid "Undecided"
msgid_plural "Undecided"
msgstr[0] "Indeciso/a"
msgstr[1] "Indecisos/as"
-#: ../../include/conversation.php:1965
+#: ../../include/conversation.php:1993
msgctxt "noun"
msgid "Agree"
msgid_plural "Agrees"
msgstr[0] "De acuerdo"
msgstr[1] "De acuerdo"
-#: ../../include/conversation.php:1968
+#: ../../include/conversation.php:1996
msgctxt "noun"
msgid "Disagree"
msgid_plural "Disagrees"
msgstr[0] "En desacuerdo"
msgstr[1] "En desacuerdo"
-#: ../../include/conversation.php:1971
+#: ../../include/conversation.php:1999
msgctxt "noun"
msgid "Abstain"
msgid_plural "Abstains"
@@ -11969,7 +12096,7 @@ msgstr "diciembre"
msgid "Unknown Attachment"
msgstr "Adjunto no reconocido"
-#: ../../include/text.php:1394 ../../include/feedutils.php:780
+#: ../../include/text.php:1394 ../../include/feedutils.php:825
msgid "unknown"
msgstr "desconocido"
@@ -11985,7 +12112,7 @@ msgstr "eliminar del fichero"
msgid "Download binary/encrypted content"
msgstr "Descargar contenido binario o cifrado"
-#: ../../include/text.php:1782 ../../include/language.php:367
+#: ../../include/text.php:1782 ../../include/language.php:364
msgid "default"
msgstr "por defecto"
@@ -12124,16 +12251,16 @@ msgstr "Invitar a amigos"
msgid "Advanced example: name=fred and country=iceland"
msgstr "Ejemplo avanzado: nombre=juan y país=españa"
-#: ../../include/contact_widgets.php:166
+#: ../../include/contact_widgets.php:223
msgid "Common Connections"
msgstr "Conexiones comunes"
-#: ../../include/contact_widgets.php:171
+#: ../../include/contact_widgets.php:228
#, php-format
msgid "View all %d common connections"
msgstr "Ver todas las %d conexiones comunes"
-#: ../../include/markdown.php:139 ../../include/bbcode.php:337
+#: ../../include/markdown.php:158 ../../include/bbcode.php:339
#, php-format
msgid "%1$s wrote the following %2$s %3$s"
msgstr "%1$s escribió %2$s siguiente %3$s"
@@ -12456,385 +12583,385 @@ msgstr "Visitar %2$s de %1$s"
msgid "%1$s has an updated %2$s, changing %3$s."
msgstr "%1$s ha actualizado %2$s, cambiando %3$s."
-#: ../../include/attach.php:250 ../../include/attach.php:339
+#: ../../include/attach.php:265 ../../include/attach.php:361
msgid "Item was not found."
msgstr "Elemento no encontrado."
-#: ../../include/attach.php:505
+#: ../../include/attach.php:553
msgid "No source file."
msgstr "Ningún fichero de origen"
-#: ../../include/attach.php:527
+#: ../../include/attach.php:575
msgid "Cannot locate file to replace"
msgstr "No se puede localizar el fichero que va a ser sustituido."
-#: ../../include/attach.php:545
+#: ../../include/attach.php:593
msgid "Cannot locate file to revise/update"
msgstr "No se puede localizar el fichero para revisar/actualizar"
-#: ../../include/attach.php:680
+#: ../../include/attach.php:734
#, php-format
msgid "File exceeds size limit of %d"
msgstr "El fichero supera el limite de tamaño de %d"
-#: ../../include/attach.php:694
+#: ../../include/attach.php:754
#, php-format
msgid "You have reached your limit of %1$.0f Mbytes attachment storage."
msgstr "Ha alcanzado su límite de %1$.0f Mbytes de almacenamiento de adjuntos."
-#: ../../include/attach.php:864
+#: ../../include/attach.php:929
msgid "File upload failed. Possible system limit or action terminated."
msgstr "Error de carga, posiblemente por limite del sistema o porque la acción ha finalizado."
-#: ../../include/attach.php:877
+#: ../../include/attach.php:948
msgid "Stored file could not be verified. Upload failed."
msgstr "El fichero almacenado no ha podido ser verificado. El envío ha fallado."
-#: ../../include/attach.php:938 ../../include/attach.php:954
+#: ../../include/attach.php:1022 ../../include/attach.php:1038
msgid "Path not available."
msgstr "Ruta no disponible."
-#: ../../include/attach.php:1003 ../../include/attach.php:1168
+#: ../../include/attach.php:1087 ../../include/attach.php:1252
msgid "Empty pathname"
msgstr "Ruta vacía"
-#: ../../include/attach.php:1029
+#: ../../include/attach.php:1113
msgid "duplicate filename or path"
msgstr "Nombre duplicado de ruta o fichero"
-#: ../../include/attach.php:1054
+#: ../../include/attach.php:1138
msgid "Path not found."
msgstr "Ruta no encontrada"
-#: ../../include/attach.php:1122
+#: ../../include/attach.php:1206
msgid "mkdir failed."
msgstr "mkdir ha fallado."
-#: ../../include/attach.php:1126
+#: ../../include/attach.php:1210
msgid "database storage failed."
msgstr "el almacenamiento en la base de datos ha fallado."
-#: ../../include/attach.php:1174
+#: ../../include/attach.php:1258
msgid "Empty path"
msgstr "Ruta vacía"
-#: ../../include/security.php:531
+#: ../../include/security.php:532
msgid ""
"The form security token was not correct. This probably happened because the "
"form has been opened for too long (>3 hours) before submitting it."
msgstr "El \"token\" de seguridad del formulario no es correcto. Esto ha ocurrido probablemente porque el formulario ha estado abierto demasiado tiempo (>3 horas) antes de ser enviado"
-#: ../../include/items.php:857 ../../include/items.php:909
+#: ../../include/items.php:885 ../../include/items.php:945
msgid "(Unknown)"
msgstr "(Desconocido)"
-#: ../../include/items.php:1093
+#: ../../include/items.php:1129
msgid "Visible to anybody on the internet."
msgstr "Visible para cualquiera en internet."
-#: ../../include/items.php:1095
+#: ../../include/items.php:1131
msgid "Visible to you only."
msgstr "Visible sólo para usted."
-#: ../../include/items.php:1097
+#: ../../include/items.php:1133
msgid "Visible to anybody in this network."
msgstr "Visible para cualquiera en esta red."
-#: ../../include/items.php:1099
+#: ../../include/items.php:1135
msgid "Visible to anybody authenticated."
msgstr "Visible para cualquiera que esté autenticado."
-#: ../../include/items.php:1101
+#: ../../include/items.php:1137
#, php-format
msgid "Visible to anybody on %s."
msgstr "Visible para cualquiera en %s."
-#: ../../include/items.php:1103
+#: ../../include/items.php:1139
msgid "Visible to all connections."
msgstr "Visible para todas las conexiones."
-#: ../../include/items.php:1105
+#: ../../include/items.php:1141
msgid "Visible to approved connections."
msgstr "Visible para las conexiones permitidas."
-#: ../../include/items.php:1107
+#: ../../include/items.php:1143
msgid "Visible to specific connections."
msgstr "Visible para conexiones específicas."
-#: ../../include/items.php:3957
+#: ../../include/items.php:4117
msgid "Privacy group is empty."
msgstr "El grupo de canales está vacío."
-#: ../../include/items.php:3964
+#: ../../include/items.php:4124
#, php-format
msgid "Privacy group: %s"
msgstr "Grupo de canales: %s"
-#: ../../include/items.php:3976
+#: ../../include/items.php:4136
msgid "Connection not found."
msgstr "Conexión no encontrada"
-#: ../../include/items.php:4327
+#: ../../include/items.php:4485
msgid "profile photo"
msgstr "foto del perfil"
-#: ../../include/items.php:4520
+#: ../../include/items.php:4676
#, php-format
msgid "[Edited %s]"
msgstr "[se ha editado %s]"
-#: ../../include/items.php:4520
+#: ../../include/items.php:4676
msgctxt "edit_activity"
msgid "Post"
msgstr "Publicar"
-#: ../../include/items.php:4520
+#: ../../include/items.php:4676
msgctxt "edit_activity"
msgid "Comment"
msgstr "Comentar"
-#: ../../include/channel.php:34
+#: ../../include/channel.php:35
msgid "Unable to obtain identity information from database"
msgstr "No ha sido posible obtener información sobre la identidad desde la base de datos"
-#: ../../include/channel.php:69
+#: ../../include/channel.php:68
msgid "Empty name"
msgstr "Nombre vacío"
-#: ../../include/channel.php:72
+#: ../../include/channel.php:71
msgid "Name too long"
msgstr "Nombre demasiado largo"
-#: ../../include/channel.php:183
+#: ../../include/channel.php:188
msgid "No account identifier"
msgstr "Ningún identificador de la cuenta"
-#: ../../include/channel.php:195
+#: ../../include/channel.php:200
msgid "Nickname is required."
msgstr "Se requiere un sobrenombre (alias)."
-#: ../../include/channel.php:273
+#: ../../include/channel.php:277
msgid "Unable to retrieve created identity"
msgstr "No ha sido posible recuperar la identidad creada"
-#: ../../include/channel.php:359
+#: ../../include/channel.php:373
msgid "Default Profile"
msgstr "Perfil principal"
-#: ../../include/channel.php:512 ../../include/channel.php:601
+#: ../../include/channel.php:532 ../../include/channel.php:621
msgid "Unable to retrieve modified identity"
msgstr "No se puede recuperar la identidad modficada"
-#: ../../include/channel.php:1263
+#: ../../include/channel.php:1298
msgid "Create New Profile"
msgstr "Crear un nuevo perfil"
-#: ../../include/channel.php:1283
+#: ../../include/channel.php:1319
msgid "Visible to everybody"
msgstr "Visible para todos"
-#: ../../include/channel.php:1356 ../../include/channel.php:1475
+#: ../../include/channel.php:1396 ../../include/channel.php:1523
msgid "Gender:"
msgstr "Género:"
-#: ../../include/channel.php:1358 ../../include/channel.php:1530
+#: ../../include/channel.php:1398 ../../include/channel.php:1578
msgid "Homepage:"
msgstr "Página personal:"
-#: ../../include/channel.php:1359
+#: ../../include/channel.php:1399
msgid "Online Now"
msgstr "Ahora en línea"
-#: ../../include/channel.php:1434
+#: ../../include/channel.php:1482
msgid "Trans"
msgstr "Trans"
-#: ../../include/channel.php:1480
+#: ../../include/channel.php:1528
msgid "Like this channel"
msgstr "Me gusta este canal"
-#: ../../include/channel.php:1504
+#: ../../include/channel.php:1552
msgid "j F, Y"
msgstr "j F Y"
-#: ../../include/channel.php:1505
+#: ../../include/channel.php:1553
msgid "j F"
msgstr "j F"
-#: ../../include/channel.php:1512
+#: ../../include/channel.php:1560
msgid "Birthday:"
msgstr "Cumpleaños:"
-#: ../../include/channel.php:1525
+#: ../../include/channel.php:1573
#, php-format
msgid "for %1$d %2$s"
msgstr "por %1$d %2$s"
-#: ../../include/channel.php:1528
+#: ../../include/channel.php:1576
msgid "Sexual Preference:"
msgstr "Orientación sexual:"
-#: ../../include/channel.php:1534
+#: ../../include/channel.php:1582
msgid "Tags:"
msgstr "Etiquetas:"
-#: ../../include/channel.php:1536
+#: ../../include/channel.php:1584
msgid "Political Views:"
msgstr "Posición política:"
-#: ../../include/channel.php:1538
+#: ../../include/channel.php:1586
msgid "Religion:"
msgstr "Religión:"
-#: ../../include/channel.php:1542
+#: ../../include/channel.php:1590
msgid "Hobbies/Interests:"
msgstr "Aficciones o intereses:"
-#: ../../include/channel.php:1544
+#: ../../include/channel.php:1592
msgid "Likes:"
msgstr "Me gusta:"
-#: ../../include/channel.php:1546
+#: ../../include/channel.php:1594
msgid "Dislikes:"
msgstr "No me gusta:"
-#: ../../include/channel.php:1548
+#: ../../include/channel.php:1596
msgid "Contact information and Social Networks:"
msgstr "Información de contacto y redes sociales:"
-#: ../../include/channel.php:1550
+#: ../../include/channel.php:1598
msgid "My other channels:"
msgstr "Mis otros canales:"
-#: ../../include/channel.php:1552
+#: ../../include/channel.php:1600
msgid "Musical interests:"
msgstr "Preferencias musicales:"
-#: ../../include/channel.php:1554
+#: ../../include/channel.php:1602
msgid "Books, literature:"
msgstr "Libros, literatura:"
-#: ../../include/channel.php:1556
+#: ../../include/channel.php:1604
msgid "Television:"
msgstr "Televisión:"
-#: ../../include/channel.php:1558
+#: ../../include/channel.php:1606
msgid "Film/dance/culture/entertainment:"
msgstr "Cine, danza, cultura, entretenimiento:"
-#: ../../include/channel.php:1560
+#: ../../include/channel.php:1608
msgid "Love/Romance:"
msgstr "Vida sentimental o amorosa:"
-#: ../../include/channel.php:1562
+#: ../../include/channel.php:1610
msgid "Work/employment:"
msgstr "Trabajo:"
-#: ../../include/channel.php:1564
+#: ../../include/channel.php:1612
msgid "School/education:"
msgstr "Estudios:"
-#: ../../include/channel.php:1587
+#: ../../include/channel.php:1635
msgid "Like this thing"
msgstr "Me gusta esto"
-#: ../../include/event.php:22 ../../include/event.php:69
+#: ../../include/event.php:23 ../../include/event.php:70
msgid "l F d, Y \\@ g:i A"
msgstr "l d de F, Y \\@ G:i"
-#: ../../include/event.php:30 ../../include/event.php:73
+#: ../../include/event.php:31 ../../include/event.php:74
msgid "Starts:"
msgstr "Comienza:"
-#: ../../include/event.php:40 ../../include/event.php:77
+#: ../../include/event.php:41 ../../include/event.php:78
msgid "Finishes:"
msgstr "Finaliza:"
-#: ../../include/event.php:1008
+#: ../../include/event.php:1011
msgid "This event has been added to your calendar."
msgstr "Este evento ha sido añadido a su calendario."
-#: ../../include/event.php:1208
+#: ../../include/event.php:1220
msgid "Not specified"
msgstr "Sin especificar"
-#: ../../include/event.php:1209
+#: ../../include/event.php:1221
msgid "Needs Action"
msgstr "Necesita de una intervención"
-#: ../../include/event.php:1210
+#: ../../include/event.php:1222
msgid "Completed"
msgstr "Completado/a"
-#: ../../include/event.php:1211
+#: ../../include/event.php:1223
msgid "In Process"
msgstr "En proceso"
-#: ../../include/event.php:1212
+#: ../../include/event.php:1224
msgid "Cancelled"
msgstr "Cancelado/a"
-#: ../../include/event.php:1292 ../../include/connections.php:684
+#: ../../include/event.php:1303 ../../include/connections.php:684
msgid "Home, Voice"
msgstr "Llamadas particulares"
-#: ../../include/event.php:1293 ../../include/connections.php:685
+#: ../../include/event.php:1304 ../../include/connections.php:685
msgid "Home, Fax"
msgstr "Fax particular"
-#: ../../include/event.php:1295 ../../include/connections.php:687
+#: ../../include/event.php:1306 ../../include/connections.php:687
msgid "Work, Voice"
msgstr "Llamadas de trabajo"
-#: ../../include/event.php:1296 ../../include/connections.php:688
+#: ../../include/event.php:1307 ../../include/connections.php:688
msgid "Work, Fax"
msgstr "Fax de trabajo"
-#: ../../include/network.php:752
+#: ../../include/network.php:761
msgid "view full size"
msgstr "Ver en el tamaño original"
-#: ../../include/network.php:1700 ../../include/network.php:1701
+#: ../../include/network.php:1763 ../../include/network.php:1764
msgid "Friendica"
msgstr "Friendica"
-#: ../../include/network.php:1702
+#: ../../include/network.php:1765
msgid "OStatus"
msgstr "OStatus"
-#: ../../include/network.php:1703
+#: ../../include/network.php:1766
msgid "GNU-Social"
msgstr "GNU Social"
-#: ../../include/network.php:1704
+#: ../../include/network.php:1767
msgid "RSS/Atom"
msgstr "RSS/Atom"
-#: ../../include/network.php:1707
+#: ../../include/network.php:1770
msgid "Diaspora"
msgstr "Diaspora"
-#: ../../include/network.php:1708
+#: ../../include/network.php:1771
msgid "Facebook"
msgstr "Facebook"
-#: ../../include/network.php:1709
+#: ../../include/network.php:1772
msgid "Zot"
msgstr "Zot"
-#: ../../include/network.php:1710
+#: ../../include/network.php:1773
msgid "LinkedIn"
msgstr "LinkedIn"
-#: ../../include/network.php:1711
+#: ../../include/network.php:1774
msgid "XMPP/IM"
msgstr "XMPP/IM"
-#: ../../include/network.php:1712
+#: ../../include/network.php:1775
msgid "MySpace"
msgstr "MySpace"
-#: ../../include/language.php:380
+#: ../../include/language.php:377
msgid "Select an alternate language"
msgstr "Seleccionar un idioma alternativo"
@@ -12872,24 +12999,24 @@ msgstr "Los permisos de la entrada %s no se pueden cambiar %s una vez que se ha
msgid "Cannot locate DNS info for database server '%s'"
msgstr "No se ha podido localizar información de DNS para el servidor de base de datos “%s”"
-#: ../../include/bbcode.php:194 ../../include/bbcode.php:1102
-#: ../../include/bbcode.php:1105 ../../include/bbcode.php:1110
-#: ../../include/bbcode.php:1113 ../../include/bbcode.php:1116
-#: ../../include/bbcode.php:1119 ../../include/bbcode.php:1124
-#: ../../include/bbcode.php:1127 ../../include/bbcode.php:1132
-#: ../../include/bbcode.php:1135 ../../include/bbcode.php:1138
-#: ../../include/bbcode.php:1141
+#: ../../include/bbcode.php:194 ../../include/bbcode.php:1106
+#: ../../include/bbcode.php:1109 ../../include/bbcode.php:1114
+#: ../../include/bbcode.php:1117 ../../include/bbcode.php:1120
+#: ../../include/bbcode.php:1123 ../../include/bbcode.php:1128
+#: ../../include/bbcode.php:1131 ../../include/bbcode.php:1136
+#: ../../include/bbcode.php:1139 ../../include/bbcode.php:1142
+#: ../../include/bbcode.php:1145
msgid "Image/photo"
msgstr "Imagen/foto"
-#: ../../include/bbcode.php:233 ../../include/bbcode.php:1152
+#: ../../include/bbcode.php:233 ../../include/bbcode.php:1156
msgid "Encrypted content"
msgstr "Contenido cifrado"
#: ../../include/bbcode.php:249
#, php-format
-msgid "Install %s element: "
-msgstr "Instalar el elemento %s:"
+msgid "Install %1$s element %2$s"
+msgstr "Instalar el elemento de%1$s%2$s"
#: ../../include/bbcode.php:253
#, php-format
@@ -12902,15 +13029,19 @@ msgstr "Esta entrada contiene el elemento instalable %s, sin embargo le faltan p
msgid "card"
msgstr "ficha"
-#: ../../include/bbcode.php:414 ../../include/bbcode.php:422
+#: ../../include/bbcode.php:333
+msgid "article"
+msgstr "artículo"
+
+#: ../../include/bbcode.php:416 ../../include/bbcode.php:424
msgid "Click to open/close"
msgstr "Pulsar para abrir/cerrar"
-#: ../../include/bbcode.php:422
+#: ../../include/bbcode.php:424
msgid "spoiler"
msgstr "spoiler"
-#: ../../include/bbcode.php:1090
+#: ../../include/bbcode.php:1094
msgid "$1 wrote:"
msgstr "$1 escribió:"
@@ -12930,10 +13061,10 @@ msgstr "Contenido incorporado"
msgid "Embedding disabled"
msgstr "Incrustación deshabilitada"
-#: ../../include/zid.php:305
+#: ../../include/zid.php:340
#, php-format
msgid "OpenWebAuth: %1$s welcomes %2$s"
-msgstr "OpenWebAuth: %1$sda la bienvenida a %2$s"
+msgstr "OpenWebAuth: %1$s da la bienvenida a %2$s"
#: ../../include/features.php:54
msgid "General Features"
@@ -12987,292 +13118,296 @@ msgstr "Habilita una herramienta para guardar notas y recordatorios (advertencia
msgid "Create personal planning cards"
msgstr "Crear fichas de planificación personal"
-#: ../../include/features.php:131
+#: ../../include/features.php:141
msgid "Navigation Channel Select"
msgstr "Navegación por el selector de canales"
-#: ../../include/features.php:132
+#: ../../include/features.php:142
msgid "Change channels directly from within the navigation dropdown menu"
msgstr "Cambiar de canales directamente desde el menú de navegación desplegable"
-#: ../../include/features.php:140
+#: ../../include/features.php:150
msgid "Photo Location"
msgstr "Ubicación de las fotos"
-#: ../../include/features.php:141
+#: ../../include/features.php:151
msgid "If location data is available on uploaded photos, link this to a map."
msgstr "Si los datos de ubicación están disponibles en las fotos subidas, enlazar estas a un mapa."
-#: ../../include/features.php:149
+#: ../../include/features.php:159
msgid "Access Controlled Chatrooms"
msgstr "Salas de chat moderadas"
-#: ../../include/features.php:150
+#: ../../include/features.php:160
msgid "Provide chatrooms and chat services with access control."
msgstr "Proporcionar salas y servicios de chat moderados."
-#: ../../include/features.php:159
+#: ../../include/features.php:169
msgid "Provide alternate connection permission roles."
msgstr "Proporcionar roles de acceso alternativos para esta conexión."
-#: ../../include/features.php:167
+#: ../../include/features.php:177
msgid "Smart Birthdays"
msgstr "Cumpleaños inteligentes"
-#: ../../include/features.php:168
+#: ../../include/features.php:178
msgid ""
"Make birthday events timezone aware in case your friends are scattered "
"across the planet."
msgstr "Enlazar los eventos de cumpleaños con el huso horario en el caso de que sus amigos estén dispersos por el mundo."
-#: ../../include/features.php:176
+#: ../../include/features.php:186
msgid "Event Timezone Selection"
msgstr "Selección del huso horario del evento"
-#: ../../include/features.php:177
+#: ../../include/features.php:187
msgid "Allow event creation in timezones other than your own."
msgstr "Permitir la creación de eventos en husos horarios distintos del suyo."
-#: ../../include/features.php:185
+#: ../../include/features.php:195
msgid "Advanced Directory Search"
msgstr "Búsqueda avanzada en el directorio"
-#: ../../include/features.php:186
+#: ../../include/features.php:196
msgid "Allows creation of complex directory search queries"
msgstr "Permitir la creación de consultas complejas en las búsquedas en el directorio"
-#: ../../include/features.php:194
+#: ../../include/features.php:204
msgid "Advanced Theme and Layout Settings"
msgstr "Ajustes avanzados de temas y esquemas"
-#: ../../include/features.php:195
+#: ../../include/features.php:205
msgid "Allows fine tuning of themes and page layouts"
msgstr "Permitir el ajuste fino de temas y esquemas de páginas"
-#: ../../include/features.php:205
+#: ../../include/features.php:215
msgid "Post Composition Features"
msgstr "Opciones para la redacción de entradas"
-#: ../../include/features.php:209
+#: ../../include/features.php:219
msgid "Large Photos"
msgstr "Fotos de gran tamaño"
-#: ../../include/features.php:210
+#: ../../include/features.php:220
msgid ""
"Include large (1024px) photo thumbnails in posts. If not enabled, use small "
"(640px) photo thumbnails"
msgstr "Incluir miniaturas de fotos grandes (1024px) en publicaciones. Si no está habilitado, usar miniaturas pequeñas (640px)"
-#: ../../include/features.php:219
+#: ../../include/features.php:229
msgid "Automatically import channel content from other channels or feeds"
msgstr "Importar automáticamente contenido de otros canales o \"feeds\""
-#: ../../include/features.php:227
+#: ../../include/features.php:237
msgid "Even More Encryption"
msgstr "Más cifrado todavía"
-#: ../../include/features.php:228
+#: ../../include/features.php:238
msgid ""
"Allow optional encryption of content end-to-end with a shared secret key"
msgstr "Permitir cifrado adicional de contenido \"punto-a-punto\" con una clave secreta compartida."
-#: ../../include/features.php:236
+#: ../../include/features.php:246
msgid "Enable Voting Tools"
msgstr "Permitir entradas con votación"
-#: ../../include/features.php:237
+#: ../../include/features.php:247
msgid "Provide a class of post which others can vote on"
msgstr "Proveer una clase de publicación en la que otros puedan votar"
-#: ../../include/features.php:245
+#: ../../include/features.php:255
msgid "Disable Comments"
msgstr "Deshabilitar comentarios"
-#: ../../include/features.php:246
+#: ../../include/features.php:256
msgid "Provide the option to disable comments for a post"
msgstr "Proporcionar la opción de desactivar los comentarios para una entrada"
-#: ../../include/features.php:254
+#: ../../include/features.php:264
msgid "Delayed Posting"
msgstr "Publicación aplazada"
-#: ../../include/features.php:255
+#: ../../include/features.php:265
msgid "Allow posts to be published at a later date"
msgstr "Permitir mensajes que se publicarán en una fecha posterior"
-#: ../../include/features.php:263
+#: ../../include/features.php:273
msgid "Content Expiration"
msgstr "Caducidad del contenido"
-#: ../../include/features.php:264
+#: ../../include/features.php:274
msgid "Remove posts/comments and/or private messages at a future time"
msgstr "Eliminar publicaciones/comentarios y/o mensajes privados más adelante"
-#: ../../include/features.php:272
+#: ../../include/features.php:282
msgid "Suppress Duplicate Posts/Comments"
msgstr "Prevenir entradas o comentarios duplicados"
-#: ../../include/features.php:273
+#: ../../include/features.php:283
msgid ""
"Prevent posts with identical content to be published with less than two "
"minutes in between submissions."
msgstr "Prevenir que entradas con contenido idéntico se publiquen con menos de dos minutos de intervalo."
-#: ../../include/features.php:284
+#: ../../include/features.php:294
msgid "Network and Stream Filtering"
msgstr "Filtrado del contenido"
-#: ../../include/features.php:288
+#: ../../include/features.php:298
msgid "Search by Date"
msgstr "Buscar por fecha"
-#: ../../include/features.php:289
+#: ../../include/features.php:299
msgid "Ability to select posts by date ranges"
msgstr "Capacidad de seleccionar entradas por rango de fechas"
-#: ../../include/features.php:297 ../../include/group.php:332
+#: ../../include/features.php:307 ../../include/group.php:328
msgid "Privacy Groups"
msgstr "Grupos de canales"
-#: ../../include/features.php:298
+#: ../../include/features.php:308
msgid "Enable management and selection of privacy groups"
msgstr "Activar la gestión y selección de grupos de canales"
-#: ../../include/features.php:307
+#: ../../include/features.php:317
msgid "Save search terms for re-use"
msgstr "Guardar términos de búsqueda para su reutilización"
-#: ../../include/features.php:315
+#: ../../include/features.php:325
msgid "Network Personal Tab"
msgstr "Actividad personal"
-#: ../../include/features.php:316
+#: ../../include/features.php:326
msgid "Enable tab to display only Network posts that you've interacted on"
msgstr "Habilitar una pestaña en la cual se muestren solo las entradas en las que ha participado."
-#: ../../include/features.php:324
+#: ../../include/features.php:334
msgid "Network New Tab"
msgstr "Contenido nuevo"
-#: ../../include/features.php:325
+#: ../../include/features.php:335
msgid "Enable tab to display all new Network activity"
msgstr "Habilitar una pestaña en la que se muestre solo el contenido nuevo"
-#: ../../include/features.php:333
+#: ../../include/features.php:343
msgid "Affinity Tool"
msgstr "Herramienta de afinidad"
-#: ../../include/features.php:334
+#: ../../include/features.php:344
msgid "Filter stream activity by depth of relationships"
msgstr "Filtrar el contenido según la profundidad de las relaciones"
-#: ../../include/features.php:343
+#: ../../include/features.php:353
msgid "Show friend and connection suggestions"
msgstr "Mostrar sugerencias de amigos y conexiones"
-#: ../../include/features.php:351
+#: ../../include/features.php:361
msgid "Connection Filtering"
msgstr "Filtrado de conexiones"
-#: ../../include/features.php:352
+#: ../../include/features.php:362
msgid "Filter incoming posts from connections based on keywords/content"
msgstr "Filtrar publicaciones entrantes de conexiones por palabras clave o contenido"
-#: ../../include/features.php:364
+#: ../../include/features.php:374
msgid "Post/Comment Tools"
msgstr "Gestión de entradas y comentarios"
-#: ../../include/features.php:368
+#: ../../include/features.php:379
+msgid "Use markdown for editing posts"
+msgstr "Usar markdown para editar las entradas"
+
+#: ../../include/features.php:387
msgid "Community Tagging"
msgstr "Etiquetas de la comunidad"
-#: ../../include/features.php:369
+#: ../../include/features.php:388
msgid "Ability to tag existing posts"
msgstr "Capacidad de etiquetar entradas existentes"
-#: ../../include/features.php:377
+#: ../../include/features.php:396
msgid "Post Categories"
msgstr "Temas de las entradas"
-#: ../../include/features.php:378
+#: ../../include/features.php:397
msgid "Add categories to your posts"
msgstr "Añadir temas a sus publicaciones"
-#: ../../include/features.php:386
+#: ../../include/features.php:405
msgid "Emoji Reactions"
msgstr "Emoticonos \"emoji\""
-#: ../../include/features.php:387
+#: ../../include/features.php:406
msgid "Add emoji reaction ability to posts"
msgstr "Activar la capacidad de añadir un emoticono \"emoji\" a las entradas"
-#: ../../include/features.php:396
+#: ../../include/features.php:415
msgid "Ability to file posts under folders"
msgstr "Capacidad de archivar entradas en carpetas"
-#: ../../include/features.php:404
+#: ../../include/features.php:423
msgid "Dislike Posts"
msgstr "Desagrado de publicaciones"
-#: ../../include/features.php:405
+#: ../../include/features.php:424
msgid "Ability to dislike posts/comments"
msgstr "Capacidad de mostrar desacuerdo con el contenido de entradas y comentarios"
-#: ../../include/features.php:413
+#: ../../include/features.php:432
msgid "Star Posts"
msgstr "Entradas destacadas"
-#: ../../include/features.php:414
+#: ../../include/features.php:433
msgid "Ability to mark special posts with a star indicator"
msgstr "Capacidad de marcar entradas destacadas con un indicador de estrella"
-#: ../../include/features.php:422
+#: ../../include/features.php:441
msgid "Tag Cloud"
msgstr "Nube de etiquetas"
-#: ../../include/features.php:423
+#: ../../include/features.php:442
msgid "Provide a personal tag cloud on your channel page"
msgstr "Proveer nube de etiquetas personal en su página de canal"
-#: ../../include/features.php:434
+#: ../../include/features.php:453
msgid "Premium Channel"
msgstr "Canal premium"
-#: ../../include/features.php:435
+#: ../../include/features.php:454
msgid ""
"Allows you to set restrictions and terms on those that connect with your "
"channel"
msgstr "Le permite configurar restricciones y normas de uso a aquellos que conectan con su canal"
-#: ../../include/taxonomy.php:325 ../../include/taxonomy.php:346
+#: ../../include/taxonomy.php:377 ../../include/taxonomy.php:398
msgid "Tags"
msgstr "Etiquetas"
-#: ../../include/taxonomy.php:410
+#: ../../include/taxonomy.php:483
msgid "Keywords"
msgstr "Palabras clave"
-#: ../../include/taxonomy.php:431
+#: ../../include/taxonomy.php:504
msgid "have"
msgstr "tener"
-#: ../../include/taxonomy.php:431
+#: ../../include/taxonomy.php:504
msgid "has"
msgstr "tiene"
-#: ../../include/taxonomy.php:432
+#: ../../include/taxonomy.php:505
msgid "want"
msgstr "quiero"
-#: ../../include/taxonomy.php:432
+#: ../../include/taxonomy.php:505
msgid "wants"
msgstr "quiere"
-#: ../../include/taxonomy.php:433
+#: ../../include/taxonomy.php:506
msgid "likes"
msgstr "gusta de"
-#: ../../include/taxonomy.php:434
+#: ../../include/taxonomy.php:507
msgid "dislikes"
msgstr "no gusta de"
@@ -13344,283 +13479,283 @@ msgstr "Esta acción supera los límites establecidos por su plan de suscripció
msgid "This action is not available under your subscription plan."
msgstr "Esta acción no está disponible en su plan de suscripción."
-#: ../../include/datetime.php:147
+#: ../../include/datetime.php:150
msgid "Birthday"
msgstr "Cumpleaños"
-#: ../../include/datetime.php:149
+#: ../../include/datetime.php:152
msgid "Age: "
msgstr "Edad:"
-#: ../../include/datetime.php:151
+#: ../../include/datetime.php:154
msgid "YYYY-MM-DD or MM-DD"
msgstr "AAAA-MM-DD o MM-DD"
-#: ../../include/datetime.php:292
+#: ../../include/datetime.php:298
msgid "less than a second ago"
msgstr "hace un instante"
-#: ../../include/datetime.php:310
+#: ../../include/datetime.php:316
#, php-format
msgctxt "e.g. 22 hours ago, 1 minute ago"
msgid "%1$d %2$s ago"
msgstr "hace %1$d %2$s"
-#: ../../include/datetime.php:321
+#: ../../include/datetime.php:327
msgctxt "relative_date"
msgid "year"
msgid_plural "years"
msgstr[0] "año"
msgstr[1] "años"
-#: ../../include/datetime.php:324
+#: ../../include/datetime.php:330
msgctxt "relative_date"
msgid "month"
msgid_plural "months"
msgstr[0] "mes"
msgstr[1] "meses"
-#: ../../include/datetime.php:327
+#: ../../include/datetime.php:333
msgctxt "relative_date"
msgid "week"
msgid_plural "weeks"
msgstr[0] "semana"
msgstr[1] "semanas"
-#: ../../include/datetime.php:330
+#: ../../include/datetime.php:336
msgctxt "relative_date"
msgid "day"
msgid_plural "days"
msgstr[0] "día"
msgstr[1] "días"
-#: ../../include/datetime.php:333
+#: ../../include/datetime.php:339
msgctxt "relative_date"
msgid "hour"
msgid_plural "hours"
msgstr[0] "hora"
msgstr[1] "horas"
-#: ../../include/datetime.php:336
+#: ../../include/datetime.php:342
msgctxt "relative_date"
msgid "minute"
msgid_plural "minutes"
msgstr[0] "minuto"
msgstr[1] "minutos"
-#: ../../include/datetime.php:339
+#: ../../include/datetime.php:345
msgctxt "relative_date"
msgid "second"
msgid_plural "seconds"
msgstr[0] "segundo"
msgstr[1] "segundos"
-#: ../../include/datetime.php:576
+#: ../../include/datetime.php:579
#, php-format
msgid "%1$s's birthday"
msgstr "Cumpleaños de %1$s"
-#: ../../include/datetime.php:577
+#: ../../include/datetime.php:580
#, php-format
msgid "Happy Birthday %1$s"
msgstr "Feliz cumpleaños %1$s"
-#: ../../include/nav.php:91
+#: ../../include/nav.php:98
msgid "Remote authentication"
msgstr "Acceder desde su servidor"
-#: ../../include/nav.php:91
+#: ../../include/nav.php:98
msgid "Click to authenticate to your home hub"
msgstr "Pulsar para identificarse en su servidor de inicio"
-#: ../../include/nav.php:98
+#: ../../include/nav.php:105
msgid "Network Activity"
msgstr "Actividad de la red"
-#: ../../include/nav.php:100
+#: ../../include/nav.php:107
msgid "Mark all activity notifications seen"
msgstr "Marcar como vistas todas las notificaciones de actividad"
-#: ../../include/nav.php:102
+#: ../../include/nav.php:109
msgid "Channel home"
msgstr "Mi canal"
-#: ../../include/nav.php:103
+#: ../../include/nav.php:110
msgid "View your channel home"
msgstr "Ver su página principal del canal"
-#: ../../include/nav.php:104
+#: ../../include/nav.php:111
msgid "Mark all channel notifications seen"
msgstr "Marcar todas las notificaciones del canal como leídas"
-#: ../../include/nav.php:109
+#: ../../include/nav.php:116
msgid "Registrations"
msgstr "Registros"
-#: ../../include/nav.php:112
+#: ../../include/nav.php:119
msgid "Notifications"
msgstr "Notificaciones"
-#: ../../include/nav.php:113
+#: ../../include/nav.php:120
msgid "View all notifications"
msgstr "Ver todas las notificaciones"
-#: ../../include/nav.php:114
+#: ../../include/nav.php:121
msgid "Mark all system notifications seen"
msgstr "Marcar todas las notificaciones del sistema como leídas"
-#: ../../include/nav.php:116
+#: ../../include/nav.php:123
msgid "Private mail"
msgstr "Correo privado"
-#: ../../include/nav.php:117
+#: ../../include/nav.php:124
msgid "View your private messages"
msgstr "Ver sus mensajes privados"
-#: ../../include/nav.php:118
+#: ../../include/nav.php:125
msgid "Mark all private messages seen"
msgstr "Marcar todos los mensajes privados como leídos"
-#: ../../include/nav.php:124
+#: ../../include/nav.php:131
msgid "Event Calendar"
msgstr "Calendario de eventos"
-#: ../../include/nav.php:129 ../../include/nav.php:215
+#: ../../include/nav.php:136 ../../include/nav.php:222
msgid "Manage Your Channels"
msgstr "Gestionar sus canales"
-#: ../../include/nav.php:132 ../../include/nav.php:217
+#: ../../include/nav.php:139 ../../include/nav.php:224
msgid "Account/Channel Settings"
msgstr "Ajustes de cuenta/canales"
-#: ../../include/nav.php:138 ../../include/nav.php:167
+#: ../../include/nav.php:145 ../../include/nav.php:174
msgid "End this session"
msgstr "Finalizar esta sesión"
-#: ../../include/nav.php:141
+#: ../../include/nav.php:148
msgid "Your profile page"
msgstr "Su página del perfil"
-#: ../../include/nav.php:144
+#: ../../include/nav.php:151
msgid "Manage/Edit profiles"
msgstr "Administrar/editar perfiles"
-#: ../../include/nav.php:146
+#: ../../include/nav.php:153
msgid "Edit your profile"
msgstr "Editar su perfil"
-#: ../../include/nav.php:153 ../../include/nav.php:157
+#: ../../include/nav.php:160 ../../include/nav.php:164
msgid "Sign in"
msgstr "Acceder"
-#: ../../include/nav.php:182
+#: ../../include/nav.php:189
msgid "Take me home"
msgstr "Volver a la página principal"
-#: ../../include/nav.php:184
+#: ../../include/nav.php:191
msgid "Log me out of this site"
msgstr "Salir de este sitio"
-#: ../../include/nav.php:189
+#: ../../include/nav.php:196
msgid "Create an account"
msgstr "Crear una cuenta"
-#: ../../include/nav.php:201
+#: ../../include/nav.php:208
msgid "Help and documentation"
msgstr "Ayuda y documentación"
-#: ../../include/nav.php:204
+#: ../../include/nav.php:211
msgid "Search site @name, #tag, ?docs, content"
msgstr "Buscar en el sitio por @nombre, #etiqueta, ?ayuda o contenido"
-#: ../../include/nav.php:224
+#: ../../include/nav.php:231
msgid "Site Setup and Configuration"
msgstr "Ajustes y configuración del sitio"
-#: ../../include/nav.php:311
+#: ../../include/nav.php:322
msgid "@name, #tag, ?doc, content"
msgstr "@nombre, #etiqueta, ?ayuda, contenido"
-#: ../../include/nav.php:312
+#: ../../include/nav.php:323
msgid "Please wait..."
msgstr "Espere por favor…"
-#: ../../include/nav.php:318
+#: ../../include/nav.php:329
msgid "Add Apps"
msgstr "Añadir aplicaciones"
-#: ../../include/nav.php:319
+#: ../../include/nav.php:330
msgid "Arrange Apps"
msgstr "Organizar aplicaciones"
-#: ../../include/nav.php:320
+#: ../../include/nav.php:331
msgid "Toggle System Apps"
msgstr "Alternar aplicaciones de sistema"
-#: ../../include/photos.php:123
+#: ../../include/photos.php:150
#, php-format
msgid "Image exceeds website size limit of %lu bytes"
msgstr "La imagen excede el límite de %lu bytes del sitio"
-#: ../../include/photos.php:130
+#: ../../include/photos.php:161
msgid "Image file is empty."
msgstr "El fichero de imagen está vacío. "
-#: ../../include/photos.php:268
+#: ../../include/photos.php:322
msgid "Photo storage failed."
msgstr "La foto no ha podido ser guardada."
-#: ../../include/photos.php:308
+#: ../../include/photos.php:364
msgid "a new photo"
msgstr "una nueva foto"
-#: ../../include/photos.php:312
+#: ../../include/photos.php:368
#, php-format
msgctxt "photo_upload"
msgid "%1$s posted %2$s to %3$s"
msgstr "%1$s ha publicado %2$s en %3$s"
-#: ../../include/photos.php:605
+#: ../../include/photos.php:660
msgid "Upload New Photos"
msgstr "Subir nuevas fotos"
-#: ../../include/zot.php:654
+#: ../../include/zot.php:675
msgid "Invalid data packet"
msgstr "Paquete de datos no válido"
-#: ../../include/zot.php:681
+#: ../../include/zot.php:702
msgid "Unable to verify channel signature"
msgstr "No ha sido posible de verificar la firma del canal"
-#: ../../include/zot.php:2368
+#: ../../include/zot.php:2409
#, php-format
msgid "Unable to verify site signature for %s"
msgstr "No ha sido posible de verificar la firma del sitio para %s"
-#: ../../include/group.php:26
+#: ../../include/group.php:22
msgid ""
"A deleted group with this name was revived. Existing item permissions "
"<strong>may</strong> apply to this group and any future members. If this is "
"not what you intended, please create another group with a different name."
msgstr "Un grupo suprimido con este nombre ha sido restablecido. <strong>Es posible</strong> que los permisos existentes sean aplicados a este grupo y sus futuros miembros. Si no quiere esto, por favor cree otro grupo con un nombre diferente."
-#: ../../include/group.php:268
+#: ../../include/group.php:264
msgid "Add new connections to this privacy group"
msgstr "Añadir conexiones nuevas a este grupo de canales"
-#: ../../include/group.php:310
+#: ../../include/group.php:306
msgid "edit"
msgstr "editar"
-#: ../../include/group.php:333
+#: ../../include/group.php:329
msgid "Edit group"
msgstr "Editar grupo"
-#: ../../include/group.php:334
+#: ../../include/group.php:330
msgid "Add privacy group"
msgstr "Añadir un grupo de canales"
-#: ../../include/group.php:335
+#: ../../include/group.php:331
msgid "Channels not in any privacy group"
msgstr "Sin canales en ningún grupo"
diff --git a/view/es-es/hstrings.php b/view/es-es/hstrings.php
index f5cfecb5a..b3714d087 100644
--- a/view/es-es/hstrings.php
+++ b/view/es-es/hstrings.php
@@ -71,6 +71,9 @@ App::$strings["2. Enter my \$Projectname network address into the site searchbar
App::$strings["or visit"] = "o visitar";
App::$strings["3. Click [Connect]"] = "3. Pulse [conectar]";
App::$strings["Submit"] = "Enviar";
+App::$strings["Cards"] = "Fichas";
+App::$strings["Add Article"] = "Añadir un artículo";
+App::$strings["Articles"] = "Artículos";
App::$strings["Item not found"] = "Elemento no encontrado";
App::$strings["Layout Name"] = "Nombre de la plantilla";
App::$strings["Layout Description (Optional)"] = "Descripción de la plantilla (opcional)";
@@ -148,6 +151,7 @@ App::$strings["You may also export your posts and conversations for a particular
App::$strings["To select all posts for a given year, such as this year, visit <a href=\"%1\$s\">%2\$s</a>"] = "Para seleccionar todos los mensajes de un año determinado, como este año, visite <a href=\"%1\$s\">%2\$s</a>";
App::$strings["To select all posts for a given month, such as January of this year, visit <a href=\"%1\$s\">%2\$s</a>"] = "Para seleccionar todos los mensajes de un mes determinado, como el de enero de este año, visite <a href=\"%1\$s\">%2\$s</a>";
App::$strings["These content files may be imported or restored by visiting <a href=\"%1\$s\">%2\$s</a> on any site containing your channel. For best results please import or restore these in date order (oldest first)."] = "Estos ficheros pueden ser importados o restaurados visitando <a href=\"%1\$s\">%2\$s</a> o cualquier sitio que contenga su canal. Para obtener los mejores resultados, por favor, importar o restaurar estos ficheros en orden de fecha (la más antigua primero).";
+App::$strings["Welcome to hubzilla!"] = "¡Bienvenido o bienvenida a Hubzilla!";
App::$strings["Public access denied."] = "Acceso público denegado.";
App::$strings["Search"] = "Buscar";
App::$strings["Items tagged with: %s"] = "elementos etiquetados con: %s";
@@ -165,8 +169,10 @@ App::$strings["Sync Now"] = "Sincronizar ahora";
App::$strings["Please wait several minutes between consecutive operations."] = "Por favor, espere algunos minutos entre operaciones consecutivas.";
App::$strings["When possible, drop a location by logging into that website/hub and removing your channel."] = "Cuando sea posible, elimine una ubicación iniciando sesión en el sitio web o \"hub\" y borrando su canal.";
App::$strings["Use this form to drop the location if the hub is no longer operating."] = "Utilice este formulario para eliminar la dirección si el \"hub\" no está funcionando desde hace tiempo.";
-App::$strings["Change Order of Navigation Apps"] = "Cambiar el orden de las aplicaciones en la barra de navegación";
-App::$strings["Use arrows to move the corresponding app up or down in the display list"] = "Utilizar las flechas para mover la aplicación correspondiente hacia arriba o hacia abajo en la lista de visualización";
+App::$strings["Change Order of Pinned Navbar Apps"] = "Cambiar el orden de las aplicaciones fijas en la barra de navegación";
+App::$strings["Change Order of App Tray Apps"] = "Cambiar el orden de las aplicaciones de la bandeja de aplicaciones";
+App::$strings["Use arrows to move the corresponding app left (top) or right (bottom) in the navbar"] = "Use las flechas para mover la aplicación correspondiente a la izquierda (arriba) o derecha (abajo) en la barra de navegación.";
+App::$strings["Use arrows to move the corresponding app up or down in the app tray"] = "Use las flechas para mover la aplicación correspondiente hacia arriba o hacia abajo en la bandeja de aplicaciones.";
App::$strings["Menu not found."] = "Menú no encontrado";
App::$strings["Unable to create element."] = "No se puede crear el elemento.";
App::$strings["Unable to update menu element."] = "No es posible actualizar el elemento del menú.";
@@ -253,6 +259,10 @@ App::$strings["photo"] = "foto";
App::$strings["status"] = "el mensaje de estado";
App::$strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s está siguiendo %3\$s de %2\$s";
App::$strings["%1\$s stopped following %2\$s's %3\$s"] = "%1\$s ha dejado de seguir %3\$s de %2\$s";
+App::$strings["Channel not found."] = "Canal no encontrado.";
+App::$strings["Insert web link"] = "Insertar enlace web";
+App::$strings["Title (optional)"] = "Título (opcional)";
+App::$strings["Edit Article"] = "Editar el artículo";
App::$strings["Nothing to import."] = "No hay nada para importar.";
App::$strings["Unable to download data from old server"] = "No se han podido descargar datos de su antiguo servidor";
App::$strings["Imported file is empty."] = "El fichero importado está vacío.";
@@ -582,10 +592,14 @@ App::$strings["Delivery interval"] = "Intervalo de entrega";
App::$strings["Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers."] = "Retrasar los procesos de transmisión en segundo plano por esta cantidad de segundos para reducir la carga del sistema. Recomendado: 4-5 para sitios compartidos, 2-3 para servidores virtuales privados, 0-1 para grandes servidores dedicados.";
App::$strings["Deliveries per process"] = "Intentos de envío por proceso";
App::$strings["Number of deliveries to attempt in a single operating system process. Adjust if necessary to tune system performance. Recommend: 1-5."] = "Numero de envíos a intentar en un único proceso del sistema operativo. Ajustar si es necesario mejorar el rendimiento. Se recomienda: 1-5.";
+App::$strings["Queue Threshold"] = "Umbral de la cola de espera";
+App::$strings["Always defer immediate delivery if queue contains more than this number of entries."] = "Aplazar siempre la entrega inmediata si la cola contiene más de este número de entradas.";
App::$strings["Poll interval"] = "Intervalo máximo de tiempo entre dos mensajes sucesivos";
App::$strings["Delay background polling processes by this many seconds to reduce system load. If 0, use delivery interval."] = "Retrasar el intervalo de envío en segundo plano, en esta cantidad de segundos, para reducir la carga del sistema. Si es 0, usar el intervalo de entrega.";
App::$strings["Path to ImageMagick convert program"] = "Ruta al programa de conversión de ImageMagick";
App::$strings["If set, use this program to generate photo thumbnails for huge images ( > 4000 pixels in either dimension), otherwise memory exhaustion may occur. Example: /usr/bin/convert"] = "Si está configurado, utilice este programa para generar miniaturas de fotos para imágenes de gran tamaño ( > 4000 píxeles en cualquiera de las dos dimensiones), de lo contrario se puede agotar la memoria. Ejemplo: /usr/bin/convert";
+App::$strings["Allow SVG thumbnails in file browser"] = "Permitir miniaturas SVG en el navegador de archivos";
+App::$strings["WARNING: SVG images may contain malicious code."] = "ADVERTENCIA: Las imágenes SVG pueden contener código malicioso.";
App::$strings["Maximum Load Average"] = "Carga media máxima";
App::$strings["Maximum system load before delivery and poll processes are deferred - default 50."] = "Carga máxima del sistema antes de que los procesos de entrega y envío se hayan retardado - por defecto, 50.";
App::$strings["Expiration period in days for imported (grid/network) content"] = "Caducidad del contenido importado de otros sitios (en días)";
@@ -699,6 +713,7 @@ App::$strings["Maximum Friend Requests/Day:"] = "Máximo de solicitudes de amist
App::$strings["May reduce spam activity"] = "Podría reducir la actividad de spam";
App::$strings["Default Privacy Group"] = "Grupo de canales predeterminado";
App::$strings["Use my default audience setting for the type of object published"] = "Usar los ajustes de mi audiencia predeterminada para el tipo de publicación";
+App::$strings["Profile to assign new connections"] = "Perfil para asignar a las nuevas conexiones";
App::$strings["Channel permissions category:"] = "Categoría de los permisos del canal:";
App::$strings["Default Permissions Group"] = "Grupo de permisos predeterminados";
App::$strings["Maximum private messages per day from unknown people:"] = "Máximo de mensajes privados por día de gente desconocida:";
@@ -734,6 +749,8 @@ App::$strings["New connections"] = "Nuevas conexiones";
App::$strings["System Registrations"] = "Registros del sistema";
App::$strings["Unseen shared files"] = "Ficheros compartidos no vistos";
App::$strings["Unseen public activity"] = "Actividad pública no vista";
+App::$strings["Email notification hub (hostname)"] = "Email de notificación del hub (nombre del host)";
+App::$strings["If your channel is mirrored to multiple hubs, set this to your preferred location. This will prevent duplicate email notifications. Example: %s"] = "Si su canal está replicado en múltiples hubs, colóquelo en su ubicación preferida. Esto evitará la duplicación de notificaciones por correo electrónico. Ejemplo: %s";
App::$strings["Also show new wall posts, private messages and connections under Notices"] = "Mostrar también en Avisos las nuevas publicaciones, los mensajes privados y las conexiones";
App::$strings["Notify me of events this many days in advance"] = "Avisarme de los eventos con algunos días de antelación";
App::$strings["Must be greater than 0"] = "Debe ser mayor que 0";
@@ -799,6 +816,8 @@ App::$strings["Minimum of 10 seconds, no maximum"] = "Mínimo de 10 segundos, si
App::$strings["Maximum number of conversations to load at any time:"] = "Máximo número de conversaciones a cargar en cualquier momento:";
App::$strings["Maximum of 100 items"] = "Máximo de 100 elementos";
App::$strings["Show emoticons (smilies) as images"] = "Mostrar emoticonos (smilies) como imágenes";
+App::$strings["Provide channel menu in navigation bar"] = "Proporcionar un menú de canales en la barra de navegación";
+App::$strings["Default: channel menu located in app menu"] = "Predeterminado: menú de canales ubicado en el menú de aplicaciones";
App::$strings["Manual conversation updates"] = "Actualizaciones manuales de la conversación";
App::$strings["Default is on, turning this off may increase screen jumping"] = "El valor predeterminado está activado, al desactivarlo puede aumentar el salto de pantalla";
App::$strings["Link post titles to source"] = "Enlazar título de la publicación a la fuente original";
@@ -866,7 +885,6 @@ App::$strings["Authentication failed."] = "Falló la autenticación.";
App::$strings["Remote Authentication"] = "Acceso desde su servidor";
App::$strings["Enter your channel address (e.g. channel@example.com)"] = "Introduzca la dirección del canal (p.ej. canal@ejemplo.com)";
App::$strings["Authenticate"] = "Acceder";
-App::$strings["Channel not found."] = "Canal no encontrado.";
App::$strings["Permissions denied."] = "Permisos denegados.";
App::$strings["Import"] = "Importar";
App::$strings["Authorize application connection"] = "Autorizar una conexión de aplicación";
@@ -874,8 +892,6 @@ App::$strings["Return to your app and insert this Security Code:"] = "Vuelva a s
App::$strings["Please login to continue."] = "Por favor inicie sesión para continuar.";
App::$strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "¿Desea autorizar a esta aplicación a acceder a sus publicaciones y contactos, y/o crear nuevas publicaciones por usted?";
App::$strings["Item not available."] = "Elemento no disponible";
-App::$strings["Insert web link"] = "Insertar enlace web";
-App::$strings["Title (optional)"] = "Título (opcional)";
App::$strings["Edit Block"] = "Modificar este bloque";
App::$strings["vcard"] = "vcard";
App::$strings["Apps"] = "Aplicaciones (apps)";
@@ -1047,6 +1063,7 @@ App::$strings["Layout not found."] = "Plantilla no encontrada";
App::$strings["Module Name:"] = "Nombre del módulo:";
App::$strings["Layout Help"] = "Ayuda para el diseño de plantillas de página";
App::$strings["Edit another layout"] = "Editar otro diseño";
+App::$strings["System layout"] = "Diseño del sistema";
App::$strings["Poke"] = "Toques y otras cosas";
App::$strings["Poke somebody"] = "Dar un toque a alguien";
App::$strings["Poke/Prod"] = "Toque/Incitación";
@@ -1210,12 +1227,17 @@ App::$strings["Help"] = "Ayuda";
App::$strings["Comanche page description language help"] = "Página de ayuda del lenguaje de descripción de páginas (PDL) Comanche";
App::$strings["Layout Description"] = "Descripción de la plantilla";
App::$strings["Download PDL file"] = "Descargar el fichero PDL";
+App::$strings["Unknown error"] = "Error desconocido";
+App::$strings["Post not found."] = "Mensaje no encontrado.";
App::$strings["post"] = "la entrada";
App::$strings["comment"] = "el comentario";
App::$strings["%1\$s tagged %2\$s's %3\$s with %4\$s"] = "%1\$s ha etiquetado %3\$s de %2\$s con %4\$s";
App::$strings["This setting requires special processing and editing has been blocked."] = "Este ajuste necesita de un proceso especial y la edición ha sido bloqueada.";
App::$strings["Configuration Editor"] = "Editor de configuración";
App::$strings["Warning: Changing some settings could render your channel inoperable. Please leave this page unless you are comfortable with and knowledgeable about how to correctly use this feature."] = "Atención: El cambio de algunos ajustes puede volver inutilizable su canal. Por favor, abandone la página excepto que esté seguro y sepa cómo usar correctamente esta característica.";
+App::$strings["If enabled, connection requests will be approved without your interaction"] = "Si está habilitado, las solicitudes de conexión serán aprobadas sin su intervención.";
+App::$strings["Automatic approval settings"] = "Opciones de autorización automática";
+App::$strings["Some individual permissions may have been preset or locked based on your channel type and privacy settings."] = "Es posible que se hayan preestablecido o bloqueado algunos permisos individuales según el tipo de canal y la configuración de privacidad.";
App::$strings["Privacy group created."] = "El grupo de canales ha sido creado.";
App::$strings["Could not create privacy group."] = "No se puede crear el grupo de canales";
App::$strings["Privacy group not found."] = "Grupo de canales no encontrado.";
@@ -1308,7 +1330,6 @@ App::$strings["Make Default"] = "Convertir en predeterminado";
App::$strings["%d new messages"] = "%d mensajes nuevos";
App::$strings["%d new introductions"] = "%d nuevas solicitudes de conexión";
App::$strings["Delegated Channel"] = "Canal delegado";
-App::$strings["Cards"] = "Fichas";
App::$strings["Add Card"] = "Añadir una ficha";
App::$strings["This directory server requires an access token"] = "El servidor de este directorio necesita un \"token\" de acceso";
App::$strings["About this site"] = "Acerca de este sitio";
@@ -1415,7 +1436,7 @@ App::$strings["Connect"] = "Conectar";
App::$strings["Public Forum:"] = "Foro público:";
App::$strings["Keywords: "] = "Palabras clave:";
App::$strings["Don't suggest"] = "No sugerir:";
-App::$strings["Common connections:"] = "Conexiones comunes:";
+App::$strings["Common connections (estimated):"] = "Conexiones comunes (estimadas): ";
App::$strings["Global Directory"] = "Directorio global:";
App::$strings["Local Directory"] = "Directorio local:";
App::$strings["Finding:"] = "Encontrar:";
@@ -1484,6 +1505,7 @@ App::$strings["Maximum daily site registrations exceeded. Please try again tomor
App::$strings["Please indicate acceptance of the Terms of Service. Registration failed."] = "Por favor, confirme que acepta los Términos del servicio. El registro ha fallado.";
App::$strings["Passwords do not match."] = "Las contraseñas no coinciden.";
App::$strings["Registration successful. Please check your email for validation instructions."] = "Registro realizado con éxito. Por favor, compruebe su correo electrónico para ver las instrucciones para validarlo.";
+App::$strings["Registration successful. Continue to create your first channel..."] = "Registro exitoso. Continúe creando tu primer canal...";
App::$strings["Your registration is pending approval by the site owner."] = "Su registro está pendiente de aprobación por el propietario del sitio.";
App::$strings["Your registration can not be processed."] = "Su registro no puede ser procesado.";
App::$strings["Registration on this hub is disabled."] = "El registro está deshabilitado en este sitio.";
@@ -1491,7 +1513,7 @@ App::$strings["Registration on this hub is by approval only."] = "El registro en
App::$strings["<a href=\"pubsites\">Register at another affiliated hub.</a>"] = "<a href=\"pubsites\">Registrarse en otro hub afiliado.</a>";
App::$strings["This site has exceeded the number of allowed daily account registrations. Please try again tomorrow."] = "Este sitio ha excedido el límite de inscripción diaria de cuentas. Por favor, inténtelo de nuevo mañana.";
App::$strings["I accept the %s for this website"] = "Acepto los %s de este sitio";
-App::$strings["I am over 13 years of age and accept the %s for this website"] = "Tengo más de 13 años de edad y acepto los %s de este sitio";
+App::$strings["I am over %s years of age and accept the %s for this website"] = "Tengo más de %s años de edad y acepto los %s de este sitio web";
App::$strings["Your email address"] = "Su dirección de correo electrónico";
App::$strings["Choose a password"] = "Elija una contraseña";
App::$strings["Please re-enter your password"] = "Por favor, vuelva a escribir su contraseña";
@@ -1516,6 +1538,7 @@ App::$strings["Developers"] = "Desarrolladores";
App::$strings["Tutorials"] = "Tutoriales";
App::$strings["\$Projectname Documentation"] = "Documentación de \$Projectname";
App::$strings["Contents"] = "Contenidos";
+App::$strings["Article"] = "Artículo";
App::$strings["Item has been removed."] = "Se ha eliminado el elemento.";
App::$strings["Tag removed"] = "Etiqueta eliminada.";
App::$strings["Remove Item Tag"] = "Eliminar etiqueta del elemento.";
@@ -1617,6 +1640,8 @@ App::$strings["Purchase"] = "Comprar";
App::$strings["Undelete"] = "Recuperar";
App::$strings["Add to app-tray"] = "Añadir a la bandeja de aplicaciones";
App::$strings["Remove from app-tray"] = "Quitar de la bandeja de aplicaciones";
+App::$strings["Pin to navbar"] = "Fijar en la barra de navegación";
+App::$strings["Unpin from navbar"] = "Quitar de la barra de navegación";
App::$strings["__ctx:permcat__ default"] = "por defecto";
App::$strings["__ctx:permcat__ follower"] = "seguidor";
App::$strings["__ctx:permcat__ contributor"] = "contribuidor";
@@ -1772,7 +1797,6 @@ App::$strings["Shared"] = "Compartido";
App::$strings["You are using %1\$s of your available file storage."] = "Está usando %1\$s de su espacio disponible para ficheros.";
App::$strings["You are using %1\$s of %2\$s available file storage. (%3\$s&#37;)"] = "Está usando %1\$s de %2\$s que tiene a su disposición para ficheros. (%3\$s&#37;)";
App::$strings["WARNING:"] = "ATENCIÓN: ";
-App::$strings["Please use DAV to upload large (video, audio) files.<br>See <a class=\"zrl\" href=\"help/member/member_guide#Cloud_Desktop_Clients\">Cloud Desktop Clients</a>"] = "Por favor, use DAV para subir ficheros de gran tamaño (vídeo, audio).<br>Mire en <a class=\"zrl\" href=\"help/member/member_guide#Cloud_Desktop_Clients\">Cloud Desktop Clients</a>";
App::$strings["Create new folder"] = "Crear nueva carpeta";
App::$strings["Upload file"] = "Subir fichero";
App::$strings["Drop files here to immediately upload"] = "Arrastre los ficheros aquí para subirlos de forma inmediata";
@@ -1802,6 +1826,8 @@ App::$strings["Events Tools"] = "Gestión de eventos";
App::$strings["Export Calendar"] = "Exportar el calendario";
App::$strings["Import Calendar"] = "Importar un calendario";
App::$strings["Suggested Chatrooms"] = "Salas de chat sugeridas";
+App::$strings["HQ Control Panel"] = "Panel de control de HQ";
+App::$strings["Create a new post"] = "Crear una nueva entrada";
App::$strings["Private Mail Menu"] = "Menú de correo privado";
App::$strings["Combined View"] = "Vista combinada";
App::$strings["Inbox"] = "Bandeja de entrada";
@@ -1830,8 +1856,8 @@ App::$strings["Remove term"] = "Eliminar término";
App::$strings["Saved Searches"] = "Búsquedas guardadas";
App::$strings["add"] = "añadir";
App::$strings["Notes"] = "Notas";
-App::$strings["Wiki Pages"] = "Páginas del wiki";
App::$strings["Add new page"] = "Añadir una nueva página";
+App::$strings["Wiki Pages"] = "Páginas del wiki";
App::$strings["Page name"] = "Nombre de la página";
App::$strings["Refresh"] = "Recargar";
App::$strings["Tasks"] = "Tareas";
@@ -1859,6 +1885,7 @@ App::$strings["New Network Activity"] = "Nueva actividad en la red";
App::$strings["New Network Activity Notifications"] = "Avisos de nueva actividad en la red";
App::$strings["View your network activity"] = "Ver su actividad en la red";
App::$strings["Mark all notifications read"] = "Marcar todas las notificaciones como leídas";
+App::$strings["Show new posts only"] = "Mostrar solo las entradas nuevas";
App::$strings["New Home Activity"] = "Nueva actividad en su página principal";
App::$strings["New Home Activity Notifications"] = "Avisos de nueva actividad en su página principal";
App::$strings["View your home activity"] = "Ver su actividad en su página principal";
@@ -1882,7 +1909,7 @@ App::$strings["New Registrations"] = "Registros nuevos";
App::$strings["New Registrations Notifications"] = "Notificaciones de nuevos registros";
App::$strings["Public Stream Notifications"] = "Avisos del \"stream\" público";
App::$strings["View the public stream"] = "Ver el \"stream\" público";
-App::$strings["Loading..."] = "Cargando...";
+App::$strings["Loading"] = "Cargando";
App::$strings["Source channel not found."] = "No se ha encontrado el canal de origen.";
App::$strings["Create an account to access services and applications"] = "Crear una cuenta para acceder a los servicios y aplicaciones";
App::$strings["Logout"] = "Finalizar sesión";
@@ -2013,23 +2040,12 @@ App::$strings["InsaneJournal password"] = "Contraseña en InsaneJournal";
App::$strings["Post to InsaneJournal by default"] = "Publicar por defecto en InsaneJournal";
App::$strings["InsaneJournal Post Settings"] = "Ajustes de publicación en InsaneJournal";
App::$strings["Insane Journal Settings saved."] = "Se han guardado los ajustes de InsaneJournal.";
-App::$strings["Upload a file"] = "Subir un fichero";
-App::$strings["Drop files here to upload"] = "Arrastre los ficheros aquí para subirlos";
-App::$strings["Failed"] = "Ha fallado";
-App::$strings["No files were uploaded."] = "No se han subido ficheros.";
-App::$strings["Uploaded file is empty"] = "El fichero subido está vacío";
-App::$strings["Image exceeds size limit of "] = "La imagen supera el límite de tamaño de ";
-App::$strings["File has an invalid extension, it should be one of "] = "El fichero tiene una extensión no válida, debería ser una de estas: ";
-App::$strings["Upload was cancelled, or server error encountered"] = "Se canceló la carga o se encontró un error del servidor";
App::$strings["Post to Dreamwidth"] = "Publicar en Dreamwidth";
App::$strings["Enable Dreamwidth Post Plugin"] = "Activar el plugin de publicación en Dreamwidth";
App::$strings["Dreamwidth username"] = "Nombre de usuario en Dreamwidth";
App::$strings["Dreamwidth password"] = "Contraseña en Dreamwidth";
App::$strings["Post to Dreamwidth by default"] = "Publicar en Dreamwidth de forma predeterminada";
App::$strings["Dreamwidth Post Settings"] = "Ajustes de publicación en Dreamwidth";
-App::$strings["Install Firefox Sharing Tools"] = "Instalar las herramientas de compartición de Firefox";
-App::$strings["Share content from Firefox to \$Projectname"] = "Compartir contenido desde Firefox a \$Projectname";
-App::$strings["Install Firefox Sharing Tools to this web browser"] = "Instalar las herramientas de compartición de Firefox en este navegador";
App::$strings["Hubzilla Directory Stats"] = "Estadísticas de directorio de Hubzilla";
App::$strings["Total Hubs"] = "Número total de servidores";
App::$strings["Hubzilla Hubs"] = "Servidores (hubs) de Hubzilla";
@@ -2044,10 +2060,6 @@ App::$strings["Average Age"] = "Promedio de edad";
App::$strings["Known Chatrooms"] = "Salas de chat conocidas";
App::$strings["Known Tags"] = "Etiquetas conocidas";
App::$strings["Please note Diaspora and Friendica statistics are merely those **this directory** is aware of, and not all those known in the network. This also applies to chatrooms,"] = "Tenga en cuenta que las estadísticas de Diaspora y Friendica se refieren únicamente a aquellas de las que **este directorio** es consciente, y no a todos los conocidos en la red. Esto también es aplicable a las salas de chat,";
-App::$strings["Email notification hub"] = "Notificación por correo electrónico del hub";
-App::$strings["Hostname"] = "Nombre del host";
-App::$strings["Mailhost Settings"] = "Ajustes de Mailhost";
-App::$strings["MAILHOST Settings saved."] = "Se han guardado los ajustes de MAILHOST.";
App::$strings["Your Webbie:"] = "Su webbie: ";
App::$strings["Fontsize (px):"] = "Tamaño de fuente (px): ";
App::$strings["Link:"] = "Enlace: ";
@@ -2175,6 +2187,11 @@ App::$strings["Select default avatar image if none was found at Gravatar. See RE
App::$strings["Rating of images"] = "Valoración de las imágenes";
App::$strings["Select the appropriate avatar rating for your site. See README"] = "Seleccione la valoración adecuada del avatar para su sitio. Ver README";
App::$strings["Gravatar settings updated."] = "Se han actualizado los ajustes de Gravatar.";
+App::$strings["Hubzilla File Storage Import"] = "Importar del depósito de ficheros de Hubzilla";
+App::$strings["This will import all your cloud files from another server."] = "Esto importará todos sus ficheros en la nube desde otro servidor.";
+App::$strings["Hubzilla Server base URL"] = "URL base del servidor Hubzilla";
+App::$strings["Since modified date yyyy-mm-dd"] = "Modificado desde la fecha yyyy-mm-dd";
+App::$strings["Until modified date yyyy-mm-dd"] = "Modificado hasta la fecha yyyy-mm-dd";
App::$strings["Recent Channel/Profile Viewers"] = "Visitantes recientes del canal o perfil";
App::$strings["This plugin/addon has not been configured."] = "El plugin o complemento no se ha configurado.";
App::$strings["Please visit the Visage settings on %s"] = "Por favor, revise los ajustes de Visage en %s";
@@ -2255,6 +2272,8 @@ App::$strings["ActivityPub"] = "ActivityPub";
App::$strings["ActivityPub Protocol Settings updated."] = "Se han actualizado los ajustes del protocolo ActivityPub.";
App::$strings["The ActivityPub protocol does not support location independence. Connections you make within that network may be unreachable from alternate channel locations."] = "El protocolo ActivityPub no soporta la independencia de ubicación. Las conexiones que realice dentro de esa red pueden no ser accesibles desde ubicaciones de canales alternativos.";
App::$strings["Enable the ActivityPub protocol for this channel"] = "Activar el protocolo ActivityPub para este canal";
+App::$strings["Send multi-media HTML articles"] = "Enviar artículos multimedia en HTML";
+App::$strings["Not supported by some microblog services such as Mastodon"] = "No soportado por algunos servicios de microblog como Mastodon";
App::$strings["ActivityPub Protocol Settings"] = "Ajustes del protocolo ActivityPub";
App::$strings["Project Servers and Resources"] = "Servidores y recursos del proyecto";
App::$strings["Project Creator and Tech Lead"] = "Creador del proyecto y director técnico";
@@ -2440,7 +2459,7 @@ App::$strings["in lust"] = "lujurioso/a";
App::$strings["naked"] = "desnudo/a";
App::$strings["stinky"] = "apestoso/a";
App::$strings["sweaty"] = "sudoroso/a";
-App::$strings["bleeding out"] = "una maldición";
+App::$strings["bleeding out"] = "exánime";
App::$strings["victorious"] = "victorioso/a";
App::$strings["defeated"] = "derrotado/a";
App::$strings["envious"] = "envidioso/a";
@@ -2542,6 +2561,8 @@ App::$strings["Uncertain"] = "Indeterminado";
App::$strings["It's complicated"] = "Es complicado";
App::$strings["Don't care"] = "No me importa";
App::$strings["Ask me"] = "Pregúnteme";
+App::$strings["likes %1\$s's %2\$s"] = "gusta de %2\$s de %1\$s";
+App::$strings["doesn't like %1\$s's %2\$s"] = "no gusta de %2\$s de %1\$s";
App::$strings["%1\$s is now connected with %2\$s"] = "%1\$s ahora está conectado/a con %2\$s";
App::$strings["%1\$s poked %2\$s"] = "%1\$s ha dado un toque a %2\$s";
App::$strings["poked"] = "ha dado un toque a";
@@ -2550,6 +2571,7 @@ App::$strings["Categories:"] = "Temas:";
App::$strings["Filed under:"] = "Archivado bajo:";
App::$strings["View in context"] = "Mostrar en su contexto";
App::$strings["remove"] = "eliminar";
+App::$strings["Loading..."] = "Cargando...";
App::$strings["Delete Selected Items"] = "Eliminar elementos seleccionados";
App::$strings["View Source"] = "Ver el código fuente de la entrada";
App::$strings["Follow Thread"] = "Seguir este hilo";
@@ -2606,6 +2628,8 @@ App::$strings["Files and Storage"] = "Ficheros y repositorio";
App::$strings["Bookmarks"] = "Marcadores";
App::$strings["Saved Bookmarks"] = "Marcadores guardados";
App::$strings["View Cards"] = "Ver las fichas";
+App::$strings["articles"] = "artículos";
+App::$strings["View Articles"] = "Ver los artículos";
App::$strings["View Webpages"] = "Ver páginas web";
App::$strings["__ctx:noun__ Attending"] = array(
0 => "Participaré",
@@ -2919,9 +2943,10 @@ App::$strings["Post permissions %s cannot be changed %s after a post is shared.<
App::$strings["Cannot locate DNS info for database server '%s'"] = "No se ha podido localizar información de DNS para el servidor de base de datos “%s”";
App::$strings["Image/photo"] = "Imagen/foto";
App::$strings["Encrypted content"] = "Contenido cifrado";
-App::$strings["Install %s element: "] = "Instalar el elemento %s:";
+App::$strings["Install %1\$s element %2\$s"] = "Instalar el elemento de%1\$s%2\$s";
App::$strings["This post contains an installable %s element, however you lack permissions to install it on this site."] = "Esta entrada contiene el elemento instalable %s, sin embargo le faltan permisos para instalarlo en este sitio.";
App::$strings["card"] = "ficha";
+App::$strings["article"] = "artículo";
App::$strings["Click to open/close"] = "Pulsar para abrir/cerrar";
App::$strings["spoiler"] = "spoiler";
App::$strings["$1 wrote:"] = "$1 escribió:";
@@ -2929,7 +2954,7 @@ App::$strings[" by "] = "por";
App::$strings[" on "] = "en";
App::$strings["Embedded content"] = "Contenido incorporado";
App::$strings["Embedding disabled"] = "Incrustación deshabilitada";
-App::$strings["OpenWebAuth: %1\$s welcomes %2\$s"] = "OpenWebAuth: %1\$sda la bienvenida a %2\$s";
+App::$strings["OpenWebAuth: %1\$s welcomes %2\$s"] = "OpenWebAuth: %1\$s da la bienvenida a %2\$s";
App::$strings["General Features"] = "Funcionalidades básicas";
App::$strings["Multiple Profiles"] = "Múltiples perfiles";
App::$strings["Ability to create multiple profiles"] = "Capacidad de crear múltiples perfiles";
@@ -2990,6 +3015,7 @@ App::$strings["Show friend and connection suggestions"] = "Mostrar sugerencias d
App::$strings["Connection Filtering"] = "Filtrado de conexiones";
App::$strings["Filter incoming posts from connections based on keywords/content"] = "Filtrar publicaciones entrantes de conexiones por palabras clave o contenido";
App::$strings["Post/Comment Tools"] = "Gestión de entradas y comentarios";
+App::$strings["Use markdown for editing posts"] = "Usar markdown para editar las entradas";
App::$strings["Community Tagging"] = "Etiquetas de la comunidad";
App::$strings["Ability to tag existing posts"] = "Capacidad de etiquetar entradas existentes";
App::$strings["Post Categories"] = "Temas de las entradas";
diff --git a/view/js/autocomplete.js b/view/js/autocomplete.js
index 08cf97173..01def9900 100644
--- a/view/js/autocomplete.js
+++ b/view/js/autocomplete.js
@@ -289,7 +289,7 @@ function string2bb(element) {
$.fn.bbco_autocomplete = function(type) {
if(type=='bbcode') {
- var open_close_elements = ['bold', 'italic', 'underline', 'overline', 'strike', 'superscript', 'subscript', 'quote', 'code', 'open', 'spoiler', 'map', 'nobb', 'list', 'checklist', 'ul', 'ol', 'dl', 'li', 'table', 'tr', 'th', 'td', 'center', 'color', 'font', 'size', 'zrl', 'zmg', 'rpost', 'qr', 'observer', 'observer.language','embed', 'highlight'];
+ var open_close_elements = ['bold', 'italic', 'underline', 'overline', 'strike', 'superscript', 'subscript', 'quote', 'code', 'open', 'spoiler', 'map', 'nobb', 'list', 'checklist', 'ul', 'ol', 'dl', 'li', 'table', 'tr', 'th', 'td', 'center', 'color', 'font', 'size', 'zrl', 'zmg', 'rpost', 'qr', 'observer', 'observer.language','embed', 'highlight', 'url', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6'];
var open_elements = ['observer.baseurl', 'observer.address', 'observer.photo', 'observer.name', 'observer.webname', 'observer.url', '*', 'hr', ];
var elements = open_close_elements.concat(open_elements);
diff --git a/view/tpl/navbar_default.tpl b/view/tpl/navbar_default.tpl
index c4f5af1dc..2c9570938 100755
--- a/view/tpl/navbar_default.tpl
+++ b/view/tpl/navbar_default.tpl
@@ -64,7 +64,7 @@
<a id="nav-app-link" href="{{$url}}" class="nav-link text-truncate">
{{$sel.name}}
{{if $sitelocation}}
- <br><small class="text-muted">{{$sitelocation}}</small>
+ <br><small>{{$sitelocation}}</small>
{{/if}}
</a>
</div>
diff --git a/view/tpl/notifications_widget.tpl b/view/tpl/notifications_widget.tpl
index 0974045fe..299c07592 100644
--- a/view/tpl/notifications_widget.tpl
+++ b/view/tpl/notifications_widget.tpl
@@ -28,6 +28,9 @@
var path = $(this)[0].pathname.substr(1,7);
var stateObj = { b64mid: b64mid };
+ if(b64mid === 'undefined' && notify_id === 'undefined')
+ return;
+
{{if $module == 'display'}}
history.pushState(stateObj, '', 'display/' + b64mid);
{{/if}}