Compare commits

..

No commits in common. "develop" and "2020.07" have entirely different histories.

4043 changed files with 218886 additions and 187890 deletions

View file

@ -6,27 +6,5 @@ root = true
[*] [*]
charset = utf-8 charset = utf-8
end_of_line = lf end_of_line = lf
trim_trailing_whitespaces = true
indent_style = tab indent_style = tab
trim_trailing_whitespace = true
insert_final_newline = true
quote_type = single
max_line_length = off
[*.js]
quote_type = double
ij_javascript_use_double_quotes = true
[*.yml]
indent_style = space
indent_size = 2
[*.xml]
indent_style = space
indent_size = 2
[*.json]
indent_style = space
indent_size = 2
[composer.json]
indent_size = 4

View file

@ -1,397 +1,397 @@
[main] [main]
host = https://api.transifex.com host = https://www.transifex.com
[o:Friendica:p:friendica:r:addon_advancedcontentfilter_messagespo] [friendica.addon_advancedcontentfilter_messagespo]
file_filter = advancedcontentfilter/lang/<lang>/messages.po file_filter = advancedcontentfilter/lang/<lang>/messages.po
source_file = advancedcontentfilter/lang/C/messages.po source_file = advancedcontentfilter/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_blackout_messagespo] [friendica.addon_blackout_messagespo]
file_filter = blackout/lang/<lang>/messages.po file_filter = blackout/lang/<lang>/messages.po
source_file = blackout/lang/C/messages.po source_file = blackout/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_blockem_messagespo] [friendica.addon_blockem_messagespo]
file_filter = blockem/lang/<lang>/messages.po file_filter = blockem/lang/<lang>/messages.po
source_file = blockem/lang/C/messages.po source_file = blockem/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_blogger_messagespo] [friendica.addon_blogger_messagespo]
file_filter = blogger/lang/<lang>/messages.po file_filter = blogger/lang/<lang>/messages.po
source_file = blogger/lang/C/messages.po source_file = blogger/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_buffer_messagespo] [friendica.addon_buffer_messagespo]
file_filter = buffer/lang/<lang>/messages.po file_filter = buffer/lang/<lang>/messages.po
source_file = buffer/lang/C/messages.po source_file = buffer/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_buglink_messagespo] [friendica.addon_buglink_messagespo]
file_filter = buglink/lang/<lang>/messages.po file_filter = buglink/lang/<lang>/messages.po
source_file = buglink/lang/C/messages.po source_file = buglink/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_catavatar_messagespo] [friendica.addon_catavatar_messagespo]
file_filter = catavatar/lang/<lang>/messages.po file_filter = catavatar/lang/<lang>/messages.po
source_file = catavatar/lang/C/messages.po source_file = catavatar/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_cookienotice_messagespo] [friendica.addon_cookienotice_messagespo]
file_filter = cookienotice/lang/<lang>/messages.po file_filter = cookienotice/lang/<lang>/messages.po
source_file = cookienotice/lang/C/messages.po source_file = cookienotice/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_curweather_messagespo] [friendica.addon_curweather_messagespo]
file_filter = curweather/lang/<lang>/messages.po file_filter = curweather/lang/<lang>/messages.po
source_file = curweather/lang/C/messages.po source_file = curweather/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_diaspora_messagespo] [friendica.addon_diaspora_messagespo]
file_filter = diaspora/lang/<lang>/messages.po file_filter = diaspora/lang/<lang>/messages.po
source_file = diaspora/lang/C/messages.po source_file = diaspora/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_dwpost_messagespo] [friendica.addon_dwpost_messagespo]
file_filter = dwpost/lang/<lang>/messages.po file_filter = dwpost/lang/<lang>/messages.po
source_file = dwpost/lang/C/messages.po source_file = dwpost/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_forumdirectory_messagespo] [friendica.addon_forumdirectory_messagespo]
file_filter = forumdirectory/lang/<lang>/messages.po file_filter = forumdirectory/lang/<lang>/messages.po
source_file = forumdirectory/lang/C/messages.po source_file = forumdirectory/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_fromapp_messagespo] [friendica.addon_fromapp_messagespo]
file_filter = fromapp/lang/<lang>/messages.po file_filter = fromapp/lang/<lang>/messages.po
source_file = fromapp/lang/C/messages.po source_file = fromapp/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_fromgplus_messagespo] [friendica.addon_fromgplus_messagespo]
file_filter = fromgplus/lang/<lang>/messages.po file_filter = fromgplus/lang/<lang>/messages.po
source_file = fromgplus/lang/C/messages.po source_file = fromgplus/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_geonames_messagespo] [friendica.addon_geonames_messagespo]
file_filter = geonames/lang/<lang>/messages.po file_filter = geonames/lang/<lang>/messages.po
source_file = geonames/lang/C/messages.po source_file = geonames/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_gnot_messagespo] [friendica.addon_gnot_messagespo]
file_filter = gnot/lang/<lang>/messages.po file_filter = gnot/lang/<lang>/messages.po
source_file = gnot/lang/C/messages.po source_file = gnot/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_gravatar_messagespo] [friendica.addon_gravatar_messagespo]
file_filter = gravatar/lang/<lang>/messages.po file_filter = gravatar/lang/<lang>/messages.po
source_file = gravatar/lang/C/messages.po source_file = gravatar/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_group_text_messagespo] [friendica.addon_group_text_messagespo]
file_filter = group_text/lang/<lang>/messages.po file_filter = group_text/lang/<lang>/messages.po
source_file = group_text/lang/C/messages.po source_file = group_text/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_ifttt_messagespo] [friendica.addon_ifttt_messagespo]
file_filter = ifttt/lang/<lang>/messages.po file_filter = ifttt/lang/<lang>/messages.po
source_file = ifttt/lang/C/messages.po source_file = ifttt/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_ijpost_messagespo] [friendica.addon_ijpost_messagespo]
file_filter = ijpost/lang/<lang>/messages.po file_filter = ijpost/lang/<lang>/messages.po
source_file = ijpost/lang/C/messages.po source_file = ijpost/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_impressum_messagespo] [friendica.addon_impressum_messagespo]
file_filter = impressum/lang/<lang>/messages.po file_filter = impressum/lang/<lang>/messages.po
source_file = impressum/lang/C/messages.po source_file = impressum/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_infiniteimprobabilitydrive_messagespo] [friendica.addon_infiniteimprobabilitydrive_messagespo]
file_filter = infiniteimprobabilitydrive/lang/<lang>/messages.po file_filter = infiniteimprobabilitydrive/lang/<lang>/messages.po
source_file = infiniteimprobabilitydrive/lang/C/messages.po source_file = infiniteimprobabilitydrive/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_irc_messagespo] [friendica.addon_irc_messagespo]
file_filter = irc/lang/<lang>/messages.po file_filter = irc/lang/<lang>/messages.po
source_file = irc/lang/C/messages.po source_file = irc/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_jappixmini_messagespo] [friendica.addon_jappixmini_messagespo]
file_filter = jappixmini/lang/<lang>/messages.po file_filter = jappixmini/lang/<lang>/messages.po
source_file = jappixmini/lang/C/messages.po source_file = jappixmini/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_js_upload_messagespo] [friendica.addon_js_upload_messagespo]
file_filter = js_upload/lang/<lang>/messages.po file_filter = js_upload/lang/<lang>/messages.po
source_file = js_upload/lang/C/messages.po source_file = js_upload/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_krynn_messagespo] [friendica.addon_krynn_messagespo]
file_filter = krynn/lang/<lang>/messages.po file_filter = krynn/lang/<lang>/messages.po
source_file = krynn/lang/C/messages.po source_file = krynn/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_langfilter_messagespo] [friendica.addon_langfilter_messagespo]
file_filter = langfilter/lang/<lang>/messages.po file_filter = langfilter/lang/<lang>/messages.po
source_file = langfilter/lang/C/messages.po source_file = langfilter/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_libertree_messagespo] [friendica.addon_libertree_messagespo]
file_filter = libertree/lang/<lang>/messages.po file_filter = libertree/lang/<lang>/messages.po
source_file = libertree/lang/C/messages.po source_file = libertree/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_libravatar_messagespo] [friendica.addon_libravatar_messagespo]
file_filter = libravatar/lang/<lang>/messages.po file_filter = libravatar/lang/<lang>/messages.po
source_file = libravatar/lang/C/messages.po source_file = libravatar/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_ljpost_messagespo] [friendica.addon_ljpost_messagespo]
file_filter = ljpost/lang/<lang>/messages.po file_filter = ljpost/lang/<lang>/messages.po
source_file = ljpost/lang/C/messages.po source_file = ljpost/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_mailstream_messagespo] [friendica.addon_mailstream_messagespo]
file_filter = mailstream/lang/<lang>/messages.po file_filter = mailstream/lang/<lang>/messages.po
source_file = mailstream/lang/C/messages.po source_file = mailstream/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_mathjax_messagespo] [friendica.addon_mathjax_messagespo]
file_filter = mathjax/lang/<lang>/messages.po file_filter = mathjax/lang/<lang>/messages.po
source_file = mathjax/lang/C/messages.po source_file = mathjax/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_membersince_messagespo] [friendica.addon_membersince_messagespo]
file_filter = membersince/lang/<lang>/messages.po file_filter = membersince/lang/<lang>/messages.po
source_file = membersince/lang/C/messages.po source_file = membersince/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_morechoice_messagespo] [friendica.addon_morechoice_messagespo]
file_filter = morechoice/lang/<lang>/messages.po file_filter = morechoice/lang/<lang>/messages.po
source_file = morechoice/lang/C/messages.po source_file = morechoice/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_morepokes_messagespo] [friendica.addon_morepokes_messagespo]
file_filter = morepokes/lang/<lang>/messages.po file_filter = morepokes/lang/<lang>/messages.po
source_file = morepokes/lang/C/messages.po source_file = morepokes/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_newmemberwidget_messagespo] [friendica.addon_newmemberwidget_messagespo]
file_filter = newmemberwidget/lang/<lang>/messages.po file_filter = newmemberwidget/lang/<lang>/messages.po
source_file = newmemberwidget/lang/C/messages.po source_file = newmemberwidget/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_notifyall_messagespo] [friendica.addon_notifyall_messagespo]
file_filter = notifyall/lang/<lang>/messages.po file_filter = notifyall/lang/<lang>/messages.po
source_file = notifyall/lang/C/messages.po source_file = notifyall/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_notimeline_messagespo] [friendica.addon_notimeline_messagespo]
file_filter = notimeline/lang/<lang>/messages.po file_filter = notimeline/lang/<lang>/messages.po
source_file = notimeline/lang/C/messages.po source_file = notimeline/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_nsfw_messagespo] [friendica.addon_nsfw_messagespo]
file_filter = nsfw/lang/<lang>/messages.po file_filter = nsfw/lang/<lang>/messages.po
source_file = nsfw/lang/C/messages.po source_file = nsfw/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_numfriends_messagespo] [friendica.addon_numfriends_messagespo]
file_filter = numfriends/lang/<lang>/messages.po file_filter = numfriends/lang/<lang>/messages.po
source_file = numfriends/lang/C/messages.po source_file = numfriends/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_openstreetmap_messagespo] [friendica.addon_openstreetmap_messagespo]
file_filter = openstreetmap/lang/<lang>/messages.po file_filter = openstreetmap/lang/<lang>/messages.po
source_file = openstreetmap/lang/C/messages.po source_file = openstreetmap/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_pageheader_messagespo] [friendica.addon_pageheader_messagespo]
file_filter = pageheader/lang/<lang>/messages.po file_filter = pageheader/lang/<lang>/messages.po
source_file = pageheader/lang/C/messages.po source_file = pageheader/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_piwik_messagespo] [friendica.addon_piwik_messagespo]
file_filter = piwik/lang/<lang>/messages.po file_filter = piwik/lang/<lang>/messages.po
source_file = piwik/lang/C/messages.po source_file = piwik/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_planets_messagespo] [friendica.addon_planets_messagespo]
file_filter = planets/lang/<lang>/messages.po file_filter = planets/lang/<lang>/messages.po
source_file = planets/lang/C/messages.po source_file = planets/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_public_server_messagespo] [friendica.addon_public_server_messagespo]
file_filter = public_server/lang/<lang>/messages.po file_filter = public_server/lang/<lang>/messages.po
source_file = public_server/lang/C/messages.po source_file = public_server/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_pumpio_messagespo] [friendica.addon_pumpio_messagespo]
file_filter = pumpio/lang/<lang>/messages.po file_filter = pumpio/lang/<lang>/messages.po
source_file = pumpio/lang/C/messages.po source_file = pumpio/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_qcomment_messagespo] [friendica.addon_qcomment_messagespo]
file_filter = qcomment/lang/<lang>/messages.po file_filter = qcomment/lang/<lang>/messages.po
source_file = qcomment/lang/C/messages.po source_file = qcomment/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_randplace_messagespo] [friendica.addon_randplace_messagespo]
file_filter = randplace/lang/<lang>/messages.po file_filter = randplace/lang/<lang>/messages.po
source_file = randplace/lang/C/messages.po source_file = randplace/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_remote_permissions_messagespo] [friendica.addon_remote_permissions_messagespo]
file_filter = remote_permissions/lang/<lang>/messages.po file_filter = remote_permissions/lang/<lang>/messages.po
source_file = remote_permissions/lang/C/messages.po source_file = remote_permissions/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_rendertime_messagespo] [friendica.addon_rendertime_messagespo]
file_filter = rendertime/lang/<lang>/messages.po file_filter = rendertime/lang/<lang>/messages.po
source_file = rendertime/lang/C/messages.po source_file = rendertime/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_securemail_messagespo] [friendica.addon_securemail_messagespo]
file_filter = securemail/lang/<lang>/messages.po file_filter = securemail/lang/<lang>/messages.po
source_file = securemail/lang/C/messages.po source_file = securemail/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_showmore_messagespo] [friendica.addon_showmore_messagespo]
file_filter = showmore/lang/<lang>/messages.po file_filter = showmore/lang/<lang>/messages.po
source_file = showmore/lang/C/messages.po source_file = showmore/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_smileybutton_messagespo] [friendica.addon_smileybutton_messagespo]
file_filter = smileybutton/lang/<lang>/messages.po file_filter = smileybutton/lang/<lang>/messages.po
source_file = smileybutton/lang/C/messages.po source_file = smileybutton/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_startpage_messagespo] [friendica.addon_startpage_messagespo]
file_filter = startpage/lang/<lang>/messages.po file_filter = startpage/lang/<lang>/messages.po
source_file = startpage/lang/C/messages.po source_file = startpage/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_statusnet_messagespo] [friendica.addon_statusnet_messagespo]
file_filter = statusnet/lang/<lang>/messages.po file_filter = statusnet/lang/<lang>/messages.po
source_file = statusnet/lang/C/messages.po source_file = statusnet/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_superblock_messagespo] [friendica.addon_superblock_messagespo]
file_filter = superblock/lang/<lang>/messages.po file_filter = superblock/lang/<lang>/messages.po
source_file = superblock/lang/C/messages.po source_file = superblock/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_testdrive_messagespo] [friendica.addon_testdrive_messagespo]
file_filter = testdrive/lang/<lang>/messages.po file_filter = testdrive/lang/<lang>/messages.po
source_file = testdrive/lang/C/messages.po source_file = testdrive/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_tictac_messagespo] [friendica.addon_tictac_messagespo]
file_filter = tictac/lang/<lang>/messages.po file_filter = tictac/lang/<lang>/messages.po
source_file = tictac/lang/C/messages.po source_file = tictac/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_tumblr_messagespo] [friendica.addon_tumblr_messagespo]
file_filter = tumblr/lang/<lang>/messages.po file_filter = tumblr/lang/<lang>/messages.po
source_file = tumblr/lang/C/messages.po source_file = tumblr/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_twitter_messagespo] [friendica.addon_twitter_messagespo]
file_filter = twitter/lang/<lang>/messages.po file_filter = twitter/lang/<lang>/messages.po
source_file = twitter/lang/C/messages.po source_file = twitter/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_viewsrc_messagespo] [friendica.addon_viewsrc_messagespo]
file_filter = viewsrc/lang/<lang>/messages.po file_filter = viewsrc/lang/<lang>/messages.po
source_file = viewsrc/lang/C/messages.po source_file = viewsrc/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_webrtc_messagespo] [friendica.addon_webrtc_messagespo]
file_filter = webrtc/lang/<lang>/messages.po file_filter = webrtc/lang/<lang>/messages.po
source_file = webrtc/lang/C/messages.po source_file = webrtc/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_widgets_messagespo] [friendica.addon_widgets_messagespo]
file_filter = widgets/lang/<lang>/messages.po file_filter = widgets/lang/<lang>/messages.po
source_file = widgets/lang/C/messages.po source_file = widgets/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_windowsphonepush_messagespo] [friendica.addon_windowsphonepush_messagespo]
file_filter = windowsphonepush/lang/<lang>/messages.po file_filter = windowsphonepush/lang/<lang>/messages.po
source_file = windowsphonepush/lang/C/messages.po source_file = windowsphonepush/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_wppost_messagespo] [friendica.addon_wppost_messagespo]
file_filter = wppost/lang/<lang>/messages.po file_filter = wppost/lang/<lang>/messages.po
source_file = wppost/lang/C/messages.po source_file = wppost/lang/C/messages.po
source_lang = en source_lang = en
type = PO type = PO
[o:Friendica:p:friendica:r:addon_xmpp_messagespo] [friendica.addon_xmpp_messagespo]
file_filter = xmpp/lang/<lang>/messages.po file_filter = xmpp/lang/<lang>/messages.po
source_file = xmpp/lang/C/messages.po source_file = xmpp/lang/C/messages.po
source_lang = en source_lang = en

View file

@ -1,72 +0,0 @@
skip_clone: true
pipeline:
clone_friendica_base:
image: alpine/git
commands:
- git config --global user.email "no-reply@friendi.ca"
- git config --global user.name "Friendica"
- git config --global --add safe.directory $CI_WORKSPACE
- git clone https://github.com/friendica/friendica.git .
- git checkout $CI_COMMIT_BRANCH
when:
event: pull_request
clone_friendica_addon:
image: alpine/git
commands:
- git config --global user.email "no-reply@friendi.ca"
- git config --global user.name "Friendica"
- git clone $CI_REPO_CLONE_URL addon
- cd addon/
- git checkout $CI_COMMIT_BRANCH
- git fetch origin $CI_COMMIT_REF
- git merge $CI_COMMIT_SHA
when:
event: pull_request
restore_cache:
image: meltwater/drone-cache:dev
settings:
backend: "filesystem"
restore: true
cache_key: '{{ .Repo.Name }}_phpcs_{{ arch }}_{{ os }}'
archive_format: "gzip"
mount:
- '.composer'
volumes:
- /tmp/drone-cache:/tmp/cache
when:
event: pull_request
composer_install:
image: composer
commands:
- export COMPOSER_HOME=.composer
- ./bin/composer.phar run cs:install
when:
event: pull_request
rebuild_cache:
image: meltwater/drone-cache:dev
settings:
backend: "filesystem"
rebuild: true
cache_key: '{{ .Repo.Name }}_phpcs_{{ arch }}_{{ os }}'
archive_format: "gzip"
mount:
- '.composer'
volumes:
- /tmp/drone-cache:/tmp/cache
when:
event: pull_request
check:
image: friendicaci/php-cs
commands:
- cd addon/
- if [ ! -z "$${CI_COMMIT_PULL_REQUEST}" ]; then
git fetch --no-tags origin ${CI_COMMIT_TARGET_BRANCH};
export CHANGED_FILES="$(git diff --name-status $(git merge-base FETCH_HEAD origin/${CI_COMMIT_TARGET_BRANCH})..${CI_COMMIT_SHA} | grep ^A | cut -f2 | sed -e "s/^/addon\\//")";
else
export CHANGED_FILES="$(git diff --name-status ${CI_COMMIT_SHA} | grep ^A | cut -f2 | sed -e "s/^/addon\\//")";
fi
- cd ../
- /check-php-cs.sh
when:
event: pull_request

View file

@ -1,115 +0,0 @@
# This prevents executing this pipeline at other servers than ci.friendi.ca
labels:
location: friendica
type: releaser
skip_clone: true
pipeline:
clone_friendica_base:
image: alpine/git
commands:
- git config --global user.email "no-reply@friendi.ca"
- git config --global user.name "Friendica"
- git config --global --add safe.directory $CI_WORKSPACE
- git clone https://github.com/friendica/friendica.git .
- git checkout $CI_COMMIT_BRANCH
when:
repo: friendica/friendica-addons
branch: [ develop, '*-rc' ]
event: push
clone_friendica_addon:
image: alpine/git
commands:
- git config --global user.email "no-reply@friendi.ca"
- git config --global user.name "Friendica"
- git clone $CI_REPO_CLONE_URL addon
- cd addon/
- git checkout $CI_COMMIT_BRANCH
- git fetch origin $CI_COMMIT_REF
- git merge $CI_COMMIT_SHA
when:
repo: friendica/friendica-addons
branch: [ develop, '*-rc' ]
event: push
restore_cache:
image: meltwater/drone-cache:dev
settings:
backend: "filesystem"
restore: true
cache_key: "{{ .Repo.Name }}_php7.4_{{ arch }}_{{ os }}"
archive_format: "gzip"
mount:
- '.composer'
volumes:
- /tmp/drone-cache:/tmp/cache
when:
repo: friendica/friendica-addons
branch: [ develop, '*-rc' ]
event: push
composer_install:
image: friendicaci/php8.2:php8.2.16
commands:
- export COMPOSER_HOME=.composer
- composer validate
- composer install --no-dev --optimize-autoloader
volumes:
- /etc/hosts:/etc/hosts
when:
repo: friendica/friendica-addons
branch: [ develop, '*-rc' ]
event: push
create_artifacts:
image: debian
commands:
- apt-get update
- apt-get install bzip2
- mkdir ./build
- export VERSION="$(cat VERSION)"
- export RELEASE="friendica-addons-$VERSION"
- export ARTIFACT="$RELEASE.tar.gz"
- tar
--exclude='.tx'
--exclude='.git'
--exclude='.editorconfig'
--exclude='.gitattributes'
--exclude='.gitignore'
--exclude='.woodpecker'
--exclude='**/*/messages.po'
-cvzf ./build/$ARTIFACT addon/
- cd ./build
- sha256sum "$ARTIFACT" > "$ARTIFACT.sum256"
- chmod 664 ./*
- ls -lh
- cat "$ARTIFACT.sum256"
- sha256sum "$ARTIFACT"
when:
repo: friendica/friendica-addons
branch: [ develop, '*-rc' ]
event: push
sign_artifacts:
image: plugins/gpgsign
settings:
key:
from_secret: gpg_key
passphrase:
from_secret: gpg_password
files:
- build/*
exclude:
- build/*.sum256
detach_sign: true
when:
repo: friendica/friendica-addons
branch: [ develop, '*-rc' ]
event: push
publish_artifacts:
image: alpine
commands:
- cp -fr build/* /tmp/friendica_files/
volumes:
- files:/tmp/friendica_files
when:
repo: friendica/friendica-addons
branch: [ develop, '*-rc' ]
event: push

View file

@ -1,40 +0,0 @@
skip_clone: true
pipeline:
clone_friendica_base:
image: alpine/git
commands:
- git config --global user.email "no-reply@friendi.ca"
- git config --global user.name "Friendica"
- git config --global --add safe.directory $CI_WORKSPACE
- git clone https://github.com/friendica/friendica.git .
- git checkout $CI_COMMIT_BRANCH
when:
event: pull_request
clone_friendica_addon:
image: alpine/git
commands:
- git config --global user.email "no-reply@friendi.ca"
- git config --global user.name "Friendica"
- git clone $CI_REPO_CLONE_URL addon
- cd addon/
- git checkout $CI_COMMIT_BRANCH
- git fetch origin $CI_COMMIT_REF
- git merge $CI_COMMIT_SHA
when:
event: pull_request
build_xgettext:
image: friendicaci/transifex
commands:
- /xgettext-addon.sh
when:
event: pull_request
check:
image: friendicaci/transifex
commands:
- /check-addons.sh
when:
event: pull_request
branches:
exclude: [ stable ]

View file

@ -1,118 +0,0 @@
matrix:
include:
- PHP_MAJOR_VERSION: 7.4
PHP_VERSION: 7.4.33
- PHP_MAJOR_VERSION: 8.0
PHP_VERSION: 8.0.30
- PHP_MAJOR_VERSION: 8.1
PHP_VERSION: 8.1.27
- PHP_MAJOR_VERSION: 8.2
PHP_VERSION: 8.2.16
- PHP_MAJOR_VERSION: 8.3
PHP_VERSION: 8.3.3
# This forces PHP Unit executions at the "opensocial" labeled location (because of much more power...)
labels:
location: opensocial
skip_clone: true
pipeline:
clone_friendica_base:
image: alpine/git
commands:
- git config --global user.email "no-reply@friendi.ca"
- git config --global user.name "Friendica"
- git config --global --add safe.directory $CI_WORKSPACE
- git clone https://github.com/friendica/friendica.git .
- git checkout $CI_COMMIT_BRANCH
clone_friendica_addon:
image: alpine/git
commands:
- git config --global user.email "no-reply@friendi.ca"
- git config --global user.name "Friendica"
- git clone $CI_REPO_CLONE_URL addon
- cd addon/
- git checkout $CI_COMMIT_BRANCH
- git fetch origin $CI_COMMIT_REF
- git merge $CI_COMMIT_SHA
restore_cache:
image: meltwater/drone-cache:dev
settings:
backend: "filesystem"
restore: true
cache_key: "{{ .Repo.Name }}_php${PHP_MAJOR_VERSION}_{{ arch }}_{{ os }}"
archive_format: "gzip"
mount:
- '.composer'
volumes:
- /tmp/drone-cache:/tmp/cache
composer_install:
image: friendicaci/php${PHP_MAJOR_VERSION}:php${PHP_VERSION}
commands:
- export COMPOSER_HOME=.composer
- ./bin/composer.phar validate
- ./bin/composer.phar install --prefer-dist
volumes:
- /etc/hosts:/etc/hosts
rebuild_cache:
image: meltwater/drone-cache:dev
settings:
backend: "filesystem"
rebuild: true
cache_key: "{{ .Repo.Name }}_php${PHP_MAJOR_VERSION}_{{ arch }}_{{ os }}"
archive_format: "gzip"
mount:
- '.composer'
volumes:
- /tmp/drone-cache:/tmp/cache
test:
image: friendicaci/php${PHP_MAJOR_VERSION}:php${PHP_VERSION}
environment:
MYSQL_HOST: "mariadb"
MYSQL_PORT: "3306"
MYSQL_DATABASE: "test"
MYSQL_PASSWORD: "test"
MYSQL_USER: "test"
REDIS_HOST: "redis"
MEMCACHED_HOST: "memcached"
MEMCACHE_HOST: "memcached"
commands:
- cp config/local-sample.config.php config/local.config.php
- if ! bin/wait-for-connection $MYSQL_HOST $MYSQL_PORT 300; then echo "[ERROR] Waited 300 seconds, no response" >&2; exit 1; fi
- mysql -h$MYSQL_HOST -P$MYSQL_PORT -p$MYSQL_PASSWORD -u$MYSQL_USER $MYSQL_DATABASE < database.sql
- if [ "${PHP_MAJOR_VERSION}" = "8.2" -a "${CI_REPO}" = "friendica/friendica-addons" ]; then
phpenmod xdebug;
export XDEBUG_MODE=coverage;
phpunit --configuration tests/phpunit-addons.xml --coverage-clover clover.xml;
else
phpunit --configuration tests/phpunit-addons.xml;
fi
codecov:
image: friendicaci/codecov
when:
matrix:
PHP_MAJOR_VERSION: 8.2
PHP_VERSION: 8.2.16
repo:
- friendica/friendica-addons
commands:
- codecov -R '.' -Z -f 'clover.xml'
secrets:
- source: codecov-token
target: codecov_token
services:
mariadb:
image: mariadb:latest
environment:
MYSQL_ALLOW_EMPTY_PASSWORD: "true"
MYSQL_DATABASE: "test"
MYSQL_PASSWORD: "test"
MYSQL_USER: "test"
memcached:
image: memcached
redis:
image: redis

View file

@ -1,108 +0,0 @@
# This prevents executing this pipeline at other servers than ci.friendi.ca
labels:
location: friendica
type: releaser
skip_clone: true
pipeline:
clone_friendica_base:
image: alpine/git
commands:
- git config --global user.email "no-reply@friendi.ca"
- git config --global user.name "Friendica"
- git config --global --add safe.directory $CI_WORKSPACE
- git clone https://github.com/friendica/friendica.git .
- git checkout $CI_COMMIT_BRANCH
when:
repo: friendica/friendica-addons
event: tag
clone_friendica_addon:
image: alpine/git
commands:
- git config --global user.email "no-reply@friendi.ca"
- git config --global user.name "Friendica"
- git clone $CI_REPO_CLONE_URL addon
- cd addon/
- git checkout $CI_COMMIT_BRANCH
- git fetch origin $CI_COMMIT_REF
- git merge $CI_COMMIT_SHA
when:
repo: friendica/friendica-addons
event: tag
restore_cache:
image: meltwater/drone-cache:dev
settings:
backend: "filesystem"
restore: true
cache_key: "{{ .Repo.Name }}_php7.4_{{ arch }}_{{ os }}"
archive_format: "gzip"
mount:
- '.composer'
volumes:
- /tmp/drone-cache:/tmp/cache
when:
repo: friendica/friendica-addons
event: tag
composer_install:
image: friendicaci/php8.2:php8.2.16
commands:
- export COMPOSER_HOME=.composer
- composer validate
- composer install --no-dev --optimize-autoloader
when:
repo: friendica/friendica-addons
event: tag
volumes:
- /etc/hosts:/etc/hosts
create_artifacts:
image: debian
commands:
- apt-get update
- apt-get install bzip2
- mkdir ./build
- export VERSION="$(cat VERSION)"
- export RELEASE="friendica-addons-$VERSION"
- export ARTIFACT="$RELEASE.tar.gz"
- tar
--exclude='.tx'
--exclude='.git'
--exclude='.editorconfig'
--exclude='.gitattributes'
--exclude='.gitignore'
--exclude='.woodpecker'
--exclude='**/*/messages.po'
-cvzf ./build/$ARTIFACT addon/
- cd ./build
- sha256sum "$ARTIFACT" > "$ARTIFACT.sum256"
- chmod 664 ./*
- ls -lh
- cat "$ARTIFACT.sum256"
- sha256sum "$ARTIFACT"
when:
repo: friendica/friendica-addons
event: tag
sign_artifacts:
image: plugins/gpgsign
settings:
key:
from_secret: gpg_key
passphrase:
from_secret: gpg_password
files:
- build/*
exclude:
- build/*.sum256
detach_sign: true
when:
repo: friendica/friendica-addons
event: tag
publish_artifacts:
image: alpine
commands:
- cp -fr build/* /tmp/friendica_files/
volumes:
- files:/tmp/friendica_files
when:
repo: friendica/friendica-addons
event: tag

View file

@ -6,24 +6,20 @@ You can add these addons to the /addon directory of your Friendica installation
After uploading the addons to your server, you need to activate the desired addons in the Admin panel. Addons not activated have no effect on your node. After uploading the addons to your server, you need to activate the desired addons in the Admin panel. Addons not activated have no effect on your node.
## Issues
Please report any issues you have with addons of Friendica from this repository in [the main issue tracker of the project](https://github.com/friendica/friendica/issues).
## Connectors ## Connectors
Among these addons there are also the [connectors](https://github.com/friendica/friendica/blob/stable/doc/Connectors.md) for various other networks (e.g. Twitter, pump.io, Google+) that are needed for communication when the protocol is not supported by Friendica core (DFRN, OStatus and Diaspora). Among these addons there are also the [connectors](https://github.com/friendica/friendica/blob/master/doc/Connectors.md) for various other networks (e.g. Twitter, pump.io, Google+) that are needed for communication when the protocol is not supported by Friendica core (DFRN, OStatus and Diaspora).
For communication with contacts in networks supporting those (e.g. GNU social, Diaspora and red#matrix) you just need to access the page configuration in the Admin panel and enable them. For networks where communication is only possible the API access to a remote account, you need to activate the fitting connectors. For communication with contacts in networks supporting those (e.g. GNU social, Diaspora and red#matrix) you just need to access the page configuration in the Admin panel and enable them. For networks where communication is only possible the API access to a remote account, you need to activate the fitting connectors.
## Development ## Development
The addon interface of Friendica is very flexible and powerful, so if you are missing functionality, your chances are high it may be added with an addon. The addon interface of Friendica is very flexible and powerful, so if you are missing functionality, your chances are high it may be added with an addon.
See the [documentation](https://github.com/friendica/friendica/blob/stable/doc/Addons.md) for more information on the addon development. See the [documentation](https://github.com/friendica/friendica/blob/master/doc/Addons.md) for more information on the addon development.
## Translation ## Translation
Addons can be translated like any other part of Friendica. Addons can be translated like any other part of Friendica.
Translation for addons is done at [the Transifex Friendica page](https://www.transifex.com/Friendica/friendica/dashboard/). Translation for addons is done at [the Transifex Friendica page](https://www.transifex.com/Friendica/friendica/dashboard/).
Read more about the workflow in the [Friendica translation documentation](https://github.com/friendica/friendica/blob/stable/doc/translations.md#addon). Read more about the workflow in the [Friendica translation documentation](https://github.com/friendica/friendica/blob/master/doc/translations.md#addon).

File diff suppressed because one or more lines are too long

View file

@ -43,9 +43,7 @@ use Friendica\Database\DBA;
use Friendica\Database\DBStructure; use Friendica\Database\DBStructure;
use Friendica\DI; use Friendica\DI;
use Friendica\Model\Item; use Friendica\Model\Item;
use Friendica\Model\Post;
use Friendica\Model\Tag; use Friendica\Model\Tag;
use Friendica\Model\User;
use Friendica\Module\Security\Login; use Friendica\Module\Security\Login;
use Friendica\Network\HTTPException; use Friendica\Network\HTTPException;
use Friendica\Util\DateTimeFormat; use Friendica\Util\DateTimeFormat;
@ -55,67 +53,50 @@ use Symfony\Component\ExpressionLanguage;
require_once __DIR__ . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php'; require_once __DIR__ . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php';
function advancedcontentfilter_install() function advancedcontentfilter_install(App $a)
{ {
Hook::register('dbstructure_definition' , __FILE__, 'advancedcontentfilter_dbstructure_definition'); Hook::register('dbstructure_definition' , __FILE__, 'advancedcontentfilter_dbstructure_definition');
Hook::register('prepare_body_content_filter', __FILE__, 'advancedcontentfilter_prepare_body_content_filter'); Hook::register('prepare_body_content_filter', __FILE__, 'advancedcontentfilter_prepare_body_content_filter');
Hook::register('addon_settings' , __FILE__, 'advancedcontentfilter_addon_settings'); Hook::register('addon_settings' , __FILE__, 'advancedcontentfilter_addon_settings');
Hook::add('dbstructure_definition' , __FILE__, 'advancedcontentfilter_dbstructure_definition'); Hook::add('dbstructure_definition' , __FILE__, 'advancedcontentfilter_dbstructure_definition');
DBStructure::performUpdate(); DBStructure::update($a->getBasePath(), false, true);
Logger::notice('installed advancedcontentfilter'); Logger::log("installed advancedcontentfilter");
}
function advancedcontentfilter_uninstall()
{
Hook::unregister('dbstructure_definition' , __FILE__, 'advancedcontentfilter_dbstructure_definition');
Hook::unregister('prepare_body_content_filter', __FILE__, 'advancedcontentfilter_prepare_body_content_filter');
Hook::unregister('addon_settings' , __FILE__, 'advancedcontentfilter_addon_settings');
} }
/* /*
* Hooks * Hooks
*/ */
function advancedcontentfilter_dbstructure_definition(&$database) function advancedcontentfilter_dbstructure_definition(App $a, &$database)
{ {
$database['advancedcontentfilter_rules'] = [ $database["advancedcontentfilter_rules"] = [
'comment' => 'Advancedcontentfilter addon rules', "comment" => "Advancedcontentfilter addon rules",
'fields' => [ "fields" => [
'id' => ['type' => 'int unsigned', 'not null' => '1', 'extra' => 'auto_increment', 'primary' => '1', 'comment' => 'Auto incremented rule id'], "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "Auto incremented rule id"],
'uid' => ['type' => 'int unsigned', 'not null' => '1', 'comment' => 'Owner user id'], "uid" => ["type" => "int unsigned", "not null" => "1", "comment" => "Owner user id"],
'name' => ['type' => 'varchar(255)', 'not null' => '1', 'comment' => 'Rule name'], "name" => ["type" => "varchar(255)", "not null" => "1", "comment" => "Rule name"],
'expression' => ['type' => 'mediumtext' , 'not null' => '1', 'comment' => 'Expression text'], "expression" => ["type" => "mediumtext" , "not null" => "1", "comment" => "Expression text"],
'serialized' => ['type' => 'mediumtext' , 'not null' => '1', 'comment' => 'Serialized parsed expression'], "serialized" => ["type" => "mediumtext" , "not null" => "1", "comment" => "Serialized parsed expression"],
'active' => ['type' => 'boolean' , 'not null' => '1', 'default' => '1', 'comment' => 'Whether the rule is active or not'], "active" => ["type" => "boolean" , "not null" => "1", "default" => "1", "comment" => "Whether the rule is active or not"],
'created' => ['type' => 'datetime' , 'not null' => '1', 'default' => DBA::NULL_DATETIME, 'comment' => 'Creation date'], "created" => ["type" => "datetime" , "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "Creation date"],
], ],
'indexes' => [ "indexes" => [
'PRIMARY' => ['id'], "PRIMARY" => ["id"],
'uid_active' => ['uid', 'active'], "uid_active" => ["uid", "active"],
] ]
]; ];
} }
/** function advancedcontentfilter_prepare_body_content_filter(App $a, &$hook_data)
* @param array $item Prepared by either Model\Item::prepareBody or advancedcontentfilter_prepare_item_row
* @return array
*/
function advancedcontentfilter_get_filter_fields(array $item)
{
$vars = [];
// Convert the language JSON text into a filterable format
if (!empty($item['language']) && ($languages = json_decode($item['language'], true))) {
foreach ($languages as $key => $value) {
$vars['language_' . strtolower($key)] = $value;
}
}
foreach ($item as $key => $value) {
$vars[str_replace('-', '_', $key)] = $value;
}
ksort($vars);
return $vars;
}
function advancedcontentfilter_prepare_body_content_filter(&$hook_data)
{ {
static $expressionLanguage; static $expressionLanguage;
@ -123,21 +104,24 @@ function advancedcontentfilter_prepare_body_content_filter(&$hook_data)
$expressionLanguage = new ExpressionLanguage\ExpressionLanguage(); $expressionLanguage = new ExpressionLanguage\ExpressionLanguage();
} }
if (!DI::userSession()->getLocalUserId()) { if (!local_user()) {
return; return;
} }
$vars = advancedcontentfilter_get_filter_fields($hook_data['item']); $vars = [];
foreach ($hook_data['item'] as $key => $value) {
$vars[str_replace('-', '_', $key)] = $value;
}
$rules = DI::cache()->get('rules_' . DI::userSession()->getLocalUserId()); $rules = DI::cache()->get('rules_' . local_user());
if (!isset($rules)) { if (!isset($rules)) {
$rules = DBA::toArray(DBA::select( $rules = DBA::toArray(DBA::select(
'advancedcontentfilter_rules', 'advancedcontentfilter_rules',
['name', 'expression', 'serialized'], ['name', 'expression', 'serialized'],
['uid' => DI::userSession()->getLocalUserId(), 'active' => true] ['uid' => local_user(), 'active' => true]
)); ));
DI::cache()->set('rules_' . DI::userSession()->getLocalUserId(), $rules); DI::cache()->set('rules_' . local_user(), $rules);
} }
if ($rules) { if ($rules) {
@ -163,75 +147,49 @@ function advancedcontentfilter_prepare_body_content_filter(&$hook_data)
} }
function advancedcontentfilter_addon_settings(array &$data) function advancedcontentfilter_addon_settings(App $a, &$s)
{ {
if (!DI::userSession()->getLocalUserId()) { if (!local_user()) {
return; return;
} }
$data = [ $advancedcontentfilter = DI::l10n()->t('Advanced Content Filter');
'addon' => 'advancedcontentfilter',
'title' => DI::l10n()->t('Advanced Content Filter'), $s .= <<<HTML
'href' => 'advancedcontentfilter', <span class="settings-block fakelink" style="display: block;"><h3><a href="advancedcontentfilter">$advancedcontentfilter <i class="glyphicon glyphicon-share"></i></a></h3></span>
]; HTML;
return;
} }
/* /*
* Module * Module
*/ */
/**
* This is a statement rather than an actual function definition. The simple
* existence of this method is checked to figure out if the addon offers a
* module.
*/
function advancedcontentfilter_module() {} function advancedcontentfilter_module() {}
function advancedcontentfilter_init() function advancedcontentfilter_init(App $a)
{ {
if (DI::args()->getArgc() > 1 && DI::args()->getArgv()[1] == 'api') { if ($a->argc > 1 && $a->argv[1] == 'api') {
$slim = \Slim\Factory\AppFactory::create(); $slim = new \Slim\App();
/** require __DIR__ . '/src/middlewares.php';
* The routing middleware should be added before the ErrorMiddleware
* Otherwise exceptions thrown from it will not be handled
*/
$slim->addRoutingMiddleware();
$slim->addErrorMiddleware(true, true, true, DI::logger());
// register routes
$slim->group('/advancedcontentfilter/api', function (\Slim\Routing\RouteCollectorProxy $app) {
$app->group('/rules', function (\Slim\Routing\RouteCollectorProxy $app) {
$app->get('', 'advancedcontentfilter_get_rules');
$app->post('', 'advancedcontentfilter_post_rules');
$app->get('/{id}', 'advancedcontentfilter_get_rules_id');
$app->put('/{id}', 'advancedcontentfilter_put_rules_id');
$app->delete('/{id}', 'advancedcontentfilter_delete_rules_id');
});
$app->group('/variables', function (\Slim\Routing\RouteCollectorProxy $app) {
$app->get('/{guid}', 'advancedcontentfilter_get_variables_guid');
});
});
require __DIR__ . '/src/routes.php';
$slim->run(); $slim->run();
exit; exit;
} }
} }
function advancedcontentfilter_content() function advancedcontentfilter_content(App $a)
{ {
if (!DI::userSession()->getLocalUserId()) { if (!local_user()) {
return Login::form('/' . implode('/', DI::args()->getArgv())); return Login::form('/' . implode('/', $a->argv));
} }
if (DI::args()->getArgc() > 1 && DI::args()->getArgv()[1] == 'help') { if ($a->argc > 1 && $a->argv[1] == 'help') {
$user = User::getById(DI::userSession()->getLocalUserId()); $lang = $a->user['language'];
$lang = $user['language'];
$default_dir = 'addon/advancedcontentfilter/doc/'; $default_dir = 'addon/advancedcontentfilter/doc/';
$help_file = 'advancedcontentfilter.md'; $help_file = 'advancedcontentfilter.md';
@ -273,8 +231,8 @@ function advancedcontentfilter_content()
'rule_expression' => DI::l10n()->t('Rule Expression'), 'rule_expression' => DI::l10n()->t('Rule Expression'),
'cancel' => DI::l10n()->t('Cancel'), 'cancel' => DI::l10n()->t('Cancel'),
], ],
'$current_theme' => DI::app()->getCurrentTheme(), '$current_theme' => $a->getCurrentTheme(),
'$rules' => DBA::toArray(DBA::select('advancedcontentfilter_rules', [], ['uid' => DI::userSession()->getLocalUserId()])), '$rules' => advancedcontentfilter_get_rules(),
'$form_security_token' => BaseModule::getFormSecurityToken() '$form_security_token' => BaseModule::getFormSecurityToken()
]); ]);
} }
@ -292,20 +250,29 @@ function advancedcontentfilter_build_fields($data)
} }
if (!empty($data['expression'])) { if (!empty($data['expression'])) {
// Using a dummy item to validate the field existence $allowed_keys = [
$condition = ["(`uid` = ? OR `uid` = 0)", DI::userSession()->getLocalUserId()]; 'author_id', 'author_link', 'author_name', 'author_avatar',
$params = ['order' => ['uid' => true]]; 'owner_id', 'owner_link', 'owner_name', 'owner_avatar',
$item_row = Post::selectFirstForUser(DI::userSession()->getLocalUserId(), [], $condition, $params); 'contact_id', 'uid', 'id', 'parent', 'uri',
'thr_parent', 'parent_uri',
if (!DBA::isResult($item_row)) { 'content_warning',
throw new HTTPException\NotFoundException(DI::l10n()->t('This addon requires this node having at least one post')); 'commented', 'created', 'edited', 'received',
} 'verb', 'object_type', 'postopts', 'plink', 'guid', 'wall', 'private', 'starred',
'title', 'body',
'file', 'event_id', 'location', 'coord', 'app', 'attach',
'rendered_hash', 'rendered_html', 'object',
'allow_cid', 'allow_gid', 'deny_cid', 'deny_gid',
'item_id', 'item_network', 'author_thumb', 'owner_thumb',
'network', 'url', 'name', 'writable', 'self',
'cid', 'alias',
'event_created', 'event_edited', 'event_start', 'event_finish', 'event_summary',
'event_desc', 'event_location', 'event_type', 'event_nofinish', 'event_adjust', 'event_ignore',
'children', 'pagedrop', 'tags', 'hashtags', 'mentions',
];
$expressionLanguage = new ExpressionLanguage\ExpressionLanguage(); $expressionLanguage = new ExpressionLanguage\ExpressionLanguage();
$parsedExpression = $expressionLanguage->parse(
$data['expression'], $parsedExpression = $expressionLanguage->parse($data['expression'], $allowed_keys);
array_keys(advancedcontentfilter_get_filter_fields(advancedcontentfilter_prepare_item_row($item_row)))
);
$serialized = serialize($parsedExpression->getNodes()); $serialized = serialize($parsedExpression->getNodes());
@ -326,33 +293,31 @@ function advancedcontentfilter_build_fields($data)
* API * API
*/ */
function advancedcontentfilter_get_rules(ServerRequestInterface $request, ResponseInterface $response): ResponseInterface function advancedcontentfilter_get_rules()
{ {
if (!DI::userSession()->getLocalUserId()) { if (!local_user()) {
throw new HTTPException\UnauthorizedException(DI::l10n()->t('You must be logged in to use this method')); throw new HTTPException\UnauthorizedException(DI::l10n()->t('You must be logged in to use this method'));
} }
$rules = DBA::toArray(DBA::select('advancedcontentfilter_rules', [], ['uid' => DI::userSession()->getLocalUserId()])); $rules = DBA::toArray(DBA::select('advancedcontentfilter_rules', [], ['uid' => local_user()]));
$response->getBody()->write(json_encode($rules)); return json_encode($rules);
return $response->withHeader('Content-Type', 'application/json');
} }
function advancedcontentfilter_get_rules_id(ServerRequestInterface $request, ResponseInterface $response, $args) function advancedcontentfilter_get_rules_id(ServerRequestInterface $request, ResponseInterface $response, $args)
{ {
if (!DI::userSession()->getLocalUserId()) { if (!local_user()) {
throw new HTTPException\UnauthorizedException(DI::l10n()->t('You must be logged in to use this method')); throw new HTTPException\UnauthorizedException(DI::l10n()->t('You must be logged in to use this method'));
} }
$rule = DBA::selectFirst('advancedcontentfilter_rules', [], ['id' => $args['id'], 'uid' => DI::userSession()->getLocalUserId()]); $rule = DBA::selectFirst('advancedcontentfilter_rules', [], ['id' => $args['id'], 'uid' => local_user()]);
$response->getBody()->write(json_encode($rule)); return json_encode($rule);
return $response->withHeader('Content-Type', 'application/json');
} }
function advancedcontentfilter_post_rules(ServerRequestInterface $request, ResponseInterface $response) function advancedcontentfilter_post_rules(ServerRequestInterface $request)
{ {
if (!DI::userSession()->getLocalUserId()) { if (!local_user()) {
throw new HTTPException\UnauthorizedException(DI::l10n()->t('You must be logged in to use this method')); throw new HTTPException\UnauthorizedException(DI::l10n()->t('You must be logged in to use this method'));
} }
@ -372,7 +337,7 @@ function advancedcontentfilter_post_rules(ServerRequestInterface $request, Respo
throw new HTTPException\BadRequestException(DI::l10n()->t('The rule name and expression are required.')); throw new HTTPException\BadRequestException(DI::l10n()->t('The rule name and expression are required.'));
} }
$fields['uid'] = DI::userSession()->getLocalUserId(); $fields['uid'] = local_user();
$fields['created'] = DateTimeFormat::utcNow(); $fields['created'] = DateTimeFormat::utcNow();
if (!DBA::insert('advancedcontentfilter_rules', $fields)) { if (!DBA::insert('advancedcontentfilter_rules', $fields)) {
@ -381,15 +346,12 @@ function advancedcontentfilter_post_rules(ServerRequestInterface $request, Respo
$rule = DBA::selectFirst('advancedcontentfilter_rules', [], ['id' => DBA::lastInsertId()]); $rule = DBA::selectFirst('advancedcontentfilter_rules', [], ['id' => DBA::lastInsertId()]);
DI::cache()->delete('rules_' . DI::userSession()->getLocalUserId()); return json_encode(['message' => DI::l10n()->t('Rule successfully added'), 'rule' => $rule]);
$response->getBody()->write(json_encode(['message' => DI::l10n()->t('Rule successfully added'), 'rule' => $rule]));
return $response->withHeader('Content-Type', 'application/json');
} }
function advancedcontentfilter_put_rules_id(ServerRequestInterface $request, ResponseInterface $response, $args) function advancedcontentfilter_put_rules_id(ServerRequestInterface $request, ResponseInterface $response, $args)
{ {
if (!DI::userSession()->getLocalUserId()) { if (!local_user()) {
throw new HTTPException\UnauthorizedException(DI::l10n()->t('You must be logged in to use this method')); throw new HTTPException\UnauthorizedException(DI::l10n()->t('You must be logged in to use this method'));
} }
@ -397,7 +359,7 @@ function advancedcontentfilter_put_rules_id(ServerRequestInterface $request, Res
throw new HTTPException\BadRequestException(DI::l10n()->t('Invalid form security token, please refresh the page.')); throw new HTTPException\BadRequestException(DI::l10n()->t('Invalid form security token, please refresh the page.'));
} }
if (!DBA::exists('advancedcontentfilter_rules', ['id' => $args['id'], 'uid' => DI::userSession()->getLocalUserId()])) { if (!DBA::exists('advancedcontentfilter_rules', ['id' => $args['id'], 'uid' => local_user()])) {
throw new HTTPException\NotFoundException(DI::l10n()->t('Rule doesn\'t exist or doesn\'t belong to you.')); throw new HTTPException\NotFoundException(DI::l10n()->t('Rule doesn\'t exist or doesn\'t belong to you.'));
} }
@ -413,15 +375,12 @@ function advancedcontentfilter_put_rules_id(ServerRequestInterface $request, Res
throw new HTTPException\ServiceUnavailableException(DBA::errorMessage()); throw new HTTPException\ServiceUnavailableException(DBA::errorMessage());
} }
DI::cache()->delete('rules_' . DI::userSession()->getLocalUserId()); return json_encode(['message' => DI::l10n()->t('Rule successfully updated')]);
$response->getBody()->write(json_encode(['message' => DI::l10n()->t('Rule successfully updated')]));
return $response->withHeader('Content-Type', 'application/json');
} }
function advancedcontentfilter_delete_rules_id(ServerRequestInterface $request, ResponseInterface $response, $args) function advancedcontentfilter_delete_rules_id(ServerRequestInterface $request, ResponseInterface $response, $args)
{ {
if (!DI::userSession()->getLocalUserId()) { if (!local_user()) {
throw new HTTPException\UnauthorizedException(DI::l10n()->t('You must be logged in to use this method')); throw new HTTPException\UnauthorizedException(DI::l10n()->t('You must be logged in to use this method'));
} }
@ -429,7 +388,7 @@ function advancedcontentfilter_delete_rules_id(ServerRequestInterface $request,
throw new HTTPException\BadRequestException(DI::l10n()->t('Invalid form security token, please refresh the page.')); throw new HTTPException\BadRequestException(DI::l10n()->t('Invalid form security token, please refresh the page.'));
} }
if (!DBA::exists('advancedcontentfilter_rules', ['id' => $args['id'], 'uid' => DI::userSession()->getLocalUserId()])) { if (!DBA::exists('advancedcontentfilter_rules', ['id' => $args['id'], 'uid' => local_user()])) {
throw new HTTPException\NotFoundException(DI::l10n()->t('Rule doesn\'t exist or doesn\'t belong to you.')); throw new HTTPException\NotFoundException(DI::l10n()->t('Rule doesn\'t exist or doesn\'t belong to you.'));
} }
@ -437,15 +396,12 @@ function advancedcontentfilter_delete_rules_id(ServerRequestInterface $request,
throw new HTTPException\ServiceUnavailableException(DBA::errorMessage()); throw new HTTPException\ServiceUnavailableException(DBA::errorMessage());
} }
DI::cache()->delete('rules_' . DI::userSession()->getLocalUserId()); return json_encode(['message' => DI::l10n()->t('Rule successfully deleted')]);
$response->getBody()->write(json_encode(['message' => DI::l10n()->t('Rule successfully deleted')]));
return $response->withHeader('Content-Type', 'application/json');
} }
function advancedcontentfilter_get_variables_guid(ServerRequestInterface $request, ResponseInterface $response, $args) function advancedcontentfilter_get_variables_guid(ServerRequestInterface $request, ResponseInterface $response, $args)
{ {
if (!DI::userSession()->getLocalUserId()) { if (!local_user()) {
throw new HTTPException\UnauthorizedException(DI::l10n()->t('You must be logged in to use this method')); throw new HTTPException\UnauthorizedException(DI::l10n()->t('You must be logged in to use this method'));
} }
@ -453,36 +409,24 @@ function advancedcontentfilter_get_variables_guid(ServerRequestInterface $reques
throw new HTTPException\BadRequestException(DI::l10n()->t('Missing argument: guid.')); throw new HTTPException\BadRequestException(DI::l10n()->t('Missing argument: guid.'));
} }
$condition = ["`guid` = ? AND (`uid` = ? OR `uid` = 0)", $args['guid'], DI::userSession()->getLocalUserId()]; $condition = ["`guid` = ? AND (`uid` = ? OR `uid` = 0)", $args['guid'], local_user()];
$params = ['order' => ['uid' => true]]; $params = ['order' => ['uid' => true]];
$item_row = Post::selectFirstForUser(DI::userSession()->getLocalUserId(), [], $condition, $params); $item = Item::selectFirstForUser(local_user(), [], $condition, $params);
if (!DBA::isResult($item_row)) { if (!DBA::isResult($item)) {
throw new HTTPException\NotFoundException(DI::l10n()->t('Unknown post with guid: %s', $args['guid'])); throw new HTTPException\NotFoundException(DI::l10n()->t('Unknown post with guid: %s', $args['guid']));
} }
$return = advancedcontentfilter_get_filter_fields(advancedcontentfilter_prepare_item_row($item_row)); $tags = Tag::populateFromItem($item);
$response->getBody()->write(json_encode(['variables' => str_replace('\\\'', '\'', var_export($return, true))])); $item['tags'] = $tags['tags'];
return $response->withHeader('Content-Type', 'application/json'); $item['hashtags'] = $tags['hashtags'];
} $item['mentions'] = $tags['mentions'];
/** $return = [];
* This mimimcs the processing performed in Model\Item::prepareBody foreach ($item as $key => $value) {
* $return[str_replace('-', '_', $key)] = $value;
* @param array $item_row }
* @return array
* @throws HTTPException\InternalServerErrorException return json_encode(['variables' => str_replace('\\\'', '\'', var_export($return, true))]);
* @throws ImagickException
*/
function advancedcontentfilter_prepare_item_row(array $item_row): array
{
$tags = Tag::populateFromItem($item_row);
$item_row['tags'] = $tags['tags'];
$item_row['hashtags'] = $tags['hashtags'];
$item_row['mentions'] = $tags['mentions'];
$item_row['attachments'] = DI::postMediaRepository()->splitAttachments($item_row['uri-id']);
return $item_row;
} }

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

View file

@ -11,15 +11,13 @@
} }
], ],
"require": { "require": {
"slim/slim": "^4", "php": ">=5.6.0",
"slim/slim": "^3.1",
"symfony/expression-language": "^3.4" "symfony/expression-language": "^3.4"
}, },
"license": "3-clause BSD license", "license": "3-clause BSD license",
"minimum-stability": "stable", "minimum-stability": "stable",
"config": { "config": {
"platform": {
"php": "7.4"
},
"optimize-autoloader": true, "optimize-autoloader": true,
"autoloader-suffix": "AdvancedContentFilterAddon", "autoloader-suffix": "AdvancedContentFilterAddon",
"preferred-install": "dist" "preferred-install": "dist"

File diff suppressed because it is too large Load diff

View file

@ -34,14 +34,6 @@ If the expression using a post variables returns `true`, the post will be collap
A post will be collapsed if at least one rule matches, but all matching rule names will be displayed above the collapsed content. A post will be collapsed if at least one rule matches, but all matching rule names will be displayed above the collapsed content.
## Examples
1. Collapse posts with specific domains `body matches "/\\.example\\.com/"`
2. Collapse posts that contains the words `body matches "/Guten Morgen/"`
3. Collapse posts with the word facebook that have a space in front and after the word `body matches "//s facebook/s /"`
4. Collapse posts that contains more than 1 image `body matches "/(?:(?:(?:\\[url(?:=.*)?\\])?\\[img(?:=.*)?\\].*\\[\\/img\\]\\s*(?:\\[\\/url\\])?)\\s*){2}/"`
## Expression Syntax ## Expression Syntax
### Supported Literals ### Supported Literals
@ -458,6 +450,11 @@ You can also retrieve the variables of a specific post by pasting its URL below
<td>string</td> <td>string</td>
<td>null</td> <td>null</td>
</tr> </tr>
<tr>
<th>event_adjust</th>
<td>boolean</td>
<td>null</td>
</tr>
<tr> <tr>
<th>event_ignore</th> <th>event_ignore</th>
<td>boolean</td> <td>boolean</td>

View file

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-05-11 08:54-0400\n" "POT-Creation-Date: 2018-04-17 04:04+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -17,145 +17,147 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
#: advancedcontentfilter.php:154 #: advancedcontentfilter.php:134
#, php-format #, php-format
msgid "Filtered by rule: %s" msgid "Filtered by rule: %s"
msgstr "" msgstr ""
#: advancedcontentfilter.php:170 advancedcontentfilter.php:225 #: advancedcontentfilter.php:147 advancedcontentfilter.php:204
msgid "Advanced Content Filter" msgid "Advanced Content Filter"
msgstr "" msgstr ""
#: advancedcontentfilter.php:224 #: advancedcontentfilter.php:203
msgid "Back to Addon Settings" msgid "Back to Addon Settings"
msgstr "" msgstr ""
#: advancedcontentfilter.php:226 #: advancedcontentfilter.php:205
msgid "Add a Rule" msgid "Add a Rule"
msgstr "" msgstr ""
#: advancedcontentfilter.php:227 #: advancedcontentfilter.php:206
msgid "Help" msgid "Help"
msgstr "" msgstr ""
#: advancedcontentfilter.php:228 #: advancedcontentfilter.php:207
msgid "" msgid ""
"Add and manage your personal content filter rules in this screen. Rules have " "Add and manage your personal content filter rules in this screen. Rules have "
"a name and an arbitrary expression that will be matched against post data. " "a name and an arbitrary expression that will be matched against post data. "
"For a complete reference of the available operations and variables, check " "For a complete reference of the available operations and variables, check "
"the help page." "the <a href=\"advancedcontentfilter/help\">help page</a>."
msgstr "" msgstr ""
#: advancedcontentfilter.php:229 #: advancedcontentfilter.php:208
msgid "Your rules" msgid "Your rules"
msgstr "" msgstr ""
#: advancedcontentfilter.php:230 #: advancedcontentfilter.php:209
msgid "" msgid ""
"You have no rules yet! Start adding one by clicking on the button above next " "You have no rules yet! Start adding one by clicking on the button above next "
"to the title." "to the title."
msgstr "" msgstr ""
#: advancedcontentfilter.php:231 #: advancedcontentfilter.php:210
msgid "Disabled" msgid "Disabled"
msgstr "" msgstr ""
#: advancedcontentfilter.php:232 #: advancedcontentfilter.php:211
msgid "Enabled" msgid "Enabled"
msgstr "" msgstr ""
#: advancedcontentfilter.php:233 #: advancedcontentfilter.php:212
msgid "Disable this rule" msgid "Disable this rule"
msgstr "" msgstr ""
#: advancedcontentfilter.php:234 #: advancedcontentfilter.php:213
msgid "Enable this rule" msgid "Enable this rule"
msgstr "" msgstr ""
#: advancedcontentfilter.php:235 #: advancedcontentfilter.php:214
msgid "Edit this rule" msgid "Edit this rule"
msgstr "" msgstr ""
#: advancedcontentfilter.php:236 #: advancedcontentfilter.php:215
msgid "Edit the rule" msgid "Edit the rule"
msgstr "" msgstr ""
#: advancedcontentfilter.php:237 #: advancedcontentfilter.php:216
msgid "Save this rule" msgid "Save this rule"
msgstr "" msgstr ""
#: advancedcontentfilter.php:238 #: advancedcontentfilter.php:217
msgid "Delete this rule" msgid "Delete this rule"
msgstr "" msgstr ""
#: advancedcontentfilter.php:239 #: advancedcontentfilter.php:218
msgid "Rule" msgid "Rule"
msgstr "" msgstr ""
#: advancedcontentfilter.php:240 #: advancedcontentfilter.php:219
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: advancedcontentfilter.php:241 #: advancedcontentfilter.php:220
msgid "Add new rule" msgid "Add new rule"
msgstr "" msgstr ""
#: advancedcontentfilter.php:242 #: advancedcontentfilter.php:221
msgid "Rule Name" msgid "Rule Name"
msgstr "" msgstr ""
#: advancedcontentfilter.php:243 #: advancedcontentfilter.php:222
msgid "Rule Expression" msgid "Rule Expression"
msgstr "" msgstr ""
#: advancedcontentfilter.php:244 #: advancedcontentfilter.php:223
msgid ""
"<p>Examples:</p><ul><li><pre>author_link == 'https://friendica.mrpetovan.com/"
"profile/hypolite'</pre></li><li>tags</li></ul>"
msgstr ""
#: advancedcontentfilter.php:224
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr ""
#: advancedcontentfilter.php:295 #: advancedcontentfilter.php:290 advancedcontentfilter.php:301
msgid "This addon requires this node having at least one post" #: advancedcontentfilter.php:312 advancedcontentfilter.php:346
msgstr "" #: advancedcontentfilter.php:375 advancedcontentfilter.php:396
#: advancedcontentfilter.php:325 advancedcontentfilter.php:336
#: advancedcontentfilter.php:347 advancedcontentfilter.php:383
#: advancedcontentfilter.php:414 advancedcontentfilter.php:437
msgid "You must be logged in to use this method" msgid "You must be logged in to use this method"
msgstr "" msgstr ""
#: advancedcontentfilter.php:351 advancedcontentfilter.php:387 #: advancedcontentfilter.php:316 advancedcontentfilter.php:350
#: advancedcontentfilter.php:418 #: advancedcontentfilter.php:379
msgid "Invalid form security token, please refresh the page." msgid "Invalid form security token, please refresh the page."
msgstr "" msgstr ""
#: advancedcontentfilter.php:363 #: advancedcontentfilter.php:328
msgid "The rule name and expression are required." msgid "The rule name and expression are required."
msgstr "" msgstr ""
#: advancedcontentfilter.php:377 #: advancedcontentfilter.php:340
msgid "Rule successfully added" msgid "Rule successfully added"
msgstr "" msgstr ""
#: advancedcontentfilter.php:391 advancedcontentfilter.php:422 #: advancedcontentfilter.php:354 advancedcontentfilter.php:383
msgid "Rule doesn't exist or doesn't belong to you." msgid "Rule doesn't exist or doesn't belong to you."
msgstr "" msgstr ""
#: advancedcontentfilter.php:408 #: advancedcontentfilter.php:369
msgid "Rule successfully updated" msgid "Rule successfully updated"
msgstr "" msgstr ""
#: advancedcontentfilter.php:431 #: advancedcontentfilter.php:390
msgid "Rule successfully deleted" msgid "Rule successfully deleted"
msgstr "" msgstr ""
#: advancedcontentfilter.php:441 #: advancedcontentfilter.php:400
msgid "Missing argument: guid." msgid "Missing argument: guid."
msgstr "" msgstr ""
#: advancedcontentfilter.php:449 #: advancedcontentfilter.php:406
#, php-format #, php-format
msgid "Unknown post with guid: %s" msgid "Unknown post with guid: %s"
msgstr "" msgstr ""
#: src/middlewares.php:49 #: src/middlewares.php:28
msgid "Method not found" msgid "Method not found"
msgstr "" msgstr ""

View file

@ -1,166 +0,0 @@
# ADDON advancedcontentfilter
# Copyright (C)
# This file is distributed under the same license as the Friendica advancedcontentfilter addon package.
#
#
# Translators:
# Farida Khalaf <faridakhalaf@hotmail.com>, 2021
# abidin toumi <abidin24@tutanota.com>, 2021
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-07-25 13:15+0000\n"
"PO-Revision-Date: 2018-05-24 06:41+0000\n"
"Last-Translator: abidin toumi <abidin24@tutanota.com>, 2021\n"
"Language-Team: Arabic (https://www.transifex.com/Friendica/teams/12172/ar/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ar\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
#: advancedcontentfilter.php:153
#, php-format
msgid "Filtered by rule: %s"
msgstr "رشّح حسب القاعدة: %s"
#: advancedcontentfilter.php:167 advancedcontentfilter.php:224
msgid "Advanced Content Filter"
msgstr "ترشيح المحتوى المتقدم"
#: advancedcontentfilter.php:223
msgid "Back to Addon Settings"
msgstr "الرجوع إلى إعدادات الإضافات"
#: advancedcontentfilter.php:225
msgid "Add a Rule"
msgstr "أضف قاعدة"
#: advancedcontentfilter.php:226
msgid "Help"
msgstr "مساعدة"
#: advancedcontentfilter.php:227
msgid ""
"Add and manage your personal content filter rules in this screen. Rules have"
" a name and an arbitrary expression that will be matched against post data. "
"For a complete reference of the available operations and variables, check "
"the help page."
msgstr ""
"إضافة وإدارة قواعد ترشيح المحتوى الشخصية هنا.\n"
" القواعد لها اسم وتعبير سيتم مطابقته مع بيانات المشاركة. للحصول على مرجع كامل للعمليات والمتغيرات المتاحة ، راجع صفحة المساعدة."
#: advancedcontentfilter.php:228
msgid "Your rules"
msgstr "القواعد"
#: advancedcontentfilter.php:229
msgid ""
"You have no rules yet! Start adding one by clicking on the button above next"
" to the title."
msgstr ""
"لا يوجد قواعد!\n"
"أضف واحدة من خلال النقر على الزر أعلاه بجوار العنوان."
#: advancedcontentfilter.php:230
msgid "Disabled"
msgstr "معطل"
#: advancedcontentfilter.php:231
msgid "Enabled"
msgstr "مفعل"
#: advancedcontentfilter.php:232
msgid "Disable this rule"
msgstr "عطّل القاعدة"
#: advancedcontentfilter.php:233
msgid "Enable this rule"
msgstr "فعّل القاعدة"
#: advancedcontentfilter.php:234
msgid "Edit this rule"
msgstr "عدّل هذه القاعدة"
#: advancedcontentfilter.php:235
msgid "Edit the rule"
msgstr "عدّل القاعدة"
#: advancedcontentfilter.php:236
msgid "Save this rule"
msgstr "احفظ هذه القاعدة"
#: advancedcontentfilter.php:237
msgid "Delete this rule"
msgstr "احذف هذه القاعدة"
#: advancedcontentfilter.php:238
msgid "Rule"
msgstr "القاعدة"
#: advancedcontentfilter.php:239
msgid "Close"
msgstr "اغلق"
#: advancedcontentfilter.php:240
msgid "Add new rule"
msgstr "أضف قاعدة جديدة"
#: advancedcontentfilter.php:241
msgid "Rule Name"
msgstr "اسم القاعدة"
#: advancedcontentfilter.php:242
msgid "Rule Expression"
msgstr "تعبير القاعدة"
#: advancedcontentfilter.php:243
msgid "Cancel"
msgstr "الغ"
#: advancedcontentfilter.php:310 advancedcontentfilter.php:321
#: advancedcontentfilter.php:332 advancedcontentfilter.php:366
#: advancedcontentfilter.php:395 advancedcontentfilter.php:416
msgid "You must be logged in to use this method"
msgstr "عليك الولوج لاستخدام هذه الطريقة"
#: advancedcontentfilter.php:336 advancedcontentfilter.php:370
#: advancedcontentfilter.php:399
msgid "Invalid form security token, please refresh the page."
msgstr "رمز أمان النموذج غير صالح ، يرجى تحديث الصفحة."
#: advancedcontentfilter.php:348
msgid "The rule name and expression are required."
msgstr "يلزم اسم وتعبير للقاعدة."
#: advancedcontentfilter.php:360
msgid "Rule successfully added"
msgstr "نجحت إضافة القاعدة"
#: advancedcontentfilter.php:374 advancedcontentfilter.php:403
msgid "Rule doesn't exist or doesn't belong to you."
msgstr "القاعدة غير موجودة أو لا تنتمي إليك."
#: advancedcontentfilter.php:389
msgid "Rule successfully updated"
msgstr "نجح تحديث القاعدة"
#: advancedcontentfilter.php:410
msgid "Rule successfully deleted"
msgstr "نجح حذف القاعدة"
#: advancedcontentfilter.php:420
msgid "Missing argument: guid."
msgstr "معامل ناقص: دليل."
#: advancedcontentfilter.php:428
#, php-format
msgid "Unknown post with guid: %s"
msgstr "مشاركة غير معروفة ذات الدليل: 1%s"
#: src/middlewares.php:49
msgid "Method not found"
msgstr "لم يُعثر على التطبيق"

View file

@ -1,41 +0,0 @@
<?php
if(! function_exists("string_plural_select_ar")) {
function string_plural_select_ar($n){
$n = intval($n);
if ($n==0) { return 0; } else if ($n==1) { return 1; } else if ($n==2) { return 2; } else if ($n%100>=3 && $n%100<=10) { return 3; } else if ($n%100>=11 && $n%100<=99) { return 4; } else { return 5; }
}}
$a->strings['Filtered by rule: %s'] = 'رشّح حسب القاعدة: %s';
$a->strings['Advanced Content Filter'] = 'ترشيح المحتوى المتقدم';
$a->strings['Back to Addon Settings'] = 'الرجوع إلى إعدادات الإضافات';
$a->strings['Add a Rule'] = 'أضف قاعدة';
$a->strings['Help'] = 'مساعدة';
$a->strings['Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the help page.'] = 'إضافة وإدارة قواعد ترشيح المحتوى الشخصية هنا.
القواعد لها اسم وتعبير سيتم مطابقته مع بيانات المشاركة. للحصول على مرجع كامل للعمليات والمتغيرات المتاحة ، راجع صفحة المساعدة.';
$a->strings['Your rules'] = 'القواعد';
$a->strings['You have no rules yet! Start adding one by clicking on the button above next to the title.'] = 'لا يوجد قواعد!
أضف واحدة من خلال النقر على الزر أعلاه بجوار العنوان.';
$a->strings['Disabled'] = 'معطل';
$a->strings['Enabled'] = 'مفعل';
$a->strings['Disable this rule'] = 'عطّل القاعدة';
$a->strings['Enable this rule'] = 'فعّل القاعدة';
$a->strings['Edit this rule'] = 'عدّل هذه القاعدة';
$a->strings['Edit the rule'] = 'عدّل القاعدة';
$a->strings['Save this rule'] = 'احفظ هذه القاعدة';
$a->strings['Delete this rule'] = 'احذف هذه القاعدة';
$a->strings['Rule'] = 'القاعدة';
$a->strings['Close'] = 'اغلق';
$a->strings['Add new rule'] = 'أضف قاعدة جديدة';
$a->strings['Rule Name'] = 'اسم القاعدة';
$a->strings['Rule Expression'] = 'تعبير القاعدة';
$a->strings['Cancel'] = 'الغ';
$a->strings['You must be logged in to use this method'] = 'عليك الولوج لاستخدام هذه الطريقة';
$a->strings['Invalid form security token, please refresh the page.'] = 'رمز أمان النموذج غير صالح ، يرجى تحديث الصفحة.';
$a->strings['The rule name and expression are required.'] = 'يلزم اسم وتعبير للقاعدة.';
$a->strings['Rule successfully added'] = 'نجحت إضافة القاعدة';
$a->strings['Rule doesn\'t exist or doesn\'t belong to you.'] = 'القاعدة غير موجودة أو لا تنتمي إليك.';
$a->strings['Rule successfully updated'] = 'نجح تحديث القاعدة';
$a->strings['Rule successfully deleted'] = 'نجح حذف القاعدة';
$a->strings['Missing argument: guid.'] = 'معامل ناقص: دليل.';
$a->strings['Unknown post with guid: %s'] = 'مشاركة غير معروفة ذات الدليل: 1%s';
$a->strings['Method not found'] = 'لم يُعثر على التطبيق';

View file

@ -3,38 +3,39 @@
if(! function_exists("string_plural_select_ca")) { if(! function_exists("string_plural_select_ca")) {
function string_plural_select_ca($n){ function string_plural_select_ca($n){
$n = intval($n); $n = intval($n);
return intval($n != 1); return ($n != 1);;
}} }}
$a->strings['Filtered by rule: %s'] = 'Filtrat per regla: %s'; ;
$a->strings['Advanced Content Filter'] = 'Contingut avançat Filtre'; $a->strings["Filtered by rule: %s"] = "Filtrat per regla: %s";
$a->strings['Back to Addon Settings'] = 'Torna Addon Configuració'; $a->strings["Advanced Content Filter"] = "Contingut avançat Filtre";
$a->strings['Add a Rule'] = 'Afegiu una regla'; $a->strings["Back to Addon Settings"] = "Torna Addon Configuració";
$a->strings['Help'] = 'Ajuda'; $a->strings["Add a Rule"] = "Afegiu una regla";
$a->strings['Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the <a href="advancedcontentfilter/help">help page</a>.'] = 'Afegiu i gestioneu les vostres regles de filtre de contingut personal en aquesta pantalla. Les regles tenen un nom i una expressió arbitrària que es combinen amb les dades de la publicació. Per obtenir una referència completa de les variables i operacions disponibles, comproveu el botó <a href="advancedcontentfilter/help">pàgina dajuda</a>.'; $a->strings["Help"] = "Ajuda";
$a->strings['Your rules'] = 'Les seves normes'; $a->strings["Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the <a href=\"advancedcontentfilter/help\">help page</a>."] = "Afegiu i gestioneu les vostres regles de filtre de contingut personal en aquesta pantalla. Les regles tenen un nom i una expressió arbitrària que es combinen amb les dades de la publicació. Per obtenir una referència completa de les variables i operacions disponibles, comproveu el botó <a href=\"advancedcontentfilter/help\">pàgina dajuda</a>.";
$a->strings['You have no rules yet! Start adding one by clicking on the button above next to the title.'] = 'Encara no teniu normes. Comenceu a afegir-ne un fent clic al botó situat al costat del títol.'; $a->strings["Your rules"] = "Les seves normes";
$a->strings['Disabled'] = 'Desactivat'; $a->strings["You have no rules yet! Start adding one by clicking on the button above next to the title."] = "Encara no teniu normes. Comenceu a afegir-ne un fent clic al botó situat al costat del títol.";
$a->strings['Enabled'] = 'Permetre'; $a->strings["Disabled"] = "Desactivat";
$a->strings['Disable this rule'] = 'Desactiva aquesta regla'; $a->strings["Enabled"] = "Permetre";
$a->strings['Enable this rule'] = 'Activa aquesta regla'; $a->strings["Disable this rule"] = "Desactiva aquesta regla";
$a->strings['Edit this rule'] = 'Edita aquesta regla'; $a->strings["Enable this rule"] = "Activa aquesta regla";
$a->strings['Edit the rule'] = 'Edita la regla'; $a->strings["Edit this rule"] = "Edita aquesta regla";
$a->strings['Save this rule'] = 'Deseu aquesta regla'; $a->strings["Edit the rule"] = "Edita la regla";
$a->strings['Delete this rule'] = 'Suprimeix aquesta regla'; $a->strings["Save this rule"] = "Deseu aquesta regla";
$a->strings['Rule'] = 'Regla'; $a->strings["Delete this rule"] = "Suprimeix aquesta regla";
$a->strings['Close'] = 'Tancar'; $a->strings["Rule"] = "Regla";
$a->strings['Add new rule'] = 'Add nova regla'; $a->strings["Close"] = "Tancar";
$a->strings['Rule Name'] = 'Nom de la regla'; $a->strings["Add new rule"] = "Add nova regla";
$a->strings['Rule Expression'] = 'Expressió de regla'; $a->strings["Rule Name"] = "Nom de la regla";
$a->strings['<p>Examples:</p><ul><li><pre>author_link == \'https://friendica.mrpetovan.com/profile/hypolite\'</pre></li><li>tags</li></ul>'] = '<p>Exemples:</p><ul><li><pre>author_link == \'https://friendica.mrpetovan.com/profile/hypolite\'</pre></li><li>tags</li></ul>'; $a->strings["Rule Expression"] = "Expressió de regla";
$a->strings['Cancel'] = 'cancel·lar'; $a->strings["<p>Examples:</p><ul><li><pre>author_link == 'https://friendica.mrpetovan.com/profile/hypolite'</pre></li><li>tags</li></ul>"] = "<p>Exemples:</p><ul><li><pre>author_link == 'https://friendica.mrpetovan.com/profile/hypolite'</pre></li><li>tags</li></ul>";
$a->strings['You must be logged in to use this method'] = 'Per utilitzar aquest mètode, heu diniciar sessió'; $a->strings["Cancel"] = "cancel·lar";
$a->strings['Invalid form security token, please refresh the page.'] = 'El testimoni de seguretat del formulari no és vàlid. Actualitza la pàgina'; $a->strings["You must be logged in to use this method"] = "Per utilitzar aquest mètode, heu diniciar sessió";
$a->strings['The rule name and expression are required.'] = 'El nom i lexpressió de la regla són obligatoris'; $a->strings["Invalid form security token, please refresh the page."] = "El testimoni de seguretat del formulari no és vàlid. Actualitza la pàgina";
$a->strings['Rule successfully added'] = 'La regla s\'ha afegit correctament'; $a->strings["The rule name and expression are required."] = "El nom i lexpressió de la regla són obligatoris";
$a->strings['Rule doesn\'t exist or doesn\'t belong to you.'] = 'La regla no existeix o no us pertany.'; $a->strings["Rule successfully added"] = "La regla s'ha afegit correctament";
$a->strings['Rule successfully updated'] = 'La regla s\'ha actualitzat correctament'; $a->strings["Rule doesn't exist or doesn't belong to you."] = "La regla no existeix o no us pertany.";
$a->strings['Rule successfully deleted'] = 'S\'ha suprimit la regla correctament'; $a->strings["Rule successfully updated"] = "La regla s'ha actualitzat correctament";
$a->strings['Missing argument: guid.'] = 'Falta un argument: guia'; $a->strings["Rule successfully deleted"] = "S'ha suprimit la regla correctament";
$a->strings['Unknown post with guid: %s'] = 'Publicació desconeguda amb guia: %s'; $a->strings["Missing argument: guid."] = "Falta un argument: guia";
$a->strings['Method not found'] = 'Mètode no trobat'; $a->strings["Unknown post with guid: %s"] = "Publicació desconeguda amb guia: %s";
$a->strings["Method not found"] = "Mètode no trobat";

View file

@ -3,38 +3,39 @@
if(! function_exists("string_plural_select_cs")) { if(! function_exists("string_plural_select_cs")) {
function string_plural_select_cs($n){ function string_plural_select_cs($n){
$n = intval($n); $n = intval($n);
if (($n == 1 && $n % 1 == 0)) { return 0; } else if (($n >= 2 && $n <= 4 && $n % 1 == 0)) { return 1; } else if (($n % 1 != 0 )) { return 2; } else { return 3; } return ($n == 1 && $n % 1 == 0) ? 0 : ($n >= 2 && $n <= 4 && $n % 1 == 0) ? 1: ($n % 1 != 0 ) ? 2 : 3;;
}} }}
$a->strings['Filtered by rule: %s'] = 'Filtrováno podle pravidla: %s'; ;
$a->strings['Advanced Content Filter'] = 'Rozšířený filtr obsahu'; $a->strings["Filtered by rule: %s"] = "Filtrováno podle pravidla: %s";
$a->strings['Back to Addon Settings'] = 'Zpět na nastavení doplňku'; $a->strings["Advanced Content Filter"] = "Rozšířený filtr obsahu";
$a->strings['Add a Rule'] = 'Přidat pravidlo'; $a->strings["Back to Addon Settings"] = "Zpět na nastavení doplňku";
$a->strings['Help'] = 'Nápověda'; $a->strings["Add a Rule"] = "Přidat pravidlo";
$a->strings['Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the <a href="advancedcontentfilter/help">help page</a>.'] = 'Přidávejte a spravujte Vaše osobní pravidla pro filtrování obsahu na této obrazovce. Pravidla mají název a libovolný výraz, který bude porovnán s daty příspěvku. Pro úplnou referenci dostupných operací a proměnných navštivte <a href="advancedcontentfilter/help">stránku nápovědy</a>.'; $a->strings["Help"] = "Nápověda";
$a->strings['Your rules'] = 'Vaše pravidla'; $a->strings["Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the <a href=\"advancedcontentfilter/help\">help page</a>."] = "Přidávejte a spravujte Vaše osobní pravidla pro filtrování obsahu na této obrazovce. Pravidla mají název a libovolný výraz, který bude porovnán s daty příspěvku. Pro úplnou referenci dostupných operací a proměnných navštivte <a href=\"advancedcontentfilter/help\">stránku nápovědy</a>.";
$a->strings['You have no rules yet! Start adding one by clicking on the button above next to the title.'] = 'Ještě nemáte žádná pravidla! Přidejte první kliknutím na tlačítko nahoře vedle nadpisu.'; $a->strings["Your rules"] = "Vaše pravidla";
$a->strings['Disabled'] = 'Zakázáno'; $a->strings["You have no rules yet! Start adding one by clicking on the button above next to the title."] = "Ještě nemáte žádná pravidla! Přidejte první kliknutím na tlačítko nahoře vedle nadpisu.";
$a->strings['Enabled'] = 'Povoleno'; $a->strings["Disabled"] = "Zakázáno";
$a->strings['Disable this rule'] = 'Zakázat toto pravidlo'; $a->strings["Enabled"] = "Povoleno";
$a->strings['Enable this rule'] = 'Povolit toto pravidlo'; $a->strings["Disable this rule"] = "Zakázat toto pravidlo";
$a->strings['Edit this rule'] = 'Upravit toto pravidlo'; $a->strings["Enable this rule"] = "Povolit toto pravidlo";
$a->strings['Edit the rule'] = 'Upravit pravidlo'; $a->strings["Edit this rule"] = "Upravit toto pravidlo";
$a->strings['Save this rule'] = 'Uložit toto pravidlo'; $a->strings["Edit the rule"] = "Upravit pravidlo";
$a->strings['Delete this rule'] = 'Smazat toto pravidlo'; $a->strings["Save this rule"] = "Uložit toto pravidlo";
$a->strings['Rule'] = 'Pravidlo'; $a->strings["Delete this rule"] = "Smazat toto pravidlo";
$a->strings['Close'] = 'Zavřít'; $a->strings["Rule"] = "Pravidlo";
$a->strings['Add new rule'] = 'Přidat nové pravidlo'; $a->strings["Close"] = "Zavřít";
$a->strings['Rule Name'] = 'Název pravidla'; $a->strings["Add new rule"] = "Přidat nové pravidlo";
$a->strings['Rule Expression'] = 'Výraz pravidla'; $a->strings["Rule Name"] = "Název pravidla";
$a->strings['<p>Examples:</p><ul><li><pre>author_link == \'https://friendica.mrpetovan.com/profile/hypolite\'</pre></li><li>tags</li></ul>'] = '<p>Příklady:</p><ul><li><pre>author_link == \'https://friendica.mrpetovan.com/profile/hypolite\'</pre></li><li>tags</li></ul>'; $a->strings["Rule Expression"] = "Výraz pravidla";
$a->strings['Cancel'] = 'Zrušit'; $a->strings["<p>Examples:</p><ul><li><pre>author_link == 'https://friendica.mrpetovan.com/profile/hypolite'</pre></li><li>tags</li></ul>"] = "<p>Příklady:</p><ul><li><pre>author_link == 'https://friendica.mrpetovan.com/profile/hypolite'</pre></li><li>tags</li></ul>";
$a->strings['You must be logged in to use this method'] = 'Pro použití této metody musíte být přihlášen/a'; $a->strings["Cancel"] = "Zrušit";
$a->strings['Invalid form security token, please refresh the page.'] = 'Neplatná forma bezpečnostního tokenu, prosím obnovte stránku.'; $a->strings["You must be logged in to use this method"] = "Pro použití této metody musíte být přihlášen/a";
$a->strings['The rule name and expression are required.'] = 'Je požadován název pravidla a výraz.'; $a->strings["Invalid form security token, please refresh the page."] = "Neplatná forma bezpečnostního tokenu, prosím obnovte stránku.";
$a->strings['Rule successfully added'] = 'Pravidlo úspěšně přidáno'; $a->strings["The rule name and expression are required."] = "Je požadován název pravidla a výraz.";
$a->strings['Rule doesn\'t exist or doesn\'t belong to you.'] = 'Pravidlo buď neexistuje, nebo Vám nepatří.'; $a->strings["Rule successfully added"] = "Pravidlo úspěšně přidáno";
$a->strings['Rule successfully updated'] = 'Pravidlo úspěšně aktualizováno'; $a->strings["Rule doesn't exist or doesn't belong to you."] = "Pravidlo buď neexistuje, nebo Vám nepatří.";
$a->strings['Rule successfully deleted'] = 'Pravidlo úspěšně smazáno'; $a->strings["Rule successfully updated"] = "Pravidlo úspěšně aktualizováno";
$a->strings['Missing argument: guid.'] = 'Chybí argument: guid.'; $a->strings["Rule successfully deleted"] = "Pravidlo úspěšně smazáno";
$a->strings['Unknown post with guid: %s'] = 'Neznámý pžíspěvek s číslem guid: %s'; $a->strings["Missing argument: guid."] = "Chybí argument: guid.";
$a->strings['Method not found'] = 'Metoda nenalezena'; $a->strings["Unknown post with guid: %s"] = "Neznámý pžíspěvek s číslem guid: %s";
$a->strings["Method not found"] = "Metoda nenalezena";

View file

@ -1,157 +0,0 @@
# ADDON advancedcontentfilter
# Copyright (C)
# This file is distributed under the same license as the Friendica advancedcontentfilter addon package.
#
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-11-21 19:13-0500\n"
"PO-Revision-Date: 2018-05-24 06:41+0000\n"
"Language-Team: Danish (Denmark) (https://www.transifex.com/Friendica/teams/12172/da_DK/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: da_DK\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: advancedcontentfilter.php:154
#, php-format
msgid "Filtered by rule: %s"
msgstr ""
#: advancedcontentfilter.php:170 advancedcontentfilter.php:225
msgid "Advanced Content Filter"
msgstr ""
#: advancedcontentfilter.php:224
msgid "Back to Addon Settings"
msgstr ""
#: advancedcontentfilter.php:226
msgid "Add a Rule"
msgstr ""
#: advancedcontentfilter.php:227
msgid "Help"
msgstr ""
#: advancedcontentfilter.php:228
msgid ""
"Add and manage your personal content filter rules in this screen. Rules have"
" a name and an arbitrary expression that will be matched against post data. "
"For a complete reference of the available operations and variables, check "
"the help page."
msgstr ""
#: advancedcontentfilter.php:229
msgid "Your rules"
msgstr ""
#: advancedcontentfilter.php:230
msgid ""
"You have no rules yet! Start adding one by clicking on the button above next"
" to the title."
msgstr ""
#: advancedcontentfilter.php:231
msgid "Disabled"
msgstr ""
#: advancedcontentfilter.php:232
msgid "Enabled"
msgstr ""
#: advancedcontentfilter.php:233
msgid "Disable this rule"
msgstr ""
#: advancedcontentfilter.php:234
msgid "Enable this rule"
msgstr ""
#: advancedcontentfilter.php:235
msgid "Edit this rule"
msgstr ""
#: advancedcontentfilter.php:236
msgid "Edit the rule"
msgstr ""
#: advancedcontentfilter.php:237
msgid "Save this rule"
msgstr ""
#: advancedcontentfilter.php:238
msgid "Delete this rule"
msgstr ""
#: advancedcontentfilter.php:239
msgid "Rule"
msgstr ""
#: advancedcontentfilter.php:240
msgid "Close"
msgstr ""
#: advancedcontentfilter.php:241
msgid "Add new rule"
msgstr ""
#: advancedcontentfilter.php:242
msgid "Rule Name"
msgstr ""
#: advancedcontentfilter.php:243
msgid "Rule Expression"
msgstr ""
#: advancedcontentfilter.php:244
msgid "Cancel"
msgstr ""
#: advancedcontentfilter.php:312 advancedcontentfilter.php:323
#: advancedcontentfilter.php:334 advancedcontentfilter.php:370
#: advancedcontentfilter.php:401 advancedcontentfilter.php:424
msgid "You must be logged in to use this method"
msgstr ""
#: advancedcontentfilter.php:338 advancedcontentfilter.php:374
#: advancedcontentfilter.php:405
msgid "Invalid form security token, please refresh the page."
msgstr ""
#: advancedcontentfilter.php:350
msgid "The rule name and expression are required."
msgstr ""
#: advancedcontentfilter.php:364
msgid "Rule successfully added"
msgstr ""
#: advancedcontentfilter.php:378 advancedcontentfilter.php:409
msgid "Rule doesn't exist or doesn't belong to you."
msgstr ""
#: advancedcontentfilter.php:395
msgid "Rule successfully updated"
msgstr ""
#: advancedcontentfilter.php:418
msgid "Rule successfully deleted"
msgstr ""
#: advancedcontentfilter.php:428
msgid "Missing argument: guid."
msgstr ""
#: advancedcontentfilter.php:436
#, php-format
msgid "Unknown post with guid: %s"
msgstr ""
#: src/middlewares.php:49
msgid "Method not found"
msgstr ""

View file

@ -1,7 +0,0 @@
<?php
if(! function_exists("string_plural_select_da_dk")) {
function string_plural_select_da_dk($n){
$n = intval($n);
return intval($n != 1);
}}

View file

@ -3,64 +3,61 @@
# This file is distributed under the same license as the Friendica advancedcontentfilter addon package. # This file is distributed under the same license as the Friendica advancedcontentfilter addon package.
# #
# #
# Translators:
# Ulf Rompe <transifex.com@rompe.org>, 2019
# Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2022
#
#, fuzzy #, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-05-11 08:54-0400\n" "POT-Creation-Date: 2018-04-17 04:04+0200\n"
"PO-Revision-Date: 2018-05-24 06:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2022\n" "Last-Translator: Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2018\n"
"Language-Team: German (https://app.transifex.com/Friendica/teams/12172/de/)\n" "Language-Team: German (https://www.transifex.com/Friendica/teams/12172/de/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Language: de\n" "Language: de\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: advancedcontentfilter.php:154 #: advancedcontentfilter.php:134
#, php-format #, php-format
msgid "Filtered by rule: %s" msgid "Filtered by rule: %s"
msgstr "Nach dieser Regel gefiltert: %s" msgstr "Nach dieser Regel gefiltert: %s"
#: advancedcontentfilter.php:170 advancedcontentfilter.php:225 #: advancedcontentfilter.php:147 advancedcontentfilter.php:204
msgid "Advanced Content Filter" msgid "Advanced Content Filter"
msgstr "Erweiterter Inhaltsfilter" msgstr "Erweiterter Inhaltsfilter"
#: advancedcontentfilter.php:224 #: advancedcontentfilter.php:203
msgid "Back to Addon Settings" msgid "Back to Addon Settings"
msgstr "Zurück zu den Addon Einstellungen" msgstr "Zurück zu den Addon Einstellungen"
#: advancedcontentfilter.php:226 #: advancedcontentfilter.php:205
msgid "Add a Rule" msgid "Add a Rule"
msgstr "Eine Regel hinzufügen" msgstr "Eine Regel hinzufügen"
#: advancedcontentfilter.php:227 #: advancedcontentfilter.php:206
msgid "Help" msgid "Help"
msgstr "Hilfe" msgstr "Hilfe"
#: advancedcontentfilter.php:228 #: advancedcontentfilter.php:207
msgid "" msgid ""
"Add and manage your personal content filter rules in this screen. Rules have" "Add and manage your personal content filter rules in this screen. Rules have"
" a name and an arbitrary expression that will be matched against post data. " " a name and an arbitrary expression that will be matched against post data. "
"For a complete reference of the available operations and variables, check " "For a complete reference of the available operations and variables, check "
"the help page." "the <a href=\"advancedcontentfilter/help\">help page</a>."
msgstr "" msgstr ""
"Auf dieser Seite kannst du deine persönlichen Filterregeln verwalten. Regeln" "Auf dieser Seite kannst du deine persönlichen Filterregeln verwalten. Regeln"
" müssen einen Namen und einen frei wählbaren Ausdruck besitzen. Dieser " " müssen einen Namen und einen frei wählbaren Ausdruck besitzen. Dieser "
"Ausdruck wird mit den Daten der Beiträge abgeglichen und diese dann " "Ausdruck wird mit den Daten der Beiträge abgeglichen und diese dann "
"gegebenenfalls gefiltert. Für eine Übersicht der verfügbaren Operatoren für " "gegebenenfalls gefiltert. Für eine Übersicht der verfügbaren Operatoren für "
"die Filter, wirf bitte einen Blick auf die Hilfsseite des Addons." "die Filter, wirf bitte einen Blick auf die <a "
"href=\"advancedcontentfilter/help\">Hilfsseite</a> des Addons."
#: advancedcontentfilter.php:229 #: advancedcontentfilter.php:208
msgid "Your rules" msgid "Your rules"
msgstr "Deine Regeln" msgstr "Deine Regeln"
#: advancedcontentfilter.php:230 #: advancedcontentfilter.php:209
msgid "" msgid ""
"You have no rules yet! Start adding one by clicking on the button above next" "You have no rules yet! Start adding one by clicking on the button above next"
" to the title." " to the title."
@ -68,108 +65,110 @@ msgstr ""
"Du hast bisher noch keine Regeln definiert. Um eine neue Regel zu erstellen," "Du hast bisher noch keine Regeln definiert. Um eine neue Regel zu erstellen,"
" verwende bitte den Button neben dem Titel." " verwende bitte den Button neben dem Titel."
#: advancedcontentfilter.php:231 #: advancedcontentfilter.php:210
msgid "Disabled" msgid "Disabled"
msgstr "Deaktiviert" msgstr "Deaktiviert"
#: advancedcontentfilter.php:232 #: advancedcontentfilter.php:211
msgid "Enabled" msgid "Enabled"
msgstr "Aktiv" msgstr "Aktiv"
#: advancedcontentfilter.php:233 #: advancedcontentfilter.php:212
msgid "Disable this rule" msgid "Disable this rule"
msgstr "Diese Regel deaktivieren" msgstr "Diese Regel deaktivieren"
#: advancedcontentfilter.php:234 #: advancedcontentfilter.php:213
msgid "Enable this rule" msgid "Enable this rule"
msgstr "Diese Regel aktivieren" msgstr "Diese Regel aktivieren"
#: advancedcontentfilter.php:235 #: advancedcontentfilter.php:214
msgid "Edit this rule" msgid "Edit this rule"
msgstr "Diese Regel bearbeiten" msgstr "Diese Regel bearbeiten"
#: advancedcontentfilter.php:236 #: advancedcontentfilter.php:215
msgid "Edit the rule" msgid "Edit the rule"
msgstr "Die Regel bearbeiten" msgstr "Die Regel bearbeiten"
#: advancedcontentfilter.php:237 #: advancedcontentfilter.php:216
msgid "Save this rule" msgid "Save this rule"
msgstr "Regel speichern" msgstr "Regel speichern"
#: advancedcontentfilter.php:238 #: advancedcontentfilter.php:217
msgid "Delete this rule" msgid "Delete this rule"
msgstr "Diese Regel löschen" msgstr "Diese Regel löschen"
#: advancedcontentfilter.php:239 #: advancedcontentfilter.php:218
msgid "Rule" msgid "Rule"
msgstr "Regel" msgstr "Regel"
#: advancedcontentfilter.php:240 #: advancedcontentfilter.php:219
msgid "Close" msgid "Close"
msgstr "Schließen" msgstr "Schließen"
#: advancedcontentfilter.php:241 #: advancedcontentfilter.php:220
msgid "Add new rule" msgid "Add new rule"
msgstr "Neue Regel hinzufügen" msgstr "Neue Regel hinzufügen"
#: advancedcontentfilter.php:242 #: advancedcontentfilter.php:221
msgid "Rule Name" msgid "Rule Name"
msgstr "Name der Regel" msgstr "Name der Regel"
#: advancedcontentfilter.php:243 #: advancedcontentfilter.php:222
msgid "Rule Expression" msgid "Rule Expression"
msgstr "Ausdruck der Regel" msgstr "Ausdruck der Regel"
#: advancedcontentfilter.php:244 #: advancedcontentfilter.php:223
msgid ""
"<p>Examples:</p><ul><li><pre>author_link == "
"'https://friendica.mrpetovan.com/profile/hypolite'</pre></li><li>tags</li></ul>"
msgstr ""
"<p>Ein Beispiel:</p><ul><li><pre>author_link == "
"'https://friendica.mrpetovan.com/profile/hypolite'</pre></li><li>tags</li></ul>"
#: advancedcontentfilter.php:224
msgid "Cancel" msgid "Cancel"
msgstr "Abbrechen" msgstr "Abbrechen"
#: advancedcontentfilter.php:295 #: advancedcontentfilter.php:290 advancedcontentfilter.php:301
msgid "This addon requires this node having at least one post" #: advancedcontentfilter.php:312 advancedcontentfilter.php:346
msgstr "" #: advancedcontentfilter.php:375 advancedcontentfilter.php:396
"Dieses Addon funktioniert nur, wenn auf diesem Knoten mindestens ein Beitrag"
" existiert."
#: advancedcontentfilter.php:325 advancedcontentfilter.php:336
#: advancedcontentfilter.php:347 advancedcontentfilter.php:383
#: advancedcontentfilter.php:414 advancedcontentfilter.php:437
msgid "You must be logged in to use this method" msgid "You must be logged in to use this method"
msgstr "Du musst angemeldet sein, um diese Methode verwenden zu können " msgstr "Du musst angemeldet sein um diese Methode verwenden zu können "
#: advancedcontentfilter.php:351 advancedcontentfilter.php:387 #: advancedcontentfilter.php:316 advancedcontentfilter.php:350
#: advancedcontentfilter.php:418 #: advancedcontentfilter.php:379
msgid "Invalid form security token, please refresh the page." msgid "Invalid form security token, please refresh the page."
msgstr "Ungültiges Sciherheitstoken, bitte die Seite neu laden." msgstr "Ungültiges Sciherheitstoken, bitte die Seite neu laden."
#: advancedcontentfilter.php:363 #: advancedcontentfilter.php:328
msgid "The rule name and expression are required." msgid "The rule name and expression are required."
msgstr "Der Name der Regel und der Ausdruck sind erforderlich." msgstr "Der Name der Regel und der Ausdruck sind erforderlich."
#: advancedcontentfilter.php:377 #: advancedcontentfilter.php:340
msgid "Rule successfully added" msgid "Rule successfully added"
msgstr "Regel erfolgreich hinzugefügt." msgstr "Regel erfolgreich hinzugefügt."
#: advancedcontentfilter.php:391 advancedcontentfilter.php:422 #: advancedcontentfilter.php:354 advancedcontentfilter.php:383
msgid "Rule doesn't exist or doesn't belong to you." msgid "Rule doesn't exist or doesn't belong to you."
msgstr "Entweder existiert die Regel nicht, oder sie gehört dir nicht." msgstr "Entweder existiert die Regel nicht, oder sie gehört dir nicht."
#: advancedcontentfilter.php:408 #: advancedcontentfilter.php:369
msgid "Rule successfully updated" msgid "Rule successfully updated"
msgstr "Regel wurde erfolgreich aktualisiert." msgstr "Regel wurde erfolgreich aktualisiert."
#: advancedcontentfilter.php:431 #: advancedcontentfilter.php:390
msgid "Rule successfully deleted" msgid "Rule successfully deleted"
msgstr "Regel erfolgreich gelöscht." msgstr "Regel erfolgreich gelöscht."
#: advancedcontentfilter.php:441 #: advancedcontentfilter.php:400
msgid "Missing argument: guid." msgid "Missing argument: guid."
msgstr "Fehlendes Argument: guid." msgstr "Fehlendes Argument: guid."
#: advancedcontentfilter.php:449 #: advancedcontentfilter.php:406
#, php-format #, php-format
msgid "Unknown post with guid: %s" msgid "Unknown post with guid: %s"
msgstr "Unbekannter Beitrag mit der guid: %s" msgstr "Unbekannter Beitrag mit der guid: %s"
#: src/middlewares.php:49 #: src/middlewares.php:28
msgid "Method not found" msgid "Method not found"
msgstr "Methode nicht gefunden" msgstr "Methode nicht gefunden"

View file

@ -3,38 +3,39 @@
if(! function_exists("string_plural_select_de")) { if(! function_exists("string_plural_select_de")) {
function string_plural_select_de($n){ function string_plural_select_de($n){
$n = intval($n); $n = intval($n);
return intval($n != 1); return ($n != 1);;
}} }}
$a->strings['Filtered by rule: %s'] = 'Nach dieser Regel gefiltert: %s'; ;
$a->strings['Advanced Content Filter'] = 'Erweiterter Inhaltsfilter'; $a->strings["Filtered by rule: %s"] = "Nach dieser Regel gefiltert: %s";
$a->strings['Back to Addon Settings'] = 'Zurück zu den Addon Einstellungen'; $a->strings["Advanced Content Filter"] = "Erweiterter Inhaltsfilter";
$a->strings['Add a Rule'] = 'Eine Regel hinzufügen'; $a->strings["Back to Addon Settings"] = "Zurück zu den Addon Einstellungen";
$a->strings['Help'] = 'Hilfe'; $a->strings["Add a Rule"] = "Eine Regel hinzufügen";
$a->strings['Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the help page.'] = 'Auf dieser Seite kannst du deine persönlichen Filterregeln verwalten. Regeln müssen einen Namen und einen frei wählbaren Ausdruck besitzen. Dieser Ausdruck wird mit den Daten der Beiträge abgeglichen und diese dann gegebenenfalls gefiltert. Für eine Übersicht der verfügbaren Operatoren für die Filter, wirf bitte einen Blick auf die Hilfsseite des Addons.'; $a->strings["Help"] = "Hilfe";
$a->strings['Your rules'] = 'Deine Regeln'; $a->strings["Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the <a href=\"advancedcontentfilter/help\">help page</a>."] = "Auf dieser Seite kannst du deine persönlichen Filterregeln verwalten. Regeln müssen einen Namen und einen frei wählbaren Ausdruck besitzen. Dieser Ausdruck wird mit den Daten der Beiträge abgeglichen und diese dann gegebenenfalls gefiltert. Für eine Übersicht der verfügbaren Operatoren für die Filter, wirf bitte einen Blick auf die <a href=\"advancedcontentfilter/help\">Hilfsseite</a> des Addons.";
$a->strings['You have no rules yet! Start adding one by clicking on the button above next to the title.'] = 'Du hast bisher noch keine Regeln definiert. Um eine neue Regel zu erstellen, verwende bitte den Button neben dem Titel.'; $a->strings["Your rules"] = "Deine Regeln";
$a->strings['Disabled'] = 'Deaktiviert'; $a->strings["You have no rules yet! Start adding one by clicking on the button above next to the title."] = "Du hast bisher noch keine Regeln definiert. Um eine neue Regel zu erstellen, verwende bitte den Button neben dem Titel.";
$a->strings['Enabled'] = 'Aktiv'; $a->strings["Disabled"] = "Deaktiviert";
$a->strings['Disable this rule'] = 'Diese Regel deaktivieren'; $a->strings["Enabled"] = "Aktiv";
$a->strings['Enable this rule'] = 'Diese Regel aktivieren'; $a->strings["Disable this rule"] = "Diese Regel deaktivieren";
$a->strings['Edit this rule'] = 'Diese Regel bearbeiten'; $a->strings["Enable this rule"] = "Diese Regel aktivieren";
$a->strings['Edit the rule'] = 'Die Regel bearbeiten'; $a->strings["Edit this rule"] = "Diese Regel bearbeiten";
$a->strings['Save this rule'] = 'Regel speichern'; $a->strings["Edit the rule"] = "Die Regel bearbeiten";
$a->strings['Delete this rule'] = 'Diese Regel löschen'; $a->strings["Save this rule"] = "Regel speichern";
$a->strings['Rule'] = 'Regel'; $a->strings["Delete this rule"] = "Diese Regel löschen";
$a->strings['Close'] = 'Schließen'; $a->strings["Rule"] = "Regel";
$a->strings['Add new rule'] = 'Neue Regel hinzufügen'; $a->strings["Close"] = "Schließen";
$a->strings['Rule Name'] = 'Name der Regel'; $a->strings["Add new rule"] = "Neue Regel hinzufügen";
$a->strings['Rule Expression'] = 'Ausdruck der Regel'; $a->strings["Rule Name"] = "Name der Regel";
$a->strings['Cancel'] = 'Abbrechen'; $a->strings["Rule Expression"] = "Ausdruck der Regel";
$a->strings['This addon requires this node having at least one post'] = 'Dieses Addon funktioniert nur, wenn auf diesem Knoten mindestens ein Beitrag existiert.'; $a->strings["<p>Examples:</p><ul><li><pre>author_link == 'https://friendica.mrpetovan.com/profile/hypolite'</pre></li><li>tags</li></ul>"] = "<p>Ein Beispiel:</p><ul><li><pre>author_link == 'https://friendica.mrpetovan.com/profile/hypolite'</pre></li><li>tags</li></ul>";
$a->strings['You must be logged in to use this method'] = 'Du musst angemeldet sein, um diese Methode verwenden zu können '; $a->strings["Cancel"] = "Abbrechen";
$a->strings['Invalid form security token, please refresh the page.'] = 'Ungültiges Sciherheitstoken, bitte die Seite neu laden.'; $a->strings["You must be logged in to use this method"] = "Du musst angemeldet sein um diese Methode verwenden zu können ";
$a->strings['The rule name and expression are required.'] = 'Der Name der Regel und der Ausdruck sind erforderlich.'; $a->strings["Invalid form security token, please refresh the page."] = "Ungültiges Sciherheitstoken, bitte die Seite neu laden.";
$a->strings['Rule successfully added'] = 'Regel erfolgreich hinzugefügt.'; $a->strings["The rule name and expression are required."] = "Der Name der Regel und der Ausdruck sind erforderlich.";
$a->strings['Rule doesn\'t exist or doesn\'t belong to you.'] = 'Entweder existiert die Regel nicht, oder sie gehört dir nicht.'; $a->strings["Rule successfully added"] = "Regel erfolgreich hinzugefügt.";
$a->strings['Rule successfully updated'] = 'Regel wurde erfolgreich aktualisiert.'; $a->strings["Rule doesn't exist or doesn't belong to you."] = "Entweder existiert die Regel nicht, oder sie gehört dir nicht.";
$a->strings['Rule successfully deleted'] = 'Regel erfolgreich gelöscht.'; $a->strings["Rule successfully updated"] = "Regel wurde erfolgreich aktualisiert.";
$a->strings['Missing argument: guid.'] = 'Fehlendes Argument: guid.'; $a->strings["Rule successfully deleted"] = "Regel erfolgreich gelöscht.";
$a->strings['Unknown post with guid: %s'] = 'Unbekannter Beitrag mit der guid: %s'; $a->strings["Missing argument: guid."] = "Fehlendes Argument: guid.";
$a->strings['Method not found'] = 'Methode nicht gefunden'; $a->strings["Unknown post with guid: %s"] = "Unbekannter Beitrag mit der guid: %s";
$a->strings["Method not found"] = "Methode nicht gefunden";

View file

@ -3,38 +3,39 @@
if(! function_exists("string_plural_select_en_gb")) { if(! function_exists("string_plural_select_en_gb")) {
function string_plural_select_en_gb($n){ function string_plural_select_en_gb($n){
$n = intval($n); $n = intval($n);
return intval($n != 1); return ($n != 1);;
}} }}
$a->strings['Filtered by rule: %s'] = 'Filtered by rule: %s'; ;
$a->strings['Advanced Content Filter'] = 'Advanced Content Filter'; $a->strings["Filtered by rule: %s"] = "Filtered by rule: %s";
$a->strings['Back to Addon Settings'] = 'Back to addon settings'; $a->strings["Advanced Content Filter"] = "Advanced Content Filter";
$a->strings['Add a Rule'] = 'Add a rule'; $a->strings["Back to Addon Settings"] = "Back to addon settings";
$a->strings['Help'] = 'Help'; $a->strings["Add a Rule"] = "Add a rule";
$a->strings['Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the <a href="advancedcontentfilter/help">help page</a>.'] = 'Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the <a href="advancedcontentfilter/help">help page</a>.'; $a->strings["Help"] = "Help";
$a->strings['Your rules'] = 'Your rules'; $a->strings["Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the <a href=\"advancedcontentfilter/help\">help page</a>."] = "Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the <a href=\"advancedcontentfilter/help\">help page</a>.";
$a->strings['You have no rules yet! Start adding one by clicking on the button above next to the title.'] = 'You have no rules yet! Start adding one by clicking on the button above next to the title.'; $a->strings["Your rules"] = "Your rules";
$a->strings['Disabled'] = 'Disabled'; $a->strings["You have no rules yet! Start adding one by clicking on the button above next to the title."] = "You have no rules yet! Start adding one by clicking on the button above next to the title.";
$a->strings['Enabled'] = 'Enabled'; $a->strings["Disabled"] = "Disabled";
$a->strings['Disable this rule'] = 'Disable this rule'; $a->strings["Enabled"] = "Enabled";
$a->strings['Enable this rule'] = 'Enable this rule'; $a->strings["Disable this rule"] = "Disable this rule";
$a->strings['Edit this rule'] = 'Edit this rule'; $a->strings["Enable this rule"] = "Enable this rule";
$a->strings['Edit the rule'] = 'Edit the rule'; $a->strings["Edit this rule"] = "Edit this rule";
$a->strings['Save this rule'] = 'Save this rule'; $a->strings["Edit the rule"] = "Edit the rule";
$a->strings['Delete this rule'] = 'Delete this rule'; $a->strings["Save this rule"] = "Save this rule";
$a->strings['Rule'] = 'Rule'; $a->strings["Delete this rule"] = "Delete this rule";
$a->strings['Close'] = 'Close'; $a->strings["Rule"] = "Rule";
$a->strings['Add new rule'] = 'Add new rule'; $a->strings["Close"] = "Close";
$a->strings['Rule Name'] = 'Rule name'; $a->strings["Add new rule"] = "Add new rule";
$a->strings['Rule Expression'] = 'Rule expression'; $a->strings["Rule Name"] = "Rule name";
$a->strings['<p>Examples:</p><ul><li><pre>author_link == \'https://friendica.mrpetovan.com/profile/hypolite\'</pre></li><li>tags</li></ul>'] = '<p>Examples:</p><ul><li><pre>author_link == \'https://friendica.mrpetovan.com/profile/hypolite\'</pre></li><li>tags</li></ul>'; $a->strings["Rule Expression"] = "Rule expression";
$a->strings['Cancel'] = 'Cancel'; $a->strings["<p>Examples:</p><ul><li><pre>author_link == 'https://friendica.mrpetovan.com/profile/hypolite'</pre></li><li>tags</li></ul>"] = "<p>Examples:</p><ul><li><pre>author_link == 'https://friendica.mrpetovan.com/profile/hypolite'</pre></li><li>tags</li></ul>";
$a->strings['You must be logged in to use this method'] = 'You must be logged in to use this method'; $a->strings["Cancel"] = "Cancel";
$a->strings['Invalid form security token, please refresh the page.'] = 'Invalid form security token, please refresh the page.'; $a->strings["You must be logged in to use this method"] = "You must be logged in to use this method";
$a->strings['The rule name and expression are required.'] = 'The rule name and expression are required.'; $a->strings["Invalid form security token, please refresh the page."] = "Invalid form security token, please refresh the page.";
$a->strings['Rule successfully added'] = 'Rule successfully added'; $a->strings["The rule name and expression are required."] = "The rule name and expression are required.";
$a->strings['Rule doesn\'t exist or doesn\'t belong to you.'] = 'Rule doesn\'t exist or doesn\'t belong to you.'; $a->strings["Rule successfully added"] = "Rule successfully added";
$a->strings['Rule successfully updated'] = 'Rule successfully updated'; $a->strings["Rule doesn't exist or doesn't belong to you."] = "Rule doesn't exist or doesn't belong to you.";
$a->strings['Rule successfully deleted'] = 'Rule successfully deleted'; $a->strings["Rule successfully updated"] = "Rule successfully updated";
$a->strings['Missing argument: guid.'] = 'Missing argument: Global Unique Identifier (GUID).'; $a->strings["Rule successfully deleted"] = "Rule successfully deleted";
$a->strings['Unknown post with guid: %s'] = 'Unknown post with Global Unique Identifier (GUID): %s'; $a->strings["Missing argument: guid."] = "Missing argument: Global Unique Identifier (GUID).";
$a->strings['Method not found'] = 'Method not found'; $a->strings["Unknown post with guid: %s"] = "Unknown post with Global Unique Identifier (GUID): %s";
$a->strings["Method not found"] = "Method not found";

View file

@ -1,173 +0,0 @@
# ADDON advancedcontentfilter
# Copyright (C)
# This file is distributed under the same license as the Friendica advancedcontentfilter addon package.
#
#
# Translators:
# Albert, 2018
# Yasmine A <yasmine.elachkar@gmail.com>, 2018
# Julio Cova, 2019
# Boris Daniel Martinez Millàn <borisdanielmartinezmillan@gmail.com>, 2021
# Senex Petrovic <javierruizo@hotmail.com>, 2021
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-02-01 18:15+0100\n"
"PO-Revision-Date: 2018-05-24 06:41+0000\n"
"Last-Translator: Senex Petrovic <javierruizo@hotmail.com>, 2021\n"
"Language-Team: Spanish (https://www.transifex.com/Friendica/teams/12172/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: es\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: src/middlewares.php:49
msgid "Method not found"
msgstr "Método no encontrado"
#: advancedcontentfilter.php:136
#, php-format
msgid "Filtered by rule: %s"
msgstr "Filtrado por la regla: %s"
#: advancedcontentfilter.php:150 advancedcontentfilter.php:207
msgid "Advanced Content Filter"
msgstr "Filtro de contenido avanzado"
#: advancedcontentfilter.php:206
msgid "Back to Addon Settings"
msgstr "Volver a Ajustes de Complemento"
#: advancedcontentfilter.php:208
msgid "Add a Rule"
msgstr "Añadir una regla"
#: advancedcontentfilter.php:209
msgid "Help"
msgstr "Ayuda"
#: advancedcontentfilter.php:210
msgid ""
"Add and manage your personal content filter rules in this screen. Rules have"
" a name and an arbitrary expression that will be matched against post data. "
"For a complete reference of the available operations and variables, check "
"the help page."
msgstr ""
"Agregue y administre sus reglas de filtrado de contenido personal en esta "
"pantalla. Las reglas tienen un nombre y una expresión arbitraria que se "
"comparará con los datos de la publicación. Para obtener una referencia "
"completa de las operaciones y variables disponibles, consulte la página de "
"ayuda."
#: advancedcontentfilter.php:211
msgid "Your rules"
msgstr "Tus reglas"
#: advancedcontentfilter.php:212
msgid ""
"You have no rules yet! Start adding one by clicking on the button above next"
" to the title."
msgstr ""
"¡Aún no tienes reglas! Empieza añadiendo una haciendo clic en el botón de "
"arriba al lado del título. "
#: advancedcontentfilter.php:213
msgid "Disabled"
msgstr "Desactivado"
#: advancedcontentfilter.php:214
msgid "Enabled"
msgstr "Activado"
#: advancedcontentfilter.php:215
msgid "Disable this rule"
msgstr "Desactivar esta regla"
#: advancedcontentfilter.php:216
msgid "Enable this rule"
msgstr "Activar esta regla"
#: advancedcontentfilter.php:217
msgid "Edit this rule"
msgstr "Editar esta regla"
#: advancedcontentfilter.php:218
msgid "Edit the rule"
msgstr "Editar regla"
#: advancedcontentfilter.php:219
msgid "Save this rule"
msgstr "Guardar esta regla"
#: advancedcontentfilter.php:220
msgid "Delete this rule"
msgstr "Borrar esta regla"
#: advancedcontentfilter.php:221
msgid "Rule"
msgstr "Regla"
#: advancedcontentfilter.php:222
msgid "Close"
msgstr "Cerrar"
#: advancedcontentfilter.php:223
msgid "Add new rule"
msgstr "Agregar nueva regla"
#: advancedcontentfilter.php:224
msgid "Rule Name"
msgstr "Nombre de la regla"
#: advancedcontentfilter.php:225
msgid "Rule Expression"
msgstr "Expresión de la regla"
#: advancedcontentfilter.php:226
msgid "Cancel"
msgstr "Cancelar"
#: advancedcontentfilter.php:293 advancedcontentfilter.php:304
#: advancedcontentfilter.php:315 advancedcontentfilter.php:349
#: advancedcontentfilter.php:378 advancedcontentfilter.php:399
msgid "You must be logged in to use this method"
msgstr "Debe estar registrado para usar este método"
#: advancedcontentfilter.php:319 advancedcontentfilter.php:353
#: advancedcontentfilter.php:382
msgid "Invalid form security token, please refresh the page."
msgstr ""
"Token de seguridad de formulario inválido, por favor actualice la página."
#: advancedcontentfilter.php:331
msgid "The rule name and expression are required."
msgstr "El nombre y la expresión de la regla son obligatorios."
#: advancedcontentfilter.php:343
msgid "Rule successfully added"
msgstr "Regla añadida exitosamente"
#: advancedcontentfilter.php:357 advancedcontentfilter.php:386
msgid "Rule doesn't exist or doesn't belong to you."
msgstr "La regla no existe o no te pertenece."
#: advancedcontentfilter.php:372
msgid "Rule successfully updated"
msgstr "Regla actualizada exitosamente"
#: advancedcontentfilter.php:393
msgid "Rule successfully deleted"
msgstr "Regla eliminada exitosamente"
#: advancedcontentfilter.php:403
msgid "Missing argument: guid."
msgstr "Algumento faltante: guía"
#: advancedcontentfilter.php:411
#, php-format
msgid "Unknown post with guid: %s"
msgstr "Publicacion desconocida con la guía: %s"

View file

@ -1,39 +0,0 @@
<?php
if(! function_exists("string_plural_select_es")) {
function string_plural_select_es($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Method not found'] = 'Método no encontrado';
$a->strings['Filtered by rule: %s'] = 'Filtrado por la regla: %s';
$a->strings['Advanced Content Filter'] = 'Filtro de contenido avanzado';
$a->strings['Back to Addon Settings'] = 'Volver a Ajustes de Complemento';
$a->strings['Add a Rule'] = 'Añadir una regla';
$a->strings['Help'] = 'Ayuda';
$a->strings['Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the help page.'] = 'Agregue y administre sus reglas de filtrado de contenido personal en esta pantalla. Las reglas tienen un nombre y una expresión arbitraria que se comparará con los datos de la publicación. Para obtener una referencia completa de las operaciones y variables disponibles, consulte la página de ayuda.';
$a->strings['Your rules'] = 'Tus reglas';
$a->strings['You have no rules yet! Start adding one by clicking on the button above next to the title.'] = '¡Aún no tienes reglas! Empieza añadiendo una haciendo clic en el botón de arriba al lado del título. ';
$a->strings['Disabled'] = 'Desactivado';
$a->strings['Enabled'] = 'Activado';
$a->strings['Disable this rule'] = 'Desactivar esta regla';
$a->strings['Enable this rule'] = 'Activar esta regla';
$a->strings['Edit this rule'] = 'Editar esta regla';
$a->strings['Edit the rule'] = 'Editar regla';
$a->strings['Save this rule'] = 'Guardar esta regla';
$a->strings['Delete this rule'] = 'Borrar esta regla';
$a->strings['Rule'] = 'Regla';
$a->strings['Close'] = 'Cerrar';
$a->strings['Add new rule'] = 'Agregar nueva regla';
$a->strings['Rule Name'] = 'Nombre de la regla';
$a->strings['Rule Expression'] = 'Expresión de la regla';
$a->strings['Cancel'] = 'Cancelar';
$a->strings['You must be logged in to use this method'] = 'Debe estar registrado para usar este método';
$a->strings['Invalid form security token, please refresh the page.'] = 'Token de seguridad de formulario inválido, por favor actualice la página.';
$a->strings['The rule name and expression are required.'] = 'El nombre y la expresión de la regla son obligatorios.';
$a->strings['Rule successfully added'] = 'Regla añadida exitosamente';
$a->strings['Rule doesn\'t exist or doesn\'t belong to you.'] = 'La regla no existe o no te pertenece.';
$a->strings['Rule successfully updated'] = 'Regla actualizada exitosamente';
$a->strings['Rule successfully deleted'] = 'Regla eliminada exitosamente';
$a->strings['Missing argument: guid.'] = 'Algumento faltante: guía';
$a->strings['Unknown post with guid: %s'] = 'Publicacion desconocida con la guía: %s';

View file

@ -3,20 +3,39 @@
if(! function_exists("string_plural_select_fi")) { if(! function_exists("string_plural_select_fi")) {
function string_plural_select_fi($n){ function string_plural_select_fi($n){
$n = intval($n); $n = intval($n);
return intval($n != 1); return ($n != 1);;
}} }}
$a->strings['Add a Rule'] = 'Lisää sääntö'; ;
$a->strings['Your rules'] = 'Sääntösi'; $a->strings["Filtered by rule: %s"] = "";
$a->strings['Disabled'] = 'Ei käytössä'; $a->strings["Advanced Content Filter"] = "";
$a->strings['Enabled'] = 'Käytössä'; $a->strings["Back to Addon Settings"] = "";
$a->strings['Enable this rule'] = 'Ota tämä sääntö käyttöön'; $a->strings["Add a Rule"] = "Lisää sääntö";
$a->strings['Edit this rule'] = 'Muokkaa tätä sääntöä'; $a->strings["Help"] = "";
$a->strings['Edit the rule'] = 'Muokkaa sääntöä'; $a->strings["Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the <a href=\"advancedcontentfilter/help\">help page</a>."] = "";
$a->strings['Save this rule'] = 'Tallenna tämä sääntö'; $a->strings["Your rules"] = "Sääntösi";
$a->strings['Delete this rule'] = 'Poista tämä sääntö'; $a->strings["You have no rules yet! Start adding one by clicking on the button above next to the title."] = "";
$a->strings['Rule'] = 'Sääntö'; $a->strings["Disabled"] = "Ei käytössä";
$a->strings['Close'] = 'Sulje'; $a->strings["Enabled"] = "Käytössä";
$a->strings['Add new rule'] = 'Lisää uusi sääntö'; $a->strings["Disable this rule"] = "";
$a->strings['Rule successfully added'] = 'Sääntö lisätty'; $a->strings["Enable this rule"] = "Ota tämä sääntö käyttöön";
$a->strings['Rule successfully updated'] = 'Sääntö päivitetty'; $a->strings["Edit this rule"] = "Muokkaa tätä sääntöä";
$a->strings['Rule successfully deleted'] = 'Sääntö poistettu'; $a->strings["Edit the rule"] = "Muokkaa sääntöä";
$a->strings["Save this rule"] = "Tallenna tämä sääntö";
$a->strings["Delete this rule"] = "Poista tämä sääntö";
$a->strings["Rule"] = "Sääntö";
$a->strings["Close"] = "Sulje";
$a->strings["Add new rule"] = "Lisää uusi sääntö";
$a->strings["Rule Name"] = "";
$a->strings["Rule Expression"] = "";
$a->strings["<p>Examples:</p><ul><li><pre>author_link == 'https://friendica.mrpetovan.com/profile/hypolite'</pre></li><li>tags</li></ul>"] = "";
$a->strings["Cancel"] = "";
$a->strings["You must be logged in to use this method"] = "";
$a->strings["Invalid form security token, please refresh the page."] = "";
$a->strings["The rule name and expression are required."] = "";
$a->strings["Rule successfully added"] = "Sääntö lisätty";
$a->strings["Rule doesn't exist or doesn't belong to you."] = "";
$a->strings["Rule successfully updated"] = "Sääntö päivitetty";
$a->strings["Rule successfully deleted"] = "Sääntö poistettu";
$a->strings["Missing argument: guid."] = "";
$a->strings["Unknown post with guid: %s"] = "";
$a->strings["Method not found"] = "";

View file

@ -7,62 +7,60 @@
# Marie Olive <lacellule101@gmail.com>, 2018 # Marie Olive <lacellule101@gmail.com>, 2018
# Vladimir Núñez <lapoubelle111@gmail.com>, 2018 # Vladimir Núñez <lapoubelle111@gmail.com>, 2018
# Phigger Phigger <automates@lepouete.fr>, 2019 # Phigger Phigger <automates@lepouete.fr>, 2019
# Wil Tur <wiltur@yargl.com>, 2021
# Hypolite Petovan <hypolite@mrpetovan.com>, 2022
# #
#, fuzzy #, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-05-11 08:54-0400\n" "POT-Creation-Date: 2018-04-17 04:04+0200\n"
"PO-Revision-Date: 2018-05-24 06:41+0000\n" "PO-Revision-Date: 2018-05-24 06:41+0000\n"
"Last-Translator: Hypolite Petovan <hypolite@mrpetovan.com>, 2022\n" "Last-Translator: Phigger Phigger <automates@lepouete.fr>, 2019\n"
"Language-Team: French (https://www.transifex.com/Friendica/teams/12172/fr/)\n" "Language-Team: French (https://www.transifex.com/Friendica/teams/12172/fr/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Language: fr\n" "Language: fr\n"
"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: advancedcontentfilter.php:154 #: advancedcontentfilter.php:134
#, php-format #, php-format
msgid "Filtered by rule: %s" msgid "Filtered by rule: %s"
msgstr "Filtré par règle:%s" msgstr "Filtré par règle:%s"
#: advancedcontentfilter.php:170 advancedcontentfilter.php:225 #: advancedcontentfilter.php:147 advancedcontentfilter.php:204
msgid "Advanced Content Filter" msgid "Advanced Content Filter"
msgstr "Filtre avancé de contenu" msgstr "Filtre avancé de contenu"
#: advancedcontentfilter.php:224 #: advancedcontentfilter.php:203
msgid "Back to Addon Settings" msgid "Back to Addon Settings"
msgstr "Retour aux paramètres de l'extension" msgstr "Retour aux paramètres de l'extension"
#: advancedcontentfilter.php:226 #: advancedcontentfilter.php:205
msgid "Add a Rule" msgid "Add a Rule"
msgstr "Ajouter une règle" msgstr "Ajouter une règle"
#: advancedcontentfilter.php:227 #: advancedcontentfilter.php:206
msgid "Help" msgid "Help"
msgstr "Aide" msgstr "Aide"
#: advancedcontentfilter.php:228 #: advancedcontentfilter.php:207
msgid "" msgid ""
"Add and manage your personal content filter rules in this screen. Rules have" "Add and manage your personal content filter rules in this screen. Rules have"
" a name and an arbitrary expression that will be matched against post data. " " a name and an arbitrary expression that will be matched against post data. "
"For a complete reference of the available operations and variables, check " "For a complete reference of the available operations and variables, check "
"the help page." "the <a href=\"advancedcontentfilter/help\">help page</a>."
msgstr "" msgstr ""
"Cet écran permet d'ajouter et de gérer vos règles de filtrage de contenu " "Dans cet écran, ajoutez et gérez votre règle personnelle de filtre de "
"personnelles. Les règles ont un nom et une expression arbitraire qui sera " "contenu. Les règles portent un nom et contiennent une expression arbitraire "
"comparée aux données des messages. Pour une référence complète des " "qui sera appliquée aux données du post. Pour une liste complète des "
"opérations et variables disponibles, consultez la page d'aide." "opérations disponibles, voyez la page d'aide"
#: advancedcontentfilter.php:229 #: advancedcontentfilter.php:208
msgid "Your rules" msgid "Your rules"
msgstr "Vos règles" msgstr "Vos règles"
#: advancedcontentfilter.php:230 #: advancedcontentfilter.php:209
msgid "" msgid ""
"You have no rules yet! Start adding one by clicking on the button above next" "You have no rules yet! Start adding one by clicking on the button above next"
" to the title." " to the title."
@ -70,108 +68,110 @@ msgstr ""
"Vous n'avez encore aucune règle! Ajoutez-en une en cliquant le bouton au-" "Vous n'avez encore aucune règle! Ajoutez-en une en cliquant le bouton au-"
"dessus près du titre" "dessus près du titre"
#: advancedcontentfilter.php:231 #: advancedcontentfilter.php:210
msgid "Disabled" msgid "Disabled"
msgstr "Désactivé" msgstr "Désactivé"
#: advancedcontentfilter.php:232 #: advancedcontentfilter.php:211
msgid "Enabled" msgid "Enabled"
msgstr "Activé" msgstr "Activé"
#: advancedcontentfilter.php:233 #: advancedcontentfilter.php:212
msgid "Disable this rule" msgid "Disable this rule"
msgstr "Désactiver cette règle" msgstr "Désactiver cette règle"
#: advancedcontentfilter.php:234 #: advancedcontentfilter.php:213
msgid "Enable this rule" msgid "Enable this rule"
msgstr "Activer cette règle" msgstr "Activer cette règle"
#: advancedcontentfilter.php:235 #: advancedcontentfilter.php:214
msgid "Edit this rule" msgid "Edit this rule"
msgstr "Modifier cette règle" msgstr "Modifier cette règle"
#: advancedcontentfilter.php:236 #: advancedcontentfilter.php:215
msgid "Edit the rule" msgid "Edit the rule"
msgstr "Modifier la règle" msgstr "Modifier la règle"
#: advancedcontentfilter.php:237 #: advancedcontentfilter.php:216
msgid "Save this rule" msgid "Save this rule"
msgstr "Enregistrer cette règle" msgstr "Enregistrer cette règle"
#: advancedcontentfilter.php:238 #: advancedcontentfilter.php:217
msgid "Delete this rule" msgid "Delete this rule"
msgstr "Supprimer cette règle" msgstr "Supprimer cette règle"
#: advancedcontentfilter.php:239 #: advancedcontentfilter.php:218
msgid "Rule" msgid "Rule"
msgstr "Règle" msgstr "Règle"
#: advancedcontentfilter.php:240 #: advancedcontentfilter.php:219
msgid "Close" msgid "Close"
msgstr "Fermer" msgstr "Fermer"
#: advancedcontentfilter.php:241 #: advancedcontentfilter.php:220
msgid "Add new rule" msgid "Add new rule"
msgstr "Ajouter nouvelle règle" msgstr "Ajouter nouvelle règle"
#: advancedcontentfilter.php:242 #: advancedcontentfilter.php:221
msgid "Rule Name" msgid "Rule Name"
msgstr "Nommer règle" msgstr "Nommer règle"
#: advancedcontentfilter.php:243 #: advancedcontentfilter.php:222
msgid "Rule Expression" msgid "Rule Expression"
msgstr "Expression de règle" msgstr "Expression de règle"
#: advancedcontentfilter.php:244 #: advancedcontentfilter.php:223
msgid ""
"<p>Examples:</p><ul><li><pre>author_link == "
"'https://friendica.mrpetovan.com/profile/hypolite'</pre></li><li>tags</li></ul>"
msgstr ""
"<p>Exemples :</p><ul><li><pre>author_link == "
"'https://friendica.mrpetovan.com/profile/hypolite'</pre></li><li>tags</li></ul>"
#: advancedcontentfilter.php:224
msgid "Cancel" msgid "Cancel"
msgstr "Annuler" msgstr "Annuler"
#: advancedcontentfilter.php:295 #: advancedcontentfilter.php:290 advancedcontentfilter.php:301
msgid "This addon requires this node having at least one post" #: advancedcontentfilter.php:312 advancedcontentfilter.php:346
msgstr "" #: advancedcontentfilter.php:375 advancedcontentfilter.php:396
"Cette extension requiert au moins une publication sur ce serveur pour "
"fonctionner"
#: advancedcontentfilter.php:325 advancedcontentfilter.php:336
#: advancedcontentfilter.php:347 advancedcontentfilter.php:383
#: advancedcontentfilter.php:414 advancedcontentfilter.php:437
msgid "You must be logged in to use this method" msgid "You must be logged in to use this method"
msgstr "Vous devez être connecté pour utiliser cette méthode" msgstr "Vous devez être connecté pour utiliser cette méthode"
#: advancedcontentfilter.php:351 advancedcontentfilter.php:387 #: advancedcontentfilter.php:316 advancedcontentfilter.php:350
#: advancedcontentfilter.php:418 #: advancedcontentfilter.php:379
msgid "Invalid form security token, please refresh the page." msgid "Invalid form security token, please refresh the page."
msgstr "Formulaire token de sécurité invalide, rafraîchissez la page" msgstr "Formulaire token de sécurité invalide, rafraîchissez la page"
#: advancedcontentfilter.php:363 #: advancedcontentfilter.php:328
msgid "The rule name and expression are required." msgid "The rule name and expression are required."
msgstr "Le nom et l'expression de cette règle sont requis" msgstr "Le nom et l'expression de cette règle sont requis"
#: advancedcontentfilter.php:377 #: advancedcontentfilter.php:340
msgid "Rule successfully added" msgid "Rule successfully added"
msgstr "Règle bien ajoutée" msgstr "Règle bien ajoutée"
#: advancedcontentfilter.php:391 advancedcontentfilter.php:422 #: advancedcontentfilter.php:354 advancedcontentfilter.php:383
msgid "Rule doesn't exist or doesn't belong to you." msgid "Rule doesn't exist or doesn't belong to you."
msgstr "Cette règle n'existe pas ou ne vous appartient pas" msgstr "Cette règle n'existe pas ou ne vous appartient pas"
#: advancedcontentfilter.php:408 #: advancedcontentfilter.php:369
msgid "Rule successfully updated" msgid "Rule successfully updated"
msgstr "Règle bien mise à jour" msgstr "Règle bien mise à jour"
#: advancedcontentfilter.php:431 #: advancedcontentfilter.php:390
msgid "Rule successfully deleted" msgid "Rule successfully deleted"
msgstr "Règle bien supprimée" msgstr "Règle bien supprimée"
#: advancedcontentfilter.php:441 #: advancedcontentfilter.php:400
msgid "Missing argument: guid." msgid "Missing argument: guid."
msgstr "Argument manquant: " msgstr "Argument manquant: "
#: advancedcontentfilter.php:449 #: advancedcontentfilter.php:406
#, php-format #, php-format
msgid "Unknown post with guid: %s" msgid "Unknown post with guid: %s"
msgstr "Post inconnu avec guid : %s" msgstr "Post inconnu avec guid : %s"
#: src/middlewares.php:49 #: src/middlewares.php:28
msgid "Method not found" msgid "Method not found"
msgstr "Méthode non trouvée" msgstr "Méthode non trouvée"

View file

@ -3,38 +3,39 @@
if(! function_exists("string_plural_select_fr")) { if(! function_exists("string_plural_select_fr")) {
function string_plural_select_fr($n){ function string_plural_select_fr($n){
$n = intval($n); $n = intval($n);
if (($n == 0 || $n == 1)) { return 0; } else if ($n != 0 && $n % 1000000 == 0) { return 1; } else { return 2; } return ($n > 1);;
}} }}
$a->strings['Filtered by rule: %s'] = 'Filtré par règle:%s'; ;
$a->strings['Advanced Content Filter'] = 'Filtre avancé de contenu'; $a->strings["Filtered by rule: %s"] = "Filtré par règle:%s";
$a->strings['Back to Addon Settings'] = 'Retour aux paramètres de l\'extension'; $a->strings["Advanced Content Filter"] = "Filtre avancé de contenu";
$a->strings['Add a Rule'] = 'Ajouter une règle'; $a->strings["Back to Addon Settings"] = "Retour aux paramètres de l'extension";
$a->strings['Help'] = 'Aide'; $a->strings["Add a Rule"] = "Ajouter une règle";
$a->strings['Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the help page.'] = 'Cet écran permet d\'ajouter et de gérer vos règles de filtrage de contenu personnelles. Les règles ont un nom et une expression arbitraire qui sera comparée aux données des messages. Pour une référence complète des opérations et variables disponibles, consultez la page d\'aide.'; $a->strings["Help"] = "Aide";
$a->strings['Your rules'] = 'Vos règles'; $a->strings["Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the <a href=\"advancedcontentfilter/help\">help page</a>."] = "Dans cet écran, ajoutez et gérez votre règle personnelle de filtre de contenu. Les règles portent un nom et contiennent une expression arbitraire qui sera appliquée aux données du post. Pour une liste complète des opérations disponibles, voyez la page d'aide";
$a->strings['You have no rules yet! Start adding one by clicking on the button above next to the title.'] = 'Vous n\'avez encore aucune règle! Ajoutez-en une en cliquant le bouton au-dessus près du titre'; $a->strings["Your rules"] = "Vos règles";
$a->strings['Disabled'] = 'Désactivé'; $a->strings["You have no rules yet! Start adding one by clicking on the button above next to the title."] = "Vous n'avez encore aucune règle! Ajoutez-en une en cliquant le bouton au-dessus près du titre";
$a->strings['Enabled'] = 'Activé'; $a->strings["Disabled"] = "Désactivé";
$a->strings['Disable this rule'] = 'Désactiver cette règle'; $a->strings["Enabled"] = "Activé";
$a->strings['Enable this rule'] = 'Activer cette règle'; $a->strings["Disable this rule"] = "Désactiver cette règle";
$a->strings['Edit this rule'] = 'Modifier cette règle'; $a->strings["Enable this rule"] = "Activer cette règle";
$a->strings['Edit the rule'] = 'Modifier la règle'; $a->strings["Edit this rule"] = "Modifier cette règle";
$a->strings['Save this rule'] = 'Enregistrer cette règle'; $a->strings["Edit the rule"] = "Modifier la règle";
$a->strings['Delete this rule'] = 'Supprimer cette règle'; $a->strings["Save this rule"] = "Enregistrer cette règle";
$a->strings['Rule'] = 'Règle'; $a->strings["Delete this rule"] = "Supprimer cette règle";
$a->strings['Close'] = 'Fermer'; $a->strings["Rule"] = "Règle";
$a->strings['Add new rule'] = 'Ajouter nouvelle règle'; $a->strings["Close"] = "Fermer";
$a->strings['Rule Name'] = 'Nommer règle'; $a->strings["Add new rule"] = "Ajouter nouvelle règle";
$a->strings['Rule Expression'] = 'Expression de règle'; $a->strings["Rule Name"] = "Nommer règle";
$a->strings['Cancel'] = 'Annuler'; $a->strings["Rule Expression"] = "Expression de règle";
$a->strings['This addon requires this node having at least one post'] = 'Cette extension requiert au moins une publication sur ce serveur pour fonctionner'; $a->strings["<p>Examples:</p><ul><li><pre>author_link == 'https://friendica.mrpetovan.com/profile/hypolite'</pre></li><li>tags</li></ul>"] = "<p>Exemples :</p><ul><li><pre>author_link == 'https://friendica.mrpetovan.com/profile/hypolite'</pre></li><li>tags</li></ul>";
$a->strings['You must be logged in to use this method'] = 'Vous devez être connecté pour utiliser cette méthode'; $a->strings["Cancel"] = "Annuler";
$a->strings['Invalid form security token, please refresh the page.'] = 'Formulaire token de sécurité invalide, rafraîchissez la page'; $a->strings["You must be logged in to use this method"] = "Vous devez être connecté pour utiliser cette méthode";
$a->strings['The rule name and expression are required.'] = 'Le nom et l\'expression de cette règle sont requis'; $a->strings["Invalid form security token, please refresh the page."] = "Formulaire token de sécurité invalide, rafraîchissez la page";
$a->strings['Rule successfully added'] = 'Règle bien ajoutée'; $a->strings["The rule name and expression are required."] = "Le nom et l'expression de cette règle sont requis";
$a->strings['Rule doesn\'t exist or doesn\'t belong to you.'] = 'Cette règle n\'existe pas ou ne vous appartient pas'; $a->strings["Rule successfully added"] = "Règle bien ajoutée";
$a->strings['Rule successfully updated'] = 'Règle bien mise à jour'; $a->strings["Rule doesn't exist or doesn't belong to you."] = "Cette règle n'existe pas ou ne vous appartient pas";
$a->strings['Rule successfully deleted'] = 'Règle bien supprimée'; $a->strings["Rule successfully updated"] = "Règle bien mise à jour";
$a->strings['Missing argument: guid.'] = 'Argument manquant: '; $a->strings["Rule successfully deleted"] = "Règle bien supprimée";
$a->strings['Unknown post with guid: %s'] = 'Post inconnu avec guid : %s'; $a->strings["Missing argument: guid."] = "Argument manquant: ";
$a->strings['Method not found'] = 'Méthode non trouvée'; $a->strings["Unknown post with guid: %s"] = "Post inconnu avec guid : %s";
$a->strings["Method not found"] = "Méthode non trouvée";

View file

@ -1,173 +0,0 @@
# ADDON advancedcontentfilter
# Copyright (C)
# This file is distributed under the same license as the Friendica advancedcontentfilter addon package.
#
#
# Translators:
# Balázs Úr, 2022
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-05-11 08:54-0400\n"
"PO-Revision-Date: 2018-05-24 06:41+0000\n"
"Last-Translator: Balázs Úr, 2022\n"
"Language-Team: Hungarian (https://www.transifex.com/Friendica/teams/12172/hu/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: hu\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: advancedcontentfilter.php:154
#, php-format
msgid "Filtered by rule: %s"
msgstr "Szűrve a szabály alapján: %s"
#: advancedcontentfilter.php:170 advancedcontentfilter.php:225
msgid "Advanced Content Filter"
msgstr "Speciális tartalomszűrő"
#: advancedcontentfilter.php:224
msgid "Back to Addon Settings"
msgstr "Vissza a bővítménybeállításokhoz"
#: advancedcontentfilter.php:226
msgid "Add a Rule"
msgstr "Szabály hozzáadása"
#: advancedcontentfilter.php:227
msgid "Help"
msgstr "Súgó"
#: advancedcontentfilter.php:228
msgid ""
"Add and manage your personal content filter rules in this screen. Rules have"
" a name and an arbitrary expression that will be matched against post data. "
"For a complete reference of the available operations and variables, check "
"the help page."
msgstr ""
"Személyes tartalomszűrő szabályok hozzáadása és kezelése ezen a képernyőn. A"
" szabályoknak van nevük és egy tetszőleges kifejezésük, amely a bejegyzés "
"adataira lesz illesztve. Az elérhető műveletek és változók teljes "
"hivatkozásáért nézze meg a súgóoldalt."
#: advancedcontentfilter.php:229
msgid "Your rules"
msgstr "Az Ön szabályai"
#: advancedcontentfilter.php:230
msgid ""
"You have no rules yet! Start adding one by clicking on the button above next"
" to the title."
msgstr ""
"Még nincsenek szabályai! Kezdje meg egy szabály hozzáadását a cím mellett "
"lévő fenti gombra kattintva."
#: advancedcontentfilter.php:231
msgid "Disabled"
msgstr "Letiltva"
#: advancedcontentfilter.php:232
msgid "Enabled"
msgstr "Engedélyezve"
#: advancedcontentfilter.php:233
msgid "Disable this rule"
msgstr "A szabály letiltása"
#: advancedcontentfilter.php:234
msgid "Enable this rule"
msgstr "A szabály engedélyezése"
#: advancedcontentfilter.php:235
msgid "Edit this rule"
msgstr "A szabály szerkesztése"
#: advancedcontentfilter.php:236
msgid "Edit the rule"
msgstr "A szabály szerkesztése"
#: advancedcontentfilter.php:237
msgid "Save this rule"
msgstr "A szabály mentése"
#: advancedcontentfilter.php:238
msgid "Delete this rule"
msgstr "A szabály törlése"
#: advancedcontentfilter.php:239
msgid "Rule"
msgstr "Szabály"
#: advancedcontentfilter.php:240
msgid "Close"
msgstr "Bezárás"
#: advancedcontentfilter.php:241
msgid "Add new rule"
msgstr "Új szabály hozzáadása"
#: advancedcontentfilter.php:242
msgid "Rule Name"
msgstr "Szabály neve"
#: advancedcontentfilter.php:243
msgid "Rule Expression"
msgstr "Szabály kifejezése"
#: advancedcontentfilter.php:244
msgid "Cancel"
msgstr "Mégse"
#: advancedcontentfilter.php:295
msgid "This addon requires this node having at least one post"
msgstr ""
"Ez a bővítmény megköveteli, hogy ennek a csomópontnak legalább egy "
"bejegyzése legyen"
#: advancedcontentfilter.php:325 advancedcontentfilter.php:336
#: advancedcontentfilter.php:347 advancedcontentfilter.php:383
#: advancedcontentfilter.php:414 advancedcontentfilter.php:437
msgid "You must be logged in to use this method"
msgstr "Bejelentkezve kell lennie a módszer használatához"
#: advancedcontentfilter.php:351 advancedcontentfilter.php:387
#: advancedcontentfilter.php:418
msgid "Invalid form security token, please refresh the page."
msgstr "Érvénytelen űrlap biztonsági token. Frissítse az oldalt."
#: advancedcontentfilter.php:363
msgid "The rule name and expression are required."
msgstr "A szabály neve és kifejezése kötelező."
#: advancedcontentfilter.php:377
msgid "Rule successfully added"
msgstr "A szabály sikeresen hozzáadva"
#: advancedcontentfilter.php:391 advancedcontentfilter.php:422
msgid "Rule doesn't exist or doesn't belong to you."
msgstr "A szabály nem létezik vagy nem Önhöz tatozik."
#: advancedcontentfilter.php:408
msgid "Rule successfully updated"
msgstr "A szabály sikeresen frissítve"
#: advancedcontentfilter.php:431
msgid "Rule successfully deleted"
msgstr "A szabály sikeresen törölve"
#: advancedcontentfilter.php:441
msgid "Missing argument: guid."
msgstr "Hiányzó argumentum: guid."
#: advancedcontentfilter.php:449
#, php-format
msgid "Unknown post with guid: %s"
msgstr "Ismeretlen bejegyzés a következő guid azonosítóval: %s"
#: src/middlewares.php:49
msgid "Method not found"
msgstr "A módszer nem található"

View file

@ -1,40 +0,0 @@
<?php
if(! function_exists("string_plural_select_hu")) {
function string_plural_select_hu($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Filtered by rule: %s'] = 'Szűrve a szabály alapján: %s';
$a->strings['Advanced Content Filter'] = 'Speciális tartalomszűrő';
$a->strings['Back to Addon Settings'] = 'Vissza a bővítménybeállításokhoz';
$a->strings['Add a Rule'] = 'Szabály hozzáadása';
$a->strings['Help'] = 'Súgó';
$a->strings['Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the help page.'] = 'Személyes tartalomszűrő szabályok hozzáadása és kezelése ezen a képernyőn. A szabályoknak van nevük és egy tetszőleges kifejezésük, amely a bejegyzés adataira lesz illesztve. Az elérhető műveletek és változók teljes hivatkozásáért nézze meg a súgóoldalt.';
$a->strings['Your rules'] = 'Az Ön szabályai';
$a->strings['You have no rules yet! Start adding one by clicking on the button above next to the title.'] = 'Még nincsenek szabályai! Kezdje meg egy szabály hozzáadását a cím mellett lévő fenti gombra kattintva.';
$a->strings['Disabled'] = 'Letiltva';
$a->strings['Enabled'] = 'Engedélyezve';
$a->strings['Disable this rule'] = 'A szabály letiltása';
$a->strings['Enable this rule'] = 'A szabály engedélyezése';
$a->strings['Edit this rule'] = 'A szabály szerkesztése';
$a->strings['Edit the rule'] = 'A szabály szerkesztése';
$a->strings['Save this rule'] = 'A szabály mentése';
$a->strings['Delete this rule'] = 'A szabály törlése';
$a->strings['Rule'] = 'Szabály';
$a->strings['Close'] = 'Bezárás';
$a->strings['Add new rule'] = 'Új szabály hozzáadása';
$a->strings['Rule Name'] = 'Szabály neve';
$a->strings['Rule Expression'] = 'Szabály kifejezése';
$a->strings['Cancel'] = 'Mégse';
$a->strings['This addon requires this node having at least one post'] = 'Ez a bővítmény megköveteli, hogy ennek a csomópontnak legalább egy bejegyzése legyen';
$a->strings['You must be logged in to use this method'] = 'Bejelentkezve kell lennie a módszer használatához';
$a->strings['Invalid form security token, please refresh the page.'] = 'Érvénytelen űrlap biztonsági token. Frissítse az oldalt.';
$a->strings['The rule name and expression are required.'] = 'A szabály neve és kifejezése kötelező.';
$a->strings['Rule successfully added'] = 'A szabály sikeresen hozzáadva';
$a->strings['Rule doesn\'t exist or doesn\'t belong to you.'] = 'A szabály nem létezik vagy nem Önhöz tatozik.';
$a->strings['Rule successfully updated'] = 'A szabály sikeresen frissítve';
$a->strings['Rule successfully deleted'] = 'A szabály sikeresen törölve';
$a->strings['Missing argument: guid.'] = 'Hiányzó argumentum: guid.';
$a->strings['Unknown post with guid: %s'] = 'Ismeretlen bejegyzés a következő guid azonosítóval: %s';
$a->strings['Method not found'] = 'A módszer nem található';

View file

@ -3,63 +3,60 @@
# This file is distributed under the same license as the Friendica advancedcontentfilter addon package. # This file is distributed under the same license as the Friendica advancedcontentfilter addon package.
# #
# #
# Translators:
# fabrixxm <fabrix.xm@gmail.com>, 2018
# Sylke Vicious <silkevicious@gmail.com>, 2023
#
#, fuzzy #, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-05-11 08:54-0400\n" "POT-Creation-Date: 2018-04-17 04:04+0200\n"
"PO-Revision-Date: 2018-05-24 06:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Sylke Vicious <silkevicious@gmail.com>, 2023\n" "Last-Translator: fabrixxm <fabrix.xm@gmail.com>, 2018\n"
"Language-Team: Italian (https://app.transifex.com/Friendica/teams/12172/it/)\n" "Language-Team: Italian (https://www.transifex.com/Friendica/teams/12172/it/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Language: it\n" "Language: it\n"
"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: advancedcontentfilter.php:154 #: advancedcontentfilter.php:134
#, php-format #, php-format
msgid "Filtered by rule: %s" msgid "Filtered by rule: %s"
msgstr "Filtrato dalla regola: %s" msgstr "Filtrato dalla regola: %s"
#: advancedcontentfilter.php:170 advancedcontentfilter.php:225 #: advancedcontentfilter.php:147 advancedcontentfilter.php:204
msgid "Advanced Content Filter" msgid "Advanced Content Filter"
msgstr "Filtro Avanzato Contenuti" msgstr "Filtro Avanzato Contenuti"
#: advancedcontentfilter.php:224 #: advancedcontentfilter.php:203
msgid "Back to Addon Settings" msgid "Back to Addon Settings"
msgstr "Torna alle impostazioni del componente aggiuntivo" msgstr "Torna alle impostazioni del componente aggiuntivo"
#: advancedcontentfilter.php:226 #: advancedcontentfilter.php:205
msgid "Add a Rule" msgid "Add a Rule"
msgstr "Aggiungi una regola" msgstr "Aggiungi una regola"
#: advancedcontentfilter.php:227 #: advancedcontentfilter.php:206
msgid "Help" msgid "Help"
msgstr "Aiuto" msgstr "Aiuto"
#: advancedcontentfilter.php:228 #: advancedcontentfilter.php:207
msgid "" msgid ""
"Add and manage your personal content filter rules in this screen. Rules have" "Add and manage your personal content filter rules in this screen. Rules have"
" a name and an arbitrary expression that will be matched against post data. " " a name and an arbitrary expression that will be matched against post data. "
"For a complete reference of the available operations and variables, check " "For a complete reference of the available operations and variables, check "
"the help page." "the <a href=\"advancedcontentfilter/help\">help page</a>."
msgstr "" msgstr ""
"Aggiungi e gestisci le tue regole personali di filtro contenuti in questa " "Aggiungi e gestisci le tue regole personali di filtro contenuti in questa "
"schermata. Le regole hanno un nome e un'espressione arbitraria che sarà " "schermata. Le regole hanno un nome e un'espressione arbitraria che sarà "
"confrontata con i dati del messaggio. Per un elenco completo delle " "confrontata con i dati del messaggio. Per un elenco completo delle "
"operazioni e variabili disponibili, controlla la pagina di aiuto." "operazioni disponibili, controlla la <a "
"href=\"advancedcontentfilter/help\">pagina di aiuto</a>."
#: advancedcontentfilter.php:229 #: advancedcontentfilter.php:208
msgid "Your rules" msgid "Your rules"
msgstr "Le tue regole" msgstr "Le tue regole"
#: advancedcontentfilter.php:230 #: advancedcontentfilter.php:209
msgid "" msgid ""
"You have no rules yet! Start adding one by clicking on the button above next" "You have no rules yet! Start adding one by clicking on the button above next"
" to the title." " to the title."
@ -67,106 +64,110 @@ msgstr ""
"Non hai ancora nessuna regola! Aggiungine una cliccando sul bottone qui " "Non hai ancora nessuna regola! Aggiungine una cliccando sul bottone qui "
"sopra a fianco al titolo." "sopra a fianco al titolo."
#: advancedcontentfilter.php:231 #: advancedcontentfilter.php:210
msgid "Disabled" msgid "Disabled"
msgstr "Disabilitato" msgstr "Disabilitato"
#: advancedcontentfilter.php:232 #: advancedcontentfilter.php:211
msgid "Enabled" msgid "Enabled"
msgstr "Abilitato" msgstr "Abilitato"
#: advancedcontentfilter.php:233 #: advancedcontentfilter.php:212
msgid "Disable this rule" msgid "Disable this rule"
msgstr "Diabilita questa regola" msgstr "Diabilita questa regola"
#: advancedcontentfilter.php:234 #: advancedcontentfilter.php:213
msgid "Enable this rule" msgid "Enable this rule"
msgstr "Abilita questa regola" msgstr "Abilita questa regola"
#: advancedcontentfilter.php:235 #: advancedcontentfilter.php:214
msgid "Edit this rule" msgid "Edit this rule"
msgstr "Modifica questa regola" msgstr "Modifica questa regola"
#: advancedcontentfilter.php:236 #: advancedcontentfilter.php:215
msgid "Edit the rule" msgid "Edit the rule"
msgstr "Modifica la regola" msgstr "Modifica la regola"
#: advancedcontentfilter.php:237 #: advancedcontentfilter.php:216
msgid "Save this rule" msgid "Save this rule"
msgstr "Salva questa regola" msgstr "Salva questa regola"
#: advancedcontentfilter.php:238 #: advancedcontentfilter.php:217
msgid "Delete this rule" msgid "Delete this rule"
msgstr "Elimina questa regola" msgstr "Elimina questa regola"
#: advancedcontentfilter.php:239 #: advancedcontentfilter.php:218
msgid "Rule" msgid "Rule"
msgstr "Regola" msgstr "Regola"
#: advancedcontentfilter.php:240 #: advancedcontentfilter.php:219
msgid "Close" msgid "Close"
msgstr "Chiudi" msgstr "Chiudi"
#: advancedcontentfilter.php:241 #: advancedcontentfilter.php:220
msgid "Add new rule" msgid "Add new rule"
msgstr "Aggiungi nuova regola" msgstr "Aggiungi nuova regola"
#: advancedcontentfilter.php:242 #: advancedcontentfilter.php:221
msgid "Rule Name" msgid "Rule Name"
msgstr "Nome Regola" msgstr "Nome Regola"
#: advancedcontentfilter.php:243 #: advancedcontentfilter.php:222
msgid "Rule Expression" msgid "Rule Expression"
msgstr "Espressione Regola" msgstr "Espressione Regola"
#: advancedcontentfilter.php:244 #: advancedcontentfilter.php:223
msgid ""
"<p>Examples:</p><ul><li><pre>author_link == "
"'https://friendica.mrpetovan.com/profile/hypolite'</pre></li><li>tags</li></ul>"
msgstr ""
"<p>Esempi:</p><ul><li><pre>author_link == "
"'https://friendica.mrpetovan.com/profile/hypolite'</pre></li><li>tags</li></ul>"
#: advancedcontentfilter.php:224
msgid "Cancel" msgid "Cancel"
msgstr "Annulla" msgstr "Annulla"
#: advancedcontentfilter.php:295 #: advancedcontentfilter.php:290 advancedcontentfilter.php:301
msgid "This addon requires this node having at least one post" #: advancedcontentfilter.php:312 advancedcontentfilter.php:346
msgstr "Questo addon richiede che questo nodo abbia almeno un messaggio" #: advancedcontentfilter.php:375 advancedcontentfilter.php:396
#: advancedcontentfilter.php:325 advancedcontentfilter.php:336
#: advancedcontentfilter.php:347 advancedcontentfilter.php:383
#: advancedcontentfilter.php:414 advancedcontentfilter.php:437
msgid "You must be logged in to use this method" msgid "You must be logged in to use this method"
msgstr "Devi essere autenticato per usare questo metodo" msgstr "Devi essere autenticato per usare questo metodo"
#: advancedcontentfilter.php:351 advancedcontentfilter.php:387 #: advancedcontentfilter.php:316 advancedcontentfilter.php:350
#: advancedcontentfilter.php:418 #: advancedcontentfilter.php:379
msgid "Invalid form security token, please refresh the page." msgid "Invalid form security token, please refresh the page."
msgstr "Token di sicurezza invalido, aggiorna la pagina." msgstr "Token di sicurezza invalido, aggiorna la pagina."
#: advancedcontentfilter.php:363 #: advancedcontentfilter.php:328
msgid "The rule name and expression are required." msgid "The rule name and expression are required."
msgstr "Il nome e l'espressione della regola sono richiesti." msgstr "Il nome e l'espressione della regola sono richiesti."
#: advancedcontentfilter.php:377 #: advancedcontentfilter.php:340
msgid "Rule successfully added" msgid "Rule successfully added"
msgstr "Regola aggiunta con successo" msgstr "Regola aggiunta con successo"
#: advancedcontentfilter.php:391 advancedcontentfilter.php:422 #: advancedcontentfilter.php:354 advancedcontentfilter.php:383
msgid "Rule doesn't exist or doesn't belong to you." msgid "Rule doesn't exist or doesn't belong to you."
msgstr "La regola non esiste o non ti appartiene." msgstr "La regola non esiste o non ti appartiene."
#: advancedcontentfilter.php:408 #: advancedcontentfilter.php:369
msgid "Rule successfully updated" msgid "Rule successfully updated"
msgstr "Regola aggiornata con successo" msgstr "Regola aggiornata con successo"
#: advancedcontentfilter.php:431 #: advancedcontentfilter.php:390
msgid "Rule successfully deleted" msgid "Rule successfully deleted"
msgstr "Regola eliminata con successo" msgstr "Regola eliminata con successo"
#: advancedcontentfilter.php:441 #: advancedcontentfilter.php:400
msgid "Missing argument: guid." msgid "Missing argument: guid."
msgstr "Argomento mancante: guid." msgstr "Argomento mancante: guid."
#: advancedcontentfilter.php:449 #: advancedcontentfilter.php:406
#, php-format #, php-format
msgid "Unknown post with guid: %s" msgid "Unknown post with guid: %s"
msgstr "Messaggio con guid %s sconosciuto" msgstr "Messaggio con guid %s sconosciuto"
#: src/middlewares.php:49 #: src/middlewares.php:28
msgid "Method not found" msgid "Method not found"
msgstr "Metodo non trovato" msgstr "Metodo non trovato"

View file

@ -3,38 +3,39 @@
if(! function_exists("string_plural_select_it")) { if(! function_exists("string_plural_select_it")) {
function string_plural_select_it($n){ function string_plural_select_it($n){
$n = intval($n); $n = intval($n);
if ($n == 1) { return 0; } else if ($n != 0 && $n % 1000000 == 0) { return 1; } else { return 2; } return ($n != 1);;
}} }}
$a->strings['Filtered by rule: %s'] = 'Filtrato dalla regola: %s'; ;
$a->strings['Advanced Content Filter'] = 'Filtro Avanzato Contenuti'; $a->strings["Filtered by rule: %s"] = "Filtrato dalla regola: %s";
$a->strings['Back to Addon Settings'] = 'Torna alle impostazioni del componente aggiuntivo'; $a->strings["Advanced Content Filter"] = "Filtro Avanzato Contenuti";
$a->strings['Add a Rule'] = 'Aggiungi una regola'; $a->strings["Back to Addon Settings"] = "Torna alle impostazioni del componente aggiuntivo";
$a->strings['Help'] = 'Aiuto'; $a->strings["Add a Rule"] = "Aggiungi una regola";
$a->strings['Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the help page.'] = 'Aggiungi e gestisci le tue regole personali di filtro contenuti in questa schermata. Le regole hanno un nome e un\'espressione arbitraria che sarà confrontata con i dati del messaggio. Per un elenco completo delle operazioni e variabili disponibili, controlla la pagina di aiuto.'; $a->strings["Help"] = "Aiuto";
$a->strings['Your rules'] = 'Le tue regole'; $a->strings["Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the <a href=\"advancedcontentfilter/help\">help page</a>."] = "Aggiungi e gestisci le tue regole personali di filtro contenuti in questa schermata. Le regole hanno un nome e un'espressione arbitraria che sarà confrontata con i dati del messaggio. Per un elenco completo delle operazioni disponibili, controlla la <a href=\"advancedcontentfilter/help\">pagina di aiuto</a>.";
$a->strings['You have no rules yet! Start adding one by clicking on the button above next to the title.'] = 'Non hai ancora nessuna regola! Aggiungine una cliccando sul bottone qui sopra a fianco al titolo.'; $a->strings["Your rules"] = "Le tue regole";
$a->strings['Disabled'] = 'Disabilitato'; $a->strings["You have no rules yet! Start adding one by clicking on the button above next to the title."] = "Non hai ancora nessuna regola! Aggiungine una cliccando sul bottone qui sopra a fianco al titolo.";
$a->strings['Enabled'] = 'Abilitato'; $a->strings["Disabled"] = "Disabilitato";
$a->strings['Disable this rule'] = 'Diabilita questa regola'; $a->strings["Enabled"] = "Abilitato";
$a->strings['Enable this rule'] = 'Abilita questa regola'; $a->strings["Disable this rule"] = "Diabilita questa regola";
$a->strings['Edit this rule'] = 'Modifica questa regola'; $a->strings["Enable this rule"] = "Abilita questa regola";
$a->strings['Edit the rule'] = 'Modifica la regola'; $a->strings["Edit this rule"] = "Modifica questa regola";
$a->strings['Save this rule'] = 'Salva questa regola'; $a->strings["Edit the rule"] = "Modifica la regola";
$a->strings['Delete this rule'] = 'Elimina questa regola'; $a->strings["Save this rule"] = "Salva questa regola";
$a->strings['Rule'] = 'Regola'; $a->strings["Delete this rule"] = "Elimina questa regola";
$a->strings['Close'] = 'Chiudi'; $a->strings["Rule"] = "Regola";
$a->strings['Add new rule'] = 'Aggiungi nuova regola'; $a->strings["Close"] = "Chiudi";
$a->strings['Rule Name'] = 'Nome Regola'; $a->strings["Add new rule"] = "Aggiungi nuova regola";
$a->strings['Rule Expression'] = 'Espressione Regola'; $a->strings["Rule Name"] = "Nome Regola";
$a->strings['Cancel'] = 'Annulla'; $a->strings["Rule Expression"] = "Espressione Regola";
$a->strings['This addon requires this node having at least one post'] = 'Questo addon richiede che questo nodo abbia almeno un messaggio'; $a->strings["<p>Examples:</p><ul><li><pre>author_link == 'https://friendica.mrpetovan.com/profile/hypolite'</pre></li><li>tags</li></ul>"] = "<p>Esempi:</p><ul><li><pre>author_link == 'https://friendica.mrpetovan.com/profile/hypolite'</pre></li><li>tags</li></ul>";
$a->strings['You must be logged in to use this method'] = 'Devi essere autenticato per usare questo metodo'; $a->strings["Cancel"] = "Annulla";
$a->strings['Invalid form security token, please refresh the page.'] = 'Token di sicurezza invalido, aggiorna la pagina.'; $a->strings["You must be logged in to use this method"] = "Devi essere autenticato per usare questo metodo";
$a->strings['The rule name and expression are required.'] = 'Il nome e l\'espressione della regola sono richiesti.'; $a->strings["Invalid form security token, please refresh the page."] = "Token di sicurezza invalido, aggiorna la pagina.";
$a->strings['Rule successfully added'] = 'Regola aggiunta con successo'; $a->strings["The rule name and expression are required."] = "Il nome e l'espressione della regola sono richiesti.";
$a->strings['Rule doesn\'t exist or doesn\'t belong to you.'] = 'La regola non esiste o non ti appartiene.'; $a->strings["Rule successfully added"] = "Regola aggiunta con successo";
$a->strings['Rule successfully updated'] = 'Regola aggiornata con successo'; $a->strings["Rule doesn't exist or doesn't belong to you."] = "La regola non esiste o non ti appartiene.";
$a->strings['Rule successfully deleted'] = 'Regola eliminata con successo'; $a->strings["Rule successfully updated"] = "Regola aggiornata con successo";
$a->strings['Missing argument: guid.'] = 'Argomento mancante: guid.'; $a->strings["Rule successfully deleted"] = "Regola eliminata con successo";
$a->strings['Unknown post with guid: %s'] = 'Messaggio con guid %s sconosciuto'; $a->strings["Missing argument: guid."] = "Argomento mancante: guid.";
$a->strings['Method not found'] = 'Metodo non trovato'; $a->strings["Unknown post with guid: %s"] = "Messaggio con guid %s sconosciuto";
$a->strings["Method not found"] = "Metodo non trovato";

View file

@ -3,38 +3,39 @@
if(! function_exists("string_plural_select_nl")) { if(! function_exists("string_plural_select_nl")) {
function string_plural_select_nl($n){ function string_plural_select_nl($n){
$n = intval($n); $n = intval($n);
return intval($n != 1); return ($n != 1);;
}} }}
$a->strings['Filtered by rule: %s'] = 'Gefilterd volgens regel: %s'; ;
$a->strings['Advanced Content Filter'] = 'Geavanceerd filter voor berichtsinhoud'; $a->strings["Filtered by rule: %s"] = "Gefilterd volgens regel: %s";
$a->strings['Back to Addon Settings'] = 'Terug naar Addon instellingen'; $a->strings["Advanced Content Filter"] = "Geavanceerd filter voor berichtsinhoud";
$a->strings['Add a Rule'] = 'Filterregel toevoegen'; $a->strings["Back to Addon Settings"] = "Terug naar Addon instellingen";
$a->strings['Help'] = 'Help'; $a->strings["Add a Rule"] = "Filterregel toevoegen";
$a->strings['Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the <a href="advancedcontentfilter/help">help page</a>.'] = 'Beheer de filterregels van je persoonlijke filter voor berichtsinhoud in dit scherm. Regels hebben een naam en bewoording welke we automatisch controleren door te vergelijken met de inhoud van elk bericht. Voor een compleet naslagwerk van de beschikbare bewerkingen en variabelen, zie de <a href="advancedcontentfilter/help">help pagina</a>.'; $a->strings["Help"] = "Help";
$a->strings['Your rules'] = 'Jouw regels'; $a->strings["Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the <a href=\"advancedcontentfilter/help\">help page</a>."] = "Beheer de filterregels van je persoonlijke filter voor berichtsinhoud in dit scherm. Regels hebben een naam en bewoording welke we automatisch controleren door te vergelijken met de inhoud van elk bericht. Voor een compleet naslagwerk van de beschikbare bewerkingen en variabelen, zie de <a href=\"advancedcontentfilter/help\">help pagina</a>.";
$a->strings['You have no rules yet! Start adding one by clicking on the button above next to the title.'] = 'Je hebt nog geen regels! Klik op de knop bovenin naast de titel om een regel toe te voegen.'; $a->strings["Your rules"] = "Jouw regels";
$a->strings['Disabled'] = 'Uitgeschakeld'; $a->strings["You have no rules yet! Start adding one by clicking on the button above next to the title."] = "Je hebt nog geen regels! Klik op de knop bovenin naast de titel om een regel toe te voegen.";
$a->strings['Enabled'] = 'Geactiveerd'; $a->strings["Disabled"] = "Uitgeschakeld";
$a->strings['Disable this rule'] = 'Deze regel uitschakelen'; $a->strings["Enabled"] = "Geactiveerd";
$a->strings['Enable this rule'] = 'Deze regel inschakelen'; $a->strings["Disable this rule"] = "Deze regel uitschakelen";
$a->strings['Edit this rule'] = 'Regel bewerken'; $a->strings["Enable this rule"] = "Deze regel inschakelen";
$a->strings['Edit the rule'] = 'Regel bewerken'; $a->strings["Edit this rule"] = "Regel bewerken";
$a->strings['Save this rule'] = 'Deze regel opslaan'; $a->strings["Edit the rule"] = "Regel bewerken";
$a->strings['Delete this rule'] = 'Deze regel verwijderen'; $a->strings["Save this rule"] = "Deze regel opslaan";
$a->strings['Rule'] = 'Regel'; $a->strings["Delete this rule"] = "Deze regel verwijderen";
$a->strings['Close'] = 'Sluiten'; $a->strings["Rule"] = "Regel";
$a->strings['Add new rule'] = 'Voeg nieuwe regel toe'; $a->strings["Close"] = "Sluiten";
$a->strings['Rule Name'] = 'Regel naam'; $a->strings["Add new rule"] = "Voeg nieuwe regel toe";
$a->strings['Rule Expression'] = 'Regel bewoording'; $a->strings["Rule Name"] = "Regel naam";
$a->strings['<p>Examples:</p><ul><li><pre>author_link == \'https://friendica.mrpetovan.com/profile/hypolite\'</pre></li><li>tags</li></ul>'] = '<p>Voorbeelden:</p><ul><li><pre>author_link == \'https://friendica.mrpetovan.com/profile/hypolite\'</pre></li><li>label</li></ul>'; $a->strings["Rule Expression"] = "Regel bewoording";
$a->strings['Cancel'] = 'Annuleren'; $a->strings["<p>Examples:</p><ul><li><pre>author_link == 'https://friendica.mrpetovan.com/profile/hypolite'</pre></li><li>tags</li></ul>"] = "<p>Voorbeelden:</p><ul><li><pre>author_link == 'https://friendica.mrpetovan.com/profile/hypolite'</pre></li><li>label</li></ul>";
$a->strings['You must be logged in to use this method'] = 'Je moet ingelogd zijn om deze methode te gebruiken'; $a->strings["Cancel"] = "Annuleren";
$a->strings['Invalid form security token, please refresh the page.'] = 'Ongeldige formulier beveiligings token, vernieuw de pagina a.u.b.'; $a->strings["You must be logged in to use this method"] = "Je moet ingelogd zijn om deze methode te gebruiken";
$a->strings['The rule name and expression are required.'] = 'De regelnaam en bewoording zijn vereist.'; $a->strings["Invalid form security token, please refresh the page."] = "Ongeldige formulier beveiligings token, vernieuw de pagina a.u.b.";
$a->strings['Rule successfully added'] = 'Regel succesvol toegevoegd'; $a->strings["The rule name and expression are required."] = "De regelnaam en bewoording zijn vereist.";
$a->strings['Rule doesn\'t exist or doesn\'t belong to you.'] = 'Deze regel bestaat niet, of is niet van jou.'; $a->strings["Rule successfully added"] = "Regel succesvol toegevoegd";
$a->strings['Rule successfully updated'] = 'Regel succesvol opgeslagen'; $a->strings["Rule doesn't exist or doesn't belong to you."] = "Deze regel bestaat niet, of is niet van jou.";
$a->strings['Rule successfully deleted'] = 'Regel succesvol verwijderd'; $a->strings["Rule successfully updated"] = "Regel succesvol opgeslagen";
$a->strings['Missing argument: guid.'] = 'Parameter guid niet aanwezig'; $a->strings["Rule successfully deleted"] = "Regel succesvol verwijderd";
$a->strings['Unknown post with guid: %s'] = 'Onbekend bericht met guid: %s'; $a->strings["Missing argument: guid."] = "Parameter guid niet aanwezig";
$a->strings['Method not found'] = 'Methode niet gevonden'; $a->strings["Unknown post with guid: %s"] = "Onbekend bericht met guid: %s";
$a->strings["Method not found"] = "Methode niet gevonden";

View file

@ -3,19 +3,14 @@
# This file is distributed under the same license as the Friendica advancedcontentfilter addon package. # This file is distributed under the same license as the Friendica advancedcontentfilter addon package.
# #
# #
# Translators:
# Waldemar Stoczkowski, 2018
# Joe Doe, 2021
# Piotr Strębski <strebski@gmail.com>, 2022
#
#, fuzzy #, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-05-11 08:54-0400\n" "POT-Creation-Date: 2018-04-17 04:04+0200\n"
"PO-Revision-Date: 2018-05-24 06:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Piotr Strębski <strebski@gmail.com>, 2022\n" "Last-Translator: Waldemar Stoczkowski <waldemar.stoczkowski@gmail.com>, 2018\n"
"Language-Team: Polish (https://www.transifex.com/Friendica/teams/12172/pl/)\n" "Language-Team: Polish (https://www.transifex.com/Friendica/teams/12172/pl/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
@ -23,44 +18,44 @@ msgstr ""
"Language: pl\n" "Language: pl\n"
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" "Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
#: advancedcontentfilter.php:154 #: advancedcontentfilter.php:134
#, php-format #, php-format
msgid "Filtered by rule: %s" msgid "Filtered by rule: %s"
msgstr " Filtruj według reguły: %s" msgstr " Filtruj według reguły: %s"
#: advancedcontentfilter.php:170 advancedcontentfilter.php:225 #: advancedcontentfilter.php:147 advancedcontentfilter.php:204
msgid "Advanced Content Filter" msgid "Advanced Content Filter"
msgstr "Zaawansowany filtr zawartości" msgstr "Zaawansowany filtr zawartości"
#: advancedcontentfilter.php:224 #: advancedcontentfilter.php:203
msgid "Back to Addon Settings" msgid "Back to Addon Settings"
msgstr "Powrót do ustawień dodatków" msgstr "Powrót do ustawień dodatków"
#: advancedcontentfilter.php:226 #: advancedcontentfilter.php:205
msgid "Add a Rule" msgid "Add a Rule"
msgstr "Dodaj regułę" msgstr "Dodaj regułę"
#: advancedcontentfilter.php:227 #: advancedcontentfilter.php:206
msgid "Help" msgid "Help"
msgstr "Pomoc" msgstr "Pomoc"
#: advancedcontentfilter.php:228 #: advancedcontentfilter.php:207
msgid "" msgid ""
"Add and manage your personal content filter rules in this screen. Rules have" "Add and manage your personal content filter rules in this screen. Rules have"
" a name and an arbitrary expression that will be matched against post data. " " a name and an arbitrary expression that will be matched against post data. "
"For a complete reference of the available operations and variables, check " "For a complete reference of the available operations and variables, check "
"the help page." "the <a href=\"advancedcontentfilter/help\">help page</a>."
msgstr "" msgstr ""
"Na tym ekranie możesz zarządzać swoimi osobistymi regułami filtrowania " "Dodaj i zarządzaj regułami filtrowania treści osobistych na tym ekranie. "
"treści. Reguły składają się z nazwy oraz dowolnego wyrażenia, do którego " "Reguły mają nazwę i dowolne wyrażenie, które zostanie dopasowane do danych "
"przyrównywane będą posty. Aby uzyskć więcej informacji na temat dostępnych " "postów. Aby uzyskać pełne informacje o dostępnych operacjach i zmiennych, "
"opracji oraz zmiennych, zapoznaj się ze stronę pomocy." "sprawdź <a href=\"advancedcontentfilter/help\">stronę pomocy</a>."
#: advancedcontentfilter.php:229 #: advancedcontentfilter.php:208
msgid "Your rules" msgid "Your rules"
msgstr "Twoje zasady" msgstr "Twoje zasady"
#: advancedcontentfilter.php:230 #: advancedcontentfilter.php:209
msgid "" msgid ""
"You have no rules yet! Start adding one by clicking on the button above next" "You have no rules yet! Start adding one by clicking on the button above next"
" to the title." " to the title."
@ -68,106 +63,110 @@ msgstr ""
"Nie masz jeszcze żadnych zasad! Zacznij dodawać jedną, klikając przycisk " "Nie masz jeszcze żadnych zasad! Zacznij dodawać jedną, klikając przycisk "
"znajdujący się nad tytułem." "znajdujący się nad tytułem."
#: advancedcontentfilter.php:231 #: advancedcontentfilter.php:210
msgid "Disabled" msgid "Disabled"
msgstr "Wyłącz" msgstr "Wyłącz"
#: advancedcontentfilter.php:232 #: advancedcontentfilter.php:211
msgid "Enabled" msgid "Enabled"
msgstr "Włącz" msgstr "Włącz"
#: advancedcontentfilter.php:233 #: advancedcontentfilter.php:212
msgid "Disable this rule" msgid "Disable this rule"
msgstr "Wyłącz tę regułę" msgstr "Wyłącz tę regułę"
#: advancedcontentfilter.php:234 #: advancedcontentfilter.php:213
msgid "Enable this rule" msgid "Enable this rule"
msgstr "Włącz tę regułę" msgstr "Włącz tę regułę"
#: advancedcontentfilter.php:235 #: advancedcontentfilter.php:214
msgid "Edit this rule" msgid "Edit this rule"
msgstr "Edytuj tę regułę" msgstr "Edytuj tę regułę"
#: advancedcontentfilter.php:236 #: advancedcontentfilter.php:215
msgid "Edit the rule" msgid "Edit the rule"
msgstr "Edytuj regułę" msgstr "Edytuj regułę"
#: advancedcontentfilter.php:237 #: advancedcontentfilter.php:216
msgid "Save this rule" msgid "Save this rule"
msgstr "Zapisz tę regułę" msgstr "Zapisz tę regułę"
#: advancedcontentfilter.php:238 #: advancedcontentfilter.php:217
msgid "Delete this rule" msgid "Delete this rule"
msgstr "Usuń tę regułę" msgstr "Usuń tę regułę"
#: advancedcontentfilter.php:239 #: advancedcontentfilter.php:218
msgid "Rule" msgid "Rule"
msgstr "Reguła" msgstr "Reguła"
#: advancedcontentfilter.php:240 #: advancedcontentfilter.php:219
msgid "Close" msgid "Close"
msgstr "Zamknij" msgstr "Zamknij"
#: advancedcontentfilter.php:241 #: advancedcontentfilter.php:220
msgid "Add new rule" msgid "Add new rule"
msgstr "Dodaj nową regułę" msgstr "Dodaj nową regułę"
#: advancedcontentfilter.php:242 #: advancedcontentfilter.php:221
msgid "Rule Name" msgid "Rule Name"
msgstr "Nazwa reguły" msgstr "Nazwa reguły"
#: advancedcontentfilter.php:243 #: advancedcontentfilter.php:222
msgid "Rule Expression" msgid "Rule Expression"
msgstr "Wyrażanie reguły" msgstr "Wyrażanie reguły"
#: advancedcontentfilter.php:244 #: advancedcontentfilter.php:223
msgid ""
"<p>Examples:</p><ul><li><pre>author_link == "
"'https://friendica.mrpetovan.com/profile/hypolite'</pre></li><li>tags</li></ul>"
msgstr ""
"<p>przykład</p><ul><li><pre>author_link == "
"'https://friendica.mrpetovan.com/profile/hypolite'</pre></li><li>tagi</li></ul>"
#: advancedcontentfilter.php:224
msgid "Cancel" msgid "Cancel"
msgstr "Anuluj" msgstr "Anuluj"
#: advancedcontentfilter.php:295 #: advancedcontentfilter.php:290 advancedcontentfilter.php:301
msgid "This addon requires this node having at least one post" #: advancedcontentfilter.php:312 advancedcontentfilter.php:346
msgstr "Ten dodatek wymaga, aby ten węzeł miał co najmniej jeden wpis" #: advancedcontentfilter.php:375 advancedcontentfilter.php:396
#: advancedcontentfilter.php:325 advancedcontentfilter.php:336
#: advancedcontentfilter.php:347 advancedcontentfilter.php:383
#: advancedcontentfilter.php:414 advancedcontentfilter.php:437
msgid "You must be logged in to use this method" msgid "You must be logged in to use this method"
msgstr "Musisz być zalogowany, aby skorzystać z tej metody" msgstr "Musisz być zalogowany, aby skorzystać z tej metody"
#: advancedcontentfilter.php:351 advancedcontentfilter.php:387 #: advancedcontentfilter.php:316 advancedcontentfilter.php:350
#: advancedcontentfilter.php:418 #: advancedcontentfilter.php:379
msgid "Invalid form security token, please refresh the page." msgid "Invalid form security token, please refresh the page."
msgstr "Nieprawidłowy token zabezpieczający formularz, odśwież stronę." msgstr "Nieprawidłowy token zabezpieczający formularz, odśwież stronę."
#: advancedcontentfilter.php:363 #: advancedcontentfilter.php:328
msgid "The rule name and expression are required." msgid "The rule name and expression are required."
msgstr "Nazwa reguły i wyrażenie są wymagane." msgstr "Nazwa reguły i wyrażenie są wymagane."
#: advancedcontentfilter.php:377 #: advancedcontentfilter.php:340
msgid "Rule successfully added" msgid "Rule successfully added"
msgstr "Reguła została pomyślnie dodana" msgstr "Reguła została pomyślnie dodana"
#: advancedcontentfilter.php:391 advancedcontentfilter.php:422 #: advancedcontentfilter.php:354 advancedcontentfilter.php:383
msgid "Rule doesn't exist or doesn't belong to you." msgid "Rule doesn't exist or doesn't belong to you."
msgstr "Reguła nie istnieje lub nie należy do ciebie." msgstr "Reguła nie istnieje lub nie należy do ciebie."
#: advancedcontentfilter.php:408 #: advancedcontentfilter.php:369
msgid "Rule successfully updated" msgid "Rule successfully updated"
msgstr "Reguła została pomyślnie zaktualizowana" msgstr "Reguła została pomyślnie zaktualizowana"
#: advancedcontentfilter.php:431 #: advancedcontentfilter.php:390
msgid "Rule successfully deleted" msgid "Rule successfully deleted"
msgstr "Reguła została pomyślnie usunięta" msgstr "Reguła została pomyślnie usunięta"
#: advancedcontentfilter.php:441 #: advancedcontentfilter.php:400
msgid "Missing argument: guid." msgid "Missing argument: guid."
msgstr "Brakujący argument: guid." msgstr "Brakujący argument: guid."
#: advancedcontentfilter.php:449 #: advancedcontentfilter.php:406
#, php-format #, php-format
msgid "Unknown post with guid: %s" msgid "Unknown post with guid: %s"
msgstr "Nieznany post z guid:%s" msgstr "Nieznany post z guid:%s"
#: src/middlewares.php:49 #: src/middlewares.php:28
msgid "Method not found" msgid "Method not found"
msgstr "Nie znaleziono metody" msgstr "Nie znaleziono metody"

View file

@ -3,38 +3,39 @@
if(! function_exists("string_plural_select_pl")) { if(! function_exists("string_plural_select_pl")) {
function string_plural_select_pl($n){ function string_plural_select_pl($n){
$n = intval($n); $n = intval($n);
if ($n==1) { return 0; } else if (($n%10>=2 && $n%10<=4) && ($n%100<12 || $n%100>14)) { return 1; } else if ($n!=1 && ($n%10>=0 && $n%10<=1) || ($n%10>=5 && $n%10<=9) || ($n%100>=12 && $n%100<=14)) { return 2; } else { return 3; } return ($n==1 ? 0 : ($n%10>=2 && $n%10<=4) && ($n%100<12 || $n%100>14) ? 1 : $n!=1 && ($n%10>=0 && $n%10<=1) || ($n%10>=5 && $n%10<=9) || ($n%100>=12 && $n%100<=14) ? 2 : 3);;
}} }}
$a->strings['Filtered by rule: %s'] = ' Filtruj według reguły: %s'; ;
$a->strings['Advanced Content Filter'] = 'Zaawansowany filtr zawartości'; $a->strings["Filtered by rule: %s"] = " Filtruj według reguły: %s";
$a->strings['Back to Addon Settings'] = 'Powrót do ustawień dodatków'; $a->strings["Advanced Content Filter"] = "Zaawansowany filtr zawartości";
$a->strings['Add a Rule'] = 'Dodaj regułę'; $a->strings["Back to Addon Settings"] = "Powrót do ustawień dodatków";
$a->strings['Help'] = 'Pomoc'; $a->strings["Add a Rule"] = "Dodaj regułę";
$a->strings['Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the help page.'] = 'Na tym ekranie możesz zarządzać swoimi osobistymi regułami filtrowania treści. Reguły składają się z nazwy oraz dowolnego wyrażenia, do którego przyrównywane będą posty. Aby uzyskć więcej informacji na temat dostępnych opracji oraz zmiennych, zapoznaj się ze stronę pomocy.'; $a->strings["Help"] = "Pomoc";
$a->strings['Your rules'] = 'Twoje zasady'; $a->strings["Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the <a href=\"advancedcontentfilter/help\">help page</a>."] = "Dodaj i zarządzaj regułami filtrowania treści osobistych na tym ekranie. Reguły mają nazwę i dowolne wyrażenie, które zostanie dopasowane do danych postów. Aby uzyskać pełne informacje o dostępnych operacjach i zmiennych, sprawdź <a href=\"advancedcontentfilter/help\">stronę pomocy</a>.";
$a->strings['You have no rules yet! Start adding one by clicking on the button above next to the title.'] = 'Nie masz jeszcze żadnych zasad! Zacznij dodawać jedną, klikając przycisk znajdujący się nad tytułem.'; $a->strings["Your rules"] = "Twoje zasady";
$a->strings['Disabled'] = 'Wyłącz'; $a->strings["You have no rules yet! Start adding one by clicking on the button above next to the title."] = "Nie masz jeszcze żadnych zasad! Zacznij dodawać jedną, klikając przycisk znajdujący się nad tytułem.";
$a->strings['Enabled'] = 'Włącz'; $a->strings["Disabled"] = "Wyłącz";
$a->strings['Disable this rule'] = 'Wyłącz tę regułę'; $a->strings["Enabled"] = "Włącz";
$a->strings['Enable this rule'] = 'Włącz tę regułę'; $a->strings["Disable this rule"] = "Wyłącz tę regułę";
$a->strings['Edit this rule'] = 'Edytuj tę regułę'; $a->strings["Enable this rule"] = "Włącz tę regułę";
$a->strings['Edit the rule'] = 'Edytuj regułę'; $a->strings["Edit this rule"] = "Edytuj tę regułę";
$a->strings['Save this rule'] = 'Zapisz tę regułę'; $a->strings["Edit the rule"] = "Edytuj regułę";
$a->strings['Delete this rule'] = 'Usuń tę regułę'; $a->strings["Save this rule"] = "Zapisz tę regułę";
$a->strings['Rule'] = 'Reguła'; $a->strings["Delete this rule"] = "Usuń tę regułę";
$a->strings['Close'] = 'Zamknij'; $a->strings["Rule"] = "Reguła";
$a->strings['Add new rule'] = 'Dodaj nową regułę'; $a->strings["Close"] = "Zamknij";
$a->strings['Rule Name'] = 'Nazwa reguły'; $a->strings["Add new rule"] = "Dodaj nową regułę";
$a->strings['Rule Expression'] = 'Wyrażanie reguły'; $a->strings["Rule Name"] = "Nazwa reguły";
$a->strings['Cancel'] = 'Anuluj'; $a->strings["Rule Expression"] = "Wyrażanie reguły";
$a->strings['This addon requires this node having at least one post'] = 'Ten dodatek wymaga, aby ten węzeł miał co najmniej jeden wpis'; $a->strings["<p>Examples:</p><ul><li><pre>author_link == 'https://friendica.mrpetovan.com/profile/hypolite'</pre></li><li>tags</li></ul>"] = "<p>przykład</p><ul><li><pre>author_link == 'https://friendica.mrpetovan.com/profile/hypolite'</pre></li><li>tagi</li></ul>";
$a->strings['You must be logged in to use this method'] = 'Musisz być zalogowany, aby skorzystać z tej metody'; $a->strings["Cancel"] = "Anuluj";
$a->strings['Invalid form security token, please refresh the page.'] = 'Nieprawidłowy token zabezpieczający formularz, odśwież stronę.'; $a->strings["You must be logged in to use this method"] = "Musisz być zalogowany, aby skorzystać z tej metody";
$a->strings['The rule name and expression are required.'] = 'Nazwa reguły i wyrażenie są wymagane.'; $a->strings["Invalid form security token, please refresh the page."] = "Nieprawidłowy token zabezpieczający formularz, odśwież stronę.";
$a->strings['Rule successfully added'] = 'Reguła została pomyślnie dodana'; $a->strings["The rule name and expression are required."] = "Nazwa reguły i wyrażenie są wymagane.";
$a->strings['Rule doesn\'t exist or doesn\'t belong to you.'] = 'Reguła nie istnieje lub nie należy do ciebie.'; $a->strings["Rule successfully added"] = "Reguła została pomyślnie dodana";
$a->strings['Rule successfully updated'] = 'Reguła została pomyślnie zaktualizowana'; $a->strings["Rule doesn't exist or doesn't belong to you."] = "Reguła nie istnieje lub nie należy do ciebie.";
$a->strings['Rule successfully deleted'] = 'Reguła została pomyślnie usunięta'; $a->strings["Rule successfully updated"] = "Reguła została pomyślnie zaktualizowana";
$a->strings['Missing argument: guid.'] = 'Brakujący argument: guid.'; $a->strings["Rule successfully deleted"] = "Reguła została pomyślnie usunięta";
$a->strings['Unknown post with guid: %s'] = 'Nieznany post z guid:%s'; $a->strings["Missing argument: guid."] = "Brakujący argument: guid.";
$a->strings['Method not found'] = 'Nie znaleziono metody'; $a->strings["Unknown post with guid: %s"] = "Nieznany post z guid:%s";
$a->strings["Method not found"] = "Nie znaleziono metody";

View file

@ -6,16 +6,15 @@
# Translators: # Translators:
# Alexey Adamov <2077@tutanota.com>, 2019 # Alexey Adamov <2077@tutanota.com>, 2019
# Eugene Veresk <eugene.vereshchagin@gmail.com>, 2020 # Eugene Veresk <eugene.vereshchagin@gmail.com>, 2020
# Alexander An <ravnina@gmail.com>, 2022
# #
#, fuzzy #, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-05-11 08:54-0400\n" "POT-Creation-Date: 2018-04-17 04:04+0200\n"
"PO-Revision-Date: 2018-05-24 06:41+0000\n" "PO-Revision-Date: 2018-05-24 06:41+0000\n"
"Last-Translator: Alexander An <ravnina@gmail.com>, 2022\n" "Last-Translator: Eugene Veresk <eugene.vereshchagin@gmail.com>, 2020\n"
"Language-Team: Russian (https://www.transifex.com/Friendica/teams/12172/ru/)\n" "Language-Team: Russian (https://www.transifex.com/Friendica/teams/12172/ru/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
@ -23,44 +22,44 @@ msgstr ""
"Language: ru\n" "Language: ru\n"
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" "Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
#: advancedcontentfilter.php:154 #: advancedcontentfilter.php:134
#, php-format #, php-format
msgid "Filtered by rule: %s" msgid "Filtered by rule: %s"
msgstr "Отфильтровано по правилу: %s" msgstr "Отфильтровано по правилу: %s"
#: advancedcontentfilter.php:170 advancedcontentfilter.php:225 #: advancedcontentfilter.php:147 advancedcontentfilter.php:204
msgid "Advanced Content Filter" msgid "Advanced Content Filter"
msgstr "Расширенный фильтр содержимого" msgstr "Расширенный фильтр содержимого"
#: advancedcontentfilter.php:224 #: advancedcontentfilter.php:203
msgid "Back to Addon Settings" msgid "Back to Addon Settings"
msgstr "Вернуться к настройкам дополнений" msgstr "Вернуться к настройкам дополнений"
#: advancedcontentfilter.php:226 #: advancedcontentfilter.php:205
msgid "Add a Rule" msgid "Add a Rule"
msgstr "Добавить правило" msgstr "Добавить правило"
#: advancedcontentfilter.php:227 #: advancedcontentfilter.php:206
msgid "Help" msgid "Help"
msgstr "Помощь" msgstr "Помощь"
#: advancedcontentfilter.php:228 #: advancedcontentfilter.php:207
msgid "" msgid ""
"Add and manage your personal content filter rules in this screen. Rules have" "Add and manage your personal content filter rules in this screen. Rules have"
" a name and an arbitrary expression that will be matched against post data. " " a name and an arbitrary expression that will be matched against post data. "
"For a complete reference of the available operations and variables, check " "For a complete reference of the available operations and variables, check "
"the help page." "the <a href=\"advancedcontentfilter/help\">help page</a>."
msgstr "" msgstr ""
"Добавляйте и управляйте своими собственными фильтрами на этой странице. У " "Добавляйте и управляйте своими собственными фильтрами на этой странице. У "
"правил есть имя и произвольное выражение, которое будет сопоставляться с " "правил есть имя и произвольное выражение, которое будет сопоставляться с "
"данными поста. Для полной ссылки на доступные операции и переменные, " "данными поста. Для полной ссылки на доступные операции и переменные, "
"посмотрите страницу справки." "посмотрите <a href=\"advancedcontentfilter/help\">страницу справки</a>."
#: advancedcontentfilter.php:229 #: advancedcontentfilter.php:208
msgid "Your rules" msgid "Your rules"
msgstr "Ваши правила" msgstr "Ваши правила"
#: advancedcontentfilter.php:230 #: advancedcontentfilter.php:209
msgid "" msgid ""
"You have no rules yet! Start adding one by clicking on the button above next" "You have no rules yet! Start adding one by clicking on the button above next"
" to the title." " to the title."
@ -68,106 +67,110 @@ msgstr ""
"У Вас нет ни одного правила. Начните добавление первого с нажатия на кнопку " "У Вас нет ни одного правила. Начните добавление первого с нажатия на кнопку "
"выше, рядом с названием." "выше, рядом с названием."
#: advancedcontentfilter.php:231 #: advancedcontentfilter.php:210
msgid "Disabled" msgid "Disabled"
msgstr "Отключено" msgstr "Отключено"
#: advancedcontentfilter.php:232 #: advancedcontentfilter.php:211
msgid "Enabled" msgid "Enabled"
msgstr "Включено" msgstr "Включено"
#: advancedcontentfilter.php:233 #: advancedcontentfilter.php:212
msgid "Disable this rule" msgid "Disable this rule"
msgstr "Отключить это правило" msgstr "Отключить это правило"
#: advancedcontentfilter.php:234 #: advancedcontentfilter.php:213
msgid "Enable this rule" msgid "Enable this rule"
msgstr "Включить это правило" msgstr "Включить это правило"
#: advancedcontentfilter.php:235 #: advancedcontentfilter.php:214
msgid "Edit this rule" msgid "Edit this rule"
msgstr "Изменить это правило" msgstr "Изменить это правило"
#: advancedcontentfilter.php:236 #: advancedcontentfilter.php:215
msgid "Edit the rule" msgid "Edit the rule"
msgstr "Изменить правило" msgstr "Изменить правило"
#: advancedcontentfilter.php:237 #: advancedcontentfilter.php:216
msgid "Save this rule" msgid "Save this rule"
msgstr "Сохранить это правило" msgstr "Сохранить это правило"
#: advancedcontentfilter.php:238 #: advancedcontentfilter.php:217
msgid "Delete this rule" msgid "Delete this rule"
msgstr "Удалить это правило" msgstr "Удалить это правило"
#: advancedcontentfilter.php:239 #: advancedcontentfilter.php:218
msgid "Rule" msgid "Rule"
msgstr "Правило" msgstr "Правило"
#: advancedcontentfilter.php:240 #: advancedcontentfilter.php:219
msgid "Close" msgid "Close"
msgstr "Закрыть" msgstr "Закрыть"
#: advancedcontentfilter.php:241 #: advancedcontentfilter.php:220
msgid "Add new rule" msgid "Add new rule"
msgstr "Добавить новое правило" msgstr "Добавить новое правило"
#: advancedcontentfilter.php:242 #: advancedcontentfilter.php:221
msgid "Rule Name" msgid "Rule Name"
msgstr "Название правила" msgstr "Название правила"
#: advancedcontentfilter.php:243 #: advancedcontentfilter.php:222
msgid "Rule Expression" msgid "Rule Expression"
msgstr "Содержание правила" msgstr "Содержание правила"
#: advancedcontentfilter.php:244 #: advancedcontentfilter.php:223
msgid ""
"<p>Examples:</p><ul><li><pre>author_link == "
"'https://friendica.mrpetovan.com/profile/hypolite'</pre></li><li>tags</li></ul>"
msgstr ""
"<p>Примеры:</p><ul><li><pre>author_link == "
"'https://friendica.mrpetovan.com/profile/hypolite'</pre></li><li>tags</li></ul>"
#: advancedcontentfilter.php:224
msgid "Cancel" msgid "Cancel"
msgstr "Отмена" msgstr "Отмена"
#: advancedcontentfilter.php:295 #: advancedcontentfilter.php:290 advancedcontentfilter.php:301
msgid "This addon requires this node having at least one post" #: advancedcontentfilter.php:312 advancedcontentfilter.php:346
msgstr "Это дополнение требует наличия хотя бы одной записи на этом узле." #: advancedcontentfilter.php:375 advancedcontentfilter.php:396
#: advancedcontentfilter.php:325 advancedcontentfilter.php:336
#: advancedcontentfilter.php:347 advancedcontentfilter.php:383
#: advancedcontentfilter.php:414 advancedcontentfilter.php:437
msgid "You must be logged in to use this method" msgid "You must be logged in to use this method"
msgstr "Вы должны авторизоваться для использования этого метода" msgstr "Вы должны авторизоваться для использования этого метода"
#: advancedcontentfilter.php:351 advancedcontentfilter.php:387 #: advancedcontentfilter.php:316 advancedcontentfilter.php:350
#: advancedcontentfilter.php:418 #: advancedcontentfilter.php:379
msgid "Invalid form security token, please refresh the page." msgid "Invalid form security token, please refresh the page."
msgstr "Неверный ключ, пожалуйста, перезагрузите страницу" msgstr "Неверный ключ, пожалуйста, перезагрузите страницу"
#: advancedcontentfilter.php:363 #: advancedcontentfilter.php:328
msgid "The rule name and expression are required." msgid "The rule name and expression are required."
msgstr "Требуется ввести название и значение правила." msgstr "Требуется ввести название и значение правила."
#: advancedcontentfilter.php:377 #: advancedcontentfilter.php:340
msgid "Rule successfully added" msgid "Rule successfully added"
msgstr "Правило успешно добавлено" msgstr "Правило успешно добавлено"
#: advancedcontentfilter.php:391 advancedcontentfilter.php:422 #: advancedcontentfilter.php:354 advancedcontentfilter.php:383
msgid "Rule doesn't exist or doesn't belong to you." msgid "Rule doesn't exist or doesn't belong to you."
msgstr "Правило не найдено или доступ к нему закрыт" msgstr "Правило не найдено или доступ к нему закрыт"
#: advancedcontentfilter.php:408 #: advancedcontentfilter.php:369
msgid "Rule successfully updated" msgid "Rule successfully updated"
msgstr "Правило успешно обновлено" msgstr "Правило успешно обновлено"
#: advancedcontentfilter.php:431 #: advancedcontentfilter.php:390
msgid "Rule successfully deleted" msgid "Rule successfully deleted"
msgstr "Правило успешно удалено" msgstr "Правило успешно удалено"
#: advancedcontentfilter.php:441 #: advancedcontentfilter.php:400
msgid "Missing argument: guid." msgid "Missing argument: guid."
msgstr "Отсутствующий аргумент: guid." msgstr "Отсутствующий аргумент: guid."
#: advancedcontentfilter.php:449 #: advancedcontentfilter.php:406
#, php-format #, php-format
msgid "Unknown post with guid: %s" msgid "Unknown post with guid: %s"
msgstr "Неизвестный пост в ID: %s" msgstr "Неизвестный пост в ID: %s"
#: src/middlewares.php:49 #: src/middlewares.php:28
msgid "Method not found" msgid "Method not found"
msgstr "Метод не найден" msgstr "Метод не найден"

View file

@ -3,38 +3,39 @@
if(! function_exists("string_plural_select_ru")) { if(! function_exists("string_plural_select_ru")) {
function string_plural_select_ru($n){ function string_plural_select_ru($n){
$n = intval($n); $n = intval($n);
if ($n%10==1 && $n%100!=11) { return 0; } else if ($n%10>=2 && $n%10<=4 && ($n%100<12 || $n%100>14)) { return 1; } else if ($n%10==0 || ($n%10>=5 && $n%10<=9) || ($n%100>=11 && $n%100<=14)) { return 2; } else { return 3; } return ($n%10==1 && $n%100!=11 ? 0 : $n%10>=2 && $n%10<=4 && ($n%100<12 || $n%100>14) ? 1 : $n%10==0 || ($n%10>=5 && $n%10<=9) || ($n%100>=11 && $n%100<=14)? 2 : 3);;
}} }}
$a->strings['Filtered by rule: %s'] = 'Отфильтровано по правилу: %s'; ;
$a->strings['Advanced Content Filter'] = 'Расширенный фильтр содержимого'; $a->strings["Filtered by rule: %s"] = "Отфильтровано по правилу: %s";
$a->strings['Back to Addon Settings'] = 'Вернуться к настройкам дополнений'; $a->strings["Advanced Content Filter"] = "Расширенный фильтр содержимого";
$a->strings['Add a Rule'] = 'Добавить правило'; $a->strings["Back to Addon Settings"] = "Вернуться к настройкам дополнений";
$a->strings['Help'] = 'Помощь'; $a->strings["Add a Rule"] = "Добавить правило";
$a->strings['Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the help page.'] = 'Добавляйте и управляйте своими собственными фильтрами на этой странице. У правил есть имя и произвольное выражение, которое будет сопоставляться с данными поста. Для полной ссылки на доступные операции и переменные, посмотрите страницу справки.'; $a->strings["Help"] = "Помощь";
$a->strings['Your rules'] = 'Ваши правила'; $a->strings["Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the <a href=\"advancedcontentfilter/help\">help page</a>."] = "Добавляйте и управляйте своими собственными фильтрами на этой странице. У правил есть имя и произвольное выражение, которое будет сопоставляться с данными поста. Для полной ссылки на доступные операции и переменные, посмотрите <a href=\"advancedcontentfilter/help\">страницу справки</a>.";
$a->strings['You have no rules yet! Start adding one by clicking on the button above next to the title.'] = 'У Вас нет ни одного правила. Начните добавление первого с нажатия на кнопку выше, рядом с названием.'; $a->strings["Your rules"] = "Ваши правила";
$a->strings['Disabled'] = 'Отключено'; $a->strings["You have no rules yet! Start adding one by clicking on the button above next to the title."] = "У Вас нет ни одного правила. Начните добавление первого с нажатия на кнопку выше, рядом с названием.";
$a->strings['Enabled'] = 'Включено'; $a->strings["Disabled"] = "Отключено";
$a->strings['Disable this rule'] = 'Отключить это правило'; $a->strings["Enabled"] = "Включено";
$a->strings['Enable this rule'] = 'Включить это правило'; $a->strings["Disable this rule"] = "Отключить это правило";
$a->strings['Edit this rule'] = 'Изменить это правило'; $a->strings["Enable this rule"] = "Включить это правило";
$a->strings['Edit the rule'] = 'Изменить правило'; $a->strings["Edit this rule"] = "Изменить это правило";
$a->strings['Save this rule'] = 'Сохранить это правило'; $a->strings["Edit the rule"] = "Изменить правило";
$a->strings['Delete this rule'] = 'Удалить это правило'; $a->strings["Save this rule"] = "Сохранить это правило";
$a->strings['Rule'] = 'Правило'; $a->strings["Delete this rule"] = "Удалить это правило";
$a->strings['Close'] = 'Закрыть'; $a->strings["Rule"] = "Правило";
$a->strings['Add new rule'] = 'Добавить новое правило'; $a->strings["Close"] = "Закрыть";
$a->strings['Rule Name'] = 'Название правила'; $a->strings["Add new rule"] = "Добавить новое правило";
$a->strings['Rule Expression'] = 'Содержание правила'; $a->strings["Rule Name"] = "Название правила";
$a->strings['Cancel'] = 'Отмена'; $a->strings["Rule Expression"] = "Содержание правила";
$a->strings['This addon requires this node having at least one post'] = 'Это дополнение требует наличия хотя бы одной записи на этом узле.'; $a->strings["<p>Examples:</p><ul><li><pre>author_link == 'https://friendica.mrpetovan.com/profile/hypolite'</pre></li><li>tags</li></ul>"] = "<p>Примеры:</p><ul><li><pre>author_link == 'https://friendica.mrpetovan.com/profile/hypolite'</pre></li><li>tags</li></ul>";
$a->strings['You must be logged in to use this method'] = 'Вы должны авторизоваться для использования этого метода'; $a->strings["Cancel"] = "Отмена";
$a->strings['Invalid form security token, please refresh the page.'] = 'Неверный ключ, пожалуйста, перезагрузите страницу'; $a->strings["You must be logged in to use this method"] = "Вы должны авторизоваться для использования этого метода";
$a->strings['The rule name and expression are required.'] = 'Требуется ввести название и значение правила.'; $a->strings["Invalid form security token, please refresh the page."] = "Неверный ключ, пожалуйста, перезагрузите страницу";
$a->strings['Rule successfully added'] = 'Правило успешно добавлено'; $a->strings["The rule name and expression are required."] = "Требуется ввести название и значение правила.";
$a->strings['Rule doesn\'t exist or doesn\'t belong to you.'] = 'Правило не найдено или доступ к нему закрыт'; $a->strings["Rule successfully added"] = "Правило успешно добавлено";
$a->strings['Rule successfully updated'] = 'Правило успешно обновлено'; $a->strings["Rule doesn't exist or doesn't belong to you."] = "Правило не найдено или доступ к нему закрыт";
$a->strings['Rule successfully deleted'] = 'Правило успешно удалено'; $a->strings["Rule successfully updated"] = "Правило успешно обновлено";
$a->strings['Missing argument: guid.'] = 'Отсутствующий аргумент: guid.'; $a->strings["Rule successfully deleted"] = "Правило успешно удалено";
$a->strings['Unknown post with guid: %s'] = 'Неизвестный пост в ID: %s'; $a->strings["Missing argument: guid."] = "Отсутствующий аргумент: guid.";
$a->strings['Method not found'] = 'Метод не найден'; $a->strings["Unknown post with guid: %s"] = "Неизвестный пост в ID: %s";
$a->strings["Method not found"] = "Метод не найден";

View file

@ -5,16 +5,15 @@
# #
# Translators: # Translators:
# Bjoessi <torbjorn.andersson@syte.se>, 2019 # Bjoessi <torbjorn.andersson@syte.se>, 2019
# Viktor Nilsson, 2022
# #
#, fuzzy #, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-05-11 08:54-0400\n" "POT-Creation-Date: 2018-04-17 04:04+0200\n"
"PO-Revision-Date: 2018-05-24 06:41+0000\n" "PO-Revision-Date: 2018-05-24 06:41+0000\n"
"Last-Translator: Viktor Nilsson, 2022\n" "Last-Translator: Bjoessi <torbjorn.andersson@syte.se>, 2019\n"
"Language-Team: Swedish (https://www.transifex.com/Friendica/teams/12172/sv/)\n" "Language-Team: Swedish (https://www.transifex.com/Friendica/teams/12172/sv/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
@ -22,44 +21,44 @@ msgstr ""
"Language: sv\n" "Language: sv\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: advancedcontentfilter.php:154 #: advancedcontentfilter.php:134
#, php-format #, php-format
msgid "Filtered by rule: %s" msgid "Filtered by rule: %s"
msgstr "Filtrerat efter regel: %s" msgstr "Filtrerat efter regel: %s"
#: advancedcontentfilter.php:170 advancedcontentfilter.php:225 #: advancedcontentfilter.php:147 advancedcontentfilter.php:204
msgid "Advanced Content Filter" msgid "Advanced Content Filter"
msgstr "Avancerat innehållsfiter" msgstr "Avancerat innehållsfiter"
#: advancedcontentfilter.php:224 #: advancedcontentfilter.php:203
msgid "Back to Addon Settings" msgid "Back to Addon Settings"
msgstr "TIllbaka till Tilläggsinställningar" msgstr "TIllbaka till Tilläggsinställningar"
#: advancedcontentfilter.php:226 #: advancedcontentfilter.php:205
msgid "Add a Rule" msgid "Add a Rule"
msgstr "Lägg till en regel" msgstr "Lägg till en regel"
#: advancedcontentfilter.php:227 #: advancedcontentfilter.php:206
msgid "Help" msgid "Help"
msgstr "Hjälp" msgstr "Hjälp"
#: advancedcontentfilter.php:228 #: advancedcontentfilter.php:207
msgid "" msgid ""
"Add and manage your personal content filter rules in this screen. Rules have" "Add and manage your personal content filter rules in this screen. Rules have"
" a name and an arbitrary expression that will be matched against post data. " " a name and an arbitrary expression that will be matched against post data. "
"For a complete reference of the available operations and variables, check " "For a complete reference of the available operations and variables, check "
"the help page." "the <a href=\"advancedcontentfilter/help\">help page</a>."
msgstr "" msgstr ""
"Lägg till och hantera dina personliga regler för innehållsfilter i det här " "Lägg till och hantera dina personliga regler för innehållsfilter i det här "
"fönstret. Regler har ett namn och ett filteruttryck som jämförs mot " "fönstret. Regler har ett namn och ett valfritt uttryck och kommer jämföras "
"inläggets innehåll. Förteckning över alla operander och variabler finns att " "mot inläggets innehåll. Förteckning av alla operander och variabler finns "
"hitta på <a href=\"advancedcontentfilter/help\">hjälpsidan</a>." "att hitta på <a href=\"advancedcontentfilter/help\">hjälpsidan</a>."
#: advancedcontentfilter.php:229 #: advancedcontentfilter.php:208
msgid "Your rules" msgid "Your rules"
msgstr "Dina regler" msgstr "Dina regler"
#: advancedcontentfilter.php:230 #: advancedcontentfilter.php:209
msgid "" msgid ""
"You have no rules yet! Start adding one by clicking on the button above next" "You have no rules yet! Start adding one by clicking on the button above next"
" to the title." " to the title."
@ -67,106 +66,110 @@ msgstr ""
"Du har inga regler än! Lägg till regler genom att klicka på knappen ovanför," "Du har inga regler än! Lägg till regler genom att klicka på knappen ovanför,"
" bredvid överskriften." " bredvid överskriften."
#: advancedcontentfilter.php:231 #: advancedcontentfilter.php:210
msgid "Disabled" msgid "Disabled"
msgstr "Inaktiverad" msgstr "Inaktiverad"
#: advancedcontentfilter.php:232 #: advancedcontentfilter.php:211
msgid "Enabled" msgid "Enabled"
msgstr "Aktiverad" msgstr "Aktiverad"
#: advancedcontentfilter.php:233 #: advancedcontentfilter.php:212
msgid "Disable this rule" msgid "Disable this rule"
msgstr "Inaktivera den här regeln" msgstr "Inaktivera den här regeln"
#: advancedcontentfilter.php:234 #: advancedcontentfilter.php:213
msgid "Enable this rule" msgid "Enable this rule"
msgstr "Aktivera den här regeln" msgstr "Aktivera den här regeln"
#: advancedcontentfilter.php:235 #: advancedcontentfilter.php:214
msgid "Edit this rule" msgid "Edit this rule"
msgstr "Redigera den här regeln" msgstr "Redigera den här regeln"
#: advancedcontentfilter.php:236 #: advancedcontentfilter.php:215
msgid "Edit the rule" msgid "Edit the rule"
msgstr "Redigera den här regeln" msgstr "Redigera den här regeln"
#: advancedcontentfilter.php:237 #: advancedcontentfilter.php:216
msgid "Save this rule" msgid "Save this rule"
msgstr "Spara den här regeln" msgstr "Spara den här regeln"
#: advancedcontentfilter.php:238 #: advancedcontentfilter.php:217
msgid "Delete this rule" msgid "Delete this rule"
msgstr "Ta bort den här regeln" msgstr "Ta bort den här regeln"
#: advancedcontentfilter.php:239 #: advancedcontentfilter.php:218
msgid "Rule" msgid "Rule"
msgstr "Regel" msgstr "Regel"
#: advancedcontentfilter.php:240 #: advancedcontentfilter.php:219
msgid "Close" msgid "Close"
msgstr "Stäng" msgstr "Stäng"
#: advancedcontentfilter.php:241 #: advancedcontentfilter.php:220
msgid "Add new rule" msgid "Add new rule"
msgstr "Lägg till ny regel" msgstr "Lägg till ny regel"
#: advancedcontentfilter.php:242 #: advancedcontentfilter.php:221
msgid "Rule Name" msgid "Rule Name"
msgstr "Regelnamn" msgstr "Regelnamn"
#: advancedcontentfilter.php:243 #: advancedcontentfilter.php:222
msgid "Rule Expression" msgid "Rule Expression"
msgstr "Regeluttryck" msgstr "Regeluttryck"
#: advancedcontentfilter.php:244 #: advancedcontentfilter.php:223
msgid ""
"<p>Examples:</p><ul><li><pre>author_link == "
"'https://friendica.mrpetovan.com/profile/hypolite'</pre></li><li>tags</li></ul>"
msgstr ""
"<p>Exempel:</p><ul><li><pre>author_link == "
"'https://friendica.mrpetovan.com/profile/hypolite'</pre></li><li>taggar</li></ul>"
#: advancedcontentfilter.php:224
msgid "Cancel" msgid "Cancel"
msgstr "Avbryt" msgstr "Avbryt"
#: advancedcontentfilter.php:295 #: advancedcontentfilter.php:290 advancedcontentfilter.php:301
msgid "This addon requires this node having at least one post" #: advancedcontentfilter.php:312 advancedcontentfilter.php:346
msgstr "Detta tillägg kräver att denna nod har åtminstone ett inlägg" #: advancedcontentfilter.php:375 advancedcontentfilter.php:396
#: advancedcontentfilter.php:325 advancedcontentfilter.php:336
#: advancedcontentfilter.php:347 advancedcontentfilter.php:383
#: advancedcontentfilter.php:414 advancedcontentfilter.php:437
msgid "You must be logged in to use this method" msgid "You must be logged in to use this method"
msgstr "Du måste vara inloggad för att använda den här funktionen" msgstr "Du måste vara inloggad för att använda den här funktionen"
#: advancedcontentfilter.php:351 advancedcontentfilter.php:387 #: advancedcontentfilter.php:316 advancedcontentfilter.php:350
#: advancedcontentfilter.php:418 #: advancedcontentfilter.php:379
msgid "Invalid form security token, please refresh the page." msgid "Invalid form security token, please refresh the page."
msgstr "Felaktigt säkerhetsformulärstecken, vänligen uppdatera sidan." msgstr "Felaktigt säkerhetsformulärstecken, vänligen uppdatera sidan."
#: advancedcontentfilter.php:363 #: advancedcontentfilter.php:328
msgid "The rule name and expression are required." msgid "The rule name and expression are required."
msgstr "Regelns namn och uttryck krävs." msgstr "Regelns namn och uttryck krävs."
#: advancedcontentfilter.php:377 #: advancedcontentfilter.php:340
msgid "Rule successfully added" msgid "Rule successfully added"
msgstr "Regeln kunde läggas till" msgstr "Regeln kunde läggas till"
#: advancedcontentfilter.php:391 advancedcontentfilter.php:422 #: advancedcontentfilter.php:354 advancedcontentfilter.php:383
msgid "Rule doesn't exist or doesn't belong to you." msgid "Rule doesn't exist or doesn't belong to you."
msgstr "Regeln finns inte eller tillhör inte dig." msgstr "Regeln finns inte eller tillhör inte dig."
#: advancedcontentfilter.php:408 #: advancedcontentfilter.php:369
msgid "Rule successfully updated" msgid "Rule successfully updated"
msgstr "Uppdatering av regel lyckades" msgstr "Uppdatering av regel lyckades"
#: advancedcontentfilter.php:431 #: advancedcontentfilter.php:390
msgid "Rule successfully deleted" msgid "Rule successfully deleted"
msgstr "Borttagning av regel lyckades" msgstr "Borttagning av regel lyckades"
#: advancedcontentfilter.php:441 #: advancedcontentfilter.php:400
msgid "Missing argument: guid." msgid "Missing argument: guid."
msgstr "Argument saknas: guid." msgstr "Argument saknas: guid."
#: advancedcontentfilter.php:449 #: advancedcontentfilter.php:406
#, php-format #, php-format
msgid "Unknown post with guid: %s" msgid "Unknown post with guid: %s"
msgstr "Okänt inlägg med guid: %s" msgstr "Okänt inlägg med guid: %s"
#: src/middlewares.php:49 #: src/middlewares.php:28
msgid "Method not found" msgid "Method not found"
msgstr "Metod hittades inte" msgstr "Metod hittades inte"

View file

@ -3,38 +3,39 @@
if(! function_exists("string_plural_select_sv")) { if(! function_exists("string_plural_select_sv")) {
function string_plural_select_sv($n){ function string_plural_select_sv($n){
$n = intval($n); $n = intval($n);
return intval($n != 1); return ($n != 1);;
}} }}
$a->strings['Filtered by rule: %s'] = 'Filtrerat efter regel: %s'; ;
$a->strings['Advanced Content Filter'] = 'Avancerat innehållsfiter'; $a->strings["Filtered by rule: %s"] = "Filtrerat efter regel: %s";
$a->strings['Back to Addon Settings'] = 'TIllbaka till Tilläggsinställningar'; $a->strings["Advanced Content Filter"] = "Avancerat innehållsfiter";
$a->strings['Add a Rule'] = 'Lägg till en regel'; $a->strings["Back to Addon Settings"] = "TIllbaka till Tilläggsinställningar";
$a->strings['Help'] = 'Hjälp'; $a->strings["Add a Rule"] = "Lägg till en regel";
$a->strings['Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the help page.'] = 'Lägg till och hantera dina personliga regler för innehållsfilter i det här fönstret. Regler har ett namn och ett filteruttryck som jämförs mot inläggets innehåll. Förteckning över alla operander och variabler finns att hitta på <a href="advancedcontentfilter/help">hjälpsidan</a>.'; $a->strings["Help"] = "Hjälp";
$a->strings['Your rules'] = 'Dina regler'; $a->strings["Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the <a href=\"advancedcontentfilter/help\">help page</a>."] = "Lägg till och hantera dina personliga regler för innehållsfilter i det här fönstret. Regler har ett namn och ett valfritt uttryck och kommer jämföras mot inläggets innehåll. Förteckning av alla operander och variabler finns att hitta på <a href=\"advancedcontentfilter/help\">hjälpsidan</a>.";
$a->strings['You have no rules yet! Start adding one by clicking on the button above next to the title.'] = 'Du har inga regler än! Lägg till regler genom att klicka på knappen ovanför, bredvid överskriften.'; $a->strings["Your rules"] = "Dina regler";
$a->strings['Disabled'] = 'Inaktiverad'; $a->strings["You have no rules yet! Start adding one by clicking on the button above next to the title."] = "Du har inga regler än! Lägg till regler genom att klicka på knappen ovanför, bredvid överskriften.";
$a->strings['Enabled'] = 'Aktiverad'; $a->strings["Disabled"] = "Inaktiverad";
$a->strings['Disable this rule'] = 'Inaktivera den här regeln'; $a->strings["Enabled"] = "Aktiverad";
$a->strings['Enable this rule'] = 'Aktivera den här regeln'; $a->strings["Disable this rule"] = "Inaktivera den här regeln";
$a->strings['Edit this rule'] = 'Redigera den här regeln'; $a->strings["Enable this rule"] = "Aktivera den här regeln";
$a->strings['Edit the rule'] = 'Redigera den här regeln'; $a->strings["Edit this rule"] = "Redigera den här regeln";
$a->strings['Save this rule'] = 'Spara den här regeln'; $a->strings["Edit the rule"] = "Redigera den här regeln";
$a->strings['Delete this rule'] = 'Ta bort den här regeln'; $a->strings["Save this rule"] = "Spara den här regeln";
$a->strings['Rule'] = 'Regel'; $a->strings["Delete this rule"] = "Ta bort den här regeln";
$a->strings['Close'] = 'Stäng'; $a->strings["Rule"] = "Regel";
$a->strings['Add new rule'] = 'Lägg till ny regel'; $a->strings["Close"] = "Stäng";
$a->strings['Rule Name'] = 'Regelnamn'; $a->strings["Add new rule"] = "Lägg till ny regel";
$a->strings['Rule Expression'] = 'Regeluttryck'; $a->strings["Rule Name"] = "Regelnamn";
$a->strings['Cancel'] = 'Avbryt'; $a->strings["Rule Expression"] = "Regeluttryck";
$a->strings['This addon requires this node having at least one post'] = 'Detta tillägg kräver att denna nod har åtminstone ett inlägg'; $a->strings["<p>Examples:</p><ul><li><pre>author_link == 'https://friendica.mrpetovan.com/profile/hypolite'</pre></li><li>tags</li></ul>"] = "<p>Exempel:</p><ul><li><pre>author_link == 'https://friendica.mrpetovan.com/profile/hypolite'</pre></li><li>taggar</li></ul>";
$a->strings['You must be logged in to use this method'] = 'Du måste vara inloggad för att använda den här funktionen'; $a->strings["Cancel"] = "Avbryt";
$a->strings['Invalid form security token, please refresh the page.'] = 'Felaktigt säkerhetsformulärstecken, vänligen uppdatera sidan.'; $a->strings["You must be logged in to use this method"] = "Du måste vara inloggad för att använda den här funktionen";
$a->strings['The rule name and expression are required.'] = 'Regelns namn och uttryck krävs.'; $a->strings["Invalid form security token, please refresh the page."] = "Felaktigt säkerhetsformulärstecken, vänligen uppdatera sidan.";
$a->strings['Rule successfully added'] = 'Regeln kunde läggas till'; $a->strings["The rule name and expression are required."] = "Regelns namn och uttryck krävs.";
$a->strings['Rule doesn\'t exist or doesn\'t belong to you.'] = 'Regeln finns inte eller tillhör inte dig.'; $a->strings["Rule successfully added"] = "Regeln kunde läggas till";
$a->strings['Rule successfully updated'] = 'Uppdatering av regel lyckades'; $a->strings["Rule doesn't exist or doesn't belong to you."] = "Regeln finns inte eller tillhör inte dig.";
$a->strings['Rule successfully deleted'] = 'Borttagning av regel lyckades'; $a->strings["Rule successfully updated"] = "Uppdatering av regel lyckades";
$a->strings['Missing argument: guid.'] = 'Argument saknas: guid.'; $a->strings["Rule successfully deleted"] = "Borttagning av regel lyckades";
$a->strings['Unknown post with guid: %s'] = 'Okänt inlägg med guid: %s'; $a->strings["Missing argument: guid."] = "Argument saknas: guid.";
$a->strings['Method not found'] = 'Metod hittades inte'; $a->strings["Unknown post with guid: %s"] = "Okänt inlägg med guid: %s";
$a->strings["Method not found"] = "Metod hittades inte";

View file

@ -3,38 +3,39 @@
if(! function_exists("string_plural_select_zh_cn")) { if(! function_exists("string_plural_select_zh_cn")) {
function string_plural_select_zh_cn($n){ function string_plural_select_zh_cn($n){
$n = intval($n); $n = intval($n);
return intval(0); return 0;;
}} }}
$a->strings['Filtered by rule: %s'] = '通过规则过滤:%s'; ;
$a->strings['Advanced Content Filter'] = '高级内容过滤'; $a->strings["Filtered by rule: %s"] = "通过规则过滤:%s";
$a->strings['Back to Addon Settings'] = '返回扩展设置'; $a->strings["Advanced Content Filter"] = "高级内容过滤";
$a->strings['Add a Rule'] = '添加规则'; $a->strings["Back to Addon Settings"] = "返回扩展设置";
$a->strings['Help'] = '帮助'; $a->strings["Add a Rule"] = "添加规则";
$a->strings['Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the <a href="advancedcontentfilter/help">help page</a>.'] = '在此界面上添加和管理你的个人内容过滤规则。规则要有名称和能匹配帖子内容的任意表达式。完整可用的运算符和变量,请查看<a href="advancedcontentfilter/help">帮助页面</a>。'; $a->strings["Help"] = "帮助";
$a->strings['Your rules'] = '你的规则'; $a->strings["Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the <a href=\"advancedcontentfilter/help\">help page</a>."] = "在此界面上添加和管理你的个人内容过滤规则。规则要有名称和能匹配帖子内容的任意表达式。完整可用的运算符和变量,请查看<a href=\"advancedcontentfilter/help\">帮助页面</a>。";
$a->strings['You have no rules yet! Start adding one by clicking on the button above next to the title.'] = '你还没有规则!点击标题上方的按钮开始新增规则。'; $a->strings["Your rules"] = "你的规则";
$a->strings['Disabled'] = '禁用'; $a->strings["You have no rules yet! Start adding one by clicking on the button above next to the title."] = "你还没有规则!点击标题上方的按钮开始新增规则。";
$a->strings['Enabled'] = '启用'; $a->strings["Disabled"] = "禁用";
$a->strings['Disable this rule'] = '禁用此规则'; $a->strings["Enabled"] = "启用";
$a->strings['Enable this rule'] = '启用此规则'; $a->strings["Disable this rule"] = "禁用此规则";
$a->strings['Edit this rule'] = '编辑此规则'; $a->strings["Enable this rule"] = "启用此规则";
$a->strings['Edit the rule'] = '编辑规则'; $a->strings["Edit this rule"] = "编辑此规则";
$a->strings['Save this rule'] = '保存规则'; $a->strings["Edit the rule"] = "编辑规则";
$a->strings['Delete this rule'] = '删除此规则'; $a->strings["Save this rule"] = "保存规则";
$a->strings['Rule'] = '规则'; $a->strings["Delete this rule"] = "删除此规则";
$a->strings['Close'] = '关闭'; $a->strings["Rule"] = "规则";
$a->strings['Add new rule'] = '新增规则'; $a->strings["Close"] = "关闭";
$a->strings['Rule Name'] = '规则名'; $a->strings["Add new rule"] = "新增规则";
$a->strings['Rule Expression'] = '规则表达式'; $a->strings["Rule Name"] = "规则名";
$a->strings['<p>Examples:</p><ul><li><pre>author_link == \'https://friendica.mrpetovan.com/profile/hypolite\'</pre></li><li>tags</li></ul>'] = '<p>例子:</p><ul><li><pre>author_link == \'https://friendica.mrpetovan.com/profile/hypolite</pre></li><li>tags</li></ul>'; $a->strings["Rule Expression"] = "规则表达式";
$a->strings['Cancel'] = '取消'; $a->strings["<p>Examples:</p><ul><li><pre>author_link == 'https://friendica.mrpetovan.com/profile/hypolite'</pre></li><li>tags</li></ul>"] = "<p>例子:</p><ul><li><pre>author_link == 'https://friendica.mrpetovan.com/profile/hypolite</pre></li><li>tags</li></ul>";
$a->strings['You must be logged in to use this method'] = '使用此模式您必须先登录。'; $a->strings["Cancel"] = "取消";
$a->strings['Invalid form security token, please refresh the page.'] = '无效的安全令牌,请刷新页面。'; $a->strings["You must be logged in to use this method"] = "使用此模式您必须先登录。";
$a->strings['The rule name and expression are required.'] = '规则名和表达式必填。'; $a->strings["Invalid form security token, please refresh the page."] = "无效的安全令牌,请刷新页面。";
$a->strings['Rule successfully added'] = '规则添加成功。'; $a->strings["The rule name and expression are required."] = "规则名和表达式必填。";
$a->strings['Rule doesn\'t exist or doesn\'t belong to you.'] = '规则不存在或不属于你。'; $a->strings["Rule successfully added"] = "规则添加成功。";
$a->strings['Rule successfully updated'] = '规则更新成功'; $a->strings["Rule doesn't exist or doesn't belong to you."] = "规则不存在或不属于你。";
$a->strings['Rule successfully deleted'] = '规则删除成功'; $a->strings["Rule successfully updated"] = "规则更新成功";
$a->strings['Missing argument: guid.'] = '缺少参数guid。'; $a->strings["Rule successfully deleted"] = "规则删除成功";
$a->strings['Unknown post with guid: %s'] = '未知帖子 guid%s'; $a->strings["Missing argument: guid."] = "缺少参数guid。";
$a->strings['Method not found'] = '未找到模式'; $a->strings["Unknown post with guid: %s"] = "未知帖子 guid%s";
$a->strings["Method not found"] = "未找到模式";

View file

@ -0,0 +1,51 @@
<?php
/**
* @copyright Copyright (C) 2020, Friendica
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program 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 Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
use Friendica\DI;
$container = $slim->getContainer();
// Error handler based off https://stackoverflow.com/a/48135009/757392
$container['errorHandler'] = function () {
return function(Psr\Http\Message\RequestInterface $request, Psr\Http\Message\ResponseInterface $response, Exception $exception)
{
$responseCode = 500;
if (is_a($exception, 'Friendica\Network\HTTPException')) {
$responseCode = $exception->getCode();
}
$errors['message'] = $exception->getMessage();
$errors['responseCode'] = $responseCode;
return $response
->withStatus($responseCode)
->withJson($errors);
};
};
$container['notFoundHandler'] = function () {
return function ()
{
throw new \Friendica\Network\HTTPException\NotFoundException(DI::l10n()->t('Method not found'));
};
};

View file

@ -0,0 +1,39 @@
<?php
/**
* @copyright Copyright (C) 2020, Friendica
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program 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 Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
/* @var $slim Slim\App */
$slim->group('/advancedcontentfilter/api', function () {
/* @var $this Slim\App */
$this->group('/rules', function () {
/* @var $this Slim\App */
$this->get('', 'advancedcontentfilter_get_rules');
$this->post('', 'advancedcontentfilter_post_rules');
$this->get('/{id}', 'advancedcontentfilter_get_rules_id');
$this->put('/{id}', 'advancedcontentfilter_put_rules_id');
$this->delete('/{id}', 'advancedcontentfilter_delete_rules_id');
});
$this->group('/variables', function () {
/* @var $this Slim\App */
$this->get('/{guid}', 'advancedcontentfilter_get_variables_guid');
});
});

View file

@ -7,7 +7,7 @@
3. Replace the render and staticRenderFns members in advancedcontentfilter.js by the contents of the anonymous() functions 3. Replace the render and staticRenderFns members in advancedcontentfilter.js by the contents of the anonymous() functions
--> -->
<div id="rules"> <div id="rules">
<p><a href="settings/addons">🔙 {{ messages.backtosettings }}</a></p> <p><a href="settings/addon">🔙 {{ messages.backtosettings }}</a></p>
<h1> <h1>
{{ messages.title }} {{ messages.title }}
&nbsp; &nbsp;

View file

@ -3,7 +3,7 @@
<div id="rules"></div> <div id="rules"></div>
<script> <script>
var existingRules = {{$rules|json_encode nofilter}}; var existingRules = {{$rules nofilter}};
var messages = { var messages = {
{{foreach $messages as $key => $value}} {{foreach $messages as $key => $value}}
@ -17,6 +17,6 @@
</script> </script>
<!-- JS --> <!-- JS -->
<script src="{{$baseurl}}/addon/advancedcontentfilter/asset/vue/dist/vue.min.js"></script> <script src="{{$baseurl}}/view/asset/vue/dist/vue.min.js"></script>
<script src="{{$baseurl}}/addon/advancedcontentfilter/advancedcontentfilter.js"></script> <script src="{{$baseurl}}/addon/advancedcontentfilter/advancedcontentfilter.js"></script>
</div> </div>

View file

@ -60,7 +60,7 @@ class ClassLoader
public function getPrefixes() public function getPrefixes()
{ {
if (!empty($this->prefixesPsr0)) { if (!empty($this->prefixesPsr0)) {
return call_user_func_array('array_merge', array_values($this->prefixesPsr0)); return call_user_func_array('array_merge', $this->prefixesPsr0);
} }
return array(); return array();
@ -279,7 +279,7 @@ class ClassLoader
*/ */
public function setApcuPrefix($apcuPrefix) public function setApcuPrefix($apcuPrefix)
{ {
$this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null; $this->apcuPrefix = function_exists('apcu_fetch') && ini_get('apc.enabled') ? $apcuPrefix : null;
} }
/** /**
@ -377,7 +377,7 @@ class ClassLoader
$subPath = $class; $subPath = $class;
while (false !== $lastPos = strrpos($subPath, '\\')) { while (false !== $lastPos = strrpos($subPath, '\\')) {
$subPath = substr($subPath, 0, $lastPos); $subPath = substr($subPath, 0, $lastPos);
$search = $subPath . '\\'; $search = $subPath.'\\';
if (isset($this->prefixDirsPsr4[$search])) { if (isset($this->prefixDirsPsr4[$search])) {
$pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1); $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
foreach ($this->prefixDirsPsr4[$search] as $dir) { foreach ($this->prefixDirsPsr4[$search] as $dir) {

View file

@ -6,7 +6,6 @@ $vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir); $baseDir = dirname($vendorDir);
return array( return array(
'Attribute' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Attribute.php',
'FastRoute\\BadRouteException' => $vendorDir . '/nikic/fast-route/src/BadRouteException.php', 'FastRoute\\BadRouteException' => $vendorDir . '/nikic/fast-route/src/BadRouteException.php',
'FastRoute\\DataGenerator' => $vendorDir . '/nikic/fast-route/src/DataGenerator.php', 'FastRoute\\DataGenerator' => $vendorDir . '/nikic/fast-route/src/DataGenerator.php',
'FastRoute\\DataGenerator\\CharCountBased' => $vendorDir . '/nikic/fast-route/src/DataGenerator/CharCountBased.php', 'FastRoute\\DataGenerator\\CharCountBased' => $vendorDir . '/nikic/fast-route/src/DataGenerator/CharCountBased.php',
@ -24,8 +23,27 @@ return array(
'FastRoute\\RouteCollector' => $vendorDir . '/nikic/fast-route/src/RouteCollector.php', 'FastRoute\\RouteCollector' => $vendorDir . '/nikic/fast-route/src/RouteCollector.php',
'FastRoute\\RouteParser' => $vendorDir . '/nikic/fast-route/src/RouteParser.php', 'FastRoute\\RouteParser' => $vendorDir . '/nikic/fast-route/src/RouteParser.php',
'FastRoute\\RouteParser\\Std' => $vendorDir . '/nikic/fast-route/src/RouteParser/Std.php', 'FastRoute\\RouteParser\\Std' => $vendorDir . '/nikic/fast-route/src/RouteParser/Std.php',
'JsonException' => $vendorDir . '/symfony/polyfill-php73/Resources/stubs/JsonException.php', 'Interop\\Container\\ContainerInterface' => $vendorDir . '/container-interop/container-interop/src/Interop/Container/ContainerInterface.php',
'PhpToken' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php', 'Interop\\Container\\Exception\\ContainerException' => $vendorDir . '/container-interop/container-interop/src/Interop/Container/Exception/ContainerException.php',
'Interop\\Container\\Exception\\NotFoundException' => $vendorDir . '/container-interop/container-interop/src/Interop/Container/Exception/NotFoundException.php',
'Pimple\\Container' => $vendorDir . '/pimple/pimple/src/Pimple/Container.php',
'Pimple\\Exception\\ExpectedInvokableException' => $vendorDir . '/pimple/pimple/src/Pimple/Exception/ExpectedInvokableException.php',
'Pimple\\Exception\\FrozenServiceException' => $vendorDir . '/pimple/pimple/src/Pimple/Exception/FrozenServiceException.php',
'Pimple\\Exception\\InvalidServiceIdentifierException' => $vendorDir . '/pimple/pimple/src/Pimple/Exception/InvalidServiceIdentifierException.php',
'Pimple\\Exception\\UnknownIdentifierException' => $vendorDir . '/pimple/pimple/src/Pimple/Exception/UnknownIdentifierException.php',
'Pimple\\Psr11\\Container' => $vendorDir . '/pimple/pimple/src/Pimple/Psr11/Container.php',
'Pimple\\Psr11\\ServiceLocator' => $vendorDir . '/pimple/pimple/src/Pimple/Psr11/ServiceLocator.php',
'Pimple\\ServiceIterator' => $vendorDir . '/pimple/pimple/src/Pimple/ServiceIterator.php',
'Pimple\\ServiceProviderInterface' => $vendorDir . '/pimple/pimple/src/Pimple/ServiceProviderInterface.php',
'Pimple\\Tests\\Fixtures\\Invokable' => $vendorDir . '/pimple/pimple/src/Pimple/Tests/Fixtures/Invokable.php',
'Pimple\\Tests\\Fixtures\\NonInvokable' => $vendorDir . '/pimple/pimple/src/Pimple/Tests/Fixtures/NonInvokable.php',
'Pimple\\Tests\\Fixtures\\PimpleServiceProvider' => $vendorDir . '/pimple/pimple/src/Pimple/Tests/Fixtures/PimpleServiceProvider.php',
'Pimple\\Tests\\Fixtures\\Service' => $vendorDir . '/pimple/pimple/src/Pimple/Tests/Fixtures/Service.php',
'Pimple\\Tests\\PimpleServiceProviderInterfaceTest' => $vendorDir . '/pimple/pimple/src/Pimple/Tests/PimpleServiceProviderInterfaceTest.php',
'Pimple\\Tests\\PimpleTest' => $vendorDir . '/pimple/pimple/src/Pimple/Tests/PimpleTest.php',
'Pimple\\Tests\\Psr11\\ContainerTest' => $vendorDir . '/pimple/pimple/src/Pimple/Tests/Psr11/ContainerTest.php',
'Pimple\\Tests\\Psr11\\ServiceLocatorTest' => $vendorDir . '/pimple/pimple/src/Pimple/Tests/Psr11/ServiceLocatorTest.php',
'Pimple\\Tests\\ServiceIteratorTest' => $vendorDir . '/pimple/pimple/src/Pimple/Tests/ServiceIteratorTest.php',
'Psr\\Cache\\CacheException' => $vendorDir . '/psr/cache/src/CacheException.php', 'Psr\\Cache\\CacheException' => $vendorDir . '/psr/cache/src/CacheException.php',
'Psr\\Cache\\CacheItemInterface' => $vendorDir . '/psr/cache/src/CacheItemInterface.php', 'Psr\\Cache\\CacheItemInterface' => $vendorDir . '/psr/cache/src/CacheItemInterface.php',
'Psr\\Cache\\CacheItemPoolInterface' => $vendorDir . '/psr/cache/src/CacheItemPoolInterface.php', 'Psr\\Cache\\CacheItemPoolInterface' => $vendorDir . '/psr/cache/src/CacheItemPoolInterface.php',
@ -34,20 +52,12 @@ return array(
'Psr\\Container\\ContainerInterface' => $vendorDir . '/psr/container/src/ContainerInterface.php', 'Psr\\Container\\ContainerInterface' => $vendorDir . '/psr/container/src/ContainerInterface.php',
'Psr\\Container\\NotFoundExceptionInterface' => $vendorDir . '/psr/container/src/NotFoundExceptionInterface.php', 'Psr\\Container\\NotFoundExceptionInterface' => $vendorDir . '/psr/container/src/NotFoundExceptionInterface.php',
'Psr\\Http\\Message\\MessageInterface' => $vendorDir . '/psr/http-message/src/MessageInterface.php', 'Psr\\Http\\Message\\MessageInterface' => $vendorDir . '/psr/http-message/src/MessageInterface.php',
'Psr\\Http\\Message\\RequestFactoryInterface' => $vendorDir . '/psr/http-factory/src/RequestFactoryInterface.php',
'Psr\\Http\\Message\\RequestInterface' => $vendorDir . '/psr/http-message/src/RequestInterface.php', 'Psr\\Http\\Message\\RequestInterface' => $vendorDir . '/psr/http-message/src/RequestInterface.php',
'Psr\\Http\\Message\\ResponseFactoryInterface' => $vendorDir . '/psr/http-factory/src/ResponseFactoryInterface.php',
'Psr\\Http\\Message\\ResponseInterface' => $vendorDir . '/psr/http-message/src/ResponseInterface.php', 'Psr\\Http\\Message\\ResponseInterface' => $vendorDir . '/psr/http-message/src/ResponseInterface.php',
'Psr\\Http\\Message\\ServerRequestFactoryInterface' => $vendorDir . '/psr/http-factory/src/ServerRequestFactoryInterface.php',
'Psr\\Http\\Message\\ServerRequestInterface' => $vendorDir . '/psr/http-message/src/ServerRequestInterface.php', 'Psr\\Http\\Message\\ServerRequestInterface' => $vendorDir . '/psr/http-message/src/ServerRequestInterface.php',
'Psr\\Http\\Message\\StreamFactoryInterface' => $vendorDir . '/psr/http-factory/src/StreamFactoryInterface.php',
'Psr\\Http\\Message\\StreamInterface' => $vendorDir . '/psr/http-message/src/StreamInterface.php', 'Psr\\Http\\Message\\StreamInterface' => $vendorDir . '/psr/http-message/src/StreamInterface.php',
'Psr\\Http\\Message\\UploadedFileFactoryInterface' => $vendorDir . '/psr/http-factory/src/UploadedFileFactoryInterface.php',
'Psr\\Http\\Message\\UploadedFileInterface' => $vendorDir . '/psr/http-message/src/UploadedFileInterface.php', 'Psr\\Http\\Message\\UploadedFileInterface' => $vendorDir . '/psr/http-message/src/UploadedFileInterface.php',
'Psr\\Http\\Message\\UriFactoryInterface' => $vendorDir . '/psr/http-factory/src/UriFactoryInterface.php',
'Psr\\Http\\Message\\UriInterface' => $vendorDir . '/psr/http-message/src/UriInterface.php', 'Psr\\Http\\Message\\UriInterface' => $vendorDir . '/psr/http-message/src/UriInterface.php',
'Psr\\Http\\Server\\MiddlewareInterface' => $vendorDir . '/psr/http-server-middleware/src/MiddlewareInterface.php',
'Psr\\Http\\Server\\RequestHandlerInterface' => $vendorDir . '/psr/http-server-handler/src/RequestHandlerInterface.php',
'Psr\\Log\\AbstractLogger' => $vendorDir . '/psr/log/Psr/Log/AbstractLogger.php', 'Psr\\Log\\AbstractLogger' => $vendorDir . '/psr/log/Psr/Log/AbstractLogger.php',
'Psr\\Log\\InvalidArgumentException' => $vendorDir . '/psr/log/Psr/Log/InvalidArgumentException.php', 'Psr\\Log\\InvalidArgumentException' => $vendorDir . '/psr/log/Psr/Log/InvalidArgumentException.php',
'Psr\\Log\\LogLevel' => $vendorDir . '/psr/log/Psr/Log/LogLevel.php', 'Psr\\Log\\LogLevel' => $vendorDir . '/psr/log/Psr/Log/LogLevel.php',
@ -56,100 +66,71 @@ return array(
'Psr\\Log\\LoggerInterface' => $vendorDir . '/psr/log/Psr/Log/LoggerInterface.php', 'Psr\\Log\\LoggerInterface' => $vendorDir . '/psr/log/Psr/Log/LoggerInterface.php',
'Psr\\Log\\LoggerTrait' => $vendorDir . '/psr/log/Psr/Log/LoggerTrait.php', 'Psr\\Log\\LoggerTrait' => $vendorDir . '/psr/log/Psr/Log/LoggerTrait.php',
'Psr\\Log\\NullLogger' => $vendorDir . '/psr/log/Psr/Log/NullLogger.php', 'Psr\\Log\\NullLogger' => $vendorDir . '/psr/log/Psr/Log/NullLogger.php',
'Psr\\Log\\Test\\DummyTest' => $vendorDir . '/psr/log/Psr/Log/Test/DummyTest.php', 'Psr\\Log\\Test\\DummyTest' => $vendorDir . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php',
'Psr\\Log\\Test\\LoggerInterfaceTest' => $vendorDir . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php', 'Psr\\Log\\Test\\LoggerInterfaceTest' => $vendorDir . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php',
'Psr\\Log\\Test\\TestLogger' => $vendorDir . '/psr/log/Psr/Log/Test/TestLogger.php', 'Psr\\SimpleCache\\CacheException' => $vendorDir . '/psr/simple-cache/src/CacheException.php',
'Psr\\SimpleCache\\CacheInterface' => $vendorDir . '/psr/simple-cache/src/CacheInterface.php',
'Psr\\SimpleCache\\InvalidArgumentException' => $vendorDir . '/psr/simple-cache/src/InvalidArgumentException.php',
'Slim\\App' => $vendorDir . '/slim/slim/Slim/App.php', 'Slim\\App' => $vendorDir . '/slim/slim/Slim/App.php',
'Slim\\CallableResolver' => $vendorDir . '/slim/slim/Slim/CallableResolver.php', 'Slim\\CallableResolver' => $vendorDir . '/slim/slim/Slim/CallableResolver.php',
'Slim\\Error\\AbstractErrorRenderer' => $vendorDir . '/slim/slim/Slim/Error/AbstractErrorRenderer.php', 'Slim\\CallableResolverAwareTrait' => $vendorDir . '/slim/slim/Slim/CallableResolverAwareTrait.php',
'Slim\\Error\\Renderers\\HtmlErrorRenderer' => $vendorDir . '/slim/slim/Slim/Error/Renderers/HtmlErrorRenderer.php', 'Slim\\Collection' => $vendorDir . '/slim/slim/Slim/Collection.php',
'Slim\\Error\\Renderers\\JsonErrorRenderer' => $vendorDir . '/slim/slim/Slim/Error/Renderers/JsonErrorRenderer.php', 'Slim\\Container' => $vendorDir . '/slim/slim/Slim/Container.php',
'Slim\\Error\\Renderers\\PlainTextErrorRenderer' => $vendorDir . '/slim/slim/Slim/Error/Renderers/PlainTextErrorRenderer.php', 'Slim\\DefaultServicesProvider' => $vendorDir . '/slim/slim/Slim/DefaultServicesProvider.php',
'Slim\\Error\\Renderers\\XmlErrorRenderer' => $vendorDir . '/slim/slim/Slim/Error/Renderers/XmlErrorRenderer.php', 'Slim\\DeferredCallable' => $vendorDir . '/slim/slim/Slim/DeferredCallable.php',
'Slim\\Exception\\HttpBadRequestException' => $vendorDir . '/slim/slim/Slim/Exception/HttpBadRequestException.php', 'Slim\\Exception\\ContainerException' => $vendorDir . '/slim/slim/Slim/Exception/ContainerException.php',
'Slim\\Exception\\HttpException' => $vendorDir . '/slim/slim/Slim/Exception/HttpException.php', 'Slim\\Exception\\ContainerValueNotFoundException' => $vendorDir . '/slim/slim/Slim/Exception/ContainerValueNotFoundException.php',
'Slim\\Exception\\HttpForbiddenException' => $vendorDir . '/slim/slim/Slim/Exception/HttpForbiddenException.php', 'Slim\\Exception\\InvalidMethodException' => $vendorDir . '/slim/slim/Slim/Exception/InvalidMethodException.php',
'Slim\\Exception\\HttpGoneException' => $vendorDir . '/slim/slim/Slim/Exception/HttpGoneException.php', 'Slim\\Exception\\MethodNotAllowedException' => $vendorDir . '/slim/slim/Slim/Exception/MethodNotAllowedException.php',
'Slim\\Exception\\HttpInternalServerErrorException' => $vendorDir . '/slim/slim/Slim/Exception/HttpInternalServerErrorException.php', 'Slim\\Exception\\NotFoundException' => $vendorDir . '/slim/slim/Slim/Exception/NotFoundException.php',
'Slim\\Exception\\HttpMethodNotAllowedException' => $vendorDir . '/slim/slim/Slim/Exception/HttpMethodNotAllowedException.php', 'Slim\\Exception\\SlimException' => $vendorDir . '/slim/slim/Slim/Exception/SlimException.php',
'Slim\\Exception\\HttpNotFoundException' => $vendorDir . '/slim/slim/Slim/Exception/HttpNotFoundException.php', 'Slim\\Handlers\\AbstractError' => $vendorDir . '/slim/slim/Slim/Handlers/AbstractError.php',
'Slim\\Exception\\HttpNotImplementedException' => $vendorDir . '/slim/slim/Slim/Exception/HttpNotImplementedException.php', 'Slim\\Handlers\\AbstractHandler' => $vendorDir . '/slim/slim/Slim/Handlers/AbstractHandler.php',
'Slim\\Exception\\HttpSpecializedException' => $vendorDir . '/slim/slim/Slim/Exception/HttpSpecializedException.php', 'Slim\\Handlers\\Error' => $vendorDir . '/slim/slim/Slim/Handlers/Error.php',
'Slim\\Exception\\HttpTooManyRequestsException' => $vendorDir . '/slim/slim/Slim/Exception/HttpTooManyRequestsException.php', 'Slim\\Handlers\\NotAllowed' => $vendorDir . '/slim/slim/Slim/Handlers/NotAllowed.php',
'Slim\\Exception\\HttpUnauthorizedException' => $vendorDir . '/slim/slim/Slim/Exception/HttpUnauthorizedException.php', 'Slim\\Handlers\\NotFound' => $vendorDir . '/slim/slim/Slim/Handlers/NotFound.php',
'Slim\\Factory\\AppFactory' => $vendorDir . '/slim/slim/Slim/Factory/AppFactory.php', 'Slim\\Handlers\\PhpError' => $vendorDir . '/slim/slim/Slim/Handlers/PhpError.php',
'Slim\\Factory\\Psr17\\GuzzlePsr17Factory' => $vendorDir . '/slim/slim/Slim/Factory/Psr17/GuzzlePsr17Factory.php',
'Slim\\Factory\\Psr17\\HttpSoftPsr17Factory' => $vendorDir . '/slim/slim/Slim/Factory/Psr17/HttpSoftPsr17Factory.php',
'Slim\\Factory\\Psr17\\LaminasDiactorosPsr17Factory' => $vendorDir . '/slim/slim/Slim/Factory/Psr17/LaminasDiactorosPsr17Factory.php',
'Slim\\Factory\\Psr17\\NyholmPsr17Factory' => $vendorDir . '/slim/slim/Slim/Factory/Psr17/NyholmPsr17Factory.php',
'Slim\\Factory\\Psr17\\Psr17Factory' => $vendorDir . '/slim/slim/Slim/Factory/Psr17/Psr17Factory.php',
'Slim\\Factory\\Psr17\\Psr17FactoryProvider' => $vendorDir . '/slim/slim/Slim/Factory/Psr17/Psr17FactoryProvider.php',
'Slim\\Factory\\Psr17\\ServerRequestCreator' => $vendorDir . '/slim/slim/Slim/Factory/Psr17/ServerRequestCreator.php',
'Slim\\Factory\\Psr17\\SlimHttpPsr17Factory' => $vendorDir . '/slim/slim/Slim/Factory/Psr17/SlimHttpPsr17Factory.php',
'Slim\\Factory\\Psr17\\SlimHttpServerRequestCreator' => $vendorDir . '/slim/slim/Slim/Factory/Psr17/SlimHttpServerRequestCreator.php',
'Slim\\Factory\\Psr17\\SlimPsr17Factory' => $vendorDir . '/slim/slim/Slim/Factory/Psr17/SlimPsr17Factory.php',
'Slim\\Factory\\ServerRequestCreatorFactory' => $vendorDir . '/slim/slim/Slim/Factory/ServerRequestCreatorFactory.php',
'Slim\\Handlers\\ErrorHandler' => $vendorDir . '/slim/slim/Slim/Handlers/ErrorHandler.php',
'Slim\\Handlers\\Strategies\\RequestHandler' => $vendorDir . '/slim/slim/Slim/Handlers/Strategies/RequestHandler.php',
'Slim\\Handlers\\Strategies\\RequestResponse' => $vendorDir . '/slim/slim/Slim/Handlers/Strategies/RequestResponse.php', 'Slim\\Handlers\\Strategies\\RequestResponse' => $vendorDir . '/slim/slim/Slim/Handlers/Strategies/RequestResponse.php',
'Slim\\Handlers\\Strategies\\RequestResponseArgs' => $vendorDir . '/slim/slim/Slim/Handlers/Strategies/RequestResponseArgs.php', 'Slim\\Handlers\\Strategies\\RequestResponseArgs' => $vendorDir . '/slim/slim/Slim/Handlers/Strategies/RequestResponseArgs.php',
'Slim\\Handlers\\Strategies\\RequestResponseNamedArgs' => $vendorDir . '/slim/slim/Slim/Handlers/Strategies/RequestResponseNamedArgs.php', 'Slim\\Http\\Body' => $vendorDir . '/slim/slim/Slim/Http/Body.php',
'Slim\\Interfaces\\AdvancedCallableResolverInterface' => $vendorDir . '/slim/slim/Slim/Interfaces/AdvancedCallableResolverInterface.php', 'Slim\\Http\\Cookies' => $vendorDir . '/slim/slim/Slim/Http/Cookies.php',
'Slim\\Http\\Environment' => $vendorDir . '/slim/slim/Slim/Http/Environment.php',
'Slim\\Http\\Headers' => $vendorDir . '/slim/slim/Slim/Http/Headers.php',
'Slim\\Http\\Message' => $vendorDir . '/slim/slim/Slim/Http/Message.php',
'Slim\\Http\\Request' => $vendorDir . '/slim/slim/Slim/Http/Request.php',
'Slim\\Http\\RequestBody' => $vendorDir . '/slim/slim/Slim/Http/RequestBody.php',
'Slim\\Http\\Response' => $vendorDir . '/slim/slim/Slim/Http/Response.php',
'Slim\\Http\\Stream' => $vendorDir . '/slim/slim/Slim/Http/Stream.php',
'Slim\\Http\\UploadedFile' => $vendorDir . '/slim/slim/Slim/Http/UploadedFile.php',
'Slim\\Http\\Uri' => $vendorDir . '/slim/slim/Slim/Http/Uri.php',
'Slim\\Interfaces\\CallableResolverInterface' => $vendorDir . '/slim/slim/Slim/Interfaces/CallableResolverInterface.php', 'Slim\\Interfaces\\CallableResolverInterface' => $vendorDir . '/slim/slim/Slim/Interfaces/CallableResolverInterface.php',
'Slim\\Interfaces\\DispatcherInterface' => $vendorDir . '/slim/slim/Slim/Interfaces/DispatcherInterface.php', 'Slim\\Interfaces\\CollectionInterface' => $vendorDir . '/slim/slim/Slim/Interfaces/CollectionInterface.php',
'Slim\\Interfaces\\ErrorHandlerInterface' => $vendorDir . '/slim/slim/Slim/Interfaces/ErrorHandlerInterface.php', 'Slim\\Interfaces\\Http\\CookiesInterface' => $vendorDir . '/slim/slim/Slim/Interfaces/Http/CookiesInterface.php',
'Slim\\Interfaces\\ErrorRendererInterface' => $vendorDir . '/slim/slim/Slim/Interfaces/ErrorRendererInterface.php', 'Slim\\Interfaces\\Http\\EnvironmentInterface' => $vendorDir . '/slim/slim/Slim/Interfaces/Http/EnvironmentInterface.php',
'Slim\\Interfaces\\Http\\HeadersInterface' => $vendorDir . '/slim/slim/Slim/Interfaces/Http/HeadersInterface.php',
'Slim\\Interfaces\\InvocationStrategyInterface' => $vendorDir . '/slim/slim/Slim/Interfaces/InvocationStrategyInterface.php', 'Slim\\Interfaces\\InvocationStrategyInterface' => $vendorDir . '/slim/slim/Slim/Interfaces/InvocationStrategyInterface.php',
'Slim\\Interfaces\\MiddlewareDispatcherInterface' => $vendorDir . '/slim/slim/Slim/Interfaces/MiddlewareDispatcherInterface.php',
'Slim\\Interfaces\\Psr17FactoryInterface' => $vendorDir . '/slim/slim/Slim/Interfaces/Psr17FactoryInterface.php',
'Slim\\Interfaces\\Psr17FactoryProviderInterface' => $vendorDir . '/slim/slim/Slim/Interfaces/Psr17FactoryProviderInterface.php',
'Slim\\Interfaces\\RequestHandlerInvocationStrategyInterface' => $vendorDir . '/slim/slim/Slim/Interfaces/RequestHandlerInvocationStrategyInterface.php',
'Slim\\Interfaces\\RouteCollectorInterface' => $vendorDir . '/slim/slim/Slim/Interfaces/RouteCollectorInterface.php',
'Slim\\Interfaces\\RouteCollectorProxyInterface' => $vendorDir . '/slim/slim/Slim/Interfaces/RouteCollectorProxyInterface.php',
'Slim\\Interfaces\\RouteGroupInterface' => $vendorDir . '/slim/slim/Slim/Interfaces/RouteGroupInterface.php', 'Slim\\Interfaces\\RouteGroupInterface' => $vendorDir . '/slim/slim/Slim/Interfaces/RouteGroupInterface.php',
'Slim\\Interfaces\\RouteInterface' => $vendorDir . '/slim/slim/Slim/Interfaces/RouteInterface.php', 'Slim\\Interfaces\\RouteInterface' => $vendorDir . '/slim/slim/Slim/Interfaces/RouteInterface.php',
'Slim\\Interfaces\\RouteParserInterface' => $vendorDir . '/slim/slim/Slim/Interfaces/RouteParserInterface.php', 'Slim\\Interfaces\\RouterInterface' => $vendorDir . '/slim/slim/Slim/Interfaces/RouterInterface.php',
'Slim\\Interfaces\\RouteResolverInterface' => $vendorDir . '/slim/slim/Slim/Interfaces/RouteResolverInterface.php', 'Slim\\MiddlewareAwareTrait' => $vendorDir . '/slim/slim/Slim/MiddlewareAwareTrait.php',
'Slim\\Interfaces\\ServerRequestCreatorInterface' => $vendorDir . '/slim/slim/Slim/Interfaces/ServerRequestCreatorInterface.php', 'Slim\\Routable' => $vendorDir . '/slim/slim/Slim/Routable.php',
'Slim\\Logger' => $vendorDir . '/slim/slim/Slim/Logger.php', 'Slim\\Route' => $vendorDir . '/slim/slim/Slim/Route.php',
'Slim\\MiddlewareDispatcher' => $vendorDir . '/slim/slim/Slim/MiddlewareDispatcher.php', 'Slim\\RouteGroup' => $vendorDir . '/slim/slim/Slim/RouteGroup.php',
'Slim\\Middleware\\BodyParsingMiddleware' => $vendorDir . '/slim/slim/Slim/Middleware/BodyParsingMiddleware.php', 'Slim\\Router' => $vendorDir . '/slim/slim/Slim/Router.php',
'Slim\\Middleware\\ContentLengthMiddleware' => $vendorDir . '/slim/slim/Slim/Middleware/ContentLengthMiddleware.php',
'Slim\\Middleware\\ErrorMiddleware' => $vendorDir . '/slim/slim/Slim/Middleware/ErrorMiddleware.php',
'Slim\\Middleware\\MethodOverrideMiddleware' => $vendorDir . '/slim/slim/Slim/Middleware/MethodOverrideMiddleware.php',
'Slim\\Middleware\\OutputBufferingMiddleware' => $vendorDir . '/slim/slim/Slim/Middleware/OutputBufferingMiddleware.php',
'Slim\\Middleware\\RoutingMiddleware' => $vendorDir . '/slim/slim/Slim/Middleware/RoutingMiddleware.php',
'Slim\\ResponseEmitter' => $vendorDir . '/slim/slim/Slim/ResponseEmitter.php',
'Slim\\Routing\\Dispatcher' => $vendorDir . '/slim/slim/Slim/Routing/Dispatcher.php',
'Slim\\Routing\\FastRouteDispatcher' => $vendorDir . '/slim/slim/Slim/Routing/FastRouteDispatcher.php',
'Slim\\Routing\\Route' => $vendorDir . '/slim/slim/Slim/Routing/Route.php',
'Slim\\Routing\\RouteCollector' => $vendorDir . '/slim/slim/Slim/Routing/RouteCollector.php',
'Slim\\Routing\\RouteCollectorProxy' => $vendorDir . '/slim/slim/Slim/Routing/RouteCollectorProxy.php',
'Slim\\Routing\\RouteContext' => $vendorDir . '/slim/slim/Slim/Routing/RouteContext.php',
'Slim\\Routing\\RouteGroup' => $vendorDir . '/slim/slim/Slim/Routing/RouteGroup.php',
'Slim\\Routing\\RouteParser' => $vendorDir . '/slim/slim/Slim/Routing/RouteParser.php',
'Slim\\Routing\\RouteResolver' => $vendorDir . '/slim/slim/Slim/Routing/RouteResolver.php',
'Slim\\Routing\\RouteRunner' => $vendorDir . '/slim/slim/Slim/Routing/RouteRunner.php',
'Slim\\Routing\\RoutingResults' => $vendorDir . '/slim/slim/Slim/Routing/RoutingResults.php',
'Stringable' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Stringable.php',
'Symfony\\Component\\Cache\\Adapter\\AbstractAdapter' => $vendorDir . '/symfony/cache/Adapter/AbstractAdapter.php', 'Symfony\\Component\\Cache\\Adapter\\AbstractAdapter' => $vendorDir . '/symfony/cache/Adapter/AbstractAdapter.php',
'Symfony\\Component\\Cache\\Adapter\\AbstractTagAwareAdapter' => $vendorDir . '/symfony/cache/Adapter/AbstractTagAwareAdapter.php',
'Symfony\\Component\\Cache\\Adapter\\AdapterInterface' => $vendorDir . '/symfony/cache/Adapter/AdapterInterface.php', 'Symfony\\Component\\Cache\\Adapter\\AdapterInterface' => $vendorDir . '/symfony/cache/Adapter/AdapterInterface.php',
'Symfony\\Component\\Cache\\Adapter\\ApcuAdapter' => $vendorDir . '/symfony/cache/Adapter/ApcuAdapter.php', 'Symfony\\Component\\Cache\\Adapter\\ApcuAdapter' => $vendorDir . '/symfony/cache/Adapter/ApcuAdapter.php',
'Symfony\\Component\\Cache\\Adapter\\ArrayAdapter' => $vendorDir . '/symfony/cache/Adapter/ArrayAdapter.php', 'Symfony\\Component\\Cache\\Adapter\\ArrayAdapter' => $vendorDir . '/symfony/cache/Adapter/ArrayAdapter.php',
'Symfony\\Component\\Cache\\Adapter\\ChainAdapter' => $vendorDir . '/symfony/cache/Adapter/ChainAdapter.php', 'Symfony\\Component\\Cache\\Adapter\\ChainAdapter' => $vendorDir . '/symfony/cache/Adapter/ChainAdapter.php',
'Symfony\\Component\\Cache\\Adapter\\DoctrineAdapter' => $vendorDir . '/symfony/cache/Adapter/DoctrineAdapter.php', 'Symfony\\Component\\Cache\\Adapter\\DoctrineAdapter' => $vendorDir . '/symfony/cache/Adapter/DoctrineAdapter.php',
'Symfony\\Component\\Cache\\Adapter\\FilesystemAdapter' => $vendorDir . '/symfony/cache/Adapter/FilesystemAdapter.php', 'Symfony\\Component\\Cache\\Adapter\\FilesystemAdapter' => $vendorDir . '/symfony/cache/Adapter/FilesystemAdapter.php',
'Symfony\\Component\\Cache\\Adapter\\FilesystemTagAwareAdapter' => $vendorDir . '/symfony/cache/Adapter/FilesystemTagAwareAdapter.php',
'Symfony\\Component\\Cache\\Adapter\\MemcachedAdapter' => $vendorDir . '/symfony/cache/Adapter/MemcachedAdapter.php', 'Symfony\\Component\\Cache\\Adapter\\MemcachedAdapter' => $vendorDir . '/symfony/cache/Adapter/MemcachedAdapter.php',
'Symfony\\Component\\Cache\\Adapter\\NullAdapter' => $vendorDir . '/symfony/cache/Adapter/NullAdapter.php', 'Symfony\\Component\\Cache\\Adapter\\NullAdapter' => $vendorDir . '/symfony/cache/Adapter/NullAdapter.php',
'Symfony\\Component\\Cache\\Adapter\\PdoAdapter' => $vendorDir . '/symfony/cache/Adapter/PdoAdapter.php', 'Symfony\\Component\\Cache\\Adapter\\PdoAdapter' => $vendorDir . '/symfony/cache/Adapter/PdoAdapter.php',
'Symfony\\Component\\Cache\\Adapter\\PhpArrayAdapter' => $vendorDir . '/symfony/cache/Adapter/PhpArrayAdapter.php', 'Symfony\\Component\\Cache\\Adapter\\PhpArrayAdapter' => $vendorDir . '/symfony/cache/Adapter/PhpArrayAdapter.php',
'Symfony\\Component\\Cache\\Adapter\\PhpFilesAdapter' => $vendorDir . '/symfony/cache/Adapter/PhpFilesAdapter.php', 'Symfony\\Component\\Cache\\Adapter\\PhpFilesAdapter' => $vendorDir . '/symfony/cache/Adapter/PhpFilesAdapter.php',
'Symfony\\Component\\Cache\\Adapter\\ProxyAdapter' => $vendorDir . '/symfony/cache/Adapter/ProxyAdapter.php', 'Symfony\\Component\\Cache\\Adapter\\ProxyAdapter' => $vendorDir . '/symfony/cache/Adapter/ProxyAdapter.php',
'Symfony\\Component\\Cache\\Adapter\\Psr16Adapter' => $vendorDir . '/symfony/cache/Adapter/Psr16Adapter.php',
'Symfony\\Component\\Cache\\Adapter\\RedisAdapter' => $vendorDir . '/symfony/cache/Adapter/RedisAdapter.php', 'Symfony\\Component\\Cache\\Adapter\\RedisAdapter' => $vendorDir . '/symfony/cache/Adapter/RedisAdapter.php',
'Symfony\\Component\\Cache\\Adapter\\RedisTagAwareAdapter' => $vendorDir . '/symfony/cache/Adapter/RedisTagAwareAdapter.php',
'Symfony\\Component\\Cache\\Adapter\\SimpleCacheAdapter' => $vendorDir . '/symfony/cache/Adapter/SimpleCacheAdapter.php', 'Symfony\\Component\\Cache\\Adapter\\SimpleCacheAdapter' => $vendorDir . '/symfony/cache/Adapter/SimpleCacheAdapter.php',
'Symfony\\Component\\Cache\\Adapter\\TagAwareAdapter' => $vendorDir . '/symfony/cache/Adapter/TagAwareAdapter.php', 'Symfony\\Component\\Cache\\Adapter\\TagAwareAdapter' => $vendorDir . '/symfony/cache/Adapter/TagAwareAdapter.php',
'Symfony\\Component\\Cache\\Adapter\\TagAwareAdapterInterface' => $vendorDir . '/symfony/cache/Adapter/TagAwareAdapterInterface.php', 'Symfony\\Component\\Cache\\Adapter\\TagAwareAdapterInterface' => $vendorDir . '/symfony/cache/Adapter/TagAwareAdapterInterface.php',
@ -158,21 +139,10 @@ return array(
'Symfony\\Component\\Cache\\Adapter\\TraceableTagAwareAdapter' => $vendorDir . '/symfony/cache/Adapter/TraceableTagAwareAdapter.php', 'Symfony\\Component\\Cache\\Adapter\\TraceableTagAwareAdapter' => $vendorDir . '/symfony/cache/Adapter/TraceableTagAwareAdapter.php',
'Symfony\\Component\\Cache\\CacheItem' => $vendorDir . '/symfony/cache/CacheItem.php', 'Symfony\\Component\\Cache\\CacheItem' => $vendorDir . '/symfony/cache/CacheItem.php',
'Symfony\\Component\\Cache\\DataCollector\\CacheDataCollector' => $vendorDir . '/symfony/cache/DataCollector/CacheDataCollector.php', 'Symfony\\Component\\Cache\\DataCollector\\CacheDataCollector' => $vendorDir . '/symfony/cache/DataCollector/CacheDataCollector.php',
'Symfony\\Component\\Cache\\DependencyInjection\\CacheCollectorPass' => $vendorDir . '/symfony/cache/DependencyInjection/CacheCollectorPass.php',
'Symfony\\Component\\Cache\\DependencyInjection\\CachePoolClearerPass' => $vendorDir . '/symfony/cache/DependencyInjection/CachePoolClearerPass.php',
'Symfony\\Component\\Cache\\DependencyInjection\\CachePoolPass' => $vendorDir . '/symfony/cache/DependencyInjection/CachePoolPass.php',
'Symfony\\Component\\Cache\\DependencyInjection\\CachePoolPrunerPass' => $vendorDir . '/symfony/cache/DependencyInjection/CachePoolPrunerPass.php',
'Symfony\\Component\\Cache\\DoctrineProvider' => $vendorDir . '/symfony/cache/DoctrineProvider.php', 'Symfony\\Component\\Cache\\DoctrineProvider' => $vendorDir . '/symfony/cache/DoctrineProvider.php',
'Symfony\\Component\\Cache\\Exception\\CacheException' => $vendorDir . '/symfony/cache/Exception/CacheException.php', 'Symfony\\Component\\Cache\\Exception\\CacheException' => $vendorDir . '/symfony/cache/Exception/CacheException.php',
'Symfony\\Component\\Cache\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/cache/Exception/InvalidArgumentException.php', 'Symfony\\Component\\Cache\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/cache/Exception/InvalidArgumentException.php',
'Symfony\\Component\\Cache\\Exception\\LogicException' => $vendorDir . '/symfony/cache/Exception/LogicException.php',
'Symfony\\Component\\Cache\\LockRegistry' => $vendorDir . '/symfony/cache/LockRegistry.php',
'Symfony\\Component\\Cache\\Marshaller\\DefaultMarshaller' => $vendorDir . '/symfony/cache/Marshaller/DefaultMarshaller.php',
'Symfony\\Component\\Cache\\Marshaller\\DeflateMarshaller' => $vendorDir . '/symfony/cache/Marshaller/DeflateMarshaller.php',
'Symfony\\Component\\Cache\\Marshaller\\MarshallerInterface' => $vendorDir . '/symfony/cache/Marshaller/MarshallerInterface.php',
'Symfony\\Component\\Cache\\Marshaller\\TagAwareMarshaller' => $vendorDir . '/symfony/cache/Marshaller/TagAwareMarshaller.php',
'Symfony\\Component\\Cache\\PruneableInterface' => $vendorDir . '/symfony/cache/PruneableInterface.php', 'Symfony\\Component\\Cache\\PruneableInterface' => $vendorDir . '/symfony/cache/PruneableInterface.php',
'Symfony\\Component\\Cache\\Psr16Cache' => $vendorDir . '/symfony/cache/Psr16Cache.php',
'Symfony\\Component\\Cache\\ResettableInterface' => $vendorDir . '/symfony/cache/ResettableInterface.php', 'Symfony\\Component\\Cache\\ResettableInterface' => $vendorDir . '/symfony/cache/ResettableInterface.php',
'Symfony\\Component\\Cache\\Simple\\AbstractCache' => $vendorDir . '/symfony/cache/Simple/AbstractCache.php', 'Symfony\\Component\\Cache\\Simple\\AbstractCache' => $vendorDir . '/symfony/cache/Simple/AbstractCache.php',
'Symfony\\Component\\Cache\\Simple\\ApcuCache' => $vendorDir . '/symfony/cache/Simple/ApcuCache.php', 'Symfony\\Component\\Cache\\Simple\\ApcuCache' => $vendorDir . '/symfony/cache/Simple/ApcuCache.php',
@ -189,22 +159,17 @@ return array(
'Symfony\\Component\\Cache\\Simple\\RedisCache' => $vendorDir . '/symfony/cache/Simple/RedisCache.php', 'Symfony\\Component\\Cache\\Simple\\RedisCache' => $vendorDir . '/symfony/cache/Simple/RedisCache.php',
'Symfony\\Component\\Cache\\Simple\\TraceableCache' => $vendorDir . '/symfony/cache/Simple/TraceableCache.php', 'Symfony\\Component\\Cache\\Simple\\TraceableCache' => $vendorDir . '/symfony/cache/Simple/TraceableCache.php',
'Symfony\\Component\\Cache\\Simple\\TraceableCacheEvent' => $vendorDir . '/symfony/cache/Simple/TraceableCache.php', 'Symfony\\Component\\Cache\\Simple\\TraceableCacheEvent' => $vendorDir . '/symfony/cache/Simple/TraceableCache.php',
'Symfony\\Component\\Cache\\Traits\\AbstractAdapterTrait' => $vendorDir . '/symfony/cache/Traits/AbstractAdapterTrait.php',
'Symfony\\Component\\Cache\\Traits\\AbstractTrait' => $vendorDir . '/symfony/cache/Traits/AbstractTrait.php', 'Symfony\\Component\\Cache\\Traits\\AbstractTrait' => $vendorDir . '/symfony/cache/Traits/AbstractTrait.php',
'Symfony\\Component\\Cache\\Traits\\ApcuTrait' => $vendorDir . '/symfony/cache/Traits/ApcuTrait.php', 'Symfony\\Component\\Cache\\Traits\\ApcuTrait' => $vendorDir . '/symfony/cache/Traits/ApcuTrait.php',
'Symfony\\Component\\Cache\\Traits\\ArrayTrait' => $vendorDir . '/symfony/cache/Traits/ArrayTrait.php', 'Symfony\\Component\\Cache\\Traits\\ArrayTrait' => $vendorDir . '/symfony/cache/Traits/ArrayTrait.php',
'Symfony\\Component\\Cache\\Traits\\ContractsTrait' => $vendorDir . '/symfony/cache/Traits/ContractsTrait.php',
'Symfony\\Component\\Cache\\Traits\\DoctrineTrait' => $vendorDir . '/symfony/cache/Traits/DoctrineTrait.php', 'Symfony\\Component\\Cache\\Traits\\DoctrineTrait' => $vendorDir . '/symfony/cache/Traits/DoctrineTrait.php',
'Symfony\\Component\\Cache\\Traits\\FilesystemCommonTrait' => $vendorDir . '/symfony/cache/Traits/FilesystemCommonTrait.php', 'Symfony\\Component\\Cache\\Traits\\FilesystemCommonTrait' => $vendorDir . '/symfony/cache/Traits/FilesystemCommonTrait.php',
'Symfony\\Component\\Cache\\Traits\\FilesystemTrait' => $vendorDir . '/symfony/cache/Traits/FilesystemTrait.php', 'Symfony\\Component\\Cache\\Traits\\FilesystemTrait' => $vendorDir . '/symfony/cache/Traits/FilesystemTrait.php',
'Symfony\\Component\\Cache\\Traits\\LazyValue' => $vendorDir . '/symfony/cache/Traits/PhpFilesTrait.php',
'Symfony\\Component\\Cache\\Traits\\MemcachedTrait' => $vendorDir . '/symfony/cache/Traits/MemcachedTrait.php', 'Symfony\\Component\\Cache\\Traits\\MemcachedTrait' => $vendorDir . '/symfony/cache/Traits/MemcachedTrait.php',
'Symfony\\Component\\Cache\\Traits\\PdoTrait' => $vendorDir . '/symfony/cache/Traits/PdoTrait.php', 'Symfony\\Component\\Cache\\Traits\\PdoTrait' => $vendorDir . '/symfony/cache/Traits/PdoTrait.php',
'Symfony\\Component\\Cache\\Traits\\PhpArrayTrait' => $vendorDir . '/symfony/cache/Traits/PhpArrayTrait.php', 'Symfony\\Component\\Cache\\Traits\\PhpArrayTrait' => $vendorDir . '/symfony/cache/Traits/PhpArrayTrait.php',
'Symfony\\Component\\Cache\\Traits\\PhpFilesTrait' => $vendorDir . '/symfony/cache/Traits/PhpFilesTrait.php', 'Symfony\\Component\\Cache\\Traits\\PhpFilesTrait' => $vendorDir . '/symfony/cache/Traits/PhpFilesTrait.php',
'Symfony\\Component\\Cache\\Traits\\ProxyTrait' => $vendorDir . '/symfony/cache/Traits/ProxyTrait.php', 'Symfony\\Component\\Cache\\Traits\\ProxyTrait' => $vendorDir . '/symfony/cache/Traits/ProxyTrait.php',
'Symfony\\Component\\Cache\\Traits\\RedisClusterNodeProxy' => $vendorDir . '/symfony/cache/Traits/RedisClusterNodeProxy.php',
'Symfony\\Component\\Cache\\Traits\\RedisClusterProxy' => $vendorDir . '/symfony/cache/Traits/RedisClusterProxy.php',
'Symfony\\Component\\Cache\\Traits\\RedisProxy' => $vendorDir . '/symfony/cache/Traits/RedisProxy.php', 'Symfony\\Component\\Cache\\Traits\\RedisProxy' => $vendorDir . '/symfony/cache/Traits/RedisProxy.php',
'Symfony\\Component\\Cache\\Traits\\RedisTrait' => $vendorDir . '/symfony/cache/Traits/RedisTrait.php', 'Symfony\\Component\\Cache\\Traits\\RedisTrait' => $vendorDir . '/symfony/cache/Traits/RedisTrait.php',
'Symfony\\Component\\ExpressionLanguage\\Compiler' => $vendorDir . '/symfony/expression-language/Compiler.php', 'Symfony\\Component\\ExpressionLanguage\\Compiler' => $vendorDir . '/symfony/expression-language/Compiler.php',
@ -232,32 +197,5 @@ return array(
'Symfony\\Component\\ExpressionLanguage\\SyntaxError' => $vendorDir . '/symfony/expression-language/SyntaxError.php', 'Symfony\\Component\\ExpressionLanguage\\SyntaxError' => $vendorDir . '/symfony/expression-language/SyntaxError.php',
'Symfony\\Component\\ExpressionLanguage\\Token' => $vendorDir . '/symfony/expression-language/Token.php', 'Symfony\\Component\\ExpressionLanguage\\Token' => $vendorDir . '/symfony/expression-language/Token.php',
'Symfony\\Component\\ExpressionLanguage\\TokenStream' => $vendorDir . '/symfony/expression-language/TokenStream.php', 'Symfony\\Component\\ExpressionLanguage\\TokenStream' => $vendorDir . '/symfony/expression-language/TokenStream.php',
'Symfony\\Component\\VarExporter\\Exception\\ClassNotFoundException' => $vendorDir . '/symfony/var-exporter/Exception/ClassNotFoundException.php', 'Symfony\\Polyfill\\Apcu\\Apcu' => $vendorDir . '/symfony/polyfill-apcu/Apcu.php',
'Symfony\\Component\\VarExporter\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/var-exporter/Exception/ExceptionInterface.php',
'Symfony\\Component\\VarExporter\\Exception\\NotInstantiableTypeException' => $vendorDir . '/symfony/var-exporter/Exception/NotInstantiableTypeException.php',
'Symfony\\Component\\VarExporter\\Instantiator' => $vendorDir . '/symfony/var-exporter/Instantiator.php',
'Symfony\\Component\\VarExporter\\Internal\\Exporter' => $vendorDir . '/symfony/var-exporter/Internal/Exporter.php',
'Symfony\\Component\\VarExporter\\Internal\\Hydrator' => $vendorDir . '/symfony/var-exporter/Internal/Hydrator.php',
'Symfony\\Component\\VarExporter\\Internal\\Reference' => $vendorDir . '/symfony/var-exporter/Internal/Reference.php',
'Symfony\\Component\\VarExporter\\Internal\\Registry' => $vendorDir . '/symfony/var-exporter/Internal/Registry.php',
'Symfony\\Component\\VarExporter\\Internal\\Values' => $vendorDir . '/symfony/var-exporter/Internal/Values.php',
'Symfony\\Component\\VarExporter\\VarExporter' => $vendorDir . '/symfony/var-exporter/VarExporter.php',
'Symfony\\Contracts\\Cache\\CacheInterface' => $vendorDir . '/symfony/cache-contracts/CacheInterface.php',
'Symfony\\Contracts\\Cache\\CacheTrait' => $vendorDir . '/symfony/cache-contracts/CacheTrait.php',
'Symfony\\Contracts\\Cache\\CallbackInterface' => $vendorDir . '/symfony/cache-contracts/CallbackInterface.php',
'Symfony\\Contracts\\Cache\\ItemInterface' => $vendorDir . '/symfony/cache-contracts/ItemInterface.php',
'Symfony\\Contracts\\Cache\\TagAwareCacheInterface' => $vendorDir . '/symfony/cache-contracts/TagAwareCacheInterface.php',
'Symfony\\Contracts\\Service\\Attribute\\Required' => $vendorDir . '/symfony/service-contracts/Attribute/Required.php',
'Symfony\\Contracts\\Service\\Attribute\\SubscribedService' => $vendorDir . '/symfony/service-contracts/Attribute/SubscribedService.php',
'Symfony\\Contracts\\Service\\ResetInterface' => $vendorDir . '/symfony/service-contracts/ResetInterface.php',
'Symfony\\Contracts\\Service\\ServiceLocatorTrait' => $vendorDir . '/symfony/service-contracts/ServiceLocatorTrait.php',
'Symfony\\Contracts\\Service\\ServiceProviderInterface' => $vendorDir . '/symfony/service-contracts/ServiceProviderInterface.php',
'Symfony\\Contracts\\Service\\ServiceSubscriberInterface' => $vendorDir . '/symfony/service-contracts/ServiceSubscriberInterface.php',
'Symfony\\Contracts\\Service\\ServiceSubscriberTrait' => $vendorDir . '/symfony/service-contracts/ServiceSubscriberTrait.php',
'Symfony\\Contracts\\Service\\Test\\ServiceLocatorTest' => $vendorDir . '/symfony/service-contracts/Test/ServiceLocatorTest.php',
'Symfony\\Polyfill\\Php73\\Php73' => $vendorDir . '/symfony/polyfill-php73/Php73.php',
'Symfony\\Polyfill\\Php80\\Php80' => $vendorDir . '/symfony/polyfill-php80/Php80.php',
'Symfony\\Polyfill\\Php80\\PhpToken' => $vendorDir . '/symfony/polyfill-php80/PhpToken.php',
'UnhandledMatchError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php',
'ValueError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/ValueError.php',
); );

View file

@ -6,8 +6,6 @@ $vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir); $baseDir = dirname($vendorDir);
return array( return array(
'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php', '32dcc8afd4335739640db7d200c1971d' => $vendorDir . '/symfony/polyfill-apcu/bootstrap.php',
'6e3fae29631ef280660b3cdad06f25a8' => $vendorDir . '/symfony/deprecation-contracts/function.php',
'0d59ee240a4cd96ddbb4ff164fccea4d' => $vendorDir . '/symfony/polyfill-php73/bootstrap.php',
'253c157292f75eb38082b5acb06f3f01' => $vendorDir . '/nikic/fast-route/src/functions.php', '253c157292f75eb38082b5acb06f3f01' => $vendorDir . '/nikic/fast-route/src/functions.php',
); );

View file

@ -6,4 +6,5 @@ $vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir); $baseDir = dirname($vendorDir);
return array( return array(
'Pimple' => array($vendorDir . '/pimple/pimple/src'),
); );

View file

@ -6,18 +6,15 @@ $vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir); $baseDir = dirname($vendorDir);
return array( return array(
'Symfony\\Polyfill\\Php80\\' => array($vendorDir . '/symfony/polyfill-php80'), 'Symfony\\Polyfill\\Apcu\\' => array($vendorDir . '/symfony/polyfill-apcu'),
'Symfony\\Polyfill\\Php73\\' => array($vendorDir . '/symfony/polyfill-php73'),
'Symfony\\Contracts\\Service\\' => array($vendorDir . '/symfony/service-contracts'),
'Symfony\\Contracts\\Cache\\' => array($vendorDir . '/symfony/cache-contracts'),
'Symfony\\Component\\VarExporter\\' => array($vendorDir . '/symfony/var-exporter'),
'Symfony\\Component\\ExpressionLanguage\\' => array($vendorDir . '/symfony/expression-language'), 'Symfony\\Component\\ExpressionLanguage\\' => array($vendorDir . '/symfony/expression-language'),
'Symfony\\Component\\Cache\\' => array($vendorDir . '/symfony/cache'), 'Symfony\\Component\\Cache\\' => array($vendorDir . '/symfony/cache'),
'Slim\\' => array($vendorDir . '/slim/slim/Slim'), 'Slim\\' => array($vendorDir . '/slim/slim/Slim'),
'Psr\\SimpleCache\\' => array($vendorDir . '/psr/simple-cache/src'),
'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'), 'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'),
'Psr\\Http\\Server\\' => array($vendorDir . '/psr/http-server-handler/src', $vendorDir . '/psr/http-server-middleware/src'), 'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-message/src'),
'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-factory/src', $vendorDir . '/psr/http-message/src'),
'Psr\\Container\\' => array($vendorDir . '/psr/container/src'), 'Psr\\Container\\' => array($vendorDir . '/psr/container/src'),
'Psr\\Cache\\' => array($vendorDir . '/psr/cache/src'), 'Psr\\Cache\\' => array($vendorDir . '/psr/cache/src'),
'Interop\\Container\\' => array($vendorDir . '/container-interop/container-interop/src/Interop/Container'),
'FastRoute\\' => array($vendorDir . '/nikic/fast-route/src'), 'FastRoute\\' => array($vendorDir . '/nikic/fast-route/src'),
); );

View file

@ -13,9 +13,6 @@ class ComposerAutoloaderInitAdvancedContentFilterAddon
} }
} }
/**
* @return \Composer\Autoload\ClassLoader
*/
public static function getLoader() public static function getLoader()
{ {
if (null !== self::$loader) { if (null !== self::$loader) {

View file

@ -7,32 +7,30 @@ namespace Composer\Autoload;
class ComposerStaticInitAdvancedContentFilterAddon class ComposerStaticInitAdvancedContentFilterAddon
{ {
public static $files = array ( public static $files = array (
'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php', '32dcc8afd4335739640db7d200c1971d' => __DIR__ . '/..' . '/symfony/polyfill-apcu/bootstrap.php',
'6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php',
'0d59ee240a4cd96ddbb4ff164fccea4d' => __DIR__ . '/..' . '/symfony/polyfill-php73/bootstrap.php',
'253c157292f75eb38082b5acb06f3f01' => __DIR__ . '/..' . '/nikic/fast-route/src/functions.php', '253c157292f75eb38082b5acb06f3f01' => __DIR__ . '/..' . '/nikic/fast-route/src/functions.php',
); );
public static $prefixLengthsPsr4 = array ( public static $prefixLengthsPsr4 = array (
'S' => 'S' =>
array ( array (
'Symfony\\Polyfill\\Php80\\' => 23, 'Symfony\\Polyfill\\Apcu\\' => 22,
'Symfony\\Polyfill\\Php73\\' => 23,
'Symfony\\Contracts\\Service\\' => 26,
'Symfony\\Contracts\\Cache\\' => 24,
'Symfony\\Component\\VarExporter\\' => 30,
'Symfony\\Component\\ExpressionLanguage\\' => 37, 'Symfony\\Component\\ExpressionLanguage\\' => 37,
'Symfony\\Component\\Cache\\' => 24, 'Symfony\\Component\\Cache\\' => 24,
'Slim\\' => 5, 'Slim\\' => 5,
), ),
'P' => 'P' =>
array ( array (
'Psr\\SimpleCache\\' => 16,
'Psr\\Log\\' => 8, 'Psr\\Log\\' => 8,
'Psr\\Http\\Server\\' => 16,
'Psr\\Http\\Message\\' => 17, 'Psr\\Http\\Message\\' => 17,
'Psr\\Container\\' => 14, 'Psr\\Container\\' => 14,
'Psr\\Cache\\' => 10, 'Psr\\Cache\\' => 10,
), ),
'I' =>
array (
'Interop\\Container\\' => 18,
),
'F' => 'F' =>
array ( array (
'FastRoute\\' => 10, 'FastRoute\\' => 10,
@ -40,25 +38,9 @@ class ComposerStaticInitAdvancedContentFilterAddon
); );
public static $prefixDirsPsr4 = array ( public static $prefixDirsPsr4 = array (
'Symfony\\Polyfill\\Php80\\' => 'Symfony\\Polyfill\\Apcu\\' =>
array ( array (
0 => __DIR__ . '/..' . '/symfony/polyfill-php80', 0 => __DIR__ . '/..' . '/symfony/polyfill-apcu',
),
'Symfony\\Polyfill\\Php73\\' =>
array (
0 => __DIR__ . '/..' . '/symfony/polyfill-php73',
),
'Symfony\\Contracts\\Service\\' =>
array (
0 => __DIR__ . '/..' . '/symfony/service-contracts',
),
'Symfony\\Contracts\\Cache\\' =>
array (
0 => __DIR__ . '/..' . '/symfony/cache-contracts',
),
'Symfony\\Component\\VarExporter\\' =>
array (
0 => __DIR__ . '/..' . '/symfony/var-exporter',
), ),
'Symfony\\Component\\ExpressionLanguage\\' => 'Symfony\\Component\\ExpressionLanguage\\' =>
array ( array (
@ -72,19 +54,17 @@ class ComposerStaticInitAdvancedContentFilterAddon
array ( array (
0 => __DIR__ . '/..' . '/slim/slim/Slim', 0 => __DIR__ . '/..' . '/slim/slim/Slim',
), ),
'Psr\\SimpleCache\\' =>
array (
0 => __DIR__ . '/..' . '/psr/simple-cache/src',
),
'Psr\\Log\\' => 'Psr\\Log\\' =>
array ( array (
0 => __DIR__ . '/..' . '/psr/log/Psr/Log', 0 => __DIR__ . '/..' . '/psr/log/Psr/Log',
), ),
'Psr\\Http\\Server\\' =>
array (
0 => __DIR__ . '/..' . '/psr/http-server-handler/src',
1 => __DIR__ . '/..' . '/psr/http-server-middleware/src',
),
'Psr\\Http\\Message\\' => 'Psr\\Http\\Message\\' =>
array ( array (
0 => __DIR__ . '/..' . '/psr/http-factory/src', 0 => __DIR__ . '/..' . '/psr/http-message/src',
1 => __DIR__ . '/..' . '/psr/http-message/src',
), ),
'Psr\\Container\\' => 'Psr\\Container\\' =>
array ( array (
@ -94,14 +74,27 @@ class ComposerStaticInitAdvancedContentFilterAddon
array ( array (
0 => __DIR__ . '/..' . '/psr/cache/src', 0 => __DIR__ . '/..' . '/psr/cache/src',
), ),
'Interop\\Container\\' =>
array (
0 => __DIR__ . '/..' . '/container-interop/container-interop/src/Interop/Container',
),
'FastRoute\\' => 'FastRoute\\' =>
array ( array (
0 => __DIR__ . '/..' . '/nikic/fast-route/src', 0 => __DIR__ . '/..' . '/nikic/fast-route/src',
), ),
); );
public static $prefixesPsr0 = array (
'P' =>
array (
'Pimple' =>
array (
0 => __DIR__ . '/..' . '/pimple/pimple/src',
),
),
);
public static $classMap = array ( public static $classMap = array (
'Attribute' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Attribute.php',
'FastRoute\\BadRouteException' => __DIR__ . '/..' . '/nikic/fast-route/src/BadRouteException.php', 'FastRoute\\BadRouteException' => __DIR__ . '/..' . '/nikic/fast-route/src/BadRouteException.php',
'FastRoute\\DataGenerator' => __DIR__ . '/..' . '/nikic/fast-route/src/DataGenerator.php', 'FastRoute\\DataGenerator' => __DIR__ . '/..' . '/nikic/fast-route/src/DataGenerator.php',
'FastRoute\\DataGenerator\\CharCountBased' => __DIR__ . '/..' . '/nikic/fast-route/src/DataGenerator/CharCountBased.php', 'FastRoute\\DataGenerator\\CharCountBased' => __DIR__ . '/..' . '/nikic/fast-route/src/DataGenerator/CharCountBased.php',
@ -119,8 +112,27 @@ class ComposerStaticInitAdvancedContentFilterAddon
'FastRoute\\RouteCollector' => __DIR__ . '/..' . '/nikic/fast-route/src/RouteCollector.php', 'FastRoute\\RouteCollector' => __DIR__ . '/..' . '/nikic/fast-route/src/RouteCollector.php',
'FastRoute\\RouteParser' => __DIR__ . '/..' . '/nikic/fast-route/src/RouteParser.php', 'FastRoute\\RouteParser' => __DIR__ . '/..' . '/nikic/fast-route/src/RouteParser.php',
'FastRoute\\RouteParser\\Std' => __DIR__ . '/..' . '/nikic/fast-route/src/RouteParser/Std.php', 'FastRoute\\RouteParser\\Std' => __DIR__ . '/..' . '/nikic/fast-route/src/RouteParser/Std.php',
'JsonException' => __DIR__ . '/..' . '/symfony/polyfill-php73/Resources/stubs/JsonException.php', 'Interop\\Container\\ContainerInterface' => __DIR__ . '/..' . '/container-interop/container-interop/src/Interop/Container/ContainerInterface.php',
'PhpToken' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php', 'Interop\\Container\\Exception\\ContainerException' => __DIR__ . '/..' . '/container-interop/container-interop/src/Interop/Container/Exception/ContainerException.php',
'Interop\\Container\\Exception\\NotFoundException' => __DIR__ . '/..' . '/container-interop/container-interop/src/Interop/Container/Exception/NotFoundException.php',
'Pimple\\Container' => __DIR__ . '/..' . '/pimple/pimple/src/Pimple/Container.php',
'Pimple\\Exception\\ExpectedInvokableException' => __DIR__ . '/..' . '/pimple/pimple/src/Pimple/Exception/ExpectedInvokableException.php',
'Pimple\\Exception\\FrozenServiceException' => __DIR__ . '/..' . '/pimple/pimple/src/Pimple/Exception/FrozenServiceException.php',
'Pimple\\Exception\\InvalidServiceIdentifierException' => __DIR__ . '/..' . '/pimple/pimple/src/Pimple/Exception/InvalidServiceIdentifierException.php',
'Pimple\\Exception\\UnknownIdentifierException' => __DIR__ . '/..' . '/pimple/pimple/src/Pimple/Exception/UnknownIdentifierException.php',
'Pimple\\Psr11\\Container' => __DIR__ . '/..' . '/pimple/pimple/src/Pimple/Psr11/Container.php',
'Pimple\\Psr11\\ServiceLocator' => __DIR__ . '/..' . '/pimple/pimple/src/Pimple/Psr11/ServiceLocator.php',
'Pimple\\ServiceIterator' => __DIR__ . '/..' . '/pimple/pimple/src/Pimple/ServiceIterator.php',
'Pimple\\ServiceProviderInterface' => __DIR__ . '/..' . '/pimple/pimple/src/Pimple/ServiceProviderInterface.php',
'Pimple\\Tests\\Fixtures\\Invokable' => __DIR__ . '/..' . '/pimple/pimple/src/Pimple/Tests/Fixtures/Invokable.php',
'Pimple\\Tests\\Fixtures\\NonInvokable' => __DIR__ . '/..' . '/pimple/pimple/src/Pimple/Tests/Fixtures/NonInvokable.php',
'Pimple\\Tests\\Fixtures\\PimpleServiceProvider' => __DIR__ . '/..' . '/pimple/pimple/src/Pimple/Tests/Fixtures/PimpleServiceProvider.php',
'Pimple\\Tests\\Fixtures\\Service' => __DIR__ . '/..' . '/pimple/pimple/src/Pimple/Tests/Fixtures/Service.php',
'Pimple\\Tests\\PimpleServiceProviderInterfaceTest' => __DIR__ . '/..' . '/pimple/pimple/src/Pimple/Tests/PimpleServiceProviderInterfaceTest.php',
'Pimple\\Tests\\PimpleTest' => __DIR__ . '/..' . '/pimple/pimple/src/Pimple/Tests/PimpleTest.php',
'Pimple\\Tests\\Psr11\\ContainerTest' => __DIR__ . '/..' . '/pimple/pimple/src/Pimple/Tests/Psr11/ContainerTest.php',
'Pimple\\Tests\\Psr11\\ServiceLocatorTest' => __DIR__ . '/..' . '/pimple/pimple/src/Pimple/Tests/Psr11/ServiceLocatorTest.php',
'Pimple\\Tests\\ServiceIteratorTest' => __DIR__ . '/..' . '/pimple/pimple/src/Pimple/Tests/ServiceIteratorTest.php',
'Psr\\Cache\\CacheException' => __DIR__ . '/..' . '/psr/cache/src/CacheException.php', 'Psr\\Cache\\CacheException' => __DIR__ . '/..' . '/psr/cache/src/CacheException.php',
'Psr\\Cache\\CacheItemInterface' => __DIR__ . '/..' . '/psr/cache/src/CacheItemInterface.php', 'Psr\\Cache\\CacheItemInterface' => __DIR__ . '/..' . '/psr/cache/src/CacheItemInterface.php',
'Psr\\Cache\\CacheItemPoolInterface' => __DIR__ . '/..' . '/psr/cache/src/CacheItemPoolInterface.php', 'Psr\\Cache\\CacheItemPoolInterface' => __DIR__ . '/..' . '/psr/cache/src/CacheItemPoolInterface.php',
@ -129,20 +141,12 @@ class ComposerStaticInitAdvancedContentFilterAddon
'Psr\\Container\\ContainerInterface' => __DIR__ . '/..' . '/psr/container/src/ContainerInterface.php', 'Psr\\Container\\ContainerInterface' => __DIR__ . '/..' . '/psr/container/src/ContainerInterface.php',
'Psr\\Container\\NotFoundExceptionInterface' => __DIR__ . '/..' . '/psr/container/src/NotFoundExceptionInterface.php', 'Psr\\Container\\NotFoundExceptionInterface' => __DIR__ . '/..' . '/psr/container/src/NotFoundExceptionInterface.php',
'Psr\\Http\\Message\\MessageInterface' => __DIR__ . '/..' . '/psr/http-message/src/MessageInterface.php', 'Psr\\Http\\Message\\MessageInterface' => __DIR__ . '/..' . '/psr/http-message/src/MessageInterface.php',
'Psr\\Http\\Message\\RequestFactoryInterface' => __DIR__ . '/..' . '/psr/http-factory/src/RequestFactoryInterface.php',
'Psr\\Http\\Message\\RequestInterface' => __DIR__ . '/..' . '/psr/http-message/src/RequestInterface.php', 'Psr\\Http\\Message\\RequestInterface' => __DIR__ . '/..' . '/psr/http-message/src/RequestInterface.php',
'Psr\\Http\\Message\\ResponseFactoryInterface' => __DIR__ . '/..' . '/psr/http-factory/src/ResponseFactoryInterface.php',
'Psr\\Http\\Message\\ResponseInterface' => __DIR__ . '/..' . '/psr/http-message/src/ResponseInterface.php', 'Psr\\Http\\Message\\ResponseInterface' => __DIR__ . '/..' . '/psr/http-message/src/ResponseInterface.php',
'Psr\\Http\\Message\\ServerRequestFactoryInterface' => __DIR__ . '/..' . '/psr/http-factory/src/ServerRequestFactoryInterface.php',
'Psr\\Http\\Message\\ServerRequestInterface' => __DIR__ . '/..' . '/psr/http-message/src/ServerRequestInterface.php', 'Psr\\Http\\Message\\ServerRequestInterface' => __DIR__ . '/..' . '/psr/http-message/src/ServerRequestInterface.php',
'Psr\\Http\\Message\\StreamFactoryInterface' => __DIR__ . '/..' . '/psr/http-factory/src/StreamFactoryInterface.php',
'Psr\\Http\\Message\\StreamInterface' => __DIR__ . '/..' . '/psr/http-message/src/StreamInterface.php', 'Psr\\Http\\Message\\StreamInterface' => __DIR__ . '/..' . '/psr/http-message/src/StreamInterface.php',
'Psr\\Http\\Message\\UploadedFileFactoryInterface' => __DIR__ . '/..' . '/psr/http-factory/src/UploadedFileFactoryInterface.php',
'Psr\\Http\\Message\\UploadedFileInterface' => __DIR__ . '/..' . '/psr/http-message/src/UploadedFileInterface.php', 'Psr\\Http\\Message\\UploadedFileInterface' => __DIR__ . '/..' . '/psr/http-message/src/UploadedFileInterface.php',
'Psr\\Http\\Message\\UriFactoryInterface' => __DIR__ . '/..' . '/psr/http-factory/src/UriFactoryInterface.php',
'Psr\\Http\\Message\\UriInterface' => __DIR__ . '/..' . '/psr/http-message/src/UriInterface.php', 'Psr\\Http\\Message\\UriInterface' => __DIR__ . '/..' . '/psr/http-message/src/UriInterface.php',
'Psr\\Http\\Server\\MiddlewareInterface' => __DIR__ . '/..' . '/psr/http-server-middleware/src/MiddlewareInterface.php',
'Psr\\Http\\Server\\RequestHandlerInterface' => __DIR__ . '/..' . '/psr/http-server-handler/src/RequestHandlerInterface.php',
'Psr\\Log\\AbstractLogger' => __DIR__ . '/..' . '/psr/log/Psr/Log/AbstractLogger.php', 'Psr\\Log\\AbstractLogger' => __DIR__ . '/..' . '/psr/log/Psr/Log/AbstractLogger.php',
'Psr\\Log\\InvalidArgumentException' => __DIR__ . '/..' . '/psr/log/Psr/Log/InvalidArgumentException.php', 'Psr\\Log\\InvalidArgumentException' => __DIR__ . '/..' . '/psr/log/Psr/Log/InvalidArgumentException.php',
'Psr\\Log\\LogLevel' => __DIR__ . '/..' . '/psr/log/Psr/Log/LogLevel.php', 'Psr\\Log\\LogLevel' => __DIR__ . '/..' . '/psr/log/Psr/Log/LogLevel.php',
@ -151,100 +155,71 @@ class ComposerStaticInitAdvancedContentFilterAddon
'Psr\\Log\\LoggerInterface' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerInterface.php', 'Psr\\Log\\LoggerInterface' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerInterface.php',
'Psr\\Log\\LoggerTrait' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerTrait.php', 'Psr\\Log\\LoggerTrait' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerTrait.php',
'Psr\\Log\\NullLogger' => __DIR__ . '/..' . '/psr/log/Psr/Log/NullLogger.php', 'Psr\\Log\\NullLogger' => __DIR__ . '/..' . '/psr/log/Psr/Log/NullLogger.php',
'Psr\\Log\\Test\\DummyTest' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/DummyTest.php', 'Psr\\Log\\Test\\DummyTest' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php',
'Psr\\Log\\Test\\LoggerInterfaceTest' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php', 'Psr\\Log\\Test\\LoggerInterfaceTest' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php',
'Psr\\Log\\Test\\TestLogger' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/TestLogger.php', 'Psr\\SimpleCache\\CacheException' => __DIR__ . '/..' . '/psr/simple-cache/src/CacheException.php',
'Psr\\SimpleCache\\CacheInterface' => __DIR__ . '/..' . '/psr/simple-cache/src/CacheInterface.php',
'Psr\\SimpleCache\\InvalidArgumentException' => __DIR__ . '/..' . '/psr/simple-cache/src/InvalidArgumentException.php',
'Slim\\App' => __DIR__ . '/..' . '/slim/slim/Slim/App.php', 'Slim\\App' => __DIR__ . '/..' . '/slim/slim/Slim/App.php',
'Slim\\CallableResolver' => __DIR__ . '/..' . '/slim/slim/Slim/CallableResolver.php', 'Slim\\CallableResolver' => __DIR__ . '/..' . '/slim/slim/Slim/CallableResolver.php',
'Slim\\Error\\AbstractErrorRenderer' => __DIR__ . '/..' . '/slim/slim/Slim/Error/AbstractErrorRenderer.php', 'Slim\\CallableResolverAwareTrait' => __DIR__ . '/..' . '/slim/slim/Slim/CallableResolverAwareTrait.php',
'Slim\\Error\\Renderers\\HtmlErrorRenderer' => __DIR__ . '/..' . '/slim/slim/Slim/Error/Renderers/HtmlErrorRenderer.php', 'Slim\\Collection' => __DIR__ . '/..' . '/slim/slim/Slim/Collection.php',
'Slim\\Error\\Renderers\\JsonErrorRenderer' => __DIR__ . '/..' . '/slim/slim/Slim/Error/Renderers/JsonErrorRenderer.php', 'Slim\\Container' => __DIR__ . '/..' . '/slim/slim/Slim/Container.php',
'Slim\\Error\\Renderers\\PlainTextErrorRenderer' => __DIR__ . '/..' . '/slim/slim/Slim/Error/Renderers/PlainTextErrorRenderer.php', 'Slim\\DefaultServicesProvider' => __DIR__ . '/..' . '/slim/slim/Slim/DefaultServicesProvider.php',
'Slim\\Error\\Renderers\\XmlErrorRenderer' => __DIR__ . '/..' . '/slim/slim/Slim/Error/Renderers/XmlErrorRenderer.php', 'Slim\\DeferredCallable' => __DIR__ . '/..' . '/slim/slim/Slim/DeferredCallable.php',
'Slim\\Exception\\HttpBadRequestException' => __DIR__ . '/..' . '/slim/slim/Slim/Exception/HttpBadRequestException.php', 'Slim\\Exception\\ContainerException' => __DIR__ . '/..' . '/slim/slim/Slim/Exception/ContainerException.php',
'Slim\\Exception\\HttpException' => __DIR__ . '/..' . '/slim/slim/Slim/Exception/HttpException.php', 'Slim\\Exception\\ContainerValueNotFoundException' => __DIR__ . '/..' . '/slim/slim/Slim/Exception/ContainerValueNotFoundException.php',
'Slim\\Exception\\HttpForbiddenException' => __DIR__ . '/..' . '/slim/slim/Slim/Exception/HttpForbiddenException.php', 'Slim\\Exception\\InvalidMethodException' => __DIR__ . '/..' . '/slim/slim/Slim/Exception/InvalidMethodException.php',
'Slim\\Exception\\HttpGoneException' => __DIR__ . '/..' . '/slim/slim/Slim/Exception/HttpGoneException.php', 'Slim\\Exception\\MethodNotAllowedException' => __DIR__ . '/..' . '/slim/slim/Slim/Exception/MethodNotAllowedException.php',
'Slim\\Exception\\HttpInternalServerErrorException' => __DIR__ . '/..' . '/slim/slim/Slim/Exception/HttpInternalServerErrorException.php', 'Slim\\Exception\\NotFoundException' => __DIR__ . '/..' . '/slim/slim/Slim/Exception/NotFoundException.php',
'Slim\\Exception\\HttpMethodNotAllowedException' => __DIR__ . '/..' . '/slim/slim/Slim/Exception/HttpMethodNotAllowedException.php', 'Slim\\Exception\\SlimException' => __DIR__ . '/..' . '/slim/slim/Slim/Exception/SlimException.php',
'Slim\\Exception\\HttpNotFoundException' => __DIR__ . '/..' . '/slim/slim/Slim/Exception/HttpNotFoundException.php', 'Slim\\Handlers\\AbstractError' => __DIR__ . '/..' . '/slim/slim/Slim/Handlers/AbstractError.php',
'Slim\\Exception\\HttpNotImplementedException' => __DIR__ . '/..' . '/slim/slim/Slim/Exception/HttpNotImplementedException.php', 'Slim\\Handlers\\AbstractHandler' => __DIR__ . '/..' . '/slim/slim/Slim/Handlers/AbstractHandler.php',
'Slim\\Exception\\HttpSpecializedException' => __DIR__ . '/..' . '/slim/slim/Slim/Exception/HttpSpecializedException.php', 'Slim\\Handlers\\Error' => __DIR__ . '/..' . '/slim/slim/Slim/Handlers/Error.php',
'Slim\\Exception\\HttpTooManyRequestsException' => __DIR__ . '/..' . '/slim/slim/Slim/Exception/HttpTooManyRequestsException.php', 'Slim\\Handlers\\NotAllowed' => __DIR__ . '/..' . '/slim/slim/Slim/Handlers/NotAllowed.php',
'Slim\\Exception\\HttpUnauthorizedException' => __DIR__ . '/..' . '/slim/slim/Slim/Exception/HttpUnauthorizedException.php', 'Slim\\Handlers\\NotFound' => __DIR__ . '/..' . '/slim/slim/Slim/Handlers/NotFound.php',
'Slim\\Factory\\AppFactory' => __DIR__ . '/..' . '/slim/slim/Slim/Factory/AppFactory.php', 'Slim\\Handlers\\PhpError' => __DIR__ . '/..' . '/slim/slim/Slim/Handlers/PhpError.php',
'Slim\\Factory\\Psr17\\GuzzlePsr17Factory' => __DIR__ . '/..' . '/slim/slim/Slim/Factory/Psr17/GuzzlePsr17Factory.php',
'Slim\\Factory\\Psr17\\HttpSoftPsr17Factory' => __DIR__ . '/..' . '/slim/slim/Slim/Factory/Psr17/HttpSoftPsr17Factory.php',
'Slim\\Factory\\Psr17\\LaminasDiactorosPsr17Factory' => __DIR__ . '/..' . '/slim/slim/Slim/Factory/Psr17/LaminasDiactorosPsr17Factory.php',
'Slim\\Factory\\Psr17\\NyholmPsr17Factory' => __DIR__ . '/..' . '/slim/slim/Slim/Factory/Psr17/NyholmPsr17Factory.php',
'Slim\\Factory\\Psr17\\Psr17Factory' => __DIR__ . '/..' . '/slim/slim/Slim/Factory/Psr17/Psr17Factory.php',
'Slim\\Factory\\Psr17\\Psr17FactoryProvider' => __DIR__ . '/..' . '/slim/slim/Slim/Factory/Psr17/Psr17FactoryProvider.php',
'Slim\\Factory\\Psr17\\ServerRequestCreator' => __DIR__ . '/..' . '/slim/slim/Slim/Factory/Psr17/ServerRequestCreator.php',
'Slim\\Factory\\Psr17\\SlimHttpPsr17Factory' => __DIR__ . '/..' . '/slim/slim/Slim/Factory/Psr17/SlimHttpPsr17Factory.php',
'Slim\\Factory\\Psr17\\SlimHttpServerRequestCreator' => __DIR__ . '/..' . '/slim/slim/Slim/Factory/Psr17/SlimHttpServerRequestCreator.php',
'Slim\\Factory\\Psr17\\SlimPsr17Factory' => __DIR__ . '/..' . '/slim/slim/Slim/Factory/Psr17/SlimPsr17Factory.php',
'Slim\\Factory\\ServerRequestCreatorFactory' => __DIR__ . '/..' . '/slim/slim/Slim/Factory/ServerRequestCreatorFactory.php',
'Slim\\Handlers\\ErrorHandler' => __DIR__ . '/..' . '/slim/slim/Slim/Handlers/ErrorHandler.php',
'Slim\\Handlers\\Strategies\\RequestHandler' => __DIR__ . '/..' . '/slim/slim/Slim/Handlers/Strategies/RequestHandler.php',
'Slim\\Handlers\\Strategies\\RequestResponse' => __DIR__ . '/..' . '/slim/slim/Slim/Handlers/Strategies/RequestResponse.php', 'Slim\\Handlers\\Strategies\\RequestResponse' => __DIR__ . '/..' . '/slim/slim/Slim/Handlers/Strategies/RequestResponse.php',
'Slim\\Handlers\\Strategies\\RequestResponseArgs' => __DIR__ . '/..' . '/slim/slim/Slim/Handlers/Strategies/RequestResponseArgs.php', 'Slim\\Handlers\\Strategies\\RequestResponseArgs' => __DIR__ . '/..' . '/slim/slim/Slim/Handlers/Strategies/RequestResponseArgs.php',
'Slim\\Handlers\\Strategies\\RequestResponseNamedArgs' => __DIR__ . '/..' . '/slim/slim/Slim/Handlers/Strategies/RequestResponseNamedArgs.php', 'Slim\\Http\\Body' => __DIR__ . '/..' . '/slim/slim/Slim/Http/Body.php',
'Slim\\Interfaces\\AdvancedCallableResolverInterface' => __DIR__ . '/..' . '/slim/slim/Slim/Interfaces/AdvancedCallableResolverInterface.php', 'Slim\\Http\\Cookies' => __DIR__ . '/..' . '/slim/slim/Slim/Http/Cookies.php',
'Slim\\Http\\Environment' => __DIR__ . '/..' . '/slim/slim/Slim/Http/Environment.php',
'Slim\\Http\\Headers' => __DIR__ . '/..' . '/slim/slim/Slim/Http/Headers.php',
'Slim\\Http\\Message' => __DIR__ . '/..' . '/slim/slim/Slim/Http/Message.php',
'Slim\\Http\\Request' => __DIR__ . '/..' . '/slim/slim/Slim/Http/Request.php',
'Slim\\Http\\RequestBody' => __DIR__ . '/..' . '/slim/slim/Slim/Http/RequestBody.php',
'Slim\\Http\\Response' => __DIR__ . '/..' . '/slim/slim/Slim/Http/Response.php',
'Slim\\Http\\Stream' => __DIR__ . '/..' . '/slim/slim/Slim/Http/Stream.php',
'Slim\\Http\\UploadedFile' => __DIR__ . '/..' . '/slim/slim/Slim/Http/UploadedFile.php',
'Slim\\Http\\Uri' => __DIR__ . '/..' . '/slim/slim/Slim/Http/Uri.php',
'Slim\\Interfaces\\CallableResolverInterface' => __DIR__ . '/..' . '/slim/slim/Slim/Interfaces/CallableResolverInterface.php', 'Slim\\Interfaces\\CallableResolverInterface' => __DIR__ . '/..' . '/slim/slim/Slim/Interfaces/CallableResolverInterface.php',
'Slim\\Interfaces\\DispatcherInterface' => __DIR__ . '/..' . '/slim/slim/Slim/Interfaces/DispatcherInterface.php', 'Slim\\Interfaces\\CollectionInterface' => __DIR__ . '/..' . '/slim/slim/Slim/Interfaces/CollectionInterface.php',
'Slim\\Interfaces\\ErrorHandlerInterface' => __DIR__ . '/..' . '/slim/slim/Slim/Interfaces/ErrorHandlerInterface.php', 'Slim\\Interfaces\\Http\\CookiesInterface' => __DIR__ . '/..' . '/slim/slim/Slim/Interfaces/Http/CookiesInterface.php',
'Slim\\Interfaces\\ErrorRendererInterface' => __DIR__ . '/..' . '/slim/slim/Slim/Interfaces/ErrorRendererInterface.php', 'Slim\\Interfaces\\Http\\EnvironmentInterface' => __DIR__ . '/..' . '/slim/slim/Slim/Interfaces/Http/EnvironmentInterface.php',
'Slim\\Interfaces\\Http\\HeadersInterface' => __DIR__ . '/..' . '/slim/slim/Slim/Interfaces/Http/HeadersInterface.php',
'Slim\\Interfaces\\InvocationStrategyInterface' => __DIR__ . '/..' . '/slim/slim/Slim/Interfaces/InvocationStrategyInterface.php', 'Slim\\Interfaces\\InvocationStrategyInterface' => __DIR__ . '/..' . '/slim/slim/Slim/Interfaces/InvocationStrategyInterface.php',
'Slim\\Interfaces\\MiddlewareDispatcherInterface' => __DIR__ . '/..' . '/slim/slim/Slim/Interfaces/MiddlewareDispatcherInterface.php',
'Slim\\Interfaces\\Psr17FactoryInterface' => __DIR__ . '/..' . '/slim/slim/Slim/Interfaces/Psr17FactoryInterface.php',
'Slim\\Interfaces\\Psr17FactoryProviderInterface' => __DIR__ . '/..' . '/slim/slim/Slim/Interfaces/Psr17FactoryProviderInterface.php',
'Slim\\Interfaces\\RequestHandlerInvocationStrategyInterface' => __DIR__ . '/..' . '/slim/slim/Slim/Interfaces/RequestHandlerInvocationStrategyInterface.php',
'Slim\\Interfaces\\RouteCollectorInterface' => __DIR__ . '/..' . '/slim/slim/Slim/Interfaces/RouteCollectorInterface.php',
'Slim\\Interfaces\\RouteCollectorProxyInterface' => __DIR__ . '/..' . '/slim/slim/Slim/Interfaces/RouteCollectorProxyInterface.php',
'Slim\\Interfaces\\RouteGroupInterface' => __DIR__ . '/..' . '/slim/slim/Slim/Interfaces/RouteGroupInterface.php', 'Slim\\Interfaces\\RouteGroupInterface' => __DIR__ . '/..' . '/slim/slim/Slim/Interfaces/RouteGroupInterface.php',
'Slim\\Interfaces\\RouteInterface' => __DIR__ . '/..' . '/slim/slim/Slim/Interfaces/RouteInterface.php', 'Slim\\Interfaces\\RouteInterface' => __DIR__ . '/..' . '/slim/slim/Slim/Interfaces/RouteInterface.php',
'Slim\\Interfaces\\RouteParserInterface' => __DIR__ . '/..' . '/slim/slim/Slim/Interfaces/RouteParserInterface.php', 'Slim\\Interfaces\\RouterInterface' => __DIR__ . '/..' . '/slim/slim/Slim/Interfaces/RouterInterface.php',
'Slim\\Interfaces\\RouteResolverInterface' => __DIR__ . '/..' . '/slim/slim/Slim/Interfaces/RouteResolverInterface.php', 'Slim\\MiddlewareAwareTrait' => __DIR__ . '/..' . '/slim/slim/Slim/MiddlewareAwareTrait.php',
'Slim\\Interfaces\\ServerRequestCreatorInterface' => __DIR__ . '/..' . '/slim/slim/Slim/Interfaces/ServerRequestCreatorInterface.php', 'Slim\\Routable' => __DIR__ . '/..' . '/slim/slim/Slim/Routable.php',
'Slim\\Logger' => __DIR__ . '/..' . '/slim/slim/Slim/Logger.php', 'Slim\\Route' => __DIR__ . '/..' . '/slim/slim/Slim/Route.php',
'Slim\\MiddlewareDispatcher' => __DIR__ . '/..' . '/slim/slim/Slim/MiddlewareDispatcher.php', 'Slim\\RouteGroup' => __DIR__ . '/..' . '/slim/slim/Slim/RouteGroup.php',
'Slim\\Middleware\\BodyParsingMiddleware' => __DIR__ . '/..' . '/slim/slim/Slim/Middleware/BodyParsingMiddleware.php', 'Slim\\Router' => __DIR__ . '/..' . '/slim/slim/Slim/Router.php',
'Slim\\Middleware\\ContentLengthMiddleware' => __DIR__ . '/..' . '/slim/slim/Slim/Middleware/ContentLengthMiddleware.php',
'Slim\\Middleware\\ErrorMiddleware' => __DIR__ . '/..' . '/slim/slim/Slim/Middleware/ErrorMiddleware.php',
'Slim\\Middleware\\MethodOverrideMiddleware' => __DIR__ . '/..' . '/slim/slim/Slim/Middleware/MethodOverrideMiddleware.php',
'Slim\\Middleware\\OutputBufferingMiddleware' => __DIR__ . '/..' . '/slim/slim/Slim/Middleware/OutputBufferingMiddleware.php',
'Slim\\Middleware\\RoutingMiddleware' => __DIR__ . '/..' . '/slim/slim/Slim/Middleware/RoutingMiddleware.php',
'Slim\\ResponseEmitter' => __DIR__ . '/..' . '/slim/slim/Slim/ResponseEmitter.php',
'Slim\\Routing\\Dispatcher' => __DIR__ . '/..' . '/slim/slim/Slim/Routing/Dispatcher.php',
'Slim\\Routing\\FastRouteDispatcher' => __DIR__ . '/..' . '/slim/slim/Slim/Routing/FastRouteDispatcher.php',
'Slim\\Routing\\Route' => __DIR__ . '/..' . '/slim/slim/Slim/Routing/Route.php',
'Slim\\Routing\\RouteCollector' => __DIR__ . '/..' . '/slim/slim/Slim/Routing/RouteCollector.php',
'Slim\\Routing\\RouteCollectorProxy' => __DIR__ . '/..' . '/slim/slim/Slim/Routing/RouteCollectorProxy.php',
'Slim\\Routing\\RouteContext' => __DIR__ . '/..' . '/slim/slim/Slim/Routing/RouteContext.php',
'Slim\\Routing\\RouteGroup' => __DIR__ . '/..' . '/slim/slim/Slim/Routing/RouteGroup.php',
'Slim\\Routing\\RouteParser' => __DIR__ . '/..' . '/slim/slim/Slim/Routing/RouteParser.php',
'Slim\\Routing\\RouteResolver' => __DIR__ . '/..' . '/slim/slim/Slim/Routing/RouteResolver.php',
'Slim\\Routing\\RouteRunner' => __DIR__ . '/..' . '/slim/slim/Slim/Routing/RouteRunner.php',
'Slim\\Routing\\RoutingResults' => __DIR__ . '/..' . '/slim/slim/Slim/Routing/RoutingResults.php',
'Stringable' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Stringable.php',
'Symfony\\Component\\Cache\\Adapter\\AbstractAdapter' => __DIR__ . '/..' . '/symfony/cache/Adapter/AbstractAdapter.php', 'Symfony\\Component\\Cache\\Adapter\\AbstractAdapter' => __DIR__ . '/..' . '/symfony/cache/Adapter/AbstractAdapter.php',
'Symfony\\Component\\Cache\\Adapter\\AbstractTagAwareAdapter' => __DIR__ . '/..' . '/symfony/cache/Adapter/AbstractTagAwareAdapter.php',
'Symfony\\Component\\Cache\\Adapter\\AdapterInterface' => __DIR__ . '/..' . '/symfony/cache/Adapter/AdapterInterface.php', 'Symfony\\Component\\Cache\\Adapter\\AdapterInterface' => __DIR__ . '/..' . '/symfony/cache/Adapter/AdapterInterface.php',
'Symfony\\Component\\Cache\\Adapter\\ApcuAdapter' => __DIR__ . '/..' . '/symfony/cache/Adapter/ApcuAdapter.php', 'Symfony\\Component\\Cache\\Adapter\\ApcuAdapter' => __DIR__ . '/..' . '/symfony/cache/Adapter/ApcuAdapter.php',
'Symfony\\Component\\Cache\\Adapter\\ArrayAdapter' => __DIR__ . '/..' . '/symfony/cache/Adapter/ArrayAdapter.php', 'Symfony\\Component\\Cache\\Adapter\\ArrayAdapter' => __DIR__ . '/..' . '/symfony/cache/Adapter/ArrayAdapter.php',
'Symfony\\Component\\Cache\\Adapter\\ChainAdapter' => __DIR__ . '/..' . '/symfony/cache/Adapter/ChainAdapter.php', 'Symfony\\Component\\Cache\\Adapter\\ChainAdapter' => __DIR__ . '/..' . '/symfony/cache/Adapter/ChainAdapter.php',
'Symfony\\Component\\Cache\\Adapter\\DoctrineAdapter' => __DIR__ . '/..' . '/symfony/cache/Adapter/DoctrineAdapter.php', 'Symfony\\Component\\Cache\\Adapter\\DoctrineAdapter' => __DIR__ . '/..' . '/symfony/cache/Adapter/DoctrineAdapter.php',
'Symfony\\Component\\Cache\\Adapter\\FilesystemAdapter' => __DIR__ . '/..' . '/symfony/cache/Adapter/FilesystemAdapter.php', 'Symfony\\Component\\Cache\\Adapter\\FilesystemAdapter' => __DIR__ . '/..' . '/symfony/cache/Adapter/FilesystemAdapter.php',
'Symfony\\Component\\Cache\\Adapter\\FilesystemTagAwareAdapter' => __DIR__ . '/..' . '/symfony/cache/Adapter/FilesystemTagAwareAdapter.php',
'Symfony\\Component\\Cache\\Adapter\\MemcachedAdapter' => __DIR__ . '/..' . '/symfony/cache/Adapter/MemcachedAdapter.php', 'Symfony\\Component\\Cache\\Adapter\\MemcachedAdapter' => __DIR__ . '/..' . '/symfony/cache/Adapter/MemcachedAdapter.php',
'Symfony\\Component\\Cache\\Adapter\\NullAdapter' => __DIR__ . '/..' . '/symfony/cache/Adapter/NullAdapter.php', 'Symfony\\Component\\Cache\\Adapter\\NullAdapter' => __DIR__ . '/..' . '/symfony/cache/Adapter/NullAdapter.php',
'Symfony\\Component\\Cache\\Adapter\\PdoAdapter' => __DIR__ . '/..' . '/symfony/cache/Adapter/PdoAdapter.php', 'Symfony\\Component\\Cache\\Adapter\\PdoAdapter' => __DIR__ . '/..' . '/symfony/cache/Adapter/PdoAdapter.php',
'Symfony\\Component\\Cache\\Adapter\\PhpArrayAdapter' => __DIR__ . '/..' . '/symfony/cache/Adapter/PhpArrayAdapter.php', 'Symfony\\Component\\Cache\\Adapter\\PhpArrayAdapter' => __DIR__ . '/..' . '/symfony/cache/Adapter/PhpArrayAdapter.php',
'Symfony\\Component\\Cache\\Adapter\\PhpFilesAdapter' => __DIR__ . '/..' . '/symfony/cache/Adapter/PhpFilesAdapter.php', 'Symfony\\Component\\Cache\\Adapter\\PhpFilesAdapter' => __DIR__ . '/..' . '/symfony/cache/Adapter/PhpFilesAdapter.php',
'Symfony\\Component\\Cache\\Adapter\\ProxyAdapter' => __DIR__ . '/..' . '/symfony/cache/Adapter/ProxyAdapter.php', 'Symfony\\Component\\Cache\\Adapter\\ProxyAdapter' => __DIR__ . '/..' . '/symfony/cache/Adapter/ProxyAdapter.php',
'Symfony\\Component\\Cache\\Adapter\\Psr16Adapter' => __DIR__ . '/..' . '/symfony/cache/Adapter/Psr16Adapter.php',
'Symfony\\Component\\Cache\\Adapter\\RedisAdapter' => __DIR__ . '/..' . '/symfony/cache/Adapter/RedisAdapter.php', 'Symfony\\Component\\Cache\\Adapter\\RedisAdapter' => __DIR__ . '/..' . '/symfony/cache/Adapter/RedisAdapter.php',
'Symfony\\Component\\Cache\\Adapter\\RedisTagAwareAdapter' => __DIR__ . '/..' . '/symfony/cache/Adapter/RedisTagAwareAdapter.php',
'Symfony\\Component\\Cache\\Adapter\\SimpleCacheAdapter' => __DIR__ . '/..' . '/symfony/cache/Adapter/SimpleCacheAdapter.php', 'Symfony\\Component\\Cache\\Adapter\\SimpleCacheAdapter' => __DIR__ . '/..' . '/symfony/cache/Adapter/SimpleCacheAdapter.php',
'Symfony\\Component\\Cache\\Adapter\\TagAwareAdapter' => __DIR__ . '/..' . '/symfony/cache/Adapter/TagAwareAdapter.php', 'Symfony\\Component\\Cache\\Adapter\\TagAwareAdapter' => __DIR__ . '/..' . '/symfony/cache/Adapter/TagAwareAdapter.php',
'Symfony\\Component\\Cache\\Adapter\\TagAwareAdapterInterface' => __DIR__ . '/..' . '/symfony/cache/Adapter/TagAwareAdapterInterface.php', 'Symfony\\Component\\Cache\\Adapter\\TagAwareAdapterInterface' => __DIR__ . '/..' . '/symfony/cache/Adapter/TagAwareAdapterInterface.php',
@ -253,21 +228,10 @@ class ComposerStaticInitAdvancedContentFilterAddon
'Symfony\\Component\\Cache\\Adapter\\TraceableTagAwareAdapter' => __DIR__ . '/..' . '/symfony/cache/Adapter/TraceableTagAwareAdapter.php', 'Symfony\\Component\\Cache\\Adapter\\TraceableTagAwareAdapter' => __DIR__ . '/..' . '/symfony/cache/Adapter/TraceableTagAwareAdapter.php',
'Symfony\\Component\\Cache\\CacheItem' => __DIR__ . '/..' . '/symfony/cache/CacheItem.php', 'Symfony\\Component\\Cache\\CacheItem' => __DIR__ . '/..' . '/symfony/cache/CacheItem.php',
'Symfony\\Component\\Cache\\DataCollector\\CacheDataCollector' => __DIR__ . '/..' . '/symfony/cache/DataCollector/CacheDataCollector.php', 'Symfony\\Component\\Cache\\DataCollector\\CacheDataCollector' => __DIR__ . '/..' . '/symfony/cache/DataCollector/CacheDataCollector.php',
'Symfony\\Component\\Cache\\DependencyInjection\\CacheCollectorPass' => __DIR__ . '/..' . '/symfony/cache/DependencyInjection/CacheCollectorPass.php',
'Symfony\\Component\\Cache\\DependencyInjection\\CachePoolClearerPass' => __DIR__ . '/..' . '/symfony/cache/DependencyInjection/CachePoolClearerPass.php',
'Symfony\\Component\\Cache\\DependencyInjection\\CachePoolPass' => __DIR__ . '/..' . '/symfony/cache/DependencyInjection/CachePoolPass.php',
'Symfony\\Component\\Cache\\DependencyInjection\\CachePoolPrunerPass' => __DIR__ . '/..' . '/symfony/cache/DependencyInjection/CachePoolPrunerPass.php',
'Symfony\\Component\\Cache\\DoctrineProvider' => __DIR__ . '/..' . '/symfony/cache/DoctrineProvider.php', 'Symfony\\Component\\Cache\\DoctrineProvider' => __DIR__ . '/..' . '/symfony/cache/DoctrineProvider.php',
'Symfony\\Component\\Cache\\Exception\\CacheException' => __DIR__ . '/..' . '/symfony/cache/Exception/CacheException.php', 'Symfony\\Component\\Cache\\Exception\\CacheException' => __DIR__ . '/..' . '/symfony/cache/Exception/CacheException.php',
'Symfony\\Component\\Cache\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/cache/Exception/InvalidArgumentException.php', 'Symfony\\Component\\Cache\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/cache/Exception/InvalidArgumentException.php',
'Symfony\\Component\\Cache\\Exception\\LogicException' => __DIR__ . '/..' . '/symfony/cache/Exception/LogicException.php',
'Symfony\\Component\\Cache\\LockRegistry' => __DIR__ . '/..' . '/symfony/cache/LockRegistry.php',
'Symfony\\Component\\Cache\\Marshaller\\DefaultMarshaller' => __DIR__ . '/..' . '/symfony/cache/Marshaller/DefaultMarshaller.php',
'Symfony\\Component\\Cache\\Marshaller\\DeflateMarshaller' => __DIR__ . '/..' . '/symfony/cache/Marshaller/DeflateMarshaller.php',
'Symfony\\Component\\Cache\\Marshaller\\MarshallerInterface' => __DIR__ . '/..' . '/symfony/cache/Marshaller/MarshallerInterface.php',
'Symfony\\Component\\Cache\\Marshaller\\TagAwareMarshaller' => __DIR__ . '/..' . '/symfony/cache/Marshaller/TagAwareMarshaller.php',
'Symfony\\Component\\Cache\\PruneableInterface' => __DIR__ . '/..' . '/symfony/cache/PruneableInterface.php', 'Symfony\\Component\\Cache\\PruneableInterface' => __DIR__ . '/..' . '/symfony/cache/PruneableInterface.php',
'Symfony\\Component\\Cache\\Psr16Cache' => __DIR__ . '/..' . '/symfony/cache/Psr16Cache.php',
'Symfony\\Component\\Cache\\ResettableInterface' => __DIR__ . '/..' . '/symfony/cache/ResettableInterface.php', 'Symfony\\Component\\Cache\\ResettableInterface' => __DIR__ . '/..' . '/symfony/cache/ResettableInterface.php',
'Symfony\\Component\\Cache\\Simple\\AbstractCache' => __DIR__ . '/..' . '/symfony/cache/Simple/AbstractCache.php', 'Symfony\\Component\\Cache\\Simple\\AbstractCache' => __DIR__ . '/..' . '/symfony/cache/Simple/AbstractCache.php',
'Symfony\\Component\\Cache\\Simple\\ApcuCache' => __DIR__ . '/..' . '/symfony/cache/Simple/ApcuCache.php', 'Symfony\\Component\\Cache\\Simple\\ApcuCache' => __DIR__ . '/..' . '/symfony/cache/Simple/ApcuCache.php',
@ -284,22 +248,17 @@ class ComposerStaticInitAdvancedContentFilterAddon
'Symfony\\Component\\Cache\\Simple\\RedisCache' => __DIR__ . '/..' . '/symfony/cache/Simple/RedisCache.php', 'Symfony\\Component\\Cache\\Simple\\RedisCache' => __DIR__ . '/..' . '/symfony/cache/Simple/RedisCache.php',
'Symfony\\Component\\Cache\\Simple\\TraceableCache' => __DIR__ . '/..' . '/symfony/cache/Simple/TraceableCache.php', 'Symfony\\Component\\Cache\\Simple\\TraceableCache' => __DIR__ . '/..' . '/symfony/cache/Simple/TraceableCache.php',
'Symfony\\Component\\Cache\\Simple\\TraceableCacheEvent' => __DIR__ . '/..' . '/symfony/cache/Simple/TraceableCache.php', 'Symfony\\Component\\Cache\\Simple\\TraceableCacheEvent' => __DIR__ . '/..' . '/symfony/cache/Simple/TraceableCache.php',
'Symfony\\Component\\Cache\\Traits\\AbstractAdapterTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/AbstractAdapterTrait.php',
'Symfony\\Component\\Cache\\Traits\\AbstractTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/AbstractTrait.php', 'Symfony\\Component\\Cache\\Traits\\AbstractTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/AbstractTrait.php',
'Symfony\\Component\\Cache\\Traits\\ApcuTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/ApcuTrait.php', 'Symfony\\Component\\Cache\\Traits\\ApcuTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/ApcuTrait.php',
'Symfony\\Component\\Cache\\Traits\\ArrayTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/ArrayTrait.php', 'Symfony\\Component\\Cache\\Traits\\ArrayTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/ArrayTrait.php',
'Symfony\\Component\\Cache\\Traits\\ContractsTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/ContractsTrait.php',
'Symfony\\Component\\Cache\\Traits\\DoctrineTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/DoctrineTrait.php', 'Symfony\\Component\\Cache\\Traits\\DoctrineTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/DoctrineTrait.php',
'Symfony\\Component\\Cache\\Traits\\FilesystemCommonTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/FilesystemCommonTrait.php', 'Symfony\\Component\\Cache\\Traits\\FilesystemCommonTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/FilesystemCommonTrait.php',
'Symfony\\Component\\Cache\\Traits\\FilesystemTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/FilesystemTrait.php', 'Symfony\\Component\\Cache\\Traits\\FilesystemTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/FilesystemTrait.php',
'Symfony\\Component\\Cache\\Traits\\LazyValue' => __DIR__ . '/..' . '/symfony/cache/Traits/PhpFilesTrait.php',
'Symfony\\Component\\Cache\\Traits\\MemcachedTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/MemcachedTrait.php', 'Symfony\\Component\\Cache\\Traits\\MemcachedTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/MemcachedTrait.php',
'Symfony\\Component\\Cache\\Traits\\PdoTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/PdoTrait.php', 'Symfony\\Component\\Cache\\Traits\\PdoTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/PdoTrait.php',
'Symfony\\Component\\Cache\\Traits\\PhpArrayTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/PhpArrayTrait.php', 'Symfony\\Component\\Cache\\Traits\\PhpArrayTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/PhpArrayTrait.php',
'Symfony\\Component\\Cache\\Traits\\PhpFilesTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/PhpFilesTrait.php', 'Symfony\\Component\\Cache\\Traits\\PhpFilesTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/PhpFilesTrait.php',
'Symfony\\Component\\Cache\\Traits\\ProxyTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/ProxyTrait.php', 'Symfony\\Component\\Cache\\Traits\\ProxyTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/ProxyTrait.php',
'Symfony\\Component\\Cache\\Traits\\RedisClusterNodeProxy' => __DIR__ . '/..' . '/symfony/cache/Traits/RedisClusterNodeProxy.php',
'Symfony\\Component\\Cache\\Traits\\RedisClusterProxy' => __DIR__ . '/..' . '/symfony/cache/Traits/RedisClusterProxy.php',
'Symfony\\Component\\Cache\\Traits\\RedisProxy' => __DIR__ . '/..' . '/symfony/cache/Traits/RedisProxy.php', 'Symfony\\Component\\Cache\\Traits\\RedisProxy' => __DIR__ . '/..' . '/symfony/cache/Traits/RedisProxy.php',
'Symfony\\Component\\Cache\\Traits\\RedisTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/RedisTrait.php', 'Symfony\\Component\\Cache\\Traits\\RedisTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/RedisTrait.php',
'Symfony\\Component\\ExpressionLanguage\\Compiler' => __DIR__ . '/..' . '/symfony/expression-language/Compiler.php', 'Symfony\\Component\\ExpressionLanguage\\Compiler' => __DIR__ . '/..' . '/symfony/expression-language/Compiler.php',
@ -327,34 +286,7 @@ class ComposerStaticInitAdvancedContentFilterAddon
'Symfony\\Component\\ExpressionLanguage\\SyntaxError' => __DIR__ . '/..' . '/symfony/expression-language/SyntaxError.php', 'Symfony\\Component\\ExpressionLanguage\\SyntaxError' => __DIR__ . '/..' . '/symfony/expression-language/SyntaxError.php',
'Symfony\\Component\\ExpressionLanguage\\Token' => __DIR__ . '/..' . '/symfony/expression-language/Token.php', 'Symfony\\Component\\ExpressionLanguage\\Token' => __DIR__ . '/..' . '/symfony/expression-language/Token.php',
'Symfony\\Component\\ExpressionLanguage\\TokenStream' => __DIR__ . '/..' . '/symfony/expression-language/TokenStream.php', 'Symfony\\Component\\ExpressionLanguage\\TokenStream' => __DIR__ . '/..' . '/symfony/expression-language/TokenStream.php',
'Symfony\\Component\\VarExporter\\Exception\\ClassNotFoundException' => __DIR__ . '/..' . '/symfony/var-exporter/Exception/ClassNotFoundException.php', 'Symfony\\Polyfill\\Apcu\\Apcu' => __DIR__ . '/..' . '/symfony/polyfill-apcu/Apcu.php',
'Symfony\\Component\\VarExporter\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/var-exporter/Exception/ExceptionInterface.php',
'Symfony\\Component\\VarExporter\\Exception\\NotInstantiableTypeException' => __DIR__ . '/..' . '/symfony/var-exporter/Exception/NotInstantiableTypeException.php',
'Symfony\\Component\\VarExporter\\Instantiator' => __DIR__ . '/..' . '/symfony/var-exporter/Instantiator.php',
'Symfony\\Component\\VarExporter\\Internal\\Exporter' => __DIR__ . '/..' . '/symfony/var-exporter/Internal/Exporter.php',
'Symfony\\Component\\VarExporter\\Internal\\Hydrator' => __DIR__ . '/..' . '/symfony/var-exporter/Internal/Hydrator.php',
'Symfony\\Component\\VarExporter\\Internal\\Reference' => __DIR__ . '/..' . '/symfony/var-exporter/Internal/Reference.php',
'Symfony\\Component\\VarExporter\\Internal\\Registry' => __DIR__ . '/..' . '/symfony/var-exporter/Internal/Registry.php',
'Symfony\\Component\\VarExporter\\Internal\\Values' => __DIR__ . '/..' . '/symfony/var-exporter/Internal/Values.php',
'Symfony\\Component\\VarExporter\\VarExporter' => __DIR__ . '/..' . '/symfony/var-exporter/VarExporter.php',
'Symfony\\Contracts\\Cache\\CacheInterface' => __DIR__ . '/..' . '/symfony/cache-contracts/CacheInterface.php',
'Symfony\\Contracts\\Cache\\CacheTrait' => __DIR__ . '/..' . '/symfony/cache-contracts/CacheTrait.php',
'Symfony\\Contracts\\Cache\\CallbackInterface' => __DIR__ . '/..' . '/symfony/cache-contracts/CallbackInterface.php',
'Symfony\\Contracts\\Cache\\ItemInterface' => __DIR__ . '/..' . '/symfony/cache-contracts/ItemInterface.php',
'Symfony\\Contracts\\Cache\\TagAwareCacheInterface' => __DIR__ . '/..' . '/symfony/cache-contracts/TagAwareCacheInterface.php',
'Symfony\\Contracts\\Service\\Attribute\\Required' => __DIR__ . '/..' . '/symfony/service-contracts/Attribute/Required.php',
'Symfony\\Contracts\\Service\\Attribute\\SubscribedService' => __DIR__ . '/..' . '/symfony/service-contracts/Attribute/SubscribedService.php',
'Symfony\\Contracts\\Service\\ResetInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ResetInterface.php',
'Symfony\\Contracts\\Service\\ServiceLocatorTrait' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceLocatorTrait.php',
'Symfony\\Contracts\\Service\\ServiceProviderInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceProviderInterface.php',
'Symfony\\Contracts\\Service\\ServiceSubscriberInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceSubscriberInterface.php',
'Symfony\\Contracts\\Service\\ServiceSubscriberTrait' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceSubscriberTrait.php',
'Symfony\\Contracts\\Service\\Test\\ServiceLocatorTest' => __DIR__ . '/..' . '/symfony/service-contracts/Test/ServiceLocatorTest.php',
'Symfony\\Polyfill\\Php73\\Php73' => __DIR__ . '/..' . '/symfony/polyfill-php73/Php73.php',
'Symfony\\Polyfill\\Php80\\Php80' => __DIR__ . '/..' . '/symfony/polyfill-php80/Php80.php',
'Symfony\\Polyfill\\Php80\\PhpToken' => __DIR__ . '/..' . '/symfony/polyfill-php80/PhpToken.php',
'UnhandledMatchError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php',
'ValueError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/ValueError.php',
); );
public static function getInitializer(ClassLoader $loader) public static function getInitializer(ClassLoader $loader)
@ -362,6 +294,7 @@ class ComposerStaticInitAdvancedContentFilterAddon
return \Closure::bind(function () use ($loader) { return \Closure::bind(function () use ($loader) {
$loader->prefixLengthsPsr4 = ComposerStaticInitAdvancedContentFilterAddon::$prefixLengthsPsr4; $loader->prefixLengthsPsr4 = ComposerStaticInitAdvancedContentFilterAddon::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInitAdvancedContentFilterAddon::$prefixDirsPsr4; $loader->prefixDirsPsr4 = ComposerStaticInitAdvancedContentFilterAddon::$prefixDirsPsr4;
$loader->prefixesPsr0 = ComposerStaticInitAdvancedContentFilterAddon::$prefixesPsr0;
$loader->classMap = ComposerStaticInitAdvancedContentFilterAddon::$classMap; $loader->classMap = ComposerStaticInitAdvancedContentFilterAddon::$classMap;
}, null, ClassLoader::class); }, null, ClassLoader::class);

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,3 @@
composer.lock
composer.phar
/vendor/

View file

@ -0,0 +1,20 @@
The MIT License (MIT)
Copyright (c) 2013 container-interop
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View file

@ -0,0 +1,148 @@
# Container Interoperability
[![Latest Stable Version](https://poser.pugx.org/container-interop/container-interop/v/stable.png)](https://packagist.org/packages/container-interop/container-interop)
[![Total Downloads](https://poser.pugx.org/container-interop/container-interop/downloads.svg)](https://packagist.org/packages/container-interop/container-interop)
## Deprecation warning!
Starting Feb. 13th 2017, container-interop is officially deprecated in favor of [PSR-11](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-11-container.md).
Container-interop has been the test-bed of PSR-11. From v1.2, container-interop directly extends PSR-11 interfaces.
Therefore, all containers implementing container-interop are now *de-facto* compatible with PSR-11.
- Projects implementing container-interop interfaces are encouraged to directly implement PSR-11 interfaces instead.
- Projects consuming container-interop interfaces are very strongly encouraged to directly type-hint on PSR-11 interfaces, in order to be compatible with PSR-11 containers that are not compatible with container-interop.
Regarding the delegate lookup feature, that is present in container-interop and not in PSR-11, the feature is actually a design pattern. It is therefore not deprecated. Documentation regarding this design pattern will be migrated from this repository into a separate website in the future.
## About
*container-interop* tries to identify and standardize features in *container* objects (service locators,
dependency injection containers, etc.) to achieve interoperability.
Through discussions and trials, we try to create a standard, made of common interfaces but also recommendations.
If PHP projects that provide container implementations begin to adopt these common standards, then PHP
applications and projects that use containers can depend on the common interfaces instead of specific
implementations. This facilitates a high-level of interoperability and flexibility that allows users to consume
*any* container implementation that can be adapted to these interfaces.
The work done in this project is not officially endorsed by the [PHP-FIG](http://www.php-fig.org/), but it is being
worked on by members of PHP-FIG and other good developers. We adhere to the spirit and ideals of PHP-FIG, and hope
this project will pave the way for one or more future PSRs.
## Installation
You can install this package through Composer:
```json
composer require container-interop/container-interop
```
The packages adheres to the [SemVer](http://semver.org/) specification, and there will be full backward compatibility
between minor versions.
## Standards
### Available
- [`ContainerInterface`](src/Interop/Container/ContainerInterface.php).
[Description](docs/ContainerInterface.md) [Meta Document](docs/ContainerInterface-meta.md).
Describes the interface of a container that exposes methods to read its entries.
- [*Delegate lookup feature*](docs/Delegate-lookup.md).
[Meta Document](docs/Delegate-lookup-meta.md).
Describes the ability for a container to delegate the lookup of its dependencies to a third-party container. This
feature lets several containers work together in a single application.
### Proposed
View open [request for comments](https://github.com/container-interop/container-interop/labels/RFC)
## Compatible projects
### Projects implementing `ContainerInterface`
- [Acclimate](https://github.com/jeremeamia/acclimate-container): Adapters for
Aura.Di, Laravel, Nette DI, Pimple, Symfony DI, ZF2 Service manager, ZF2
Dependency injection and any container using `ArrayAccess`
- [Aura.Di](https://github.com/auraphp/Aura.Di)
- [auryn-container-interop](https://github.com/elazar/auryn-container-interop)
- [Burlap](https://github.com/codeeverything/burlap)
- [Chernozem](https://github.com/pyrsmk/Chernozem)
- [Data Manager](https://github.com/chrismichaels84/data-manager)
- [Disco](https://github.com/bitexpert/disco)
- [InDI](https://github.com/idealogica/indi)
- [League/Container](http://container.thephpleague.com/)
- [Mouf](http://mouf-php.com)
- [Njasm Container](https://github.com/njasm/container)
- [PHP-DI](http://php-di.org)
- [Picotainer](https://github.com/thecodingmachine/picotainer)
- [PimpleInterop](https://github.com/moufmouf/pimple-interop)
- [Pimple3-ContainerInterop](https://github.com/Sam-Burns/pimple3-containerinterop) (using Pimple v3)
- [SitePoint Container](https://github.com/sitepoint/Container)
- [Thruster Container](https://github.com/ThrusterIO/container) (PHP7 only)
- [Ultra-Lite Container](https://github.com/ultra-lite/container)
- [Unbox](https://github.com/mindplay-dk/unbox)
- [XStatic](https://github.com/jeremeamia/xstatic)
- [Zend\ServiceManager](https://github.com/zendframework/zend-servicemanager)
- [Zit](https://github.com/inxilpro/Zit)
### Projects implementing the *delegate lookup* feature
- [Aura.Di](https://github.com/auraphp/Aura.Di)
- [Burlap](https://github.com/codeeverything/burlap)
- [Chernozem](https://github.com/pyrsmk/Chernozem)
- [InDI](https://github.com/idealogica/indi)
- [League/Container](http://container.thephpleague.com/)
- [Mouf](http://mouf-php.com)
- [Picotainer](https://github.com/thecodingmachine/picotainer)
- [PHP-DI](http://php-di.org)
- [PimpleInterop](https://github.com/moufmouf/pimple-interop)
- [Ultra-Lite Container](https://github.com/ultra-lite/container)
### Middlewares implementing `ContainerInterface`
- [Alias-Container](https://github.com/thecodingmachine/alias-container): add
aliases support to any container
- [Prefixer-Container](https://github.com/thecodingmachine/prefixer-container):
dynamically prefix identifiers
- [Lazy-Container](https://github.com/snapshotpl/lazy-container): lazy services
### Projects using `ContainerInterface`
The list below contains only a sample of all the projects consuming `ContainerInterface`. For a more complete list have a look [here](http://packanalyst.com/class?q=Interop%5CContainer%5CContainerInterface).
| | Downloads |
| --- | --- |
| [Adroit](https://github.com/bitexpert/adroit) | ![](https://img.shields.io/packagist/dt/bitexpert/adroit.svg) |
| [Behat](https://github.com/Behat/Behat/pull/974) | ![](https://img.shields.io/packagist/dt/behat/behat.svg) |
| [blast-facades](https://github.com/phpthinktank/blast-facades): Minimize complexity and represent dependencies as facades. | ![](https://img.shields.io/packagist/dt/blast/facades.svg) |
| [interop.silex.di](https://github.com/thecodingmachine/interop.silex.di): an extension to [Silex](http://silex.sensiolabs.org/) that adds support for any *container-interop* compatible container | ![](https://img.shields.io/packagist/dt/mouf/interop.silex.di.svg) |
| [mindplay/walkway](https://github.com/mindplay-dk/walkway): a modular request router | ![](https://img.shields.io/packagist/dt/mindplay/walkway.svg) |
| [mindplay/middleman](https://github.com/mindplay-dk/middleman): minimalist PSR-7 middleware dispatcher | ![](https://img.shields.io/packagist/dt/mindplay/middleman.svg) |
| [PHP-DI/Invoker](https://github.com/PHP-DI/Invoker): extensible and configurable invoker/dispatcher | ![](https://img.shields.io/packagist/dt/php-di/invoker.svg) |
| [Prophiler](https://github.com/fabfuel/prophiler) | ![](https://img.shields.io/packagist/dt/fabfuel/prophiler.svg) |
| [Silly](https://github.com/mnapoli/silly): CLI micro-framework | ![](https://img.shields.io/packagist/dt/mnapoli/silly.svg) |
| [Slim v3](https://github.com/slimphp/Slim) | ![](https://img.shields.io/packagist/dt/slim/slim.svg) |
| [Splash](http://mouf-php.com/packages/mouf/mvc.splash-common/version/8.0-dev/README.md) | ![](https://img.shields.io/packagist/dt/mouf/mvc.splash-common.svg) |
| [Woohoo Labs. Harmony](https://github.com/woohoolabs/harmony): a flexible micro-framework | ![](https://img.shields.io/packagist/dt/woohoolabs/harmony.svg) |
| [zend-expressive](https://github.com/zendframework/zend-expressive) | ![](https://img.shields.io/packagist/dt/zendframework/zend-expressive.svg) |
## Workflow
Everyone is welcome to join and contribute.
The general workflow looks like this:
1. Someone opens a discussion (GitHub issue) to suggest an interface
1. Feedback is gathered
1. The interface is added to a development branch
1. We release alpha versions so that the interface can be experimented with
1. Discussions and edits ensue until the interface is deemed stable by a general consensus
1. A new minor version of the package is released
We try to not break BC by creating new interfaces instead of editing existing ones.
While we currently work on interfaces, we are open to anything that might help towards interoperability, may that
be code, best practices, etc.

View file

@ -0,0 +1,15 @@
{
"name": "container-interop/container-interop",
"type": "library",
"description": "Promoting the interoperability of container objects (DIC, SL, etc.)",
"homepage": "https://github.com/container-interop/container-interop",
"license": "MIT",
"autoload": {
"psr-4": {
"Interop\\Container\\": "src/Interop/Container/"
}
},
"require": {
"psr/container": "^1.0"
}
}

View file

@ -0,0 +1,114 @@
# ContainerInterface Meta Document
## Introduction
This document describes the process and discussions that lead to the `ContainerInterface`.
Its goal is to explain the reasons behind each decision.
## Goal
The goal set by `ContainerInterface` is to standardize how frameworks and libraries make use of a
container to obtain objects and parameters.
By standardizing such a behavior, frameworks and libraries using the `ContainerInterface`
could work with any compatible container.
That would allow end users to choose their own container based on their own preferences.
It is important to distinguish the two usages of a container:
- configuring entries
- fetching entries
Most of the time, those two sides are not used by the same party.
While it is often end users who tend to configure entries, it is generally the framework that fetch
entries to build the application.
This is why this interface focuses only on how entries can be fetched from a container.
## Interface name
The interface name has been thoroughly discussed and was decided by a vote.
The list of options considered with their respective votes are:
- `ContainerInterface`: +8
- `ProviderInterface`: +2
- `LocatorInterface`: 0
- `ReadableContainerInterface`: -5
- `ServiceLocatorInterface`: -6
- `ObjectFactory`: -6
- `ObjectStore`: -8
- `ConsumerInterface`: -9
[Full results of the vote](https://github.com/container-interop/container-interop/wiki/%231-interface-name:-Vote)
The complete discussion can be read in [the issue #1](https://github.com/container-interop/container-interop/issues/1).
## Interface methods
The choice of which methods the interface would contain was made after a statistical analysis of existing containers.
The results of this analysis are available [in this document](https://gist.github.com/mnapoli/6159681).
The summary of the analysis showed that:
- all containers offer a method to get an entry by its id
- a large majority name such method `get()`
- for all containers, the `get()` method has 1 mandatory parameter of type string
- some containers have an optional additional argument for `get()`, but it doesn't have the same purpose between containers
- a large majority of the containers offer a method to test if it can return an entry by its id
- a majority name such method `has()`
- for all containers offering `has()`, the method has exactly 1 parameter of type string
- a large majority of the containers throw an exception rather than returning null when an entry is not found in `get()`
- a large majority of the containers don't implement `ArrayAccess`
The question of whether to include methods to define entries has been discussed in
[issue #1](https://github.com/container-interop/container-interop/issues/1).
It has been judged that such methods do not belong in the interface described here because it is out of its scope
(see the "Goal" section).
As a result, the `ContainerInterface` contains two methods:
- `get()`, returning anything, with one mandatory string parameter. Should throw an exception if the entry is not found.
- `has()`, returning a boolean, with one mandatory string parameter.
### Number of parameters in `get()` method
While `ContainerInterface` only defines one mandatory parameter in `get()`, it is not incompatible with
existing containers that have additional optional parameters. PHP allows an implementation to offer more parameters
as long as they are optional, because the implementation *does* satisfy the interface.
This issue has been discussed in [issue #6](https://github.com/container-interop/container-interop/issues/6).
### Type of the `$id` parameter
The type of the `$id` parameter in `get()` and `has()` has been discussed in
[issue #6](https://github.com/container-interop/container-interop/issues/6).
While `string` is used in all the containers that were analyzed, it was suggested that allowing
anything (such as objects) could allow containers to offer a more advanced query API.
An example given was to use the container as an object builder. The `$id` parameter would then be an
object that would describe how to create an instance.
The conclusion of the discussion was that this was beyond the scope of getting entries from a container without
knowing how the container provided them, and it was more fit for a factory.
## Contributors
Are listed here all people that contributed in the discussions or votes, by alphabetical order:
- [Amy Stephen](https://github.com/AmyStephen)
- [David Négrier](https://github.com/moufmouf)
- [Don Gilbert](https://github.com/dongilbert)
- [Jason Judge](https://github.com/judgej)
- [Jeremy Lindblom](https://github.com/jeremeamia)
- [Marco Pivetta](https://github.com/Ocramius)
- [Matthieu Napoli](https://github.com/mnapoli)
- [Paul M. Jones](https://github.com/pmjones)
- [Stephan Hochdörfer](https://github.com/shochdoerfer)
- [Taylor Otwell](https://github.com/taylorotwell)
## Relevant links
- [`ContainerInterface.php`](https://github.com/container-interop/container-interop/blob/master/src/Interop/Container/ContainerInterface.php)
- [List of all issues](https://github.com/container-interop/container-interop/issues?labels=ContainerInterface&milestone=&page=1&state=closed)
- [Vote for the interface name](https://github.com/container-interop/container-interop/wiki/%231-interface-name:-Vote)

View file

@ -0,0 +1,158 @@
Container interface
===================
This document describes a common interface for dependency injection containers.
The goal set by `ContainerInterface` is to standardize how frameworks and libraries make use of a
container to obtain objects and parameters (called *entries* in the rest of this document).
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
"SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be
interpreted as described in [RFC 2119][].
The word `implementor` in this document is to be interpreted as someone
implementing the `ContainerInterface` in a dependency injection-related library or framework.
Users of dependency injections containers (DIC) are referred to as `user`.
[RFC 2119]: http://tools.ietf.org/html/rfc2119
1. Specification
-----------------
### 1.1 Basics
- The `Interop\Container\ContainerInterface` exposes two methods : `get` and `has`.
- `get` takes one mandatory parameter: an entry identifier. It MUST be a string.
A call to `get` can return anything (a *mixed* value), or throws an exception if the identifier
is not known to the container. Two successive calls to `get` with the same
identifier SHOULD return the same value. However, depending on the `implementor`
design and/or `user` configuration, different values might be returned, so
`user` SHOULD NOT rely on getting the same value on 2 successive calls.
While `ContainerInterface` only defines one mandatory parameter in `get()`, implementations
MAY accept additional optional parameters.
- `has` takes one unique parameter: an entry identifier. It MUST return `true`
if an entry identifier is known to the container and `false` if it is not.
`has($id)` returning true does not mean that `get($id)` will not throw an exception.
It does however mean that `get($id)` will not throw a `NotFoundException`.
### 1.2 Exceptions
Exceptions directly thrown by the container MUST implement the
[`Interop\Container\Exception\ContainerException`](../src/Interop/Container/Exception/ContainerException.php).
A call to the `get` method with a non-existing id SHOULD throw a
[`Interop\Container\Exception\NotFoundException`](../src/Interop/Container/Exception/NotFoundException.php).
### 1.3 Additional features
This section describes additional features that MAY be added to a container. Containers are not
required to implement these features to respect the ContainerInterface.
#### 1.3.1 Delegate lookup feature
The goal of the *delegate lookup* feature is to allow several containers to share entries.
Containers implementing this feature can perform dependency lookups in other containers.
Containers implementing this feature will offer a greater lever of interoperability
with other containers. Implementation of this feature is therefore RECOMMENDED.
A container implementing this feature:
- MUST implement the `ContainerInterface`
- MUST provide a way to register a delegate container (using a constructor parameter, or a setter,
or any possible way). The delegate container MUST implement the `ContainerInterface`.
When a container is configured to use a delegate container for dependencies:
- Calls to the `get` method should only return an entry if the entry is part of the container.
If the entry is not part of the container, an exception should be thrown
(as requested by the `ContainerInterface`).
- Calls to the `has` method should only return `true` if the entry is part of the container.
If the entry is not part of the container, `false` should be returned.
- If the fetched entry has dependencies, **instead** of performing
the dependency lookup in the container, the lookup is performed on the *delegate container*.
Important! By default, the lookup SHOULD be performed on the delegate container **only**, not on the container itself.
It is however allowed for containers to provide exception cases for special entries, and a way to lookup
into the same container (or another container) instead of the delegate container.
2. Package
----------
The interfaces and classes described as well as relevant exception are provided as part of the
[container-interop/container-interop](https://packagist.org/packages/container-interop/container-interop) package.
3. `Interop\Container\ContainerInterface`
-----------------------------------------
```php
<?php
namespace Interop\Container;
use Interop\Container\Exception\ContainerException;
use Interop\Container\Exception\NotFoundException;
/**
* Describes the interface of a container that exposes methods to read its entries.
*/
interface ContainerInterface
{
/**
* Finds an entry of the container by its identifier and returns it.
*
* @param string $id Identifier of the entry to look for.
*
* @throws NotFoundException No entry was found for this identifier.
* @throws ContainerException Error while retrieving the entry.
*
* @return mixed Entry.
*/
public function get($id);
/**
* Returns true if the container can return an entry for the given identifier.
* Returns false otherwise.
*
* `has($id)` returning true does not mean that `get($id)` will not throw an exception.
* It does however mean that `get($id)` will not throw a `NotFoundException`.
*
* @param string $id Identifier of the entry to look for.
*
* @return boolean
*/
public function has($id);
}
```
4. `Interop\Container\Exception\ContainerException`
---------------------------------------------------
```php
<?php
namespace Interop\Container\Exception;
/**
* Base interface representing a generic exception in a container.
*/
interface ContainerException
{
}
```
5. `Interop\Container\Exception\NotFoundException`
---------------------------------------------------
```php
<?php
namespace Interop\Container\Exception;
/**
* No entry was found in the container.
*/
interface NotFoundException extends ContainerException
{
}
```

View file

@ -0,0 +1,259 @@
Delegate lookup feature Meta Document
=====================================
1. Summary
----------
This document describes the *delegate lookup feature*.
Containers are not required to implement this feature to respect the `ContainerInterface`.
However, containers implementing this feature will offer a greater lever of interoperability
with other containers, allowing multiple containers to share entries in the same application.
Implementation of this feature is therefore recommanded.
2. Why Bother?
--------------
The [`ContainerInterface`](../src/Interop/Container/ContainerInterface.php) ([meta doc](ContainerInterface.md))
standardizes how frameworks and libraries make use of a container to obtain objects and parameters.
By standardizing such a behavior, frameworks and libraries relying on the `ContainerInterface`
could work with any compatible container.
That would allow end users to choose their own container based on their own preferences.
The `ContainerInterface` is also enough if we want to have several containers side-by-side in the same
application. For instance, this is what the [CompositeContainer](https://github.com/jeremeamia/acclimate-container/blob/master/src/CompositeContainer.php)
class of [Acclimate](https://github.com/jeremeamia/acclimate-container) is designed for:
![Side by side containers](images/side_by_side_containers.png)
However, an instance in container 1 cannot reference an instance in container 2.
It would be better if an instance of container 1 could reference an instance in container 2,
and the opposite should be true.
![Interoperating containers](images/interoperating_containers.png)
In the sample above, entry 1 in container 1 is referencing entry 3 in container 2.
3. Scope
--------
### 3.1 Goals
The goal of the *delegate lookup* feature is to allow several containers to share entries.
4. Approaches
-------------
### 4.1 Chosen Approach
Containers implementing this feature can perform dependency lookups in other containers.
A container implementing this feature:
- must implement the `ContainerInterface`
- must provide a way to register a *delegate container* (using a constructor parameter, or a setter, or any
possible way). The *delegate container* must implement the `ContainerInterface`.
When a *delegate container* is configured on a container:
- Calls to the `get` method should only return an entry if the entry is part of the container.
If the entry is not part of the container, an exception should be thrown (as required in the `ContainerInterface`).
- Calls to the `has` method should only return *true* if the entry is part of the container.
If the entry is not part of the container, *false* should be returned.
- Finally, the important part: if the entry we are fetching has dependencies,
**instead** of perfoming the dependency lookup in the container, the lookup is performed on the *delegate container*.
Important! By default, the lookup should be performed on the delegate container **only**, not on the container itself.
It is however allowed for containers to provide exception cases for special entries, and a way to lookup into
the same container (or another container) instead of the delegate container.
### 4.2 Typical usage
The *delegate container* will usually be a composite container. A composite container is a container that
contains several other containers. When performing a lookup on a composite container, the inner containers are
queried until one container returns an entry.
An inner container implementing the *delegate lookup feature* will return entries it contains, but if these
entries have dependencies, the dependencies lookup calls will be performed on the composite container, giving
a chance to all containers to answer.
Interestingly enough, the order in which containers are added in the composite container matters. Indeed,
the first containers to be added in the composite container can "override" the entries of containers with
lower priority.
![Containers priority](images/priority.png)
In the example above, "container 2" contains a controller "myController" and the controller is referencing an
"entityManager" entry. "Container 1" contains also an entry named "entityManager".
Without the *delegate lookup* feature, when requesting the "myController" instance to container 2, it would take
in charge the instanciation of both entries.
However, using the *delegate lookup* feature, here is what happens when we ask the composite container for the
"myController" instance:
- The composite container asks container 1 if if contains the "myController" instance. The answer is no.
- The composite container asks container 2 if if contains the "myController" instance. The answer is yes.
- The composite container performs a `get` call on container 2 for the "myController" instance.
- Container 2 sees that "myController" has a dependency on "entityManager".
- Container 2 delegates the lookup of "entityManager" to the composite container.
- The composite container asks container 1 if if contains the "entityManager" instance. The answer is yes.
- The composite container performs a `get` call on container 1 for the "entityManager" instance.
In the end, we get a controller instanciated by container 2 that references an entityManager instanciated
by container 1.
### 4.3 Alternative: the fallback strategy
The first proposed approach we tried was to perform all the lookups in the "local" container,
and if a lookup fails in the container, to use the delegate container. In this scenario, the
delegate container is used in "fallback" mode.
This strategy has been described in @moufmouf blog post: http://mouf-php.com/container-interop-whats-next (solution 1).
It was also discussed [here](https://github.com/container-interop/container-interop/pull/8#issuecomment-33570697) and
[here](https://github.com/container-interop/container-interop/pull/20#issuecomment-56599631).
Problems with this strategy:
- Heavy problem regarding infinite loops
- Unable to overload a container entry with the delegate container entry
### 4.4 Alternative: force implementing an interface
The first proposed approach was to develop a `ParentAwareContainerInterface` interface.
It was proposed here: https://github.com/container-interop/container-interop/pull/8
The interface would have had the behaviour of the delegate lookup feature but would have forced the addition of
a `setParentContainter` method:
```php
interface ParentAwareContainerInterface extends ReadableContainerInterface {
/**
* Sets the parent container associated to that container. This container will call
* the parent container to fetch dependencies.
*
* @param ContainerInterface $container
*/
public function setParentContainer(ContainerInterface $container);
}
```
The interface idea was first questioned by @Ocramius [here](https://github.com/container-interop/container-interop/pull/8#issuecomment-51721777).
@Ocramius expressed the idea that an interface should not contain setters, otherwise, it is forcing implementation
details on the class implementing the interface.
Then @mnapoli made a proposal for a "convention" [here](https://github.com/container-interop/container-interop/pull/8#issuecomment-51841079),
this idea was further discussed until all participants in the discussion agreed to remove the interface idea
and replace it with a "standard" feature.
**Pros:**
If we had had an interface, we could have delegated the registration of the delegate/composite container to the
the delegate/composite container itself.
For instance:
```php
$containerA = new ContainerA();
$containerB = new ContainerB();
$compositeContainer = new CompositeContainer([$containerA, $containerB]);
// The call to 'setParentContainer' is delegated to the CompositeContainer
// It is not the responsibility of the user anymore.
class CompositeContainer {
...
public function __construct($containers) {
foreach ($containers as $container) {
if ($container instanceof ParentAwareContainerInterface) {
$container->setParentContainer($this);
}
}
...
}
}
```
**Cons:**
Cons have been extensively discussed [here](https://github.com/container-interop/container-interop/pull/8#issuecomment-51721777).
Basically, forcing a setter into an interface is a bad idea. Setters are similar to constructor arguments,
and it's a bad idea to standardize a constructor: how the delegate container is configured into a container is an implementation detail. This outweights the benefits of the interface.
### 4.4 Alternative: no exception case for delegate lookups
Originally, the proposed wording for delegate lookup calls was:
> Important! The lookup MUST be performed on the delegate container **only**, not on the container itself.
This was later replaced by:
> Important! By default, the lookup SHOULD be performed on the delegate container **only**, not on the container itself.
>
> It is however allowed for containers to provide exception cases for special entries, and a way to lookup
> into the same container (or another container) instead of the delegate container.
Exception cases have been allowed to avoid breaking dependencies with some services that must be provided
by the container (on @njasm proposal). This was proposed here: https://github.com/container-interop/container-interop/pull/20#issuecomment-56597235
### 4.5 Alternative: having one of the containers act as the composite container
In real-life scenarios, we usually have a big framework (Symfony 2, Zend Framework 2, etc...) and we want to
add another DI container to this container. Most of the time, the "big" framework will be responsible for
creating the controller's instances, using it's own DI container. Until *container-interop* is fully adopted,
the "big" framework will not be aware of the existence of a composite container that it should use instead
of its own container.
For this real-life use cases, @mnapoli and @moufmouf proposed to extend the "big" framework's DI container
to make it act as a composite container.
This has been discussed [here](https://github.com/container-interop/container-interop/pull/8#issuecomment-40367194)
and [here](http://mouf-php.com/container-interop-whats-next#solution4).
This was implemented in Symfony 2 using:
- [interop.symfony.di](https://github.com/thecodingmachine/interop.symfony.di/tree/v0.1.0)
- [framework interop](https://github.com/mnapoli/framework-interop/)
This was implemented in Silex using:
- [interop.silex.di](https://github.com/thecodingmachine/interop.silex.di)
Having a container act as the composite container is not part of the delegate lookup standard because it is
simply a temporary design pattern used to make existing frameworks that do not support yet ContainerInterop
play nice with other DI containers.
5. Implementations
------------------
The following projects already implement the delegate lookup feature:
- [Mouf](http://mouf-php.com), through the [`setDelegateLookupContainer` method](https://github.com/thecodingmachine/mouf/blob/2.0/src/Mouf/MoufManager.php#L2120)
- [PHP-DI](http://php-di.org/), through the [`$wrapperContainer` parameter of the constructor](https://github.com/mnapoli/PHP-DI/blob/master/src/DI/Container.php#L72)
- [pimple-interop](https://github.com/moufmouf/pimple-interop), through the [`$container` parameter of the constructor](https://github.com/moufmouf/pimple-interop/blob/master/src/Interop/Container/Pimple/PimpleInterop.php#L62)
6. People
---------
Are listed here all people that contributed in the discussions, by alphabetical order:
- [Alexandru Pătrănescu](https://github.com/drealecs)
- [Ben Peachey](https://github.com/potherca)
- [David Négrier](https://github.com/moufmouf)
- [Jeremy Lindblom](https://github.com/jeremeamia)
- [Marco Pivetta](https://github.com/Ocramius)
- [Matthieu Napoli](https://github.com/mnapoli)
- [Nelson J Morais](https://github.com/njasm)
- [Phil Sturgeon](https://github.com/philsturgeon)
- [Stephan Hochdörfer](https://github.com/shochdoerfer)
7. Relevant Links
-----------------
_**Note:** Order descending chronologically._
- [Pull request on the delegate lookup feature](https://github.com/container-interop/container-interop/pull/20)
- [Pull request on the interface idea](https://github.com/container-interop/container-interop/pull/8)
- [Original article exposing the delegate lookup idea along many others](http://mouf-php.com/container-interop-whats-next)

View file

@ -0,0 +1,60 @@
Delegate lookup feature
=======================
This document describes a standard for dependency injection containers.
The goal set by the *delegate lookup* feature is to allow several containers to share entries.
Containers implementing this feature can perform dependency lookups in other containers.
Containers implementing this feature will offer a greater lever of interoperability
with other containers. Implementation of this feature is therefore RECOMMENDED.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
"SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be
interpreted as described in [RFC 2119][].
The word `implementor` in this document is to be interpreted as someone
implementing the delegate lookup feature in a dependency injection-related library or framework.
Users of dependency injections containers (DIC) are referred to as `user`.
[RFC 2119]: http://tools.ietf.org/html/rfc2119
1. Vocabulary
-------------
In a dependency injection container, the container is used to fetch entries.
Entries can have dependencies on other entries. Usually, these other entries are fetched by the container.
The *delegate lookup* feature is the ability for a container to fetch dependencies in
another container. In the rest of the document, the word "container" will reference the container
implemented by the implementor. The word "delegate container" will reference the container we are
fetching the dependencies from.
2. Specification
----------------
A container implementing the *delegate lookup* feature:
- MUST implement the [`ContainerInterface`](ContainerInterface.md)
- MUST provide a way to register a delegate container (using a constructor parameter, or a setter,
or any possible way). The delegate container MUST implement the [`ContainerInterface`](ContainerInterface.md).
When a container is configured to use a delegate container for dependencies:
- Calls to the `get` method should only return an entry if the entry is part of the container.
If the entry is not part of the container, an exception should be thrown
(as requested by the [`ContainerInterface`](ContainerInterface.md)).
- Calls to the `has` method should only return `true` if the entry is part of the container.
If the entry is not part of the container, `false` should be returned.
- If the fetched entry has dependencies, **instead** of performing
the dependency lookup in the container, the lookup is performed on the *delegate container*.
Important: By default, the dependency lookups SHOULD be performed on the delegate container **only**, not on the container itself.
It is however allowed for containers to provide exception cases for special entries, and a way to lookup
into the same container (or another container) instead of the delegate container.
3. Package / Interface
----------------------
This feature is not tied to any code, interface or package.

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View file

@ -0,0 +1,15 @@
<?php
/**
* @license http://www.opensource.org/licenses/mit-license.php MIT (see the LICENSE file)
*/
namespace Interop\Container;
use Psr\Container\ContainerInterface as PsrContainerInterface;
/**
* Describes the interface of a container that exposes methods to read its entries.
*/
interface ContainerInterface extends PsrContainerInterface
{
}

View file

@ -0,0 +1,15 @@
<?php
/**
* @license http://www.opensource.org/licenses/mit-license.php MIT (see the LICENSE file)
*/
namespace Interop\Container\Exception;
use Psr\Container\ContainerExceptionInterface as PsrContainerException;
/**
* Base interface representing a generic exception in a container.
*/
interface ContainerException extends PsrContainerException
{
}

View file

@ -0,0 +1,15 @@
<?php
/**
* @license http://www.opensource.org/licenses/mit-license.php MIT (see the LICENSE file)
*/
namespace Interop\Container\Exception;
use Psr\Container\NotFoundExceptionInterface as PsrNotFoundException;
/**
* No entry was found in the container.
*/
interface NotFoundException extends ContainerException, PsrNotFoundException
{
}

View file

@ -0,0 +1,3 @@
phpunit.xml
composer.lock
/vendor/

View file

@ -0,0 +1,40 @@
language: php
env:
matrix:
- PIMPLE_EXT=no
- PIMPLE_EXT=yes
global:
- REPORT_EXIT_STATUS=1
php:
- 5.3
- 5.4
- 5.5
- 5.6
- 7.0
- 7.1
before_script:
- composer self-update
- COMPOSER_ROOT_VERSION=dev-master composer install
- if [ "$PIMPLE_EXT" == "yes" ]; then sh -c "cd ext/pimple && phpize && ./configure && make && sudo make install"; fi
- if [ "$PIMPLE_EXT" == "yes" ]; then echo "extension=pimple.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`; fi
script:
- cd ext/pimple
- if [ "$PIMPLE_EXT" == "yes" ]; then yes n | make test | tee output ; grep -E 'Tests failed +. +0' output; fi
- if [ "$PIMPLE_EXT" == "yes" ]; then export SYMFONY_DEPRECATIONS_HELPER=weak; fi
- cd ../..
- ./vendor/bin/simple-phpunit
matrix:
include:
- php: hhvm
dist: trusty
env: PIMPLE_EXT=no
exclude:
- php: 7.0
env: PIMPLE_EXT=yes
- php: 7.1
env: PIMPLE_EXT=yes

View file

@ -0,0 +1,59 @@
* 3.2.3 (2017-XX-XX)
* n/a
* 3.2.2 (2017-07-23)
* reverted extending a protected closure throws an exception (deprecated it instead)
* 3.2.1 (2017-07-17)
* fixed PHP error
* 3.2.0 (2017-07-17)
* added a PSR-11 service locator
* added a PSR-11 wrapper
* added ServiceIterator
* fixed extending a protected closure (now throws InvalidServiceIdentifierException)
* 3.1.0 (2017-07-03)
* deprecated the C extension
* added support for PSR-11 exceptions
* 3.0.2 (2015-09-11)
* refactored the C extension
* minor non-significant changes
* 3.0.1 (2015-07-30)
* simplified some code
* fixed a segfault in the C extension
* 3.0.0 (2014-07-24)
* removed the Pimple class alias (use Pimple\Container instead)
* 2.1.1 (2014-07-24)
* fixed compiler warnings for the C extension
* fixed code when dealing with circular references
* 2.1.0 (2014-06-24)
* moved the Pimple to Pimple\Container (with a BC layer -- Pimple is now a
deprecated alias which will be removed in Pimple 3.0)
* added Pimple\ServiceProviderInterface (and Pimple::register())
* 2.0.0 (2014-02-10)
* changed extend to automatically re-assign the extended service and keep it as shared or factory
(to keep BC, extend still returns the extended service)
* changed services to be shared by default (use factory() for factory
services)
* 1.0.0
* initial version

View file

@ -0,0 +1,19 @@
Copyright (c) 2009-2017 Fabien Potencier
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished
to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

View file

@ -0,0 +1,326 @@
Pimple
======
.. caution::
This is the documentation for Pimple 3.x. If you are using Pimple 1.x, read
the `Pimple 1.x documentation`_. Reading the Pimple 1.x code is also a good
way to learn more about how to create a simple Dependency Injection
Container (recent versions of Pimple are more focused on performance).
Pimple is a small Dependency Injection Container for PHP.
Installation
------------
Before using Pimple in your project, add it to your ``composer.json`` file:
.. code-block:: bash
$ ./composer.phar require pimple/pimple "^3.0"
Usage
-----
Creating a container is a matter of creating a ``Container`` instance:
.. code-block:: php
use Pimple\Container;
$container = new Container();
As many other dependency injection containers, Pimple manages two different
kind of data: **services** and **parameters**.
Defining Services
~~~~~~~~~~~~~~~~~
A service is an object that does something as part of a larger system. Examples
of services: a database connection, a templating engine, or a mailer. Almost
any **global** object can be a service.
Services are defined by **anonymous functions** that return an instance of an
object:
.. code-block:: php
// define some services
$container['session_storage'] = function ($c) {
return new SessionStorage('SESSION_ID');
};
$container['session'] = function ($c) {
return new Session($c['session_storage']);
};
Notice that the anonymous function has access to the current container
instance, allowing references to other services or parameters.
As objects are only created when you get them, the order of the definitions
does not matter.
Using the defined services is also very easy:
.. code-block:: php
// get the session object
$session = $container['session'];
// the above call is roughly equivalent to the following code:
// $storage = new SessionStorage('SESSION_ID');
// $session = new Session($storage);
Defining Factory Services
~~~~~~~~~~~~~~~~~~~~~~~~~
By default, each time you get a service, Pimple returns the **same instance**
of it. If you want a different instance to be returned for all calls, wrap your
anonymous function with the ``factory()`` method
.. code-block:: php
$container['session'] = $container->factory(function ($c) {
return new Session($c['session_storage']);
});
Now, each call to ``$container['session']`` returns a new instance of the
session.
Defining Parameters
~~~~~~~~~~~~~~~~~~~
Defining a parameter allows to ease the configuration of your container from
the outside and to store global values:
.. code-block:: php
// define some parameters
$container['cookie_name'] = 'SESSION_ID';
$container['session_storage_class'] = 'SessionStorage';
If you change the ``session_storage`` service definition like below:
.. code-block:: php
$container['session_storage'] = function ($c) {
return new $c['session_storage_class']($c['cookie_name']);
};
You can now easily change the cookie name by overriding the
``cookie_name`` parameter instead of redefining the service
definition.
Protecting Parameters
~~~~~~~~~~~~~~~~~~~~~
Because Pimple sees anonymous functions as service definitions, you need to
wrap anonymous functions with the ``protect()`` method to store them as
parameters:
.. code-block:: php
$container['random_func'] = $container->protect(function () {
return rand();
});
Modifying Services after Definition
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In some cases you may want to modify a service definition after it has been
defined. You can use the ``extend()`` method to define additional code to be
run on your service just after it is created:
.. code-block:: php
$container['session_storage'] = function ($c) {
return new $c['session_storage_class']($c['cookie_name']);
};
$container->extend('session_storage', function ($storage, $c) {
$storage->...();
return $storage;
});
The first argument is the name of the service to extend, the second a function
that gets access to the object instance and the container.
Extending a Container
~~~~~~~~~~~~~~~~~~~~~
If you use the same libraries over and over, you might want to reuse some
services from one project to the next one; package your services into a
**provider** by implementing ``Pimple\ServiceProviderInterface``:
.. code-block:: php
use Pimple\Container;
class FooProvider implements Pimple\ServiceProviderInterface
{
public function register(Container $pimple)
{
// register some services and parameters
// on $pimple
}
}
Then, register the provider on a Container:
.. code-block:: php
$pimple->register(new FooProvider());
Fetching the Service Creation Function
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
When you access an object, Pimple automatically calls the anonymous function
that you defined, which creates the service object for you. If you want to get
raw access to this function, you can use the ``raw()`` method:
.. code-block:: php
$container['session'] = function ($c) {
return new Session($c['session_storage']);
};
$sessionFunction = $container->raw('session');
PSR-11 compatibility
--------------------
For historical reasons, the ``Container`` class does not implement the PSR-11
``ContainerInterface``. However, Pimple provides a helper class that will let
you decouple your code from the Pimple container class.
The PSR-11 container class
~~~~~~~~~~~~~~~~~~~~~~~~~~
The ``Pimple\Psr11\Container`` class lets you access the content of an
underlying Pimple container using ``Psr\Container\ContainerInterface``
methods:
.. code-block:: php
use Pimple\Container;
use Pimple\Psr11\Container as PsrContainer;
$container = new Container();
$container['service'] = function ($c) {
return new Service();
};
$psr11 = new PsrContainer($container);
$controller = function (PsrContainer $container) {
$service = $container->get('service');
};
$controller($psr11);
Using the PSR-11 ServiceLocator
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sometimes, a service needs access to several other services without being sure
that all of them will actually be used. In those cases, you may want the
instantiation of the services to be lazy.
The traditional solution is to inject the entire service container to get only
the services really needed. However, this is not recommended because it gives
services a too broad access to the rest of the application and it hides their
actual dependencies.
The ``ServiceLocator`` is intended to solve this problem by giving access to a
set of predefined services while instantiating them only when actually needed.
It also allows you to make your services available under a different name than
the one used to register them. For instance, you may want to use an object
that expects an instance of ``EventDispatcherInterface`` to be available under
the name ``event_dispatcher`` while your event dispatcher has been
registered under the name ``dispatcher``:
.. code-block:: php
use Monolog\Logger;
use Pimple\Psr11\ServiceLocator;
use Psr\Container\ContainerInterface;
use Symfony\Component\EventDispatcher\EventDispatcher;
class MyService
{
/**
* "logger" must be an instance of Psr\Log\LoggerInterface
* "event_dispatcher" must be an instance of Symfony\Component\EventDispatcher\EventDispatcherInterface
*/
private $services;
public function __construct(ContainerInterface $services)
{
$this->services = $services;
}
}
$container['logger'] = function ($c) {
return new Monolog\Logger();
};
$container['dispatcher'] = function () {
return new EventDispatcher();
};
$container['service'] = function ($c) {
$locator = new ServiceLocator($c, array('logger', 'event_dispatcher' => 'dispatcher'));
return new MyService($locator);
};
Referencing a Collection of Services Lazily
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Passing a collection of services instances in an array may prove inefficient
if the class that consumes the collection only needs to iterate over it at a
later stage, when one of its method is called. It can also lead to problems
if there is a circular dependency between one of the services stored in the
collection and the class that consumes it.
The ``ServiceIterator`` class helps you solve these issues. It receives a
list of service names during instantiation and will retrieve the services
when iterated over:
.. code-block:: php
use Pimple\Container;
use Pimple\ServiceIterator;
class AuthorizationService
{
private $voters;
public function __construct($voters)
{
$this->voters = $voters;
}
public function canAccess($resource)
{
foreach ($this->voters as $voter) {
if (true === $voter->canAccess($resource) {
return true;
}
}
return false;
}
}
$container = new Container();
$container['voter1'] = function ($c) {
return new SomeVoter();
}
$container['voter2'] = function ($c) {
return new SomeOtherVoter($c['auth']);
}
$container['auth'] = function ($c) {
return new AuthorizationService(new ServiceIterator($c, array('voter1', 'voter2'));
}
.. _Pimple 1.x documentation: https://github.com/silexphp/Pimple/tree/1.1

View file

@ -0,0 +1,29 @@
{
"name": "pimple/pimple",
"type": "library",
"description": "Pimple, a simple Dependency Injection Container",
"keywords": ["dependency injection", "container"],
"homepage": "http://pimple.sensiolabs.org",
"license": "MIT",
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"require": {
"php": ">=5.3.0",
"psr/container": "^1.0"
},
"require-dev": {
"symfony/phpunit-bridge": "^3.2"
},
"autoload": {
"psr-0": { "Pimple": "src/" }
},
"extra": {
"branch-alias": {
"dev-master": "3.2.x-dev"
}
}
}

View file

@ -0,0 +1,30 @@
*.sw*
.deps
Makefile
Makefile.fragments
Makefile.global
Makefile.objects
acinclude.m4
aclocal.m4
build/
config.cache
config.guess
config.h
config.h.in
config.log
config.nice
config.status
config.sub
configure
configure.in
install-sh
libtool
ltmain.sh
missing
mkinstalldirs
run-tests.php
*.loT
.libs/
modules/
*.la
*.lo

View file

@ -0,0 +1,12 @@
This is Pimple 2 implemented in C
* PHP >= 5.3
* Not tested under Windows, might work
Install
=======
> phpize
> ./configure
> make
> make install

View file

@ -0,0 +1,63 @@
dnl $Id$
dnl config.m4 for extension pimple
dnl Comments in this file start with the string 'dnl'.
dnl Remove where necessary. This file will not work
dnl without editing.
dnl If your extension references something external, use with:
dnl PHP_ARG_WITH(pimple, for pimple support,
dnl Make sure that the comment is aligned:
dnl [ --with-pimple Include pimple support])
dnl Otherwise use enable:
PHP_ARG_ENABLE(pimple, whether to enable pimple support,
dnl Make sure that the comment is aligned:
[ --enable-pimple Enable pimple support])
if test "$PHP_PIMPLE" != "no"; then
dnl Write more examples of tests here...
dnl # --with-pimple -> check with-path
dnl SEARCH_PATH="/usr/local /usr" # you might want to change this
dnl SEARCH_FOR="/include/pimple.h" # you most likely want to change this
dnl if test -r $PHP_PIMPLE/$SEARCH_FOR; then # path given as parameter
dnl PIMPLE_DIR=$PHP_PIMPLE
dnl else # search default path list
dnl AC_MSG_CHECKING([for pimple files in default path])
dnl for i in $SEARCH_PATH ; do
dnl if test -r $i/$SEARCH_FOR; then
dnl PIMPLE_DIR=$i
dnl AC_MSG_RESULT(found in $i)
dnl fi
dnl done
dnl fi
dnl
dnl if test -z "$PIMPLE_DIR"; then
dnl AC_MSG_RESULT([not found])
dnl AC_MSG_ERROR([Please reinstall the pimple distribution])
dnl fi
dnl # --with-pimple -> add include path
dnl PHP_ADD_INCLUDE($PIMPLE_DIR/include)
dnl # --with-pimple -> check for lib and symbol presence
dnl LIBNAME=pimple # you may want to change this
dnl LIBSYMBOL=pimple # you most likely want to change this
dnl PHP_CHECK_LIBRARY($LIBNAME,$LIBSYMBOL,
dnl [
dnl PHP_ADD_LIBRARY_WITH_PATH($LIBNAME, $PIMPLE_DIR/lib, PIMPLE_SHARED_LIBADD)
dnl AC_DEFINE(HAVE_PIMPLELIB,1,[ ])
dnl ],[
dnl AC_MSG_ERROR([wrong pimple lib version or lib not found])
dnl ],[
dnl -L$PIMPLE_DIR/lib -lm
dnl ])
dnl
dnl PHP_SUBST(PIMPLE_SHARED_LIBADD)
PHP_NEW_EXTENSION(pimple, pimple.c, $ext_shared)
fi

View file

@ -0,0 +1,13 @@
// $Id$
// vim:ft=javascript
// If your extension references something external, use ARG_WITH
// ARG_WITH("pimple", "for pimple support", "no");
// Otherwise, use ARG_ENABLE
// ARG_ENABLE("pimple", "enable pimple support", "no");
if (PHP_PIMPLE != "no") {
EXTENSION("pimple", "pimple.c");
}

View file

@ -0,0 +1,137 @@
/*
* This file is part of Pimple.
*
* Copyright (c) 2014 Fabien Potencier
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is furnished
* to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#ifndef PHP_PIMPLE_H
#define PHP_PIMPLE_H
extern zend_module_entry pimple_module_entry;
#define phpext_pimple_ptr &pimple_module_entry
#ifdef PHP_WIN32
# define PHP_PIMPLE_API __declspec(dllexport)
#elif defined(__GNUC__) && __GNUC__ >= 4
# define PHP_PIMPLE_API __attribute__ ((visibility("default")))
#else
# define PHP_PIMPLE_API
#endif
#ifdef ZTS
#include "TSRM.h"
#endif
#define PIMPLE_VERSION "3.2.3-DEV"
#define PIMPLE_NS "Pimple"
#define PSR_CONTAINER_NS "Psr\\Container"
#define PIMPLE_EXCEPTION_NS "Pimple\\Exception"
#define PIMPLE_DEFAULT_ZVAL_CACHE_NUM 5
#define PIMPLE_DEFAULT_ZVAL_VALUES_NUM 10
#define PIMPLE_DEPRECATE do { \
int er = EG(error_reporting); \
EG(error_reporting) = 0;\
php_error(E_DEPRECATED, "The Pimple C extension is deprecated since version 3.1 and will be removed in 4.0."); \
EG(error_reporting) = er; \
} while (0);
zend_module_entry *get_module(void);
PHP_MINIT_FUNCTION(pimple);
PHP_MINFO_FUNCTION(pimple);
PHP_METHOD(FrozenServiceException, __construct);
PHP_METHOD(InvalidServiceIdentifierException, __construct);
PHP_METHOD(UnknownIdentifierException, __construct);
PHP_METHOD(Pimple, __construct);
PHP_METHOD(Pimple, factory);
PHP_METHOD(Pimple, protect);
PHP_METHOD(Pimple, raw);
PHP_METHOD(Pimple, extend);
PHP_METHOD(Pimple, keys);
PHP_METHOD(Pimple, register);
PHP_METHOD(Pimple, offsetSet);
PHP_METHOD(Pimple, offsetUnset);
PHP_METHOD(Pimple, offsetGet);
PHP_METHOD(Pimple, offsetExists);
PHP_METHOD(PimpleClosure, invoker);
typedef struct _pimple_bucket_value {
zval *value; /* Must be the first element */
zval *raw;
zend_object_handle handle_num;
enum {
PIMPLE_IS_PARAM = 0,
PIMPLE_IS_SERVICE = 2
} type;
zend_bool initialized;
zend_fcall_info_cache fcc;
} pimple_bucket_value;
typedef struct _pimple_object {
zend_object zobj;
HashTable values;
HashTable factories;
HashTable protected;
} pimple_object;
typedef struct _pimple_closure_object {
zend_object zobj;
zval *callable;
zval *factory;
} pimple_closure_object;
static const char sensiolabs_logo[] = "<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHYAAAAUCAMAAABvRTlyAAAAz1BMVEUAAAAAAAAAAAAsThWB5j4AAACD6T8AAACC6D+C6D6C6D+C6D4AAAAAAACC6D4AAAAAAACC6D8AAAAAAAAAAAAAAAAAAAAAAACC6D4AAAAAAAAAAACC6D4AAAAAAAAAAAAAAAAAAAAAAACC6D8AAACC6D4AAAAAAAAAAAAAAAAAAACC6D8AAACC6D6C6D+B6D+C6D+C6D+C6D8AAACC6D6C6D4AAACC6D/K/2KC6D+B6D6C6D6C6D+C6D8sTxUyWRhEeiEAAACC6D+C5z6B6D7drnEVAAAAQXRSTlMAE3oCNSUuDHFHzxaF9UFsu+irX+zlKzYimaJXktyOSFD6BolxqT7QGMMdarMIpuO28r9EolXKgR16OphfXYd4V14GtB4AAAMpSURBVEjHvVSJctowEF1jjME2RziMwUCoMfd9heZqG4n//6buLpJjkmYm03byZmxJa2nf6u2uQcG2bfhqRN4LoTKBzyGDm68M7mAwcOEdjo4zhA/Rf9Go/CVtTgiRhXfIC3EDH8F/eUX1/9KexRo+QgOdtHDsEe/sM7QT32/+K61Z1LFXcXJxN4pTbu1aTQUzuy2PIA0rDo0/0Aa5XFaJvKaVTrubywXvaa1Wq4Vu/Snr3Y7Aojh4VccwykW2N2oQ8wmjyut6+Q1t5ywIG5Npj1sh5E0B7YOzFDjfuRfaOh3O+MbbVNfTWS9COZk3Obd2su5d0a6IU9KLREbw8gEehWSr1r2sPWciXLG38r5NdW0xu9eioU87omjC9yNaMi5GNf6WppVSOqXCFkmCvMB3p9SROLoYQn5pDgQOujA1xjYvqH+plUdkwnmII8VxR/PKYkrfLLomhVlE3b/LhNbNr7hp0H2JaOc4v8dFB58HSsFTSafaqtY1sT3GO8wsy5rhokYPlRJdjPMajyYqTt1EHF/2uqSWQWmAjCUSmQ1MS3g8Btf1XOsy7YIC0CB1b5Xw1Vhba0zbxiCAQLH9TNPmHJXQUtJAN0KcDsoqLxsNvJrJExa7mKIdp2lRE2WexiS4pqWk/0jROlw6K6bV9YOBDGAuqMJ0bnuUKGB0L27bxgRhGEbzihbhxxXaQC88Vkwq8ldCi86RApWUb0Q+4VDosBCc+1s81lUdnBavH4Zp2mm3O44USwOfvSo9oBiwpFg71lMS1VKJLKljS3j9p+fOTvXXlsSNuEv6YPaZda9uRope0VJfKdo7fPiYfSmvFjXQbkhY0d9hCbBWIktRgEDieDhf1N3wbbkmNNgRy8hyl620yGQat/grV3HMpc2HDKTVmOPFz6ylPCKt/nXcAyV260jaAowwIW0YuBzrOgb/KrddZS9OmJaLgpWK4JX2DDuklcLZSDGcn8Vmx9YDNvT6UsjyBApRyFQVX7Vxm9TGxE16nmfRd8/zQoDmggQOTRh5Hv8pMt9Q/L2JmSwkMCE7dA4BuDjHJwfu0Om4QAhOjrN5XkIatglfiN/bUPdCQFjTYgAAAABJRU5ErkJggg==\">";
static void pimple_exception_call_parent_constructor(zval *this_ptr, const char *format, const char *arg1 TSRMLS_DC);
static int pimple_zval_to_pimpleval(zval *_zval, pimple_bucket_value *_pimple_bucket_value TSRMLS_DC);
static int pimple_zval_is_valid_callback(zval *_zval, pimple_bucket_value *_pimple_bucket_value TSRMLS_DC);
static void pimple_bucket_dtor(pimple_bucket_value *bucket);
static void pimple_free_bucket(pimple_bucket_value *bucket);
static zval *pimple_object_read_dimension(zval *object, zval *offset, int type TSRMLS_DC);
static void pimple_object_write_dimension(zval *object, zval *offset, zval *value TSRMLS_DC);
static int pimple_object_has_dimension(zval *object, zval *offset, int check_empty TSRMLS_DC);
static void pimple_object_unset_dimension(zval *object, zval *offset TSRMLS_DC);
static zend_object_value pimple_object_create(zend_class_entry *ce TSRMLS_DC);
static void pimple_free_object_storage(pimple_object *obj TSRMLS_DC);
static void pimple_closure_free_object_storage(pimple_closure_object *obj TSRMLS_DC);
static zend_object_value pimple_closure_object_create(zend_class_entry *ce TSRMLS_DC);
static zend_function *pimple_closure_get_constructor(zval * TSRMLS_DC);
static int pimple_closure_get_closure(zval *obj, zend_class_entry **ce_ptr, union _zend_function **fptr_ptr, zval **zobj_ptr TSRMLS_DC);
#ifdef ZTS
#define PIMPLE_G(v) TSRMG(pimple_globals_id, zend_pimple_globals *, v)
#else
#define PIMPLE_G(v) (pimple_globals.v)
#endif
#endif /* PHP_PIMPLE_H */

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,81 @@
/*
* This file is part of Pimple.
*
* Copyright (c) 2014 Fabien Potencier
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is furnished
* to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#ifndef PIMPLE_COMPAT_H_
#define PIMPLE_COMPAT_H_
#include "Zend/zend_extensions.h" /* for ZEND_EXTENSION_API_NO */
#define PHP_5_0_X_API_NO 220040412
#define PHP_5_1_X_API_NO 220051025
#define PHP_5_2_X_API_NO 220060519
#define PHP_5_3_X_API_NO 220090626
#define PHP_5_4_X_API_NO 220100525
#define PHP_5_5_X_API_NO 220121212
#define PHP_5_6_X_API_NO 220131226
#define IS_PHP_56 ZEND_EXTENSION_API_NO == PHP_5_6_X_API_NO
#define IS_AT_LEAST_PHP_56 ZEND_EXTENSION_API_NO >= PHP_5_6_X_API_NO
#define IS_PHP_55 ZEND_EXTENSION_API_NO == PHP_5_5_X_API_NO
#define IS_AT_LEAST_PHP_55 ZEND_EXTENSION_API_NO >= PHP_5_5_X_API_NO
#define IS_PHP_54 ZEND_EXTENSION_API_NO == PHP_5_4_X_API_NO
#define IS_AT_LEAST_PHP_54 ZEND_EXTENSION_API_NO >= PHP_5_4_X_API_NO
#define IS_PHP_53 ZEND_EXTENSION_API_NO == PHP_5_3_X_API_NO
#define IS_AT_LEAST_PHP_53 ZEND_EXTENSION_API_NO >= PHP_5_3_X_API_NO
#if IS_PHP_53
#define object_properties_init(obj, ce) do { \
zend_hash_copy(obj->properties, &ce->default_properties, zval_copy_property_ctor(ce), NULL, sizeof(zval *)); \
} while (0);
#endif
#define ZEND_OBJ_INIT(obj, ce) do { \
zend_object_std_init(obj, ce TSRMLS_CC); \
object_properties_init((obj), (ce)); \
} while(0);
#if IS_PHP_53 || IS_PHP_54
static void zend_hash_get_current_key_zval_ex(const HashTable *ht, zval *key, HashPosition *pos) {
Bucket *p;
p = pos ? (*pos) : ht->pInternalPointer;
if (!p) {
Z_TYPE_P(key) = IS_NULL;
} else if (p->nKeyLength) {
Z_TYPE_P(key) = IS_STRING;
Z_STRVAL_P(key) = estrndup(p->arKey, p->nKeyLength - 1);
Z_STRLEN_P(key) = p->nKeyLength - 1;
} else {
Z_TYPE_P(key) = IS_LONG;
Z_LVAL_P(key) = p->h;
}
}
#endif
#endif /* PIMPLE_COMPAT_H_ */

View file

@ -0,0 +1,45 @@
--TEST--
Test for read_dim/write_dim handlers
--SKIPIF--
<?php if (!extension_loaded("pimple")) print "skip"; ?>
--FILE--
<?php
$p = new Pimple\Container();
$p[42] = 'foo';
$p['foo'] = 42;
echo $p[42];
echo "\n";
echo $p['foo'];
echo "\n";
try {
var_dump($p['nonexistant']);
echo "Exception excpected";
} catch (InvalidArgumentException $e) { }
$p[54.2] = 'foo2';
echo $p[54];
echo "\n";
$p[242.99] = 'foo99';
echo $p[242];
echo "\n";
$p[5] = 'bar';
$p[5] = 'baz';
echo $p[5];
echo "\n";
$p['str'] = 'str';
$p['str'] = 'strstr';
echo $p['str'];
?>
--EXPECTF--
foo
42
foo2
foo99
baz
strstr

View file

@ -0,0 +1,15 @@
--TEST--
Test for constructor
--SKIPIF--
<?php if (!extension_loaded("pimple")) print "skip"; ?>
--FILE--
<?php
$p = new Pimple\Container();
var_dump($p[42]);
$p = new Pimple\Container(array(42=>'foo'));
var_dump($p[42]);
?>
--EXPECT--
NULL
string(3) "foo"

View file

@ -0,0 +1,16 @@
--TEST--
Test empty dimensions
--SKIPIF--
<?php if (!extension_loaded("pimple")) print "skip"; ?>
--FILE--
<?php
$p = new Pimple\Container();
$p[] = 42;
var_dump($p[0]);
$p[41] = 'foo';
$p[] = 'bar';
var_dump($p[42]);
?>
--EXPECT--
int(42)
string(3) "bar"

View file

@ -0,0 +1,30 @@
--TEST--
Test has/unset dim handlers
--SKIPIF--
<?php if (!extension_loaded("pimple")) print "skip"; ?>
--FILE--
<?php
$p = new Pimple\Container();
$p[] = 42;
var_dump($p[0]);
unset($p[0]);
var_dump($p[0]);
$p['foo'] = 'bar';
var_dump(isset($p['foo']));
unset($p['foo']);
try {
var_dump($p['foo']);
echo "Excpected exception";
} catch (InvalidArgumentException $e) { }
var_dump(isset($p['bar']));
$p['bar'] = NULL;
var_dump(isset($p['bar']));
var_dump(empty($p['bar']));
?>
--EXPECT--
int(42)
NULL
bool(true)
bool(false)
bool(true)
bool(true)

View file

@ -0,0 +1,27 @@
--TEST--
Test simple class inheritance
--SKIPIF--
<?php if (!extension_loaded("pimple")) print "skip"; ?>
--FILE--
<?php
class MyPimple extends Pimple\Container
{
public $someAttr = 'fooAttr';
public function offsetget($o)
{
var_dump("hit");
return parent::offsetget($o);
}
}
$p = new MyPimple;
$p[42] = 'foo';
echo $p[42];
echo "\n";
echo $p->someAttr;
?>
--EXPECT--
string(3) "hit"
foo
fooAttr

View file

@ -0,0 +1,51 @@
--TEST--
Test complex class inheritance
--SKIPIF--
<?php if (!extension_loaded("pimple")) print "skip"; ?>
--FILE--
<?php
class MyPimple extends Pimple\Container
{
public function offsetget($o)
{
var_dump("hit offsetget in " . __CLASS__);
return parent::offsetget($o);
}
}
class TestPimple extends MyPimple
{
public function __construct($values)
{
array_shift($values);
parent::__construct($values);
}
public function offsetget($o)
{
var_dump('hit offsetget in ' . __CLASS__);
return parent::offsetget($o);
}
public function offsetset($o, $v)
{
var_dump('hit offsetset');
return parent::offsetset($o, $v);
}
}
$defaultValues = array('foo' => 'bar', 88 => 'baz');
$p = new TestPimple($defaultValues);
$p[42] = 'foo';
var_dump($p[42]);
var_dump($p[0]);
?>
--EXPECT--
string(13) "hit offsetset"
string(27) "hit offsetget in TestPimple"
string(25) "hit offsetget in MyPimple"
string(3) "foo"
string(27) "hit offsetget in TestPimple"
string(25) "hit offsetget in MyPimple"
string(3) "baz"

View file

@ -0,0 +1,22 @@
--TEST--
Test for read_dim/write_dim handlers
--SKIPIF--
<?php if (!extension_loaded("pimple")) print "skip"; ?>
--FILE--
<?php
$p = new Pimple\Container();
$p[42] = 'foo';
$p['foo'] = 42;
echo $p[42];
echo "\n";
echo $p['foo'];
echo "\n";
try {
var_dump($p['nonexistant']);
echo "Exception excpected";
} catch (InvalidArgumentException $e) { }
?>
--EXPECTF--
foo
42

View file

@ -0,0 +1,29 @@
--TEST--
Test frozen services
--SKIPIF--
<?php if (!extension_loaded("pimple")) print "skip"; ?>
--FILE--
<?php
$p = new Pimple\Container();
$p[42] = 'foo';
$p[42] = 'bar';
$p['foo'] = function () { };
$p['foo'] = function () { };
$a = $p['foo'];
try {
$p['foo'] = function () { };
echo "Exception excpected";
} catch (RuntimeException $e) { }
$p[42] = function() { };
$a = $p[42];
try {
$p[42] = function () { };
echo "Exception excpected";
} catch (RuntimeException $e) { }
?>
--EXPECTF--

View file

@ -0,0 +1,13 @@
--TEST--
Test service is called as callback, and only once
--SKIPIF--
<?php if (!extension_loaded("pimple")) print "skip"; ?>
--FILE--
<?php
$p = new Pimple\Container();
$p['foo'] = function($arg) use ($p) { var_dump($p === $arg); };
$a = $p['foo'];
$b = $p['foo']; /* should return not calling the callback */
?>
--EXPECTF--
bool(true)

View file

@ -0,0 +1,45 @@
--TEST--
Test service is called as callback for every callback type
--SKIPIF--
<?php if (!extension_loaded("pimple")) print "skip"; ?>
--FILE--
<?php
function callme()
{
return 'called';
}
$a = function() { return 'called'; };
class Foo
{
public static function bar()
{
return 'called';
}
}
$p = new Pimple\Container();
$p['foo'] = 'callme';
echo $p['foo'] . "\n";
$p['bar'] = $a;
echo $p['bar'] . "\n";
$p['baz'] = "Foo::bar";
echo $p['baz'] . "\n";
$p['foobar'] = array('Foo', 'bar');
var_dump($p['foobar']);
?>
--EXPECTF--
callme
called
Foo::bar
array(2) {
[0]=>
string(3) "Foo"
[1]=>
string(3) "bar"
}

View file

@ -0,0 +1,19 @@
--TEST--
Test service callback throwing an exception
--SKIPIF--
<?php if (!extension_loaded("pimple")) print "skip"; ?>
--FILE--
<?php
class CallBackException extends RuntimeException { }
$p = new Pimple\Container();
$p['foo'] = function () { throw new CallBackException; };
try {
echo $p['foo'] . "\n";
echo "should not come here";
} catch (CallBackException $e) {
echo "all right!";
}
?>
--EXPECTF--
all right!

View file

@ -0,0 +1,28 @@
--TEST--
Test service factory
--SKIPIF--
<?php if (!extension_loaded("pimple")) print "skip"; ?>
--FILE--
<?php
$p = new Pimple\Container();
$p->factory($f = function() { var_dump('called-1'); return 'ret-1';});
$p[] = $f;
$p[] = function () { var_dump('called-2'); return 'ret-2'; };
var_dump($p[0]);
var_dump($p[0]);
var_dump($p[1]);
var_dump($p[1]);
?>
--EXPECTF--
string(8) "called-1"
string(5) "ret-1"
string(8) "called-1"
string(5) "ret-1"
string(8) "called-2"
string(5) "ret-2"
string(5) "ret-2"

View file

@ -0,0 +1,33 @@
--TEST--
Test keys()
--SKIPIF--
<?php if (!extension_loaded("pimple")) print "skip"; ?>
--FILE--
<?php
$p = new Pimple\Container();
var_dump($p->keys());
$p['foo'] = 'bar';
$p[] = 'foo';
var_dump($p->keys());
unset($p['foo']);
var_dump($p->keys());
?>
--EXPECTF--
array(0) {
}
array(2) {
[0]=>
string(3) "foo"
[1]=>
int(0)
}
array(1) {
[0]=>
int(0)
}

View file

@ -0,0 +1,30 @@
--TEST--
Test raw()
--SKIPIF--
<?php if (!extension_loaded("pimple")) print "skip"; ?>
--FILE--
<?php
$p = new Pimple\Container();
$f = function () { var_dump('called-2'); return 'ret-2'; };
$p['foo'] = $f;
$p[42] = $f;
var_dump($p['foo']);
var_dump($p->raw('foo'));
var_dump($p[42]);
unset($p['foo']);
try {
$p->raw('foo');
echo "expected exception";
} catch (InvalidArgumentException $e) { }
--EXPECTF--
string(8) "called-2"
string(5) "ret-2"
object(Closure)#%i (0) {
}
string(8) "called-2"
string(5) "ret-2"

View file

@ -0,0 +1,17 @@
--TEST--
Test protect()
--SKIPIF--
<?php if (!extension_loaded("pimple")) print "skip"; ?>
--FILE--
<?php
$p = new Pimple\Container();
$f = function () { return 'foo'; };
$p['foo'] = $f;
$p->protect($f);
var_dump($p['foo']);
--EXPECTF--
object(Closure)#%i (0) {
}

View file

@ -0,0 +1,24 @@
--TEST--
Test extend()
--SKIPIF--
<?php if (!extension_loaded("pimple")) print "skip"; ?>
--FILE--
<?php
/*
This is part of Pimple::extend() code :
$extended = function ($c) use ($callable, $factory) {
return $callable($factory($c), $c);
};
*/
$p = new Pimple\Container();
$p[12] = function ($v) { var_dump($v); return 'foo';}; /* $factory in code above */
$c = $p->extend(12, function ($w) { var_dump($w); return 'bar'; }); /* $callable in code above */
var_dump($c('param'));
--EXPECTF--
string(5) "param"
string(3) "foo"
string(3) "bar"

View file

@ -0,0 +1,17 @@
--TEST--
Test extend() with exception in service extension
--SKIPIF--
<?php if (!extension_loaded("pimple")) print "skip"; ?>
--FILE--
<?php
$p = new Pimple\Container();
$p[12] = function ($v) { return 'foo';};
$c = $p->extend(12, function ($w) { throw new BadMethodCallException; });
try {
$p[12];
echo "Exception expected";
} catch (BadMethodCallException $e) { }
--EXPECTF--

View file

@ -0,0 +1,17 @@
--TEST--
Test extend() with exception in service factory
--SKIPIF--
<?php if (!extension_loaded("pimple")) print "skip"; ?>
--FILE--
<?php
$p = new Pimple\Container();
$p[12] = function ($v) { throw new BadMethodCallException; };
$c = $p->extend(12, function ($w) { return 'foobar'; });
try {
$p[12];
echo "Exception expected";
} catch (BadMethodCallException $e) { }
--EXPECTF--

View file

@ -0,0 +1,23 @@
--TEST--
Test register()
--SKIPIF--
<?php if (!extension_loaded("pimple")) print "skip"; ?>
--FILE--
<?php
class Foo implements Pimple\ServiceProviderInterface
{
public function register(Pimple\Container $p)
{
var_dump($p);
}
}
$p = new Pimple\Container();
$p->register(new Foo, array(42 => 'bar'));
var_dump($p[42]);
--EXPECTF--
object(Pimple\Container)#1 (0) {
}
string(3) "bar"

Some files were not shown because too many files have changed in this diff Show more