diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 00000000..ef6e90b2
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,32 @@
+# editorconfig tool configuration
+# see http://editorconfig.org for docs
+
+root = true
+
+[*]
+charset = utf-8
+end_of_line = lf
+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
diff --git a/.gitignore b/.gitignore
index 36ccc906..0d32de00 100644
--- a/.gitignore
+++ b/.gitignore
@@ -18,7 +18,7 @@ report/
#ignore OSX .DS_Store files
.DS_Store
-/nbproject/private/
+/nbproject/
#ignore smarty cache
/view/smarty3/compiled/
diff --git a/.tx/config b/.tx/config
index 599edaee..8542c680 100644
--- a/.tx/config
+++ b/.tx/config
@@ -1,368 +1,399 @@
[main]
-host = https://www.transifex.com
+host = https://api.transifex.com
-[friendica.addon_blackout_messagespo]
+[o:Friendica:p:friendica:r:addon_advancedcontentfilter_messagespo]
+file_filter = advancedcontentfilter/lang//messages.po
+source_file = advancedcontentfilter/lang/C/messages.po
+source_lang = en
+type = PO
+
+[o:Friendica:p:friendica:r:addon_blackout_messagespo]
file_filter = blackout/lang//messages.po
source_file = blackout/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_blockem_messagespo]
+[o:Friendica:p:friendica:r:addon_blockem_messagespo]
file_filter = blockem/lang//messages.po
source_file = blockem/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_blogger_messagespo]
+[o:Friendica:p:friendica:r:addon_blogger_messagespo]
file_filter = blogger/lang//messages.po
source_file = blogger/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_buffer_messagespo]
+[o:Friendica:p:friendica:r:addon_buffer_messagespo]
file_filter = buffer/lang//messages.po
source_file = buffer/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_buglink_messagespo]
+[o:Friendica:p:friendica:r:addon_buglink_messagespo]
file_filter = buglink/lang//messages.po
source_file = buglink/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_communityhome_messagespo]
-file_filter = communityhome/lang//messages.po
-source_file = communityhome/lang/C/messages.po
+[o:Friendica:p:friendica:r:addon_catavatar_messagespo]
+file_filter = catavatar/lang//messages.po
+source_file = catavatar/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_curweather_messagespo]
+[o:Friendica:p:friendica:r:addon_cookienotice_messagespo]
+file_filter = cookienotice/lang//messages.po
+source_file = cookienotice/lang/C/messages.po
+source_lang = en
+type = PO
+
+[o:Friendica:p:friendica:r:addon_curweather_messagespo]
file_filter = curweather/lang//messages.po
source_file = curweather/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_dav_messagespo]
-file_filter = dav/lang//messages.po
-source_file = dav/lang/C/messages.po
-source_lang = en
-type = PO
-
-[friendica.addon_diaspora_messagespo]
+[o:Friendica:p:friendica:r:addon_diaspora_messagespo]
file_filter = diaspora/lang//messages.po
source_file = diaspora/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_dwpost_messagespo]
+[o:Friendica:p:friendica:r:addon_dwpost_messagespo]
file_filter = dwpost/lang//messages.po
source_file = dwpost/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_forumdirectory_messagespo]
+[o:Friendica:p:friendica:r:addon_forumdirectory_messagespo]
file_filter = forumdirectory/lang//messages.po
source_file = forumdirectory/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_fromapp_messagespo]
+[o:Friendica:p:friendica:r:addon_fromapp_messagespo]
file_filter = fromapp/lang//messages.po
source_file = fromapp/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_fromgplus_messagespo]
+[o:Friendica:p:friendica:r:addon_fromgplus_messagespo]
file_filter = fromgplus/lang//messages.po
source_file = fromgplus/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_geonames_messagespo]
+[o:Friendica:p:friendica:r:addon_geonames_messagespo]
file_filter = geonames/lang//messages.po
source_file = geonames/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_gnot_messagespo]
+[o:Friendica:p:friendica:r:addon_gnot_messagespo]
file_filter = gnot/lang//messages.po
source_file = gnot/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_gravatar_messagespo]
+[o:Friendica:p:friendica:r:addon_gravatar_messagespo]
file_filter = gravatar/lang//messages.po
source_file = gravatar/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_group_text_messagespo]
+[o:Friendica:p:friendica:r:addon_group_text_messagespo]
file_filter = group_text/lang//messages.po
source_file = group_text/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_ijpost_messagespo]
+[o:Friendica:p:friendica:r:addon_ifttt_messagespo]
+file_filter = ifttt/lang//messages.po
+source_file = ifttt/lang/C/messages.po
+source_lang = en
+type = PO
+
+[o:Friendica:p:friendica:r:addon_ijpost_messagespo]
file_filter = ijpost/lang//messages.po
source_file = ijpost/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_impressum_messagespo]
+[o:Friendica:p:friendica:r:addon_impressum_messagespo]
file_filter = impressum/lang//messages.po
source_file = impressum/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_infiniteimprobabilitydrive_messagespo]
+[o:Friendica:p:friendica:r:addon_infiniteimprobabilitydrive_messagespo]
file_filter = infiniteimprobabilitydrive/lang//messages.po
source_file = infiniteimprobabilitydrive/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_irc_messagespo]
+[o:Friendica:p:friendica:r:addon_irc_messagespo]
file_filter = irc/lang//messages.po
source_file = irc/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_jappixmini_messagespo]
+[o:Friendica:p:friendica:r:addon_jappixmini_messagespo]
file_filter = jappixmini/lang//messages.po
source_file = jappixmini/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_js_upload_messagespo]
+[o:Friendica:p:friendica:r:addon_js_upload_messagespo]
file_filter = js_upload/lang//messages.po
source_file = js_upload/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_krynn_messagespo]
+[o:Friendica:p:friendica:r:addon_krynn_messagespo]
file_filter = krynn/lang//messages.po
source_file = krynn/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_langfilter_messagespo]
+[o:Friendica:p:friendica:r:addon_langfilter_messagespo]
file_filter = langfilter/lang//messages.po
source_file = langfilter/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_libertree_messagespo]
+[o:Friendica:p:friendica:r:addon_libertree_messagespo]
file_filter = libertree/lang//messages.po
source_file = libertree/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_libravatar_messagespo]
+[o:Friendica:p:friendica:r:addon_libravatar_messagespo]
file_filter = libravatar/lang//messages.po
source_file = libravatar/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_ljpost_messagespo]
+[o:Friendica:p:friendica:r:addon_ljpost_messagespo]
file_filter = ljpost/lang//messages.po
source_file = ljpost/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_mailstream_messagespo]
+[o:Friendica:p:friendica:r:addon_mailstream_messagespo]
file_filter = mailstream/lang//messages.po
source_file = mailstream/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_morepokes_messagespo]
+[o:Friendica:p:friendica:r:addon_mathjax_messagespo]
+file_filter = mathjax/lang//messages.po
+source_file = mathjax/lang/C/messages.po
+source_lang = en
+type = PO
+
+[o:Friendica:p:friendica:r:addon_membersince_messagespo]
+file_filter = membersince/lang//messages.po
+source_file = membersince/lang/C/messages.po
+source_lang = en
+type = PO
+
+[o:Friendica:p:friendica:r:addon_morechoice_messagespo]
+file_filter = morechoice/lang//messages.po
+source_file = morechoice/lang/C/messages.po
+source_lang = en
+type = PO
+
+[o:Friendica:p:friendica:r:addon_morepokes_messagespo]
file_filter = morepokes/lang//messages.po
source_file = morepokes/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_newmemberwidget_messagespo]
+[o:Friendica:p:friendica:r:addon_newmemberwidget_messagespo]
file_filter = newmemberwidget/lang//messages.po
source_file = newmemberwidget/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_notifyall_messagespo]
+[o:Friendica:p:friendica:r:addon_notifyall_messagespo]
file_filter = notifyall/lang//messages.po
source_file = notifyall/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_notimeline_messagespo]
+[o:Friendica:p:friendica:r:addon_notimeline_messagespo]
file_filter = notimeline/lang//messages.po
source_file = notimeline/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_nsfw_messagespo]
+[o:Friendica:p:friendica:r:addon_nsfw_messagespo]
file_filter = nsfw/lang//messages.po
source_file = nsfw/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_numfriends_messagespo]
+[o:Friendica:p:friendica:r:addon_numfriends_messagespo]
file_filter = numfriends/lang//messages.po
source_file = numfriends/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_openstreetmap_messagespo]
+[o:Friendica:p:friendica:r:addon_openstreetmap_messagespo]
file_filter = openstreetmap/lang//messages.po
source_file = openstreetmap/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_pageheader_messagespo]
+[o:Friendica:p:friendica:r:addon_pageheader_messagespo]
file_filter = pageheader/lang//messages.po
source_file = pageheader/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_piwik_messagespo]
+[o:Friendica:p:friendica:r:addon_piwik_messagespo]
file_filter = piwik/lang//messages.po
source_file = piwik/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_planets_messagespo]
+[o:Friendica:p:friendica:r:addon_planets_messagespo]
file_filter = planets/lang//messages.po
source_file = planets/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_public_server_messagespo]
+[o:Friendica:p:friendica:r:addon_public_server_messagespo]
file_filter = public_server/lang//messages.po
source_file = public_server/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_pumpio_messagespo]
+[o:Friendica:p:friendica:r:addon_pumpio_messagespo]
file_filter = pumpio/lang//messages.po
source_file = pumpio/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_qcomment_messagespo]
+[o:Friendica:p:friendica:r:addon_qcomment_messagespo]
file_filter = qcomment/lang//messages.po
source_file = qcomment/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_randplace_messagespo]
+[o:Friendica:p:friendica:r:addon_randplace_messagespo]
file_filter = randplace/lang//messages.po
source_file = randplace/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_remote_permissions_messagespo]
+[o:Friendica:p:friendica:r:addon_remote_permissions_messagespo]
file_filter = remote_permissions/lang//messages.po
source_file = remote_permissions/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_rendertime_messagespo]
+[o:Friendica:p:friendica:r:addon_rendertime_messagespo]
file_filter = rendertime/lang//messages.po
source_file = rendertime/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_securemail_messagespo]
+[o:Friendica:p:friendica:r:addon_securemail_messagespo]
file_filter = securemail/lang//messages.po
source_file = securemail/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_showmore_messagespo]
+[o:Friendica:p:friendica:r:addon_showmore_messagespo]
file_filter = showmore/lang//messages.po
source_file = showmore/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_smileybutton_messagespo]
+[o:Friendica:p:friendica:r:addon_smileybutton_messagespo]
file_filter = smileybutton/lang//messages.po
source_file = smileybutton/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_startpage_messagespo]
+[o:Friendica:p:friendica:r:addon_startpage_messagespo]
file_filter = startpage/lang//messages.po
source_file = startpage/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_statusnet_messagespo]
+[o:Friendica:p:friendica:r:addon_statusnet_messagespo]
file_filter = statusnet/lang//messages.po
source_file = statusnet/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_superblock_messagespo]
+[o:Friendica:p:friendica:r:addon_superblock_messagespo]
file_filter = superblock/lang//messages.po
source_file = superblock/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_testdrive_messagespo]
+[o:Friendica:p:friendica:r:addon_testdrive_messagespo]
file_filter = testdrive/lang//messages.po
source_file = testdrive/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_tictac_messagespo]
+[o:Friendica:p:friendica:r:addon_tictac_messagespo]
file_filter = tictac/lang//messages.po
source_file = tictac/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_tumblr_messagespo]
+[o:Friendica:p:friendica:r:addon_tumblr_messagespo]
file_filter = tumblr/lang//messages.po
source_file = tumblr/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_twitter_messagespo]
+[o:Friendica:p:friendica:r:addon_twitter_messagespo]
file_filter = twitter/lang//messages.po
source_file = twitter/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_viewsrc_messagespo]
+[o:Friendica:p:friendica:r:addon_viewsrc_messagespo]
file_filter = viewsrc/lang//messages.po
source_file = viewsrc/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_webrtc_messagespo]
+[o:Friendica:p:friendica:r:addon_webrtc_messagespo]
file_filter = webrtc/lang//messages.po
source_file = webrtc/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_windowsphonepush_messagespo]
+[o:Friendica:p:friendica:r:addon_widgets_messagespo]
+file_filter = widgets/lang//messages.po
+source_file = widgets/lang/C/messages.po
+source_lang = en
+type = PO
+
+[o:Friendica:p:friendica:r:addon_windowsphonepush_messagespo]
file_filter = windowsphonepush/lang//messages.po
source_file = windowsphonepush/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_wppost_messagespo]
+[o:Friendica:p:friendica:r:addon_wppost_messagespo]
file_filter = wppost/lang//messages.po
source_file = wppost/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_xmpp_messagespo]
+[o:Friendica:p:friendica:r:addon_xmpp_messagespo]
file_filter = xmpp/lang//messages.po
source_file = xmpp/lang/C/messages.po
source_lang = en
-type = PO
+type = PO
-[friendica.addon_yourls_messagespo]
-file_filter = yourls/lang//messages.po
-source_file = yourls/lang/C/messages.po
-source_lang = en
-type = PO
diff --git a/.woodpecker/.code_standards_check.yml b/.woodpecker/.code_standards_check.yml
new file mode 100644
index 00000000..60a1bd2a
--- /dev/null
+++ b/.woodpecker/.code_standards_check.yml
@@ -0,0 +1,76 @@
+skip_clone: true
+
+steps:
+ 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
+ phpstan:
+ image: friendicaci/php8.3:php8.3.3
+ commands:
+ - ./bin/composer.phar run phpstan;
+ 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
diff --git a/.woodpecker/.continuous-deployment.yml b/.woodpecker/.continuous-deployment.yml
new file mode 100644
index 00000000..6b41deae
--- /dev/null
+++ b/.woodpecker/.continuous-deployment.yml
@@ -0,0 +1,115 @@
+# This prevents executing this pipeline at other servers than ci.friendi.ca
+labels:
+ location: friendica
+ type: releaser
+
+skip_clone: true
+
+steps:
+ 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
diff --git a/.woodpecker/.messages.po_check.yml b/.woodpecker/.messages.po_check.yml
new file mode 100644
index 00000000..e0239dcd
--- /dev/null
+++ b/.woodpecker/.messages.po_check.yml
@@ -0,0 +1,40 @@
+skip_clone: true
+
+steps:
+ 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 ]
diff --git a/.woodpecker/.phpunit.yml b/.woodpecker/.phpunit.yml
new file mode 100644
index 00000000..8b840f80
--- /dev/null
+++ b/.woodpecker/.phpunit.yml
@@ -0,0 +1,118 @@
+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
+
+steps:
+ 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'
+ environment:
+ CODECOV_TOKEN:
+ from_secret: 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
diff --git a/.woodpecker/.releaser.yml b/.woodpecker/.releaser.yml
new file mode 100644
index 00000000..2d880a6b
--- /dev/null
+++ b/.woodpecker/.releaser.yml
@@ -0,0 +1,108 @@
+# This prevents executing this pipeline at other servers than ci.friendi.ca
+labels:
+ location: friendica
+ type: releaser
+
+skip_clone: true
+
+steps:
+ 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
diff --git a/INSTALL.txt b/INSTALL.txt
index 5ea0c9a2..37998583 100644
--- a/INSTALL.txt
+++ b/INSTALL.txt
@@ -5,7 +5,6 @@
To install all addons using git, cd into your top level Friendica directory and
git clone https://github.com/friendica/friendica-addons.git addon
- bin/composer.phar install -d addon
This will clone the entire repository in a directory called addon. They can now be activated in the addons section of your admin panel.
diff --git a/README.md b/README.md
index deffa2a5..6a3202bb 100644
--- a/README.md
+++ b/README.md
@@ -2,33 +2,28 @@ Addons for Friendica
====================
This repository is a collection of addons for the [Friendica Social Communications Server](https://github.com/friendica/friendica).
-You can add these addons to the /addon directory of your Friendica installation
-do extend the functionality of your node.
+You can add these addons to the /addon directory of your Friendica installation do extend the functionality of 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.
+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.
-You can find more addons in the [Friendica Addon listing](https://addons.friendo.ca)
-in cases the addon developers have choosen not to include them here.
+## Issues
-Connectors
-----------
+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).
-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
-protocoll is not supported by Friendica core (DFRN, OStatus and Diaspora).
+## 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.
+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).
-Development
------------
+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.
-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/master/doc/Addons.md) for more informations on the addon development.
+## Development
-Addons can be translated like any other part of Friendica. Translations for the
-addons included in this repository are done at the [Transifex project](https://www.transifex.com/projects/p/friendica/) for Friendica.
+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.
+
+## Translation
+
+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/).
+
+Read more about the workflow in the [Friendica translation documentation](https://github.com/friendica/friendica/blob/stable/doc/translations.md#addon).
diff --git a/advancedcontentfilter/advancedcontentfilter.js b/advancedcontentfilter/advancedcontentfilter.js
index e3c2da54..a8fc1c65 100644
--- a/advancedcontentfilter/advancedcontentfilter.js
+++ b/advancedcontentfilter/advancedcontentfilter.js
@@ -54,7 +54,7 @@ new Vue({
self.rules.push(responseJSON.rule);
self.resetForm();
}, function (response) {
- self.errorMessage = response.responseJSON.message;
+ self.errorMessage = response.responseJSON.exception[0].message;
});
}
},
@@ -74,7 +74,7 @@ new Vue({
self.rules[self.editedIndex] = rule;
self.resetForm();
}, function (response) {
- self.errorMessage = response.responseJSON.message;
+ self.errorMessage = response.responseJSON.exception[0].message;
});
},
@@ -124,7 +124,7 @@ new Vue({
// These render functions have been compiled from templates/advancedcontentfilter.vue, check this file out for instructions
render: function () {
- with(this){return _c('div',{attrs:{"id":"rules"}},[_c('p',[_c('a',{attrs:{"href":"settings/addon"}},[_v("🔙 "+_s(messages.backtosettings))])]),_c('h1',[_v(_s(messages.title)+" "),_c('a',{staticClass:"btn btn-default btn-sm",attrs:{"href":"advancedcontentfilter/help","title":messages.help}},[_c('i',{staticClass:"fa fa-question fa-2x",attrs:{"aria-hidden":"true"}})])]),_c('div',[_v(_s(messages.intro))]),_c('h2',[_v(_s(messages.your_rules)+" "),_c('button',{staticClass:"btn btn-primary btn-sm",attrs:{"title":messages.add_a_rule},on:{"click":function($event){showModal = true}}},[_c('i',{staticClass:"fa fa-plus fa-2x",attrs:{"aria-hidden":"true"}})])]),(rules.length === 0)?_c('div',{},[_v(_s(messages.no_rules))]):_e(),_c('ul',{staticClass:"list-group"},_l((rules),function(rule){return _c('li',{staticClass:"list-group-item"},[_c('p',{staticClass:"pull-right"},[(parseInt(rule.active))?_c('button',{staticClass:"btn btn-xs btn-primary",attrs:{"type":"button","aria-label":messages.disable_this_rule,"title":messages.disable_this_rule},on:{"click":function($event){toggleActive(rule)}}},[_c('i',{staticClass:"fa fa-toggle-on",attrs:{"aria-hidden":"true"}}),_v(" "+_s(messages.enabled))]):_c('button',{staticClass:"btn btn-xs btn-default",attrs:{"type":"button","aria-label":messages.enable_this_rule,"title":messages.enable_this_rule},on:{"click":function($event){toggleActive(rule)}}},[_c('i',{staticClass:"fa fa-toggle-off",attrs:{"aria-hidden":"true"}}),_v(" "+_s(messages.disabled))]),_v(" "),_c('button',{staticClass:"btn btn-xs btn-primary",attrs:{"type":"button","aria-label":messages.edit_this_rule,"title":messages.edit_this_rule},on:{"click":function($event){editRule(rule)}}},[_c('i',{staticClass:"fa fa-pencil",attrs:{"aria-hidden":"true"}})]),_v(" "),_c('button',{staticClass:"btn btn-xs btn-default",attrs:{"type":"button","aria-label":messages.delete_this_rule,"title":messages.delete_this_rule},on:{"click":function($event){deleteRule(rule)}}},[_c('i',{staticClass:"fa fa-trash-o",attrs:{"aria-hidden":"true"}})])]),_c('h3',{staticClass:"list-group-item-heading"},[_v(_s(messages.rule)+" #"+_s(rule.id)+": "+_s(rule.name))]),(rule.expression)?_c('pre',{staticClass:"list-group-item-text"},[_v(_s(rule.expression))]):_e()])})),_c('div',{ref:"vuemodal",staticClass:"modal fade",attrs:{"tabindex":"-1","role":"dialog"}},[_c('div',{staticClass:"modal-dialog",attrs:{"role":"document"}},[_c('div',{staticClass:"modal-content"},[_c('div',{staticClass:"modal-header"},[(currentTheme === 'frio')?_c('button',{staticClass:"close",attrs:{"type":"button","data-dismiss":"modal","aria-label":messages.close},on:{"click":function($event){showModal = false}}},[_c('span',{attrs:{"aria-hidden":"true"}},[_v("×")])]):_e(),(rule.id)?_c('h3',[_v(_s(messages.edit_the_rule)+" \""+_s(rule.name)+"\"")]):_e(),(!rule.id)?_c('h3',[_v(_s(messages.add_a_rule))]):_e()]),_c('div',{staticClass:"modal-body"},[_c('form',[(errorMessage)?_c('div',{staticClass:"alert alert-danger",attrs:{"role":"alert"}},[_v(_s(errorMessage))]):_e(),_c('div',{staticClass:"form-group"},[_c('input',{directives:[{name:"model",rawName:"v-model",value:(rule.name),expression:"rule.name"}],staticClass:"form-control",attrs:{"placeholder":messages.rule_name},domProps:{"value":(rule.name)},on:{"input":function($event){if($event.target.composing)return;$set(rule, "name", $event.target.value)}}})]),_c('div',{staticClass:"form-group"},[_c('input',{directives:[{name:"model",rawName:"v-model",value:(rule.expression),expression:"rule.expression"}],staticClass:"form-control",attrs:{"placeholder":messages.rule_expression},domProps:{"value":(rule.expression)},on:{"input":function($event){if($event.target.composing)return;$set(rule, "expression", $event.target.value)}}})])])]),_c('div',{staticClass:"modal-footer"},[_c('button',{staticClass:"btn btn-default",attrs:{"type":"button","data-dismiss":"modal","aria-label":"Close"},on:{"click":function($event){resetForm()}}},[_v(_s(messages.cancel))]),(rule.id)?_c('button',{staticClass:"btn btn-primary",attrs:{"slot":"button","type":"button"},on:{"click":function($event){saveRule(rule)}},slot:"button"},[_v(_s(messages.save_this_rule))]):_e(),(!rule.id)?_c('button',{staticClass:"btn btn-primary",attrs:{"slot":"button","type":"button"},on:{"click":function($event){addRule()}},slot:"button"},[_v(_s(messages.add_a_rule))]):_e()])])])]),_c('form',{staticClass:"form-inline",on:{"submit":function($event){$event.preventDefault();showVariables()}}},[_c('fieldset',[_c('legend',[_v("Show post variables")]),_c('div',{staticClass:"form-group",staticStyle:{"width":"50%"}},[_c('label',{staticClass:"sr-only",attrs:{"for":"itemUrl"}},[_v("Post URL or item guid")]),_c('input',{directives:[{name:"model",rawName:"v-model",value:(itemUrl),expression:"itemUrl"}],staticClass:"form-control",staticStyle:{"width":"100%"},attrs:{"id":"itemUrl","placeholder":"Post URL or item guid"},domProps:{"value":(itemUrl)},on:{"input":function($event){if($event.target.composing)return;itemUrl=$event.target.value}}})]),_c('button',{staticClass:"btn btn-primary",attrs:{"type":"submit"}},[_v("Show Variables")])])]),_c('pre',{},[_v(_s(itemJson))])])}
+ with(this){return _c('div',{attrs:{"id":"rules"}},[_c('p',[_c('a',{attrs:{"href":"settings/addons"}},[_v("🔙 "+_s(messages.backtosettings))])]),_c('h1',[_v(_s(messages.title)+" "),_c('a',{staticClass:"btn btn-default btn-sm",attrs:{"href":"advancedcontentfilter/help","title":messages.help}},[_c('i',{staticClass:"fa fa-question fa-2x",attrs:{"aria-hidden":"true"}})])]),_c('div',[_v(_s(messages.intro))]),_c('h2',[_v(_s(messages.your_rules)+" "),_c('button',{staticClass:"btn btn-primary btn-sm",attrs:{"title":messages.add_a_rule},on:{"click":function($event){showModal = true}}},[_c('i',{staticClass:"fa fa-plus fa-2x",attrs:{"aria-hidden":"true"}})])]),(rules.length === 0)?_c('div',{},[_v(_s(messages.no_rules))]):_e(),_c('ul',{staticClass:"list-group"},_l((rules),function(rule){return _c('li',{staticClass:"list-group-item"},[_c('p',{staticClass:"pull-right"},[(parseInt(rule.active))?_c('button',{staticClass:"btn btn-xs btn-primary",attrs:{"type":"button","aria-label":messages.disable_this_rule,"title":messages.disable_this_rule},on:{"click":function($event){toggleActive(rule)}}},[_c('i',{staticClass:"fa fa-toggle-on",attrs:{"aria-hidden":"true"}}),_v(" "+_s(messages.enabled))]):_c('button',{staticClass:"btn btn-xs btn-default",attrs:{"type":"button","aria-label":messages.enable_this_rule,"title":messages.enable_this_rule},on:{"click":function($event){toggleActive(rule)}}},[_c('i',{staticClass:"fa fa-toggle-off",attrs:{"aria-hidden":"true"}}),_v(" "+_s(messages.disabled))]),_v(" "),_c('button',{staticClass:"btn btn-xs btn-primary",attrs:{"type":"button","aria-label":messages.edit_this_rule,"title":messages.edit_this_rule},on:{"click":function($event){editRule(rule)}}},[_c('i',{staticClass:"fa fa-pencil",attrs:{"aria-hidden":"true"}})]),_v(" "),_c('button',{staticClass:"btn btn-xs btn-default",attrs:{"type":"button","aria-label":messages.delete_this_rule,"title":messages.delete_this_rule},on:{"click":function($event){deleteRule(rule)}}},[_c('i',{staticClass:"fa fa-trash-o",attrs:{"aria-hidden":"true"}})])]),_c('h3',{staticClass:"list-group-item-heading"},[_v(_s(messages.rule)+" #"+_s(rule.id)+": "+_s(rule.name))]),(rule.expression)?_c('pre',{staticClass:"list-group-item-text"},[_v(_s(rule.expression))]):_e()])})),_c('div',{ref:"vuemodal",staticClass:"modal fade",attrs:{"tabindex":"-1","role":"dialog"}},[_c('div',{staticClass:"modal-dialog",attrs:{"role":"document"}},[_c('div',{staticClass:"modal-content"},[_c('div',{staticClass:"modal-header"},[(currentTheme === 'frio')?_c('button',{staticClass:"close",attrs:{"type":"button","data-dismiss":"modal","aria-label":messages.close},on:{"click":function($event){showModal = false}}},[_c('span',{attrs:{"aria-hidden":"true"}},[_v("×")])]):_e(),(rule.id)?_c('h3',[_v(_s(messages.edit_the_rule)+" \""+_s(rule.name)+"\"")]):_e(),(!rule.id)?_c('h3',[_v(_s(messages.add_a_rule))]):_e()]),_c('div',{staticClass:"modal-body"},[_c('form',[(errorMessage)?_c('div',{staticClass:"alert alert-danger",attrs:{"role":"alert"}},[_v(_s(errorMessage))]):_e(),_c('div',{staticClass:"form-group"},[_c('input',{directives:[{name:"model",rawName:"v-model",value:(rule.name),expression:"rule.name"}],staticClass:"form-control",attrs:{"placeholder":messages.rule_name},domProps:{"value":(rule.name)},on:{"input":function($event){if($event.target.composing)return;$set(rule, "name", $event.target.value)}}})]),_c('div',{staticClass:"form-group"},[_c('input',{directives:[{name:"model",rawName:"v-model",value:(rule.expression),expression:"rule.expression"}],staticClass:"form-control",attrs:{"placeholder":messages.rule_expression},domProps:{"value":(rule.expression)},on:{"input":function($event){if($event.target.composing)return;$set(rule, "expression", $event.target.value)}}})])])]),_c('div',{staticClass:"modal-footer"},[_c('button',{staticClass:"btn btn-default",attrs:{"type":"button","data-dismiss":"modal","aria-label":"Close"},on:{"click":function($event){resetForm()}}},[_v(_s(messages.cancel))]),(rule.id)?_c('button',{staticClass:"btn btn-primary",attrs:{"slot":"button","type":"button"},on:{"click":function($event){saveRule(rule)}},slot:"button"},[_v(_s(messages.save_this_rule))]):_e(),(!rule.id)?_c('button',{staticClass:"btn btn-primary",attrs:{"slot":"button","type":"button"},on:{"click":function($event){addRule()}},slot:"button"},[_v(_s(messages.add_a_rule))]):_e()])])])]),_c('form',{staticClass:"form-inline",on:{"submit":function($event){$event.preventDefault();showVariables()}}},[_c('fieldset',[_c('legend',[_v("Show post variables")]),_c('div',{staticClass:"form-group",staticStyle:{"width":"50%"}},[_c('label',{staticClass:"sr-only",attrs:{"for":"itemUrl"}},[_v("Post URL or item guid")]),_c('input',{directives:[{name:"model",rawName:"v-model",value:(itemUrl),expression:"itemUrl"}],staticClass:"form-control",staticStyle:{"width":"100%"},attrs:{"id":"itemUrl","placeholder":"Post URL or item guid"},domProps:{"value":(itemUrl)},on:{"input":function($event){if($event.target.composing)return;itemUrl=$event.target.value}}})]),_c('button',{staticClass:"btn btn-primary",attrs:{"type":"submit"}},[_v("Show Variables")])])]),_c('pre',{},[_v(_s(itemJson))])])}
},
staticRenderFns: [
diff --git a/advancedcontentfilter/advancedcontentfilter.php b/advancedcontentfilter/advancedcontentfilter.php
index 74728c04..aeeff77c 100644
--- a/advancedcontentfilter/advancedcontentfilter.php
+++ b/advancedcontentfilter/advancedcontentfilter.php
@@ -33,73 +33,86 @@
*
*/
-use Friendica\App;
+use Friendica\BaseModule;
use Friendica\Content\Text\Markdown;
-use Friendica\Core\Addon;
-use Friendica\Core\Cache;
-use Friendica\Core\L10n;
-use Friendica\Core\System;
+use Friendica\Core\Hook;
+use Friendica\Core\Renderer;
use Friendica\Database\DBA;
use Friendica\Database\DBStructure;
-use Friendica\Model\Item;
-use Friendica\Model\Term;
-use Friendica\Module\Login;
+use Friendica\DI;
+use Friendica\Model\Post;
+use Friendica\Model\Tag;
+use Friendica\Model\User;
+use Friendica\Module\Security\Login;
use Friendica\Network\HTTPException;
use Friendica\Util\DateTimeFormat;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Symfony\Component\ExpressionLanguage;
-require_once 'boot.php';
-require_once 'include/conversation.php';
-require_once 'include/dba.php';
-require_once 'include/security.php';
-
require_once __DIR__ . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php';
function advancedcontentfilter_install()
{
- Addon::registerHook('dbstructure_definition' , __FILE__, 'advancedcontentfilter_dbstructure_definition');
- Addon::registerHook('prepare_body_content_filter', __FILE__, 'advancedcontentfilter_prepare_body_content_filter');
- Addon::registerHook('addon_settings' , __FILE__, 'advancedcontentfilter_addon_settings');
+ Hook::register('dbstructure_definition' , __FILE__, 'advancedcontentfilter_dbstructure_definition');
+ Hook::register('prepare_body_content_filter', __FILE__, 'advancedcontentfilter_prepare_body_content_filter');
+ Hook::register('addon_settings' , __FILE__, 'advancedcontentfilter_addon_settings');
- DBStructure::update(false, true);
+ Hook::add('dbstructure_definition' , __FILE__, 'advancedcontentfilter_dbstructure_definition');
+ DBStructure::performUpdate();
- logger("installed advancedcontentfilter");
-}
-
-function advancedcontentfilter_uninstall()
-{
- Addon::unregisterHook('dbstructure_definition' , __FILE__, 'advancedcontentfilter_dbstructure_definition');
- Addon::unregisterHook('prepare_body_content_filter', __FILE__, 'advancedcontentfilter_prepare_body_content_filter');
- Addon::unregisterHook('addon_settings' , __FILE__, 'advancedcontentfilter_addon_settings');
+ DI::logger()->notice('installed advancedcontentfilter');
}
/*
* Hooks
*/
-function advancedcontentfilter_dbstructure_definition(App $a, &$database)
+function advancedcontentfilter_dbstructure_definition(&$database)
{
- $database["advancedcontentfilter_rules"] = [
- "comment" => "Advancedcontentfilter addon rules",
- "fields" => [
- "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"],
- "name" => ["type" => "varchar(255)", "not null" => "1", "comment" => "Rule name"],
- "expression" => ["type" => "mediumtext" , "not null" => "1", "comment" => "Expression text"],
- "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"],
- "created" => ["type" => "datetime" , "not null" => "1", "default" => NULL_DATE, "comment" => "Creation date"],
+ $database['advancedcontentfilter_rules'] = [
+ 'comment' => 'Advancedcontentfilter addon rules',
+ 'fields' => [
+ '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'],
+ 'name' => ['type' => 'varchar(255)', 'not null' => '1', 'comment' => 'Rule name'],
+ 'expression' => ['type' => 'mediumtext' , 'not null' => '1', 'comment' => 'Expression text'],
+ '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'],
+ 'created' => ['type' => 'datetime' , 'not null' => '1', 'default' => DBA::NULL_DATETIME, 'comment' => 'Creation date'],
],
- "indexes" => [
- "PRIMARY" => ["id"],
- "uid_active" => ["uid", "active"],
+ 'indexes' => [
+ 'PRIMARY' => ['id'],
+ '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;
@@ -107,22 +120,21 @@ function advancedcontentfilter_prepare_body_content_filter(App $a, &$hook_data)
$expressionLanguage = new ExpressionLanguage\ExpressionLanguage();
}
- if (!local_user()) {
+ if (!DI::userSession()->getLocalUserId()) {
return;
}
- $vars = [];
- foreach ($hook_data['item'] as $key => $value) {
- $vars[str_replace('-', '_', $key)] = $value;
- }
+ $vars = advancedcontentfilter_get_filter_fields($hook_data['item']);
- $rules = Cache::get('rules_' . local_user());
+ $rules = DI::cache()->get('rules_' . DI::userSession()->getLocalUserId());
if (!isset($rules)) {
$rules = DBA::toArray(DBA::select(
'advancedcontentfilter_rules',
['name', 'expression', 'serialized'],
- ['uid' => local_user(), 'active' => true]
+ ['uid' => DI::userSession()->getLocalUserId(), 'active' => true]
));
+
+ DI::cache()->set('rules_' . DI::userSession()->getLocalUserId(), $rules);
}
if ($rules) {
@@ -140,7 +152,7 @@ function advancedcontentfilter_prepare_body_content_filter(App $a, &$hook_data)
}
if ($found) {
- $hook_data['filter_reasons'][] = L10n::t('Filtered by rule: %s', $rule['name']);
+ $hook_data['filter_reasons'][] = DI::l10n()->t('Filtered by rule: %s', $rule['name']);
break;
}
}
@@ -148,49 +160,75 @@ function advancedcontentfilter_prepare_body_content_filter(App $a, &$hook_data)
}
-function advancedcontentfilter_addon_settings(App $a, &$s)
+function advancedcontentfilter_addon_settings(array &$data)
{
- if (!local_user()) {
+ if (!DI::userSession()->getLocalUserId()) {
return;
}
- $advancedcontentfilter = L10n::t('Advanced Content Filter');
-
- $s .= <<
-HTML;
-
- return;
+ $data = [
+ 'addon' => 'advancedcontentfilter',
+ 'title' => DI::l10n()->t('Advanced Content Filter'),
+ 'href' => 'advancedcontentfilter',
+ ];
}
/*
* 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_init(App $a)
+function advancedcontentfilter_init()
{
- if ($a->argc > 1 && $a->argv[1] == 'api') {
- $slim = new \Slim\App();
+ if (DI::args()->getArgc() > 1 && DI::args()->getArgv()[1] == 'api') {
+ $slim = \Slim\Factory\AppFactory::create();
- 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();
exit;
}
}
-function advancedcontentfilter_content(App $a)
+function advancedcontentfilter_content()
{
- if (!local_user()) {
- return Login::form('/' . implode('/', $a->argv));
+ if (!DI::userSession()->getLocalUserId()) {
+ return Login::form('/' . implode('/', DI::args()->getArgv()));
}
- if ($a->argc > 1 && $a->argv[1] == 'help') {
- $lang = $a->user['language'];
+ if (DI::args()->getArgc() > 1 && DI::args()->getArgv()[1] == 'help') {
+ $user = User::getById(DI::userSession()->getLocalUserId());
+
+ $lang = $user['language'];
$default_dir = 'addon/advancedcontentfilter/doc/';
$help_file = 'advancedcontentfilter.md';
@@ -207,34 +245,34 @@ function advancedcontentfilter_content(App $a)
return $html;
} else {
- $t = get_markup_template('settings.tpl', 'addon/advancedcontentfilter/');
- return replace_macros($t, [
+ $t = Renderer::getMarkupTemplate('settings.tpl', 'addon/advancedcontentfilter/');
+ return Renderer::replaceMacros($t, [
'$messages' => [
- 'backtosettings' => L10n::t('Back to Addon Settings'),
- 'title' => L10n::t('Advanced Content Filter'),
- 'add_a_rule' => L10n::t('Add a Rule'),
- 'help' => L10n::t('Help'),
- 'intro' => L10n::t('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.'),
- 'your_rules' => L10n::t('Your rules'),
- 'no_rules' => L10n::t('You have no rules yet! Start adding one by clicking on the button above next to the title.'),
- 'disabled' => L10n::t('Disabled'),
- 'enabled' => L10n::t('Enabled'),
- 'disable_this_rule' => L10n::t('Disable this rule'),
- 'enable_this_rule' => L10n::t('Enable this rule'),
- 'edit_this_rule' => L10n::t('Edit this rule'),
- 'edit_the_rule' => L10n::t('Edit the rule'),
- 'save_this_rule' => L10n::t('Save this rule'),
- 'delete_this_rule' => L10n::t('Delete this rule'),
- 'rule' => L10n::t('Rule'),
- 'close' => L10n::t('Close'),
- 'addtitle' => L10n::t('Add new rule'),
- 'rule_name' => L10n::t('Rule Name'),
- 'rule_expression' => L10n::t('Rule Expression'),
- 'cancel' => L10n::t('Cancel'),
+ 'backtosettings' => DI::l10n()->t('Back to Addon Settings'),
+ 'title' => DI::l10n()->t('Advanced Content Filter'),
+ 'add_a_rule' => DI::l10n()->t('Add a Rule'),
+ 'help' => DI::l10n()->t('Help'),
+ 'intro' => DI::l10n()->t('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.'),
+ 'your_rules' => DI::l10n()->t('Your rules'),
+ 'no_rules' => DI::l10n()->t('You have no rules yet! Start adding one by clicking on the button above next to the title.'),
+ 'disabled' => DI::l10n()->t('Disabled'),
+ 'enabled' => DI::l10n()->t('Enabled'),
+ 'disable_this_rule' => DI::l10n()->t('Disable this rule'),
+ 'enable_this_rule' => DI::l10n()->t('Enable this rule'),
+ 'edit_this_rule' => DI::l10n()->t('Edit this rule'),
+ 'edit_the_rule' => DI::l10n()->t('Edit the rule'),
+ 'save_this_rule' => DI::l10n()->t('Save this rule'),
+ 'delete_this_rule' => DI::l10n()->t('Delete this rule'),
+ 'rule' => DI::l10n()->t('Rule'),
+ 'close' => DI::l10n()->t('Close'),
+ 'addtitle' => DI::l10n()->t('Add new rule'),
+ 'rule_name' => DI::l10n()->t('Rule Name'),
+ 'rule_expression' => DI::l10n()->t('Rule Expression'),
+ 'cancel' => DI::l10n()->t('Cancel'),
],
- '$current_theme' => $a->getCurrentTheme(),
- '$rules' => advancedcontentfilter_get_rules(),
- '$form_security_token' => get_form_security_token()
+ '$current_theme' => DI::appHelper()->getCurrentTheme(),
+ '$rules' => DBA::toArray(DBA::select('advancedcontentfilter_rules', [], ['uid' => DI::userSession()->getLocalUserId()])),
+ '$form_security_token' => BaseModule::getFormSecurityToken()
]);
}
}
@@ -251,29 +289,20 @@ function advancedcontentfilter_build_fields($data)
}
if (!empty($data['expression'])) {
- $allowed_keys = [
- 'author_id', 'author_link', 'author_name', 'author_avatar',
- 'owner_id', 'owner_link', 'owner_name', 'owner_avatar',
- 'contact_id', 'uid', 'id', 'parent', 'uri',
- 'thr_parent', 'parent_uri',
- 'content_warning',
- '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',
- ];
+ // Using a dummy item to validate the field existence
+ $condition = ["(`uid` = ? OR `uid` = 0)", DI::userSession()->getLocalUserId()];
+ $params = ['order' => ['uid' => true]];
+ $item_row = Post::selectFirstForUser(DI::userSession()->getLocalUserId(), [], $condition, $params);
+
+ if (!DBA::isResult($item_row)) {
+ throw new HTTPException\NotFoundException(DI::l10n()->t('This addon requires this node having at least one post'));
+ }
$expressionLanguage = new ExpressionLanguage\ExpressionLanguage();
-
- $parsedExpression = $expressionLanguage->parse($data['expression'], $allowed_keys);
+ $parsedExpression = $expressionLanguage->parse(
+ $data['expression'],
+ array_keys(advancedcontentfilter_get_filter_fields(advancedcontentfilter_prepare_item_row($item_row)))
+ );
$serialized = serialize($parsedExpression->getNodes());
@@ -294,36 +323,38 @@ function advancedcontentfilter_build_fields($data)
* API
*/
-function advancedcontentfilter_get_rules()
+function advancedcontentfilter_get_rules(ServerRequestInterface $request, ResponseInterface $response): ResponseInterface
{
- if (!local_user()) {
- throw new HTTPException\UnauthorizedException(L10n::t('You must be logged in to use this method'));
+ if (!DI::userSession()->getLocalUserId()) {
+ throw new HTTPException\UnauthorizedException(DI::l10n()->t('You must be logged in to use this method'));
}
- $rules = DBA::toArray(DBA::select('advancedcontentfilter_rules', [], ['uid' => local_user()]));
+ $rules = DBA::toArray(DBA::select('advancedcontentfilter_rules', [], ['uid' => DI::userSession()->getLocalUserId()]));
- return json_encode($rules);
+ $response->getBody()->write(json_encode($rules));
+ return $response->withHeader('Content-Type', 'application/json');
}
function advancedcontentfilter_get_rules_id(ServerRequestInterface $request, ResponseInterface $response, $args)
{
- if (!local_user()) {
- throw new HTTPException\UnauthorizedException(L10n::t('You must be logged in to use this method'));
+ if (!DI::userSession()->getLocalUserId()) {
+ 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' => local_user()]);
+ $rule = DBA::selectFirst('advancedcontentfilter_rules', [], ['id' => $args['id'], 'uid' => DI::userSession()->getLocalUserId()]);
- return json_encode($rule);
+ $response->getBody()->write(json_encode($rule));
+ return $response->withHeader('Content-Type', 'application/json');
}
-function advancedcontentfilter_post_rules(ServerRequestInterface $request)
+function advancedcontentfilter_post_rules(ServerRequestInterface $request, ResponseInterface $response)
{
- if (!local_user()) {
- throw new HTTPException\UnauthorizedException(L10n::t('You must be logged in to use this method'));
+ if (!DI::userSession()->getLocalUserId()) {
+ throw new HTTPException\UnauthorizedException(DI::l10n()->t('You must be logged in to use this method'));
}
- if (!check_form_security_token()) {
- throw new HTTPException\BadRequestException(L10n::t('Invalid form security token, please refresh the page.'));
+ if (!BaseModule::checkFormSecurityToken()) {
+ throw new HTTPException\BadRequestException(DI::l10n()->t('Invalid form security token, please refresh the page.'));
}
$data = json_decode($request->getBody(), true);
@@ -331,37 +362,40 @@ function advancedcontentfilter_post_rules(ServerRequestInterface $request)
try {
$fields = advancedcontentfilter_build_fields($data);
} catch (Exception $e) {
- throw new HTTPException\BadRequestException($e->getMessage(), 0, $e);
+ throw new HTTPException\BadRequestException($e->getMessage(), $e);
}
if (empty($fields['name']) || empty($fields['expression'])) {
- throw new HTTPException\BadRequestException(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'] = local_user();
+ $fields['uid'] = DI::userSession()->getLocalUserId();
$fields['created'] = DateTimeFormat::utcNow();
if (!DBA::insert('advancedcontentfilter_rules', $fields)) {
- throw new HTTPException\ServiceUnavaiableException(DBA::errorMessage());
+ throw new HTTPException\ServiceUnavailableException(DBA::errorMessage());
}
$rule = DBA::selectFirst('advancedcontentfilter_rules', [], ['id' => DBA::lastInsertId()]);
- return json_encode(['message' => L10n::t('Rule successfully added'), 'rule' => $rule]);
+ DI::cache()->delete('rules_' . DI::userSession()->getLocalUserId());
+
+ $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)
{
- if (!local_user()) {
- throw new HTTPException\UnauthorizedException(L10n::t('You must be logged in to use this method'));
+ if (!DI::userSession()->getLocalUserId()) {
+ throw new HTTPException\UnauthorizedException(DI::l10n()->t('You must be logged in to use this method'));
}
- if (!check_form_security_token()) {
- throw new HTTPException\BadRequestException(L10n::t('Invalid form security token, please refresh the page.'));
+ if (!BaseModule::checkFormSecurityToken()) {
+ throw new HTTPException\BadRequestException(DI::l10n()->t('Invalid form security token, please refresh the page.'));
}
- if (!DBA::exists('advancedcontentfilter_rules', ['id' => $args['id'], 'uid' => local_user()])) {
- throw new HTTPException\NotFoundException(L10n::t('Rule doesn\'t exist or doesn\'t belong to you.'));
+ if (!DBA::exists('advancedcontentfilter_rules', ['id' => $args['id'], 'uid' => DI::userSession()->getLocalUserId()])) {
+ throw new HTTPException\NotFoundException(DI::l10n()->t('Rule doesn\'t exist or doesn\'t belong to you.'));
}
$data = json_decode($request->getBody(), true);
@@ -369,65 +403,83 @@ function advancedcontentfilter_put_rules_id(ServerRequestInterface $request, Res
try {
$fields = advancedcontentfilter_build_fields($data);
} catch (Exception $e) {
- throw new HTTPException\BadRequestException($e->getMessage(), 0, $e);
+ throw new HTTPException\BadRequestException($e->getMessage(), $e);
}
if (!DBA::update('advancedcontentfilter_rules', $fields, ['id' => $args['id']])) {
- throw new HTTPException\ServiceUnavaiableException(DBA::errorMessage());
+ throw new HTTPException\ServiceUnavailableException(DBA::errorMessage());
}
- return json_encode(['message' => L10n::t('Rule successfully updated')]);
+ DI::cache()->delete('rules_' . DI::userSession()->getLocalUserId());
+
+ $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)
{
- if (!local_user()) {
- throw new HTTPException\UnauthorizedException(L10n::t('You must be logged in to use this method'));
+ if (!DI::userSession()->getLocalUserId()) {
+ throw new HTTPException\UnauthorizedException(DI::l10n()->t('You must be logged in to use this method'));
}
- if (!check_form_security_token()) {
- throw new HTTPException\BadRequestException(L10n::t('Invalid form security token, please refresh the page.'));
+ if (!BaseModule::checkFormSecurityToken()) {
+ throw new HTTPException\BadRequestException(DI::l10n()->t('Invalid form security token, please refresh the page.'));
}
- if (!DBA::exists('advancedcontentfilter_rules', ['id' => $args['id'], 'uid' => local_user()])) {
- throw new HTTPException\NotFoundException(L10n::t('Rule doesn\'t exist or doesn\'t belong to you.'));
+ if (!DBA::exists('advancedcontentfilter_rules', ['id' => $args['id'], 'uid' => DI::userSession()->getLocalUserId()])) {
+ throw new HTTPException\NotFoundException(DI::l10n()->t('Rule doesn\'t exist or doesn\'t belong to you.'));
}
if (!DBA::delete('advancedcontentfilter_rules', ['id' => $args['id']])) {
- throw new HTTPException\ServiceUnavaiableException(DBA::errorMessage());
+ throw new HTTPException\ServiceUnavailableException(DBA::errorMessage());
}
- return json_encode(['message' => L10n::t('Rule successfully deleted')]);
+ DI::cache()->delete('rules_' . DI::userSession()->getLocalUserId());
+
+ $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)
{
- if (!local_user()) {
- throw new HTTPException\UnauthorizedException(L10n::t('You must be logged in to use this method'));
+ if (!DI::userSession()->getLocalUserId()) {
+ throw new HTTPException\UnauthorizedException(DI::l10n()->t('You must be logged in to use this method'));
}
if (!isset($args['guid'])) {
- throw new HTTPException\BadRequestException(L10n::t('Missing argument: guid.'));
+ throw new HTTPException\BadRequestException(DI::l10n()->t('Missing argument: guid.'));
}
- $condition = ["`guid` = ? AND (`uid` = ? OR `uid` = 0)", $args['guid'], local_user()];
+ $condition = ["`guid` = ? AND (`uid` = ? OR `uid` = 0)", $args['guid'], DI::userSession()->getLocalUserId()];
$params = ['order' => ['uid' => true]];
- $item = Item::selectFirstForUser(local_user(), [], $condition, $params);
+ $item_row = Post::selectFirstForUser(DI::userSession()->getLocalUserId(), [], $condition, $params);
- if (!DBA::isResult($item)) {
- throw new HTTPException\NotFoundException(L10n::t('Unknown post with guid: %s', $args['guid']));
+ if (!DBA::isResult($item_row)) {
+ throw new HTTPException\NotFoundException(DI::l10n()->t('Unknown post with guid: %s', $args['guid']));
}
- $tags = Term::populateTagsFromItem($item);
+ $return = advancedcontentfilter_get_filter_fields(advancedcontentfilter_prepare_item_row($item_row));
- $item['tags'] = $tags['tags'];
- $item['hashtags'] = $tags['hashtags'];
- $item['mentions'] = $tags['mentions'];
-
- $return = [];
- foreach ($item as $key => $value) {
- $return[str_replace('-', '_', $key)] = $value;
- }
-
- return json_encode(['variables' => str_replace('\\\'', '\'', var_export($return, true))]);
+ $response->getBody()->write(json_encode(['variables' => str_replace('\\\'', '\'', var_export($return, true))]));
+ return $response->withHeader('Content-Type', 'application/json');
+}
+
+/**
+ * This mimimcs the processing performed in Model\Item::prepareBody
+ *
+ * @param array $item_row
+ * @return array
+ * @throws HTTPException\InternalServerErrorException
+ * @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;
}
diff --git a/advancedcontentfilter/asset/vue/dist/vue.js b/advancedcontentfilter/asset/vue/dist/vue.js
new file mode 100644
index 00000000..04bcb375
--- /dev/null
+++ b/advancedcontentfilter/asset/vue/dist/vue.js
@@ -0,0 +1,11894 @@
+/*!
+ * Vue.js v2.7.13
+ * (c) 2014-2022 Evan You
+ * Released under the MIT License.
+ */
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+ typeof define === 'function' && define.amd ? define(factory) :
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Vue = factory());
+})(this, (function () { 'use strict';
+
+ var emptyObject = Object.freeze({});
+ var isArray = Array.isArray;
+ // These helpers produce better VM code in JS engines due to their
+ // explicitness and function inlining.
+ function isUndef(v) {
+ return v === undefined || v === null;
+ }
+ function isDef(v) {
+ return v !== undefined && v !== null;
+ }
+ function isTrue(v) {
+ return v === true;
+ }
+ function isFalse(v) {
+ return v === false;
+ }
+ /**
+ * Check if value is primitive.
+ */
+ function isPrimitive(value) {
+ return (typeof value === 'string' ||
+ typeof value === 'number' ||
+ // $flow-disable-line
+ typeof value === 'symbol' ||
+ typeof value === 'boolean');
+ }
+ function isFunction(value) {
+ return typeof value === 'function';
+ }
+ /**
+ * Quick object check - this is primarily used to tell
+ * objects from primitive values when we know the value
+ * is a JSON-compliant type.
+ */
+ function isObject(obj) {
+ return obj !== null && typeof obj === 'object';
+ }
+ /**
+ * Get the raw type string of a value, e.g., [object Object].
+ */
+ var _toString = Object.prototype.toString;
+ function toRawType(value) {
+ return _toString.call(value).slice(8, -1);
+ }
+ /**
+ * Strict object type check. Only returns true
+ * for plain JavaScript objects.
+ */
+ function isPlainObject(obj) {
+ return _toString.call(obj) === '[object Object]';
+ }
+ function isRegExp(v) {
+ return _toString.call(v) === '[object RegExp]';
+ }
+ /**
+ * Check if val is a valid array index.
+ */
+ function isValidArrayIndex(val) {
+ var n = parseFloat(String(val));
+ return n >= 0 && Math.floor(n) === n && isFinite(val);
+ }
+ function isPromise(val) {
+ return (isDef(val) &&
+ typeof val.then === 'function' &&
+ typeof val.catch === 'function');
+ }
+ /**
+ * Convert a value to a string that is actually rendered.
+ */
+ function toString(val) {
+ return val == null
+ ? ''
+ : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)
+ ? JSON.stringify(val, null, 2)
+ : String(val);
+ }
+ /**
+ * Convert an input value to a number for persistence.
+ * If the conversion fails, return original string.
+ */
+ function toNumber(val) {
+ var n = parseFloat(val);
+ return isNaN(n) ? val : n;
+ }
+ /**
+ * Make a map and return a function for checking if a key
+ * is in that map.
+ */
+ function makeMap(str, expectsLowerCase) {
+ var map = Object.create(null);
+ var list = str.split(',');
+ for (var i = 0; i < list.length; i++) {
+ map[list[i]] = true;
+ }
+ return expectsLowerCase ? function (val) { return map[val.toLowerCase()]; } : function (val) { return map[val]; };
+ }
+ /**
+ * Check if a tag is a built-in tag.
+ */
+ var isBuiltInTag = makeMap('slot,component', true);
+ /**
+ * Check if an attribute is a reserved attribute.
+ */
+ var isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');
+ /**
+ * Remove an item from an array.
+ */
+ function remove$2(arr, item) {
+ var len = arr.length;
+ if (len) {
+ // fast path for the only / last item
+ if (item === arr[len - 1]) {
+ arr.length = len - 1;
+ return;
+ }
+ var index = arr.indexOf(item);
+ if (index > -1) {
+ return arr.splice(index, 1);
+ }
+ }
+ }
+ /**
+ * Check whether an object has the property.
+ */
+ var hasOwnProperty = Object.prototype.hasOwnProperty;
+ function hasOwn(obj, key) {
+ return hasOwnProperty.call(obj, key);
+ }
+ /**
+ * Create a cached version of a pure function.
+ */
+ function cached(fn) {
+ var cache = Object.create(null);
+ return function cachedFn(str) {
+ var hit = cache[str];
+ return hit || (cache[str] = fn(str));
+ };
+ }
+ /**
+ * Camelize a hyphen-delimited string.
+ */
+ var camelizeRE = /-(\w)/g;
+ var camelize = cached(function (str) {
+ return str.replace(camelizeRE, function (_, c) { return (c ? c.toUpperCase() : ''); });
+ });
+ /**
+ * Capitalize a string.
+ */
+ var capitalize = cached(function (str) {
+ return str.charAt(0).toUpperCase() + str.slice(1);
+ });
+ /**
+ * Hyphenate a camelCase string.
+ */
+ var hyphenateRE = /\B([A-Z])/g;
+ var hyphenate = cached(function (str) {
+ return str.replace(hyphenateRE, '-$1').toLowerCase();
+ });
+ /**
+ * Simple bind polyfill for environments that do not support it,
+ * e.g., PhantomJS 1.x. Technically, we don't need this anymore
+ * since native bind is now performant enough in most browsers.
+ * But removing it would mean breaking code that was able to run in
+ * PhantomJS 1.x, so this must be kept for backward compatibility.
+ */
+ /* istanbul ignore next */
+ function polyfillBind(fn, ctx) {
+ function boundFn(a) {
+ var l = arguments.length;
+ return l
+ ? l > 1
+ ? fn.apply(ctx, arguments)
+ : fn.call(ctx, a)
+ : fn.call(ctx);
+ }
+ boundFn._length = fn.length;
+ return boundFn;
+ }
+ function nativeBind(fn, ctx) {
+ return fn.bind(ctx);
+ }
+ // @ts-expect-error bind cannot be `undefined`
+ var bind$1 = Function.prototype.bind ? nativeBind : polyfillBind;
+ /**
+ * Convert an Array-like object to a real Array.
+ */
+ function toArray(list, start) {
+ start = start || 0;
+ var i = list.length - start;
+ var ret = new Array(i);
+ while (i--) {
+ ret[i] = list[i + start];
+ }
+ return ret;
+ }
+ /**
+ * Mix properties into target object.
+ */
+ function extend(to, _from) {
+ for (var key in _from) {
+ to[key] = _from[key];
+ }
+ return to;
+ }
+ /**
+ * Merge an Array of Objects into a single Object.
+ */
+ function toObject(arr) {
+ var res = {};
+ for (var i = 0; i < arr.length; i++) {
+ if (arr[i]) {
+ extend(res, arr[i]);
+ }
+ }
+ return res;
+ }
+ /* eslint-disable no-unused-vars */
+ /**
+ * Perform no operation.
+ * Stubbing args to make Flow happy without leaving useless transpiled code
+ * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).
+ */
+ function noop(a, b, c) { }
+ /**
+ * Always return false.
+ */
+ var no = function (a, b, c) { return false; };
+ /* eslint-enable no-unused-vars */
+ /**
+ * Return the same value.
+ */
+ var identity = function (_) { return _; };
+ /**
+ * Generate a string containing static keys from compiler modules.
+ */
+ function genStaticKeys$1(modules) {
+ return modules
+ .reduce(function (keys, m) {
+ return keys.concat(m.staticKeys || []);
+ }, [])
+ .join(',');
+ }
+ /**
+ * Check if two values are loosely equal - that is,
+ * if they are plain objects, do they have the same shape?
+ */
+ function looseEqual(a, b) {
+ if (a === b)
+ return true;
+ var isObjectA = isObject(a);
+ var isObjectB = isObject(b);
+ if (isObjectA && isObjectB) {
+ try {
+ var isArrayA = Array.isArray(a);
+ var isArrayB = Array.isArray(b);
+ if (isArrayA && isArrayB) {
+ return (a.length === b.length &&
+ a.every(function (e, i) {
+ return looseEqual(e, b[i]);
+ }));
+ }
+ else if (a instanceof Date && b instanceof Date) {
+ return a.getTime() === b.getTime();
+ }
+ else if (!isArrayA && !isArrayB) {
+ var keysA = Object.keys(a);
+ var keysB = Object.keys(b);
+ return (keysA.length === keysB.length &&
+ keysA.every(function (key) {
+ return looseEqual(a[key], b[key]);
+ }));
+ }
+ else {
+ /* istanbul ignore next */
+ return false;
+ }
+ }
+ catch (e) {
+ /* istanbul ignore next */
+ return false;
+ }
+ }
+ else if (!isObjectA && !isObjectB) {
+ return String(a) === String(b);
+ }
+ else {
+ return false;
+ }
+ }
+ /**
+ * Return the first index at which a loosely equal value can be
+ * found in the array (if value is a plain object, the array must
+ * contain an object of the same shape), or -1 if it is not present.
+ */
+ function looseIndexOf(arr, val) {
+ for (var i = 0; i < arr.length; i++) {
+ if (looseEqual(arr[i], val))
+ return i;
+ }
+ return -1;
+ }
+ /**
+ * Ensure a function is called only once.
+ */
+ function once(fn) {
+ var called = false;
+ return function () {
+ if (!called) {
+ called = true;
+ fn.apply(this, arguments);
+ }
+ };
+ }
+ // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is#polyfill
+ function hasChanged(x, y) {
+ if (x === y) {
+ return x === 0 && 1 / x !== 1 / y;
+ }
+ else {
+ return x === x || y === y;
+ }
+ }
+
+ var SSR_ATTR = 'data-server-rendered';
+ var ASSET_TYPES = ['component', 'directive', 'filter'];
+ var LIFECYCLE_HOOKS = [
+ 'beforeCreate',
+ 'created',
+ 'beforeMount',
+ 'mounted',
+ 'beforeUpdate',
+ 'updated',
+ 'beforeDestroy',
+ 'destroyed',
+ 'activated',
+ 'deactivated',
+ 'errorCaptured',
+ 'serverPrefetch',
+ 'renderTracked',
+ 'renderTriggered'
+ ];
+
+ var config = {
+ /**
+ * Option merge strategies (used in core/util/options)
+ */
+ // $flow-disable-line
+ optionMergeStrategies: Object.create(null),
+ /**
+ * Whether to suppress warnings.
+ */
+ silent: false,
+ /**
+ * Show production mode tip message on boot?
+ */
+ productionTip: true,
+ /**
+ * Whether to enable devtools
+ */
+ devtools: true,
+ /**
+ * Whether to record perf
+ */
+ performance: false,
+ /**
+ * Error handler for watcher errors
+ */
+ errorHandler: null,
+ /**
+ * Warn handler for watcher warns
+ */
+ warnHandler: null,
+ /**
+ * Ignore certain custom elements
+ */
+ ignoredElements: [],
+ /**
+ * Custom user key aliases for v-on
+ */
+ // $flow-disable-line
+ keyCodes: Object.create(null),
+ /**
+ * Check if a tag is reserved so that it cannot be registered as a
+ * component. This is platform-dependent and may be overwritten.
+ */
+ isReservedTag: no,
+ /**
+ * Check if an attribute is reserved so that it cannot be used as a component
+ * prop. This is platform-dependent and may be overwritten.
+ */
+ isReservedAttr: no,
+ /**
+ * Check if a tag is an unknown element.
+ * Platform-dependent.
+ */
+ isUnknownElement: no,
+ /**
+ * Get the namespace of an element
+ */
+ getTagNamespace: noop,
+ /**
+ * Parse the real tag name for the specific platform.
+ */
+ parsePlatformTagName: identity,
+ /**
+ * Check if an attribute must be bound using property, e.g. value
+ * Platform-dependent.
+ */
+ mustUseProp: no,
+ /**
+ * Perform updates asynchronously. Intended to be used by Vue Test Utils
+ * This will significantly reduce performance if set to false.
+ */
+ async: true,
+ /**
+ * Exposed for legacy reasons
+ */
+ _lifecycleHooks: LIFECYCLE_HOOKS
+ };
+
+ /**
+ * unicode letters used for parsing html tags, component names and property paths.
+ * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname
+ * skipping \u10000-\uEFFFF due to it freezing up PhantomJS
+ */
+ var unicodeRegExp = /a-zA-Z\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C-\u200D\u203F-\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD/;
+ /**
+ * Check if a string starts with $ or _
+ */
+ function isReserved(str) {
+ var c = (str + '').charCodeAt(0);
+ return c === 0x24 || c === 0x5f;
+ }
+ /**
+ * Define a property.
+ */
+ function def(obj, key, val, enumerable) {
+ Object.defineProperty(obj, key, {
+ value: val,
+ enumerable: !!enumerable,
+ writable: true,
+ configurable: true
+ });
+ }
+ /**
+ * Parse simple path.
+ */
+ var bailRE = new RegExp("[^".concat(unicodeRegExp.source, ".$_\\d]"));
+ function parsePath(path) {
+ if (bailRE.test(path)) {
+ return;
+ }
+ var segments = path.split('.');
+ return function (obj) {
+ for (var i = 0; i < segments.length; i++) {
+ if (!obj)
+ return;
+ obj = obj[segments[i]];
+ }
+ return obj;
+ };
+ }
+
+ // can we use __proto__?
+ var hasProto = '__proto__' in {};
+ // Browser environment sniffing
+ var inBrowser = typeof window !== 'undefined';
+ var UA = inBrowser && window.navigator.userAgent.toLowerCase();
+ var isIE = UA && /msie|trident/.test(UA);
+ var isIE9 = UA && UA.indexOf('msie 9.0') > 0;
+ var isEdge = UA && UA.indexOf('edge/') > 0;
+ UA && UA.indexOf('android') > 0;
+ var isIOS = UA && /iphone|ipad|ipod|ios/.test(UA);
+ UA && /chrome\/\d+/.test(UA) && !isEdge;
+ UA && /phantomjs/.test(UA);
+ var isFF = UA && UA.match(/firefox\/(\d+)/);
+ // Firefox has a "watch" function on Object.prototype...
+ // @ts-expect-error firebox support
+ var nativeWatch = {}.watch;
+ var supportsPassive = false;
+ if (inBrowser) {
+ try {
+ var opts = {};
+ Object.defineProperty(opts, 'passive', {
+ get: function () {
+ /* istanbul ignore next */
+ supportsPassive = true;
+ }
+ }); // https://github.com/facebook/flow/issues/285
+ window.addEventListener('test-passive', null, opts);
+ }
+ catch (e) { }
+ }
+ // this needs to be lazy-evaled because vue may be required before
+ // vue-server-renderer can set VUE_ENV
+ var _isServer;
+ var isServerRendering = function () {
+ if (_isServer === undefined) {
+ /* istanbul ignore if */
+ if (!inBrowser && typeof global !== 'undefined') {
+ // detect presence of vue-server-renderer and avoid
+ // Webpack shimming the process
+ _isServer =
+ global['process'] && global['process'].env.VUE_ENV === 'server';
+ }
+ else {
+ _isServer = false;
+ }
+ }
+ return _isServer;
+ };
+ // detect devtools
+ var devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;
+ /* istanbul ignore next */
+ function isNative(Ctor) {
+ return typeof Ctor === 'function' && /native code/.test(Ctor.toString());
+ }
+ var hasSymbol = typeof Symbol !== 'undefined' &&
+ isNative(Symbol) &&
+ typeof Reflect !== 'undefined' &&
+ isNative(Reflect.ownKeys);
+ var _Set; // $flow-disable-line
+ /* istanbul ignore if */ if (typeof Set !== 'undefined' && isNative(Set)) {
+ // use native Set when available.
+ _Set = Set;
+ }
+ else {
+ // a non-standard Set polyfill that only works with primitive keys.
+ _Set = /** @class */ (function () {
+ function Set() {
+ this.set = Object.create(null);
+ }
+ Set.prototype.has = function (key) {
+ return this.set[key] === true;
+ };
+ Set.prototype.add = function (key) {
+ this.set[key] = true;
+ };
+ Set.prototype.clear = function () {
+ this.set = Object.create(null);
+ };
+ return Set;
+ }());
+ }
+
+ var currentInstance = null;
+ /**
+ * This is exposed for compatibility with v3 (e.g. some functions in VueUse
+ * relies on it). Do not use this internally, just use `currentInstance`.
+ *
+ * @internal this function needs manual type declaration because it relies
+ * on previously manually authored types from Vue 2
+ */
+ function getCurrentInstance() {
+ return currentInstance && { proxy: currentInstance };
+ }
+ /**
+ * @internal
+ */
+ function setCurrentInstance(vm) {
+ if (vm === void 0) { vm = null; }
+ if (!vm)
+ currentInstance && currentInstance._scope.off();
+ currentInstance = vm;
+ vm && vm._scope.on();
+ }
+
+ /**
+ * @internal
+ */
+ var VNode = /** @class */ (function () {
+ function VNode(tag, data, children, text, elm, context, componentOptions, asyncFactory) {
+ this.tag = tag;
+ this.data = data;
+ this.children = children;
+ this.text = text;
+ this.elm = elm;
+ this.ns = undefined;
+ this.context = context;
+ this.fnContext = undefined;
+ this.fnOptions = undefined;
+ this.fnScopeId = undefined;
+ this.key = data && data.key;
+ this.componentOptions = componentOptions;
+ this.componentInstance = undefined;
+ this.parent = undefined;
+ this.raw = false;
+ this.isStatic = false;
+ this.isRootInsert = true;
+ this.isComment = false;
+ this.isCloned = false;
+ this.isOnce = false;
+ this.asyncFactory = asyncFactory;
+ this.asyncMeta = undefined;
+ this.isAsyncPlaceholder = false;
+ }
+ Object.defineProperty(VNode.prototype, "child", {
+ // DEPRECATED: alias for componentInstance for backwards compat.
+ /* istanbul ignore next */
+ get: function () {
+ return this.componentInstance;
+ },
+ enumerable: false,
+ configurable: true
+ });
+ return VNode;
+ }());
+ var createEmptyVNode = function (text) {
+ if (text === void 0) { text = ''; }
+ var node = new VNode();
+ node.text = text;
+ node.isComment = true;
+ return node;
+ };
+ function createTextVNode(val) {
+ return new VNode(undefined, undefined, undefined, String(val));
+ }
+ // optimized shallow clone
+ // used for static nodes and slot nodes because they may be reused across
+ // multiple renders, cloning them avoids errors when DOM manipulations rely
+ // on their elm reference.
+ function cloneVNode(vnode) {
+ var cloned = new VNode(vnode.tag, vnode.data,
+ // #7975
+ // clone children array to avoid mutating original in case of cloning
+ // a child.
+ vnode.children && vnode.children.slice(), vnode.text, vnode.elm, vnode.context, vnode.componentOptions, vnode.asyncFactory);
+ cloned.ns = vnode.ns;
+ cloned.isStatic = vnode.isStatic;
+ cloned.key = vnode.key;
+ cloned.isComment = vnode.isComment;
+ cloned.fnContext = vnode.fnContext;
+ cloned.fnOptions = vnode.fnOptions;
+ cloned.fnScopeId = vnode.fnScopeId;
+ cloned.asyncMeta = vnode.asyncMeta;
+ cloned.isCloned = true;
+ return cloned;
+ }
+
+ /* not type checking this file because flow doesn't play well with Proxy */
+ var initProxy;
+ {
+ var allowedGlobals_1 = makeMap('Infinity,undefined,NaN,isFinite,isNaN,' +
+ 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +
+ 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,' +
+ 'require' // for Webpack/Browserify
+ );
+ var warnNonPresent_1 = function (target, key) {
+ warn$2("Property or method \"".concat(key, "\" is not defined on the instance but ") +
+ 'referenced during render. Make sure that this property is reactive, ' +
+ 'either in the data option, or for class-based components, by ' +
+ 'initializing the property. ' +
+ 'See: https://v2.vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.', target);
+ };
+ var warnReservedPrefix_1 = function (target, key) {
+ warn$2("Property \"".concat(key, "\" must be accessed with \"$data.").concat(key, "\" because ") +
+ 'properties starting with "$" or "_" are not proxied in the Vue instance to ' +
+ 'prevent conflicts with Vue internals. ' +
+ 'See: https://v2.vuejs.org/v2/api/#data', target);
+ };
+ var hasProxy_1 = typeof Proxy !== 'undefined' && isNative(Proxy);
+ if (hasProxy_1) {
+ var isBuiltInModifier_1 = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');
+ config.keyCodes = new Proxy(config.keyCodes, {
+ set: function (target, key, value) {
+ if (isBuiltInModifier_1(key)) {
+ warn$2("Avoid overwriting built-in modifier in config.keyCodes: .".concat(key));
+ return false;
+ }
+ else {
+ target[key] = value;
+ return true;
+ }
+ }
+ });
+ }
+ var hasHandler_1 = {
+ has: function (target, key) {
+ var has = key in target;
+ var isAllowed = allowedGlobals_1(key) ||
+ (typeof key === 'string' &&
+ key.charAt(0) === '_' &&
+ !(key in target.$data));
+ if (!has && !isAllowed) {
+ if (key in target.$data)
+ warnReservedPrefix_1(target, key);
+ else
+ warnNonPresent_1(target, key);
+ }
+ return has || !isAllowed;
+ }
+ };
+ var getHandler_1 = {
+ get: function (target, key) {
+ if (typeof key === 'string' && !(key in target)) {
+ if (key in target.$data)
+ warnReservedPrefix_1(target, key);
+ else
+ warnNonPresent_1(target, key);
+ }
+ return target[key];
+ }
+ };
+ initProxy = function initProxy(vm) {
+ if (hasProxy_1) {
+ // determine which proxy handler to use
+ var options = vm.$options;
+ var handlers = options.render && options.render._withStripped ? getHandler_1 : hasHandler_1;
+ vm._renderProxy = new Proxy(vm, handlers);
+ }
+ else {
+ vm._renderProxy = vm;
+ }
+ };
+ }
+
+ /******************************************************************************
+ Copyright (c) Microsoft Corporation.
+
+ Permission to use, copy, modify, and/or distribute this software for any
+ purpose with or without fee is hereby granted.
+
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THIS SOFTWARE.
+ ***************************************************************************** */
+
+ var __assign = function() {
+ __assign = Object.assign || function __assign(t) {
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
+ s = arguments[i];
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+ }
+ return t;
+ };
+ return __assign.apply(this, arguments);
+ };
+
+ var uid$2 = 0;
+ var pendingCleanupDeps = [];
+ var cleanupDeps = function () {
+ for (var i = 0; i < pendingCleanupDeps.length; i++) {
+ var dep = pendingCleanupDeps[i];
+ dep.subs = dep.subs.filter(function (s) { return s; });
+ dep._pending = false;
+ }
+ pendingCleanupDeps.length = 0;
+ };
+ /**
+ * A dep is an observable that can have multiple
+ * directives subscribing to it.
+ * @internal
+ */
+ var Dep = /** @class */ (function () {
+ function Dep() {
+ // pending subs cleanup
+ this._pending = false;
+ this.id = uid$2++;
+ this.subs = [];
+ }
+ Dep.prototype.addSub = function (sub) {
+ this.subs.push(sub);
+ };
+ Dep.prototype.removeSub = function (sub) {
+ // #12696 deps with massive amount of subscribers are extremely slow to
+ // clean up in Chromium
+ // to workaround this, we unset the sub for now, and clear them on
+ // next scheduler flush.
+ this.subs[this.subs.indexOf(sub)] = null;
+ if (!this._pending) {
+ this._pending = true;
+ pendingCleanupDeps.push(this);
+ }
+ };
+ Dep.prototype.depend = function (info) {
+ if (Dep.target) {
+ Dep.target.addDep(this);
+ if (info && Dep.target.onTrack) {
+ Dep.target.onTrack(__assign({ effect: Dep.target }, info));
+ }
+ }
+ };
+ Dep.prototype.notify = function (info) {
+ // stabilize the subscriber list first
+ var subs = this.subs.filter(function (s) { return s; });
+ if (!config.async) {
+ // subs aren't sorted in scheduler if not running async
+ // we need to sort them now to make sure they fire in correct
+ // order
+ subs.sort(function (a, b) { return a.id - b.id; });
+ }
+ for (var i = 0, l = subs.length; i < l; i++) {
+ var sub = subs[i];
+ if (info) {
+ sub.onTrigger &&
+ sub.onTrigger(__assign({ effect: subs[i] }, info));
+ }
+ sub.update();
+ }
+ };
+ return Dep;
+ }());
+ // The current target watcher being evaluated.
+ // This is globally unique because only one watcher
+ // can be evaluated at a time.
+ Dep.target = null;
+ var targetStack = [];
+ function pushTarget(target) {
+ targetStack.push(target);
+ Dep.target = target;
+ }
+ function popTarget() {
+ targetStack.pop();
+ Dep.target = targetStack[targetStack.length - 1];
+ }
+
+ /*
+ * not type checking this file because flow doesn't play well with
+ * dynamically accessing methods on Array prototype
+ */
+ var arrayProto = Array.prototype;
+ var arrayMethods = Object.create(arrayProto);
+ var methodsToPatch = [
+ 'push',
+ 'pop',
+ 'shift',
+ 'unshift',
+ 'splice',
+ 'sort',
+ 'reverse'
+ ];
+ /**
+ * Intercept mutating methods and emit events
+ */
+ methodsToPatch.forEach(function (method) {
+ // cache original method
+ var original = arrayProto[method];
+ def(arrayMethods, method, function mutator() {
+ var args = [];
+ for (var _i = 0; _i < arguments.length; _i++) {
+ args[_i] = arguments[_i];
+ }
+ var result = original.apply(this, args);
+ var ob = this.__ob__;
+ var inserted;
+ switch (method) {
+ case 'push':
+ case 'unshift':
+ inserted = args;
+ break;
+ case 'splice':
+ inserted = args.slice(2);
+ break;
+ }
+ if (inserted)
+ ob.observeArray(inserted);
+ // notify change
+ {
+ ob.dep.notify({
+ type: "array mutation" /* TriggerOpTypes.ARRAY_MUTATION */,
+ target: this,
+ key: method
+ });
+ }
+ return result;
+ });
+ });
+
+ var rawMap = new WeakMap();
+ function reactive(target) {
+ makeReactive(target, false);
+ return target;
+ }
+ /**
+ * Return a shallowly-reactive copy of the original object, where only the root
+ * level properties are reactive. It also does not auto-unwrap refs (even at the
+ * root level).
+ */
+ function shallowReactive(target) {
+ makeReactive(target, true);
+ def(target, "__v_isShallow" /* ReactiveFlags.IS_SHALLOW */, true);
+ return target;
+ }
+ function makeReactive(target, shallow) {
+ // if trying to observe a readonly proxy, return the readonly version.
+ if (!isReadonly(target)) {
+ {
+ if (isArray(target)) {
+ warn$2("Avoid using Array as root value for ".concat(shallow ? "shallowReactive()" : "reactive()", " as it cannot be tracked in watch() or watchEffect(). Use ").concat(shallow ? "shallowRef()" : "ref()", " instead. This is a Vue-2-only limitation."));
+ }
+ var existingOb = target && target.__ob__;
+ if (existingOb && existingOb.shallow !== shallow) {
+ warn$2("Target is already a ".concat(existingOb.shallow ? "" : "non-", "shallow reactive object, and cannot be converted to ").concat(shallow ? "" : "non-", "shallow."));
+ }
+ }
+ var ob = observe(target, shallow, isServerRendering() /* ssr mock reactivity */);
+ if (!ob) {
+ if (target == null || isPrimitive(target)) {
+ warn$2("value cannot be made reactive: ".concat(String(target)));
+ }
+ if (isCollectionType(target)) {
+ warn$2("Vue 2 does not support reactive collection types such as Map or Set.");
+ }
+ }
+ }
+ }
+ function isReactive(value) {
+ if (isReadonly(value)) {
+ return isReactive(value["__v_raw" /* ReactiveFlags.RAW */]);
+ }
+ return !!(value && value.__ob__);
+ }
+ function isShallow(value) {
+ return !!(value && value.__v_isShallow);
+ }
+ function isReadonly(value) {
+ return !!(value && value.__v_isReadonly);
+ }
+ function isProxy(value) {
+ return isReactive(value) || isReadonly(value);
+ }
+ function toRaw(observed) {
+ var raw = observed && observed["__v_raw" /* ReactiveFlags.RAW */];
+ return raw ? toRaw(raw) : observed;
+ }
+ function markRaw(value) {
+ if (isObject(value)) {
+ rawMap.set(value, true);
+ }
+ return value;
+ }
+ /**
+ * @internal
+ */
+ function isCollectionType(value) {
+ var type = toRawType(value);
+ return (type === 'Map' || type === 'WeakMap' || type === 'Set' || type === 'WeakSet');
+ }
+
+ var arrayKeys = Object.getOwnPropertyNames(arrayMethods);
+ var NO_INIITIAL_VALUE = {};
+ /**
+ * In some cases we may want to disable observation inside a component's
+ * update computation.
+ */
+ var shouldObserve = true;
+ function toggleObserving(value) {
+ shouldObserve = value;
+ }
+ // ssr mock dep
+ var mockDep = {
+ notify: noop,
+ depend: noop,
+ addSub: noop,
+ removeSub: noop
+ };
+ /**
+ * Observer class that is attached to each observed
+ * object. Once attached, the observer converts the target
+ * object's property keys into getter/setters that
+ * collect dependencies and dispatch updates.
+ */
+ var Observer = /** @class */ (function () {
+ function Observer(value, shallow, mock) {
+ if (shallow === void 0) { shallow = false; }
+ if (mock === void 0) { mock = false; }
+ this.value = value;
+ this.shallow = shallow;
+ this.mock = mock;
+ // this.value = value
+ this.dep = mock ? mockDep : new Dep();
+ this.vmCount = 0;
+ def(value, '__ob__', this);
+ if (isArray(value)) {
+ if (!mock) {
+ if (hasProto) {
+ value.__proto__ = arrayMethods;
+ /* eslint-enable no-proto */
+ }
+ else {
+ for (var i = 0, l = arrayKeys.length; i < l; i++) {
+ var key = arrayKeys[i];
+ def(value, key, arrayMethods[key]);
+ }
+ }
+ }
+ if (!shallow) {
+ this.observeArray(value);
+ }
+ }
+ else {
+ /**
+ * Walk through all properties and convert them into
+ * getter/setters. This method should only be called when
+ * value type is Object.
+ */
+ var keys = Object.keys(value);
+ for (var i = 0; i < keys.length; i++) {
+ var key = keys[i];
+ defineReactive(value, key, NO_INIITIAL_VALUE, undefined, shallow, mock);
+ }
+ }
+ }
+ /**
+ * Observe a list of Array items.
+ */
+ Observer.prototype.observeArray = function (value) {
+ for (var i = 0, l = value.length; i < l; i++) {
+ observe(value[i], false, this.mock);
+ }
+ };
+ return Observer;
+ }());
+ // helpers
+ /**
+ * Attempt to create an observer instance for a value,
+ * returns the new observer if successfully observed,
+ * or the existing observer if the value already has one.
+ */
+ function observe(value, shallow, ssrMockReactivity) {
+ if (value && hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {
+ return value.__ob__;
+ }
+ if (shouldObserve &&
+ (ssrMockReactivity || !isServerRendering()) &&
+ (isArray(value) || isPlainObject(value)) &&
+ Object.isExtensible(value) &&
+ !value.__v_skip /* ReactiveFlags.SKIP */ &&
+ !rawMap.has(value) &&
+ !isRef(value) &&
+ !(value instanceof VNode)) {
+ return new Observer(value, shallow, ssrMockReactivity);
+ }
+ }
+ /**
+ * Define a reactive property on an Object.
+ */
+ function defineReactive(obj, key, val, customSetter, shallow, mock) {
+ var dep = new Dep();
+ var property = Object.getOwnPropertyDescriptor(obj, key);
+ if (property && property.configurable === false) {
+ return;
+ }
+ // cater for pre-defined getter/setters
+ var getter = property && property.get;
+ var setter = property && property.set;
+ if ((!getter || setter) &&
+ (val === NO_INIITIAL_VALUE || arguments.length === 2)) {
+ val = obj[key];
+ }
+ var childOb = !shallow && observe(val, false, mock);
+ Object.defineProperty(obj, key, {
+ enumerable: true,
+ configurable: true,
+ get: function reactiveGetter() {
+ var value = getter ? getter.call(obj) : val;
+ if (Dep.target) {
+ {
+ dep.depend({
+ target: obj,
+ type: "get" /* TrackOpTypes.GET */,
+ key: key
+ });
+ }
+ if (childOb) {
+ childOb.dep.depend();
+ if (isArray(value)) {
+ dependArray(value);
+ }
+ }
+ }
+ return isRef(value) && !shallow ? value.value : value;
+ },
+ set: function reactiveSetter(newVal) {
+ var value = getter ? getter.call(obj) : val;
+ if (!hasChanged(value, newVal)) {
+ return;
+ }
+ if (customSetter) {
+ customSetter();
+ }
+ if (setter) {
+ setter.call(obj, newVal);
+ }
+ else if (getter) {
+ // #7981: for accessor properties without setter
+ return;
+ }
+ else if (!shallow && isRef(value) && !isRef(newVal)) {
+ value.value = newVal;
+ return;
+ }
+ else {
+ val = newVal;
+ }
+ childOb = !shallow && observe(newVal, false, mock);
+ {
+ dep.notify({
+ type: "set" /* TriggerOpTypes.SET */,
+ target: obj,
+ key: key,
+ newValue: newVal,
+ oldValue: value
+ });
+ }
+ }
+ });
+ return dep;
+ }
+ function set(target, key, val) {
+ if ((isUndef(target) || isPrimitive(target))) {
+ warn$2("Cannot set reactive property on undefined, null, or primitive value: ".concat(target));
+ }
+ if (isReadonly(target)) {
+ warn$2("Set operation on key \"".concat(key, "\" failed: target is readonly."));
+ return;
+ }
+ var ob = target.__ob__;
+ if (isArray(target) && isValidArrayIndex(key)) {
+ target.length = Math.max(target.length, key);
+ target.splice(key, 1, val);
+ // when mocking for SSR, array methods are not hijacked
+ if (ob && !ob.shallow && ob.mock) {
+ observe(val, false, true);
+ }
+ return val;
+ }
+ if (key in target && !(key in Object.prototype)) {
+ target[key] = val;
+ return val;
+ }
+ if (target._isVue || (ob && ob.vmCount)) {
+ warn$2('Avoid adding reactive properties to a Vue instance or its root $data ' +
+ 'at runtime - declare it upfront in the data option.');
+ return val;
+ }
+ if (!ob) {
+ target[key] = val;
+ return val;
+ }
+ defineReactive(ob.value, key, val, undefined, ob.shallow, ob.mock);
+ {
+ ob.dep.notify({
+ type: "add" /* TriggerOpTypes.ADD */,
+ target: target,
+ key: key,
+ newValue: val,
+ oldValue: undefined
+ });
+ }
+ return val;
+ }
+ function del(target, key) {
+ if ((isUndef(target) || isPrimitive(target))) {
+ warn$2("Cannot delete reactive property on undefined, null, or primitive value: ".concat(target));
+ }
+ if (isArray(target) && isValidArrayIndex(key)) {
+ target.splice(key, 1);
+ return;
+ }
+ var ob = target.__ob__;
+ if (target._isVue || (ob && ob.vmCount)) {
+ warn$2('Avoid deleting properties on a Vue instance or its root $data ' +
+ '- just set it to null.');
+ return;
+ }
+ if (isReadonly(target)) {
+ warn$2("Delete operation on key \"".concat(key, "\" failed: target is readonly."));
+ return;
+ }
+ if (!hasOwn(target, key)) {
+ return;
+ }
+ delete target[key];
+ if (!ob) {
+ return;
+ }
+ {
+ ob.dep.notify({
+ type: "delete" /* TriggerOpTypes.DELETE */,
+ target: target,
+ key: key
+ });
+ }
+ }
+ /**
+ * Collect dependencies on array elements when the array is touched, since
+ * we cannot intercept array element access like property getters.
+ */
+ function dependArray(value) {
+ for (var e = void 0, i = 0, l = value.length; i < l; i++) {
+ e = value[i];
+ if (e && e.__ob__) {
+ e.__ob__.dep.depend();
+ }
+ if (isArray(e)) {
+ dependArray(e);
+ }
+ }
+ }
+
+ /**
+ * @internal
+ */
+ var RefFlag = "__v_isRef";
+ function isRef(r) {
+ return !!(r && r.__v_isRef === true);
+ }
+ function ref$1(value) {
+ return createRef(value, false);
+ }
+ function shallowRef(value) {
+ return createRef(value, true);
+ }
+ function createRef(rawValue, shallow) {
+ if (isRef(rawValue)) {
+ return rawValue;
+ }
+ var ref = {};
+ def(ref, RefFlag, true);
+ def(ref, "__v_isShallow" /* ReactiveFlags.IS_SHALLOW */, shallow);
+ def(ref, 'dep', defineReactive(ref, 'value', rawValue, null, shallow, isServerRendering()));
+ return ref;
+ }
+ function triggerRef(ref) {
+ if (!ref.dep) {
+ warn$2("received object is not a triggerable ref.");
+ }
+ {
+ ref.dep &&
+ ref.dep.notify({
+ type: "set" /* TriggerOpTypes.SET */,
+ target: ref,
+ key: 'value'
+ });
+ }
+ }
+ function unref(ref) {
+ return isRef(ref) ? ref.value : ref;
+ }
+ function proxyRefs(objectWithRefs) {
+ if (isReactive(objectWithRefs)) {
+ return objectWithRefs;
+ }
+ var proxy = {};
+ var keys = Object.keys(objectWithRefs);
+ for (var i = 0; i < keys.length; i++) {
+ proxyWithRefUnwrap(proxy, objectWithRefs, keys[i]);
+ }
+ return proxy;
+ }
+ function proxyWithRefUnwrap(target, source, key) {
+ Object.defineProperty(target, key, {
+ enumerable: true,
+ configurable: true,
+ get: function () {
+ var val = source[key];
+ if (isRef(val)) {
+ return val.value;
+ }
+ else {
+ var ob = val && val.__ob__;
+ if (ob)
+ ob.dep.depend();
+ return val;
+ }
+ },
+ set: function (value) {
+ var oldValue = source[key];
+ if (isRef(oldValue) && !isRef(value)) {
+ oldValue.value = value;
+ }
+ else {
+ source[key] = value;
+ }
+ }
+ });
+ }
+ function customRef(factory) {
+ var dep = new Dep();
+ var _a = factory(function () {
+ {
+ dep.depend({
+ target: ref,
+ type: "get" /* TrackOpTypes.GET */,
+ key: 'value'
+ });
+ }
+ }, function () {
+ {
+ dep.notify({
+ target: ref,
+ type: "set" /* TriggerOpTypes.SET */,
+ key: 'value'
+ });
+ }
+ }), get = _a.get, set = _a.set;
+ var ref = {
+ get value() {
+ return get();
+ },
+ set value(newVal) {
+ set(newVal);
+ }
+ };
+ def(ref, RefFlag, true);
+ return ref;
+ }
+ function toRefs(object) {
+ if (!isReactive(object)) {
+ warn$2("toRefs() expects a reactive object but received a plain one.");
+ }
+ var ret = isArray(object) ? new Array(object.length) : {};
+ for (var key in object) {
+ ret[key] = toRef(object, key);
+ }
+ return ret;
+ }
+ function toRef(object, key, defaultValue) {
+ var val = object[key];
+ if (isRef(val)) {
+ return val;
+ }
+ var ref = {
+ get value() {
+ var val = object[key];
+ return val === undefined ? defaultValue : val;
+ },
+ set value(newVal) {
+ object[key] = newVal;
+ }
+ };
+ def(ref, RefFlag, true);
+ return ref;
+ }
+
+ var rawToReadonlyMap = new WeakMap();
+ var rawToShallowReadonlyMap = new WeakMap();
+ function readonly(target) {
+ return createReadonly(target, false);
+ }
+ function createReadonly(target, shallow) {
+ if (!isPlainObject(target)) {
+ {
+ if (isArray(target)) {
+ warn$2("Vue 2 does not support readonly arrays.");
+ }
+ else if (isCollectionType(target)) {
+ warn$2("Vue 2 does not support readonly collection types such as Map or Set.");
+ }
+ else {
+ warn$2("value cannot be made readonly: ".concat(typeof target));
+ }
+ }
+ return target;
+ }
+ // already a readonly object
+ if (isReadonly(target)) {
+ return target;
+ }
+ // already has a readonly proxy
+ var map = shallow ? rawToShallowReadonlyMap : rawToReadonlyMap;
+ var existingProxy = map.get(target);
+ if (existingProxy) {
+ return existingProxy;
+ }
+ var proxy = Object.create(Object.getPrototypeOf(target));
+ map.set(target, proxy);
+ def(proxy, "__v_isReadonly" /* ReactiveFlags.IS_READONLY */, true);
+ def(proxy, "__v_raw" /* ReactiveFlags.RAW */, target);
+ if (isRef(target)) {
+ def(proxy, RefFlag, true);
+ }
+ if (shallow || isShallow(target)) {
+ def(proxy, "__v_isShallow" /* ReactiveFlags.IS_SHALLOW */, true);
+ }
+ var keys = Object.keys(target);
+ for (var i = 0; i < keys.length; i++) {
+ defineReadonlyProperty(proxy, target, keys[i], shallow);
+ }
+ return proxy;
+ }
+ function defineReadonlyProperty(proxy, target, key, shallow) {
+ Object.defineProperty(proxy, key, {
+ enumerable: true,
+ configurable: true,
+ get: function () {
+ var val = target[key];
+ return shallow || !isPlainObject(val) ? val : readonly(val);
+ },
+ set: function () {
+ warn$2("Set operation on key \"".concat(key, "\" failed: target is readonly."));
+ }
+ });
+ }
+ /**
+ * Returns a reactive-copy of the original object, where only the root level
+ * properties are readonly, and does NOT unwrap refs nor recursively convert
+ * returned properties.
+ * This is used for creating the props proxy object for stateful components.
+ */
+ function shallowReadonly(target) {
+ return createReadonly(target, true);
+ }
+
+ function computed(getterOrOptions, debugOptions) {
+ var getter;
+ var setter;
+ var onlyGetter = isFunction(getterOrOptions);
+ if (onlyGetter) {
+ getter = getterOrOptions;
+ setter = function () {
+ warn$2('Write operation failed: computed value is readonly');
+ }
+ ;
+ }
+ else {
+ getter = getterOrOptions.get;
+ setter = getterOrOptions.set;
+ }
+ var watcher = isServerRendering()
+ ? null
+ : new Watcher(currentInstance, getter, noop, { lazy: true });
+ if (watcher && debugOptions) {
+ watcher.onTrack = debugOptions.onTrack;
+ watcher.onTrigger = debugOptions.onTrigger;
+ }
+ var ref = {
+ // some libs rely on the presence effect for checking computed refs
+ // from normal refs, but the implementation doesn't matter
+ effect: watcher,
+ get value() {
+ if (watcher) {
+ if (watcher.dirty) {
+ watcher.evaluate();
+ }
+ if (Dep.target) {
+ if (Dep.target.onTrack) {
+ Dep.target.onTrack({
+ effect: Dep.target,
+ target: ref,
+ type: "get" /* TrackOpTypes.GET */,
+ key: 'value'
+ });
+ }
+ watcher.depend();
+ }
+ return watcher.value;
+ }
+ else {
+ return getter();
+ }
+ },
+ set value(newVal) {
+ setter(newVal);
+ }
+ };
+ def(ref, RefFlag, true);
+ def(ref, "__v_isReadonly" /* ReactiveFlags.IS_READONLY */, onlyGetter);
+ return ref;
+ }
+
+ var mark;
+ var measure;
+ {
+ var perf_1 = inBrowser && window.performance;
+ /* istanbul ignore if */
+ if (perf_1 &&
+ // @ts-ignore
+ perf_1.mark &&
+ // @ts-ignore
+ perf_1.measure &&
+ // @ts-ignore
+ perf_1.clearMarks &&
+ // @ts-ignore
+ perf_1.clearMeasures) {
+ mark = function (tag) { return perf_1.mark(tag); };
+ measure = function (name, startTag, endTag) {
+ perf_1.measure(name, startTag, endTag);
+ perf_1.clearMarks(startTag);
+ perf_1.clearMarks(endTag);
+ // perf.clearMeasures(name)
+ };
+ }
+ }
+
+ var normalizeEvent = cached(function (name) {
+ var passive = name.charAt(0) === '&';
+ name = passive ? name.slice(1) : name;
+ var once = name.charAt(0) === '~'; // Prefixed last, checked first
+ name = once ? name.slice(1) : name;
+ var capture = name.charAt(0) === '!';
+ name = capture ? name.slice(1) : name;
+ return {
+ name: name,
+ once: once,
+ capture: capture,
+ passive: passive
+ };
+ });
+ function createFnInvoker(fns, vm) {
+ function invoker() {
+ var fns = invoker.fns;
+ if (isArray(fns)) {
+ var cloned = fns.slice();
+ for (var i = 0; i < cloned.length; i++) {
+ invokeWithErrorHandling(cloned[i], null, arguments, vm, "v-on handler");
+ }
+ }
+ else {
+ // return handler return value for single handlers
+ return invokeWithErrorHandling(fns, null, arguments, vm, "v-on handler");
+ }
+ }
+ invoker.fns = fns;
+ return invoker;
+ }
+ function updateListeners(on, oldOn, add, remove, createOnceHandler, vm) {
+ var name, cur, old, event;
+ for (name in on) {
+ cur = on[name];
+ old = oldOn[name];
+ event = normalizeEvent(name);
+ if (isUndef(cur)) {
+ warn$2("Invalid handler for event \"".concat(event.name, "\": got ") + String(cur), vm);
+ }
+ else if (isUndef(old)) {
+ if (isUndef(cur.fns)) {
+ cur = on[name] = createFnInvoker(cur, vm);
+ }
+ if (isTrue(event.once)) {
+ cur = on[name] = createOnceHandler(event.name, cur, event.capture);
+ }
+ add(event.name, cur, event.capture, event.passive, event.params);
+ }
+ else if (cur !== old) {
+ old.fns = cur;
+ on[name] = old;
+ }
+ }
+ for (name in oldOn) {
+ if (isUndef(on[name])) {
+ event = normalizeEvent(name);
+ remove(event.name, oldOn[name], event.capture);
+ }
+ }
+ }
+
+ function mergeVNodeHook(def, hookKey, hook) {
+ if (def instanceof VNode) {
+ def = def.data.hook || (def.data.hook = {});
+ }
+ var invoker;
+ var oldHook = def[hookKey];
+ function wrappedHook() {
+ hook.apply(this, arguments);
+ // important: remove merged hook to ensure it's called only once
+ // and prevent memory leak
+ remove$2(invoker.fns, wrappedHook);
+ }
+ if (isUndef(oldHook)) {
+ // no existing hook
+ invoker = createFnInvoker([wrappedHook]);
+ }
+ else {
+ /* istanbul ignore if */
+ if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {
+ // already a merged invoker
+ invoker = oldHook;
+ invoker.fns.push(wrappedHook);
+ }
+ else {
+ // existing plain hook
+ invoker = createFnInvoker([oldHook, wrappedHook]);
+ }
+ }
+ invoker.merged = true;
+ def[hookKey] = invoker;
+ }
+
+ function extractPropsFromVNodeData(data, Ctor, tag) {
+ // we are only extracting raw values here.
+ // validation and default values are handled in the child
+ // component itself.
+ var propOptions = Ctor.options.props;
+ if (isUndef(propOptions)) {
+ return;
+ }
+ var res = {};
+ var attrs = data.attrs, props = data.props;
+ if (isDef(attrs) || isDef(props)) {
+ for (var key in propOptions) {
+ var altKey = hyphenate(key);
+ {
+ var keyInLowerCase = key.toLowerCase();
+ if (key !== keyInLowerCase && attrs && hasOwn(attrs, keyInLowerCase)) {
+ tip("Prop \"".concat(keyInLowerCase, "\" is passed to component ") +
+ "".concat(formatComponentName(
+ // @ts-expect-error tag is string
+ tag || Ctor), ", but the declared prop name is") +
+ " \"".concat(key, "\". ") +
+ "Note that HTML attributes are case-insensitive and camelCased " +
+ "props need to use their kebab-case equivalents when using in-DOM " +
+ "templates. You should probably use \"".concat(altKey, "\" instead of \"").concat(key, "\"."));
+ }
+ }
+ checkProp(res, props, key, altKey, true) ||
+ checkProp(res, attrs, key, altKey, false);
+ }
+ }
+ return res;
+ }
+ function checkProp(res, hash, key, altKey, preserve) {
+ if (isDef(hash)) {
+ if (hasOwn(hash, key)) {
+ res[key] = hash[key];
+ if (!preserve) {
+ delete hash[key];
+ }
+ return true;
+ }
+ else if (hasOwn(hash, altKey)) {
+ res[key] = hash[altKey];
+ if (!preserve) {
+ delete hash[altKey];
+ }
+ return true;
+ }
+ }
+ return false;
+ }
+
+ // The template compiler attempts to minimize the need for normalization by
+ // statically analyzing the template at compile time.
+ //
+ // For plain HTML markup, normalization can be completely skipped because the
+ // generated render function is guaranteed to return Array. There are
+ // two cases where extra normalization is needed:
+ // 1. When the children contains components - because a functional component
+ // may return an Array instead of a single root. In this case, just a simple
+ // normalization is needed - if any child is an Array, we flatten the whole
+ // thing with Array.prototype.concat. It is guaranteed to be only 1-level deep
+ // because functional components already normalize their own children.
+ function simpleNormalizeChildren(children) {
+ for (var i = 0; i < children.length; i++) {
+ if (isArray(children[i])) {
+ return Array.prototype.concat.apply([], children);
+ }
+ }
+ return children;
+ }
+ // 2. When the children contains constructs that always generated nested Arrays,
+ // e.g. , , v-for, or when the children is provided by user
+ // with hand-written render functions / JSX. In such cases a full normalization
+ // is needed to cater to all possible types of children values.
+ function normalizeChildren(children) {
+ return isPrimitive(children)
+ ? [createTextVNode(children)]
+ : isArray(children)
+ ? normalizeArrayChildren(children)
+ : undefined;
+ }
+ function isTextNode(node) {
+ return isDef(node) && isDef(node.text) && isFalse(node.isComment);
+ }
+ function normalizeArrayChildren(children, nestedIndex) {
+ var res = [];
+ var i, c, lastIndex, last;
+ for (i = 0; i < children.length; i++) {
+ c = children[i];
+ if (isUndef(c) || typeof c === 'boolean')
+ continue;
+ lastIndex = res.length - 1;
+ last = res[lastIndex];
+ // nested
+ if (isArray(c)) {
+ if (c.length > 0) {
+ c = normalizeArrayChildren(c, "".concat(nestedIndex || '', "_").concat(i));
+ // merge adjacent text nodes
+ if (isTextNode(c[0]) && isTextNode(last)) {
+ res[lastIndex] = createTextVNode(last.text + c[0].text);
+ c.shift();
+ }
+ res.push.apply(res, c);
+ }
+ }
+ else if (isPrimitive(c)) {
+ if (isTextNode(last)) {
+ // merge adjacent text nodes
+ // this is necessary for SSR hydration because text nodes are
+ // essentially merged when rendered to HTML strings
+ res[lastIndex] = createTextVNode(last.text + c);
+ }
+ else if (c !== '') {
+ // convert primitive to vnode
+ res.push(createTextVNode(c));
+ }
+ }
+ else {
+ if (isTextNode(c) && isTextNode(last)) {
+ // merge adjacent text nodes
+ res[lastIndex] = createTextVNode(last.text + c.text);
+ }
+ else {
+ // default key for nested array children (likely generated by v-for)
+ if (isTrue(children._isVList) &&
+ isDef(c.tag) &&
+ isUndef(c.key) &&
+ isDef(nestedIndex)) {
+ c.key = "__vlist".concat(nestedIndex, "_").concat(i, "__");
+ }
+ res.push(c);
+ }
+ }
+ }
+ return res;
+ }
+
+ var SIMPLE_NORMALIZE = 1;
+ var ALWAYS_NORMALIZE = 2;
+ // wrapper function for providing a more flexible interface
+ // without getting yelled at by flow
+ function createElement$1(context, tag, data, children, normalizationType, alwaysNormalize) {
+ if (isArray(data) || isPrimitive(data)) {
+ normalizationType = children;
+ children = data;
+ data = undefined;
+ }
+ if (isTrue(alwaysNormalize)) {
+ normalizationType = ALWAYS_NORMALIZE;
+ }
+ return _createElement(context, tag, data, children, normalizationType);
+ }
+ function _createElement(context, tag, data, children, normalizationType) {
+ if (isDef(data) && isDef(data.__ob__)) {
+ warn$2("Avoid using observed data object as vnode data: ".concat(JSON.stringify(data), "\n") + 'Always create fresh vnode data objects in each render!', context);
+ return createEmptyVNode();
+ }
+ // object syntax in v-bind
+ if (isDef(data) && isDef(data.is)) {
+ tag = data.is;
+ }
+ if (!tag) {
+ // in case of component :is set to falsy value
+ return createEmptyVNode();
+ }
+ // warn against non-primitive key
+ if (isDef(data) && isDef(data.key) && !isPrimitive(data.key)) {
+ warn$2('Avoid using non-primitive value as key, ' +
+ 'use string/number value instead.', context);
+ }
+ // support single function children as default scoped slot
+ if (isArray(children) && isFunction(children[0])) {
+ data = data || {};
+ data.scopedSlots = { default: children[0] };
+ children.length = 0;
+ }
+ if (normalizationType === ALWAYS_NORMALIZE) {
+ children = normalizeChildren(children);
+ }
+ else if (normalizationType === SIMPLE_NORMALIZE) {
+ children = simpleNormalizeChildren(children);
+ }
+ var vnode, ns;
+ if (typeof tag === 'string') {
+ var Ctor = void 0;
+ ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag);
+ if (config.isReservedTag(tag)) {
+ // platform built-in elements
+ if (isDef(data) &&
+ isDef(data.nativeOn) &&
+ data.tag !== 'component') {
+ warn$2("The .native modifier for v-on is only valid on components but it was used on <".concat(tag, ">."), context);
+ }
+ vnode = new VNode(config.parsePlatformTagName(tag), data, children, undefined, undefined, context);
+ }
+ else if ((!data || !data.pre) &&
+ isDef((Ctor = resolveAsset(context.$options, 'components', tag)))) {
+ // component
+ vnode = createComponent(Ctor, data, context, children, tag);
+ }
+ else {
+ // unknown or unlisted namespaced elements
+ // check at runtime because it may get assigned a namespace when its
+ // parent normalizes children
+ vnode = new VNode(tag, data, children, undefined, undefined, context);
+ }
+ }
+ else {
+ // direct component options / constructor
+ vnode = createComponent(tag, data, context, children);
+ }
+ if (isArray(vnode)) {
+ return vnode;
+ }
+ else if (isDef(vnode)) {
+ if (isDef(ns))
+ applyNS(vnode, ns);
+ if (isDef(data))
+ registerDeepBindings(data);
+ return vnode;
+ }
+ else {
+ return createEmptyVNode();
+ }
+ }
+ function applyNS(vnode, ns, force) {
+ vnode.ns = ns;
+ if (vnode.tag === 'foreignObject') {
+ // use default namespace inside foreignObject
+ ns = undefined;
+ force = true;
+ }
+ if (isDef(vnode.children)) {
+ for (var i = 0, l = vnode.children.length; i < l; i++) {
+ var child = vnode.children[i];
+ if (isDef(child.tag) &&
+ (isUndef(child.ns) || (isTrue(force) && child.tag !== 'svg'))) {
+ applyNS(child, ns, force);
+ }
+ }
+ }
+ }
+ // ref #5318
+ // necessary to ensure parent re-render when deep bindings like :style and
+ // :class are used on slot nodes
+ function registerDeepBindings(data) {
+ if (isObject(data.style)) {
+ traverse(data.style);
+ }
+ if (isObject(data.class)) {
+ traverse(data.class);
+ }
+ }
+
+ /**
+ * Runtime helper for rendering v-for lists.
+ */
+ function renderList(val, render) {
+ var ret = null, i, l, keys, key;
+ if (isArray(val) || typeof val === 'string') {
+ ret = new Array(val.length);
+ for (i = 0, l = val.length; i < l; i++) {
+ ret[i] = render(val[i], i);
+ }
+ }
+ else if (typeof val === 'number') {
+ ret = new Array(val);
+ for (i = 0; i < val; i++) {
+ ret[i] = render(i + 1, i);
+ }
+ }
+ else if (isObject(val)) {
+ if (hasSymbol && val[Symbol.iterator]) {
+ ret = [];
+ var iterator = val[Symbol.iterator]();
+ var result = iterator.next();
+ while (!result.done) {
+ ret.push(render(result.value, ret.length));
+ result = iterator.next();
+ }
+ }
+ else {
+ keys = Object.keys(val);
+ ret = new Array(keys.length);
+ for (i = 0, l = keys.length; i < l; i++) {
+ key = keys[i];
+ ret[i] = render(val[key], key, i);
+ }
+ }
+ }
+ if (!isDef(ret)) {
+ ret = [];
+ }
+ ret._isVList = true;
+ return ret;
+ }
+
+ /**
+ * Runtime helper for rendering
+ */
+ function renderSlot(name, fallbackRender, props, bindObject) {
+ var scopedSlotFn = this.$scopedSlots[name];
+ var nodes;
+ if (scopedSlotFn) {
+ // scoped slot
+ props = props || {};
+ if (bindObject) {
+ if (!isObject(bindObject)) {
+ warn$2('slot v-bind without argument expects an Object', this);
+ }
+ props = extend(extend({}, bindObject), props);
+ }
+ nodes =
+ scopedSlotFn(props) ||
+ (isFunction(fallbackRender) ? fallbackRender() : fallbackRender);
+ }
+ else {
+ nodes =
+ this.$slots[name] ||
+ (isFunction(fallbackRender) ? fallbackRender() : fallbackRender);
+ }
+ var target = props && props.slot;
+ if (target) {
+ return this.$createElement('template', { slot: target }, nodes);
+ }
+ else {
+ return nodes;
+ }
+ }
+
+ /**
+ * Runtime helper for resolving filters
+ */
+ function resolveFilter(id) {
+ return resolveAsset(this.$options, 'filters', id, true) || identity;
+ }
+
+ function isKeyNotMatch(expect, actual) {
+ if (isArray(expect)) {
+ return expect.indexOf(actual) === -1;
+ }
+ else {
+ return expect !== actual;
+ }
+ }
+ /**
+ * Runtime helper for checking keyCodes from config.
+ * exposed as Vue.prototype._k
+ * passing in eventKeyName as last argument separately for backwards compat
+ */
+ function checkKeyCodes(eventKeyCode, key, builtInKeyCode, eventKeyName, builtInKeyName) {
+ var mappedKeyCode = config.keyCodes[key] || builtInKeyCode;
+ if (builtInKeyName && eventKeyName && !config.keyCodes[key]) {
+ return isKeyNotMatch(builtInKeyName, eventKeyName);
+ }
+ else if (mappedKeyCode) {
+ return isKeyNotMatch(mappedKeyCode, eventKeyCode);
+ }
+ else if (eventKeyName) {
+ return hyphenate(eventKeyName) !== key;
+ }
+ return eventKeyCode === undefined;
+ }
+
+ /**
+ * Runtime helper for merging v-bind="object" into a VNode's data.
+ */
+ function bindObjectProps(data, tag, value, asProp, isSync) {
+ if (value) {
+ if (!isObject(value)) {
+ warn$2('v-bind without argument expects an Object or Array value', this);
+ }
+ else {
+ if (isArray(value)) {
+ value = toObject(value);
+ }
+ var hash = void 0;
+ var _loop_1 = function (key) {
+ if (key === 'class' || key === 'style' || isReservedAttribute(key)) {
+ hash = data;
+ }
+ else {
+ var type = data.attrs && data.attrs.type;
+ hash =
+ asProp || config.mustUseProp(tag, type, key)
+ ? data.domProps || (data.domProps = {})
+ : data.attrs || (data.attrs = {});
+ }
+ var camelizedKey = camelize(key);
+ var hyphenatedKey = hyphenate(key);
+ if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) {
+ hash[key] = value[key];
+ if (isSync) {
+ var on = data.on || (data.on = {});
+ on["update:".concat(key)] = function ($event) {
+ value[key] = $event;
+ };
+ }
+ }
+ };
+ for (var key in value) {
+ _loop_1(key);
+ }
+ }
+ }
+ return data;
+ }
+
+ /**
+ * Runtime helper for rendering static trees.
+ */
+ function renderStatic(index, isInFor) {
+ var cached = this._staticTrees || (this._staticTrees = []);
+ var tree = cached[index];
+ // if has already-rendered static tree and not inside v-for,
+ // we can reuse the same tree.
+ if (tree && !isInFor) {
+ return tree;
+ }
+ // otherwise, render a fresh tree.
+ tree = cached[index] = this.$options.staticRenderFns[index].call(this._renderProxy, this._c, this // for render fns generated for functional component templates
+ );
+ markStatic$1(tree, "__static__".concat(index), false);
+ return tree;
+ }
+ /**
+ * Runtime helper for v-once.
+ * Effectively it means marking the node as static with a unique key.
+ */
+ function markOnce(tree, index, key) {
+ markStatic$1(tree, "__once__".concat(index).concat(key ? "_".concat(key) : ""), true);
+ return tree;
+ }
+ function markStatic$1(tree, key, isOnce) {
+ if (isArray(tree)) {
+ for (var i = 0; i < tree.length; i++) {
+ if (tree[i] && typeof tree[i] !== 'string') {
+ markStaticNode(tree[i], "".concat(key, "_").concat(i), isOnce);
+ }
+ }
+ }
+ else {
+ markStaticNode(tree, key, isOnce);
+ }
+ }
+ function markStaticNode(node, key, isOnce) {
+ node.isStatic = true;
+ node.key = key;
+ node.isOnce = isOnce;
+ }
+
+ function bindObjectListeners(data, value) {
+ if (value) {
+ if (!isPlainObject(value)) {
+ warn$2('v-on without argument expects an Object value', this);
+ }
+ else {
+ var on = (data.on = data.on ? extend({}, data.on) : {});
+ for (var key in value) {
+ var existing = on[key];
+ var ours = value[key];
+ on[key] = existing ? [].concat(existing, ours) : ours;
+ }
+ }
+ }
+ return data;
+ }
+
+ function resolveScopedSlots(fns, res,
+ // the following are added in 2.6
+ hasDynamicKeys, contentHashKey) {
+ res = res || { $stable: !hasDynamicKeys };
+ for (var i = 0; i < fns.length; i++) {
+ var slot = fns[i];
+ if (isArray(slot)) {
+ resolveScopedSlots(slot, res, hasDynamicKeys);
+ }
+ else if (slot) {
+ // marker for reverse proxying v-slot without scope on this.$slots
+ // @ts-expect-error
+ if (slot.proxy) {
+ // @ts-expect-error
+ slot.fn.proxy = true;
+ }
+ res[slot.key] = slot.fn;
+ }
+ }
+ if (contentHashKey) {
+ res.$key = contentHashKey;
+ }
+ return res;
+ }
+
+ // helper to process dynamic keys for dynamic arguments in v-bind and v-on.
+ function bindDynamicKeys(baseObj, values) {
+ for (var i = 0; i < values.length; i += 2) {
+ var key = values[i];
+ if (typeof key === 'string' && key) {
+ baseObj[values[i]] = values[i + 1];
+ }
+ else if (key !== '' && key !== null) {
+ // null is a special value for explicitly removing a binding
+ warn$2("Invalid value for dynamic directive argument (expected string or null): ".concat(key), this);
+ }
+ }
+ return baseObj;
+ }
+ // helper to dynamically append modifier runtime markers to event names.
+ // ensure only append when value is already string, otherwise it will be cast
+ // to string and cause the type check to miss.
+ function prependModifier(value, symbol) {
+ return typeof value === 'string' ? symbol + value : value;
+ }
+
+ function installRenderHelpers(target) {
+ target._o = markOnce;
+ target._n = toNumber;
+ target._s = toString;
+ target._l = renderList;
+ target._t = renderSlot;
+ target._q = looseEqual;
+ target._i = looseIndexOf;
+ target._m = renderStatic;
+ target._f = resolveFilter;
+ target._k = checkKeyCodes;
+ target._b = bindObjectProps;
+ target._v = createTextVNode;
+ target._e = createEmptyVNode;
+ target._u = resolveScopedSlots;
+ target._g = bindObjectListeners;
+ target._d = bindDynamicKeys;
+ target._p = prependModifier;
+ }
+
+ /**
+ * Runtime helper for resolving raw children VNodes into a slot object.
+ */
+ function resolveSlots(children, context) {
+ if (!children || !children.length) {
+ return {};
+ }
+ var slots = {};
+ for (var i = 0, l = children.length; i < l; i++) {
+ var child = children[i];
+ var data = child.data;
+ // remove slot attribute if the node is resolved as a Vue slot node
+ if (data && data.attrs && data.attrs.slot) {
+ delete data.attrs.slot;
+ }
+ // named slots should only be respected if the vnode was rendered in the
+ // same context.
+ if ((child.context === context || child.fnContext === context) &&
+ data &&
+ data.slot != null) {
+ var name_1 = data.slot;
+ var slot = slots[name_1] || (slots[name_1] = []);
+ if (child.tag === 'template') {
+ slot.push.apply(slot, child.children || []);
+ }
+ else {
+ slot.push(child);
+ }
+ }
+ else {
+ (slots.default || (slots.default = [])).push(child);
+ }
+ }
+ // ignore slots that contains only whitespace
+ for (var name_2 in slots) {
+ if (slots[name_2].every(isWhitespace)) {
+ delete slots[name_2];
+ }
+ }
+ return slots;
+ }
+ function isWhitespace(node) {
+ return (node.isComment && !node.asyncFactory) || node.text === ' ';
+ }
+
+ function isAsyncPlaceholder(node) {
+ // @ts-expect-error not really boolean type
+ return node.isComment && node.asyncFactory;
+ }
+
+ function normalizeScopedSlots(ownerVm, scopedSlots, normalSlots, prevScopedSlots) {
+ var res;
+ var hasNormalSlots = Object.keys(normalSlots).length > 0;
+ var isStable = scopedSlots ? !!scopedSlots.$stable : !hasNormalSlots;
+ var key = scopedSlots && scopedSlots.$key;
+ if (!scopedSlots) {
+ res = {};
+ }
+ else if (scopedSlots._normalized) {
+ // fast path 1: child component re-render only, parent did not change
+ return scopedSlots._normalized;
+ }
+ else if (isStable &&
+ prevScopedSlots &&
+ prevScopedSlots !== emptyObject &&
+ key === prevScopedSlots.$key &&
+ !hasNormalSlots &&
+ !prevScopedSlots.$hasNormal) {
+ // fast path 2: stable scoped slots w/ no normal slots to proxy,
+ // only need to normalize once
+ return prevScopedSlots;
+ }
+ else {
+ res = {};
+ for (var key_1 in scopedSlots) {
+ if (scopedSlots[key_1] && key_1[0] !== '$') {
+ res[key_1] = normalizeScopedSlot(ownerVm, normalSlots, key_1, scopedSlots[key_1]);
+ }
+ }
+ }
+ // expose normal slots on scopedSlots
+ for (var key_2 in normalSlots) {
+ if (!(key_2 in res)) {
+ res[key_2] = proxyNormalSlot(normalSlots, key_2);
+ }
+ }
+ // avoriaz seems to mock a non-extensible $scopedSlots object
+ // and when that is passed down this would cause an error
+ if (scopedSlots && Object.isExtensible(scopedSlots)) {
+ scopedSlots._normalized = res;
+ }
+ def(res, '$stable', isStable);
+ def(res, '$key', key);
+ def(res, '$hasNormal', hasNormalSlots);
+ return res;
+ }
+ function normalizeScopedSlot(vm, normalSlots, key, fn) {
+ var normalized = function () {
+ var cur = currentInstance;
+ setCurrentInstance(vm);
+ var res = arguments.length ? fn.apply(null, arguments) : fn({});
+ res =
+ res && typeof res === 'object' && !isArray(res)
+ ? [res] // single vnode
+ : normalizeChildren(res);
+ var vnode = res && res[0];
+ setCurrentInstance(cur);
+ return res &&
+ (!vnode ||
+ (res.length === 1 && vnode.isComment && !isAsyncPlaceholder(vnode))) // #9658, #10391
+ ? undefined
+ : res;
+ };
+ // this is a slot using the new v-slot syntax without scope. although it is
+ // compiled as a scoped slot, render fn users would expect it to be present
+ // on this.$slots because the usage is semantically a normal slot.
+ if (fn.proxy) {
+ Object.defineProperty(normalSlots, key, {
+ get: normalized,
+ enumerable: true,
+ configurable: true
+ });
+ }
+ return normalized;
+ }
+ function proxyNormalSlot(slots, key) {
+ return function () { return slots[key]; };
+ }
+
+ function initSetup(vm) {
+ var options = vm.$options;
+ var setup = options.setup;
+ if (setup) {
+ var ctx = (vm._setupContext = createSetupContext(vm));
+ setCurrentInstance(vm);
+ pushTarget();
+ var setupResult = invokeWithErrorHandling(setup, null, [vm._props || shallowReactive({}), ctx], vm, "setup");
+ popTarget();
+ setCurrentInstance();
+ if (isFunction(setupResult)) {
+ // render function
+ // @ts-ignore
+ options.render = setupResult;
+ }
+ else if (isObject(setupResult)) {
+ // bindings
+ if (setupResult instanceof VNode) {
+ warn$2("setup() should not return VNodes directly - " +
+ "return a render function instead.");
+ }
+ vm._setupState = setupResult;
+ // __sfc indicates compiled bindings from
-
+
diff --git a/advancedcontentfilter/vendor/autoload.php b/advancedcontentfilter/vendor/autoload.php
index 3e6193fa..2d273a02 100644
--- a/advancedcontentfilter/vendor/autoload.php
+++ b/advancedcontentfilter/vendor/autoload.php
@@ -2,6 +2,24 @@
// autoload.php @generated by Composer
+if (PHP_VERSION_ID < 50600) {
+ if (!headers_sent()) {
+ header('HTTP/1.1 500 Internal Server Error');
+ }
+ $err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
+ if (!ini_get('display_errors')) {
+ if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
+ fwrite(STDERR, $err);
+ } elseif (!headers_sent()) {
+ echo $err;
+ }
+ }
+ trigger_error(
+ $err,
+ E_USER_ERROR
+ );
+}
+
require_once __DIR__ . '/composer/autoload_real.php';
return ComposerAutoloaderInitAdvancedContentFilterAddon::getLoader();
diff --git a/advancedcontentfilter/vendor/composer/ClassLoader.php b/advancedcontentfilter/vendor/composer/ClassLoader.php
index dc02dfb1..7824d8f7 100644
--- a/advancedcontentfilter/vendor/composer/ClassLoader.php
+++ b/advancedcontentfilter/vendor/composer/ClassLoader.php
@@ -37,57 +37,126 @@ namespace Composer\Autoload;
*
* @author Fabien Potencier
* @author Jordi Boggiano
- * @see http://www.php-fig.org/psr/psr-0/
- * @see http://www.php-fig.org/psr/psr-4/
+ * @see https://www.php-fig.org/psr/psr-0/
+ * @see https://www.php-fig.org/psr/psr-4/
*/
class ClassLoader
{
+ /** @var \Closure(string):void */
+ private static $includeFile;
+
+ /** @var string|null */
+ private $vendorDir;
+
// PSR-4
+ /**
+ * @var array>
+ */
private $prefixLengthsPsr4 = array();
+ /**
+ * @var array>
+ */
private $prefixDirsPsr4 = array();
+ /**
+ * @var list
+ */
private $fallbackDirsPsr4 = array();
// PSR-0
+ /**
+ * List of PSR-0 prefixes
+ *
+ * Structured as array('F (first letter)' => array('Foo\Bar (full prefix)' => array('path', 'path2')))
+ *
+ * @var array>>
+ */
private $prefixesPsr0 = array();
+ /**
+ * @var list
+ */
private $fallbackDirsPsr0 = array();
+ /** @var bool */
private $useIncludePath = false;
+
+ /**
+ * @var array
+ */
private $classMap = array();
+
+ /** @var bool */
private $classMapAuthoritative = false;
+
+ /**
+ * @var array
+ */
private $missingClasses = array();
+
+ /** @var string|null */
private $apcuPrefix;
+ /**
+ * @var array
+ */
+ private static $registeredLoaders = array();
+
+ /**
+ * @param string|null $vendorDir
+ */
+ public function __construct($vendorDir = null)
+ {
+ $this->vendorDir = $vendorDir;
+ self::initializeIncludeClosure();
+ }
+
+ /**
+ * @return array>
+ */
public function getPrefixes()
{
if (!empty($this->prefixesPsr0)) {
- return call_user_func_array('array_merge', $this->prefixesPsr0);
+ return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
}
return array();
}
+ /**
+ * @return array>
+ */
public function getPrefixesPsr4()
{
return $this->prefixDirsPsr4;
}
+ /**
+ * @return list
+ */
public function getFallbackDirs()
{
return $this->fallbackDirsPsr0;
}
+ /**
+ * @return list
+ */
public function getFallbackDirsPsr4()
{
return $this->fallbackDirsPsr4;
}
+ /**
+ * @return array Array of classname => path
+ */
public function getClassMap()
{
return $this->classMap;
}
/**
- * @param array $classMap Class to filename map
+ * @param array $classMap Class to filename map
+ *
+ * @return void
*/
public function addClassMap(array $classMap)
{
@@ -102,22 +171,25 @@ class ClassLoader
* Registers a set of PSR-0 directories for a given prefix, either
* appending or prepending to the ones previously set for this prefix.
*
- * @param string $prefix The prefix
- * @param array|string $paths The PSR-0 root directories
- * @param bool $prepend Whether to prepend the directories
+ * @param string $prefix The prefix
+ * @param list|string $paths The PSR-0 root directories
+ * @param bool $prepend Whether to prepend the directories
+ *
+ * @return void
*/
public function add($prefix, $paths, $prepend = false)
{
+ $paths = (array) $paths;
if (!$prefix) {
if ($prepend) {
$this->fallbackDirsPsr0 = array_merge(
- (array) $paths,
+ $paths,
$this->fallbackDirsPsr0
);
} else {
$this->fallbackDirsPsr0 = array_merge(
$this->fallbackDirsPsr0,
- (array) $paths
+ $paths
);
}
@@ -126,19 +198,19 @@ class ClassLoader
$first = $prefix[0];
if (!isset($this->prefixesPsr0[$first][$prefix])) {
- $this->prefixesPsr0[$first][$prefix] = (array) $paths;
+ $this->prefixesPsr0[$first][$prefix] = $paths;
return;
}
if ($prepend) {
$this->prefixesPsr0[$first][$prefix] = array_merge(
- (array) $paths,
+ $paths,
$this->prefixesPsr0[$first][$prefix]
);
} else {
$this->prefixesPsr0[$first][$prefix] = array_merge(
$this->prefixesPsr0[$first][$prefix],
- (array) $paths
+ $paths
);
}
}
@@ -147,25 +219,28 @@ class ClassLoader
* Registers a set of PSR-4 directories for a given namespace, either
* appending or prepending to the ones previously set for this namespace.
*
- * @param string $prefix The prefix/namespace, with trailing '\\'
- * @param array|string $paths The PSR-4 base directories
- * @param bool $prepend Whether to prepend the directories
+ * @param string $prefix The prefix/namespace, with trailing '\\'
+ * @param list|string $paths The PSR-4 base directories
+ * @param bool $prepend Whether to prepend the directories
*
* @throws \InvalidArgumentException
+ *
+ * @return void
*/
public function addPsr4($prefix, $paths, $prepend = false)
{
+ $paths = (array) $paths;
if (!$prefix) {
// Register directories for the root namespace.
if ($prepend) {
$this->fallbackDirsPsr4 = array_merge(
- (array) $paths,
+ $paths,
$this->fallbackDirsPsr4
);
} else {
$this->fallbackDirsPsr4 = array_merge(
$this->fallbackDirsPsr4,
- (array) $paths
+ $paths
);
}
} elseif (!isset($this->prefixDirsPsr4[$prefix])) {
@@ -175,18 +250,18 @@ class ClassLoader
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
}
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
- $this->prefixDirsPsr4[$prefix] = (array) $paths;
+ $this->prefixDirsPsr4[$prefix] = $paths;
} elseif ($prepend) {
// Prepend directories for an already registered namespace.
$this->prefixDirsPsr4[$prefix] = array_merge(
- (array) $paths,
+ $paths,
$this->prefixDirsPsr4[$prefix]
);
} else {
// Append directories for an already registered namespace.
$this->prefixDirsPsr4[$prefix] = array_merge(
$this->prefixDirsPsr4[$prefix],
- (array) $paths
+ $paths
);
}
}
@@ -195,8 +270,10 @@ class ClassLoader
* Registers a set of PSR-0 directories for a given prefix,
* replacing any others previously set for this prefix.
*
- * @param string $prefix The prefix
- * @param array|string $paths The PSR-0 base directories
+ * @param string $prefix The prefix
+ * @param list|string $paths The PSR-0 base directories
+ *
+ * @return void
*/
public function set($prefix, $paths)
{
@@ -211,10 +288,12 @@ class ClassLoader
* Registers a set of PSR-4 directories for a given namespace,
* replacing any others previously set for this namespace.
*
- * @param string $prefix The prefix/namespace, with trailing '\\'
- * @param array|string $paths The PSR-4 base directories
+ * @param string $prefix The prefix/namespace, with trailing '\\'
+ * @param list|string $paths The PSR-4 base directories
*
* @throws \InvalidArgumentException
+ *
+ * @return void
*/
public function setPsr4($prefix, $paths)
{
@@ -234,6 +313,8 @@ class ClassLoader
* Turns on searching the include path for class files.
*
* @param bool $useIncludePath
+ *
+ * @return void
*/
public function setUseIncludePath($useIncludePath)
{
@@ -256,6 +337,8 @@ class ClassLoader
* that have not been registered with the class map.
*
* @param bool $classMapAuthoritative
+ *
+ * @return void
*/
public function setClassMapAuthoritative($classMapAuthoritative)
{
@@ -276,10 +359,12 @@ class ClassLoader
* APCu prefix to use to cache found/not-found classes, if the extension is enabled.
*
* @param string|null $apcuPrefix
+ *
+ * @return void
*/
public function setApcuPrefix($apcuPrefix)
{
- $this->apcuPrefix = function_exists('apcu_fetch') && ini_get('apc.enabled') ? $apcuPrefix : null;
+ $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
}
/**
@@ -296,33 +381,55 @@ class ClassLoader
* Registers this instance as an autoloader.
*
* @param bool $prepend Whether to prepend the autoloader or not
+ *
+ * @return void
*/
public function register($prepend = false)
{
spl_autoload_register(array($this, 'loadClass'), true, $prepend);
+
+ if (null === $this->vendorDir) {
+ return;
+ }
+
+ if ($prepend) {
+ self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders;
+ } else {
+ unset(self::$registeredLoaders[$this->vendorDir]);
+ self::$registeredLoaders[$this->vendorDir] = $this;
+ }
}
/**
* Unregisters this instance as an autoloader.
+ *
+ * @return void
*/
public function unregister()
{
spl_autoload_unregister(array($this, 'loadClass'));
+
+ if (null !== $this->vendorDir) {
+ unset(self::$registeredLoaders[$this->vendorDir]);
+ }
}
/**
* Loads the given class or interface.
*
* @param string $class The name of the class
- * @return bool|null True if loaded, null otherwise
+ * @return true|null True if loaded, null otherwise
*/
public function loadClass($class)
{
if ($file = $this->findFile($class)) {
- includeFile($file);
+ $includeFile = self::$includeFile;
+ $includeFile($file);
return true;
}
+
+ return null;
}
/**
@@ -367,6 +474,21 @@ class ClassLoader
return $file;
}
+ /**
+ * Returns the currently registered loaders keyed by their corresponding vendor directories.
+ *
+ * @return array
+ */
+ public static function getRegisteredLoaders()
+ {
+ return self::$registeredLoaders;
+ }
+
+ /**
+ * @param string $class
+ * @param string $ext
+ * @return string|false
+ */
private function findFileWithExtension($class, $ext)
{
// PSR-4 lookup
@@ -377,7 +499,7 @@ class ClassLoader
$subPath = $class;
while (false !== $lastPos = strrpos($subPath, '\\')) {
$subPath = substr($subPath, 0, $lastPos);
- $search = $subPath.'\\';
+ $search = $subPath . '\\';
if (isset($this->prefixDirsPsr4[$search])) {
$pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
foreach ($this->prefixDirsPsr4[$search] as $dir) {
@@ -432,14 +554,26 @@ class ClassLoader
return false;
}
-}
-/**
- * Scope isolated include.
- *
- * Prevents access to $this/self from included files.
- */
-function includeFile($file)
-{
- include $file;
+ /**
+ * @return void
+ */
+ private static function initializeIncludeClosure()
+ {
+ if (self::$includeFile !== null) {
+ return;
+ }
+
+ /**
+ * Scope isolated include.
+ *
+ * Prevents access to $this/self from included files.
+ *
+ * @param string $file
+ * @return void
+ */
+ self::$includeFile = \Closure::bind(static function($file) {
+ include $file;
+ }, null, null);
+ }
}
diff --git a/advancedcontentfilter/vendor/composer/InstalledVersions.php b/advancedcontentfilter/vendor/composer/InstalledVersions.php
new file mode 100644
index 00000000..51e734a7
--- /dev/null
+++ b/advancedcontentfilter/vendor/composer/InstalledVersions.php
@@ -0,0 +1,359 @@
+
+ * Jordi Boggiano
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Composer;
+
+use Composer\Autoload\ClassLoader;
+use Composer\Semver\VersionParser;
+
+/**
+ * This class is copied in every Composer installed project and available to all
+ *
+ * See also https://getcomposer.org/doc/07-runtime.md#installed-versions
+ *
+ * To require its presence, you can require `composer-runtime-api ^2.0`
+ *
+ * @final
+ */
+class InstalledVersions
+{
+ /**
+ * @var mixed[]|null
+ * @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array}|array{}|null
+ */
+ private static $installed;
+
+ /**
+ * @var bool|null
+ */
+ private static $canGetVendors;
+
+ /**
+ * @var array[]
+ * @psalm-var array}>
+ */
+ private static $installedByVendor = array();
+
+ /**
+ * Returns a list of all package names which are present, either by being installed, replaced or provided
+ *
+ * @return string[]
+ * @psalm-return list
+ */
+ public static function getInstalledPackages()
+ {
+ $packages = array();
+ foreach (self::getInstalled() as $installed) {
+ $packages[] = array_keys($installed['versions']);
+ }
+
+ if (1 === \count($packages)) {
+ return $packages[0];
+ }
+
+ return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
+ }
+
+ /**
+ * Returns a list of all package names with a specific type e.g. 'library'
+ *
+ * @param string $type
+ * @return string[]
+ * @psalm-return list
+ */
+ public static function getInstalledPackagesByType($type)
+ {
+ $packagesByType = array();
+
+ foreach (self::getInstalled() as $installed) {
+ foreach ($installed['versions'] as $name => $package) {
+ if (isset($package['type']) && $package['type'] === $type) {
+ $packagesByType[] = $name;
+ }
+ }
+ }
+
+ return $packagesByType;
+ }
+
+ /**
+ * Checks whether the given package is installed
+ *
+ * This also returns true if the package name is provided or replaced by another package
+ *
+ * @param string $packageName
+ * @param bool $includeDevRequirements
+ * @return bool
+ */
+ public static function isInstalled($packageName, $includeDevRequirements = true)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (isset($installed['versions'][$packageName])) {
+ return $includeDevRequirements || !isset($installed['versions'][$packageName]['dev_requirement']) || $installed['versions'][$packageName]['dev_requirement'] === false;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Checks whether the given package satisfies a version constraint
+ *
+ * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call:
+ *
+ * Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3')
+ *
+ * @param VersionParser $parser Install composer/semver to have access to this class and functionality
+ * @param string $packageName
+ * @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package
+ * @return bool
+ */
+ public static function satisfies(VersionParser $parser, $packageName, $constraint)
+ {
+ $constraint = $parser->parseConstraints((string) $constraint);
+ $provided = $parser->parseConstraints(self::getVersionRanges($packageName));
+
+ return $provided->matches($constraint);
+ }
+
+ /**
+ * Returns a version constraint representing all the range(s) which are installed for a given package
+ *
+ * It is easier to use this via isInstalled() with the $constraint argument if you need to check
+ * whether a given version of a package is installed, and not just whether it exists
+ *
+ * @param string $packageName
+ * @return string Version constraint usable with composer/semver
+ */
+ public static function getVersionRanges($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ $ranges = array();
+ if (isset($installed['versions'][$packageName]['pretty_version'])) {
+ $ranges[] = $installed['versions'][$packageName]['pretty_version'];
+ }
+ if (array_key_exists('aliases', $installed['versions'][$packageName])) {
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
+ }
+ if (array_key_exists('replaced', $installed['versions'][$packageName])) {
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
+ }
+ if (array_key_exists('provided', $installed['versions'][$packageName])) {
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
+ }
+
+ return implode(' || ', $ranges);
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @param string $packageName
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
+ */
+ public static function getVersion($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ if (!isset($installed['versions'][$packageName]['version'])) {
+ return null;
+ }
+
+ return $installed['versions'][$packageName]['version'];
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @param string $packageName
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
+ */
+ public static function getPrettyVersion($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ if (!isset($installed['versions'][$packageName]['pretty_version'])) {
+ return null;
+ }
+
+ return $installed['versions'][$packageName]['pretty_version'];
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @param string $packageName
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference
+ */
+ public static function getReference($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ if (!isset($installed['versions'][$packageName]['reference'])) {
+ return null;
+ }
+
+ return $installed['versions'][$packageName]['reference'];
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @param string $packageName
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path.
+ */
+ public static function getInstallPath($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null;
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @return array
+ * @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}
+ */
+ public static function getRootPackage()
+ {
+ $installed = self::getInstalled();
+
+ return $installed[0]['root'];
+ }
+
+ /**
+ * Returns the raw installed.php data for custom implementations
+ *
+ * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
+ * @return array[]
+ * @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array}
+ */
+ public static function getRawData()
+ {
+ @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED);
+
+ if (null === self::$installed) {
+ // only require the installed.php file if this file is loaded from its dumped location,
+ // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
+ if (substr(__DIR__, -8, 1) !== 'C') {
+ self::$installed = include __DIR__ . '/installed.php';
+ } else {
+ self::$installed = array();
+ }
+ }
+
+ return self::$installed;
+ }
+
+ /**
+ * Returns the raw data of all installed.php which are currently loaded for custom implementations
+ *
+ * @return array[]
+ * @psalm-return list}>
+ */
+ public static function getAllRawData()
+ {
+ return self::getInstalled();
+ }
+
+ /**
+ * Lets you reload the static array from another file
+ *
+ * This is only useful for complex integrations in which a project needs to use
+ * this class but then also needs to execute another project's autoloader in process,
+ * and wants to ensure both projects have access to their version of installed.php.
+ *
+ * A typical case would be PHPUnit, where it would need to make sure it reads all
+ * the data it needs from this class, then call reload() with
+ * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure
+ * the project in which it runs can then also use this class safely, without
+ * interference between PHPUnit's dependencies and the project's dependencies.
+ *
+ * @param array[] $data A vendor/composer/installed.php data set
+ * @return void
+ *
+ * @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $data
+ */
+ public static function reload($data)
+ {
+ self::$installed = $data;
+ self::$installedByVendor = array();
+ }
+
+ /**
+ * @return array[]
+ * @psalm-return list}>
+ */
+ private static function getInstalled()
+ {
+ if (null === self::$canGetVendors) {
+ self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
+ }
+
+ $installed = array();
+
+ if (self::$canGetVendors) {
+ foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
+ if (isset(self::$installedByVendor[$vendorDir])) {
+ $installed[] = self::$installedByVendor[$vendorDir];
+ } elseif (is_file($vendorDir.'/composer/installed.php')) {
+ /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $required */
+ $required = require $vendorDir.'/composer/installed.php';
+ $installed[] = self::$installedByVendor[$vendorDir] = $required;
+ if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
+ self::$installed = $installed[count($installed) - 1];
+ }
+ }
+ }
+ }
+
+ if (null === self::$installed) {
+ // only require the installed.php file if this file is loaded from its dumped location,
+ // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
+ if (substr(__DIR__, -8, 1) !== 'C') {
+ /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $required */
+ $required = require __DIR__ . '/installed.php';
+ self::$installed = $required;
+ } else {
+ self::$installed = array();
+ }
+ }
+
+ if (self::$installed !== array()) {
+ $installed[] = self::$installed;
+ }
+
+ return $installed;
+ }
+}
diff --git a/advancedcontentfilter/vendor/composer/autoload_classmap.php b/advancedcontentfilter/vendor/composer/autoload_classmap.php
index 4f884be1..fe2a622a 100644
--- a/advancedcontentfilter/vendor/composer/autoload_classmap.php
+++ b/advancedcontentfilter/vendor/composer/autoload_classmap.php
@@ -2,10 +2,12 @@
// autoload_classmap.php @generated by Composer
-$vendorDir = dirname(dirname(__FILE__));
+$vendorDir = dirname(__DIR__);
$baseDir = dirname($vendorDir);
return array(
+ 'Attribute' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Attribute.php',
+ 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
'FastRoute\\BadRouteException' => $vendorDir . '/nikic/fast-route/src/BadRouteException.php',
'FastRoute\\DataGenerator' => $vendorDir . '/nikic/fast-route/src/DataGenerator.php',
'FastRoute\\DataGenerator\\CharCountBased' => $vendorDir . '/nikic/fast-route/src/DataGenerator/CharCountBased.php',
@@ -23,27 +25,8 @@ return array(
'FastRoute\\RouteCollector' => $vendorDir . '/nikic/fast-route/src/RouteCollector.php',
'FastRoute\\RouteParser' => $vendorDir . '/nikic/fast-route/src/RouteParser.php',
'FastRoute\\RouteParser\\Std' => $vendorDir . '/nikic/fast-route/src/RouteParser/Std.php',
- 'Interop\\Container\\ContainerInterface' => $vendorDir . '/container-interop/container-interop/src/Interop/Container/ContainerInterface.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',
+ 'JsonException' => $vendorDir . '/symfony/polyfill-php73/Resources/stubs/JsonException.php',
+ 'PhpToken' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php',
'Psr\\Cache\\CacheException' => $vendorDir . '/psr/cache/src/CacheException.php',
'Psr\\Cache\\CacheItemInterface' => $vendorDir . '/psr/cache/src/CacheItemInterface.php',
'Psr\\Cache\\CacheItemPoolInterface' => $vendorDir . '/psr/cache/src/CacheItemPoolInterface.php',
@@ -52,12 +35,20 @@ return array(
'Psr\\Container\\ContainerInterface' => $vendorDir . '/psr/container/src/ContainerInterface.php',
'Psr\\Container\\NotFoundExceptionInterface' => $vendorDir . '/psr/container/src/NotFoundExceptionInterface.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\\ResponseFactoryInterface' => $vendorDir . '/psr/http-factory/src/ResponseFactoryInterface.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\\StreamFactoryInterface' => $vendorDir . '/psr/http-factory/src/StreamFactoryInterface.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\\UriFactoryInterface' => $vendorDir . '/psr/http-factory/src/UriFactoryInterface.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\\InvalidArgumentException' => $vendorDir . '/psr/log/Psr/Log/InvalidArgumentException.php',
'Psr\\Log\\LogLevel' => $vendorDir . '/psr/log/Psr/Log/LogLevel.php',
@@ -66,83 +57,122 @@ return array(
'Psr\\Log\\LoggerInterface' => $vendorDir . '/psr/log/Psr/Log/LoggerInterface.php',
'Psr\\Log\\LoggerTrait' => $vendorDir . '/psr/log/Psr/Log/LoggerTrait.php',
'Psr\\Log\\NullLogger' => $vendorDir . '/psr/log/Psr/Log/NullLogger.php',
- 'Psr\\Log\\Test\\DummyTest' => $vendorDir . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php',
+ 'Psr\\Log\\Test\\DummyTest' => $vendorDir . '/psr/log/Psr/Log/Test/DummyTest.php',
'Psr\\Log\\Test\\LoggerInterfaceTest' => $vendorDir . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.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',
+ 'Psr\\Log\\Test\\TestLogger' => $vendorDir . '/psr/log/Psr/Log/Test/TestLogger.php',
'Slim\\App' => $vendorDir . '/slim/slim/Slim/App.php',
'Slim\\CallableResolver' => $vendorDir . '/slim/slim/Slim/CallableResolver.php',
- 'Slim\\CallableResolverAwareTrait' => $vendorDir . '/slim/slim/Slim/CallableResolverAwareTrait.php',
- 'Slim\\Collection' => $vendorDir . '/slim/slim/Slim/Collection.php',
- 'Slim\\Container' => $vendorDir . '/slim/slim/Slim/Container.php',
- 'Slim\\DefaultServicesProvider' => $vendorDir . '/slim/slim/Slim/DefaultServicesProvider.php',
- 'Slim\\DeferredCallable' => $vendorDir . '/slim/slim/Slim/DeferredCallable.php',
- 'Slim\\Exception\\ContainerException' => $vendorDir . '/slim/slim/Slim/Exception/ContainerException.php',
- 'Slim\\Exception\\ContainerValueNotFoundException' => $vendorDir . '/slim/slim/Slim/Exception/ContainerValueNotFoundException.php',
- 'Slim\\Exception\\InvalidMethodException' => $vendorDir . '/slim/slim/Slim/Exception/InvalidMethodException.php',
- 'Slim\\Exception\\MethodNotAllowedException' => $vendorDir . '/slim/slim/Slim/Exception/MethodNotAllowedException.php',
- 'Slim\\Exception\\NotFoundException' => $vendorDir . '/slim/slim/Slim/Exception/NotFoundException.php',
- 'Slim\\Exception\\SlimException' => $vendorDir . '/slim/slim/Slim/Exception/SlimException.php',
- 'Slim\\Handlers\\AbstractError' => $vendorDir . '/slim/slim/Slim/Handlers/AbstractError.php',
- 'Slim\\Handlers\\AbstractHandler' => $vendorDir . '/slim/slim/Slim/Handlers/AbstractHandler.php',
- 'Slim\\Handlers\\Error' => $vendorDir . '/slim/slim/Slim/Handlers/Error.php',
- 'Slim\\Handlers\\NotAllowed' => $vendorDir . '/slim/slim/Slim/Handlers/NotAllowed.php',
- 'Slim\\Handlers\\NotFound' => $vendorDir . '/slim/slim/Slim/Handlers/NotFound.php',
- 'Slim\\Handlers\\PhpError' => $vendorDir . '/slim/slim/Slim/Handlers/PhpError.php',
+ 'Slim\\Error\\AbstractErrorRenderer' => $vendorDir . '/slim/slim/Slim/Error/AbstractErrorRenderer.php',
+ 'Slim\\Error\\Renderers\\HtmlErrorRenderer' => $vendorDir . '/slim/slim/Slim/Error/Renderers/HtmlErrorRenderer.php',
+ 'Slim\\Error\\Renderers\\JsonErrorRenderer' => $vendorDir . '/slim/slim/Slim/Error/Renderers/JsonErrorRenderer.php',
+ 'Slim\\Error\\Renderers\\PlainTextErrorRenderer' => $vendorDir . '/slim/slim/Slim/Error/Renderers/PlainTextErrorRenderer.php',
+ 'Slim\\Error\\Renderers\\XmlErrorRenderer' => $vendorDir . '/slim/slim/Slim/Error/Renderers/XmlErrorRenderer.php',
+ 'Slim\\Exception\\HttpBadRequestException' => $vendorDir . '/slim/slim/Slim/Exception/HttpBadRequestException.php',
+ 'Slim\\Exception\\HttpException' => $vendorDir . '/slim/slim/Slim/Exception/HttpException.php',
+ 'Slim\\Exception\\HttpForbiddenException' => $vendorDir . '/slim/slim/Slim/Exception/HttpForbiddenException.php',
+ 'Slim\\Exception\\HttpGoneException' => $vendorDir . '/slim/slim/Slim/Exception/HttpGoneException.php',
+ 'Slim\\Exception\\HttpInternalServerErrorException' => $vendorDir . '/slim/slim/Slim/Exception/HttpInternalServerErrorException.php',
+ 'Slim\\Exception\\HttpMethodNotAllowedException' => $vendorDir . '/slim/slim/Slim/Exception/HttpMethodNotAllowedException.php',
+ 'Slim\\Exception\\HttpNotFoundException' => $vendorDir . '/slim/slim/Slim/Exception/HttpNotFoundException.php',
+ 'Slim\\Exception\\HttpNotImplementedException' => $vendorDir . '/slim/slim/Slim/Exception/HttpNotImplementedException.php',
+ 'Slim\\Exception\\HttpSpecializedException' => $vendorDir . '/slim/slim/Slim/Exception/HttpSpecializedException.php',
+ 'Slim\\Exception\\HttpTooManyRequestsException' => $vendorDir . '/slim/slim/Slim/Exception/HttpTooManyRequestsException.php',
+ 'Slim\\Exception\\HttpUnauthorizedException' => $vendorDir . '/slim/slim/Slim/Exception/HttpUnauthorizedException.php',
+ 'Slim\\Factory\\AppFactory' => $vendorDir . '/slim/slim/Slim/Factory/AppFactory.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\\RequestResponseArgs' => $vendorDir . '/slim/slim/Slim/Handlers/Strategies/RequestResponseArgs.php',
- 'Slim\\Http\\Body' => $vendorDir . '/slim/slim/Slim/Http/Body.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\\Handlers\\Strategies\\RequestResponseNamedArgs' => $vendorDir . '/slim/slim/Slim/Handlers/Strategies/RequestResponseNamedArgs.php',
+ 'Slim\\Interfaces\\AdvancedCallableResolverInterface' => $vendorDir . '/slim/slim/Slim/Interfaces/AdvancedCallableResolverInterface.php',
'Slim\\Interfaces\\CallableResolverInterface' => $vendorDir . '/slim/slim/Slim/Interfaces/CallableResolverInterface.php',
- 'Slim\\Interfaces\\CollectionInterface' => $vendorDir . '/slim/slim/Slim/Interfaces/CollectionInterface.php',
- 'Slim\\Interfaces\\Http\\CookiesInterface' => $vendorDir . '/slim/slim/Slim/Interfaces/Http/CookiesInterface.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\\DispatcherInterface' => $vendorDir . '/slim/slim/Slim/Interfaces/DispatcherInterface.php',
+ 'Slim\\Interfaces\\ErrorHandlerInterface' => $vendorDir . '/slim/slim/Slim/Interfaces/ErrorHandlerInterface.php',
+ 'Slim\\Interfaces\\ErrorRendererInterface' => $vendorDir . '/slim/slim/Slim/Interfaces/ErrorRendererInterface.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\\RouteInterface' => $vendorDir . '/slim/slim/Slim/Interfaces/RouteInterface.php',
- 'Slim\\Interfaces\\RouterInterface' => $vendorDir . '/slim/slim/Slim/Interfaces/RouterInterface.php',
- 'Slim\\MiddlewareAwareTrait' => $vendorDir . '/slim/slim/Slim/MiddlewareAwareTrait.php',
- 'Slim\\Routable' => $vendorDir . '/slim/slim/Slim/Routable.php',
- 'Slim\\Route' => $vendorDir . '/slim/slim/Slim/Route.php',
- 'Slim\\RouteGroup' => $vendorDir . '/slim/slim/Slim/RouteGroup.php',
- 'Slim\\Router' => $vendorDir . '/slim/slim/Slim/Router.php',
+ 'Slim\\Interfaces\\RouteParserInterface' => $vendorDir . '/slim/slim/Slim/Interfaces/RouteParserInterface.php',
+ 'Slim\\Interfaces\\RouteResolverInterface' => $vendorDir . '/slim/slim/Slim/Interfaces/RouteResolverInterface.php',
+ 'Slim\\Interfaces\\ServerRequestCreatorInterface' => $vendorDir . '/slim/slim/Slim/Interfaces/ServerRequestCreatorInterface.php',
+ 'Slim\\Logger' => $vendorDir . '/slim/slim/Slim/Logger.php',
+ 'Slim\\MiddlewareDispatcher' => $vendorDir . '/slim/slim/Slim/MiddlewareDispatcher.php',
+ 'Slim\\Middleware\\BodyParsingMiddleware' => $vendorDir . '/slim/slim/Slim/Middleware/BodyParsingMiddleware.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\\AbstractTagAwareAdapter' => $vendorDir . '/symfony/cache/Adapter/AbstractTagAwareAdapter.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\\ArrayAdapter' => $vendorDir . '/symfony/cache/Adapter/ArrayAdapter.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\\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\\NullAdapter' => $vendorDir . '/symfony/cache/Adapter/NullAdapter.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\\PhpFilesAdapter' => $vendorDir . '/symfony/cache/Adapter/PhpFilesAdapter.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\\RedisTagAwareAdapter' => $vendorDir . '/symfony/cache/Adapter/RedisTagAwareAdapter.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\\TagAwareAdapterInterface' => $vendorDir . '/symfony/cache/Adapter/TagAwareAdapterInterface.php',
'Symfony\\Component\\Cache\\Adapter\\TraceableAdapter' => $vendorDir . '/symfony/cache/Adapter/TraceableAdapter.php',
- 'Symfony\\Component\\Cache\\Adapter\\TraceableAdapterEvent' => $vendorDir . '/symfony/cache/Adapter/TraceableAdapter.php',
'Symfony\\Component\\Cache\\Adapter\\TraceableTagAwareAdapter' => $vendorDir . '/symfony/cache/Adapter/TraceableTagAwareAdapter.php',
'Symfony\\Component\\Cache\\CacheItem' => $vendorDir . '/symfony/cache/CacheItem.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\\Exception\\CacheException' => $vendorDir . '/symfony/cache/Exception/CacheException.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\\Psr16Cache' => $vendorDir . '/symfony/cache/Psr16Cache.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\\ApcuCache' => $vendorDir . '/symfony/cache/Simple/ApcuCache.php',
@@ -158,10 +188,11 @@ return array(
'Symfony\\Component\\Cache\\Simple\\Psr6Cache' => $vendorDir . '/symfony/cache/Simple/Psr6Cache.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\\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\\ApcuTrait' => $vendorDir . '/symfony/cache/Traits/ApcuTrait.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\\FilesystemCommonTrait' => $vendorDir . '/symfony/cache/Traits/FilesystemCommonTrait.php',
'Symfony\\Component\\Cache\\Traits\\FilesystemTrait' => $vendorDir . '/symfony/cache/Traits/FilesystemTrait.php',
@@ -170,6 +201,8 @@ return array(
'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\\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\\RedisTrait' => $vendorDir . '/symfony/cache/Traits/RedisTrait.php',
'Symfony\\Component\\ExpressionLanguage\\Compiler' => $vendorDir . '/symfony/expression-language/Compiler.php',
@@ -197,5 +230,32 @@ return array(
'Symfony\\Component\\ExpressionLanguage\\SyntaxError' => $vendorDir . '/symfony/expression-language/SyntaxError.php',
'Symfony\\Component\\ExpressionLanguage\\Token' => $vendorDir . '/symfony/expression-language/Token.php',
'Symfony\\Component\\ExpressionLanguage\\TokenStream' => $vendorDir . '/symfony/expression-language/TokenStream.php',
- 'Symfony\\Polyfill\\Apcu\\Apcu' => $vendorDir . '/symfony/polyfill-apcu/Apcu.php',
+ 'Symfony\\Component\\VarExporter\\Exception\\ClassNotFoundException' => $vendorDir . '/symfony/var-exporter/Exception/ClassNotFoundException.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',
);
diff --git a/advancedcontentfilter/vendor/composer/autoload_files.php b/advancedcontentfilter/vendor/composer/autoload_files.php
index a6b8b352..aafd69e1 100644
--- a/advancedcontentfilter/vendor/composer/autoload_files.php
+++ b/advancedcontentfilter/vendor/composer/autoload_files.php
@@ -2,10 +2,12 @@
// autoload_files.php @generated by Composer
-$vendorDir = dirname(dirname(__FILE__));
+$vendorDir = dirname(__DIR__);
$baseDir = dirname($vendorDir);
return array(
- '32dcc8afd4335739640db7d200c1971d' => $vendorDir . '/symfony/polyfill-apcu/bootstrap.php',
+ 'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php',
+ '6e3fae29631ef280660b3cdad06f25a8' => $vendorDir . '/symfony/deprecation-contracts/function.php',
+ '0d59ee240a4cd96ddbb4ff164fccea4d' => $vendorDir . '/symfony/polyfill-php73/bootstrap.php',
'253c157292f75eb38082b5acb06f3f01' => $vendorDir . '/nikic/fast-route/src/functions.php',
);
diff --git a/advancedcontentfilter/vendor/composer/autoload_namespaces.php b/advancedcontentfilter/vendor/composer/autoload_namespaces.php
index c3cd0229..15a2ff3a 100644
--- a/advancedcontentfilter/vendor/composer/autoload_namespaces.php
+++ b/advancedcontentfilter/vendor/composer/autoload_namespaces.php
@@ -2,9 +2,8 @@
// autoload_namespaces.php @generated by Composer
-$vendorDir = dirname(dirname(__FILE__));
+$vendorDir = dirname(__DIR__);
$baseDir = dirname($vendorDir);
return array(
- 'Pimple' => array($vendorDir . '/pimple/pimple/src'),
);
diff --git a/advancedcontentfilter/vendor/composer/autoload_psr4.php b/advancedcontentfilter/vendor/composer/autoload_psr4.php
index f466cc18..4bf247ce 100644
--- a/advancedcontentfilter/vendor/composer/autoload_psr4.php
+++ b/advancedcontentfilter/vendor/composer/autoload_psr4.php
@@ -2,19 +2,22 @@
// autoload_psr4.php @generated by Composer
-$vendorDir = dirname(dirname(__FILE__));
+$vendorDir = dirname(__DIR__);
$baseDir = dirname($vendorDir);
return array(
- 'Symfony\\Polyfill\\Apcu\\' => array($vendorDir . '/symfony/polyfill-apcu'),
+ 'Symfony\\Polyfill\\Php80\\' => array($vendorDir . '/symfony/polyfill-php80'),
+ '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\\Cache\\' => array($vendorDir . '/symfony/cache'),
'Slim\\' => array($vendorDir . '/slim/slim/Slim'),
- 'Psr\\SimpleCache\\' => array($vendorDir . '/psr/simple-cache/src'),
'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'),
- 'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-message/src'),
+ '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', $vendorDir . '/psr/http-factory/src'),
'Psr\\Container\\' => array($vendorDir . '/psr/container/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'),
);
diff --git a/advancedcontentfilter/vendor/composer/autoload_real.php b/advancedcontentfilter/vendor/composer/autoload_real.php
index 6d7169ae..b305aa00 100644
--- a/advancedcontentfilter/vendor/composer/autoload_real.php
+++ b/advancedcontentfilter/vendor/composer/autoload_real.php
@@ -13,58 +13,38 @@ class ComposerAutoloaderInitAdvancedContentFilterAddon
}
}
+ /**
+ * @return \Composer\Autoload\ClassLoader
+ */
public static function getLoader()
{
if (null !== self::$loader) {
return self::$loader;
}
+ require __DIR__ . '/platform_check.php';
+
spl_autoload_register(array('ComposerAutoloaderInitAdvancedContentFilterAddon', 'loadClassLoader'), true, true);
- self::$loader = $loader = new \Composer\Autoload\ClassLoader();
+ self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
spl_autoload_unregister(array('ComposerAutoloaderInitAdvancedContentFilterAddon', 'loadClassLoader'));
- $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
- if ($useStaticLoader) {
- require_once __DIR__ . '/autoload_static.php';
-
- call_user_func(\Composer\Autoload\ComposerStaticInitAdvancedContentFilterAddon::getInitializer($loader));
- } else {
- $map = require __DIR__ . '/autoload_namespaces.php';
- foreach ($map as $namespace => $path) {
- $loader->set($namespace, $path);
- }
-
- $map = require __DIR__ . '/autoload_psr4.php';
- foreach ($map as $namespace => $path) {
- $loader->setPsr4($namespace, $path);
- }
-
- $classMap = require __DIR__ . '/autoload_classmap.php';
- if ($classMap) {
- $loader->addClassMap($classMap);
- }
- }
+ require __DIR__ . '/autoload_static.php';
+ call_user_func(\Composer\Autoload\ComposerStaticInitAdvancedContentFilterAddon::getInitializer($loader));
$loader->register(true);
- if ($useStaticLoader) {
- $includeFiles = Composer\Autoload\ComposerStaticInitAdvancedContentFilterAddon::$files;
- } else {
- $includeFiles = require __DIR__ . '/autoload_files.php';
- }
- foreach ($includeFiles as $fileIdentifier => $file) {
- composerRequireAdvancedContentFilterAddon($fileIdentifier, $file);
+ $filesToLoad = \Composer\Autoload\ComposerStaticInitAdvancedContentFilterAddon::$files;
+ $requireFile = \Closure::bind(static function ($fileIdentifier, $file) {
+ if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
+ $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
+
+ require $file;
+ }
+ }, null, null);
+ foreach ($filesToLoad as $fileIdentifier => $file) {
+ $requireFile($fileIdentifier, $file);
}
return $loader;
}
}
-
-function composerRequireAdvancedContentFilterAddon($fileIdentifier, $file)
-{
- if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
- require $file;
-
- $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
- }
-}
diff --git a/advancedcontentfilter/vendor/composer/autoload_static.php b/advancedcontentfilter/vendor/composer/autoload_static.php
index e7c2f8de..8cc48b1a 100644
--- a/advancedcontentfilter/vendor/composer/autoload_static.php
+++ b/advancedcontentfilter/vendor/composer/autoload_static.php
@@ -7,30 +7,32 @@ namespace Composer\Autoload;
class ComposerStaticInitAdvancedContentFilterAddon
{
public static $files = array (
- '32dcc8afd4335739640db7d200c1971d' => __DIR__ . '/..' . '/symfony/polyfill-apcu/bootstrap.php',
+ 'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php',
+ '6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php',
+ '0d59ee240a4cd96ddbb4ff164fccea4d' => __DIR__ . '/..' . '/symfony/polyfill-php73/bootstrap.php',
'253c157292f75eb38082b5acb06f3f01' => __DIR__ . '/..' . '/nikic/fast-route/src/functions.php',
);
public static $prefixLengthsPsr4 = array (
'S' =>
array (
- 'Symfony\\Polyfill\\Apcu\\' => 22,
+ 'Symfony\\Polyfill\\Php80\\' => 23,
+ 'Symfony\\Polyfill\\Php73\\' => 23,
+ 'Symfony\\Contracts\\Service\\' => 26,
+ 'Symfony\\Contracts\\Cache\\' => 24,
+ 'Symfony\\Component\\VarExporter\\' => 30,
'Symfony\\Component\\ExpressionLanguage\\' => 37,
'Symfony\\Component\\Cache\\' => 24,
'Slim\\' => 5,
),
'P' =>
array (
- 'Psr\\SimpleCache\\' => 16,
'Psr\\Log\\' => 8,
+ 'Psr\\Http\\Server\\' => 16,
'Psr\\Http\\Message\\' => 17,
'Psr\\Container\\' => 14,
'Psr\\Cache\\' => 10,
),
- 'I' =>
- array (
- 'Interop\\Container\\' => 18,
- ),
'F' =>
array (
'FastRoute\\' => 10,
@@ -38,9 +40,25 @@ class ComposerStaticInitAdvancedContentFilterAddon
);
public static $prefixDirsPsr4 = array (
- 'Symfony\\Polyfill\\Apcu\\' =>
+ 'Symfony\\Polyfill\\Php80\\' =>
array (
- 0 => __DIR__ . '/..' . '/symfony/polyfill-apcu',
+ 0 => __DIR__ . '/..' . '/symfony/polyfill-php80',
+ ),
+ '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\\' =>
array (
@@ -54,17 +72,19 @@ class ComposerStaticInitAdvancedContentFilterAddon
array (
0 => __DIR__ . '/..' . '/slim/slim/Slim',
),
- 'Psr\\SimpleCache\\' =>
- array (
- 0 => __DIR__ . '/..' . '/psr/simple-cache/src',
- ),
'Psr\\Log\\' =>
array (
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\\' =>
array (
0 => __DIR__ . '/..' . '/psr/http-message/src',
+ 1 => __DIR__ . '/..' . '/psr/http-factory/src',
),
'Psr\\Container\\' =>
array (
@@ -74,27 +94,15 @@ class ComposerStaticInitAdvancedContentFilterAddon
array (
0 => __DIR__ . '/..' . '/psr/cache/src',
),
- 'Interop\\Container\\' =>
- array (
- 0 => __DIR__ . '/..' . '/container-interop/container-interop/src/Interop/Container',
- ),
'FastRoute\\' =>
array (
0 => __DIR__ . '/..' . '/nikic/fast-route/src',
),
);
- public static $prefixesPsr0 = array (
- 'P' =>
- array (
- 'Pimple' =>
- array (
- 0 => __DIR__ . '/..' . '/pimple/pimple/src',
- ),
- ),
- );
-
public static $classMap = array (
+ 'Attribute' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Attribute.php',
+ 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
'FastRoute\\BadRouteException' => __DIR__ . '/..' . '/nikic/fast-route/src/BadRouteException.php',
'FastRoute\\DataGenerator' => __DIR__ . '/..' . '/nikic/fast-route/src/DataGenerator.php',
'FastRoute\\DataGenerator\\CharCountBased' => __DIR__ . '/..' . '/nikic/fast-route/src/DataGenerator/CharCountBased.php',
@@ -112,27 +120,8 @@ class ComposerStaticInitAdvancedContentFilterAddon
'FastRoute\\RouteCollector' => __DIR__ . '/..' . '/nikic/fast-route/src/RouteCollector.php',
'FastRoute\\RouteParser' => __DIR__ . '/..' . '/nikic/fast-route/src/RouteParser.php',
'FastRoute\\RouteParser\\Std' => __DIR__ . '/..' . '/nikic/fast-route/src/RouteParser/Std.php',
- 'Interop\\Container\\ContainerInterface' => __DIR__ . '/..' . '/container-interop/container-interop/src/Interop/Container/ContainerInterface.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',
+ 'JsonException' => __DIR__ . '/..' . '/symfony/polyfill-php73/Resources/stubs/JsonException.php',
+ 'PhpToken' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php',
'Psr\\Cache\\CacheException' => __DIR__ . '/..' . '/psr/cache/src/CacheException.php',
'Psr\\Cache\\CacheItemInterface' => __DIR__ . '/..' . '/psr/cache/src/CacheItemInterface.php',
'Psr\\Cache\\CacheItemPoolInterface' => __DIR__ . '/..' . '/psr/cache/src/CacheItemPoolInterface.php',
@@ -141,12 +130,20 @@ class ComposerStaticInitAdvancedContentFilterAddon
'Psr\\Container\\ContainerInterface' => __DIR__ . '/..' . '/psr/container/src/ContainerInterface.php',
'Psr\\Container\\NotFoundExceptionInterface' => __DIR__ . '/..' . '/psr/container/src/NotFoundExceptionInterface.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\\ResponseFactoryInterface' => __DIR__ . '/..' . '/psr/http-factory/src/ResponseFactoryInterface.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\\StreamFactoryInterface' => __DIR__ . '/..' . '/psr/http-factory/src/StreamFactoryInterface.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\\UriFactoryInterface' => __DIR__ . '/..' . '/psr/http-factory/src/UriFactoryInterface.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\\InvalidArgumentException' => __DIR__ . '/..' . '/psr/log/Psr/Log/InvalidArgumentException.php',
'Psr\\Log\\LogLevel' => __DIR__ . '/..' . '/psr/log/Psr/Log/LogLevel.php',
@@ -155,83 +152,122 @@ class ComposerStaticInitAdvancedContentFilterAddon
'Psr\\Log\\LoggerInterface' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerInterface.php',
'Psr\\Log\\LoggerTrait' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerTrait.php',
'Psr\\Log\\NullLogger' => __DIR__ . '/..' . '/psr/log/Psr/Log/NullLogger.php',
- 'Psr\\Log\\Test\\DummyTest' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php',
+ 'Psr\\Log\\Test\\DummyTest' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/DummyTest.php',
'Psr\\Log\\Test\\LoggerInterfaceTest' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.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',
+ 'Psr\\Log\\Test\\TestLogger' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/TestLogger.php',
'Slim\\App' => __DIR__ . '/..' . '/slim/slim/Slim/App.php',
'Slim\\CallableResolver' => __DIR__ . '/..' . '/slim/slim/Slim/CallableResolver.php',
- 'Slim\\CallableResolverAwareTrait' => __DIR__ . '/..' . '/slim/slim/Slim/CallableResolverAwareTrait.php',
- 'Slim\\Collection' => __DIR__ . '/..' . '/slim/slim/Slim/Collection.php',
- 'Slim\\Container' => __DIR__ . '/..' . '/slim/slim/Slim/Container.php',
- 'Slim\\DefaultServicesProvider' => __DIR__ . '/..' . '/slim/slim/Slim/DefaultServicesProvider.php',
- 'Slim\\DeferredCallable' => __DIR__ . '/..' . '/slim/slim/Slim/DeferredCallable.php',
- 'Slim\\Exception\\ContainerException' => __DIR__ . '/..' . '/slim/slim/Slim/Exception/ContainerException.php',
- 'Slim\\Exception\\ContainerValueNotFoundException' => __DIR__ . '/..' . '/slim/slim/Slim/Exception/ContainerValueNotFoundException.php',
- 'Slim\\Exception\\InvalidMethodException' => __DIR__ . '/..' . '/slim/slim/Slim/Exception/InvalidMethodException.php',
- 'Slim\\Exception\\MethodNotAllowedException' => __DIR__ . '/..' . '/slim/slim/Slim/Exception/MethodNotAllowedException.php',
- 'Slim\\Exception\\NotFoundException' => __DIR__ . '/..' . '/slim/slim/Slim/Exception/NotFoundException.php',
- 'Slim\\Exception\\SlimException' => __DIR__ . '/..' . '/slim/slim/Slim/Exception/SlimException.php',
- 'Slim\\Handlers\\AbstractError' => __DIR__ . '/..' . '/slim/slim/Slim/Handlers/AbstractError.php',
- 'Slim\\Handlers\\AbstractHandler' => __DIR__ . '/..' . '/slim/slim/Slim/Handlers/AbstractHandler.php',
- 'Slim\\Handlers\\Error' => __DIR__ . '/..' . '/slim/slim/Slim/Handlers/Error.php',
- 'Slim\\Handlers\\NotAllowed' => __DIR__ . '/..' . '/slim/slim/Slim/Handlers/NotAllowed.php',
- 'Slim\\Handlers\\NotFound' => __DIR__ . '/..' . '/slim/slim/Slim/Handlers/NotFound.php',
- 'Slim\\Handlers\\PhpError' => __DIR__ . '/..' . '/slim/slim/Slim/Handlers/PhpError.php',
+ 'Slim\\Error\\AbstractErrorRenderer' => __DIR__ . '/..' . '/slim/slim/Slim/Error/AbstractErrorRenderer.php',
+ 'Slim\\Error\\Renderers\\HtmlErrorRenderer' => __DIR__ . '/..' . '/slim/slim/Slim/Error/Renderers/HtmlErrorRenderer.php',
+ 'Slim\\Error\\Renderers\\JsonErrorRenderer' => __DIR__ . '/..' . '/slim/slim/Slim/Error/Renderers/JsonErrorRenderer.php',
+ 'Slim\\Error\\Renderers\\PlainTextErrorRenderer' => __DIR__ . '/..' . '/slim/slim/Slim/Error/Renderers/PlainTextErrorRenderer.php',
+ 'Slim\\Error\\Renderers\\XmlErrorRenderer' => __DIR__ . '/..' . '/slim/slim/Slim/Error/Renderers/XmlErrorRenderer.php',
+ 'Slim\\Exception\\HttpBadRequestException' => __DIR__ . '/..' . '/slim/slim/Slim/Exception/HttpBadRequestException.php',
+ 'Slim\\Exception\\HttpException' => __DIR__ . '/..' . '/slim/slim/Slim/Exception/HttpException.php',
+ 'Slim\\Exception\\HttpForbiddenException' => __DIR__ . '/..' . '/slim/slim/Slim/Exception/HttpForbiddenException.php',
+ 'Slim\\Exception\\HttpGoneException' => __DIR__ . '/..' . '/slim/slim/Slim/Exception/HttpGoneException.php',
+ 'Slim\\Exception\\HttpInternalServerErrorException' => __DIR__ . '/..' . '/slim/slim/Slim/Exception/HttpInternalServerErrorException.php',
+ 'Slim\\Exception\\HttpMethodNotAllowedException' => __DIR__ . '/..' . '/slim/slim/Slim/Exception/HttpMethodNotAllowedException.php',
+ 'Slim\\Exception\\HttpNotFoundException' => __DIR__ . '/..' . '/slim/slim/Slim/Exception/HttpNotFoundException.php',
+ 'Slim\\Exception\\HttpNotImplementedException' => __DIR__ . '/..' . '/slim/slim/Slim/Exception/HttpNotImplementedException.php',
+ 'Slim\\Exception\\HttpSpecializedException' => __DIR__ . '/..' . '/slim/slim/Slim/Exception/HttpSpecializedException.php',
+ 'Slim\\Exception\\HttpTooManyRequestsException' => __DIR__ . '/..' . '/slim/slim/Slim/Exception/HttpTooManyRequestsException.php',
+ 'Slim\\Exception\\HttpUnauthorizedException' => __DIR__ . '/..' . '/slim/slim/Slim/Exception/HttpUnauthorizedException.php',
+ 'Slim\\Factory\\AppFactory' => __DIR__ . '/..' . '/slim/slim/Slim/Factory/AppFactory.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\\RequestResponseArgs' => __DIR__ . '/..' . '/slim/slim/Slim/Handlers/Strategies/RequestResponseArgs.php',
- 'Slim\\Http\\Body' => __DIR__ . '/..' . '/slim/slim/Slim/Http/Body.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\\Handlers\\Strategies\\RequestResponseNamedArgs' => __DIR__ . '/..' . '/slim/slim/Slim/Handlers/Strategies/RequestResponseNamedArgs.php',
+ 'Slim\\Interfaces\\AdvancedCallableResolverInterface' => __DIR__ . '/..' . '/slim/slim/Slim/Interfaces/AdvancedCallableResolverInterface.php',
'Slim\\Interfaces\\CallableResolverInterface' => __DIR__ . '/..' . '/slim/slim/Slim/Interfaces/CallableResolverInterface.php',
- 'Slim\\Interfaces\\CollectionInterface' => __DIR__ . '/..' . '/slim/slim/Slim/Interfaces/CollectionInterface.php',
- 'Slim\\Interfaces\\Http\\CookiesInterface' => __DIR__ . '/..' . '/slim/slim/Slim/Interfaces/Http/CookiesInterface.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\\DispatcherInterface' => __DIR__ . '/..' . '/slim/slim/Slim/Interfaces/DispatcherInterface.php',
+ 'Slim\\Interfaces\\ErrorHandlerInterface' => __DIR__ . '/..' . '/slim/slim/Slim/Interfaces/ErrorHandlerInterface.php',
+ 'Slim\\Interfaces\\ErrorRendererInterface' => __DIR__ . '/..' . '/slim/slim/Slim/Interfaces/ErrorRendererInterface.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\\RouteInterface' => __DIR__ . '/..' . '/slim/slim/Slim/Interfaces/RouteInterface.php',
- 'Slim\\Interfaces\\RouterInterface' => __DIR__ . '/..' . '/slim/slim/Slim/Interfaces/RouterInterface.php',
- 'Slim\\MiddlewareAwareTrait' => __DIR__ . '/..' . '/slim/slim/Slim/MiddlewareAwareTrait.php',
- 'Slim\\Routable' => __DIR__ . '/..' . '/slim/slim/Slim/Routable.php',
- 'Slim\\Route' => __DIR__ . '/..' . '/slim/slim/Slim/Route.php',
- 'Slim\\RouteGroup' => __DIR__ . '/..' . '/slim/slim/Slim/RouteGroup.php',
- 'Slim\\Router' => __DIR__ . '/..' . '/slim/slim/Slim/Router.php',
+ 'Slim\\Interfaces\\RouteParserInterface' => __DIR__ . '/..' . '/slim/slim/Slim/Interfaces/RouteParserInterface.php',
+ 'Slim\\Interfaces\\RouteResolverInterface' => __DIR__ . '/..' . '/slim/slim/Slim/Interfaces/RouteResolverInterface.php',
+ 'Slim\\Interfaces\\ServerRequestCreatorInterface' => __DIR__ . '/..' . '/slim/slim/Slim/Interfaces/ServerRequestCreatorInterface.php',
+ 'Slim\\Logger' => __DIR__ . '/..' . '/slim/slim/Slim/Logger.php',
+ 'Slim\\MiddlewareDispatcher' => __DIR__ . '/..' . '/slim/slim/Slim/MiddlewareDispatcher.php',
+ 'Slim\\Middleware\\BodyParsingMiddleware' => __DIR__ . '/..' . '/slim/slim/Slim/Middleware/BodyParsingMiddleware.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\\AbstractTagAwareAdapter' => __DIR__ . '/..' . '/symfony/cache/Adapter/AbstractTagAwareAdapter.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\\ArrayAdapter' => __DIR__ . '/..' . '/symfony/cache/Adapter/ArrayAdapter.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\\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\\NullAdapter' => __DIR__ . '/..' . '/symfony/cache/Adapter/NullAdapter.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\\PhpFilesAdapter' => __DIR__ . '/..' . '/symfony/cache/Adapter/PhpFilesAdapter.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\\RedisTagAwareAdapter' => __DIR__ . '/..' . '/symfony/cache/Adapter/RedisTagAwareAdapter.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\\TagAwareAdapterInterface' => __DIR__ . '/..' . '/symfony/cache/Adapter/TagAwareAdapterInterface.php',
'Symfony\\Component\\Cache\\Adapter\\TraceableAdapter' => __DIR__ . '/..' . '/symfony/cache/Adapter/TraceableAdapter.php',
- 'Symfony\\Component\\Cache\\Adapter\\TraceableAdapterEvent' => __DIR__ . '/..' . '/symfony/cache/Adapter/TraceableAdapter.php',
'Symfony\\Component\\Cache\\Adapter\\TraceableTagAwareAdapter' => __DIR__ . '/..' . '/symfony/cache/Adapter/TraceableTagAwareAdapter.php',
'Symfony\\Component\\Cache\\CacheItem' => __DIR__ . '/..' . '/symfony/cache/CacheItem.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\\Exception\\CacheException' => __DIR__ . '/..' . '/symfony/cache/Exception/CacheException.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\\Psr16Cache' => __DIR__ . '/..' . '/symfony/cache/Psr16Cache.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\\ApcuCache' => __DIR__ . '/..' . '/symfony/cache/Simple/ApcuCache.php',
@@ -247,10 +283,11 @@ class ComposerStaticInitAdvancedContentFilterAddon
'Symfony\\Component\\Cache\\Simple\\Psr6Cache' => __DIR__ . '/..' . '/symfony/cache/Simple/Psr6Cache.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\\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\\ApcuTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/ApcuTrait.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\\FilesystemCommonTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/FilesystemCommonTrait.php',
'Symfony\\Component\\Cache\\Traits\\FilesystemTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/FilesystemTrait.php',
@@ -259,6 +296,8 @@ class ComposerStaticInitAdvancedContentFilterAddon
'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\\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\\RedisTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/RedisTrait.php',
'Symfony\\Component\\ExpressionLanguage\\Compiler' => __DIR__ . '/..' . '/symfony/expression-language/Compiler.php',
@@ -286,7 +325,34 @@ class ComposerStaticInitAdvancedContentFilterAddon
'Symfony\\Component\\ExpressionLanguage\\SyntaxError' => __DIR__ . '/..' . '/symfony/expression-language/SyntaxError.php',
'Symfony\\Component\\ExpressionLanguage\\Token' => __DIR__ . '/..' . '/symfony/expression-language/Token.php',
'Symfony\\Component\\ExpressionLanguage\\TokenStream' => __DIR__ . '/..' . '/symfony/expression-language/TokenStream.php',
- 'Symfony\\Polyfill\\Apcu\\Apcu' => __DIR__ . '/..' . '/symfony/polyfill-apcu/Apcu.php',
+ 'Symfony\\Component\\VarExporter\\Exception\\ClassNotFoundException' => __DIR__ . '/..' . '/symfony/var-exporter/Exception/ClassNotFoundException.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)
@@ -294,7 +360,6 @@ class ComposerStaticInitAdvancedContentFilterAddon
return \Closure::bind(function () use ($loader) {
$loader->prefixLengthsPsr4 = ComposerStaticInitAdvancedContentFilterAddon::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInitAdvancedContentFilterAddon::$prefixDirsPsr4;
- $loader->prefixesPsr0 = ComposerStaticInitAdvancedContentFilterAddon::$prefixesPsr0;
$loader->classMap = ComposerStaticInitAdvancedContentFilterAddon::$classMap;
}, null, ClassLoader::class);
diff --git a/advancedcontentfilter/vendor/composer/installed.json b/advancedcontentfilter/vendor/composer/installed.json
index 8e6b80dc..70c2dc41 100644
--- a/advancedcontentfilter/vendor/composer/installed.json
+++ b/advancedcontentfilter/vendor/composer/installed.json
@@ -1,640 +1,1212 @@
-[
- {
- "name": "container-interop/container-interop",
- "version": "1.2.0",
- "version_normalized": "1.2.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/container-interop/container-interop.git",
- "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/container-interop/container-interop/zipball/79cbf1341c22ec75643d841642dd5d6acd83bdb8",
- "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8",
- "shasum": ""
- },
- "require": {
- "psr/container": "^1.0"
- },
- "time": "2017-02-14T19:40:03+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Interop\\Container\\": "src/Interop/Container/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "Promoting the interoperability of container objects (DIC, SL, etc.)",
- "homepage": "https://github.com/container-interop/container-interop"
- },
- {
- "name": "nikic/fast-route",
- "version": "v1.3.0",
- "version_normalized": "1.3.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/nikic/FastRoute.git",
- "reference": "181d480e08d9476e61381e04a71b34dc0432e812"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nikic/FastRoute/zipball/181d480e08d9476e61381e04a71b34dc0432e812",
- "reference": "181d480e08d9476e61381e04a71b34dc0432e812",
- "shasum": ""
- },
- "require": {
- "php": ">=5.4.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.8.35|~5.7"
- },
- "time": "2018-02-13T20:26:39+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "FastRoute\\": "src/"
+{
+ "packages": [
+ {
+ "name": "nikic/fast-route",
+ "version": "v1.3.0",
+ "version_normalized": "1.3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nikic/FastRoute.git",
+ "reference": "181d480e08d9476e61381e04a71b34dc0432e812"
},
- "files": [
- "src/functions.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Nikita Popov",
- "email": "nikic@php.net"
- }
- ],
- "description": "Fast request router for PHP",
- "keywords": [
- "router",
- "routing"
- ]
- },
- {
- "name": "pimple/pimple",
- "version": "v3.2.3",
- "version_normalized": "3.2.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/silexphp/Pimple.git",
- "reference": "9e403941ef9d65d20cba7d54e29fe906db42cf32"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/silexphp/Pimple/zipball/9e403941ef9d65d20cba7d54e29fe906db42cf32",
- "reference": "9e403941ef9d65d20cba7d54e29fe906db42cf32",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0",
- "psr/container": "^1.0"
- },
- "require-dev": {
- "symfony/phpunit-bridge": "^3.2"
- },
- "time": "2018-01-21T07:42:36+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.2.x-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-0": {
- "Pimple": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- }
- ],
- "description": "Pimple, a simple Dependency Injection Container",
- "homepage": "http://pimple.sensiolabs.org",
- "keywords": [
- "container",
- "dependency injection"
- ]
- },
- {
- "name": "psr/cache",
- "version": "1.0.1",
- "version_normalized": "1.0.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/cache.git",
- "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8",
- "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "time": "2016-08-06T20:24:11+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Psr\\Cache\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
- }
- ],
- "description": "Common interface for caching libraries",
- "keywords": [
- "cache",
- "psr",
- "psr-6"
- ]
- },
- {
- "name": "psr/container",
- "version": "1.0.0",
- "version_normalized": "1.0.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/container.git",
- "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
- "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "time": "2017-02-14T16:28:37+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Psr\\Container\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
- }
- ],
- "description": "Common Container Interface (PHP FIG PSR-11)",
- "homepage": "https://github.com/php-fig/container",
- "keywords": [
- "PSR-11",
- "container",
- "container-interface",
- "container-interop",
- "psr"
- ]
- },
- {
- "name": "psr/http-message",
- "version": "1.0.1",
- "version_normalized": "1.0.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/http-message.git",
- "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
- "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "time": "2016-08-06T14:39:51+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Psr\\Http\\Message\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
- }
- ],
- "description": "Common interface for HTTP messages",
- "homepage": "https://github.com/php-fig/http-message",
- "keywords": [
- "http",
- "http-message",
- "psr",
- "psr-7",
- "request",
- "response"
- ]
- },
- {
- "name": "psr/log",
- "version": "1.0.2",
- "version_normalized": "1.0.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/log.git",
- "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
- "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "time": "2016-10-10T12:19:37+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Psr\\Log\\": "Psr/Log/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
- }
- ],
- "description": "Common interface for logging libraries",
- "homepage": "https://github.com/php-fig/log",
- "keywords": [
- "log",
- "psr",
- "psr-3"
- ]
- },
- {
- "name": "psr/simple-cache",
- "version": "1.0.1",
- "version_normalized": "1.0.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/simple-cache.git",
- "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
- "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "time": "2017-10-23T01:57:42+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Psr\\SimpleCache\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
- }
- ],
- "description": "Common interfaces for simple caching",
- "keywords": [
- "cache",
- "caching",
- "psr",
- "psr-16",
- "simple-cache"
- ]
- },
- {
- "name": "slim/slim",
- "version": "3.9.2",
- "version_normalized": "3.9.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/slimphp/Slim.git",
- "reference": "4086d0106cf5a7135c69fce4161fe355a8feb118"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/slimphp/Slim/zipball/4086d0106cf5a7135c69fce4161fe355a8feb118",
- "reference": "4086d0106cf5a7135c69fce4161fe355a8feb118",
- "shasum": ""
- },
- "require": {
- "container-interop/container-interop": "^1.2",
- "nikic/fast-route": "^1.0",
- "php": ">=5.5.0",
- "pimple/pimple": "^3.0",
- "psr/container": "^1.0",
- "psr/http-message": "^1.0"
- },
- "provide": {
- "psr/http-message-implementation": "1.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.0",
- "squizlabs/php_codesniffer": "^2.5"
- },
- "time": "2017-11-26T19:13:09+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Slim\\": "Slim"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Rob Allen",
- "email": "rob@akrabat.com",
- "homepage": "http://akrabat.com"
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nikic/FastRoute/zipball/181d480e08d9476e61381e04a71b34dc0432e812",
+ "reference": "181d480e08d9476e61381e04a71b34dc0432e812",
+ "shasum": ""
},
- {
- "name": "Josh Lockhart",
- "email": "hello@joshlockhart.com",
- "homepage": "https://joshlockhart.com"
+ "require": {
+ "php": ">=5.4.0"
},
- {
- "name": "Gabriel Manricks",
- "email": "gmanricks@me.com",
- "homepage": "http://gabrielmanricks.com"
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.35|~5.7"
},
- {
- "name": "Andrew Smith",
- "email": "a.smith@silentworks.co.uk",
- "homepage": "http://silentworks.co.uk"
- }
- ],
- "description": "Slim is a PHP micro framework that helps you quickly write simple yet powerful web applications and APIs",
- "homepage": "https://slimframework.com",
- "keywords": [
- "api",
- "framework",
- "micro",
- "router"
- ]
- },
- {
- "name": "symfony/cache",
- "version": "v3.4.8",
- "version_normalized": "3.4.8.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/cache.git",
- "reference": "13255ddd056e49f3154747943f8ee175d555d394"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/cache/zipball/13255ddd056e49f3154747943f8ee175d555d394",
- "reference": "13255ddd056e49f3154747943f8ee175d555d394",
- "shasum": ""
- },
- "require": {
- "php": "^5.5.9|>=7.0.8",
- "psr/cache": "~1.0",
- "psr/log": "~1.0",
- "psr/simple-cache": "^1.0",
- "symfony/polyfill-apcu": "~1.1"
- },
- "conflict": {
- "symfony/var-dumper": "<3.3"
- },
- "provide": {
- "psr/cache-implementation": "1.0",
- "psr/simple-cache-implementation": "1.0"
- },
- "require-dev": {
- "cache/integration-tests": "dev-master",
- "doctrine/cache": "~1.6",
- "doctrine/dbal": "~2.4",
- "predis/predis": "~1.0"
- },
- "time": "2018-04-02T14:35:16+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.4-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Cache\\": ""
+ "time": "2018-02-13T20:26:39+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "FastRoute\\": "src/"
+ },
+ "files": [
+ "src/functions.php"
+ ]
},
- "exclude-from-classmap": [
- "/Tests/"
- ]
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Nikita Popov",
+ "email": "nikic@php.net"
+ }
+ ],
+ "description": "Fast request router for PHP",
+ "keywords": [
+ "router",
+ "routing"
+ ],
+ "install-path": "../nikic/fast-route"
},
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
+ {
+ "name": "psr/cache",
+ "version": "1.0.1",
+ "version_normalized": "1.0.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/cache.git",
+ "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8"
},
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony Cache component with PSR-6, PSR-16, and tags",
- "homepage": "https://symfony.com",
- "keywords": [
- "caching",
- "psr6"
- ]
- },
- {
- "name": "symfony/expression-language",
- "version": "v3.4.8",
- "version_normalized": "3.4.8.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/expression-language.git",
- "reference": "867e4d1f5d4e52435a8ffff6b24fd6a801582241"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/expression-language/zipball/867e4d1f5d4e52435a8ffff6b24fd6a801582241",
- "reference": "867e4d1f5d4e52435a8ffff6b24fd6a801582241",
- "shasum": ""
- },
- "require": {
- "php": "^5.5.9|>=7.0.8",
- "symfony/cache": "~3.1|~4.0"
- },
- "time": "2018-01-03T07:37:34+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.4-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\ExpressionLanguage\\": ""
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8",
+ "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8",
+ "shasum": ""
},
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
+ "require": {
+ "php": ">=5.3.0"
},
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony ExpressionLanguage Component",
- "homepage": "https://symfony.com"
- },
- {
- "name": "symfony/polyfill-apcu",
- "version": "v1.7.0",
- "version_normalized": "1.7.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-apcu.git",
- "reference": "e8ae2136ddb53dea314df56fcd88e318ab936c00"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/e8ae2136ddb53dea314df56fcd88e318ab936c00",
- "reference": "e8ae2136ddb53dea314df56fcd88e318ab936c00",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "time": "2018-01-30T19:27:44+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.7-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Apcu\\": ""
+ "time": "2016-08-06T20:24:11+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
},
- "files": [
- "bootstrap.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Psr\\Cache\\": "src/"
+ }
},
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill backporting apcu_* functions to lower PHP versions",
- "homepage": "https://symfony.com",
- "keywords": [
- "apcu",
- "compatibility",
- "polyfill",
- "portable",
- "shim"
- ]
- }
-]
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for caching libraries",
+ "keywords": [
+ "cache",
+ "psr",
+ "psr-6"
+ ],
+ "install-path": "../psr/cache"
+ },
+ {
+ "name": "psr/container",
+ "version": "1.1.2",
+ "version_normalized": "1.1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/container.git",
+ "reference": "513e0666f7216c7459170d56df27dfcefe1689ea"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea",
+ "reference": "513e0666f7216c7459170d56df27dfcefe1689ea",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.4.0"
+ },
+ "time": "2021-11-05T16:50:12+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Psr\\Container\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common Container Interface (PHP FIG PSR-11)",
+ "homepage": "https://github.com/php-fig/container",
+ "keywords": [
+ "PSR-11",
+ "container",
+ "container-interface",
+ "container-interop",
+ "psr"
+ ],
+ "install-path": "../psr/container"
+ },
+ {
+ "name": "psr/http-factory",
+ "version": "1.0.2",
+ "version_normalized": "1.0.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-factory.git",
+ "reference": "e616d01114759c4c489f93b099585439f795fe35"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35",
+ "reference": "e616d01114759c4c489f93b099585439f795fe35",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.0.0",
+ "psr/http-message": "^1.0 || ^2.0"
+ },
+ "time": "2023-04-10T20:10:41+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Message\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interfaces for PSR-7 HTTP message factories",
+ "keywords": [
+ "factory",
+ "http",
+ "message",
+ "psr",
+ "psr-17",
+ "psr-7",
+ "request",
+ "response"
+ ],
+ "install-path": "../psr/http-factory"
+ },
+ {
+ "name": "psr/http-message",
+ "version": "2.0",
+ "version_normalized": "2.0.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-message.git",
+ "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71",
+ "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "time": "2023-04-04T09:54:51+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Message\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for HTTP messages",
+ "homepage": "https://github.com/php-fig/http-message",
+ "keywords": [
+ "http",
+ "http-message",
+ "psr",
+ "psr-7",
+ "request",
+ "response"
+ ],
+ "install-path": "../psr/http-message"
+ },
+ {
+ "name": "psr/http-server-handler",
+ "version": "1.0.2",
+ "version_normalized": "1.0.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-server-handler.git",
+ "reference": "84c4fb66179be4caaf8e97bd239203245302e7d4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-server-handler/zipball/84c4fb66179be4caaf8e97bd239203245302e7d4",
+ "reference": "84c4fb66179be4caaf8e97bd239203245302e7d4",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.0",
+ "psr/http-message": "^1.0 || ^2.0"
+ },
+ "time": "2023-04-10T20:06:20+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Server\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for HTTP server-side request handler",
+ "keywords": [
+ "handler",
+ "http",
+ "http-interop",
+ "psr",
+ "psr-15",
+ "psr-7",
+ "request",
+ "response",
+ "server"
+ ],
+ "install-path": "../psr/http-server-handler"
+ },
+ {
+ "name": "psr/http-server-middleware",
+ "version": "1.0.2",
+ "version_normalized": "1.0.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-server-middleware.git",
+ "reference": "c1481f747daaa6a0782775cd6a8c26a1bf4a3829"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-server-middleware/zipball/c1481f747daaa6a0782775cd6a8c26a1bf4a3829",
+ "reference": "c1481f747daaa6a0782775cd6a8c26a1bf4a3829",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.0",
+ "psr/http-message": "^1.0 || ^2.0",
+ "psr/http-server-handler": "^1.0"
+ },
+ "time": "2023-04-11T06:14:47+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Server\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for HTTP server-side middleware",
+ "keywords": [
+ "http",
+ "http-interop",
+ "middleware",
+ "psr",
+ "psr-15",
+ "psr-7",
+ "request",
+ "response"
+ ],
+ "install-path": "../psr/http-server-middleware"
+ },
+ {
+ "name": "psr/log",
+ "version": "1.1.4",
+ "version_normalized": "1.1.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "d49695b909c3b7628b6289db5479a1c204601f11"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11",
+ "reference": "d49695b909c3b7628b6289db5479a1c204601f11",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "time": "2021-05-03T11:20:27+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Psr\\Log\\": "Psr/Log/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for logging libraries",
+ "homepage": "https://github.com/php-fig/log",
+ "keywords": [
+ "log",
+ "psr",
+ "psr-3"
+ ],
+ "install-path": "../psr/log"
+ },
+ {
+ "name": "slim/slim",
+ "version": "4.13.0",
+ "version_normalized": "4.13.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/slimphp/Slim.git",
+ "reference": "038fd5713d5a41636fdff0e8dcceedecdd17fc17"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/slimphp/Slim/zipball/038fd5713d5a41636fdff0e8dcceedecdd17fc17",
+ "reference": "038fd5713d5a41636fdff0e8dcceedecdd17fc17",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "nikic/fast-route": "^1.3",
+ "php": "^7.4 || ^8.0",
+ "psr/container": "^1.0 || ^2.0",
+ "psr/http-factory": "^1.0",
+ "psr/http-message": "^1.1 || ^2.0",
+ "psr/http-server-handler": "^1.0",
+ "psr/http-server-middleware": "^1.0",
+ "psr/log": "^1.1 || ^2.0 || ^3.0"
+ },
+ "require-dev": {
+ "adriansuter/php-autoload-override": "^1.4",
+ "ext-simplexml": "*",
+ "guzzlehttp/psr7": "^2.6",
+ "httpsoft/http-message": "^1.1",
+ "httpsoft/http-server-request": "^1.1",
+ "laminas/laminas-diactoros": "^2.17 || ^3",
+ "nyholm/psr7": "^1.8",
+ "nyholm/psr7-server": "^1.1",
+ "phpspec/prophecy": "^1.19",
+ "phpspec/prophecy-phpunit": "^2.1",
+ "phpstan/phpstan": "^1.10",
+ "phpunit/phpunit": "^9.6",
+ "slim/http": "^1.3",
+ "slim/psr7": "^1.6",
+ "squizlabs/php_codesniffer": "^3.9"
+ },
+ "suggest": {
+ "ext-simplexml": "Needed to support XML format in BodyParsingMiddleware",
+ "ext-xml": "Needed to support XML format in BodyParsingMiddleware",
+ "php-di/php-di": "PHP-DI is the recommended container library to be used with Slim",
+ "slim/psr7": "Slim PSR-7 implementation. See https://www.slimframework.com/docs/v4/start/installation.html for more information."
+ },
+ "time": "2024-03-03T21:25:30+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Slim\\": "Slim"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Josh Lockhart",
+ "email": "hello@joshlockhart.com",
+ "homepage": "https://joshlockhart.com"
+ },
+ {
+ "name": "Andrew Smith",
+ "email": "a.smith@silentworks.co.uk",
+ "homepage": "http://silentworks.co.uk"
+ },
+ {
+ "name": "Rob Allen",
+ "email": "rob@akrabat.com",
+ "homepage": "http://akrabat.com"
+ },
+ {
+ "name": "Pierre Berube",
+ "email": "pierre@lgse.com",
+ "homepage": "http://www.lgse.com"
+ },
+ {
+ "name": "Gabriel Manricks",
+ "email": "gmanricks@me.com",
+ "homepage": "http://gabrielmanricks.com"
+ }
+ ],
+ "description": "Slim is a PHP micro framework that helps you quickly write simple yet powerful web applications and APIs",
+ "homepage": "https://www.slimframework.com",
+ "keywords": [
+ "api",
+ "framework",
+ "micro",
+ "router"
+ ],
+ "funding": [
+ {
+ "url": "https://opencollective.com/slimphp",
+ "type": "open_collective"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/slim/slim",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../slim/slim"
+ },
+ {
+ "name": "symfony/cache",
+ "version": "v4.4.48",
+ "version_normalized": "4.4.48.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/cache.git",
+ "reference": "3b98ed664887ad197b8ede3da2432787212eb915"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/cache/zipball/3b98ed664887ad197b8ede3da2432787212eb915",
+ "reference": "3b98ed664887ad197b8ede3da2432787212eb915",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1.3",
+ "psr/cache": "^1.0|^2.0",
+ "psr/log": "^1|^2|^3",
+ "symfony/cache-contracts": "^1.1.7|^2",
+ "symfony/polyfill-php73": "^1.9",
+ "symfony/polyfill-php80": "^1.16",
+ "symfony/service-contracts": "^1.1|^2",
+ "symfony/var-exporter": "^4.2|^5.0"
+ },
+ "conflict": {
+ "doctrine/dbal": "<2.7",
+ "symfony/dependency-injection": "<3.4",
+ "symfony/http-kernel": "<4.4|>=5.0",
+ "symfony/var-dumper": "<4.4"
+ },
+ "provide": {
+ "psr/cache-implementation": "1.0|2.0",
+ "psr/simple-cache-implementation": "1.0|2.0",
+ "symfony/cache-implementation": "1.0|2.0"
+ },
+ "require-dev": {
+ "cache/integration-tests": "dev-master",
+ "doctrine/cache": "^1.6|^2.0",
+ "doctrine/dbal": "^2.7|^3.0",
+ "predis/predis": "^1.1",
+ "psr/simple-cache": "^1.0|^2.0",
+ "symfony/config": "^4.2|^5.0",
+ "symfony/dependency-injection": "^3.4|^4.1|^5.0",
+ "symfony/filesystem": "^4.4|^5.0",
+ "symfony/http-kernel": "^4.4",
+ "symfony/var-dumper": "^4.4|^5.0"
+ },
+ "time": "2022-10-17T20:21:54+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Cache\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides extended PSR-6, PSR-16 (and tags) implementations",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "caching",
+ "psr6"
+ ],
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/cache"
+ },
+ {
+ "name": "symfony/cache-contracts",
+ "version": "v2.5.2",
+ "version_normalized": "2.5.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/cache-contracts.git",
+ "reference": "64be4a7acb83b6f2bf6de9a02cee6dad41277ebc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/64be4a7acb83b6f2bf6de9a02cee6dad41277ebc",
+ "reference": "64be4a7acb83b6f2bf6de9a02cee6dad41277ebc",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "psr/cache": "^1.0|^2.0|^3.0"
+ },
+ "suggest": {
+ "symfony/cache-implementation": ""
+ },
+ "time": "2022-01-02T09:53:40+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "2.5-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\Cache\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Generic abstractions related to caching",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/cache-contracts"
+ },
+ {
+ "name": "symfony/deprecation-contracts",
+ "version": "v2.5.2",
+ "version_normalized": "2.5.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/deprecation-contracts.git",
+ "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66",
+ "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "time": "2022-01-02T09:53:40+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "2.5-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "function.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "A generic function and convention to trigger deprecation notices",
+ "homepage": "https://symfony.com",
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/deprecation-contracts"
+ },
+ {
+ "name": "symfony/expression-language",
+ "version": "v3.4.47",
+ "version_normalized": "3.4.47.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/expression-language.git",
+ "reference": "de38e66398fca1fcb9c48e80279910e6889cb28f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/expression-language/zipball/de38e66398fca1fcb9c48e80279910e6889cb28f",
+ "reference": "de38e66398fca1fcb9c48e80279910e6889cb28f",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8",
+ "symfony/cache": "~3.1|~4.0",
+ "symfony/polyfill-php70": "~1.6"
+ },
+ "time": "2020-10-24T10:57:07+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\ExpressionLanguage\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony ExpressionLanguage Component",
+ "homepage": "https://symfony.com",
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/expression-language"
+ },
+ {
+ "name": "symfony/polyfill-php70",
+ "version": "v1.20.0",
+ "version_normalized": "1.20.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php70.git",
+ "reference": "5f03a781d984aae42cebd18e7912fa80f02ee644"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/5f03a781d984aae42cebd18e7912fa80f02ee644",
+ "reference": "5f03a781d984aae42cebd18e7912fa80f02ee644",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "time": "2020-10-23T14:02:19+00:00",
+ "type": "metapackage",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.20-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": null
+ },
+ {
+ "name": "symfony/polyfill-php73",
+ "version": "v1.29.0",
+ "version_normalized": "1.29.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php73.git",
+ "reference": "21bd091060673a1177ae842c0ef8fe30893114d2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/21bd091060673a1177ae842c0ef8fe30893114d2",
+ "reference": "21bd091060673a1177ae842c0ef8fe30893114d2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "time": "2024-01-29T20:11:03+00:00",
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Php73\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/polyfill-php73"
+ },
+ {
+ "name": "symfony/polyfill-php80",
+ "version": "v1.29.0",
+ "version_normalized": "1.29.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php80.git",
+ "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b",
+ "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "time": "2024-01-29T20:11:03+00:00",
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Php80\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ion Bazan",
+ "email": "ion.bazan@gmail.com"
+ },
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/polyfill-php80"
+ },
+ {
+ "name": "symfony/service-contracts",
+ "version": "v2.5.2",
+ "version_normalized": "2.5.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/service-contracts.git",
+ "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/4b426aac47d6427cc1a1d0f7e2ac724627f5966c",
+ "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "psr/container": "^1.1",
+ "symfony/deprecation-contracts": "^2.1|^3"
+ },
+ "conflict": {
+ "ext-psr": "<1.1|>=2"
+ },
+ "suggest": {
+ "symfony/service-implementation": ""
+ },
+ "time": "2022-05-30T19:17:29+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "2.5-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\Service\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Generic abstractions related to writing services",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/service-contracts"
+ },
+ {
+ "name": "symfony/var-exporter",
+ "version": "v5.4.35",
+ "version_normalized": "5.4.35.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/var-exporter.git",
+ "reference": "abb0a151b62d6b07e816487e20040464af96cae7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/var-exporter/zipball/abb0a151b62d6b07e816487e20040464af96cae7",
+ "reference": "abb0a151b62d6b07e816487e20040464af96cae7",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/polyfill-php80": "^1.16"
+ },
+ "require-dev": {
+ "symfony/var-dumper": "^4.4.9|^5.0.9|^6.0"
+ },
+ "time": "2024-01-23T13:51:25+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\VarExporter\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Allows exporting any serializable PHP data structure to plain PHP code",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "clone",
+ "construct",
+ "export",
+ "hydrate",
+ "instantiate",
+ "serialize"
+ ],
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/var-exporter"
+ }
+ ],
+ "dev": false,
+ "dev-package-names": []
+}
diff --git a/advancedcontentfilter/vendor/composer/installed.php b/advancedcontentfilter/vendor/composer/installed.php
new file mode 100644
index 00000000..010b1da9
--- /dev/null
+++ b/advancedcontentfilter/vendor/composer/installed.php
@@ -0,0 +1,203 @@
+ array(
+ 'name' => 'friendica-addons/advancedcontentfilter',
+ 'pretty_version' => 'dev-develop',
+ 'version' => 'dev-develop',
+ 'reference' => 'feb7722f723b21e76fdf20a7ce4b42fa5ffcdcb9',
+ 'type' => 'friendica-addon',
+ 'install_path' => __DIR__ . '/../../',
+ 'aliases' => array(),
+ 'dev' => false,
+ ),
+ 'versions' => array(
+ 'friendica-addons/advancedcontentfilter' => array(
+ 'pretty_version' => 'dev-develop',
+ 'version' => 'dev-develop',
+ 'reference' => 'feb7722f723b21e76fdf20a7ce4b42fa5ffcdcb9',
+ 'type' => 'friendica-addon',
+ 'install_path' => __DIR__ . '/../../',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'nikic/fast-route' => array(
+ 'pretty_version' => 'v1.3.0',
+ 'version' => '1.3.0.0',
+ 'reference' => '181d480e08d9476e61381e04a71b34dc0432e812',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../nikic/fast-route',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'psr/cache' => array(
+ 'pretty_version' => '1.0.1',
+ 'version' => '1.0.1.0',
+ 'reference' => 'd11b50ad223250cf17b86e38383413f5a6764bf8',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../psr/cache',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'psr/cache-implementation' => array(
+ 'dev_requirement' => false,
+ 'provided' => array(
+ 0 => '1.0|2.0',
+ ),
+ ),
+ 'psr/container' => array(
+ 'pretty_version' => '1.1.2',
+ 'version' => '1.1.2.0',
+ 'reference' => '513e0666f7216c7459170d56df27dfcefe1689ea',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../psr/container',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'psr/http-factory' => array(
+ 'pretty_version' => '1.0.2',
+ 'version' => '1.0.2.0',
+ 'reference' => 'e616d01114759c4c489f93b099585439f795fe35',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../psr/http-factory',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'psr/http-message' => array(
+ 'pretty_version' => '2.0',
+ 'version' => '2.0.0.0',
+ 'reference' => '402d35bcb92c70c026d1a6a9883f06b2ead23d71',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../psr/http-message',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'psr/http-server-handler' => array(
+ 'pretty_version' => '1.0.2',
+ 'version' => '1.0.2.0',
+ 'reference' => '84c4fb66179be4caaf8e97bd239203245302e7d4',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../psr/http-server-handler',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'psr/http-server-middleware' => array(
+ 'pretty_version' => '1.0.2',
+ 'version' => '1.0.2.0',
+ 'reference' => 'c1481f747daaa6a0782775cd6a8c26a1bf4a3829',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../psr/http-server-middleware',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'psr/log' => array(
+ 'pretty_version' => '1.1.4',
+ 'version' => '1.1.4.0',
+ 'reference' => 'd49695b909c3b7628b6289db5479a1c204601f11',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../psr/log',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'psr/simple-cache-implementation' => array(
+ 'dev_requirement' => false,
+ 'provided' => array(
+ 0 => '1.0|2.0',
+ ),
+ ),
+ 'slim/slim' => array(
+ 'pretty_version' => '4.13.0',
+ 'version' => '4.13.0.0',
+ 'reference' => '038fd5713d5a41636fdff0e8dcceedecdd17fc17',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../slim/slim',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'symfony/cache' => array(
+ 'pretty_version' => 'v4.4.48',
+ 'version' => '4.4.48.0',
+ 'reference' => '3b98ed664887ad197b8ede3da2432787212eb915',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/cache',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'symfony/cache-contracts' => array(
+ 'pretty_version' => 'v2.5.2',
+ 'version' => '2.5.2.0',
+ 'reference' => '64be4a7acb83b6f2bf6de9a02cee6dad41277ebc',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/cache-contracts',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'symfony/cache-implementation' => array(
+ 'dev_requirement' => false,
+ 'provided' => array(
+ 0 => '1.0|2.0',
+ ),
+ ),
+ 'symfony/deprecation-contracts' => array(
+ 'pretty_version' => 'v2.5.2',
+ 'version' => '2.5.2.0',
+ 'reference' => 'e8b495ea28c1d97b5e0c121748d6f9b53d075c66',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/deprecation-contracts',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'symfony/expression-language' => array(
+ 'pretty_version' => 'v3.4.47',
+ 'version' => '3.4.47.0',
+ 'reference' => 'de38e66398fca1fcb9c48e80279910e6889cb28f',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/expression-language',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'symfony/polyfill-php70' => array(
+ 'pretty_version' => 'v1.20.0',
+ 'version' => '1.20.0.0',
+ 'reference' => '5f03a781d984aae42cebd18e7912fa80f02ee644',
+ 'type' => 'metapackage',
+ 'install_path' => null,
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'symfony/polyfill-php73' => array(
+ 'pretty_version' => 'v1.29.0',
+ 'version' => '1.29.0.0',
+ 'reference' => '21bd091060673a1177ae842c0ef8fe30893114d2',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/polyfill-php73',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'symfony/polyfill-php80' => array(
+ 'pretty_version' => 'v1.29.0',
+ 'version' => '1.29.0.0',
+ 'reference' => '87b68208d5c1188808dd7839ee1e6c8ec3b02f1b',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/polyfill-php80',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'symfony/service-contracts' => array(
+ 'pretty_version' => 'v2.5.2',
+ 'version' => '2.5.2.0',
+ 'reference' => '4b426aac47d6427cc1a1d0f7e2ac724627f5966c',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/service-contracts',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'symfony/var-exporter' => array(
+ 'pretty_version' => 'v5.4.35',
+ 'version' => '5.4.35.0',
+ 'reference' => 'abb0a151b62d6b07e816487e20040464af96cae7',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/var-exporter',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ ),
+);
diff --git a/advancedcontentfilter/vendor/composer/platform_check.php b/advancedcontentfilter/vendor/composer/platform_check.php
new file mode 100644
index 00000000..580fa960
--- /dev/null
+++ b/advancedcontentfilter/vendor/composer/platform_check.php
@@ -0,0 +1,26 @@
+= 70400)) {
+ $issues[] = 'Your Composer dependencies require a PHP version ">= 7.4.0". You are running ' . PHP_VERSION . '.';
+}
+
+if ($issues) {
+ if (!headers_sent()) {
+ header('HTTP/1.1 500 Internal Server Error');
+ }
+ if (!ini_get('display_errors')) {
+ if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
+ fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL);
+ } elseif (!headers_sent()) {
+ echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL;
+ }
+ }
+ trigger_error(
+ 'Composer detected issues in your platform: ' . implode(' ', $issues),
+ E_USER_ERROR
+ );
+}
diff --git a/advancedcontentfilter/vendor/container-interop/container-interop/.gitignore b/advancedcontentfilter/vendor/container-interop/container-interop/.gitignore
deleted file mode 100644
index b2395aa0..00000000
--- a/advancedcontentfilter/vendor/container-interop/container-interop/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-composer.lock
-composer.phar
-/vendor/
diff --git a/advancedcontentfilter/vendor/container-interop/container-interop/LICENSE b/advancedcontentfilter/vendor/container-interop/container-interop/LICENSE
deleted file mode 100644
index 7671d902..00000000
--- a/advancedcontentfilter/vendor/container-interop/container-interop/LICENSE
+++ /dev/null
@@ -1,20 +0,0 @@
-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.
diff --git a/advancedcontentfilter/vendor/container-interop/container-interop/README.md b/advancedcontentfilter/vendor/container-interop/container-interop/README.md
deleted file mode 100644
index cdd7a44c..00000000
--- a/advancedcontentfilter/vendor/container-interop/container-interop/README.md
+++ /dev/null
@@ -1,148 +0,0 @@
-# Container Interoperability
-
-[](https://packagist.org/packages/container-interop/container-interop)
-[](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) |  |
-| [Behat](https://github.com/Behat/Behat/pull/974) |  |
-| [blast-facades](https://github.com/phpthinktank/blast-facades): Minimize complexity and represent dependencies as facades. |  |
-| [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 |  |
-| [mindplay/walkway](https://github.com/mindplay-dk/walkway): a modular request router |  |
-| [mindplay/middleman](https://github.com/mindplay-dk/middleman): minimalist PSR-7 middleware dispatcher |  |
-| [PHP-DI/Invoker](https://github.com/PHP-DI/Invoker): extensible and configurable invoker/dispatcher |  |
-| [Prophiler](https://github.com/fabfuel/prophiler) |  |
-| [Silly](https://github.com/mnapoli/silly): CLI micro-framework |  |
-| [Slim v3](https://github.com/slimphp/Slim) |  |
-| [Splash](http://mouf-php.com/packages/mouf/mvc.splash-common/version/8.0-dev/README.md) |  |
-| [Woohoo Labs. Harmony](https://github.com/woohoolabs/harmony): a flexible micro-framework |  |
-| [zend-expressive](https://github.com/zendframework/zend-expressive) |  |
-
-
-## 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.
diff --git a/advancedcontentfilter/vendor/container-interop/container-interop/composer.json b/advancedcontentfilter/vendor/container-interop/container-interop/composer.json
deleted file mode 100644
index 855f7667..00000000
--- a/advancedcontentfilter/vendor/container-interop/container-interop/composer.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "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"
- }
-}
diff --git a/advancedcontentfilter/vendor/container-interop/container-interop/docs/ContainerInterface-meta.md b/advancedcontentfilter/vendor/container-interop/container-interop/docs/ContainerInterface-meta.md
deleted file mode 100644
index 59f3d559..00000000
--- a/advancedcontentfilter/vendor/container-interop/container-interop/docs/ContainerInterface-meta.md
+++ /dev/null
@@ -1,114 +0,0 @@
-# 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)
diff --git a/advancedcontentfilter/vendor/container-interop/container-interop/docs/ContainerInterface.md b/advancedcontentfilter/vendor/container-interop/container-interop/docs/ContainerInterface.md
deleted file mode 100644
index bda973d6..00000000
--- a/advancedcontentfilter/vendor/container-interop/container-interop/docs/ContainerInterface.md
+++ /dev/null
@@ -1,158 +0,0 @@
-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
-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)
-
diff --git a/advancedcontentfilter/vendor/container-interop/container-interop/docs/Delegate-lookup.md b/advancedcontentfilter/vendor/container-interop/container-interop/docs/Delegate-lookup.md
deleted file mode 100644
index f64a8f78..00000000
--- a/advancedcontentfilter/vendor/container-interop/container-interop/docs/Delegate-lookup.md
+++ /dev/null
@@ -1,60 +0,0 @@
-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.
diff --git a/advancedcontentfilter/vendor/container-interop/container-interop/docs/images/interoperating_containers.png b/advancedcontentfilter/vendor/container-interop/container-interop/docs/images/interoperating_containers.png
deleted file mode 100644
index 1d3fdd0d..00000000
Binary files a/advancedcontentfilter/vendor/container-interop/container-interop/docs/images/interoperating_containers.png and /dev/null differ
diff --git a/advancedcontentfilter/vendor/container-interop/container-interop/docs/images/priority.png b/advancedcontentfilter/vendor/container-interop/container-interop/docs/images/priority.png
deleted file mode 100644
index d02cb7d1..00000000
Binary files a/advancedcontentfilter/vendor/container-interop/container-interop/docs/images/priority.png and /dev/null differ
diff --git a/advancedcontentfilter/vendor/container-interop/container-interop/docs/images/side_by_side_containers.png b/advancedcontentfilter/vendor/container-interop/container-interop/docs/images/side_by_side_containers.png
deleted file mode 100644
index 87884bc2..00000000
Binary files a/advancedcontentfilter/vendor/container-interop/container-interop/docs/images/side_by_side_containers.png and /dev/null differ
diff --git a/advancedcontentfilter/vendor/container-interop/container-interop/src/Interop/Container/ContainerInterface.php b/advancedcontentfilter/vendor/container-interop/container-interop/src/Interop/Container/ContainerInterface.php
deleted file mode 100644
index a75468f6..00000000
--- a/advancedcontentfilter/vendor/container-interop/container-interop/src/Interop/Container/ContainerInterface.php
+++ /dev/null
@@ -1,15 +0,0 @@
-> `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
diff --git a/advancedcontentfilter/vendor/pimple/pimple/CHANGELOG b/advancedcontentfilter/vendor/pimple/pimple/CHANGELOG
deleted file mode 100644
index ba56760c..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/CHANGELOG
+++ /dev/null
@@ -1,59 +0,0 @@
-* 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
diff --git a/advancedcontentfilter/vendor/pimple/pimple/LICENSE b/advancedcontentfilter/vendor/pimple/pimple/LICENSE
deleted file mode 100644
index e02dc5a7..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-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.
diff --git a/advancedcontentfilter/vendor/pimple/pimple/README.rst b/advancedcontentfilter/vendor/pimple/pimple/README.rst
deleted file mode 100644
index a03b6d3a..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/README.rst
+++ /dev/null
@@ -1,326 +0,0 @@
-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
diff --git a/advancedcontentfilter/vendor/pimple/pimple/composer.json b/advancedcontentfilter/vendor/pimple/pimple/composer.json
deleted file mode 100644
index dabf190a..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/composer.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
- "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"
- }
- }
-}
diff --git a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/.gitignore b/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/.gitignore
deleted file mode 100644
index 1861088a..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/.gitignore
+++ /dev/null
@@ -1,30 +0,0 @@
-*.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
diff --git a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/README.md b/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/README.md
deleted file mode 100644
index 7b39eb29..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/README.md
+++ /dev/null
@@ -1,12 +0,0 @@
-This is Pimple 2 implemented in C
-
-* PHP >= 5.3
-* Not tested under Windows, might work
-
-Install
-=======
-
- > phpize
- > ./configure
- > make
- > make install
diff --git a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/config.m4 b/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/config.m4
deleted file mode 100644
index 3a6e9aae..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/config.m4
+++ /dev/null
@@ -1,63 +0,0 @@
-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
diff --git a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/config.w32 b/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/config.w32
deleted file mode 100644
index 39857b32..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/config.w32
+++ /dev/null
@@ -1,13 +0,0 @@
-// $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");
-}
-
diff --git a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/php_pimple.h b/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/php_pimple.h
deleted file mode 100644
index eed7c173..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/php_pimple.h
+++ /dev/null
@@ -1,137 +0,0 @@
-
-/*
- * 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[] = "
";
-
-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 */
-
diff --git a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/pimple.c b/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/pimple.c
deleted file mode 100644
index c80499b3..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/pimple.c
+++ /dev/null
@@ -1,1114 +0,0 @@
-
-/*
- * 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.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "php.h"
-#include "php_ini.h"
-#include "ext/standard/info.h"
-#include "php_pimple.h"
-#include "pimple_compat.h"
-#include "zend_interfaces.h"
-#include "zend.h"
-#include "Zend/zend_closures.h"
-#include "ext/spl/spl_exceptions.h"
-#include "Zend/zend_exceptions.h"
-#include "main/php_output.h"
-#include "SAPI.h"
-
-static zend_class_entry *pimple_ce_PsrContainerInterface;
-static zend_class_entry *pimple_ce_PsrContainerExceptionInterface;
-static zend_class_entry *pimple_ce_PsrNotFoundExceptionInterface;
-
-static zend_class_entry *pimple_ce_ExpectedInvokableException;
-static zend_class_entry *pimple_ce_FrozenServiceException;
-static zend_class_entry *pimple_ce_InvalidServiceIdentifierException;
-static zend_class_entry *pimple_ce_UnknownIdentifierException;
-
-static zend_class_entry *pimple_ce;
-static zend_object_handlers pimple_object_handlers;
-static zend_class_entry *pimple_closure_ce;
-static zend_class_entry *pimple_serviceprovider_ce;
-static zend_object_handlers pimple_closure_object_handlers;
-static zend_internal_function pimple_closure_invoker_function;
-
-#define FETCH_DIM_HANDLERS_VARS pimple_object *pimple_obj = NULL; \
- ulong index; \
- pimple_obj = (pimple_object *)zend_object_store_get_object(object TSRMLS_CC); \
-
-#define PIMPLE_OBJECT_HANDLE_INHERITANCE_OBJECT_HANDLERS do { \
- if (ce != pimple_ce) { \
- zend_hash_find(&ce->function_table, ZEND_STRS("offsetget"), (void **)&function); \
- if (function->common.scope != ce) { /* if the function is not defined in this actual class */ \
- pimple_object_handlers.read_dimension = pimple_object_read_dimension; /* then overwrite the handler to use custom one */ \
- } \
- zend_hash_find(&ce->function_table, ZEND_STRS("offsetset"), (void **)&function); \
- if (function->common.scope != ce) { \
- pimple_object_handlers.write_dimension = pimple_object_write_dimension; \
- } \
- zend_hash_find(&ce->function_table, ZEND_STRS("offsetexists"), (void **)&function); \
- if (function->common.scope != ce) { \
- pimple_object_handlers.has_dimension = pimple_object_has_dimension; \
- } \
- zend_hash_find(&ce->function_table, ZEND_STRS("offsetunset"), (void **)&function); \
- if (function->common.scope != ce) { \
- pimple_object_handlers.unset_dimension = pimple_object_unset_dimension; \
- } \
- } else { \
- pimple_object_handlers.read_dimension = pimple_object_read_dimension; \
- pimple_object_handlers.write_dimension = pimple_object_write_dimension; \
- pimple_object_handlers.has_dimension = pimple_object_has_dimension; \
- pimple_object_handlers.unset_dimension = pimple_object_unset_dimension; \
- }\
- } while(0);
-
-#define PIMPLE_CALL_CB do { \
- zend_fcall_info_argn(&fci TSRMLS_CC, 1, &object); \
- fci.size = sizeof(fci); \
- fci.object_ptr = retval->fcc.object_ptr; \
- fci.function_name = retval->value; \
- fci.no_separation = 1; \
- fci.retval_ptr_ptr = &retval_ptr_ptr; \
-\
- zend_call_function(&fci, &retval->fcc TSRMLS_CC); \
- efree(fci.params); \
- if (EG(exception)) { \
- return EG(uninitialized_zval_ptr); \
- } \
- } while(0);
-
-
-/* Psr\Container\ContainerInterface */
-ZEND_BEGIN_ARG_INFO_EX(arginfo_pimple_PsrContainerInterface_get, 0, 0, 1)
-ZEND_ARG_INFO(0, id)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_pimple_PsrContainerInterface_has, 0, 0, 1)
-ZEND_ARG_INFO(0, id)
-ZEND_END_ARG_INFO()
-
-static const zend_function_entry pimple_ce_PsrContainerInterface_functions[] = {
- PHP_ABSTRACT_ME(ContainerInterface, get, arginfo_pimple_PsrContainerInterface_get)
- PHP_ABSTRACT_ME(ContainerInterface, has, arginfo_pimple_PsrContainerInterface_has)
- PHP_FE_END
-};
-
-/* Psr\Container\ContainerExceptionInterface */
-static const zend_function_entry pimple_ce_PsrContainerExceptionInterface_functions[] = {
- PHP_FE_END
-};
-
-/* Psr\Container\NotFoundExceptionInterface */
-static const zend_function_entry pimple_ce_PsrNotFoundExceptionInterface_functions[] = {
- PHP_FE_END
-};
-
-/* Pimple\Exception\FrozenServiceException */
-ZEND_BEGIN_ARG_INFO_EX(arginfo_FrozenServiceException___construct, 0, 0, 1)
-ZEND_ARG_INFO(0, id)
-ZEND_END_ARG_INFO()
-
-static const zend_function_entry pimple_ce_FrozenServiceException_functions[] = {
- PHP_ME(FrozenServiceException, __construct, arginfo_FrozenServiceException___construct, ZEND_ACC_PUBLIC)
- PHP_FE_END
-};
-
-/* Pimple\Exception\InvalidServiceIdentifierException */
-ZEND_BEGIN_ARG_INFO_EX(arginfo_InvalidServiceIdentifierException___construct, 0, 0, 1)
-ZEND_ARG_INFO(0, id)
-ZEND_END_ARG_INFO()
-
-static const zend_function_entry pimple_ce_InvalidServiceIdentifierException_functions[] = {
- PHP_ME(InvalidServiceIdentifierException, __construct, arginfo_InvalidServiceIdentifierException___construct, ZEND_ACC_PUBLIC)
- PHP_FE_END
-};
-
-/* Pimple\Exception\UnknownIdentifierException */
-ZEND_BEGIN_ARG_INFO_EX(arginfo_UnknownIdentifierException___construct, 0, 0, 1)
-ZEND_ARG_INFO(0, id)
-ZEND_END_ARG_INFO()
-
-static const zend_function_entry pimple_ce_UnknownIdentifierException_functions[] = {
- PHP_ME(UnknownIdentifierException, __construct, arginfo_UnknownIdentifierException___construct, ZEND_ACC_PUBLIC)
- PHP_FE_END
-};
-
-/* Pimple\Container */
-ZEND_BEGIN_ARG_INFO_EX(arginfo___construct, 0, 0, 0)
-ZEND_ARG_ARRAY_INFO(0, value, 0)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_offsetset, 0, 0, 2)
-ZEND_ARG_INFO(0, offset)
-ZEND_ARG_INFO(0, value)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_offsetget, 0, 0, 1)
-ZEND_ARG_INFO(0, offset)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_offsetexists, 0, 0, 1)
-ZEND_ARG_INFO(0, offset)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_offsetunset, 0, 0, 1)
-ZEND_ARG_INFO(0, offset)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_factory, 0, 0, 1)
-ZEND_ARG_INFO(0, callable)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_protect, 0, 0, 1)
-ZEND_ARG_INFO(0, callable)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_raw, 0, 0, 1)
-ZEND_ARG_INFO(0, id)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_extend, 0, 0, 2)
-ZEND_ARG_INFO(0, id)
-ZEND_ARG_INFO(0, callable)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_keys, 0, 0, 0)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_register, 0, 0, 1)
-ZEND_ARG_OBJ_INFO(0, provider, Pimple\\ServiceProviderInterface, 0)
-ZEND_ARG_ARRAY_INFO(0, values, 1)
-ZEND_END_ARG_INFO()
-
-static const zend_function_entry pimple_ce_functions[] = {
- PHP_ME(Pimple, __construct, arginfo___construct, ZEND_ACC_PUBLIC)
- PHP_ME(Pimple, factory, arginfo_factory, ZEND_ACC_PUBLIC)
- PHP_ME(Pimple, protect, arginfo_protect, ZEND_ACC_PUBLIC)
- PHP_ME(Pimple, raw, arginfo_raw, ZEND_ACC_PUBLIC)
- PHP_ME(Pimple, extend, arginfo_extend, ZEND_ACC_PUBLIC)
- PHP_ME(Pimple, keys, arginfo_keys, ZEND_ACC_PUBLIC)
- PHP_ME(Pimple, register, arginfo_register, ZEND_ACC_PUBLIC)
-
- PHP_ME(Pimple, offsetSet, arginfo_offsetset, ZEND_ACC_PUBLIC)
- PHP_ME(Pimple, offsetGet, arginfo_offsetget, ZEND_ACC_PUBLIC)
- PHP_ME(Pimple, offsetExists, arginfo_offsetexists, ZEND_ACC_PUBLIC)
- PHP_ME(Pimple, offsetUnset, arginfo_offsetunset, ZEND_ACC_PUBLIC)
- PHP_FE_END
-};
-
-/* Pimple\ServiceProviderInterface */
-ZEND_BEGIN_ARG_INFO_EX(arginfo_serviceprovider_register, 0, 0, 1)
-ZEND_ARG_OBJ_INFO(0, pimple, Pimple\\Container, 0)
-ZEND_END_ARG_INFO()
-
-static const zend_function_entry pimple_serviceprovider_iface_ce_functions[] = {
- PHP_ABSTRACT_ME(ServiceProviderInterface, register, arginfo_serviceprovider_register)
- PHP_FE_END
-};
-
-/* parent::__construct(sprintf("Something with %s", $arg1)) */
-static void pimple_exception_call_parent_constructor(zval *this_ptr, const char *format, const char *arg1 TSRMLS_DC)
-{
- zend_class_entry *ce = Z_OBJCE_P(this_ptr);
- char *message = NULL;
- int message_len;
- zval *constructor_arg;
-
- message_len = spprintf(&message, 0, format, arg1);
- ALLOC_INIT_ZVAL(constructor_arg);
- ZVAL_STRINGL(constructor_arg, message, message_len, 1);
-
- zend_call_method_with_1_params(&this_ptr, ce, &ce->parent->constructor, "__construct", NULL, constructor_arg);
-
- efree(message);
- zval_ptr_dtor(&constructor_arg);
-}
-
-/**
- * Pass a single string parameter to exception constructor and throw
- */
-static void pimple_throw_exception_string(zend_class_entry *ce, const char *message, zend_uint message_len TSRMLS_DC)
-{
- zval *exception, *param;
-
- ALLOC_INIT_ZVAL(exception);
- object_init_ex(exception, ce);
-
- ALLOC_INIT_ZVAL(param);
- ZVAL_STRINGL(param, message, message_len, 1);
-
- zend_call_method_with_1_params(&exception, ce, &ce->constructor, "__construct", NULL, param);
-
- zend_throw_exception_object(exception TSRMLS_CC);
-
- zval_ptr_dtor(¶m);
-}
-
-static void pimple_closure_free_object_storage(pimple_closure_object *obj TSRMLS_DC)
-{
- zend_object_std_dtor(&obj->zobj TSRMLS_CC);
- if (obj->factory) {
- zval_ptr_dtor(&obj->factory);
- }
- if (obj->callable) {
- zval_ptr_dtor(&obj->callable);
- }
- efree(obj);
-}
-
-static void pimple_free_object_storage(pimple_object *obj TSRMLS_DC)
-{
- zend_hash_destroy(&obj->factories);
- zend_hash_destroy(&obj->protected);
- zend_hash_destroy(&obj->values);
- zend_object_std_dtor(&obj->zobj TSRMLS_CC);
- efree(obj);
-}
-
-static void pimple_free_bucket(pimple_bucket_value *bucket)
-{
- if (bucket->raw) {
- zval_ptr_dtor(&bucket->raw);
- }
-}
-
-static zend_object_value pimple_closure_object_create(zend_class_entry *ce TSRMLS_DC)
-{
- zend_object_value retval;
- pimple_closure_object *pimple_closure_obj = NULL;
-
- pimple_closure_obj = ecalloc(1, sizeof(pimple_closure_object));
- ZEND_OBJ_INIT(&pimple_closure_obj->zobj, ce);
-
- pimple_closure_object_handlers.get_constructor = pimple_closure_get_constructor;
- retval.handlers = &pimple_closure_object_handlers;
- retval.handle = zend_objects_store_put(pimple_closure_obj, (zend_objects_store_dtor_t) zend_objects_destroy_object, (zend_objects_free_object_storage_t) pimple_closure_free_object_storage, NULL TSRMLS_CC);
-
- return retval;
-}
-
-static zend_function *pimple_closure_get_constructor(zval *obj TSRMLS_DC)
-{
- zend_error(E_ERROR, "Pimple\\ContainerClosure is an internal class and cannot be instantiated");
-
- return NULL;
-}
-
-static int pimple_closure_get_closure(zval *obj, zend_class_entry **ce_ptr, union _zend_function **fptr_ptr, zval **zobj_ptr TSRMLS_DC)
-{
- *zobj_ptr = obj;
- *ce_ptr = Z_OBJCE_P(obj);
- *fptr_ptr = (zend_function *)&pimple_closure_invoker_function;
-
- return SUCCESS;
-}
-
-static zend_object_value pimple_object_create(zend_class_entry *ce TSRMLS_DC)
-{
- zend_object_value retval;
- pimple_object *pimple_obj = NULL;
- zend_function *function = NULL;
-
- pimple_obj = emalloc(sizeof(pimple_object));
- ZEND_OBJ_INIT(&pimple_obj->zobj, ce);
-
- PIMPLE_OBJECT_HANDLE_INHERITANCE_OBJECT_HANDLERS
-
- retval.handlers = &pimple_object_handlers;
- retval.handle = zend_objects_store_put(pimple_obj, (zend_objects_store_dtor_t) zend_objects_destroy_object, (zend_objects_free_object_storage_t) pimple_free_object_storage, NULL TSRMLS_CC);
-
- zend_hash_init(&pimple_obj->factories, PIMPLE_DEFAULT_ZVAL_CACHE_NUM, NULL, (dtor_func_t)pimple_bucket_dtor, 0);
- zend_hash_init(&pimple_obj->protected, PIMPLE_DEFAULT_ZVAL_CACHE_NUM, NULL, (dtor_func_t)pimple_bucket_dtor, 0);
- zend_hash_init(&pimple_obj->values, PIMPLE_DEFAULT_ZVAL_VALUES_NUM, NULL, (dtor_func_t)pimple_bucket_dtor, 0);
-
- return retval;
-}
-
-static void pimple_object_write_dimension(zval *object, zval *offset, zval *value TSRMLS_DC)
-{
- FETCH_DIM_HANDLERS_VARS
-
- pimple_bucket_value pimple_value = {0}, *found_value = NULL;
- ulong hash;
-
- pimple_zval_to_pimpleval(value, &pimple_value TSRMLS_CC);
-
- if (!offset) {/* $p[] = 'foo' when not overloaded */
- zend_hash_next_index_insert(&pimple_obj->values, (void *)&pimple_value, sizeof(pimple_bucket_value), NULL);
- Z_ADDREF_P(value);
- return;
- }
-
- switch (Z_TYPE_P(offset)) {
- case IS_STRING:
- hash = zend_hash_func(Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1);
- zend_hash_quick_find(&pimple_obj->values, Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, hash, (void **)&found_value);
- if (found_value && found_value->type == PIMPLE_IS_SERVICE && found_value->initialized == 1) {
- pimple_free_bucket(&pimple_value);
- pimple_throw_exception_string(pimple_ce_FrozenServiceException, Z_STRVAL_P(offset), Z_STRLEN_P(offset) TSRMLS_CC);
- return;
- }
- if (zend_hash_quick_update(&pimple_obj->values, Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, hash, (void *)&pimple_value, sizeof(pimple_bucket_value), NULL) == FAILURE) {
- pimple_free_bucket(&pimple_value);
- return;
- }
- Z_ADDREF_P(value);
- break;
- case IS_DOUBLE:
- case IS_BOOL:
- case IS_LONG:
- if (Z_TYPE_P(offset) == IS_DOUBLE) {
- index = (ulong)Z_DVAL_P(offset);
- } else {
- index = Z_LVAL_P(offset);
- }
- zend_hash_index_find(&pimple_obj->values, index, (void **)&found_value);
- if (found_value && found_value->type == PIMPLE_IS_SERVICE && found_value->initialized == 1) {
- pimple_free_bucket(&pimple_value);
- convert_to_string(offset);
- pimple_throw_exception_string(pimple_ce_FrozenServiceException, Z_STRVAL_P(offset), Z_STRLEN_P(offset) TSRMLS_CC);
- return;
- }
- if (zend_hash_index_update(&pimple_obj->values, index, (void *)&pimple_value, sizeof(pimple_bucket_value), NULL) == FAILURE) {
- pimple_free_bucket(&pimple_value);
- return;
- }
- Z_ADDREF_P(value);
- break;
- case IS_NULL: /* $p[] = 'foo' when overloaded */
- zend_hash_next_index_insert(&pimple_obj->values, (void *)&pimple_value, sizeof(pimple_bucket_value), NULL);
- Z_ADDREF_P(value);
- break;
- default:
- pimple_free_bucket(&pimple_value);
- zend_error(E_WARNING, "Unsupported offset type");
- }
-}
-
-static void pimple_object_unset_dimension(zval *object, zval *offset TSRMLS_DC)
-{
- FETCH_DIM_HANDLERS_VARS
-
- switch (Z_TYPE_P(offset)) {
- case IS_STRING:
- zend_symtable_del(&pimple_obj->values, Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1);
- zend_symtable_del(&pimple_obj->factories, Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1);
- zend_symtable_del(&pimple_obj->protected, Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1);
- break;
- case IS_DOUBLE:
- case IS_BOOL:
- case IS_LONG:
- if (Z_TYPE_P(offset) == IS_DOUBLE) {
- index = (ulong)Z_DVAL_P(offset);
- } else {
- index = Z_LVAL_P(offset);
- }
- zend_hash_index_del(&pimple_obj->values, index);
- zend_hash_index_del(&pimple_obj->factories, index);
- zend_hash_index_del(&pimple_obj->protected, index);
- break;
- default:
- zend_error(E_WARNING, "Unsupported offset type");
- }
-}
-
-static int pimple_object_has_dimension(zval *object, zval *offset, int check_empty TSRMLS_DC)
-{
- FETCH_DIM_HANDLERS_VARS
-
- pimple_bucket_value *retval = NULL;
-
- switch (Z_TYPE_P(offset)) {
- case IS_STRING:
- if (zend_symtable_find(&pimple_obj->values, Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, (void **)&retval) == SUCCESS) {
- switch (check_empty) {
- case 0: /* isset */
- return 1; /* Differs from PHP behavior (Z_TYPE_P(retval->value) != IS_NULL;) */
- case 1: /* empty */
- default:
- return zend_is_true(retval->value);
- }
- }
- return 0;
- break;
- case IS_DOUBLE:
- case IS_BOOL:
- case IS_LONG:
- if (Z_TYPE_P(offset) == IS_DOUBLE) {
- index = (ulong)Z_DVAL_P(offset);
- } else {
- index = Z_LVAL_P(offset);
- }
- if (zend_hash_index_find(&pimple_obj->values, index, (void **)&retval) == SUCCESS) {
- switch (check_empty) {
- case 0: /* isset */
- return 1; /* Differs from PHP behavior (Z_TYPE_P(retval->value) != IS_NULL;)*/
- case 1: /* empty */
- default:
- return zend_is_true(retval->value);
- }
- }
- return 0;
- break;
- default:
- zend_error(E_WARNING, "Unsupported offset type");
- return 0;
- }
-}
-
-static zval *pimple_object_read_dimension(zval *object, zval *offset, int type TSRMLS_DC)
-{
- FETCH_DIM_HANDLERS_VARS
-
- pimple_bucket_value *retval = NULL;
- zend_fcall_info fci = {0};
- zval *retval_ptr_ptr = NULL;
-
- switch (Z_TYPE_P(offset)) {
- case IS_STRING:
- if (zend_symtable_find(&pimple_obj->values, Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, (void **)&retval) == FAILURE) {
- pimple_throw_exception_string(pimple_ce_UnknownIdentifierException, Z_STRVAL_P(offset), Z_STRLEN_P(offset) TSRMLS_CC);
-
- return EG(uninitialized_zval_ptr);
- }
- break;
- case IS_DOUBLE:
- case IS_BOOL:
- case IS_LONG:
- if (Z_TYPE_P(offset) == IS_DOUBLE) {
- index = (ulong)Z_DVAL_P(offset);
- } else {
- index = Z_LVAL_P(offset);
- }
- if (zend_hash_index_find(&pimple_obj->values, index, (void **)&retval) == FAILURE) {
- return EG(uninitialized_zval_ptr);
- }
- break;
- case IS_NULL: /* $p[][3] = 'foo' first dim access */
- return EG(uninitialized_zval_ptr);
- break;
- default:
- zend_error(E_WARNING, "Unsupported offset type");
- return EG(uninitialized_zval_ptr);
- }
-
- if(retval->type == PIMPLE_IS_PARAM) {
- return retval->value;
- }
-
- if (zend_hash_index_exists(&pimple_obj->protected, retval->handle_num)) {
- /* Service is protected, return the value every time */
- return retval->value;
- }
-
- if (zend_hash_index_exists(&pimple_obj->factories, retval->handle_num)) {
- /* Service is a factory, call it every time and never cache its result */
- PIMPLE_CALL_CB
- Z_DELREF_P(retval_ptr_ptr); /* fetch dim addr will increment refcount */
- return retval_ptr_ptr;
- }
-
- if (retval->initialized == 1) {
- /* Service has already been called, return its cached value */
- return retval->value;
- }
-
- ALLOC_INIT_ZVAL(retval->raw);
- MAKE_COPY_ZVAL(&retval->value, retval->raw);
-
- PIMPLE_CALL_CB
-
- retval->initialized = 1;
- zval_ptr_dtor(&retval->value);
- retval->value = retval_ptr_ptr;
-
- return retval->value;
-}
-
-static int pimple_zval_is_valid_callback(zval *_zval, pimple_bucket_value *_pimple_bucket_value TSRMLS_DC)
-{
- if (Z_TYPE_P(_zval) != IS_OBJECT) {
- return FAILURE;
- }
-
- if (_pimple_bucket_value->fcc.called_scope) {
- return SUCCESS;
- }
-
- if (Z_OBJ_HANDLER_P(_zval, get_closure) && Z_OBJ_HANDLER_P(_zval, get_closure)(_zval, &_pimple_bucket_value->fcc.calling_scope, &_pimple_bucket_value->fcc.function_handler, &_pimple_bucket_value->fcc.object_ptr TSRMLS_CC) == SUCCESS) {
- _pimple_bucket_value->fcc.called_scope = _pimple_bucket_value->fcc.calling_scope;
- return SUCCESS;
- } else {
- return FAILURE;
- }
-}
-
-static int pimple_zval_to_pimpleval(zval *_zval, pimple_bucket_value *_pimple_bucket_value TSRMLS_DC)
-{
- _pimple_bucket_value->value = _zval;
-
- if (Z_TYPE_P(_zval) != IS_OBJECT) {
- return PIMPLE_IS_PARAM;
- }
-
- if (pimple_zval_is_valid_callback(_zval, _pimple_bucket_value TSRMLS_CC) == SUCCESS) {
- _pimple_bucket_value->type = PIMPLE_IS_SERVICE;
- _pimple_bucket_value->handle_num = Z_OBJ_HANDLE_P(_zval);
- }
-
- return PIMPLE_IS_SERVICE;
-}
-
-static void pimple_bucket_dtor(pimple_bucket_value *bucket)
-{
- zval_ptr_dtor(&bucket->value);
- pimple_free_bucket(bucket);
-}
-
-PHP_METHOD(FrozenServiceException, __construct)
-{
- char *id = NULL;
- int id_len;
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &id, &id_len) == FAILURE) {
- return;
- }
- pimple_exception_call_parent_constructor(getThis(), "Cannot override frozen service \"%s\".", id TSRMLS_CC);
-}
-
-PHP_METHOD(InvalidServiceIdentifierException, __construct)
-{
- char *id = NULL;
- int id_len;
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &id, &id_len) == FAILURE) {
- return;
- }
- pimple_exception_call_parent_constructor(getThis(), "Identifier \"%s\" does not contain an object definition.", id TSRMLS_CC);
-}
-
-PHP_METHOD(UnknownIdentifierException, __construct)
-{
- char *id = NULL;
- int id_len;
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &id, &id_len) == FAILURE) {
- return;
- }
- pimple_exception_call_parent_constructor(getThis(), "Identifier \"%s\" is not defined.", id TSRMLS_CC);
-}
-
-PHP_METHOD(Pimple, protect)
-{
- zval *protected = NULL;
- pimple_object *pobj = NULL;
- pimple_bucket_value bucket = {0};
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &protected) == FAILURE) {
- return;
- }
-
- if (pimple_zval_is_valid_callback(protected, &bucket TSRMLS_CC) == FAILURE) {
- pimple_free_bucket(&bucket);
- zend_throw_exception(pimple_ce_ExpectedInvokableException, "Callable is not a Closure or invokable object.", 0 TSRMLS_CC);
- return;
- }
-
- pimple_zval_to_pimpleval(protected, &bucket TSRMLS_CC);
- pobj = (pimple_object *)zend_object_store_get_object(getThis() TSRMLS_CC);
-
- if (zend_hash_index_update(&pobj->protected, bucket.handle_num, (void *)&bucket, sizeof(pimple_bucket_value), NULL) == SUCCESS) {
- Z_ADDREF_P(protected);
- RETURN_ZVAL(protected, 1 , 0);
- } else {
- pimple_free_bucket(&bucket);
- }
- RETURN_FALSE;
-}
-
-PHP_METHOD(Pimple, raw)
-{
- zval *offset = NULL;
- pimple_object *pobj = NULL;
- pimple_bucket_value *value = NULL;
- ulong index;
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &offset) == FAILURE) {
- return;
- }
-
- pobj = zend_object_store_get_object(getThis() TSRMLS_CC);
-
- switch (Z_TYPE_P(offset)) {
- case IS_STRING:
- if (zend_symtable_find(&pobj->values, Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, (void *)&value) == FAILURE) {
- pimple_throw_exception_string(pimple_ce_UnknownIdentifierException, Z_STRVAL_P(offset), Z_STRLEN_P(offset) TSRMLS_CC);
- RETURN_NULL();
- }
- break;
- case IS_DOUBLE:
- case IS_BOOL:
- case IS_LONG:
- if (Z_TYPE_P(offset) == IS_DOUBLE) {
- index = (ulong)Z_DVAL_P(offset);
- } else {
- index = Z_LVAL_P(offset);
- }
- if (zend_hash_index_find(&pobj->values, index, (void *)&value) == FAILURE) {
- RETURN_NULL();
- }
- break;
- case IS_NULL:
- default:
- zend_error(E_WARNING, "Unsupported offset type");
- }
-
- if (value->raw) {
- RETVAL_ZVAL(value->raw, 1, 0);
- } else {
- RETVAL_ZVAL(value->value, 1, 0);
- }
-}
-
-PHP_METHOD(Pimple, extend)
-{
- zval *offset = NULL, *callable = NULL, *pimple_closure_obj = NULL;
- pimple_bucket_value bucket = {0}, *value = NULL;
- pimple_object *pobj = NULL;
- pimple_closure_object *pcobj = NULL;
- ulong index;
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zz", &offset, &callable) == FAILURE) {
- return;
- }
-
- pobj = zend_object_store_get_object(getThis() TSRMLS_CC);
-
- switch (Z_TYPE_P(offset)) {
- case IS_STRING:
- if (zend_symtable_find(&pobj->values, Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, (void *)&value) == FAILURE) {
- pimple_throw_exception_string(pimple_ce_UnknownIdentifierException, Z_STRVAL_P(offset), Z_STRLEN_P(offset) TSRMLS_CC);
- RETURN_NULL();
- }
-
- if (value->type != PIMPLE_IS_SERVICE) {
- pimple_throw_exception_string(pimple_ce_InvalidServiceIdentifierException, Z_STRVAL_P(offset), Z_STRLEN_P(offset) TSRMLS_CC);
- RETURN_NULL();
- }
- if (zend_hash_index_exists(&pobj->protected, value->handle_num)) {
- int er = EG(error_reporting);
- EG(error_reporting) = 0;
- php_error(E_DEPRECATED, "How Pimple behaves when extending protected closures will be fixed in Pimple 4. Are you sure \"%s\" should be protected?", Z_STRVAL_P(offset));
- EG(error_reporting) = er;
- }
- break;
- case IS_DOUBLE:
- case IS_BOOL:
- case IS_LONG:
- if (Z_TYPE_P(offset) == IS_DOUBLE) {
- index = (ulong)Z_DVAL_P(offset);
- } else {
- index = Z_LVAL_P(offset);
- }
- if (zend_hash_index_find(&pobj->values, index, (void *)&value) == FAILURE) {
- convert_to_string(offset);
- pimple_throw_exception_string(pimple_ce_UnknownIdentifierException, Z_STRVAL_P(offset), Z_STRLEN_P(offset) TSRMLS_CC);
- RETURN_NULL();
- }
- if (value->type != PIMPLE_IS_SERVICE) {
- convert_to_string(offset);
- pimple_throw_exception_string(pimple_ce_InvalidServiceIdentifierException, Z_STRVAL_P(offset), Z_STRLEN_P(offset) TSRMLS_CC);
- RETURN_NULL();
- }
- if (zend_hash_index_exists(&pobj->protected, value->handle_num)) {
- int er = EG(error_reporting);
- EG(error_reporting) = 0;
- php_error(E_DEPRECATED, "How Pimple behaves when extending protected closures will be fixed in Pimple 4. Are you sure \"%ld\" should be protected?", index);
- EG(error_reporting) = er;
- }
- break;
- case IS_NULL:
- default:
- zend_error(E_WARNING, "Unsupported offset type");
- }
-
- if (pimple_zval_is_valid_callback(callable, &bucket TSRMLS_CC) == FAILURE) {
- pimple_free_bucket(&bucket);
- zend_throw_exception(pimple_ce_ExpectedInvokableException, "Extension service definition is not a Closure or invokable object.", 0 TSRMLS_CC);
- RETURN_NULL();
- }
- pimple_free_bucket(&bucket);
-
- ALLOC_INIT_ZVAL(pimple_closure_obj);
- object_init_ex(pimple_closure_obj, pimple_closure_ce);
-
- pcobj = zend_object_store_get_object(pimple_closure_obj TSRMLS_CC);
- pcobj->callable = callable;
- pcobj->factory = value->value;
- Z_ADDREF_P(callable);
- Z_ADDREF_P(value->value);
-
- if (zend_hash_index_exists(&pobj->factories, value->handle_num)) {
- pimple_zval_to_pimpleval(pimple_closure_obj, &bucket TSRMLS_CC);
- zend_hash_index_del(&pobj->factories, value->handle_num);
- zend_hash_index_update(&pobj->factories, bucket.handle_num, (void *)&bucket, sizeof(pimple_bucket_value), NULL);
- Z_ADDREF_P(pimple_closure_obj);
- }
-
- pimple_object_write_dimension(getThis(), offset, pimple_closure_obj TSRMLS_CC);
-
- RETVAL_ZVAL(pimple_closure_obj, 1, 1);
-}
-
-PHP_METHOD(Pimple, keys)
-{
- HashPosition pos;
- pimple_object *pobj = NULL;
- zval **value = NULL;
- zval *endval = NULL;
- char *str_index = NULL;
- int str_len;
- ulong num_index;
-
- if (zend_parse_parameters_none() == FAILURE) {
- return;
- }
-
- pobj = zend_object_store_get_object(getThis() TSRMLS_CC);
- array_init_size(return_value, zend_hash_num_elements(&pobj->values));
-
- zend_hash_internal_pointer_reset_ex(&pobj->values, &pos);
-
- while(zend_hash_get_current_data_ex(&pobj->values, (void **)&value, &pos) == SUCCESS) {
- MAKE_STD_ZVAL(endval);
- switch (zend_hash_get_current_key_ex(&pobj->values, &str_index, (uint *)&str_len, &num_index, 0, &pos)) {
- case HASH_KEY_IS_STRING:
- ZVAL_STRINGL(endval, str_index, str_len - 1, 1);
- zend_hash_next_index_insert(Z_ARRVAL_P(return_value), &endval, sizeof(zval *), NULL);
- break;
- case HASH_KEY_IS_LONG:
- ZVAL_LONG(endval, num_index);
- zend_hash_next_index_insert(Z_ARRVAL_P(return_value), &endval, sizeof(zval *), NULL);
- break;
- }
- zend_hash_move_forward_ex(&pobj->values, &pos);
- }
-}
-
-PHP_METHOD(Pimple, factory)
-{
- zval *factory = NULL;
- pimple_object *pobj = NULL;
- pimple_bucket_value bucket = {0};
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &factory) == FAILURE) {
- return;
- }
-
- if (pimple_zval_is_valid_callback(factory, &bucket TSRMLS_CC) == FAILURE) {
- pimple_free_bucket(&bucket);
- zend_throw_exception(pimple_ce_ExpectedInvokableException, "Service definition is not a Closure or invokable object.", 0 TSRMLS_CC);
- return;
- }
-
- pimple_zval_to_pimpleval(factory, &bucket TSRMLS_CC);
- pobj = (pimple_object *)zend_object_store_get_object(getThis() TSRMLS_CC);
-
- if (zend_hash_index_update(&pobj->factories, bucket.handle_num, (void *)&bucket, sizeof(pimple_bucket_value), NULL) == SUCCESS) {
- Z_ADDREF_P(factory);
- RETURN_ZVAL(factory, 1 , 0);
- } else {
- pimple_free_bucket(&bucket);
- }
-
- RETURN_FALSE;
-}
-
-PHP_METHOD(Pimple, offsetSet)
-{
- zval *offset = NULL, *value = NULL;
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zz", &offset, &value) == FAILURE) {
- return;
- }
-
- pimple_object_write_dimension(getThis(), offset, value TSRMLS_CC);
-}
-
-PHP_METHOD(Pimple, offsetGet)
-{
- zval *offset = NULL, *retval = NULL;
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &offset) == FAILURE) {
- return;
- }
-
- retval = pimple_object_read_dimension(getThis(), offset, 0 TSRMLS_CC);
-
- RETVAL_ZVAL(retval, 1, 0);
-}
-
-PHP_METHOD(Pimple, offsetUnset)
-{
- zval *offset = NULL;
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &offset) == FAILURE) {
- return;
- }
-
- pimple_object_unset_dimension(getThis(), offset TSRMLS_CC);
-}
-
-PHP_METHOD(Pimple, offsetExists)
-{
- zval *offset = NULL;
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &offset) == FAILURE) {
- return;
- }
-
- RETVAL_BOOL(pimple_object_has_dimension(getThis(), offset, 1 TSRMLS_CC));
-}
-
-PHP_METHOD(Pimple, register)
-{
- zval *provider;
- zval **data;
- zval *retval = NULL;
- zval key;
-
- HashTable *array = NULL;
- HashPosition pos;
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "O|h", &provider, pimple_serviceprovider_ce, &array) == FAILURE) {
- return;
- }
-
- RETVAL_ZVAL(getThis(), 1, 0);
-
- zend_call_method_with_1_params(&provider, Z_OBJCE_P(provider), NULL, "register", &retval, getThis());
-
- if (retval) {
- zval_ptr_dtor(&retval);
- }
-
- if (!array) {
- return;
- }
-
- zend_hash_internal_pointer_reset_ex(array, &pos);
-
- while(zend_hash_get_current_data_ex(array, (void **)&data, &pos) == SUCCESS) {
- zend_hash_get_current_key_zval_ex(array, &key, &pos);
- pimple_object_write_dimension(getThis(), &key, *data TSRMLS_CC);
- zend_hash_move_forward_ex(array, &pos);
- }
-}
-
-PHP_METHOD(Pimple, __construct)
-{
- zval *values = NULL, **pData = NULL, offset;
- HashPosition pos;
- char *str_index = NULL;
- zend_uint str_length;
- ulong num_index;
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|a!", &values) == FAILURE) {
- return;
- }
-
- PIMPLE_DEPRECATE
-
- if (!values) {
- return;
- }
-
- zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(values), &pos);
- while (zend_hash_has_more_elements_ex(Z_ARRVAL_P(values), &pos) == SUCCESS) {
- zend_hash_get_current_data_ex(Z_ARRVAL_P(values), (void **)&pData, &pos);
- zend_hash_get_current_key_ex(Z_ARRVAL_P(values), &str_index, &str_length, &num_index, 0, &pos);
- INIT_ZVAL(offset);
- if (zend_hash_get_current_key_type_ex(Z_ARRVAL_P(values), &pos) == HASH_KEY_IS_LONG) {
- ZVAL_LONG(&offset, num_index);
- } else {
- ZVAL_STRINGL(&offset, str_index, (str_length - 1), 0);
- }
- pimple_object_write_dimension(getThis(), &offset, *pData TSRMLS_CC);
- zend_hash_move_forward_ex(Z_ARRVAL_P(values), &pos);
- }
-}
-
-/*
- * This is PHP code snippet handling extend()s calls :
-
- $extended = function ($c) use ($callable, $factory) {
- return $callable($factory($c), $c);
- };
-
- */
-PHP_METHOD(PimpleClosure, invoker)
-{
- pimple_closure_object *pcobj = NULL;
- zval *arg = NULL, *retval = NULL, *newretval = NULL;
- zend_fcall_info fci = {0};
- zval **args[2];
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &arg) == FAILURE) {
- return;
- }
-
- pcobj = zend_object_store_get_object(getThis() TSRMLS_CC);
-
- fci.function_name = pcobj->factory;
- args[0] = &arg;
- zend_fcall_info_argp(&fci TSRMLS_CC, 1, args);
- fci.retval_ptr_ptr = &retval;
- fci.size = sizeof(fci);
-
- if (zend_call_function(&fci, NULL TSRMLS_CC) == FAILURE || EG(exception)) {
- efree(fci.params);
- return; /* Should here return default zval */
- }
-
- efree(fci.params);
- memset(&fci, 0, sizeof(fci));
- fci.size = sizeof(fci);
-
- fci.function_name = pcobj->callable;
- args[0] = &retval;
- args[1] = &arg;
- zend_fcall_info_argp(&fci TSRMLS_CC, 2, args);
- fci.retval_ptr_ptr = &newretval;
-
- if (zend_call_function(&fci, NULL TSRMLS_CC) == FAILURE || EG(exception)) {
- efree(fci.params);
- zval_ptr_dtor(&retval);
- return;
- }
-
- efree(fci.params);
- zval_ptr_dtor(&retval);
-
- RETVAL_ZVAL(newretval, 1 ,1);
-}
-
-PHP_MINIT_FUNCTION(pimple)
-{
- zend_class_entry tmp_ce_PsrContainerInterface, tmp_ce_PsrContainerExceptionInterface, tmp_ce_PsrNotFoundExceptionInterface;
- zend_class_entry tmp_ce_ExpectedInvokableException, tmp_ce_FrozenServiceException, tmp_ce_InvalidServiceIdentifierException, tmp_ce_UnknownIdentifierException;
- zend_class_entry tmp_pimple_ce, tmp_pimple_closure_ce, tmp_pimple_serviceprovider_iface_ce;
-
- /* Psr\Container namespace */
- INIT_NS_CLASS_ENTRY(tmp_ce_PsrContainerInterface, PSR_CONTAINER_NS, "ContainerInterface", pimple_ce_PsrContainerInterface_functions);
- INIT_NS_CLASS_ENTRY(tmp_ce_PsrContainerExceptionInterface, PSR_CONTAINER_NS, "ContainerExceptionInterface", pimple_ce_PsrContainerExceptionInterface_functions);
- INIT_NS_CLASS_ENTRY(tmp_ce_PsrNotFoundExceptionInterface, PSR_CONTAINER_NS, "NotFoundExceptionInterface", pimple_ce_PsrNotFoundExceptionInterface_functions);
-
- pimple_ce_PsrContainerInterface = zend_register_internal_interface(&tmp_ce_PsrContainerInterface TSRMLS_CC);
- pimple_ce_PsrContainerExceptionInterface = zend_register_internal_interface(&tmp_ce_PsrContainerExceptionInterface TSRMLS_CC);
- pimple_ce_PsrNotFoundExceptionInterface = zend_register_internal_interface(&tmp_ce_PsrNotFoundExceptionInterface TSRMLS_CC);
-
- zend_class_implements(pimple_ce_PsrNotFoundExceptionInterface TSRMLS_CC, 1, pimple_ce_PsrContainerExceptionInterface);
-
- /* Pimple\Exception namespace */
- INIT_NS_CLASS_ENTRY(tmp_ce_ExpectedInvokableException, PIMPLE_EXCEPTION_NS, "ExpectedInvokableException", NULL);
- INIT_NS_CLASS_ENTRY(tmp_ce_FrozenServiceException, PIMPLE_EXCEPTION_NS, "FrozenServiceException", pimple_ce_FrozenServiceException_functions);
- INIT_NS_CLASS_ENTRY(tmp_ce_InvalidServiceIdentifierException, PIMPLE_EXCEPTION_NS, "InvalidServiceIdentifierException", pimple_ce_InvalidServiceIdentifierException_functions);
- INIT_NS_CLASS_ENTRY(tmp_ce_UnknownIdentifierException, PIMPLE_EXCEPTION_NS, "UnknownIdentifierException", pimple_ce_UnknownIdentifierException_functions);
-
- pimple_ce_ExpectedInvokableException = zend_register_internal_class_ex(&tmp_ce_ExpectedInvokableException, spl_ce_InvalidArgumentException, NULL TSRMLS_CC);
- pimple_ce_FrozenServiceException = zend_register_internal_class_ex(&tmp_ce_FrozenServiceException, spl_ce_RuntimeException, NULL TSRMLS_CC);
- pimple_ce_InvalidServiceIdentifierException = zend_register_internal_class_ex(&tmp_ce_InvalidServiceIdentifierException, spl_ce_InvalidArgumentException, NULL TSRMLS_CC);
- pimple_ce_UnknownIdentifierException = zend_register_internal_class_ex(&tmp_ce_UnknownIdentifierException, spl_ce_InvalidArgumentException, NULL TSRMLS_CC);
-
- zend_class_implements(pimple_ce_ExpectedInvokableException TSRMLS_CC, 1, pimple_ce_PsrContainerExceptionInterface);
- zend_class_implements(pimple_ce_FrozenServiceException TSRMLS_CC, 1, pimple_ce_PsrContainerExceptionInterface);
- zend_class_implements(pimple_ce_InvalidServiceIdentifierException TSRMLS_CC, 1, pimple_ce_PsrContainerExceptionInterface);
- zend_class_implements(pimple_ce_UnknownIdentifierException TSRMLS_CC, 1, pimple_ce_PsrNotFoundExceptionInterface);
-
- /* Pimple namespace */
- INIT_NS_CLASS_ENTRY(tmp_pimple_ce, PIMPLE_NS, "Container", pimple_ce_functions);
- INIT_NS_CLASS_ENTRY(tmp_pimple_closure_ce, PIMPLE_NS, "ContainerClosure", NULL);
- INIT_NS_CLASS_ENTRY(tmp_pimple_serviceprovider_iface_ce, PIMPLE_NS, "ServiceProviderInterface", pimple_serviceprovider_iface_ce_functions);
-
- tmp_pimple_ce.create_object = pimple_object_create;
- tmp_pimple_closure_ce.create_object = pimple_closure_object_create;
-
- pimple_ce = zend_register_internal_class(&tmp_pimple_ce TSRMLS_CC);
- zend_class_implements(pimple_ce TSRMLS_CC, 1, zend_ce_arrayaccess);
-
- pimple_closure_ce = zend_register_internal_class(&tmp_pimple_closure_ce TSRMLS_CC);
- pimple_closure_ce->ce_flags |= ZEND_ACC_FINAL_CLASS;
-
- pimple_serviceprovider_ce = zend_register_internal_interface(&tmp_pimple_serviceprovider_iface_ce TSRMLS_CC);
-
- memcpy(&pimple_closure_object_handlers, zend_get_std_object_handlers(), sizeof(*zend_get_std_object_handlers()));
- pimple_object_handlers = std_object_handlers;
- pimple_closure_object_handlers.get_closure = pimple_closure_get_closure;
-
- pimple_closure_invoker_function.function_name = "Pimple closure internal invoker";
- pimple_closure_invoker_function.fn_flags |= ZEND_ACC_CLOSURE;
- pimple_closure_invoker_function.handler = ZEND_MN(PimpleClosure_invoker);
- pimple_closure_invoker_function.num_args = 1;
- pimple_closure_invoker_function.required_num_args = 1;
- pimple_closure_invoker_function.scope = pimple_closure_ce;
- pimple_closure_invoker_function.type = ZEND_INTERNAL_FUNCTION;
- pimple_closure_invoker_function.module = &pimple_module_entry;
-
- return SUCCESS;
-}
-
-PHP_MINFO_FUNCTION(pimple)
-{
- php_info_print_table_start();
- php_info_print_table_header(2, "SensioLabs Pimple C support", "enabled");
- php_info_print_table_row(2, "Pimple supported version", PIMPLE_VERSION);
- php_info_print_table_end();
-
- php_info_print_box_start(0);
- php_write((void *)ZEND_STRL("SensioLabs Pimple C support developed by Julien Pauli") TSRMLS_CC);
- if (!sapi_module.phpinfo_as_text) {
- php_write((void *)ZEND_STRL(sensiolabs_logo) TSRMLS_CC);
- }
- php_info_print_box_end();
-}
-
-zend_module_entry pimple_module_entry = {
- STANDARD_MODULE_HEADER,
- "pimple",
- NULL,
- PHP_MINIT(pimple),
- NULL,
- NULL,
- NULL,
- PHP_MINFO(pimple),
- PIMPLE_VERSION,
- STANDARD_MODULE_PROPERTIES
-};
-
-#ifdef COMPILE_DL_PIMPLE
-ZEND_GET_MODULE(pimple)
-#endif
diff --git a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/pimple_compat.h b/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/pimple_compat.h
deleted file mode 100644
index d234e174..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/pimple_compat.h
+++ /dev/null
@@ -1,81 +0,0 @@
-
-/*
- * 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_ */
diff --git a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/001.phpt b/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/001.phpt
deleted file mode 100644
index 0809ea23..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/001.phpt
+++ /dev/null
@@ -1,45 +0,0 @@
---TEST--
-Test for read_dim/write_dim handlers
---SKIPIF--
-
---FILE--
-
-
---EXPECTF--
-foo
-42
-foo2
-foo99
-baz
-strstr
\ No newline at end of file
diff --git a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/002.phpt b/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/002.phpt
deleted file mode 100644
index 7b56d2c1..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/002.phpt
+++ /dev/null
@@ -1,15 +0,0 @@
---TEST--
-Test for constructor
---SKIPIF--
-
---FILE--
-'foo'));
-var_dump($p[42]);
-?>
---EXPECT--
-NULL
-string(3) "foo"
diff --git a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/003.phpt b/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/003.phpt
deleted file mode 100644
index a22cfa35..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/003.phpt
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-Test empty dimensions
---SKIPIF--
-
---FILE--
-
---EXPECT--
-int(42)
-string(3) "bar"
\ No newline at end of file
diff --git a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/004.phpt b/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/004.phpt
deleted file mode 100644
index 1e1d2513..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/004.phpt
+++ /dev/null
@@ -1,30 +0,0 @@
---TEST--
-Test has/unset dim handlers
---SKIPIF--
-
---FILE--
-
---EXPECT--
-int(42)
-NULL
-bool(true)
-bool(false)
-bool(true)
-bool(true)
\ No newline at end of file
diff --git a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/005.phpt b/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/005.phpt
deleted file mode 100644
index 0479ee05..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/005.phpt
+++ /dev/null
@@ -1,27 +0,0 @@
---TEST--
-Test simple class inheritance
---SKIPIF--
-
---FILE--
-someAttr;
-?>
---EXPECT--
-string(3) "hit"
-foo
-fooAttr
\ No newline at end of file
diff --git a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/006.phpt b/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/006.phpt
deleted file mode 100644
index cfe8a119..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/006.phpt
+++ /dev/null
@@ -1,51 +0,0 @@
---TEST--
-Test complex class inheritance
---SKIPIF--
-
---FILE--
- '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"
\ No newline at end of file
diff --git a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/007.phpt b/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/007.phpt
deleted file mode 100644
index 5aac6838..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/007.phpt
+++ /dev/null
@@ -1,22 +0,0 @@
---TEST--
-Test for read_dim/write_dim handlers
---SKIPIF--
-
---FILE--
-
---EXPECTF--
-foo
-42
\ No newline at end of file
diff --git a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/008.phpt b/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/008.phpt
deleted file mode 100644
index db7eeec4..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/008.phpt
+++ /dev/null
@@ -1,29 +0,0 @@
---TEST--
-Test frozen services
---SKIPIF--
-
---FILE--
-
---EXPECTF--
diff --git a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/009.phpt b/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/009.phpt
deleted file mode 100644
index bb05ea29..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/009.phpt
+++ /dev/null
@@ -1,13 +0,0 @@
---TEST--
-Test service is called as callback, and only once
---SKIPIF--
-
---FILE--
-
---EXPECTF--
-bool(true)
\ No newline at end of file
diff --git a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/010.phpt b/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/010.phpt
deleted file mode 100644
index badce014..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/010.phpt
+++ /dev/null
@@ -1,45 +0,0 @@
---TEST--
-Test service is called as callback for every callback type
---SKIPIF--
-
---FILE--
-
---EXPECTF--
-callme
-called
-Foo::bar
-array(2) {
- [0]=>
- string(3) "Foo"
- [1]=>
- string(3) "bar"
-}
\ No newline at end of file
diff --git a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/011.phpt b/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/011.phpt
deleted file mode 100644
index 6682ab8e..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/011.phpt
+++ /dev/null
@@ -1,19 +0,0 @@
---TEST--
-Test service callback throwing an exception
---SKIPIF--
-
---FILE--
-
---EXPECTF--
-all right!
\ No newline at end of file
diff --git a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/012.phpt b/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/012.phpt
deleted file mode 100644
index 4c6ac486..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/012.phpt
+++ /dev/null
@@ -1,28 +0,0 @@
---TEST--
-Test service factory
---SKIPIF--
-
---FILE--
-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"
\ No newline at end of file
diff --git a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/013.phpt b/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/013.phpt
deleted file mode 100644
index f419958c..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/013.phpt
+++ /dev/null
@@ -1,33 +0,0 @@
---TEST--
-Test keys()
---SKIPIF--
-
---FILE--
-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)
-}
\ No newline at end of file
diff --git a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/014.phpt b/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/014.phpt
deleted file mode 100644
index ac937213..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/014.phpt
+++ /dev/null
@@ -1,30 +0,0 @@
---TEST--
-Test raw()
---SKIPIF--
-
---FILE--
-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"
\ No newline at end of file
diff --git a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/015.phpt b/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/015.phpt
deleted file mode 100644
index 314f008a..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/015.phpt
+++ /dev/null
@@ -1,17 +0,0 @@
---TEST--
-Test protect()
---SKIPIF--
-
---FILE--
-protect($f);
-
-var_dump($p['foo']);
---EXPECTF--
-object(Closure)#%i (0) {
-}
\ No newline at end of file
diff --git a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/016.phpt b/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/016.phpt
deleted file mode 100644
index e55edb0a..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/016.phpt
+++ /dev/null
@@ -1,24 +0,0 @@
---TEST--
-Test extend()
---SKIPIF--
-
---FILE--
-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"
\ No newline at end of file
diff --git a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/017.phpt b/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/017.phpt
deleted file mode 100644
index bac23ce0..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/017.phpt
+++ /dev/null
@@ -1,17 +0,0 @@
---TEST--
-Test extend() with exception in service extension
---SKIPIF--
-
---FILE--
-extend(12, function ($w) { throw new BadMethodCallException; });
-
-try {
- $p[12];
- echo "Exception expected";
-} catch (BadMethodCallException $e) { }
---EXPECTF--
diff --git a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/017_1.phpt b/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/017_1.phpt
deleted file mode 100644
index 8f881d6e..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/017_1.phpt
+++ /dev/null
@@ -1,17 +0,0 @@
---TEST--
-Test extend() with exception in service factory
---SKIPIF--
-
---FILE--
-extend(12, function ($w) { return 'foobar'; });
-
-try {
- $p[12];
- echo "Exception expected";
-} catch (BadMethodCallException $e) { }
---EXPECTF--
diff --git a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/018.phpt b/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/018.phpt
deleted file mode 100644
index 27c12a14..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/018.phpt
+++ /dev/null
@@ -1,23 +0,0 @@
---TEST--
-Test register()
---SKIPIF--
-
---FILE--
-register(new Foo, array(42 => 'bar'));
-
-var_dump($p[42]);
---EXPECTF--
-object(Pimple\Container)#1 (0) {
-}
-string(3) "bar"
\ No newline at end of file
diff --git a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/019.phpt b/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/019.phpt
deleted file mode 100644
index 28a9aeca..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/019.phpt
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-Test register() returns static and is a fluent interface
---SKIPIF--
-
---FILE--
-register(new Foo));
---EXPECTF--
-bool(true)
diff --git a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/bench.phpb b/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/bench.phpb
deleted file mode 100644
index 8f983e65..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/bench.phpb
+++ /dev/null
@@ -1,51 +0,0 @@
-factory($factory);
-
-$p['factory'] = $factory;
-
-echo $p['factory'];
-echo $p['factory'];
-echo $p['factory'];
-
-}
-
-echo microtime(true) - $time;
diff --git a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/bench_shared.phpb b/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/bench_shared.phpb
deleted file mode 100644
index aec541f0..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/ext/pimple/tests/bench_shared.phpb
+++ /dev/null
@@ -1,25 +0,0 @@
-
diff --git a/advancedcontentfilter/vendor/pimple/pimple/phpunit.xml.dist b/advancedcontentfilter/vendor/pimple/pimple/phpunit.xml.dist
deleted file mode 100644
index 5c8d487f..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/phpunit.xml.dist
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
- ./src/Pimple/Tests
-
-
-
diff --git a/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/Container.php b/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/Container.php
deleted file mode 100644
index 707b92b8..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/Container.php
+++ /dev/null
@@ -1,298 +0,0 @@
-factories = new \SplObjectStorage();
- $this->protected = new \SplObjectStorage();
-
- foreach ($values as $key => $value) {
- $this->offsetSet($key, $value);
- }
- }
-
- /**
- * Sets a parameter or an object.
- *
- * Objects must be defined as Closures.
- *
- * Allowing any PHP callable leads to difficult to debug problems
- * as function names (strings) are callable (creating a function with
- * the same name as an existing parameter would break your container).
- *
- * @param string $id The unique identifier for the parameter or object
- * @param mixed $value The value of the parameter or a closure to define an object
- *
- * @throws FrozenServiceException Prevent override of a frozen service
- */
- public function offsetSet($id, $value)
- {
- if (isset($this->frozen[$id])) {
- throw new FrozenServiceException($id);
- }
-
- $this->values[$id] = $value;
- $this->keys[$id] = true;
- }
-
- /**
- * Gets a parameter or an object.
- *
- * @param string $id The unique identifier for the parameter or object
- *
- * @return mixed The value of the parameter or an object
- *
- * @throws UnknownIdentifierException If the identifier is not defined
- */
- public function offsetGet($id)
- {
- if (!isset($this->keys[$id])) {
- throw new UnknownIdentifierException($id);
- }
-
- if (
- isset($this->raw[$id])
- || !\is_object($this->values[$id])
- || isset($this->protected[$this->values[$id]])
- || !\method_exists($this->values[$id], '__invoke')
- ) {
- return $this->values[$id];
- }
-
- if (isset($this->factories[$this->values[$id]])) {
- return $this->values[$id]($this);
- }
-
- $raw = $this->values[$id];
- $val = $this->values[$id] = $raw($this);
- $this->raw[$id] = $raw;
-
- $this->frozen[$id] = true;
-
- return $val;
- }
-
- /**
- * Checks if a parameter or an object is set.
- *
- * @param string $id The unique identifier for the parameter or object
- *
- * @return bool
- */
- public function offsetExists($id)
- {
- return isset($this->keys[$id]);
- }
-
- /**
- * Unsets a parameter or an object.
- *
- * @param string $id The unique identifier for the parameter or object
- */
- public function offsetUnset($id)
- {
- if (isset($this->keys[$id])) {
- if (\is_object($this->values[$id])) {
- unset($this->factories[$this->values[$id]], $this->protected[$this->values[$id]]);
- }
-
- unset($this->values[$id], $this->frozen[$id], $this->raw[$id], $this->keys[$id]);
- }
- }
-
- /**
- * Marks a callable as being a factory service.
- *
- * @param callable $callable A service definition to be used as a factory
- *
- * @return callable The passed callable
- *
- * @throws ExpectedInvokableException Service definition has to be a closure or an invokable object
- */
- public function factory($callable)
- {
- if (!\method_exists($callable, '__invoke')) {
- throw new ExpectedInvokableException('Service definition is not a Closure or invokable object.');
- }
-
- $this->factories->attach($callable);
-
- return $callable;
- }
-
- /**
- * Protects a callable from being interpreted as a service.
- *
- * This is useful when you want to store a callable as a parameter.
- *
- * @param callable $callable A callable to protect from being evaluated
- *
- * @return callable The passed callable
- *
- * @throws ExpectedInvokableException Service definition has to be a closure or an invokable object
- */
- public function protect($callable)
- {
- if (!\method_exists($callable, '__invoke')) {
- throw new ExpectedInvokableException('Callable is not a Closure or invokable object.');
- }
-
- $this->protected->attach($callable);
-
- return $callable;
- }
-
- /**
- * Gets a parameter or the closure defining an object.
- *
- * @param string $id The unique identifier for the parameter or object
- *
- * @return mixed The value of the parameter or the closure defining an object
- *
- * @throws UnknownIdentifierException If the identifier is not defined
- */
- public function raw($id)
- {
- if (!isset($this->keys[$id])) {
- throw new UnknownIdentifierException($id);
- }
-
- if (isset($this->raw[$id])) {
- return $this->raw[$id];
- }
-
- return $this->values[$id];
- }
-
- /**
- * Extends an object definition.
- *
- * Useful when you want to extend an existing object definition,
- * without necessarily loading that object.
- *
- * @param string $id The unique identifier for the object
- * @param callable $callable A service definition to extend the original
- *
- * @return callable The wrapped callable
- *
- * @throws UnknownIdentifierException If the identifier is not defined
- * @throws FrozenServiceException If the service is frozen
- * @throws InvalidServiceIdentifierException If the identifier belongs to a parameter
- * @throws ExpectedInvokableException If the extension callable is not a closure or an invokable object
- */
- public function extend($id, $callable)
- {
- if (!isset($this->keys[$id])) {
- throw new UnknownIdentifierException($id);
- }
-
- if (isset($this->frozen[$id])) {
- throw new FrozenServiceException($id);
- }
-
- if (!\is_object($this->values[$id]) || !\method_exists($this->values[$id], '__invoke')) {
- throw new InvalidServiceIdentifierException($id);
- }
-
- if (isset($this->protected[$this->values[$id]])) {
- @\trigger_error(\sprintf('How Pimple behaves when extending protected closures will be fixed in Pimple 4. Are you sure "%s" should be protected?', $id), \E_USER_DEPRECATED);
- }
-
- if (!\is_object($callable) || !\method_exists($callable, '__invoke')) {
- throw new ExpectedInvokableException('Extension service definition is not a Closure or invokable object.');
- }
-
- $factory = $this->values[$id];
-
- $extended = function ($c) use ($callable, $factory) {
- return $callable($factory($c), $c);
- };
-
- if (isset($this->factories[$factory])) {
- $this->factories->detach($factory);
- $this->factories->attach($extended);
- }
-
- return $this[$id] = $extended;
- }
-
- /**
- * Returns all defined value names.
- *
- * @return array An array of value names
- */
- public function keys()
- {
- return \array_keys($this->values);
- }
-
- /**
- * Registers a service provider.
- *
- * @param ServiceProviderInterface $provider A ServiceProviderInterface instance
- * @param array $values An array of values that customizes the provider
- *
- * @return static
- */
- public function register(ServiceProviderInterface $provider, array $values = array())
- {
- $provider->register($this);
-
- foreach ($values as $key => $value) {
- $this[$key] = $value;
- }
-
- return $this;
- }
-}
diff --git a/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/Exception/ExpectedInvokableException.php b/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/Exception/ExpectedInvokableException.php
deleted file mode 100644
index 7228421b..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/Exception/ExpectedInvokableException.php
+++ /dev/null
@@ -1,38 +0,0 @@
-
- */
-class ExpectedInvokableException extends \InvalidArgumentException implements ContainerExceptionInterface
-{
-}
diff --git a/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/Exception/FrozenServiceException.php b/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/Exception/FrozenServiceException.php
deleted file mode 100644
index e4d2f6d3..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/Exception/FrozenServiceException.php
+++ /dev/null
@@ -1,45 +0,0 @@
-
- */
-class FrozenServiceException extends \RuntimeException implements ContainerExceptionInterface
-{
- /**
- * @param string $id Identifier of the frozen service
- */
- public function __construct($id)
- {
- parent::__construct(\sprintf('Cannot override frozen service "%s".', $id));
- }
-}
diff --git a/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/Exception/InvalidServiceIdentifierException.php b/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/Exception/InvalidServiceIdentifierException.php
deleted file mode 100644
index 91e82f98..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/Exception/InvalidServiceIdentifierException.php
+++ /dev/null
@@ -1,45 +0,0 @@
-
- */
-class InvalidServiceIdentifierException extends \InvalidArgumentException implements NotFoundExceptionInterface
-{
- /**
- * @param string $id The invalid identifier
- */
- public function __construct($id)
- {
- parent::__construct(\sprintf('Identifier "%s" does not contain an object definition.', $id));
- }
-}
diff --git a/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/Exception/UnknownIdentifierException.php b/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/Exception/UnknownIdentifierException.php
deleted file mode 100644
index fb6b626e..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/Exception/UnknownIdentifierException.php
+++ /dev/null
@@ -1,45 +0,0 @@
-
- */
-class UnknownIdentifierException extends \InvalidArgumentException implements NotFoundExceptionInterface
-{
- /**
- * @param string $id The unknown identifier
- */
- public function __construct($id)
- {
- parent::__construct(\sprintf('Identifier "%s" is not defined.', $id));
- }
-}
diff --git a/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/Psr11/Container.php b/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/Psr11/Container.php
deleted file mode 100644
index cadbfffa..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/Psr11/Container.php
+++ /dev/null
@@ -1,55 +0,0 @@
-
- */
-final class Container implements ContainerInterface
-{
- private $pimple;
-
- public function __construct(PimpleContainer $pimple)
- {
- $this->pimple = $pimple;
- }
-
- public function get($id)
- {
- return $this->pimple[$id];
- }
-
- public function has($id)
- {
- return isset($this->pimple[$id]);
- }
-}
diff --git a/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/Psr11/ServiceLocator.php b/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/Psr11/ServiceLocator.php
deleted file mode 100644
index 3361c6f1..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/Psr11/ServiceLocator.php
+++ /dev/null
@@ -1,75 +0,0 @@
-
- */
-class ServiceLocator implements ContainerInterface
-{
- private $container;
- private $aliases = array();
-
- /**
- * @param PimpleContainer $container The Container instance used to locate services
- * @param array $ids Array of service ids that can be located. String keys can be used to define aliases
- */
- public function __construct(PimpleContainer $container, array $ids)
- {
- $this->container = $container;
-
- foreach ($ids as $key => $id) {
- $this->aliases[\is_int($key) ? $id : $key] = $id;
- }
- }
-
- /**
- * {@inheritdoc}
- */
- public function get($id)
- {
- if (!isset($this->aliases[$id])) {
- throw new UnknownIdentifierException($id);
- }
-
- return $this->container[$this->aliases[$id]];
- }
-
- /**
- * {@inheritdoc}
- */
- public function has($id)
- {
- return isset($this->aliases[$id]) && isset($this->container[$this->aliases[$id]]);
- }
-}
diff --git a/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/ServiceIterator.php b/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/ServiceIterator.php
deleted file mode 100644
index 5cde5188..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/ServiceIterator.php
+++ /dev/null
@@ -1,69 +0,0 @@
-
- */
-final class ServiceIterator implements \Iterator
-{
- private $container;
- private $ids;
-
- public function __construct(Container $container, array $ids)
- {
- $this->container = $container;
- $this->ids = $ids;
- }
-
- public function rewind()
- {
- \reset($this->ids);
- }
-
- public function current()
- {
- return $this->container[\current($this->ids)];
- }
-
- public function key()
- {
- return \current($this->ids);
- }
-
- public function next()
- {
- \next($this->ids);
- }
-
- public function valid()
- {
- return null !== \key($this->ids);
- }
-}
diff --git a/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/ServiceProviderInterface.php b/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/ServiceProviderInterface.php
deleted file mode 100644
index c004594b..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/ServiceProviderInterface.php
+++ /dev/null
@@ -1,46 +0,0 @@
-value = $value;
-
- return $service;
- }
-}
diff --git a/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/NonInvokable.php b/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/NonInvokable.php
deleted file mode 100644
index 33cd4e54..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/NonInvokable.php
+++ /dev/null
@@ -1,34 +0,0 @@
-factory(function () {
- return new Service();
- });
- }
-}
diff --git a/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/Service.php b/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/Service.php
deleted file mode 100644
index d71b184d..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/Service.php
+++ /dev/null
@@ -1,35 +0,0 @@
-
- */
-class Service
-{
- public $value;
-}
diff --git a/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/Tests/PimpleServiceProviderInterfaceTest.php b/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/Tests/PimpleServiceProviderInterfaceTest.php
deleted file mode 100644
index 8e5c4c73..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/Tests/PimpleServiceProviderInterfaceTest.php
+++ /dev/null
@@ -1,76 +0,0 @@
-
- */
-class PimpleServiceProviderInterfaceTest extends \PHPUnit_Framework_TestCase
-{
- public function testProvider()
- {
- $pimple = new Container();
-
- $pimpleServiceProvider = new Fixtures\PimpleServiceProvider();
- $pimpleServiceProvider->register($pimple);
-
- $this->assertEquals('value', $pimple['param']);
- $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $pimple['service']);
-
- $serviceOne = $pimple['factory'];
- $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceOne);
-
- $serviceTwo = $pimple['factory'];
- $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceTwo);
-
- $this->assertNotSame($serviceOne, $serviceTwo);
- }
-
- public function testProviderWithRegisterMethod()
- {
- $pimple = new Container();
-
- $pimple->register(new Fixtures\PimpleServiceProvider(), array(
- 'anotherParameter' => 'anotherValue',
- ));
-
- $this->assertEquals('value', $pimple['param']);
- $this->assertEquals('anotherValue', $pimple['anotherParameter']);
-
- $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $pimple['service']);
-
- $serviceOne = $pimple['factory'];
- $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceOne);
-
- $serviceTwo = $pimple['factory'];
- $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceTwo);
-
- $this->assertNotSame($serviceOne, $serviceTwo);
- }
-}
diff --git a/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/Tests/PimpleTest.php b/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/Tests/PimpleTest.php
deleted file mode 100644
index acb66e00..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/Tests/PimpleTest.php
+++ /dev/null
@@ -1,589 +0,0 @@
-
- */
-class PimpleTest extends \PHPUnit_Framework_TestCase
-{
- public function testWithString()
- {
- $pimple = new Container();
- $pimple['param'] = 'value';
-
- $this->assertEquals('value', $pimple['param']);
- }
-
- public function testWithClosure()
- {
- $pimple = new Container();
- $pimple['service'] = function () {
- return new Fixtures\Service();
- };
-
- $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $pimple['service']);
- }
-
- public function testServicesShouldBeDifferent()
- {
- $pimple = new Container();
- $pimple['service'] = $pimple->factory(function () {
- return new Fixtures\Service();
- });
-
- $serviceOne = $pimple['service'];
- $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceOne);
-
- $serviceTwo = $pimple['service'];
- $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceTwo);
-
- $this->assertNotSame($serviceOne, $serviceTwo);
- }
-
- public function testShouldPassContainerAsParameter()
- {
- $pimple = new Container();
- $pimple['service'] = function () {
- return new Fixtures\Service();
- };
- $pimple['container'] = function ($container) {
- return $container;
- };
-
- $this->assertNotSame($pimple, $pimple['service']);
- $this->assertSame($pimple, $pimple['container']);
- }
-
- public function testIsset()
- {
- $pimple = new Container();
- $pimple['param'] = 'value';
- $pimple['service'] = function () {
- return new Fixtures\Service();
- };
-
- $pimple['null'] = null;
-
- $this->assertTrue(isset($pimple['param']));
- $this->assertTrue(isset($pimple['service']));
- $this->assertTrue(isset($pimple['null']));
- $this->assertFalse(isset($pimple['non_existent']));
- }
-
- public function testConstructorInjection()
- {
- $params = array('param' => 'value');
- $pimple = new Container($params);
-
- $this->assertSame($params['param'], $pimple['param']);
- }
-
- /**
- * @expectedException \Pimple\Exception\UnknownIdentifierException
- * @expectedExceptionMessage Identifier "foo" is not defined.
- */
- public function testOffsetGetValidatesKeyIsPresent()
- {
- $pimple = new Container();
- echo $pimple['foo'];
- }
-
- /**
- * @group legacy
- * @expectedException \InvalidArgumentException
- * @expectedExceptionMessage Identifier "foo" is not defined.
- */
- public function testLegacyOffsetGetValidatesKeyIsPresent()
- {
- $pimple = new Container();
- echo $pimple['foo'];
- }
-
- public function testOffsetGetHonorsNullValues()
- {
- $pimple = new Container();
- $pimple['foo'] = null;
- $this->assertNull($pimple['foo']);
- }
-
- public function testUnset()
- {
- $pimple = new Container();
- $pimple['param'] = 'value';
- $pimple['service'] = function () {
- return new Fixtures\Service();
- };
-
- unset($pimple['param'], $pimple['service']);
- $this->assertFalse(isset($pimple['param']));
- $this->assertFalse(isset($pimple['service']));
- }
-
- /**
- * @dataProvider serviceDefinitionProvider
- */
- public function testShare($service)
- {
- $pimple = new Container();
- $pimple['shared_service'] = $service;
-
- $serviceOne = $pimple['shared_service'];
- $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceOne);
-
- $serviceTwo = $pimple['shared_service'];
- $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceTwo);
-
- $this->assertSame($serviceOne, $serviceTwo);
- }
-
- /**
- * @dataProvider serviceDefinitionProvider
- */
- public function testProtect($service)
- {
- $pimple = new Container();
- $pimple['protected'] = $pimple->protect($service);
-
- $this->assertSame($service, $pimple['protected']);
- }
-
- public function testGlobalFunctionNameAsParameterValue()
- {
- $pimple = new Container();
- $pimple['global_function'] = 'strlen';
- $this->assertSame('strlen', $pimple['global_function']);
- }
-
- public function testRaw()
- {
- $pimple = new Container();
- $pimple['service'] = $definition = $pimple->factory(function () { return 'foo'; });
- $this->assertSame($definition, $pimple->raw('service'));
- }
-
- public function testRawHonorsNullValues()
- {
- $pimple = new Container();
- $pimple['foo'] = null;
- $this->assertNull($pimple->raw('foo'));
- }
-
- public function testFluentRegister()
- {
- $pimple = new Container();
- $this->assertSame($pimple, $pimple->register($this->getMockBuilder('Pimple\ServiceProviderInterface')->getMock()));
- }
-
- /**
- * @expectedException \Pimple\Exception\UnknownIdentifierException
- * @expectedExceptionMessage Identifier "foo" is not defined.
- */
- public function testRawValidatesKeyIsPresent()
- {
- $pimple = new Container();
- $pimple->raw('foo');
- }
-
- /**
- * @group legacy
- * @expectedException \InvalidArgumentException
- * @expectedExceptionMessage Identifier "foo" is not defined.
- */
- public function testLegacyRawValidatesKeyIsPresent()
- {
- $pimple = new Container();
- $pimple->raw('foo');
- }
-
- /**
- * @dataProvider serviceDefinitionProvider
- */
- public function testExtend($service)
- {
- $pimple = new Container();
- $pimple['shared_service'] = function () {
- return new Fixtures\Service();
- };
- $pimple['factory_service'] = $pimple->factory(function () {
- return new Fixtures\Service();
- });
-
- $pimple->extend('shared_service', $service);
- $serviceOne = $pimple['shared_service'];
- $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceOne);
- $serviceTwo = $pimple['shared_service'];
- $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceTwo);
- $this->assertSame($serviceOne, $serviceTwo);
- $this->assertSame($serviceOne->value, $serviceTwo->value);
-
- $pimple->extend('factory_service', $service);
- $serviceOne = $pimple['factory_service'];
- $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceOne);
- $serviceTwo = $pimple['factory_service'];
- $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceTwo);
- $this->assertNotSame($serviceOne, $serviceTwo);
- $this->assertNotSame($serviceOne->value, $serviceTwo->value);
- }
-
- public function testExtendDoesNotLeakWithFactories()
- {
- if (extension_loaded('pimple')) {
- $this->markTestSkipped('Pimple extension does not support this test');
- }
- $pimple = new Container();
-
- $pimple['foo'] = $pimple->factory(function () { return; });
- $pimple['foo'] = $pimple->extend('foo', function ($foo, $pimple) { return; });
- unset($pimple['foo']);
-
- $p = new \ReflectionProperty($pimple, 'values');
- $p->setAccessible(true);
- $this->assertEmpty($p->getValue($pimple));
-
- $p = new \ReflectionProperty($pimple, 'factories');
- $p->setAccessible(true);
- $this->assertCount(0, $p->getValue($pimple));
- }
-
- /**
- * @expectedException \Pimple\Exception\UnknownIdentifierException
- * @expectedExceptionMessage Identifier "foo" is not defined.
- */
- public function testExtendValidatesKeyIsPresent()
- {
- $pimple = new Container();
- $pimple->extend('foo', function () {});
- }
-
- /**
- * @group legacy
- * @expectedException \InvalidArgumentException
- * @expectedExceptionMessage Identifier "foo" is not defined.
- */
- public function testLegacyExtendValidatesKeyIsPresent()
- {
- $pimple = new Container();
- $pimple->extend('foo', function () {});
- }
-
- public function testKeys()
- {
- $pimple = new Container();
- $pimple['foo'] = 123;
- $pimple['bar'] = 123;
-
- $this->assertEquals(array('foo', 'bar'), $pimple->keys());
- }
-
- /** @test */
- public function settingAnInvokableObjectShouldTreatItAsFactory()
- {
- $pimple = new Container();
- $pimple['invokable'] = new Fixtures\Invokable();
-
- $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $pimple['invokable']);
- }
-
- /** @test */
- public function settingNonInvokableObjectShouldTreatItAsParameter()
- {
- $pimple = new Container();
- $pimple['non_invokable'] = new Fixtures\NonInvokable();
-
- $this->assertInstanceOf('Pimple\Tests\Fixtures\NonInvokable', $pimple['non_invokable']);
- }
-
- /**
- * @dataProvider badServiceDefinitionProvider
- * @expectedException \Pimple\Exception\ExpectedInvokableException
- * @expectedExceptionMessage Service definition is not a Closure or invokable object.
- */
- public function testFactoryFailsForInvalidServiceDefinitions($service)
- {
- $pimple = new Container();
- $pimple->factory($service);
- }
-
- /**
- * @group legacy
- * @dataProvider badServiceDefinitionProvider
- * @expectedException \InvalidArgumentException
- * @expectedExceptionMessage Service definition is not a Closure or invokable object.
- */
- public function testLegacyFactoryFailsForInvalidServiceDefinitions($service)
- {
- $pimple = new Container();
- $pimple->factory($service);
- }
-
- /**
- * @dataProvider badServiceDefinitionProvider
- * @expectedException \Pimple\Exception\ExpectedInvokableException
- * @expectedExceptionMessage Callable is not a Closure or invokable object.
- */
- public function testProtectFailsForInvalidServiceDefinitions($service)
- {
- $pimple = new Container();
- $pimple->protect($service);
- }
-
- /**
- * @group legacy
- * @dataProvider badServiceDefinitionProvider
- * @expectedException \InvalidArgumentException
- * @expectedExceptionMessage Callable is not a Closure or invokable object.
- */
- public function testLegacyProtectFailsForInvalidServiceDefinitions($service)
- {
- $pimple = new Container();
- $pimple->protect($service);
- }
-
- /**
- * @dataProvider badServiceDefinitionProvider
- * @expectedException \Pimple\Exception\InvalidServiceIdentifierException
- * @expectedExceptionMessage Identifier "foo" does not contain an object definition.
- */
- public function testExtendFailsForKeysNotContainingServiceDefinitions($service)
- {
- $pimple = new Container();
- $pimple['foo'] = $service;
- $pimple->extend('foo', function () {});
- }
-
- /**
- * @group legacy
- * @dataProvider badServiceDefinitionProvider
- * @expectedException \InvalidArgumentException
- * @expectedExceptionMessage Identifier "foo" does not contain an object definition.
- */
- public function testLegacyExtendFailsForKeysNotContainingServiceDefinitions($service)
- {
- $pimple = new Container();
- $pimple['foo'] = $service;
- $pimple->extend('foo', function () {});
- }
-
- /**
- * @group legacy
- * @expectedDeprecation How Pimple behaves when extending protected closures will be fixed in Pimple 4. Are you sure "foo" should be protected?
- */
- public function testExtendingProtectedClosureDeprecation()
- {
- $pimple = new Container();
- $pimple['foo'] = $pimple->protect(function () {
- return 'bar';
- });
-
- $pimple->extend('foo', function ($value) {
- return $value.'-baz';
- });
-
- $this->assertSame('bar-baz', $pimple['foo']);
- }
-
- /**
- * @dataProvider badServiceDefinitionProvider
- * @expectedException \Pimple\Exception\ExpectedInvokableException
- * @expectedExceptionMessage Extension service definition is not a Closure or invokable object.
- */
- public function testExtendFailsForInvalidServiceDefinitions($service)
- {
- $pimple = new Container();
- $pimple['foo'] = function () {};
- $pimple->extend('foo', $service);
- }
-
- /**
- * @group legacy
- * @dataProvider badServiceDefinitionProvider
- * @expectedException \InvalidArgumentException
- * @expectedExceptionMessage Extension service definition is not a Closure or invokable object.
- */
- public function testLegacyExtendFailsForInvalidServiceDefinitions($service)
- {
- $pimple = new Container();
- $pimple['foo'] = function () {};
- $pimple->extend('foo', $service);
- }
-
- /**
- * @expectedException \Pimple\Exception\FrozenServiceException
- * @expectedExceptionMessage Cannot override frozen service "foo".
- */
- public function testExtendFailsIfFrozenServiceIsNonInvokable()
- {
- $pimple = new Container();
- $pimple['foo'] = function () {
- return new Fixtures\NonInvokable();
- };
- $foo = $pimple['foo'];
-
- $pimple->extend('foo', function () {});
- }
-
- /**
- * @expectedException \Pimple\Exception\FrozenServiceException
- * @expectedExceptionMessage Cannot override frozen service "foo".
- */
- public function testExtendFailsIfFrozenServiceIsInvokable()
- {
- $pimple = new Container();
- $pimple['foo'] = function () {
- return new Fixtures\Invokable();
- };
- $foo = $pimple['foo'];
-
- $pimple->extend('foo', function () {});
- }
-
- /**
- * Provider for invalid service definitions.
- */
- public function badServiceDefinitionProvider()
- {
- return array(
- array(123),
- array(new Fixtures\NonInvokable()),
- );
- }
-
- /**
- * Provider for service definitions.
- */
- public function serviceDefinitionProvider()
- {
- return array(
- array(function ($value) {
- $service = new Fixtures\Service();
- $service->value = $value;
-
- return $service;
- }),
- array(new Fixtures\Invokable()),
- );
- }
-
- public function testDefiningNewServiceAfterFreeze()
- {
- $pimple = new Container();
- $pimple['foo'] = function () {
- return 'foo';
- };
- $foo = $pimple['foo'];
-
- $pimple['bar'] = function () {
- return 'bar';
- };
- $this->assertSame('bar', $pimple['bar']);
- }
-
- /**
- * @expectedException \Pimple\Exception\FrozenServiceException
- * @expectedExceptionMessage Cannot override frozen service "foo".
- */
- public function testOverridingServiceAfterFreeze()
- {
- $pimple = new Container();
- $pimple['foo'] = function () {
- return 'foo';
- };
- $foo = $pimple['foo'];
-
- $pimple['foo'] = function () {
- return 'bar';
- };
- }
-
- /**
- * @group legacy
- * @expectedException \RuntimeException
- * @expectedExceptionMessage Cannot override frozen service "foo".
- */
- public function testLegacyOverridingServiceAfterFreeze()
- {
- $pimple = new Container();
- $pimple['foo'] = function () {
- return 'foo';
- };
- $foo = $pimple['foo'];
-
- $pimple['foo'] = function () {
- return 'bar';
- };
- }
-
- public function testRemovingServiceAfterFreeze()
- {
- $pimple = new Container();
- $pimple['foo'] = function () {
- return 'foo';
- };
- $foo = $pimple['foo'];
-
- unset($pimple['foo']);
- $pimple['foo'] = function () {
- return 'bar';
- };
- $this->assertSame('bar', $pimple['foo']);
- }
-
- public function testExtendingService()
- {
- $pimple = new Container();
- $pimple['foo'] = function () {
- return 'foo';
- };
- $pimple['foo'] = $pimple->extend('foo', function ($foo, $app) {
- return "$foo.bar";
- });
- $pimple['foo'] = $pimple->extend('foo', function ($foo, $app) {
- return "$foo.baz";
- });
- $this->assertSame('foo.bar.baz', $pimple['foo']);
- }
-
- public function testExtendingServiceAfterOtherServiceFreeze()
- {
- $pimple = new Container();
- $pimple['foo'] = function () {
- return 'foo';
- };
- $pimple['bar'] = function () {
- return 'bar';
- };
- $foo = $pimple['foo'];
-
- $pimple['bar'] = $pimple->extend('bar', function ($bar, $app) {
- return "$bar.baz";
- });
- $this->assertSame('bar.baz', $pimple['bar']);
- }
-}
diff --git a/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/Tests/Psr11/ContainerTest.php b/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/Tests/Psr11/ContainerTest.php
deleted file mode 100644
index 7ca2d7ff..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/Tests/Psr11/ContainerTest.php
+++ /dev/null
@@ -1,77 +0,0 @@
-assertSame($pimple['service'], $psr->get('service'));
- }
-
- /**
- * @expectedException \Psr\Container\NotFoundExceptionInterface
- * @expectedExceptionMessage Identifier "service" is not defined.
- */
- public function testGetThrowsExceptionIfServiceIsNotFound()
- {
- $pimple = new Container();
- $psr = new PsrContainer($pimple);
-
- $psr->get('service');
- }
-
- public function testHasReturnsTrueIfServiceExists()
- {
- $pimple = new Container();
- $pimple['service'] = function () {
- return new Service();
- };
- $psr = new PsrContainer($pimple);
-
- $this->assertTrue($psr->has('service'));
- }
-
- public function testHasReturnsFalseIfServiceDoesNotExist()
- {
- $pimple = new Container();
- $psr = new PsrContainer($pimple);
-
- $this->assertFalse($psr->has('service'));
- }
-}
diff --git a/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/Tests/Psr11/ServiceLocatorTest.php b/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/Tests/Psr11/ServiceLocatorTest.php
deleted file mode 100644
index c9a08125..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/Tests/Psr11/ServiceLocatorTest.php
+++ /dev/null
@@ -1,134 +0,0 @@
-
- */
-class ServiceLocatorTest extends TestCase
-{
- public function testCanAccessServices()
- {
- $pimple = new Container();
- $pimple['service'] = function () {
- return new Fixtures\Service();
- };
- $locator = new ServiceLocator($pimple, array('service'));
-
- $this->assertSame($pimple['service'], $locator->get('service'));
- }
-
- public function testCanAccessAliasedServices()
- {
- $pimple = new Container();
- $pimple['service'] = function () {
- return new Fixtures\Service();
- };
- $locator = new ServiceLocator($pimple, array('alias' => 'service'));
-
- $this->assertSame($pimple['service'], $locator->get('alias'));
- }
-
- /**
- * @expectedException \Pimple\Exception\UnknownIdentifierException
- * @expectedExceptionMessage Identifier "service" is not defined.
- */
- public function testCannotAccessAliasedServiceUsingRealIdentifier()
- {
- $pimple = new Container();
- $pimple['service'] = function () {
- return new Fixtures\Service();
- };
- $locator = new ServiceLocator($pimple, array('alias' => 'service'));
-
- $service = $locator->get('service');
- }
-
- /**
- * @expectedException \Pimple\Exception\UnknownIdentifierException
- * @expectedExceptionMessage Identifier "foo" is not defined.
- */
- public function testGetValidatesServiceCanBeLocated()
- {
- $pimple = new Container();
- $pimple['service'] = function () {
- return new Fixtures\Service();
- };
- $locator = new ServiceLocator($pimple, array('alias' => 'service'));
-
- $service = $locator->get('foo');
- }
-
- /**
- * @expectedException \Pimple\Exception\UnknownIdentifierException
- * @expectedExceptionMessage Identifier "invalid" is not defined.
- */
- public function testGetValidatesTargetServiceExists()
- {
- $pimple = new Container();
- $pimple['service'] = function () {
- return new Fixtures\Service();
- };
- $locator = new ServiceLocator($pimple, array('alias' => 'invalid'));
-
- $service = $locator->get('alias');
- }
-
- public function testHasValidatesServiceCanBeLocated()
- {
- $pimple = new Container();
- $pimple['service1'] = function () {
- return new Fixtures\Service();
- };
- $pimple['service2'] = function () {
- return new Fixtures\Service();
- };
- $locator = new ServiceLocator($pimple, array('service1'));
-
- $this->assertTrue($locator->has('service1'));
- $this->assertFalse($locator->has('service2'));
- }
-
- public function testHasChecksIfTargetServiceExists()
- {
- $pimple = new Container();
- $pimple['service'] = function () {
- return new Fixtures\Service();
- };
- $locator = new ServiceLocator($pimple, array('foo' => 'service', 'bar' => 'invalid'));
-
- $this->assertTrue($locator->has('foo'));
- $this->assertFalse($locator->has('bar'));
- }
-}
diff --git a/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/Tests/ServiceIteratorTest.php b/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/Tests/ServiceIteratorTest.php
deleted file mode 100644
index 5dd52f0d..00000000
--- a/advancedcontentfilter/vendor/pimple/pimple/src/Pimple/Tests/ServiceIteratorTest.php
+++ /dev/null
@@ -1,52 +0,0 @@
-assertSame(array('service1' => $pimple['service1'], 'service2' => $pimple['service2']), iterator_to_array($iterator));
- }
-}
diff --git a/advancedcontentfilter/vendor/psr/container/README.md b/advancedcontentfilter/vendor/psr/container/README.md
index 084f6df5..1b9d9e57 100644
--- a/advancedcontentfilter/vendor/psr/container/README.md
+++ b/advancedcontentfilter/vendor/psr/container/README.md
@@ -1,5 +1,13 @@
-# PSR Container
+Container interface
+==============
-This repository holds all interfaces/classes/traits related to [PSR-11](https://github.com/container-interop/fig-standards/blob/master/proposed/container.md).
+This repository holds all interfaces related to [PSR-11 (Container Interface)][psr-url].
+
+Note that this is not a Container implementation of its own. It is merely abstractions that describe the components of a Dependency Injection Container.
+
+The installable [package][package-url] and [implementations][implementation-url] are listed on Packagist.
+
+[psr-url]: https://www.php-fig.org/psr/psr-11/
+[package-url]: https://packagist.org/packages/psr/container
+[implementation-url]: https://packagist.org/providers/psr/container-implementation
-Note that this is not a container implementation of its own. See the specification for more details.
diff --git a/advancedcontentfilter/vendor/psr/container/composer.json b/advancedcontentfilter/vendor/psr/container/composer.json
index b8ee0126..017f41ea 100644
--- a/advancedcontentfilter/vendor/psr/container/composer.json
+++ b/advancedcontentfilter/vendor/psr/container/composer.json
@@ -8,20 +8,15 @@
"authors": [
{
"name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
+ "homepage": "https://www.php-fig.org/"
}
],
"require": {
- "php": ">=5.3.0"
+ "php": ">=7.4.0"
},
"autoload": {
"psr-4": {
"Psr\\Container\\": "src/"
}
- },
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
}
}
diff --git a/advancedcontentfilter/vendor/psr/container/src/ContainerExceptionInterface.php b/advancedcontentfilter/vendor/psr/container/src/ContainerExceptionInterface.php
index d35c6b4d..0f213f2f 100644
--- a/advancedcontentfilter/vendor/psr/container/src/ContainerExceptionInterface.php
+++ b/advancedcontentfilter/vendor/psr/container/src/ContainerExceptionInterface.php
@@ -1,13 +1,12 @@
=7.0.0",
+ "psr/http-message": "^1.0 || ^2.0"
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Message\\": "src/"
+ }
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ }
+}
diff --git a/advancedcontentfilter/vendor/psr/http-factory/src/RequestFactoryInterface.php b/advancedcontentfilter/vendor/psr/http-factory/src/RequestFactoryInterface.php
new file mode 100644
index 00000000..cb39a08b
--- /dev/null
+++ b/advancedcontentfilter/vendor/psr/http-factory/src/RequestFactoryInterface.php
@@ -0,0 +1,18 @@
+=5.3.0"
+ "php": "^7.2 || ^8.0"
},
"autoload": {
"psr-4": {
@@ -20,7 +20,7 @@
},
"extra": {
"branch-alias": {
- "dev-master": "1.0.x-dev"
+ "dev-master": "2.0.x-dev"
}
}
}
diff --git a/advancedcontentfilter/vendor/psr/http-message/docs/PSR7-Interfaces.md b/advancedcontentfilter/vendor/psr/http-message/docs/PSR7-Interfaces.md
new file mode 100644
index 00000000..3a7e7dda
--- /dev/null
+++ b/advancedcontentfilter/vendor/psr/http-message/docs/PSR7-Interfaces.md
@@ -0,0 +1,130 @@
+# Interfaces
+
+The purpose of this list is to help in finding the methods when working with PSR-7. This can be considered as a cheatsheet for PSR-7 interfaces.
+
+The interfaces defined in PSR-7 are the following:
+
+| Class Name | Description |
+|---|---|
+| [Psr\Http\Message\MessageInterface](http://www.php-fig.org/psr/psr-7/#psrhttpmessagemessageinterface) | Representation of a HTTP message |
+| [Psr\Http\Message\RequestInterface](http://www.php-fig.org/psr/psr-7/#psrhttpmessagerequestinterface) | Representation of an outgoing, client-side request. |
+| [Psr\Http\Message\ServerRequestInterface](http://www.php-fig.org/psr/psr-7/#psrhttpmessageserverrequestinterface) | Representation of an incoming, server-side HTTP request. |
+| [Psr\Http\Message\ResponseInterface](http://www.php-fig.org/psr/psr-7/#psrhttpmessageresponseinterface) | Representation of an outgoing, server-side response. |
+| [Psr\Http\Message\StreamInterface](http://www.php-fig.org/psr/psr-7/#psrhttpmessagestreaminterface) | Describes a data stream |
+| [Psr\Http\Message\UriInterface](http://www.php-fig.org/psr/psr-7/#psrhttpmessageuriinterface) | Value object representing a URI. |
+| [Psr\Http\Message\UploadedFileInterface](http://www.php-fig.org/psr/psr-7/#psrhttpmessageuploadedfileinterface) | Value object representing a file uploaded through an HTTP request. |
+
+## `Psr\Http\Message\MessageInterface` Methods
+
+| Method Name | Description | Notes |
+|------------------------------------| ----------- | ----- |
+| `getProtocolVersion()` | Retrieve HTTP protocol version | 1.0 or 1.1 |
+| `withProtocolVersion($version)` | Returns new message instance with given HTTP protocol version | |
+| `getHeaders()` | Retrieve all HTTP Headers | [Request Header List](https://en.wikipedia.org/wiki/List_of_HTTP_header_fields#Request_fields), [Response Header List](https://en.wikipedia.org/wiki/List_of_HTTP_header_fields#Response_fields) |
+| `hasHeader($name)` | Checks if HTTP Header with given name exists | |
+| `getHeader($name)` | Retrieves a array with the values for a single header | |
+| `getHeaderLine($name)` | Retrieves a comma-separated string of the values for a single header | |
+| `withHeader($name, $value)` | Returns new message instance with given HTTP Header | if the header existed in the original instance, replaces the header value from the original message with the value provided when creating the new instance. |
+| `withAddedHeader($name, $value)` | Returns new message instance with appended value to given header | If header already exists value will be appended, if not a new header will be created |
+| `withoutHeader($name)` | Removes HTTP Header with given name| |
+| `getBody()` | Retrieves the HTTP Message Body | Returns object implementing `StreamInterface`|
+| `withBody(StreamInterface $body)` | Returns new message instance with given HTTP Message Body | |
+
+
+## `Psr\Http\Message\RequestInterface` Methods
+
+Same methods as `Psr\Http\Message\MessageInterface` + the following methods:
+
+| Method Name | Description | Notes |
+|------------------------------------| ----------- | ----- |
+| `getRequestTarget()` | Retrieves the message's request target | origin-form, absolute-form, authority-form, asterisk-form ([RFC7230](https://www.rfc-editor.org/rfc/rfc7230.txt)) |
+| `withRequestTarget($requestTarget)` | Return a new message instance with the specific request-target | |
+| `getMethod()` | Retrieves the HTTP method of the request. | GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE (defined in [RFC7231](https://tools.ietf.org/html/rfc7231)), PATCH (defined in [RFC5789](https://tools.ietf.org/html/rfc5789)) |
+| `withMethod($method)` | Returns a new message instance with the provided HTTP method | |
+| `getUri()` | Retrieves the URI instance | |
+| `withUri(UriInterface $uri, $preserveHost = false)` | Returns a new message instance with the provided URI | |
+
+
+## `Psr\Http\Message\ServerRequestInterface` Methods
+
+Same methods as `Psr\Http\Message\RequestInterface` + the following methods:
+
+| Method Name | Description | Notes |
+|------------------------------------| ----------- | ----- |
+| `getServerParams() ` | Retrieve server parameters | Typically derived from `$_SERVER` |
+| `getCookieParams()` | Retrieves cookies sent by the client to the server. | Typically derived from `$_COOKIES` |
+| `withCookieParams(array $cookies)` | Returns a new request instance with the specified cookies | |
+| `withQueryParams(array $query)` | Returns a new request instance with the specified query string arguments | |
+| `getUploadedFiles()` | Retrieve normalized file upload data | |
+| `withUploadedFiles(array $uploadedFiles)` | Returns a new request instance with the specified uploaded files | |
+| `getParsedBody()` | Retrieve any parameters provided in the request body | |
+| `withParsedBody($data)` | Returns a new request instance with the specified body parameters | |
+| `getAttributes()` | Retrieve attributes derived from the request | |
+| `getAttribute($name, $default = null)` | Retrieve a single derived request attribute | |
+| `withAttribute($name, $value)` | Returns a new request instance with the specified derived request attribute | |
+| `withoutAttribute($name)` | Returns a new request instance that without the specified derived request attribute | |
+
+## `Psr\Http\Message\ResponseInterface` Methods:
+
+Same methods as `Psr\Http\Message\MessageInterface` + the following methods:
+
+| Method Name | Description | Notes |
+|------------------------------------| ----------- | ----- |
+| `getStatusCode()` | Gets the response status code. | |
+| `withStatus($code, $reasonPhrase = '')` | Returns a new response instance with the specified status code and, optionally, reason phrase. | |
+| `getReasonPhrase()` | Gets the response reason phrase associated with the status code. | |
+
+## `Psr\Http\Message\StreamInterface` Methods
+
+| Method Name | Description | Notes |
+|------------------------------------| ----------- | ----- |
+| `__toString()` | Reads all data from the stream into a string, from the beginning to end. | |
+| `close()` | Closes the stream and any underlying resources. | |
+| `detach()` | Separates any underlying resources from the stream. | |
+| `getSize()` | Get the size of the stream if known. | |
+| `eof()` | Returns true if the stream is at the end of the stream.| |
+| `isSeekable()` | Returns whether or not the stream is seekable. | |
+| `seek($offset, $whence = SEEK_SET)` | Seek to a position in the stream. | |
+| `rewind()` | Seek to the beginning of the stream. | |
+| `isWritable()` | Returns whether or not the stream is writable. | |
+| `write($string)` | Write data to the stream. | |
+| `isReadable()` | Returns whether or not the stream is readable. | |
+| `read($length)` | Read data from the stream. | |
+| `getContents()` | Returns the remaining contents in a string | |
+| `getMetadata($key = null)()` | Get stream metadata as an associative array or retrieve a specific key. | |
+
+## `Psr\Http\Message\UriInterface` Methods
+
+| Method Name | Description | Notes |
+|------------------------------------| ----------- | ----- |
+| `getScheme()` | Retrieve the scheme component of the URI. | |
+| `getAuthority()` | Retrieve the authority component of the URI. | |
+| `getUserInfo()` | Retrieve the user information component of the URI. | |
+| `getHost()` | Retrieve the host component of the URI. | |
+| `getPort()` | Retrieve the port component of the URI. | |
+| `getPath()` | Retrieve the path component of the URI. | |
+| `getQuery()` | Retrieve the query string of the URI. | |
+| `getFragment()` | Retrieve the fragment component of the URI. | |
+| `withScheme($scheme)` | Return an instance with the specified scheme. | |
+| `withUserInfo($user, $password = null)` | Return an instance with the specified user information. | |
+| `withHost($host)` | Return an instance with the specified host. | |
+| `withPort($port)` | Return an instance with the specified port. | |
+| `withPath($path)` | Return an instance with the specified path. | |
+| `withQuery($query)` | Return an instance with the specified query string. | |
+| `withFragment($fragment)` | Return an instance with the specified URI fragment. | |
+| `__toString()` | Return the string representation as a URI reference. | |
+
+## `Psr\Http\Message\UploadedFileInterface` Methods
+
+| Method Name | Description | Notes |
+|------------------------------------| ----------- | ----- |
+| `getStream()` | Retrieve a stream representing the uploaded file. | |
+| `moveTo($targetPath)` | Move the uploaded file to a new location. | |
+| `getSize()` | Retrieve the file size. | |
+| `getError()` | Retrieve the error associated with the uploaded file. | |
+| `getClientFilename()` | Retrieve the filename sent by the client. | |
+| `getClientMediaType()` | Retrieve the media type sent by the client. | |
+
+> `RequestInterface`, `ServerRequestInterface`, `ResponseInterface` extend `MessageInterface` because the `Request` and the `Response` are `HTTP Messages`.
+> When using `ServerRequestInterface`, both `RequestInterface` and `Psr\Http\Message\MessageInterface` methods are considered.
+
diff --git a/advancedcontentfilter/vendor/psr/http-message/docs/PSR7-Usage.md b/advancedcontentfilter/vendor/psr/http-message/docs/PSR7-Usage.md
new file mode 100644
index 00000000..b6d048a3
--- /dev/null
+++ b/advancedcontentfilter/vendor/psr/http-message/docs/PSR7-Usage.md
@@ -0,0 +1,159 @@
+### PSR-7 Usage
+
+All PSR-7 applications comply with these interfaces
+They were created to establish a standard between middleware implementations.
+
+> `RequestInterface`, `ServerRequestInterface`, `ResponseInterface` extend `MessageInterface` because the `Request` and the `Response` are `HTTP Messages`.
+> When using `ServerRequestInterface`, both `RequestInterface` and `Psr\Http\Message\MessageInterface` methods are considered.
+
+
+The following examples will illustrate how basic operations are done in PSR-7.
+
+##### Examples
+
+
+For this examples to work (at least) a PSR-7 implementation package is required. (eg: zendframework/zend-diactoros, guzzlehttp/psr7, slim/slim, etc)
+All PSR-7 implementations should have the same behaviour.
+
+The following will be assumed:
+`$request` is an object of `Psr\Http\Message\RequestInterface` and
+
+`$response` is an object implementing `Psr\Http\Message\RequestInterface`
+
+
+### Working with HTTP Headers
+
+#### Adding headers to response:
+
+```php
+$response->withHeader('My-Custom-Header', 'My Custom Message');
+```
+
+#### Appending values to headers
+
+```php
+$response->withAddedHeader('My-Custom-Header', 'The second message');
+```
+
+#### Checking if header exists:
+
+```php
+$request->hasHeader('My-Custom-Header'); // will return false
+$response->hasHeader('My-Custom-Header'); // will return true
+```
+
+> Note: My-Custom-Header was only added in the Response
+
+#### Getting comma-separated values from a header (also applies to request)
+
+```php
+// getting value from request headers
+$request->getHeaderLine('Content-Type'); // will return: "text/html; charset=UTF-8"
+// getting value from response headers
+$response->getHeaderLine('My-Custom-Header'); // will return: "My Custom Message; The second message"
+```
+
+#### Getting array of value from a header (also applies to request)
+```php
+// getting value from request headers
+$request->getHeader('Content-Type'); // will return: ["text/html", "charset=UTF-8"]
+// getting value from response headers
+$response->getHeader('My-Custom-Header'); // will return: ["My Custom Message", "The second message"]
+```
+
+#### Removing headers from HTTP Messages
+```php
+// removing a header from Request, removing deprecated "Content-MD5" header
+$request->withoutHeader('Content-MD5');
+
+// removing a header from Response
+// effect: the browser won't know the size of the stream
+// the browser will download the stream till it ends
+$response->withoutHeader('Content-Length');
+```
+
+### Working with HTTP Message Body
+
+When working with the PSR-7 there are two methods of implementation:
+#### 1. Getting the body separately
+
+> This method makes the body handling easier to understand and is useful when repeatedly calling body methods. (You only call `getBody()` once). Using this method mistakes like `$response->write()` are also prevented.
+
+```php
+$body = $response->getBody();
+// operations on body, eg. read, write, seek
+// ...
+// replacing the old body
+$response->withBody($body);
+// this last statement is optional as we working with objects
+// in this case the "new" body is same with the "old" one
+// the $body variable has the same value as the one in $request, only the reference is passed
+```
+
+#### 2. Working directly on response
+
+> This method is useful when only performing few operations as the `$request->getBody()` statement fragment is required
+
+```php
+$response->getBody()->write('hello');
+```
+
+### Getting the body contents
+
+The following snippet gets the contents of a stream contents.
+> Note: Streams must be rewinded, if content was written into streams, it will be ignored when calling `getContents()` because the stream pointer is set to the last character, which is `\0` - meaning end of stream.
+```php
+$body = $response->getBody();
+$body->rewind(); // or $body->seek(0);
+$bodyText = $body->getContents();
+```
+> Note: If `$body->seek(1)` is called before `$body->getContents()`, the first character will be ommited as the starting pointer is set to `1`, not `0`. This is why using `$body->rewind()` is recommended.
+
+### Append to body
+
+```php
+$response->getBody()->write('Hello'); // writing directly
+$body = $request->getBody(); // which is a `StreamInterface`
+$body->write('xxxxx');
+```
+
+### Prepend to body
+Prepending is different when it comes to streams. The content must be copied before writing the content to be prepended.
+The following example will explain the behaviour of streams.
+
+```php
+// assuming our response is initially empty
+$body = $repsonse->getBody();
+// writing the string "abcd"
+$body->write('abcd');
+
+// seeking to start of stream
+$body->seek(0);
+// writing 'ef'
+$body->write('ef'); // at this point the stream contains "efcd"
+```
+
+#### Prepending by rewriting separately
+
+```php
+// assuming our response body stream only contains: "abcd"
+$body = $response->getBody();
+$body->rewind();
+$contents = $body->getContents(); // abcd
+// seeking the stream to beginning
+$body->rewind();
+$body->write('ef'); // stream contains "efcd"
+$body->write($contents); // stream contains "efabcd"
+```
+
+> Note: `getContents()` seeks the stream while reading it, therefore if the second `rewind()` method call was not present the stream would have resulted in `abcdefabcd` because the `write()` method appends to stream if not preceeded by `rewind()` or `seek(0)`.
+
+#### Prepending by using contents as a string
+```php
+$body = $response->getBody();
+$body->rewind();
+$contents = $body->getContents(); // efabcd
+$contents = 'ef'.$contents;
+$body->rewind();
+$body->write($contents);
+```
diff --git a/advancedcontentfilter/vendor/psr/http-message/src/MessageInterface.php b/advancedcontentfilter/vendor/psr/http-message/src/MessageInterface.php
index dd46e5ec..a83c9851 100644
--- a/advancedcontentfilter/vendor/psr/http-message/src/MessageInterface.php
+++ b/advancedcontentfilter/vendor/psr/http-message/src/MessageInterface.php
@@ -23,7 +23,7 @@ interface MessageInterface
*
* @return string HTTP protocol version.
*/
- public function getProtocolVersion();
+ public function getProtocolVersion(): string;
/**
* Return an instance with the specified HTTP protocol version.
@@ -38,7 +38,7 @@ interface MessageInterface
* @param string $version HTTP protocol version
* @return static
*/
- public function withProtocolVersion($version);
+ public function withProtocolVersion(string $version): MessageInterface;
/**
* Retrieves all message header values.
@@ -65,7 +65,7 @@ interface MessageInterface
* key MUST be a header name, and each value MUST be an array of strings
* for that header.
*/
- public function getHeaders();
+ public function getHeaders(): array;
/**
* Checks if a header exists by the given case-insensitive name.
@@ -75,7 +75,7 @@ interface MessageInterface
* name using a case-insensitive string comparison. Returns false if
* no matching header name is found in the message.
*/
- public function hasHeader($name);
+ public function hasHeader(string $name): bool;
/**
* Retrieves a message header value by the given case-insensitive name.
@@ -91,7 +91,7 @@ interface MessageInterface
* header. If the header does not appear in the message, this method MUST
* return an empty array.
*/
- public function getHeader($name);
+ public function getHeader(string $name): array;
/**
* Retrieves a comma-separated string of the values for a single header.
@@ -112,7 +112,7 @@ interface MessageInterface
* concatenated together using a comma. If the header does not appear in
* the message, this method MUST return an empty string.
*/
- public function getHeaderLine($name);
+ public function getHeaderLine(string $name): string;
/**
* Return an instance with the provided value replacing the specified header.
@@ -129,7 +129,7 @@ interface MessageInterface
* @return static
* @throws \InvalidArgumentException for invalid header names or values.
*/
- public function withHeader($name, $value);
+ public function withHeader(string $name, $value): MessageInterface;
/**
* Return an instance with the specified header appended with the given value.
@@ -147,7 +147,7 @@ interface MessageInterface
* @return static
* @throws \InvalidArgumentException for invalid header names or values.
*/
- public function withAddedHeader($name, $value);
+ public function withAddedHeader(string $name, $value): MessageInterface;
/**
* Return an instance without the specified header.
@@ -161,14 +161,14 @@ interface MessageInterface
* @param string $name Case-insensitive header field name to remove.
* @return static
*/
- public function withoutHeader($name);
+ public function withoutHeader(string $name): MessageInterface;
/**
* Gets the body of the message.
*
* @return StreamInterface Returns the body as a stream.
*/
- public function getBody();
+ public function getBody(): StreamInterface;
/**
* Return an instance with the specified message body.
@@ -183,5 +183,5 @@ interface MessageInterface
* @return static
* @throws \InvalidArgumentException When the body is not valid.
*/
- public function withBody(StreamInterface $body);
+ public function withBody(StreamInterface $body): MessageInterface;
}
diff --git a/advancedcontentfilter/vendor/psr/http-message/src/RequestInterface.php b/advancedcontentfilter/vendor/psr/http-message/src/RequestInterface.php
index a96d4fd6..33f85e55 100644
--- a/advancedcontentfilter/vendor/psr/http-message/src/RequestInterface.php
+++ b/advancedcontentfilter/vendor/psr/http-message/src/RequestInterface.php
@@ -39,7 +39,7 @@ interface RequestInterface extends MessageInterface
*
* @return string
*/
- public function getRequestTarget();
+ public function getRequestTarget(): string;
/**
* Return an instance with the specific request-target.
@@ -55,17 +55,18 @@ interface RequestInterface extends MessageInterface
*
* @link http://tools.ietf.org/html/rfc7230#section-5.3 (for the various
* request-target forms allowed in request messages)
- * @param mixed $requestTarget
+ * @param string $requestTarget
* @return static
*/
- public function withRequestTarget($requestTarget);
+ public function withRequestTarget(string $requestTarget): RequestInterface;
+
/**
* Retrieves the HTTP method of the request.
*
* @return string Returns the request method.
*/
- public function getMethod();
+ public function getMethod(): string;
/**
* Return an instance with the provided HTTP method.
@@ -82,7 +83,7 @@ interface RequestInterface extends MessageInterface
* @return static
* @throws \InvalidArgumentException for invalid HTTP methods.
*/
- public function withMethod($method);
+ public function withMethod(string $method): RequestInterface;
/**
* Retrieves the URI instance.
@@ -93,7 +94,7 @@ interface RequestInterface extends MessageInterface
* @return UriInterface Returns a UriInterface instance
* representing the URI of the request.
*/
- public function getUri();
+ public function getUri(): UriInterface;
/**
* Returns an instance with the provided URI.
@@ -125,5 +126,5 @@ interface RequestInterface extends MessageInterface
* @param bool $preserveHost Preserve the original state of the Host header.
* @return static
*/
- public function withUri(UriInterface $uri, $preserveHost = false);
+ public function withUri(UriInterface $uri, bool $preserveHost = false): RequestInterface;
}
diff --git a/advancedcontentfilter/vendor/psr/http-message/src/ResponseInterface.php b/advancedcontentfilter/vendor/psr/http-message/src/ResponseInterface.php
index c306514e..e9299a91 100644
--- a/advancedcontentfilter/vendor/psr/http-message/src/ResponseInterface.php
+++ b/advancedcontentfilter/vendor/psr/http-message/src/ResponseInterface.php
@@ -27,7 +27,7 @@ interface ResponseInterface extends MessageInterface
*
* @return int Status code.
*/
- public function getStatusCode();
+ public function getStatusCode(): int;
/**
* Return an instance with the specified status code and, optionally, reason phrase.
@@ -49,7 +49,7 @@ interface ResponseInterface extends MessageInterface
* @return static
* @throws \InvalidArgumentException For invalid status code arguments.
*/
- public function withStatus($code, $reasonPhrase = '');
+ public function withStatus(int $code, string $reasonPhrase = ''): ResponseInterface;
/**
* Gets the response reason phrase associated with the status code.
@@ -64,5 +64,5 @@ interface ResponseInterface extends MessageInterface
* @link http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml
* @return string Reason phrase; must return an empty string if none present.
*/
- public function getReasonPhrase();
+ public function getReasonPhrase(): string;
}
diff --git a/advancedcontentfilter/vendor/psr/http-message/src/ServerRequestInterface.php b/advancedcontentfilter/vendor/psr/http-message/src/ServerRequestInterface.php
index 02512340..8625d0e1 100644
--- a/advancedcontentfilter/vendor/psr/http-message/src/ServerRequestInterface.php
+++ b/advancedcontentfilter/vendor/psr/http-message/src/ServerRequestInterface.php
@@ -51,7 +51,7 @@ interface ServerRequestInterface extends RequestInterface
*
* @return array
*/
- public function getServerParams();
+ public function getServerParams(): array;
/**
* Retrieve cookies.
@@ -63,7 +63,7 @@ interface ServerRequestInterface extends RequestInterface
*
* @return array
*/
- public function getCookieParams();
+ public function getCookieParams(): array;
/**
* Return an instance with the specified cookies.
@@ -82,7 +82,7 @@ interface ServerRequestInterface extends RequestInterface
* @param array $cookies Array of key/value pairs representing cookies.
* @return static
*/
- public function withCookieParams(array $cookies);
+ public function withCookieParams(array $cookies): ServerRequestInterface;
/**
* Retrieve query string arguments.
@@ -96,7 +96,7 @@ interface ServerRequestInterface extends RequestInterface
*
* @return array
*/
- public function getQueryParams();
+ public function getQueryParams(): array;
/**
* Return an instance with the specified query string arguments.
@@ -120,7 +120,7 @@ interface ServerRequestInterface extends RequestInterface
* $_GET.
* @return static
*/
- public function withQueryParams(array $query);
+ public function withQueryParams(array $query): ServerRequestInterface;
/**
* Retrieve normalized file upload data.
@@ -134,7 +134,7 @@ interface ServerRequestInterface extends RequestInterface
* @return array An array tree of UploadedFileInterface instances; an empty
* array MUST be returned if no data is present.
*/
- public function getUploadedFiles();
+ public function getUploadedFiles(): array;
/**
* Create a new instance with the specified uploaded files.
@@ -147,7 +147,7 @@ interface ServerRequestInterface extends RequestInterface
* @return static
* @throws \InvalidArgumentException if an invalid structure is provided.
*/
- public function withUploadedFiles(array $uploadedFiles);
+ public function withUploadedFiles(array $uploadedFiles): ServerRequestInterface;
/**
* Retrieve any parameters provided in the request body.
@@ -194,7 +194,7 @@ interface ServerRequestInterface extends RequestInterface
* @throws \InvalidArgumentException if an unsupported argument type is
* provided.
*/
- public function withParsedBody($data);
+ public function withParsedBody($data): ServerRequestInterface;
/**
* Retrieve attributes derived from the request.
@@ -207,7 +207,7 @@ interface ServerRequestInterface extends RequestInterface
*
* @return array Attributes derived from the request.
*/
- public function getAttributes();
+ public function getAttributes(): array;
/**
* Retrieve a single derived request attribute.
@@ -224,7 +224,7 @@ interface ServerRequestInterface extends RequestInterface
* @param mixed $default Default value to return if the attribute does not exist.
* @return mixed
*/
- public function getAttribute($name, $default = null);
+ public function getAttribute(string $name, $default = null);
/**
* Return an instance with the specified derived request attribute.
@@ -241,7 +241,7 @@ interface ServerRequestInterface extends RequestInterface
* @param mixed $value The value of the attribute.
* @return static
*/
- public function withAttribute($name, $value);
+ public function withAttribute(string $name, $value): ServerRequestInterface;
/**
* Return an instance that removes the specified derived request attribute.
@@ -257,5 +257,5 @@ interface ServerRequestInterface extends RequestInterface
* @param string $name The attribute name.
* @return static
*/
- public function withoutAttribute($name);
+ public function withoutAttribute(string $name): ServerRequestInterface;
}
diff --git a/advancedcontentfilter/vendor/psr/http-message/src/StreamInterface.php b/advancedcontentfilter/vendor/psr/http-message/src/StreamInterface.php
index f68f3912..a62aabb8 100644
--- a/advancedcontentfilter/vendor/psr/http-message/src/StreamInterface.php
+++ b/advancedcontentfilter/vendor/psr/http-message/src/StreamInterface.php
@@ -25,14 +25,14 @@ interface StreamInterface
* @see http://php.net/manual/en/language.oop5.magic.php#object.tostring
* @return string
*/
- public function __toString();
+ public function __toString(): string;
/**
* Closes the stream and any underlying resources.
*
* @return void
*/
- public function close();
+ public function close(): void;
/**
* Separates any underlying resources from the stream.
@@ -48,7 +48,7 @@ interface StreamInterface
*
* @return int|null Returns the size in bytes if known, or null if unknown.
*/
- public function getSize();
+ public function getSize(): ?int;
/**
* Returns the current position of the file read/write pointer
@@ -56,21 +56,21 @@ interface StreamInterface
* @return int Position of the file pointer
* @throws \RuntimeException on error.
*/
- public function tell();
+ public function tell(): int;
/**
* Returns true if the stream is at the end of the stream.
*
* @return bool
*/
- public function eof();
+ public function eof(): bool;
/**
* Returns whether or not the stream is seekable.
*
* @return bool
*/
- public function isSeekable();
+ public function isSeekable(): bool;
/**
* Seek to a position in the stream.
@@ -84,7 +84,7 @@ interface StreamInterface
* SEEK_END: Set position to end-of-stream plus offset.
* @throws \RuntimeException on failure.
*/
- public function seek($offset, $whence = SEEK_SET);
+ public function seek(int $offset, int $whence = SEEK_SET): void;
/**
* Seek to the beginning of the stream.
@@ -96,14 +96,14 @@ interface StreamInterface
* @link http://www.php.net/manual/en/function.fseek.php
* @throws \RuntimeException on failure.
*/
- public function rewind();
+ public function rewind(): void;
/**
* Returns whether or not the stream is writable.
*
* @return bool
*/
- public function isWritable();
+ public function isWritable(): bool;
/**
* Write data to the stream.
@@ -112,14 +112,14 @@ interface StreamInterface
* @return int Returns the number of bytes written to the stream.
* @throws \RuntimeException on failure.
*/
- public function write($string);
+ public function write(string $string): int;
/**
* Returns whether or not the stream is readable.
*
* @return bool
*/
- public function isReadable();
+ public function isReadable(): bool;
/**
* Read data from the stream.
@@ -131,7 +131,7 @@ interface StreamInterface
* if no bytes are available.
* @throws \RuntimeException if an error occurs.
*/
- public function read($length);
+ public function read(int $length): string;
/**
* Returns the remaining contents in a string
@@ -140,7 +140,7 @@ interface StreamInterface
* @throws \RuntimeException if unable to read or an error occurs while
* reading.
*/
- public function getContents();
+ public function getContents(): string;
/**
* Get stream metadata as an associative array or retrieve a specific key.
@@ -149,10 +149,10 @@ interface StreamInterface
* stream_get_meta_data() function.
*
* @link http://php.net/manual/en/function.stream-get-meta-data.php
- * @param string $key Specific metadata to retrieve.
+ * @param string|null $key Specific metadata to retrieve.
* @return array|mixed|null Returns an associative array if no key is
* provided. Returns a specific key value if a key is provided and the
* value is found, or null if the key is not found.
*/
- public function getMetadata($key = null);
+ public function getMetadata(?string $key = null);
}
diff --git a/advancedcontentfilter/vendor/psr/http-message/src/UploadedFileInterface.php b/advancedcontentfilter/vendor/psr/http-message/src/UploadedFileInterface.php
index f8a6901e..dd19d653 100644
--- a/advancedcontentfilter/vendor/psr/http-message/src/UploadedFileInterface.php
+++ b/advancedcontentfilter/vendor/psr/http-message/src/UploadedFileInterface.php
@@ -28,7 +28,7 @@ interface UploadedFileInterface
* @throws \RuntimeException in cases when no stream is available or can be
* created.
*/
- public function getStream();
+ public function getStream(): StreamInterface;
/**
* Move the uploaded file to a new location.
@@ -62,7 +62,7 @@ interface UploadedFileInterface
* @throws \RuntimeException on any error during the move operation, or on
* the second or subsequent call to the method.
*/
- public function moveTo($targetPath);
+ public function moveTo(string $targetPath): void;
/**
* Retrieve the file size.
@@ -73,7 +73,7 @@ interface UploadedFileInterface
*
* @return int|null The file size in bytes or null if unknown.
*/
- public function getSize();
+ public function getSize(): ?int;
/**
* Retrieve the error associated with the uploaded file.
@@ -89,7 +89,7 @@ interface UploadedFileInterface
* @see http://php.net/manual/en/features.file-upload.errors.php
* @return int One of PHP's UPLOAD_ERR_XXX constants.
*/
- public function getError();
+ public function getError(): int;
/**
* Retrieve the filename sent by the client.
@@ -104,7 +104,7 @@ interface UploadedFileInterface
* @return string|null The filename sent by the client or null if none
* was provided.
*/
- public function getClientFilename();
+ public function getClientFilename(): ?string;
/**
* Retrieve the media type sent by the client.
@@ -119,5 +119,5 @@ interface UploadedFileInterface
* @return string|null The media type sent by the client or null if none
* was provided.
*/
- public function getClientMediaType();
+ public function getClientMediaType(): ?string;
}
diff --git a/advancedcontentfilter/vendor/psr/http-message/src/UriInterface.php b/advancedcontentfilter/vendor/psr/http-message/src/UriInterface.php
index 9d7ab9ea..15e2cf28 100644
--- a/advancedcontentfilter/vendor/psr/http-message/src/UriInterface.php
+++ b/advancedcontentfilter/vendor/psr/http-message/src/UriInterface.php
@@ -1,4 +1,5 @@
=7.0",
+ "psr/http-message": "^1.0 || ^2.0"
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Server\\": "src/"
+ }
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ }
+}
diff --git a/advancedcontentfilter/vendor/psr/http-server-handler/src/RequestHandlerInterface.php b/advancedcontentfilter/vendor/psr/http-server-handler/src/RequestHandlerInterface.php
new file mode 100644
index 00000000..83911e26
--- /dev/null
+++ b/advancedcontentfilter/vendor/psr/http-server-handler/src/RequestHandlerInterface.php
@@ -0,0 +1,22 @@
+=7.0",
+ "psr/http-message": "^1.0 || ^2.0",
+ "psr/http-server-handler": "^1.0"
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Server\\": "src/"
+ }
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ }
+}
diff --git a/advancedcontentfilter/vendor/psr/http-server-middleware/src/MiddlewareInterface.php b/advancedcontentfilter/vendor/psr/http-server-middleware/src/MiddlewareInterface.php
new file mode 100644
index 00000000..a6c14f8c
--- /dev/null
+++ b/advancedcontentfilter/vendor/psr/http-server-middleware/src/MiddlewareInterface.php
@@ -0,0 +1,25 @@
+ true,
'null' => null,
@@ -110,6 +114,7 @@ abstract class LoggerInterfaceTest extends \PHPUnit_Framework_TestCase
'nested' => array('with object' => new DummyTest),
'object' => new \DateTime,
'resource' => fopen('php://memory', 'r'),
+ 'closed' => $closed,
);
$this->getLogger()->warning('Crazy context data', $context);
@@ -131,10 +136,3 @@ abstract class LoggerInterfaceTest extends \PHPUnit_Framework_TestCase
$this->assertEquals($expected, $this->getLogs());
}
}
-
-class DummyTest
-{
- public function __toString()
- {
- }
-}
diff --git a/advancedcontentfilter/vendor/psr/log/Psr/Log/Test/TestLogger.php b/advancedcontentfilter/vendor/psr/log/Psr/Log/Test/TestLogger.php
new file mode 100644
index 00000000..1be32304
--- /dev/null
+++ b/advancedcontentfilter/vendor/psr/log/Psr/Log/Test/TestLogger.php
@@ -0,0 +1,147 @@
+ $level,
+ 'message' => $message,
+ 'context' => $context,
+ ];
+
+ $this->recordsByLevel[$record['level']][] = $record;
+ $this->records[] = $record;
+ }
+
+ public function hasRecords($level)
+ {
+ return isset($this->recordsByLevel[$level]);
+ }
+
+ public function hasRecord($record, $level)
+ {
+ if (is_string($record)) {
+ $record = ['message' => $record];
+ }
+ return $this->hasRecordThatPasses(function ($rec) use ($record) {
+ if ($rec['message'] !== $record['message']) {
+ return false;
+ }
+ if (isset($record['context']) && $rec['context'] !== $record['context']) {
+ return false;
+ }
+ return true;
+ }, $level);
+ }
+
+ public function hasRecordThatContains($message, $level)
+ {
+ return $this->hasRecordThatPasses(function ($rec) use ($message) {
+ return strpos($rec['message'], $message) !== false;
+ }, $level);
+ }
+
+ public function hasRecordThatMatches($regex, $level)
+ {
+ return $this->hasRecordThatPasses(function ($rec) use ($regex) {
+ return preg_match($regex, $rec['message']) > 0;
+ }, $level);
+ }
+
+ public function hasRecordThatPasses(callable $predicate, $level)
+ {
+ if (!isset($this->recordsByLevel[$level])) {
+ return false;
+ }
+ foreach ($this->recordsByLevel[$level] as $i => $rec) {
+ if (call_user_func($predicate, $rec, $i)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public function __call($method, $args)
+ {
+ if (preg_match('/(.*)(Debug|Info|Notice|Warning|Error|Critical|Alert|Emergency)(.*)/', $method, $matches) > 0) {
+ $genericMethod = $matches[1] . ('Records' !== $matches[3] ? 'Record' : '') . $matches[3];
+ $level = strtolower($matches[2]);
+ if (method_exists($this, $genericMethod)) {
+ $args[] = $level;
+ return call_user_func_array([$this, $genericMethod], $args);
+ }
+ }
+ throw new \BadMethodCallException('Call to undefined method ' . get_class($this) . '::' . $method . '()');
+ }
+
+ public function reset()
+ {
+ $this->records = [];
+ $this->recordsByLevel = [];
+ }
+}
diff --git a/advancedcontentfilter/vendor/psr/log/README.md b/advancedcontentfilter/vendor/psr/log/README.md
index 574bc1cb..a9f20c43 100644
--- a/advancedcontentfilter/vendor/psr/log/README.md
+++ b/advancedcontentfilter/vendor/psr/log/README.md
@@ -7,6 +7,13 @@ This repository holds all interfaces/classes/traits related to
Note that this is not a logger of its own. It is merely an interface that
describes a logger. See the specification for more details.
+Installation
+------------
+
+```bash
+composer require psr/log
+```
+
Usage
-----
@@ -31,6 +38,12 @@ class Foo
if ($this->logger) {
$this->logger->info('Doing work');
}
+
+ try {
+ $this->doSomethingElse();
+ } catch (Exception $exception) {
+ $this->logger->error('Oh no!', array('exception' => $exception));
+ }
// do something useful
}
diff --git a/advancedcontentfilter/vendor/psr/log/composer.json b/advancedcontentfilter/vendor/psr/log/composer.json
index 87934d70..ca056953 100644
--- a/advancedcontentfilter/vendor/psr/log/composer.json
+++ b/advancedcontentfilter/vendor/psr/log/composer.json
@@ -7,7 +7,7 @@
"authors": [
{
"name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
+ "homepage": "https://www.php-fig.org/"
}
],
"require": {
@@ -20,7 +20,7 @@
},
"extra": {
"branch-alias": {
- "dev-master": "1.0.x-dev"
+ "dev-master": "1.1.x-dev"
}
}
}
diff --git a/advancedcontentfilter/vendor/psr/simple-cache/.editorconfig b/advancedcontentfilter/vendor/psr/simple-cache/.editorconfig
deleted file mode 100644
index 48542cbb..00000000
--- a/advancedcontentfilter/vendor/psr/simple-cache/.editorconfig
+++ /dev/null
@@ -1,12 +0,0 @@
-; This file is for unifying the coding style for different editors and IDEs.
-; More information at http://editorconfig.org
-
-root = true
-
-[*]
-charset = utf-8
-indent_size = 4
-indent_style = space
-end_of_line = lf
-insert_final_newline = true
-trim_trailing_whitespace = true
diff --git a/advancedcontentfilter/vendor/psr/simple-cache/LICENSE.md b/advancedcontentfilter/vendor/psr/simple-cache/LICENSE.md
deleted file mode 100644
index e49a7c85..00000000
--- a/advancedcontentfilter/vendor/psr/simple-cache/LICENSE.md
+++ /dev/null
@@ -1,21 +0,0 @@
-# The MIT License (MIT)
-
-Copyright (c) 2016 PHP Framework Interoperability Group
-
-> Permission is hereby granted, free of charge, to any person obtaining a copy
-> of this software and associated documentation files (the "Software"), to deal
-> in the Software without restriction, including without limitation the rights
-> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-> copies of the Software, and to permit persons to whom the Software is
-> furnished to do so, subject to the following conditions:
->
-> The above copyright notice and this permission notice shall be included in
-> all copies or substantial portions of the Software.
->
-> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-> THE SOFTWARE.
diff --git a/advancedcontentfilter/vendor/psr/simple-cache/README.md b/advancedcontentfilter/vendor/psr/simple-cache/README.md
deleted file mode 100644
index 43641d17..00000000
--- a/advancedcontentfilter/vendor/psr/simple-cache/README.md
+++ /dev/null
@@ -1,8 +0,0 @@
-PHP FIG Simple Cache PSR
-========================
-
-This repository holds all interfaces related to PSR-16.
-
-Note that this is not a cache implementation of its own. It is merely an interface that describes a cache implementation. See [the specification](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-16-simple-cache.md) for more details.
-
-You can find implementations of the specification by looking for packages providing the [psr/simple-cache-implementation](https://packagist.org/providers/psr/simple-cache-implementation) virtual package.
diff --git a/advancedcontentfilter/vendor/psr/simple-cache/composer.json b/advancedcontentfilter/vendor/psr/simple-cache/composer.json
deleted file mode 100644
index 2978fa55..00000000
--- a/advancedcontentfilter/vendor/psr/simple-cache/composer.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "name": "psr/simple-cache",
- "description": "Common interfaces for simple caching",
- "keywords": ["psr", "psr-16", "cache", "simple-cache", "caching"],
- "license": "MIT",
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
- }
- ],
- "require": {
- "php": ">=5.3.0"
- },
- "autoload": {
- "psr-4": {
- "Psr\\SimpleCache\\": "src/"
- }
- },
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- }
-}
diff --git a/advancedcontentfilter/vendor/psr/simple-cache/src/CacheException.php b/advancedcontentfilter/vendor/psr/simple-cache/src/CacheException.php
deleted file mode 100644
index eba53815..00000000
--- a/advancedcontentfilter/vendor/psr/simple-cache/src/CacheException.php
+++ /dev/null
@@ -1,10 +0,0 @@
- value pairs. Cache keys that do not exist or are stale will have $default as value.
- *
- * @throws \Psr\SimpleCache\InvalidArgumentException
- * MUST be thrown if $keys is neither an array nor a Traversable,
- * or if any of the $keys are not a legal value.
- */
- public function getMultiple($keys, $default = null);
-
- /**
- * Persists a set of key => value pairs in the cache, with an optional TTL.
- *
- * @param iterable $values A list of key => value pairs for a multiple-set operation.
- * @param null|int|\DateInterval $ttl Optional. The TTL value of this item. If no value is sent and
- * the driver supports TTL then the library may set a default value
- * for it or let the driver take care of that.
- *
- * @return bool True on success and false on failure.
- *
- * @throws \Psr\SimpleCache\InvalidArgumentException
- * MUST be thrown if $values is neither an array nor a Traversable,
- * or if any of the $values are not a legal value.
- */
- public function setMultiple($values, $ttl = null);
-
- /**
- * Deletes multiple cache items in a single operation.
- *
- * @param iterable $keys A list of string-based keys to be deleted.
- *
- * @return bool True if the items were successfully removed. False if there was an error.
- *
- * @throws \Psr\SimpleCache\InvalidArgumentException
- * MUST be thrown if $keys is neither an array nor a Traversable,
- * or if any of the $keys are not a legal value.
- */
- public function deleteMultiple($keys);
-
- /**
- * Determines whether an item is present in the cache.
- *
- * NOTE: It is recommended that has() is only to be used for cache warming type purposes
- * and not to be used within your live applications operations for get/set, as this method
- * is subject to a race condition where your has() will return true and immediately after,
- * another script can remove it making the state of your app out of date.
- *
- * @param string $key The cache item key.
- *
- * @return bool
- *
- * @throws \Psr\SimpleCache\InvalidArgumentException
- * MUST be thrown if the $key string is not a legal value.
- */
- public function has($key);
-}
diff --git a/advancedcontentfilter/vendor/psr/simple-cache/src/InvalidArgumentException.php b/advancedcontentfilter/vendor/psr/simple-cache/src/InvalidArgumentException.php
deleted file mode 100644
index 6a9524a2..00000000
--- a/advancedcontentfilter/vendor/psr/simple-cache/src/InvalidArgumentException.php
+++ /dev/null
@@ -1,13 +0,0 @@
-container = $container;
- }
+ public function __construct(
+ ResponseFactoryInterface $responseFactory,
+ ?ContainerInterface $container = null,
+ ?CallableResolverInterface $callableResolver = null,
+ ?RouteCollectorInterface $routeCollector = null,
+ ?RouteResolverInterface $routeResolver = null,
+ ?MiddlewareDispatcherInterface $middlewareDispatcher = null
+ ) {
+ parent::__construct(
+ $responseFactory,
+ $callableResolver ?? new CallableResolver($container),
+ $container,
+ $routeCollector
+ );
- /**
- * Enable access to the DI container by consumers of $app
- *
- * @return ContainerInterface
- */
- public function getContainer()
- {
- return $this->container;
- }
+ $this->routeResolver = $routeResolver ?? new RouteResolver($this->routeCollector);
+ $routeRunner = new RouteRunner($this->routeResolver, $this->routeCollector->getRouteParser(), $this);
- /**
- * Add middleware
- *
- * This method prepends new middleware to the app's middleware stack.
- *
- * @param callable|string $callable The callback routine
- *
- * @return static
- */
- public function add($callable)
- {
- return $this->addMiddleware(new DeferredCallable($callable, $this->container));
- }
-
- /**
- * Calling a non-existant method on App checks to see if there's an item
- * in the container that is callable and if so, calls it.
- *
- * @param string $method
- * @param array $args
- * @return mixed
- */
- public function __call($method, $args)
- {
- if ($this->container->has($method)) {
- $obj = $this->container->get($method);
- if (is_callable($obj)) {
- return call_user_func_array($obj, $args);
- }
+ if (!$middlewareDispatcher) {
+ $middlewareDispatcher = new MiddlewareDispatcher($routeRunner, $this->callableResolver, $container);
+ } else {
+ $middlewareDispatcher->seedMiddlewareStack($routeRunner);
}
- throw new \BadMethodCallException("Method $method is not a valid method");
- }
-
- /********************************************************************************
- * Router proxy methods
- *******************************************************************************/
-
- /**
- * Add GET route
- *
- * @param string $pattern The route URI pattern
- * @param callable|string $callable The route callback routine
- *
- * @return \Slim\Interfaces\RouteInterface
- */
- public function get($pattern, $callable)
- {
- return $this->map(['GET'], $pattern, $callable);
+ $this->middlewareDispatcher = $middlewareDispatcher;
}
/**
- * Add POST route
- *
- * @param string $pattern The route URI pattern
- * @param callable|string $callable The route callback routine
- *
- * @return \Slim\Interfaces\RouteInterface
+ * @return RouteResolverInterface
*/
- public function post($pattern, $callable)
+ public function getRouteResolver(): RouteResolverInterface
{
- return $this->map(['POST'], $pattern, $callable);
+ return $this->routeResolver;
}
/**
- * Add PUT route
- *
- * @param string $pattern The route URI pattern
- * @param callable|string $callable The route callback routine
- *
- * @return \Slim\Interfaces\RouteInterface
+ * @return MiddlewareDispatcherInterface
*/
- public function put($pattern, $callable)
+ public function getMiddlewareDispatcher(): MiddlewareDispatcherInterface
{
- return $this->map(['PUT'], $pattern, $callable);
+ return $this->middlewareDispatcher;
}
/**
- * Add PATCH route
- *
- * @param string $pattern The route URI pattern
- * @param callable|string $callable The route callback routine
- *
- * @return \Slim\Interfaces\RouteInterface
+ * @param MiddlewareInterface|string|callable $middleware
*/
- public function patch($pattern, $callable)
+ public function add($middleware): self
{
- return $this->map(['PATCH'], $pattern, $callable);
+ $this->middlewareDispatcher->add($middleware);
+ return $this;
}
/**
- * Add DELETE route
- *
- * @param string $pattern The route URI pattern
- * @param callable|string $callable The route callback routine
- *
- * @return \Slim\Interfaces\RouteInterface
+ * @param MiddlewareInterface $middleware
*/
- public function delete($pattern, $callable)
+ public function addMiddleware(MiddlewareInterface $middleware): self
{
- return $this->map(['DELETE'], $pattern, $callable);
+ $this->middlewareDispatcher->addMiddleware($middleware);
+ return $this;
}
/**
- * Add OPTIONS route
+ * Add the Slim built-in routing middleware to the app middleware stack
*
- * @param string $pattern The route URI pattern
- * @param callable|string $callable The route callback routine
+ * This method can be used to control middleware order and is not required for default routing operation.
*
- * @return \Slim\Interfaces\RouteInterface
+ * @return RoutingMiddleware
*/
- public function options($pattern, $callable)
+ public function addRoutingMiddleware(): RoutingMiddleware
{
- return $this->map(['OPTIONS'], $pattern, $callable);
+ $routingMiddleware = new RoutingMiddleware(
+ $this->getRouteResolver(),
+ $this->getRouteCollector()->getRouteParser()
+ );
+ $this->add($routingMiddleware);
+ return $routingMiddleware;
}
/**
- * Add route for any HTTP method
+ * Add the Slim built-in error middleware to the app middleware stack
*
- * @param string $pattern The route URI pattern
- * @param callable|string $callable The route callback routine
+ * @param bool $displayErrorDetails
+ * @param bool $logErrors
+ * @param bool $logErrorDetails
+ * @param LoggerInterface|null $logger
*
- * @return \Slim\Interfaces\RouteInterface
+ * @return ErrorMiddleware
*/
- public function any($pattern, $callable)
- {
- return $this->map(['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'], $pattern, $callable);
+ public function addErrorMiddleware(
+ bool $displayErrorDetails,
+ bool $logErrors,
+ bool $logErrorDetails,
+ ?LoggerInterface $logger = null
+ ): ErrorMiddleware {
+ $errorMiddleware = new ErrorMiddleware(
+ $this->getCallableResolver(),
+ $this->getResponseFactory(),
+ $displayErrorDetails,
+ $logErrors,
+ $logErrorDetails,
+ $logger
+ );
+ $this->add($errorMiddleware);
+ return $errorMiddleware;
}
/**
- * Add route with multiple methods
+ * Add the Slim body parsing middleware to the app middleware stack
*
- * @param string[] $methods Numeric array of HTTP method names
- * @param string $pattern The route URI pattern
- * @param callable|string $callable The route callback routine
+ * @param callable[] $bodyParsers
*
- * @return RouteInterface
+ * @return BodyParsingMiddleware
*/
- public function map(array $methods, $pattern, $callable)
+ public function addBodyParsingMiddleware(array $bodyParsers = []): BodyParsingMiddleware
{
- if ($callable instanceof Closure) {
- $callable = $callable->bindTo($this->container);
- }
-
- $route = $this->container->get('router')->map($methods, $pattern, $callable);
- if (is_callable([$route, 'setContainer'])) {
- $route->setContainer($this->container);
- }
-
- if (is_callable([$route, 'setOutputBuffering'])) {
- $route->setOutputBuffering($this->container->get('settings')['outputBuffering']);
- }
-
- return $route;
+ $bodyParsingMiddleware = new BodyParsingMiddleware($bodyParsers);
+ $this->add($bodyParsingMiddleware);
+ return $bodyParsingMiddleware;
}
- /**
- * Route Groups
- *
- * This method accepts a route pattern and a callback. All route
- * declarations in the callback will be prepended by the group(s)
- * that it is in.
- *
- * @param string $pattern
- * @param callable $callable
- *
- * @return RouteGroupInterface
- */
- public function group($pattern, $callable)
- {
- /** @var RouteGroup $group */
- $group = $this->container->get('router')->pushGroup($pattern, $callable);
- $group->setContainer($this->container);
- $group($this);
- $this->container->get('router')->popGroup();
- return $group;
- }
-
- /********************************************************************************
- * Runner
- *******************************************************************************/
-
/**
* Run application
*
* This method traverses the application middleware stack and then sends the
* resultant Response object to the HTTP client.
*
- * @param bool|false $silent
- * @return ResponseInterface
- *
- * @throws Exception
- * @throws MethodNotAllowedException
- * @throws NotFoundException
+ * @param ServerRequestInterface|null $request
+ * @return void
*/
- public function run($silent = false)
+ public function run(?ServerRequestInterface $request = null): void
{
- $response = $this->container->get('response');
-
- try {
- ob_start();
- $response = $this->process($this->container->get('request'), $response);
- } catch (InvalidMethodException $e) {
- $response = $this->processInvalidMethod($e->getRequest(), $response);
- } finally {
- $output = ob_get_clean();
+ if (!$request) {
+ $serverRequestCreator = ServerRequestCreatorFactory::create();
+ $request = $serverRequestCreator->createServerRequestFromGlobals();
}
- if (!empty($output) && $response->getBody()->isWritable()) {
- $outputBuffering = $this->container->get('settings')['outputBuffering'];
- if ($outputBuffering === 'prepend') {
- // prepend output buffer content
- $body = new Http\Body(fopen('php://temp', 'r+'));
- $body->write($output . $response->getBody());
- $response = $response->withBody($body);
- } elseif ($outputBuffering === 'append') {
- // append output buffer content
- $response->getBody()->write($output);
- }
- }
-
- $response = $this->finalize($response);
-
- if (!$silent) {
- $this->respond($response);
- }
-
- return $response;
+ $response = $this->handle($request);
+ $responseEmitter = new ResponseEmitter();
+ $responseEmitter->emit($response);
}
/**
- * Pull route info for a request with a bad method to decide whether to
- * return a not-found error (default) or a bad-method error, then run
- * the handler for that error, returning the resulting response.
- *
- * Used for cases where an incoming request has an unrecognized method,
- * rather than throwing an exception and not catching it all the way up.
- *
- * @param ServerRequestInterface $request
- * @param ResponseInterface $response
- * @return ResponseInterface
- */
- protected function processInvalidMethod(ServerRequestInterface $request, ResponseInterface $response)
- {
- $router = $this->container->get('router');
- if (is_callable([$request->getUri(), 'getBasePath']) && is_callable([$router, 'setBasePath'])) {
- $router->setBasePath($request->getUri()->getBasePath());
- }
-
- $request = $this->dispatchRouterAndPrepareRoute($request, $router);
- $routeInfo = $request->getAttribute('routeInfo', [RouterInterface::DISPATCH_STATUS => Dispatcher::NOT_FOUND]);
-
- if ($routeInfo[RouterInterface::DISPATCH_STATUS] === Dispatcher::METHOD_NOT_ALLOWED) {
- return $this->handleException(
- new MethodNotAllowedException($request, $response, $routeInfo[RouterInterface::ALLOWED_METHODS]),
- $request,
- $response
- );
- }
-
- return $this->handleException(new NotFoundException($request, $response), $request, $response);
- }
-
- /**
- * Process a request
+ * Handle a request
*
* This method traverses the application middleware stack and then returns the
* resultant Response object.
*
* @param ServerRequestInterface $request
- * @param ResponseInterface $response
* @return ResponseInterface
- *
- * @throws Exception
- * @throws MethodNotAllowedException
- * @throws NotFoundException
*/
- public function process(ServerRequestInterface $request, ResponseInterface $response)
+ public function handle(ServerRequestInterface $request): ResponseInterface
{
- // Ensure basePath is set
- $router = $this->container->get('router');
- if (is_callable([$request->getUri(), 'getBasePath']) && is_callable([$router, 'setBasePath'])) {
- $router->setBasePath($request->getUri()->getBasePath());
- }
+ $response = $this->middlewareDispatcher->handle($request);
- // Dispatch the Router first if the setting for this is on
- if ($this->container->get('settings')['determineRouteBeforeAppMiddleware'] === true) {
- // Dispatch router (note: you won't be able to alter routes after this)
- $request = $this->dispatchRouterAndPrepareRoute($request, $router);
- }
-
- // Traverse middleware stack
- try {
- $response = $this->callMiddlewareStack($request, $response);
- } catch (Exception $e) {
- $response = $this->handleException($e, $request, $response);
- } catch (Throwable $e) {
- $response = $this->handlePhpError($e, $request, $response);
+ /**
+ * This is to be in compliance with RFC 2616, Section 9.
+ * If the incoming request method is HEAD, we need to ensure that the response body
+ * is empty as the request may fall back on a GET route handler due to FastRoute's
+ * routing logic which could potentially append content to the response body
+ * https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.4
+ */
+ $method = strtoupper($request->getMethod());
+ if ($method === 'HEAD') {
+ $emptyBody = $this->responseFactory->createResponse()->getBody();
+ return $response->withBody($emptyBody);
}
return $response;
}
-
- /**
- * Send the response to the client
- *
- * @param ResponseInterface $response
- */
- public function respond(ResponseInterface $response)
- {
- // Send response
- if (!headers_sent()) {
- // Headers
- foreach ($response->getHeaders() as $name => $values) {
- foreach ($values as $value) {
- header(sprintf('%s: %s', $name, $value), false);
- }
- }
-
- // Set the status _after_ the headers, because of PHP's "helpful" behavior with location headers.
- // See https://github.com/slimphp/Slim/issues/1730
-
- // Status
- header(sprintf(
- 'HTTP/%s %s %s',
- $response->getProtocolVersion(),
- $response->getStatusCode(),
- $response->getReasonPhrase()
- ));
- }
-
- // Body
- if (!$this->isEmptyResponse($response)) {
- $body = $response->getBody();
- if ($body->isSeekable()) {
- $body->rewind();
- }
- $settings = $this->container->get('settings');
- $chunkSize = $settings['responseChunkSize'];
-
- $contentLength = $response->getHeaderLine('Content-Length');
- if (!$contentLength) {
- $contentLength = $body->getSize();
- }
-
-
- if (isset($contentLength)) {
- $amountToRead = $contentLength;
- while ($amountToRead > 0 && !$body->eof()) {
- $data = $body->read(min($chunkSize, $amountToRead));
- echo $data;
-
- $amountToRead -= strlen($data);
-
- if (connection_status() != CONNECTION_NORMAL) {
- break;
- }
- }
- } else {
- while (!$body->eof()) {
- echo $body->read($chunkSize);
- if (connection_status() != CONNECTION_NORMAL) {
- break;
- }
- }
- }
- }
- }
-
- /**
- * Invoke application
- *
- * This method implements the middleware interface. It receives
- * Request and Response objects, and it returns a Response object
- * after compiling the routes registered in the Router and dispatching
- * the Request object to the appropriate Route callback routine.
- *
- * @param ServerRequestInterface $request The most recent Request object
- * @param ResponseInterface $response The most recent Response object
- *
- * @return ResponseInterface
- * @throws MethodNotAllowedException
- * @throws NotFoundException
- */
- public function __invoke(ServerRequestInterface $request, ResponseInterface $response)
- {
- // Get the route info
- $routeInfo = $request->getAttribute('routeInfo');
-
- /** @var \Slim\Interfaces\RouterInterface $router */
- $router = $this->container->get('router');
-
- // If router hasn't been dispatched or the URI changed then dispatch
- if (null === $routeInfo || ($routeInfo['request'] !== [$request->getMethod(), (string) $request->getUri()])) {
- $request = $this->dispatchRouterAndPrepareRoute($request, $router);
- $routeInfo = $request->getAttribute('routeInfo');
- }
-
- if ($routeInfo[0] === Dispatcher::FOUND) {
- $route = $router->lookupRoute($routeInfo[1]);
- return $route->run($request, $response);
- } elseif ($routeInfo[0] === Dispatcher::METHOD_NOT_ALLOWED) {
- if (!$this->container->has('notAllowedHandler')) {
- throw new MethodNotAllowedException($request, $response, $routeInfo[1]);
- }
- /** @var callable $notAllowedHandler */
- $notAllowedHandler = $this->container->get('notAllowedHandler');
- return $notAllowedHandler($request, $response, $routeInfo[1]);
- }
-
- if (!$this->container->has('notFoundHandler')) {
- throw new NotFoundException($request, $response);
- }
- /** @var callable $notFoundHandler */
- $notFoundHandler = $this->container->get('notFoundHandler');
- return $notFoundHandler($request, $response);
- }
-
- /**
- * Perform a sub-request from within an application route
- *
- * This method allows you to prepare and initiate a sub-request, run within
- * the context of the current request. This WILL NOT issue a remote HTTP
- * request. Instead, it will route the provided URL, method, headers,
- * cookies, body, and server variables against the set of registered
- * application routes. The result response object is returned.
- *
- * @param string $method The request method (e.g., GET, POST, PUT, etc.)
- * @param string $path The request URI path
- * @param string $query The request URI query string
- * @param array $headers The request headers (key-value array)
- * @param array $cookies The request cookies (key-value array)
- * @param string $bodyContent The request body
- * @param ResponseInterface $response The response object (optional)
- * @return ResponseInterface
- */
- public function subRequest(
- $method,
- $path,
- $query = '',
- array $headers = [],
- array $cookies = [],
- $bodyContent = '',
- ResponseInterface $response = null
- ) {
- $env = $this->container->get('environment');
- $uri = Uri::createFromEnvironment($env)->withPath($path)->withQuery($query);
- $headers = new Headers($headers);
- $serverParams = $env->all();
- $body = new Body(fopen('php://temp', 'r+'));
- $body->write($bodyContent);
- $body->rewind();
- $request = new Request($method, $uri, $headers, $cookies, $serverParams, $body);
-
- if (!$response) {
- $response = $this->container->get('response');
- }
-
- return $this($request, $response);
- }
-
- /**
- * Dispatch the router to find the route. Prepare the route for use.
- *
- * @param ServerRequestInterface $request
- * @param RouterInterface $router
- * @return ServerRequestInterface
- */
- protected function dispatchRouterAndPrepareRoute(ServerRequestInterface $request, RouterInterface $router)
- {
- $routeInfo = $router->dispatch($request);
-
- if ($routeInfo[0] === Dispatcher::FOUND) {
- $routeArguments = [];
- foreach ($routeInfo[2] as $k => $v) {
- $routeArguments[$k] = urldecode($v);
- }
-
- $route = $router->lookupRoute($routeInfo[1]);
- $route->prepare($request, $routeArguments);
-
- // add route to the request's attributes in case a middleware or handler needs access to the route
- $request = $request->withAttribute('route', $route);
- }
-
- $routeInfo['request'] = [$request->getMethod(), (string) $request->getUri()];
-
- return $request->withAttribute('routeInfo', $routeInfo);
- }
-
- /**
- * Finalize response
- *
- * @param ResponseInterface $response
- * @return ResponseInterface
- */
- protected function finalize(ResponseInterface $response)
- {
- // stop PHP sending a Content-Type automatically
- ini_set('default_mimetype', '');
-
- if ($this->isEmptyResponse($response)) {
- return $response->withoutHeader('Content-Type')->withoutHeader('Content-Length');
- }
-
- // Add Content-Length header if `addContentLengthHeader` setting is set
- if (isset($this->container->get('settings')['addContentLengthHeader']) &&
- $this->container->get('settings')['addContentLengthHeader'] == true) {
- if (ob_get_length() > 0) {
- throw new \RuntimeException("Unexpected data in output buffer. " .
- "Maybe you have characters before an opening getBody()->getSize();
- if ($size !== null && !$response->hasHeader('Content-Length')) {
- $response = $response->withHeader('Content-Length', (string) $size);
- }
- }
-
- return $response;
- }
-
- /**
- * Helper method, which returns true if the provided response must not output a body and false
- * if the response could have a body.
- *
- * @see https://tools.ietf.org/html/rfc7231
- *
- * @param ResponseInterface $response
- * @return bool
- */
- protected function isEmptyResponse(ResponseInterface $response)
- {
- if (method_exists($response, 'isEmpty')) {
- return $response->isEmpty();
- }
-
- return in_array($response->getStatusCode(), [204, 205, 304]);
- }
-
- /**
- * Call relevant handler from the Container if needed. If it doesn't exist,
- * then just re-throw.
- *
- * @param Exception $e
- * @param ServerRequestInterface $request
- * @param ResponseInterface $response
- *
- * @return ResponseInterface
- * @throws Exception if a handler is needed and not found
- */
- protected function handleException(Exception $e, ServerRequestInterface $request, ResponseInterface $response)
- {
- if ($e instanceof MethodNotAllowedException) {
- $handler = 'notAllowedHandler';
- $params = [$e->getRequest(), $e->getResponse(), $e->getAllowedMethods()];
- } elseif ($e instanceof NotFoundException) {
- $handler = 'notFoundHandler';
- $params = [$e->getRequest(), $e->getResponse(), $e];
- } elseif ($e instanceof SlimException) {
- // This is a Stop exception and contains the response
- return $e->getResponse();
- } else {
- // Other exception, use $request and $response params
- $handler = 'errorHandler';
- $params = [$request, $response, $e];
- }
-
- if ($this->container->has($handler)) {
- $callable = $this->container->get($handler);
- // Call the registered handler
- return call_user_func_array($callable, $params);
- }
-
- // No handlers found, so just throw the exception
- throw $e;
- }
-
- /**
- * Call relevant handler from the Container if needed. If it doesn't exist,
- * then just re-throw.
- *
- * @param Throwable $e
- * @param ServerRequestInterface $request
- * @param ResponseInterface $response
- * @return ResponseInterface
- * @throws Throwable
- */
- protected function handlePhpError(Throwable $e, ServerRequestInterface $request, ResponseInterface $response)
- {
- $handler = 'phpErrorHandler';
- $params = [$request, $response, $e];
-
- if ($this->container->has($handler)) {
- $callable = $this->container->get($handler);
- // Call the registered handler
- return call_user_func_array($callable, $params);
- }
-
- // No handlers found, so just throw the exception
- throw $e;
- }
}
diff --git a/advancedcontentfilter/vendor/slim/slim/Slim/CallableResolver.php b/advancedcontentfilter/vendor/slim/slim/Slim/CallableResolver.php
index 2211a329..66f225de 100644
--- a/advancedcontentfilter/vendor/slim/slim/Slim/CallableResolver.php
+++ b/advancedcontentfilter/vendor/slim/slim/Slim/CallableResolver.php
@@ -1,110 +1,193 @@
container = $container;
}
/**
- * Resolve toResolve into a closure so that the router can dispatch.
+ * {@inheritdoc}
+ */
+ public function resolve($toResolve): callable
+ {
+ $toResolve = $this->prepareToResolve($toResolve);
+ if (is_callable($toResolve)) {
+ return $this->bindToContainer($toResolve);
+ }
+ $resolved = $toResolve;
+ if (is_string($toResolve)) {
+ $resolved = $this->resolveSlimNotation($toResolve);
+ $resolved[1] ??= '__invoke';
+ }
+ $callable = $this->assertCallable($resolved, $toResolve);
+ return $this->bindToContainer($callable);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function resolveRoute($toResolve): callable
+ {
+ return $this->resolveByPredicate($toResolve, [$this, 'isRoute'], 'handle');
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function resolveMiddleware($toResolve): callable
+ {
+ return $this->resolveByPredicate($toResolve, [$this, 'isMiddleware'], 'process');
+ }
+
+ /**
+ * @param string|callable $toResolve
*
- * If toResolve is of the format 'class:method', then try to extract 'class'
- * from the container otherwise instantiate it and then dispatch 'method'.
+ * @throws RuntimeException
+ */
+ private function resolveByPredicate($toResolve, callable $predicate, string $defaultMethod): callable
+ {
+ $toResolve = $this->prepareToResolve($toResolve);
+ if (is_callable($toResolve)) {
+ return $this->bindToContainer($toResolve);
+ }
+ $resolved = $toResolve;
+ if ($predicate($toResolve)) {
+ $resolved = [$toResolve, $defaultMethod];
+ }
+ if (is_string($toResolve)) {
+ [$instance, $method] = $this->resolveSlimNotation($toResolve);
+ if ($method === null && $predicate($instance)) {
+ $method = $defaultMethod;
+ }
+ $resolved = [$instance, $method ?? '__invoke'];
+ }
+ $callable = $this->assertCallable($resolved, $toResolve);
+ return $this->bindToContainer($callable);
+ }
+
+ /**
+ * @param mixed $toResolve
+ */
+ private function isRoute($toResolve): bool
+ {
+ return $toResolve instanceof RequestHandlerInterface;
+ }
+
+ /**
+ * @param mixed $toResolve
+ */
+ private function isMiddleware($toResolve): bool
+ {
+ return $toResolve instanceof MiddlewareInterface;
+ }
+
+ /**
+ * @throws RuntimeException
*
+ * @return array{object, string|null} [Instance, Method Name]
+ */
+ private function resolveSlimNotation(string $toResolve): array
+ {
+ preg_match(CallableResolver::$callablePattern, $toResolve, $matches);
+ [$class, $method] = $matches ? [$matches[1], $matches[2]] : [$toResolve, null];
+
+ /** @var string $class */
+ /** @var string|null $method */
+ if ($this->container && $this->container->has($class)) {
+ $instance = $this->container->get($class);
+ if (!is_object($instance)) {
+ throw new RuntimeException(sprintf('%s container entry is not an object', $class));
+ }
+ } else {
+ if (!class_exists($class)) {
+ if ($method) {
+ $class .= '::' . $method . '()';
+ }
+ throw new RuntimeException(sprintf('Callable %s does not exist', $class));
+ }
+ $instance = new $class($this->container);
+ }
+ return [$instance, $method];
+ }
+
+ /**
+ * @param mixed $resolved
* @param mixed $toResolve
*
- * @return callable
- *
- * @throws RuntimeException if the callable does not exist
- * @throws RuntimeException if the callable is not resolvable
+ * @throws RuntimeException
*/
- public function resolve($toResolve)
+ private function assertCallable($resolved, $toResolve): callable
{
- if (is_callable($toResolve)) {
- return $toResolve;
+ if (!is_callable($resolved)) {
+ if (is_callable($toResolve) || is_object($toResolve) || is_array($toResolve)) {
+ $formatedToResolve = ($toResolveJson = json_encode($toResolve)) !== false ? $toResolveJson : '';
+ } else {
+ $formatedToResolve = is_string($toResolve) ? $toResolve : '';
+ }
+ throw new RuntimeException(sprintf('%s is not resolvable', $formatedToResolve));
}
-
- if (!is_string($toResolve)) {
- $this->assertCallable($toResolve);
- }
-
- // check for slim callable as "class:method"
- if (preg_match(self::CALLABLE_PATTERN, $toResolve, $matches)) {
- $resolved = $this->resolveCallable($matches[1], $matches[2]);
- $this->assertCallable($resolved);
-
- return $resolved;
- }
-
- $resolved = $this->resolveCallable($toResolve);
- $this->assertCallable($resolved);
-
return $resolved;
}
- /**
- * Check if string is something in the DIC
- * that's callable or is a class name which has an __invoke() method.
- *
- * @param string $class
- * @param string $method
- * @return callable
- *
- * @throws \RuntimeException if the callable does not exist
- */
- protected function resolveCallable($class, $method = '__invoke')
+ private function bindToContainer(callable $callable): callable
{
- if ($this->container->has($class)) {
- return [$this->container->get($class), $method];
+ if (is_array($callable) && $callable[0] instanceof Closure) {
+ $callable = $callable[0];
}
-
- if (!class_exists($class)) {
- throw new RuntimeException(sprintf('Callable %s does not exist', $class));
+ if ($this->container && $callable instanceof Closure) {
+ /** @var Closure $callable */
+ $callable = $callable->bindTo($this->container);
}
-
- return [new $class($this->container), $method];
+ return $callable;
}
/**
- * @param Callable $callable
- *
- * @throws \RuntimeException if the callable is not resolvable
+ * @param string|callable $toResolve
+ * @return string|callable
*/
- protected function assertCallable($callable)
+ private function prepareToResolve($toResolve)
{
- if (!is_callable($callable)) {
- throw new RuntimeException(sprintf(
- '%s is not resolvable',
- is_array($callable) || is_object($callable) ? json_encode($callable) : $callable
- ));
+ if (!is_array($toResolve)) {
+ return $toResolve;
}
+ $candidate = $toResolve;
+ $class = array_shift($candidate);
+ $method = array_shift($candidate);
+ if (is_string($class) && is_string($method)) {
+ return $class . ':' . $method;
+ }
+ return $toResolve;
}
}
diff --git a/advancedcontentfilter/vendor/slim/slim/Slim/CallableResolverAwareTrait.php b/advancedcontentfilter/vendor/slim/slim/Slim/CallableResolverAwareTrait.php
deleted file mode 100644
index ffb4eb28..00000000
--- a/advancedcontentfilter/vendor/slim/slim/Slim/CallableResolverAwareTrait.php
+++ /dev/null
@@ -1,47 +0,0 @@
-container instanceof ContainerInterface) {
- return $callable;
- }
-
- /** @var CallableResolverInterface $resolver */
- $resolver = $this->container->get('callableResolver');
-
- return $resolver->resolve($callable);
- }
-}
diff --git a/advancedcontentfilter/vendor/slim/slim/Slim/Collection.php b/advancedcontentfilter/vendor/slim/slim/Slim/Collection.php
deleted file mode 100644
index 728bb73e..00000000
--- a/advancedcontentfilter/vendor/slim/slim/Slim/Collection.php
+++ /dev/null
@@ -1,202 +0,0 @@
-replace($items);
- }
-
- /********************************************************************************
- * Collection interface
- *******************************************************************************/
-
- /**
- * Set collection item
- *
- * @param string $key The data key
- * @param mixed $value The data value
- */
- public function set($key, $value)
- {
- $this->data[$key] = $value;
- }
-
- /**
- * Get collection item for key
- *
- * @param string $key The data key
- * @param mixed $default The default value to return if data key does not exist
- *
- * @return mixed The key's value, or the default value
- */
- public function get($key, $default = null)
- {
- return $this->has($key) ? $this->data[$key] : $default;
- }
-
- /**
- * Add item to collection, replacing existing items with the same data key
- *
- * @param array $items Key-value array of data to append to this collection
- */
- public function replace(array $items)
- {
- foreach ($items as $key => $value) {
- $this->set($key, $value);
- }
- }
-
- /**
- * Get all items in collection
- *
- * @return array The collection's source data
- */
- public function all()
- {
- return $this->data;
- }
-
- /**
- * Get collection keys
- *
- * @return array The collection's source data keys
- */
- public function keys()
- {
- return array_keys($this->data);
- }
-
- /**
- * Does this collection have a given key?
- *
- * @param string $key The data key
- *
- * @return bool
- */
- public function has($key)
- {
- return array_key_exists($key, $this->data);
- }
-
- /**
- * Remove item from collection
- *
- * @param string $key The data key
- */
- public function remove($key)
- {
- unset($this->data[$key]);
- }
-
- /**
- * Remove all items from collection
- */
- public function clear()
- {
- $this->data = [];
- }
-
- /********************************************************************************
- * ArrayAccess interface
- *******************************************************************************/
-
- /**
- * Does this collection have a given key?
- *
- * @param string $key The data key
- *
- * @return bool
- */
- public function offsetExists($key)
- {
- return $this->has($key);
- }
-
- /**
- * Get collection item for key
- *
- * @param string $key The data key
- *
- * @return mixed The key's value, or the default value
- */
- public function offsetGet($key)
- {
- return $this->get($key);
- }
-
- /**
- * Set collection item
- *
- * @param string $key The data key
- * @param mixed $value The data value
- */
- public function offsetSet($key, $value)
- {
- $this->set($key, $value);
- }
-
- /**
- * Remove item from collection
- *
- * @param string $key The data key
- */
- public function offsetUnset($key)
- {
- $this->remove($key);
- }
-
- /**
- * Get number of items in collection
- *
- * @return int
- */
- public function count()
- {
- return count($this->data);
- }
-
- /********************************************************************************
- * IteratorAggregate interface
- *******************************************************************************/
-
- /**
- * Get collection iterator
- *
- * @return \ArrayIterator
- */
- public function getIterator()
- {
- return new ArrayIterator($this->data);
- }
-}
diff --git a/advancedcontentfilter/vendor/slim/slim/Slim/Container.php b/advancedcontentfilter/vendor/slim/slim/Slim/Container.php
deleted file mode 100644
index 1f713ac4..00000000
--- a/advancedcontentfilter/vendor/slim/slim/Slim/Container.php
+++ /dev/null
@@ -1,179 +0,0 @@
- '1.1',
- 'responseChunkSize' => 4096,
- 'outputBuffering' => 'append',
- 'determineRouteBeforeAppMiddleware' => false,
- 'displayErrorDetails' => false,
- 'addContentLengthHeader' => true,
- 'routerCacheFile' => false,
- ];
-
- /**
- * Create new container
- *
- * @param array $values The parameters or objects.
- */
- public function __construct(array $values = [])
- {
- parent::__construct($values);
-
- $userSettings = isset($values['settings']) ? $values['settings'] : [];
- $this->registerDefaultServices($userSettings);
- }
-
- /**
- * This function registers the default services that Slim needs to work.
- *
- * All services are shared - that is, they are registered such that the
- * same instance is returned on subsequent calls.
- *
- * @param array $userSettings Associative array of application settings
- *
- * @return void
- */
- private function registerDefaultServices($userSettings)
- {
- $defaultSettings = $this->defaultSettings;
-
- /**
- * This service MUST return an array or an
- * instance of \ArrayAccess.
- *
- * @return array|\ArrayAccess
- */
- $this['settings'] = function () use ($userSettings, $defaultSettings) {
- return new Collection(array_merge($defaultSettings, $userSettings));
- };
-
- $defaultProvider = new DefaultServicesProvider();
- $defaultProvider->register($this);
- }
-
- /********************************************************************************
- * Methods to satisfy Psr\Container\ContainerInterface
- *******************************************************************************/
-
- /**
- * Finds an entry of the container by its identifier and returns it.
- *
- * @param string $id Identifier of the entry to look for.
- *
- * @throws ContainerValueNotFoundException No entry was found for this identifier.
- * @throws ContainerException Error while retrieving the entry.
- *
- * @return mixed Entry.
- */
- public function get($id)
- {
- if (!$this->offsetExists($id)) {
- throw new ContainerValueNotFoundException(sprintf('Identifier "%s" is not defined.', $id));
- }
- try {
- return $this->offsetGet($id);
- } catch (\InvalidArgumentException $exception) {
- if ($this->exceptionThrownByContainer($exception)) {
- throw new SlimContainerException(
- sprintf('Container error while retrieving "%s"', $id),
- null,
- $exception
- );
- } else {
- throw $exception;
- }
- }
- }
-
- /**
- * Tests whether an exception needs to be recast for compliance with Container-Interop. This will be if the
- * exception was thrown by Pimple.
- *
- * @param \InvalidArgumentException $exception
- *
- * @return bool
- */
- private function exceptionThrownByContainer(\InvalidArgumentException $exception)
- {
- $trace = $exception->getTrace()[0];
-
- return $trace['class'] === PimpleContainer::class && $trace['function'] === 'offsetGet';
- }
-
- /**
- * Returns true if the container can return an entry for the given identifier.
- * Returns false otherwise.
- *
- * @param string $id Identifier of the entry to look for.
- *
- * @return boolean
- */
- public function has($id)
- {
- return $this->offsetExists($id);
- }
-
-
- /********************************************************************************
- * Magic methods for convenience
- *******************************************************************************/
-
- public function __get($name)
- {
- return $this->get($name);
- }
-
- public function __isset($name)
- {
- return $this->has($name);
- }
-}
diff --git a/advancedcontentfilter/vendor/slim/slim/Slim/DefaultServicesProvider.php b/advancedcontentfilter/vendor/slim/slim/Slim/DefaultServicesProvider.php
deleted file mode 100644
index 13fe1fb3..00000000
--- a/advancedcontentfilter/vendor/slim/slim/Slim/DefaultServicesProvider.php
+++ /dev/null
@@ -1,211 +0,0 @@
-get('environment'));
- };
- }
-
- if (!isset($container['response'])) {
- /**
- * PSR-7 Response object
- *
- * @param Container $container
- *
- * @return ResponseInterface
- */
- $container['response'] = function ($container) {
- $headers = new Headers(['Content-Type' => 'text/html; charset=UTF-8']);
- $response = new Response(200, $headers);
-
- return $response->withProtocolVersion($container->get('settings')['httpVersion']);
- };
- }
-
- if (!isset($container['router'])) {
- /**
- * This service MUST return a SHARED instance
- * of \Slim\Interfaces\RouterInterface.
- *
- * @param Container $container
- *
- * @return RouterInterface
- */
- $container['router'] = function ($container) {
- $routerCacheFile = false;
- if (isset($container->get('settings')['routerCacheFile'])) {
- $routerCacheFile = $container->get('settings')['routerCacheFile'];
- }
-
-
- $router = (new Router)->setCacheFile($routerCacheFile);
- if (method_exists($router, 'setContainer')) {
- $router->setContainer($container);
- }
-
- return $router;
- };
- }
-
- if (!isset($container['foundHandler'])) {
- /**
- * This service MUST return a SHARED instance
- * of \Slim\Interfaces\InvocationStrategyInterface.
- *
- * @return InvocationStrategyInterface
- */
- $container['foundHandler'] = function () {
- return new RequestResponse;
- };
- }
-
- if (!isset($container['phpErrorHandler'])) {
- /**
- * This service MUST return a callable
- * that accepts three arguments:
- *
- * 1. Instance of \Psr\Http\Message\ServerRequestInterface
- * 2. Instance of \Psr\Http\Message\ResponseInterface
- * 3. Instance of \Error
- *
- * The callable MUST return an instance of
- * \Psr\Http\Message\ResponseInterface.
- *
- * @param Container $container
- *
- * @return callable
- */
- $container['phpErrorHandler'] = function ($container) {
- return new PhpError($container->get('settings')['displayErrorDetails']);
- };
- }
-
- if (!isset($container['errorHandler'])) {
- /**
- * This service MUST return a callable
- * that accepts three arguments:
- *
- * 1. Instance of \Psr\Http\Message\ServerRequestInterface
- * 2. Instance of \Psr\Http\Message\ResponseInterface
- * 3. Instance of \Exception
- *
- * The callable MUST return an instance of
- * \Psr\Http\Message\ResponseInterface.
- *
- * @param Container $container
- *
- * @return callable
- */
- $container['errorHandler'] = function ($container) {
- return new Error(
- $container->get('settings')['displayErrorDetails']
- );
- };
- }
-
- if (!isset($container['notFoundHandler'])) {
- /**
- * This service MUST return a callable
- * that accepts two arguments:
- *
- * 1. Instance of \Psr\Http\Message\ServerRequestInterface
- * 2. Instance of \Psr\Http\Message\ResponseInterface
- *
- * The callable MUST return an instance of
- * \Psr\Http\Message\ResponseInterface.
- *
- * @return callable
- */
- $container['notFoundHandler'] = function () {
- return new NotFound;
- };
- }
-
- if (!isset($container['notAllowedHandler'])) {
- /**
- * This service MUST return a callable
- * that accepts three arguments:
- *
- * 1. Instance of \Psr\Http\Message\ServerRequestInterface
- * 2. Instance of \Psr\Http\Message\ResponseInterface
- * 3. Array of allowed HTTP methods
- *
- * The callable MUST return an instance of
- * \Psr\Http\Message\ResponseInterface.
- *
- * @return callable
- */
- $container['notAllowedHandler'] = function () {
- return new NotAllowed;
- };
- }
-
- if (!isset($container['callableResolver'])) {
- /**
- * Instance of \Slim\Interfaces\CallableResolverInterface
- *
- * @param Container $container
- *
- * @return CallableResolverInterface
- */
- $container['callableResolver'] = function ($container) {
- return new CallableResolver($container);
- };
- }
- }
-}
diff --git a/advancedcontentfilter/vendor/slim/slim/Slim/DeferredCallable.php b/advancedcontentfilter/vendor/slim/slim/Slim/DeferredCallable.php
deleted file mode 100644
index 22887c0f..00000000
--- a/advancedcontentfilter/vendor/slim/slim/Slim/DeferredCallable.php
+++ /dev/null
@@ -1,45 +0,0 @@
-callable = $callable;
- $this->container = $container;
- }
-
- public function __invoke()
- {
- $callable = $this->resolveCallable($this->callable);
- if ($callable instanceof Closure) {
- $callable = $callable->bindTo($this->container);
- }
-
- $args = func_get_args();
-
- return call_user_func_array($callable, $args);
- }
-}
diff --git a/advancedcontentfilter/vendor/slim/slim/Slim/Error/AbstractErrorRenderer.php b/advancedcontentfilter/vendor/slim/slim/Slim/Error/AbstractErrorRenderer.php
new file mode 100644
index 00000000..90b290d4
--- /dev/null
+++ b/advancedcontentfilter/vendor/slim/slim/Slim/Error/AbstractErrorRenderer.php
@@ -0,0 +1,46 @@
+getTitle();
+ }
+
+ return $this->defaultErrorTitle;
+ }
+
+ protected function getErrorDescription(Throwable $exception): string
+ {
+ if ($exception instanceof HttpException) {
+ return $exception->getDescription();
+ }
+
+ return $this->defaultErrorDescription;
+ }
+}
diff --git a/advancedcontentfilter/vendor/slim/slim/Slim/Error/Renderers/HtmlErrorRenderer.php b/advancedcontentfilter/vendor/slim/slim/Slim/Error/Renderers/HtmlErrorRenderer.php
new file mode 100644
index 00000000..e030522a
--- /dev/null
+++ b/advancedcontentfilter/vendor/slim/slim/Slim/Error/Renderers/HtmlErrorRenderer.php
@@ -0,0 +1,84 @@
+The application could not run because of the following error:
';
+ $html .= 'Details
';
+ $html .= $this->renderExceptionFragment($exception);
+ } else {
+ $html = "{$this->getErrorDescription($exception)}
";
+ }
+
+ return $this->renderHtmlBody($this->getErrorTitle($exception), $html);
+ }
+
+ private function renderExceptionFragment(Throwable $exception): string
+ {
+ $html = sprintf('Type: %s
', get_class($exception));
+
+ /** @var int|string $code */
+ $code = $exception->getCode();
+ $html .= sprintf('Code: %s
', $code);
+
+ $html .= sprintf('Message: %s
', htmlentities($exception->getMessage()));
+
+ $html .= sprintf('File: %s
', $exception->getFile());
+
+ $html .= sprintf('Line: %s
', $exception->getLine());
+
+ $html .= 'Trace
';
+ $html .= sprintf('%s
', htmlentities($exception->getTraceAsString()));
+
+ return $html;
+ }
+
+ public function renderHtmlBody(string $title = '', string $html = ''): string
+ {
+ return sprintf(
+ '' .
+ '' .
+ ' ' .
+ ' ' .
+ ' ' .
+ ' %s' .
+ ' ' .
+ ' ' .
+ ' ' .
+ ' %s
' .
+ ' %s
' .
+ ' Go Back' .
+ ' ' .
+ '',
+ $title,
+ $title,
+ $html
+ );
+ }
+}
diff --git a/advancedcontentfilter/vendor/slim/slim/Slim/Error/Renderers/JsonErrorRenderer.php b/advancedcontentfilter/vendor/slim/slim/Slim/Error/Renderers/JsonErrorRenderer.php
new file mode 100644
index 00000000..63d905b3
--- /dev/null
+++ b/advancedcontentfilter/vendor/slim/slim/Slim/Error/Renderers/JsonErrorRenderer.php
@@ -0,0 +1,56 @@
+ $this->getErrorTitle($exception)];
+
+ if ($displayErrorDetails) {
+ $error['exception'] = [];
+ do {
+ $error['exception'][] = $this->formatExceptionFragment($exception);
+ } while ($exception = $exception->getPrevious());
+ }
+
+ return (string) json_encode($error, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
+ }
+
+ /**
+ * @return array
+ */
+ private function formatExceptionFragment(Throwable $exception): array
+ {
+ /** @var int|string $code */
+ $code = $exception->getCode();
+ return [
+ 'type' => get_class($exception),
+ 'code' => $code,
+ 'message' => $exception->getMessage(),
+ 'file' => $exception->getFile(),
+ 'line' => $exception->getLine(),
+ ];
+ }
+}
diff --git a/advancedcontentfilter/vendor/slim/slim/Slim/Error/Renderers/PlainTextErrorRenderer.php b/advancedcontentfilter/vendor/slim/slim/Slim/Error/Renderers/PlainTextErrorRenderer.php
new file mode 100644
index 00000000..3d80c74b
--- /dev/null
+++ b/advancedcontentfilter/vendor/slim/slim/Slim/Error/Renderers/PlainTextErrorRenderer.php
@@ -0,0 +1,59 @@
+getErrorTitle($exception)}\n";
+
+ if ($displayErrorDetails) {
+ $text .= $this->formatExceptionFragment($exception);
+
+ while ($exception = $exception->getPrevious()) {
+ $text .= "\nPrevious Error:\n";
+ $text .= $this->formatExceptionFragment($exception);
+ }
+ }
+
+ return $text;
+ }
+
+ private function formatExceptionFragment(Throwable $exception): string
+ {
+ $text = sprintf("Type: %s\n", get_class($exception));
+
+ $code = $exception->getCode();
+ /** @var int|string $code */
+ $text .= sprintf("Code: %s\n", $code);
+
+ $text .= sprintf("Message: %s\n", htmlentities($exception->getMessage()));
+
+ $text .= sprintf("File: %s\n", $exception->getFile());
+
+ $text .= sprintf("Line: %s\n", $exception->getLine());
+
+ $text .= sprintf('Trace: %s', $exception->getTraceAsString());
+
+ return $text;
+ }
+}
diff --git a/advancedcontentfilter/vendor/slim/slim/Slim/Error/Renderers/XmlErrorRenderer.php b/advancedcontentfilter/vendor/slim/slim/Slim/Error/Renderers/XmlErrorRenderer.php
new file mode 100644
index 00000000..1171b79b
--- /dev/null
+++ b/advancedcontentfilter/vendor/slim/slim/Slim/Error/Renderers/XmlErrorRenderer.php
@@ -0,0 +1,54 @@
+\n";
+ $xml .= "\n " . $this->createCdataSection($this->getErrorTitle($exception)) . "\n";
+
+ if ($displayErrorDetails) {
+ do {
+ $xml .= " \n";
+ $xml .= ' ' . get_class($exception) . "\n";
+ $xml .= ' ' . $exception->getCode() . "
\n";
+ $xml .= ' ' . $this->createCdataSection($exception->getMessage()) . "\n";
+ $xml .= ' ' . $exception->getFile() . "\n";
+ $xml .= ' ' . $exception->getLine() . "\n";
+ $xml .= " \n";
+ } while ($exception = $exception->getPrevious());
+ }
+
+ $xml .= '';
+
+ return $xml;
+ }
+
+ /**
+ * Returns a CDATA section with the given content.
+ */
+ private function createCdataSection(string $content): string
+ {
+ return sprintf('', str_replace(']]>', ']]]]>', $content));
+ }
+}
diff --git a/advancedcontentfilter/vendor/slim/slim/Slim/Exception/ContainerException.php b/advancedcontentfilter/vendor/slim/slim/Slim/Exception/ContainerException.php
deleted file mode 100644
index 06163f1d..00000000
--- a/advancedcontentfilter/vendor/slim/slim/Slim/Exception/ContainerException.php
+++ /dev/null
@@ -1,20 +0,0 @@
-request = $request;
+ }
+
+ public function getRequest(): ServerRequestInterface
+ {
+ return $this->request;
+ }
+
+ public function getTitle(): string
+ {
+ return $this->title;
+ }
+
+ public function setTitle(string $title): self
+ {
+ $this->title = $title;
+ return $this;
+ }
+
+ public function getDescription(): string
+ {
+ return $this->description;
+ }
+
+ public function setDescription(string $description): self
+ {
+ $this->description = $description;
+ return $this;
+ }
+}
diff --git a/advancedcontentfilter/vendor/slim/slim/Slim/Exception/HttpForbiddenException.php b/advancedcontentfilter/vendor/slim/slim/Slim/Exception/HttpForbiddenException.php
new file mode 100644
index 00000000..dd3bb230
--- /dev/null
+++ b/advancedcontentfilter/vendor/slim/slim/Slim/Exception/HttpForbiddenException.php
@@ -0,0 +1,27 @@
+allowedMethods;
+ }
+
+ /**
+ * @param string[] $methods
+ */
+ public function setAllowedMethods(array $methods): self
+ {
+ $this->allowedMethods = $methods;
+ $this->message = 'Method not allowed. Must be one of: ' . implode(', ', $methods);
+ return $this;
+ }
+}
diff --git a/advancedcontentfilter/vendor/slim/slim/Slim/Exception/HttpNotFoundException.php b/advancedcontentfilter/vendor/slim/slim/Slim/Exception/HttpNotFoundException.php
new file mode 100644
index 00000000..865146d6
--- /dev/null
+++ b/advancedcontentfilter/vendor/slim/slim/Slim/Exception/HttpNotFoundException.php
@@ -0,0 +1,27 @@
+message = $message;
+ }
+
+ parent::__construct($request, $this->message, $this->code, $previous);
+ }
+}
diff --git a/advancedcontentfilter/vendor/slim/slim/Slim/Exception/HttpTooManyRequestsException.php b/advancedcontentfilter/vendor/slim/slim/Slim/Exception/HttpTooManyRequestsException.php
new file mode 100644
index 00000000..be4b29bb
--- /dev/null
+++ b/advancedcontentfilter/vendor/slim/slim/Slim/Exception/HttpTooManyRequestsException.php
@@ -0,0 +1,28 @@
+request = $request;
- parent::__construct(sprintf('Unsupported HTTP method "%s" provided', $method));
- }
-
- public function getRequest()
- {
- return $this->request;
- }
-}
diff --git a/advancedcontentfilter/vendor/slim/slim/Slim/Exception/MethodNotAllowedException.php b/advancedcontentfilter/vendor/slim/slim/Slim/Exception/MethodNotAllowedException.php
deleted file mode 100644
index 951f5dfb..00000000
--- a/advancedcontentfilter/vendor/slim/slim/Slim/Exception/MethodNotAllowedException.php
+++ /dev/null
@@ -1,45 +0,0 @@
-allowedMethods = $allowedMethods;
- }
-
- /**
- * Get allowed methods
- *
- * @return string[]
- */
- public function getAllowedMethods()
- {
- return $this->allowedMethods;
- }
-}
diff --git a/advancedcontentfilter/vendor/slim/slim/Slim/Exception/NotFoundException.php b/advancedcontentfilter/vendor/slim/slim/Slim/Exception/NotFoundException.php
deleted file mode 100644
index 9e72e14e..00000000
--- a/advancedcontentfilter/vendor/slim/slim/Slim/Exception/NotFoundException.php
+++ /dev/null
@@ -1,14 +0,0 @@
-request = $request;
- $this->response = $response;
- }
-
- /**
- * Get request
- *
- * @return ServerRequestInterface
- */
- public function getRequest()
- {
- return $this->request;
- }
-
- /**
- * Get response
- *
- * @return ResponseInterface
- */
- public function getResponse()
- {
- return $this->response;
- }
-}
diff --git a/advancedcontentfilter/vendor/slim/slim/Slim/Factory/AppFactory.php b/advancedcontentfilter/vendor/slim/slim/Slim/Factory/AppFactory.php
new file mode 100644
index 00000000..6fc5f86e
--- /dev/null
+++ b/advancedcontentfilter/vendor/slim/slim/Slim/Factory/AppFactory.php
@@ -0,0 +1,206 @@
+has(ResponseFactoryInterface::class)
+ && (
+ $responseFactoryFromContainer = $container->get(ResponseFactoryInterface::class)
+ ) instanceof ResponseFactoryInterface
+ ? $responseFactoryFromContainer
+ : self::determineResponseFactory();
+
+ $callableResolver = $container->has(CallableResolverInterface::class)
+ && (
+ $callableResolverFromContainer = $container->get(CallableResolverInterface::class)
+ ) instanceof CallableResolverInterface
+ ? $callableResolverFromContainer
+ : null;
+
+ $routeCollector = $container->has(RouteCollectorInterface::class)
+ && (
+ $routeCollectorFromContainer = $container->get(RouteCollectorInterface::class)
+ ) instanceof RouteCollectorInterface
+ ? $routeCollectorFromContainer
+ : null;
+
+ $routeResolver = $container->has(RouteResolverInterface::class)
+ && (
+ $routeResolverFromContainer = $container->get(RouteResolverInterface::class)
+ ) instanceof RouteResolverInterface
+ ? $routeResolverFromContainer
+ : null;
+
+ $middlewareDispatcher = $container->has(MiddlewareDispatcherInterface::class)
+ && (
+ $middlewareDispatcherFromContainer = $container->get(MiddlewareDispatcherInterface::class)
+ ) instanceof MiddlewareDispatcherInterface
+ ? $middlewareDispatcherFromContainer
+ : null;
+
+ return new App(
+ $responseFactory,
+ $container,
+ $callableResolver,
+ $routeCollector,
+ $routeResolver,
+ $middlewareDispatcher
+ );
+ }
+
+ /**
+ * @throws RuntimeException
+ */
+ public static function determineResponseFactory(): ResponseFactoryInterface
+ {
+ if (static::$responseFactory) {
+ if (static::$streamFactory) {
+ return static::attemptResponseFactoryDecoration(static::$responseFactory, static::$streamFactory);
+ }
+ return static::$responseFactory;
+ }
+
+ $psr17FactoryProvider = static::$psr17FactoryProvider ?? new Psr17FactoryProvider();
+
+ /** @var Psr17Factory $psr17factory */
+ foreach ($psr17FactoryProvider->getFactories() as $psr17factory) {
+ if ($psr17factory::isResponseFactoryAvailable()) {
+ $responseFactory = $psr17factory::getResponseFactory();
+
+ if (static::$streamFactory || $psr17factory::isStreamFactoryAvailable()) {
+ $streamFactory = static::$streamFactory ?? $psr17factory::getStreamFactory();
+ return static::attemptResponseFactoryDecoration($responseFactory, $streamFactory);
+ }
+
+ return $responseFactory;
+ }
+ }
+
+ throw new RuntimeException(
+ "Could not detect any PSR-17 ResponseFactory implementations. " .
+ "Please install a supported implementation in order to use `AppFactory::create()`. " .
+ "See https://github.com/slimphp/Slim/blob/4.x/README.md for a list of supported implementations."
+ );
+ }
+
+ protected static function attemptResponseFactoryDecoration(
+ ResponseFactoryInterface $responseFactory,
+ StreamFactoryInterface $streamFactory
+ ): ResponseFactoryInterface {
+ if (
+ static::$slimHttpDecoratorsAutomaticDetectionEnabled
+ && SlimHttpPsr17Factory::isResponseFactoryAvailable()
+ ) {
+ return SlimHttpPsr17Factory::createDecoratedResponseFactory($responseFactory, $streamFactory);
+ }
+
+ return $responseFactory;
+ }
+
+ public static function setPsr17FactoryProvider(Psr17FactoryProviderInterface $psr17FactoryProvider): void
+ {
+ static::$psr17FactoryProvider = $psr17FactoryProvider;
+ }
+
+ public static function setResponseFactory(ResponseFactoryInterface $responseFactory): void
+ {
+ static::$responseFactory = $responseFactory;
+ }
+
+ public static function setStreamFactory(StreamFactoryInterface $streamFactory): void
+ {
+ static::$streamFactory = $streamFactory;
+ }
+
+ public static function setContainer(ContainerInterface $container): void
+ {
+ static::$container = $container;
+ }
+
+ public static function setCallableResolver(CallableResolverInterface $callableResolver): void
+ {
+ static::$callableResolver = $callableResolver;
+ }
+
+ public static function setRouteCollector(RouteCollectorInterface $routeCollector): void
+ {
+ static::$routeCollector = $routeCollector;
+ }
+
+ public static function setRouteResolver(RouteResolverInterface $routeResolver): void
+ {
+ static::$routeResolver = $routeResolver;
+ }
+
+ public static function setMiddlewareDispatcher(MiddlewareDispatcherInterface $middlewareDispatcher): void
+ {
+ static::$middlewareDispatcher = $middlewareDispatcher;
+ }
+
+ public static function setSlimHttpDecoratorsAutomaticDetection(bool $enabled): void
+ {
+ static::$slimHttpDecoratorsAutomaticDetectionEnabled = $enabled;
+ }
+}
diff --git a/advancedcontentfilter/vendor/slim/slim/Slim/Factory/Psr17/GuzzlePsr17Factory.php b/advancedcontentfilter/vendor/slim/slim/Slim/Factory/Psr17/GuzzlePsr17Factory.php
new file mode 100644
index 00000000..32a548a6
--- /dev/null
+++ b/advancedcontentfilter/vendor/slim/slim/Slim/Factory/Psr17/GuzzlePsr17Factory.php
@@ -0,0 +1,19 @@
+serverRequestCreator = $serverRequestCreator;
+ $this->serverRequestCreatorMethod = $serverRequestCreatorMethod;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function createServerRequestFromGlobals(): ServerRequestInterface
+ {
+ /** @var callable $callable */
+ $callable = [$this->serverRequestCreator, $this->serverRequestCreatorMethod];
+ return (Closure::fromCallable($callable))();
+ }
+}
diff --git a/advancedcontentfilter/vendor/slim/slim/Slim/Factory/Psr17/SlimHttpPsr17Factory.php b/advancedcontentfilter/vendor/slim/slim/Slim/Factory/Psr17/SlimHttpPsr17Factory.php
new file mode 100644
index 00000000..5d636318
--- /dev/null
+++ b/advancedcontentfilter/vendor/slim/slim/Slim/Factory/Psr17/SlimHttpPsr17Factory.php
@@ -0,0 +1,39 @@
+serverRequestCreator = $serverRequestCreator;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function createServerRequestFromGlobals(): ServerRequestInterface
+ {
+ if (!static::isServerRequestDecoratorAvailable()) {
+ throw new RuntimeException('The Slim-Http ServerRequest decorator is not available.');
+ }
+
+ $request = $this->serverRequestCreator->createServerRequestFromGlobals();
+
+ if (
+ !((
+ $decoratedServerRequest = new static::$serverRequestDecoratorClass($request)
+ ) instanceof ServerRequestInterface)
+ ) {
+ throw new RuntimeException(get_called_class() . ' could not instantiate a decorated server request.');
+ }
+
+ return $decoratedServerRequest;
+ }
+
+ public static function isServerRequestDecoratorAvailable(): bool
+ {
+ return class_exists(static::$serverRequestDecoratorClass);
+ }
+}
diff --git a/advancedcontentfilter/vendor/slim/slim/Slim/Factory/Psr17/SlimPsr17Factory.php b/advancedcontentfilter/vendor/slim/slim/Slim/Factory/Psr17/SlimPsr17Factory.php
new file mode 100644
index 00000000..46c46f9c
--- /dev/null
+++ b/advancedcontentfilter/vendor/slim/slim/Slim/Factory/Psr17/SlimPsr17Factory.php
@@ -0,0 +1,19 @@
+getFactories() as $psr17Factory) {
+ if ($psr17Factory::isServerRequestCreatorAvailable()) {
+ $serverRequestCreator = $psr17Factory::getServerRequestCreator();
+ return static::attemptServerRequestCreatorDecoration($serverRequestCreator);
+ }
+ }
+
+ throw new RuntimeException(
+ "Could not detect any ServerRequest creator implementations. " .
+ "Please install a supported implementation in order to use `App::run()` " .
+ "without having to pass in a `ServerRequest` object. " .
+ "See https://github.com/slimphp/Slim/blob/4.x/README.md for a list of supported implementations."
+ );
+ }
+
+ protected static function attemptServerRequestCreatorDecoration(
+ ServerRequestCreatorInterface $serverRequestCreator
+ ): ServerRequestCreatorInterface {
+ if (
+ static::$slimHttpDecoratorsAutomaticDetectionEnabled
+ && SlimHttpServerRequestCreator::isServerRequestDecoratorAvailable()
+ ) {
+ return new SlimHttpServerRequestCreator($serverRequestCreator);
+ }
+
+ return $serverRequestCreator;
+ }
+
+ public static function setPsr17FactoryProvider(Psr17FactoryProviderInterface $psr17FactoryProvider): void
+ {
+ static::$psr17FactoryProvider = $psr17FactoryProvider;
+ }
+
+ public static function setServerRequestCreator(ServerRequestCreatorInterface $serverRequestCreator): void
+ {
+ self::$serverRequestCreator = $serverRequestCreator;
+ }
+
+ public static function setSlimHttpDecoratorsAutomaticDetection(bool $enabled): void
+ {
+ static::$slimHttpDecoratorsAutomaticDetectionEnabled = $enabled;
+ }
+}
diff --git a/advancedcontentfilter/vendor/slim/slim/Slim/Handlers/AbstractError.php b/advancedcontentfilter/vendor/slim/slim/Slim/Handlers/AbstractError.php
deleted file mode 100644
index 42f8dde3..00000000
--- a/advancedcontentfilter/vendor/slim/slim/Slim/Handlers/AbstractError.php
+++ /dev/null
@@ -1,99 +0,0 @@
-displayErrorDetails = (bool) $displayErrorDetails;
- }
-
- /**
- * Write to the error log if displayErrorDetails is false
- *
- * @param \Exception|\Throwable $throwable
- *
- * @return void
- */
- protected function writeToErrorLog($throwable)
- {
- if ($this->displayErrorDetails) {
- return;
- }
-
- $message = 'Slim Application Error:' . PHP_EOL;
- $message .= $this->renderThrowableAsText($throwable);
- while ($throwable = $throwable->getPrevious()) {
- $message .= PHP_EOL . 'Previous error:' . PHP_EOL;
- $message .= $this->renderThrowableAsText($throwable);
- }
-
- $message .= PHP_EOL . 'View in rendered output by enabling the "displayErrorDetails" setting.' . PHP_EOL;
-
- $this->logError($message);
- }
-
- /**
- * Render error as Text.
- *
- * @param \Exception|\Throwable $throwable
- *
- * @return string
- */
- protected function renderThrowableAsText($throwable)
- {
- $text = sprintf('Type: %s' . PHP_EOL, get_class($throwable));
-
- if ($code = $throwable->getCode()) {
- $text .= sprintf('Code: %s' . PHP_EOL, $code);
- }
-
- if ($message = $throwable->getMessage()) {
- $text .= sprintf('Message: %s' . PHP_EOL, htmlentities($message));
- }
-
- if ($file = $throwable->getFile()) {
- $text .= sprintf('File: %s' . PHP_EOL, $file);
- }
-
- if ($line = $throwable->getLine()) {
- $text .= sprintf('Line: %s' . PHP_EOL, $line);
- }
-
- if ($trace = $throwable->getTraceAsString()) {
- $text .= sprintf('Trace: %s', $trace);
- }
-
- return $text;
- }
-
- /**
- * Wraps the error_log function so that this can be easily tested
- *
- * @param $message
- */
- protected function logError($message)
- {
- error_log($message);
- }
-}
diff --git a/advancedcontentfilter/vendor/slim/slim/Slim/Handlers/AbstractHandler.php b/advancedcontentfilter/vendor/slim/slim/Slim/Handlers/AbstractHandler.php
deleted file mode 100644
index b166a156..00000000
--- a/advancedcontentfilter/vendor/slim/slim/Slim/Handlers/AbstractHandler.php
+++ /dev/null
@@ -1,59 +0,0 @@
-getHeaderLine('Accept');
- $selectedContentTypes = array_intersect(explode(',', $acceptHeader), $this->knownContentTypes);
-
- if (count($selectedContentTypes)) {
- return current($selectedContentTypes);
- }
-
- // handle +json and +xml specially
- if (preg_match('/\+(json|xml)/', $acceptHeader, $matches)) {
- $mediaType = 'application/' . $matches[1];
- if (in_array($mediaType, $this->knownContentTypes)) {
- return $mediaType;
- }
- }
-
- return 'text/html';
- }
-}
diff --git a/advancedcontentfilter/vendor/slim/slim/Slim/Handlers/Error.php b/advancedcontentfilter/vendor/slim/slim/Slim/Handlers/Error.php
deleted file mode 100644
index dd0bc8d4..00000000
--- a/advancedcontentfilter/vendor/slim/slim/Slim/Handlers/Error.php
+++ /dev/null
@@ -1,224 +0,0 @@
-determineContentType($request);
- switch ($contentType) {
- case 'application/json':
- $output = $this->renderJsonErrorMessage($exception);
- break;
-
- case 'text/xml':
- case 'application/xml':
- $output = $this->renderXmlErrorMessage($exception);
- break;
-
- case 'text/html':
- $output = $this->renderHtmlErrorMessage($exception);
- break;
-
- default:
- throw new UnexpectedValueException('Cannot render unknown content type ' . $contentType);
- }
-
- $this->writeToErrorLog($exception);
-
- $body = new Body(fopen('php://temp', 'r+'));
- $body->write($output);
-
- return $response
- ->withStatus(500)
- ->withHeader('Content-type', $contentType)
- ->withBody($body);
- }
-
- /**
- * Render HTML error page
- *
- * @param \Exception $exception
- *
- * @return string
- */
- protected function renderHtmlErrorMessage(\Exception $exception)
- {
- $title = 'Slim Application Error';
-
- if ($this->displayErrorDetails) {
- $html = 'The application could not run because of the following error:
';
- $html .= 'Details
';
- $html .= $this->renderHtmlException($exception);
-
- while ($exception = $exception->getPrevious()) {
- $html .= 'Previous exception
';
- $html .= $this->renderHtmlExceptionOrError($exception);
- }
- } else {
- $html = 'A website error has occurred. Sorry for the temporary inconvenience.
';
- }
-
- $output = sprintf(
- "" .
- "%s%s
%s",
- $title,
- $title,
- $html
- );
-
- return $output;
- }
-
- /**
- * Render exception as HTML.
- *
- * Provided for backwards compatibility; use renderHtmlExceptionOrError().
- *
- * @param \Exception $exception
- *
- * @return string
- */
- protected function renderHtmlException(\Exception $exception)
- {
- return $this->renderHtmlExceptionOrError($exception);
- }
-
- /**
- * Render exception or error as HTML.
- *
- * @param \Exception|\Error $exception
- *
- * @return string
- */
- protected function renderHtmlExceptionOrError($exception)
- {
- if (!$exception instanceof \Exception && !$exception instanceof \Error) {
- throw new \RuntimeException("Unexpected type. Expected Exception or Error.");
- }
-
- $html = sprintf('Type: %s
', get_class($exception));
-
- if (($code = $exception->getCode())) {
- $html .= sprintf('Code: %s
', $code);
- }
-
- if (($message = $exception->getMessage())) {
- $html .= sprintf('Message: %s
', htmlentities($message));
- }
-
- if (($file = $exception->getFile())) {
- $html .= sprintf('File: %s
', $file);
- }
-
- if (($line = $exception->getLine())) {
- $html .= sprintf('Line: %s
', $line);
- }
-
- if (($trace = $exception->getTraceAsString())) {
- $html .= 'Trace
';
- $html .= sprintf('%s
', htmlentities($trace));
- }
-
- return $html;
- }
-
- /**
- * Render JSON error
- *
- * @param \Exception $exception
- *
- * @return string
- */
- protected function renderJsonErrorMessage(\Exception $exception)
- {
- $error = [
- 'message' => 'Slim Application Error',
- ];
-
- if ($this->displayErrorDetails) {
- $error['exception'] = [];
-
- do {
- $error['exception'][] = [
- 'type' => get_class($exception),
- 'code' => $exception->getCode(),
- 'message' => $exception->getMessage(),
- 'file' => $exception->getFile(),
- 'line' => $exception->getLine(),
- 'trace' => explode("\n", $exception->getTraceAsString()),
- ];
- } while ($exception = $exception->getPrevious());
- }
-
- return json_encode($error, JSON_PRETTY_PRINT);
- }
-
- /**
- * Render XML error
- *
- * @param \Exception $exception
- *
- * @return string
- */
- protected function renderXmlErrorMessage(\Exception $exception)
- {
- $xml = "\n Slim Application Error\n";
- if ($this->displayErrorDetails) {
- do {
- $xml .= " \n";
- $xml .= " " . get_class($exception) . "\n";
- $xml .= " " . $exception->getCode() . "
\n";
- $xml .= " " . $this->createCdataSection($exception->getMessage()) . "\n";
- $xml .= " " . $exception->getFile() . "\n";
- $xml .= " " . $exception->getLine() . "\n";
- $xml .= " " . $this->createCdataSection($exception->getTraceAsString()) . "\n";
- $xml .= " \n";
- } while ($exception = $exception->getPrevious());
- }
- $xml .= "";
-
- return $xml;
- }
-
- /**
- * Returns a CDATA section with the given content.
- *
- * @param string $content
- * @return string
- */
- private function createCdataSection($content)
- {
- return sprintf('', str_replace(']]>', ']]]]>', $content));
- }
-}
diff --git a/advancedcontentfilter/vendor/slim/slim/Slim/Handlers/ErrorHandler.php b/advancedcontentfilter/vendor/slim/slim/Slim/Handlers/ErrorHandler.php
new file mode 100644
index 00000000..f9606e36
--- /dev/null
+++ b/advancedcontentfilter/vendor/slim/slim/Slim/Handlers/ErrorHandler.php
@@ -0,0 +1,308 @@
+
+ */
+ protected array $errorRenderers = [
+ 'application/json' => JsonErrorRenderer::class,
+ 'application/xml' => XmlErrorRenderer::class,
+ 'text/xml' => XmlErrorRenderer::class,
+ 'text/html' => HtmlErrorRenderer::class,
+ 'text/plain' => PlainTextErrorRenderer::class,
+ ];
+
+ protected bool $displayErrorDetails = false;
+
+ protected bool $logErrors;
+
+ protected bool $logErrorDetails = false;
+
+ protected ?string $contentType = null;
+
+ protected ?string $method = null;
+
+ protected ServerRequestInterface $request;
+
+ protected Throwable $exception;
+
+ protected int $statusCode;
+
+ protected CallableResolverInterface $callableResolver;
+
+ protected ResponseFactoryInterface $responseFactory;
+
+ protected LoggerInterface $logger;
+
+ public function __construct(
+ CallableResolverInterface $callableResolver,
+ ResponseFactoryInterface $responseFactory,
+ ?LoggerInterface $logger = null
+ ) {
+ $this->callableResolver = $callableResolver;
+ $this->responseFactory = $responseFactory;
+ $this->logger = $logger ?: $this->getDefaultLogger();
+ }
+
+ /**
+ * Invoke error handler
+ *
+ * @param ServerRequestInterface $request The most recent Request object
+ * @param Throwable $exception The caught Exception object
+ * @param bool $displayErrorDetails Whether or not to display the error details
+ * @param bool $logErrors Whether or not to log errors
+ * @param bool $logErrorDetails Whether or not to log error details
+ */
+ public function __invoke(
+ ServerRequestInterface $request,
+ Throwable $exception,
+ bool $displayErrorDetails,
+ bool $logErrors,
+ bool $logErrorDetails
+ ): ResponseInterface {
+ $this->displayErrorDetails = $displayErrorDetails;
+ $this->logErrors = $logErrors;
+ $this->logErrorDetails = $logErrorDetails;
+ $this->request = $request;
+ $this->exception = $exception;
+ $this->method = $request->getMethod();
+ $this->statusCode = $this->determineStatusCode();
+ if ($this->contentType === null) {
+ $this->contentType = $this->determineContentType($request);
+ }
+
+ if ($logErrors) {
+ $this->writeToErrorLog();
+ }
+
+ return $this->respond();
+ }
+
+ /**
+ * Force the content type for all error handler responses.
+ *
+ * @param string|null $contentType The content type
+ */
+ public function forceContentType(?string $contentType): void
+ {
+ $this->contentType = $contentType;
+ }
+
+ protected function determineStatusCode(): int
+ {
+ if ($this->method === 'OPTIONS') {
+ return 200;
+ }
+
+ if ($this->exception instanceof HttpException) {
+ return $this->exception->getCode();
+ }
+
+ return 500;
+ }
+
+ /**
+ * Determine which content type we know about is wanted using Accept header
+ *
+ * Note: This method is a bare-bones implementation designed specifically for
+ * Slim's error handling requirements. Consider a fully-feature solution such
+ * as willdurand/negotiation for any other situation.
+ */
+ protected function determineContentType(ServerRequestInterface $request): ?string
+ {
+ $acceptHeader = $request->getHeaderLine('Accept');
+ $selectedContentTypes = array_intersect(
+ explode(',', $acceptHeader),
+ array_keys($this->errorRenderers)
+ );
+ $count = count($selectedContentTypes);
+
+ if ($count) {
+ $current = current($selectedContentTypes);
+
+ /**
+ * Ensure other supported content types take precedence over text/plain
+ * when multiple content types are provided via Accept header.
+ */
+ if ($current === 'text/plain' && $count > 1) {
+ $next = next($selectedContentTypes);
+ if (is_string($next)) {
+ return $next;
+ }
+ }
+
+ if (is_string($current)) {
+ return $current;
+ }
+ }
+
+ if (preg_match('/\+(json|xml)/', $acceptHeader, $matches)) {
+ $mediaType = 'application/' . $matches[1];
+ if (array_key_exists($mediaType, $this->errorRenderers)) {
+ return $mediaType;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Determine which renderer to use based on content type
+ *
+ * @throws RuntimeException
+ */
+ protected function determineRenderer(): callable
+ {
+ if ($this->contentType !== null && array_key_exists($this->contentType, $this->errorRenderers)) {
+ $renderer = $this->errorRenderers[$this->contentType];
+ } else {
+ $renderer = $this->defaultErrorRenderer;
+ }
+
+ return $this->callableResolver->resolve($renderer);
+ }
+
+ /**
+ * Register an error renderer for a specific content-type
+ *
+ * @param string $contentType The content-type this renderer should be registered to
+ * @param ErrorRendererInterface|string|callable $errorRenderer The error renderer
+ */
+ public function registerErrorRenderer(string $contentType, $errorRenderer): void
+ {
+ $this->errorRenderers[$contentType] = $errorRenderer;
+ }
+
+ /**
+ * Set the default error renderer
+ *
+ * @param string $contentType The content type of the default error renderer
+ * @param ErrorRendererInterface|string|callable $errorRenderer The default error renderer
+ */
+ public function setDefaultErrorRenderer(string $contentType, $errorRenderer): void
+ {
+ $this->defaultErrorRendererContentType = $contentType;
+ $this->defaultErrorRenderer = $errorRenderer;
+ }
+
+ /**
+ * Set the renderer for the error logger
+ *
+ * @param ErrorRendererInterface|string|callable $logErrorRenderer
+ */
+ public function setLogErrorRenderer($logErrorRenderer): void
+ {
+ $this->logErrorRenderer = $logErrorRenderer;
+ }
+
+ /**
+ * Write to the error log if $logErrors has been set to true
+ */
+ protected function writeToErrorLog(): void
+ {
+ $renderer = $this->callableResolver->resolve($this->logErrorRenderer);
+ $error = $renderer($this->exception, $this->logErrorDetails);
+ if (!$this->displayErrorDetails) {
+ $error .= "\nTips: To display error details in HTTP response ";
+ $error .= 'set "displayErrorDetails" to true in the ErrorHandler constructor.';
+ }
+ $this->logError($error);
+ }
+
+ /**
+ * Wraps the error_log function so that this can be easily tested
+ */
+ protected function logError(string $error): void
+ {
+ $this->logger->error($error);
+ }
+
+ /**
+ * Returns a default logger implementation.
+ */
+ protected function getDefaultLogger(): LoggerInterface
+ {
+ return new Logger();
+ }
+
+ protected function respond(): ResponseInterface
+ {
+ $response = $this->responseFactory->createResponse($this->statusCode);
+ if ($this->contentType !== null && array_key_exists($this->contentType, $this->errorRenderers)) {
+ $response = $response->withHeader('Content-type', $this->contentType);
+ } else {
+ $response = $response->withHeader('Content-type', $this->defaultErrorRendererContentType);
+ }
+
+ if ($this->exception instanceof HttpMethodNotAllowedException) {
+ $allowedMethods = implode(', ', $this->exception->getAllowedMethods());
+ $response = $response->withHeader('Allow', $allowedMethods);
+ }
+
+ $renderer = $this->determineRenderer();
+ $body = call_user_func($renderer, $this->exception, $this->displayErrorDetails);
+ if ($body !== false) {
+ /** @var string $body */
+ $response->getBody()->write($body);
+ }
+
+ return $response;
+ }
+}
diff --git a/advancedcontentfilter/vendor/slim/slim/Slim/Handlers/NotAllowed.php b/advancedcontentfilter/vendor/slim/slim/Slim/Handlers/NotAllowed.php
deleted file mode 100644
index 345f0ff8..00000000
--- a/advancedcontentfilter/vendor/slim/slim/Slim/Handlers/NotAllowed.php
+++ /dev/null
@@ -1,147 +0,0 @@
-getMethod() === 'OPTIONS') {
- $status = 200;
- $contentType = 'text/plain';
- $output = $this->renderPlainOptionsMessage($methods);
- } else {
- $status = 405;
- $contentType = $this->determineContentType($request);
- switch ($contentType) {
- case 'application/json':
- $output = $this->renderJsonNotAllowedMessage($methods);
- break;
-
- case 'text/xml':
- case 'application/xml':
- $output = $this->renderXmlNotAllowedMessage($methods);
- break;
-
- case 'text/html':
- $output = $this->renderHtmlNotAllowedMessage($methods);
- break;
- default:
- throw new UnexpectedValueException('Cannot render unknown content type ' . $contentType);
- }
- }
-
- $body = new Body(fopen('php://temp', 'r+'));
- $body->write($output);
- $allow = implode(', ', $methods);
-
- return $response
- ->withStatus($status)
- ->withHeader('Content-type', $contentType)
- ->withHeader('Allow', $allow)
- ->withBody($body);
- }
-
- /**
- * Render PLAIN message for OPTIONS response
- *
- * @param array $methods
- * @return string
- */
- protected function renderPlainOptionsMessage($methods)
- {
- $allow = implode(', ', $methods);
-
- return 'Allowed methods: ' . $allow;
- }
-
- /**
- * Render JSON not allowed message
- *
- * @param array $methods
- * @return string
- */
- protected function renderJsonNotAllowedMessage($methods)
- {
- $allow = implode(', ', $methods);
-
- return '{"message":"Method not allowed. Must be one of: ' . $allow . '"}';
- }
-
- /**
- * Render XML not allowed message
- *
- * @param array $methods
- * @return string
- */
- protected function renderXmlNotAllowedMessage($methods)
- {
- $allow = implode(', ', $methods);
-
- return "Method not allowed. Must be one of: $allow";
- }
-
- /**
- * Render HTML not allowed message
- *
- * @param array $methods
- * @return string
- */
- protected function renderHtmlNotAllowedMessage($methods)
- {
- $allow = implode(', ', $methods);
- $output = <<
-
- Method not allowed
-
-
-
- Method not allowed
- Method not allowed. Must be one of: $allow
-
-
-END;
-
- return $output;
- }
-}
diff --git a/advancedcontentfilter/vendor/slim/slim/Slim/Handlers/NotFound.php b/advancedcontentfilter/vendor/slim/slim/Slim/Handlers/NotFound.php
deleted file mode 100644
index b3330321..00000000
--- a/advancedcontentfilter/vendor/slim/slim/Slim/Handlers/NotFound.php
+++ /dev/null
@@ -1,141 +0,0 @@
-getMethod() === 'OPTIONS') {
- $contentType = 'text/plain';
- $output = $this->renderPlainNotFoundOutput();
- } else {
- $contentType = $this->determineContentType($request);
- switch ($contentType) {
- case 'application/json':
- $output = $this->renderJsonNotFoundOutput();
- break;
-
- case 'text/xml':
- case 'application/xml':
- $output = $this->renderXmlNotFoundOutput();
- break;
-
- case 'text/html':
- $output = $this->renderHtmlNotFoundOutput($request);
- break;
-
- default:
- throw new UnexpectedValueException('Cannot render unknown content type ' . $contentType);
- }
- }
-
- $body = new Body(fopen('php://temp', 'r+'));
- $body->write($output);
-
- return $response->withStatus(404)
- ->withHeader('Content-Type', $contentType)
- ->withBody($body);
- }
-
- /**
- * Render plain not found message
- *
- * @return ResponseInterface
- */
- protected function renderPlainNotFoundOutput()
- {
- return 'Not found';
- }
-
- /**
- * Return a response for application/json content not found
- *
- * @return ResponseInterface
- */
- protected function renderJsonNotFoundOutput()
- {
- return '{"message":"Not found"}';
- }
-
- /**
- * Return a response for xml content not found
- *
- * @return ResponseInterface
- */
- protected function renderXmlNotFoundOutput()
- {
- return 'Not found';
- }
-
- /**
- * Return a response for text/html content not found
- *
- * @param ServerRequestInterface $request The most recent Request object
- *
- * @return ResponseInterface
- */
- protected function renderHtmlNotFoundOutput(ServerRequestInterface $request)
- {
- $homeUrl = (string)($request->getUri()->withPath('')->withQuery('')->withFragment(''));
- return <<
-
- Page Not Found
-
-
-
- Page Not Found
-
- The page you are looking for could not be found. Check the address bar
- to ensure your URL is spelled correctly. If all else fails, you can
- visit our home page at the link below.
-
- Visit the Home Page
-
-